17 #include <ucp/api/ucp.h>
18 #include <ucs/memory/memory_type.h>
21 #include <ucxx/request_data.h>
108 if (!
_enabled)
throw std::runtime_error(
"Resource is disabled.");
111 std::lock_guard<std::mutex> lock(
_mutex);
127 std::lock_guard<std::mutex> lock(
_mutex);
133 if (itemsToProcess.size() > 0) {
134 ucxx_trace_req(
"Submitting %lu %s callbacks", itemsToProcess.size(),
_name.c_str());
135 for (
auto& item : itemsToProcess)
149 std::pair<std::shared_ptr<Request>, DelayedSubmissionCallbackType>> {
211 bool _enableDelayedRequestSubmission{
false};
Base type for a collection of delayed submissions.
Definition: delayed_submission.h:40
std::vector< T > _collection
The collection.
Definition: delayed_submission.h:44
std::string _name
The human-readable name of the collection, used for logging.
Definition: delayed_submission.h:42
virtual void processItem(T item)=0
Process a single item during process().
std::mutex _mutex
Mutex to provide access to _collection.
Definition: delayed_submission.h:45
BaseDelayedSubmissionCollection(const std::string name, const bool enabled)
Constructor for a thread-safe delayed submission collection.
Definition: delayed_submission.h:81
void process()
Process all pending callbacks.
Definition: delayed_submission.h:123
virtual void schedule(T item)
Register a callable or complex-type for delayed submission.
Definition: delayed_submission.h:106
bool _enabled
Whether the resource required to process the collection is enabled.
Definition: delayed_submission.h:43
virtual void scheduleLog(T item)=0
Log message during schedule().
A collection of delayed submissions of multiple types.
Definition: delayed_submission.h:203
void processPost()
Process all pending generic-post callback operations.
void registerRequest(std::shared_ptr< Request > request, DelayedSubmissionCallbackType callback)
Register a request for delayed submission.
void registerGenericPost(DelayedSubmissionCallbackType callback)
Register a generic callback to execute during processPost().
void processPre()
Process pending delayed request submission and generic-pre callback operations.
void registerGenericPre(DelayedSubmissionCallbackType callback)
Register a generic callback to execute during processPre().
bool isDelayedRequestSubmissionEnabled() const
Inquire if delayed request submission is enabled.
DelayedSubmissionCollection(bool enableDelayedRequestSubmission=false)
Default delayed submission collection constructor.
A collection of delayed submissions of generic callbacks.
Definition: delayed_submission.h:178
void processItem(DelayedSubmissionCallbackType callback) override
Process a single item during process().
GenericDelayedSubmissionCollection(const std::string name)
Constructor of a collection of delayed submissions of generic callbacks.
void scheduleLog(DelayedSubmissionCallbackType item) override
Log message during schedule().
A collection of delayed request submissions.
Definition: delayed_submission.h:149
void processItem(std::pair< std::shared_ptr< Request >, DelayedSubmissionCallbackType > item) override
Process a single item during process().
RequestDelayedSubmissionCollection(const std::string name, const bool enabled)
Constructor of a collection of delayed request submissions.
void scheduleLog(std::pair< std::shared_ptr< Request >, DelayedSubmissionCallbackType > item) override
Log message during schedule().
std::function< void()> DelayedSubmissionCallbackType
A user-defined function to execute as part of delayed submission callback.
Definition: delayed_submission.h:31