request_mem_builder.h
1 
5 #pragma once
6 
7 #include <memory>
8 #include <utility>
9 #include <variant>
10 
11 #include <ucxx/request_builder_base.h>
12 #include <ucxx/request_data.h>
13 
14 namespace ucxx {
15 
16 // Forward declarations
17 class Endpoint;
18 class Request;
19 class RequestMem;
20 
40 class RequestMemBuilder : public RequestCallbackBuilderBase<RequestMemBuilder> {
41  private:
42  std::shared_ptr<Endpoint> _endpoint;
43  std::variant<data::MemPut, data::MemGet> _requestData;
44  uint64_t _remoteAddressOffset{0};
45 
46  public:
54  explicit RequestMemBuilder(std::shared_ptr<Endpoint> endpoint,
55  std::variant<data::MemPut, data::MemGet> requestData);
56 
64 
71  RequestMemBuilder&& remoteAddressOffset(uint64_t offset) &&;
72 
78  [[nodiscard]] std::shared_ptr<RequestMem> build();
79 
85  operator std::shared_ptr<RequestMem>();
86 
92  operator std::shared_ptr<Request>();
93 };
94 
103  std::shared_ptr<Endpoint> endpoint, std::variant<data::MemPut, data::MemGet> requestData)
104 {
105  return RequestMemBuilder(std::move(endpoint), std::move(requestData));
106 }
107 
108 } // 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::RequestMem> objects.
Definition: request_mem_builder.h:40
std::shared_ptr< RequestMem > build()
Build and return the RequestMem.
RequestMemBuilder(std::shared_ptr< Endpoint > endpoint, std::variant< data::MemPut, data::MemGet > requestData)
Constructor for RequestMemBuilder with required parameters.
RequestMemBuilder & remoteAddressOffset(uint64_t offset) &
Set the offset from the remote base address.
RequestMemBuilder && remoteAddressOffset(uint64_t offset) &&
Set the offset from the remote base address on a temporary builder.
Definition: address.h:16
RequestMemBuilder requestMemBuilder(std::shared_ptr< Endpoint > endpoint, std::variant< data::MemPut, data::MemGet > requestData)
Create a RequestMemBuilder for constructing a shared_ptr<ucxx::RequestMem>.
Definition: request_mem_builder.h:102