Hi ROOTers,
I implemented an application using client-server communication via the
classes MSocket and MServerSocket.
I implemented some routines to detect if one of the programs is not
running e.g. the server. In this case the client frequently tries to
reconnect to the server. This reconnection is done via creating a new
TSocket object.
Until the program returns from a call like
> TSocket *S = new TSocket("localhost, 9090);
almost 3 seconds have passed - in case the connection was not possible.
The reason for this lies in the function
TUnixSystem::OpenConnection(...)
{
...
for (int i = 0; i < 3; i++) {
int fd = ConnectService(server, port, tcpwindowsize);
if (fd >= 0)
return fd;
sleep(1);
}
}
Now my questions regarding the above code:
* Is it really necessary to try 3 times to connect?
* Is it really necessary to sleep for one second?
Yes, one second, I tested it. A call to gSystem->Sleep(1) would take only
one millisecond, but sleep(1) takes ONE second.
This high time consumption is very unfavorable, because I try to build a
real-time analysis tool.
The attempt to bypass OpenConnection and call directly ConnectService
from a class dervied from TSocket failed because there is no class
ConnectService in TSystem (only in TUnixSystem).
If nobody suggest another possiblity I will simply copy the source-code
from TUnixSystem to my Socket-class, but if possible I would like to
prevent this...
Thanks,
Andreas
ROOT-version: 3.00.06, OS: SuSE Linux 7.1
----------------------------------------------------------------------
Andreas Zoglauer
MPI fuer extraterrestrische Physik Phone: +49/89-30000-3848
Postfach 1312 Fax: +49/89-30000-3569
85741 Garching, Germany Email: zog@mpe.mpg.de
----------------------------------------------------------------------
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:43 MET