ROOT  6.07/01
Reference Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
TXSocketHandler.cxx
Go to the documentation of this file.
1 // @(#)root/proofx:$Id$
2 // Author: Gerardo Ganis 12/12/2005
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2005, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 /** \class TXSocketHandler
13 \ingroup proofx
14 
15 Input handler for XProofD sockets. These sockets cannot be directly
16 monitored on their descriptor, because the reading activity goes via
17 the internal reader thread. This class allows to handle the related issue.
18 
19 */
20 
21 #include "TMonitor.h"
22 #include "TProof.h"
23 #include "TSlave.h"
24 #include "TXSocketHandler.h"
25 #include "TXHandler.h"
26 #include "TList.h"
27 
28 
30 
31 // Unique instance of the socket input handler
32 TXSocketHandler *TXSocketHandler::fgSocketHandler = 0;
33 
34 ////////////////////////////////////////////////////////////////////////////////
35 /// Set readiness on the monitor
36 
37 Bool_t TXSocketHandler::Notify()
38 {
39  if (gDebug > 2)
41 
42  // Get the socket
44  if (gDebug > 2)
45  Info("Notify", "ready socket %p (%s) (input socket: %p) (fFileNum: %d)",
46  s, (s ? s->GetTitle() : "***undef***"), fInputSock, fFileNum);
47 
48  // If empty, nothing to do
49  if (!s) {
50  Warning("Notify","socket-ready list is empty!");
51  return kTRUE;
52  }
53 
54  // Handle this input
55  s->fHandler->HandleInput();
56 
57  // We are done
58  return kTRUE;
59 }
60 
61 ////////////////////////////////////////////////////////////////////////////////
62 /// Get an instance of the input socket handler with 'h' as handler,
63 /// connected to socket 's'.
64 /// Create the instance, if not already existing
65 
67 {
68  if (!fgSocketHandler)
69  fgSocketHandler = new TXSocketHandler(h, s);
70  else
71  if (h && s)
72  fgSocketHandler->SetHandler(h, s);
73 
74  return fgSocketHandler;
75 }
virtual const char * GetTitle() const
Returns title of object.
Definition: TNamed.h:52
static TXSocketHandler * GetSocketHandler(TFileHandler *h=0, TSocket *s=0)
Get an instance of the input socket handler with 'h' as handler, connected to socket 's'...
TH1 * h
Definition: legend2.C:5
bool Bool_t
Definition: RtypesCore.h:59
TXSocket * GetLastReady()
Return last ready socket.
Definition: TXSocket.cxx:2338
TXHandler * fHandler
Definition: TXSocket.h:93
void Info(const char *location, const char *msgfmt,...)
virtual Bool_t HandleInput(const void *in=0)
Input handler for XProofD sockets.
High level handler of connections to XProofD.
Definition: TXSocket.h:72
void Warning(const char *location, const char *msgfmt,...)
#define ClassImp(name)
Definition: Rtypes.h:279
void DumpReadySock()
Dump content of the ready socket list.
Definition: TXSocket.cxx:2323
static TXSocketHandler * fgSocketHandler
static TXSockPipe fgPipe
Definition: TXSocket.h:124
R__EXTERN Int_t gDebug
Definition: Rtypes.h:128
const Bool_t kTRUE
Definition: Rtypes.h:91
TXSocketHandler(TFileHandler *h, TSocket *s)