From 1adba473e6917b227e1b0a1118148101dca202e7 Mon Sep 17 00:00:00 2001 From: Manuel Traut Date: Mon, 31 Mar 2014 16:53:55 +0200 Subject: add quellcode Signed-off-by: Manuel Traut --- quellcode/versuch3/Receiver.cpp | 96 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100755 quellcode/versuch3/Receiver.cpp (limited to 'quellcode/versuch3/Receiver.cpp') diff --git a/quellcode/versuch3/Receiver.cpp b/quellcode/versuch3/Receiver.cpp new file mode 100755 index 0000000..fd07e2f --- /dev/null +++ b/quellcode/versuch3/Receiver.cpp @@ -0,0 +1,96 @@ +#include +#include + + +//#include + +#include "benchI.h" + +#include "orbsvcs/CosNamingC.h" +#include + +int main(int argc, char* argv[]){ + + struct sched_param schedparam; + schedparam.sched_priority = 99; + + if (sched_setscheduler(0, SCHED_FIFO, &schedparam) != 0) { + fprintf(stderr, "%s: PID %d: sched_setscheduler() failed errno = %d\n", __FUNCTION__, getpid(), errno); + } + + try{ + // initialize ORB + CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "ServerORB"); + std::cout<<"ORB initialized"<resolve_initial_references("RTORB"); + RTCORBA::RTORB_var rtORB = RTCORBA::RTORB::_narrow(rtorb); + + // obtain rootPOA + CORBA::Object_var poa = orb->resolve_initial_references("RootPOA"); + PortableServer::POA_var rootPOA = PortableServer::POA::_narrow(poa.in()); + + // activate POA Manager + PortableServer::POAManager_var poaManager = rootPOA->the_POAManager(); + poaManager->activate(); + std::cout<<"rootPOA OK"<create_priority_model_policy(RTCORBA::CLIENT_PROPAGATED, RTCORBA::maxPriority); + benchPolicy[1] = rtORB->create_server_protocol_policy(protocols); + + //// create low Priority Policy + CORBA::PolicyList benchLowPolicy(2); + benchLowPolicy.length(2); + benchLowPolicy[0] = rtORB->create_priority_model_policy(RTCORBA::CLIENT_PROPAGATED, RTCORBA::minPriority); + benchLowPolicy[1] = rtORB->create_server_protocol_policy(protocols); + + // create ObjectAdapter, assign Policy + PortableServer::POA_var benchPOA = rootPOA->create_POA("benchPOA", poaManager.in(), benchPolicy); + std::cout<<"Policy assigned"<create_POA("benchLowPOA", poaManager.in(), benchLowPolicy); + + // create the servant + benchmark_PutHigh_i bench_i; + benchmark_PutLow_i lowBench_i; + + // activate servant + PortableServer::ObjectId_var objectID = benchPOA->activate_object(&bench_i); + CORBA::Object_var benchObj = benchPOA->id_to_reference(objectID.in()); + CORBA::String_var ior = orb->object_to_string(benchObj.in()); + + PortableServer::ObjectId_var objectLowID = benchLowPOA->activate_object(&lowBench_i); + CORBA::Object_var lowBenchObj = benchLowPOA->id_to_reference(objectLowID.in()); + CORBA::String_var ior2 = orb->object_to_string(lowBenchObj.in()); + std::cout<<"Servant activated"<resolve_initial_references("NameService"); + CosNaming::NamingContext_var namingContext = CosNaming::NamingContext::_narrow(namingObject.in()); + CosNaming::Name name(1); + name.length(1); + name[0].id = CORBA::string_dup("HighReceiver"); + namingContext->bind(name, benchObj.in()); + std::cout<<"Bound Receiver to NameService"<bind(name, lowBenchObj.in()); + std::cout<<"Bound LowReceiver to NameService"<activate + + + orbManager.run(); + + std::cout<<"Server ready"<