AliRoot Core  ee782a0 (ee782a0)
AliZMQManager.h
Go to the documentation of this file.
1 
41 #ifndef AliZMQManager_H
42 #define AliZMQManager_H
43 
44 #include "AliESDEvent.h"
45 #include "AliStorageTypes.h"
46 
47 #include <vector>
48 #include <string>
49 #include <sstream>
50 #include <set>
51 
52 #include <TMessage.h>
53 #include <TFile.h>
54 
55 struct zmq_msg_t;
56 
58 {
59 public:
60  static AliZMQManager* GetInstance();
61  void Close();
62  void CreateSocket(storageSockets socket);
63  void RecreateSocket(storageSockets socket);
64 
65  // methods to send data (1 = success, 0 = timeout, -1 = socket closed):
66  int Send(std::vector<serverListStruct> list,storageSockets socket);
67  int Send(std::vector<string100> list,storageSockets socket);
68  int Send(struct serverRequestStruct *request,storageSockets socket);
69  int Send(struct clientRequestStruct *request,storageSockets socket);
70  int Send(AliESDEvent *event,storageSockets socket);
71  int Send(long message,storageSockets socket);
72  int Send(bool message,storageSockets socket);
73  int SendAsXml(AliESDEvent *event,storageSockets socket);
74 
75  // methods to receive data (1 = success, 0 = timeout, -1 = socket closed):
76  int Get(std::vector<serverListStruct>* &result,storageSockets socket);
77  int Get(std::vector<string100>* &result,storageSockets socket);
78  int Get(AliESDEvent* &result, storageSockets socket);
79  int Get(struct serverRequestStruct* &result, storageSockets socket);
80  int Get(struct clientRequestStruct* &result, storageSockets socket);
81  int Get(long *result, storageSockets socket);
82  int Get(bool *result, storageSockets socket);
83 
84 private:
85  AliZMQManager();
88 
89  // ZMQ methods wrappers (1 = success, 0 = timeout, -1 = socket closed):
90  bool zmqInit(zmq_msg_t *msg,size_t size=0);
91  int zmqSend(zmq_msg_t *msg,void *socket,int flags);
92  int zmqRecv(zmq_msg_t *msg,void *socket,int flags);
93 
94  // hostnames and ports read from config file:
95  std::string fStorageServer;
96  std::string fEventServer;
101 
102  // ZMQ sockets and contexts:
103  void *fContext;
104  void *fSockets[NUMBER_OF_SOCKETS];
105 
106  // copy constructor and assignment operator:
109 };
110 
111 #endif
void * fSockets[NUMBER_OF_SOCKETS]
array of all ZMQ sockets
AliZMQManager & operator=(const AliZMQManager &)
int SendAsXml(AliESDEvent *event, storageSockets socket)
int fStorageClientPort
SM client thread&#39;s port.
Definition: AliZMQManager.h:98
static AliZMQManager * GetInstance()
void * fContext
single ZMQ context for all sockets
std::string fEventServer
hostname for Online Reconstruction
Definition: AliZMQManager.h:96
int fEventServerPort
Online Reconstruction port.
Definition: AliZMQManager.h:99
static AliZMQManager * fManagerInstance
single instance of AliZMQManager
Definition: AliZMQManager.h:87
ZMQ communication manager.
Definition: AliZMQManager.h:57
int fStorageServerPort
SM server thread&#39;s port.
Definition: AliZMQManager.h:97
int fXmlServerPort
port for xml publisher
void CreateSocket(storageSockets socket)
std::string fStorageServer
hostname for Storage Manager
Definition: AliZMQManager.h:95
void RecreateSocket(storageSockets socket)
int zmqSend(zmq_msg_t *msg, void *socket, int flags)
int Send(std::vector< serverListStruct > list, storageSockets socket)
bool zmqInit(zmq_msg_t *msg, size_t size=0)
int Get(std::vector< serverListStruct > *&result, storageSockets socket)
int zmqRecv(zmq_msg_t *msg, void *socket, int flags)