Loading...
Searching...
No Matches
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
15namespace ucxx {
16
17// Forward declarations
18class Endpoint;
19class Request;
20class RequestAm;
21
41class 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
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
Component encapsulating a UCP endpoint.
Definition endpoint.h:69
Builder class for constructing std::shared_ptr<ucxx::RequestAm> objects.
Definition request_am_builder.h:41
RequestAmBuilder && receiverCallbackInfo(std::optional< AmReceiverCallbackInfo > info) &&
Configure receiver callback metadata for active message sends on a temporary builder.
std::shared_ptr< RequestAm > build()
Build and return the RequestAm.
RequestAmBuilder & receiverCallbackInfo(std::optional< AmReceiverCallbackInfo > info) &
Configure receiver callback metadata for active message sends.
RequestAmBuilder(std::shared_ptr< Endpoint > endpoint, std::variant< data::AmSend, data::AmReceive > requestData)
Constructor for RequestAmBuilder with required parameters.
Send or receive a message with the UCX Active Message API.
Definition request_am.h:33
CRTP base for request builders that support completion callbacks.
Definition request_builder_base.h:115
Base type for a UCXX transfer request.
Definition request.h:39
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