summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/CosEventChannelAdmin.idl
blob: a5fa1dd2057e0aa29bfd542659051dada857a62b (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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
// $Id$

// ============================================================================
//
// = LIBRARY
//    orbsvcs
//
// = FILENAME
//    CosEventChannelAdmin.idl
//
// = DESCRIPTION
//    EVENT SERVICE - described in CORBAservices: Common Object Services
//    Specification, chapter 4.
//    CosEventChannelAdmin Module, page 4-15 includes the following interfaces:
//    ProxyPushConsumer, ProxyPullSupplier, ProxyPullConsumer,
//    ProxyPushSupplier, ConsumerAdmin, SupplierAdmin, EventChannel
//    The Event service description can be downloaded from
//    ftp://www.omg.org/pub/docs/formal/97-11-02.idl
//
// = AUTHOR
//    Pradeep Gore <pradeep@cs.wustl.edu>
//
// ============================================================================


#ifndef TAO_EVENTCHANNELADMIN_IDL
#define  TAO_EVENTCHANNELADMIN_IDL

#include "CosEventComm.idl"

#pragma prefix "omg.org"

module CosEventChannelAdmin
{
  // = TITLE
  //   IDL module for the Corba Object Service for Event Communication.
  //
  // = DESCRIPTION
  //   The CosEventChannelAdmin module defines the interfaces for
  //   making connections between suppliers and consumers.

  exception AlreadyConnected {};
  exception TypeError {};

  interface ProxyPushConsumer: CosEventComm::PushConsumer
    {
      // = TITLE
      //   Definition of the ProxyPushConsumer.
      //
      // = DESCRIPTION
      //   A ProxyPushConsumer object is used to connect a push-style
      //   supplier.

      void connect_push_supplier (in CosEventComm::PushSupplier push_supplier)
        raises (AlreadyConnected);
      // A nil object reference may be passed to the
      // connect_push_supplier operation; if so a channel cannot
      // invoke the disconnect_push_supplier operation on the
      // supplier; the supplier may be disconnected from the channel
      // without being informed.  If the ProxyPushConsumer is already
      // connected to a PushSupplier, then the AlreadyConnected
      // exception is raised.
    };

  interface ProxyPullSupplier : CosEventComm::PullSupplier
    {
      // = TITLE
      //   Definition of the proxyPullSupplier.
      //
      // = DESCRIPTION
      //   A ProxyPullSupplier is used to connect a pull-style consumer.

      void connect_pull_consumer (in CosEventComm::PullConsumer pull_consumer)
        raises (AlreadyConnected);
      // A nil object reference may be passed to the
      // connect_pull_consumer operation; if so a channel cannot
      // invoke a disconnect_pull_consumer operation on the consumer;
      // the consumer may be disconnected from the channel without
      // being informed.  If the ProxyPullSupplier is already
      // connected to a PullConsumer, then the AlreadyConnected
      // exception is raised.
    };

  interface ProxyPullConsumer : CosEventComm::PullConsumer
    {
      // = TITLE
      //   Definition of the ProxyPullConsumer.
      //
      // = DESCRIPTION
      //   The ProxyPullConsumer object is used to connect a
      //   pull-style supplier.

      void connect_pull_supplier (in CosEventComm::PullSupplier pull_supplier)
        raises (AlreadyConnected, TypeError);
      // Connects a pull-style supplier to the Event Channel.  It
      // raises the BAD_PARAM exception if a nil object reference is
      // passed to the connect_pull_supplier operation.  If the
      // ProxyPullConsumer is already connected to a PullSupplier,
      // then the AlreadyConnected exception is raised.
    };

  interface ProxyPushSupplier : CosEventComm::PushSupplier
    {
      // = TITLE
      //   Definition of the ProxyPushSupplier.
      //
      // = DESCRIPTION
      //   The ProxyPushSupplier object is used to connect a push-style consumer.

      void connect_push_consumer (in CosEventComm::PushConsumer push_consumer)
        raises (AlreadyConnected, TypeError);
      // Connects a push-style consumer to the Event Channel.  It
      // raises the BAD_PARAM exception if a nil object reference is
      // passed to the connect_push_consumer operation.  If the
      // ProxyPushSupplier is already connected to a PushConsumer,
      // then the AlreadyConnected exception is raised.
    };

  interface ConsumerAdmin
    {
      // = TITLE
      //   Definition of the ConsumerAdmin.
      //
      // = DESCRIPTION
      //   The ConsumerAdmin interface allows consumers to be
      //   connected to the event channel.

      ProxyPushSupplier obtain_push_supplier ();
      // The obtain_push_supplier operation returns a
      // ProxyPushSupplier object.

      ProxyPullSupplier obtain_pull_supplier ();
      // The obtain_pull_supplier operation returns a
      // ProxyPullSupplier object.  The ProxyPullSupplier object is
      // then used to connect a pull-style consumer.
    };

  interface SupplierAdmin
    {
      // = TITLE
      //   Definition of the SupplierAdmin.
      //
      // = DESCRIPTION
      //   The SupplierAdmin interface allows suppliers to be
      //   connected to the event channel.

      ProxyPushConsumer obtain_push_consumer ();
      // The obtain_push_consumer operation returns a
      // ProxyPushConsumer object.  The ProxyPushConsumer object is
      // then used to connect a push-style supplier.

      ProxyPullConsumer obtain_pull_consumer ();
      // The obtain_pull_consumer operation returns a
      // ProxyPullConsumer object.  The ProxyPullConsumer object is
      // then used to connect a pull-style supplier.
    };

  interface EventChannel
    {
      // = TITLE
      //   Definition of the EventChannel.
      //
      // = DESCRIPTION
      //   The EventChannel interface defines three administrative
      //   operations: adding consumers, adding suppliers, and
      //   destroying the channel.

      ConsumerAdmin for_consumers ();
      // The for_consumers operation returns an object reference that
      // supports the ConsumerAdmin interface.

      SupplierAdmin for_suppliers ();
      // The for_suppliers operation returns an object reference that
      // supports the SupplierAdmin interface.

      void destroy ();
      // The destroy operation destroys the event channel.
    };
};

#endif /* TAO_EVENTCHANNELADMIN_IDL */