comparison Framework/SmartLoader.cpp @ 262:77fdab5b5d6e am-2

cleanup + todos
author am@osimis.io
date Tue, 17 Jul 2018 18:28:12 +0200
parents c887eddd48f1
children c9cf95b49a86
comparison
equal deleted inserted replaced
261:58ad26032bd6 262:77fdab5b5d6e
31 webService_(webService) 31 webService_(webService)
32 {} 32 {}
33 33
34 void SmartLoader::HandleMessage(IObservable& from, const IMessage& message) 34 void SmartLoader::HandleMessage(IObservable& from, const IMessage& message)
35 { 35 {
36 switch (message.GetType()) {
37 case MessageType_SliceGeometryReady:
38 // TODO keep track of objects that have been loaded already
39 break;
40 case MessageType_SliceImageReady:
41 // TODO keep track of objects that have been loaded already
42 break;
43 default:
44 VLOG("unhandled message type" << message.GetType());
45 }
46
36 // forward messages to its own observers 47 // forward messages to its own observers
37 IObservable::broker_.EmitMessage(from, IObservable::observers_, message); 48 IObservable::broker_.EmitMessage(from, IObservable::observers_, message);
38 } 49 }
39 50
40 ILayerSource* SmartLoader::GetFrame(const std::string& instanceId, unsigned int frame) 51 ILayerSource* SmartLoader::GetFrame(const std::string& instanceId, unsigned int frame)
41 { 52 {
53 // TODO: check if this frame has already been loaded or is already being loaded.
54 // - if already loaded: create a "clone" that will emit the GeometryReady/ImageReady messages "immediately"
55 // (it can not be immediate because Observers needs to register first and this is done after this method returns)
56 // - if currently loading, we need to return an object that will observe the existing LayerSource and forward
57 // the messages to its observables
58 // in both cases, we must be carefull about objects lifecycle !!!
42 std::auto_ptr<OrthancFrameLayerSource> layerSource (new OrthancFrameLayerSource(IObserver::broker_, webService_)); 59 std::auto_ptr<OrthancFrameLayerSource> layerSource (new OrthancFrameLayerSource(IObserver::broker_, webService_));
43 layerSource->SetImageQuality(imageQuality_); 60 layerSource->SetImageQuality(imageQuality_);
44 layerSource->RegisterObserver(*this); 61 layerSource->RegisterObserver(*this);
45 layerSource->LoadFrame(instanceId, frame); 62 layerSource->LoadFrame(instanceId, frame);
46 63