| 6 | #include <string> |
| 7 | |
| 8 | SyncClient_i::SyncClient_i (const std::string& sync_server |
| 9 | , CORBA::ORB_ptr orb, Role role) |
| 10 | : shutdown_ (false), notification_ (false) |
| 11 | { |
| 12 | try |
| 13 | { |
| 14 | if (CORBA::is_nil (orb)) |
| 15 | { |
| 16 | // create new ORB |
| 17 | int argc = 2; |
| 18 | char* argv[] = {const_cast<char*>("-ORBDebuglevel"), const_cast<char*>("0")}; |
| 19 | orb_ = CORBA::ORB_init (argc, argv, "SyncClient"); |
| 20 | if (CORBA::is_nil (orb_.in())) { |
| 21 | throw InitError ("SyncClient_i::ctr> Orb init failed."); |
| 22 | } |
| 23 | } |
| 24 | else { |
| 25 | orb_ = CORBA::ORB::_duplicate (orb); |
| 26 | } |
| 27 | |
| 28 | CORBA::Object_var poaObj = orb_->resolve_initial_references ("RootPOA"); |
| 29 | root_poa_ = PortableServer::POA::_narrow (poaObj.in ()); |
| 30 | |
| 31 | poa_manager_ = root_poa_->the_POAManager (); |
| 32 | poa_manager_->activate (); |
| 33 | |
| 34 | PortableServer::ObjectId_var oid = root_poa_->activate_object (this); |
| 35 | CORBA::Object_var obj = root_poa_->id_to_reference (oid); |
| 36 | sync_client_ = Sync::Client::_narrow (obj.in()); |
| 37 | |
| 38 | // activate task |
| 39 | if (this->activate (THR_NEW_LWP | THR_JOINABLE |THR_INHERIT_SCHED |
| 40 | , 1) != 0) { |
| 41 | throw InitError ("SyncClient_i::ctr> Task activation failed."); |
| 42 | } |
| 43 | |
| 44 | std::string sync_srvr; |
| 45 | if (sync_server.empty()) { |
| 46 | //sync_srvr = "corbaloc:iiop:localhost:12345/SyncServer"; |
| 47 | sync_srvr = "file://sync.ior"; |
| 48 | } |
| 49 | |
| 50 | obj = orb_->string_to_object (sync_srvr.c_str()); |
| 51 | sync_server_ = ::Sync::Server::_narrow (obj.in()); |
| 52 | |
| 53 | if (role == Pub) { |
| 54 | //ACE_DEBUG ((LM_DEBUG, "(%P|%t) SyncClient_i> Registering self.\n")); |
| 55 | sync_server_->register_me (Sync::Pub, sync_client_.in(), my_id_); |
| 56 | //ACE_DEBUG ((LM_DEBUG, "(%P|%t) SyncClient_i> Registered self.\n")); |
| 57 | } |
| 58 | else if (role == Sub) { |
| 59 | sync_server_->register_me (Sync::Sub, sync_client_.in(), my_id_); |
| 60 | } |
| 61 | } |
| 62 | catch ( CORBA::Exception& ex) { |
| 63 | throw InitError (ex._info().c_str()); |
| 64 | } |
| 65 | } |
nothing calls this directly
no test coverage detected