Hi Krzysztof, you have to make the following fix in $ROOTSYS/src/NET_TMonitor.cxx: Bool_t TTimeOutTimer::Notify() { fMonitor->SetReady((TSocket *)-1); Remove(); // one shot only return kTRUE; } add the "Remove()" line. However, to get it to do what you want in your small test you have to make the following change in serv.C: { TServerSocket *ss = new TServerSocket(9090,kTRUE); TSocket *s=0; //s = ss->Accept(); // <- will block always TMonitor *m = new TMonitor(); m->Add(ss); // <- add server socket to monitor ... ... } Cheers, Fons. > Dear ROOT users, > > I would like to use TMonitor::Select(timeout) method, but it > seems as though I can't get it to do what I want. > Below, I have included a short piece of code that illustrates > my problem i.e. when I execute the m->Select(5000) the program > stops there until new socket's activity is detected, and doesn't > actually end the Select after the time-out. Why ? > > ROOT 2.20/06, Solaris 5.6 > > Many thanks in advance for any comments. > > Best regards, > Krzysztof > > ## Server ######################################################### > { > TServerSocket *ss = new TServerSocket(9090,kTRUE); > TSocket *s=0; > s = ss->Accept(); > TMonitor *m = new TMonitor(); > m->Add(s); > > TSocket *ns=0; > ns = m->Select(5000); > > if (ns == (TSocket*) -1) { > printf("Time out.\n"); > } else { > printf("Socket activity detected.\n"); > } > } > ## Client ######################################################### > > { > TSocket *s = new TSocket("localhost",9090); > > //The Server does not end Select until s->Send(..) is called. > s->Send("HELLO"); > } > > _____________________________________________________________________ > Krzysztof Wiktor Zelazowski Email: Krzysztof.Zelazowski@cern.ch > Etudiant technique div.EP |CERN| Tel.: +41 (22) 767 2382 > _____________________________________________________________________ > -- Org: CERN, European Laboratory for Particle Physics. Mail: 1211 Geneve 23, Switzerland E-Mail: Fons.Rademakers@cern.ch Phone: +41 22 7679248 WWW: http://root.cern.ch/~rdm/ Fax: +41 22 7677910
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:30 MET