diff options
Diffstat (limited to 'quellcode/demo1/Executor/Executor.cpp')
| -rwxr-xr-x | quellcode/demo1/Executor/Executor.cpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/quellcode/demo1/Executor/Executor.cpp b/quellcode/demo1/Executor/Executor.cpp new file mode 100755 index 0000000..2e43341 --- /dev/null +++ b/quellcode/demo1/Executor/Executor.cpp @@ -0,0 +1,53 @@ +#include <iostream> +#include "Executor_i.h" +#include "orbsvcs/CosNamingC.h" +#include <tao/RTCORBA/RTCORBA.h> +int main(int argc, char* argv[]){ + try{ + // initialize ORB + CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "ExecutorORB"); + std::cout<<"ORB ok"<<std::endl; + // get RTORB + CORBA::Object_var rtorb = orb->resolve_initial_references("RTORB"); + RTCORBA::RTORB_var rtORB = RTCORBA::RTORB::_narrow(rtorb.in()); + std::cout<<"RTORB ok"<<std::endl; + // 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"<<std::endl; + // create Policy + CORBA::PolicyList benchPolicy(1); + benchPolicy.length(1); + benchPolicy[0] = rtORB->create_priority_model_policy(RTCORBA::CLIENT_PROPAGATED, RTCORBA::minPriority); + // create ObjectAdapter, assign Policy + PortableServer::POA_var benchPOA = rootPOA->create_POA("executorPOA", poaManager.in(), benchPolicy); + std::cout<<"Policy assigned"<<std::endl; + // NameService + CORBA::Object_var namingObject = orb->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("Executor"); + namingContext->bind_new_context(name); + std::cout<<"Bound Executor to NameService"<<std::endl; + name.length(2); + name[1].id = CORBA::string_dup("ExecCmd"); + Executor_ExecCmd_i servant(argc, argv, orb); + PortableServer::ObjectId_var oid = benchPOA->activate_object(&servant); + CORBA::Object_var servantObj = benchPOA->id_to_reference(oid.in()); + namingContext->rebind(name, servantObj.in()); + std::cout<<"servant activated\n"; + // start ORB + orb->run(); + std::cout<<"ORB ready"<<std::endl; + //destroy + rootPOA->destroy(1,1); + orb->destroy(); + }catch(CORBA::Exception &any){ + std::cout<<"Exception occured: "<<any<<std::endl; + } + return 0; +} |
