Version: 9.16.0
YACS::ENGINE::SalomeContainerMultiHelper Class Reference

#include <SalomeContainerHelper.hxx>

Inheritance diagram for YACS::ENGINE::SalomeContainerMultiHelper:
Collaboration diagram for YACS::ENGINE::SalomeContainerMultiHelper:

Public Member Functions

std::string getType () const
 
std::string getDftLaunchMode () const
 
SalomeContainerMultiHelperdeepCpyOnlyStaticInfo () const
 
Engines::Container_var getContainer (const Task *askingNode) const
 
bool isAlreadyStarted (const Task *askingNode) const
 
void setContainer (const Task *askingNode, Engines::Container_var cont)
 
void shutdown ()
 
virtual std::string getType () const =0
 
virtual std::string getDftLaunchMode () const =0
 
virtual SalomeContainerHelperdeepCpyOnlyStaticInfo () const =0
 
virtual Engines::Container_var getContainer (const Task *askingNode) const =0
 
virtual bool isAlreadyStarted (const Task *askingNode) const =0
 
virtual void setContainer (const Task *askingNode, Engines::Container_var cont)=0
 
virtual void shutdown ()=0
 
- Public Member Functions inherited from YACS::ENGINE::RefCounter
unsigned int getRefCnt () const
 
void incrRef () const
 
bool decrRef () const
 

Static Public Attributes

static const char TYPE_NAME [] ="multi"
 
static const char DFT_LAUNCH_MODE [] ="getorstart"
 
- Static Public Attributes inherited from YACS::ENGINE::RefCounter
static unsigned int _totalCnt =0
 

Private Member Functions

 ~SalomeContainerMultiHelper ()
 

Private Attributes

std::map< const ComponentInstance *, Engines::Container_var > _containersForComponents
 
std::map< const Task *, Engines::Container_var > _containersForTasks
 
std::mutex _data_mutex
 

Additional Inherited Members

- Protected Member Functions inherited from YACS::ENGINE::SalomeContainerHelper
virtual ~SalomeContainerHelper ()
 
- Protected Member Functions inherited from YACS::ENGINE::RefCounter
 RefCounter ()
 
 RefCounter (const RefCounter &other)
 
virtual ~RefCounter ()
 
- Protected Attributes inherited from YACS::ENGINE::RefCounter
unsigned int _cnt
 

Detailed Description

Definition at line 77 of file SalomeContainerHelper.hxx.

Constructor & Destructor Documentation

◆ ~SalomeContainerMultiHelper()

SalomeContainerMultiHelper::~SalomeContainerMultiHelper ( )
private

Definition at line 239 of file SalomeContainerHelper.cxx.

240{
241}

Member Function Documentation

◆ deepCpyOnlyStaticInfo()

SalomeContainerMultiHelper * SalomeContainerMultiHelper::deepCpyOnlyStaticInfo ( ) const
virtual

◆ getContainer()

Engines::Container_var SalomeContainerMultiHelper::getContainer ( const Task askingNode) const
virtual

Implements YACS::ENGINE::SalomeContainerHelper.

Definition at line 135 of file SalomeContainerHelper.cxx.

136{
137 std::unique_lock<std::mutex> lock(_data_mutex);
138 const ComponentInstance *inst(askingNode?askingNode->getComponent():0);
139 if(inst == nullptr && askingNode != nullptr && askingNode->hasImposedResource())
140 {
141 std::map<const Task *,Engines::Container_var>::const_iterator it(_containersForTasks.find(askingNode));
142 if(it!=_containersForTasks.end())
143 return (*it).second;
144 else
145 return Engines::Container::_nil();
146 }
147 else
148 {
149 std::map<const ComponentInstance *,Engines::Container_var>::const_iterator it(_containersForComponents.find(inst));
150 if(it!=_containersForComponents.end())
151 return (*it).second;
152 else
153 return Engines::Container::_nil();
154 }
155}
Base class for all component instances.
std::map< const ComponentInstance *, Engines::Container_var > _containersForComponents
std::map< const Task *, Engines::Container_var > _containersForTasks
virtual bool hasImposedResource() const
Definition: Task.hxx:58
virtual ComponentInstance * getComponent()=0

References _containersForComponents, _containersForTasks, _data_mutex, YACS::ENGINE::Task::getComponent(), and YACS::ENGINE::Task::hasImposedResource().

◆ getDftLaunchMode()

std::string SalomeContainerMultiHelper::getDftLaunchMode ( ) const
virtual

Implements YACS::ENGINE::SalomeContainerHelper.

Definition at line 125 of file SalomeContainerHelper.cxx.

126{
127 return std::string(DFT_LAUNCH_MODE);
128}

References DFT_LAUNCH_MODE.

◆ getType()

std::string SalomeContainerMultiHelper::getType ( ) const
virtual

Implements YACS::ENGINE::SalomeContainerHelper.

Definition at line 120 of file SalomeContainerHelper.cxx.

121{
122 return TYPE_NAME;
123}

References TYPE_NAME.

◆ isAlreadyStarted()

bool SalomeContainerMultiHelper::isAlreadyStarted ( const Task askingNode) const
virtual

