Mercurial > hg > orthanc-stone
changeset 2327:139c0ed1ed0c refactoring
improved message templating
| author | Sebastien Jodogne <s.jodogne@gmail.com> |
|---|---|
| date | Fri, 02 Oct 2026 08:12:12 +0200 |
| parents | f5d2e4b76439 |
| children | feaa1543cc69 |
| files | Applications/Samples/Sdl/SingleFrameViewer/SdlSimpleViewer.cpp OrthancStone/Sources/Loaders/DicomResourcesLoader.cpp OrthancStone/Sources/Loaders/DicomResourcesLoader.h OrthancStone/Sources/Loaders/SeriesFramesLoader.cpp OrthancStone/Sources/Loaders/SeriesFramesLoader.h OrthancStone/Sources/Messages/IObservable.h OrthancStone/Sources/Messages/TypedObservable.h OrthancStone/Sources/StoneApplication.h |
| diffstat | 8 files changed, 26 insertions(+), 22 deletions(-) [+] |
line wrap: on
line diff
--- a/Applications/Samples/Sdl/SingleFrameViewer/SdlSimpleViewer.cpp Wed Sep 30 21:15:01 2026 +0200 +++ b/Applications/Samples/Sdl/SingleFrameViewer/SdlSimpleViewer.cpp Fri Oct 02 08:12:12 2026 +0200 @@ -330,7 +330,9 @@ framesLoader_ = SeriesFramesLoader::Create(*context_, *message.GetResources()); //Register<FrameDecodedMessage>(*framesLoader_, &SimpleViewerApp::Handle); - framesLoader_->Register(shared_from_this()); + + //framesLoader_->TypedObservable<FrameDecodedMessage>::Register(shared_from_this()); + New::IObservable::Bind<FrameDecodedMessage>(framesLoader_, shared_from_this()); assert(message.HasUserPayload()); @@ -357,8 +359,8 @@ //Register<DicomResourcesLoadedMessage>(*dicomLoader_, &SimpleViewerApp::Handle); - //New::TypedObservable<DicomResourcesLoadedMessage>::Bind(*dicomLoader_, shared_from_this()); - dicomLoader_->Register(shared_from_this()); + //dicomLoader_->TypedObservable<DicomResourcesLoadedMessage>::Register(shared_from_this()); + New::IObservable::Bind<DicomResourcesLoadedMessage>(dicomLoader_, shared_from_this()); annotations_.SetActiveTool(AnnotationsSceneLayer::Tool_Edit); annotations_.SetProbedLayer(0);
--- a/OrthancStone/Sources/Loaders/DicomResourcesLoader.cpp Wed Sep 30 21:15:01 2026 +0200 +++ b/OrthancStone/Sources/Loaders/DicomResourcesLoader.cpp Fri Oct 02 08:12:12 2026 +0200 @@ -98,7 +98,8 @@ DicomResourcesLoadedMessage message(*loader_, target_, priority_, source_, userPayload_.get()); loader_->BroadcastMessage(message); - loader_->Notify(message); + //loader_->Notify(*loader_, message); + New::IObservable::Dispatch(loader_, message); } boost::shared_ptr<DicomResourcesLoader> GetLoader()
--- a/OrthancStone/Sources/Loaders/DicomResourcesLoader.h Wed Sep 30 21:15:01 2026 +0200 +++ b/OrthancStone/Sources/Loaders/DicomResourcesLoader.h Fri Oct 02 08:12:12 2026 +0200 @@ -108,9 +108,6 @@ public New::IObservable, public New::TypedObservable<DicomResourcesLoadedMessage> { - public: - using New::TypedObservable<DicomResourcesLoadedMessage>::Register; // TODO Refactoring - Presumably not needed - private: class Handler; class StringHandler;
--- a/OrthancStone/Sources/Loaders/SeriesFramesLoader.cpp Wed Sep 30 21:15:01 2026 +0200 +++ b/OrthancStone/Sources/Loaders/SeriesFramesLoader.cpp Fri Oct 02 08:12:12 2026 +0200 @@ -147,7 +147,8 @@ FrameDecodedMessage message(*this, frameIndex, payload.GetQuality(), image, instance, parameters, payload.GetUserPayload()); BroadcastMessage(message); - Notify(message); + + New::IObservable::Dispatch(shared_from_this(), message); }
--- a/OrthancStone/Sources/Loaders/SeriesFramesLoader.h Wed Sep 30 21:15:01 2026 +0200 +++ b/OrthancStone/Sources/Loaders/SeriesFramesLoader.h Fri Oct 02 08:12:12 2026 +0200 @@ -108,9 +108,6 @@ public New::IObservable, public New::TypedObservable<FrameDecodedMessage> { - public: - using New::TypedObservable<FrameDecodedMessage>::Register; // TODO Refactoring - Presumably not needed - private: class Payload;
--- a/OrthancStone/Sources/Messages/IObservable.h Wed Sep 30 21:15:01 2026 +0200 +++ b/OrthancStone/Sources/Messages/IObservable.h Fri Oct 02 08:12:12 2026 +0200 @@ -65,10 +65,18 @@ { } + template <typename Observable, typename Message> + static void Dispatch(const boost::shared_ptr<Observable>& observable, + const Message& message) + { + static_cast< TypedObservable<Message>& >(*observable).Notify(*observable, message); + } + template <typename Message> - void Notify(const Message& message) + static void Bind(const boost::shared_ptr< TypedObservable<Message> >& observable, + const boost::shared_ptr< TypedObserver<Message> >& observer) { - dynamic_cast< TypedObservable<Message>& >(*this).Dispatch(*this, message); + observable->Register(observer); } }; }
--- a/OrthancStone/Sources/Messages/TypedObservable.h Wed Sep 30 21:15:01 2026 +0200 +++ b/OrthancStone/Sources/Messages/TypedObservable.h Fri Oct 02 08:12:12 2026 +0200 @@ -47,8 +47,8 @@ content_.push_back(observer); } - void Dispatch(const IObservable& observable, - const Message& message) + void Notify(const IObservable& observable, + const Message& message) { Content active; @@ -65,13 +65,6 @@ content_.swap(active); } - - template <typename Observable> - static void Bind(Observable& observable, - const boost::shared_ptr< TypedObserver<Message> >& observer) - { - static_cast< TypedObservable<Message>& >(observable).Register(observer); - } }; } }
--- a/OrthancStone/Sources/StoneApplication.h Wed Sep 30 21:15:01 2026 +0200 +++ b/OrthancStone/Sources/StoneApplication.h Fri Oct 02 08:12:12 2026 +0200 @@ -132,6 +132,11 @@ IOracle& GetOracle(); + const boost::shared_ptr<OracleScheduler>& GetScheduler() const + { + return oracleScheduler_; + } + virtual void EmitMessage(boost::weak_ptr<IObserver> observer, const IMessage& message) ORTHANC_OVERRIDE;
