# HG changeset patch # User Sebastien Jodogne # Date 1571316161 -7200 # Node ID 008dbc4ceb62adf2e6acdc53e0854d899caa4e6c # Parent 81b29bc7c3d453518302c6bfd71232d24b7c3d6a removed LambdaCallable diff -r 81b29bc7c3d4 -r 008dbc4ceb62 Framework/Messages/ICallable.h --- a/Framework/Messages/ICallable.h Thu Oct 17 14:39:51 2019 +0200 +++ b/Framework/Messages/ICallable.h Thu Oct 17 14:42:41 2019 +0200 @@ -98,36 +98,4 @@ return observer_; } }; - -#if 0 /* __cplusplus >= 201103L*/ - -#include - - template - class LambdaCallable : public MessageHandler - { - private: - - IObserver& observer_; - std::function lambda_; - - public: - LambdaCallable(IObserver& observer, - std::function lambdaFunction) : - observer_(observer), - lambda_(lambdaFunction) - { - } - - virtual void Apply(const IMessage& message) - { - lambda_(dynamic_cast(message)); - } - - virtual IObserver* GetObserver() const - { - return &observer_; - } - }; -#endif //__cplusplus >= 201103L } diff -r 81b29bc7c3d4 -r 008dbc4ceb62 Framework/Oracle/WebAssemblyOracle.cpp --- a/Framework/Oracle/WebAssemblyOracle.cpp Thu Oct 17 14:39:51 2019 +0200 +++ b/Framework/Oracle/WebAssemblyOracle.cpp Thu Oct 17 14:42:41 2019 +0200 @@ -695,7 +695,7 @@ - void WebAssemblyOracle::Schedule(const IObserver& receiver, + void WebAssemblyOracle::Schedule(boost::shared_ptr& receiver, IOracleCommand* command) { LOG(TRACE) << "WebAssemblyOracle::Schedule : receiver = " diff -r 81b29bc7c3d4 -r 008dbc4ceb62 Framework/Oracle/WebAssemblyOracle.h --- a/Framework/Oracle/WebAssemblyOracle.h Thu Oct 17 14:39:51 2019 +0200 +++ b/Framework/Oracle/WebAssemblyOracle.h Thu Oct 17 14:42:41 2019 +0200 @@ -76,7 +76,7 @@ orthancRoot_ = root; } - virtual void Schedule(const IObserver& receiver, - IOracleCommand* command); + virtual void Schedule(boost::shared_ptr& receiver, + IOracleCommand* command) ORTHANC_OVERRIDE; }; } diff -r 81b29bc7c3d4 -r 008dbc4ceb62 UnitTestsSources/TestMessageBroker.cpp --- a/UnitTestsSources/TestMessageBroker.cpp Thu Oct 17 14:39:51 2019 +0200 +++ b/UnitTestsSources/TestMessageBroker.cpp Thu Oct 17 14:42:41 2019 +0200 @@ -102,66 +102,3 @@ observable.BroadcastMessage(MyObservable::MyCustomMessage(20)); ASSERT_EQ(0, testCounter); } - - - -#if 0 /* __cplusplus >= 201103L*/ - -TEST(MessageBroker, TestLambdaSimpleUseCase) -{ - MyObservable observable; - MyObserver* observer(new MyObserver); - - // create a permanent connection between an observable and an observer - observable.RegisterObserverCallback(new LambdaCallable(*observer, [&](const MyObservable::MyCustomMessage& message) {testCounter += 2 * message.payload_;})); - - testCounter = 0; - observable.BroadcastMessage(MyObservable::MyCustomMessage(12)); - ASSERT_EQ(24, testCounter); - - // delete the observer and check that the callback is not called anymore - delete observer; - - // the connection is permanent; if we emit the same message again, the observer will be notified again - testCounter = 0; - observable.BroadcastMessage(MyObservable::MyCustomMessage(20)); - ASSERT_EQ(0, testCounter); -} - -namespace { - class MyObserverWithLambda : public IObserver { - private: - int multiplier_; // this is a private variable we want to access in a lambda - - public: - MyObserverWithLambda(int multiplier, MyObservable& observable) - : multiplier_(multiplier) - { - // register a callable to a lambda that access private members - observable.RegisterObserverCallback(new LambdaCallable(*this, [this](const MyObservable::MyCustomMessage& message) { - testCounter += multiplier_ * message.payload_; - })); - - } - }; -} - -TEST(MessageBroker, TestLambdaCaptureThisAndAccessPrivateMembers) -{ - MyObservable observable; - MyObserverWithLambda* observer = new MyObserverWithLambda(3, observable); - - testCounter = 0; - observable.BroadcastMessage(MyObservable::MyCustomMessage(12)); - ASSERT_EQ(36, testCounter); - - // delete the observer and check that the callback is not called anymore - delete observer; - - // the connection is permanent; if we emit the same message again, the observer will be notified again - testCounter = 0; - observable.BroadcastMessage(MyObservable::MyCustomMessage(20)); - ASSERT_EQ(0, testCounter); -} - -#endif // C++ 11