diff options
Diffstat (limited to 'TAO/tao/PortableServer/ImplRepo.pidl')
-rw-r--r-- | TAO/tao/PortableServer/ImplRepo.pidl | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/TAO/tao/PortableServer/ImplRepo.pidl b/TAO/tao/PortableServer/ImplRepo.pidl new file mode 100644 index 00000000000..bfddb6e09b7 --- /dev/null +++ b/TAO/tao/PortableServer/ImplRepo.pidl @@ -0,0 +1,184 @@ +// $Id$ + +module ImplementationRepository +{ + interface ServerObject + // = TITLE + // Server Side IR Object + // + // = DESCRIPTION + // This object, which exists on the servers that use the + // Implementation Repository (IR), is used to control or check the + // status of the server by the IR. + { + void ping (); + // Check the liveness of a server. + + void shutdown (); + // Try to shutdown the server gracefully. + }; + + struct EnvironmentVariable + // One environment variable/value pair. + { + string name; + string value; + }; + + typedef string Address; + // Specifies the location of the server. + + typedef sequence<EnvironmentVariable> EnvironmentList; + // Complete Environment. + + enum ActivationMode {NORMAL, MANUAL, PER_CLIENT, AUTO_START}; + // The type of Activation + + struct StartupOptions + // Options used to start up the server. + { + string command_line; + // Startup command (program name and arguments). + + EnvironmentList environment; + // Environment Variables. + + string working_directory; + // Working directory. + + ActivationMode activation; + // Activation Mode + }; + + struct ServerInformation + // All the information about one server. + { + string logical_server; + // The logical server this server is part of. + + string server; + // Server name. + + StartupOptions startup; + // How to start up the server. + + Address location; + // Where the server is located currently. + }; + + typedef sequence <ServerInformation> ServerInformationList; + + interface ServerInformationIterator; + // Forward declaration. + + interface Administration + // = TITLE + // The Implementation Repository Administration Interface + // + // = DESCRIPTION + // This interface exports all the administration functionality of + // the Implementation Repository. + { + // = Exceptions + + exception AlreadyRegistered {}; + // Object already bound in the Implementation Repository + + exception CannotActivate + { + string reason; + }; + // The server could not be restarted. + + exception NotFound {}; + // Object not found in the Implementation Repository + + void activate_server (in string server) + raises (NotFound, + CannotActivate); + // Activate server that is named <server>. + // + // The <NotFound> exception is raised when <server> is not found + // in the Implementation Repository. The <CannotActivate> exception + // is raised when <server> is found in the Repository but could not be + // activated. + + void register_server (in string server, + in StartupOptions options) + raises (AlreadyRegistered); + // Register the <options> to specify how the <server> should be + // restarted when a client asks for it. + // + // The <AlreadyRegistered> exception is raised when <server> has + // already been registered with the Implementation Repository. + + void reregister_server (in string server, + in StartupOptions options); + // Update the <options> to specify how the <server> should be + // restarted when a client asks for it. Will register the server + // if not already registered. + + void remove_server (in string server) + raises (NotFound); + // Remove <server> from the Implementation Repository. + // + // The <NotFound> exception is raised when <server> is not found + // in the Implementation Repository. + + void shutdown_server (in string server) + raises (NotFound); + // Tries to shutdown the server, first gracefully, then ungracefully. + // + // The <NotFound> exception is raised when <server> is not found + // in the Implementation Repository. + + Address server_is_running (in string server, + in Address addr, + in ServerObject server_object) + raises (NotFound); + // Used to notify the Implementation Repository that <server> is alive + // and well at <addr>. + // + // The <NotFound> exception is raised when <server> is not found + // in the Implementation Repository. + + void server_is_shutting_down (in string server) + raises (NotFound); + // Used to tell the Implementation Repository that <server> is shutting + // down. + // + // The <NotFound> exception is raised when <server> is not found + // in the Implementation Repository. + + void find (in string server, + out ServerInformation info) + raises (NotFound); + // Returns the startup information for a given <server>. + // + // The <NotFound> exception is raised when <server> is not found + // in the Implementation Repository. + + void list (in unsigned long how_many, + out ServerInformationList server_list, + out ServerInformationIterator server_iterator); + // Returns at most <how_many> servers in <server_list>. If there + // are additional servers, they can be received through the + // <server_iterator>. If there are no more servers, then + // <server_iterator> is null. + }; + + interface ServerInformationIterator + { + // = TITLE + // Interface for iterating over servers returned with + // Administration::list (). + + boolean next_n (in unsigned long how_many, + out ServerInformationList server_list); + // This operation returns at most the requested number of + // servers. + + void destroy (); + // This operation destroys the iterator. + }; +}; |