libucxx  0.37.00
All Classes Namespaces Functions Variables Typedefs Enumerations Friends
inflight_requests.h
1 
5 #pragma once
6 
7 #include <map>
8 #include <memory>
9 #include <mutex>
10 #include <utility>
11 
12 namespace ucxx {
13 
14 class Request;
15 
22 typedef std::map<const Request* const, std::shared_ptr<Request>> InflightRequestsMap;
23 
29 typedef std::unique_ptr<InflightRequestsMap> InflightRequestsMapPtr;
30 
37 typedef struct TrackedRequests {
40 
42  : _inflight(std::make_unique<InflightRequestsMap>()),
43  _canceling(std::make_unique<InflightRequestsMap>())
44  {
45  }
47 
54 typedef std::unique_ptr<TrackedRequests> TrackedRequestsPtr;
55 
63  private:
64  TrackedRequestsPtr _trackedRequests{
65  std::make_unique<TrackedRequests>()};
68  std::mutex _mutex{};
69  std::mutex
70  _cancelMutex{};
71 
79  size_t dropCanceled();
80 
81  public:
85  InflightRequests() = default;
86 
87  InflightRequests(const InflightRequests&) = delete;
88  InflightRequests& operator=(InflightRequests const&) = delete;
89  InflightRequests(InflightRequests&& o) = delete;
90  InflightRequests& operator=(InflightRequests&& o) = delete;
91 
98 
104  size_t size();
105 
111  void insert(std::shared_ptr<Request> request);
112 
122  void merge(TrackedRequestsPtr trackedRequests);
123 
136  void remove(const Request* const request);
137 
146  size_t cancelAll();
147 
158 
170 };
171 
172 } // namespace ucxx
Handle tracked requests.
Definition: inflight_requests.h:62
TrackedRequestsPtr release()
Releases the internally-tracked containers.
void insert(std::shared_ptr< Request > request)
Insert an inflight requests to the container.
size_t cancelAll()
Issue cancelation of all inflight requests and clear the internal container.
InflightRequests()=default
Default constructor.
void merge(TrackedRequestsPtr trackedRequests)
Merge containers of inflight requests with the internal containers.
void remove(const Request *const request)
Remove an inflight request from the internal container.
size_t size()
Query the number of pending inflight requests.
size_t getCancelingSize()
Get count of requests in process of cancelation.
~InflightRequests()
Destructor.
Base type for a UCXX transfer request.
Definition: request.h:38
Definition: address.h:15
std::map< const Request *const, std::shared_ptr< Request > > InflightRequestsMap
An inflight request map.
Definition: inflight_requests.h:14
std::unique_ptr< InflightRequestsMap > InflightRequestsMapPtr
Pre-defined type for a pointer to an inflight request map.
Definition: inflight_requests.h:29
struct ucxx::TrackedRequests TrackedRequests
A container for the different types of tracked requests.
std::unique_ptr< TrackedRequests > TrackedRequestsPtr
Pre-defined type for a pointer to a container of tracked requests.
Definition: inflight_requests.h:54
A container for the different types of tracked requests.
Definition: inflight_requests.h:37
InflightRequestsMapPtr _inflight
Valid requests awaiting completion.
Definition: inflight_requests.h:38
InflightRequestsMapPtr _canceling
Requests scheduled for cancelation.
Definition: inflight_requests.h:39