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 
60  RequestAm(std::shared_ptr<Component> endpointOrWorker,
61  const std::variant<data::AmSend, data::AmReceive> requestData,
62  const std::string operationName,
63  const bool enablePythonFuture = false,
64  RequestCallbackUserFunction callbackFunction = nullptr,
65  RequestCallbackUserData callbackData = nullptr);
66 
67  public:
92  [[nodiscard]] friend std::shared_ptr<RequestAm> createRequestAm(
93  std::shared_ptr<Endpoint> endpoint,
94  const std::variant<data::AmSend, data::AmReceive> requestData,
95  const bool enablePythonFuture,
96  RequestCallbackUserFunction callbackFunction,
97  RequestCallbackUserData callbackData);
98 
105  void cancel() override;
106 
107  void populateDelayedSubmission() override;
108 
117  void request();
118 
146  [[nodiscard]] static ucs_status_t recvCallback(void* arg,
147  const void* header,
148  size_t header_length,
149  void* data,
150  size_t length,
151  const ucp_am_recv_param_t* param);
152 
153  [[nodiscard]] std::shared_ptr<Buffer> getRecvBuffer() override;
154 };
155 
156 } // 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:89
std::shared_ptr< void > RequestCallbackUserData
Data for the user-defined function provided to the ucxx::Request callback.
Definition: typedefs.h:97