summaryrefslogtreecommitdiff
path: root/TAO/tao/PortableServer/ImplRepo.pidl
blob: bfddb6e09b768ca76304b8972330e8530236f402 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
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.
  };
};