File: CosEventChannelAdmin.3

package info (click to toggle)
erlang-manpages 1%3A12.b.3-1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 4,188 kB
  • ctags: 2
  • sloc: makefile: 68; perl: 30; sh: 15
file content (119 lines) | stat: -rw-r--r-- 3,957 bytes parent folder | download
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
.TH CosEventChannelAdmin 3 "cosEvent  2.1.3" "Ericsson AB" "ERLANG MODULE DEFINITION"
.SH MODULE
CosEventChannelAdmin \- The CosEventChannelAdmin defines a set if event service interfaces that enables decoupled asynchronous communication between objects and implements generic (untyped) version of the OMG COSS standard event service\&.
.SH DESCRIPTION
.LP
The event service defines two roles for objects: the supplier role and the consumer role\&. Suppliers supply event data to the event channel and consumers receive event data from the channel\&. Suppliers do not need to know the identity of the consumers, and vice versa\&. Consumers and suppliers are connected to the event channel via proxies, which are managed by ConsumerAdmin and SupplierAdmin objects\&.
.LP
There are four general models of communication\&. These are: 
.RS 2
.TP 2
*
The canonical push model\&. It allows the suppliers of events to initiate the transfer of event data to consumers\&. Event channels play the role of \fINotifier\fR\&. Active suppliers use event channel to push data to passive consumers registered with the event channel\&.
.TP 2
*
The canonical pull model\&. It allows consumers to request events from suppliers\&. Event channels play the role of \fIProcure\fR since they procure events on behalf of consumers\&. Active consumers can explicitly pull data from passive suppliers via the event channels\&.
.TP 2
*
The hybrid push/pull model\&. It allows consumers request events queued at a channel by suppliers\&. Event channels play the role of \fIQueue\fR\&. Active consumers explicitly pull data deposited by active suppliers via the event channels\&.
.TP 2
*
The hybrid pull/push model\&. It allows the channel to pull events from suppliers and push them to consumers\&. Event channels play the role of \fIIntelligent agent\fR\&. Active event channels can pull data from passive suppliers to push it to passive consumers\&.
.RE
.LP
To get access to all definitions, e\&.g\&., exceptions, include necessary \fIhrl\fR files by using:
.br
\fI-include_lib("cosEvent/include/*\&.hrl")\&.\fR
.LP
There are seven different interfaces supported in the service:
.RS 2
.TP 2
*
ProxyPushConsumer
.TP 2
*
ProxyPullSupplier
.TP 2
*
ProxyPullConsumer
.TP 2
*
ProxyPushSupplier
.TP 2
*
ConsumerAdmin
.TP 2
*
SupplierAdmin
.TP 2
*
EventChannel
.RE
.LP
IDL specification for CosEventChannelAdmin:

.nf
#ifndef _COSEVENTCHANELADMIN_IDL
#define _COSEVENTCHANELADMIN_IDL

#include "CosEventComm\&.idl"

#pragma prefix "omg\&.org"

module CosEventChannelAdmin
{
  exception AlreadyConnected{};
  exception TypeError{};

  interface ProxyPushConsumer: CosEventComm::PushConsumer
  {
    void connect_push_supplier(in CosEventComm::
                               PushSupplier push_supplier) 
                               raises (AlreadyConnected);
  };

  interface ProxyPullSupplier: CosEventComm::PullSupplier
  {
    void connect_pull_consumer(in CosEventComm::
                               PullConsumer pull_consumer) 
                               raises (AlreadyConnected);
  };

  interface ProxyPullConsumer: CosEventComm::PullConsumer
  {
    void connect_pull_supplier(in CosEventComm::
                               PullSupplier pull_supplier) 
                               raises (AlreadyConnected, TypeError);
  };

  interface ProxyPushSupplier: CosEventComm::PushSupplier
  {
    void connect_push_consumer(in CosEventComm::
                               PushConsumer push_consumer) 
                               raises (AlreadyConnected, TypeError);
  };

  interface ConsumerAdmin
  {
    ProxyPushSupplier obtain_push_supplier();
    ProxyPullSupplier obtain_pull_supplier();
  };

  interface SupplierAdmin
  {
    ProxyPushConsumer obtain_push_consumer();
    ProxyPullConsumer obtain_pull_consumer();
  };

  interface EventChannel
  {
    ConsumerAdmin for_consumers();
    SupplierAdmin for_suppliers();
    void destroy();
  };

};

#endif
.fi