Re: [ROOT] TSocketHandler bug?

From: Valeri Fine (fine@bnl.gov)
Date: Thu Feb 07 2002 - 19:39:06 MET


> Hi again,
> 
> could someone run the code I sent and check if there is a bug in root on
> windows? I asked Valery and he replied he has not time to support root
> on windows.

Let me clarify, the socket (server)  functionality had not been completed 
for Windows. It was highlighted many times on this list. Nobody said "it does work". 
The reason is simple - there was no demand (as usually :-)

So it is not a question of support rather a new development 
May be it is small (very small) one.

                          Valeri
 
> I do not think there is a serious problem with socket select() in root
> main event loop, just a minor error (if any). Could you check please?
 
> /Anton
> Gentlemen,
> 
> I am attaching a few lines of code and a makefile (for windows) which
> doesn't work on windows but does work on Linux.
> 
> Note: I tested this code with the latest root binary on win98 and winNT
> and with root 3.01 on Mandrake Linux.
> 
> Fons/Valery, could you comment on this please. It is very important for
> me to know if this is a bug or feature.
> 
> Cheers,
> Anton
> 
> #include "TROOT.h"
> #include "TRint.h"
> #include "TSystem.h"
> #include "TStyle.h"
> #include "TError.h"
> #include "TEnv.h"
> #include "TSysEvtHandler.h"
> #include "TSocket.h"
> #include "TServerSocket.h"
> 
> class TSocketHandler : public TFileHandler {
> private:
>    TSocket            *fSocket;      //!socket being handled
> 
> public:
> 
>             TSocketHandler(TSocket *Socket);
> 
> virtual    Bool_t  Notify();
> 
>     Bool_t  ReadNotify()  { return Notify(); }
>     Bool_t  WriteNotify() { return Notify(); }
> 
>    TSocket *GetSocket() const { return fSocket; }
> };
> 
> TSocketHandler::TSocketHandler(TSocket *Socket) :
> TFileHandler(Socket->GetDescriptor(), 1)
> {
>    fSocket      = Socket;
> 
>    gSystem->AddFileHandler(this);
> }
> 
> Bool_t
> TSocketHandler::Notify()
> {
>   printf("Connection request\n");
> 
>   return kTRUE;
> }
> 
> int main( int argc, char ** argv )
> {
> 
>   TROOT ROOT("R-Quant", "R-Quant Data Analysis Studio");
> 
>   TRint App("R-Quant Data Analysis Studio", &argc, argv, 0, 0, kTRUE);
> 
>   TServerSocket  *ServerSocket = new TServerSocket(9999, kTRUE);
>   TSocketHandler *Handler      = new TSocketHandler(ServerSocket);
> 
>   App.Run(kTRUE);
> 
>   return 0;
> }
> 
> 
> 
> 
> ObjSuf        = obj
> SrcSuf        = cxx
> ExeSuf        = exe
> DllSuf        = dll
> OutPutOpt     = -out:
> 
> # Win32 system with Microsoft Visual C/C++
> !include <win32.mak>
> 
> # Compilation options (debug/release)
> !include "..\option.mak"
> 
> INCFLAGS       = -I$(ROOTSYS)/include
> 
> CC            = $(cc)
> CXX           = $(cc)
> CXXFLAGS      = $(CXXOPT) $(cvarsdll) -nologo -G5 -GR -MD -DWIN32
> -DVISUAL_CPLUSPLUS -D_WINDOWS -D_FINANCE_ $(INCFLAGS)
> 
> LD            = $(link)
> LDFLAGS       = $(LDOPT) $(conlflags) -nologo -pdb:none
> SOFLAGS       = $(dlllflags:-pdb:none=)
> ROOTLIBS      = $(ROOTSYS)/lib/libCore.lib \
>                 $(ROOTSYS)/lib/libCint.lib $(ROOTSYS)/lib/libHist.lib \
>                 $(ROOTSYS)/lib/libGraf.lib $(ROOTSYS)/lib/libGraf3d.lib
> \
>                 $(ROOTSYS)/lib/libGpad.lib $(ROOTSYS)/lib/libTree.lib \
>                 $(ROOTSYS)/lib/libRint.lib
> $(ROOTSYS)/lib/libPostscript.lib \
>                 $(ROOTSYS)/lib/libMatrix.lib
> $(ROOTSYS)/lib/libPhysics.lib \
>                 $(ROOTSYS)/lib/libGui.lib
> 
> 
> LIBS          = $(ROOTLIBS) $(QTLIBS) $(RQUANTLIBS) $(guilibsdll)
> MSVCIRT.LIB
> 
> #------------------------------------------------------------------------------
> 
> RQUANTO       = test.$(ObjSuf)
> 
> RQUANT        = test.$(ExeSuf)
> 
> $(RQUANT):      $(RQUANTO)
>                 $(LD) $(LDFLAGS) $(RQUANTO) $(LIBS)
> $(OutPutOpt)$(RQUANT)
>                 @echo "RQUANT done"
> 
> 
> 
> # ---------------------------------- RQUANT
> ----------------------------------------------------
> 
> 
> # RQuant
> 
> test.$(ObjSuf) : test.cxx
>                 $(CXX) test.cxx $(CXXFLAGS) -c
> 
> 
> 
> 



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:41 MET