Browse Source

merging

synchronous
Volker Birk 5 years ago
parent
commit
04852c1d4f
  1. 27
      callback_dispatcher.cc

27
callback_dispatcher.cc

@ -23,11 +23,19 @@ namespace pEp {
proc shutdown
)
{
assert(messageToSend);
if (!messageToSend)
throw std::invalid_argument("messageToSend must be set");
targets.push_back({messageToSend, notifyHandshake, on_startup, shutdown});
}
void CallbackDispatcher::remove(::messageToSend_t messageToSend)
{
assert(messageToSend);
if (!messageToSend)
throw std::invalid_argument("messageToSend argument needed");
for (auto target = targets.begin(); target != targets.end(); ++target) {
if (target->messageToSend == messageToSend) {
targets.erase(target);
@ -40,15 +48,19 @@ namespace pEp {
void CallbackDispatcher::on_startup()
{
for (auto target : targets)
for (auto target : targets) {
if (target.on_startup)
target.on_startup();
}
}
void CallbackDispatcher::on_shutdown()
{
for (auto target : targets)
for (auto target : targets) {
if (target.on_shutdown)
target.on_shutdown();
}
}
void CallbackDispatcher::start_sync()
{
@ -57,17 +69,21 @@ namespace pEp {
&CallbackDispatcher::on_startup,
&CallbackDispatcher::on_shutdown);
for (auto target : callback_dispatcher.targets)
for (auto target : callback_dispatcher.targets) {
if (target.notifyHandshake)
target.notifyHandshake(nullptr, nullptr, SYNC_NOTIFY_START);
}
}
void CallbackDispatcher::stop_sync()
{
pEp::Adapter::shutdown();
for (auto target : callback_dispatcher.targets)
for (auto target : callback_dispatcher.targets) {
if (target.notifyHandshake)
target.notifyHandshake(nullptr, nullptr, SYNC_NOTIFY_STOP);
}
}
PEP_STATUS CallbackDispatcher::_messageToSend(::message *msg)
{
@ -76,6 +92,7 @@ namespace pEp {
if (!_msg)
return PEP_OUT_OF_MEMORY;
assert(target.messageToSend);
target.messageToSend(_msg);
}
@ -86,6 +103,7 @@ namespace pEp {
::pEp_identity *partner, ::sync_handshake_signal signal)
{
for (auto target : targets) {
if (target.notifyHandshake) {
auto _me = ::identity_dup(me);
if (!_me)
return PEP_OUT_OF_MEMORY;
@ -98,6 +116,7 @@ namespace pEp {
target.notifyHandshake(_me, _partner, signal);
}
}
return PEP_STATUS_OK;
}

Loading…
Cancel
Save