Loading...
Searching...
No Matches
request_builder_base.h
1
5#pragma once
6
7#include <stdexcept>
8#include <utility>
9
10#include <ucxx/typedefs.h>
11
12namespace ucxx {
13
34
44template <typename Derived>
46 protected:
47 bool _enablePythonFuture{false};
48 bool _built{false};
49
58 void markBuilt()
59 {
60 if (_built) throw std::logic_error("Builder::build() called more than once");
61 _built = true;
62 }
63
64 public:
66 RequestBuilderBase() = default;
67
70
73
76
78 RequestBuilderBase& operator=(RequestBuilderBase&&) = default;
79
86 Derived& pythonFuture(bool enable = true) &
87 {
88 _enablePythonFuture = enable;
89 return static_cast<Derived&>(*this);
90 }
91
98 Derived&& pythonFuture(bool enable = true) &&
99 {
100 _enablePythonFuture = enable;
101 return static_cast<Derived&&>(*this);
102 }
103};
104
114template <typename Derived>
116 protected:
119
120 public:
128 {
129 _callbackFunction = std::move(fn);
130 return static_cast<Derived&>(*this);
131 }
132
140 {
141 _callbackFunction = std::move(fn);
142 return static_cast<Derived&&>(*this);
143 }
144
152 {
153 _callbackData = std::move(data);
154 return static_cast<Derived&>(*this);
155 }
156
164 {
165 _callbackData = std::move(data);
166 return static_cast<Derived&&>(*this);
167 }
168};
169
170} // namespace ucxx
void markBuilt()
Assert that build() has not been called yet, then mark as built.
Definition request_builder_base.h:58
bool _built
Whether build() has already been called.
Definition request_builder_base.h:48
RequestBuilderBase(RequestBuilderBase &&) noexcept=default
Move constructor.
bool _enablePythonFuture
Enable Python future support.
Definition request_builder_base.h:47
RequestBuilderBase(const RequestBuilderBase &)=delete
Copy constructor disabled to prevent duplicate request submissions.
Derived && pythonFuture(bool enable=true) &&
Configure Python future support on a temporary builder.
Definition request_builder_base.h:98
Derived & pythonFuture(bool enable=true) &
Configure Python future support.
Definition request_builder_base.h:86
RequestBuilderBase()=default
Default constructor.
RequestBuilderBase & operator=(const RequestBuilderBase &)=delete
Copy assignment disabled to prevent duplicate request submissions.
CRTP base for request builders that support completion callbacks.
Definition request_builder_base.h:115
Derived && callbackFunction(RequestCallbackUserFunction fn) &&
Set the user-defined callback function on a temporary builder.
Definition request_builder_base.h:139
RequestCallbackUserFunction _callbackFunction
User callback on completion.
Definition request_builder_base.h:117
Derived & callbackData(RequestCallbackUserData data) &
Set the user-defined data to pass to the callback function.
Definition request_builder_base.h:151
Derived & callbackFunction(RequestCallbackUserFunction fn) &
Set the user-defined callback function to call upon completion.
Definition request_builder_base.h:127
RequestCallbackUserData _callbackData
Data passed to callback.
Definition request_builder_base.h:118
Derived && callbackData(RequestCallbackUserData data) &&
Set the user-defined data to pass to the callback function on a temporary builder.
Definition request_builder_base.h:163
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