summaryrefslogtreecommitdiff
path: root/ACE/ChangeLog.BRANCH
blob: 2581e84427553a9bca8b2a2301749842277d909f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
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: