diff options
Diffstat (limited to 'ACE/ChangeLog.BRANCH')
-rw-r--r-- | ACE/ChangeLog.BRANCH | 380 |
1 files changed, 380 insertions, 0 deletions
diff --git a/ACE/ChangeLog.BRANCH b/ACE/ChangeLog.BRANCH new file mode 100644 index 00000000000..2581e844275 --- /dev/null +++ b/ACE/ChangeLog.BRANCH @@ -0,0 +1,380 @@ + Mon Dec 05 10:26:00 UTC 2011 Martin Corino <mcorino@remedy.nl> + + * ace/Time_Policy.inl + + Prevent setting delegate to null pointer. + + Sun Dec 04 15:40:00 UTC 2011 Martin Corino <mcorino@remedy.nl> + + * ace/Countdown_Time.cpp: + * ace/Countdown_Time.inl: + + Renamed to *_T.* + + * ace/Countdown_Time.h + * ace/Countdown_Time_T.cpp + * ace/Countdown_Time_T.h + * ace/Countdown_Time_T.inl + + Changed ACE_Countdown_Time to TIME_POLICY based + template class ACE_Countdown_Time_T, + Created typedef for default template instantiation + as ACE_Countdown_Time. + + * ace/Time_Policy.cpp + * ace/Time_Policy.h + * ace/Time_Policy.inl + * ace/Time_Policy_T.cpp + * ace/Time_Policy_T.h + * ace/Time_Policy_T.inl + + Added support for dynamically loadable/shared time + policies. + + * ace/ace.mpc + + Updated for file changes. + + Fri Dec 02 11:48:00 UTC 2011 Martin Corino <mcorino@remedy.nl> + + * ace/Timer_Queue_T.h: + * ace/Timer_Queue_T.inl: + + Reverting set_time_policy() change. Interpretation error. + + Thu Dec 01 17:52:00 UTC 2011 Martin Corino <mcorino@remedy.nl> + + * ace/Time_Policy.h: + * ace/Time_Policy.inl: + + Added ACE_HR_Time_Policy. + + * ace/Timer_Queue_T.h: + * ace/Timer_Queue_T.inl: + + Replaced set_time_policy() by get_time_policy() since setting + the policy is not possible but configuring might be. + + Thu Dec 01 14:05:00 UTC 2011 Martin Corino <mcorino@remedy.nl> + + * ace/Proactor.cpp: + * ace/Timer_Queue_T.cpp: + * ace/Timer_Queue_T.h: + + Fixed compile errors. + + Thu Dec 01 13:34:00 UTC 2011 Martin Corino <mcorino@remedy.nl> + + * ace/Timer_Hash_T.cpp: + * ace/Timer_Hash_T.h: + * ace/Timer_Heap_T.h: + * ace/Timer_Wheel_T.h: + + Small cleanup to prevent potential compiler warnings. + + Mon Aug 24 02:27:36 UTC 2009 Carlos O'Ryan <coryan@glamdring> + + * ace/Timer_Queue_T.cpp: + Need to release the internal timer queue lock before dispatching + calls in expire_single(), otherwise we get nasty deadlocks in + the TP_Reactor implementation. + + Thu Jul 2 02:55:09 UTC 2009 Carlos O'Ryan <coryan@glamdring> + + * ace/Abstract_Timer_Queue.h: + * ace/Timer_Queue_T.h: + * ace/Timer_Queue_T.inl: + * ace/Timer_Queue_T.cpp: + I wanted to use gettimeofday() for the pure virtual function and + some other name for the inline function used in the timer queue + internals. + This is the second and final pass to get that change in. This + time, I renamed the internal function to gettimeofday_static(), + used the compiler (and grep) to find all uses. Once that + compiled I renamed the virtual function from + gettimeofday_abstract() to the gettimeofday() function. + I know it is convoluted, but it gets the job done without me + having to think too much. + + * ace/Timer_Hash_T.h: + * ace/Timer_Hash_T.cpp: + * ace/Select_Reactor_T.cpp: + * ace/Dev_Poll_Reactor.cpp: + * ace/Proactor.cpp: + * ace/Timer_Queue_Adapters.cpp: + * tests/Timer_Queue_Reference_Counting_Test.cpp: + * tests/Timer_Queue_Test.cpp: + * examples/APG/Timers/Timers.cpp: + * examples/APG/Timers/TimerDispatcher.cpp: + * examples/C++NPv2/Logging_Event_Handler_Ex.cpp: + Fixed users and tests to use the real name for gettimeofday() in + ACE_Abstract_Timer_Queue<> + + Wed Jul 1 02:09:44 UTC 2009 Carlos O'Ryan <coryan@glamdring> + + * ace/ace.mpc: + * ace/Makefile.am: + * ace/Event_Handler_Handle_Timeout_Upcall.h: + * ace/Event_Handler_Handle_Timeout_Upcall.inl: + * ace/Event_Handler_Handle_Timeout_Upcall.cpp: + First I noticed that this class did not depend on the lock type + at all, this was fortunate because I wanted to use it in a + generic way. So, change the class from a template class to a + regular class. That required moving the class to its own file too. + + * ace/Timer_List_T.h: + * ace/Timer_List_T.cpp: + * ace/Timer_Wheel_T.h: + * ace/Timer_Wheel_T.cpp: + * ace/Timer_Hash_T.h: + * ace/Timer_Hash_T.cpp: + * ace/Timer_Heap_T.h: + * ace/Timer_Heap_T.cpp: + Fixed several inconsistencies across these classes, for example, + most of them had typedef as a shorthand for the base class, but + the name of this typedef was not consistent. + Likewise, not all of the classes made the TIME_POLICY parameter + a default template parameter. + + * ace/Timer_Queue_T.h: + * ace/Timer_Queue_T.inl: + * ace/Timer_Queue_T.cpp: + Introduced an intermediate class between Abstract_Timer_Queue<> + and Timer_Queue_T<>. This is ugly, but the Proactor "needs" to + set a back-pointer from the FUNCTOR to the Proacter instance + whenever a timer queue is assigned to the Proactor. + This code smells funny. Either the API is wrong (the Proactor + should always create the functor with the backpointer,) or the + need for the back pointer is suspicious (I think there is a + thread in the Proactor that signals timers, but maybe it should + be contained in the Upcall object itself?) + The more I look here, the uglier the smell. + + * ace/Select_Reactor_T.cpp: + * ace/Timer_Queue_Adapters.cpp: + * tests/Timer_Queue_Reference_Counting_Test.cpp: + * tests/Timer_Queue_Test.cpp: + As a temporary measure, I appended "_abstract" to the + gettimeofday() function name in Abstract_Timer_Queue<>. + Shortly, I will change the Timer_Queue_T<> class to use + gettimeofday_non_virtual() or _static() or something similar. + Had to make the change in two steps to find all the uses of the + original function. + There was probably an easier/cleaner way to do this. + + * tests/Timer_Queue_Test.cpp: + Take advantage of the new ACE_Abstract_Timer_Queue<> to make the + different types of queues more compatible in ths test, including + queues with different time source policies. + + * ace/Proactor.h: + As with the Reactive version, I noticed that + ACE_Proactor_Handle_Timeout_Upcall did not depend on its + template parameter, so I changed the class to a non-template + version. + + * ace/Proactor.cpp: + Instead of making the Proactor a friend of the Timer_Handler + task, expose a safe interface to do what the proactor wants to + do. + The proactor needed access to timer queue internal details to + implement schedule(), but the reactor did not... hmmm... well, + turns out the Reactor had nicely refactor that work to the + upcall functor. So I did the same in the Proactor case. + + + * ace/Timer_List.h: + * ace/Timer_Wheel.h: + * ace/Timer_Hash.h: + * ace/Timer_Heap.h: + Use Event_Handler_Handle_Timeout_Upcall without the template + parameter. + + * ace/Abstract_Timer_Queue.h: + Remove the setter for getimeofday(), this is implemented by the + TIME_POLICY template parameter in Timer_Queue_T<> + + * tests/Reactor_Timer_Test.cpp: + * tests/Network_Adapters_Test.cpp: + * tests/Proactor_Timer_Test.cpp: + Use a different idiom to set the time policy for this test. + + * examples/Timer_Queue/Thread_Timer_Queue_Test.h: + * examples/Bounded_Packet_Relay/Thread_Bounded_Packet_Relay.h: + * examples/APG/Timers/Timers.cpp: + * examples/APG/Timers/TimerDispatcher.cpp: + * examples/Reactor/Misc/test_timer_queue.cpp: + * examples/C++NPv2/Logging_Event_Handler_Ex.cpp: + Need an additional #include for ACE_Event_Handler_Handle_Timeout + Said class class is no longer a template class, so use it + correctly. + Changed name of gettimeofday() in timer queue to + gettimeofday_abstract() This is a temporary change to find all + the uses, will revert again soon. + + * Merged in changes from bug-3607 branch. + + * ace/ace.mpc: + * ace/Abstract_Timer_Queue.h: + * ace/Abstract_Timer_Queue.cpp: + * ace/Timer_Queue_Iterator.h: + * ace/Timer_Queue_Iterator.inl: + * ace/Timer_Queue_Iterator.cpp: + * ace/Timer_Queuefwd.h: + * ace/Timer_Queue.h: + * ace/Timer_Queue_T.h: + * ace/Timer_Queue_T.inl: + * ace/Timer_Queue_T.cpp: + * ace/Timer_List_T.h: + * ace/Timer_List_T.cpp: + * ace/Timer_Wheel_T.h: + * ace/Timer_Wheel_T.cpp: + * ace/Timer_Hash_T.h: + * ace/Timer_Hash_T.cpp: + * ace/Timer_Heap_T.h: + * ace/Timer_Heap_T.cpp: + Heavy refactoring in ACE_Timer_Queue_T class and friends. + First, created a template base class (ACE_Abstract_Timer_Queue) that: + 1) Only depends on the type held by the timer queue, not to lock + or upcall strategy. + 2) It is a pure abstract class, i.e., none of its member + functions have any implementation. + 3) Provides new pure virtual functions to encapsulates some + logic that was spread between tests, TP_Reactor and + Dev_Poll_Reactor. + Then I re-wrote all the standard timer queue objects in terms of + this class. In particular, the reactors use only the abstract + interface. + I also re-factored the Timer_Queue_Iterator to only depend on + the type of objects held by the timer queue. The rest of the + parameters where not used either. + Implement functionality that was spread in Dev_Poll_Reactor, + TP_Reactor and a test into expire_single. + + * ace/Proactor.h: + * ace/TP_Reactor.cpp: + * ace/Dev_Poll_Reactor.cpp: + Both classes implemented the logic to dispatch a single timer + but release a mutex before the upcall. This was confusing as + well as required exposing too much detail about the Timer_Queue + classes. + The new mechanism is a single function in (expire_single) + ACE_Abstract_Timer_Queue<> (implemented in ACE_Timer_Queue_T<>) + which receives a command object to encapsulate the mutex release. + + * ace/Functor.h: + * ace/Functor.cpp: + * ace/Functor_T.h: + * ace/Functor_T.inl: + Add helper ACE_Command_* objects. One is a no-op, for the test + below. The other is a callback that ignores the silly void* + argument in the ACE_Command_Base::execute() member function. + + * tests/Timer_Queue_Reference_Counting_Test.cpp: + Re-factored test in terms of expire_single() + + Tue Jun 30 01:10:04 UTC 2009 Carlos O'Ryan <coryan@glamdring> + + * This is a temporary commit into the 3707 branch. I realized too + late that the changes from 3706 will be needed to make this work. + + * ace/ace.mpc: + * ace/Time_Policy.h: + * ace/Time_Policy.inl: + * ace/Time_Policy.cpp: + New classes to encapsulate how "now" is computed in the Timer + Queues. This will be an additional template parameter, so the + default configuration has zero overhead. + + * ace/Timer_Queuefwd.h: + * ace/Timer_List.h: + * ace/Timer_List_T.h: + * ace/Timer_List_T.cpp: + * ace/Timer_Queue_T.h: + * ace/Timer_Queue_T.inl: + * ace/Timer_Queue_T.cpp: + * ace/Timer_Wheel.h: + * ace/Timer_Wheel_T.h: + * ace/Timer_Wheel_T.cpp: + * ace/Timer_Hash.h: + * ace/Timer_Hash_T.h: + * ace/Timer_Hash_T.cpp: + * ace/Timer_Heap.h: + * ace/Timer_Heap_T.h: + * ace/Timer_Heap_T.cpp: + Re-factor timer queue classes to use new TIMER_POLICY + parameter. + + * tests/Timer_Queue_Test.cpp: + Modify test to use TIMER_POLICY. But here is the rub, the test + does not compile because all timer queue types are "different" + to each other. I need to introduce the base class from the + bug-3706 branch to make things work. + + Sun Jun 28 22:15:47 UTC 2009 Carlos O'Ryan <coryan@glamdring> + + * ace/ace.mpc: + * ace/Abstract_Timer_Queue.h: + * ace/Abstract_Timer_Queue.cpp: + * ace/Timer_Queue_Iterator.h: + * ace/Timer_Queue_Iterator.inl: + * ace/Timer_Queue_Iterator.cpp: + * ace/Timer_Queuefwd.h: + * ace/Timer_Queue.h: + * ace/Timer_Queue_T.h: + * ace/Timer_Queue_T.inl: + * ace/Timer_Queue_T.cpp: + * ace/Timer_List_T.h: + * ace/Timer_List_T.cpp: + * ace/Timer_Wheel_T.h: + * ace/Timer_Wheel_T.cpp: + * ace/Timer_Hash_T.h: + * ace/Timer_Hash_T.cpp: + * ace/Timer_Heap_T.h: + * ace/Timer_Heap_T.cpp: + Heavy refactoring in ACE_Timer_Queue_T class and friends. + First, created a template base class (ACE_Abstract_Timer_Queue) that: + 1) Only depends on the type held by the timer queue, not to lock + or upcall strategy. + 2) It is a pure abstract class, i.e., none of its member + functions have any implementation. + 3) Provides new pure virtual functions to encapsulates some + logic that was spread between tests, TP_Reactor and + Dev_Poll_Reactor. + Then I re-wrote all the standard timer queue objects in terms of + this class. In particular, the reactors use only the abstract + interface. + I also re-factored the Timer_Queue_Iterator to only depend on + the type of objects held by the timer queue. The rest of the + parameters where not used either. + Implement functionality that was spread in Dev_Poll_Reactor, + TP_Reactor and a test into expire_single. + + * ace/Proactor.h: + * ace/TP_Reactor.cpp: + * ace/Dev_Poll_Reactor.cpp: + Both classes implemented the logic to dispatch a single timer + but release a mutex before the upcall. This was confusing as + well as required exposing too much detail about the Timer_Queue + classes. + The new mechanism is a single function in (expire_single) + ACE_Abstract_Timer_Queue<> (implemented in ACE_Timer_Queue_T<>) + which receives a command object to encapsulate the mutex release. + + * ace/Functor.h: + * ace/Functor.cpp: + * ace/Functor_T.h: + * ace/Functor_T.inl: + Add helper ACE_Command_* objects. One is a no-op, for the test + below. The other is a callback that ignores the silly void* + argument in the ACE_Command_Base::execute() member function. + + * tests/Timer_Queue_Reference_Counting_Test.cpp: + Re-factored test in terms of expire_single() + + +Local Variables: +mode: change-log +add-log-time-format: (lambda () (progn (setq tz (getenv "TZ")) (set-time-zone-rule "UTC") (setq time (format-time-string "%a %b %e %H:%M:%S %Z %Y" (current-time))) (set-time-zone-rule tz) time)) +indent-tabs-mode: nil +End: |