summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/CosNotifyComm.idl
blob: ffb804c309101f0dfb7786d4da4df6cb8916dceb (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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
// $Id$
// ==========================================================================
//
// = LIBRARY
//   orbsvcs
//
// = FILENAME
//   CosNotifyComm.idl
//
// = DESCRIPTION
//   Part of the Notification Service
//
// = AUTHOR
//    Pradeep Gore <pradeep@cs.wustl.edu>
//
// ==========================================================================

#ifndef _COS_NOTIFY_COMM_IDL_
#define _COS_NOTIFY_COMM_IDL_
#pragma prefix "omg.org"

#include "CosNotification.idl"
#include "CosEventComm.idl"

module CosNotifyComm {

        exception InvalidEventType { CosNotification::EventType type; };

        interface NotifyPublish {

                void offer_change (
                                in CosNotification::EventTypeSeq added,
                                in CosNotification::EventTypeSeq removed )
                        raises ( InvalidEventType );

        }; // NotifyPublish

        interface NotifySubscribe {

                void subscription_change(
                                in CosNotification::EventTypeSeq added,
                                in CosNotification::EventTypeSeq removed )
                        raises ( InvalidEventType );

        }; // NotifySubscribe

        interface PushConsumer :
                NotifyPublish,
                CosEventComm::PushConsumer {
        }; // PushConsumer

        interface PullConsumer :
                NotifyPublish,
                CosEventComm::PullConsumer {
        }; // PullConsumer

        interface PullSupplier :
                NotifySubscribe,
                CosEventComm::PullSupplier {
        }; // PullSupplier

        interface PushSupplier :
                NotifySubscribe,
                CosEventComm::PushSupplier {
        };

        interface StructuredPushConsumer : NotifyPublish {

                void push_structured_event(
                        in CosNotification::StructuredEvent notification)
                        raises(CosEventComm::Disconnected);

                void disconnect_structured_push_consumer();

        }; // StructuredPushConsumer

        interface StructuredPullConsumer : NotifyPublish {
                void disconnect_structured_pull_consumer();
        }; // StructuredPullConsumer

        interface StructuredPullSupplier : NotifySubscribe {

                CosNotification::StructuredEvent pull_structured_event()
                        raises(CosEventComm::Disconnected);

                CosNotification::StructuredEvent try_pull_structured_event(
                                out boolean has_event)
                        raises(CosEventComm::Disconnected);

                void disconnect_structured_pull_supplier();

        }; // StructuredPullSupplier

        interface StructuredPushSupplier : NotifySubscribe {
                void disconnect_structured_push_supplier();
        }; // StructuredPushSupplier

        interface SequencePushConsumer : NotifyPublish {

                void push_structured_events(
                                in CosNotification::EventBatch notifications)
                        raises(CosEventComm::Disconnected);

                void disconnect_sequence_push_consumer();

        }; // SequencePushConsumer

        interface SequencePullConsumer : NotifyPublish {
                void disconnect_sequence_pull_consumer();
        }; // SequencePullConsumer

        interface SequencePullSupplier : NotifySubscribe {

                CosNotification::EventBatch pull_structured_events(
                                in long max_number )
                        raises(CosEventComm::Disconnected);

                CosNotification::EventBatch try_pull_structured_events(
                                in long max_number,
                                out boolean has_event)
                        raises(CosEventComm::Disconnected);

                void disconnect_sequence_pull_supplier();

        }; // SequencePullSupplier

        interface SequencePushSupplier : NotifySubscribe {
                void disconnect_sequence_push_supplier();
        }; // SequencePushSupplier

}; // CosNotifyComm

#endif /* _COS_NOTIFY_COMM_IDL_ */