summaryrefslogtreecommitdiff
path: root/quellcode/versuch2/CPXEventConsumer_i.cpp
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());
}