]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
- Adding CallBack method
authorribes <ribes>
Wed, 26 Sep 2007 09:23:42 +0000 (09:23 +0000)
committerribes <ribes>
Wed, 26 Sep 2007 09:23:42 +0000 (09:23 +0000)
src/Container/Component_i.cxx
src/Container/SALOME_Component_i.hxx
src/Container/Salome_file_i.cxx
src/ParallelContainer/SALOME_ParallelComponent_i.cxx
src/ParallelContainer/SALOME_ParallelComponent_i.hxx
src/ParallelContainer/SALOME_ParallelContainer_i.cxx

index 2e48756111fc0b07473a154453574a2acbe8935c..08b3e46e84faae163a5d8139264b0922037aec97 100644 (file)
@@ -611,7 +611,8 @@ void Engines_Component_i::beginService(const char *serviceName)
          (*it).second >>= value;
          // ---todo: replace __GNUC__ test by an autoconf macro AC_CHECK_FUNC.
 #if defined __GNUC__
-         int ret = setenv(cle.c_str(), value, overwrite);
+//       int ret = setenv(cle.c_str(), value, overwrite);
+         setenv(cle.c_str(), value, overwrite);
 #else
          //CCRT porting : setenv not defined in stdlib.h
          std::string s(cle);
@@ -619,7 +620,8 @@ void Engines_Component_i::beginService(const char *serviceName)
          s+=value;
          // char* cast because 1st arg of linux putenv function
          // is not a const char* !
-         int ret=putenv((char *)s.c_str());
+//       int ret=putenv((char *)s.c_str());
+         putenv((char *)s.c_str());
          //End of CCRT porting
 #endif
          MESSAGE("--- setenv: "<<cle<<" = "<< value);
@@ -824,7 +826,7 @@ Engines::TMPFile* Engines_Component_i::DumpPython(CORBA::Object_ptr theStudy,
                                                  CORBA::Boolean isPublished, 
                                                  CORBA::Boolean& isValidScript)
 {
-  char* aScript = "def RebuildData(theStudy): pass";
+  const char* aScript = "def RebuildData(theStudy): pass";
   char* aBuffer = new char[strlen(aScript)+1];
   strcpy(aBuffer, aScript);
   CORBA::Octet* anOctetBuf =  (CORBA::Octet*)aBuffer;
@@ -898,6 +900,8 @@ Engines_Component_i::checkInputFilesToService(const char* service_name)
 
     for(;begin!=end;begin++) {
       Salome_file_i * file = begin->second;
+      std::string file_port_name = begin->first;
+      configureSalome_file(service_name, file_port_name, file);
       file->recvFiles();
     }
   }
@@ -967,9 +971,27 @@ Engines_Component_i::checkOutputFilesToService(const char* service_name)
 
     for(;begin!=end;begin++) {
       Salome_file_i * file = begin->second;
+      std::string file_port_name = begin->first;
+      configureSalome_file(service_name, file_port_name, file);
       file->recvFiles();
     }
   }
 
 }
 
+//=============================================================================
+/*! 
+ *  C++ method: used to configure the Salome_file into the runtime.
+ *  \param service_name name of the service that use this Salome_file
+ *  \param file_port_name name of the Salome_file
+ *  \param file Salome_file C++ object
+ */
+//=============================================================================
+void
+Engines_Component_i::configureSalome_file(std::string service_name,
+                                         std::string file_port_name,
+                                         Salome_file_i * file) 
+{
+  // By default this method does nothing
+}
+
index c18d3d24539a116b64264a3b3c31b6d07cd13cb6..de8a42e0ee3116b6d9c5245114cbe77acec595c1 100644 (file)
@@ -129,6 +129,11 @@ public:
   long CpuUsed() ;
   void CancelThread() ;
 
+  virtual void configureSalome_file(std::string service_name,
+                                   std::string file_port_name,
+                                   Salome_file_i * file);
+
+
 protected:
   int _studyId; // -1: not initialised; 0: multiStudy; >0: study
   static bool _isMultiStudy;
