1// This file contains OMG IDL and PIDL for the Common Object Services.
2// CosNaming Module, p 3-6 CORBAservices, Naming Service V1.0, 3/94
3
4// A few minor changes for the JacORB distribution:
5//
6// added am enclosing COSS module and changed scoped names accordingly
7//
8// corrected a few syntax errors
9//
10// commented out:
11//	#includes
12//	forward declaration of Object
13
14#include "Corba.idl"
15
16module COSS {
17
18module CosNaming {
19
20        typedef string Istring;
21        struct NameComponent {
22                Istring id;
23                Istring kind;
24        };
25
26        typedef sequence <NameComponent> Name;
27
28        enum BindingType {nobject, ncontext};
29
30        struct Binding {
31                Name    binding_name;
32                BindingType binding_type;
33        };
34
35        typedef sequence <Binding> BindingList;
36        interface BindingIterator;
37
38        interface NamingContext {
39
40                enum NotFoundReason { missing_node, not_context, not_object};
41
42                exception NotFound {
43                                NotFoundReason why;
44                                Name rest_of_name;
45                };
46
47                exception CannotProceed {
48                                NamingContext cxt;
49                                Name rest_of_name;
50                };
51
52                exception InvalidName{};
53                exception AlreadyBound {};
54                exception NotEmpty{};
55
56                void bind(in Name n, in Object obj)
57                         raises(NotFound, CannotProceed, InvalidName, AlreadyBound);
58                void rebind(in Name n, in Object obj)
59                         raises(NotFound, CannotProceed, InvalidName);
60                void bind_context(in Name n, in NamingContext nc)
61                         raises(NotFound, CannotProceed, InvalidName, AlreadyBound);
62                void rebind_context(in Name n, in NamingContext nc)
63                         raises(NotFound, CannotProceed, InvalidName);
64                Object resolve (in Name n)
65                         raises(NotFound, CannotProceed, InvalidName);
66                void unbind(in Name n)
67                         raises(NotFound, CannotProceed, InvalidName);
68                NamingContext new_context();
69                NamingContext bind_new_context(in Name n)
70                         raises(NotFound, AlreadyBound, CannotProceed, InvalidName);
71                void destroy( )
72                         raises(NotEmpty);
73                void list (in unsigned long how_many,
74                                        out BindingList bl, out BindingIterator bi);
75        };
76
77        interface BindingIterator {
78                boolean next_one(out Binding b);
79                boolean next_n(in unsigned long how_many,
80                                        out BindingList bl);
81                void destroy();
82        };
83};
84
85// Names Library interface in PIDL,   CORBAservices p 3- 14, Naming Service V1.0 3/94
86/*
87interface LNameComponent {                                                              // PIDL
88        exception NotSet{};
89        string get_id()
90                raises(NotSet);
91        void set_id(in string i);
92        string get_kind()
93                raises(NotSet);
94        void set_kind(in string k);
95        void destroy();
96};
97
98interface LName {                                                                                               // PIDL
99        exception NoComponent{};
100        exception OverFlow{};
101        exception InvalidName{};
102        LName insert_component(in unsigned long i,
103                                        in LNameComponent n)
104                        raises(NoComponent, OverFlow);
105        LNameComponent get_component(in unsigned long i)
106                 raises(NoComponent);
107        LNameComponent delete_component(in unsigned long i)
108                 raises(NoComponent);
109        unsigned long num_components();
110        boolean equal(in LName ln);
111        boolean less_than(in LName ln);
112        Name to_idl_form()
113                        raises(InvalidName);
114        void from_idl_form(in Name n);
115        void destroy();
116};
117
118LName create_lname();                      // C/C++
119LNameComponent create_lname_component();   // C/C++
120*/
121
122// CosEventComm Module, CORBAservices p 4-8, Event Service V1.0 3/94
123
124module CosEventComm {
125
126        exception Disconnected{};
127
128        interface PushConsumer {
129                void push (in any data) raises(Disconnected);
130                void disconnect_push_consumer();
131        };
132
133    interface PushSupplier {
134                void disconnect_push_supplier();
135        };
136
137        interface PullSupplier {
138                any pull () raises(Disconnected);
139                any try_pull (out boolean has_event)
140                        raises(Disconnected);
141                void     disconnect_pull_supplier();
142        };
143
144        interface PullConsumer {
145                void disconnect_pull_consumer();
146        };
147
148};
149
150// CosEventChannelAdmin Module, p 4-15 CORBAservices, Event
151// Service V1.0, 3/94
152
153// #include "CosEventComm.idl"
154
155module CosEventChannelAdmin {
156
157        exception AlreadyConnected {};
158        exception TypeError {};
159
160        interface ProxyPushConsumer: ::COSS::CosEventComm::PushConsumer {
161                void connect_push_supplier(
162                                in ::COSS::CosEventComm::PushSupplier push_supplier)
163                        raises(AlreadyConnected);
164        };
165
166        interface ProxyPullSupplier: ::COSS::CosEventComm::PullSupplier {
167                void connect_pull_consumer(
168                                in ::COSS::CosEventComm::PullConsumer pull_consumer)
169                        raises(AlreadyConnected);
170        };
171
172        interface ProxyPullConsumer: ::COSS::CosEventComm::PullConsumer {
173                void connect_pull_supplier(
174                                in ::COSS::CosEventComm::PullSupplier pull_supplier)
175                        raises(AlreadyConnected,TypeError);
176        };
177
178        interface ProxyPushSupplier: ::COSS::CosEventComm::PushSupplier {
179	  void connect_push_consumer(
180				     in ::COSS::CosEventComm::PushConsumer
181				     push_consumer)
182	    raises(AlreadyConnected, TypeError);
183        };
184
185
186        interface ConsumerAdmin {
187	  ProxyPushSupplier obtain_push_supplier();
188	  ProxyPullSupplier obtain_pull_supplier();
189        };
190
191        interface SupplierAdmin {
192                ProxyPushConsumer obtain_push_consumer();
193                ProxyPullConsumer obtain_pull_consumer();
194        };
195
196        interface EventChannel {
197                ConsumerAdmin for_consumers();
198                SupplierAdmin for_suppliers();
199                void destroy();
200        };
201
202};
203
204
205// CosTyped Event Module, p 4-22 CORBAservices, Event Service
206// V1.0, 3/94
207
208// // #include "CosEventComm.idl"
209
210module CosTypedEventComm {
211
212        interface TypedPushConsumer : ::COSS::CosEventComm::PushConsumer {
213                Object get_typed_consumer();
214        };
215
216        interface TypedPullSupplier : ::COSS::CosEventComm::PullSupplier {
217                Object get_typed_supplier();
218        };
219
220};
221
222// CosTypedEventChannelAdmin Module, p 4- 25 CORBAservices,
223// Event Service V1.0, 3/94
224
225// // #include "CosEventChannel.idl"
226// // #include "CosTypedEventComm.idl"
227module CosTypedEventChannelAdmin {
228        exception InterfaceNotSupported {};
229        exception NoSuchImplementation {};
230        typedef string Key;
231
232        interface TypedProxyPushConsumer :
233                        ::COSS::CosEventChannelAdmin::ProxyPushConsumer,
234                        ::COSS::CosTypedEventComm::TypedPushConsumer  { };
235
236        interface TypedProxyPullSupplier :
237                        ::COSS::CosEventChannelAdmin::ProxyPullSupplier,
238                        ::COSS::CosTypedEventComm::TypedPullSupplier { };
239
240        interface TypedSupplierAdmin :
241                        ::COSS::CosEventChannelAdmin::SupplierAdmin {
242                TypedProxyPushConsumer obtain_typed_push_consumer(
243                                in Key supported_interface)
244                        raises(InterfaceNotSupported);
245                ::COSS::CosEventChannelAdmin::ProxyPullConsumer obtain_typed_pull_consumer (
246                                in Key uses_interface)
247                         raises(NoSuchImplementation);
248        };
249
250        interface TypedConsumerAdmin :
251                        ::COSS::CosEventChannelAdmin::ConsumerAdmin {
252                TypedProxyPullSupplier obtain_typed_pull_supplier(
253                                in Key supported_interface)
254                        raises (InterfaceNotSupported);
255                ::COSS::CosEventChannelAdmin::ProxyPushSupplier obtain_typed_push_supplier(
256                                in Key uses_interface)
257                        raises(NoSuchImplementation);
258        };
259
260        interface TypedEventChannel {
261                TypedConsumerAdmin for_consumers();
262                TypedSupplierAdmin for_suppliers();
263                void destroy ();
264        };
265};
266
267
268// CosPersistencePID Module, p 5-20 CORBAservices,
269// Persistent Object Service V1.0, 3/94
270
271//#ifndef __COSPERSISTENCE
272//#define __COSPERSISTENCE
273
274module CosPersistencePID {
275
276        interface PID {
277                attribute string datastore_type;
278                string get_PIDString();
279        };
280};
281
282
283// CosPersistencePDS Module, p 5-20 CORBAservices,
284// Persistent Object Service V1.0, 3/94
285
286// #include "CosPersistencePID.idl"
287
288module CosPersistencePDS {
289
290// interface Object;
291        interface PDS {
292                PDS     connect (in Object obj,
293                        in ::COSS::CosPersistencePID::PID p);
294                void disconnect (in Object obj,
295                        in ::COSS::CosPersistencePID::PID p);
296                void store (in Object obj,
297                        in ::COSS::CosPersistencePID::PID p);
298                void restore (in Object obj,
299                        in ::COSS::CosPersistencePID::PID p);
300                void delete (in Object obj,
301                        in ::COSS::CosPersistencePID::PID p);
302        };
303};
304
305
306// CosPersistencePO Module, p 5-12 CORBAservices,
307// Persistent Object Service V1.0, 3/94
308
309// // #include "CosPersistencePDS.idl"
310// CosPersistencePDS.idl
311// // #includes CosPersistencePID.idl
312
313module CosPersistencePO {
314
315        interface PO {
316                attribute ::COSS::CosPersistencePID::PID p;
317                ::COSS::CosPersistencePDS::PDS connect (
318                        in ::COSS::CosPersistencePID::PID p);
319                void disconnect (in ::COSS::CosPersistencePID::PID p);
320                void store (in ::COSS::CosPersistencePID::PID p);
321                void restore (in ::COSS::CosPersistencePID::PID p);
322                void delete (in ::COSS::CosPersistencePID::PID p);
323        };
324
325        interface SD {
326                void pre_store();
327                void post_restore();
328        };
329};
330
331
332// CosPersistencePOM Module, p 5-15 CORBAservices,
333// Persistent Object Service V1.0, 3/94
334
335// #include "CosPersistencePDS.idl"
336
337// CosPersistencePDS.idl // #includes CosPersistencePID.idl
338
339module CosPersistencePOM {
340
341// interface Object;
342
343	interface POM {
344                ::COSS::CosPersistencePDS::PDS connect (
345                        in Object obj,
346                        in ::COSS::CosPersistencePID::PID p);
347                void disconnect (
348                        in Object obj,
349                        in ::COSS::CosPersistencePID::PID p);
350                void store (
351                        in Object obj,
352                        in ::COSS::CosPersistencePID::PID p);
353                void restore (
354                        in Object obj,
355                        in ::COSS::CosPersistencePID::PID p);
356                void delete (
357                        in Object obj,
358                        in ::COSS::CosPersistencePID::PID p);
359 	       };
360	};
361
362// CosPersistencePDS_DA Module, p 5-22 CORBAservices,
363// Persistent Object Service, V1.0, 3/94
364
365// #include "CosPersistencePDS.idl"
366// CosPersistencePDS.idl // #includes CosPersistencePID.idl
367
368module CosPersistencePDS_DA {
369
370        typedef string DAObjectID;
371
372        interface PID_DA : ::COSS::CosPersistencePID::PID {
373                attribute DAObjectID oid;
374        };
375
376        interface DAObject {
377                boolean dado_same(in DAObject d);
378                DAObjectID dado_oid();
379                PID_DA dado_pid();
380                void dado_remove();
381                void dado_free();
382        };
383
384        interface DAObjectFactory {
385                DAObject create();
386        };
387
388        interface DAObjectFactoryFinder {
389                DAObjectFactory find_factory(in string key);
390        };
391
392        interface PDS_DA : ::COSS::CosPersistencePDS::PDS {
393                DAObject get_data();
394                void set_data(in DAObject new_data);
395                DAObject lookup(in DAObjectID id);
396                PID_DA get_pid();
397                PID_DA get_object_pid(in DAObject dao);
398                DAObjectFactoryFinder data_factories();
399        };
400
401        typedef sequence<string> AttributeNames;
402        interface DynamicAttributeAccess {
403                AttributeNames attribute_names();
404                any attribute_get(in string name);
405                void attribute_set(in string name, in any value);
406        };
407
408        typedef string ClusterID;
409        typedef sequence<ClusterID> ClusterIDs;
410        interface PDS_ClusteredDA : PDS_DA{
411                ClusterID cluster_id();
412                string cluster_kind();
413                ClusterIDs clusters_of();
414                PDS_ClusteredDA create_cluster(in string kind);
415                PDS_ClusteredDA open_cluster(in ClusterID cluster);
416                PDS_ClusteredDA copy_cluster(
417                        in PDS_DA source);
418        };
419};
420
421// CosPersistenceDDO Module, p 5-32 CORBAservices, Persistent Object Service V1.0, 3/94
422
423// #include "CosPersistencePID.idl"
424module CosPersistenceDDO {
425
426        interface DDO {
427                attribute string object_type;
428                attribute ::COSS::CosPersistencePID::PID p;
429                short add_data();
430                short add_data_property (in short data_id);
431                short get_data_count();
432                short get_data_property_count (in short data_id);
433                void get_data_property (in short data_id,
434                        in short property_id,
435                        out string property_name,
436                        out any property_value);
437                void set_data_property (in short data_id,
438                        in short property_id,
439                        in string property_name,
440                        in any property_value);
441                void get_data (in short data_id,
442                        out string data_name,
443                        out any data_value);
444                void set_data (in short data_id,
445                        in string data_name,
446                        in any data_value);
447        };
448};
449
450// CosPersistenceDS_CLI module, p 5-34 CORBAservices,
451// Persistent Object Service V1.0, 3/94
452
453// #include "CosPersistenceDDO.idl"
454// CosPersistenceDDO.idl // #includes CosPersistencePID.idl
455
456module CosPersistenceDS_CLI {
457        interface UserEnvironment {
458                void set_option (in long option,in any value);
459                void get_option (in long option,out any value);
460                void release();
461        };
462
463        interface Connection {
464                void set_option (in long option,in any value);
465                void get_option (in long option,out any value);
466        };
467
468        interface ConnectionFactory {
469                Connection create_object (
470                        in UserEnvironment user_envir);
471        };
472
473        interface Cursor {
474                void set_position (in long position,in any value);
475                ::COSS::CosPersistenceDDO::DDO fetch_object();
476        };
477
478        interface CursorFactory {
479                Cursor create_object (
480                        in Connection connection);
481        };
482
483        interface PID_CLI : ::COSS::CosPersistencePID::PID {
484                attribute string datastore_id;
485                attribute string id;
486        };
487
488
489
490        interface Datastore_CLI {
491                void connect (in Connection connection,
492                        in string datastore_id,
493                        in string user_name,
494                        in string authentication);
495                void disconnect (in Connection connection);
496                Connection get_connection (
497                        in string datastore_id,
498                        in string user_name);
499                void add_object (in Connection connection,
500                        in ::COSS::CosPersistenceDDO::DDO data_obj);
501                void delete_object (
502                        in Connection connection,
503                        in ::COSS::CosPersistenceDDO::DDO data_obj);
504                void update_object (
505                        in Connection connection,
506                        in ::COSS::CosPersistenceDDO::DDO data_obj);
507                void retrieve_object(
508                        in Connection connection,
509                        in ::COSS::CosPersistenceDDO::DDO data_obj);
510                Cursor select_object(
511                        in Connection connection,
512                        in string key);
513                void transact (in UserEnvironment user_envir,
514                        in short completion_type);
515                void assign_PID (in PID_CLI p);
516                void assign_PID_relative (
517                        in PID_CLI source_pid,
518                        in PID_CLI target_pid);
519                boolean is_identical_PID (
520                        in PID_CLI pid_1,
521                        in PID_CLI pid_2);
522                string get_object_type (in PID_CLI p);
523                void register_mapping_schema (in string schema_file);
524                Cursor execute (in Connection connection,
525                        in string command);
526        };
527
528};
529
530
531// CosLifeCycle Module, p 6-10 CORBAservices, LifeCycle Service V1.0, 3/94
532
533// #include "Naming.idl"
534
535module CosLifeCycle
536{
537        typedef ::COSS::CosNaming::Name Key;
538        typedef Object Factory;
539        typedef sequence <Factory> Factories;
540        typedef struct NVP {
541                ::COSS::CosNaming::Istring  name;
542                any     value;
543        } NameValuePair;
544        typedef sequence <NameValuePair> Criteria;
545
546        exception NoFactory {
547                Key search_key;
548        };
549        exception NotCopyable { string reason; };
550        exception NotMovable { string reason; };
551        exception NotRemovable { string reason; };
552        exception InvalidCriteria{
553                Criteria invalid_criteria;
554        };
555        exception CannotMeetCriteria {
556                Criteria unmet_criteria;
557        };
558
559
560        interface FactoryFinder {
561                Factories find_factories(in Key factory_key)
562                        raises(NoFactory);
563        };
564
565        interface LifeCycleObject {
566                LifeCycleObject copy(in FactoryFinder there,
567                                in Criteria the_criteria)
568                        raises(NoFactory, NotCopyable, InvalidCriteria,
569                                 CannotMeetCriteria);
570                void move(in FactoryFinder there,
571                                in Criteria the_criteria)
572                        raises(NoFactory, NotMovable, InvalidCriteria,
573                                 CannotMeetCriteria);
574                void remove()
575                        raises(NotRemovable);
576        };
577
578        interface GenericFactory {
579                boolean supports(in Key k);
580                Object create_object(
581                                in Key k,
582                                in Criteria the_criteria)
583                        raises (NoFactory, InvalidCriteria,
584                                CannotMeetCriteria);
585        };
586};
587
588
589
590// LifeCycleService Module, p 6- 55 CORBAservices, Life Cycle
591// Service V1.0, 3/94
592
593// #include "LifeCycle.idl"
594
595module LifeCycleService {
596
597        typedef sequence <::COSS::CosLifeCycle::NameValuePair> PolicyList;
598        typedef sequence <::COSS::CosLifeCycle::Key> Keys;
599        typedef sequence <::COSS::CosLifeCycle::NameValuePair> PropertyList;
600        typedef sequence <::COSS::CosNaming::NameComponent> NameComponents;
601
602        interface LifeCycleServiceAdmin {
603
604                attribute PolicyList policies;
605
606                void bind_generic_factory(
607                                in ::COSS::CosLifeCycle::GenericFactory gf,
608                                in ::COSS::CosNaming::NameComponent name,
609                                in Keys key_set,
610                                in PropertyList other_properties)
611                        raises (::COSS::CosNaming::NamingContext::AlreadyBound, ::COSS::CosNaming::NamingContext::InvalidName);
612
613                void unbind_generic_factory(
614                                in ::COSS::CosNaming::NameComponent name)
615                        raises (::COSS::CosNaming::NamingContext::NotFound, ::COSS::CosNaming::NamingContext::InvalidName);
616
617               ::COSS::CosLifeCycle::GenericFactory resolve_generic_factory(
618                                in ::COSS::CosNaming::NameComponent name)
619                        raises (::COSS::CosNaming::NamingContext::NotFound, ::COSS::CosNaming::NamingContext::InvalidName);
620
621                NameComponents list_generic_factories();
622
623                boolean match_service (in ::COSS::CosLifeCycle::GenericFactory f);
624
625                string get_hint();
626
627                void get_link_properties(
628                                in ::COSS::CosNaming::NameComponent name,
629                                out Keys key_set,
630                                out PropertyList other_properties)
631                        raises (::COSS::CosNaming::NamingContext::NotFound, ::COSS::CosNaming::NamingContext::InvalidName);
632        };
633};
634
635// CosTransactions Module, p 10-66
636// CORBAservices, Transaction Service V1.0, 3/94
637
638module CosTransactions {
639// DATATYPES
640enum Status {
641        StatusActive,
642        StatusMarkedRollback,
643        StatusPrepared,
644        StatusCommitted,
645        StatusRolledBack,
646        StatusUnknown,
647        StatusNoTransaction
648};
649
650enum Vote {
651        VoteCommit,
652        VoteRollback,
653        VoteReadOnly
654};
655
656// Standard exceptions
657exception TransactionRequired {};
658exception TransactionRolledBack {};
659exception InvalidTransaction {};
660
661// Heuristic exceptions
662exception HeuristicRollback {};
663exception HeuristicCommit {};
664exception HeuristicMixed {};
665exception HeuristicHazard {};
666
667// Exception from Orb operations
668exception WrongTransaction {};
669
670// Other transaction-specific exceptions
671exception SubtransactionsUnavailable {};
672exception NotSubtransaction {};
673exception Inactive {};
674exception NotPrepared {};
675exception NoTransaction {};
676exception InvalidControl {};
677exception Unavailable {};
678
679// Forward references for interfaces defined later in module
680interface Control;
681interface Terminator;
682interface Coordinator;
683interface Resource;
684interface RecoveryCoordinator;
685interface SubtransactionAwareResource;
686interface TransactionFactory;
687interface TransactionalObject;
688interface Current;
689
690// Current transaction pseudo object (PIDL)
691	interface Current {
692        void begin()
693                raises(SubtransactionsUnavailable);
694        void commit(in boolean report_heuristics)
695                raises(
696                        NoTransaction,
697                        HeuristicMixed,
698                        HeuristicHazard
699                );
700        void rollback()
701                raises(NoTransaction);
702        void rollback_only()
703                raises(NoTransaction);
704
705        Status get_status();
706        string get_transaction_name();
707        void set_timeout(in unsigned long seconds);
708
709        Control get_control();
710        Control suspend();
711        void resume(in Control which)
712                raises(InvalidControl);
713	};
714
715	interface TransactionFactory {
716	        Control create(in unsigned long time_out);
717	};
718
719	interface Control {
720 	       Terminator get_terminator()
721  	              raises(Unavailable);
722   	     Coordinator get_coordinator()
723    	            raises(Unavailable);
724	};
725
726	interface Terminator {
727	        void commit(in boolean report_heuristics)
728                raises(
729                        HeuristicMixed,
730                        HeuristicHazard
731                );
732     	   void rollback();
733	};
734
735
736	interface Coordinator {
737
738        Status get_status();
739        Status get_parent_status();
740        Status get_top_level_status();
741
742        boolean is_same_transaction(in Coordinator tc);
743        boolean is_related_transaction(in Coordinator tc);
744        boolean is_ancestor_transaction(in Coordinator tc);
745        boolean is_descendant_transaction(in Coordinator tc);
746        boolean is_top_level_transaction();
747
748        unsigned long hash_transaction();
749        unsigned long hash_top_level_tran();
750
751        RecoveryCoordinator register_resource(in Resource r)
752                raises(Inactive);
753
754        void register_subtran_aware(in SubtransactionAwareResource r)
755                raises(Inactive, NotSubtransaction);
756
757        void rollback_only()
758                raises(Inactive);
759
760        string get_transaction_name();
761
762        Control create_subtransaction()
763                raises(SubtransactionsUnavailable, Inactive);
764	};
765
766	interface RecoveryCoordinator {
767     	   Status replay_completion(in Resource r)
768                raises(NotPrepared);
769	};
770
771}; // end module CosTransactions
772
773
774// CosConcurrency Control Module, p 7-8 CORBAservices,
775// Concurrency Control Service V1.0, 3/94
776
777// #include <CosTransactions.idl>
778module CosConcurrencyControl {
779
780    enum lock_mode {
781        read,
782        write,
783        upgrade,
784        intention_read,
785        intention_write
786    };
787
788    exception LockNotHeld{};
789
790    interface LockCoordinator
791    {
792                void drop_locks();
793    };
794
795    interface LockSet
796    {
797        void lock(in lock_mode mode);
798        boolean try_lock(in lock_mode mode);
799
800        void unlock(in lock_mode mode)
801            raises(LockNotHeld);
802        void change_mode(in lock_mode held_mode,
803                         in lock_mode new_mode)
804           raises(LockNotHeld);
805        LockCoordinator get_coordinator(
806            in ::COSS::CosTransactions::Coordinator which);
807    };
808
809    interface TransactionalLockSet
810    {
811        void lock(in ::COSS::CosTransactions::Coordinator current,
812                  in lock_mode mode);
813        boolean try_lock(in ::COSS::CosTransactions::Coordinator current,
814                         in lock_mode mode);
815        void unlock(in ::COSS::CosTransactions::Coordinator current,
816                    in lock_mode mode)
817           raises(LockNotHeld);
818        void change_mode(in ::COSS::CosTransactions::Coordinator current,
819                         in lock_mode held_mode,
820                         in lock_mode new_mode)
821           raises(LockNotHeld);
822        LockCoordinator get_coordinator(
823            in ::COSS::CosTransactions::Coordinator which);
824    };
825
826    interface LockSetFactory
827    {
828        LockSet create();
829        LockSet create_related(in LockSet which);
830        TransactionalLockSet create_transactional();
831        TransactionalLockSet create_transactional_related(in
832            TransactionalLockSet which);
833    };
834};
835
836// CosObjectIdentity Module, p 9-19 CORBAservices, Relationship
837// Service V1.0, 3/94
838
839
840module CosObjectIdentity {
841
842        typedef unsigned long ObjectIdentifier;
843
844        interface IdentifiableObject {
845                        readonly attribute ObjectIdentifier constant_random_id;
846                        boolean is_identical (
847                                in IdentifiableObject other_object);
848        };
849
850};
851
852
853// CosRelationships Module, p 9-21 CORBAservices, Relationship
854// Service V1.0, 3/94
855
856// #include <ObjectIdentity.idl>
857
858module CosRelationships {
859
860        interface RoleFactory;
861        interface RelationshipFactory;
862        interface Relationship;
863        interface Role;
864        interface RelationshipIterator;
865
866        typedef Object RelatedObject;
867        typedef sequence<Role> Roles;
868        typedef string RoleName;
869        typedef sequence<RoleName> RoleNames;
870
871        struct NamedRole {RoleName name; Role aRole;};
872        typedef sequence<NamedRole> NamedRoles;
873
874        struct RelationshipHandle {
875                        Relationship the_relationship;
876                        ::COSS::CosObjectIdentity::ObjectIdentifier constant_random_id;
877        };
878        typedef sequence<RelationshipHandle> RelationshipHandles;
879
880        interface RelationshipFactory {
881                        struct NamedRoleType {
882                                RoleName name;
883                                        ::CORBA::InterfaceDef named_role_type;
884                        };
885                        typedef sequence<NamedRoleType> NamedRoleTypes;
886                        readonly attribute ::CORBA::InterfaceDef relationship_type;
887                        readonly attribute unsigned short degree;
888                        readonly attribute NamedRoleTypes named_role_types;
889                        exception RoleTypeError {NamedRoles culprits;};
890                        exception MaxCardinalityExceeded {
891                                NamedRoles culprits;};
892                        exception DegreeError {unsigned short required_degree;};
893                        exception DuplicateRoleName {NamedRoles culprits;};
894                        exception UnknownRoleName {NamedRoles culprits;};
895
896                        Relationship create (in NamedRoles named_roles)
897                                        raises (RoleTypeError,
898                                                MaxCardinalityExceeded,
899                                                DegreeError,
900                                                DuplicateRoleName,
901                                                UnknownRoleName);
902        };
903
904        interface Relationship :
905                                ::COSS::CosObjectIdentity::IdentifiableObject {
906                        exception CannotUnlink {
907                                Roles offending_roles;
908                        };
909                        readonly attribute NamedRoles named_roles;
910                        void destroy () raises(CannotUnlink);
911        };
912
913        interface Role {
914                        exception UnknownRoleName {};
915                        exception UnknownRelationship {};
916                        exception RelationshipTypeError {};
917                        exception CannotDestroyRelationship {
918                                RelationshipHandles offenders;
919                        };
920                        exception ParticipatingInRelationship {
921                                RelationshipHandles the_relationships;
922                        };
923                        readonly attribute RelatedObject related_object;
924                        RelatedObject get_other_related_object (
925                                                in RelationshipHandle rel,
926                                                in RoleName target_name)
927                                raises (UnknownRoleName,
928                                                UnknownRelationship);
929                        Role get_other_role (in RelationshipHandle rel,
930                                                in RoleName target_name)
931                                raises (UnknownRoleName, UnknownRelationship);
932                        void get_relationships (
933                                                in unsigned long how_many,
934                                                out RelationshipHandles rels,
935                                                out RelationshipIterator iterator);
936                        void destroy_relationships()
937                                raises(CannotDestroyRelationship);
938                        void destroy() raises(ParticipatingInRelationship);
939                        boolean check_minimum_cardinality ();
940                        void link (in RelationshipHandle rel,
941                                                in NamedRoles named_roles)
942                                        raises(RelationshipFactory::MaxCardinalityExceeded,
943                                                RelationshipTypeError);
944                        void unlink (in RelationshipHandle rel)
945                                raises (UnknownRelationship);
946        };
947
948        interface RoleFactory {
949                        exception NilRelatedObject {};
950                        exception RelatedObjectTypeError {};
951                        readonly attribute ::CORBA::InterfaceDef role_type;
952                        readonly attribute unsigned long max_cardinality;
953                        readonly attribute unsigned long min_cardinality;
954// the following isn't allowed in IDL,
955//  readonly attribute sequence <::CORBA::InterfaceDef> related_object_types;
956			typedef sequence <::CORBA::InterfaceDef> InterfaceDefSeq;
957			readonly attribute InterfaceDefSeq related_object_types;
958                        Role create_role (in RelatedObject related_object)
959                                raises (NilRelatedObject, RelatedObjectTypeError);
960        };
961
962        interface RelationshipIterator {
963                        boolean next_one (out RelationshipHandle rel);
964                        boolean next_n (in unsigned long how_many,
965                                                out RelationshipHandles rels);
966                        void destroy ();
967        };
968
969};
970
971// CosCompoundExternalization Module, p 8-20 CORBAservices,
972// Externalization Service V1.0, 3/94
973
974// #include <Graphs.idl>
975// #include <Stream.idl>
976
977// CosGraphs Module, p 9-39 CORBAservices, Relationship Service
978// V1.0, 3/94
979
980// #include <Relationships.idl>
981// #include <ObjectIdentity.idl>
982
983module CosGraphs {
984
985                interface TraversalFactory;
986                interface Traversal;
987                interface TraversalCriteria;
988                interface Node;
989                interface NodeFactory;
990                interface Role;
991                interface EdgeIterator;
992
993                struct NodeHandle {
994                        Node the_node;
995                        ::COSS::CosObjectIdentity::ObjectIdentifier constant_random_id;
996                };
997                typedef sequence<NodeHandle> NodeHandles;
998
999                struct NamedRole {
1000                        Role the_role;
1001		  ::COSS::CosRelationships::RoleName the_name;
1002                };
1003                typedef sequence<NamedRole> NamedRoles;
1004
1005                struct EndPoint {
1006                        NodeHandle the_node;
1007                        NamedRole the_role;
1008                };
1009                typedef sequence<EndPoint> EndPoints;
1010
1011                struct Edge {
1012                        EndPoint from;
1013                        ::COSS::CosRelationships::RelationshipHandle the_relationship;
1014                        EndPoints relatives;
1015                };
1016                typedef sequence<Edge> Edges;
1017
1018                enum PropagationValue {deep, shallow, none, inhibit};
1019                enum Mode {depthFirst, breadthFirst, bestFirst};
1020
1021                interface TraversalFactory {
1022                        Traversal create_traversal_on (
1023                                        in NodeHandle root_node,
1024                                        in TraversalCriteria the_criteria,
1025                                        in Mode how);
1026                };
1027
1028                interface Traversal {
1029                        typedef unsigned long TraversalScopedId;
1030                        struct ScopedEndPoint {
1031                                EndPoint point;
1032                                TraversalScopedId id;
1033                        };
1034                        typedef sequence<ScopedEndPoint> ScopedEndPoints;
1035                        struct ScopedRelationship {
1036                                ::COSS::CosRelationships::RelationshipHandle
1037                                        scoped_relationship;
1038                                TraversalScopedId id;
1039                        };
1040                        struct ScopedEdge {
1041                                ScopedEndPoint from;
1042                                ScopedRelationship the_relationship;
1043                                ScopedEndPoints relatives;
1044                        };
1045                        typedef sequence<ScopedEdge> ScopedEdges;
1046                        boolean next_one (out ScopedEdge the_edge);
1047                        boolean next_n (in short how_many,
1048                                        out ScopedEdges the_edges);
1049                        void destroy ();
1050                };
1051
1052                interface TraversalCriteria {
1053                        struct WeightedEdge {
1054                                Edge the_edge;
1055                                unsigned long weight;
1056                                sequence<NodeHandle> next_nodes;
1057                        };
1058                        typedef sequence<WeightedEdge> WeightedEdges;
1059                        void visit_node(in NodeHandle a_node,
1060                                        in Mode search_mode);
1061                        boolean next_one (out WeightedEdge the_edge);
1062                        boolean next_n (in short how_many,
1063                                        out WeightedEdges the_edges);
1064                        void destroy();
1065                };
1066
1067                interface Node: ::COSS::CosObjectIdentity::IdentifiableObject {
1068                        typedef sequence<Role> Roles;
1069                        exception NoSuchRole {};
1070                        exception DuplicateRoleType {};
1071
1072                        readonly attribute ::COSS::CosRelationships::RelatedObject
1073                                 related_object;
1074                        readonly attribute Roles roles_of_node;
1075                        Roles roles_of_type (
1076                                        in ::CORBA::InterfaceDef role_type);
1077                        void add_role (in Role a_role)
1078                                        raises (DuplicateRoleType);
1079                        void remove_role (in ::CORBA::InterfaceDef of_type)
1080                                raises (NoSuchRole);
1081                };
1082
1083                interface NodeFactory {
1084                        Node create_node (in Object related_object);
1085                };
1086
1087                interface Role : ::COSS::CosRelationships::Role {
1088                        void get_edges ( in long how_many,
1089                                        out Edges the_edges,
1090                                        out EdgeIterator the_rest);
1091                };
1092
1093                interface EdgeIterator {
1094                        boolean next_one (out Edge the_edge);
1095                        boolean next_n ( in unsigned long how_many,
1096                                        out Edges the_edges);
1097                        void destroy ();
1098                };
1099
1100};
1101
1102
1103
1104// CosStream Module, 8-15 CORBAservices,
1105// Externalization Service V1.0, 3/94
1106
1107// #include <LifeCycle.idl>
1108// #include <ObjectIdentity.idl>
1109// #include <CompoundExternalization.idl>
1110module CosStream {
1111                exception ObjectCreationError{};
1112                exception StreamDataFormatError{};
1113                interface StreamIO;
1114
1115                interface Streamable: ::COSS::CosObjectIdentity::IdentifiableObject
1116		{
1117                        readonly attribute ::COSS::CosLifeCycle::Key external_form_id;
1118                        void externalize_to_stream(
1119                                        in StreamIO targetStreamIO);
1120                        void internalize_from_stream(
1121                                        in StreamIO sourceStreamIO,
1122                                        in ::COSS::CosLifeCycle::FactoryFinder there)
1123				raises( ::COSS::CosLifeCycle::NoFactory,
1124                                        ObjectCreationError,
1125                                        StreamDataFormatError );
1126                };
1127
1128                interface StreamableFactory {
1129                        Streamable create_uninitialized();
1130                };
1131
1132
1133                interface StreamIO {
1134                        void write_string(in string aString);
1135                        void write_char(in char aChar);
1136                        void write_octet(in octet anOctet);
1137                        void write_unsigned_long(
1138                                        in unsigned long anUnsignedLong);
1139                        void write_unsigned_short(
1140                                        in unsigned short anUnsignedShort);
1141                        void write_long(in long aLong);
1142                        void write_short(in short aShort);
1143                        void write_float(in float aFloat);
1144                        void write_double(in double aDouble);
1145                        void write_boolean(in boolean aBoolean);
1146                        void write_object(in Streamable aStreamable);
1147			//                        void write_graph(in ::COSS::CosCompoundExternalization::Node aNode);
1148                        string read_string()
1149                                raises(StreamDataFormatError);
1150                        char read_char()
1151                                raises(StreamDataFormatError );
1152                        octet read_octet()
1153                                raises(StreamDataFormatError );
1154                        unsigned long read_unsigned_long()
1155                                        raises(StreamDataFormatError );
1156                        unsigned short read_unsigned_short()
1157                                raises(         StreamDataFormatError );
1158                        long read_long()
1159                                raises(StreamDataFormatError );
1160                        short read_short()
1161                                raises(StreamDataFormatError );
1162                        float read_float()
1163                                raises(StreamDataFormatError );
1164                        double read_double()
1165                                raises(StreamDataFormatError );
1166                        boolean read_boolean()
1167                                raises(StreamDataFormatError );
1168                        Streamable read_object(
1169                                        in ::COSS::CosLifeCycle::FactoryFinder there,
1170                                        in Streamable aStreamable)
1171                                raises(StreamDataFormatError );
1172//                         void read_graph(
1173//                                         in ::COSS::CosCompoundExternalization::Node starting_node,
1174//                                         in ::COSS::CosLifeCycle::FactoryFinder there)
1175//                                 raises(StreamDataFormatError );
1176                };
1177};
1178
1179module CosCompoundExternalization {
1180        interface Node;
1181        interface Role;
1182        interface Relationship;
1183        interface PropagationCriteriaFactory;
1184
1185        struct RelationshipHandle {
1186                        Relationship theRelationship;
1187                        ::COSS::CosObjectIdentity::ObjectIdentifier constantRandomId;
1188        };
1189
1190        interface Node : ::COSS::CosGraphs::Node, ::COSS::CosStream::Streamable{
1191                        void externalize_node (in ::COSS::CosStream::StreamIO sio);
1192                        void internalize_node (in ::COSS::CosStream::StreamIO sio,
1193                                                in ::COSS::CosLifeCycle::FactoryFinder there,
1194                                                out ::COSS::CosGraphs::Node::Roles rolesOfNode)
1195                                raises (::COSS::CosLifeCycle::NoFactory);
1196                };
1197
1198        interface Role : ::COSS::CosGraphs::Role {
1199                        void externalize_role (in ::COSS::CosStream::StreamIO sio);
1200                        void internalize_role (in ::COSS::CosStream::StreamIO sio);
1201                        ::COSS::CosGraphs::PropagationValue externalize_propagation (
1202                                                in RelationshipHandle rel,
1203                                                in ::COSS::CosRelationships::RoleName toRoleName,
1204                                                out boolean sameForAll);
1205                };
1206
1207        interface Relationship :
1208                                ::COSS::CosRelationships::Relationship {
1209                  void externalize_relationship (
1210			in ::COSS::CosStream::StreamIO sio);
1211			void internalize_relationship(
1212				in ::COSS::CosStream::StreamIO sio,
1213				in ::COSS::CosGraphs::NamedRoles newRoles);
1214                        ::COSS::CosGraphs::PropagationValue externalize_propagation (
1215				in ::COSS::CosRelationships::RoleName fromRoleName,
1216				in ::COSS::CosRelationships::RoleName toRoleName,
1217				out boolean sameForAll);
1218        };
1219
1220        interface PropagationCriteriaFactory {
1221                        ::COSS::CosGraphs::TraversalCriteria create_for_externalize( );
1222        };
1223
1224};
1225
1226// CosExternalization Module, 8-12 CORBAservices,
1227// Externalization Service V1.0, 3/94
1228
1229
1230// #include <LifeCycle.idl>
1231// #include <Stream.idl>
1232module CosExternalization {
1233                exception InvalidFileNameError{};
1234                exception ContextAlreadyRegistered{};
1235                interface Stream: ::COSS::CosLifeCycle::LifeCycleObject{
1236                        void externalize(
1237                                        in ::COSS::CosStream::Streamable theObject);
1238                        ::COSS::CosStream::Streamable internalize(
1239                                        in ::COSS::CosLifeCycle::FactoryFinder there)
1240                                raises( ::COSS::CosLifeCycle::NoFactory,
1241                                        ::COSS::CosStream::StreamDataFormatError );
1242                        void begin_context()
1243                                raises( ContextAlreadyRegistered);
1244                        void end_context();
1245                        void flush();
1246                };
1247                interface StreamFactory {
1248                        Stream create();
1249                };
1250                interface FileStreamFactory {
1251                        Stream create(
1252                                        in string theFileName)
1253                                raises( InvalidFileNameError );
1254                };
1255};
1256
1257// CosContainment Module, p 9- 48 CORBAservices, Relationship
1258// Service V1.0, 3/94
1259
1260// #include <Graphs.idl>
1261
1262module CosContainment {
1263
1264        interface Relationship :
1265                        ::COSS::CosRelationships::Relationship {};
1266
1267        interface ContainsRole : ::COSS::CosGraphs::Role {};
1268
1269        interface ContainedInRole : ::COSS::CosGraphs::Role {};
1270
1271};
1272
1273//  CosExternalizationContainment Module, p 8-26 CORBAservices,
1274// Externalization Service V1.0, 3/94
1275
1276// #include <Containment.idl>
1277// #include <CompoundExternalization.idl>
1278
1279module CosExternalizationContainment {
1280
1281        interface Relationship :
1282                        ::COSS::CosCompoundExternalization::Relationship,
1283                        ::COSS::CosContainment::Relationship {};
1284
1285        interface ContainsRole :
1286                        ::COSS::CosCompoundExternalization::Role,
1287                        ::COSS::CosContainment::ContainsRole {};
1288
1289        interface ContainedInRole :
1290                        ::COSS::CosCompoundExternalization::Role,
1291                        ::COSS::CosContainment::ContainedInRole {};
1292};
1293
1294// CosReference Module, p 9-50 CORBAservices,
1295//  Relationship Service V1.0, 3/94
1296
1297// #include <Graphs.idl>
1298
1299module CosReference {
1300
1301        interface Relationship :
1302                        ::COSS::CosRelationships::Relationship {};
1303
1304        interface ReferencesRole : ::COSS::CosGraphs::Role {};
1305
1306        interface ReferencedByRole : ::COSS::CosGraphs::Role {};
1307
1308};
1309
1310// CosExternalizationReference Module, p 8-28 CORBAservices,
1311// Externalization Service V1.0, 3/94
1312
1313// #include <Reference.idl>
1314// #include <CompoundExternalization.idl>
1315
1316module CosExternalizationReference {
1317
1318        interface Relationship :
1319                        ::COSS::CosCompoundExternalization::Relationship,
1320                        ::COSS::CosReference::Relationship {};
1321
1322        interface ReferencesRole :
1323                        ::COSS::CosCompoundExternalization::Role,
1324                        ::COSS::CosReference::ReferencesRole {};
1325
1326        interface ReferencedByRole :
1327                        ::COSS::CosCompoundExternalization::Role,
1328                        ::COSS::CosReference::ReferencedByRole {};
1329};
1330
1331// PIDL for CosTSInteroperation Module, p 10-59
1332// CORBAservices, Transaction Service V1.0, 3/94
1333module CosTSInteroperation { // PIDL
1334        struct otid_t {
1335                long formatID; /*format identifier. 0 is OSI TP */
1336                long bequal_length;
1337                sequence <octet> tid;
1338	};
1339        struct TransIdentity {
1340                ::COSS::CosTransactions::Coordinator coordinator;
1341                ::COSS::CosTransactions::Terminator terminator;
1342                otid_t otid;
1343	};
1344        struct PropagationContext {
1345                unsigned long timeout;
1346                TransIdentity current;
1347                sequence <TransIdentity> parents;
1348                any implementation_specific_data;
1349        };
1350};
1351
1352// PIDL for CosTSPortability Module, p 10-63
1353// CORBAservices, Transaction Service V1.0, 3/94
1354
1355module CosTSPortability { // PIDL
1356        typedef long ReqId;
1357
1358        interface Sender {
1359                void sending_request(in ReqId id,
1360                        out ::COSS::CosTSInteroperation::PropagationContext ctx);
1361                void received_reply(in ReqId id,
1362                        in ::COSS::CosTSInteroperation::PropagationContext ctx,
1363                        in ::CORBA::Environment env);
1364        };
1365
1366        interface Receiver {
1367                void received_request(in ReqId id,
1368                        in ::COSS::CosTSInteroperation::PropagationContext ctx);
1369                void sending_reply(in ReqId id,
1370                        out::COSS::CosTSInteroperation::PropagationContext ctx);
1371        };
1372};
1373
1374// CosCompoundLifeCycle Module, p 6-30 CORBAservices,
1375// Life Cycle Service V1.0, 3/94
1376
1377// #include <LifeCycle.idl>
1378// #include <Relationships.idl>
1379// #include <Graphs.idl>
1380
1381module CosCompoundLifeCycle {
1382        interface OperationsFactory;
1383        interface Operations;
1384        interface Node;
1385        interface Role;
1386        interface Relationship;
1387        interface PropagationCriteriaFactory;
1388
1389        enum Operation {copy, move, remove};
1390
1391        struct RelationshipHandle {
1392                        Relationship the_relationship;
1393                        ::COSS::CosObjectIdentity::ObjectIdentifier constant_random_id;
1394        };
1395
1396        interface OperationsFactory {
1397                        Operations create_compound_operations();
1398        };
1399
1400        interface Operations {
1401                        Node copy (
1402                                                in Node starting_node,
1403                                                in ::COSS::CosLifeCycle::FactoryFinder there,
1404                                                in ::COSS::CosLifeCycle::Criteria the_criteria)
1405                                raises (::COSS::CosLifeCycle::NoFactory,
1406                                                ::COSS::CosLifeCycle::NotCopyable,
1407                                                ::COSS::CosLifeCycle::InvalidCriteria,
1408                                                ::COSS::CosLifeCycle::CannotMeetCriteria);
1409                        void move (
1410                                                in Node starting_node,
1411                                                in ::COSS::CosLifeCycle::FactoryFinder there,
1412                                                in ::COSS::CosLifeCycle::Criteria the_criteria)
1413                                raises (::COSS::CosLifeCycle::NoFactory,
1414                                                ::COSS::CosLifeCycle::NotMovable,
1415                                                ::COSS::CosLifeCycle::InvalidCriteria,
1416                                                ::COSS::CosLifeCycle::CannotMeetCriteria);
1417                        void remove (in Node starting_node)
1418                                raises (::COSS::CosLifeCycle::NotRemovable);
1419                        void destroy();
1420                };
1421
1422        interface Node : ::COSS::CosGraphs::Node {
1423                        exception NotLifeCycleObject {};
1424                        void copy_node ( in ::COSS::CosLifeCycle::FactoryFinder there,
1425                                                in ::COSS::CosLifeCycle::Criteria the_criteria,
1426                                                out Node new_node,
1427                                                out ::COSS::CosGraphs::Node::Roles roles_of_new_node)
1428                                raises (::COSS::CosLifeCycle::NoFactory,
1429                                                ::COSS::CosLifeCycle::NotCopyable,
1430                                                ::COSS::CosLifeCycle::InvalidCriteria,
1431                                                ::COSS::CosLifeCycle::CannotMeetCriteria);
1432                        void move_node (in ::COSS::CosLifeCycle::FactoryFinder there,
1433                                                in ::COSS::CosLifeCycle::Criteria the_criteria)
1434                                raises (::COSS::CosLifeCycle::NoFactory,
1435                                                ::COSS::CosLifeCycle::NotMovable,
1436                                                ::COSS::CosLifeCycle::InvalidCriteria,
1437                                                ::COSS::CosLifeCycle::CannotMeetCriteria);
1438                        void remove_node ()
1439                                raises (::COSS::CosLifeCycle::NotRemovable);
1440                        ::COSS::CosLifeCycle::LifeCycleObject get_life_cycle_object()
1441                                raises (NotLifeCycleObject);
1442                };
1443
1444        interface Role : ::COSS::CosGraphs::Role {
1445                        Role copy_role (in ::COSS::CosLifeCycle::FactoryFinder there,
1446                                                in ::COSS::CosLifeCycle::Criteria the_criteria)
1447                                raises (::COSS::CosLifeCycle::NoFactory,
1448                                                ::COSS::CosLifeCycle::NotCopyable,
1449                                                ::COSS::CosLifeCycle::InvalidCriteria,
1450                                                ::COSS::CosLifeCycle::CannotMeetCriteria);
1451                        void move_role (in ::COSS::CosLifeCycle::FactoryFinder there,
1452                                                in ::COSS::CosLifeCycle::Criteria the_criteria)
1453                                raises (::COSS::CosLifeCycle::NoFactory,
1454                                                ::COSS::CosLifeCycle::NotMovable,
1455                                                ::COSS::CosLifeCycle::InvalidCriteria,
1456                                                ::COSS::CosLifeCycle::CannotMeetCriteria);
1457                        ::COSS::CosGraphs::PropagationValue life_cycle_propagation (
1458                                                in Operation op,
1459                                                in RelationshipHandle rel,
1460                                                in ::COSS::CosRelationships::RoleName to_role_name,
1461                                                out boolean same_for_all);
1462                };
1463
1464        interface Relationship :
1465                                ::COSS::CosRelationships::Relationship {
1466                        Relationship copy_relationship (
1467                                                in ::COSS::CosLifeCycle::FactoryFinder there,
1468                                                in ::COSS::CosLifeCycle::Criteria the_criteria,
1469                                                in ::COSS::CosGraphs::NamedRoles new_roles)
1470                                raises (::COSS::CosLifeCycle::NoFactory,
1471                                                ::COSS::CosLifeCycle::NotCopyable,
1472                                                ::COSS::CosLifeCycle::InvalidCriteria,
1473                                                ::COSS::CosLifeCycle::CannotMeetCriteria);
1474                        void move_relationship (
1475                                                in ::COSS::CosLifeCycle::FactoryFinder there,
1476                                                in ::COSS::CosLifeCycle::Criteria the_criteria)
1477                                raises (::COSS::CosLifeCycle::NoFactory,
1478                                                ::COSS::CosLifeCycle::NotMovable,
1479                                                ::COSS::CosLifeCycle::InvalidCriteria,
1480                                                ::COSS::CosLifeCycle::CannotMeetCriteria);
1481                        ::COSS::CosGraphs::PropagationValue life_cycle_propagation (
1482                                                in Operation op,
1483                                                in ::COSS::CosRelationships::RoleName from_role_name,
1484                                                in ::COSS::CosRelationships::RoleName to_role_name,
1485                                                out boolean same_for_all);
1486        };
1487
1488        interface PropagationCriteriaFactory {
1489                        ::COSS::CosGraphs::TraversalCriteria create(in Operation op);
1490        };
1491
1492};
1493
1494//  CosLifeCycleContainment Module, p 6-42 CORBAservices,
1495//  Life Cycle Service V1.0, 3/94
1496
1497// #include <Containment.idl>
1498// #include <CompoundLifeCycle.idl>
1499
1500module CosLifeCycleContainment {
1501
1502        interface Relationship :
1503                        ::COSS::CosCompoundLifeCycle::Relationship,
1504                        ::COSS::CosContainment::Relationship {};
1505
1506        interface ContainsRole :
1507                        ::COSS::CosCompoundLifeCycle::Role,
1508                        ::COSS::CosContainment::ContainsRole {};
1509
1510        interface ContainedInRole :
1511                        ::COSS::CosCompoundLifeCycle::Role,
1512                        ::COSS::CosContainment::ContainedInRole {};
1513};
1514
1515// CosLifeCycleReference Module, p 6-44 CORBAservices,
1516// Life Cycle Service V1.0, 3/94
1517
1518// #include <Reference.idl>
1519// #include <CompoundLifeCycle.idl>
1520
1521module CosLifeCycleReference {
1522
1523        interface Relationship :
1524                        ::COSS::CosCompoundLifeCycle::Relationship,
1525                        ::COSS::CosReference::Relationship {};
1526
1527        interface ReferencesRole :
1528                        ::COSS::CosCompoundLifeCycle::Role,
1529                        ::COSS::CosReference::ReferencesRole {};
1530
1531        interface ReferencedByRole :
1532                        ::COSS::CosCompoundLifeCycle::Role,
1533                        ::COSS::CosReference::ReferencedByRole {};
1534};
1535
1536
1537}; // end module COSS
1538