#include "TBufferFile.h"
#include "TClass.h"
#include "TError.h"
#include "TSocket.h"
#include <memory>
#include <type_traits>
#include <typeinfo>
#include <utility>
#include <string>
Typedefs | |
using | MPCodeBufPair = std::pair< unsigned, std::unique_ptr< TBufferFile > > |
An std::pair that wraps the code and optional object contained in a message. | |
Functions | |
MPCodeBufPair | MPRecv (TSocket *s) |
Receive message from a socket. | |
int | MPSend (TSocket *s, unsigned code) |
Send a message with the specified code on the specified socket. | |
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. | |
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. | |
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 32 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.
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 92 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 158 of file MPSendRecv.h.