Browse Source

implementing broadcast

PYADPT-55
Volker Birk 9 years ago
parent
commit
4118353e9d
  1. 3
      src/pEpmodule.cc
  2. 25
      src/sync_mixin.cc

3
src/pEpmodule.cc

@ -2,6 +2,7 @@
#include <boost/locale.hpp>
#include <string>
#include <sstream>
#include <iomanip>
#include "basic_api.hh"
#include "message_api.hh"
#include "sync_mixin.hh"
@ -37,7 +38,7 @@ namespace pEp {
throw invalid_argument("illegal value");
stringstream build;
build << "p≡p error: " << status;
build << setfill('0') << "p≡p 0x" << setw(4) << hex << status;
throw runtime_error(build.str());
}
}

25
src/sync_mixin.cc

@ -10,7 +10,8 @@ namespace pEp {
SyncMixIn::SyncMixIn()
{
PEP_STATUS status = register_sync_callbacks(session, (void *) this,
_messageToSend, _showHandshake, NULL, NULL);
_messageToSend, _showHandshake, inject_sync_msg,
retrieve_next_sync_msg);
assert(status == PEP_STATUS_OK);
}
@ -51,7 +52,9 @@ namespace pEp {
void SyncMixIn::deliverHandshakeResult(int result)
{
::deliverHandshakeResult(session, (sync_handshake_result) result);
PEP_STATUS status = ::deliverHandshakeResult(session,
(sync_handshake_result) result);
_throw_status(status);
}
#ifndef NDEBUG
@ -59,17 +62,21 @@ namespace pEp {
{
PEP_STATUS status = fsm_DeviceState_inject(session,
(DeviceState_event) event, partner, NULL);
_throw_status(status);
}
#endif
jmp_buf SyncMixIn::env;
int SyncMixIn::val;
void *SyncMixIn::_msg;
int SyncMixIn::inject_sync_msg(void *msg, void *management)
{
SyncMixIn *that = (SyncMixIn *) management;
// SyncMixIn *that = (SyncMixIn *) management;
val = 0;
that->_msg = msg;
setjmp(that->env);
if (!that->val)
_msg = msg;
setjmp(env);
if (!val)
do_sync_protocol(session, management);
return 0;
}
@ -78,10 +85,10 @@ namespace pEp {
{
static int twice = 1;
twice = !twice;
SyncMixIn *that = (SyncMixIn *) management;
// SyncMixIn *that = (SyncMixIn *) management;
if (!twice)
return (void *) that->_msg;
longjmp(that->env, 1);
return (void *) _msg;
longjmp(env, 1);
return (void *) 23;
}

Loading…
Cancel
Save