PhoenixZMQ  7.2.0
Library which integrates zeromq use
Loading...
Searching...
No Matches
PZmqBackend.h
Go to the documentation of this file.
1/***************************************
2 Auteur : Thibaut Oprinsen
3 Mail : thibaut.oprinsen@lapp.in2p3.fr
4 Licence : CeCILL-C
5****************************************/
6
7#ifndef __PZMQBACKEND_H__
8#define __PZMQBACKEND_H__
9
10#include <string>
11#include "PSocketFlag.h"
12#include "phoenix_generic_mock.h"
13#include "phoenix_data_stream.h"
14#include "phoenix_zmq.h"
15
31
32PZmqParam pzmq_createParamClient(int type, int nbBufferMessage = 10000, int bufferSizeByte = 1000000, size_t threadAffinity = 0lu, ssize_t dataRate = 200000l, int linger = -1);
33PZmqParam pzmq_createParamServer(int type, int nbBufferMessage = 10000, int bufferSizeByte = 1000000, size_t threadAffinity = 0lu, ssize_t dataRate = 200000l, int linger = -1);
34template <typename T>
35std::string statusToStr(T status);
36PSendStatus::PSendStatus checkSendStatus(zmq::send_result_t res);
37PRecvStatus::PRecvStatus checkRecvStatus(zmq::recv_result_t res);
38
41 public:
43 typedef zmq::message_t Message;
46
47 PZmqSocket();
48 virtual ~PZmqSocket();
49
50 bool createClientSocket(zmq::context_t & context, const PSocketParam & socketParam, const Param & extraParam);
51 bool createServerSocket(zmq::context_t & context, const PSocketParam & socketParam, const Param & extraParam);
52
53 template<typename T>
54 PSendStatus::PSendStatus sendData(const T & data, PSendFlag::PSendFlag flag = PSendFlag::BLOCK);
55 PSendStatus::PSendStatus sendMsg(Message & msg, PSendFlag::PSendFlag flag = PSendFlag::BLOCK);
56
57 template<typename T>
58 PRecvStatus::PRecvStatus recvData(T & data, PRecvFlag::PRecvFlag flag = PRecvFlag::BLOCK);
59 PRecvStatus::PRecvStatus recvMsg(Message & msg, PRecvFlag::PRecvFlag flag = PRecvFlag::BLOCK);
60
61 bool isConnected() const;
62 void close();
63 private:
65 zmq::socket_t* p_socket;
66};
67
70 public:
74 typedef zmq::message_t Message;
77
79
80 static Param client();
81 static Param server();
82
83 bool createClientSocket(Socket & socket, const PSocketParam & socketParam, const PZmqParam & param);
84 bool createServerSocket(Socket & socket, const PSocketParam & socketParam, const PZmqParam & param);
85
86 static void msgToMock(DataStreamMsg & mockMsg, const Message & msg);
87 static void mockToMsg(Message & msg, DataStreamMsg & mockMsg);
88
89 private:
91 zmq::context_t p_context;
92};
93
94#include "PZmqBackend_impl.h"
95
96#endif
97
std::string statusToStr(T status)
Convert PSendStatus into string.
PRecvStatus::PRecvStatus checkRecvStatus(zmq::recv_result_t res)
Check the recv result and convert it into PRecvStatus.
PZmqParam pzmq_createParamServer(int type, int nbBufferMessage=10000, int bufferSizeByte=1000000, size_t threadAffinity=0lu, ssize_t dataRate=200000l, int linger=-1)
Create param for a client socket.
PZmqParam pzmq_createParamClient(int type, int nbBufferMessage=10000, int bufferSizeByte=1000000, size_t threadAffinity=0lu, ssize_t dataRate=200000l, int linger=-1)
Create param for a client socket.
PSendStatus::PSendStatus checkSendStatus(zmq::send_result_t res)
Check the send result and convert it into PSendStatus.
zmq::context_t p_context
Context ZMQ.
Definition PZmqBackend.h:91
PZmqParam Param
Define the type of extra parameters which can be used to create a Socket used by the PAbstractSocketM...
Definition PZmqBackend.h:76
PZmqSocket Socket
Define the socket of the backend used by the PAbstractSocketManager.
Definition PZmqBackend.h:72
bool createServerSocket(Socket &socket, const PSocketParam &socketParam, const PZmqParam &param)
Create a server socket.
bool createClientSocket(Socket &socket, const PSocketParam &socketParam, const PZmqParam &param)
Create a client socket.
static void mockToMsg(Message &msg, DataStreamMsg &mockMsg)
Copy mock message data into current backend message.
zmq::message_t Message
Define the type of message used by the PAbstractSocketManager.
Definition PZmqBackend.h:74
PZmqSocketGenerator()
Default constructor of PZmqSocketGenerator setting the number of threads for zmq I/O to 1.
static void msgToMock(DataStreamMsg &mockMsg, const Message &msg)
Copy current backend message data into mock message.
static Param server()
Create a server parameter.
static Param client()
Create a client parameter.
PhoenixSocket API bridge to ZMQ socket.
Definition PZmqBackend.h:40
zmq::socket_t * p_socket
ZMQ Socket.
Definition PZmqBackend.h:65
PZmqSocket()
Default constructor of PZmqSocket.
bool isConnected() const
Check if the socket is connected.
bool createClientSocket(zmq::context_t &context, const PSocketParam &socketParam, const Param &extraParam)
Create a client socket.
PSendStatus::PSendStatus sendData(const T &data, PSendFlag::PSendFlag flag=PSendFlag::BLOCK)
Send data with the socket.
PSendStatus::PSendStatus sendMsg(Message &msg, PSendFlag::PSendFlag flag=PSendFlag::BLOCK)
Send data with the socket.
void close()
Close the socket.
bool createServerSocket(zmq::context_t &context, const PSocketParam &socketParam, const Param &extraParam)
Create a server socket.
PZmqParam Param
Define the type of extra parameters which can be used to create a Socket used by the PAbstractSocketM...
Definition PZmqBackend.h:45
virtual ~PZmqSocket()
Destructor of PZmqSocket.
PRecvStatus::PRecvStatus recvData(T &data, PRecvFlag::PRecvFlag flag=PRecvFlag::BLOCK)
Recieved data with the socket.
PRecvStatus::PRecvStatus recvMsg(Message &msg, PRecvFlag::PRecvFlag flag=PRecvFlag::BLOCK)
Receive data with the socket.
zmq::message_t Message
Define the type of message used by the PAbstractSocketManager.
Definition PZmqBackend.h:43
Set of parameters to be passed to create a socket with zmq backend.
Definition PZmqBackend.h:17
ssize_t dataRate
Data rate.
Definition PZmqBackend.h:27
int nbBufferMessage
Number of messages in the buffer.
Definition PZmqBackend.h:21
int bufferSizeByte
Size of the message buffer in bytes.
Definition PZmqBackend.h:23
int type
Socket type.
Definition PZmqBackend.h:19
int linger
linger period for socket shutdown
Definition PZmqBackend.h:29
size_t threadAffinity
Mask of threads which deal with reconnection.
Definition PZmqBackend.h:25