Loading...
Searching...
No Matches
request_am.h
1
5#pragma once
6#include <cstddef>
7#include <memory>
8#include <string>
9#include <utility>
10#include <vector>
11
12#include <ucp/api/ucp.h>
13
14#include <ucxx/delayed_submission.h>
15#include <ucxx/request.h>
16#include <ucxx/request_am_builder.h>
17#include <ucxx/typedefs.h>
18
19namespace ucxx {
20
21class Buffer;
22
23namespace internal {
24class RecvAmMessage;
25} // namespace internal
26
33class RequestAm : public Request {
34 private:
35 friend class internal::RecvAmMessage;
36
37 std::vector<std::byte> _header{};
40
66 RequestAm(std::shared_ptr<Component> endpointOrWorker,
67 const std::variant<data::AmSend, data::AmReceive> requestData,
68 std::string operationName,
69 const bool enablePythonFuture = false,
70 RequestCallbackUserFunction callbackFunction = nullptr,
71 RequestCallbackUserData callbackData = nullptr);
72
73 void populateDelayedSubmissionImpl() override;
74
75 public:
76 // Allow internal construction without exposing factory functions.
77 friend class detail::ConstructorFactory;
78
85 void cancel() override;
86
95 void request();
96
124 [[nodiscard]] static ucs_status_t recvCallback(void* arg,
125 const void* header,
126 size_t header_length,
127 void* data,
128 size_t length,
129 const ucp_am_recv_param_t* param);
130
131 [[nodiscard]] std::shared_ptr<Buffer> getRecvBuffer() override;
132
133 [[nodiscard]] std::string getRecvHeader() override;
134};
135
136} // namespace ucxx
A simple object to simplify managing buffers.
Definition buffer.h:31
void request()
Create and submit an active message send request.
void cancel() override
Cancel the request.
std::string getRecvHeader() override
Get the received user header.
std::shared_ptr< Buffer > getRecvBuffer() override
Get the received buffer.
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.
Request(std::shared_ptr< Component > endpointOrWorker, const data::RequestData requestData, std::string operationName, const bool enablePythonFuture=false, RequestCallbackUserFunction callbackFunction=nullptr, RequestCallbackUserData callbackData=nullptr)
Protected constructor of an abstract ucxx::Request.
Handle receiving of a ucxx::RequestAm.
Definition request_am.h:36
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