Logo ROOT   6.16/01
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
30class TMonitor;
31
32
33class TPSocket : public TSocket {
34
35friend class TPServerSocket;
36
37private:
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
53public:
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;
83 Int_t GetSize() const { return fSize; }
84
85 ClassDef(TPSocket,0) // Parallel client socket
86};
87
88#endif
@ kMESS_STRING
Definition: MessageTypes.h:34
int Int_t
Definition: RtypesCore.h:41
const Bool_t kFALSE
Definition: RtypesCore.h:88
bool Bool_t
Definition: RtypesCore.h:59
const Bool_t kTRUE
Definition: RtypesCore.h:87
const char Option_t
Definition: RtypesCore.h:62
#define ClassDef(name, id)
Definition: Rtypes.h:324
ESockOptions
Definition: TSocket.h:37
ESendRecvOptions
Definition: TSocket.h:50
This class represents an Internet Protocol (IP) address.
Definition: TInetAddress.h:36
virtual Option_t * GetOption() const
Definition: TObject.h:120
Int_t SetOption(ESockOptions opt, Int_t val)
Set socket options.
Definition: TPSocket.cxx:763
Int_t GetDescriptor() const
Return socket descriptor.
Definition: TPSocket.cxx:476
Int_t RecvRaw(void *buffer, Int_t length, ESendRecvOptions opt)
Send a raw buffer of specified length.
Definition: TPSocket.cxx:688
TPSocket(TSocket *pSockets[], Int_t size)
Create a parallel socket. This ctor is called by TPServerSocket.
Definition: TPSocket.cxx:275
void Close(Option_t *opt="")
Close a parallel socket.
Definition: TPSocket.cxx:335
Int_t Recv(char *mess, Int_t max)
Receive a character string message of maximum max length.
Definition: TPSocket.h:75
Int_t fSize
Definition: TPSocket.h:41
Int_t GetSize() const
Definition: TPSocket.h:83
Int_t SendRaw(const void *buffer, Int_t length, ESendRecvOptions opt)
Send a raw buffer of specified length.
Definition: TPSocket.cxx:554
char ** fReadPtr
Definition: TPSocket.h:45
TMonitor * fWriteMonitor
Definition: TPSocket.h:39
Int_t Send(const TMessage &mess)
Send a TMessage object.
Definition: TPSocket.cxx:492
Int_t Send(Int_t kind)
Send a single message opcode.
Definition: TPSocket.h:69
Int_t Recv(TMessage *&mess)
Receive a TMessage object.
Definition: TPSocket.cxx:635
virtual ~TPSocket()
Cleanup the parallel socket.
Definition: TPSocket.cxx:317
Int_t Send(Int_t status, Int_t kind)
Send a status and a single message opcode.
Definition: TPSocket.h:70
TMonitor * fReadMonitor
Definition: TPSocket.h:40
Int_t GetErrorCode() const
Returns error code.
Definition: TPSocket.cxx:792
Int_t Send(const char *mess, Int_t kind=kMESS_STRING)
Send a character string buffer.
Definition: TPSocket.h:71
char ** fWritePtr
Definition: TPSocket.h:44
Option_t * GetOption() const
Definition: TPSocket.h:51
void operator=(const TPSocket &)
Int_t Recv(char *mess, Int_t max, Int_t &kind)
Receive a character string message of maximum max length.
Definition: TPSocket.h:76
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
Int_t * fReadBytesLeft
Definition: TPSocket.h:43
TPSocket(const TPSocket &)
Int_t Recv(Int_t &status, Int_t &kind)
Receives a status and a message type.
Definition: TPSocket.h:74
TInetAddress GetLocalInetAddress()
Return internet address of local host to which the socket is bound.
Definition: TPSocket.cxx:460
Bool_t IsValid() const
Definition: TPSocket.h:79
TSocket ** fSockets
Definition: TPSocket.h:38
virtual Int_t Recv(TMessage *&mess)
Receive a TMessage object.
Definition: TSocket.cxx:817
virtual Int_t Send(const TMessage &mess)
Send a TMessage object.
Definition: TSocket.cxx:522