X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FNamingService%2FSALOME_NamingService.hxx;h=fd9d3607c3a8c4a47153258f94657801bbb5c564;hb=8469d4f02c5b4379665d4ec1b07709d3c8411114;hp=e22bf2d169a65f3fb79bbcb8e64e63b6d188ea5f;hpb=611c96f1b845f602ce9dbdc154c6fe4425937b9b;p=modules%2Fkernel.git diff --git a/src/NamingService/SALOME_NamingService.hxx b/src/NamingService/SALOME_NamingService.hxx index e22bf2d16..fd9d3607c 100644 --- a/src/NamingService/SALOME_NamingService.hxx +++ b/src/NamingService/SALOME_NamingService.hxx @@ -1,126 +1,102 @@ -// SALOME NamingService : wrapping NamingService services +// Copyright (C) 2007-2023 CEA, EDF, OPEN CASCADE +// +// Copyright (C) 2003-2007 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, or (at your option) any later version. // -// 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 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 NamingService : wrapping NamingService services // File : SALOME_NamingService.hxx // Author : Estelle Deville // Module : SALOME // $Header$ - +// #ifndef SALOME_NAMINGSERVICE_H #define SALOME_NAMINGSERVICE_H -#include "utilities.h" -//#include -#include +#include +#include CORBA_CLIENT_HEADER(SALOME_ContainerManager) +#include CORBA_CLIENT_HEADER(SALOME_Component) + #include #include - -//class ServiceUnreachable; +#include "Utils_Mutex.hxx" #include "ServiceUnreachable.hxx" -class SALOME_NamingService +#include "SALOME_NamingService_Abstract.hxx" + +#ifdef WIN32 +//#pragma warning(disable:4290) // Warning Exception ... +#endif + +class NAMINGSERVICE_EXPORT SALOME_NamingService : public SALOME_NamingService_Abstract { public: - //! default constructor SALOME_NamingService(); - - //! standard constructor SALOME_NamingService(CORBA::ORB_ptr orb); - //! standard destructor virtual ~SALOME_NamingService(); - - //! initialize ORB reference after default constructor - void init_orb(CORBA::ORB_ptr orb); - - //! method to create an association in the NamingService between an object reference and a path - void Register(CORBA::Object_ptr ObjRef, const char* Path) - throw(ServiceUnreachable); - - //! method to get the ObjRef of a symbolic name - CORBA::Object_ptr Resolve(const char* Path) - throw( ServiceUnreachable); - - //! method to research a name from the naming service's current directory - int Find(const char* name) - throw(ServiceUnreachable); - - //! method to create a directory from the current directory - bool Create_Directory(const char* Path) - throw(ServiceUnreachable); - - //! method to change the current directory to the directory Path indicated in "in" Parameter - bool Change_Directory(const char* Path) - throw(ServiceUnreachable); - - //!method to get the current directory - char* Current_Directory() - throw(ServiceUnreachable); - - //!method to print all the contexts contained from the current directory - void list() - throw(ServiceUnreachable); - - //!method to get all the contexts contained in the current direcotry - // Get only objects, isn't iterative - vector list_directory() - throw(ServiceUnreachable); - - //! method to destroy an association Path-Object Reference - void Destroy_Name(const char* Path) - throw(ServiceUnreachable); - - //! method to destroy a directory if it is empty - virtual void Destroy_Directory(const char* Path) - throw(ServiceUnreachable); + bool IsTrueNS() const override { return true; } + std::vector< std::string > repr() override; + void init_orb(CORBA::ORB_ptr orb=0) override; + void Register(CORBA::Object_ptr ObjRef, const char* Path) override; + CORBA::Object_ptr Resolve(const char* Path) override; + CORBA::Object_ptr ResolveFirst(const char* Path) ; + CORBA::Object_ptr ResolveComponent(const char* hostname, + const char* containerName, + const char* componentName, + const int nbproc=0) override; + + int Find(const char* name) ; + bool Create_Directory(const char* Path) ; + bool Change_Directory(const char* Path) override; + char* Current_Directory() ; + void list() ; + std::vector list_directory() override; + std::vector list_subdirs() override; + std::vector list_directory_recurs() override ; + void Destroy_Name(const char* Path) override; + void Destroy_Directory(const char* Path) override; + void Destroy_FullDirectory(const char* Path) override; + char *getIORaddr(); + CORBA::ORB_ptr orb(); + SALOME_NamingService_Abstract *clone() override; protected: - CORBA::ORB_ptr _orb; + Utils_Mutex _myMutex; + CORBA::ORB_var _orb; CosNaming::NamingContext_var _root_context, _current_context; - //! method called by constructor to initialize _root_context void _initialize_root_context(); - - //! method to decompose a Path : /Kernel/Services/Sessions - char* _resolve_Path(char* Path); - - //! method to decompose a Path : /Kernel/Services/Sessions - void _result_resolve_Path(const char* Path, int& j, - char ** resultat_resolve_Path); - - //! internal method called by Find to research a name from the naming service's current directory + int _createContextNameDir(std::string path, + CosNaming::Name& context_name, + std::vector& splitPath, + bool onlyDir); void _Find(const char* name, CORBA::Long& occurence_number); + void _current_directory(std::vector& splitPath, + int& lengthResult, + CosNaming::NamingContext_var contextToFind, + bool& notFound); + void _list_directory_recurs(std::vector& myList, + std::string relativeSubDir, + std::string absCurDirectory); - //! internal method to create a context name from a Path - void _create_context_name_dir(char** resultat_resolve_Path, - int length_copy, - CosNaming::Name& _context_name); - - //! internal method to create a parse the naming service tree - void _current_directory(char** result_path, - int& length_result, - CosNaming::NamingContext_var context_to_found, - CORBA::Boolean& _continue); }; #endif // SALOME_NAMINGSERVICE_H +