Salome HOME
Fix missing returns.
[modules/yacs.git] / src / runtime / SalomeContainerHelper.hxx
index 1ae0601eef016c38f3ce18bd5ac74e2635b88c6e..5b633f69714e796ac60024e9ff45bb68f19274f5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2006-2014  CEA/DEN, EDF R&D
+// Copyright (C) 2006-2021  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 #include "SALOMEconfig.h"
 #include CORBA_CLIENT_HEADER(SALOME_Component)
 
+#include "RefCounter.hxx"
+
 #include <map>
 #include <string>
+#include <mutex>
 
 namespace YACS
 {
   namespace ENGINE
   {
+    class Task;
     class ComponentInstance;
 
-    class SalomeContainerHelper
+    class SalomeContainerHelper : public RefCounter
     {
     public:
       virtual std::string getType() const = 0;
+      virtual std::string getDftLaunchMode() const = 0;
       virtual SalomeContainerHelper *deepCpyOnlyStaticInfo() const = 0;
-      virtual Engines::Container_var getContainer(const ComponentInstance *inst) const = 0;
-      virtual bool isAlreadyStarted(const ComponentInstance *inst) const = 0;
-      virtual void setContainer(const ComponentInstance *inst, Engines::Container_var cont) = 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;
+    protected:
       virtual ~SalomeContainerHelper();
     };
 
@@ -51,11 +57,15 @@ namespace YACS
     public:
       SalomeContainerMonoHelper();
       std::string getType() const;
+      std::string getDftLaunchMode() const;
       SalomeContainerMonoHelper *deepCpyOnlyStaticInfo() const;
-      Engines::Container_var getContainer(const ComponentInstance *inst) const;
-      bool isAlreadyStarted(const ComponentInstance *inst) const;
-      void setContainer(const ComponentInstance *inst, Engines::Container_var cont);
+      Engines::Container_var getContainer(const Task *askingNode) const;
+      bool isAlreadyStarted(const Task *askingNode) const;
+      void setContainer(const Task *askingNode, Engines::Container_var cont);
+      bool isKernelContNull() const;
       void shutdown();
+      std::string getKernelContainerName() const;
+    private:
       ~SalomeContainerMonoHelper();
     public:
       static const char TYPE_NAME[];
@@ -68,17 +78,21 @@ namespace YACS
     {
     public:
       std::string getType() const;
+      std::string getDftLaunchMode() const;
       SalomeContainerMultiHelper *deepCpyOnlyStaticInfo() const;
-      Engines::Container_var getContainer(const ComponentInstance *inst) const;
-      bool isAlreadyStarted(const ComponentInstance *inst) const;
-      void setContainer(const ComponentInstance *inst, Engines::Container_var cont);
+      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();
+    private:
       ~SalomeContainerMultiHelper();
     public:
       static const char TYPE_NAME[];
       static const char DFT_LAUNCH_MODE[];
     private:
-      std::map<const ComponentInstance *,Engines::Container_var> _trueContainers;
+      std::map<const ComponentInstance *,Engines::Container_var> _containersForComponents;
+      std::map<const Task *,Engines::Container_var> _containersForTasks;
+      mutable std::mutex _data_mutex;
     };
   }
 }