All Classes Namespaces Functions Variables Typedefs Enumerations Friends
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/typedefs.h>
15 
16 namespace ucxx {
17 
18 class Buffer;
19 
20 namespace internal {
21 class RecvMemMessage;
22 } // namespace internal
23 
24 class RequestMem : public Request {
25  private:
26  friend class internal::RecvMemMessage;
27 
28  uint64_t _remote_addr{};
29  ucp_rkey_h _rkey{};
30 
57  RequestMem(std::shared_ptr<Endpoint> endpoint,
58  const std::variant<data::MemPut, data::MemGet> requestData,
59  const std::string operationName,
60  const bool enablePythonFuture = false,
61  RequestCallbackUserFunction callbackFunction = nullptr,
62  RequestCallbackUserData callbackData = nullptr);
63 
64  public:
91  friend std::shared_ptr<RequestMem> createRequestMem(
92  std::shared_ptr<Endpoint> endpoint,
93  const std::variant<data::MemPut, data::MemGet> requestData,
94  const bool enablePythonFuture,
95  RequestCallbackUserFunction callbackFunction,
96  RequestCallbackUserData callbackData);
97 
98  virtual void populateDelayedSubmission();
99 
115  static void memPutCallback(void* request, ucs_status_t status, void* arg);
116 
132  static void memGetCallback(void* request, ucs_status_t status, void* arg);
133 
142  void request();
143 };
144 
145 } // namespace ucxx
Definition: request_mem.h:24
friend std::shared_ptr< RequestMem > createRequestMem(std::shared_ptr< Endpoint > endpoint, const std::variant< data::MemPut, data::MemGet > requestData, const bool enablePythonFuture, RequestCallbackUserFunction callbackFunction, RequestCallbackUserData callbackData)
Constructor for std::shared_ptr<ucxx::RequestMem>.
void request()
Create and submit a memory get or put request.
virtual void populateDelayedSubmission()
Populate the internal submission dispatcher.
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:38
Definition: address.h:15
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:103
std::shared_ptr< void > RequestCallbackUserData
Data for the user-defined function provided to the ucxx::Request callback.
Definition: typedefs.h:111