blob: 3cd3f18fbeef545921d15af390ecfdfc0609677c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#include "CPXEventConsumer_i.h"
#include <orbsvcs/RtecEventCommC.h>
#include <orbsvcs/Event_Utilities.h>
#include <tao/PortableServer/PS_CurrentC.h>
#include <ace/OS_NS_stdio.h>
#include <sstream>
#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());
}
|