FairMQ  1.2.0
C++ Message Passing Framework
FairMQSocket.h
1 /********************************************************************************
2  * Copyright (C) 2014-2018 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  ********************************************************************************/
8 
9 #ifndef FAIRMQSOCKET_H_
10 #define FAIRMQSOCKET_H_
11 
12 #include <string>
13 #include <vector>
14 #include <memory>
15 
16 #include "FairMQMessage.h"
17 
19 {
20  public:
21  FairMQSocket() {}
22 
23  virtual std::string GetId() = 0;
24 
25  virtual bool Bind(const std::string& address) = 0;
26  virtual void Connect(const std::string& address) = 0;
27 
28  virtual int Send(FairMQMessagePtr& msg, int timeout = 0) = 0;
29  virtual int Receive(FairMQMessagePtr& msg, int timeout = 0) = 0;
30  virtual int64_t Send(std::vector<std::unique_ptr<FairMQMessage>>& msgVec, int timeout = 0) = 0;
31  virtual int64_t Receive(std::vector<std::unique_ptr<FairMQMessage>>& msgVec, int timeout = 0) = 0;
32 
33  virtual int TrySend(FairMQMessagePtr& msg) = 0;
34  virtual int TryReceive(FairMQMessagePtr& msg) = 0;
35  virtual int64_t TrySend(std::vector<std::unique_ptr<FairMQMessage>>& msgVec) = 0;
36  virtual int64_t TryReceive(std::vector<std::unique_ptr<FairMQMessage>>& msgVec) = 0;
37 
38  virtual void* GetSocket() const = 0;
39  virtual int GetSocket(int nothing) const = 0;
40 
41  virtual void Close() = 0;
42 
43  virtual void SetOption(const std::string& option, const void* value, size_t valueSize) = 0;
44  virtual void GetOption(const std::string& option, void* value, size_t* valueSize) = 0;
45 
46  virtual unsigned long GetBytesTx() const = 0;
47  virtual unsigned long GetBytesRx() const = 0;
48  virtual unsigned long GetMessagesTx() const = 0;
49  virtual unsigned long GetMessagesRx() const = 0;
50 
51  virtual bool SetSendTimeout(const int timeout, const std::string& address, const std::string& method) = 0;
52  virtual int GetSendTimeout() const = 0;
53  virtual bool SetReceiveTimeout(const int timeout, const std::string& address, const std::string& method) = 0;
54  virtual int GetReceiveTimeout() const = 0;
55 
56  virtual ~FairMQSocket() {};
57 };
58 
59 using FairMQSocketPtr = std::unique_ptr<FairMQSocket>;
60 
61 namespace fair
62 {
63 namespace mq
64 {
65 
66 using Socket = FairMQSocket;
67 using SocketPtr = FairMQSocketPtr;
68 struct SocketError : std::runtime_error { using std::runtime_error::runtime_error; };
69 
70 } /* namespace mq */
71 } /* namespace fair */
72 
73 #endif /* FAIRMQSOCKET_H_ */
Definition: FairMQSocket.h:68
Definition: FairMQSocket.h:18
Definition: DeviceRunner.h:23