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 
30 typedef struct TrackedRequests {
33  std::mutex _mutex{};
34  std::mutex
37 
44 typedef std::unique_ptr<TrackedRequests> TrackedRequestsPtr;
45 
53  private:
54  TrackedRequestsPtr _trackedRequests{
55  std::make_unique<TrackedRequests>()};
58  std::recursive_mutex _mutex{};
59 
67  size_t dropCanceled();
68 
69  public:
73  InflightRequests() = default;
74 
75  InflightRequests(const InflightRequests&) = delete;
76  InflightRequests& operator=(InflightRequests const&) = delete;
77  InflightRequests(InflightRequests&& o) = delete;
78  InflightRequests& operator=(InflightRequests&& o) = delete;
79 
86 
92  [[nodiscard]] size_t size();
93 
99  void insert(std::shared_ptr<Request> request);
100 
110  void merge(TrackedRequestsPtr trackedRequests);
111 
124  void remove(const Request* const request);
125 
134  size_t cancelAll();
135 
145  [[nodiscard]] TrackedRequestsPtr release();
146 
157  [[nodiscard]] size_t getCancelingSize();
158 };
159 
160 } // namespace ucxx
Handle tracked requests.
Definition: inflight_requests.h:52
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
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:44
A container for the different types of tracked requests.
Definition: inflight_requests.h:30
std::mutex _mutex
Mutex to control access to inflight requests container.
Definition: inflight_requests.h:33
InflightRequestsMap _inflight
Valid requests awaiting completion.
Definition: inflight_requests.h:31
std::mutex _cancelMutex
Mutex to allow cancelation and prevent removing requests simultaneously.
Definition: inflight_requests.h:35
InflightRequestsMap _canceling
Requests scheduled for cancelation.
Definition: inflight_requests.h:32