Salome HOME
Fix compilation errors using gcc-5.X relating to explicit stream::operator bool()
[modules/smesh.git] / src / Tools / padder / meshjob / impl / MeshJobManager_i.cxx
index 76c71870eb64e1e853c46dea32b8606c7886e8de..accf0ccb704294f8f330447acef990e3ca8cff8e 100644 (file)
@@ -1,9 +1,9 @@
-// Copyright (C) 2011-2012  EDF R&D
+// Copyright (C) 2011-2015  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
 // License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
 //
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
 // Authors : Guillaume Boulant (EDF) - 01/03/2011
 
 #ifdef WIN32
@@ -123,7 +124,7 @@ MeshJobManager_i::~MeshJobManager_i() {
 // ====================================================================
 //
 #include <fstream>     // to get the file streams
-#ifdef WNT             
+#ifdef WIN32
 #include <stdlib.h>    // to get _splitpath
 #include <direct.h>    // to get _mkdir
 #else
@@ -139,7 +140,12 @@ static std::string DATAFILE("data.txt");
 static std::string SCRIPTFILE("padder.sh");
 static std::string SEPARATOR(" ");
 
+#ifdef WIN32
+static std::string USER(getenv("USERNAME"));
+#else
 static std::string USER(getenv("USER"));
+#endif
+
 static std::string LOCAL_INPUTDIR("/tmp/spadder.local.inputdir."+USER);
 static std::string LOCAL_RESULTDIR("/tmp/spadder.local.resultdir."+USER);
 static std::string REMOTE_WORKDIR("/tmp/spadder.remote.workdir."+USER);
@@ -409,7 +415,7 @@ CORBA::Long MeshJobManager_i::initialize(const MESHJOB::MeshJobParameterList & m
   jobParameters->out_files[0] = CORBA::string_dup(outputfile_name.c_str());
 
   // CAUTION: the maximum duration has to be set with a format like "hh:mm"
-  jobParameters->maximum_duration = CORBA::string_dup("01:00");
+  //jobParameters->maximum_duration = CORBA::string_dup("01:00");
   jobParameters->queue = CORBA::string_dup("");
 
   // Setting resource and additionnal properties (if needed)
@@ -569,18 +575,28 @@ MESHJOB::MeshJobResults * MeshJobManager_i::finalize(CORBA::Long jobId) {
     rename((local_resultdir+"/"+OUTPUTFILE).c_str(), (local_resultdir+"/"+outputFileName).c_str());
 
     result->outputmesh_filename = outputFileName.c_str();
-    result->status = "OK";
+    
+    if ( fexists( (local_resultdir+"/"+outputFileName).c_str()  ) != true ) {
+      _lastErrorMessage = std::string("The result file ")+
+        std::string((local_resultdir+"/"+outputFileName).c_str())+
+        std::string(" has not been created.");
+      result->status = false;
+    }
+    else {
+      result->status = true;
+    }
  }
   catch (const SALOME::SALOME_Exception & ex)
   {
-    LOG("SALOME Exception in getResults !");
-    result->status = "SALOME Exception in getResults !";
     _lastErrorMessage = ex.details.text.in();
+    LOG(_lastErrorMessage);
+    result->status = false;
   }
   catch (const CORBA::SystemException& ex)
   {
-    LOG("Receive CORBA System Exception: " << ex);
-    result->status = "Receive CORBA System Exception: see log";
+    _lastErrorMessage = "The SALOME launcher can not retrieve the result data";
+    LOG(_lastErrorMessage);
+    result->status = false;
   }
   endService("MeshJobManager_i::getResults");
   return result;
@@ -640,7 +656,7 @@ std::vector<std::string> * MeshJobManager_i::_getResourceNames() {
   LOG("### resource list:");
   std::vector<std::string>* resourceNames = new std::vector<std::string>();
   if (resourceList) {
-    for (int i = 0; i < resourceList->length(); i++) {
+    for ( size_t i = 0; i < resourceList->length(); i++) {
       const char* aResourceName = (*resourceList)[i];
       resourceNames->push_back(std::string(aResourceName));
       LOG("resource["<<i<<"] = "<<aResourceName);
@@ -674,6 +690,7 @@ char* MeshJobManager_i::getLastErrorMessage() {
 //
 extern "C"
 {
+  MESHJOBMANAGERENGINE_EXPORT
   PortableServer::ObjectId * MeshJobManagerEngine_factory( CORBA::ORB_ptr orb,
                                                            PortableServer::POA_ptr poa,
                                                            PortableServer::ObjectId * contId,