Implements YACS::ENGINE::SalomeContainerHelper.

Definition at line 157 of file SalomeContainerHelper.cxx.

158{
159 std::unique_lock<std::mutex> lock(_data_mutex);
160 const ComponentInstance *inst(askingNode?askingNode->getComponent():0);
161 if(inst == nullptr && askingNode != nullptr && askingNode->hasImposedResource())
162 {
163 return _containersForTasks.count(askingNode) > 0;
164 }
165 else
166 {
167 if(_containersForComponents.count(inst)==0)
168 return false;
169 else
170 return true;
171 }
172}

References _containersForComponents, _containersForTasks, _data_mutex, YACS::ENGINE::Task::getComponent(), and YACS::ENGINE::Task::hasImposedResource().

◆ setContainer()

void SalomeContainerMultiHelper::setContainer ( const Task askingNode,
Engines::Container_var  cont 
)
virtual

Implements YACS::ENGINE::SalomeContainerHelper.

Definition at line 174 of file SalomeContainerHelper.cxx.

175{
176 std::unique_lock<std::mutex> lock(_data_mutex);
177 const ComponentInstance *inst(askingNode?askingNode->getComponent():0);
178 if(inst == nullptr && askingNode != nullptr && askingNode->hasImposedResource())
179 {
180 _containersForTasks[askingNode] = cont;
181 }
182 else
183 {
184 _containersForComponents[inst]=cont;
185#ifdef REFCNT
186 std::map<const ComponentInstance *, Engines::Container_var >::const_iterator it;
187 for(it = _containersForComponents.begin(); it != _containersForComponents.end(); ++it)
188 {
189 DEBTRACE(it->second->_PR_getobj()->pd_refCount );
190 }
191#endif
192 }
193}
#define DEBTRACE(msg)
Definition: YacsTrace.hxx:31

References _containersForComponents, _containersForTasks, _data_mutex, DEBTRACE, YACS::ENGINE::Task::getComponent(), and YACS::ENGINE::Task::hasImposedResource().

◆ shutdown()

void SalomeContainerMultiHelper::shutdown ( )
virtual

Implements YACS::ENGINE::SalomeContainerHelper.

Definition at line 195 of file SalomeContainerHelper.cxx.

196{
197 std::unique_lock<std::mutex> lock(_data_mutex);
198 for(std::map<const Task *, Engines::Container_var >::const_iterator it = _containersForTasks.begin();
199 it != _containersForTasks.end(); ++it)
200 {
201 try
202 {
203 CORBA::String_var containerName=it->second->name();
204 INFO_MESSAGE("shutdown SALOME container: " << containerName);
205 it->second->Shutdown();
206 }
207 catch(CORBA::Exception&)
208 {
209 ERROR_MESSAGE("Unexpected CORBA failure detected." );
210 }
211 catch(...)
212 {
213 ERROR_MESSAGE("Unknown exception ignored." );
214 }
215 }
216 _containersForTasks.clear();
217
218 for(std::map<const ComponentInstance *, Engines::Container_var >::const_iterator it = _containersForComponents.begin(); it != _containersForComponents.end(); ++it)
219 {
220 try
221 {
222 CORBA::String_var containerName=it->second->name();
223 INFO_MESSAGE("shutdown SALOME container: " << containerName);
224 it->second->Shutdown();
225 std::cerr << "shutdown SALOME container: " << containerName << std::endl;
226 }
227 catch(CORBA::Exception&)
228 {
229 ERROR_MESSAGE("Unexpected CORBA failure detected." );
230 }
231 catch(...)
232 {
233 ERROR_MESSAGE("Unknown exception ignored." );
234 }
235 }
237}

References _containersForComponents, _containersForTasks, and _data_mutex.

Member Data Documentation

◆ _containersForComponents

std::map<const ComponentInstance *,Engines::Container_var> YACS::ENGINE::SalomeContainerMultiHelper::_containersForComponents
private

Definition at line 93 of file SalomeContainerHelper.hxx.

Referenced by getContainer(), isAlreadyStarted(), setContainer(), and shutdown().

◆ _containersForTasks

std::map<const Task *,Engines::Container_var> YACS::ENGINE::SalomeContainerMultiHelper::_containersForTasks
private

Definition at line 94 of file SalomeContainerHelper.hxx.

Referenced by getContainer(), isAlreadyStarted(), setContainer(), and shutdown().

◆ _data_mutex

std::mutex YACS::ENGINE::SalomeContainerMultiHelper::_data_mutex
mutableprivate

Definition at line 95 of file SalomeContainerHelper.hxx.

Referenced by getContainer(), isAlreadyStarted(), setContainer(), and shutdown().

◆ DFT_LAUNCH_MODE

const char SalomeContainerMultiHelper::DFT_LAUNCH_MODE ="getorstart"
static

Definition at line 91 of file SalomeContainerHelper.hxx.

Referenced by getDftLaunchMode().

◆ TYPE_NAME

const char SalomeContainerMultiHelper::TYPE_NAME ="multi"
static

The documentation for this class was generated from the following files: