#include "CPXEventConsumer_i.h" #include #include #include #include #include #include "cpx.h" const RtecEventComm::EventSourceID MY_SOURCE_ID = ACE_ES_EVENT_SOURCE_ANY + 1; const RtecEventComm::EventType MY_EVENT_TYPE = ACE_ES_EVENT_UNDEFINED + 1; CPX cpx; CPXEventConsumer_i::CPXEventConsumer_i(CORBA::ORB_ptr orb/*, int event_limit*/) : orb_(CORBA::ORB::_duplicate(orb))/* , event_limit_(event_limit)*/ { //nothing } void CPXEventConsumer_i::push(const RtecEventComm::EventSet& events) throw (CORBA::SystemException) { // loop through events int value; for(u_int i = 0; i < events.length(); ++i){ if(events[i].header.type == MY_EVENT_TYPE){ // std::cout<<"my event\n"; events[i].data.any_value >>= value; cpx.set(1, value); } else { // std::cout<<"your event\n"; cpx.set(1, value-2); } } // if(--event_limit_ <= 0) orb_->shutdown(0); } void CPXEventConsumer_i::disconnect_push_consumer() throw (CORBA::SystemException){ CORBA::Object_var obj = orb_->resolve_initial_references("POACurrent"); PortableServer::Current_var current = PortableServer::Current::_narrow(obj.in()); PortableServer::POA_var poa = current->get_POA(); PortableServer::ObjectId_var objectId = current->get_object_id(); poa->deactivate_object(objectId.in()); }