blob: 950ee0e0b3a6980d67172e94e9e52f0439ffe0ab (
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
|
// -*- IDL -*-
//=============================================================================
/**
* @file FTRT_GroupManager.idl
*
* $Id$
*
* @author Huang-Ming Huang
*/
//=============================================================================
#ifndef TAO_FTRT_GROUPMANAGER_IDL
#define TAO_FTRT_GROUPMANAGER_IDL
#include "orbsvcs/RtecEventChannelAdmin.idl"
#include "orb.idl"
#include "orbsvcs/CosNaming.idl"
#include "FTRT.idl"
module FTRT
{
typedef CosNaming::Name Location;
interface FaultListener {
/// called by the replica which detect the loss of connection with its
/// predecessor to the primary
oneway void replica_crashed(in Location the_location);
};
interface ObjectGroupManager;
struct ManagerInfo {
Location the_location;
ObjectGroupManager ior;
};
exception PredecessorUnreachable {};
typedef sequence<ManagerInfo> ManagerInfoList;
exception InvalidState{};
interface ObjectGroupManager : FaultListener {
boolean start(in FaultListener listener,
out Location the_location);
void create_group(in ManagerInfoList info_list,
in unsigned long object_group_ref_version)
raises(PredecessorUnreachable);
/// called by a newly created replica to the primary
// for requesting for joining a object group
oneway void join_group(in ManagerInfo info);
/// called by primary to replicas
/// for adding a new member to the group
void add_member(in ManagerInfo info,
in unsigned long object_group_ref_version);
/// called by the primary to backups for deleting a member from
/// the group
oneway void remove_member(in Location crashed_location,
in unsigned long object_group_ref_version);
void set_state(in State stat)
raises (InvalidState);
};
};
#endif
|