summaryrefslogtreecommitdiff
path: root/TAO/tao/PortableServer/ImplRepo.idl
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/PortableServer/ImplRepo.idl')
-rw-r--r--TAO/tao/PortableServer/ImplRepo.idl190
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);
+ };
+};