Logo ROOT   6.14/05
Reference Guide
TPSocket.h
Go to the documentation of this file.
1 // @(#)root/net:$Id$
2 // Author: Fons Rademakers 20/1/2001
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2001, 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 #ifndef ROOT_TPSocket
13 #define ROOT_TPSocket
14 
15 
16 //////////////////////////////////////////////////////////////////////////
17 // //
18 // TPSocket //
19 // //
20 // This class implements parallel client sockets. A parallel socket is //
21 // an endpoint for communication between two machines. It is parallel //
22 // because several TSockets are open at the same time to the same //
23 // destination. This especially speeds up communication over Big Fat //
24 // Pipes (i.e. high bandwidth, high latency WAN connections). //
25 // //
26 //////////////////////////////////////////////////////////////////////////
27 
28 #include "TSocket.h"
29 
30 class TMonitor;
31 
32 
33 class TPSocket : public TSocket {
34 
35 friend class TPServerSocket;
36 
37 private:
38  TSocket **fSockets; // array of parallel sockets
39  TMonitor *fWriteMonitor; // monitor write on parallel sockets
40  TMonitor *fReadMonitor; // monitor read from parallel sockets
41  Int_t fSize; // number of parallel sockets
42  Int_t *fWriteBytesLeft; // bytes left to write for specified socket
43  Int_t *fReadBytesLeft; // bytes left to read for specified socket
44  char **fWritePtr; // pointer to write buffer for specified socket
45  char **fReadPtr; // pointer to read buffer for specified socket
46 
47  TPSocket(TSocket *pSockets[], Int_t size);
48  TPSocket(const TPSocket &); // not implemented
49  void operator=(const TPSocket &); // idem
50  void Init(Int_t tcpwindowsize, TSocket *sock = 0);
51  Option_t *GetOption() const { return TObject::GetOption(); }
52 
53 public:
54  TPSocket(TInetAddress address, const char *service, Int_t size,
55  Int_t tcpwindowsize = -1);
56  TPSocket(TInetAddress address, Int_t port, Int_t size,
57  Int_t tcpwindowsize = -1);
58  TPSocket(const char *host, const char *service, Int_t size,
59  Int_t tcpwindowsize = -1);
60  TPSocket(const char *host, Int_t port, Int_t size, Int_t tcpwindowsize = -1);
61  TPSocket(const char *host, Int_t port, Int_t size, TSocket *sock);
62  virtual ~TPSocket();
63 
64  void Close(Option_t *opt="");
65  Int_t GetDescriptor() const;
67 
68  Int_t Send(const TMessage &mess);
69  Int_t Send(Int_t kind) { return TSocket::Send(kind); }
70  Int_t Send(Int_t status, Int_t kind) { return TSocket::Send(status, kind); }
71  Int_t Send(const char *mess, Int_t kind = kMESS_STRING) { return TSocket::Send(mess, kind); }
72  Int_t SendRaw(const void *buffer, Int_t length, ESendRecvOptions opt);
73  Int_t Recv(TMessage *&mess);
74  Int_t Recv(Int_t &status, Int_t &kind) { return TSocket::Recv(status, kind); }
75  Int_t Recv(char *mess, Int_t max) { return TSocket::Recv(mess, max); }
76  Int_t Recv(char *mess, Int_t max, Int_t &kind) { return TSocket::Recv(mess, max, kind); }
77  Int_t RecvRaw(void *buffer, Int_t length, ESendRecvOptions opt);
78 
79  Bool_t IsValid() const { return fSockets ? kTRUE : kFALSE; }
80  Int_t GetErrorCode() const;
82  Int_t GetOption(ESockOptions opt, Int_t &val);
83  Int_t GetSize() const { return fSize; }
84 
85  ClassDef(TPSocket,0) // Parallel client socket
86 };
87 
88 #endif
Int_t Recv(char *mess, Int_t max)
Receive a character string message of maximum max length.
Definition: TPSocket.h:75
char ** fReadPtr
Definition: TPSocket.h:45
const char Option_t
Definition: RtypesCore.h:62
char ** fWritePtr
Definition: TPSocket.h:44
ESockOptions
Definition: TSocket.h:36
virtual Int_t Send(const TMessage &mess)
Send a TMessage object.
Definition: TSocket.cxx:527
virtual Int_t Recv(TMessage *&mess)
Receive a TMessage object.
Definition: TSocket.cxx:822
Int_t Recv(Int_t &status, Int_t &kind)
Receives a status and a message type.
Definition: TPSocket.h:74
void Close(Option_t *opt="")
Close a parallel socket.
Definition: TPSocket.cxx:335
This class represents an Internet Protocol (IP) address.
Definition: TInetAddress.h:36
Option_t * GetOption() const
Definition: TPSocket.h:51
Int_t * fReadBytesLeft
Definition: TPSocket.h:43
Int_t Send(const TMessage &mess)
Send a TMessage object.
Definition: TPSocket.cxx:492
Bool_t IsValid() const
Definition: TPSocket.h:79
virtual ~TPSocket()
Cleanup the parallel socket.
Definition: TPSocket.cxx:317
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
Int_t Send(const char *mess, Int_t kind=kMESS_STRING)
Send a character string buffer.
Definition: TPSocket.h:71
Int_t Recv(char *mess, Int_t max, Int_t &kind)
Receive a character string message of maximum max length.
Definition: TPSocket.h:76
ESendRecvOptions
Definition: TSocket.h:49
Int_t GetSize() const
Definition: TPSocket.h:83
#define ClassDef(name, id)
Definition: Rtypes.h:320
TSocket ** fSockets
Definition: TPSocket.h:38
TPSocket(TSocket *pSockets[], Int_t size)
Create a parallel socket. This ctor is called by TPServerSocket.
Definition: TPSocket.cxx:275
TMonitor * fReadMonitor
Definition: TPSocket.h:40
Int_t SendRaw(const void *buffer, Int_t length, ESendRecvOptions opt)
Send a raw buffer of specified length.
Definition: TPSocket.cxx:554
Int_t RecvRaw(void *buffer, Int_t length, ESendRecvOptions opt)
Send a raw buffer of specified length.
Definition: TPSocket.cxx:688
Int_t GetDescriptor() const
Return socket descriptor.
Definition: TPSocket.cxx:476
void operator=(const TPSocket &)
Int_t GetErrorCode() const
Returns error code.
Definition: TPSocket.cxx:792
const Bool_t kFALSE
Definition: RtypesCore.h:88
Int_t Send(Int_t kind)
Send a single message opcode.
Definition: TPSocket.h:69
Int_t SetOption(ESockOptions opt, Int_t val)
Set socket options.
Definition: TPSocket.cxx:763
Int_t Send(Int_t status, Int_t kind)
Send a status and a single message opcode.
Definition: TPSocket.h:70
Int_t fSize
Definition: TPSocket.h:41
virtual Option_t * GetOption() const
Definition: TObject.h:120
TMonitor * fWriteMonitor
Definition: TPSocket.h:39
TInetAddress GetLocalInetAddress()
Return internet address of local host to which the socket is bound.
Definition: TPSocket.cxx:460
Int_t Recv(TMessage *&mess)
Receive a TMessage object.
Definition: TPSocket.cxx:635
Int_t * fWriteBytesLeft
Definition: TPSocket.h:42
void Init(Int_t tcpwindowsize, TSocket *sock=0)
Create a parallel socket to the specified host.
Definition: TPSocket.cxx:365
const Bool_t kTRUE
Definition: RtypesCore.h:87