1//File: CosCompoundLifeCycle.idl
2//Part of the LifeCycle Service
3
4#ifndef _COS_COMPOUND_LIFE_CYCLE_IDL_
5#define _COS_COMPOUND_LIFE_CYCLE_IDL_
6
7// omniORB specific pragmas to insert extra includes into the stub header.
8#pragma hh #include "COS_sysdep.h"
9
10#include <CosLifeCycle.idl>
11#include <CosRelationships.idl>
12#include <CosGraphs.idl>
13
14#pragma prefix "omg.org"
15
16module CosCompoundLifeCycle {
17	interface OperationsFactory;
18	interface Operations;
19	interface Node;
20	interface Role;
21	interface Relationship;
22	interface PropagationCriteriaFactory;
23
24	enum Operation {copy, move, remove};
25
26	struct RelationshipHandle {
27		CosRelationships::Relationship the_relationship;
28		CosObjectIdentity::ObjectIdentifier constant_random_id;
29	};
30
31	interface OperationsFactory {
32		Operations create_compound_operations();
33	};
34
35	interface Operations {
36		Node copy (
37			in Node starting_node,
38			in CosLifeCycle::FactoryFinder there,
39			in CosLifeCycle::Criteria the_criteria)
40			raises (CosLifeCycle::NoFactory,
41					CosLifeCycle::NotCopyable,
42					CosLifeCycle::InvalidCriteria,
43					CosLifeCycle::CannotMeetCriteria);
44		void move (
45			in Node starting_node,
46			in CosLifeCycle::FactoryFinder there,
47			in CosLifeCycle::Criteria the_criteria)
48			raises (CosLifeCycle::NoFactory,
49					CosLifeCycle::NotMovable,
50					CosLifeCycle::InvalidCriteria,
51					CosLifeCycle::CannotMeetCriteria);
52		void remove (in Node starting_node)
53			raises (CosLifeCycle::NotRemovable);
54		void destroy();
55		};
56
57	interface Node : CosGraphs::Node {
58		exception NotLifeCycleObject {};
59		void copy_node (
60			in CosLifeCycle::FactoryFinder there,
61			in CosLifeCycle::Criteria the_criteria,
62			out Node new_node,
63			out Roles roles_of_new_node)
64			raises (CosLifeCycle::NoFactory,
65					CosLifeCycle::NotCopyable,
66					CosLifeCycle::InvalidCriteria,
67					CosLifeCycle::CannotMeetCriteria);
68		void move_node (
69			in CosLifeCycle::FactoryFinder there,
70			in CosLifeCycle::Criteria the_criteria)
71			raises (CosLifeCycle::NoFactory,
72				CosLifeCycle::NotMovable,
73				CosLifeCycle::InvalidCriteria,
74				CosLifeCycle::CannotMeetCriteria);
75		void remove_node ()
76			raises (CosLifeCycle::NotRemovable);
77		CosLifeCycle::LifeCycleObject get_life_cycle_object()
78			raises (NotLifeCycleObject);
79		};
80
81	interface Role : CosGraphs::Role {
82		Role copy_role (
83			in CosLifeCycle::FactoryFinder there,
84			in CosLifeCycle::Criteria the_criteria)
85			raises (CosLifeCycle::NoFactory,
86					CosLifeCycle::NotCopyable,
87					CosLifeCycle::InvalidCriteria,
88					CosLifeCycle::CannotMeetCriteria);
89		void move_role (
90			in CosLifeCycle::FactoryFinder there,
91			in CosLifeCycle::Criteria the_criteria)
92			raises (CosLifeCycle::NoFactory,
93					CosLifeCycle::NotMovable,
94					CosLifeCycle::InvalidCriteria,
95					CosLifeCycle::CannotMeetCriteria);
96		CosGraphs::PropagationValue life_cycle_propagation (
97			in Operation op,
98			in RelationshipHandle rel,
99			in CosRelationships::RoleName to_role_name,
100			out boolean same_for_all);
101		};
102
103	interface Relationship : CosRelationships::Relationship {
104
105		Relationship copy_relationship (
106			in CosLifeCycle::FactoryFinder there,
107			in CosLifeCycle::Criteria the_criteria,
108			in CosGraphs::NamedRoles new_roles)
109			raises (CosLifeCycle::NoFactory,
110					CosLifeCycle::NotCopyable,
111					CosLifeCycle::InvalidCriteria,
112					CosLifeCycle::CannotMeetCriteria);
113		void move_relationship (
114			in CosLifeCycle::FactoryFinder there,
115			in CosLifeCycle::Criteria the_criteria)
116			raises (CosLifeCycle::NoFactory,
117					CosLifeCycle::NotMovable,
118					CosLifeCycle::InvalidCriteria,
119					CosLifeCycle::CannotMeetCriteria);
120		CosGraphs::PropagationValue life_cycle_propagation (
121			in Operation op,
122			in CosRelationships::RoleName from_role_name,
123			in CosRelationships::RoleName to_role_name,
124			out boolean same_for_all);
125	};
126
127	interface PropagationCriteriaFactory {
128		CosGraphs::TraversalCriteria create(in Operation op);
129	};
130
131};
132
133#endif /* ifndef _COS_COMPOUND_LIFE_CYCLE_IDL_ */
134
135