inline void HandlerTwo(const Message &message, const xlang2::Address from) { printf("Handler TWO received message with value '%d'\n", message.mValue); // Switch to handler one DeregisterHandler(this, &ExampleActor::HandlerTwo); RegisterHandler(this, &ExampleActor::HandlerOne); Send(message, from); }
inline void Start(const StartMessage &message, const Theron::Address /*from*/) { mCaller = message.mCaller; mConsumer = message.mConsumer; mEventQ = message.mEventQ; std::cout << "Producer Start" << std::endl; DeregisterHandler(this, &Producer::Start); RegisterHandler(this, &Producer::Receive); }
inline void WaitForAck(const int &message, const Theron::Address /*from EQ*/){ if (message < 0){ std::cout<<"Producer received ACK: "<<message<<std::endl; Send(message, mCaller); // Start Receiving message to produce DeregisterHandler(this, &Producer::WaitForAck); RegisterHandler(this, &Producer::Receive); } else { std::cout<<"Failed ACK signal | Ensure ACK is proper: "<<message<<std::endl; Send(message, mCaller); } }
inline void Receive(const int &message, const Theron::Address /*from*/) { if (message > 0) { std::cout<<"Producer will start producing -> "<<message<<std::endl; Send(message, mEventQ); // Wait for Acknowledge DeregisterHandler(this, &Producer::Receive); RegisterHandler(this, &Producer::WaitForAck); } else { std::cout<<"Failed producing message | Ensure message is proper: "<<message<<std::endl; Send(message, mCaller); } }
FrameworkManager::~FrameworkManager() { DeregisterHandler(Exchange::RemoteSubscription::descriptor()); DeregisterHandler(Exchange::Wrapper::descriptor()); }
FrameworkManagerY::~FrameworkManagerY() { DeregisterHandler(Exchange::StringParameter::descriptor()); }