ugcs::vsm::Operation_waiter Red_button_processor::Listen(Event_handler handler, ugcs::vsm::Request_completion_context::Ptr ctx) { ugcs::vsm::Request::Ptr req = Create_listen_request(handler, ctx); Submit_request(req); return req; }
void Red_button_processor::Handle_event(Event_handler handler, ugcs::vsm::Request_completion_context::Ptr ctx, Event_id last_event) { if (handler.Invoke()) { ugcs::vsm::Request::Ptr req = Create_listen_request(handler, ctx, last_event); Submit_request(req); } }
/** [Define sample api call] */ ugcs::vsm::Operation_waiter Sample_processor::Sample_api_method(int param, Handler handler, ugcs::vsm::Request_completion_context::Ptr comp_ctx) { ugcs::vsm::Request::Ptr req = ugcs::vsm::Request::Create(); req->Set_processing_handler( ugcs::vsm::Make_callback(&Sample_processor::Process_api_call, Shared_from_this(), param, req, handler)); req->Set_completion_handler(comp_ctx ? comp_ctx : def_comp_ctx, handler); Submit_request(req); return req; }