request_stream.h
1 
5 #pragma once
6 #include <memory>
7 #include <string>
8 
9 #include <ucp/api/ucp.h>
10 
11 #include <ucxx/delayed_submission.h>
12 #include <ucxx/request.h>
13 #include <ucxx/request_data.h>
14 #include <ucxx/request_stream_builder.h>
15 #include <ucxx/typedefs.h>
16 
17 namespace ucxx {
18 
25 class RequestStream : public Request {
26  private:
48  RequestStream(std::shared_ptr<Endpoint> endpoint,
49  const std::variant<data::StreamSend, data::StreamReceive> requestData,
50  std::string operationName,
51  const bool enablePythonFuture = false);
52 
53  void populateDelayedSubmissionImpl() override;
54 
55  public:
56  // Allow internal construction without exposing factory functions.
57  friend class detail::ConstructorFactory;
58 
67  void request();
68 
84  void callback(void* request, ucs_status_t status, size_t length);
85 
101  static void streamSendCallback(void* request, ucs_status_t status, void* arg);
102 
119  static void streamRecvCallback(void* request, ucs_status_t status, size_t length, void* arg);
120 };
121 
122 } // namespace ucxx
Send or receive a message with the UCX Stream API.
Definition: request_stream.h:25
void request()
Create and submit a stream request.
static void streamSendCallback(void *request, ucs_status_t status, void *arg)
Callback executed by UCX when a stream send request is completed.
static void streamRecvCallback(void *request, ucs_status_t status, size_t length, void *arg)
Callback executed by UCX when a stream receive request is completed.
void callback(void *request, ucs_status_t status, size_t length)
Implementation of the stream receive request callback.
Base type for a UCXX transfer request.
Definition: request.h:39
Definition: address.h:16