Files
libstrophe-gh/strophepp.h
Dmitry Podgorny 562a06425b Unify coding style
@sjaeckel integrated clang-format with formal coding style. Run his
script and commit changes.

There are pros and cons of this commit.

Mixed coding style is a "broken window". A good single style simplifies
reading and writing code.

On the other hand, this is a big change which will lead to conflicts.
2020-01-31 01:16:50 +02:00

137 lines
3.7 KiB
C++

/* strophepp.h
** strophe XMPP client library C++ API
**
** Copyright (C) 2005-2009 Collecta, Inc.
**
** This software is provided AS-IS with no warranty, either express or
** implied.
**
** This program is dual licensed under the MIT and GPLv3 licenses.
*/
/** @file
* Strophe public C++ API definitions.
*/
#ifndef __LIBSTROPHE_STROPHEPP_H__
#define __LIBSTROPHE_STROPHEPP_H__
#include "strophe.h"
namespace XMPP
{
class Context
{
private:
xmpp_mem_t m_mem;
xmpp_log_t m_log;
xmpp_ctx_t *m_ctx;
public:
Context();
virtual ~Context();
virtual void *alloc(const size_t size);
virtual void *realloc(void *p, const size_t size);
virtual void free(void *p);
virtual void log(const xmpp_log_level_t level,
const char *const area,
const char *const msg);
xmpp_ctx_t *getContext();
private:
static void *callAlloc(const size_t size, void *const userdata);
static void *callRealloc(void *p, const size_t size, void *const userdata);
static void callFree(void *p, void *const userdata);
static void callLog(void *const userdata,
const xmpp_log_level_t level,
const char *const area,
const char *const msg);
};
class Stanza
{
private:
Context *m_ctx;
xmpp_stanza_t *m_stanza;
void *operator new(size_t size, Context *ctx);
void operator delete(void *p);
Stanza(Context *ctx);
virtual ~Stanza();
public:
static Stanza *create(Context *ctx);
void release();
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);
};
class Connection
{
private:
Context *m_ctx;
xmpp_conn_t *conn;
void *operator new(size_t size, Context *ctx);
Connection(Context *ctx);
public:
static Connection *create(Context *ctx);
virtual ~Connection();
Connection *clone();
void operator delete(void *p);
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);
};
} // namespace XMPP
#endif /* __LIBSTROPHE_STROPHEPP_H__ */