A class to manage the SALOME naming service. More...
Public Member Functions | |
SALOME_NamingService () | |
Default Constructor without ORB reference. More... | |
SALOME_NamingService (CORBA::ORB_ptr orb) | |
Standard Constructor, with ORB reference. More... | |
virtual | ~SALOME_NamingService () |
Standard destructor. More... | |
void | init_orb (CORBA::ORB_ptr orb=0) |
initializes ORB reference and naming service root context. More... | |
void | Register (CORBA::Object_ptr ObjRef, const char *Path) throw (ServiceUnreachable) |
Registers a CORBA object reference under a path. More... | |
CORBA::Object_ptr | Resolve (const char *Path) throw ( ServiceUnreachable) |
get the CORBA object reference associated to a name. More... | |
CORBA::Object_ptr | ResolveFirst (const char *Path) throw ( ServiceUnreachable) |
get the CORBA object reference associated to an uncomplete name. More... | |
CORBA::Object_ptr | ResolveComponent (const char *hostname, const char *containerName, const char *componentName, const int nbproc=0) throw (ServiceUnreachable) |
find a component instance from hostname, containername, componentName and number of processors. More... | |
std::string | ContainerName (const char *ContainerName) |
provide a default container name if empty. More... | |
std::string | ContainerName (const Engines::ContainerParameters ¶ms) |
build a container name, given a ContainerParameters struct. More... | |
std::string | BuildContainerNameForNS (const char *ContainerName, const char *hostname) |
build a string representing a container in Naming Service. More... | |
std::string | BuildContainerNameForNS (const Engines::ContainerParameters ¶ms, const char *hostname) |
build a string representing a container in Naming Service. More... | |
int | Find (const char *name) throw (ServiceUnreachable) |
search a name in current directory. More... | |
bool | Create_Directory (const char *Path) throw (ServiceUnreachable) |
Creates a directory (context_name) More... | |
bool | Change_Directory (const char *Path) throw (ServiceUnreachable) |
change current directory to the given path More... | |
char * | Current_Directory () throw (ServiceUnreachable) |
get the current directory path More... | |
void | list () throw (ServiceUnreachable) |
list recursively all objects in the current context More... | |
std::vector< std::string > | list_directory () throw (ServiceUnreachable) |
list all the objects in the current directory. More... | |
std::vector< std::string > | list_subdirs () throw (ServiceUnreachable) |
list all the subdirectories in the current directory. More... | |
std::vector< std::string > | list_directory_recurs () throw (ServiceUnreachable) |
list all the objects in the current directory and subdirectories. More... | |
void | Destroy_Name (const char *Path) throw (ServiceUnreachable) |
destroy an entry in naming service. More... | |
virtual void | Destroy_Directory (const char *Path) throw (ServiceUnreachable) |
Destroy an empty directory. More... | |
virtual void | Destroy_FullDirectory (const char *Path) throw (ServiceUnreachable) |
Destroy a directory with its contents. More... | |
char * | getIORaddr () |
return a stringified reference of root context More... | |
CORBA::ORB_ptr | orb () |
get the orb used by the naming service More... | |
Protected Member Functions | |
void | _initialize_root_context () |
initialize root context (root directory) More... | |
int | _createContextNameDir (std::string path, CosNaming::Name &context_name, std::vector< std::string > &splitPath, bool onlyDir) |
transform a string path in CosNaming structure. More... | |
void | _Find (const char *name, CORBA::Long &occurence_number) |
search a name in current directory. More... | |
void | _current_directory (std::vector< std::string > &splitPath, int &lengthResult, CosNaming::NamingContext_var contextToFind, bool ¬Found) |
find the current directory path. More... | |
void | _list_directory_recurs (std::vector< std::string > &myList, std::string relativeSubDir, std::string absCurDirectory) |
list recursively all objects in the given directory and subdirs. More... | |
Protected Attributes | |
Utils_Mutex | _myMutex |
CORBA::ORB_var | _orb |
CosNaming::NamingContext_var | _root_context |
CosNaming::NamingContext_var | _current_context |
SALOME_NamingService::SALOME_NamingService | ( | ) |
Default Constructor without ORB reference.
After Default Constructor, one needs to initialize ORB.
SALOME_NamingService::SALOME_NamingService | ( | CORBA::ORB_ptr | orb | ) |
Standard Constructor, with ORB reference.
Initializes the naming service root context
orb | CORBA::ORB_ptr arguments |
|
virtual |
Standard destructor.
The standard destructor does nothing special.
void SALOME_NamingService::init_orb | ( | CORBA::ORB_ptr | orb = 0 | ) |
initializes ORB reference and naming service root context.
Initializes ORB reference and naming service root context. For use after default constructor. If param orb is null, the orb is initialized
orb | CORBA::ORB_ptr arguments |
void SALOME_NamingService::Register | ( | CORBA::Object_ptr | ObjRef, |
const char * | Path | ||
) | throw (ServiceUnreachable) |
Registers a CORBA object reference under a path.
Registers a CORBA object reference under a path. If the path ends with '/', only a directory is created. If the NamingService is out, the exception ServiceUnreachable is thrown.
ObjRef | CORBA object reference to associate to the path. To create only a directory, give nil pointer. |
Path | A relative or absolute pathname to store the object reference. If the pathname begins with a '/', pathname is taken as an absolute pathname. Else, pathname is taken as a relative path, to current context. Prefer absolute pathname, relative pathname are not safe, when SALOME_NamingService object is shared or use in multithreaded context. If the path ends with '/', only a directory is created. |
CORBA::Object_ptr SALOME_NamingService::Resolve | ( | const char * | Path | ) | throw ( ServiceUnreachable) |
get the CORBA object reference associated to a name.
get the CORBA object reference associated to a complete name with a path. If the NamingService is out, the exception ServiceUnreachable is thrown
Path | pathname. If the pathname begins with a '/', pathname is taken as an absolute pathname. Else, pathname is taken as a relative path, to current context. Prefer absolute pathname, relative pathname are not safe, when SALOME_NamingService object is shared or use in multithreaded context. |
CORBA::Object_ptr SALOME_NamingService::ResolveFirst | ( | const char * | Path | ) | throw ( ServiceUnreachable) |
get the CORBA object reference associated to an uncomplete name.
get the CORBA object reference associated to an uncomplete name with a path. Look for the first occurence of name*. If the NamingService is out, the exception ServiceUnreachable is thrown
Path | pathname under the form "/path/name" (Absolute reference !) search the fist reference like "/path(.dir)/name*(.kind)" |
CORBA::Object_ptr SALOME_NamingService::ResolveComponent | ( | const char * | hostname, |
const char * | containerName, | ||
const char * | componentName, | ||
const int | nbproc = 0 |
||
) | throw (ServiceUnreachable) |
find a component instance from hostname, containername, componentName and number of processors.
find a component instance from hostname, containername, componentName and number of processors. If the NamingService is out, the exception ServiceUnreachable is thrown.
hostname | name of the machine on which the component is searched. |
containerName | name of the container in which the component is instanciated. |
componentName | name of the component we are looking for an existing instance. |
nbproc | in case of multi processor machine, container name is suffixed with _nbproc. |
std::string SALOME_NamingService::ContainerName | ( | const char * | containerName | ) |
provide a default container name if empty.
the given container name is returned unchanged, unless it is empty.
containerName |
std::string SALOME_NamingService::ContainerName | ( | const Engines::ContainerParameters & | params | ) |
build a container name, given a ContainerParameters struct.
Build a container name with a ContainerParameters struct. In case of multi processor machine, container name is suffixed with number of processors.
params | struct from which we get container name (may be empty) and number of processors. |
std::string SALOME_NamingService::BuildContainerNameForNS | ( | const char * | containerName, |
const char * | hostname | ||
) |
build a string representing a container in Naming Service.
Build a string representing the absolute pathname of a container in SALOME_NamingService. This form gives a suffixed containerName in case of multi processor machine.
containerName | name of the container in which the component is instanciated. |
hostname | name of the host of the container, without domain names. |
std::string SALOME_NamingService::BuildContainerNameForNS | ( | const Engines::ContainerParameters & | params, |
const char * | hostname | ||
) |
build a string representing a container in Naming Service.
Build a string representing the absolute pathname of a container in SALOME_NamingService.
params | used as it is, or replaced by FactoryServer if empty. |
hostname | name of the host of the container, without domain names. |
int SALOME_NamingService::Find | ( | const char * | name | ) | throw (ServiceUnreachable) |
search a name in current directory.
Search a name in the current directory. after call, the current directory is changed to the directory containing the last occurence of name found. If no occurence found (see return value), current directory remains unchanged.
name | the name to search. |
bool SALOME_NamingService::Create_Directory | ( | const char * | Path | ) | throw (ServiceUnreachable) |
Creates a directory (context_name)
Creates a directory (context_name) relative to the current directory (current context) or relative to the root directory (root context), if the path given begins with a '/'. If the NamingService is out, the exception ServiceUnreachable is thrown.
Path | A relative or absolute pathname to store the object reference. If the pathname begins with a '/', pathname is taken as an absolute pathname. Else, pathname is taken as a relative path, to current context. Prefer absolute pathname, relative pathname are not safe, when SALOME_NamingService object is shared or use in multithreaded context. |
bool SALOME_NamingService::Change_Directory | ( | const char * | Path | ) | throw (ServiceUnreachable) |
change current directory to the given path
change the current directory to the given path in parameter. Warning: avoid use when the SALOME_NamingService instance is shared by several threads (current context may be modified by another thread). If the path is empty, nothing done return OK. If Path ="/", the current directory changes to the root directory. If the NamingService is out, the exception ServiceUnreachable is thrown.
Path | the new current directory |
char * SALOME_NamingService::Current_Directory | ( | ) | throw (ServiceUnreachable) |
get the current directory path
Get the current directory path. If the NamingService is out, the exception ServiceUnreachable is thrown.
void SALOME_NamingService::list | ( | ) | throw (ServiceUnreachable) |
list recursively all objects in the current context
List and print via trace all directories and objects in the current context. Trace must be activated: compile option DEBUG If the NamingService is out, the exception ServiceUnreachable is thrown
std::vector< std::string > SALOME_NamingService::list_directory | ( | ) | throw (ServiceUnreachable) |
list all the objects in the current directory.
get a list of all the objects in the current directory, without recursion on the subdirectories. Only the objects are listed, not the directories. If the NamingService is out, the exception ServiceUnreachable is thrown.
std::vector< std::string > SALOME_NamingService::list_subdirs | ( | ) | throw (ServiceUnreachable) |
list all the subdirectories in the current directory.
get a list of all the subdirectories in the current directory, without recursion on the subdirectories. Only the subdirectories are listed, not the objects. If the NamingService is out, the exception ServiceUnreachable is thrown.
std::vector< std::string > SALOME_NamingService::list_directory_recurs | ( | ) | throw (ServiceUnreachable) |
list all the objects in the current directory and subdirectories.
get a list of all the objects in the current directory, with recursion on the subdirectories. Only the objects are listed, not the directories. If the NamingService is out, the exception ServiceUnreachable is thrown.
void SALOME_NamingService::Destroy_Name | ( | const char * | Path | ) | throw (ServiceUnreachable) |
destroy an entry in naming service.
Destroy an association Path - Object Reference. If the NamingService is out, the exception ServiceUnreachable is thrown
Path | object path |
|
virtual |
Destroy an empty directory.
Destroy an empty directory in Naming Service. If the NamingService is out, the exception ServiceUnreachable is thrown.
Path | directory path |
|
virtual |
Destroy a directory with its contents.
Destroy the objects associations in a directory, and the directory itself, if there is no subdirectories. If the NamingService is out, the exception ServiceUnreachable is thrown.
Path | the directory path. |
char * SALOME_NamingService::getIORaddr | ( | ) |
return a stringified reference of root context
CORBA::ORB_ptr SALOME_NamingService::orb | ( | ) |
get the orb used by the naming service
|
protected |
initialize root context (root directory)
the root context initialisation must be done when the SALOME_NamingService instance is created and before any othe call. See constructors.
|
protected |
transform a string path in CosNaming structure.
Transform a path given as a string in a CosNaming structure.
path | a relative or absolute path, with or without an object. An absolute path begins with '/'. A path without an object ends with '/'. |
context_name | CosNaming structure to put the path. |
splitPath | a vector of string with subdirectories and final object, if any. |
onlyDir | if true, final object (if any) is ommited in context_name. if false, final object (if any) is included in context_name. |
|
protected |
search a name in current directory.
Search a name in the current directory. after call, the current directory is changed to the directory containing the last occurence of name found. If no occurence found (see return value), current directory remains unchanged. The call is recursive.
name | the name to search. |
occurence_number | number of occurence already found (incremented) |
|
protected |
find the current directory path.
Parse the naming service tree to find the current context and give the associated directory path (relative to root context).
splitPath | |
lengthResult | |
contextToFind | |
notFound |
|
protected |
list recursively all objects in the given directory and subdirs.
get a list of all the objects in the current directory, with recursion on the subdirectories. Only the objects are listed, not the directories. If the NamingService is out, the exception ServiceUnreachable is thrown. _current_context must refer to absCurDirectory.
myList | The list that will be filled. |
relativeSubDir | The directory relative to absCurDirectory in which the objects are found. |
absCurDirectory | The current directory, absolute path |