request_mem.h
1 
5 #pragma once
6 #include <memory>
7 #include <string>
8 #include <utility>
9 
10 #include <ucp/api/ucp.h>
11 
12 #include <ucxx/delayed_submission.h>
13 #include <ucxx/request.h>
14 #include <ucxx/request_mem_builder.h>
15 #include <ucxx/typedefs.h>
16 
17 namespace ucxx {
18 
19 class Buffer;
20 
21 namespace internal {
22 class RecvMemMessage;
23 } // namespace internal
24 
31 class RequestMem : public Request {
32  private:
33  friend class internal::RecvMemMessage;
34 
35  uint64_t _remote_addr{};
36  ucp_rkey_h _rkey{};
37 
64  RequestMem(std::shared_ptr<Endpoint> endpoint,
65  const std::variant<data::MemPut, data::MemGet> requestData,
66  std::string operationName,
67  const bool enablePythonFuture = false,
68  RequestCallbackUserFunction callbackFunction = nullptr,
69  RequestCallbackUserData callbackData = nullptr);
70 
71  void populateDelayedSubmissionImpl() override;
72 
73  public:
74  // Allow internal construction without exposing factory functions.
75  friend class detail::ConstructorFactory;
76 
92  static void memPutCallback(void* request, ucs_status_t status, void* arg);
93 
109  static void memGetCallback(void* request, ucs_status_t status, void* arg);
110 
119  void request();
120 };
121 
122 } // namespace ucxx
Send or receive a message with the UCX RMA API.
Definition: request_mem.h:31
void request()
Create and submit a memory get or put request.
static void memPutCallback(void *request, ucs_status_t status, void *arg)
Callback executed by UCX when a memory put request is completed.
static void memGetCallback(void *request, ucs_status_t status, void *arg)
Callback executed by UCX when a memory get request is completed.
Base type for a UCXX transfer request.
Definition: request.h:39
Definition: address.h:16
std::function< void(ucs_status_t, std::shared_ptr< void >)> RequestCallbackUserFunction
A user-defined function to execute as part of a ucxx::Request callback.
Definition: typedefs.h:97
std::shared_ptr< void > RequestCallbackUserData
Data for the user-defined function provided to the ucxx::Request callback.
Definition: typedefs.h:105