#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"<