Remove C++ files
Libstrophe used to provide incomplete C++ API which missed connection class and wasn't supported for a long time. Remove this API.
This commit is contained in:
@@ -77,7 +77,6 @@ libstrophe_la_SOURCES += src/parser_libxml2.c
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
include_HEADERS = strophe.h
|
include_HEADERS = strophe.h
|
||||||
noinst_HEADERS = strophepp.h
|
|
||||||
|
|
||||||
pkgconfig_DATA = libstrophe.pc
|
pkgconfig_DATA = libstrophe.pc
|
||||||
|
|
||||||
|
|||||||
@@ -1,84 +0,0 @@
|
|||||||
/* oocontext.cpp
|
|
||||||
** strophe XMPP client library -- C++ context implementation
|
|
||||||
**
|
|
||||||
** 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
#include "strophe.h"
|
|
||||||
#include "strophepp.h"
|
|
||||||
|
|
||||||
XMPP::Context::Context()
|
|
||||||
{
|
|
||||||
m_mem.alloc = callAlloc;
|
|
||||||
m_mem.realloc = callRealloc;
|
|
||||||
m_mem.free = callFree;
|
|
||||||
m_mem.userdata = (void *)this;
|
|
||||||
|
|
||||||
m_log.handler = callLog;
|
|
||||||
m_log.userdata = (void *)this;
|
|
||||||
|
|
||||||
m_ctx = ::xmpp_ctx_new(&m_mem, &m_log);
|
|
||||||
}
|
|
||||||
|
|
||||||
XMPP::Context::~Context()
|
|
||||||
{
|
|
||||||
::xmpp_ctx_free(m_ctx);
|
|
||||||
}
|
|
||||||
|
|
||||||
void *XMPP::Context::alloc(const size_t size)
|
|
||||||
{
|
|
||||||
return ::malloc(size);
|
|
||||||
}
|
|
||||||
|
|
||||||
void *XMPP::Context::realloc(void *p, const size_t size)
|
|
||||||
{
|
|
||||||
return ::realloc(p, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
void XMPP::Context::free(void *p)
|
|
||||||
{
|
|
||||||
::free(p);
|
|
||||||
}
|
|
||||||
|
|
||||||
void XMPP::Context::log(const xmpp_log_level_t level,
|
|
||||||
const char * const area,
|
|
||||||
const char * const msg)
|
|
||||||
{
|
|
||||||
/* do nothing by default */
|
|
||||||
}
|
|
||||||
|
|
||||||
xmpp_ctx_t *XMPP::Context::getContext()
|
|
||||||
{
|
|
||||||
return m_ctx;
|
|
||||||
}
|
|
||||||
|
|
||||||
void *XMPP::Context::callAlloc(const size_t size, void * const userdata)
|
|
||||||
{
|
|
||||||
return reinterpret_cast<Context *>(userdata)->alloc(size);
|
|
||||||
}
|
|
||||||
|
|
||||||
void *XMPP::Context::callRealloc(void *p, const size_t size,
|
|
||||||
void * const userdata)
|
|
||||||
{
|
|
||||||
return reinterpret_cast<Context *>(userdata)->realloc(p, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
void XMPP::Context::callFree(void *p, void * const userdata)
|
|
||||||
{
|
|
||||||
reinterpret_cast<Context *>(userdata)->free(p);
|
|
||||||
}
|
|
||||||
|
|
||||||
void XMPP::Context::callLog(void * const userdata,
|
|
||||||
const xmpp_log_level_t level,
|
|
||||||
const char * const area,
|
|
||||||
const char * const msg)
|
|
||||||
{
|
|
||||||
reinterpret_cast<Context *>(userdata)->log(level, area, msg);
|
|
||||||
}
|
|
||||||
@@ -1,77 +0,0 @@
|
|||||||
/* oostanza.cpp
|
|
||||||
** strophe XMPP client library -- C++ context implementation
|
|
||||||
**
|
|
||||||
** 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "strophe.h"
|
|
||||||
#include "strophepp.h"
|
|
||||||
|
|
||||||
using namespace XMPP;
|
|
||||||
|
|
||||||
void *Stanza::operator new(size_t size, Context *ctx)
|
|
||||||
{
|
|
||||||
void *p;
|
|
||||||
|
|
||||||
/* we must allocate extra room for the Context object so that the
|
|
||||||
destructor can access it to free the object. C++ does not allow
|
|
||||||
us to access normal members in the destructor, so we have to hide
|
|
||||||
it. This must be prepended as well, since C++ will add stuff to
|
|
||||||
the end in subclasses. */
|
|
||||||
|
|
||||||
p = ctx->alloc(size + sizeof(Context *));
|
|
||||||
if (!p) return p;
|
|
||||||
|
|
||||||
*reinterpret_cast<Context **>(p) = ctx;
|
|
||||||
p = reinterpret_cast<void *>(reinterpret_cast<char *>(p) +
|
|
||||||
sizeof(Context *));
|
|
||||||
|
|
||||||
return p;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Stanza::operator delete(void *p)
|
|
||||||
{
|
|
||||||
Context *ctx;
|
|
||||||
|
|
||||||
ctx = *reinterpret_cast<Context **>(reinterpret_cast<char *>(p) - 4);
|
|
||||||
ctx->free(reinterpret_cast<char *>(p) - 4);
|
|
||||||
}
|
|
||||||
|
|
||||||
Stanza::Stanza(Context *ctx)
|
|
||||||
{
|
|
||||||
m_ctx = ctx;
|
|
||||||
m_stanza = ::xmpp_stanza_new(ctx->getContext());
|
|
||||||
// TODO: check for errors
|
|
||||||
}
|
|
||||||
|
|
||||||
Stanza::~Stanza()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
Stanza *Stanza::create(Context *ctx)
|
|
||||||
{
|
|
||||||
return new (ctx) Stanza(ctx);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Stanza::release()
|
|
||||||
{
|
|
||||||
if (::xmpp_stanza_release(m_stanza))
|
|
||||||
delete this;
|
|
||||||
}
|
|
||||||
|
|
||||||
Stanza *Stanza::clone()
|
|
||||||
{
|
|
||||||
::xmpp_stanza_clone(m_stanza);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
Stanza *Stanza::copy()
|
|
||||||
{
|
|
||||||
// TODO
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
136
strophepp.h
136
strophepp.h
@@ -1,136 +0,0 @@
|
|||||||
/* 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__ */
|
|
||||||
Reference in New Issue
Block a user