13#include <rpp/operators/fwd.hpp>
15#include <rpp/defs.hpp>
16#include <rpp/operators/details/strategy.hpp>
20namespace rpp::operators::details
22 template<rpp::constra
int::decayed_type Type, rpp::constra
int::observer TObserver>
25 static constexpr auto preferred_disposables_mode = rpp::details::observers::disposables_mode::None;
27 RPP_NO_UNIQUE_ADDRESS TObserver
observer;
28 mutable std::optional<Type> value{};
31 void on_next(T&& v)
const
33 value.emplace(std::forward<T>(v));
36 void on_completed()
const
38 if (value.has_value())
47 void on_error(
const std::exception_ptr& err)
const {
observer.
on_error(err); }
58 template<rpp::constra
int::decayed_type T>
61 using result_type = T;
63 template<rpp::constra
int::observer_of_type<result_type> TObserver>
67 template<rpp::details::observables::constra
int::disposables_strategy Prev>
68 using updated_optimal_disposables_strategy = Prev;
72namespace rpp::operators
void on_next(const Type &v) const noexcept
Observable calls this method to notify observer about new value.
Definition observer.hpp:84
void set_upstream(const disposable_wrapper &d) noexcept
Observable calls this method to pass disposable. Observer disposes this disposable WHEN observer want...
Definition observer.hpp:49
void on_completed() const noexcept
Observable calls this method to notify observer about completion of emissions.
Definition observer.hpp:135
void on_error(const std::exception_ptr &err) const noexcept
Observable calls this method to notify observer about some error during generation next data.
Definition observer.hpp:120
bool is_disposed() const noexcept
Observable calls this method to check if observer interested or not in emissions.
Definition observer.hpp:74
Base class for any observer used in RPP. It handles core callbacks of observers. Objects of this clas...
Definition observer.hpp:172
Definition strategy.hpp:28
auto last()
Emit only the last item provided before on_completed.
Definition last.hpp:95
Definition exceptions.hpp:18