request_flush_builder.h
1 
5 #pragma once
6 
7 #include <memory>
8 #include <utility>
9 
10 #include <ucxx/request_builder_base.h>
11 #include <ucxx/request_data.h>
12 
13 namespace ucxx {
14 
15 // Forward declarations
16 class Component;
17 class Request;
18 class RequestFlush;
19 
39 class RequestFlushBuilder : public RequestCallbackBuilderBase<RequestFlushBuilder> {
40  private:
41  std::shared_ptr<Component> _endpointOrWorker;
42  data::Flush _requestData;
43 
44  public:
52  explicit RequestFlushBuilder(std::shared_ptr<Component> endpointOrWorker,
53  data::Flush requestData);
54 
60  [[nodiscard]] std::shared_ptr<RequestFlush> build();
61 
67  operator std::shared_ptr<RequestFlush>();
68 
74  operator std::shared_ptr<Request>();
75 };
76 
85  std::shared_ptr<Component> endpointOrWorker, data::Flush requestData)
86 {
87  return RequestFlushBuilder(std::move(endpointOrWorker), std::move(requestData));
88 }
89 
90 } // namespace ucxx
CRTP base for request builders that support completion callbacks.
Definition: request_builder_base.h:115
Builder class for constructing std::shared_ptr<ucxx::RequestFlush> objects.
Definition: request_flush_builder.h:39
RequestFlushBuilder(std::shared_ptr< Component > endpointOrWorker, data::Flush requestData)
Constructor for RequestFlushBuilder with required parameters.
std::shared_ptr< RequestFlush > build()
Build and return the RequestFlush.
Data for a flush operation.
Definition: request_data.h:119
Definition: address.h:16
RequestFlushBuilder requestFlushBuilder(std::shared_ptr< Component > endpointOrWorker, data::Flush requestData)
Create a RequestFlushBuilder for constructing a shared_ptr<ucxx::RequestFlush>.
Definition: request_flush_builder.h:84