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();
}
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,
_notifyHandshake, _retrieve_next_sync_event);
throw_status(status);
do_sync_protocol(session(), obj);
if (obj && startup) {
_startup(obj);
}
do_sync_protocol(session(), (void *) obj);
unregister_sync_callbacks(session());
session(release);
}
void startup(messageToSend_t messageToSend,
notifyHandshake_t notifyHandshake, void *obj)
template< class T > void startup(messageToSend_t messageToSend,
notifyHandshake_t notifyHandshake, T *obj,
function< int ( T::* ) > _startup
)
{
if (messageToSend)
_messageToSend = messageToSend;
@ -110,7 +116,7 @@ namespace pEp {
lock_guard<mutex> lock(m);
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 <thread>
#include <functional>
#include <string>
#include <pEp/sync_api.h>
@ -20,8 +21,10 @@ namespace pEp {
};
namespace Adapter {
void startup(messageToSend_t messageToSend,
notifyHandshake_t notifyHandshake, void *obj = nullptr);
template<class T> void startup(messageToSend_t messageToSend,
notifyHandshake_t notifyHandshake, T *obj = nullptr,
function< int (T::*) > _startup = nullptr
);
enum session_action {
init,

Loading…
Cancel
Save