[omniORB] I can't use bidir correctly
Slava Garelin
garelin@ukr.net
Fri Jun 28 15:10:02 2002
I use modified version eg2_clt and eg2_impl from src/example/echo dir.
These changes add POA in the client and remove an entrance in orb-> run () in
the server.
I change ~/.OmniORB_Config :
clientTransportRule = * bidir,unix,tcp,ssl
offerBiDirectionalGIOP = 1
serverTransportRule = * bidir,unix,tcp,ssl
acceptBiDirectionalGIOP = 1
and I get on run example: (trace level 25)
server:
==============
(skipped)
Upcall Hello!
omniORB: sendChunk: to giop:tcp:192.168.102.12:2743 35 bytes
omniORB: inputMessage: from giop:tcp:192.168.102.12:2743 12 bytes
omniORB: throw giopStream::CommFailure from
giopImpl12.cc:1215(0,NO,COMM_FAILURE
_UnMarshalArguments)
omniORB: Server connection refcount = 1
omniORB: Server connection refcount = 0
omniORB: Server close connection from giop:tcp:192.168.102.12:2743
omniORB: AsyncInvoker: thread id = 4 has exited. Total threads = 3
omniORB: ObjRef(IDL:Echo:1.0) -- deleted.
omniORB: Preparing to shutdown ORB.
omniORB: Destroying POA(RootPOA).
omniORB: Deactivating all POA(RootPOA)'s objects.
omniORB: State root<0> (active) -> deactivating
omniORB: Waiting for requests to complete on POA(RootPOA).
omniORB: Requests on POA(RootPOA) completed.
omniORB: State root<0> (deactivating) -> etherealising
omniORB: Etherealising POA(RootPOA)'s objects.
omniORB: Removing root<0> (etherealising) from object table
omniORB: Object table entry root<0> (dead) deleted.
omniORB: RefCountServantBase has zero ref count -- deleted.
omniORB: Stopping serving incoming endpoints.
omniORB: giopServer waits for completion of rendezvousers and workers
omniORB: Destruction of POA(RootPOA) complete.
omniORB: Shutting-down all incoming endpoints.
omniORB: TCP endpoint shut down.
omniORB: 0 object references present at ORB shutdown.
omniORB: ORB shutdown is complete.
omniORB: 0 remaining ropes deleted.
omniORB: AsyncInvoker: thread id = 1 has exited. Total threads = 2
omniORB: AsyncInvoker: thread id = 2 has exited. Total threads = 1
omniORB: AsyncInvoker: deleted.
omniORB: No more references to the ORB -- deleted.
omniORB: Final clean-up
omniORB: Deleted 1 nil object reference and 0 other tracked objects.
omniORB: Assertion failed -- mutex destroyed whilst still being used
by 1 condition variable(s).
This is probably a bug in omniORB. Please submit a report
(with stack trace if possible) to <omniorb@omniorb.org>.
client:
(skipped)
I said, "Hello!".
The Echo object replied, "Hello!".
omniORB: omniRemoteIdentity deleted.
omniORB: ObjRef(IDL:Echo:1.0) -- deleted.
omniORB: Preparing to shutdown ORB.
omniORB: Destroying POA(RootPOA).
omniORB: Deactivating all POA(RootPOA)'s objects.
omniORB: Waiting for requests to complete on POA(RootPOA).
omniORB: Requests on POA(RootPOA) completed.
omniORB: Etherealising POA(RootPOA)'s objects.
omniORB: Stopping serving incoming endpoints.
omniORB: giopServer waits for completion of rendezvousers and workers
omniORB: throw giopStream::CommFailure from
giopStream.cc:812(0,NO,COMM_FAILURE_
UnMarshalArguments)
omniORB: Client connection refcount = 1
omniORB: AsyncInvoker: thread id = 4 has started. Total threads = 4
omniORB: AsyncInvoker: thread id = 3 has exited. Total threads = 4
omniORB: AsyncInvoker: thread id = 1 has exited. Total threads = 3
... and client not exit.
my patch for eg2_clt.cc :
*** eg2_clt.cc Fri Jun 14 12:24:15 2002
--- eg2_clt_new.cc Fri Jun 28 14:07:59 2002
***************
*** 37,40 ****
--- 37,45 ----
{
+ CORBA::Object_var poa = orb->resolve_initial_references("RootPOA");
+ PortableServer::POA_var root_poa = PortableServer::POA::_narrow(poa);
+ PortableServer::POAManager_var pman = root_poa->the_POAManager();
+ pman->activate();
+
CORBA::Object_var obj = orb->string_to_object(argv[1]);
Echo_var echoref = Echo::_narrow(obj);
my patch for eg2_impl.cc :
*** eg2_impl.cc Fri Jun 14 12:24:15 2002
--- eg2_impl_new.cc Fri Jun 28 16:39:48 2002
***************
*** 57,61 ****
pman->activate();
! orb->run();
}
orb->destroy();
--- 57,63 ----
pman->activate();
! //orb->run();
! char c;
! cin >> c;
}
orb->destroy();
Help me please, I can't use OmniORB across firewalls!
--
Slava Garelin