diff --git a/strophe.h b/strophe.h index 1e14089..750308a 100644 --- a/strophe.h +++ b/strophe.h @@ -7,6 +7,10 @@ #ifndef __LIBSTROPHE_STROPHE_H__ #define __LIBSTROPHE_STROPHE_H__ +#ifdef __cplusplus +extern "C" { +#endif + #include /* namespace defines */ @@ -263,4 +267,8 @@ void xmpp_run_once(xmpp_ctx_t *ctx, const unsigned long timeout); void xmpp_run(xmpp_ctx_t *ctx); void xmpp_stop(xmpp_ctx_t *ctx); +#ifdef __cplusplus +} +#endif + #endif /* __LIBSTROPHE_STROPHE_H__ */ diff --git a/strophepp.h b/strophepp.h new file mode 100644 index 0000000..1a90c27 --- /dev/null +++ b/strophepp.h @@ -0,0 +1,96 @@ +#ifndef __LIBSTROPHE_STROPHEPP_H__ +#define __LIBSTROPHE_STROPHEPP_H__ + +#include "strophe.h" + +namespace XMPP { + + typedef void (*alloc_handler)(const size_t size); + typedef void (*free_handler)(void *p); + typedef void (*realloc_handler)(void *p const size_t size); + + class Context { + private: + xmpp_ctx_t *ctx; + + public: + Context(); + virtual ~Context(); + + void setAlloc(alloc_handler handler); + void setRealloc(realloc_handler handler); + void setFree(free_handler handler); + void setLogger(xmpp_log_handler handler, void * const userdata); + } + + class Connection { + private: + xmpp_conn_t *conn; + + public: + Connection(); + virtual ~Connection(); + Connection *clone(); + + const char *getJID(); + void setJID(const char * const jid); + const char *getPass(); + void setPass(const char * const pass); + bool connectClient(const char * const domain, + xmpp_conn_handler callback, + void * const userdata); + void disconnect(); + void send(Stanza *stanza); + + void addTimedHandler(xmpp_timed_handler handler, + const unsigned long perdio, + void * const userdata); + void deleteTimedHandler(xmpp_timed_handler handler); + void addHandler(xmpp_handler handler, + const char * const ns, + const char * const name, + const char * const type, + void * const userdata); + void deleteHandler(xmpp_handler handler); + void addIdHandler(xmpp_handler handler, + const char * const id, + void * const userdata); + void deleteIdHandler(xmpp_handler handler); + } + + class Stanza { + private: + xmpp_stanza_t *stanza; + + public: + Stanza(); + virtual ~Stanza(); + Stanza *clone(); + Stanza *copy(); + + int toText(const char ** const buf, size_t * const buflen); + Stanza *getChildren(); + Stanza *getChildByName(const char * const name); + Stanza *getNext(); + char *getAttribute(const char * const name); + char *getNamespace(); + char *getText(); + char *getName(); + void addChild(Stanza *child); + void setNamespace(const char * const ns); + void setAttribute(const char * const key, const char * const value); + void setName(const char * const name); + void setText(const char * const text); + void setText(const char * const text, const size_t size); + char *getType(); + char *getId(); + char *getTo(); + char *getFrom(); + void setType(const char * const type); + void setId(const char * const id); + void setTo(const char * const to); + void setFrom(const char * const from); + } +} + +#endif /* __LIBSTROPHE_STROPHEPP_H__ */