diff --git a/include/recpp/processors/inl/AllOf.inl b/include/recpp/processors/inl/AllOf.inl index ddf4716..32bca7d 100644 --- a/include/recpp/processors/inl/AllOf.inl +++ b/include/recpp/processors/inl/AllOf.inl @@ -44,7 +44,6 @@ void recpp::processors::AllOf::Impl::onComplete() { m_subscriber.onNext(!m_gotFalse); m_subscriber.onComplete(); - m_subscriber = {}; } template diff --git a/include/recpp/processors/inl/AndThen.inl b/include/recpp/processors/inl/AndThen.inl index 88a78c4..bbc46b1 100644 --- a/include/recpp/processors/inl/AndThen.inl +++ b/include/recpp/processors/inl/AndThen.inl @@ -47,12 +47,14 @@ template void recpp::processors::AndThen::Impl::onError(const std::exception_ptr &error) { m_subscriber.onError(error); + m_subscription = {}; } template void recpp::processors::AndThen::Impl::onComplete() { m_dest.subscribe(m_subscriber); + m_subscription = {}; } template diff --git a/include/recpp/processors/inl/AnyOf.inl b/include/recpp/processors/inl/AnyOf.inl index 12d54e2..bff6d07 100644 --- a/include/recpp/processors/inl/AnyOf.inl +++ b/include/recpp/processors/inl/AnyOf.inl @@ -44,7 +44,6 @@ void recpp::processors::AnyOf::Impl::onComplete() { m_subscriber.onNext(m_gotTrue); m_subscriber.onComplete(); - m_subscriber = {}; } template diff --git a/include/recpp/processors/inl/Count.inl b/include/recpp/processors/inl/Count.inl index a245702..36f1f13 100644 --- a/include/recpp/processors/inl/Count.inl +++ b/include/recpp/processors/inl/Count.inl @@ -39,7 +39,6 @@ void recpp::processors::Count::Impl::onComplete() { m_subscriber.onNext(m_count); m_subscriber.onComplete(); - m_subscriber = {}; } template diff --git a/include/recpp/processors/inl/DefaultIfEmpty.inl b/include/recpp/processors/inl/DefaultIfEmpty.inl index b2b5a30..d8125c9 100644 --- a/include/recpp/processors/inl/DefaultIfEmpty.inl +++ b/include/recpp/processors/inl/DefaultIfEmpty.inl @@ -42,7 +42,6 @@ void recpp::processors::DefaultIfEmpty::Impl::onComplete() if (!m_gotValues) m_subscriber.onNext(m_defaultValue); m_subscriber.onComplete(); - m_subscriber = {}; } template diff --git a/include/recpp/processors/inl/ElementAt.inl b/include/recpp/processors/inl/ElementAt.inl index 55f4435..f2b09cf 100644 --- a/include/recpp/processors/inl/ElementAt.inl +++ b/include/recpp/processors/inl/ElementAt.inl @@ -45,7 +45,6 @@ void recpp::processors::ElementAt::Impl::onComplete() if (m_result) m_subscriber.onNext(*m_result); m_subscriber.onComplete(); - m_subscriber = {}; } template diff --git a/include/recpp/processors/inl/Filter.inl b/include/recpp/processors/inl/Filter.inl index 9ef5166..e88089b 100644 --- a/include/recpp/processors/inl/Filter.inl +++ b/include/recpp/processors/inl/Filter.inl @@ -43,7 +43,6 @@ template void recpp::processors::Filter::Impl::onComplete() { m_subscriber.onComplete(); - m_subscriber = {}; } template diff --git a/include/recpp/processors/inl/First.inl b/include/recpp/processors/inl/First.inl index 3651728..8f2ef6b 100644 --- a/include/recpp/processors/inl/First.inl +++ b/include/recpp/processors/inl/First.inl @@ -42,7 +42,6 @@ void recpp::processors::First::Impl::onComplete() if (result) m_subscriber.onNext(*result); m_subscriber.onComplete(); - m_subscriber = {}; } template diff --git a/include/recpp/processors/inl/FlatMap.inl b/include/recpp/processors/inl/FlatMap.inl index ead7bd2..03ea4ec 100644 --- a/include/recpp/processors/inl/FlatMap.inl +++ b/include/recpp/processors/inl/FlatMap.inl @@ -36,10 +36,7 @@ void recpp::processors::FlatMap::Impl::onNext(const T &value) { m_runningPublishers--; if (!m_runningPublishers && m_completed) - { m_subscriber.onComplete(); - m_subscriber = {}; - } }); result.subscribe(subscriber); } @@ -55,10 +52,7 @@ void recpp::processors::FlatMap::Impl::onComplete() { m_completed = true; if (!m_runningPublishers) - { m_subscriber.onComplete(); - m_subscriber = {}; - } } template diff --git a/include/recpp/processors/inl/IgnoreElements.inl b/include/recpp/processors/inl/IgnoreElements.inl index c836d70..a9781ac 100644 --- a/include/recpp/processors/inl/IgnoreElements.inl +++ b/include/recpp/processors/inl/IgnoreElements.inl @@ -46,13 +46,14 @@ template void recpp::processors::IgnoreElements::Impl::onError(const std::exception_ptr &error) { m_subscriber.onError(error); + m_subscription = {}; } template void recpp::processors::IgnoreElements::Impl::onComplete() { m_subscriber.onComplete(); - m_subscriber = {}; + m_subscription = {}; } template diff --git a/include/recpp/processors/inl/Last.inl b/include/recpp/processors/inl/Last.inl index f1f8bd3..3d1ecac 100644 --- a/include/recpp/processors/inl/Last.inl +++ b/include/recpp/processors/inl/Last.inl @@ -41,7 +41,6 @@ void recpp::processors::Last::Impl::onComplete() if (result) m_subscriber.onNext(*result); m_subscriber.onComplete(); - m_subscriber = {}; } template diff --git a/include/recpp/processors/inl/Map.inl b/include/recpp/processors/inl/Map.inl index 8154608..70823e9 100644 --- a/include/recpp/processors/inl/Map.inl +++ b/include/recpp/processors/inl/Map.inl @@ -40,7 +40,6 @@ template void recpp::processors::Map::Impl::onComplete() { m_subscriber.onComplete(); - m_subscriber = {}; } template diff --git a/include/recpp/processors/inl/Max.inl b/include/recpp/processors/inl/Max.inl index 5a74b99..5c0bc75 100644 --- a/include/recpp/processors/inl/Max.inl +++ b/include/recpp/processors/inl/Max.inl @@ -42,7 +42,6 @@ void recpp::processors::Max::Impl::onComplete() { m_subscriber.onNext(m_max ? *m_max : T{}); m_subscriber.onComplete(); - m_subscriber = {}; } template diff --git a/include/recpp/processors/inl/Min.inl b/include/recpp/processors/inl/Min.inl index 7068a0c..76ace9f 100644 --- a/include/recpp/processors/inl/Min.inl +++ b/include/recpp/processors/inl/Min.inl @@ -42,7 +42,6 @@ void recpp::processors::Min::Impl::onComplete() { m_subscriber.onNext(m_min ? *m_min : T{}); m_subscriber.onComplete(); - m_subscriber = {}; } template diff --git a/include/recpp/processors/inl/NoneOf.inl b/include/recpp/processors/inl/NoneOf.inl index 890cd11..0eeb8d3 100644 --- a/include/recpp/processors/inl/NoneOf.inl +++ b/include/recpp/processors/inl/NoneOf.inl @@ -44,7 +44,6 @@ void recpp::processors::NoneOf::Impl::onComplete() { m_subscriber.onNext(!m_gotTrue); m_subscriber.onComplete(); - m_subscriber = {}; } template diff --git a/include/recpp/processors/inl/Reduce.inl b/include/recpp/processors/inl/Reduce.inl index 700754c..ee99310 100644 --- a/include/recpp/processors/inl/Reduce.inl +++ b/include/recpp/processors/inl/Reduce.inl @@ -42,7 +42,6 @@ void recpp::processors::Reduce::Impl::onComplete() { m_subscriber.onNext(m_current); m_subscriber.onComplete(); - m_subscriber = {}; } template diff --git a/include/recpp/processors/inl/SubscribeOn.inl b/include/recpp/processors/inl/SubscribeOn.inl index c223332..60e93da 100644 --- a/include/recpp/processors/inl/SubscribeOn.inl +++ b/include/recpp/processors/inl/SubscribeOn.inl @@ -41,7 +41,6 @@ template void recpp::processors::SubscribeOn::Impl::onComplete() { m_subscriber.onComplete(); - m_subscriber = {}; } template diff --git a/include/recpp/processors/inl/Tap.inl b/include/recpp/processors/inl/Tap.inl index 40da0c0..5eefa3c 100644 --- a/include/recpp/processors/inl/Tap.inl +++ b/include/recpp/processors/inl/Tap.inl @@ -49,7 +49,6 @@ void recpp::processors::Tap::Impl::onComplete() if (m_onCompleteMethod) m_onCompleteMethod(); m_subscriber.onComplete(); - m_subscriber = {}; } template diff --git a/include/recpp/subscribers/inl/DefaultSubscriber.inl b/include/recpp/subscribers/inl/DefaultSubscriber.inl index 456a0cf..142f360 100644 --- a/include/recpp/subscribers/inl/DefaultSubscriber.inl +++ b/include/recpp/subscribers/inl/DefaultSubscriber.inl @@ -61,6 +61,7 @@ void recpp::subscribers::DefaultSubscriber::Impl::onError(const std::exceptio { if (m_onErrorMethod) m_onErrorMethod(error); + m_subscription = {}; } template @@ -68,4 +69,5 @@ void recpp::subscribers::DefaultSubscriber::Impl::onComplete() { if (m_onCompleteMethod) m_onCompleteMethod(); + m_subscription = {}; } diff --git a/include/recpp/subscribers/inl/MaybeSubscriber.inl b/include/recpp/subscribers/inl/MaybeSubscriber.inl index f199efd..75a9d85 100644 --- a/include/recpp/subscribers/inl/MaybeSubscriber.inl +++ b/include/recpp/subscribers/inl/MaybeSubscriber.inl @@ -16,7 +16,6 @@ void recpp::subscribers::MaybeSubscriber::onNext(const T &value) m_ended = true; m_subscriber.onNext(value); m_subscriber.onComplete(); - m_subscriber = {}; } } @@ -44,6 +43,5 @@ void recpp::subscribers::MaybeSubscriber::onComplete() { m_ended = true; m_subscriber.onComplete(); - m_subscriber = {}; } } diff --git a/include/recpp/subscribers/inl/ObservableSubscriber.inl b/include/recpp/subscribers/inl/ObservableSubscriber.inl index 5f4bec5..ee87be6 100644 --- a/include/recpp/subscribers/inl/ObservableSubscriber.inl +++ b/include/recpp/subscribers/inl/ObservableSubscriber.inl @@ -39,6 +39,5 @@ void recpp::subscribers::ObservableSubscriber::onComplete() { m_ended = true; m_subscriber.onComplete(); - m_subscriber = {}; } } diff --git a/include/recpp/subscribers/inl/SingleSubscriber.inl b/include/recpp/subscribers/inl/SingleSubscriber.inl index 26d6cfb..4731e30 100644 --- a/include/recpp/subscribers/inl/SingleSubscriber.inl +++ b/include/recpp/subscribers/inl/SingleSubscriber.inl @@ -16,7 +16,6 @@ void recpp::subscribers::SingleSubscriber::onNext(const T &value) m_ended = true; m_subscriber.onNext(value); m_subscriber.onComplete(); - m_subscriber = {}; } } diff --git a/include/recpp/subscriptions/inl/EmptySubscription.inl b/include/recpp/subscriptions/inl/EmptySubscription.inl index 3aeab39..7596abf 100644 --- a/include/recpp/subscriptions/inl/EmptySubscription.inl +++ b/include/recpp/subscriptions/inl/EmptySubscription.inl @@ -21,7 +21,6 @@ void recpp::subscriptions::EmptySubscription::Impl::request(std::size_t count { m_completed = true; m_subscriber.onComplete(); - m_subscriber = {}; } } @@ -32,6 +31,5 @@ void recpp::subscriptions::EmptySubscription::Impl::cancel() { m_completed = true; m_subscriber.onComplete(); - m_subscriber = {}; } } diff --git a/include/recpp/subscriptions/inl/JustSubscription.inl b/include/recpp/subscriptions/inl/JustSubscription.inl index 8e31a8c..cde775d 100644 --- a/include/recpp/subscriptions/inl/JustSubscription.inl +++ b/include/recpp/subscriptions/inl/JustSubscription.inl @@ -22,12 +22,10 @@ void recpp::subscriptions::JustSubscription::Impl::request(std::size_t count) m_completed = true; m_subscriber.onNext(m_value); m_subscriber.onComplete(); - m_subscriber = {}; } template void recpp::subscriptions::JustSubscription::Impl::cancel() { m_subscriber.onComplete(); - m_subscriber = {}; } diff --git a/include/recpp/subscriptions/inl/MergeSubscription.inl b/include/recpp/subscriptions/inl/MergeSubscription.inl index 275131d..9fb6bd7 100644 --- a/include/recpp/subscriptions/inl/MergeSubscription.inl +++ b/include/recpp/subscriptions/inl/MergeSubscription.inl @@ -86,10 +86,7 @@ recpp::subscriptions::MergeSubscription::Impl::Impl(const rscpp::Subscribe { m_completed = true; if (!m_canceled) - { m_subscriber.onComplete(); - m_subscriber = {}; - } } }); publisherSource.subscribe(sourceSubscriber); @@ -133,10 +130,7 @@ void recpp::subscriptions::MergeSubscription::Impl::onPublisherComplete(st { m_completed = true; if (!m_canceled) - { m_subscriber.onComplete(); - m_subscriber = {}; - } } } diff --git a/include/recpp/subscriptions/inl/NeverSubscription.inl b/include/recpp/subscriptions/inl/NeverSubscription.inl index 1a04862..0921d75 100644 --- a/include/recpp/subscriptions/inl/NeverSubscription.inl +++ b/include/recpp/subscriptions/inl/NeverSubscription.inl @@ -22,5 +22,4 @@ template void recpp::subscriptions::NeverSubscription::Impl::cancel() { m_subscriber.onComplete(); - m_subscriber = {}; } diff --git a/include/recpp/subscriptions/inl/RangeSubscription.inl b/include/recpp/subscriptions/inl/RangeSubscription.inl index e5d3cb5..73f4598 100644 --- a/include/recpp/subscriptions/inl/RangeSubscription.inl +++ b/include/recpp/subscriptions/inl/RangeSubscription.inl @@ -25,7 +25,6 @@ void recpp::subscriptions::RangeSubscription::Impl::request(std::size_t co { m_completed = true; m_subscriber.onComplete(); - m_subscriber = {}; break; } const auto it = m_current++; @@ -38,5 +37,4 @@ void recpp::subscriptions::RangeSubscription::Impl::cancel() { m_canceled = true; m_subscriber.onComplete(); - m_subscriber = {}; } diff --git a/src/subscribers/CompletableSubscriber.cpp b/src/subscribers/CompletableSubscriber.cpp index f728a25..2acdd87 100644 --- a/src/subscribers/CompletableSubscriber.cpp +++ b/src/subscribers/CompletableSubscriber.cpp @@ -23,6 +23,5 @@ void recpp::subscribers::CompletableSubscriber::onComplete() { m_ended = true; m_subscriber.onComplete(); - m_subscriber = {}; } } diff --git a/src/subscriptions/ForwardSubscription.cpp b/src/subscriptions/ForwardSubscription.cpp index 5616cb3..bffc658 100644 --- a/src/subscriptions/ForwardSubscription.cpp +++ b/src/subscriptions/ForwardSubscription.cpp @@ -22,4 +22,5 @@ void ForwardSubscription::Impl::request(size_t count) void ForwardSubscription::Impl::cancel() { m_subscription.cancel(); + m_subscription = {}; }