Loading...
Searching...
No Matches
request_tag_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 Component;
18class Request;
19class RequestTag;
20
40class RequestTagBuilder : public RequestCallbackBuilderBase<RequestTagBuilder> {
41 private:
42 std::shared_ptr<Component> _endpointOrWorker;
43 std::variant<data::TagSend, data::TagReceive, data::TagReceiveWithHandle>
44 _requestData;
45
46 public:
56 std::shared_ptr<Component> endpointOrWorker,
57 std::variant<data::TagSend, data::TagReceive, data::TagReceiveWithHandle> requestData);
58
64 [[nodiscard]] std::shared_ptr<RequestTag> build();
65
71 operator std::shared_ptr<RequestTag>();
72
78 operator std::shared_ptr<Request>();
79};
80
89 std::shared_ptr<Component> endpointOrWorker,
90 std::variant<data::TagSend, data::TagReceive, data::TagReceiveWithHandle> requestData)
91{
92 return RequestTagBuilder(std::move(endpointOrWorker), std::move(requestData));
93}
94
95} // namespace ucxx
A UCXX component class to prevent early destruction of parent object.
Definition component.h:21
CRTP base for request builders that support completion callbacks.
Definition request_builder_base.h:115
Builder class for constructing std::shared_ptr<ucxx::RequestTag> objects.
Definition request_tag_builder.h:40
std::shared_ptr< RequestTag > build()
Build and return the RequestTag.
RequestTagBuilder(std::shared_ptr< Component > endpointOrWorker, std::variant< data::TagSend, data::TagReceive, data::TagReceiveWithHandle > requestData)
Constructor for RequestTagBuilder with required parameters.
Send or receive a message with the UCX Tag API.
Definition request_tag.h:25
Base type for a UCXX transfer request.
Definition request.h:39
Definition address.h:16
RequestTagBuilder requestTagBuilder(std::shared_ptr< Component > endpointOrWorker, std::variant< data::TagSend, data::TagReceive, data::TagReceiveWithHandle > requestData)
Create a RequestTagBuilder for constructing a shared_ptr<ucxx::RequestTag>.
Definition request_tag_builder.h:88