summaryrefslogtreecommitdiff
path: root/TAO
diff options
context:
space:
mode:
authorcoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2001-09-17 20:50:34 +0000
committercoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2001-09-17 20:50:34 +0000
commita9205e1e340a741360b35858ee35913c3c2b9fe1 (patch)
treec9bf52712476688b451bb2a06c5ad0b6cc9cc3e0 /TAO
parentefde69a3c994bd533eb72e283c06f29f222486c2 (diff)
downloadATCD-a9205e1e340a741360b35858ee35913c3c2b9fe1.tar.gz
ChangeLogTag:Mon Sep 17 13:18:35 2001 Carlos O'Ryan <coryan@uci.edu>
Diffstat (limited to 'TAO')
-rw-r--r--TAO/ChangeLogs/ChangeLog-02a514
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_ConsumerAdmin.h92
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_ConsumerControl.h81
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_Default_Factory.h74
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_Defaults.h32
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_Dispatching.h82
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_Dispatching_Task.h67
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_EventChannel.h235
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_Event_Loader.h72
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_Factory.h88
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_MT_Dispatching.h65
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPullConsumer.h96
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPullSupplier.h117
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushConsumer.h135
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushSupplier.h113
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_Pulling_Strategy.h63
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_Reactive_ConsumerControl.h98
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_Reactive_Pulling_Strategy.h86
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_Reactive_SupplierControl.h98
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_SupplierAdmin.h86
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_SupplierControl.h79
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEventChannelAdmin.idl379
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEventComm.idl271
-rw-r--r--TAO/orbsvcs/orbsvcs/CosNotification.idl565
-rw-r--r--TAO/orbsvcs/orbsvcs/CosNotifyChannelAdmin.idl966
-rw-r--r--TAO/orbsvcs/orbsvcs/CosNotifyComm.idl484
-rw-r--r--TAO/orbsvcs/orbsvcs/CosNotifyFilter.idl676
-rw-r--r--TAO/orbsvcs/orbsvcs/RtecBase.idl63
-rw-r--r--TAO/orbsvcs/orbsvcs/RtecDefaultEventData.idl73
-rw-r--r--TAO/orbsvcs/orbsvcs/RtecEventChannelAdmin.idl469
-rw-r--r--TAO/orbsvcs/orbsvcs/RtecEventComm.idl175
-rw-r--r--TAO/orbsvcs/orbsvcs/RtecUDPAdmin.idl64
32 files changed, 4206 insertions, 2352 deletions
diff --git a/TAO/ChangeLogs/ChangeLog-02a b/TAO/ChangeLogs/ChangeLog-02a
index 66f394f3af7..2aa53c7c4e5 100644
--- a/TAO/ChangeLogs/ChangeLog-02a
+++ b/TAO/ChangeLogs/ChangeLog-02a
@@ -1,102 +1,142 @@
+Mon Sep 17 13:18:35 2001 Carlos O'Ryan <coryan@uci.edu>
+
+ * orbsvcs/orbsvcs/CosEventComm.idl:
+ * orbsvcs/orbsvcs/CosEventChannelAdmin.idl:
+ * orbsvcs/orbsvcs/CosEvent/CEC_ConsumerAdmin.h:
+ * orbsvcs/orbsvcs/CosEvent/CEC_ConsumerControl.h:
+ * orbsvcs/orbsvcs/CosEvent/CEC_Default_Factory.h:
+ * orbsvcs/orbsvcs/CosEvent/CEC_Defaults.h:
+ * orbsvcs/orbsvcs/CosEvent/CEC_Dispatching.h:
+ * orbsvcs/orbsvcs/CosEvent/CEC_Dispatching_Task.h:
+ * orbsvcs/orbsvcs/CosEvent/CEC_EventChannel.h:
+ * orbsvcs/orbsvcs/CosEvent/CEC_Event_Loader.h:
+ * orbsvcs/orbsvcs/CosEvent/CEC_Factory.h:
+ * orbsvcs/orbsvcs/CosEvent/CEC_MT_Dispatching.h:
+ * orbsvcs/orbsvcs/CosEvent/CEC_ProxyPullConsumer.h:
+ * orbsvcs/orbsvcs/CosEvent/CEC_ProxyPullSupplier.h:
+ * orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushConsumer.h:
+ * orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushSupplier.h:
+ * orbsvcs/orbsvcs/CosEvent/CEC_Pulling_Strategy.h:
+ * orbsvcs/orbsvcs/CosEvent/CEC_Reactive_ConsumerControl.h:
+ * orbsvcs/orbsvcs/CosEvent/CEC_Reactive_Pulling_Strategy.h:
+ * orbsvcs/orbsvcs/CosEvent/CEC_Reactive_SupplierControl.h:
+ * orbsvcs/orbsvcs/CosEvent/CEC_SupplierAdmin.h:
+ * orbsvcs/orbsvcs/CosEvent/CEC_SupplierControl.h:
+ Use Doxygen to document the COS Event Service implementation and
+ its IDL interfaces.
+
+ * orbsvcs/orbsvcs/RtecBase.idl:
+ * orbsvcs/orbsvcs/RtecDefaultEventData.idl:
+ * orbsvcs/orbsvcs/RtecEventChannelAdmin.idl:
+ * orbsvcs/orbsvcs/RtecEventComm.idl:
+ * orbsvcs/orbsvcs/RtecUDPAdmin.idl:
+ Use Doxygen to document TAO's Real-time Event Service interface.
+
+ * orbsvcs/orbsvcs/CosNotification.idl:
+ * orbsvcs/orbsvcs/CosNotifyChannelAdmin.idl:
+ * orbsvcs/orbsvcs/CosNotifyComm.idl:
+ * orbsvcs/orbsvcs/CosNotifyFilter.idl:
+ Use Doxygen to document the OMG Notification Service IDL files.
+
Sun Sep 16 11:22:12 2001 Balachandran <bala@cs.wustl.edu>
* TAO version 1.1.20 released.
Fri Sep 14 11:35:55 2001 Balachandran Natarajan <bala@cs.wustl.edu>
- * tao/Transport.cpp (consolidate_message): Used the size () of the
- message block instead of the length (). Thanks to Mahesh
- Varadarajan <mahesh.varadarajan@divatv.com> for
- reporting this.
+ * tao/Transport.cpp (consolidate_message): Used the size () of the
+ message block instead of the length (). Thanks to Mahesh
+ Varadarajan <mahesh.varadarajan@divatv.com> for
+ reporting this.
Fri Sep 14 07:08:41 2001 Balachandran Natarajan <bala@cs.wustl.edu>
- * tests/Makefile.bor: Added Cache_Growth_Test to this
- Makefile. Thanks to Johnny Willemsen for pointing this out.
+ * tests/Makefile.bor: Added Cache_Growth_Test to this
+ Makefile. Thanks to Johnny Willemsen for pointing this out.
Thu Sep 13 13:46:54 2001 Balachandran Natarajan <bala@cs.wustl.edu>
- * docs/Options.html: Changed -ORBCacheMax in the documentation to
- be -ORBConnectionCacheMax. Thanks to Jean-christophe Dubois
- <jcd@one.com> for reporting this.
+ * docs/Options.html: Changed -ORBCacheMax in the documentation to
+ be -ORBConnectionCacheMax. Thanks to Jean-christophe Dubois
+ <jcd@one.com> for reporting this.
Thu Sep 13 13:18:48 2001 Balachandran Natarajan <bala@cs.wustl.edu>
- * tests/Cache_Growth_Test: A new test for testing whether the
- Cache size grows when old clients start disconnecting and new
- clients start connecting.
-
- * tests/Cache_Growth_Test/run_test.pl:
- * tests/Cache_Growth_Test/Makefile:
- * tests/Cache_Growth_Test/Makefile.bor:
- * tests/Cache_Growth_Test/server.dsp:
- * tests/Cache_Growth_Test/Cache_Grow.dsw:
- * tests/Cache_Growth_Test/server.cpp:
- * tests/Cache_Growth_Test/client.cpp:
- * tests/Cache_Growth_Test/server.bor:
- * tests/Cache_Growth_Test/client.bor:
- * tests/Cache_Growth_Test/README:
- * tests/Cache_Growth_Test/Hello.h:
- * tests/Cache_Growth_Test/Hello.cpp: Files for the test.
-
- * tests/Makefile: Added the new test.
+ * tests/Cache_Growth_Test: A new test for testing whether the
+ Cache size grows when old clients start disconnecting and new
+ clients start connecting.
+
+ * tests/Cache_Growth_Test/run_test.pl:
+ * tests/Cache_Growth_Test/Makefile:
+ * tests/Cache_Growth_Test/Makefile.bor:
+ * tests/Cache_Growth_Test/server.dsp:
+ * tests/Cache_Growth_Test/Cache_Grow.dsw:
+ * tests/Cache_Growth_Test/server.cpp:
+ * tests/Cache_Growth_Test/client.cpp:
+ * tests/Cache_Growth_Test/server.bor:
+ * tests/Cache_Growth_Test/client.bor:
+ * tests/Cache_Growth_Test/README:
+ * tests/Cache_Growth_Test/Hello.h:
+ * tests/Cache_Growth_Test/Hello.cpp: Files for the test.
+
+ * tests/Makefile: Added the new test.
Thu Sep 13 12:46:45 2001 Balachandran Natarajan <bala@cs.wustl.edu>
- * tao/Transport.h:
- * tao/Transport.cpp: Changed the name of the method mark_invalid
- () to purge_entry (). The mark_invalid () does not remove the
- handler from cache. Just leaving the cache entry after the
- connection is closed leads to increase in run time memory
- requirements. See bug #1025 for details. Thanks to
- Jean-Christophe Dubois <jcd@one.com> and Kevin Cline
- <krc@one.com> for reporting this. Thanks to Chris Cleeland and
- Chad Elliott for reviewing the fix.
-
- * tao/IIOP_Connection_Handler.cpp:
- * tao/Strategies/DIOP_Connection_Handler.cpp:
- * tao/Strategies/UIOP_Connection_Handler.cpp:
- * tao/Strategies/SHMIOP_Connection_Handler.cpp:
- * orbsvcs/orbsvcs/SSLIOP/SSLIOP_Connection_Handler.cpp (handle_close):
-
- Purge the entry while closing down the connection instead of
- instead of marking it invalid.
-
+ * tao/Transport.h:
+ * tao/Transport.cpp: Changed the name of the method mark_invalid
+ () to purge_entry (). The mark_invalid () does not remove the
+ handler from cache. Just leaving the cache entry after the
+ connection is closed leads to increase in run time memory
+ requirements. See bug #1025 for details. Thanks to
+ Jean-Christophe Dubois <jcd@one.com> and Kevin Cline
+ <krc@one.com> for reporting this. Thanks to Chris Cleeland and
+ Chad Elliott for reviewing the fix.
+
+ * tao/IIOP_Connection_Handler.cpp:
+ * tao/Strategies/DIOP_Connection_Handler.cpp:
+ * tao/Strategies/UIOP_Connection_Handler.cpp:
+ * tao/Strategies/SHMIOP_Connection_Handler.cpp:
+ * orbsvcs/orbsvcs/SSLIOP/SSLIOP_Connection_Handler.cpp (handle_close):
+
+ Purge the entry while closing down the connection instead of
+ instead of marking it invalid.
+
Thu Sep 13 11:33:35 2001 Balachandran Natarajan <bala@cs.wustl.edu>
- * tests/BiDirectional/test_i.cpp (call_client):
- * tests/BiDirectional_NestedUpcall/test_i.cpp: Instead of just
- using ACE_ASSERT, added an extra debug statement with reason why
- the program is going to abort.
+ * tests/BiDirectional/test_i.cpp (call_client):
+ * tests/BiDirectional_NestedUpcall/test_i.cpp: Instead of just
+ using ACE_ASSERT, added an extra debug statement with reason why
+ the program is going to abort.
Thu Sep 13 11:05:13 2001 Balachandran Natarajan <bala@cs.wustl.edu>
- * orbsvcs/orbsvcs/SSLIOP/SSLIOP_Connection_Handler.cpp:
- * tao/IIOP_Connection_Handler.cpp (process_listen_point_list):
- When creating an IIOP Endpoint, passed in the value of the
- ORBDottedDecimal address value from the ORB_Core. This is a real
- stupid mistake :(. Added a debug statement. Thanks to Werner
- Buchert <w.buchert@medat.de> for reporting this problem.
+ * orbsvcs/orbsvcs/SSLIOP/SSLIOP_Connection_Handler.cpp:
+ * tao/IIOP_Connection_Handler.cpp (process_listen_point_list):
+ When creating an IIOP Endpoint, passed in the value of the
+ ORBDottedDecimal address value from the ORB_Core. This is a real
+ stupid mistake :(. Added a debug statement. Thanks to Werner
+ Buchert <w.buchert@medat.de> for reporting this problem.
Wed Sep 12 17:05:00 2001 Balachandran Natarajan <bala@cs.wustl.edu>
- * tao/DynamicAny/DynAny_i.cpp: Fixed a compile problem with g++.
+ * tao/DynamicAny/DynAny_i.cpp: Fixed a compile problem with g++.
Wed Sep 12 16:29:49 2001 Balachandran Natarajan <bala@cs.wustl.edu>
- * tao/Leader_Follower.cpp (wait_for_event): If the follower times
- out, we set the state in the LF_Event to indicate an error.
+ * tao/Leader_Follower.cpp (wait_for_event): If the follower times
+ out, we set the state in the LF_Event to indicate an error.
- * tao/LF_Event.h:
- * tao/LF_Event.cpp:
- * tao/LF_Event.inl: Added a new private method that allows setting
- the state without holding the lock. Moreover, before we signal
- the follower in state_changed () we check whether the LF_Event
- has reached a final state or not. Further, we also check whether
- we have a valid follower_ pointer before we signal the
- follower. This fix should fix the problems MT_Timeout tests. The
- problem was that the leader thread was processing the followers
- reply when the follower timedout.
+ * tao/LF_Event.h:
+ * tao/LF_Event.cpp:
+ * tao/LF_Event.inl: Added a new private method that allows setting
+ the state without holding the lock. Moreover, before we signal
+ the follower in state_changed () we check whether the LF_Event
+ has reached a final state or not. Further, we also check whether
+ we have a valid follower_ pointer before we signal the
+ follower. This fix should fix the problems MT_Timeout tests. The
+ problem was that the leader thread was processing the followers
+ reply when the follower timedout.
Wed Sep 12 12:33:15 2001 Jeff Parsons <parsons@cs.wustl.edu>
@@ -110,7 +150,7 @@ Wed Sep 12 10:13:31 2001 Jeff Parsons <parsons@cs.wustl.edu>
* tao/DynamicAny/DynAny_i.cpp:
Strange bug that seems to happen only on Win32, where when
- a DynAny containing a string is copied from another, its type
+ a DynAny containing a string is copied from another, its type
code member gets the bound copied correctly, but its member
any's type code does not. It crops up only in the equal()
method where the strings are extracted from the member anys
@@ -121,26 +161,26 @@ Wed Sep 12 10:13:31 2001 Jeff Parsons <parsons@cs.wustl.edu>
Tue Sep 11 18:07:46 2001 Yamuna Krishnamurthy <yamuna@cs.wustl.edu>
- * orbsvcs/orbsvcs/AV/Fill_ACE_QoS.h:
- * orbsvcs/orbsvcs/AV/Fill_ACE_QoS.cpp:
+ * orbsvcs/orbsvcs/AV/Fill_ACE_QoS.h:
+ * orbsvcs/orbsvcs/AV/Fill_ACE_QoS.cpp:
- Fixed compile errors with RAPI enabled.
+ Fixed compile errors with RAPI enabled.
Tue Sep 11 15:46:44 2001 Balachandran Natarajan <bala@cs.wustl.edu>
- * tests/File_IO/client.cpp:
- * tests/File_IO/server.cpp: Reduced the number of threads a bit
- for Sun CC alone. Bug 957 is in action again.
+ * tests/File_IO/client.cpp:
+ * tests/File_IO/server.cpp: Reduced the number of threads a bit
+ for Sun CC alone. Bug 957 is in action again.
Mon Sep 10 20:00:25 2001 Priyanka Gontla <pgontla@ece.uci.edu>
- * tao/MCAST_Parser.cpp:
- Fixed the errors on Win.
+ * tao/MCAST_Parser.cpp:
+ Fixed the errors on Win.
Mon Sep 10 13:34:43 2001 Balachandran Natarajan <bala@cs.wustl.edu>
- * tao/ORB_Core.cpp (output_cdr_dblock_allocator): Added a comment
- in the code.
+ * tao/ORB_Core.cpp (output_cdr_dblock_allocator): Added a comment
+ in the code.
Mon Sep 10 12:23:30 2001 Jeff Parsons <parsons@cs.wustl.edu>
@@ -157,215 +197,215 @@ Mon Sep 10 12:23:30 2001 Jeff Parsons <parsons@cs.wustl.edu>
Mon Sep 10 12:17:12 2001 Balachandran Natarajan <bala@cs.wustl.edu>
- * performance-tests/RTCorba/Multiple_Endpoints/Orb_Per_Priority/Makefile:
- Moved the libraries around to get proper link line. It was
- busted. Further added a realclean so that we remove strange
- generated files out of the directory. This shoudl fix one of the
- compile errors in LYNX_PPC builds.
+ * performance-tests/RTCorba/Multiple_Endpoints/Orb_Per_Priority/Makefile:
+ Moved the libraries around to get proper link line. It was
+ busted. Further added a realclean so that we remove strange
+ generated files out of the directory. This shoudl fix one of the
+ compile errors in LYNX_PPC builds.
Mon Sep 10 07:41:05 2001 Balachandran Natarajan <bala@cs.wustl.edu>
- * tests/Xt_Stopwatch/Makefile: Updated dependencies.
+ * tests/Xt_Stopwatch/Makefile: Updated dependencies.
Sun Sep 9 11:09:04 2001 Balachandran Natarajan <bala@cs.wustl.edu>
- * tao/Makefile: Updated dependencies.
+ * tao/Makefile: Updated dependencies.
Fri Sep 7 17:16:50 2001 Anand Krishnan <anandk@cs.wustl.edu>
- * orbsvcs/tests/Security/MT_SSLIOP/run_test.pl:
- Actually committing the file.
+ * orbsvcs/tests/Security/MT_SSLIOP/run_test.pl:
+ Actually committing the file.
Fri Sep 7 12:56:45 2001 Craig Rodrigues <crodrigu@bbn.com>
* orbsvcs/AV/Protocol_Factory.cpp: Add default constructor.
- Thanks to Joe Loyall <jloyall@bbn.com> for finding this.
+ Thanks to Joe Loyall <jloyall@bbn.com> for finding this.
Thu Sep 6 20:07:25 2001 Balachandran Natarajan <bala@cs.wustl.edu>
- * tao/Makefile.bor: Added MCAST_Parser to the Makefile.
+ * tao/Makefile.bor: Added MCAST_Parser to the Makefile.
Thu Sep 6 12:56:55 2001 Priyanka Gontla <gontla_p@ociweb.com>
- * orbsvcs/tests/Simple_Naming/run_test.pl (client):
- Modified the perl script to adhere to the new way of providing
- the reference to a multicasted service.
+ * orbsvcs/tests/Simple_Naming/run_test.pl (client):
+ Modified the perl script to adhere to the new way of providing
+ the reference to a multicasted service.
Thu Sep 6 07:17:13 2001 Balachandran Natarajan <bala@cs.wustl.edu>
- * tao/MCAST_Parser.cpp: Fixed compile errors in Minimum builds.
+ * tao/MCAST_Parser.cpp: Fixed compile errors in Minimum builds.
Wed Sep 5 22:28:41 2001 Balachandran Natarajan <bala@cs.wustl.edu>
- * tao/MCAST_Parser.cpp: Fixed a compile error with g++.
- * tao/ORB.cpp: Fixed a warning with g++.
-
+ * tao/MCAST_Parser.cpp: Fixed a compile error with g++.
+ * tao/ORB.cpp: Fixed a warning with g++.
+
Wed Sep 5 19:51:36 2001 Priyanka Gontla <gontla_p@ociweb.com>
- * tao/TAO_Static.dsp:
- * tao/TAO.dsp :
- Added the new MCAST_Parser files.
+ * tao/TAO_Static.dsp:
+ * tao/TAO.dsp :
+ Added the new MCAST_Parser files.
Wed Sep 5 17:26:12 2001 Yamuna Krishnamurthy <yamuna@cs.wustl.edu>
- * orbsvcs/orbsvcs/AV/AVStreams_i.cpp:
+ * orbsvcs/orbsvcs/AV/AVStreams_i.cpp:
- Made changes to TAO_StreamEndPoint::change_qos to allow passing
- a null AVStreams::QoS to the TAO_AV_Flow_Handler::change_qos.
+ Made changes to TAO_StreamEndPoint::change_qos to allow passing
+ a null AVStreams::QoS to the TAO_AV_Flow_Handler::change_qos.
- * orbsvcs/orbsvcs/AV/AVStreams_i.i:
+ * orbsvcs/orbsvcs/AV/AVStreams_i.i:
- Added a missing parameter to the ACE_DEBUG statement to print
- the flow name.
+ Added a missing parameter to the ACE_DEBUG statement to print
+ the flow name.
- * orbsvcs/orbsvcs/AV/QoS_UDP.cpp:
+ * orbsvcs/orbsvcs/AV/QoS_UDP.cpp:
- Facilitated the passing of null AVStreams::QoS to the negotiator.
+ Facilitated the passing of null AVStreams::QoS to the negotiator.
Wed Sep 5 17:26:12 2001 Anand Krishnan <anandk@cs.wustl.edu>
- * orbsvcs/tests/Security/MT_SSLIOP/run_test.pl:
- * orbsvcs/tests/Security/MT_SSLIOP/server.cpp:
- * orbsvcs/tests/Security/MT_SSLIOP/Server_Worker.h:
- * orbsvcs/tests/Security/MT_SSLIOP/Server_Worker.cpp:
- * orbsvcs/tests/Security/MT_SSLIOP/client.cpp:
- * orbsvcs/tests/Security/MT_SSLIOP/Client_Worker.cpp:
- * orbsvcs/tests/Security/MT_SSLIOP/Client_Worker.h:
- * orbsvcs/tests/Security/MT_SSLIOP/Makefile:
- * orbsvcs/tests/Security/MT_SSLIOP/test_i.cpp:
- * orbsvcs/tests/Security/MT_SSLIOP/test_i.h:
- * orbsvcs/tests/Security/MT_SSLIOP/test_i.i:
- * orbsvcs/tests/Security/MT_SSLIOP/client.conf:
- * orbsvcs/tests/Security/MT_SSLIOP/server.conf:
- * orbsvcs/tests/Security/MT_SSLIOP/selfsigncert.pem:
- * orbsvcs/tests/Security/MT_SSLIOP/pvtkey.pem:
- * orbsvcs/tests/Security/MT_SSLIOP/test.idl: A test for a simple
- multi-threaded SSLIOP test. This test will not be included in
- the daily builds for the upcoming beta, but will be there for
- the next beta.
+ * orbsvcs/tests/Security/MT_SSLIOP/run_test.pl:
+ * orbsvcs/tests/Security/MT_SSLIOP/server.cpp:
+ * orbsvcs/tests/Security/MT_SSLIOP/Server_Worker.h:
+ * orbsvcs/tests/Security/MT_SSLIOP/Server_Worker.cpp:
+ * orbsvcs/tests/Security/MT_SSLIOP/client.cpp:
+ * orbsvcs/tests/Security/MT_SSLIOP/Client_Worker.cpp:
+ * orbsvcs/tests/Security/MT_SSLIOP/Client_Worker.h:
+ * orbsvcs/tests/Security/MT_SSLIOP/Makefile:
+ * orbsvcs/tests/Security/MT_SSLIOP/test_i.cpp:
+ * orbsvcs/tests/Security/MT_SSLIOP/test_i.h:
+ * orbsvcs/tests/Security/MT_SSLIOP/test_i.i:
+ * orbsvcs/tests/Security/MT_SSLIOP/client.conf:
+ * orbsvcs/tests/Security/MT_SSLIOP/server.conf:
+ * orbsvcs/tests/Security/MT_SSLIOP/selfsigncert.pem:
+ * orbsvcs/tests/Security/MT_SSLIOP/pvtkey.pem:
+ * orbsvcs/tests/Security/MT_SSLIOP/test.idl: A test for a simple
+ multi-threaded SSLIOP test. This test will not be included in
+ the daily builds for the upcoming beta, but will be there for
+ the next beta.
Wed Sep 5 12:10:40 2001 Priyanka Gontla <gontla_p@ociweb.com>
- This set of changes are for bug 977.
-
- * tao/MCAST_Parser.i:
- * tao/MCAST_Parser.h:
- * tao/MCAST_Parser.cpp:
-
- The Parser for the new IP multicast format. The multicast
- format is mcast://mcast_address:mcast_port:nic_address:ttl.
- All the multicast requests are now dealt via this parser. The default
- multicast address is 224.9.9.2. The default multicast port is
- 10013 ( the same port that we used for NameService .. no big
- reason .. just a simple choice), default nic is eth0 and default
- TTL value is 1.
-
- * tao/TAO_Internal.cpp:
- Add MCAST protocol to the list of services that have to be
- initiated.
-
- * tao/ORB.h :
- * tao/ORB.cpp :
- Moved the multicast_to_service and multicast_query methods to
- MCAST_Parser. Modified ::resolve_service accordingly.
-
- * tao/ORB_Core.cpp :
- Check for mcast: format when ORBDefaultInitRef option is used
- and set the object delimiter to '/' if it is mcast protocol.
-
- * tao/default_resource.cpp:
- Modify the total no. of parsers to check for: from 4 to 5.
- and dynamically load the MCAST_Parser too.
-
- * tao/Makefile:
- Added MCAST_Parser
-
- * orbsvcs/tests/IOR_MCast/README :
- * orbsvcs/tests/IOR_MCast/Makefile :
- * orbsvcs/tests/IOR_MCast/MCast.idl :
- * orbsvcs/tests/IOR_MCast/MCast_Server_i.h :
- * orbsvcs/tests/IOR_MCast/MCast_Server_i.cpp :
- * orbsvcs/tests/IOR_MCast/client.cpp :
- * orbsvcs/tests/IOR_MCast/ior_mcast_client_i.h :
- * orbsvcs/tests/IOR_MCast/ior_mcast_client_i.cpp :
- * orbsvcs/tests/IOR_MCast/server.cpp :
- * orbsvcs/tests/IOR_MCast/server_i.h :
- * orbsvcs/tests/IOR_MCast/server_i.cpp :
-
- Simple test to test the new MCAST_Parser.
+ This set of changes are for bug 977.
+
+ * tao/MCAST_Parser.i:
+ * tao/MCAST_Parser.h:
+ * tao/MCAST_Parser.cpp:
+
+ The Parser for the new IP multicast format. The multicast
+ format is mcast://mcast_address:mcast_port:nic_address:ttl.
+ All the multicast requests are now dealt via this parser. The default
+ multicast address is 224.9.9.2. The default multicast port is
+ 10013 ( the same port that we used for NameService .. no big
+ reason .. just a simple choice), default nic is eth0 and default
+ TTL value is 1.
+
+ * tao/TAO_Internal.cpp:
+ Add MCAST protocol to the list of services that have to be
+ initiated.
+
+ * tao/ORB.h :
+ * tao/ORB.cpp :
+ Moved the multicast_to_service and multicast_query methods to
+ MCAST_Parser. Modified ::resolve_service accordingly.
+
+ * tao/ORB_Core.cpp :
+ Check for mcast: format when ORBDefaultInitRef option is used
+ and set the object delimiter to '/' if it is mcast protocol.
+
+ * tao/default_resource.cpp:
+ Modify the total no. of parsers to check for: from 4 to 5.
+ and dynamically load the MCAST_Parser too.
+
+ * tao/Makefile:
+ Added MCAST_Parser
+
+ * orbsvcs/tests/IOR_MCast/README :
+ * orbsvcs/tests/IOR_MCast/Makefile :
+ * orbsvcs/tests/IOR_MCast/MCast.idl :
+ * orbsvcs/tests/IOR_MCast/MCast_Server_i.h :
+ * orbsvcs/tests/IOR_MCast/MCast_Server_i.cpp :
+ * orbsvcs/tests/IOR_MCast/client.cpp :
+ * orbsvcs/tests/IOR_MCast/ior_mcast_client_i.h :
+ * orbsvcs/tests/IOR_MCast/ior_mcast_client_i.cpp :
+ * orbsvcs/tests/IOR_MCast/server.cpp :
+ * orbsvcs/tests/IOR_MCast/server_i.h :
+ * orbsvcs/tests/IOR_MCast/server_i.cpp :
+
+ Simple test to test the new MCAST_Parser.
Wed Sep 5 12:35:33 2001 Balachandran Natarajan <bala@cs.wustl.edu>
- * tao/Endpoint.h: Added a lock that is used to lock when a thread
- does remote object address lookups. Theoretically speaking we
- shouldnt be putting the lock in the TAO_Endpoint class. But as
- the lock is required for most of the protocols supported in TAO
- we have pushed it here. We also believe that other protocols may
- need a lock during lookups.
-
- * tao/IIOP_Enpoint.i: Hold a lock in object_addr (). There was a
- subtle race condition in that method. In object_addr (void) the
- code first checks for object_addr_.get_type() != AF_INET and, if
- so, it calls ACE_INET_Addr::set(). ACE_INET_Addr::set() sets
- type field to AF_INET, zeros the inet_addr structure and then
- does a hostname lookup.
-
- If two threads enter the object_addr() method the first may end
- up blocked for a while in the hostname lookup. The second
- thread will see that AF_INET is set and return an (zero'ed)
- ACE_INET_Addr structure.
-
- The race can happen from TAO_IIOP_Connector::connect() when
- multiple threads attempt to talk to the same object. You will
- sometimes see transient exceptions as one of the threads tries
- to connect to the (invalid) inet_addr. This could potentially
- fix #189, but it hasnt been tested out properly. Thanks to
- <pphillip@opentext.com> for nailining the probelm and suggesting
- this fix. This should fix #1017.
-
- * tao/Strategies/DIOP_Endpoint.i:
- * tao/Strategies/SHMIOP_Endpoint.i: Applied the same fix.
-
- * orbsvcs/orbsvcs/SSLIOP/SSLIOP_Endpoint.i: Just added a comment
- telling that we shouldnt be holding the lock as the lock is being
- held in the IIOP class.
-
- * tao/IIOP_Transport.cpp:
- * tao/Strategies/DIOP_Transport.cpp:
- * tao/Strategies/SHMIOP_Transport.cpp:
- * tao/Strategies/UIOP_Transport.cpp:
- * orbsvcs/orbsvcs/SSLIOP/SSLIOP_Transport.cpp: Do not print out
- error messages if the recv () returns from a timeout. This extra
- print statements in a thread-per-connection case, when a thread
- timedout, was causing more confusion than it tried addressing.
+ * tao/Endpoint.h: Added a lock that is used to lock when a thread
+ does remote object address lookups. Theoretically speaking we
+ shouldnt be putting the lock in the TAO_Endpoint class. But as
+ the lock is required for most of the protocols supported in TAO
+ we have pushed it here. We also believe that other protocols may
+ need a lock during lookups.
+
+ * tao/IIOP_Enpoint.i: Hold a lock in object_addr (). There was a
+ subtle race condition in that method. In object_addr (void) the
+ code first checks for object_addr_.get_type() != AF_INET and, if
+ so, it calls ACE_INET_Addr::set(). ACE_INET_Addr::set() sets
+ type field to AF_INET, zeros the inet_addr structure and then
+ does a hostname lookup.
+
+ If two threads enter the object_addr() method the first may end
+ up blocked for a while in the hostname lookup. The second
+ thread will see that AF_INET is set and return an (zero'ed)
+ ACE_INET_Addr structure.
+
+ The race can happen from TAO_IIOP_Connector::connect() when
+ multiple threads attempt to talk to the same object. You will
+ sometimes see transient exceptions as one of the threads tries
+ to connect to the (invalid) inet_addr. This could potentially
+ fix #189, but it hasnt been tested out properly. Thanks to
+ <pphillip@opentext.com> for nailining the probelm and suggesting
+ this fix. This should fix #1017.
+
+ * tao/Strategies/DIOP_Endpoint.i:
+ * tao/Strategies/SHMIOP_Endpoint.i: Applied the same fix.
+
+ * orbsvcs/orbsvcs/SSLIOP/SSLIOP_Endpoint.i: Just added a comment
+ telling that we shouldnt be holding the lock as the lock is being
+ held in the IIOP class.
+
+ * tao/IIOP_Transport.cpp:
+ * tao/Strategies/DIOP_Transport.cpp:
+ * tao/Strategies/SHMIOP_Transport.cpp:
+ * tao/Strategies/UIOP_Transport.cpp:
+ * orbsvcs/orbsvcs/SSLIOP/SSLIOP_Transport.cpp: Do not print out
+ error messages if the recv () returns from a timeout. This extra
+ print statements in a thread-per-connection case, when a thread
+ timedout, was causing more confusion than it tried addressing.
Wed Sep 5 7:20:17 2001 Balachandran Natarajan <bala@cs.wustl.edu>
- * orbsvcs/tests/AVStreams/Multicast/ftp.dsp:
- * orbsvcs/tests/AVStreams/Multicast/server.dsp: Added the
- path to teh strategies library. I am not sure when I will get
- the Win32 stuff right every time:(
+ * orbsvcs/tests/AVStreams/Multicast/ftp.dsp:
+ * orbsvcs/tests/AVStreams/Multicast/server.dsp: Added the
+ path to teh strategies library. I am not sure when I will get
+ the Win32 stuff right every time:(
Tue Sep 4 20:11:17 2001 Balachandran Natarajan <bala@cs.wustl.edu>
- * orbsvcs/tests/AVStreams/Multicast/ftp.dsp:
- * orbsvcs/tests/AVStreams/Multicast/server.dsp: Added the
- strategies library to the set of libraries that needs to be
- linked.
+ * orbsvcs/tests/AVStreams/Multicast/ftp.dsp:
+ * orbsvcs/tests/AVStreams/Multicast/server.dsp: Added the
+ strategies library to the set of libraries that needs to be
+ linked.
Tue Sep 4 15:11:17 2001 Balachandran Natarajan <bala@cs.wustl.edu>
- * orbsvcs/performance-tests/EC_Federated_Latency/Makefile:
- Generated dependencies again. Also fixed a cut and paste error
- in IDL names. This created problems during 'make
- realclean'. This should fix compile errors in NoInline builds.
+ * orbsvcs/performance-tests/EC_Federated_Latency/Makefile:
+ Generated dependencies again. Also fixed a cut and paste error
+ in IDL names. This created problems during 'make
+ realclean'. This should fix compile errors in NoInline builds.
Tue Sep 4 11:19:44 2001 Balachandran Natarajan <bala@cs.wustl.edu>
- * tests/File_IO/client.cpp: Changed the 'oflag' arguments for the
- file so that it works in our daily builds. We only pass the
- O_RDONLY value to the remote call. This should fix the exception
- problems seen in our daily builds.
+ * tests/File_IO/client.cpp: Changed the 'oflag' arguments for the
+ file so that it works in our daily builds. We only pass the
+ O_RDONLY value to the remote call. This should fix the exception
+ problems seen in our daily builds.
Tue Sep 4 11:06:55 2001 Chad Elliott <elliott_c@ociweb.com>
@@ -791,10 +831,10 @@ Wed Aug 22 08:16:00 2001 Craig Rodrigues <crodrigu@bbn.com>
* orbsvcs/orbsvcs/AV/AVStreams_i.i:
* orbsvcs/orbsvcs/AV/AVStreams_i.cpp:
Remove TAO_String_Hash_Key class, replace all uses with
- ACE_CString. Only reason for keeping the TAO_String_Hash_Key
- class was to have a string class with a hash function so it
- could be put in an ACE_Hash_Map_Manager container. ACE_CString
- already has this.
+ ACE_CString. Only reason for keeping the TAO_String_Hash_Key
+ class was to have a string class with a hash function so it
+ could be put in an ACE_Hash_Map_Manager container. ACE_CString
+ already has this.
* orbsvcs/orbsvcs/AV/Fill_ACE_QoS.h:
Change include.
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ConsumerAdmin.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ConsumerAdmin.h
index 59d40ede63f..c663f6ca61c 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ConsumerAdmin.h
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ConsumerAdmin.h
@@ -1,18 +1,14 @@
/* -*- C++ -*- */
-// $Id$
-//
-// ============================================================================
-//
-// = LIBRARY
-// ORBSVCS Cos Event Channel
-//
-// = FILENAME
-// CEC_ConsumerAdmin
-//
-// = AUTHOR
-// Carlos O'Ryan (coryan@cs.wustl.edu)
-//
-// ============================================================================
+//=============================================================================
+/**
+ * @file CEC_ConsumerAdmin
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan (coryan@cs.wustl.edu)
+ */
+//=============================================================================
+
#ifndef TAO_CEC_CONSUMERADMIN_H
#define TAO_CEC_CONSUMERADMIN_H
@@ -31,45 +27,47 @@
class TAO_CEC_EventChannel;
+/**
+ * @class TAO_CEC_ConsumerAdmin
+ *
+ * @brief ConsumerAdmin
+ *
+ * Implements the ConsumerAdmin interface, i.e. the factory for
+ * ProxyPushSupplier objects.
+ * = MEMORY MANAGMENT
+ * It does not assume ownership of the TAO_CEC_EventChannel
+ * object; but it *does* assume ownership of the
+ * TAO_CEC_ProxyPushSupplier_Set object.
+ * = LOCKING
+ * No provisions for locking, access must be serialized
+ * externally.
+ * = TODO
+ */
class TAO_Event_Export TAO_CEC_ConsumerAdmin : public POA_CosEventChannelAdmin::ConsumerAdmin
{
- // = TITLE
- // ConsumerAdmin
- //
- // = DESCRIPTION
- // Implements the ConsumerAdmin interface, i.e. the factory for
- // ProxyPushSupplier objects.
- //
- // = MEMORY MANAGMENT
- // It does not assume ownership of the TAO_CEC_EventChannel
- // object; but it *does* assume ownership of the
- // TAO_CEC_ProxyPushSupplier_Set object.
- //
- // = LOCKING
- // No provisions for locking, access must be serialized
- // externally.
- //
- // = TODO
- //
public:
+ /**
+ * constructor. If <supplier_set> is nil then it builds one using
+ * the <event_channel> argument.
+ * In any case it assumes ownership.
+ */
TAO_CEC_ConsumerAdmin (TAO_CEC_EventChannel* event_channel);
- // constructor. If <supplier_set> is nil then it builds one using
- // the <event_channel> argument.
- // In any case it assumes ownership.
+ /// destructor...
virtual ~TAO_CEC_ConsumerAdmin (void);
- // destructor...
+ /// For each elements call <worker->work()>.
void for_each (TAO_ESF_Worker<TAO_CEC_ProxyPushSupplier> *worker,
CORBA::Environment &ACE_TRY_ENV);
void for_each (TAO_ESF_Worker<TAO_CEC_ProxyPullSupplier> *worker,
CORBA::Environment &ACE_TRY_ENV);
- // For each elements call <worker->work()>.
+ /// Push the event to all the consumers
void push (const CORBA::Any &event,
CORBA::Environment &ACE_TRY_ENV);
- // Push the event to all the consumers
+ /// Used to inform the EC that a Supplier has connected or
+ /// disconnected from it.
virtual void connected (TAO_CEC_ProxyPushSupplier*,
CORBA::Environment&);
virtual void reconnected (TAO_CEC_ProxyPushSupplier*,
@@ -82,12 +80,10 @@ public:
CORBA::Environment&);
virtual void disconnected (TAO_CEC_ProxyPullSupplier*,
CORBA::Environment&);
- // Used to inform the EC that a Supplier has connected or
- // disconnected from it.
+ /// The event channel is shutting down, inform all the consumers of
+ /// this
virtual void shutdown (CORBA::Environment&);
- // The event channel is shutting down, inform all the consumers of
- // this
// = The CosEventChannelAdmin::ConsumerAdmin methods...
virtual CosEventChannelAdmin::ProxyPushSupplier_ptr
@@ -101,17 +97,17 @@ public:
virtual PortableServer::POA_ptr _default_POA (CORBA::Environment& env);
private:
+ /// The Event Channel we belong to
TAO_CEC_EventChannel *event_channel_;
- // The Event Channel we belong to
+ /// Store the default POA.
PortableServer::POA_var default_POA_;
- // Store the default POA.
+ /// Implement the push side of this class
TAO_ESF_Proxy_Admin<TAO_CEC_EventChannel,TAO_CEC_ProxyPushSupplier,CosEventChannelAdmin::ProxyPushSupplier> push_admin_;
- // Implement the push side of this class
+ /// Implement the pull side of this class
TAO_ESF_Proxy_Admin<TAO_CEC_EventChannel,TAO_CEC_ProxyPullSupplier,CosEventChannelAdmin::ProxyPullSupplier> pull_admin_;
- // Implement the pull side of this class
};
@@ -126,8 +122,8 @@ public:
CORBA::Environment &ACE_TRY_ENV);
private:
+ /// The event
CORBA::Any event_;
- // The event
};
// ****************************************************************
@@ -141,8 +137,8 @@ public:
CORBA::Environment &ACE_TRY_ENV);
private:
+ /// The event
CORBA::Any event_;
- // The event
};
#if defined (__ACE_INLINE__)
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ConsumerControl.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ConsumerControl.h
index 1da31f831f1..15e97837d22 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ConsumerControl.h
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ConsumerControl.h
@@ -1,21 +1,14 @@
/* -*- C++ -*- */
-// $Id$
-//
-// ============================================================================
-//
-// = LIBRARY
-// ORBSVCS Real-time Event Channel
-//
-// = FILENAME
-// CEC_ConsumerControl
-//
-// = AUTHOR
-// Carlos O'Ryan (coryan@cs.wustl.edu)
-//
-// More details can be found in:
-// http://www.cs.wustl.edu/~coryan/EC/index.html
-//
-// ============================================================================
+//=============================================================================
+/**
+ * @file CEC_ConsumerControl
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan (coryan@cs.wustl.edu)More details can be found in:http://www.cs.wustl.edu/~coryan/EC/index.html
+ */
+//=============================================================================
+
#ifndef TAO_CEC_CONSUMERCONTROL_H
#define TAO_CEC_CONSUMERCONTROL_H
@@ -33,51 +26,53 @@ class TAO_CEC_EventChannel;
class TAO_CEC_ProxyPushSupplier;
class TAO_CEC_ProxyPullSupplier;
+/**
+ * @class TAO_CEC_ConsumerControl
+ *
+ * @brief ConsumerControl
+ *
+ * Defines the interface for the consumer control strategy.
+ * This strategy handles misbehaving or failing consumers.
+ * = MEMORY MANAGMENT
+ * = LOCKING
+ * = TODO
+ */
class TAO_Event_Export TAO_CEC_ConsumerControl
{
- // = TITLE
- // ConsumerControl
- //
- // = DESCRIPTION
- // Defines the interface for the consumer control strategy.
- // This strategy handles misbehaving or failing consumers.
- //
- // = MEMORY MANAGMENT
- //
- // = LOCKING
- //
- // = TODO
- //
public:
+ /// Constructor. It does not assume ownership of the <event_channel>
+ /// parameter.
TAO_CEC_ConsumerControl (void);
- // Constructor. It does not assume ownership of the <event_channel>
- // parameter.
+ /// destructor...
virtual ~TAO_CEC_ConsumerControl (void);
- // destructor...
+ /// Activate any internal threads or timers used to poll the state of
+ /// the consumers
virtual int activate (void);
virtual int shutdown (void);
- // Activate any internal threads or timers used to poll the state of
- // the consumers
+ /**
+ * When pushing an event to the consumer a CORBA::OBJECT_NOT_EXIST
+ * exception was raised. The only interpretation is that the object
+ * has been destroyed. The strategy has to (at the very least),
+ * reclaim all the resources attached to that object.
+ */
virtual void consumer_not_exist (TAO_CEC_ProxyPushSupplier *proxy,
CORBA::Environment &);
- // When pushing an event to the consumer a CORBA::OBJECT_NOT_EXIST
- // exception was raised. The only interpretation is that the object
- // has been destroyed. The strategy has to (at the very least),
- // reclaim all the resources attached to that object.
+ /**
+ * Invoked by helper classes when they detect that a consumer no
+ * longer exists (i.e. _non_existent() returns true and/or the
+ * CORBA::OBJECT_NOT_EXIST exception has been raised).
+ */
virtual void consumer_not_exist (TAO_CEC_ProxyPullSupplier *proxy,
CORBA::Environment &);
- // Invoked by helper classes when they detect that a consumer no
- // longer exists (i.e. _non_existent() returns true and/or the
- // CORBA::OBJECT_NOT_EXIST exception has been raised).
+ /// Some system exception was rasied while trying to push an event.
virtual void system_exception (TAO_CEC_ProxyPushSupplier *proxy,
CORBA::SystemException &,
CORBA::Environment &);
- // Some system exception was rasied while trying to push an event.
};
#if defined (__ACE_INLINE__)
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Default_Factory.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Default_Factory.h
index 956b46b0940..bb9fb1beb14 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Default_Factory.h
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Default_Factory.h
@@ -1,18 +1,14 @@
/* -*- C++ -*- */
-// $Id$
-//
-// ============================================================================
-//
-// = LIBRARY
-// ORBSVCS Cos Event Channel
-//
-// = FILENAME
-// CEC_Default_Factory
-//
-// = AUTHOR
-// Carlos O'Ryan (coryan@cs.wustl.edu)
-//
-// ============================================================================
+//=============================================================================
+/**
+ * @file CEC_Default_Factory
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan (coryan@cs.wustl.edu)
+ */
+//=============================================================================
+
#ifndef TAO_CEC_DEFAULT_FACTORY_H
#define TAO_CEC_DEFAULT_FACTORY_H
@@ -27,30 +23,30 @@
#include "CEC_Defaults.h"
#include "ace/Service_Config.h"
+/**
+ * @class TAO_CEC_Default_Factory
+ *
+ * @brief A generic factory for EC experimentation.
+ *
+ * This class allows the user to experiment with different EC
+ * configurations. Using a command-line like interface the user
+ * can specify which strategies will this factory generate.
+ * Since the class can be dynamically loaded the strategies can be
+ * set in the service configurator file.
+ * = MEMORY MANAGMENT
+ */
class TAO_Event_Export TAO_CEC_Default_Factory : public TAO_CEC_Factory
{
- // = TITLE
- // A generic factory for EC experimentation.
- //
- // = DESCRIPTION
- // This class allows the user to experiment with different EC
- // configurations. Using a command-line like interface the user
- // can specify which strategies will this factory generate.
- // Since the class can be dynamically loaded the strategies can be
- // set in the service configurator file.
- //
- // = MEMORY MANAGMENT
- //
public:
+ /// Constructor
TAO_CEC_Default_Factory (void);
- // Constructor
+ /// destructor...
virtual ~TAO_CEC_Default_Factory (void);
- // destructor...
+ /// Helper function to register the default factory into the service
+ /// configurator.
static int init_svcs (void);
- // Helper function to register the default factory into the service
- // configurator.
// = The Service_Object entry points
virtual int init (int argc, char* argv[]);
@@ -121,39 +117,39 @@ public:
destroy_supplier_control (TAO_CEC_SupplierControl*);
private:
+ /// Parse an argument to set the type of collections used.
int parse_collection_arg (char *opt);
- // Parse an argument to set the type of collections used.
private:
+ /// Several flags to control the kind of object created.
int dispatching_;
int pulling_strategy_;
int consumer_collection_;
int supplier_collection_;
int consumer_lock_;
int supplier_lock_;
- // Several flags to control the kind of object created.
+ /// The MT dispatching priority has several arguments that could be
+ /// controlled here...
int dispatching_threads_;
int dispatching_threads_flags_;
int dispatching_threads_priority_;
int dispatching_threads_force_active_;
- // The MT dispatching priority has several arguments that could be
- // controlled here...
+ /// How often (in microseconds) are the pull suppliers polled by the
+ /// reactive pulling strategy.
int reactive_pulling_period_;
- // How often (in microseconds) are the pull suppliers polled by the
- // reactive pulling strategy.
+ /// Use this ORB to locate global resources.
const char *orbid_;
- // Use this ORB to locate global resources.
+ /// The consumer and supplier control policies.
int consumer_control_;
int supplier_control_;
- // The consumer and supplier control policies.
+ /// The consumer and supplier control periods in usecs
int consumer_control_period_;
int supplier_control_period_;
- // The consumer and supplier control periods in usecs
};
#if defined (__ACE_INLINE__)
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Defaults.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Defaults.h
index 5583a5325ff..c5901fa535b 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Defaults.h
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Defaults.h
@@ -1,22 +1,18 @@
/* -*- C++ -*- */
-// $Id$
-//
-// ============================================================================
-//
-// = LIBRARY
-// ORBSVCS Cos Event Channel
-//
-// = FILENAME
-// CEC_Defaults
-//
-// = DESCRIPTION
-// In this file we set the compile time defaults for the event
-// channel.
-//
-// = AUTHOR
-// Carlos O'Ryan (coryan@cs.wustl.edu)
-//
-// ============================================================================
+//=============================================================================
+/**
+ * @file CEC_Defaults
+ *
+ * $Id$
+ *
+ * In this file we set the compile time defaults for the event
+ * channel.
+ *
+ *
+ * @author Carlos O'Ryan (coryan@cs.wustl.edu)
+ */
+//=============================================================================
+
#ifndef TAO_CEC_DEFAULTS_H
#define TAO_CEC_DEFAULTS_H
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Dispatching.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Dispatching.h
index 9f1b0ba2a25..4b8541ddcbe 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Dispatching.h
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Dispatching.h
@@ -1,20 +1,14 @@
/* -*- C++ -*- */
-// $Id$
-//
-// ============================================================================
-//
-// = LIBRARY
-// ORBSVCS Cos Event Channel
-//
-// = FILENAME
-// CEC_Dispatching
-//
-// = AUTHOR
-// Carlos O'Ryan (coryan@cs.wustl.edu)
-//
-// = CREDITS
-//
-// ============================================================================
+//=============================================================================
+/**
+ * @file CEC_Dispatching
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan (coryan@cs.wustl.edu)
+ */
+//=============================================================================
+
#ifndef TAO_CEC_DISPATCHING_H
#define TAO_CEC_DISPATCHING_H
@@ -29,55 +23,59 @@
class TAO_CEC_ProxyPushSupplier;
+/**
+ * @class TAO_CEC_Dispatching
+ *
+ * @brief Define the interface for the dispatching strategies.
+ *
+ * The EC may be configured with different dispatching strategies,
+ * for instance, it can use a pool of threads to dispatch the
+ * events, or a set of queues with threads at different priorities
+ * for each queue or can simply push the event to the consumer in
+ * FIFO order.
+ */
class TAO_Event_Export TAO_CEC_Dispatching
{
- // = TITLE
- // Define the interface for the dispatching strategies.
- //
- // = DESCRIPTION
- // The EC may be configured with different dispatching strategies,
- // for instance, it can use a pool of threads to dispatch the
- // events, or a set of queues with threads at different priorities
- // for each queue or can simply push the event to the consumer in
- // FIFO order.
- //
public:
+ /// destructor...
virtual ~TAO_CEC_Dispatching (void);
- // destructor...
+ /// Initialize all the data structures, activate any internal threads,
+ /// etc.
virtual void activate (void) = 0;
- // Initialize all the data structures, activate any internal threads,
- // etc.
+ /**
+ * Deactivate any internal threads and cleanup internal data
+ * structures, it should only return once the threads have finished
+ * their jobs.
+ */
virtual void shutdown (void) = 0;
- // Deactivate any internal threads and cleanup internal data
- // structures, it should only return once the threads have finished
- // their jobs.
+ /// The consumer represented by <proxy> should receive <event>.
virtual void push (TAO_CEC_ProxyPushSupplier *proxy,
const CORBA::Any &event,
CORBA::Environment &env = TAO_default_environment ()) = 0;
virtual void push_nocopy (TAO_CEC_ProxyPushSupplier *proxy,
CORBA::Any &event,
CORBA::Environment &env = TAO_default_environment ()) = 0;
- // The consumer represented by <proxy> should receive <event>.
};
// ****************************************************************
+/**
+ * @class TAO_CEC_Reactive_Dispatching
+ *
+ * @brief Dispatch using the caller thread.
+ *
+ * The events are dispatched in FIFO ordering, using the invoking
+ * thread to push the event to the consumer.
+ */
class TAO_Event_Export TAO_CEC_Reactive_Dispatching : public TAO_CEC_Dispatching
{
- // = TITLE
- // Dispatch using the caller thread.
- //
- // = DESCRIPTION
- // The events are dispatched in FIFO ordering, using the invoking
- // thread to push the event to the consumer.
- //
public:
+ /// The scheduler is used to find the range of priorities and similar
+ /// info.
TAO_CEC_Reactive_Dispatching (void);
- // The scheduler is used to find the range of priorities and similar
- // info.
// = The CEC_Dispatching methods.
virtual void activate (void);
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Dispatching_Task.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Dispatching_Task.h
index 7fa9ec0ea3b..175099ba7c0 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Dispatching_Task.h
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Dispatching_Task.h
@@ -1,18 +1,14 @@
/* -*- C++ -*- */
-// $Id$
-//
-// ============================================================================
-//
-// = LIBRARY
-// ORBSVCS Cos Event Channel
-//
-// = FILENAME
-// CEC_Dispatching_Task
-//
-// = AUTHOR
-// Carlos O'Ryan (coryan@cs.wustl.edu)
-//
-// ============================================================================
+//=============================================================================
+/**
+ * @file CEC_Dispatching_Task
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan (coryan@cs.wustl.edu)
+ */
+//=============================================================================
+
#ifndef TAO_CEC_DISPATCHING_TASK_H
#define TAO_CEC_DISPATCHING_TASK_H
@@ -28,31 +24,32 @@
#include "orbsvcs/CosEvent/event_export.h"
#include "CEC_ProxyPushSupplier.h"
+/**
+ * @class TAO_CEC_Dispatching_Task
+ *
+ * @brief Implement the dispatching queues for FIFO and Priority
+ * dispatching.
+ *
+ */
class TAO_Event_Export TAO_CEC_Dispatching_Task : public ACE_Task<ACE_SYNCH>
{
- // = TITLE
- // Implement the dispatching queues for FIFO and Priority
- // dispatching.
- //
- // = DESCRIPTION
- //
public:
+ /// Constructor
TAO_CEC_Dispatching_Task (ACE_Thread_Manager* thr_manager = 0);
- // Constructor
+ /// Process the events in the queue.
virtual int svc (void);
- // Process the events in the queue.
virtual void push (TAO_CEC_ProxyPushSupplier *proxy,
CORBA::Any& event,
CORBA::Environment &env);
private:
+ /// An per-task allocator
ACE_Allocator *allocator_;
- // An per-task allocator
+ /// Helper data structure to minimize memory allocations...
ACE_Locked_Data_Block<ACE_Lock_Adapter<TAO_SYNCH_MUTEX> > data_block_;
- // Helper data structure to minimize memory allocations...
};
// ****************************************************************
@@ -60,18 +57,18 @@ private:
class TAO_Event_Export TAO_CEC_Dispatch_Command : public ACE_Message_Block
{
public:
+ /// Constructor, it will allocate its own data block
TAO_CEC_Dispatch_Command (ACE_Allocator *mb_allocator = 0);
- // Constructor, it will allocate its own data block
+ /// Constructor, it assumes ownership of the data block
TAO_CEC_Dispatch_Command (ACE_Data_Block*,
ACE_Allocator *mb_allocator = 0);
- // Constructor, it assumes ownership of the data block
+ /// Destructor
virtual ~TAO_CEC_Dispatch_Command (void);
- // Destructor
+ /// Command callback
virtual int execute (CORBA::Environment&) = 0;
- // Command callback
};
// ****************************************************************
@@ -79,11 +76,11 @@ public:
class TAO_Event_Export TAO_CEC_Shutdown_Task_Command : public TAO_CEC_Dispatch_Command
{
public:
+ /// Constructor
TAO_CEC_Shutdown_Task_Command (ACE_Allocator *mb_allocator = 0);
- // Constructor
+ /// Command callback
virtual int execute (CORBA::Environment&);
- // Command callback
};
// ****************************************************************
@@ -91,24 +88,24 @@ public:
class TAO_Event_Export TAO_CEC_Push_Command : public TAO_CEC_Dispatch_Command
{
public:
+ /// Constructor
TAO_CEC_Push_Command (TAO_CEC_ProxyPushSupplier* proxy,
CORBA::Any& event,
ACE_Data_Block* data_block,
ACE_Allocator *mb_allocator);
- // Constructor
+ /// Destructor
virtual ~TAO_CEC_Push_Command (void);
- // Destructor
+ /// Command callback
virtual int execute (CORBA::Environment&);
- // Command callback
private:
+ /// The proxy
TAO_CEC_ProxyPushSupplier* proxy_;
- // The proxy
+ /// The event
CORBA::Any event_;
- // The event
};
#if defined (__ACE_INLINE__)
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_EventChannel.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_EventChannel.h
index fc7f05dc14d..07919e370c2 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_EventChannel.h
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_EventChannel.h
@@ -1,22 +1,19 @@
/* -*- C++ -*- */
-// $Id$
-//
-// ============================================================================
-//
-// = LIBRARY
-// ORBSVCS Cos Event Channel
-//
-// = FILENAME
-// CEC_EventChannel
-//
-// = AUTHOR
-// Carlos O'Ryan (coryan@cs.wustl.edu)
-//
-// = DESCRIPTION
-// A new implementation of the COS Event Channel.
-// This version does not rely on the RTEC in its implementation.
-//
-// ============================================================================
+//=============================================================================
+/**
+ * @file CEC_EventChannel
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan (coryan@cs.wustl.edu)
+ *
+ * A new implementation of the COS Event Channel.
+ * This version does not rely on the RTEC in its implementation.
+ *
+ *
+ */
+//=============================================================================
+
#ifndef TAO_CEC_EVENTCHANNEL_H
#define TAO_CEC_EVENTCHANNEL_H
@@ -32,149 +29,159 @@
#include "CEC_Defaults.h"
#include "event_export.h"
+/**
+ * @class TAO_CEC_EventChannel_Attributes
+ *
+ * @brief Defines the construction time attributes for the Event
+ * Channel.
+ *
+ * The event channel implementation is controlled by two
+ * mechanisms:
+ * The CEC_Factory that provides the strategies for the EC
+ * implementation.
+ * The EC attributes that define constants and values required
+ * by the EC construction.
+ * This class encapsulates those constants and values, providing
+ * an easy mechanism to extend the attributes without requiring
+ * changes in the EC constructor.
+ */
class TAO_Event_Export TAO_CEC_EventChannel_Attributes
{
- // = TITLE
- // Defines the construction time attributes for the Event
- // Channel.
- //
- // = DESCRIPTION
- // The event channel implementation is controlled by two
- // mechanisms:
- // The CEC_Factory that provides the strategies for the EC
- // implementation.
- // The EC attributes that define constants and values required
- // by the EC construction.
- // This class encapsulates those constants and values, providing
- // an easy mechanism to extend the attributes without requiring
- // changes in the EC constructor.
- //
public:
+ /**
+ * The basic constructor.
+ * The attributes listed as arguments are *required* by the EC, and
+ * no appropiate defaults are available for them.
+ */
TAO_CEC_EventChannel_Attributes (PortableServer::POA_ptr supplier_poa,
PortableServer::POA_ptr consumer_poa);
- // The basic constructor.
- // The attributes listed as arguments are *required* by the EC, and
- // no appropiate defaults are available for them.
// Most fields are public, there is no need to protect them, in fact
// the user should be able to set any values she wants.
+ /// Can consumers or suppliers invoke connect_push_* multiple times?
int consumer_reconnect;
int supplier_reconnect;
- // Can consumers or suppliers invoke connect_push_* multiple times?
+ /**
+ * It not zero the event channel will send disconnect callbacks when
+ * a disconnect method is called on a Proxy. In other words, if a
+ * consumer calls disconnect_push_supplier() on its proxy the EC
+ * will invoke disconnect_push_consumer() on the consumer. A
+ * similar thing is done for suppliers.
+ * It is a matter of debate what the spec requires for the regular
+ * event service.
+ */
int disconnect_callbacks;
- // It not zero the event channel will send disconnect callbacks when
- // a disconnect method is called on a Proxy. In other words, if a
- // consumer calls disconnect_push_supplier() on its proxy the EC
- // will invoke disconnect_push_consumer() on the consumer. A
- // similar thing is done for suppliers.
- // It is a matter of debate what the spec requires for the regular
- // event service.
+ /// Flags for the Consumer Admin
int busy_hwm;
int max_write_delay;
- // Flags for the Consumer Admin
private:
+ /// Only the EC can read the private fields.
friend class TAO_CEC_EventChannel;
- // Only the EC can read the private fields.
+ /// The POAs
PortableServer::POA_ptr supplier_poa;
PortableServer::POA_ptr consumer_poa;
- // The POAs
};
+/**
+ * @class TAO_CEC_EventChannel
+ *
+ * @brief The CosEventChannelAdmin::EventChannel implementation.
+ *
+ * This class is the Mediator between all the classes in the EC
+ * implementation, its main task is to redirect the messages to
+ * the right components, to hold and manage the lifetime of the
+ * long lived objects (Timer_Module, SupplierAdmin,
+ * ConsumerAdmin and Dispatching) and to provide a simpler
+ * interface to the CEC_Factory.
+ */
class TAO_Event_Export TAO_CEC_EventChannel : public POA_CosEventChannelAdmin::EventChannel
{
- // = TITLE
- // The CosEventChannelAdmin::EventChannel implementation.
- //
- // = DESCRIPTION
- // This class is the Mediator between all the classes in the EC
- // implementation, its main task is to redirect the messages to
- // the right components, to hold and manage the lifetime of the
- // long lived objects (Timer_Module, SupplierAdmin,
- // ConsumerAdmin and Dispatching) and to provide a simpler
- // interface to the CEC_Factory.
- //
public:
+ /**
+ * constructor
+ * If <own_factory> is not 0 it assumes ownership of the factory.
+ * If the factory is <nil> it uses the Service_Configurator to load
+ * the Factory, if not found it uses TAO_CEC_Default_Resource_Factory
+ */
TAO_CEC_EventChannel (const TAO_CEC_EventChannel_Attributes& attributes,
TAO_CEC_Factory* factory = 0,
int own_factory = 0);
- // constructor
- // If <own_factory> is not 0 it assumes ownership of the factory.
- // If the factory is <nil> it uses the Service_Configurator to load
- // the Factory, if not found it uses TAO_CEC_Default_Resource_Factory
+ /// destructor
virtual ~TAO_CEC_EventChannel (void);
- // destructor
+ /// Start the internal threads (if any), etc.
+ /// After this call the EC can be used.
virtual void activate (CORBA::Environment &env = TAO_default_environment ());
- // Start the internal threads (if any), etc.
- // After this call the EC can be used.
+ /// Shutdown any internal threads, cleanup all the internal
+ /// structures, flush all the messages, etc.
virtual void shutdown (CORBA::Environment &env = TAO_default_environment ());
- // Shutdown any internal threads, cleanup all the internal
- // structures, flush all the messages, etc.
+ /// Access the dispatching module....
TAO_CEC_Dispatching* dispatching (void) const;
- // Access the dispatching module....
+ /// Access the consumer admin implementation.
TAO_CEC_ConsumerAdmin* consumer_admin (void) const;
- // Access the consumer admin implementation.
+ /// Access the supplier admin implementation.
TAO_CEC_SupplierAdmin* supplier_admin (void) const;
- // Access the supplier admin implementation.
+ /// Access the consumer control strategy.
TAO_CEC_ConsumerControl* consumer_control (void) const;
- // Access the consumer control strategy.
+ /// Access the supplier control strategy.
TAO_CEC_SupplierControl* supplier_control (void) const;
- // Access the supplier control strategy.
// = The factory methods, they delegate on the CEC_Factory.
+ /// Create and destroy a ProxyPushSupplier
void create_proxy (TAO_CEC_ProxyPushSupplier*&);
void destroy_proxy (TAO_CEC_ProxyPushSupplier*);
- // Create and destroy a ProxyPushSupplier
+ /// Create and destroy a ProxyPullSupplier
void create_proxy (TAO_CEC_ProxyPullSupplier*&);
void destroy_proxy (TAO_CEC_ProxyPullSupplier*);
- // Create and destroy a ProxyPullSupplier
+ /// Create and destroy a ProxyPushConsumer
void create_proxy (TAO_CEC_ProxyPushConsumer*&);
void destroy_proxy (TAO_CEC_ProxyPushConsumer*);
- // Create and destroy a ProxyPushConsumer
+ /// Create and destroy a ProxyPushConsumer
void create_proxy (TAO_CEC_ProxyPullConsumer*&);
void destroy_proxy (TAO_CEC_ProxyPullConsumer*);
- // Create and destroy a ProxyPushConsumer
+ /// Create and destroy a the collections used to store
+ /// Proxy*Suppliers
void create_proxy_collection (TAO_CEC_ProxyPushSupplier_Collection*&);
void destroy_proxy_collection (TAO_CEC_ProxyPushSupplier_Collection*);
void create_proxy_collection (TAO_CEC_ProxyPullSupplier_Collection*&);
void destroy_proxy_collection (TAO_CEC_ProxyPullSupplier_Collection*);
- // Create and destroy a the collections used to store
- // Proxy*Suppliers
+ /// Create and destroy a the collections used to store
+ /// Proxy*Consumers
void create_proxy_collection (TAO_CEC_ProxyPushConsumer_Collection*&);
void destroy_proxy_collection (TAO_CEC_ProxyPushConsumer_Collection*);
void create_proxy_collection (TAO_CEC_ProxyPullConsumer_Collection*&);
void destroy_proxy_collection (TAO_CEC_ProxyPullConsumer_Collection*);
- // Create and destroy a the collections used to store
- // Proxy*Consumers
+ /// Access the supplier and consumer POAs from the factory.
PortableServer::POA_ptr supplier_poa (void);
PortableServer::POA_ptr consumer_poa (void);
- // Access the supplier and consumer POAs from the factory.
+ /// Locking strategies for the ProxyPushConsumer and
+ /// ProxyPushSupplier objects
ACE_Lock* create_consumer_lock (void);
void destroy_consumer_lock (ACE_Lock*);
ACE_Lock* create_supplier_lock (void);
void destroy_supplier_lock (ACE_Lock*);
- // Locking strategies for the ProxyPushConsumer and
- // ProxyPushSupplier objects
+ /// Used to inform the EC that a Consumer has connected or
+ /// disconnected from it.
virtual void connected (TAO_CEC_ProxyPushConsumer*,
CORBA::Environment&);
virtual void reconnected (TAO_CEC_ProxyPushConsumer*,
@@ -187,9 +194,9 @@ public:
CORBA::Environment&);
virtual void disconnected (TAO_CEC_ProxyPullConsumer*,
CORBA::Environment&);
- // Used to inform the EC that a Consumer has connected or
- // disconnected from it.
+ /// Used to inform the EC that a Supplier has connected or
+ /// disconnected from it.
virtual void connected (TAO_CEC_ProxyPushSupplier*,
CORBA::Environment&);
virtual void reconnected (TAO_CEC_ProxyPushSupplier*,
@@ -202,86 +209,86 @@ public:
CORBA::Environment&);
virtual void disconnected (TAO_CEC_ProxyPullSupplier*,
CORBA::Environment&);
- // Used to inform the EC that a Supplier has connected or
- // disconnected from it.
// Simple flags to control the EC behavior, set by the application
// at construction time.
+ /// Can the consumers reconnect to the EC?
int consumer_reconnect (void) const;
- // Can the consumers reconnect to the EC?
+ /// Can the suppliers reconnect to the EC?
int supplier_reconnect (void) const;
- // Can the suppliers reconnect to the EC?
+ /// Should we send callback disconnect messages when a proxy is
+ /// disconnected by the client
int disconnect_callbacks (void) const;
- // Should we send callback disconnect messages when a proxy is
- // disconnected by the client
+ /// Control the concurrency of the delayed connect/disconnect
+ /// operations.
int busy_hwm (void) const;
int max_write_delay (void) const;
- // Control the concurrency of the delayed connect/disconnect
- // operations.
// = The CosEventChannelAdmin::EventChannel methods...
+ /// The default implementation is:
+ /// this->consumer_admin ()->_this (env);
virtual CosEventChannelAdmin::ConsumerAdmin_ptr
for_consumers (CORBA::Environment& env)
ACE_THROW_SPEC ((CORBA::SystemException));
- // The default implementation is:
- // this->consumer_admin ()->_this (env);
+ /// The default implementation is:
+ /// this->supplier_admin ()->_this (env);
virtual CosEventChannelAdmin::SupplierAdmin_ptr
for_suppliers (CORBA::Environment& env)
ACE_THROW_SPEC ((CORBA::SystemException));
- // The default implementation is:
- // this->supplier_admin ()->_this (env);
+ /// Commit suicide.
virtual void destroy (CORBA::Environment &env)
ACE_THROW_SPEC ((CORBA::SystemException));
- // Commit suicide.
private:
+ /// The POAs used to activate "supplier-side" and "consumer-side"
+ /// objects.
PortableServer::POA_var supplier_poa_;
PortableServer::POA_var consumer_poa_;
- // The POAs used to activate "supplier-side" and "consumer-side"
- // objects.
+ /**
+ * This is the abstract factory that creates all the objects that
+ * compose an event channel, the event channel simply acts as a
+ * Mediator among them.
+ */
TAO_CEC_Factory *factory_;
- // This is the abstract factory that creates all the objects that
- // compose an event channel, the event channel simply acts as a
- // Mediator among them.
+ /// Flag that indicates if we own the factory.
int own_factory_;
- // Flag that indicates if we own the factory.
+ /// The dispatching "module"
TAO_CEC_Dispatching *dispatching_;
- // The dispatching "module"
+ /// The pulling strategy
TAO_CEC_Pulling_Strategy *pulling_strategy_;
- // The pulling strategy
+ /// The ConsumerAdmin implementation
TAO_CEC_ConsumerAdmin *consumer_admin_;
- // The ConsumerAdmin implementation
+ /// The SupplierAdmin implementation
TAO_CEC_SupplierAdmin *supplier_admin_;
- // The SupplierAdmin implementation
+ /// Consumer/Supplier reconnection flags
int consumer_reconnect_;
int supplier_reconnect_;
- // Consumer/Supplier reconnection flags
+ /// If not zero we send callbacks when a proxy is disconnected
int disconnect_callbacks_;
- // If not zero we send callbacks when a proxy is disconnected
+ /// Control the level of concurrency in the supplier sets with
+ /// delayed operations
int busy_hwm_;
int max_write_delay_;
- // Control the level of concurrency in the supplier sets with
- // delayed operations
+ /// Strategies to disconnect misbehaving or destroyed consumers and
+ /// suppliers
TAO_CEC_ConsumerControl *consumer_control_;
TAO_CEC_SupplierControl *supplier_control_;
- // Strategies to disconnect misbehaving or destroyed consumers and
- // suppliers
};
#if defined (__ACE_INLINE__)
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Event_Loader.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Event_Loader.h
index fcfbc9e01bb..d2197cf9a15 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Event_Loader.h
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Event_Loader.h
@@ -1,15 +1,12 @@
-// $Id$
-
-// ================================================================
-// FILENAME
-// CEC_Event_Loader.h
-//
-// DESCRIPTION
-// This class loads the Event Service dynamically.
-//
-// AUTHOR
-// Priyanka Gontla <pgontla@ece.uci.edu>
-// ================================================================
+/**
+ * @file CEC_Event_Loader.h
+ *
+ * $Id$
+ *
+ * Define a class to dynamically load the COS Event Service.
+ *
+ * @author Priyanka Gontla <pgontla@ece.uci.edu>
+ */
#ifndef TAO_CEC_EVENT_LOADER_H
#define TAO_CEC_EVENT_LOADER_H
@@ -24,62 +21,67 @@
#include "orbsvcs/CosNamingC.h"
#include "ace/Service_Config.h"
+/**
+ * @class TAO_CEC_Event_Loader
+ *
+ * @brief Dynamically load an instance of the COS Event Service.
+ */
class TAO_Event_Export TAO_CEC_Event_Loader : public TAO_Object_Loader
{
- public:
-
- // Constructor
+public:
+ /// Constructor
TAO_CEC_Event_Loader (void);
- // Destructor
+ /// Destructor
~TAO_CEC_Event_Loader (void);
- // Called by the Service Configurator framework to initialize the
- // Event Service. Defined in <ace/Service_Config.h>
+ //@{
+ /**
+ * @name Derived from ACE_Service_Object
+ */
virtual int init (int argc, char *argv[]);
-
- // Called by the Service Configurator framework to remove the
- // Event Service. Defined in <ace/Service_Config.h>
virtual int fini (void);
+ //@}
- // This function call creates the Event Channel given a reference to the
- // ORB and the command line parameters.
+ //@{
+ /**
+ * @name Derived from TAO_Object_Loader
+ */
CORBA::Object_ptr create_object (CORBA::ORB_ptr orb,
int argc, char *argv[],
CORBA::Environment
&ACE_TRY_ENV)
ACE_THROW_SPEC ((CORBA::SystemException));
+ //@}
- protected:
-
- // ORB
+protected:
+ /// Keep a pointer to the underlying ORB.
CORBA::ORB_var orb_;
- // Flag to control the event loop
+ /// Flag to control the event loop
int terminate_flag_;
- // Create and activate the event service
+ /// Attributes used to configure the Event Service properties.
TAO_CEC_EventChannel_Attributes *attributes_;
- // TAO_CEC_Factory
+ /// Factory used to configure the Event Service strategies.
TAO_CEC_Factory *factory_;
- // TAO_CEC_EventChannel
+ /// The Event Service implementation class.
TAO_CEC_EventChannel *ec_impl_;
- // Naming Context needed if '-x' option is passed
+ /// Naming Context needed if '-x' option is passed
CosNaming::NamingContext_var naming_context_;
- // Flag to check if '-x' option is passed
+ /// Flag to check if '-x' option is passed
int bind_to_naming_service_;
- // CosNaming::Name
+ /// The name used when binding to the NamingService.
CosNaming::Name channel_name_;
- private:
+private:
ACE_UNIMPLEMENTED_FUNC (TAO_CEC_Event_Loader (const TAO_CEC_Event_Loader &))
ACE_UNIMPLEMENTED_FUNC (TAO_CEC_Event_Loader &operator= (const TAO_CEC_Event_Loader &))
-
};
ACE_FACTORY_DECLARE (TAO_Event, TAO_CEC_Event_Loader)
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Factory.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Factory.h
index b5a7b7080a8..5d50009c01d 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Factory.h
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Factory.h
@@ -1,18 +1,14 @@
/* -*- C++ -*- */
-// $Id$
-//
-// ============================================================================
-//
-// = LIBRARY
-// ORBSVCS Cos Event Channel
-//
-// = FILENAME
-// CEC_Factory
-//
-// = AUTHOR
-// Carlos O'Ryan (coryan@cs.wustl.edu)
-//
-// ============================================================================
+//=============================================================================
+/**
+ * @file CEC_Factory
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan (coryan@cs.wustl.edu)
+ */
+//=============================================================================
+
#ifndef TAO_CEC_FACTORY_H
#define TAO_CEC_FACTORY_H
@@ -48,106 +44,108 @@ typedef TAO_ESF_Proxy_Collection<TAO_CEC_ProxyPullConsumer> TAO_CEC_ProxyPullCon
typedef TAO_ESF_Proxy_Collection<TAO_CEC_ProxyPushSupplier> TAO_CEC_ProxyPushSupplier_Collection;
typedef TAO_ESF_Proxy_Collection<TAO_CEC_ProxyPullSupplier> TAO_CEC_ProxyPullSupplier_Collection;
+/**
+ * @class TAO_CEC_Factory
+ *
+ * @brief Abstract factory for the CosEventChannel components.
+ *
+ * The CosEventChannel implementation can be configured at
+ * initialization time through several strategies and
+ * components. This class defines the interface of an Abstract
+ * Factory that creates all such components.
+ * = MEMORY MANAGMENT
+ * The objects it creates are owned by this class, the client must
+ * invoke the corresponding destroy() method to release them.
+ * Some implementations may require a different instance for the
+ * CEC_Factory for each instance of a CEC_EventChannel.
+ */
class TAO_Event_Export TAO_CEC_Factory : public ACE_Service_Object
{
- // = TITLE
- // Abstract factory for the CosEventChannel components.
- //
- // = DESCRIPTION
- // The CosEventChannel implementation can be configured at
- // initialization time through several strategies and
- // components. This class defines the interface of an Abstract
- // Factory that creates all such components.
- //
- // = MEMORY MANAGMENT
- // The objects it creates are owned by this class, the client must
- // invoke the corresponding destroy() method to release them.
- // Some implementations may require a different instance for the
- // CEC_Factory for each instance of a CEC_EventChannel.
- //
public:
+ /// destructor...
virtual ~TAO_CEC_Factory (void);
- // destructor...
+ /// Create and destroy the dispatching module.
virtual TAO_CEC_Dispatching*
create_dispatching (TAO_CEC_EventChannel*) = 0;
virtual void
destroy_dispatching (TAO_CEC_Dispatching*) = 0;
- // Create and destroy the dispatching module.
+ /// Create and destroy the pulling strategy.
virtual TAO_CEC_Pulling_Strategy*
create_pulling_strategy (TAO_CEC_EventChannel*) = 0;
virtual void
destroy_pulling_strategy (TAO_CEC_Pulling_Strategy*) = 0;
- // Create and destroy the pulling strategy.
+ /// Create and destroy the consumer admin implementation.
virtual TAO_CEC_ConsumerAdmin*
create_consumer_admin (TAO_CEC_EventChannel*) = 0;
virtual void
destroy_consumer_admin (TAO_CEC_ConsumerAdmin*) = 0;
- // Create and destroy the consumer admin implementation.
+ /// Create and destroy the supplier admin implementation.
virtual TAO_CEC_SupplierAdmin*
create_supplier_admin (TAO_CEC_EventChannel*) = 0;
virtual void
destroy_supplier_admin (TAO_CEC_SupplierAdmin*) = 0;
- // Create and destroy the supplier admin implementation.
+ /// Create and destroy a ProxyPushSupplier
virtual TAO_CEC_ProxyPushSupplier*
create_proxy_push_supplier (TAO_CEC_EventChannel*) = 0;
virtual void
destroy_proxy_push_supplier (TAO_CEC_ProxyPushSupplier*) = 0;
- // Create and destroy a ProxyPushSupplier
+ /// Create and destroy a ProxyPullSupplier
virtual TAO_CEC_ProxyPullSupplier*
create_proxy_pull_supplier (TAO_CEC_EventChannel*) = 0;
virtual void
destroy_proxy_pull_supplier (TAO_CEC_ProxyPullSupplier*) = 0;
- // Create and destroy a ProxyPullSupplier
+ /// Create and destroy a ProxyPushConsumer
virtual TAO_CEC_ProxyPushConsumer*
create_proxy_push_consumer (TAO_CEC_EventChannel*) = 0;
virtual void
destroy_proxy_push_consumer (TAO_CEC_ProxyPushConsumer*) = 0;
- // Create and destroy a ProxyPushConsumer
+ /// Create and destroy a ProxyPullConsumer
virtual TAO_CEC_ProxyPullConsumer*
create_proxy_pull_consumer (TAO_CEC_EventChannel*) = 0;
virtual void
destroy_proxy_pull_consumer (TAO_CEC_ProxyPullConsumer*) = 0;
- // Create and destroy a ProxyPullConsumer
+ /// Create and destroy a collection of TAO_CEC_ProxyPushConsumers
virtual TAO_CEC_ProxyPushConsumer_Collection*
create_proxy_push_consumer_collection (TAO_CEC_EventChannel*) = 0;
virtual void
destroy_proxy_push_consumer_collection (TAO_CEC_ProxyPushConsumer_Collection*) = 0;
- // Create and destroy a collection of TAO_CEC_ProxyPushConsumers
+ /// Create and destroy a collection of TAO_CEC_ProxyPullConsumers
virtual TAO_CEC_ProxyPullConsumer_Collection*
create_proxy_pull_consumer_collection (TAO_CEC_EventChannel*) = 0;
virtual void
destroy_proxy_pull_consumer_collection (TAO_CEC_ProxyPullConsumer_Collection*) = 0;
- // Create and destroy a collection of TAO_CEC_ProxyPullConsumers
+ /// Create and destroy a collection of TAO_CEC_ProxyPushSuppliers
virtual TAO_CEC_ProxyPushSupplier_Collection*
create_proxy_push_supplier_collection (TAO_CEC_EventChannel*) = 0;
virtual void
destroy_proxy_push_supplier_collection (TAO_CEC_ProxyPushSupplier_Collection*) = 0;
- // Create and destroy a collection of TAO_CEC_ProxyPushSuppliers
+ /// Create and destroy a collection of TAO_CEC_ProxyPullSuppliers
virtual TAO_CEC_ProxyPullSupplier_Collection*
create_proxy_pull_supplier_collection (TAO_CEC_EventChannel*) = 0;
virtual void
destroy_proxy_pull_supplier_collection (TAO_CEC_ProxyPullSupplier_Collection*) = 0;
- // Create and destroy a collection of TAO_CEC_ProxyPullSuppliers
+ /// Create and destroy the locking strategies for both
+ /// ProxyPushConsumers and ProxyPushSuppliers
virtual ACE_Lock* create_consumer_lock (void) = 0;
virtual void destroy_consumer_lock (ACE_Lock*) = 0;
virtual ACE_Lock* create_supplier_lock (void) = 0;
virtual void destroy_supplier_lock (ACE_Lock*) = 0;
- // Create and destroy the locking strategies for both
- // ProxyPushConsumers and ProxyPushSuppliers
+ /// The ConsumerControl and SupplierControl strategies are used to
+ /// discard non-existent consumers and suppliers
virtual TAO_CEC_ConsumerControl*
create_consumer_control (TAO_CEC_EventChannel*) = 0;
virtual void
@@ -156,8 +154,6 @@ public:
create_supplier_control (TAO_CEC_EventChannel*) = 0;
virtual void
destroy_supplier_control (TAO_CEC_SupplierControl*) = 0;
- // The ConsumerControl and SupplierControl strategies are used to
- // discard non-existent consumers and suppliers
};
#if defined (__ACE_INLINE__)
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_MT_Dispatching.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_MT_Dispatching.h
index e9a1cdab50c..d6292925209 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_MT_Dispatching.h
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_MT_Dispatching.h
@@ -1,18 +1,14 @@
/* -*- C++ -*- */
-// $Id$
-//
-// ============================================================================
-//
-// = LIBRARY
-// ORBSVCS Cos Event Channel
-//
-// = FILENAME
-// CEC_MT_Dispatching
-//
-// = AUTHOR
-// Carlos O'Ryan (coryan@cs.wustl.edu)
-//
-// ============================================================================
+//=============================================================================
+/**
+ * @file CEC_MT_Dispatching
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan (coryan@cs.wustl.edu)
+ */
+//=============================================================================
+
#ifndef TAO_CEC_MT_DISPATCHING_H
#define TAO_CEC_MT_DISPATCHING_H
@@ -28,23 +24,24 @@
class TAO_CEC_EventChannel;
+/**
+ * @class TAO_CEC_MT_Dispatching
+ *
+ * @brief Dispatching strategy that minimizes mt inversion.
+ *
+ * This strategy uses a single queue, serviced by one or more
+ * threads. It's main purpose is to decouple the suppliers from
+ * the client execution time, specially in the collocated case.
+ */
class TAO_Event_Export TAO_CEC_MT_Dispatching : public TAO_CEC_Dispatching
{
- // = TITLE
- // Dispatching strategy that minimizes mt inversion.
- //
- // = DESCRIPTION
- // This strategy uses a single queue, serviced by one or more
- // threads. It's main purpose is to decouple the suppliers from
- // the client execution time, specially in the collocated case.
- //
public:
+ /// Constructor
+ /// It will create <nthreads> servicing threads...
TAO_CEC_MT_Dispatching (int nthreads,
int thread_creation_flags,
int thread_priority,
int force_activate);
- // Constructor
- // It will create <nthreads> servicing threads...
// = The EC_Dispatching methods.
virtual void activate (void);
@@ -57,31 +54,31 @@ public:
CORBA::Environment& env);
private:
+ /// Use our own thread manager.
ACE_Thread_Manager thread_manager_;
- // Use our own thread manager.
+ /// The number of active tasks
int nthreads_;
- // The number of active tasks
+ /// The flags (THR_BOUND, THR_NEW_LWP, etc.) used to create the
+ /// dispatching threads.
int thread_creation_flags_;
- // The flags (THR_BOUND, THR_NEW_LWP, etc.) used to create the
- // dispatching threads.
+ /// The priority of the dispatching threads.
int thread_priority_;
- // The priority of the dispatching threads.
+ /// If activation at the requested priority fails then we fallback on
+ /// the defaults for thread activation.
int force_activate_;
- // If activation at the requested priority fails then we fallback on
- // the defaults for thread activation.
+ /// The dispatching task
TAO_CEC_Dispatching_Task task_;
- // The dispatching task
+ /// Synchronize access to internal data
TAO_SYNCH_MUTEX lock_;
- // Synchronize access to internal data
+ /// Are the threads running?
int active_;
- // Are the threads running?
};
#if defined (__ACE_INLINE__)
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPullConsumer.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPullConsumer.h
index 9408c41e940..0e5cffc2855 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPullConsumer.h
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPullConsumer.h
@@ -1,18 +1,14 @@
/* -*- C++ -*- */
-// $Id$
-//
-// ============================================================================
-//
-// = LIBRARY
-// ORBSVCS Cos Event Channel
-//
-// = FILENAME
-// CEC_ProxyPullConsumer
-//
-// = AUTHOR
-// Carlos O'Ryan (coryan@cs.wustl.edu)
-//
-// ============================================================================
+//=============================================================================
+/**
+ * @file CEC_ProxyPullConsumer
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan (coryan@cs.wustl.edu)
+ */
+//=============================================================================
+
#ifndef TAO_CEC_PROXYPULLCONSUMER_H
#define TAO_CEC_PROXYPULLCONSUMER_H
@@ -31,62 +27,64 @@ class TAO_CEC_EventChannel;
class TAO_CEC_Dispatching;
class TAO_CEC_ProxyPullSupplier;
+/**
+ * @class TAO_CEC_ProxyPullConsumer
+ *
+ * @brief ProxyPullConsumer
+ *
+ * Implement the CosEventChannelAdmin::ProxyPullConsumer interface,
+ * remember that this class is used to communicate with a
+ * PullSupplier, so, in effect, this is the ambassador for a
+ * supplier inside the event channel.
+ * = MEMORY MANAGMENT
+ * The object commits suicide when disconnect_pull_consumer() is
+ * called.
+ */
class TAO_Event_Export TAO_CEC_ProxyPullConsumer : public POA_CosEventChannelAdmin::ProxyPullConsumer
{
- // = TITLE
- // ProxyPullConsumer
- //
- // = DESCRIPTION
- // Implement the CosEventChannelAdmin::ProxyPullConsumer interface,
- // remember that this class is used to communicate with a
- // PullSupplier, so, in effect, this is the ambassador for a
- // supplier inside the event channel.
- //
- // = MEMORY MANAGMENT
- // The object commits suicide when disconnect_pull_consumer() is
- // called.
- //
public:
typedef CosEventChannelAdmin::ProxyPullConsumer_ptr _ptr_type;
typedef CosEventChannelAdmin::ProxyPullConsumer_var _var_type;
+ /// constructor...
TAO_CEC_ProxyPullConsumer (TAO_CEC_EventChannel* event_channel);
- // constructor...
+ /// destructor...
virtual ~TAO_CEC_ProxyPullConsumer (void);
- // destructor...
+ /// Activate in the POA
virtual CosEventChannelAdmin::ProxyPullConsumer_ptr activate (CORBA::Environment &ACE_TRY_ENV) ACE_THROW_SPEC ((CORBA::SystemException));
- // Activate in the POA
+ /// Deactivate from the POA
virtual void deactivate (CORBA::Environment &ACE_TRY_ENV)
ACE_THROW_SPEC ((CORBA::SystemException));
- // Deactivate from the POA
+ /// Return 0 if no supplier is connected...
CORBA::Boolean is_connected (void) const;
- // Return 0 if no supplier is connected...
+ /// Return the consumer object reference. It returns nil() if it has
+ /// not connected yet.
CosEventComm::PullSupplier_ptr supplier (void) const;
- // Return the consumer object reference. It returns nil() if it has
- // not connected yet.
+ /// Pulls from the supplier, verifies that it is connected.
CORBA::Any* try_pull_from_supplier (CORBA::Boolean_out has_event,
CORBA::Environment &env);
CORBA::Any* pull_from_supplier (CORBA::Environment &env);
- // Pulls from the supplier, verifies that it is connected.
+ /**
+ * Invoke the _non_existent() pseudo-operation on the supplier. If
+ * it is disconnected then it returns true and sets the
+ * <disconnected> flag.
+ */
CORBA::Boolean supplier_non_existent (CORBA::Boolean_out disconnected,
CORBA::Environment &ACE_TRY_ENV);
- // Invoke the _non_existent() pseudo-operation on the supplier. If
- // it is disconnected then it returns true and sets the
- // <disconnected> flag.
+ /// The event channel is shutting down
virtual void shutdown (CORBA::Environment&);
- // The event channel is shutting down
+ /// Increment and decrement the reference count.
CORBA::ULong _incr_refcnt (void);
CORBA::ULong _decr_refcnt (void);
- // Increment and decrement the reference count.
// = The CosEventChannelAdmin::ProxyPullConsumer methods...
virtual void connect_pull_supplier (
@@ -105,32 +103,32 @@ public:
TAO_default_environment ());
protected:
+ /// Set the supplier, used by some implementations to change the
+ /// policies used when invoking operations on the supplier.
void supplier (CosEventComm::PullSupplier_ptr supplier);
void supplier_i (CosEventComm::PullSupplier_ptr supplier);
- // Set the supplier, used by some implementations to change the
- // policies used when invoking operations on the supplier.
+ /// The private version (without locking) of is_connected().
CORBA::Boolean is_connected_i (void) const;
- // The private version (without locking) of is_connected().
+ /// Release the supplier
void cleanup_i (void);
- // Release the supplier
private:
+ /// The supplier admin, used for activation and memory managment.
TAO_CEC_EventChannel* event_channel_;
- // The supplier admin, used for activation and memory managment.
+ /// The locking strategy.
ACE_Lock* lock_;
- // The locking strategy.
+ /// The reference count.
CORBA::ULong refcount_;
- // The reference count.
+ /// The supplier....
CosEventComm::PullSupplier_var supplier_;
- // The supplier....
+ /// Store the default POA.
PortableServer::POA_var default_POA_;
- // Store the default POA.
};
#if defined (__ACE_INLINE__)
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPullSupplier.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPullSupplier.h
index 49ee1f1970f..4ff46385573 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPullSupplier.h
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPullSupplier.h
@@ -1,18 +1,14 @@
/* -*- C++ -*- */
-// $Id$
-//
-// ============================================================================
-//
-// = LIBRARY
-// ORBSVCS Cos Event Channel
-//
-// = FILENAME
-// CEC_ProxyPushSupplier
-//
-// = AUTHOR
-// Carlos O'Ryan (coryan@cs.wustl.edu)
-//
-// ============================================================================
+//=============================================================================
+/**
+ * @file CEC_ProxyPushSupplier
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan (coryan@cs.wustl.edu)
+ */
+//=============================================================================
+
#ifndef TAO_CEC_PROXYPULLSUPPLIER_H
#define TAO_CEC_PROXYPULLSUPPLIER_H
@@ -30,64 +26,67 @@
class TAO_CEC_EventChannel;
class TAO_CEC_ProxyPullConsumer;
+/**
+ * @class TAO_CEC_ProxyPullSupplier
+ *
+ * @brief ProxyPullSupplier
+ *
+ * Implement the CosEventChannelAdmin::ProxyPullSupplier interface,
+ * remember that this class is used to communicate with a
+ * PullConsumer, so, in effect, this is the ambassador for a
+ * consumer inside the event channel.
+ * = MEMORY MANAGMENT
+ * It does not assume ownership of the TAO_CEC_Dispatching object.
+ * It makes a copy of the ConsumerQOS and the consumer object
+ * reference.
+ * = LOCKING
+ * Locking is strategized, the event channel acts as a factory for
+ * the locking strategies.
+ */
class TAO_Event_Export TAO_CEC_ProxyPullSupplier : public POA_CosEventChannelAdmin::ProxyPullSupplier
{
- // = TITLE
- // ProxyPullSupplier
- //
- // = DESCRIPTION
- // Implement the CosEventChannelAdmin::ProxyPullSupplier interface,
- // remember that this class is used to communicate with a
- // PullConsumer, so, in effect, this is the ambassador for a
- // consumer inside the event channel.
- //
- // = MEMORY MANAGMENT
- // It does not assume ownership of the TAO_CEC_Dispatching object.
- // It makes a copy of the ConsumerQOS and the consumer object
- // reference.
- //
- // = LOCKING
- // Locking is strategized, the event channel acts as a factory for
- // the locking strategies.
- //
public:
typedef CosEventChannelAdmin::ProxyPullSupplier_ptr _ptr_type;
typedef CosEventChannelAdmin::ProxyPullSupplier_var _var_type;
+ /// constructor...
TAO_CEC_ProxyPullSupplier (TAO_CEC_EventChannel* event_channel);
- // constructor...
+ /// destructor...
virtual ~TAO_CEC_ProxyPullSupplier (void);
- // destructor...
+ /// Activate in the POA
virtual CosEventChannelAdmin::ProxyPullSupplier_ptr activate (CORBA::Environment &ACE_TRY_ENV) ACE_THROW_SPEC ((CORBA::SystemException));
- // Activate in the POA
+ /// Deactivate from the POA
virtual void deactivate (CORBA::Environment &ACE_TRY_ENV)
ACE_THROW_SPEC ((CORBA::SystemException));
- // Deactivate from the POA
+ /// Return 0 if no consumer is connected...
CORBA::Boolean is_connected (void) const;
- // Return 0 if no consumer is connected...
+ /**
+ * Return the consumer object reference. It returns nil() if it has
+ * not connected yet.
+ * NOTE: This method does not return a new reference!!! Doing so
+ * will increase the locking overhead on the critical path.
+ */
CosEventComm::PullConsumer_ptr consumer (void) const;
- // Return the consumer object reference. It returns nil() if it has
- // not connected yet.
- // NOTE: This method does not return a new reference!!! Doing so
- // will increase the locking overhead on the critical path.
+ /// The event channel is shutting down
virtual void shutdown (CORBA::Environment &env);
- // The event channel is shutting down
+ /**
+ * Invoke the _non_existent() pseudo-operation on the consumer. If
+ * it is disconnected then it returns true and sets the
+ * <disconnected> flag.
+ */
CORBA::Boolean consumer_non_existent (CORBA::Boolean_out disconnected,
CORBA::Environment &ACE_TRY_ENV);
- // Invoke the _non_existent() pseudo-operation on the consumer. If
- // it is disconnected then it returns true and sets the
- // <disconnected> flag.
+ /// Push an event into the queue.
void push (const CORBA::Any &event,
CORBA::Environment &ACE_TRY_ENV);
- // Push an event into the queue.
// = The CosEventChannelAdmin::ProxyPullSupplier methods...
virtual void connect_pull_consumer (
@@ -103,9 +102,9 @@ public:
virtual void disconnect_pull_supplier (CORBA::Environment &)
ACE_THROW_SPEC ((CORBA::SystemException));
+ /// Increment and decrement the reference count.
CORBA::ULong _incr_refcnt (void);
CORBA::ULong _decr_refcnt (void);
- // Increment and decrement the reference count.
// = The Servant methods
virtual PortableServer::POA_ptr _default_POA (CORBA::Environment &env);
@@ -113,41 +112,41 @@ public:
virtual void _remove_ref (CORBA_Environment &ACE_TRY_ENV);
protected:
+ /// Set the consumer, used by some implementations to change the
+ /// policies used when invoking operations on the consumer.
void consumer (CosEventComm::PullConsumer_ptr consumer);
void consumer_i (CosEventComm::PullConsumer_ptr consumer);
- // Set the consumer, used by some implementations to change the
- // policies used when invoking operations on the consumer.
+ /// The private version (without locking) of is_connected().
CORBA::Boolean is_connected_i (void) const;
- // The private version (without locking) of is_connected().
+ /// Release the child and the consumer
void cleanup_i (void);
- // Release the child and the consumer
private:
+ /// The Event Channel that owns this object.
TAO_CEC_EventChannel* event_channel_;
- // The Event Channel that owns this object.
+ /// The locking strategy.
ACE_Lock* lock_;
- // The locking strategy.
+ /// The reference count.
CORBA::ULong refcount_;
- // The reference count.
+ /// The consumer....
CosEventComm::PullConsumer_var consumer_;
- // The consumer....
+ /// If the flag is not zero then we are connected, notice that the
+ /// consumer can be nil.
int connected_;
- // If the flag is not zero then we are connected, notice that the
- // consumer can be nil.
+ /// Store the default POA.
PortableServer::POA_var default_POA_;
- // Store the default POA.
+ /// Use a message queue to pass the
TAO_SYNCH_MUTEX queue_lock_;
TAO_SYNCH_CONDITION wait_not_empty_;
ACE_Unbounded_Queue<CORBA::Any> queue_;
- // Use a message queue to pass the
};
#if defined (__ACE_INLINE__)
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushConsumer.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushConsumer.h
index 122ae3372f3..58ac3e2bed9 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushConsumer.h
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushConsumer.h
@@ -1,18 +1,14 @@
/* -*- C++ -*- */
-// $Id$
-//
-// ============================================================================
-//
-// = LIBRARY
-// ORBSVCS Cos Event Channel
-//
-// = FILENAME
-// CEC_ProxyPushConsumer
-//
-// = AUTHOR
-// Carlos O'Ryan (coryan@cs.wustl.edu)
-//
-// ============================================================================
+//=============================================================================
+/**
+ * @file CEC_ProxyPushConsumer
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan (coryan@cs.wustl.edu)
+ */
+//=============================================================================
+
#ifndef TAO_CEC_PROXYPUSHCONSUMER_H
#define TAO_CEC_PROXYPUSHCONSUMER_H
@@ -31,57 +27,59 @@ class TAO_CEC_EventChannel;
class TAO_CEC_Dispatching;
class TAO_CEC_ProxyPushSupplier;
+/**
+ * @class TAO_CEC_ProxyPushConsumer
+ *
+ * @brief ProxyPushConsumer
+ *
+ * Implement the CosEventChannelAdmin::ProxyPushConsumer interface,
+ * remember that this class is used to communicate with a
+ * PushSupplier, so, in effect, this is the ambassador for a
+ * supplier inside the event channel.
+ * = MEMORY MANAGMENT
+ * The object commits suicide when disconnect_push_consumer() is
+ * called.
+ */
class TAO_Event_Export TAO_CEC_ProxyPushConsumer : public POA_CosEventChannelAdmin::ProxyPushConsumer
{
- // = TITLE
- // ProxyPushConsumer
- //
- // = DESCRIPTION
- // Implement the CosEventChannelAdmin::ProxyPushConsumer interface,
- // remember that this class is used to communicate with a
- // PushSupplier, so, in effect, this is the ambassador for a
- // supplier inside the event channel.
- //
- // = MEMORY MANAGMENT
- // The object commits suicide when disconnect_push_consumer() is
- // called.
- //
public:
typedef CosEventChannelAdmin::ProxyPushConsumer_ptr _ptr_type;
typedef CosEventChannelAdmin::ProxyPushConsumer_var _var_type;
+ /// constructor...
TAO_CEC_ProxyPushConsumer (TAO_CEC_EventChannel* event_channel);
- // constructor...
+ /// destructor...
virtual ~TAO_CEC_ProxyPushConsumer (void);
- // destructor...
+ /// Activate in the POA
virtual CosEventChannelAdmin::ProxyPushConsumer_ptr activate (CORBA::Environment &ACE_TRY_ENV) ACE_THROW_SPEC ((CORBA::SystemException));
- // Activate in the POA
+ /// Deactivate from the POA
virtual void deactivate (CORBA::Environment &ACE_TRY_ENV)
ACE_THROW_SPEC ((CORBA::SystemException));
- // Deactivate from the POA
+ /// Return 0 if no supplier is connected...
CORBA::Boolean is_connected (void) const;
- // Return 0 if no supplier is connected...
+ /// Return the consumer object reference. It returns nil() if it has
+ /// not connected yet.
CosEventComm::PushSupplier_ptr supplier (void) const;
- // Return the consumer object reference. It returns nil() if it has
- // not connected yet.
+ /**
+ * Invoke the _non_existent() pseudo-operation on the supplier. If
+ * it is disconnected then it returns true and sets the
+ * <disconnected> flag.
+ */
CORBA::Boolean supplier_non_existent (CORBA::Boolean_out disconnected,
CORBA::Environment &ACE_TRY_ENV);
- // Invoke the _non_existent() pseudo-operation on the supplier. If
- // it is disconnected then it returns true and sets the
- // <disconnected> flag.
+ /// The event channel is shutting down
virtual void shutdown (CORBA::Environment&);
- // The event channel is shutting down
+ /// Increment and decrement the reference count.
CORBA::ULong _incr_refcnt (void);
CORBA::ULong _decr_refcnt (void);
- // Increment and decrement the reference count.
// = The CosEventChannelAdmin::ProxyPushConsumer methods...
virtual void connect_push_supplier (
@@ -103,83 +101,84 @@ public:
TAO_default_environment ());
protected:
+ /// Set the supplier, used by some implementations to change the
+ /// policies used when invoking operations on the supplier.
void supplier (CosEventComm::PushSupplier_ptr supplier);
void supplier_i (CosEventComm::PushSupplier_ptr supplier);
- // Set the supplier, used by some implementations to change the
- // policies used when invoking operations on the supplier.
friend class TAO_CEC_ProxyPushConsumer_Guard;
// The guard needs access to the following protected methods.
+ /// The private version (without locking) of is_connected().
CORBA::Boolean is_connected_i (void) const;
- // The private version (without locking) of is_connected().
+ /// Release the supplier
void cleanup_i (void);
- // Release the supplier
private:
+ /// The supplier admin, used for activation and memory managment.
TAO_CEC_EventChannel* event_channel_;
- // The supplier admin, used for activation and memory managment.
+ /// The locking strategy.
ACE_Lock* lock_;
- // The locking strategy.
+ /// The reference count.
CORBA::ULong refcount_;
- // The reference count.
+ /// The supplier....
CosEventComm::PushSupplier_var supplier_;
- // The supplier....
+ /// If the flag is not zero then we are connected, notice that the
+ /// supplier can be nil.
int connected_;
- // If the flag is not zero then we are connected, notice that the
- // supplier can be nil.
+ /// Store the default POA.
PortableServer::POA_var default_POA_;
- // Store the default POA.
};
// ****************************************************************
+/**
+ * @class TAO_CEC_ProxyPushConsumer_Guard
+ *
+ * @brief A Guard for the ProxyPushConsumer reference count
+ *
+ * This is a helper class used in the implementation of
+ * ProxyPushConumer. It provides a Guard mechanism to increment
+ * the reference count on the proxy, eliminating the need to hold
+ * mutexes during long operations.
+ */
class TAO_Event_Export TAO_CEC_ProxyPushConsumer_Guard
{
- // = TITLE
- // A Guard for the ProxyPushConsumer reference count
- //
- // = DESCRIPTION
- // This is a helper class used in the implementation of
- // ProxyPushConumer. It provides a Guard mechanism to increment
- // the reference count on the proxy, eliminating the need to hold
- // mutexes during long operations.
- //
public:
+ /// Constructor
TAO_CEC_ProxyPushConsumer_Guard (ACE_Lock *lock,
CORBA::ULong &refcount,
TAO_CEC_EventChannel *ec,
TAO_CEC_ProxyPushConsumer *proxy);
- // Constructor
+ /// Destructor
~TAO_CEC_ProxyPushConsumer_Guard (void);
- // Destructor
+ /// Returns 1 if the reference count successfully acquired
int locked (void) const;
- // Returns 1 if the reference count successfully acquired
private:
+ /// The lock used to protect the reference count
ACE_Lock *lock_;
- // The lock used to protect the reference count
+ /// The reference count
CORBA::ULong &refcount_;
- // The reference count
+ /// The event channel used to destroy the proxy
TAO_CEC_EventChannel *event_channel_;
- // The event channel used to destroy the proxy
+ /// The proxy whose lifetime is controlled by the reference count
TAO_CEC_ProxyPushConsumer *proxy_;
- // The proxy whose lifetime is controlled by the reference count
+ /// This flag is set to 1 if the reference count was successfully
+ /// acquired.
int locked_;
- // This flag is set to 1 if the reference count was successfully
- // acquired.
};
#if defined (__ACE_INLINE__)
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushSupplier.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushSupplier.h
index 19fbffcc0b8..eacd9fea69b 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushSupplier.h
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushSupplier.h
@@ -1,18 +1,14 @@
/* -*- C++ -*- */
-// $Id$
-//
-// ============================================================================
-//
-// = LIBRARY
-// ORBSVCS Cos Event Channel
-//
-// = FILENAME
-// CEC_ProxyPushSupplier
-//
-// = AUTHOR
-// Carlos O'Ryan (coryan@cs.wustl.edu)
-//
-// ============================================================================
+//=============================================================================
+/**
+ * @file CEC_ProxyPushSupplier
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan (coryan@cs.wustl.edu)
+ */
+//=============================================================================
+
#ifndef TAO_CEC_PROXYPUSHSUPPLIER_H
#define TAO_CEC_PROXYPUSHSUPPLIER_H
@@ -28,72 +24,75 @@
class TAO_CEC_EventChannel;
class TAO_CEC_ProxyPushConsumer;
+/**
+ * @class TAO_CEC_ProxyPushSupplier
+ *
+ * @brief ProxyPushSupplier
+ *
+ * Implement the CosEventChannelAdmin::ProxyPushSupplier interface,
+ * remember that this class is used to communicate with a
+ * PushConsumer, so, in effect, this is the ambassador for a
+ * consumer inside the event channel.
+ * = MEMORY MANAGMENT
+ * It does not assume ownership of the TAO_CEC_Dispatching object.
+ * It makes a copy of the ConsumerQOS and the consumer object
+ * reference.
+ * = LOCKING
+ * Locking is strategized, the event channel acts as a factory for
+ * the locking strategies.
+ */
class TAO_Event_Export TAO_CEC_ProxyPushSupplier : public POA_CosEventChannelAdmin::ProxyPushSupplier
{
- // = TITLE
- // ProxyPushSupplier
- //
- // = DESCRIPTION
- // Implement the CosEventChannelAdmin::ProxyPushSupplier interface,
- // remember that this class is used to communicate with a
- // PushConsumer, so, in effect, this is the ambassador for a
- // consumer inside the event channel.
- //
- // = MEMORY MANAGMENT
- // It does not assume ownership of the TAO_CEC_Dispatching object.
- // It makes a copy of the ConsumerQOS and the consumer object
- // reference.
- //
- // = LOCKING
- // Locking is strategized, the event channel acts as a factory for
- // the locking strategies.
- //
public:
typedef CosEventChannelAdmin::ProxyPushSupplier_ptr _ptr_type;
typedef CosEventChannelAdmin::ProxyPushSupplier_var _var_type;
+ /// constructor...
TAO_CEC_ProxyPushSupplier (TAO_CEC_EventChannel* event_channel);
- // constructor...
+ /// destructor...
virtual ~TAO_CEC_ProxyPushSupplier (void);
- // destructor...
+ /// Activate in the POA
virtual CosEventChannelAdmin::ProxyPushSupplier_ptr activate (CORBA::Environment &ACE_TRY_ENV) ACE_THROW_SPEC ((CORBA::SystemException));
- // Activate in the POA
+ /// Deactivate from the POA
virtual void deactivate (CORBA::Environment &ACE_TRY_ENV)
ACE_THROW_SPEC ((CORBA::SystemException));
- // Deactivate from the POA
+ /// Return 0 if no consumer is connected...
CORBA::Boolean is_connected (void) const;
- // Return 0 if no consumer is connected...
+ /**
+ * Return the consumer object reference. It returns nil() if it has
+ * not connected yet.
+ * NOTE: This method does not return a new reference!!! Doing so
+ * will increase the locking overhead on the critical path.
+ */
CosEventComm::PushConsumer_ptr consumer (void) const;
- // Return the consumer object reference. It returns nil() if it has
- // not connected yet.
- // NOTE: This method does not return a new reference!!! Doing so
- // will increase the locking overhead on the critical path.
+ /// The event channel is shutting down
virtual void shutdown (CORBA::Environment &env);
- // The event channel is shutting down
+ /// Internal methods to push an event to each consumer.
virtual void push (const CORBA::Any &event,
CORBA::Environment &ACE_TRY_ENV);
virtual void push_nocopy (CORBA::Any &event,
CORBA::Environment &ACE_TRY_ENV);
- // Internal methods to push an event to each consumer.
+ /// Pushes to the consumer, verifies that it is connected.
void push_to_consumer (const CORBA::Any &event,
CORBA::Environment &env);
void reactive_push_to_consumer (const CORBA::Any &event,
CORBA::Environment &env);
- // Pushes to the consumer, verifies that it is connected.
+ /**
+ * Invoke the _non_existent() pseudo-operation on the consumer. If
+ * it is disconnected then it returns true and sets the
+ * <disconnected> flag.
+ */
CORBA::Boolean consumer_non_existent (CORBA::Boolean_out disconnected,
CORBA::Environment &ACE_TRY_ENV);
- // Invoke the _non_existent() pseudo-operation on the consumer. If
- // it is disconnected then it returns true and sets the
- // <disconnected> flag.
// = The CosEventChannelAdmin::ProxyPushSupplier methods...
virtual void connect_push_consumer (
@@ -105,9 +104,9 @@ public:
virtual void disconnect_push_supplier (CORBA::Environment &)
ACE_THROW_SPEC ((CORBA::SystemException));
+ /// Increment and decrement the reference count.
CORBA::ULong _incr_refcnt (void);
CORBA::ULong _decr_refcnt (void);
- // Increment and decrement the reference count.
// = The Servant methods
virtual PortableServer::POA_ptr _default_POA (CORBA::Environment &env);
@@ -115,32 +114,32 @@ public:
virtual void _remove_ref (CORBA_Environment &ACE_TRY_ENV);
protected:
+ /// Set the consumer, used by some implementations to change the
+ /// policies used when invoking operations on the consumer.
void consumer (CosEventComm::PushConsumer_ptr consumer);
void consumer_i (CosEventComm::PushConsumer_ptr consumer);
- // Set the consumer, used by some implementations to change the
- // policies used when invoking operations on the consumer.
+ /// The private version (without locking) of is_connected().
CORBA::Boolean is_connected_i (void) const;
- // The private version (without locking) of is_connected().
+ /// Release the child and the consumer
void cleanup_i (void);
- // Release the child and the consumer
private:
+ /// The Event Channel that owns this object.
TAO_CEC_EventChannel* event_channel_;
- // The Event Channel that owns this object.
+ /// The locking strategy.
ACE_Lock* lock_;
- // The locking strategy.
+ /// The reference count.
CORBA::ULong refcount_;
- // The reference count.
+ /// The consumer....
CosEventComm::PushConsumer_var consumer_;
- // The consumer....
+ /// Store the default POA.
PortableServer::POA_var default_POA_;
- // Store the default POA.
};
#if defined (__ACE_INLINE__)
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Pulling_Strategy.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Pulling_Strategy.h
index 44f2719c6d2..272e8ddf8e4 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Pulling_Strategy.h
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Pulling_Strategy.h
@@ -1,20 +1,14 @@
/* -*- C++ -*- */
-// $Id$
-//
-// ============================================================================
-//
-// = LIBRARY
-// ORBSVCS Cos Event Channel
-//
-// = FILENAME
-// CEC_Pulling_Strategy
-//
-// = AUTHOR
-// Carlos O'Ryan (coryan@cs.wustl.edu)
-//
-// = CREDITS
-//
-// ============================================================================
+//=============================================================================
+/**
+ * @file CEC_Pulling_Strategy
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan (coryan@cs.wustl.edu)
+ */
+//=============================================================================
+
#ifndef TAO_CEC_PULLING_STRATEGY_H
#define TAO_CEC_PULLING_STRATEGY_H
@@ -26,39 +20,42 @@
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
+/**
+ * @class TAO_CEC_Pulling_Strategy
+ *
+ * @brief Define the interface for the pulling strategies.
+ *
+ * The EC may be configured with different pulling strategies,
+ * for instance, it can use a pool of threads to dispatch the
+ * events, or a set of queues with threads at different priorities
+ * for each queue or can simply push the event to the consumer in
+ * FIFO order.
+ */
class TAO_Event_Export TAO_CEC_Pulling_Strategy
{
- // = TITLE
- // Define the interface for the pulling strategies.
- //
- // = DESCRIPTION
- // The EC may be configured with different pulling strategies,
- // for instance, it can use a pool of threads to dispatch the
- // events, or a set of queues with threads at different priorities
- // for each queue or can simply push the event to the consumer in
- // FIFO order.
- //
public:
+ /// destructor...
virtual ~TAO_CEC_Pulling_Strategy (void);
- // destructor...
+ /// Initialize all the data structures, activate any internal threads,
+ /// etc.
virtual void activate (void) = 0;
- // Initialize all the data structures, activate any internal threads,
- // etc.
+ /**
+ * Deactivate any internal threads and cleanup internal data
+ * structures, it should only return once the threads have finished
+ * their jobs.
+ */
virtual void shutdown (void) = 0;
- // Deactivate any internal threads and cleanup internal data
- // structures, it should only return once the threads have finished
- // their jobs.
#if 0
+ /// Some strategies may want to keep track of connected consumers.
virtual void connected (TAO_CEC_ProxyPullConsumer *,
CORBA::Environment &) = 0;
virtual void reconnected (TAO_CEC_ProxyPullConsumer *,
CORBA::Environment &) = 0;
virtual void diconnected (TAO_CEC_ProxyPullConsumer *,
CORBA::Environment &) = 0;
- // Some strategies may want to keep track of connected consumers.
#endif /* 0 */
};
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Reactive_ConsumerControl.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Reactive_ConsumerControl.h
index 1d0742fad4c..7b161820181 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Reactive_ConsumerControl.h
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Reactive_ConsumerControl.h
@@ -1,21 +1,14 @@
/* -*- C++ -*- */
-// $Id$
-//
-// ============================================================================
-//
-// = LIBRARY
-// ORBSVCS Cos Event Channel
-//
-// = FILENAME
-// CEC_Reactive_ConsumerControl
-//
-// = AUTHOR
-// Carlos O'Ryan (coryan@cs.wustl.edu)
-//
-// More details can be found in:
-// http://www.cs.wustl.edu/~coryan/EC/index.html
-//
-// ============================================================================
+//=============================================================================
+/**
+ * @file CEC_Reactive_ConsumerControl
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan (coryan@cs.wustl.edu)More details can be found in:http://www.cs.wustl.edu/~coryan/EC/index.html
+ */
+//=============================================================================
+
#ifndef TAO_CEC_REACTIVE_CONSUMERCONTROL_H
#define TAO_CEC_REACTIVE_CONSUMERCONTROL_H
@@ -34,57 +27,56 @@ class TAO_CEC_EventChannel;
class TAO_CEC_Reactive_ConsumerControl;
+/**
+ * @class TAO_CEC_ConsumerControl_Adapter
+ *
+ * @brief Forwards timeout events to the Reactive ConsumerControl
+ *
+ * The Reactive ConsumerControl strategy uses the reactor to
+ * periodically wakeup and verify the state of the consumers
+ * registered with the Event Channel.
+ */
class TAO_Event_Export TAO_CEC_ConsumerControl_Adapter : public ACE_Event_Handler
{
- // = TITLE
- // Forwards timeout events to the Reactive ConsumerControl
- //
- // = DESCRIPTION
- // The Reactive ConsumerControl strategy uses the reactor to
- // periodically wakeup and verify the state of the consumers
- // registered with the Event Channel.
- //
public:
+ /// Constructor
TAO_CEC_ConsumerControl_Adapter (TAO_CEC_Reactive_ConsumerControl *adaptee);
- // Constructor
// = Documented in ACE_Event_Handler.
virtual int handle_timeout (const ACE_Time_Value &tv,
const void *arg = 0);
private:
+ /// The adapted object
TAO_CEC_Reactive_ConsumerControl *adaptee_;
- // The adapted object
};
+/**
+ * @class TAO_CEC_Reactive_ConsumerControl
+ *
+ * @brief ConsumerControl
+ *
+ * Defines the interface for the consumer control strategy.
+ * This strategy handles misbehaving or failing consumers.
+ * = MEMORY MANAGMENT
+ * = LOCKING
+ * = TODO
+ */
class TAO_Event_Export TAO_CEC_Reactive_ConsumerControl : public TAO_CEC_ConsumerControl
{
- // = TITLE
- // ConsumerControl
- //
- // = DESCRIPTION
- // Defines the interface for the consumer control strategy.
- // This strategy handles misbehaving or failing consumers.
- //
- // = MEMORY MANAGMENT
- //
- // = LOCKING
- //
- // = TODO
- //
public:
+ /// Constructor. It does not assume ownership of the <event_channel>
+ /// parameter.
TAO_CEC_Reactive_ConsumerControl (const ACE_Time_Value &rate,
TAO_CEC_EventChannel *event_channel,
CORBA::ORB_ptr orb);
- // Constructor. It does not assume ownership of the <event_channel>
- // parameter.
+ /// destructor...
virtual ~TAO_CEC_Reactive_ConsumerControl (void);
- // destructor...
+ /// Receive the timeout from the adapter
void handle_timeout (const ACE_Time_Value &tv,
const void* arg);
- // Receive the timeout from the adapter
// = Documented in TAO_CEC_ConsumerControl
virtual int activate (void);
@@ -98,31 +90,31 @@ public:
CORBA::Environment &);
private:
+ /// Check if the consumers still exists. It is a helper method for
+ /// handle_timeout() to isolate the exceptions.
void query_consumers (CORBA::Environment &ACE_TRY_ENV);
- // Check if the consumers still exists. It is a helper method for
- // handle_timeout() to isolate the exceptions.
private:
+ /// The polling rate
ACE_Time_Value rate_;
- // The polling rate
+ /// The Adapter for the reactor events
TAO_CEC_ConsumerControl_Adapter adapter_;
- // The Adapter for the reactor events
+ /// The event channel
TAO_CEC_EventChannel *event_channel_;
- // The event channel
+ /// The ORB
CORBA::ORB_var orb_;
- // The ORB
+ /// To control the timeout policy in the thread
CORBA::PolicyCurrent_var policy_current_;
- // To control the timeout policy in the thread
+ /// Precomputed policy list to the set timeout.
CORBA::PolicyList policy_list_;
- // Precomputed policy list to the set timeout.
+ /// The ORB reactor
ACE_Reactor *reactor_;
- // The ORB reactor
};
// ****************************************************************
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Reactive_Pulling_Strategy.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Reactive_Pulling_Strategy.h
index 9f8f612be54..900f26ce3a0 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Reactive_Pulling_Strategy.h
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Reactive_Pulling_Strategy.h
@@ -1,20 +1,14 @@
/* -*- C++ -*- */
-// $Id$
-//
-// ============================================================================
-//
-// = LIBRARY
-// ORBSVCS Cos Event Channel
-//
-// = FILENAME
-// CEC_Reactive_Pulling_Strategy
-//
-// = AUTHOR
-// Carlos O'Ryan (coryan@cs.wustl.edu)
-//
-// = CREDITS
-//
-// ============================================================================
+//=============================================================================
+/**
+ * @file CEC_Reactive_Pulling_Strategy
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan (coryan@cs.wustl.edu)
+ */
+//=============================================================================
+
#ifndef TAO_CEC_REACTIVE_PULLING_STRATEGY_H
#define TAO_CEC_REACTIVE_PULLING_STRATEGY_H
@@ -35,76 +29,78 @@ class TAO_CEC_ConsumerAdmin;
class TAO_CEC_SupplierControl;
class TAO_CEC_Reactive_Pulling_Strategy;
+/**
+ * @class TAO_CEC_Pulling_Strategy_Adapter
+ *
+ * @brief Forwards timeout events to the Reactive Pulling Strategy
+ *
+ * The Reactive Pulling Strategy strategy uses the reactor to
+ * periodically wakeup and try top pull events from each
+ * PullSupplier connected to the EventChannel.
+ */
class TAO_Event_Export TAO_CEC_Pulling_Strategy_Adapter : public ACE_Event_Handler
{
- // = TITLE
- // Forwards timeout events to the Reactive Pulling Strategy
- //
- // = DESCRIPTION
- // The Reactive Pulling Strategy strategy uses the reactor to
- // periodically wakeup and try top pull events from each
- // PullSupplier connected to the EventChannel.
- //
public:
+ /// Constructor
TAO_CEC_Pulling_Strategy_Adapter (TAO_CEC_Reactive_Pulling_Strategy *adaptee);
- // Constructor
// = Documented in ACE_Event_Handler.
virtual int handle_timeout (const ACE_Time_Value &tv,
const void *arg = 0);
private:
+ /// The adapted object
TAO_CEC_Reactive_Pulling_Strategy *adaptee_;
- // The adapted object
};
// ****************************************************************
+/**
+ * @class TAO_CEC_Reactive_Pulling_Strategy
+ *
+ * @brief Dispatch using the caller thread.
+ *
+ * The events are dispatched in FIFO ordering, using the invoking
+ * thread to push the event to the consumer.
+ */
class TAO_Event_Export TAO_CEC_Reactive_Pulling_Strategy : public TAO_CEC_Pulling_Strategy
{
- // = TITLE
- // Dispatch using the caller thread.
- //
- // = DESCRIPTION
- // The events are dispatched in FIFO ordering, using the invoking
- // thread to push the event to the consumer.
- //
public:
+ /// The scheduler is used to find the range of priorities and similar
+ /// info.
TAO_CEC_Reactive_Pulling_Strategy (const ACE_Time_Value &rate,
TAO_CEC_EventChannel *event_channel,
CORBA::ORB_ptr orb);
- // The scheduler is used to find the range of priorities and similar
- // info.
+ /// Receive the timeout from the adapter
void handle_timeout (const ACE_Time_Value &tv,
const void* arg);
- // Receive the timeout from the adapter
// = The CEC_Pulling_Strategy methods.
virtual void activate (void);
virtual void shutdown (void);
private:
+ /// The Adapter for the reactor events
TAO_CEC_Pulling_Strategy_Adapter adapter_;
- // The Adapter for the reactor events
+ /// The polling rate
ACE_Time_Value rate_;
- // The polling rate
+ /// The event channel
TAO_CEC_EventChannel *event_channel_;
- // The event channel
+ /// The ORB
CORBA::ORB_var orb_;
- // The ORB
+ /// To control the timeout policy in the thread
CORBA::PolicyCurrent_var policy_current_;
- // To control the timeout policy in the thread
+ /// Precomputed policy list to the set timeout.
CORBA::PolicyList policy_list_;
- // Precomputed policy list to the set timeout.
+ /// The ORB reactor
ACE_Reactor *reactor_;
- // The ORB reactor
};
// ****************************************************************
@@ -119,11 +115,11 @@ public:
CORBA::Environment &ACE_TRY_ENV);
private:
+ /// Used to propagate the events.
TAO_CEC_ConsumerAdmin *consumer_admin_;
- // Used to propagate the events.
+ /// To report failed or dead suppliers
TAO_CEC_SupplierControl *supplier_control_;
- // To report failed or dead suppliers
};
#if defined (__ACE_INLINE__)
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Reactive_SupplierControl.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Reactive_SupplierControl.h
index 6e8d79112fb..8b16e1f8860 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Reactive_SupplierControl.h
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_Reactive_SupplierControl.h
@@ -1,21 +1,14 @@
/* -*- C++ -*- */
-// $Id$
-//
-// ============================================================================
-//
-// = LIBRARY
-// ORBSVCS Cos Event Channel
-//
-// = FILENAME
-// CEC_Reactive_SupplierControl
-//
-// = AUTHOR
-// Carlos O'Ryan (coryan@cs.wustl.edu)
-//
-// More details can be found in:
-// http://www.cs.wustl.edu/~coryan/EC/index.html
-//
-// ============================================================================
+//=============================================================================
+/**
+ * @file CEC_Reactive_SupplierControl
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan (coryan@cs.wustl.edu)More details can be found in:http://www.cs.wustl.edu/~coryan/EC/index.html
+ */
+//=============================================================================
+
#ifndef TAO_CEC_REACTIVE_SUPPLIERCONTROL_H
#define TAO_CEC_REACTIVE_SUPPLIERCONTROL_H
@@ -34,57 +27,56 @@ class TAO_CEC_EventChannel;
class TAO_CEC_Reactive_SupplierControl;
+/**
+ * @class TAO_CEC_SupplierControl_Adapter
+ *
+ * @brief Forwards timeout events to the Reactive SupplierControl
+ *
+ * The Reactive SupplierControl strategy uses the reactor to
+ * periodically wakeup and verify the state of the suppliers
+ * registered with the Event Channel.
+ */
class TAO_Event_Export TAO_CEC_SupplierControl_Adapter : public ACE_Event_Handler
{
- // = TITLE
- // Forwards timeout events to the Reactive SupplierControl
- //
- // = DESCRIPTION
- // The Reactive SupplierControl strategy uses the reactor to
- // periodically wakeup and verify the state of the suppliers
- // registered with the Event Channel.
- //
public:
+ /// Constructor
TAO_CEC_SupplierControl_Adapter (TAO_CEC_Reactive_SupplierControl *adaptee);
- // Constructor
// = Documented in ACE_Event_Handler.
virtual int handle_timeout (const ACE_Time_Value &tv,
const void *arg = 0);
private:
+ /// The adapted object
TAO_CEC_Reactive_SupplierControl *adaptee_;
- // The adapted object
};
+/**
+ * @class TAO_CEC_Reactive_SupplierControl
+ *
+ * @brief SupplierControl
+ *
+ * Defines the interface for the supplier control strategy.
+ * This strategy handles misbehaving or failing suppliers.
+ * = MEMORY MANAGMENT
+ * = LOCKING
+ * = TODO
+ */
class TAO_Event_Export TAO_CEC_Reactive_SupplierControl : public TAO_CEC_SupplierControl
{
- // = TITLE
- // SupplierControl
- //
- // = DESCRIPTION
- // Defines the interface for the supplier control strategy.
- // This strategy handles misbehaving or failing suppliers.
- //
- // = MEMORY MANAGMENT
- //
- // = LOCKING
- //
- // = TODO
- //
public:
+ /// Constructor. It does not assume ownership of the <event_channel>
+ /// parameter.
TAO_CEC_Reactive_SupplierControl (const ACE_Time_Value &rate,
TAO_CEC_EventChannel *event_channel,
CORBA::ORB_ptr orb);
- // Constructor. It does not assume ownership of the <event_channel>
- // parameter.
+ /// destructor...
virtual ~TAO_CEC_Reactive_SupplierControl (void);
- // destructor...
+ /// Receive the timeout from the adapter
void handle_timeout (const ACE_Time_Value &tv,
const void* arg);
- // Receive the timeout from the adapter
// = Documented in TAO_CEC_SupplierControl
virtual int activate (void);
@@ -98,31 +90,31 @@ public:
CORBA::Environment &);
private:
+ /// Check if the suppliers still exists. It is a helper method for
+ /// handle_timeout() to isolate the exceptions.
void query_suppliers (CORBA::Environment &ACE_TRY_ENV);
- // Check if the suppliers still exists. It is a helper method for
- // handle_timeout() to isolate the exceptions.
private:
+ /// The polling rate
ACE_Time_Value rate_;
- // The polling rate
+ /// The Adapter for the reactor events
TAO_CEC_SupplierControl_Adapter adapter_;
- // The Adapter for the reactor events
+ /// The event channel
TAO_CEC_EventChannel *event_channel_;
- // The event channel
+ /// The ORB
CORBA::ORB_var orb_;
- // The ORB
+ /// To control the timeout policy in the thread
CORBA::PolicyCurrent_var policy_current_;
- // To control the timeout policy in the thread
+ /// Precomputed policy list to the set timeout.
CORBA::PolicyList policy_list_;
- // Precomputed policy list to the set timeout.
+ /// The ORB reactor
ACE_Reactor *reactor_;
- // The ORB reactor
};
// ****************************************************************
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_SupplierAdmin.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_SupplierAdmin.h
index 9b1d157c26f..9ae91821783 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_SupplierAdmin.h
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_SupplierAdmin.h
@@ -1,26 +1,14 @@
/* -*- C++ -*- */
-// $Id$
-//
-// ============================================================================
-//
-// = LIBRARY
-// ORBSVCS Real-time Event Channel
-//
-// = FILENAME
-// CEC_SupplierAdmin
-//
-// = AUTHOR
-// Carlos O'Ryan (coryan@cs.wustl.edu)
-//
-// = CREDITS
-// Based on previous work by Tim Harrison (harrison@cs.wustl.edu)
-// and other members of the DOC group.
-// More details can be found in:
-// http://www.cs.wustl.edu/~schmidt/oopsla.ps.gz
-// http://www.cs.wustl.edu/~schmidt/JSAC-98.ps.gz
-//
-//
-// ============================================================================
+//=============================================================================
+/**
+ * @file CEC_SupplierAdmin
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan (coryan@cs.wustl.edu)Based on previous work by Tim Harrison (harrison@cs.wustl.edu)and other members of the DOC group.More details can be found in:http://www.cs.wustl.edu/~schmidt/oopsla.ps.gzhttp://www.cs.wustl.edu/~schmidt/JSAC-98.ps.gz
+ */
+//=============================================================================
+
#ifndef TAO_CEC_SUPPLIERADMIN_H
#define TAO_CEC_SUPPLIERADMIN_H
@@ -39,41 +27,40 @@
class TAO_CEC_EventChannel;
+/**
+ * @class TAO_CEC_SupplierAdmin
+ *
+ * @brief ProxyPushSupplier
+ *
+ * Implement the CosEventChannelAdmin::SupplierAdmin interface.
+ * This class is an Abstract Factory for the
+ * TAO_CEC_ProxyPushConsumer.
+ * = MEMORY MANAGMENT
+ * It does not assume ownership of the TAO_CEC_EventChannel object
+ * = LOCKING
+ * @@ TODO
+ * No provisions for locking, access must be serialized
+ * externally.
+ * = TODO
+ */
class TAO_Event_Export TAO_CEC_SupplierAdmin : public POA_CosEventChannelAdmin::SupplierAdmin
{
- // = TITLE
- // ProxyPushSupplier
- //
- // = DESCRIPTION
- // Implement the CosEventChannelAdmin::SupplierAdmin interface.
- // This class is an Abstract Factory for the
- // TAO_CEC_ProxyPushConsumer.
- //
- // = MEMORY MANAGMENT
- // It does not assume ownership of the TAO_CEC_EventChannel object
- //
- // = LOCKING
- // @@ TODO
- // No provisions for locking, access must be serialized
- // externally.
- //
- // = TODO
- //
public:
+ /// constructor...
TAO_CEC_SupplierAdmin (TAO_CEC_EventChannel* event_channel);
- // constructor...
+ /// destructor...
virtual ~TAO_CEC_SupplierAdmin (void);
- // destructor...
+ /// For each elements call <worker->work()>.
void for_each (TAO_ESF_Worker<TAO_CEC_ProxyPushConsumer> *worker,
CORBA::Environment &ACE_TRY_ENV);
- // For each elements call <worker->work()>.
+ /// For each elements call <worker->work()>.
void for_each (TAO_ESF_Worker<TAO_CEC_ProxyPullConsumer> *worker,
CORBA::Environment &ACE_TRY_ENV);
- // For each elements call <worker->work()>.
+ /// Keep track of connected consumers.
virtual void connected (TAO_CEC_ProxyPushConsumer*,
CORBA::Environment&);
virtual void reconnected (TAO_CEC_ProxyPushConsumer*,
@@ -86,11 +73,10 @@ public:
CORBA::Environment&);
virtual void disconnected (TAO_CEC_ProxyPullConsumer*,
CORBA::Environment&);
- // Keep track of connected consumers.
+ /// The event channel is shutting down, inform all the consumers of
+ /// this
virtual void shutdown (CORBA::Environment&);
- // The event channel is shutting down, inform all the consumers of
- // this
// = The CosEventChannelAdmin::SupplierAdmin methods...
virtual CosEventChannelAdmin::ProxyPushConsumer_ptr
@@ -104,15 +90,15 @@ public:
virtual PortableServer::POA_ptr _default_POA (CORBA::Environment& env);
private:
+ /// The Event Channel we belong to
TAO_CEC_EventChannel *event_channel_;
- // The Event Channel we belong to
+ /// The push and pull aspects are implemented using these classes
TAO_ESF_Proxy_Admin<TAO_CEC_EventChannel,TAO_CEC_ProxyPushConsumer,CosEventChannelAdmin::ProxyPushConsumer> push_admin_;
TAO_ESF_Proxy_Admin<TAO_CEC_EventChannel,TAO_CEC_ProxyPullConsumer,CosEventChannelAdmin::ProxyPullConsumer> pull_admin_;
- // The push and pull aspects are implemented using these classes
+ /// Store the default POA.
PortableServer::POA_var default_POA_;
- // Store the default POA.
};
#if defined (__ACE_INLINE__)
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_SupplierControl.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_SupplierControl.h
index 1eacf7ab519..52d4eb05c64 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_SupplierControl.h
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_SupplierControl.h
@@ -1,21 +1,14 @@
/* -*- C++ -*- */
-// $Id$
-//
-// ============================================================================
-//
-// = LIBRARY
-// ORBSVCS Cos Event Channel
-//
-// = FILENAME
-// CEC_SupplierControl
-//
-// = AUTHOR
-// Carlos O'Ryan (coryan@cs.wustl.edu)
-//
-// More details can be found in:
-// http://www.cs.wustl.edu/~coryan/EC/index.html
-//
-// ============================================================================
+//=============================================================================
+/**
+ * @file CEC_SupplierControl
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan (coryan@cs.wustl.edu)More details can be found in:http://www.cs.wustl.edu/~coryan/EC/index.html
+ */
+//=============================================================================
+
#ifndef TAO_CEC_SUPPLIERCONTROL_H
#define TAO_CEC_SUPPLIERCONTROL_H
@@ -33,50 +26,52 @@ class TAO_CEC_EventChannel;
class TAO_CEC_ProxyPushConsumer;
class TAO_CEC_ProxyPullConsumer;
+/**
+ * @class TAO_CEC_SupplierControl
+ *
+ * @brief SupplierControl
+ *
+ * Defines the interface for the supplier control strategy.
+ * This strategy handles misbehaving or failing suppliers.
+ * = MEMORY MANAGMENT
+ * = LOCKING
+ * = TODO
+ */
class TAO_Event_Export TAO_CEC_SupplierControl
{
- // = TITLE
- // SupplierControl
- //
- // = DESCRIPTION
- // Defines the interface for the supplier control strategy.
- // This strategy handles misbehaving or failing suppliers.
- //
- // = MEMORY MANAGMENT
- //
- // = LOCKING
- //
- // = TODO
- //
public:
+ /// Constructor. It does not assume ownership of the <event_channel>
+ /// parameter.
TAO_CEC_SupplierControl (void);
- // Constructor. It does not assume ownership of the <event_channel>
- // parameter.
+ /// destructor...
virtual ~TAO_CEC_SupplierControl (void);
- // destructor...
+ /// Activate any internal threads or timers used to poll the state of
+ /// the suppliers
virtual int activate (void);
virtual int shutdown (void);
- // Activate any internal threads or timers used to poll the state of
- // the suppliers
+ /**
+ * Invoked by helper classes when they detect that a supplier does
+ * not exists (i.e. _non_existent() returns true and/or the
+ * CORBA::OBJECT_NOT_EXIST exception has been raised).
+ */
virtual void supplier_not_exist (TAO_CEC_ProxyPushConsumer *proxy,
CORBA::Environment &);
- // Invoked by helper classes when they detect that a supplier does
- // not exists (i.e. _non_existent() returns true and/or the
- // CORBA::OBJECT_NOT_EXIST exception has been raised).
+ /**
+ * Invoked by helper classes when they detect that a supplier does
+ * not exists (i.e. _non_existent() returns true and/or the
+ * CORBA::OBJECT_NOT_EXIST exception has been raised).
+ */
virtual void supplier_not_exist (TAO_CEC_ProxyPullConsumer *proxy,
CORBA::Environment &);
- // Invoked by helper classes when they detect that a supplier does
- // not exists (i.e. _non_existent() returns true and/or the
- // CORBA::OBJECT_NOT_EXIST exception has been raised).
+ /// Some system exception was rasied while trying to push an event.
virtual void system_exception (TAO_CEC_ProxyPullConsumer *proxy,
CORBA::SystemException &,
CORBA::Environment &);
- // Some system exception was rasied while trying to push an event.
};
#if defined (__ACE_INLINE__)
diff --git a/TAO/orbsvcs/orbsvcs/CosEventChannelAdmin.idl b/TAO/orbsvcs/orbsvcs/CosEventChannelAdmin.idl
index 48c2f5bd30e..88492c0996d 100644
--- a/TAO/orbsvcs/orbsvcs/CosEventChannelAdmin.idl
+++ b/TAO/orbsvcs/orbsvcs/CosEventChannelAdmin.idl
@@ -1,181 +1,244 @@
-// $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>
-//
-// ============================================================================
-
-
+/**
+ * @file CosEventChannelAdmin.idl
+ *
+ * @brief Define the CosEventChannelAdmin module
+ *
+ * $Id$
+ *
+ * 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 IDL can be downloaded from
+ * ftp://www.omg.org/pub/docs/formal/97-11-02.idl
+ *
+ * The complete specification is available from:
+ * http://www.omg.org/technology/documents/formal/event_service.htm
+ *
+ * @author Pradeep Gore <pradeep@cs.wustl.edu>
+ */
#ifndef TAO_EVENTCHANNELADMIN_IDL
-#define TAO_EVENTCHANNELADMIN_IDL
+#define TAO_EVENTCHANNELADMIN_IDL
#include "CosEventComm.idl"
#pragma prefix "omg.org"
+/**
+ * @namespace CosEventChannelAdmin
+ *
+ * @brief Define the interfaces implemented by providers of the CORBA
+ * Event Service.
+ */
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
+ *
+ * @brief Exception raised if the user tries to connect to an
+ * already connected proxy
+ */
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.
- };
+ /**
+ * @exception TypeError
+ *
+ * @brief Exception raised in Typed Event Services if there is a
+ * mismatch between the proxy and its peer (supplier or consumer.)
+ */
+ exception TypeError {};
+ /**
+ * @interface ProxyPushConsumer
+ *
+ * @brief Interface used by push-style suppliers.
+ *
+ * The application can use the methods derived from
+ * CosEventComm::PushConsumer to disconnect from the Event Service
+ * and push events.
+ */
+ interface ProxyPushConsumer : CosEventComm::PushConsumer
+ {
+ /// Connect a push-style supplier to the Event Service
+ /**
+ * Before pushing events into its Proxy the application must call
+ * the following operation.
+ *
+ * @param push_supplier Callback interface, invoked by the Event
+ * Service if it is destroyed while the push-style supplier
+ * is still connected. If the argument is nil the callback
+ * is not invoked.
+ * @throws AlreadyConnected if the operation is called a second
+ * time.
+ */
+ void connect_push_supplier (in CosEventComm::PushSupplier push_supplier)
+ raises (AlreadyConnected);
+ };
+
+ /**
+ * @interface ProxyPushSupplier
+ *
+ * @brief Interface used by push-style consumers
+ *
+ * Push-style consumers used this interface to connect and
+ * disconnect from the Event Service.
+ *
+ * The disconnect_push_supplier() operation, derived from the
+ * CosEventEventComm::PushSupplier interface, is used to disconnect
+ * the ProxyPushSupplier and reclaim all resources attached to it
+ * from the Event Service.
+ */
+ interface ProxyPushSupplier : CosEventComm::PushSupplier
+ {
+ /// Connect a push-style consumer to the Event Service.
+ /**
+ * The following operation must be invoked before the Event
+ * Service can deliver any events to the consumer.
+ *
+ * @param push_consumer The consumer, must be non-nil.
+ * @throws CORBA::BAD_PARAM if the consumer argument is nil.
+ * @throws AlreadyConnected if the operation is called a second
+ * time.
+ * @throws TypeError In Typed Event Services if the consumer does
+ * not match the expected type.
+ */
+ void connect_push_consumer (in CosEventComm::PushConsumer push_consumer)
+ raises (AlreadyConnected, TypeError);
+ };
+
+ /**
+ * @interface ProxyPullSupplier
+ *
+ * @brief Interface used by pull-style consumers.
+ *
+ * Pull-style suppliers use this interface to connect and disconnect
+ * from the Event Service.
+ *
+ * The disconnect_pull_supplier() operation, derived from
+ * CosEventComm::PullSupplier, is used by the application to
+ * disconnect from the Event Service.
+ * The application can use the pull() and try_pull() operations to
+ * pull data from the Event Service.
+ */
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.
- };
-
+ {
+ /// Connect a pull consumer to the Event Service.
+ /**
+ * Applications cannot pull events before this operation is
+ * invoked.
+ *
+ * @param pull_consumer Callback interface used to inform the
+ * the application when the Event Service is destroyed. The
+ * argument can be nil.
+ * @throws AlreadyConnected if the operation is called a second
+ * time.
+ */
+ void connect_pull_consumer (in CosEventComm::PullConsumer pull_consumer)
+ raises (AlreadyConnected);
+ };
+
+ /**
+ * @interface ProxyPullConsumer
+ *
+ * @brief Interface used by pull-style suppliers.
+ *
+ * Pull-style consumers use this interface to connect, disconnect
+ * and pull events from the Event Service.
+ *
+ * The disconnect_pull_consumer() operation, derived from
+ * CosEventEventComm::PullConsumer, is used to disconnect from the
+ * Event Service.
+ */
interface ProxyPullConsumer : CosEventComm::PullConsumer
- {
- // = TITLE
- // Definition of the ProxyPullConsumer.
- //
- // = DESCRIPTION
- // The ProxyPullConsumer object is used to connect a
- // pull-style supplier.
-
+ {
+ /// Connect a pull supplier to the Event Service.
+ /**
+ * The Event Service will not start pulling events until this
+ * operation is invoked.
+ *
+ * @param pull_supplier Callback interface used to (1) inform the
+ * application when the Event Service is destroyed, and (2) pull
+ * events from the application. The argument cannot be nil.
+ * @throws CORBA::BAD_PARAM if the pull_supplier argument is nil.
+ * @throws AlreadyConnected if the operation is called a second
+ * time.
+ * @throws TypeError In Typed Event Services if the consumer does
+ * not match the expected type.
+ */
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
+ *
+ * @brief Abstract Factory used to create proxies for pull-style and
+ * push-style consumers.
+ */
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.
- };
-
+ {
+ /// Create a new ProxyPushSupplier object.
+ ProxyPushSupplier obtain_push_supplier ();
+
+ /// Create a new ProxyPullSupplier object.
+ ProxyPullSupplier obtain_pull_supplier ();
+ };
+
+ /**
+ * @interface SupplierAdmin
+ *
+ * @brief Abstract Factory used to create proxies for pull-style and
+ * push-style suppliers.
+ */
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.
- };
-
+ {
+ /// Create a new ProxyPushConsumer object.
+ ProxyPushConsumer obtain_push_consumer ();
+
+ /// Create a new ProxyPullConsumer object.
+ ProxyPullConsumer obtain_pull_consumer ();
+ };
+
+ /**
+ * @interface EventChannel
+ *
+ * @brief Main interface for the Event Service.
+ */
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.
- };
+ {
+ /// Obtain a ConsumerAdmin interface for this EventChannel
+ /**
+ * Normally a single EventChannel provides a single ConsumerAdmin,
+ * but advanced ECs, for example, those based in the
+ * CosNotification service, can provide multiple ConsumerAdmin
+ * interfaces.
+ */
+ ConsumerAdmin for_consumers ();
+
+ /// Obtain a SupplierAdmin interface for this EventChannel
+ /**
+ * Normally a single EventChannel provides a single SupplierAdmin,
+ * but advanced ECs, for example, those based in the
+ * CosNotification service, can provide multiple SupplierAdmin
+ * interfaces.
+ */
+ SupplierAdmin for_suppliers ();
+
+ /// Destroy the EventChannel
+ /**
+ * Calling this operation destroys the EventChannel, its
+ * ConsumerAdmin and SupplierAdmin interfaces as well as the
+ * proxies obtained from those.
+ * Any consumers or suppliers still connected are notified of the
+ * destruction. In some cases, the process running the
+ * EventChannel is terminated too.
+ */
+ void destroy ();
+ };
};
#pragma prefix ""
diff --git a/TAO/orbsvcs/orbsvcs/CosEventComm.idl b/TAO/orbsvcs/orbsvcs/CosEventComm.idl
index 6e6db75acd6..e97413fa618 100644
--- a/TAO/orbsvcs/orbsvcs/CosEventComm.idl
+++ b/TAO/orbsvcs/orbsvcs/CosEventComm.idl
@@ -1,126 +1,175 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// orbsvcs
-//
-// = FILENAME
-// CosEventComm.idl
-//
-// = DESCRIPTION
-// EVENT SERVICE - described in CORBAservices: Common Object Services
-// Specification, chapter 4.
-// CosEventComm Module, page 4-8 includes the following interfaces:
-// PushConsumer, PushSupplier, PullSupplier, PullConsumer
-// 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>
-//
-// ============================================================================
+/**
+ * @file CosEventComm.idl
+ *
+ * @brief Define the CosEventComm module
+ *
+ * $Id$
+ *
+ * Described in CORBAservices: Common Object Services Specification,
+ * chapter 4.
+ *
+ * CosEventComm Module, page 4-8 includes the following interfaces:
+ * PushConsumer, PushSupplier, PullSupplier, PullConsumer
+ *
+ * The Event service IDL can be downloaded from
+ * ftp://www.omg.org/pub/docs/formal/97-11-02.idl
+ *
+ * The complete specification is available from:
+ * http://www.omg.org/technology/documents/formal/event_service.htm
+ *
+ * @author Pradeep Gore <pradeep@cs.wustl.edu>
+ */
#ifndef TAO_EVENTCOMM_IDL
#define TAO_EVENTCOMM_IDL
#pragma prefix "omg.org"
+/**
+ * @namespace CosEventComm
+ *
+ * @brief Define the interfaces implemented by users of the CORBA
+ * Event Service.
+ */
module CosEventComm
{
- // = TITLE
- // IDL module for the Corba Object Service for Event
- // Communication.
-
- exception Disconnected
- {
- // = TITLE
- // If the event communication has already been disconnected, the
- // Disconnected exception is raised.
- };
-
+ /**
+ * @exception Disconnected
+ *
+ * @brief Exception raised when a client tries to communicate with
+ * the Event Service after it has disconnected.
+ *
+ * The exception is raised if:
+ *
+ * - If supplier tries to push an event before fully connecting to
+ * the EC.
+ * - A consumer tries to pull an event before fully connecting to
+ * the EC.
+ */
+ exception Disconnected {};
+
+ /**
+ * @interface PushConsumer
+ *
+ * @brief Define the interface implemented by push-style consumers
+ *
+ * A push-style consumer passively receives events from the Event
+ * Service. Applications simply implement this interface, connect
+ * to the Event Service and receive events.
+ */
interface PushConsumer
- {
- // = TITLE
- // definition of the PushConsumer.
- //
- // = DESCRIPTION
- // A push-style consumer supports the PushConsumer interface to
- // receive event data.
-
- void push (in any data) raises (Disconnected);
- // A supplier communicates event data to the consumer by invoking
- // the push operation and passing the event data as a parameter.
- // If the event communication has already been disconnected, the
- // Disconnected exception is raised.
-
- void disconnect_push_consumer ();
- // The disconnect_push_consumer operation terminates the event
- // communication; it releases resources used at the consumer to
- // support the event communication. The PushConsumer object
- // reference is disposed.
- };
-
+ {
+ /// Receive one event from the Consumer's peer.
+ /**
+ * A supplier communicates event data to the consumer by
+ * invoking the push operation.
+ * @param data The event
+ * @throws CosEventComm::Disconnected if the object considers
+ * itself no longer connected to its peer.
+ */
+ void push (in any data) raises (Disconnected);
+
+ /// The peer has disconnected from the PushConsumer.
+ /**
+ * The disconnect_push_consumer operation indicates that the peer
+ * has disconnected, for example, because it has been destroyed.
+ * The application can safely release all resources attached to
+ * this consumer and destroy it, no further push() calls should be
+ * expected.
+ */
+ void disconnect_push_consumer ();
+ };
+
+ /**
+ * @interface PushSupplier
+ *
+ * @brief Define the interface implemented by push-style suppliers.
+ *
+ * A push-style supplier actively pushes events into the Event
+ * Service
+ */
interface PushSupplier
- {
- // = TITLE
- // Definition of the PushSupplier.
- //
- // = DESCRIPTION
- // A push-style supplier supports the PushSupplier interface.
-
- void disconnect_push_supplier ();
- // The disconnect_push_supplier operation terminates the event
- // communication; it releases resources used at the supplier to
- // support the event communication. The PushSupplier object
- // reference is disposed.
- };
-
- interface PullSupplier
- {
- // = TITLE
- // Definition of the PullSupplier.
- //
- // = DESCRIPTION
- // A pull-style supplier supports the PullSupplier interface to
- // transmit event data.
-
- any pull () raises (Disconnected);
- // The pull operation blocks until the event data is available or
- // an exception is raised. It returns the event data to the
- // consumer. If the event communication has already been
- // disconnected, the Disconnected exception is raised.
-
- any try_pull (out boolean has_event) raises (Disconnected);
- // The try_pull operation does not block: if the event data is
- // available, it returns the event data and sets the has_event
- // parameter to true; if the event is not available, it sets the
- // has_event parameter to false and the event data is returned as
- // long with an undefined value. If the event communication has
- // already been disconnected, the Disconnected exception is
- // raised.
-
- void disconnect_pull_supplier ();
- // The disconnect_pull_supplier operation terminates the event
- // communication; it releases resources used at the supplier to
- // support the event communication. The PullSupplier object
- // reference is disposed.
- };
-
+ {
+ /// The peer has disconnected from the push-style supplier
+ /**
+ * The disconnect_push_supplier operation indicates that the peer
+ * has disconnected, for example, because it has been destroyed.
+ * The application can safe release all resource attached to this
+ * supplier and destroy it, further attempts to push events into
+ * its peer will fail.
+ */
+ void disconnect_push_supplier ();
+ };
+
+ /**
+ * @interface PullConsumer
+ *
+ * @brief Define the interface implemented by pull-style consumers
+ *
+ * A pull-style consumer actively queries the Event Channel for
+ * events.
+ */
interface PullConsumer
- {
- // = TITLE
- // Definition of the PullConsumer.
- //
- // = DESCRIPTION
- // A pull-style consumer supports the PullConsumer interface.
+ {
+ /// The peer has disconnected from the pull-style consumer.
+ /**
+ * The disconnect_pull_consumer operation indicates that the peer
+ * has disconnected, for example, because it has been destroyed.
+ * The application can safely release all resources attached to
+ * this consumer and destroy it, any attemps to pull more data
+ * should fail.
+ */
+ void disconnect_pull_consumer ();
+ };
+
+ /**
+ * @interface PullSupplier
+ *
+ * @brief Define the interface implemented by pull-style suppliers.
+ *
+ * A pull-style supplier passively generates events for the Event
+ * Service
+ */
+ interface PullSupplier
+ {
+ /// Pull (blocking) one event from the supplier.
+ /**
+ * The pull operation should block until the next event becomes
+ * available.
+ * @return The next event
+ * @throws CosEventComm::Disconnected if the object considers
+ * itself no longer connected to its peer.
+ */
+ any pull () raises (Disconnected);
+
+ /// Pull (non-blocking) one event from the supplier.
+ /**
+ * The try_pull operation does not block: if the event data is
+ * available, it returns the event data and sets the has_event
+ * parameter to true; if the event is not available, it sets the
+ * has_event parameter to false and the event data is returned
+ * as long with an undefined value.
+ *
+ * @param has_event Set to TRUE if there was another event
+ * available, FALSE otherwise.
+ * @return The next event if one was available, an any containing
+ * a 'long' with an undefined value otherwise.
+ * @throws CosEventComm::Disconnected if the object considers
+ * itself no longer connected to its peer.
+ */
+ any try_pull (out boolean has_event) raises (Disconnected);
+
+ /// The peer has disconnected from the pull-style supplier.
+ /**
+ * The disconnect_pull_supplier operation indicates that the peer
+ * has disconnected, for example, because it has been destroyed.
+ * The application can safe release all resource attached to this
+ * supplier and destroy it, the peer should not make any attempts
+ * to pull more data after this request.
+ */
+ void disconnect_pull_supplier ();
+ };
- void disconnect_pull_consumer ();
- // The disconnect_pull_consumer operation terminates the event
- // communication; it releases resources used at the consumer to
- // support the event communication. The PullConsumer object
- // reference is disposed.
- };
};
#pragma prefix ""
diff --git a/TAO/orbsvcs/orbsvcs/CosNotification.idl b/TAO/orbsvcs/orbsvcs/CosNotification.idl
index d30e4e8441c..3acaf787c6c 100644
--- a/TAO/orbsvcs/orbsvcs/CosNotification.idl
+++ b/TAO/orbsvcs/orbsvcs/CosNotification.idl
@@ -1,189 +1,390 @@
-// $Id$
-// ==========================================================================
-//
-// = LIBRARY
-// orbsvcs
-//
-// = FILENAME
-// CosNotification.idl
-//
-// = DESCRIPTION
-// Part of the Notification Service
-//
-// = AUTHOR
-// Pradeep Gore <pradeep@cs.wustl.edu>
-//
-// ==========================================================================
+/**
+ * @file CosNotification.idl
+ *
+ * @brief Define the CosNotification module
+ *
+ * $Id$
+ *
+ * @author Pradeep Gore <pradeep@cs.wustl.edu>
+ */
#ifndef _COS_NOTIFICATION_IDL_
#define _COS_NOTIFICATION_IDL_
-#pragma prefix "omg.org"
-
-module CosNotification {
-
- typedef string Istring;
- typedef Istring PropertyName;
- typedef any PropertyValue;
-
- struct Property {
- PropertyName name;
- PropertyValue value;
- };
- typedef sequence<Property> PropertySeq;
-
- // The following are the same, but serve different purposes.
- typedef PropertySeq OptionalHeaderFields;
- typedef PropertySeq FilterableEventBody;
- typedef PropertySeq QoSProperties;
- typedef PropertySeq AdminProperties;
-
- struct EventType {
- string domain_name;
- string type_name;
- };
- typedef sequence<EventType> EventTypeSeq;
-
- struct PropertyRange {
- PropertyValue low_val;
- PropertyValue high_val;
- };
-
- struct NamedPropertyRange {
- PropertyName name;
- PropertyRange range;
- };
- typedef sequence<NamedPropertyRange> NamedPropertyRangeSeq;
-
- enum QoSError_code {
- UNSUPPORTED_PROPERTY,
- UNAVAILABLE_PROPERTY,
- UNSUPPORTED_VALUE,
- UNAVAILABLE_VALUE,
- BAD_PROPERTY,
- BAD_TYPE,
- BAD_VALUE
- };
-
- struct PropertyError {
- QoSError_code code;
- PropertyName name;
- PropertyRange available_range;
- };
- typedef sequence<PropertyError> PropertyErrorSeq;
-
- exception UnsupportedQoS { PropertyErrorSeq qos_err; };
- exception UnsupportedAdmin { PropertyErrorSeq admin_err; };
-
- // Define the Structured Event structure
- struct FixedEventHeader {
- EventType event_type;
- string event_name;
- };
-
- struct EventHeader {
- FixedEventHeader fixed_header;
- OptionalHeaderFields variable_header;
- };
-
- struct StructuredEvent {
- EventHeader header;
- FilterableEventBody filterable_data;
- any remainder_of_body;
- }; // StructuredEvent
- typedef sequence<StructuredEvent> EventBatch;
-
- // The following constant declarations define the standard
- // QoS property names and the associated values each property
- // can take on. The name/value pairs for each standard property
- // are grouped, beginning with a string constant defined for the
- // property name, followed by the values the property can take on.
-
- const string EventReliability = "EventReliability";
- const short BestEffort = 0;
- const short Persistent = 1;
-
- const string ConnectionReliability = "ConnectionReliability";
- // Can take on the same values as EventReliability
-
- const string Priority = "Priority";
- const short LowestPriority = -32767;
- const short HighestPriority = 32767;
- const short DefaultPriority = 0;
-
- const string StartTime = "StartTime";
- // StartTime takes a value of type TimeBase::UtcT.
-
- const string StopTime = "StopTime";
- // StopTime takes a value of type TimeBase::UtcT.
-
- const string Timeout = "Timeout";
- // Timeout takes on a value of type TimeBase::TimeT
-
- const string OrderPolicy = "OrderPolicy";
- const short AnyOrder = 0;
- const short FifoOrder = 1;
- const short PriorityOrder = 2;
- const short DeadlineOrder = 3;
-
- const string DiscardPolicy = "DiscardPolicy";
- // DiscardPolicy takes on the same values as OrderPolicy, plus
- const short LifoOrder = 4;
-
- const string MaximumBatchSize = "MaximumBatchSize";
- // MaximumBatchSize takes on a value of type long
-
- const string PacingInterval = "PacingInterval";
- // PacingInterval takes on a value of type TimeBase::TimeT
-
- const string StartTimeSupported = "StartTimeSupported";
- // StartTimeSupported takes on a boolean value
- const string StopTimeSupported = "StopTimeSupported";
- // StopTimeSupported takes on a boolean value
-
- const string MaxEventsPerConsumer = "MaxEventsPerConsumer";
- // MaxEventsPerConsumer takes on a value of type long
-
- interface QoSAdmin {
-
- QoSProperties get_qos();
-
- void set_qos ( in QoSProperties qos)
- raises ( UnsupportedQoS );
-
- void validate_qos (
- in QoSProperties required_qos,
- out NamedPropertyRangeSeq available_qos )
- raises ( UnsupportedQoS );
-
- }; // QosAdmin
-
- // Admin properties are defined in similar manner as QoS
- // properties. The only difference is that these properties
- // are related to channel administration policies, as opposed
- // message quality of service
-
- const string MaxQueueLength = "MaxQueueLength";
- // MaxQueueLength takes on a value of type long
-
- const string MaxConsumers = "MaxConsumers";
- // MaxConsumers takes on a value of type long
-
- const string MaxSuppliers = "MaxSuppliers";
- // MaxSuppliers takes on a value of type long
-
- const string RejectNewEvents = "RejectNewEvents";
- // RejectNewEvents takes on a value of type Boolean
-
- interface AdminPropertiesAdmin {
-
- AdminProperties get_admin();
-
- void set_admin (in AdminProperties admin)
- raises ( UnsupportedAdmin);
-
- }; // AdminPropertiesAdmin
+#pragma prefix "omg.org"
-}; // CosNotification
+/**
+ * @namespace CosNotification
+ *
+ * @brief Define basic data structures used by the Notification
+ * Service
+ */
+module CosNotification
+{
+ /// Dummy typedef for strings, if the intent was to support I18N
+ /// strings the spec should have used wstring
+ typedef string Istring;
+
+ /// Properties are named using a string
+ typedef Istring PropertyName;
+
+ /// Property values are stored using anys
+ typedef any PropertyValue;
+
+ /**
+ * @struct Property
+ *
+ * @brief Define a name/value pair.
+ *
+ * Events are described using named/value sequences, this structure
+ * defines the name/value pair.
+ */
+ struct Property {
+ /// The name
+ PropertyName name;
+ /// The value
+ PropertyValue value;
+ };
+
+ /// Define a sequence of properties.
+ typedef sequence<Property> PropertySeq;
+
+ //@{
+ /**
+ * @name Different kinds of property sequences
+ *
+ * @brief The following are all sequences of Property, but
+ * serve different purposes.
+ */
+ /// Property sequence used for optional header fields
+ typedef PropertySeq OptionalHeaderFields;
+
+ /// Property sequence used for the event body that can be used
+ /// in filtering
+ typedef PropertySeq FilterableEventBody;
+
+ /// Specify quality of service properties
+ typedef PropertySeq QoSProperties;
+
+ /// Specify administrative properties
+ typedef PropertySeq AdminProperties;
+ //@}
+
+ /**
+ * @struct EventType
+ *
+ * @brief Define event type names.
+ *
+ * Different vertical industries (domains) can define well-known
+ * events (event_types). This structure is used for that purpose
+ */
+ struct EventType {
+ /// The name of the vertical industry defining the event type.
+ string domain_name;
+ /// The type of event.
+ string type_name;
+ };
+ /// A sequence of event types
+ typedef sequence<EventType> EventTypeSeq;
+
+ /**
+ * @struct PropertyRange
+ *
+ * @brief A structure to define property ranges.
+ *
+ */
+ struct PropertyRange {
+ /// Lower end of the range
+ PropertyValue low_val;
+ /// High end of the range
+ PropertyValue high_val;
+ };
+
+ /**
+ * @struct NamedPropertyRange
+ *
+ * @brief A named property range
+ */
+ struct NamedPropertyRange {
+ /// The name
+ PropertyName name;
+ /// The range
+ PropertyRange range;
+ };
+ /// A sequence of named property ranges
+ typedef sequence<NamedPropertyRange> NamedPropertyRangeSeq;
+
+ /**
+ * @enum QoSError_code
+ *
+ * @brief Describe QoS errors.
+ */
+ enum QoSError_code {
+ /// The application has requested an unsupported QoS property
+ UNSUPPORTED_PROPERTY,
+ /// The application has requested a QoS property that, though
+ /// supported, cannot be set in the requested scope.
+ UNAVAILABLE_PROPERTY,
+ /// The application has requested a QoS property with an
+ /// unsupported value.
+ UNSUPPORTED_VALUE,
+ /// The application has requested a QoS property with a supported
+ /// value, but unavailable at the requeste scope.
+ UNAVAILABLE_VALUE,
+ /// The property name is unknown or not recognized.
+ BAD_PROPERTY,
+ /// The value type for the requested property is invalid
+ BAD_TYPE,
+ /// The value for the requested property is illegal
+ BAD_VALUE
+ };
+
+ /**
+ * @struct PropertyError
+ *
+ * @brief Describe the problems detected with an application
+ * requested QoS.
+ *
+ * If there are any problems with an application request for QoS the
+ * problems are raised using an exception that contains all the
+ * problems, and a description of the valid values (if they apply).
+ */
+ struct PropertyError {
+ /// Property error description
+ QoSError_code code;
+ /// Property name with a problem
+ PropertyName name;
+ /// Valid range for that property in the Notification Service
+ /// implementation
+ PropertyRange available_range;
+ };
+ /// List of property errors.
+ typedef sequence<PropertyError> PropertyErrorSeq;
+
+ /**
+ * @exception UnsupportedQoS
+ *
+ * @brief Exception used to describe problems with one or more QoS
+ * requests
+ *
+ */
+ exception UnsupportedQoS {
+ /// Complete description of the properties in error
+ PropertyErrorSeq qos_err;
+ };
+
+ /**
+ * @exception UnsupportedAdmin
+ *
+ * @brief Exception used to describe problems with one or more Admin
+ * properties
+ */
+ exception UnsupportedAdmin {
+ /// The complete description of the invalid properties.
+ PropertyErrorSeq admin_err;
+ };
+
+ /**
+ * @struct FixedEventHeader
+ *
+ * @brief Define the 'fixed' part of the event header
+ */
+ struct FixedEventHeader {
+ /// The event type
+ EventType event_type;
+ /// A (possibly unique) name for the particular event
+ string event_name;
+ };
+
+ /**
+ * @struct EventHeader
+ *
+ * @brief Complete event header
+ */
+ struct EventHeader {
+ /// The fixed part of the event header
+ FixedEventHeader fixed_header;
+ /// The optional part
+ OptionalHeaderFields variable_header;
+ };
+
+ /**
+ * @struct StructuredEvent
+ *
+ * @brief Define structured events
+ */
+ struct StructuredEvent {
+ /// The header
+ EventHeader header;
+ /// The part of the body used for filtering
+ FilterableEventBody filterable_data;
+ /// The part of the body not used for filtering
+ any remainder_of_body;
+ };
+ /// Sequence of events, for batch processing
+ typedef sequence<StructuredEvent> EventBatch;
+
+ //@{
+ /**
+ * @name Constants for QoS Properties
+ *
+ * The following constant declarations define the standard QoS
+ * property names and the associated values each property can take
+ * on. The name/value pairs for each standard property are grouped,
+ * beginning with a string constant defined for the property name,
+ * followed by the values the property can take on.
+ */
+
+ const string EventReliability = "EventReliability";
+ const short BestEffort = 0;
+ const short Persistent = 1;
+
+ /// Can take on the same values as EventReliability
+ const string ConnectionReliability = "ConnectionReliability";
+
+ const string Priority = "Priority";
+ const short LowestPriority = -32767;
+ const short HighestPriority = 32767;
+ const short DefaultPriority = 0;
+
+ /// StartTime takes a value of type TimeBase::UtcT.
+ const string StartTime = "StartTime";
+
+ /// StopTime takes a value of type TimeBase::UtcT.
+ const string StopTime = "StopTime";
+
+ /// Timeout takes on a value of type TimeBase::TimeT
+ const string Timeout = "Timeout";
+
+ const string OrderPolicy = "OrderPolicy";
+ const short AnyOrder = 0;
+ const short FifoOrder = 1;
+ const short PriorityOrder = 2;
+ const short DeadlineOrder = 3;
+
+ /// DiscardPolicy takes on the same values as OrderPolicy, plus
+ const string DiscardPolicy = "DiscardPolicy";
+ const short LifoOrder = 4;
+
+ /// MaximumBatchSize takes on a value of type long
+ const string MaximumBatchSize = "MaximumBatchSize";
+
+ /// PacingInterval takes on a value of type TimeBase::TimeT
+ const string PacingInterval = "PacingInterval";
+
+ /// StartTimeSupported takes on a boolean value
+ const string StartTimeSupported = "StartTimeSupported";
+
+ /// StopTimeSupported takes on a boolean value
+ const string StopTimeSupported = "StopTimeSupported";
+
+ /// MaxEventsPerConsumer takes on a value of type long
+ const string MaxEventsPerConsumer = "MaxEventsPerConsumer";
+
+ //@}
+
+ /**
+ * @interface QoSAdmin
+ *
+ * @brief Interface used to control the QoS properties of an Event
+ * Service components (Channel, Proxy, etc.)
+ *
+ * QoS properties of a channel can be set at different levels,
+ * including the proxies, the ConsumerAdmin and the SupplierAdmin
+ * objects. Each one of those components offers this interface to
+ * allow control over the properties.
+ */
+ interface QoSAdmin {
+ /// Get the current QoS properties
+ /**
+ * The operation returns the properties set:
+ * - At the level queried
+ * - Not set at the level queried but set at a higher-level
+ * - Not set at all but having a default value.
+ */
+ QoSProperties get_qos();
+
+ /// Set the QoS properties
+ /**
+ * @param qos The requested QoS properties
+ * @throws UnsupportedQoS if the requested QoS cannot be
+ * implemented or is invalid. The exception contents describe
+ * the problem(s) in detail.
+ */
+ void set_qos ( in QoSProperties qos)
+ raises ( UnsupportedQoS );
+
+ /// Validate a set of QoS properties
+ /**
+ * @param required_qos the list of properties requested by the
+ * application
+ * @param available_qos If the properties are supported this
+ * argument returns a list of any other properties that
+ * could also be set.
+ * @throws UnsupportedQoS if the requested QoS cannot be
+ * implemented or is invalid. The exception contents describe
+ * the problem(s) in detail.
+ */
+ void validate_qos (in QoSProperties required_qos,
+ out NamedPropertyRangeSeq available_qos )
+ raises ( UnsupportedQoS );
+ };
+
+ //@{
+ /**
+ * @name Constants for Admin Properties
+ *
+ * Admin properties are defined in similar manner as QoS
+ * properties. The only difference is that these properties are
+ * related to channel administration policies, as opposed message
+ * quality of service
+ */
+ /// MaxQueueLength takes on a value of type long
+ const string MaxQueueLength = "MaxQueueLength";
+
+ /// MaxConsumers takes on a value of type long
+ const string MaxConsumers = "MaxConsumers";
+
+ /// MaxSuppliers takes on a value of type long
+ const string MaxSuppliers = "MaxSuppliers";
+
+ /// RejectNewEvents takes on a value of type Boolean
+ const string RejectNewEvents = "RejectNewEvents";
+ //@}
+
+ /**
+ * @interface AdminPropertiesAdmin
+ *
+ * @brief Define the interface to manipulate the Admin properties of
+ * a Notification Service components
+ *
+ * Several Notification Service components have Admin properties,
+ * including the Event Channel, its ConsumerAdmin and SupplierAdmin
+ * objects as well as the proxies. This interface is used to
+ * control the Admin properties of each one of those components.
+ */
+ interface AdminPropertiesAdmin {
+ /// Get the Admin properties
+ /**
+ * The operation returns the properties set:
+ * - At the level queried
+ * - Not set at the level queried but set at a higher-level
+ * - Not set at all but having a default value.
+ */
+ AdminProperties get_admin();
+
+ /// Set the Admin properities
+ /**
+ * @param admin The list of Admin properties requested
+ * @throws UnsupportedAdmin if the requested admin properties
+ * cannot be implemented or are invalid
+ */
+ void set_admin (in AdminProperties admin)
+ raises ( UnsupportedAdmin);
+ };
+
+};
+
+#pragma prefix ""
#endif /* _COS_NOTIFICATION_IDL_ */
diff --git a/TAO/orbsvcs/orbsvcs/CosNotifyChannelAdmin.idl b/TAO/orbsvcs/orbsvcs/CosNotifyChannelAdmin.idl
index f597fd18577..770a1f8438c 100644
--- a/TAO/orbsvcs/orbsvcs/CosNotifyChannelAdmin.idl
+++ b/TAO/orbsvcs/orbsvcs/CosNotifyChannelAdmin.idl
@@ -1,19 +1,21 @@
-// $Id$
-// ==========================================================================
-//
-// = LIBRARY
-// orbsvcs
-//
-// = FILENAME
-// CosNotifyChannelAdmin.idl
-//
-// = DESCRIPTION
-// Part of the Notification Service
-//
-// = AUTHOR
-// Pradeep Gore <pradeep@cs.wustl.edu>
-//
-// ==========================================================================
+/**
+ * @file CosNotifyChannelAdmin.idl
+ *
+ * @brief Define the CosNotifyChannel module
+ *
+ * $Id$
+ *
+ * This module is taken from the standard CORBA Notification Service
+ * 1.0, as described in:
+ *
+ * http://www.omg.org/technology/documents/formal/notification_service.htm
+ *
+ * In particular the following two documents were used:
+ * formal/2000-06-20
+ * formal/01-03-03
+ *
+ * @author Pradeep Gore <pradeep@cs.wustl.edu>
+ */
#ifndef _COS_NOTIFY_CHANNEL_ADMIN_IDL_
#define _COS_NOTIFY_CHANNEL_ADMIN_IDL_
@@ -25,10 +27,36 @@
#pragma prefix "omg.org"
-module CosNotifyChannelAdmin {
-
+/**
+ * @namespace CosNotifyChannelAdmin
+ *
+ * @brief Defines the interfaces to connect and manipulate the
+ * Notification Service.
+ */
+module CosNotifyChannelAdmin
+{
+ /**
+ * @exception ConnectionAlreadyActive
+ *
+ * @brief Exception Raised if an attempt is made to resume a
+ * connection that has not been suspended.
+ */
exception ConnectionAlreadyActive {};
+
+ /**
+ * @exception ConnectionAlreadyInactive
+ *
+ * @brief Exception raised if an attempt is made to suspend a
+ * connection already suspended.
+ */
exception ConnectionAlreadyInactive {};
+
+ /**
+ * @exception NotConnected
+ *
+ * @brief Exception raised if an attempt is made to suspend or
+ * resume a proxy that has not been connected.
+ */
exception NotConnected {};
// Forward declarations
@@ -37,366 +65,960 @@ module CosNotifyChannelAdmin {
interface EventChannel;
interface EventChannelFactory;
+ /**
+ * @enum ProxyType
+ *
+ * @brief Helper typedef to inspect the types of proxies connected
+ * to an EventChannel
+ */
enum ProxyType {
+ /// A push-style proxy that uses the 'any' format
PUSH_ANY,
+ /// A pull-style proxy that uses the 'any' format
PULL_ANY,
+ /// A push-style proxy that uses structured events
PUSH_STRUCTURED,
+ /// A pull-style proxy that uses structured events
PULL_STRUCTURED,
+ /// A push-style proxy that uses event batches
PUSH_SEQUENCE,
+ /// A pull-style proxy that uses event batches
PULL_SEQUENCE,
+ /// A typed, push-style proxy
PUSH_TYPED,
+ /// A typed, pull-style proxy
PULL_TYPED
};
+ /**
+ * @enum ObtainInfoMode
+ *
+ * @brief Define the modes to fetch subscriptions and publication
+ * lists from the Notification Service.
+ */
enum ObtainInfoMode {
+ /// Get all the current subscriptions/publications, do not send
+ /// updates to the peer
ALL_NOW_UPDATES_OFF,
+ /// Get all the current subscriptions/publications, send updates
+ /// to the peer
ALL_NOW_UPDATES_ON,
+ /// Do not get any of the current subscriptions/publications, do
+ /// not send updates to the peer either
NONE_NOW_UPDATES_OFF,
+ /// Do not get any of the current subscriptions/publications, but
+ /// send updates to the peer
NONE_NOW_UPDATES_ON
};
- interface ProxyConsumer :
- CosNotification::QoSAdmin,
- CosNotifyFilter::FilterAdmin {
-
+ /**
+ * @interface ProxyConsumer
+ *
+ * @brief Defines the interface shared by all consumer proxies
+ *
+ * Consumer proxies are used by suppliers to provide events into the
+ * Notification Service, this interface captures the shared
+ * operations in all those proxies.
+ */
+ interface ProxyConsumer
+ : CosNotification::QoSAdmin
+ , CosNotifyFilter::FilterAdmin
+ {
+ /// The style and event format for this proxy
readonly attribute ProxyType MyType;
+
+ /// The SupplierAdmin this proxy belongs to
readonly attribute SupplierAdmin MyAdmin;
+ /// Get the list of event types that this proxy could potentially
+ /// forward to any consumer connected to the EventChannel
+ /**
+ * @param mode Describe how the subscriptions should be fetched
+ * @return The list of current subscriptions, if requested in the
+ * mode argument
+ */
CosNotification::EventTypeSeq obtain_subscription_types(
- in ObtainInfoMode mode );
-
+ in ObtainInfoMode mode );
+
+ /// Validate a list of QoS properties for an event
+ /**
+ * Suppliers can provide events with specific QoS properties, the
+ * following operation allows suppliers to verify if a given set
+ * of QoS properties would be honored by the proxy.
+ *
+ * @param required_qos The QoS properties required by the supplier
+ * @param available_qos If the QoS properties required are
+ * supported this argument returns any other QoS properties that
+ * the application may set without breaking the proxy
+ * capabilities.
+ * @throws CosNotification::UnsupportedQoS if the QoS properties
+ * required cannot be supported. The exception describes the
+ * problems and any legal values in detail.
+ */
void validate_event_qos (
- in CosNotification::QoSProperties required_qos,
- out CosNotification::NamedPropertyRangeSeq available_qos)
+ in CosNotification::QoSProperties required_qos,
+ out CosNotification::NamedPropertyRangeSeq available_qos)
raises (CosNotification::UnsupportedQoS);
+ };
- }; // ProxyConsumer
-
- interface ProxySupplier :
- CosNotification::QoSAdmin,
- CosNotifyFilter::FilterAdmin {
-
+ /**
+ * @interface ProxySupplier
+ *
+ * @brief Defines the interface shared by all supplier proxies
+ *
+ * Supplier proxies are used by consumers to communicate with the
+ * Notification Service, this interface captures the shared
+ * operations in all those proxies.
+ */
+ interface ProxySupplier
+ : CosNotification::QoSAdmin
+ , CosNotifyFilter::FilterAdmin
+ {
+ /// The style and event format for this proxy
readonly attribute ProxyType MyType;
+
+ /// The ConsumerAdmin this proxy belongs to
readonly attribute ConsumerAdmin MyAdmin;
+ /// Get and set the mapping filter used to change the priority
+ /// property for this proxy.
+ /**
+ * The filter is initialized to the nil reference
+ */
attribute CosNotifyFilter::MappingFilter priority_filter;
+
+ /// Get and set the mapping filter used to change the lifetime
+ /// property for this proxy.
+ /**
+ * The filter is initialized to the nil reference
+ */
attribute CosNotifyFilter::MappingFilter lifetime_filter;
+ /// Get the list of event types that this proxy could potentially
+ /// forward to its connected supplier
+ /**
+ * @param mode Describe how the publications should be fetched
+ * @return The list of current subscriptions, if requested in the
+ * mode argument
+ */
CosNotification::EventTypeSeq obtain_offered_types(
- in ObtainInfoMode mode );
-
+ in ObtainInfoMode mode );
+
+ /// Validate a list of QoS properties for an event
+ /**
+ * Applications send events with specific QoS properties, the
+ * following operation allows consumers to verify if a given set
+ * of QoS properties would be honored by the proxy.
+ *
+ * @param required_qos The QoS properties required by the supplier
+ * @param available_qos If the QoS properties required are
+ * supported this argument returns any other QoS properties that
+ * the application may set without breaking the proxy
+ * capabilities.
+ * @throws CosNotification::UnsupportedQoS if the QoS properties
+ * required cannot be supported. The exception describes the
+ * problems and any legal values in detail.
+ */
void validate_event_qos (
- in CosNotification::QoSProperties required_qos,
- out CosNotification::NamedPropertyRangeSeq available_qos)
+ in CosNotification::QoSProperties required_qos,
+ out CosNotification::NamedPropertyRangeSeq available_qos)
raises (CosNotification::UnsupportedQoS);
+ };
- }; // ProxySupplier
-
- interface ProxyPushConsumer :
- ProxyConsumer,
- CosNotifyComm::PushConsumer {
-
+ /**
+ * @interface ProxyPushConsumer
+ *
+ * @brief Defines the interface provided for push-style suppliers
+ * using the 'any' event format.
+ */
+ interface ProxyPushConsumer
+ : ProxyConsumer
+ , CosNotifyComm::PushConsumer
+ {
+ /// Connect a supplier to the proxy
+ /**
+ * Suppliers cannot push events into a ProxyPushConsumer until
+ * this method is invoked.
+ *
+ * @param push_supplier the callback object used to inform the
+ * application if the event channel is destroyed. If the
+ * argument is nil no destroy notification is provided.
+ * @throws CosEventChannelAdmin::AlreadyConnected if the proxy is
+ * already connected, i.e. if this operation is invoked more than
+ * one time.
+ */
void connect_any_push_supplier (
- in CosEventComm::PushSupplier push_supplier)
+ in CosEventComm::PushSupplier push_supplier)
raises(CosEventChannelAdmin::AlreadyConnected);
+ };
- }; // ProxyPushConsumer
-
- interface StructuredProxyPushConsumer :
- ProxyConsumer,
- CosNotifyComm::StructuredPushConsumer {
-
+ /**
+ * @interface StructuredProxyPushConsumer
+ *
+ * @brief Defines the interface provided for push-style suppliers
+ * using the 'structured' event format.
+ */
+ interface StructuredProxyPushConsumer
+ : ProxyConsumer
+ , CosNotifyComm::StructuredPushConsumer
+ {
+ /// Connect a supplier to the proxy
+ /**
+ * Suppliers cannot push events into a ProxyPushConsumer until
+ * this method is invoked.
+ *
+ * @param push_supplier the callback object used to inform the
+ * application if the event channel is destroyed. If the
+ * argument is nil no destroy notification is provided.
+ * @throws CosEventChannelAdmin::AlreadyConnected if the proxy is
+ * already connected, i.e. if this operation is invoked more than
+ * one time.
+ */
void connect_structured_push_supplier (
- in CosNotifyComm::StructuredPushSupplier push_supplier)
+ in CosNotifyComm::StructuredPushSupplier push_supplier)
raises(CosEventChannelAdmin::AlreadyConnected);
+ };
- }; // StructuredProxyPushConsumer
-
- interface SequenceProxyPushConsumer :
- ProxyConsumer,
- CosNotifyComm::SequencePushConsumer {
-
+ /**
+ * @interface SequenceProxyPushConsumer
+ *
+ * @brief Defines the interface provided for push-style suppliers
+ * using the 'batched' event format.
+ */
+ interface SequenceProxyPushConsumer
+ : ProxyConsumer
+ , CosNotifyComm::SequencePushConsumer
+ {
+ /// Connect a supplier to the proxy
+ /**
+ * Suppliers cannot push events into a ProxyPushConsumer until
+ * this method is invoked.
+ *
+ * @param push_supplier the callback object used to inform the
+ * application if the event channel is destroyed. If the
+ * argument is nil no destroy notification is provided.
+ * @throws CosEventChannelAdmin::AlreadyConnected if the proxy is
+ * already connected, i.e. if this operation is invoked more than
+ * one time.
+ */
void connect_sequence_push_supplier (
- in CosNotifyComm::SequencePushSupplier push_supplier)
+ in CosNotifyComm::SequencePushSupplier push_supplier)
raises(CosEventChannelAdmin::AlreadyConnected);
+ };
- }; // SequenceProxyPushConsumer
-
- interface ProxyPullSupplier :
- ProxySupplier,
- CosNotifyComm::PullSupplier {
-
+ /**
+ * @interface ProxyPullSupplier
+ *
+ * @brief Defines the interface provided for pull-style consumers
+ * using the 'any' event format.
+ */
+ interface ProxyPullSupplier
+ : ProxySupplier
+ , CosNotifyComm::PullSupplier
+ {
+ /// Connect a consumer to the proxy
+ /**
+ * The consumer cannot pull events until this operation is invoked.
+ *
+ * @param pull_consumer the callback object used to inform the
+ * application if the event channel is destroyed. If the
+ * argument is nil no destroy notification is provided.
+ * @throws CosEventChannelAdmin::AlreadyConnected if the proxy is
+ * already connected, i.e. if this operation is invoked more than
+ * one time.
+ */
void connect_any_pull_consumer (
- in CosEventComm::PullConsumer pull_consumer)
+ in CosEventComm::PullConsumer pull_consumer)
raises(CosEventChannelAdmin::AlreadyConnected);
+ };
- }; // ProxyPullSupplier
-
- interface StructuredProxyPullSupplier :
- ProxySupplier,
- CosNotifyComm::StructuredPullSupplier {
-
+ /**
+ * @interface StructuredProxyPullSupplier
+ *
+ * @brief Defines the interface provided for pull-style consumers
+ * using the 'structured' event format.
+ */
+ interface StructuredProxyPullSupplier
+ : ProxySupplier
+ , CosNotifyComm::StructuredPullSupplier
+ {
+ /// Connect a consumer to the proxy
+ /**
+ * The consumer cannot pull events until this operation is invoked.
+ *
+ * @param pull_consumer the callback object used to inform the
+ * application if the event channel is destroyed. If the
+ * argument is nil no destroy notification is provided.
+ * @throws CosEventChannelAdmin::AlreadyConnected if the proxy is
+ * already connected, i.e. if this operation is invoked more than
+ * one time.
+ */
void connect_structured_pull_consumer (
- in CosNotifyComm::StructuredPullConsumer pull_consumer)
+ in CosNotifyComm::StructuredPullConsumer pull_consumer)
raises(CosEventChannelAdmin::AlreadyConnected);
+ };
- }; // StructuredProxyPullSupplier
-
- interface SequenceProxyPullSupplier :
- ProxySupplier,
- CosNotifyComm::SequencePullSupplier {
-
+ /**
+ * @interface SequenceProxyPullSupplier
+ *
+ * @brief Defines the interface provided for pull-style consumer
+ * using the 'batched' event format.
+ */
+ interface SequenceProxyPullSupplier
+ : ProxySupplier
+ , CosNotifyComm::SequencePullSupplier
+ {
+ /// Connect a consumer to the proxy
+ /**
+ * The consumer cannot pull events until this operation is invoked.
+ *
+ * @param pull_consumer the callback object used to inform the
+ * application if the event channel is destroyed. If the
+ * argument is nil no destroy notification is provided.
+ * @throws CosEventChannelAdmin::AlreadyConnected if the proxy is
+ * already connected, i.e. if this operation is invoked more than
+ * one time.
+ */
void connect_sequence_pull_consumer (
- in CosNotifyComm::SequencePullConsumer pull_consumer)
+ in CosNotifyComm::SequencePullConsumer pull_consumer)
raises(CosEventChannelAdmin::AlreadyConnected);
+ };
- }; // SequenceProxyPullSupplier
-
- interface ProxyPullConsumer :
- ProxyConsumer,
- CosNotifyComm::PullConsumer {
-
+ /**
+ * @interface ProxyPullConsumer
+ *
+ * @brief Defines the interface provided for pull-style suppliers
+ * using the 'any' event format.
+ */
+ interface ProxyPullConsumer
+ : ProxyConsumer
+ , CosNotifyComm::PullConsumer
+ {
+ /// Connect a supplier to the proxy
+ /**
+ * The event channel will not pull events from the supplier until
+ * this operation is invoked.
+ *
+ * @param pull_supplier the callback object used to inform the
+ * application if the event channel is destroyed.
+ * @throws CORBA::BAD_PARAM if the pull_supplier argument is nil
+ * @throws CosEventChannelAdmin::AlreadyConnected if the proxy is
+ * already connected, i.e. if this operation is invoked more than
+ * one time.
+ */
void connect_any_pull_supplier (
- in CosEventComm::PullSupplier pull_supplier)
+ in CosEventComm::PullSupplier pull_supplier)
raises(CosEventChannelAdmin::AlreadyConnected,
CosEventChannelAdmin::TypeError );
+ /// Suspend the connection, the event channel will stop pulling
+ /// events.
+ /**
+ * @throws ConnectionAlreadyInactive if the method is invoked
+ * while the connection is suspended
+ * @throws NotConnected if the method is invoked before the
+ * supplier connects
+ */
void suspend_connection()
raises(ConnectionAlreadyInactive, NotConnected);
+ /// Resume the connection, the event channel will start pulling
+ /// events one more.
+ /**
+ * @throws ConnectionAlreadyActive if the method is invoked
+ * while the connection is active
+ * @throws NotConnected if the method is invoked before the
+ * supplier connects
+ */
void resume_connection()
raises(ConnectionAlreadyActive, NotConnected);
+ };
- }; // ProxyPullConsumer
-
- interface StructuredProxyPullConsumer :
- ProxyConsumer,
- CosNotifyComm::StructuredPullConsumer {
-
+ /**
+ * @interface StructuredProxyPullConsumer
+ *
+ * @brief Defines the interface provided for pull-style suppliers
+ * using the 'structured' event format.
+ */
+ interface StructuredProxyPullConsumer
+ : ProxyConsumer
+ , CosNotifyComm::StructuredPullConsumer
+ {
+ /// Connect a supplier to the proxy
+ /**
+ * The event channel will not pull events from the supplier until
+ * this operation is invoked.
+ *
+ * @param pull_supplier the callback object used to inform the
+ * application if the event channel is destroyed.
+ * @throws CORBA::BAD_PARAM if the pull_supplier argument is nil
+ * @throws CosEventChannelAdmin::AlreadyConnected if the proxy is
+ * already connected, i.e. if this operation is invoked more than
+ * one time.
+ */
void connect_structured_pull_supplier (
- in CosNotifyComm::StructuredPullSupplier pull_supplier)
+ in CosNotifyComm::StructuredPullSupplier pull_supplier)
raises(CosEventChannelAdmin::AlreadyConnected,
CosEventChannelAdmin::TypeError );
+ /// Suspend the connection, the event channel will stop pulling
+ /// events.
+ /**
+ * @throws ConnectionAlreadyInactive if the method is invoked
+ * while the connection is suspended
+ * @throws NotConnected if the method is invoked before the
+ * supplier connects
+ */
void suspend_connection()
raises(ConnectionAlreadyInactive, NotConnected);
+ /// Resume the connection, the event channel will start pulling
+ /// events one more.
+ /**
+ * @throws ConnectionAlreadyActive if the method is invoked
+ * while the connection is active
+ * @throws NotConnected if the method is invoked before the
+ * supplier connects
+ */
void resume_connection()
raises(ConnectionAlreadyActive, NotConnected);
+ };
- }; // StructuredProxyPullConsumer
-
- interface SequenceProxyPullConsumer :
- ProxyConsumer,
- CosNotifyComm::SequencePullConsumer {
-
+ /**
+ * @interface SequenceProxyPullConsumer
+ *
+ * @brief Defines the interface provided for pull-style suppliers
+ * using the 'batched' event format.
+ */
+ interface SequenceProxyPullConsumer
+ : ProxyConsumer
+ , CosNotifyComm::SequencePullConsumer
+ {
+ /// Connect a supplier to the proxy
+ /**
+ * The event channel will not pull events from the supplier until
+ * this operation is invoked.
+ *
+ * @param pull_supplier the callback object used to inform the
+ * application if the event channel is destroyed.
+ * @throws CORBA::BAD_PARAM if the pull_supplier argument is nil
+ * @throws CosEventChannelAdmin::AlreadyConnected if the proxy is
+ * already connected, i.e. if this operation is invoked more than
+ * one time.
+ */
void connect_sequence_pull_supplier (
- in CosNotifyComm::SequencePullSupplier pull_supplier)
+ in CosNotifyComm::SequencePullSupplier pull_supplier)
raises(CosEventChannelAdmin::AlreadyConnected,
CosEventChannelAdmin::TypeError );
+ /// Suspend the connection, the event channel will stop pulling
+ /// events.
+ /**
+ * @throws ConnectionAlreadyInactive if the method is invoked
+ * while the connection is suspended
+ * @throws NotConnected if the method is invoked before the
+ * supplier connects
+ */
void suspend_connection()
raises(ConnectionAlreadyInactive, NotConnected);
+ /// Resume the connection, the event channel will start pulling
+ /// events one more.
+ /**
+ * @throws ConnectionAlreadyActive if the method is invoked
+ * while the connection is active
+ * @throws NotConnected if the method is invoked before the
+ * supplier connects
+ */
void resume_connection()
raises(ConnectionAlreadyActive, NotConnected);
+ };
- }; // SequenceProxyPullConsumer
-
- interface ProxyPushSupplier :
- ProxySupplier,
- CosNotifyComm::PushSupplier {
-
+ /**
+ * @interface ProxyPushSupplier
+ *
+ * @brief Defines the interface provided for push-style consumers
+ * using the 'any' event format.
+ */
+ interface ProxyPushSupplier
+ : ProxySupplier
+ , CosNotifyComm::PushSupplier
+ {
+ /// Connect a consumer to the proxy
+ /**
+ * The event channel will not push events to the consumer until
+ * this operation is invoked.
+ *
+ * @param push_consumer the callback object used to push events to
+ * the application and inform if the event channel is destroyed
+ * @throws CORBA::BAD_PARAM if the push_consumer argument is nil
+ * @throws CosEventChannelAdmin::AlreadyConnected if the proxy is
+ * already connected, i.e. if this operation is invoked more than
+ * one time.
+ */
void connect_any_push_consumer (
- in CosEventComm::PushConsumer push_consumer)
+ in CosEventComm::PushConsumer push_consumer)
raises(CosEventChannelAdmin::AlreadyConnected,
CosEventChannelAdmin::TypeError );
+ /// Suspend the connection, the event channel will stop pushing
+ /// events to the consumer.
+ /**
+ * @throws ConnectionAlreadyInactive if the method is invoked
+ * while the connection is suspended
+ * @throws NotConnected if the method is invoked before the
+ * supplier connects
+ */
void suspend_connection()
raises(ConnectionAlreadyInactive, NotConnected);
+ /// Resume the connection, the event channel will start pushing
+ /// events to the consumer once more
+ /**
+ * @throws ConnectionAlreadyActive if the method is invoked
+ * while the connection is active
+ * @throws NotConnected if the method is invoked before the
+ * supplier connects
+ */
void resume_connection()
raises(ConnectionAlreadyActive, NotConnected);
+ };
- }; // ProxyPushSupplier
-
- interface StructuredProxyPushSupplier :
- ProxySupplier,
- CosNotifyComm::StructuredPushSupplier {
-
+ /**
+ * @interface StructuredProxyPushSupplier
+ *
+ * @brief Defines the interface provided for push-style consumers
+ * using the 'structured' event format.
+ */
+ interface StructuredProxyPushSupplier
+ : ProxySupplier
+ , CosNotifyComm::StructuredPushSupplier
+ {
+ /// Connect a consumer to the proxy
+ /**
+ * The event channel will not push events to the consumer until
+ * this operation is invoked.
+ *
+ * @param push_consumer the callback object used to push events to
+ * the application and inform if the event channel is destroyed
+ * @throws CORBA::BAD_PARAM if the push_consumer argument is nil
+ * @throws CosEventChannelAdmin::AlreadyConnected if the proxy is
+ * already connected, i.e. if this operation is invoked more than
+ * one time.
+ */
void connect_structured_push_consumer (
- in CosNotifyComm::StructuredPushConsumer push_consumer)
+ in CosNotifyComm::StructuredPushConsumer push_consumer)
raises(CosEventChannelAdmin::AlreadyConnected,
CosEventChannelAdmin::TypeError );
+ /// Suspend the connection, the event channel will stop pushing
+ /// events to the consumer.
+ /**
+ * @throws ConnectionAlreadyInactive if the method is invoked
+ * while the connection is suspended
+ * @throws NotConnected if the method is invoked before the
+ * supplier connects
+ */
void suspend_connection()
raises(ConnectionAlreadyInactive, NotConnected);
+ /// Resume the connection, the event channel will start pushing
+ /// events to the consumer once more
+ /**
+ * @throws ConnectionAlreadyActive if the method is invoked
+ * while the connection is active
+ * @throws NotConnected if the method is invoked before the
+ * supplier connects
+ */
void resume_connection()
raises(ConnectionAlreadyActive, NotConnected);
+ };
- }; // StructuredProxyPushSupplier
-
- interface SequenceProxyPushSupplier :
- ProxySupplier,
- CosNotifyComm::SequencePushSupplier {
-
+ /**
+ * @interface SequenceProxyPushSupplier
+ *
+ * @brief Defines the interface provided for push-style consumers
+ * using the 'batched' event format.
+ */
+ interface SequenceProxyPushSupplier
+ : ProxySupplier
+ , CosNotifyComm::SequencePushSupplier
+ {
+ /// Connect a consumer to the proxy
+ /**
+ * The event channel will not push events to the consumer until
+ * this operation is invoked.
+ *
+ * @param push_consumer the callback object used to push events to
+ * the application and inform if the event channel is destroyed
+ * @throws CORBA::BAD_PARAM if the push_consumer argument is nil
+ * @throws CosEventChannelAdmin::AlreadyConnected if the proxy is
+ * already connected, i.e. if this operation is invoked more than
+ * one time.
+ */
void connect_sequence_push_consumer (
- in CosNotifyComm::SequencePushConsumer push_consumer)
+ in CosNotifyComm::SequencePushConsumer push_consumer)
raises(CosEventChannelAdmin::AlreadyConnected,
CosEventChannelAdmin::TypeError );
+ /// Suspend the connection, the event channel will stop pushing
+ /// events to the consumer.
+ /**
+ * @throws ConnectionAlreadyInactive if the method is invoked
+ * while the connection is suspended
+ * @throws NotConnected if the method is invoked before the
+ * supplier connects
+ */
void suspend_connection()
raises(ConnectionAlreadyInactive, NotConnected);
+ /// Resume the connection, the event channel will start pushing
+ /// events to the consumer once more
+ /**
+ * @throws ConnectionAlreadyActive if the method is invoked
+ * while the connection is active
+ * @throws NotConnected if the method is invoked before the
+ * supplier connects
+ */
void resume_connection()
raises(ConnectionAlreadyActive, NotConnected);
+ };
- }; // SequenceProxyPushSupplier
-
+ /// Each proxy is assigned a unique ID by its proxy admin
typedef long ProxyID;
+ /// Helper type to query or fetch multiple IDs simulatenously
typedef sequence <ProxyID> ProxyIDSeq;
+ /**
+ * @enum ClientType
+ *
+ * @brief Helper type used to fetch proxies
+ */
enum ClientType {
+ /// The proxy uses the 'any' event format
ANY_EVENT,
+ /// The proxy uses the 'structured' event format
STRUCTURED_EVENT,
+ /// The proxy uses the 'sequence' (or batch) event format
SEQUENCE_EVENT
};
- enum InterFilterGroupOperator { AND_OP, OR_OP };
+ /**
+ * @enum InterFilterGroupOperator
+ *
+ * @brief Define how multiple Filters are considered in a proxy
+ * admin
+ */
+ enum InterFilterGroupOperator {
+ AND_OP,
+ OR_OP
+ };
+ /// Each proxy admin is assigned a unique number by its EventChannel
typedef long AdminID;
+ /// List of Admin IDs
typedef sequence<AdminID> AdminIDSeq;
+ /**
+ * @exception AdminNotFound
+ *
+ * @brief Exception raised if a lookup for a specific Admin ID
+ * fails.
+ */
exception AdminNotFound {};
+
+ /**
+ * @exception ProxyNotFound
+ *
+ * @brief Exception raised if a lookup for a specific Proxy ID
+ * fails.
+ */
exception ProxyNotFound {};
+ /**
+ * @struct AdminLimit
+ *
+ * @brief Helper structure to represent a violation of the limits in
+ * a proxy admin.
+ */
struct AdminLimit {
CosNotification::PropertyName name;
CosNotification::PropertyValue value;
};
- exception AdminLimitExceeded { AdminLimit admin_property_err; };
-
- interface ConsumerAdmin :
- CosNotification::QoSAdmin,
- CosNotifyComm::NotifySubscribe,
- CosNotifyFilter::FilterAdmin,
- CosEventChannelAdmin::ConsumerAdmin {
+ /**
+ * @exception AdminLimitExceeded
+ *
+ * @brief Exception raised if a limit in a proxy admin is breached
+ */
+ exception AdminLimitExceeded {
+ /// The limit that caused the problem.
+ AdminLimit admin_property_err;
+ };
+ /**
+ * @interface ConsumerAdmin
+ *
+ * @brief Interface used to control and obtain the proxies used by
+ * consumers.
+ */
+ interface ConsumerAdmin
+ : CosNotification::QoSAdmin
+ , CosNotifyComm::NotifySubscribe
+ , CosNotifyFilter::FilterAdmin
+ , CosEventChannelAdmin::ConsumerAdmin
+ {
+ /// The ID assigned to this admin by its event channel
readonly attribute AdminID MyID;
+
+ /// The event channel this admin belongs to
readonly attribute EventChannel MyChannel;
+ /// How are multiple filters interpreted
readonly attribute InterFilterGroupOperator MyOperator;
+ /// A special mapping filter to change the priority property of
+ /// events
attribute CosNotifyFilter::MappingFilter priority_filter;
+
+ /// A special mapping filter to change the lifetime property of
+ /// events
attribute CosNotifyFilter::MappingFilter lifetime_filter;
+ /// Get the complete list of pull proxy suppliers
readonly attribute ProxyIDSeq pull_suppliers;
- readonly attribute ProxyIDSeq push_suppliers;
- ProxySupplier get_proxy_supplier (
- in ProxyID proxy_id )
- raises ( ProxyNotFound );
+ /// Get the complete list of push proxy suppliers
+ readonly attribute ProxyIDSeq push_suppliers;
- ProxySupplier obtain_notification_pull_supplier (
- in ClientType ctype,
+ /// Get an specific ProxySupplier
+ /**
+ * @param proxy_id The proxy ID that will be retrieved
+ * @throws ProxyNotFound if the proxy_id is not found in this
+ * ConsumerAdmin
+ */
+ ProxySupplier get_proxy_supplier (in ProxyID proxy_id)
+ raises (ProxyNotFound );
+
+ /// Create a new pull-style proxy supplier
+ /**
+ * @param ctype The event format that the ProxySupplier should
+ * support
+ * @param proxy_id The ID assigned to the new proxy supplier
+ * @return The new ProxySupplier
+ * @throws AdminLimitExceeded if a limit in this admin is reached,
+ * such as the maximum number of proxies.
+ */
+ ProxySupplier obtain_notification_pull_supplier (in ClientType ctype,
out ProxyID proxy_id)
raises ( AdminLimitExceeded );
- ProxySupplier obtain_notification_push_supplier (
- in ClientType ctype,
+ /// Create a new push-style proxy supplier
+ /**
+ * @param ctype The event format that the ProxySupplier should
+ * support
+ * @param proxy_id The ID assigned to the new proxy supplier
+ * @return The new ProxySupplier
+ * @throws AdminLimitExceeded if a limit in this admin is reached,
+ * such as the maximum number of proxies.
+ */
+ ProxySupplier obtain_notification_push_supplier (in ClientType ctype,
out ProxyID proxy_id)
raises ( AdminLimitExceeded );
+ /// Destroy the Admin
void destroy();
+ };
- }; // ConsumerAdmin
-
- interface SupplierAdmin :
- CosNotification::QoSAdmin,
- CosNotifyComm::NotifyPublish,
- CosNotifyFilter::FilterAdmin,
- CosEventChannelAdmin::SupplierAdmin {
-
+ /**
+ * @interface SupplierAdmin
+ *
+ * @brief Interface used to control and obtain the proxies used by
+ * suppliers.
+ */
+ interface SupplierAdmin
+ : CosNotification::QoSAdmin
+ , CosNotifyComm::NotifyPublish
+ , CosNotifyFilter::FilterAdmin
+ , CosEventChannelAdmin::SupplierAdmin
+ {
+ /// The ID assigned to this admin by its event channel
readonly attribute AdminID MyID;
+
+ /// The event channel this admin belongs to
readonly attribute EventChannel MyChannel;
+ /// How are multiple filters interpreted
readonly attribute InterFilterGroupOperator MyOperator;
+ /// Get the complete list of pull proxy consumers
readonly attribute ProxyIDSeq pull_consumers;
+
+ /// Get the complete list of push proxy consumers
readonly attribute ProxyIDSeq push_consumers;
+ /// Get an specific ProxyConsumer
+ /**
+ * @param proxy_id The proxy ID that will be retrieved
+ * @throws ProxyNotFound if the proxy_id is not found in this
+ * SupplierAdmin
+ */
ProxyConsumer get_proxy_consumer (in ProxyID proxy_id )
raises ( ProxyNotFound );
- ProxyConsumer obtain_notification_pull_consumer (
- in ClientType ctype,
+ /// Create a new pull-style proxy consumer
+ /**
+ * @param ctype The event format that the ProxyConsumer should
+ * support
+ * @param proxy_id The ID assigned to the new proxy consumer
+ * @return The new ProxyConsumer
+ * @throws AdminLimitExceeded if a limit in this admin is reached,
+ * such as the maximum number of proxies.
+ */
+ ProxyConsumer obtain_notification_pull_consumer (in ClientType ctype,
out ProxyID proxy_id)
raises ( AdminLimitExceeded );
- ProxyConsumer obtain_notification_push_consumer (
- in ClientType ctype,
+ /// Create a new push-style proxy consumer
+ /**
+ * @param ctype The event format that the ProxyConsumer should
+ * support
+ * @param proxy_id The ID assigned to the new proxy consumer
+ * @return The new ProxySupplier
+ * @throws AdminLimitExceeded if a limit in this admin is reached,
+ * such as the maximum number of proxies.
+ */
+ ProxyConsumer obtain_notification_push_consumer (in ClientType ctype,
out ProxyID proxy_id)
raises ( AdminLimitExceeded );
+ /// Destroy the Admin
void destroy();
+ };
- }; // SupplierAdmin
-
- interface EventChannel :
- CosNotification::QoSAdmin,
- CosNotification::AdminPropertiesAdmin,
- CosEventChannelAdmin::EventChannel {
-
+ /**
+ * @interface EventChannel
+ *
+ * @brief Defines the interface to control an use an event channel
+ */
+ interface EventChannel
+ : CosNotification::QoSAdmin
+ , CosNotification::AdminPropertiesAdmin
+ , CosEventChannelAdmin::EventChannel
+ {
+ /// The factory this event channel belongs to
readonly attribute EventChannelFactory MyFactory;
+ /// The default consumer admin
readonly attribute ConsumerAdmin default_consumer_admin;
- readonly attribute SupplierAdmin default_supplier_admin;
- readonly attribute CosNotifyFilter::FilterFactory
- default_filter_factory;
+ /// The default supplier admin
+ readonly attribute SupplierAdmin default_supplier_admin;
- ConsumerAdmin new_for_consumers(
- in InterFilterGroupOperator op,
+ /// The default filter factory for this event channel
+ readonly attribute CosNotifyFilter::FilterFactory default_filter_factory;
+
+ /// Create a new consumer admin
+ /**
+ * @param op Defines how multiple filters would be interpreted in
+ * the new consumer admin
+ * @param id Returns the ID assigned to the new consumer admin
+ * @return The new consumer admin
+ */
+ ConsumerAdmin new_for_consumers(in InterFilterGroupOperator op,
out AdminID id );
- SupplierAdmin new_for_suppliers(
- in InterFilterGroupOperator op,
+ /// Create a new supplier admin
+ /**
+ * @param op Defines how multiple filters would be interpreted in
+ * the new supplier admin
+ * @param id Returns the ID assigned to the new supplier admin
+ * @return The new supplier admin
+ */
+ SupplierAdmin new_for_suppliers(in InterFilterGroupOperator op,
out AdminID id );
+ /// Fetch an specific consumer admin based on its ID
+ /**
+ * @param id The id of the consumer that should be returned
+ * @return The consumer admin assigned the given ID
+ * @throws AdminNotFound if there is no consumer admin with the ID
+ * provided
+ */
ConsumerAdmin get_consumeradmin ( in AdminID id )
raises (AdminNotFound);
+ /// Fetch an specific supplier admin based on its ID
+ /**
+ * @param id The id of the supplier that should be returned
+ * @return The supplier admin assigned the given ID
+ * @throws AdminNotFound if there is no supplier admin with the ID
+ * provided
+ */
SupplierAdmin get_supplieradmin ( in AdminID id )
raises (AdminNotFound);
+ /// Get the IDs of all the consumer admins
AdminIDSeq get_all_consumeradmins();
- AdminIDSeq get_all_supplieradmins();
- }; // EventChannel
+ /// Get the IDs of all the supplier admins
+ AdminIDSeq get_all_supplieradmins();
+ };
+ /// Each event channel is assigned a unique ID by its factory
typedef long ChannelID;
+
+ /// Helper type used to return the complete list of event channel
+ /// IDs
typedef sequence<ChannelID> ChannelIDSeq;
+ /**
+ * @exception ChannelNotFound
+ *
+ * @brief Exception raised if an specific ChannelID is not found.
+ */
exception ChannelNotFound {};
+ /**
+ * @interface EventChannelFactory
+ *
+ * @brief Defines the interface used to build event channels
+ */
interface EventChannelFactory {
-
- EventChannel create_channel (
- in CosNotification::QoSProperties initial_qos,
+ /// Create a new event channel
+ /**
+ * @param initial_qos Configure the initial QoS properties of the
+ * new EventChannel
+ * @param inital_admin Configure the initial Admin properties of
+ * the new EventChannel
+ * @param id Returns the ID assigned to the new EventChannel
+ * @return The new event channel
+ * @throws CosNotification::UnsupportedQoS if the requested QoS
+ * properties cannot be satisfied or are invalid
+ * @throws CosNotification::UnsupportedAdmin if the requested
+ * admin properties cannot be satisfied or are invalid
+ */
+ EventChannel create_channel (in CosNotification::QoSProperties initial_qos,
in CosNotification::AdminProperties initial_admin,
out ChannelID id)
raises(CosNotification::UnsupportedQoS,
CosNotification::UnsupportedAdmin );
+ /// Get the complete list of event channels in this factory
ChannelIDSeq get_all_channels();
+ /// Get an event channel given its ID
+ /**
+ * @param id The ID of the event channel the application wants
+ * @return The event channel
+ * @throws ChannelNotFound if the give ID is unknown on this
+ * factory
+ */
EventChannel get_event_channel ( in ChannelID id )
raises (ChannelNotFound);
+ };
+};
- }; // EventChannelFactory
-
-}; // CosNotifyChannelAdmin
+#pragma prefix ""
#endif /* _COS_NOTIFY_CHANNEL_ADMIN_IDL_ */
diff --git a/TAO/orbsvcs/orbsvcs/CosNotifyComm.idl b/TAO/orbsvcs/orbsvcs/CosNotifyComm.idl
index 6b4fb6d3aad..709774c6260 100644
--- a/TAO/orbsvcs/orbsvcs/CosNotifyComm.idl
+++ b/TAO/orbsvcs/orbsvcs/CosNotifyComm.idl
@@ -1,19 +1,21 @@
-// $Id$
-// ==========================================================================
-//
-// = LIBRARY
-// orbsvcs
-//
-// = FILENAME
-// CosNotifyComm.idl
-//
-// = DESCRIPTION
-// Part of the Notification Service
-//
-// = AUTHOR
-// Pradeep Gore <pradeep@cs.wustl.edu>
-//
-// ==========================================================================
+/**
+ * @file CosNotifyComm.idl
+ *
+ * @brief Define the CosNotifyComm module
+ *
+ * $Id$
+ *
+ * This module is taken from the standard CORBA Notification Service
+ * 1.0, as described in:
+ *
+ * http://www.omg.org/technology/documents/formal/notification_service.htm
+ *
+ * In particular the following two documents were used:
+ * formal/2000-06-20
+ * formal/01-03-03
+ *
+ * @author Pradeep Gore <pradeep@cs.wustl.edu>
+ */
#ifndef _COS_NOTIFY_COMM_IDL_
#define _COS_NOTIFY_COMM_IDL_
@@ -23,112 +25,356 @@
#pragma prefix "omg.org"
-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(
+/**
+ * @namespace CosNotifyComm
+ *
+ * @brief Define the interfaces implemented by users of the CORBA
+ * Notification Service.
+ */
+module CosNotifyComm
+{
+ /**
+ * @exception InvalidEventType
+ *
+ * @brief Exception raised to indicate that an EventType is
+ * syntactically or semantically invalid.
+ */
+ exception InvalidEventType {
+ /// Type of invalid event
+ CosNotification::EventType type;
+ };
+
+ /**
+ * @interface NotifyPublish
+ *
+ * @brief Defines interface to report changes in the events
+ * published to a consumer.
+ *
+ * Interfaces that represent consumers (or the consumer aspects of
+ * an Notification Service) provide this interface to receive
+ * notifications in the list of events they support.
+ */
+ interface NotifyPublish {
+ /// Report a change in the list of publications.
+ /**
+ * @param added The list of new event types that the consumer can
+ * expect.
+ * @param removed The list of event types that the consumer should
+ * no longer expect.
+ * @throws InvalidEventType if the one or more event types
+ * provided is invalid
+ */
+ void offer_change (in CosNotification::EventTypeSeq added,
+ in CosNotification::EventTypeSeq removed )
+ raises ( InvalidEventType );
+ };
+
+ /**
+ * @interface NotifySubscribe
+ *
+ * @brief Defines interface to report changes in the events required
+ * from a supplier.
+ *
+ * Interfaces that represent suppliers (or the supplier aspects of
+ * the Notification Service) provide this interface to receive
+ * changes
+ */
+ interface NotifySubscribe {
+ /// Report a change in the list of subscriptions
+ /**
+ * @param added The list of new event types that are interesting
+ * for the supplier's peer.
+ * @param removed The list of event types that are no longer
+ * interesting for the supplier's peer.
+ * @throws InvalidEventType if the one or more event types
+ * provided is invalid
+ */
+ void subscription_change(in CosNotification::EventTypeSeq added,
+ in CosNotification::EventTypeSeq removed )
+ raises ( InvalidEventType );
+ };
+
+ /**
+ * @interface PushConsumer
+ *
+ * @brief Defines the interface used by push-style consumers
+ *
+ * Push-style consumers passively accept events as anys.
+ */
+ interface PushConsumer :
+ NotifyPublish,
+ CosEventComm::PushConsumer {
+ };
+
+ /**
+ * @interface PullConsumer
+ *
+ * @brief Defines the interface used by pull-style consumers
+ *
+ * Pull-style consumer actively query the Notification Service to
+ * receive events.
+ */
+ interface PullConsumer :
+ NotifyPublish,
+ CosEventComm::PullConsumer {
+ };
+
+ /**
+ * @interface PullSupplier
+ *
+ * @brief Defines the interface used by pull-style suppliers
+ *
+ * Pull-style suppliers passively provide events to the Notification
+ * Service.
+ */
+ interface PullSupplier :
+ NotifySubscribe,
+ CosEventComm::PullSupplier {
+ };
+
+ /**
+ * @interface PushSupplier
+ *
+ * @brief Defines the interface used by push-style suppliers
+ *
+ * Push-style suppliers actively provide events to the Notifcation
+ * Service.
+ */
+ interface PushSupplier :
+ NotifySubscribe,
+ CosEventComm::PushSupplier {
+ };
+
+ /**
+ * @interface StructuredPushConsumer
+ *
+ * @brief Defines the interface used by push-style consumers of
+ * structured events
+ *
+ * Push-style consumers passively receive events from the
+ * Notification Service. The events are provided using the
+ * CosNotification::StructuredEvent structure.
+ */
+ interface StructuredPushConsumer : NotifyPublish {
+ /// Receive one structured event
+ /**
+ * This operation is invoked to provide one event to the
+ * consumer.
+ * @throws CosEventComm::Disconnected if the object considers
+ * itself no longer connected to its peer.
+ */
+ void push_structured_event(
+ in CosNotification::StructuredEvent notification)
+ raises(CosEventComm::Disconnected);
+
+ /// The peer has disconnected
+ /**
+ * This operation is invoked by the consumer peer when it wishes
+ * to disconnect. The consumer can safely assume that no more
+ * events will follow this request.
+ */
+ void disconnect_structured_push_consumer();
+ };
+
+ /**
+ * @interface StructuredPullConsumer
+ *
+ * @brief Defines the interface used by pull-style consumers of
+ * structured events
+ *
+ * Pull-style consumers actively retrieve events from the
+ * Notification Service. The events use the
+ * CosNotification::StructuredEvent format.
+ */
+ interface StructuredPullConsumer : NotifyPublish {
+ /// The peer has disconnected
+ /**
+ * This operation is invoked by the consumer peer when it wishes
+ * to disconnect. The consumer can safely assume that no more
+ * events will follow this request.
+ */
+ void disconnect_structured_pull_consumer();
+ };
+
+ /**
+ * @interface StructuredPullSupplier
+ *
+ * @brief Defines the interface used by pull-style suppliers of
+ * structured events
+ *
+ * Pull-style suppliers passively generate events for the
+ * Notification Service. The events use the
+ * CosNotification::StructuredEvent format.
+ */
+ interface StructuredPullSupplier : NotifySubscribe {
+ /// Pull (blocking) one event from the supplier.
+ /**
+ * This operation should block until the next event becomes
+ * available.
+ * @throws CosEventComm::Disconnected if the object considers
+ * itself no longer connected to its peer.
+ */
+ CosNotification::StructuredEvent pull_structured_event()
+ raises(CosEventComm::Disconnected);
+
+ /// Pull (non-blocking) one event from the supplier.
+ /**
+ * The try_pull operation does not block: if the event data is
+ * available, it returns the event data and sets the has_event
+ * parameter to true; if the event is not available, it sets the
+ * has_event parameter to false and the event data is returned
+ * as long with an undefined value.
+ * @throws CosEventComm::Disconnected if the object considers
+ * itself no longer connected to its peer.
+ */
+ 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(
+ raises(CosEventComm::Disconnected);
+
+ /// The peer has disconnected
+ /**
+ * This operation is invoked by the consumer peer when it wishes
+ * to disconnect. The consumer can safely assume that no more
+ * events will follow this request.
+ */
+ void disconnect_structured_pull_supplier();
+ };
+
+ /**
+ * @interface StructuredPushSupplier
+ *
+ * @brief Defines the interface used by push-style suppliers that
+ * provide structure events.
+ *
+ * Push-style suppliers actively provide events, in this case using
+ * the CosEventComm::StructuredEvent format.
+ */
+ interface StructuredPushSupplier : NotifySubscribe {
+ /// The peer has disconnected
+ /**
+ * This operation is invoked by the consumer peer when it wishes
+ * to disconnect. The consumer can safely assume that no more
+ * events will follow this request.
+ */
+ void disconnect_structured_push_supplier();
+ };
+
+ /**
+ * @interface SequencePushConsumer
+ *
+ * @brief Defines the interface used by push-style consumers that
+ * interested in event batches.
+ *
+ * Push-style consumer passively accept events, in this case
+ * multiple events can be delivered simulatneously.
+ */
+ interface SequencePushConsumer : NotifyPublish {
+ /// Receive an event batch
+ /**
+ * This operation is invoked to provide an event batch to the
+ * consumer.
+ * @throws CosEventComm::Disconnected if the object considers
+ * itself no longer connected to its peer.
+ */
+ void push_structured_events(
+ in CosNotification::EventBatch notifications)
+ raises(CosEventComm::Disconnected);
+
+ /// The peer has disconnected
+ /**
+ * This operation is invoked by the consumer peer when it wishes
+ * to disconnect. The consumer can safely assume that no more
+ * events will follow this request.
+ */
+ void disconnect_sequence_push_consumer();
+ };
+
+ /**
+ * @interface SequencePullConsumer
+ *
+ * @brief Defines the interface used by pull-style consumers that
+ * deal with event batches.
+ *
+ * Pull-style consumer actively query the Notification Service for
+ * events, this particular interface can obtain multiple events
+ * simultaneously.
+ */
+ interface SequencePullConsumer : NotifyPublish {
+ /// The peer has disconnected
+ /**
+ * This operation is invoked by the consumer peer when it wishes
+ * to disconnect. The consumer can safely assume that no more
+ * events will follow this request.
+ */
+ void disconnect_sequence_pull_consumer();
+ };
+
+ /**
+ * @interface SequencePullSupplier
+ *
+ * @brief Defines the interface used by pull-style suppliers that
+ * provide event batches.
+ *
+ * Pull-style suppliers passively provide events to the Notification
+ * Service. This particular interface can provide multiple events
+ * simultaneously.
+ */
+ interface SequencePullSupplier : NotifySubscribe {
+ /// Pull (blocking) an event batch from the supplier
+ /**
+ * @param max_number Maximum number of events expected by the
+ * caller.
+ * @throws CosEventComm::Disconnected if the object considers
+ * itself no longer connected to its peer.
+ */
+ CosNotification::EventBatch pull_structured_events(
in long max_number )
- raises(CosEventComm::Disconnected);
-
- CosNotification::EventBatch try_pull_structured_events(
+ raises(CosEventComm::Disconnected);
+
+ /// Pull (non-blocking) an event batch from the supplier
+ /**
+ * @param max_number Maximum number of events expected by the
+ * caller.
+ * @param has_event Return FALSE if there are no events available,
+ * TRUE otherwise.
+ * @throws CosEventComm::Disconnected if the object considers
+ * itself no longer connected to its peer.
+ */
+ 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
+ raises(CosEventComm::Disconnected);
+
+ /// The peer has disconnected
+ /**
+ * This operation is invoked by the consumer peer when it wishes
+ * to disconnect. The consumer can safely assume that no more
+ * events will follow this request.
+ */
+ void disconnect_sequence_pull_supplier();
+ };
+
+ /**
+ * @interface SequencePushSupplier
+ *
+ * @brief Defines the interface used by push-style suppliers that
+ * provide event batches.
+ *
+ * Push-style suppliers actively generate events for the
+ * Notification Service. This particular interface can provide
+ * multiple events simultaneously.
+ */
+ interface SequencePushSupplier : NotifySubscribe {
+ /// The peer has disconnected
+ /**
+ * This operation is invoked by the consumer peer when it wishes
+ * to disconnect. The consumer can safely assume that no more
+ * events will follow this request.
+ */
+ void disconnect_sequence_push_supplier();
+ };
+};
+
+#pragma prefix ""
#endif /* _COS_NOTIFY_COMM_IDL_ */
diff --git a/TAO/orbsvcs/orbsvcs/CosNotifyFilter.idl b/TAO/orbsvcs/orbsvcs/CosNotifyFilter.idl
index 5daf6fc2008..1326fb193bd 100644
--- a/TAO/orbsvcs/orbsvcs/CosNotifyFilter.idl
+++ b/TAO/orbsvcs/orbsvcs/CosNotifyFilter.idl
@@ -1,197 +1,505 @@
-// $Id$
-// ==========================================================================
-//
-// = LIBRARY
-// orbsvcs
-//
-// = FILENAME
-// CosNotifyFilter.idl
-//
-// = DESCRIPTION
-// Part of the Notification Service
-//
-// = AUTHOR
-// Pradeep Gore <pradeep@cs.wustl.edu>
-//
-// ==========================================================================
+/**
+ * @file CosNotifyFilter.idl
+ *
+ * @brief Defines the CosNotifyFilter module
+ *
+ * $Id$
+ *
+ * This module is taken from the standard CORBA Notification Service
+ * 1.0, as described in:
+ *
+ * http://www.omg.org/technology/documents/formal/notification_service.htm
+ *
+ * In particular the following two documents were used:
+ * formal/2000-06-20
+ * formal/01-03-03
+ *
+ * @author Pradeep Gore <pradeep@cs.wustl.edu>
+ */
#ifndef _COS_NOTIFY_FILTER_IDL_
#define _COS_NOTIFY_FILTER_IDL_
-#include "orb.idl"
+#include <orb.idl>
+
#include "CosNotifyComm.idl"
#pragma prefix "omg.org"
-module CosNotifyFilter {
-
- typedef long ConstraintID;
-
- struct ConstraintExp {
- CosNotification::EventTypeSeq event_types;
- string constraint_expr;
- };
-
- typedef sequence<ConstraintID> ConstraintIDSeq;
- typedef sequence<ConstraintExp> ConstraintExpSeq;
-
- struct ConstraintInfo {
- ConstraintExp constraint_expression;
- ConstraintID constraint_id;
- };
-
- typedef sequence<ConstraintInfo> ConstraintInfoSeq;
-
- struct MappingConstraintPair {
- ConstraintExp constraint_expression;
- any result_to_set;
- };
-
- typedef sequence<MappingConstraintPair> MappingConstraintPairSeq;
-
- struct MappingConstraintInfo {
- ConstraintExp constraint_expression;
- ConstraintID constraint_id;
- any value;
- };
-
- typedef sequence<MappingConstraintInfo> MappingConstraintInfoSeq;
-
- typedef long CallbackID;
- typedef sequence<CallbackID> CallbackIDSeq;
-
- exception UnsupportedFilterableData {};
- exception InvalidGrammar {};
- exception InvalidConstraint {ConstraintExp constr;};
- exception DuplicateConstraintID {ConstraintID id;};
-
- exception ConstraintNotFound {ConstraintID id;};
- exception CallbackNotFound {};
-
- exception InvalidValue {ConstraintExp constr; any value;};
-
- interface Filter {
-
- readonly attribute string constraint_grammar;
-
- ConstraintInfoSeq add_constraints (
- in ConstraintExpSeq constraint_list)
- raises (InvalidConstraint);
-
- void modify_constraints (
- in ConstraintIDSeq del_list,
- in ConstraintInfoSeq modify_list)
- raises (InvalidConstraint, ConstraintNotFound);
-
- ConstraintInfoSeq get_constraints(
- in ConstraintIDSeq id_list)
- raises (ConstraintNotFound);
-
- ConstraintInfoSeq get_all_constraints();
-
- void remove_all_constraints();
-
- void destroy();
-
- boolean match ( in any filterable_data )
- raises (UnsupportedFilterableData);
-
- boolean match_structured (
- in CosNotification::StructuredEvent filterable_data )
- raises (UnsupportedFilterableData);
-
- boolean match_typed (
- in CosNotification::PropertySeq filterable_data )
- raises (UnsupportedFilterableData);
-
- CallbackID attach_callback (
- in CosNotifyComm::NotifySubscribe callback);
-
- void detach_callback ( in CallbackID callback)
- raises ( CallbackNotFound );
-
- CallbackIDSeq get_callbacks();
-
- }; // Filter
-
- interface MappingFilter {
-
- readonly attribute string constraint_grammar;
-
- readonly attribute CORBA::TypeCode value_type;
-
- readonly attribute any default_value;
-
- MappingConstraintInfoSeq add_mapping_constraints (
+/**
+ * @namespace CosNotifyFilter
+ *
+ * @brief Defines the interfaces used in Event Filtering
+ */
+module CosNotifyFilter
+{
+ /// Constraints are assigned IDs by each Filter object, and can be
+ /// modified using those IDs.
+ typedef long ConstraintID;
+
+ /**
+ * @struct ConstraintExp
+ *
+ * @brief Defines a constraint expression.
+ */
+ struct ConstraintExp {
+ /// The list of event types accepted
+ CosNotification::EventTypeSeq event_types;
+ /// A constraint (or filtering) expression
+ string constraint_expr;
+ };
+
+ /// A sequence of constraint IDs
+ typedef sequence<ConstraintID> ConstraintIDSeq;
+
+ /// A sequence of constraint expressions
+ typedef sequence<ConstraintExp> ConstraintExpSeq;
+
+ /**
+ * @struct ConstraintInfo
+ *
+ * @brief Helper data structure to modify a constraint expression.
+ */
+ struct ConstraintInfo {
+ /// New constraint expression
+ ConstraintExp constraint_expression;
+ /// ID of the expression modified
+ ConstraintID constraint_id;
+ };
+
+ /// Sequence of Constraint infos, modify multiple constraints.
+ typedef sequence<ConstraintInfo> ConstraintInfoSeq;
+
+ /**
+ * @struct MappingConstraintPair
+ *
+ * @brief Helper structure used to modify a mapping constraint
+ * expression.
+ */
+ struct MappingConstraintPair {
+ /// Constraint expression
+ ConstraintExp constraint_expression;
+ /// Value to set in the property if the constraint expression
+ /// matches
+ any result_to_set;
+ };
+
+ /// Sequence of mapping constraint pairs
+ typedef sequence<MappingConstraintPair> MappingConstraintPairSeq;
+
+ /**
+ * @struct MappingConstraintInfo
+ *
+ * @brief Helper structure used to represent a mapping constraint,
+ * its property value and the ID assigned to it in a MappingFilter.
+ */
+ struct MappingConstraintInfo {
+ ConstraintExp constraint_expression;
+ ConstraintID constraint_id;
+ any value;
+ };
+ /// A list of MappingConstraintInfo
+ typedef sequence<MappingConstraintInfo> MappingConstraintInfoSeq;
+
+ /// Each callback object receives a unique ID when it is attached to
+ /// a Filter
+ typedef long CallbackID;
+
+ /// Batch management of callback objects in the Filter interface
+ typedef sequence<CallbackID> CallbackIDSeq;
+
+ /**
+ * @exception UnsupportedFilterableData
+ *
+ * @brief Exception raised when an event with unsupported filtered
+ * data is tested against a Filter.
+ */
+ exception UnsupportedFilterableData {};
+
+ /**
+ * @exception InvalidGrammar
+ *
+ * @brief Exception raised if the filtering expression is using an
+ * invalid grammar.
+ */
+ exception InvalidGrammar {};
+
+ /**
+ * @exception InvalidConstraint
+ *
+ * @brief Exception raised if a constraint's grammar does not match
+ * the Filter grammar.
+ *
+ * The constraint that is deemed invalid is returned as part of the
+ * exception.
+ */
+ exception InvalidConstraint {
+ /// Constraint that caused the problem
+ ConstraintExp constr;
+ };
+
+ /**
+ * @exception DuplicateConstraintID
+ *
+ * @brief Exception raised if a duplicate ID is used while modifying
+ * or removing multiple constraints.
+ */
+ exception DuplicateConstraintID {
+ /// ID causing the problem
+ ConstraintID id;
+ };
+
+ /**
+ * @exception ConstraintNotFound
+ *
+ * @brief Exception raised if a constraint ID is not found while
+ * modifying or removing multiple constraints.
+ */
+ exception ConstraintNotFound {
+ /// ID causing the problem
+ ConstraintID id;
+ };
+
+ /**
+ * @exception CallbackNotFound
+ *
+ * @brief Exception raised if the application tries to remove a
+ * Filter callback that does not exists.
+ */
+ exception CallbackNotFound {};
+
+ /**
+ * @exception InvalidValue
+ *
+ * @brief Exception raised if a modification or addition of a
+ * mapping constraint does not matches the mapping filter type.
+ */
+ exception InvalidValue {
+ /// Constraint expression that cause the problem
+ ConstraintExp constr;
+ /// Value that caused the problem
+ any value;
+ };
+
+ /**
+ * @interface Filter
+ *
+ * @brief Interface used to manipulate and evaluate filters.
+ *
+ * An event filter posseses multiple constraints, each constraint
+ * applies to a limited range of event types, the filter is accepted
+ * if it matches one or more constraint expressions that apply to
+ * its event type.
+ */
+ interface Filter {
+ /// Constraint grammar used in this filter
+ /**
+ * All filtering expressions in the filter should use this
+ * grammar.
+ */
+ readonly attribute string constraint_grammar;
+
+ /// Add constraints to a filter
+ /**
+ * Return the constraints and their IDs.
+ *
+ * @throws InvalidConstraint if one or more constraints contain
+ * invalid an invalid expression in the Filter constraint
+ * grammar.
+ */
+ ConstraintInfoSeq add_constraints (
+ in ConstraintExpSeq constraint_list)
+ raises (InvalidConstraint);
+
+ /// Modify and/or remove multiple constraints in the Filter
+ /**
+ * The operation can raise InvalidConstraint if one or more
+ * constraints contain invalid expressions in the constraint
+ * grammar.
+ *
+ * @param del_list List of constraint IDs to be removed
+ * @param modify_list List of constrained modified
+ *
+ * @throws ConstraintNotFound If one or more of the ConstraintID
+ * supplied are not found.
+ */
+ void modify_constraints (
+ in ConstraintIDSeq del_list,
+ in ConstraintInfoSeq modify_list)
+ raises (InvalidConstraint, ConstraintNotFound);
+
+ /// Obtain the one or more constraints given their IDs
+ /**
+ * @param id_list List of IDs queried
+ *
+ * @throws ConstraintNotFound if one or more of
+ * the ConstraintID supplied are not found.
+ */
+ ConstraintInfoSeq get_constraints(
+ in ConstraintIDSeq id_list)
+ raises (ConstraintNotFound);
+
+ /// The all the constraints in the Filter
+ ConstraintInfoSeq get_all_constraints();
+
+ /// Remove all the constraints from the Filter
+ void remove_all_constraints();
+
+ /// Destroy the Filter
+ void destroy();
+
+ /// Match a regular event against the constraints in the filter
+ /**
+ * @param filterable_data The Notification Service event to be
+ * tested against the constraints in this Filter
+ * @return TRUE if at least one constraint evaluates to TRUE for
+ * the event.
+ * @throws UnsupportedFilterableData if the event contents do not
+ * match the filtering expression, for example, if the
+ * expression for a filterable field expects a string, but the
+ * actual value is a number.
+ */
+ boolean match ( in any filterable_data )
+ raises (UnsupportedFilterableData);
+
+ /// Match a structured event against the constraints in the filter
+ /**
+ * @param filterable_data The Notification Service event to be
+ * tested against the constraints in this Filter
+ * @return TRUE if at least one constraint expression evaluates
+ * to TRUE for the event.
+ * @throws UnsupportedFilterableData if the event contents do not
+ * match the filtering expression, for example, if the
+ * expression for a filterable field expects a string, but the
+ * actual value is a number.
+ */
+ boolean match_structured (
+ in CosNotification::StructuredEvent filterable_data )
+ raises (UnsupportedFilterableData);
+
+ /// Match a typed event against the constraints in the filter
+ /**
+ * @param filterable_data The sequence of properties that make the
+ * filterable portion of the Typed event.
+ * @return TRUE if at least one constraint expression evaluates
+ * to TRUE for the event.
+ * @throws UnsupportedFilterableData if the event contents do not
+ * match the filtering expression, for example, if the
+ * expression for a filterable field expects a string, but the
+ * actual value is a number.
+ */
+ boolean match_typed (
+ in CosNotification::PropertySeq filterable_data )
+ raises (UnsupportedFilterableData);
+
+ /// Add a callback interface to the filter
+ /**
+ * Filters can communicate changes in the list of event types they
+ * potentially accept.
+ *
+ * @param callback the object interested about changes in the
+ * Filter event type list.
+ * @return A unique ID attached to the callback interface.
+ */
+ CallbackID attach_callback (
+ in CosNotifyComm::NotifySubscribe callback);
+
+ /// Remove a callback interface from the filter
+ /**
+ * @param callback The ID of the callback removed
+ *
+ * @throws CallbackNotFound if the callback id supplied is not
+ * found in the internal list of callbacks.
+ */
+ void detach_callback ( in CallbackID callback)
+ raises ( CallbackNotFound );
+
+ /// Return all the callback IDs in the Filter object
+ CallbackIDSeq get_callbacks();
+ };
+
+ /**
+ * @interface MappingFilter
+ *
+ * @brief Mapping filters can be used to change properties of an
+ * event as it traverses the Notification Service.
+ */
+ interface MappingFilter {
+ /// Return the constraint grammar used in the mapping filter
+ readonly attribute string constraint_grammar;
+
+ /// Return the type code for the property affected by this mapping
+ /// filter
+ readonly attribute CORBA::TypeCode value_type;
+
+ /// Return the default value set by this mapping filter
+ /**
+ * The default value is used if there are no mapping constraint
+ * expressions matching the event.
+ */
+ readonly attribute any default_value;
+
+ /// Add multiple mapping constraints to the filter
+ /**
+ * @param pair_list List of constraint expressions and the
+ * corresponding property value
+ *
+ * @return The list of constraint expressions, their values, and
+ * the IDs assigned to them in this Filter.
+ *
+ * @throws InvalidConstraint if one or more constraint expressions
+ * do not match the constraint grammar of this mapping filter
+ * @throws InvalidValue if the value in one or more mapping
+ * constraint pairs does not match the type code for this
+ * mapping filter.
+ */
+ MappingConstraintInfoSeq add_mapping_constraints (
in MappingConstraintPairSeq pair_list)
- raises (InvalidConstraint, InvalidValue);
-
- void modify_mapping_constraints (
- in ConstraintIDSeq del_list,
- in MappingConstraintInfoSeq modify_list)
- raises (InvalidConstraint, InvalidValue,
- ConstraintNotFound);
-
- MappingConstraintInfoSeq get_mapping_constraints (
- in ConstraintIDSeq id_list)
- raises (ConstraintNotFound);
-
- MappingConstraintInfoSeq get_all_mapping_constraints();
-
- void remove_all_mapping_constraints();
-
- void destroy();
-
- boolean match ( in any filterable_data,
- out any result_to_set )
- raises (UnsupportedFilterableData);
-
- boolean match_structured (
- in CosNotification::StructuredEvent filterable_data,
- out any result_to_set)
- raises (UnsupportedFilterableData);
-
- boolean match_typed (
- in CosNotification::PropertySeq filterable_data,
- out any result_to_set)
- raises (UnsupportedFilterableData);
-
- }; // MappingFilter
-
- interface FilterFactory {
-
- Filter create_filter (
- in string constraint_grammar)
+ raises (InvalidConstraint, InvalidValue);
+
+ /// Modify and/or remove mapping constraints in the filter
+ /**
+ * @param del_list list of constraint IDs that should be removed
+ * @param modify_list list of constraints that would be modified
+ *
+ * @throws InvalidConstraint if one or more constraint expressions
+ * do not match the constraint grammar of this mapping filter
+ * @throws InvalidValue if the value in one or more mapping
+ * constraint pairs does not match the type code for this
+ * mapping filter.
+ * @throws ConstraintNotFound if one or more mapping constraint
+ * IDs are not found in the filter
+ */
+ void modify_mapping_constraints (
+ in ConstraintIDSeq del_list,
+ in MappingConstraintInfoSeq modify_list)
+ raises (InvalidConstraint, InvalidValue, ConstraintNotFound);
+
+ /// Retrieve multiple mapping constraints from the filter
+ /**
+ * @param id_list the list of mapping constraint IDs requested
+ * @return The list of constraint expressions, their values and
+ * IDs.
+ * @throws ConstraintNotFound if one or more mapping constraint
+ * IDs are not found in the filter
+ */
+ MappingConstraintInfoSeq get_mapping_constraints (
+ in ConstraintIDSeq id_list)
+ raises (ConstraintNotFound);
+
+ /// Get all the mapping constraints from the Filter
+ MappingConstraintInfoSeq get_all_mapping_constraints();
+
+ /// Remove all the mapping constraints in the Filter
+ void remove_all_mapping_constraints();
+
+ /// Destroy the mapping filter
+ void destroy();
+
+ /// Test an event against the mapping constraints
+ boolean match ( in any filterable_data,
+ out any result_to_set )
+ raises (UnsupportedFilterableData);
+
+ boolean match_structured (
+ in CosNotification::StructuredEvent filterable_data,
+ out any result_to_set)
+ raises (UnsupportedFilterableData);
+
+ boolean match_typed (
+ in CosNotification::PropertySeq filterable_data,
+ out any result_to_set)
+ raises (UnsupportedFilterableData);
+ };
+
+ /**
+ * @interface FilterFactory
+ *
+ * @brief Create Filter and MappingFilter objects
+ */
+ interface FilterFactory {
+ /// Create a new Filter object
+ /**
+ * @param constraint_grammar The name of the grammar used for this
+ * filter
+ * @throws InvalidGrammar The grammar name provided is invalid or
+ * unsupported
+ */
+ Filter create_filter (in string constraint_grammar)
raises (InvalidGrammar);
- MappingFilter create_mapping_filter (
- in string constraint_grammar,
- in any default_value)
- raises(InvalidGrammar);
-
- }; // FilterFactory
-
- typedef long FilterID;
- typedef sequence<FilterID> FilterIDSeq;
-
- exception FilterNotFound {};
-
- interface FilterAdmin {
-
- FilterID add_filter ( in Filter new_filter );
-
- void remove_filter ( in FilterID filter )
- raises ( FilterNotFound );
-
- Filter get_filter ( in FilterID filter )
- raises ( FilterNotFound );
-
- FilterIDSeq get_all_filters();
-
- void remove_all_filters();
-
- }; // FilterAdmin
-
-}; // CosNotifyFilter
+ /// Create a new MappingFilter object
+ /**
+ * @param constraint_grammar The name of the grammar used for this
+ * filter
+ * @param default_value The default property value used if no
+ * mapping constraint matches
+ * @throws InvalidGrammar The grammar name provided is invalid or
+ * unsupported
+ */
+ MappingFilter create_mapping_filter (
+ in string constraint_grammar,
+ in any default_value)
+ raises(InvalidGrammar);
+ };
+
+ /// Each filter is assigned a unique ID
+ typedef long FilterID;
+
+ /// List of filter IDs
+ typedef sequence<FilterID> FilterIDSeq;
+
+ /**
+ * @exception FilterNotFound
+ *
+ * @brief Exception raised if a filter ID is not found.
+ */
+ exception FilterNotFound {};
+
+ /**
+ * @interface FilterAdmin
+ *
+ * @brief Interface used to modify the Filters attached to a
+ * Notification Service component
+ */
+ interface FilterAdmin {
+ /// Add a filter
+ /**
+ * @param new_filter Filter to be added
+ * @return The ID assigned to the new filter
+ */
+ FilterID add_filter ( in Filter new_filter );
+
+ /// Remove a filter
+ /**
+ * @param filter ID of the filter to be removed
+ * @throws FilterNotFound if the filter ID is not found in this
+ * FilterAdmin
+ */
+ void remove_filter ( in FilterID filter )
+ raises ( FilterNotFound );
+
+ /// Get a filter
+ /**
+ * @param filter ID of the filter returned
+ * @return The filter
+ * @throws FilterNotFound if the filter ID is not found in this
+ * FilterAdmin
+ */
+ Filter get_filter ( in FilterID filter )
+ raises ( FilterNotFound );
+
+ /// Get the IDs of all the filters
+ /**
+ * @return The list of all filter IDs in this component
+ */
+ FilterIDSeq get_all_filters();
+
+ /// Remove all the filters from this component
+ void remove_all_filters();
+ };
+};
+
+#pragma prefix ""
#endif /* _COS_NOTIFY_FILTER_IDL_ */
diff --git a/TAO/orbsvcs/orbsvcs/RtecBase.idl b/TAO/orbsvcs/orbsvcs/RtecBase.idl
index 9440dfb2480..0fe34dc3b6f 100644
--- a/TAO/orbsvcs/orbsvcs/RtecBase.idl
+++ b/TAO/orbsvcs/orbsvcs/RtecBase.idl
@@ -1,38 +1,75 @@
-// $Id$
+/**
+ * @file RtecBase.idl
+ *
+ * @brief Define the RtecBase module
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan <coryan@uci.edu>
+ */
#ifndef TAO_RTEC_BASE_IDL
#define TAO_RTEC_BASE_IDL
+/**
+ * @namespace RtecBase
+ *
+ * @brief Define types shared by the real-time scheduling and event
+ * services.
+ *
+ * These types are defined in a separate module to decouple the
+ * real-time event services from the scheduling service interface (and
+ * implementation!)
+ */
module RtecBase
{
- // Define the basic types shared between the scheduling service and
- // the event service.
- // They are on a separate file to decouple the real-time event
- // service from the scheduling service implementation.
-
+ /// Specify one-way or two-way call.
enum Dependency_Type_t
- // Specify one-way or two-way call.
{
ONE_WAY_CALL,
TWO_WAY_CALL
};
+ /// Provide a fast, low-footprint identifier for RT_Infos.
+ /**
+ * The Event and Scheduling Service need to communicate information
+ * about RT_Infos (descriptions about the scheduling properties of a
+ * simple operation). On a centralized application one would use
+ * pointers for such a task, but obviously that does not work on a
+ * distributed system.
+ * It is tempting to use object references to identify each RT_Info,
+ * but that does not work either: first the *contents* of the
+ * RT_Info must be transmitted between applications, and object
+ * references are not good identifiers (due to the semantics of
+ * _is_equivalent())
+ *
+ * The handle_t type is used to generate unique identifiers on the
+ * scheduling service, the Event Service can then refer to any
+ * RT_Info using either their name or the quicker handle_t.
+ */
typedef long handle_t;
- // RT_Info's are assigned per-application
- // unique identifiers.
+ /// Define dependencies between two RT_Infos
struct Dependency_Info
{
+ /// Type of dependency
Dependency_Type_t dependency_type;
+
+ /// Number of times the dependency is called
long number_of_calls;
+
+ /// Dependency
handle_t rt_info;
- // Notice the reference to the RT_Info we
- // depend on.
};
-
+
+ /// Helper typedef to define the OS priority.
typedef long OS_Priority;
- typedef long Preemption_Subpriority_t;
+
+ /// Helper typedef to define the OS-independent priority
typedef long Preemption_Priority_t;
+
+ /// Helper typedef to define the OS-independent sub-priority
+ typedef long Preemption_Subpriority_t;
};
#endif /* TAO_RTEC_BASE_IDL */
diff --git a/TAO/orbsvcs/orbsvcs/RtecDefaultEventData.idl b/TAO/orbsvcs/orbsvcs/RtecDefaultEventData.idl
index 5b80fc0d25d..65fbbbe3661 100644
--- a/TAO/orbsvcs/orbsvcs/RtecDefaultEventData.idl
+++ b/TAO/orbsvcs/orbsvcs/RtecDefaultEventData.idl
@@ -1,37 +1,76 @@
-//
-// $Id$
-//
+/**
+ * @file RtecDefaultEventData.idl
+ *
+ * @brief Define the RtecBase module
+ *
+ * $Id$
+ *
+ * TAO's Real-time Event Service is described in:
+ *
+ * http://doc.ece.uci.edu/~coryan/EC/
+ *
+ * @author Carlos O'Ryan <coryan@uci.edu>
+ */
-#ifndef TAO_RTEC_DEFAULTEVENTPAYLOAD_IDL
-#define TAO_RTEC_DEFAULTEVENTPAYLOAD_IDL
+#ifndef TAO_RTEC_DEFAULTEVENTDATA_IDL
+#define TAO_RTEC_DEFAULTEVENTDATA_IDL
#pragma prefix ""
+/// Define one of the common event payloads
typedef sequence<octet> EventPayload;
+
+/**
+ * @brief User defined Event Data
+ *
+ *
+ * This structure defines the default payload in TAO's Real-time Event
+ * Service.
+ *
+ * Users wanting maximum flexibility can use an Any, users that only
+ * have one type of event may use structures, other users may preffer
+ * union, trying to strike a balance between performance and
+ * flexibility. Users willing to implement their own marshalling may
+ * use a sequence of octets.
+ *
+ * The Event Service is completely transparent as to the contents of
+ * this structure.
+ */
struct RtecEventData
{
#ifndef TAO_LACKS_EVENT_CHANNEL_OCTET_SEQUENCE
+ /// Add padding to align the octet sequence contents
+ /**
+ * This fields ensures that the contents of the octet sequence
+ * following are always aligned to an 8-byte boundary.
+ * Such alignment allows application developers to implement custom
+ * demarshaling from the octet sequence without requiring any data
+ * copies.
+ *
+ * This is how this works:
+ * - The last field in the header is an 8-byte unsigned long, hence
+ the header finishes on an 8 byte boundary.
+ * - The pad1 long has 4 bytes.
+ * - The length in the octet sequence adds another 4 bytes.
+ * - Thus the data in the octet sequence starts on an 8 bytes
+ * boundary too.
+ */
long pad1;
- // This two objects ensure that the encapsulated stream below is
- // properly aligned; this makes the decoding of the payload more
- // efficient because we can use the usual demarshalling code
- // (without making extra copies).
- // This is how this works:
- // - The last field in the header is an 8-byte unsigned long, hence
- // the header finishes on an 8 byte boundary.
- // - The pad1 long has 4 bytes.
- // - The length in the octet sequence adds another 4 bytes.
- // - Thus the data in the octet sequence starts on an 8 bytes
- // boundary too.
+ /// Octet sequence payload.
+ /**
+ * This is the payload used more often by high-performance
+ * applications.
+ */
EventPayload payload;
#endif /* TAO_LACKS_EVENT_CHANNEL_OCTET_SEQUENCE */
#ifndef TAO_LACKS_EVENT_CHANNEL_ANY
+ /// Use a CORBA any type as payload.
any any_value;
#endif /* TAO_LACKS_EVENT_CHANNEL_ANY */
};
#pragma prefix ""
-#endif /* TAO_RTEC_DEFAULTEVENTPAYLOAD_IDL */
+#endif /* TAO_RTEC_DEFAULTEVENTDATA_IDL */
diff --git a/TAO/orbsvcs/orbsvcs/RtecEventChannelAdmin.idl b/TAO/orbsvcs/orbsvcs/RtecEventChannelAdmin.idl
index 9ca86c40db8..1a85199db46 100644
--- a/TAO/orbsvcs/orbsvcs/RtecEventChannelAdmin.idl
+++ b/TAO/orbsvcs/orbsvcs/RtecEventChannelAdmin.idl
@@ -1,4 +1,17 @@
-// $Id$
+/**
+ * @file RtecEventChannelAdmin.idl
+ *
+ * @brief Define the RtecEventChannelAdmin module
+ *
+ * $Id$
+ *
+ * TAO's Real-time Event Service is described in:
+ *
+ * http://doc.ece.uci.edu/~coryan/EC/
+ *
+ * @author Carlos O'Ryan <coryan@uci.edu>
+ * @author Tim Harrison <harrison@cs.wustl.edu>
+ */
#ifndef TAO_RTEC_EVENTCHANNELADMIN_IDL
#define TAO_RTEC_EVENTCHANNELADMIN_IDL
@@ -6,175 +19,375 @@
#include "RtecEventComm.idl"
#include "RtecBase.idl"
+/**
+ * @namespace RtecEventChannelAdmin
+ *
+ * @brief Interfaces and data structures provided by TAO's Real-time
+ * Event Service implementation
+ */
module RtecEventChannelAdmin
{
+ /**
+ * @exception AlreadyConnected
+ *
+ * @brief Exception raised if a consumer or supplier tries to
+ * reconnect even though it is connected already.
+ *
+ * In some configurations the Event Channel implementation allows
+ * reconnections, and treats them as changes in the QoS properties
+ * of the client. This exception is not used in those cases.
+ */
exception AlreadyConnected {};
- exception TypeError {};
+ /**
+ * @struct Dependency
+ *
+ * @brief Encapsulate the parameters of a consumer QoS property
+ *
+ * This structure is used to represent both filtering information
+ * and the QoS requirements that the consumer has for events that
+ * pass the filter.
+ *
+ * @todo It has become painfully obvious that we don't need a
+ * complete RtecEventComm::Event to declare the dependency, simply
+ * the EventHeader would do.
+ */
struct Dependency
{
+ /// The filtering information, usually takes the form of an event
+ /// type and/or source that the consumer is interested in.
RtecEventComm::Event event;
+
+ /// The handle to the RT_Info structure that describes the
+ /// behavior of the consumer upon receiving such an event
+ /**
+ * This handle is ignored for Event Channels configured without an
+ * scheduling service.
+ */
RtecBase::handle_t rt_info;
};
+
+ /// Define a list of consumer QoS properties
typedef sequence<Dependency> DependencySet;
+ /**
+ * @struct ConsumerQOS
+ *
+ * @brief Define the complete QoS properties of a consumer
+ *
+ * Consumers declared their QoS properties using a DependencySet and
+ * a special flag to indicate if they are a gateway consumer.
+ * Gateway consumers are ignored in the computation of changes to
+ * the subscription list.
+ */
struct ConsumerQOS
{
+ /// List of QoS, filtering, correlation and timeouts for this
+ /// consumer.
DependencySet dependencies;
+
+ /// If TRUE the consumer is a gateway, i.e., it forwards events
+ /// from a remote peer.
boolean is_gateway;
};
+ /**
+ * @struct Publication
+ *
+ * @brief Encapsulate one supplier publication and the QoS
+ * properties for that publication.
+ *
+ * Suppliers can publish multiple event types, each one with
+ * different QoS properties.
+ *
+ * @todo It has become painfully obvious that we don't need a
+ * complete RtecEventComm::Event to declare the publication, simply
+ * the EventHeader would do.
+ */
struct Publication
{
+ /// The event publication, normally only the event source and type
+ /// (from the header) is considered.
RtecEventComm::Event event;
+
+ /// The dependency information, this includes the RT_Info handle,
+ /// the type of request and other details.
+ /**
+ * This field is ignored by event channels configured without an
+ * scheduling service.
+ */
RtecBase::Dependency_Info dependency_info;
};
+
+ /// A list of Publication structures
typedef sequence<Publication> PublicationSet;
+ /**
+ * @struct SupplierQOS
+ *
+ * @brief Describe the complete QoS and filtering properties for a
+ * supplier
+ *
+ * Consumers declared their QoS properties and publications using a
+ * PublicationSet and a special flag to indicate if they are a
+ * gateway supplier.
+ * Gateway suppliers are ignored in the computation of changes to
+ * the publication list.
+ */
struct SupplierQOS
{
+ /// The publications
PublicationSet publications;
+
+ /// Set to TRUE if the supplier is a gateway.
boolean is_gateway;
};
- interface ProxyPushSupplier: RtecEventComm::PushSupplier
- {
- // = TITLE
- // The Proxy Supplier
- //
- // = DESCRIPTION
- // Consumers receive their events from objects of this type. See
- // the interfaces below to see how to gain access to an object
- // reference of this type.
-
- void connect_push_consumer(in RtecEventComm::PushConsumer push_consumer,
- in ConsumerQOS qos)
- raises(AlreadyConnected, TypeError);
- // Before receiving any events the consumer must provide its
- // publication list and QoS information to the Event Channel
- // through this method.
-
- void suspend_connection ();
- // Temporarly suspend reception of events from the Event
- // Channel. Calling this method is more efficient than dropping
- // them on the receiving end and less expensive than disconnecting
- // and connecting again (but it is not free!!)
-
- void resume_connection ();
- // Resume the reception of events.
- };
+ /**
+ * @exception TypeError
+ *
+ * @brief Obsolete exception
+ */
+ exception TypeError {};
+
+ /**
+ * @interface ProxyPushSupplier
+ *
+ * @brief Interface used to implement the Abstract Session pattern
+ * for the consumers
+ *
+ * Each consumer converse with the Event Channel via a different
+ * object that implements the ProxyPushSupplier interface. This is
+ * a common idiom in CORBA, as it allows the identification of the
+ * remove consumer quickly.
+ */
+ interface ProxyPushSupplier : RtecEventComm::PushSupplier
+ {
+ /// Connect a consumer with the Event Channel
+ /**
+ * The ConsumerQOS argument is used to setup the filtering and
+ * QoS properties of the consumer.
+ *
+ * @param push_consumer The consumer that will receive the events.
+ * @param qos The QoS properties for this consumer
+ * @throws CORBA::BAD_PARAM if push_consumer is nil
+ * @throws AlreadyConnected if this operation is invoked multiple
+ * times
+ * @todo The TypeError exception is not used and should be
+ * removed.
+ */
+ void connect_push_consumer(in RtecEventComm::PushConsumer push_consumer,
+ in ConsumerQOS qos)
+ raises(AlreadyConnected, TypeError);
- interface ProxyPushConsumer: RtecEventComm::PushConsumer
- {
- // = TITLE
- // The Proxy Consumer
- //
- // = DESCRIPTION
- // Suppliers push their events to objects of this type. See the
- // interfaces below to see how to gain access to an object
- // reference of this type.
-
- void connect_push_supplier (in RtecEventComm::PushSupplier push_supplier,
- in SupplierQOS qos)
- raises (AlreadyConnected);
- // Before pushing events the supplier must provide its
- // publication list and QoS information to the Event Channel
- // through this method.
+ /// Temporarly suspend reception of events from the Event
+ /// Channel.
+ /**
+ * Calling this method is more efficient than dropping the
+ * events when received by the consumer, and less expensive than
+ * disconnecting and connecting again (but it is not free!!)
+ */
+ void suspend_connection ();
+
+ /// Resume the reception of events.
+ void resume_connection ();
+
+#if 0
+ //@{
+ void checkpoint (in RtecEventComm::SequenceNumber last_received)
+ raises (Invalid_Checkpoint);
+ void resend_by_sequence (in RtecEventComm::SequenceNumber last_received)
+ raises (Invalid_Resend_Request);
+ void resend_by_date (in RtecEventComm::Time last_timestamp)
+ raises (Invalid_Resend_Request);
+ //@}
+#endif /* 0 */
};
- // @@ TODO: Find out the exception specs for the following interface's
- // methods.
+ /**
+ * @interface ProxyPushConsumer
+ *
+ * @brief Interface used to implement the Abstract Session pattern
+ * for the consumers.
+ *
+ * Each supplier converse with the Event Channel via a different
+ * object that implements the ProxyPushConsumer interface. This is
+ * a common idiom in CORBA, as it allows identification of the
+ * remote supplier quickly.
+ */
+ interface ProxyPushConsumer : RtecEventComm::PushConsumer
+ {
+ /// Connect a supplier with the Event Channel
+ /**
+ * @param push_supplier A callback interface, the
+ * disconnect_push_supplier operation is called when the Event
+ * Channel is destroyed.
+ * @param qos This argument is used to pre-compute filtering and
+ * QoS properties for the supplier.
+ *
+ * @throws CORBA::BAD_PARAM if the push_supplier argument is nil
+ * @throws AlreadyConnected if this operation is invoked multiple
+ * times.
+ */
+ void connect_push_supplier (in RtecEventComm::PushSupplier push_supplier,
+ in SupplierQOS qos)
+ raises (AlreadyConnected);
+ };
+
+ /**
+ * @interface ConsumerAdmin
+ *
+ * @brief Implement an Abstract Factory to create ProxyPushSupplier
+ * objects.
+ */
interface ConsumerAdmin
- {
- // = TITLE
- // The Supplier factory
- //
- // = DESCRIPTION
- // Consumers use this interface to create suppliers they can
- // connect to.
-
- ProxyPushSupplier obtain_push_supplier ();
- // Obtain a supplier
- };
+ {
+ /// Create a new ProxyPushSupplier object
+ /**
+ * There is an inherent risk of leaking a ProxyPushSupplier
+ * here, i.e. if the application does not call
+ * connect_push_consumer() at all. The Event Service may choose
+ * to reclaim ProxyPushSupplier objects that have been idle for
+ * too long.
+ */
+ ProxyPushSupplier obtain_push_supplier ();
+ };
+ /**
+ * @class SupplierAdmin
+ *
+ * @brief Implement an Abstract Factory to create ProxyPushSupplier
+ * objects.
+ */
interface SupplierAdmin
- {
- // = TITLE
- // The Consumer factory
- //
- // = DESCRIPTION
- // Suppliers use this interface to create consumers they can
- // connect to.
-
- ProxyPushConsumer obtain_push_consumer ();
- // Obtain a consumer
- };
+ {
+ /// Create a new ProxyPushConsumer object
+ /**
+ * There is an inherent risk of leaking a ProxyPushConsumer
+ * here, i.e. if the application does not call
+ * connect_push_supplier() at all. The Event Service may choose
+ * to reclaim ProxyPushConsumer objects that have been idle for
+ * too long.
+ */
+ ProxyPushConsumer obtain_push_consumer ();
+ };
+ /**
+ * @class Observer
+ *
+ * @brief Monitor changes in the consumer subscriptions and/or
+ * supplier publciations.
+ *
+ * The event channel reports changes in its internal subscription
+ * and/or publication list via this interface.
+ */
interface Observer
- {
- // = TITLE
- // Observes any changes in the consumer or supplier sets for an
- // Event Channel
- //
- // = DESCRIPTION
- // This object receives updates from Event Channels with any
- // changes on set of consumer and or suppliers registered with
- // the Event Channel.
-
- void update_consumer (in ConsumerQOS sub);
- // A change in the list of consumers has ocurred. The disjunction
- // of the subscriptions is passed to the observer.
-
- void update_supplier (in SupplierQOS pub);
- // A change in the list of suppliers has ocurred. The disjunction
- // of the publications is passed to the observer.
- };
+ {
+ /// A change in the list of consumers has ocurred.
+ /**
+ * The disjunctionof the subscriptions is sent to the
+ * observer.
+ */
+ void update_consumer (in ConsumerQOS sub);
+
+ /// A change in the list of suppliers has ocurred.
+ /**
+ * The list of all the event publicastions is passed to the
+ * observer.
+ */
+ void update_supplier (in SupplierQOS pub);
+ };
+ /// Opaque identifier for a connected Observer.
typedef unsigned long Observer_Handle;
- // This is used as an opaque ID to control the addition and removal
- // of handles from an event channel.
+ /**
+ * @class EventChannel
+ *
+ * @brief The main interface for the event service
+ *
+ * This class provides the main entry point for the Event Service.
+ * The class follows a protocol similar to the COS Events Service as
+ * described in the CORBAservices spec.
+ */
interface EventChannel
- {
- // = TITLE
- // The Event Channel class
- //
- // = DESCRIPTION
- // This class provides the main entry point for the Event
- // Channel. The class follows a protocol similar to the
- // COS Event Service as described in the CORBAservices spec.
- //
- exception SYNCHRONIZATION_ERROR {};
- exception QOS_ERROR {};
- exception SUBSCRIPTION_ERROR {};
- exception CORRELATION_ERROR {};
- exception DISPATCH_ERROR {};
- exception CANT_APPEND_OBSERVER {};
- exception CANT_REMOVE_OBSERVER {};
-
- ConsumerAdmin for_consumers ();
- // Consumers call this method to gain access to the
- // ProxyPushSupplier factory.
-
- SupplierAdmin for_suppliers ();
- // Suppliers call this method to gain access to the
- // ProxyPushConsumer factory.
-
- void destroy ();
- // This method shutdown the Event Channel, destroy any resources
- // for it and actually shutdown the server where the Event Channel
- // is running.
-
- Observer_Handle append_observer (in Observer gw)
- raises (SYNCHRONIZATION_ERROR,CANT_APPEND_OBSERVER);
- // Add a gateway to the Event Channel, the handle returned must be
- // used to remove the gateway from the ORB.
-
- void remove_observer (in Observer_Handle gw)
- raises (SYNCHRONIZATION_ERROR,CANT_REMOVE_OBSERVER);
- // Remove the observer.
- // @@ TODO: We should raise something if the handle is invalid.
- };
+ {
+ /**
+ * @exception SYNCHRONIZATION_ERROR
+ *
+ * @brief Exception raised if the Event Channel cannot acquire its
+ * internal locks.
+ */
+ exception SYNCHRONIZATION_ERROR {};
+
+ /**
+ * @exception CANT_APPEND_OBSERVER
+ *
+ * @brief Exception raised if the Event Channel is unable to add
+ * an observer due to some internal limitation.
+ */
+ exception CANT_APPEND_OBSERVER {};
+
+ /**
+ * @exception CANT_REMOVE_OBSERVER
+ *
+ * @brief Exception raised if the Event Channel is unable to remove
+ * an observer due to some internal limitation or because the
+ * observer cannot be found.
+ */
+ exception CANT_REMOVE_OBSERVER {};
+
+ //@{
+ /**
+ * @name Unused exceptions
+ *
+ * @todo The following exceptions are not declared in any raises()
+ * clause, therefore they cannot be raised! They should be
+ * removed or added to the right places.
+ */
+
+ /// Exception raised if the QOS properties required are invalid or
+ /// cannot be satisfied
+ exception QOS_ERROR {};
+
+ /// Exception raised if the subscriptions are invalid
+ exception SUBSCRIPTION_ERROR {};
+
+ /// Exception raised if the requested correlation (a form of
+ /// filtering) is invalid
+ exception CORRELATION_ERROR {};
+
+ /// Exception raised if the event cannot be dispatched
+ exception DISPATCH_ERROR {};
+ //@}
+
+ /// Consumers call this method to gain access to the
+ /// ProxyPushSupplier factory.
+ ConsumerAdmin for_consumers ();
+
+ /// Suppliers call this method to gain access to the
+ /// ProxyPushConsumer factory.
+ SupplierAdmin for_suppliers ();
+
+ /// Shuts down the Event Channel.
+ /**
+ * Calling this methods destroys the event service, all its
+ * resource and results in a call to disconnect_push_XXX() on all
+ * connected clients.
+ */
+ void destroy ();
+
+ /// Add an observer to the event channel.
+ /**
+ * Return the handle used in the remove_observer() call.
+ */
+ Observer_Handle append_observer (in Observer gw)
+ raises (SYNCHRONIZATION_ERROR,CANT_APPEND_OBSERVER);
+
+ /// Remove the observer.
+ void remove_observer (in Observer_Handle gw)
+ raises (SYNCHRONIZATION_ERROR,CANT_REMOVE_OBSERVER);
+ };
};
#endif /* TAO_RTEC_EVENTCHANNELADMIN_IDL */
diff --git a/TAO/orbsvcs/orbsvcs/RtecEventComm.idl b/TAO/orbsvcs/orbsvcs/RtecEventComm.idl
index f04ce0e2fc5..b23a71899de 100644
--- a/TAO/orbsvcs/orbsvcs/RtecEventComm.idl
+++ b/TAO/orbsvcs/orbsvcs/RtecEventComm.idl
@@ -1,5 +1,17 @@
-// $Id$
-
+/**
+ * @file RtecEventComm.idl
+ *
+ * @brief Define the RtecEventComm module
+ *
+ * $Id$
+ *
+ * TAO's Real-time Event Service is described in:
+ *
+ * http://doc.ece.uci.edu/~coryan/EC/
+ *
+ * @author Carlos O'Ryan <coryan@uci.edu>
+ * @author Tim Harrison <harrison@cs.wustl.edu>
+ */
#ifndef TAO_RTEC_EVENTCOMM_IDL
#define TAO_RTEC_EVENTCOMM_IDL
@@ -12,89 +24,152 @@
#include "RtecDefaultEventData.idl"
+/**
+ * @namespace RtecEventComm
+ *
+ * @brief Interfaces and data structures used by the event service
+ * clients
+ */
module RtecEventComm
{
- // = TITLE
- // User defined Event Data.
- //
- // = DESCRIPTION
- // The Event payload is defined by this type.
- // Users wanting maximum flexibility can use an Any,
- // users that only have one type of event may use structures,
- // other users may preffer union, trying to strike a balance
- // between performance and flexibility.
- // Users willing to implement their own marshalling may use a
- // sequence of octet.
-
+ /// The event data
typedef RtecEventData EventData;
+ /// Shortcut for the time structures.
typedef TimeBase::TimeT Time;
typedef long EventSourceID;
typedef long EventType;
+ /**
+ * @struct EventHeader
+ *
+ * @brief Define the structure of an event header
+ *
+ * The event header is the portion of the event examined by the
+ * event service for filtering purposes.
+ *
+ * Events can be filtered based on their type and SourceID, though
+ * the latest is a misnomer, over time it has evolved into a 'source
+ * class' or 'event domain' field, i.e. multiple sources can have
+ * the same 'ID' and the same source can generate events with
+ * different IDs.
+ */
struct EventHeader
{
- // = TITLE
- // The Event Header
- //
- // = DESCRIPTION
- // Each event carries some information to do filtering,
- // correlation, etc.
+ /// The event type.
+ /**
+ * Notice that the 'type' of the event may or may not be related
+ * to the data type in its contents. I.e. it is perfectly
+ * possible to send the same payload with different values in this
+ * field. In other words, this is just a filterable value, and
+ * it is up to the application to define (or not) its relation to
+ * the contents of the event.
+ */
EventType type;
- // The event type.
- // This may be different from the discriminator in the EventData
- // union above, the motivation is to allow filtering by data
- // contents: different event types are assigned to different data
- // contents though they use the same discriminator.
+ /// Some way to identify the supplier.
EventSourceID source;
- // Some way to identify the supplier.
+ /// The "Time To Live" counter.
+ /**
+ * Each time an EC process the event it decreases the TTL field,
+ * when it gets to zero the message is no longer forwarded.
+ */
long ttl;
- // The "Time To Live" count, each time an EC process the event it
- // decreases the TTL field, when it gets to zero the message is no
- // longer forwarded.
+ /// Applications can use this field to time-stamp the event at the
+ /// source.
+ /**
+ * @todo Because the filtering language uses EventHeaders as
+ * filtering expressions (yeah, it sucks) we also use this field
+ * to pass timeout values into the EC filter.
+ */
Time creation_time;
- // A time value, the name is a bit misleading, it is used for
- // timestamping but also used to setup timers in the consumer
- // subscriptions.
+
#ifndef TAO_LACKS_EVENT_CHANNEL_TIMESTAMPS
+ //@{
+ /** @name Benchmarking timestamps
+ *
+ * The following timestamps are used to benchmark the Event
+ * Channel, they should not be used by the application and may be
+ * removed without notice.
+ */
Time ec_recv_time;
Time ec_send_time;
- // Some timestamps, they actually belong in the payload, for some
- // kind of measument event.
+ //@}
#endif /* TAO_LACKS_EVENT_CHANNEL_TIMESTAMPS */
};
+ /**
+ * @struct Event
+ *
+ * @brief The basic events delivered by the Event Service.
+ *
+ * The event service uses this structure to pass events around.
+ */
struct Event
{
- // = TITLE
- // The Event structure.
- //
- // = DESCRIPTION
- // Events are represented by this structure, it is simply a
- // header,data pair.
- //
+ /// The header, used for filtering
EventHeader header;
+ /// The payload, the event service treats this as an opaque data
+ /// field.
EventData data;
- // The event payload.
};
+ /// The real argument to the push() operations.
+ /**
+ * For performance reasons TAO's Real-time Event Service uses
+ * sequences of events
+ */
typedef sequence<Event> EventSet;
+ /**
+ * @interface PushConsumer
+ *
+ * @brief Define the interface used by consumers to receive events.
+ *
+ * Applications usually implement this interface to subscribe for
+ * events.
+ */
interface PushConsumer
- {
- oneway void push (in EventSet data);
- void disconnect_push_consumer ();
- };
+ {
+ /// Main event delivery callback
+ oneway void push (in EventSet data);
+
+ /// Callback method to indicate a disconnection.
+ /**
+ * If the event service is destroyed while a consumer is still
+ * connected then the following callback operation is invoked on
+ * the consumer.
+ *
+ * The same operation is used by suppliers to disconnect from the
+ * Event Channel, but it is invoked via their
+ * RtecEventChannelAdmin::ProxyPushConsumer peer.
+ */
+ void disconnect_push_consumer ();
+ };
+ /**
+ * @interface PushSupplier
+ *
+ * @brief Defines the interface used by suppliers to receive
+ * callbacks from the Event Channel.
+ */
interface PushSupplier
- {
- void disconnect_push_supplier ();
- };
-
+ {
+ /// Callback method to indicate a disconnection.
+ /**
+ * If the event service is destroyed while a supplier is still
+ * connected then the following callback operation is invoked on
+ * the supplier.
+ *
+ * The same operation is used by consumers to disconnect from the
+ * Event Channel, but it is invoked via their
+ * RtecEventChannelAdmin::ProxyPushSupplier peer.
+ */
+ void disconnect_push_supplier ();
+ };
};
#endif /* TAO_RTEC_EVENTCOMM_IDL */
diff --git a/TAO/orbsvcs/orbsvcs/RtecUDPAdmin.idl b/TAO/orbsvcs/orbsvcs/RtecUDPAdmin.idl
index 68525f07d2d..b63f52fe9a2 100644
--- a/TAO/orbsvcs/orbsvcs/RtecUDPAdmin.idl
+++ b/TAO/orbsvcs/orbsvcs/RtecUDPAdmin.idl
@@ -1,33 +1,61 @@
-// $Id$
+/**
+ * @file RtecUDPAdmin.idl
+ *
+ * @brief Define the RtecUDPAdmin module
+ *
+ * $Id$
+ *
+ * TAO's Real-time Event Service is described in:
+ *
+ * http://doc.ece.uci.edu/~coryan/EC/
+ *
+ * @author Carlos O'Ryan <coryan@uci.edu>
+ */
#ifndef TAO_RTEC_UDP_ADMIN_IDL
#define TAO_RTEC_UDP_ADMIN_IDL
#include "RtecEventComm.idl"
-module RtecUDPAdmin
+/**
+ * @namespace RtecUDPAdmin
+ *
+ * @brief Define the data structures and interfaces used by UDP-based
+ * gateways
+ */
+module RtecUDPAdmin
{
- // = TITLE
- // Multicast Administration module
- //
- // = DESCRIPTION
- // When the EC is used as an interface to multicast communication
- // a mapping between event types and multicast addresses must be
- // stablished.
-
- struct UDP_Addr
+ /**
+ * @struct UDP_Addr
+ *
+ * @brief Represent a UDP SAP.
+ */
+ struct UDP_Addr
{
+ /// The IP address
unsigned long ipaddr;
+ /// The UDP port
unsigned short port;
};
- interface AddrServer
- {
- void get_addr (in RtecEventComm::EventHeader header,
- out UDP_Addr addr);
- // Get the addr and port given the event header.
- };
-
+ /**
+ * @interface AddrServer
+ *
+ * @brief Defines a interface to configure the mapping between
+ * events and multicast groups (or UDP broadcast or UDP unicast)
+ * addresses.
+ */
+ interface AddrServer
+ {
+ /// Get the UDP address give the event header
+ /**
+ * @param header The event header, used to fetch the type and
+ * source of the event
+ * @param addr Return the address used for the given event type
+ */
+ void get_addr (in RtecEventComm::EventHeader header,
+ out UDP_Addr addr);
+ };
};
#endif /* TAO_RTEC_UDP_ADMIN_IDL */