summaryrefslogtreecommitdiff
path: root/TAO/docs/ec_options.html
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/docs/ec_options.html')
-rw-r--r--TAO/docs/ec_options.html355
1 files changed, 0 insertions, 355 deletions
diff --git a/TAO/docs/ec_options.html b/TAO/docs/ec_options.html
deleted file mode 100644
index 06c8c54d8ed..00000000000
--- a/TAO/docs/ec_options.html
+++ /dev/null
@@ -1,355 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>Real-time Event Channel Configuration</title>
- <!-- $Id$ -->
- </head>
-
- <body>
- <CENTER>
- <h1>Real-time Event Channel Configuration</h1>
- </CENTER>
-
- <H3>Overview</H3>
-
- <P>The new implementation of the real-time event channel uses a
- factory to build all the objects and strategies it requires.
- The factory can be dynamically loaded using ACE Service
- Configurator, this is extremely convenient because the factory
- can also parse options in the Service Configurator script file.
- </P>
-
- <P>The current implementation provides a default implementation
- for this Factory, this document describes the options used by
- this default implementation.
- </P>
-
- <H3>The configuration file</H3>
-
- <P>The real-time event channel uses the same service configurator
- file that the ORB uses, the default name for this file is
- <CODE>svc.conf</CODE>, but the ORB option
- <CODE>-ORBSvcConf</CODE> can be used to override this.
- The format of the file is described in detail in
- the service configurator documentation, but the relevant section
- for the event channel looks like this:
- </P>
-
-<PRE>
-# Comments go here...
-# More comments if you want to...
-static EC_Factory "-ECFiltering basic ....."
-</PRE>
-
- <P>All the event service factory options start with
- <CODE>-EC</CODE></P>
-
-
- <H3>The options</H3>
-
- <P><TABLE BORDER="2" CELLSPACING="2" CELLPADDING="0">
- <TR>
- <TH>Option</TH>
- <TH>Description</TH>
- </TR>
- <!-- <TR NAME="ECDispatching"> -->
- <TR>
- <TD><CODE>-ECDispatching</CODE>
- <EM>dispatching_strategy</EM>
- </TD>
- <TD>Select the dispatching strategy used by the real-time
- event service. A <EM>reactive</EM> strategy will use the
- same thread that received the event from the supplier to
- push the event to all the consumers,
- the <EM>priority</EM> strategy will use a prioritized pool
- of threads and will query the scheduling service to select
- the thread that will dispatch each event;
- the <EM>mt</EM> strategy will also use a pool of threads,
- but the thread to dispatch is randomly selected.
- </TD>
- </TR>
-
- <!-- <TR NAME="ECDispatchingThreads"> -->
- <TR>
- <TD><CODE>-ECDispatchingThreads</CODE>
- <EM>number_of_threads</EM>
- </TD>
- <TD>Select the number of threads used bythe <EM>mt</EM>
- dispatching strategy.
- </TD>
- </TR>
-
- <!-- <TR NAME="ECFiltering"> -->
- <TR>
- <TD><CODE>-ECFiltering</CODE>
- <EM>consumer_filtering_strategy</EM>
- </TD>
- <TD>Select the filtering strategy used by the consumers.
- The <EM>null</EM> filtering strategy will build trivial
- filters for all consumers.
- The <EM>basic</EM> filtering strategy supports
- disjunction, conjunctions and timeouts based on the
- subscriptions passed by the consumer during the connect
- call.
- The <EM>priority</EM> filtering strategy supports the same
- features, but it also collaborates with the scheduling
- service to build the dependency graph.
- </TD>
- </TR>
-
- <!-- <TR NAME="ECSupplierFiltering"> -->
- <TR>
- <TD><CODE>-ECSupplierFiltering</CODE>
- <EM>supplier_filtering_strategy</EM>
- </TD>
- <TD>The event channel can also perform some filtering close
- to the suppliers by minimizing the number of consumers
- that are tested for given event.
- If the strategy is <EM>null</EM> then a global collection
- of consumers is maintained and each event is filtered by
- each consumer.
- If the strategy is <EM>per-supplier</EM> then the EC uses
- the supplier publications and the consumer subscriptions
- to determine which consumers could potentially be
- interested in events for each supplier.
- This set of consumers is usually smaller than the complete
- set and it is thus faster to traverse it, but keeping more
- collections of consumers increases the connection and
- disconnection time as well as the memory requirements.
- </TD>
- </TR>
-
- <!-- <TR NAME="ECTimeout"> -->
- <TR>
- <TD><CODE>-ECTimeout</CODE>
- <EM>timeout_strategy</EM>
- </TD>
- <TD>A consumer can request that the event channel generate
- periodic or oneshot timeout events.
- This option controls the strategy to generate the
- timeouts,
- using <EM>reactive</EM> the same reactor used for the ORB
- is used by the event service.
- The <EM>priority</EM> strategy uses a prioritized group of
- threads, timeouts with higher rate are generated by
- threads of higher priority.
- <BR><B>NOTE: The <EM>priority</EM> strategy is not
- implemented</B>
- </TD>
- </TR>
-
- <!-- <TR NAME="ECObserver"> -->
- <TR>
- <TD><CODE>-ECObserver</CODE>
- <EM>observer</EM>
- </TD>
- <TD>The event channel uses the Observer pattern to report
- changes in the subscriptions and publications of its
- suppliers and consumers; this is specially useful in the
- implementation of event channel gateways.
- The user can disable this feature by selecting the
- <EM>null</EM> strategy;
- whereas the <EM>basic</EM> strategy provides a simple, yet
- efficient implementation.
- </TD>
- </TR>
-
- <!-- <TR NAME="ECScheduling"> -->
- <TR>
- <TD><CODE>-ECScheduling</CODE>
- <EM>scheduling_strategy</EM>
- </TD>
- <TD>The event channel can collaborate with the scheduling
- service to build the dependency list between the consumers
- and the suppliers.
- If the <EM>null</EM> scheduling strategy is selected this
- feature is disabled,
- the <EM>priority</EM> strategy enables this feature.
- <BR><B>NOTE:<B> The default is to have the feature disabled.
- </TD>
- </TR>
-
- <!-- <TR NAME="ECPushSupplierSet"> -->
- <TR>
- <TD><CODE>-ECPushSupplierSet</CODE>
- <EM>strategy</EM>
- </TD>
- <TD><P>Consumers can connect and disconnect from the event
- channel as part of push to one consumer;
- changing the set of consumers as a result of such an
- operation would invalidate the iterators used by the event
- channel to dispatch to the relevant consumers.
- There are several ways to handle this problem, for example
- a copy of the set could be made <I>before</I> initiating
- the dispatch, or only if there is a change on the set
- <I>during</I> the dispatch.
- If the dispatching strategy is not reactive then it is
- possible to lock the set of consumers during the duration
- of the dispatch operation, the change in the subscriptions
- will be held until the event is completely processed.
- Finally the subscription change could be delayed until the
- event is fully processed and there is no risk of
- invalidating an iterator.
- </P>
- <P>All this strategies have merits under different
- circumstances, the user can select the right one for his
- application using this option.
- The <EM>immediate</EM> strategy will perform any changes
- on the consumer set immediately, simply using a lock to
- synchronize access. The <EM>delayed</EM> operation will
- wait until there are no threads iterating over the set
- to perform any modifications on it.
- The <EM>immediate_st</EM> simply performs the
- modications without taking any locks, it is useful for
- single threaded applications that do not receive changes
- are part of an upcall (for example: if there are no
- collocated consumers).
- </P>
- </TD>
- </TR>
-
- <!-- <TR NAME="ECProxyConsumerLock"> -->
- <TR>
- <TD><CODE>-ECProxyConsumerLock</CODE>
- <EM>lock_type</EM>
- </TD>
- <TD>Select the lock type (<EM>null</EM>, <EM>thread</EM> or
- <EM>recursive</EM>) to synchronize access to the
- ProxyPushConsumer state.
- </TD>
- </TR>
-
- <!-- <TR NAME="ECProxySupplierLock"> -->
- <TR>
- <TD><CODE>-ECProxySupplierLock</CODE>
- <EM>lock_type</EM>
- </TD>
- <TD>Select the lock type (<EM>null</EM>, <EM>thread</EM> or
- <EM>recursive</EM>) to synchronize access to the
- ProxyPushSupplier state.
- </TD>
- </TR>
-
- <!-- <TR NAME="ECConsumerAdminLock"> -->
- <TR>
- <TD><CODE>-ECConsumerAdminLock</CODE>
- <EM>lock_type</EM>
- </TD>
- <TD>Select the lock type (<EM>null</EM>, <EM>thread</EM> or
- <EM>recursive</EM>) to synchronize access to the
- ConsumerAdmin state.
- </TD>
- </TR>
-
- <!-- <TR NAME="ECSupplierAdminLock"> -->
- <TR>
- <TD><CODE>-ECSupplierAdminLock</CODE>
- <EM>lock_type</EM>
- </TD>
- <TD>Select the lock type (<EM>null</EM>, <EM>thread</EM> or
- <EM>recursive</EM>) to synchronize access to the
- SupplierAdmin state.
- </TD>
- </TR>
- </TABLE>
- </P>
-
- <H3>The constructor</H3>
-
- <P>The <CODE>TAO_EC_Event_Channel</CODE> class implements the
- <CODE>RtecEventChannelAdmin::EventChannel</CODE> interface;
- this class takes one mandatory and two optional parameters in
- its constructor:
- </P>
-
-<PRE>
- TAO_EC_Event_Channel (const TAO_EC_Event_Channel_Attributes& attributes,
- TAO_EC_Factory* factory = 0,
- int own_factory = 0);
-</PRE>
-
- <P>The <CODE>factory</CODE> is an optional parameter to override
- the default strategy factory used by the event channel,
- the event channel will destroy the factory if the
- <CODE>own_factory</CODE> argument is true.
- </P>
-
- <P>The <CODE>attributes</CODE> parameter can be used to fine tune
- some of the algorithms and strategies used by the event channel,
- the default values are probably OK for most applications.
- Notice that the attributes include the POA used to activate the
- ConsumerAdmin, SupplierAdmin, ProxyPushConsumer and
- ProxyPushSupplier objects;
- this POAs must have the <CODE>IMPLICIT_ACTIVATION</CODE> and the
- <CODE>SYSTEM_ID</CODE> policies (as the RootPOA does).
- </P>
-
- <P><TABLE BORDER="2" CELLSPACING="2" CELLPADDING="0">
- <TR><TH>Attribute</TH><TH>Description</TH></TR>
-
- <TR><TD><CODE>consumer_reconnecto</CODE></TD>
- <TD>If the attribute is not zero then the same consumer can
- call <CODE>connect_push_consumer</CODE> on its
- ProxyPushSupplier multiple times to change its
- subscriptions;
- this is usually more efficient that disconnecting and
- connecting again.
- </TD>
- </TR>
-
- <TR><TD><CODE>supplier_reconnecto</CODE></TD>
- <TD>If the attribute is not zero then the same supplier can
- call <CODE>connect_push_supplier</CODE> on its
- ProxyPushConsumer multiple times to change its
- publications;
- this is usually more efficient that disconnecting and
- connecting again.
- </TD>
- </TR>
-
- <TR><TD><CODE>busy_hwm</CODE></TD>
- <TD>When using the delayed strategy to update
- ProxyPushSupplier sets this flag controls the maximum
- number of thread that can simultaneously iterate over the
- set before blocking.
- It can be used to avoid starvation in delayed updates on
- the set.
- </TD>
- </TR>
-
- <TR><TD><CODE>max_write_delay</CODE></TD>
- <TD>When using the delayed strategy to update
- ProxyPushSupplier sets this flag controls the maximum
- number of threads that will initiate dispatching
- <B>after</B> a change has been posted.
- Any thread after that is blocked until the operations are
- performed.
- It can be used to completely stop starvation of delayed
- updates on the set.
- </TD>
- </TR>
-
- <TR><TD><CODE>scheduler</CODE></TD>
- <TD>Most configurations of the real-time event channel do
- not require an scheduler.
- If any of the strategies that require an scheduling
- service is selected then this attribute should be set
- appropiately.
- </TD>
- </TR>
- </TABLE>
- </P>
-
- <P><HR><P>
-
- Back to the TAO <A HREF="index.html">components documentation</A>.
-
- <!--#include virtual="/~schmidt/cgi-sig.html" -->
-
- <address><a href="mailto:coryan@cs.wustl.edu">Carlos O'Ryan</a></address>
-<!-- Created: Thu Jul 1 21:44:28 CDT 1999 -->
-<!-- hhmts start -->
-Last modified: Fri Jul 2 11:24:48 CDT 1999
-<!-- hhmts end -->
- </body>
-</html>