[omniORB] oneway messages

jon.kristensen@kongsberg-simrad.com jon.kristensen@kongsberg-simrad.com
Mon, 31 Jan 2000 12:34:59 +0100



Hi,

We had exactly the same problem.
It seems that the messages are buffered by the TCP/IP stack.

We fixed this by adding the following lines to the function 'realConnect()' in
<omniORB root>\src\lib\omniORB2\orbcore\tcpSocketMTfactory.cc :

  int nNoDelay = TRUE;
#if defined(__WIN32__) && !defined(__ETS_KERNEL__)
  int nResult = setsockopt( sock, IPPROTO_TCP, TCP_NODELAY, (const
char*)&nNoDelay, sizeof(nNoDelay) );
#else
  int nResult = setsockopt( sock, SOL_SOCKET, TCP_NODELAY, (const
char*)&nNoDelay, sizeof(nNoDelay) );
#endif
  if (nResult){
    int nError = WSAGetLastError(); // For debug purposes...
    return RC_SOCKET_ERROR;
  }

These lines should be inserted just after the socket has been created, but
before it is set to Non-blocking or 'connected'. In my omniORB 2.8.0 source file
this is at line 1068.

Maybe the omniORB folks should add a command line option to handle this?

Hope this information can help you.
Jon.






barbara.mathae@sdm.de on 31.01.2000 12:08:00
To:   omniorb-list@uk.research.att.com
cc:    (bcc: Jon Kristensen/NOHRT/KS/KM/KOG)
Subject:  [omniORB] oneway messages




Hi,

I have some questions about oneway methods. When sending oneway messages,
these messages are not delivered to the Server at once. The ominorb waits
about 200ms then all oneway messages, which were send in the meantime,  are
sent to the server all at once. I do not understand what is happening inside
the omniORB. Is it an internal timer? Is there any possibility to change
this behavior?

Thank you
Barbara