diff options
Diffstat (limited to 'TAO/tao/PortableServer/ImplRepo.idl')
-rw-r--r-- | TAO/tao/PortableServer/ImplRepo.idl | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/TAO/tao/PortableServer/ImplRepo.idl b/TAO/tao/PortableServer/ImplRepo.idl new file mode 100644 index 00000000000..b76f6a5a010 --- /dev/null +++ b/TAO/tao/PortableServer/ImplRepo.idl @@ -0,0 +1,190 @@ +// -*- IDL -*- + +// $Id$ + +module ImplementationRepository +{ + // = 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. + interface ServerObject + { + // Check the liveness of a server. + void ping (); + + // Try to shutdown the server gracefully. + void shutdown (); + }; + + // = Exceptions + + // Object already bound in the Implementation Repository + exception AlreadyRegistered {}; + + // The server could not be restarted. + exception CannotActivate + { + string reason; + }; + + // Object not found in the Implementation Repository + exception NotFound {}; + + // One environment variable/value pair. + struct EnvironmentVariable + { + string name; + string value; + }; + + // Complete Environment. + typedef sequence<EnvironmentVariable> EnvironmentList; + + // The type of Activation + enum ActivationMode {NORMAL, MANUAL, PER_CLIENT, AUTO_START}; + + /// Options used to start up the server. + struct StartupOptions + { + /// Startup command (program name and arguments). + string command_line; + + /// Environment Variables. + EnvironmentList environment; + + /// Working directory. + string working_directory; + + /// Activation Mode + ActivationMode activation; + + /// Name of the activator + string activator; + + /// Number of retries allowed + long start_limit; + }; + + struct ServerInformation + { + /// Server name. + string server; + + /// How to start up the server. + StartupOptions startup; + + /// This is used in places that require a partial IOR with + /// just the ObjectKey missing. + string partial_ior; + }; + + typedef sequence <ServerInformation> ServerInformationList; + + // = TITLE + // Interface for iterating over servers returned with + // Administration::list (). + interface ServerInformationIterator + { + // This operation returns at most the requested number of + // servers. + // If how_many == 0, then returns all servers + boolean next_n (in unsigned long how_many, + out ServerInformationList servers); + + // This operation destroys the iterator. + void destroy (); + }; + + // = TITLE + // The Implementation Repository Administration Interface + // + // = DESCRIPTION + // This interface exports all the administration functionality of + // the Implementation Repository. + interface Administration + { + // 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 activate_server (in string server) + raises (NotFound, CannotActivate); + + // 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. + // The <NotFound> exception is raised when the activator specified + // in the options is not registered. + void register_server (in string server, + in StartupOptions options) + raises (AlreadyRegistered, NotFound); + + // 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. + // The <AlreadyRegistered> exception is raised when <server> has + // already been registered with a different activator. + // The <NotFound> exception is raised when the activator specified + // in the options is not registered. + void reregister_server (in string server, + in StartupOptions options) + raises(AlreadyRegistered, NotFound); + + // Remove <server> from the Implementation Repository. + // + // The <NotFound> exception is raised when <server> is not found + // in the Implementation Repository. + void remove_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. + void shutdown_server (in string server) + raises (NotFound); + + // Used to notify the Implementation Repository that <server> is alive + // and well at <partial_ior>. + // + // The <NotFound> exception is raised when <server> is not found + // in the Implementation Repository. + void server_is_running (in string server, + in string partial_ior, + in ServerObject server_object) + 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 server_is_shutting_down (in string server) + 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 find (in string server, out ServerInformation info) + raises (NotFound); + + // 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. + // If how_many == 0, then returns all servers. + void list (in unsigned long how_many, + out ServerInformationList server_list, + out ServerInformationIterator server_iterator); + }; +}; |