Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

DDSParentServer.h

Go to the documentation of this file.
00001 #ifndef DDSPARENTSERVER_H
00002 #define DDSPARENTSERVER_H
00003 
00005 //                                                                          //
00006 // DDSParentServer                                                          //
00007 //                                                                          //
00008 // Package: DDS (Data Dispatcher System).                                   //
00009 //                                                                          //
00010 // S. Kasahara  2/2001                                                      //
00011 // Based in part on ideas from the LHCb OTT online monitoring system.       //
00013 #include <iosfwd> // ostream forward decl.
00014 using namespace std;
00015 
00016 #include "TServerSocket.h" // necessary for TServerSocket::kDefaultBacklog
00017 #include "TMessage.h" // data member
00018 #include "MessageService/Msg.h"
00019 #include "Dispatcher/DDS.h"
00020 #include "Dispatcher/DDSPSStatus.h" // data member
00021 
00022 class DDSParentServer;
00023 
00024 std::ostream& operator << (std::ostream& ms, DDSParentServer* ps);
00025 
00026 class DDSParentServer {
00027 
00028 public:
00029 
00030 // Typedefs and enumerations
00031   enum { kMaxChild = 10 }; // max no. of child servers allowed at any one time 
00032   
00033 // Constructors and destructor.
00034   DDSParentServer (UInt_t port = 0, UInt_t maxchild = kMaxChild, 
00035   Int_t logLevel = Msg::kInfo, Int_t maxinactive = 21600, 
00036   Int_t backlog = TServerSocket::kDefaultBacklog);
00037   virtual ~DDSParentServer ();  
00038 
00039 // State testing member functions.
00040   bool IsValid () const { 
00041                  return (fTServerSocket != (TServerSocket*)0) ? true : false; }
00042   std::ostream& Print(std::ostream& ms) const; 
00043   
00044 // State changing member functions.
00045   void Run();                  
00046 
00047 private:
00048 
00049 // Private member functions.
00050   bool Authorize() const; 
00051   UInt_t CheckChildStatus();  
00052   bool IsLocalClient() const;
00053   DDS::EMessageType SpawnChildServer(); 
00054   DDS::EMessageType Shutdown();            
00055   DDS::EMessageType Status();            
00056 
00057 // Data members.
00058   TServerSocket* fTServerSocket;  // pointer to listening socket
00059   UInt_t         fMaxChild;       // maximum number of child servers allowed
00060   Int_t          fLogLevel;       // message service log level
00061   Int_t          fMaxInactive;    // max inactive time before child is shutdown
00062   UInt_t         fNumChild;       // current number of child servers running
00063   bool           fShutdown;       // if true server socket will be shutdown  
00064   TSocket*       fTSocket;        // pointer to current client socket
00065   TInetAddress   fServerAddress;  // local internet address of server
00066   TInetAddress   fClientAddress;  // internet address of current client
00067   TMessage*      fMessageIn;      // message received from client
00068   TMessage       fMessageOut;     // message sent to client
00069   DDSPSStatus    fPSStatus;       // parent server status 
00070 
00071   ClassDef(DDSParentServer,0)   // MINOS Data Dispatcher System Parent Server
00072 };
00073 
00074 #endif        // DDSPARENTSERVER_H
00075 
00076 
00077 
00078 
00079 
00080 

Generated on Mon Feb 15 11:06:36 2010 for loon by  doxygen 1.3.9.1