[omniORB] Omni Orb and OpenVMS serialized processing

Jan Knobloch jknobloch at pikeelectronic.com
Wed Feb 1 12:47:00 GMT 2006


Hi,

 

I am running OmniOrb on OpenVMS platform with following options:

 

      const char* options[][2] = { 

            { "traceLevel", "0" }, //25 hodne

            //{ "dumpConfiguration", "0" },

            //Server

            { "threadPerConnectionPolicy", "0" }, 

            { "maxServerThreadPerConnection", "100" },

            { "maxServerThreadPoolSize", "2" },

            { "threadPoolWatchConnection", "1" },

            //{ "serverTransportRule","* tcp" },

            //Client

            { "clientCallTimeOutPeriod", ORBClientCallTimeout },

            { "oneCallPerConnection", "0" },

            { "verifyObjectExistsAndType", "0" },

            //{ "clientTransportRule","* tcp" },

            { 0, 0 } };

      orb = CORBA::ORB_init(largc, largv, "omniORB4", options);

 

 

I am using VMS AST routines (for timers) and one more application thread
created with VMS runtime routines for pure socket communication to the
computers without possibility to run CORBA as follows:

 

pthread_create( &m_thread, NULL, tcpThread, NULL );

 

The major problem is that I need to synchronize all incoming events/messages
synchronously. It means one after an other. 

I have tried to post the events/messages from AST timer routine and my
TCP/IP thread to CORBA, but it resolves the CORBA object as local and do the
call directly, without putting it into the queue. The above mentioned
options settings I am using works perfectly, but only for CORBA calls. Do
you have any suggestion how could I synchronize it with AST timer routines
and my thread? Is it possible to use one of the omni_mutex_lock? I have
tried to lock omni::internalLock in my application AST timer routine and
thread just before I need to call serialized code. But it works only if the
timer or my thread event comes first. If the CORBA call is in progress and
timer or my thread event comes, than the CORBA call is interrupted and both
events are processed parallel (of course each in its own thread). That's I
do not like.

I was thinking to add my own mutex_lock somewhere into the omniOrb code, but
I did not find a best place, where to add it. It should be around the line
where servlet routine (from my interface idl file) is called.

 

Please let me know if you have any solution for this problem.

 

Thank you,

 

Jan

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.omniorb-support.com/pipermail/omniorb-list/attachments/20060201/4469d6d7/attachment.htm


More information about the omniORB-list mailing list