comparison UnitTestsSources/TestMessageBroker.cpp @ 456:b70fcc134ba4

moved LambdaCallable (currently still disable because it does not work in WASM)
author Alain Mazy <alain@mazy.be>
date Wed, 23 Jan 2019 13:58:51 +0100
parents a750f11892ec
children 22b80f5c3a1c aaeec7be8fb7
comparison
equal deleted inserted replaced
455:e3a6e3bf5c7c 456:b70fcc134ba4
312 ASSERT_EQ(0, testCounter); 312 ASSERT_EQ(0, testCounter);
313 } 313 }
314 314
315 #if __cplusplus >= 201103L 315 #if __cplusplus >= 201103L
316 316
317 #include <functional>
318
319 namespace OrthancStone {
320
321 template <typename TMessage>
322 class LambdaCallable : public MessageHandler<TMessage>
323 {
324 private:
325
326 IObserver& observer_;
327 std::function<void (const TMessage&)> lambda_;
328
329 public:
330 LambdaCallable(IObserver& observer,
331 std::function<void (const TMessage&)> lambdaFunction) :
332 observer_(observer),
333 lambda_(lambdaFunction)
334 {
335 }
336
337 virtual void Apply(const IMessage& message)
338 {
339 lambda_(dynamic_cast<const TMessage&>(message));
340 }
341
342 virtual MessageType GetMessageType() const
343 {
344 return static_cast<MessageType>(TMessage::Type);
345 }
346
347 virtual IObserver* GetObserver() const
348 {
349 return &observer_;
350 }
351 };
352
353
354 }
355
356 TEST(MessageBroker, TestLambdaSimpleUseCase) 317 TEST(MessageBroker, TestLambdaSimpleUseCase)
357 { 318 {
358 MessageBroker broker; 319 MessageBroker broker;
359 MyObservable observable(broker); 320 MyObservable observable(broker);
360 MyObserver* observer = new MyObserver(broker); 321 MyObserver* observer = new MyObserver(broker);