PhoenixZMQ  2.0.0
Library which integrates zeromq use in Phoenix
PZmqBackend.h
Go to the documentation of this file.
1 /***************************************
2  Auteur : Pierre Aubert
3  Mail : pierre.aubert@lapp.in2p3.fr
4  Licence : CeCILL-C
5 ****************************************/
6 
7 #ifndef __PZMQBACKEND_H__
8 #define __PZMQBACKEND_H__
9 
10 #include "PSocketFlag.h"
11 #include "phoenix_data_stream.h"
12 #include "phoenix_zmq.h"
13 
15 struct PZmqParam{
17  zmq::context_t* context;
19  std::string address;
21  size_t port;
23  int type;
31  ssize_t dataRate;
32 };
33 
34 PZmqParam pzmq_createParamClient(const std::string & address, size_t port, zmq::context_t* context = NULL, int type = ZMQ_PULL, int nbBufferMessage = 10000, int bufferSizeByte = 1000000, size_t threadAffinity = 0lu, ssize_t dataRate = 200000l);
35 PZmqParam pzmq_createParamServer(const std::string & address, size_t port, zmq::context_t* context = NULL, int type = ZMQ_PUSH, int nbBufferMessage = 10000, int bufferSizeByte = 1000000, size_t threadAffinity = 0lu, ssize_t dataRate = 200000l);
36 
39  public:
41  typedef zmq::socket_t* Socket;
43  typedef zmq::message_t Message;
45  typedef PZmqParam Param;
46 
47  PZmqBackend();
48 
49  static Param client(const std::string & address, size_t port, zmq::context_t* context = NULL, int type = ZMQ_PULL, int nbBufferMessage = 10000, int bufferSizeByte = 1000000, size_t threadAffinity = 0lu, ssize_t dataRate = 200000l);
50  static Param server(const std::string & address, size_t port, zmq::context_t* context = NULL, int type = ZMQ_PUSH, int nbBufferMessage = 10000, int bufferSizeByte = 1000000, size_t threadAffinity = 0lu, ssize_t dataRate = 200000l);
51 
52  static bool createClientSocket(Socket & socket, const std::string & address, size_t port, const PZmqParam & param);
53  static bool createServerSocket(Socket & socket, const std::string & address, size_t port, const PZmqParam & param);
54 
55  static bool createClientSocket(Socket & socket, const Param & param);
56  static bool createServerSocket(Socket & socket, const Param & param);
57 
58  static bool send(Socket & socket, Message & msg, PSendFlag::PSendFlag flag);
59  static bool recv(Socket & socket, Message & msg, PRecvFlag::PRecvFlag flag);
60 
61  static void msgResize(Message& msg, size_t sizeMsg);
62  static size_t msgSize(const Message& msg);
63  static const DataStreamIter msgData(const Message& msg);
64  static DataStreamIter msgData(Message& msg);
65 
66  static void close(Socket & socket);
67  static bool isConnected(const Socket & socket);
68 
69  static void msgToMock(DataStreamMsg & mockMsg, const Message & msg);
70  static void mockToMsg(Message & msg, DataStreamMsg & mockMsg);
71 };
72 
73 
74 
75 #endif
76 
PZmqParam pzmq_createParamServer(const std::string &address, size_t port, zmq::context_t *context=NULL, int type=ZMQ_PUSH, int nbBufferMessage=10000, int bufferSizeByte=1000000, size_t threadAffinity=0lu, ssize_t dataRate=200000l)
Create param for a client socket.
Definition: PZmqBackend.cpp:46
PZmqParam pzmq_createParamClient(const std::string &address, size_t port, zmq::context_t *context=NULL, int type=ZMQ_PULL, int nbBufferMessage=10000, int bufferSizeByte=1000000, size_t threadAffinity=0lu, ssize_t dataRate=200000l)
Create param for a client socket.
Definition: PZmqBackend.cpp:20
Backend to use ZMQ library with PAbtractSocket.
Definition: PZmqBackend.h:38
static void close(Socket &socket)
Close the given socket.
static Param server(const std::string &address, size_t port, zmq::context_t *context=NULL, int type=ZMQ_PUSH, int nbBufferMessage=10000, int bufferSizeByte=1000000, size_t threadAffinity=0lu, ssize_t dataRate=200000l)
Create a server parameter.
Definition: PZmqBackend.cpp:92
PZmqParam Param
Define the type of extra parameters which can be used to create a Socket used by the PAbstractSocketM...
Definition: PZmqBackend.h:45
static Param client(const std::string &address, size_t port, zmq::context_t *context=NULL, int type=ZMQ_PULL, int nbBufferMessage=10000, int bufferSizeByte=1000000, size_t threadAffinity=0lu, ssize_t dataRate=200000l)
Create a client parameter.
Definition: PZmqBackend.cpp:77
static size_t msgSize(const Message &msg)
Get the size of a message.
PZmqBackend()
Default constructor of PZmqBackend.
Definition: PZmqBackend.cpp:62
static void msgToMock(DataStreamMsg &mockMsg, const Message &msg)
Copy current backend message data into mock message.
static void msgResize(Message &msg, size_t sizeMsg)
Resize a message.
static bool createClientSocket(Socket &socket, const std::string &address, size_t port, const PZmqParam &param)
Create a client socket.
static bool recv(Socket &socket, Message &msg, PRecvFlag::PRecvFlag flag)
Recieve message from the given socket.
static const DataStreamIter msgData(const Message &msg)
Get the data of a message.
static void mockToMsg(Message &msg, DataStreamMsg &mockMsg)
Copy mock message data into current backend message.
zmq::socket_t * Socket
Define the socket of the backend used by the PAbstractSocketManager.
Definition: PZmqBackend.h:41
static bool isConnected(const Socket &socket)
Close the given socket.
static bool send(Socket &socket, Message &msg, PSendFlag::PSendFlag flag)
Send message on the given socket.
zmq::message_t Message
Define the type of message used by the PAbstractSocketManager.
Definition: PZmqBackend.h:43
static bool createServerSocket(Socket &socket, const std::string &address, size_t port, const PZmqParam &param)
Create a server socket.
std::vector< DataStreamType > DataStreamMsg
DataStreamType * DataStreamIter
PRecvFlag
describe the recieving flag of the Socket
Definition: PSocketFlag.h:20
PSendFlag
describe the sending flag of the Socket
Definition: PSocketFlag.h:12
Set of parameters to be passed to create a socket with zmq backend.
Definition: PZmqBackend.h:15
zmq::context_t * context
Context.
Definition: PZmqBackend.h:17
ssize_t dataRate
Data rate.
Definition: PZmqBackend.h:31
int nbBufferMessage
Number of messages in the buffer.
Definition: PZmqBackend.h:25
int bufferSizeByte
Size of the message buffer in bytes.
Definition: PZmqBackend.h:27
size_t port
Connection port.
Definition: PZmqBackend.h:21
int type
Socket type.
Definition: PZmqBackend.h:23
size_t threadAffinity
Mask of threads which deal with reconnection.
Definition: PZmqBackend.h:29
std::string address
Host address.
Definition: PZmqBackend.h:19