summaryrefslogtreecommitdiff
path: root/ChangeLog
diff options
context:
space:
mode:
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog504
1 files changed, 504 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 25774bc1677..27153e66826 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,507 @@
+Thu May 22 14:13:37 2003 Irfan Pyarali <irfan@oomworks.com>
+
+ * Merged Reactor_RefCount branch with the main truck since all ACE
+ level changes are now complete. New branch is
+ Reactor_RefCount_1.
+
+Tue May 20 18:33:07 2003 Irfan Pyarali <irfan@oomworks.com>
+
+ * ace/Connector:
+
+ Reverted the Connector to inherit from ACE_Service_Object again.
+ Even though the Connector no longer registers with the Reactor,
+ it still needs to inherit from ACE_Service_Object so that it can
+ be used through the Service Configurator primarily for dynamic
+ linking. The resume(), suspend(), and init() no-ops, and fini()
+ and info() were restated.
+
+Fri May 16 16:34:35 2003 Irfan Pyarali <irfan@oomworks.com>
+
+ * tests/MT_Reference_Counted_Event_Handler_Test.cpp:
+ * tests/Timer_Queue_Reference_Counting_Test.cpp (cancellation_test):
+
+ Fixed static array initialization warnings.
+
+Thu May 15 19:46:49 2003 Irfan Pyarali <irfan@oomworks.com>
+
+ * ACEXML/common/Mem_Map_Stream.cpp:
+ * apps/Gateway/Gateway/Connection_Handler_Connector.cpp:
+ * apps/Gateway/Peer/Peer.cpp:
+ * apps/JAWS/clients/Blobby/Blob.cpp:
+ * apps/JAWS/clients/Caching/http_handler.cpp:
+ * examples/ASX/Event_Server/Transceiver/transceiver.cpp:
+ * examples/Connection/blocking/SPIPE-connector.cpp:
+ * examples/Connection/misc/test_upipe.cpp:
+ * examples/Connection/non_blocking/test_lsock_connector.cpp:
+ * examples/Connection/non_blocking/test_sock_connector.cpp:
+ * examples/Connection/non_blocking/test_spipe_connector.cpp:
+ * examples/Connection/non_blocking/test_tli_connector.cpp:
+ * examples/Web_Crawler/URL_Visitor.cpp:
+ * netsvcs/lib/TS_Clerk_Handler.cpp:
+ * tests/Cached_Accept_Conn_Test.cpp:
+ * tests/Cached_Conn_Test.cpp:
+ * tests/Dev_Poll_Reactor_Test.cpp:
+ * tests/Priority_Reactor_Test.cpp:
+ * tests/Reactor_Performance_Test.cpp:
+ * tests/TP_Reactor_Test.cpp:
+ * tests/CLASSIX/CLASSIX_Con_Acc_Test.cpp:
+
+ Fixed Connector related template instantiations.
+
+Thu May 15 18:12:10 2003 Irfan Pyarali <irfan@oomworks.com>
+
+ * ace/WFMO_Reactor (find_handler):
+
+ Fixed minor oversights.
+
+ * ace/Timer_Hash_T.cpp:
+ * ace/Connector.cpp:
+
+ Fixed unused arg warnings.
+
+ * tests/MT_Reference_Counted_Event_Handler_Test.cpp:
+
+ - Added a Pipe class. It is a replica of the ACE_Pipe class.
+ Only difference is that this class always uses two sockets to
+ create the pipe, even on platforms that support pipes.
+
+ - Removed some test cases that don't work on Linux.
+
+ * tests/MT_Reference_Counted_Event_Handler_Test.cpp:
+ * tests/MT_Reference_Counted_Notify_Test.cpp:
+ * tests/Reference_Counted_Event_Handler_Test.cpp:
+ * tests/Reactor_Registration_Test.cpp:
+ * tests/Timer_Cancellation_Test.cpp:
+ * tests/Timer_Queue_Reference_Counting_Test.cpp:
+
+ - Fixed member ordering in constructors.
+ - Fixed unused arg warnings.
+
+Wed May 14 17:56:13 2003 Irfan Pyarali <irfan@oomworks.com>
+
+ * ace/OS.i:
+
+ - event_timedwait(): For relative times, the <timeout> parameter
+ was being modified. Instead use a stack variable such that the
+ <timeout> parameter is not modified.
+
+ * ace/Timer_Hash_T:
+
+ - expire(): Remove nodes from the buckets instead of simply
+ getting them and cancelling them later. Also, if timers were
+ expired, find the new earliest time.
+
+ - reschedule(): No need to cancel the timer node since it is now
+ removed from the bucket in expire().
+
+ - free_node(): No need for this function since nodes are removed
+ from the bucket in expire().
+
+ - cancel(): No need to pass <act> to bucket's cancel() since the
+ act comes from the Hash Token. Also, only perform upcall and
+ related cleanup on successful bucket cancel.
+
+ - Added asserts in the code since there is not enough error
+ checking (and recovery) going on.
+
+ * ace/Reactor:
+ * ace/Reactor_Impl:
+ * ace/Select_Reactor_T:
+ * ace/WFMO_Reactor:
+
+ Renamed handler() to find_handler() since ACE_HANDLE is an "int"
+ on UNIX platforms and that causes ambiguity between
+ handler(ACE_HANDLE) and handler(int).
+
+ * ace/Select_Reactor_Base.cpp (unbind):
+
+ unbind() and bind(): Minor fixes for UNIX specific code.
+
+ * ace/SOCK_SEQPACK_Association.cpp:
+
+ Added template instantiation for ACE_Auto_Array_Ptr<sockaddr_in>.
+
+ * ace/Connector.cpp:
+
+ cancel() and close(): Changed calls from Reactor::handler() to
+ Reactor::find_handler().
+
+ * tests/MT_Reference_Counted_Notify_Test.cpp:
+ * tests/NonBlocking_Conn_Test.cpp:
+ * tests/MT_Reference_Counted_Event_Handler_Test.cpp:
+ * tests/Reference_Counted_Event_Handler_Test.cpp:
+ * tests/Timer_Queue_Reference_Counting_Test.cpp:
+
+ Added template instantiations.
+
+ * tests/MT_Reference_Counted_Event_Handler_Test.cpp:
+
+ - main(): Added code to ingore SIGPIPE.
+
+ - test(): Converted this into template class so that multiple
+ instances of reactor implementation can be created.
+
+ - Added additional asserts.
+
+Fri May 09 20:13:37 2003 Irfan Pyarali <irfan@oomworks.com>
+
+ * ace\Event_Handler:
+
+ Added reference counting capabilities to the event handler.
+ This will be used for event handler memory management by
+ Reactors that will call add_reference() and remove_reference()
+ during registrations, removals, and upcalls (similar to the
+ protocol between servants and POAs).
+
+ Reference counting is configurable and can be controlled by the
+ Reference_Counting_Policy which is disabled by default.
+
+ Added a ACE_Event_Handler_var auto pointer like class for
+ Event Handlers. This class calls
+ ACE_Event_Handler::remove_reference() in its destructor.
+
+ Added reactor_timer_interface() method that returns the
+ Reactor's timer related interface.
+
+ * ace\Reactor_Timer_Interface.h:
+
+ Added a new class ACE_Reactor_Timer_Interface that contains
+ timer related (pure virtual) methods of the Reactor. This
+ allows us to make timer related calls on the Reactor from the
+ Timer Queue without having to include Reactor.h.
+
+ * ace\Reactor:
+
+ Vastly improved documentation, specially with respect to how the
+ reference counting works.
+
+ Made the Reactor class inherit from ACE_Reactor_Timer_Interface
+ so that timer related calls can be made on the Reactor from the
+ Timer Queue without having to include Reactor.h
+
+ * ace\Reactor:
+ * ace\Reactor_Impl:
+ * ace\Select_Reactor_T:
+ * ace\WFMO_Reactor:
+
+ Added a new find_handler() method that returns the event handler
+ associated with a <handle>.
+
+ * ace\Select_Reactor_Base.cpp:
+
+ - bind(): Make sure that the user is not registering a different
+ handler for an existing handle in the
+ Reactor_Handler_Repository. Also, if new entry, call
+ add_reference() if reference counting is needed.
+
+ - unbind(): Call remove_reference() if the removal is complete
+ and reference counting is needed. Also, Bala's change:
+
+ Mon Apr 7 16:58:55 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ is no longer necessary since handle_close() is now only called
+ once the Reactor state has been completely updated.
+
+ - mask_ops(): If the handle is not suspended, then set the ops
+ on the <wait_set_>, otherwise set the <suspend_set_>.
+
+ - handler_i(): Add to reference count of event handler before
+ returning to the user if reference counting is needed.
+
+ - ACE_Select_Reactor_Notify::dispatch_notify():
+ - ACE_Select_Reactor_Notify::purge_pending_notifications():
+ - ACE_Select_Reactor_Notify::notify():
+
+ Added reference counting for notifies.
+
+ * ace\Select_Reactor_T:
+
+ notify_handle(): Added reference counting to upcalls.
+
+ * ace\TP_Reactor:
+
+ - remove_handler(): All remove_handler() specializations can be
+ removed since there no longer is the requirement of calling
+ handle_close() from outside the Reactor lock.
+
+ - handle_timer_events(): Call preinvoke() and postinvoke() on
+ the timer queue so that timer upcalls can be reference counted.
+
+ - handle_socket_events(): Added reference counting to upcalls.
+
+ - mask_ops(): Specialization no longer necessary since the base
+ class now does the right thing.
+
+ * ace\WFMO_Reactor:
+
+ - handler(): Original handler() method was not locked.
+
+ - bind_i(): Call add_reference() if reference counting is
+ needed.
+
+ - make_changes_in_current_infos():
+ - make_changes_in_suspension_infos():
+ - make_changes_in_to_be_added_infos():
+
+ The iteration loop was incorrect. When an entry was replaced
+ from the one at the end, it newly shifted entry was skipped and
+ not evaluated. make_changes_in_to_be_added_infos() did not need
+ this change since entries are not moved around in the
+ <to_be_added_info_> set.
+
+ Also, call remove_reference() if reference counting if needed.
+
+ - complex_dispatch_handler(): Added reference counting to
+ upcalls.
+
+ - ACE_WFMO_Reactor_Notify::purge_pending_notifications():
+ - ACE_WFMO_Reactor_Notify::notify():
+ - ACE_WFMO_Reactor_Notify::handle_signal():
+
+ Added reference counting for notifies.
+
+ * ace\Timer_Queue_T:
+
+ - Not sure why we were including Test_and_Set.h when we only
+ needed to include Event_Handler.h.
+
+ - dispatch_info() and dispatch_info_i(): Made these virtual so
+ that they can be specialized.
+
+ - ACE_Timer_Node_Dispatch_Info_T: Added <recurring_timer_> so
+ that we can determine if we need to call remove_reference() if
+ it is not a recurring timer and if reference counting is
+ required. This value is passed to the timeout() method of the
+ upcall functor.
+
+ - timeout(): When handle_timeout() returns -1, invoke
+ cancel_timer() on the reactor if the event handler has a valid
+ reactor, otherwise invoke cancel() on the timer queue. It is
+ necessary to get the same locking as was used when registering
+ the timer, which was potentially done holding the reactor lock
+ while the timer queue could have configured with a null lock.
+
+ - schedule(): No longer a pure virtual method. It now grabs
+ the lock, call schedule_i(), and finally calls registration() on
+ the upcall functor.
+
+ - registration(): This method is called when a timer is
+ registered.
+
+ - preinvoke(): Invokes add_reference() on the event handler if
+ reference counting is required before making the upcall.
+
+ - upcall(): Changed the signature to pass
+ ACE_Timer_Node_Dispatch_Info_T instead of the individual
+ parameters.
+
+ - postinvoke(): Invokes remove_reference() on the event handler
+ if reference counting is required after making the upcall.
+
+ - cancellation(): Added <dont_call> parameter to this method.
+
+ - expire(): Call preinvoke() before calling upcall() and
+ postinvoke() after calling upcall().
+
+ - deletion(): Now calls cancellation().
+
+ * ace\Timer_List_T:
+ * ace\Timer_Wheel_T:
+ * ace\Timer_Heap_T:
+ * ace\Timer_Hash_T:
+
+ - schedule_i(): This method replaces the old schedule() method.
+ Locking is not necessary anymore.
+
+ - cancel(): Irrespective of the number of times (including zero)
+ the event handler was registered, cancel_i() was always called
+ once. This makes it very hard to do proper lifetime management
+ of the handler. The new semantics calls cancel_i() for each
+ registeration of the handler.
+
+ - cancel_i(): Always call cancellation() on the upcall functor.
+ The <skip_close> check will be performed in the upcall functor.
+
+ * ace\Timer_Heap_T:
+
+ - ~ACE_Timer_Heap_T(): Don't use <cur_size_> for the for loop
+ since it reduces after free_node() is called.
+
+ - cancel(): Not sure why this is the only cancel() where the
+ upcall is made outside the lock.
+
+ * ace\Timer_Wheel_T:
+
+ - expire(): Made this method similar to Timer_Queue_T::expire()
+ by (a) invoking preinvoke() before calling upcall() and invoking
+ postinvoke() after calling upcall() and (b) making sure that we
+ skip past time values that have already "expired" when
+ rescheduling.
+
+ * ace\Timer_Hash_T:
+
+ - ACE_Timer_Hash_Upcall: Updated this upcall functor to match
+ the new APIs.
+
+ - ACE_Timer_Hash_Upcall::registration():
+ - ACE_Timer_Hash_Upcall::cancellation():
+
+ Nothing to be done here since registration will be handled by
+ the upcall functor of the timer hash.
+
+ - ACE_Timer_Hash_Upcall::preinvoke():
+ - ACE_Timer_Hash_Upcall::postinvoke():
+ - ACE_Timer_Hash_Upcall::preinvoke():
+
+ Assert that these methods never get invoked since we don't
+ invoke expire() on the buckets.
+
+ - ACE_Timer_Hash_Upcall::deletion(): Call up to the upcall
+ functor of the timer hash since the timer hash does not invoke
+ deletion() on its upcall functor directly. This is because
+ entries are actually registered with the buckets, and this
+ method will be invoked when the buckets are cleaned up.
+
+ - Hash_Token: Added TYPE information to the token. This
+ required templatizing Hash_Token since TYPE is a template
+ parameter.
+
+ - reschedule(): Cancel the old timer before registering the new
+ one. Otherwise, the old timer will always remain in the
+ buckets. Also, make sure that the new bucket position is noted.
+
+ - dispatch_info_i(): This method needs to be specialized to give
+ the original act and not the modified act.
+
+ - free_node(): Needs to cancel the timer in addition to freeing
+ the node.
+
+ - expire(): Only call cancel() for timers that don't need to be
+ rescheduled. reschedule() take care of removing the old timer
+ for timers that need to be rescheduled. Also, made this method
+ similar to Timer_Queue_T::expire() by invoking preinvoke()
+ before calling upcall() and invoking postinvoke() after calling
+ upcall().
+
+ * ace\Proactor:
+
+ Updated ACE_Proactor_Handle_Timeout_Upcall upcall functor to
+ match the new APIs.
+
+ * ace\Connector:
+
+ Completely reworked the Connector to utilize the reference
+ counting provided by the Reactor. This new design fixes bugs
+ 1405 and 1408.
+
+ - There used to be a hash map that mapped handles to service
+ handlers. There is no need for this map since the Reactor
+ already keeps this mapping. We now keep a simple handle set to
+ remember the non-blocking connects in progress. This will help
+ when the Connector is closing down and we need to cancel the
+ non-blocking connections in progress.
+
+ - The Connector no longer needs to inherit from
+ ACE_Service_Object since it does not register with the Reactor.
+ We now use ACE_NonBlocking_Connect_Handler for handling
+ non-blocking connects. The resume(), suspend(), and init()
+ no-ops, and fini() and info() were removed.
+
+ - The <mutex_> is no longer needed since we use the Reactor lock
+ to do all our sychronization. This will solve bug 1408.
+
+ - We no longer need the <closing_> flag.
+
+ - Need to add a <reactor_> field since the Connector is no
+ longer an event handler.
+
+ - Reference counting of ASTs is no longer needed since event
+ handlers are reference counted.
+
+ * tests\Reference_Counted_Event_Handler_Test:
+
+ This test is used to check reference counting of the Event
+ Handler when it interacts with the Reactor.
+
+ * tests\MT_Reference_Counted_Event_Handler_Test:
+
+ This test tries to represents what happens in the ORB wrt to
+ event handlers, reactors, timer queues, threads, and connection
+ caches, minus the other complexities. The following three
+ Reactors are tested: Select, TP, and WFMO.
+
+ The test checks proper use and shutting down of client-side
+ event handlers when it is used by invocation threads and/or
+ event loop threads. Server-side event handlers are either
+ threaded or reactive. A purger thread is introduced to check the
+ connection recycling and cache purging. Nested upcalls are also
+ tested.
+
+ * tests\MT_Reference_Counted_Notify_Test:
+
+ This test is used to check reference counting of the event
+ handlers when it interacts with the reactor notification
+ mechanism.
+
+ * tests\Timer_Queue_Reference_Counting_Test:
+
+ New test is used to check reference counting of the Event
+ Handler when it interacts with Timer Queues.
+
+ * tests\NonBlocking_Conn_Test:
+
+ This test checks for the proper working of the following:
+ - blocking connections
+ - blocking connections with timeouts
+ - non-blocking connections
+ - non-blocking connections without waiting for completions
+ - non-blocking connections with timeouts
+
+ * tests\Reactor_Registration_Test:
+
+ This is a test of registering handlers with the Reactor.
+
+ * tests\WFMO_Reactor_Test:
+
+ New test of the WFMO_Reactor. It makes sure that removals and
+ suspensions work correctly.
+
+ * tests\Timer_Cancellation_Test:
+
+ A test to ensure the timer cancellation works correctly.
+
+ * tests\Makefile:
+ * tests\Makefile.am:
+ * tests\Makefile.bor:
+ * tests\icc.bat:
+ * tests\run_test.lst:
+ * tests\run_tests.bat:
+ * tests\run_tests.psosim:
+ * tests\tests.icp:
+ * tests\tests.mpc:
+ * tests\tests.dsw:
+
+ Added new tests:
+
+ - MT_Reference_Counted_Event_Handler_Test
+ - MT_Reference_Counted_Notify_Test
+ - NonBlocking_Conn_Test
+ - Reactor_Registration_Test
+ - Reference_Counted_Event_Handler_Test
+ - Timer_Cancellation_Test
+ - Timer_Queue_Reference_Counting_Test
+ - WFMO_Reactor_Test
+
+ * tests\Conn_Test.cpp:
+
+ Updated template instantiations.
+
+ * tests\icc.bat:
+ * tests\run_tests.bat:
+ * tests\run_tests.psosim:
+
+ Removed these files since they have become obsolete.
+
Thu May 22 10:53:43 2003 Chad Elliott <elliott_c@ociweb.com>
* bin/MakeProjectCreator/modules/TemplateParser.pm: