6#include <imod/IModel.h>
7#include <imod/CModelUpdateBridge.h>
8#include <iinsp/TSupplierCompWrap.h>
18template <
class Prov
iderInterface,
class ObjectInterface>
20 public ilog::CLoggerComponentBase,
21 virtual public ProviderInterface,
22 virtual public iinsp::ISupplier
25 typedef ilog::CLoggerComponentBase BaseClass;
26 typedef ProviderInterface ProviderInterfaceType;
27 typedef ObjectInterface ObjectInterfaceType;
30 I_REGISTER_INTERFACE(iinsp::ISupplier);
31 I_REGISTER_INTERFACE(ProviderInterfaceType);
32 I_TASSIGN(m_objectCompPtr,
"Object",
"Object used if no slave supplier is provided",
false,
"Object");
33 I_ASSIGN_TO(m_objectModelCompPtr, m_objectCompPtr,
false);
34 I_TASSIGN(m_objectProviderCompPtr,
"SlaveSupplier",
"Slave supplier where all calls will be delegated",
false,
"SlaveSupplier");
35 I_ASSIGN_TO(m_objectSupplierCompPtr, m_objectProviderCompPtr,
false);
36 I_ASSIGN_TO(m_objectProviderModelCompPtr, m_objectProviderCompPtr,
false);
42 virtual WorkStatus GetWorkStatus()
const override;
43 virtual imod::IModel* GetWorkStatusModel()
const override;
44 virtual void InvalidateSupplier()
override;
45 virtual void EnsureWorkInitialized()
override;
46 virtual void EnsureWorkFinished()
override;
47 virtual void ClearWorkResults()
override;
48 virtual const ilog::IMessageContainer* GetWorkMessages(MessageContainerType containerType)
const override;
49 virtual iprm::IParamsSet* GetModelParametersSet()
const override;
53 virtual void OnComponentCreated()
override;
54 virtual void OnComponentDestroyed()
override;
57 I_TREF(ObjectInterfaceType, m_objectCompPtr);
58 I_REF(imod::IModel, m_objectModelCompPtr);
60 I_TREF(ProviderInterface, m_objectProviderCompPtr);
61 I_REF(iinsp::ISupplier, m_objectSupplierCompPtr);
62 I_REF(imod::IModel, m_objectProviderModelCompPtr);
64 imod::CModelUpdateBridge m_updateBridge;
68template <
class Prov
iderInterface,
class ObjectInterface>
70 :m_updateBridge(this, imod::CModelUpdateBridge::UF_SOURCE)
77template <
class Prov
iderInterface,
class ObjectInterface>
78iinsp::ISupplier::WorkStatus TDelegatedSupplierCompBase<ProviderInterface, ObjectInterface>::GetWorkStatus()
const
80 if (m_objectSupplierCompPtr.IsValid()){
81 return m_objectSupplierCompPtr->GetWorkStatus();
84 if (m_objectCompPtr.IsValid()){
92template <
class Prov
iderInterface,
class ObjectInterface>
93imod::IModel* TDelegatedSupplierCompBase<ProviderInterface, ObjectInterface>::GetWorkStatusModel()
const
95 if (m_objectSupplierCompPtr.IsValid()){
96 return m_objectSupplierCompPtr->GetWorkStatusModel();
103template <
class Prov
iderInterface,
class ObjectInterface>
104void TDelegatedSupplierCompBase<ProviderInterface, ObjectInterface>::InvalidateSupplier()
106 if (m_objectSupplierCompPtr.IsValid()){
107 m_objectSupplierCompPtr->InvalidateSupplier();
112template <
class Prov
iderInterface,
class ObjectInterface>
113void TDelegatedSupplierCompBase<ProviderInterface, ObjectInterface>::EnsureWorkInitialized()
115 if (m_objectSupplierCompPtr.IsValid()){
116 m_objectSupplierCompPtr->EnsureWorkInitialized();
121template <
class Prov
iderInterface,
class ObjectInterface>
122void TDelegatedSupplierCompBase<ProviderInterface, ObjectInterface>::EnsureWorkFinished()
124 if (m_objectSupplierCompPtr.IsValid()){
125 m_objectSupplierCompPtr->EnsureWorkFinished();
130template <
class Prov
iderInterface,
class ObjectInterface>
131void TDelegatedSupplierCompBase<ProviderInterface, ObjectInterface>::ClearWorkResults()
133 if (m_objectSupplierCompPtr.IsValid()){
134 m_objectSupplierCompPtr->ClearWorkResults();
139template <
class Prov
iderInterface,
class ObjectInterface>
140const ilog::IMessageContainer* TDelegatedSupplierCompBase<ProviderInterface, ObjectInterface>::GetWorkMessages(MessageContainerType containerType)
const
142 if (m_objectSupplierCompPtr.IsValid()){
143 return m_objectSupplierCompPtr->GetWorkMessages(containerType);
150template <
class Prov
iderInterface,
class ObjectInterface>
151iprm::IParamsSet* TDelegatedSupplierCompBase<ProviderInterface, ObjectInterface>::GetModelParametersSet()
const
153 if (m_objectSupplierCompPtr.IsValid()){
154 return m_objectSupplierCompPtr->GetModelParametersSet();
165template <
class Prov
iderInterface,
class ObjectInterface>
166void TDelegatedSupplierCompBase<ProviderInterface, ObjectInterface>::OnComponentCreated()
168 BaseClass::OnComponentCreated();
170 if (m_objectProviderModelCompPtr.IsValid()){
171 m_objectProviderModelCompPtr->AttachObserver(&m_updateBridge);
174 if (m_objectModelCompPtr.IsValid()){
175 m_objectModelCompPtr->AttachObserver(&m_updateBridge);
181template <
class Prov
iderInterface,
class ObjectInterface>
182void TDelegatedSupplierCompBase<ProviderInterface, ObjectInterface>::OnComponentDestroyed()
184 m_updateBridge.EnsureModelsDetached();
186 BaseClass::OnComponentDestroyed();