PhoenixZMQ  8.1.3
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
33
34PZmqParam pzmq_createParamClient(int type, int nbBufferMessage = 10000, int bufferSizeByte = 1000000, size_t threadAffinity = 0lu, ssize_t dataRate = 200000l, int linger = -1, int immediate = 0);
35PZmqParam pzmq_createParamServer(int type, int nbBufferMessage = 10000, int bufferSizeByte = 1000000, size_t threadAffinity = 0lu, ssize_t dataRate = 200000l, int linger = -1, int immediate = 0);
36template <typename T>
37std::string statusToStr(T status);
38PSendStatus::PSendStatus checkSendStatus(zmq::send_result_t res);
39PRecvStatus::PRecvStatus checkRecvStatus(zmq::recv_result_t res);
40
43 public:
45 typedef zmq::message_t Message;
48
49 PZmqSocket();
50 virtual ~PZmqSocket();
51
52 bool createClientSocket(zmq::context_t & context, const PSocketParam & socketParam, const Param & extraParam);
53 bool createServerSocket(zmq::context_t & context, const PSocketParam & socketParam, const Param & extraParam);
54
55 template<typename T>
56 PSendStatus::PSendStatus sendData(const T & data, PSendFlag::PSendFlag flag = PSendFlag::BLOCK);
57 PSendStatus::PSendStatus sendMsg(Message & msg, PSendFlag::PSendFlag flag = PSendFlag::BLOCK);
58
59 template<typename T>
60 PRecvStatus::PRecvStatus recvData(T & data, PRecvFlag::PRecvFlag flag = PRecvFlag::BLOCK);
61 PRecvStatus::PRecvStatus recvMsg(Message & msg, PRecvFlag::PRecvFlag flag = PRecvFlag::BLOCK);
62
63 bool isConnected() const;
64 void close();
65 private:
67 zmq::socket_t* p_socket;
68};
69
72 public:
76 typedef zmq::message_t Message;
79
81
82 static Param client();
83 static Param server();
84
85 bool createClientSocket(Socket & socket, const PSocketParam & socketParam, const PZmqParam & param);
86 bool createServerSocket(Socket & socket, const PSocketParam & socketParam, const PZmqParam & param);
87
88 static void msgToMock(DataStreamMsg & mockMsg, const Message & msg);
89 static void mockToMsg(Message & msg, DataStreamMsg & mockMsg);
90
91 private:
93 zmq::context_t p_context;
94};
95
96#include "PZmqBackend_impl.h"
97
98#endif
99
std::string statusToStr(T status)
Convert PSendStatus into string.
PZmqParam pzmq_createParamServer(int type, int nbBufferMessage=10000, int bufferSizeByte=1000000, size_t threadAffinity=0lu, ssize_t dataRate=200000l, int linger=-1, int immediate=0)
Create param for a client socket.
PRecvStatus::PRecvStatus checkRecvStatus(zmq::recv_result_t res)
Check the recv result and convert it into PRecvStatus.
PZmqParam pzmq_createParamClient(int type, int nbBufferMessage=10000, int bufferSizeByte=1000000, size_t threadAffinity=0lu, ssize_t dataRate=200000l, int linger=-1, int immediate=0)
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:93
PZmqParam Param
Define the type of extra parameters which can be used to create a Socket used by the PAbstractSocketM...
Definition PZmqBackend.h:78
PZmqSocket Socket
Define the socket of the backend used by the PAbstractSocketManager.
Definition PZmqBackend.h:74
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:76
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:42
zmq::socket_t * p_socket
ZMQ Socket.
Definition PZmqBackend.h:67
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:47
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:45
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
int immediate
Immediate flag for socket connexion (EAGAIN if no peer connected)
Definition PZmqBackend.h:31
size_t threadAffinity
Mask of threads which deal with reconnection.
Definition PZmqBackend.h:25