Loading...
Searching...
No Matches
request_stream_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 RequestStream;
20
38class RequestStreamBuilder : public RequestBuilderBase<RequestStreamBuilder> {
39 private:
40 std::shared_ptr<Endpoint> _endpoint;
41 std::variant<data::StreamSend, data::StreamReceive>
42 _requestData;
43
44 public:
52 explicit RequestStreamBuilder(std::shared_ptr<Endpoint> endpoint,
53 std::variant<data::StreamSend, data::StreamReceive> requestData);
54
60 [[nodiscard]] std::shared_ptr<RequestStream> build();
61
67 operator std::shared_ptr<RequestStream>();
68
74 operator std::shared_ptr<Request>();
75};
76
85 std::shared_ptr<Endpoint> endpoint,
86 std::variant<data::StreamSend, data::StreamReceive> requestData)
87{
88 return RequestStreamBuilder(std::move(endpoint), std::move(requestData));
89}
90
91} // namespace ucxx
Component encapsulating a UCP endpoint.
Definition endpoint.h:69
Builder class for constructing std::shared_ptr<ucxx::RequestStream> objects.
Definition request_stream_builder.h:38
std::shared_ptr< RequestStream > build()
Build and return the RequestStream.
RequestStreamBuilder(std::shared_ptr< Endpoint > endpoint, std::variant< data::StreamSend, data::StreamReceive > requestData)
Constructor for RequestStreamBuilder with required parameters.
Send or receive a message with the UCX Stream API.
Definition request_stream.h:25
Base type for a UCXX transfer request.
Definition request.h:39
Definition address.h:16
RequestStreamBuilder requestStreamBuilder(std::shared_ptr< Endpoint > endpoint, std::variant< data::StreamSend, data::StreamReceive > requestData)
Create a RequestStreamBuilder for constructing a shared_ptr<ucxx::RequestStream>.
Definition request_stream_builder.h:84