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 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- This document was generated using DocBuilder 3.3.3 -->
<HTML>
<HEAD>
<TITLE>CosEventChannelAdmin</TITLE>
<SCRIPT type="text/javascript" src="../../../../doc/erlresolvelinks.js">
</SCRIPT>
<STYLE TYPE="text/css">
<!--
.REFBODY { margin-left: 13mm }
.REFTYPES { margin-left: 8mm }
-->
</STYLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#FF00FF"
ALINK="#FF0000">
<!-- refpage -->
<CENTER>
<A HREF="http://www.erlang.se">
<IMG BORDER=0 ALT="[Ericsson AB]" SRC="min_head.gif">
</A>
<H1>CosEventChannelAdmin</H1>
</CENTER>
<H3>MODULE</H3>
<DIV CLASS=REFBODY>
CosEventChannelAdmin
</DIV>
<H3>MODULE SUMMARY</H3>
<DIV CLASS=REFBODY>
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.
</DIV>
<H3>DESCRIPTION</H3>
<DIV CLASS=REFBODY>
<P> 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.
<P> There are four general models of communication. These are:
<P>
<UL>
<LI>
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
<CODE>Notifier</CODE>. Active suppliers use event channel to push data to
passive consumers registered with the event channel.
</LI>
<LI>
The canonical pull model. It allows consumers to request events from
suppliers. Event channels play the role of <CODE>Procure</CODE> since they
procure events on behalf of consumers. Active consumers can explicitly
pull data from passive suppliers via the event channels.
</LI>
<LI>
The hybrid push/pull model. It allows consumers request events queued at
a channel by suppliers. Event channels play the role of <CODE>Queue</CODE>.
Active consumers explicitly pull data deposited by active suppliers via
the event channels.
</LI>
<LI>
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
<CODE>Intelligent agent</CODE>. Active event channels can pull data from
passive suppliers to push it to passive consumers.
</LI>
</UL>
<P> To get access to all definitions, e.g., exceptions,
include necessary <CODE>hrl</CODE> files by using:<BR>
<CODE>-include_lib("cosEvent/include/*.hrl").</CODE>
<P> There are seven different interfaces supported in the service:
<P>
<UL>
<LI>
ProxyPushConsumer
</LI>
<LI>
ProxyPullSupplier
</LI>
<LI>
ProxyPullConsumer
</LI>
<LI>
ProxyPushSupplier
</LI>
<LI>
ConsumerAdmin
</LI>
<LI>
SupplierAdmin
</LI>
<LI>
EventChannel
</LI>
</UL>
<P> IDL specification for CosEventChannelAdmin:
<PRE>
#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
</PRE>
</DIV>
<H3>AUTHORS</H3>
<DIV CLASS=REFBODY>
support - support@erlang.ericsson.se<BR>
</DIV>
<CENTER>
<HR>
<SMALL>cosEvent 2.1<BR>
Copyright © 1991-2006
<A HREF="http://www.erlang.se">Ericsson AB</A><BR>
</SMALL>
</CENTER>
</BODY>
</HTML>
|