/** * \file Receiver.cpp * \brief RTCORBA Server, holding one Object for receiving ping calls * * \author Manuel Traut * \version 2009-06-23 */ #include #include "pingI.h" #include "orbsvcs/CosNamingC.h" #include int main(int argc, char* argv[]){ try{ // initialize ORB CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "ServerORB"); std::cout<<"ORB initialized"<resolve_initial_references("RTORB"); RTCORBA::RTORB_var rt_orb = RTCORBA::RTORB::_narrow(rtorb); std::cout<<"RT Extensions OK"<resolve_initial_references("RootPOA"); PortableServer::POA_var root_poa = PortableServer::POA::_narrow(poa.in()); // activate POA Manager PortableServer::POAManager_var poa_manager = root_poa->the_POAManager(); poa_manager->activate(); std::cout<<"root_poa OK"<create_priority_model_policy( RTCORBA::CLIENT_PROPAGATED, RTCORBA::maxPriority); // create ObjectAdapter, assign Policy PortableServer::POA_var ping_poa = root_poa->create_POA("ping_poa", poa_manager.in(), ping_policy); std::cout<<"Policy assigned"<activate_object(&ping_i); CORBA::Object_var ping_obj = ping_poa->id_to_reference(object_id.in()); CORBA::String_var ior = orb->object_to_string(ping_obj.in()); std::cout<<"Servant activated"<resolve_initial_references("NameService"); std::cout<<"bind\n"; CosNaming::NamingContext_var naming_context = CosNaming::NamingContext::_narrow(naming_obj.in()); CosNaming::Name name(1); name.length(1); name[0].id = CORBA::string_dup("Receiver"); naming_context->rebind(name, ping_obj.in()); std::cout<<"Bound Receiver to NameService"<run(); std::cout<<"ORB ready"<destroy(1,1); orb->destroy(); } catch(CORBA::Exception &any) { std::cout<<"Exception: "<