|
ROOT 6.18/05 Reference Guide |
#include "TBufferFile.h"#include "TClass.h"#include "TError.h"#include "TSocket.h"#include <memory>#include <type_traits>#include <typeinfo>#include <utility>Typedefs | |
| using | MPCodeBufPair = std::pair< unsigned, std::unique_ptr< TBufferFile > > |
| An std::pair that wraps the code and optional object contained in a message. More... | |
Functions | |
| MPCodeBufPair | MPRecv (TSocket *s) |
| Receive message from a socket. More... | |
| int | MPSend (TSocket *s, unsigned code) |
| Send a message with the specified code on the specified socket. More... | |
| template<class T , typename std::enable_if< std::is_class< T >::value >::type * = nullptr> | |
| int | MPSend (TSocket *s, unsigned code, T obj) |
| Send a message with a code and an object to socket s. More... | |
| template<class T , typename std::enable_if< std::is_class< T >::value >::type * = nullptr> | |
| T | ReadBuffer (TBufferFile *buf) |
| One of the template functions used to read objects from messages. More... | |
| using MPCodeBufPair = std::pair<unsigned, std::unique_ptr<TBufferFile> > |
An std::pair that wraps the code and optional object contained in a message.
| first | message code |
| second | a smart pointer to a TBufferFile that contains the message object The smart pointer is null if the message does not contain an object but only consists of a code. See MPRecv() description on how to retrieve the object from the TBufferFile. |
Definition at line 31 of file MPSendRecv.h.
| MPCodeBufPair MPRecv | ( | TSocket * | s | ) |
Receive message from a socket.
This standalone function can be used to read a message that has been sent via MPSend(). The smart pointer contained in the returned MPCodeBufPair is null if the message does not contain an object, otherwise it points to a TBufferFile. To retrieve the object from the buffer different methods must be used depending on the type of the object to be read:
| s | a pointer to a valid TSocket. No validity checks are performed |
Definition at line 54 of file MPSendRecv.cxx.
| int MPSend | ( | TSocket * | s, |
| unsigned | code | ||
| ) |
Send a message with the specified code on the specified socket.
This standalone function can be used to send a code on a given socket. It does not check whether the socket connection is in a valid state. The message code can then be retrieved via MPRecv().
Note: only objects the headers of which have been parsed by cling can be sent by MPSend(). User-defined types can be made available to cling via a call like gSystem->ProcessLine("#include \"header.h\""). Pointer types are not supported (with the exception of const char*), but the user can simply dereference the pointer and send the pointed object instead.
Note: for readability, codes should be enumerated as in EMPCode.
| s | a pointer to a valid TSocket. No validity checks are performed |
| code | the code to be sent |
Definition at line 32 of file MPSendRecv.cxx.
| int MPSend | ( | TSocket * | s, |
| unsigned | code, | ||
| T | obj | ||
| ) |
Send a message with a code and an object to socket s.
The number of bytes sent is returned, as per TSocket::SendRaw. This standalone function can be used to send a code and possibly an object on a given socket. This function does not check whether the socket connection is in a valid state. MPRecv() must be used to retrieve the contents of the message.
Note: only objects the headers of which have been parsed by cling can be sent using MPSend(). User-defined types can be made available to cling via a call like gSystem->ProcessLine("#include \"header.h\""). Pointer types cannot be sent via MPSend() (with the exception of const char*).
| s | a pointer to a valid TSocket. No validity checks are performed |
| code | the code to be sent |
| obj | the object to be sent |
Definition at line 91 of file MPSendRecv.h.
| T ReadBuffer | ( | TBufferFile * | buf | ) |
One of the template functions used to read objects from messages.
Different implementations are provided for different types of objects: classes, non-pointer built-ins and const char*. Reading pointers is not implemented (at the time of writing, sending pointers is not either).
Definition at line 157 of file MPSendRecv.h.