index 720c6203183ee8493f533bd498ad0426be016a88..67de702063d6e6763231485d5d369db943fa1260 100644 (file)
@@ -710,10 +710,12 @@ Salome_file_i::recvFiles() {
 
   if (files_not_ok != "")
   {
+    std::cerr << "tutu" << std::endl;
     SALOME::ExceptionStruct es;
     es.type = SALOME::INTERNAL_ERROR;
     std::string text = "files not ready : " + files_not_ok;
     es.text = CORBA::string_dup(text.c_str());
+    std::cerr << "titi" << std::endl;
     throw SALOME::SALOME_Exception(es);
   }
   else
index 94642389004561f79bd92db26510b2b848cf2ee1..870c4dd921192038194af1a2ac6de9a7a3163839 100644 (file)
@@ -1050,6 +1050,8 @@ Engines_Parallel_Component_i::checkInputFilesToService(const char* service_name)
 
     for(;begin!=end;begin++) {
       Engines::Parallel_Salome_file_proxy_impl * file = begin->second;
+      std::string file_port_name = begin->first;
+      configureSalome_file(service_name, file_port_name, file);
       file->recvFiles();
     }
   }
@@ -1067,17 +1069,29 @@ Engines_Parallel_Component_i::checkOutputFilesToService(const char* service_name
 
     for(;begin!=end;begin++) {
       Engines::Parallel_Salome_file_proxy_impl * file = begin->second;
+      std::string file_port_name = begin->first;
+      configureSalome_file(service_name, file_port_name, file);
       file->recvFiles();
     }
   }
 
 }
 
+//=============================================================================
+/*! 
+ *  C++ method: Used by the Parallel Component to deploy a Parallel Salome_file
+ */ 
+//=============================================================================
 void 
 Engines_Parallel_Component_i::send_parallel_proxy_object(CORBA::Object_ptr proxy_ref) {
   _proxy = _orb->object_to_string(proxy_ref);
 }
 
+//=============================================================================
+/*! 
+ *  C++ method: Used by the Parallel Component to deploy a Parallel Salome_file
+ */ 
+//=============================================================================
 void 
 Engines_Parallel_Component_i::wait_parallel_object_proxy() {
   char * proxy = NULL;
@@ -1089,7 +1103,30 @@ Engines_Parallel_Component_i::wait_parallel_object_proxy() {
   }
 }
 
+//=============================================================================
+/*! 
+ *  C++ method: Used by the Parallel Component to deploy a Parallel Salome_file
+ */ 
+//=============================================================================
 char * 
 Engines_Parallel_Component_i::get_parallel_proxy_object() {
   return _proxy;
 }
+
+
+//=============================================================================
+/*! 
+ *  C++ method: used to configure the Salome_file into the runtime.
+ *  \param service_name name of the service that use this Salome_file
+ *  \param file_port_name name of the Salome_file
+ *  \param file Parallel Salome_file C++ object
+ */
+//=============================================================================
+void
+Engines_Parallel_Component_i::configureSalome_file(std::string service_name,
+                                                  std::string file_port_name,
+                                                  Engines::Parallel_Salome_file_proxy_impl * file) 
+{
+  // By default this method does nothing
+}
+
index cad498524d8ce68509fab891622e1890faabdf10..afebfc896d42f90e1591ea5a8ea627ecc728ec4c 100644 (file)
@@ -137,6 +137,10 @@ public:
   void wait_parallel_object_proxy();
   char * get_parallel_proxy_object();
 
+  virtual void configureSalome_file(std::string service_name,
+                                   std::string file_port_name,
+                                   Engines::Parallel_Salome_file_proxy_impl * file);
+
 protected:
   int _studyId; // -1: not initialised; 0: multiStudy; >0: study
   static bool _isMultiStudy;
index b1063f3697a3f07ed72d4d01816e59e29a01fde7..9fbf89e85cf3f768cb21c205de34a90e45fc96ad 100644 (file)
@@ -704,7 +704,7 @@ Engines_Parallel_Container_i::createParallelInstance(string genericRegisterName,
     // in the nameing service.
     _numInstanceMutex.lock() ; // lock on the instance number
     _numInstance++ ;
-    int numInstance = _numInstance ;
+//    int numInstance = _numInstance ;
     _numInstanceMutex.unlock() ;
   }
   cerr << "Node " << getMyRank() << " entering in paco_barrier()" << endl;