24 #include <seastar/core/future.hh>
25 #include <seastar/util/modules.hh>
26 #ifndef SEASTAR_MODULE
34 SEASTAR_MODULE_EXPORT_BEGIN
54 template <
typename... T>
57 template <
typename... T>
60 template <
typename... T>
74 _next = std::move(next);
82 void operator=(
const stream&) =
delete;
83 void operator=(
stream&&) =
delete;
94 start(std::move(next));
119 template <
typename E>
120 void set_exception(E ex) {
127 template <
typename... T>
135 using next_fn =
typename stream<T...>::next_fn;
144 return _stream->start(std::move(next));
150 return std::move(_done);
153 friend class stream<T...>;
155 SEASTAR_MODULE_EXPORT_END
157 template <
typename... T>
160 stream<T...>::produce(T... data) {
161 auto ret = futurize_invoke(_next, std::move(data)...);
162 if (ret.available() && !ret.failed()) {
170 return ret.then_wrapped([
this] (
auto&& f) {
174 _done.set_exception(std::current_exception());
void set_value(A &&... a) noexcept
Sets the promises value.
Definition: future.hh:969
void set_exception(std::exception_ptr &&ex) noexcept
Marks the promise as failed.
Definition: future.hh:977
Definition: stream.hh:128
void start(next_fn next)
Start receiving events from the stream.
Definition: stream.hh:143
future< T > get_future() noexcept
Gets the promise's associated future.
Definition: future.hh:1899
Seastar API namespace.
Definition: abort_on_ebadf.hh:26
Definition: noncopyable_function.hh:37