FairMQ  1.4.14
C++ Message Queuing Library and Framework
FairMQUnmanagedRegion.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  ********************************************************************************/
8 
9 #ifndef FAIRMQUNMANAGEDREGION_H_
10 #define FAIRMQUNMANAGEDREGION_H_
11 
12 #include <cstddef> // size_t
13 #include <memory> // std::unique_ptr
14 #include <functional> // std::function
15 #include <ostream> // std::ostream
16 
17 enum class FairMQRegionEvent : int
18 {
19  created,
20  destroyed
21 };
22 
24  uint64_t id; // id of the region
25  void* ptr; // pointer to the start of the region
26  size_t size; // region size
27  int64_t flags; // custom flags set by the creator
28  FairMQRegionEvent event;
29 };
30 
31 using FairMQRegionCallback = std::function<void(void*, size_t, void*)>;
32 using FairMQRegionEventCallback = std::function<void(FairMQRegionInfo)>;
33 
35 {
36  public:
37  virtual void* GetData() const = 0;
38  virtual size_t GetSize() const = 0;
39 
40  virtual ~FairMQUnmanagedRegion() {};
41 };
42 
43 using FairMQUnmanagedRegionPtr = std::unique_ptr<FairMQUnmanagedRegion>;
44 
45 inline std::ostream& operator<<(std::ostream& os, const FairMQRegionEvent& event)
46 {
47  if (event == FairMQRegionEvent::created) {
48  return os << "created";
49  } else {
50  return os << "destroyed";
51  }
52 }
53 
54 namespace fair
55 {
56 namespace mq
57 {
58 
59 using RegionCallback = FairMQRegionCallback;
60 using RegionEventCallback = FairMQRegionEventCallback;
61 using RegionEvent = FairMQRegionEvent;
62 using RegionInfo = FairMQRegionInfo;
63 using UnmanagedRegion = FairMQUnmanagedRegion;
64 using UnmanagedRegionPtr = FairMQUnmanagedRegionPtr;
65 
66 } /* namespace mq */
67 } /* namespace fair */
68 
69 #endif /* FAIRMQUNMANAGEDREGION_H_ */
Definition: FairMQUnmanagedRegion.h:34
Definition: FairMQUnmanagedRegion.h:23
Tools for interfacing containers to the transport via polymorphic allocators.
Definition: DeviceRunner.h:23

privacy