Added stanza module

This commit is contained in:
James Booth
2015-05-15 00:06:15 +01:00
parent 3b0bdfeb86
commit c6fe602fd8
5 changed files with 59 additions and 50 deletions

7
.gitignore vendored
View File

@@ -1,5 +1,5 @@
core
server
stabber
Makefile
Makefile.in
aclocal.m4
@@ -13,10 +13,7 @@ src/config.h.in
src/config.h.in~
src/server/.deps/
src/server/.dirstamp
src/server/clients.o
src/server/server.o
src/server/parser.o
src/server/xmppclient.o
*.o
src/stamp-h1

View File

@@ -1,2 +1,2 @@
bin_PROGRAMS = server
server_SOURCES = src/server/server.c src/server/xmppclient.h src/server/xmppclient.c src/server/parser.h src/server/parser.c
bin_PROGRAMS = stabber
stabber_SOURCES = src/server/server.c src/server/xmppclient.h src/server/xmppclient.c src/server/parser.h src/server/parser.c src/server/stanza.h src/server/stanza.c

View File

@@ -5,6 +5,7 @@
#include "server/parser.h"
#include "server/xmppclient.h"
#include "server/stanza.h"
static int depth = 0;
static int do_reset = 0;
@@ -14,52 +15,9 @@ static stream_end_func stream_end_cb = NULL;
static auth_func auth_cb = NULL;
static XMPPClient *xmppclient;
typedef struct xmpp_attr_t {
const char *name;
const char *value;
} XMPPAttr;
typedef struct xmpp_stanza_t {
const char *name;
GList *attrs;
GList *children;
GString *content;
struct xmpp_stanza_t *parent;
} XMPPStanza;
static XMPPStanza *curr_stanza;
static GList *stanzas;
void
show_stanza(XMPPStanza *stanza)
{
printf("NAME : %s\n", stanza->name);
if (stanza->content && stanza->content->len > 0) {
printf("CONTENT: %s\n", stanza->content->str);
}
if (stanza->attrs) {
GList *curr_attr = stanza->attrs;
while (curr_attr) {
XMPPAttr *attr = curr_attr->data;
printf("ATTR : %s='%s'\n", attr->name, attr->value);
curr_attr = g_list_next(curr_attr);
}
}
if (stanza->children) {
printf("CHILDREN:\n");
GList *curr_child = stanza->children;
while (curr_child) {
XMPPStanza *child = curr_child->data;
show_stanza(child);
curr_child = g_list_next(curr_child);
}
}
}
void
parser_show_stanzas(void)
{

34
src/server/stanza.c Normal file
View File

@@ -0,0 +1,34 @@
#include <stdio.h>
#include <glib.h>
#include "server/stanza.h"
void
show_stanza(XMPPStanza *stanza)
{
printf("NAME : %s\n", stanza->name);
if (stanza->content && stanza->content->len > 0) {
printf("CONTENT: %s\n", stanza->content->str);
}
if (stanza->attrs) {
GList *curr_attr = stanza->attrs;
while (curr_attr) {
XMPPAttr *attr = curr_attr->data;
printf("ATTR : %s='%s'\n", attr->name, attr->value);
curr_attr = g_list_next(curr_attr);
}
}
if (stanza->children) {
printf("CHILDREN:\n");
GList *curr_child = stanza->children;
while (curr_child) {
XMPPStanza *child = curr_child->data;
show_stanza(child);
curr_child = g_list_next(curr_child);
}
}
}

20
src/server/stanza.h Normal file
View File

@@ -0,0 +1,20 @@
#ifndef __H_STANZA
#define __H_STANZA
typedef struct xmpp_attr_t {
const char *name;
const char *value;
} XMPPAttr;
typedef struct xmpp_stanza_t {
const char *name;
GList *attrs;
GList *children;
GString *content;
struct xmpp_stanza_t *parent;
} XMPPStanza;
void
show_stanza(XMPPStanza *stanza);
#endif