FairMQ  1.2.0
C++ Message Passing Framework
FairMQPollerZMQ.h
1 /********************************************************************************
2  * Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH *
3  * *
4  * This software is distributed under the terms of the *
5  * GNU Lesser General Public Licence (LGPL) version 3, *
6  * copied verbatim in the file "LICENSE" *
7  ********************************************************************************/
15 #ifndef FAIRMQPOLLERZMQ_H_
16 #define FAIRMQPOLLERZMQ_H_
17 
18 #include <vector>
19 #include <unordered_map>
20 #include <initializer_list>
21 
22 #include <zmq.h>
23 
24 #include "FairMQPoller.h"
25 #include "FairMQChannel.h"
26 #include "FairMQTransportFactoryZMQ.h"
27 
28 class FairMQChannel;
29 
31 {
32  friend class FairMQChannel;
33  friend class FairMQTransportFactoryZMQ;
34 
35  public:
36  FairMQPollerZMQ(const std::vector<FairMQChannel>& channels);
37  FairMQPollerZMQ(const std::vector<const FairMQChannel*>& channels);
38  FairMQPollerZMQ(const std::unordered_map<std::string, std::vector<FairMQChannel>>& channelsMap, const std::vector<std::string>& channelList);
39 
40  FairMQPollerZMQ(const FairMQPollerZMQ&) = delete;
41  FairMQPollerZMQ operator=(const FairMQPollerZMQ&) = delete;
42 
43  void SetItemEvents(zmq_pollitem_t& item, const int type);
44 
45  virtual void Poll(const int timeout);
46  virtual bool CheckInput(const int index);
47  virtual bool CheckOutput(const int index);
48  virtual bool CheckInput(const std::string channelKey, const int index);
49  virtual bool CheckOutput(const std::string channelKey, const int index);
50 
51  virtual ~FairMQPollerZMQ();
52 
53  private:
54  FairMQPollerZMQ(const FairMQSocket& cmdSocket, const FairMQSocket& dataSocket);
55 
56  zmq_pollitem_t* fItems;
57  int fNumItems;
58 
59  std::unordered_map<std::string, int> fOffsetMap;
60 };
61 
62 #endif /* FAIRMQPOLLERZMQ_H_ */
Definition: FairMQTransportFactoryZMQ.h:28
Definition: FairMQPollerZMQ.h:30
Definition: FairMQChannel.h:24
Definition: FairMQPoller.h:15
Definition: FairMQSocket.h:18