[omniORB] eg3_clt.cc eg3_impl.cc design questions
Martin Trappel
0xCDCDCDCD at gmx.at
Wed Apr 9 11:44:44 BST 2008
Andre Konopka wrote:
> Hi,
>
> I'm new on corba and played around with the enclosed examples
> (especially eg3_clt.cc eg3_impl.cc).
> I use Suse SLES9 and omniORB-4.1.2
>
> I would like to 'hide' the complete corba stuff in an additional class
> so that I can call the 'echoString' method as you see if you have a look
> at the following code
>
> (...)
> I wrote a new class 'sendecho' to hide the corba details.
> (...)
> Here comes the sendecho.cc file
> (...)
> void sendecho::echoit(const char *msg) {
> int argc=0;
> char** argv=0;
> cout << "initializing corba " << endl;
> CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);
> cout << "calling getObjectReference" << endl;
> CORBA::Object_var obj = getObjectReference(orb);
> Echo_var echoref = Echo::_narrow(obj);
> cout << "calling echoString with parameter "<< msg << endl;
> CORBA::String_var dest = echoref->echoString(msg);
> cout << "server replied: " << dest << endl;
>
> }
I guess it's just test code so it should be all right. But if you want
to hide the CORBA stuff, it will be better to call ORB_init (and maybe
also getObjReferences) in the dtor (or another initializer fn) of your
helper class.
>
> CORBA::Object_ptr sendecho::getObjectReference(CORBA::ORB_ptr orb) {
>
> original code from eg3_clt.cc
>
> }
>
> It works fine as long as my 'server' eg3_impl.cc is up and running
>
> If I stop the server and restart my 'client' I get just
>
> Aborted
> (...)
> If I run the original code
>
> ./eg3_clt
> Caught system exception TRANSIENT -- unable to contact the server.
>
> the 'client' aborted as expected.
>
>
> Why the code doesn't throw an exception?
> Is there a better (clean) way to hide corba implementation details?
>
When you read the error messages given in eg3_clt you will see that the
try-catch block in getObjRef() is for the Naming Service and _not_ for
the Object. The TRANSIENT error message you are getting in the original
code comes from main() as there is also a try-catch block.
br,
Martin
More information about the omniORB-list
mailing list