13#include <ucp/api/ucp.h>
15#include <ucxx/component.h>
16#include <ucxx/endpoint.h>
17#include <ucxx/future.h>
18#include <ucxx/request_data.h>
19#include <ucxx/typedefs.h>
21#define ucxx_trace_req_f(_owner, _req, _handle, _name, _message, ...) \
22 ucxx_trace_req("ucxx::Request: %p on %s, UCP handle: %p, op: %s, " _message, \
58 "undetermined owner"};
91 Request(std::shared_ptr<Component> endpointOrWorker,
92 const data::RequestData requestData,
93 std::string operationName,
94 const bool enablePythonFuture =
false,
A UCXX component class to prevent early destruction of parent object.
Definition component.h:21
virtual std::string getRecvHeader()
Get the received user header.
void checkError()
Check whether the request completed with an error.
std::string _status_msg
Human-readable status message.
Definition request.h:50
RequestCallbackUserFunction _callback
Completion callback.
Definition request.h:64
std::recursive_mutex _mutex
Mutex to prevent checking status while it's being set.
Definition request.h:59
data::RequestData _requestData
The operation-specific data to be used in the request.
Definition request.h:60
bool isCompleted()
Check whether the request has already completed.
RequestCallbackUserData _callbackData
Completion callback data.
Definition request.h:65
const std::string & getOwnerString() const
Get formatted string with owner type and handle address.
void publishRequest(void *request)
Publish the UCP request handle and capture its attributes.
std::shared_ptr< Endpoint > _endpoint
Endpoint that generated request (if not from worker).
Definition request.h:55
virtual void populateDelayedSubmissionImpl()=0
Submit the request-specific UCX operation.
void callback(void *request, ucs_status_t status)
Callback executed by UCX when request is completed.
std::shared_ptr< Worker > _worker
Worker that generated request (if not from endpoint).
Definition request.h:53
bool _enablePythonFuture
Whether Python future is enabled for this request.
Definition request.h:63
virtual ~Request()
ucxx::Request destructor.
ucs_status_t getStatus()
Return the status of the request.
virtual std::shared_ptr< Buffer > getRecvBuffer()
Get the received buffer.
std::shared_ptr< Future > _future
Future to notify upon completion.
Definition request.h:52
Attributes _requestAttr
Definition request.h:66
void populateDelayedSubmission()
Populate the internal submission dispatcher.
Attributes queryAttributes()
Get the requests's attributes.
std::string _ownerString
String to print owner (endpoint or worker) when logging.
Definition request.h:57
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.
std::string _operationName
Human-readable operation name, mostly used for log messages.
Definition request.h:61
ucs_status_t _status
Requests status.
Definition request.h:49
void * getFuture()
Return the future used to check on state.
void setStatus(ucs_status_t status)
Set the request status and notify Python future.
void process()
Perform initial processing of the request to determine if immediate completion.
virtual void cancel()
Cancel the request.
void * _request
Pointer to UCP request.
Definition request.h:51
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
Request attributes reported by ucp_request_query.
Definition request.h:44
ucs_memory_type memoryType
Memory type of the request.
Definition request.h:45
std::string debugString
Stored debug string.
Definition request.h:46