Browse Source

callbacks

LPA-1
Volker Birk 7 years ago
parent
commit
2e7a000184
  1. 16
      Adapter.cc
  2. 7
      Adapter.hh

16
Adapter.cc

@ -83,20 +83,26 @@ namespace pEp {
return q.pop_front(); return q.pop_front();
} }
static void sync_thread(void *obj) template< class T > static void sync_thread(T *obj, function< int (T::*) > _startup)
{ {
PEP_STATUS status = register_sync_callbacks(session(), nullptr, PEP_STATUS status = register_sync_callbacks(session(), nullptr,
_notifyHandshake, _retrieve_next_sync_event); _notifyHandshake, _retrieve_next_sync_event);
throw_status(status); throw_status(status);
do_sync_protocol(session(), obj); if (obj && startup) {
_startup(obj);
}
do_sync_protocol(session(), (void *) obj);
unregister_sync_callbacks(session()); unregister_sync_callbacks(session());
session(release); session(release);
} }
void startup(messageToSend_t messageToSend, template< class T > void startup(messageToSend_t messageToSend,
notifyHandshake_t notifyHandshake, void *obj) notifyHandshake_t notifyHandshake, T *obj,
function< int ( T::* ) > _startup
)
{ {
if (messageToSend) if (messageToSend)
_messageToSend = messageToSend; _messageToSend = messageToSend;
@ -110,7 +116,7 @@ namespace pEp {
lock_guard<mutex> lock(m); lock_guard<mutex> lock(m);
if (!_sync_thread) if (!_sync_thread)
_sync_thread = new thread(sync_thread, obj); _sync_thread = new thread(sync_thread<T>, obj, _startup);
} }
} }

7
Adapter.hh

@ -5,6 +5,7 @@
#include "locked_queue.hh" #include "locked_queue.hh"
#include <thread> #include <thread>
#include <functional>
#include <string> #include <string>
#include <pEp/sync_api.h> #include <pEp/sync_api.h>
@ -20,8 +21,10 @@ namespace pEp {
}; };
namespace Adapter { namespace Adapter {
void startup(messageToSend_t messageToSend, template<class T> void startup(messageToSend_t messageToSend,
notifyHandshake_t notifyHandshake, void *obj = nullptr); notifyHandshake_t notifyHandshake, T *obj = nullptr,
function< int (T::*) > _startup = nullptr
);
enum session_action { enum session_action {
init, init,

Loading…
Cancel
Save