Loading...
Searching...
No Matches
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
14namespace ucxx {
15
16// Forward declarations
17class Endpoint;
18class Request;
19class RequestMem;
20
40class 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
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
Component encapsulating a UCP endpoint.
Definition endpoint.h:69
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
RequestMemBuilder & remoteAddressOffset(uint64_t offset) &
Set the offset from the remote base address.
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 on a temporary builder.
std::shared_ptr< RequestMem > build()
Build and return the RequestMem.
Send or receive a message with the UCX RMA API.
Definition request_mem.h:31
Base type for a UCXX transfer request.
Definition request.h:39
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