request_am_builder.h
1 
5 #pragma once
6 
7 #include <memory>
8 #include <optional>
9 #include <utility>
10 #include <variant>
11 
12 #include <ucxx/request_builder_base.h>
13 #include <ucxx/request_data.h>
14 
15 namespace ucxx {
16 
17 // Forward declarations
18 class Endpoint;
19 class Request;
20 class RequestAm;
21 
41 class RequestAmBuilder : public RequestCallbackBuilderBase<RequestAmBuilder> {
42  private:
43  std::shared_ptr<Endpoint> _endpoint;
44  std::variant<data::AmSend, data::AmReceive> _requestData;
45 
46  public:
54  explicit RequestAmBuilder(std::shared_ptr<Endpoint> endpoint,
55  std::variant<data::AmSend, data::AmReceive> requestData);
56 
65  RequestAmBuilder& receiverCallbackInfo(std::optional<AmReceiverCallbackInfo> info) &;
66 
75  RequestAmBuilder&& receiverCallbackInfo(std::optional<AmReceiverCallbackInfo> info) &&;
76 
82  [[nodiscard]] std::shared_ptr<RequestAm> build();
83 
89  operator std::shared_ptr<RequestAm>();
90 
96  operator std::shared_ptr<Request>();
97 };
98 
106 [[nodiscard]] inline RequestAmBuilder requestAmBuilder(
107  std::shared_ptr<Endpoint> endpoint, std::variant<data::AmSend, data::AmReceive> requestData)
108 {
109  return RequestAmBuilder(std::move(endpoint), std::move(requestData));
110 }
111 
112 } // namespace ucxx
Builder class for constructing std::shared_ptr<ucxx::RequestAm> objects.
Definition: request_am_builder.h:41
std::shared_ptr< RequestAm > build()
Build and return the RequestAm.
RequestAmBuilder(std::shared_ptr< Endpoint > endpoint, std::variant< data::AmSend, data::AmReceive > requestData)
Constructor for RequestAmBuilder with required parameters.
RequestAmBuilder && receiverCallbackInfo(std::optional< AmReceiverCallbackInfo > info) &&
Configure receiver callback metadata for active message sends on a temporary builder.
RequestAmBuilder & receiverCallbackInfo(std::optional< AmReceiverCallbackInfo > info) &
Configure receiver callback metadata for active message sends.
CRTP base for request builders that support completion callbacks.
Definition: request_builder_base.h:115
Definition: address.h:16
RequestAmBuilder requestAmBuilder(std::shared_ptr< Endpoint > endpoint, std::variant< data::AmSend, data::AmReceive > requestData)
Create a RequestAmBuilder for constructing a shared_ptr<ucxx::RequestAm>.
Definition: request_am_builder.h:106