OSDN Git Service

FIRST REPOSITORY
[eos/hostdependOTHERS.git] / I386LINUX / util / I386LINUX / include / coss / CosRelationships.idl
1
2 #ifndef __CosRelationships_idl__
3 #define __CosRelationships_idl__
4
5 #include <mico/ir.idl>
6 #include <coss/CosObjectIdentity.idl>
7
8 #pragma prefix "omg.org"
9
10 module CosRelationships {
11
12   interface RoleFactory;
13   interface RelationshipFactory;
14   interface Relationship;
15   interface Role;
16   interface RelationshipIterator;
17
18   typedef Object RelatedObject;
19   typedef sequence<Role> Roles;
20   typedef string RoleName;
21   typedef sequence<RoleName> RoleNames;
22
23   // My Update
24   typedef sequence<::CORBA::InterfaceDef> InterfaceDefs;
25   // end of update
26
27   struct NamedRole {RoleName name; Role aRole;};
28   typedef sequence<NamedRole> NamedRoles;
29
30   struct RelationshipHandle {
31     Relationship the_relationship;
32     CosObjectIdentity::ObjectIdentifier
33     constant_random_id;
34   };
35
36   typedef sequence<RelationshipHandle>
37     RelationshipHandles;
38
39   interface RelationshipFactory {
40     struct NamedRoleType {
41       RoleName name;
42       ::CORBA::InterfaceDef named_role_type;
43     };
44
45     typedef sequence<NamedRoleType>
46       NamedRoleTypes;
47
48     readonly attribute ::CORBA::InterfaceDef relationship_type;
49     readonly attribute unsigned short degree;
50     readonly attribute NamedRoleTypes named_role_types;
51
52     exception RoleTypeError {NamedRoles culprits;};
53     exception MaxCardinalityExceeded {NamedRoles culprits;};
54     exception DegreeError {unsigned short required_degree;};
55     exception DuplicateRoleName {NamedRoles culprits;};
56     exception UnknownRoleName {NamedRoles culprits;};
57
58     Relationship create (in NamedRoles named_roles)
59       raises (RoleTypeError, MaxCardinalityExceeded, DegreeError,
60               DuplicateRoleName, UnknownRoleName);
61
62   };
63   
64   interface Relationship : CosObjectIdentity::IdentifiableObject {
65     exception CannotUnlink {Roles offending_roles;};
66
67     readonly attribute NamedRoles named_roles;
68
69     void destroy () raises(CannotUnlink);
70   };
71   
72   interface Role {
73     exception UnknownRoleName {};
74     exception UnknownRelationship {};
75     exception RelationshipTypeError {};
76     exception CannotDestroyRelationship {RelationshipHandles offenders;};
77     exception ParticipatingInRelationship {
78       RelationshipHandles the_relationships;
79     };
80
81     readonly attribute RelatedObject related_object;
82
83     RelatedObject get_other_related_object (in RelationshipHandle rel,
84                                             in RoleName target_name)
85       raises (UnknownRoleName, UnknownRelationship);
86
87     Role get_other_role (in RelationshipHandle rel, in RoleName target_name)
88       raises (UnknownRoleName, UnknownRelationship);
89
90     void get_relationships (in unsigned long how_many,
91                             out RelationshipHandles rels,
92                             out RelationshipIterator iter);
93
94     void destroy_relationships()
95       raises(CannotDestroyRelationship);
96
97     void destroy()
98       raises(ParticipatingInRelationship);
99
100     boolean check_minimum_cardinality ();
101
102     void link (in RelationshipHandle rel,
103                in NamedRoles named_roles)
104       raises(RelationshipFactory::MaxCardinalityExceeded,
105              RelationshipTypeError);
106
107     void unlink (in RelationshipHandle rel)
108       raises (UnknownRelationship);
109   };
110   
111   interface RoleFactory {
112     exception NilRelatedObject {};
113     exception RelatedObjectTypeError {};
114
115     readonly attribute ::CORBA::InterfaceDef role_type;
116     readonly attribute unsigned long max_cardinality;
117     readonly attribute unsigned long min_cardinality;
118     // My Update !!!
119     //           readonly attribute sequence <::CORBA::InterfaceDef>
120     //                                related_object_types;
121     readonly attribute InterfaceDefs related_object_types;
122     // end of update
123     
124     Role create_role (in RelatedObject
125                       related_object)
126       raises (NilRelatedObject,
127               RelatedObjectTypeError);
128   };
129
130   interface RelationshipIterator {
131     boolean next_one (out RelationshipHandle rel);
132     boolean next_n (in unsigned long how_many,
133                     out RelationshipHandles rels);
134     void destroy ();
135   };
136
137 };
138
139
140
141 #endif
142
143