inflight_requests.h
1 
5 #pragma once
6 
7 #include <memory>
8 #include <mutex>
9 #include <unordered_set>
10 #include <vector>
11 
12 namespace ucxx {
13 
14 class Request;
15 
24  std::vector<std::shared_ptr<Request>> inflight{};
25  std::vector<std::shared_ptr<Request>> canceling{};
26 };
27 
38  private:
39  std::unordered_set<std::shared_ptr<Request>> _inflight{};
40  std::unordered_set<std::shared_ptr<Request>> _canceling{};
41 
42  std::mutex _mutex{};
43 
44  public:
48  InflightRequests() = default;
49 
50  InflightRequests(const InflightRequests&) = delete;
51  InflightRequests& operator=(InflightRequests const&) = delete;
52  InflightRequests(InflightRequests&& o) = delete;
53  InflightRequests& operator=(InflightRequests&& o) = delete;
54 
61 
67  [[nodiscard]] size_t size();
68 
74  void insert(const std::shared_ptr<Request>& request);
75 
85  void merge(TrackedRequests&& trackedRequests);
86 
96  void remove(const std::shared_ptr<Request>& request);
97 
106  size_t cancelAll();
107 
117  [[nodiscard]] TrackedRequests release();
118 
129  [[nodiscard]] size_t getCancelingSize();
130 };
131 
132 } // namespace ucxx
Handle tracked requests.
Definition: inflight_requests.h:37
TrackedRequests release()
Releases the internally-tracked containers.
size_t cancelAll()
Issue cancelation of all inflight requests and clear the internal container.
InflightRequests()=default
Default constructor.
void insert(const std::shared_ptr< Request > &request)
Insert an inflight request into the container.
size_t size()
Query the number of pending inflight requests.
size_t getCancelingSize()
Get count of requests in process of cancelation.
void merge(TrackedRequests &&trackedRequests)
Merge containers of inflight requests with the internal containers.
void remove(const std::shared_ptr< Request > &request)
Remove an inflight request from the internal container.
~InflightRequests()
Destructor.
Definition: address.h:16
Container for transferring tracked requests between InflightRequests instances.
Definition: inflight_requests.h:23
std::vector< std::shared_ptr< Request > > inflight
Valid requests awaiting completion.
Definition: inflight_requests.h:24
std::vector< std::shared_ptr< Request > > canceling
Requests scheduled for cancelation.
Definition: inflight_requests.h:25