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
|
// -*- IDL -*-
#include "ImR_Activator.idl"
module ImplementationRepository
{
interface Locator : AdministrationExt
{
/// returns a token that can be used (along with activator name) to
/// unregister the activator.
long register_activator (in string name, in Activator act);
/// You must pass in the token returned from register_activator.
void unregister_activator (in string name, in long token);
/// The ImR_Activator calls this method to notify death of child
/// process that it had started.
void notify_child_death (in string name);
/// Newer Activators call this method to notify death of child
/// process including pid to disambiguate child instances
void child_death_pid (in string name, in long pid);
/// Newer Activators call this method to notify spawn of child
/// process to supply pid for reference
void spawn_pid (in string name, in long pid);
};
enum UpdateType
{
repo_add,
repo_update,
repo_remove
};
typedef long SequenceNum;
struct ServerUpdate
{
string name;
string server_id;
UpdateType type;
long repo_id;
long repo_type;
SequenceNum seq_num;
};
struct ActivatorUpdate
{
string name;
UpdateType type;
long repo_id;
long repo_type;
SequenceNum seq_num;
};
enum AAM_Status
{
AAM_INIT,
AAM_SERVER_STARTED_RUNNING,
AAM_ACTIVATION_SENT,
AAM_WAIT_FOR_RUNNING,
AAM_WAIT_FOR_PING,
AAM_WAIT_FOR_ALIVE,
AAM_WAIT_FOR_DEATH,
AAM_SERVER_READY,
AAM_SERVER_DEAD,
AAM_NOT_MANUAL,
AAM_NO_ACTIVATOR,
AAM_NO_COMMANDLINE,
AAM_RETRIES_EXCEEDED
};
struct AccessStateUpdate
{
string name;
AAM_Status state;
};
exception InvalidPeer
{
string reason;
};
interface UpdatePushNotification
{
/// provide information about access request status to allow primary
/// and backup ImR to both
oneway void notify_access_state_update (in AccessStateUpdate server);
/// indicate existing server with name was updated
oneway void notify_updated_server(in ServerUpdate server);
/// indicate existing activator with name was updated
//oneway void notify_updated_activator(in ActivatorUpdate activator);
oneway void notify_updated_activator(in ActivatorUpdate activator);
/// register peer as replica and indicate sequence number
void register_replica(in UpdatePushNotification peer,
inout string ft_imr_ior,
out SequenceNum seq_num)
raises (InvalidPeer);
};
};
|