Salome HOME
merge from branch BR_V5_DEV
[modules/yacs.git] / src / Registry / SALOME_Registry_Server.cxx
index d47523a9328a64e2618b2479a02513bf5119e641..766e379db869fa58c7d8e023ff14feb771c1ac9b 100644 (file)
@@ -1,34 +1,33 @@
-//  SALOME Registry : Registry server implementation
+//  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+//  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 //
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  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. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//  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.
 //
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
 //
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
+//  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//  SALOME Registry : Registry server implementation
 //  File   : SALOME_Registry_Server.cxx
 //  Author : Pascale NOYRET - Antoine YESSAYAN, EDF
 //  Module : SALOME
 //  $Header$
-
+//
 #include <stdlib.h>
-#include <iostream.h>
-#include <fstream.h>
+#include <iostream>
+#include <fstream>
 
 extern "C"
 {
@@ -36,7 +35,6 @@ extern "C"
 }
 
 #include "utilities.h"
-#include "SALOMETraceCollector.hxx"
 #include "Utils_ORB_INIT.hxx"
 #include "Utils_SINGLETON.hxx"
 #include "Utils_SALOME_Exception.hxx"
@@ -54,7 +52,7 @@ int main( int argc , char **argv )
 {
   ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
   CORBA::ORB_var &orb = init( argc , argv ) ;
-  SALOMETraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
+  //  LocalTraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
   BEGIN_OF( argv[0] )
     INFOS_COMPILATION 
     SCRUTE(argc) 
@@ -105,7 +103,11 @@ int main( int argc , char **argv )
   for (int i = 1; i<=NumberOfTries; i++)
     {
       if (i!=1) 
+#ifndef WIN32
        a=nanosleep(&ts_req,&ts_rem);
+#else
+    Sleep(TIMESleep/1000000);
+#endif
       try
        { 
          obj = orb->resolve_initial_references("RootPOA");
@@ -118,9 +120,9 @@ int main( int argc , char **argv )
          if (!CORBA::is_nil(theObj))
            inc = CosNaming::NamingContext::_narrow(theObj);
        }
-      catch( CORBA::COMM_FAILURE& )
+      catch( CORBA::SystemException& )
        {
-         MESSAGE( "Registry Server: CORBA::COMM_FAILURE: Unable to contact the Naming Service" );
+         MESSAGE( "Registry Server: CORBA::SystemException: Unable to contact the Naming Service" );
        }
       if(!CORBA::is_nil(inc))
        {
@@ -130,7 +132,11 @@ int main( int argc , char **argv )
              for(int j=1; j<=NumberOfTries; j++)
                {
                  if (j!=1) 
+#ifndef WIN32
                    a=nanosleep(&ts_req, &ts_rem);
+#else
+                       Sleep(TIMESleep/1000000);
+#endif
                  try
                    {
                      object = inc->resolve(name);
@@ -161,7 +167,9 @@ int main( int argc , char **argv )
       naming.init_orb( orb ) ;
       RegistryService *ptrRegistry = SINGLETON_<RegistryService>::Instance() ;
       ptrRegistry->SessionName( ptrSessionName ) ;
+      ptrRegistry->SetOrb(orb);
       varComponents = ptrRegistry->_this() ;
+      ptrRegistry->_remove_ref(); //let poa manage registryservice deletion
       // The RegistryService must not already exist.
            
       try
@@ -179,15 +187,15 @@ int main( int argc , char **argv )
        }
       string absoluteName = string("/") + registryName;
       naming.Register( varComponents , absoluteName.c_str() ) ;
-      MESSAGE("On attend les requetes des clients") ;
+      MESSAGE("Wait client requests") ;
       try
        {
          // Activation du POA
-         MESSAGE("Activation du POA") ;
+         MESSAGE("POA activation") ;
          manager->activate() ;
                
          // Lancement de l'ORB
-         MESSAGE("Lancement de l'ORB") ;
+         MESSAGE("ORB launching") ;
 #ifdef CHECKTIME
          Utils_Timer timer;
          timer.Start();
@@ -199,7 +207,7 @@ int main( int argc , char **argv )
        }
       catch( const CORBA::Exception &ex )
        {
-         MESSAGE("Erreur systeme") ;
+         MESSAGE("System error") ;
          return EXIT_FAILURE ;
        }
            
@@ -211,6 +219,6 @@ int main( int argc , char **argv )
     }
        
   END_OF( argv[0] ) ;
-  delete myThreadTrace;
+  //  delete myThreadTrace;
   return 0 ;
 }