FairMQ  1.3.7
C++ Message Passing Framework
FairMQMessage.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 FAIRMQMESSAGE_H_
10 #define FAIRMQMESSAGE_H_
11 
12 #include <cstddef> // for size_t
13 #include <memory> // unique_ptr
14 
15 #include <fairmq/Transports.h>
16 
17 using fairmq_free_fn = void(void* data, void* hint);
19 
21 {
22  public:
23  FairMQMessage() = default;
24  FairMQMessage(FairMQTransportFactory* factory):fTransport{factory} {}
25  virtual void Rebuild() = 0;
26  virtual void Rebuild(const size_t size) = 0;
27  virtual void Rebuild(void* data, const size_t size, fairmq_free_fn* ffn, void* hint = nullptr) = 0;
28 
29  virtual void* GetData() const = 0;
30  virtual size_t GetSize() const = 0;
31 
32  virtual bool SetUsedSize(const size_t size) = 0;
33 
34  virtual fair::mq::Transport GetType() const = 0;
35  FairMQTransportFactory* GetTransport() { return fTransport; }
36  //void SetTransport(FairMQTransportFactory* transport) { fTransport = transport; }
37 
38  virtual void Copy(const FairMQMessage& msg) = 0;
39 
40  virtual ~FairMQMessage() {};
41 
42  private:
43  FairMQTransportFactory* fTransport{nullptr};
44 };
45 
46 using FairMQMessagePtr = std::unique_ptr<FairMQMessage>;
47 
48 namespace fair
49 {
50 namespace mq
51 {
52 
53 using Message = FairMQMessage;
54 using MessagePtr = FairMQMessagePtr;
55 struct MessageError : std::runtime_error { using std::runtime_error::runtime_error; };
56 
57 } /* namespace mq */
58 } /* namespace fair */
59 
60 #endif /* FAIRMQMESSAGE_H_ */
Definition: FairMQTransportFactory.h:28
Tools for interfacing containers to the transport via polymorphic allocators.
Definition: DeviceRunner.h:23
Definition: FairMQMessage.h:20
Definition: FairMQMessage.h:55

privacy