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
|
//
// $Id$
//
// ================================================================
//
// = LIBRARY
// TAO
//
// = FILENAME
// XXX
//
// = DESCRIPTION
// This file was used to generate the code in IOR{C,S,S_T}.{h,i,cpp}
// The code is then hand-crafted to compile it inside the ORB, avoid
// cyclic dependencies and enforce the locality constraints on
// certain objects.
//
// ================================================================
module TAO_IOP {
interface TAO_IOR_Manipulation {
exception EmptyProfileList {};
exception NotFound {};
exception Duplicate {};
exception Invalid_IOR {};
// Manipulating Object References. While this interface does not
// assume the use of CORBA complient IOPs, the IOP termonology is
// used throughout.
// Object references (Object) are used since they encapsulate the
// notion of object references and IORs.
// Note, an IOR contains one or more profiles and a profile can be
// considered to represent the location or route to a specific instance
// of an object.
// A profile may also contain supplimentary information useful for
// differrent services such as security.
// All Object references may have multiple profiles
typedef sequence <Object> IORList;
Object merge_iors (in IORList iors)
raises (EmptyProfileList,Duplicate,Invalid_IOR);
// Create a new object reference by merging the profiles lists in the
// supplied list of one or more object references.
Object add_profiles (in Object ior1,
in Object ior2)
raises (EmptyProfileList, Duplicate, Invalid_IOR);
// copy the profile list from "ior2" to "ior1".
// Note on ordering, while the current implementation will place
// the profiles from ior2 (which are not already in ior1) on the
// end of the profile list in ior1, there is no guarantee this ordering
// will be maintained. For example, string_to_object or object_to_string
// may reorder the profile lists. So, if it is important to use one
// profile before another then policies should be used along with tagged
// components/tagged profiles.
Object remove_profiles (in Object ior1,
in Object ior2)
raises (Invalid_IOR, EmptyProfileList, NotFound);
// Any profile in ior1 which matches at least one profile in ior2
// will be removed. Returns a new object reference
unsigned long is_in_ior(in Object ior1, in Object ior2)
raises (NotFound);
// returns number of profiles which are in both ior1 and ior2.
unsigned long get_profile_count (in Object ior)
raises (EmptyProfileList);
// This will return the number of profiles contained in the
// corresponding object reference for this object.
};
};
|