All Classes Namespaces Functions Variables Typedefs Enumerations Friends
request_am.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 RecvAmMessage;
22 } // namespace internal
23 
30 class RequestAm : public Request {
31  private:
32  friend class internal::RecvAmMessage;
33 
34  std::string _header{};
36 
63  RequestAm(std::shared_ptr<Component> endpointOrWorker,
64  const std::variant<data::AmSend, data::AmReceive> requestData,
65  const std::string operationName,
66  const bool enablePythonFuture = false,
67  RequestCallbackUserFunction callbackFunction = nullptr,
68  RequestCallbackUserData callbackData = nullptr);
69 
70  public:
95  friend std::shared_ptr<RequestAm> createRequestAm(
96  std::shared_ptr<Endpoint> endpoint,
97  const std::variant<data::AmSend, data::AmReceive> requestData,
98  const bool enablePythonFuture,
99  RequestCallbackUserFunction callbackFunction,
100  RequestCallbackUserData callbackData);
101 
108  void cancel() override;
109 
110  void populateDelayedSubmission() override;
111 
120  void request();
121 
149  [[nodiscard]] static ucs_status_t recvCallback(void* arg,
150  const void* header,
151  size_t header_length,
152  void* data,
153  size_t length,
154  const ucp_am_recv_param_t* param);
155 
156  [[nodiscard]] std::shared_ptr<Buffer> getRecvBuffer() override;
157 };
158 
159 } // namespace ucxx
Send or receive a message with the UCX Active Message API.
Definition: request_am.h:30
void request()
Create and submit an active message send request.
std::shared_ptr< Buffer > getRecvBuffer() override
Get the received buffer.
void populateDelayedSubmission() override
Populate the internal submission dispatcher.
void cancel() override
Cancel the request.
friend std::shared_ptr< RequestAm > createRequestAm(std::shared_ptr< Endpoint > endpoint, const std::variant< data::AmSend, data::AmReceive > requestData, const bool enablePythonFuture, RequestCallbackUserFunction callbackFunction, RequestCallbackUserData callbackData)
Constructor for std::shared_ptr<ucxx::RequestAm>.
static ucs_status_t recvCallback(void *arg, const void *header, size_t header_length, void *data, size_t length, const ucp_am_recv_param_t *param)
Receive callback registered by ucxx::Worker.
Base type for a UCXX transfer request.
Definition: request.h:38
Handle receiving of a ucxx::RequestAm.
Definition: request_am.h:34
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