1 Tue Dec 31 18:27:50 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3 * ace/Log_Msg.cpp (log): Added a test so that if we're
4 (1) not printing to stderr and (2) aborting the program we still
5 print a message to stderr.
7 * ace/Message_Block: Added synchronization support to
8 ACE_Message_Block. This is necessary now that we've got
9 reference counting to ensure that we don't have race conditions
10 when incrementing and decrementing the reference count in
11 separate threads. The approach is very clean and uses the new
12 ACE_Lock mechanism to conditionally acquire()/release() the
13 locking strategy if concurrency control is necessary.
15 * ace/Synch_T: Created a new set of ACE_Lock and
16 ACE_Lock_Adapter<> classes which are similar in spirit to the
17 ACE_Allocator and ACE_Allocator_Adapter<> classes. These make
18 it possible to treat polymorphically synchronization mechanisms
19 in ACE polymorphically, *without* creating an entire new
20 parallel hierarchy of locking mechanisms.
22 * ace/Synch: Added the full suite of acquire_{read|write}() and
23 tryacquire_{read|write}() methods to ACE_Semaphore and
24 ACE_Process_Semaphore so they will be consist with the other
27 Tue Dec 31 00:11:56 1996 Douglas C. Schmidt <schmidt@flamenco.cs.wustl.edu>
29 * Changed all uses of ACE_Event_Handler::RWE_MASK to
30 ACE_Event_Handler::ALL_EVENTS_MASK to reflect the fact that
31 we will soon have more than READ, WRITE, and EXCEPT events.
32 However, I've kept RWE_MASK around for backwards
35 * examples/ASX/Message_Queue: Changed the tests so that they use
36 the new ACE_Message_Block::release() method rather than calling
39 * apps/Gateway: Revised the implementation of the Gateway and Peer
40 applications to take advantage of the new ACE_Message_Block
41 reference counting scheme.
43 Tue Dec 31 15:06:51 1996 David L. Levine <levine@cs.wustl.edu>
45 * ace/Task.cpp: added comments that try to explain interaction
46 between ACE_Task_Base::svc_run () and ACE_Task_Exit instance
48 * ace/Hi_Res_Timer.h: added comment to print_total () saying it
49 should only be used for incremental timings; added defaults to
50 a few print_ave/print_total args
52 * ace/Hi_Res_Timer.{i,cpp}: inlined the constructor; trimmed output
53 if count is 1; rounded instead of truncated usecs portion of time
55 Mon Dec 30 15:24:59 1996 Douglas C. Schmidt <schmidt@flamenco.cs.wustl.edu>
57 * ace/Message_Block: Added reference counting to ACE_Message_Block
58 so that we no longer have to clone() messages when we want to
59 pass them around "by reference."
61 * apps/Gateway/Peer/Peer.cpp (init): The Peer_Acceptor had gotten
62 out of date wrt newer ACE features, so I updated it.
64 Mon Dec 30 15:24:59 1996 Douglas C. Schmidt <schmidt@flamenco.cs.wustl.edu>
66 * ace/OS.h: Added a special case for ACE_UNUSED_ARG that works
67 with G++. Thanks to David Levine for this.
69 Mon Dec 30 16:05:11 1996 David L. Levine <levine@cs.wustl.edu>
71 * ace/OS.cpp (ace_thread_adapter): Updated ACE_TRACE arg
72 names (even though they're currently commented out).
74 * ace/Task.cpp (svc_run): If TSS isn't supported, and on
75 Linux, for now, create the ACE_Task_Exit exit_hook instance
76 on the stack so that it's destructor will be called when
79 Sun Dec 29 18:38:03 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
81 * apps/Gateway/Gateway/File_Parser.h: Removed the endofline()
82 method declaration -- it doesn't seem to be defined anywhere.
84 * ace/OS.h: Added an ACE_INT32 to complement the ACE_UINT32.
86 * netsvcs/lib: Cleaned up all the ACE network services by removing
87 their SIGINT signal handler. This was interferring with the
88 main event loop's ability to shutdown...
90 * apps/Gateway/Gateway: Once again changed the name of
91 *IO_Handler* to *Proxy_Handler* since these things are really
92 proxies, in the COS sense!
94 * ace/Service_Record.cpp: Tidied up the implementation of
95 ACE_Module_Type::fini() so that it doesn't try to call fini() on
96 NULL pointers. Also, rather than explicitly deleting the reader
97 and writer Tasks, we call ACE_Module<>::close(), which knows how
98 to take care of all this stuff.
100 * ace/Module.cpp: Added an extra parameter to close_i() so that we
101 can correctly pass the value of "flags" from close() in order to
102 prevent deleting tasks when we don't want to do this.
104 * ace/Module.cpp: There was a bug in the open() method
105 since we were potentially deleting reader_q and writer_q twice
106 if memory allocation failed.
108 Sat Dec 28 19:02:13 1996 Douglas C. Schmidt <schmidt@flamenco.cs.wustl.edu>
110 * ace/ACE.cpp: Changed the implementation of ldfind() so that it
111 doesn't try to add the DLL prefix (e.g., "lib") unless it
112 doesn't match filename. This is necessary to keep lots
113 of existing svc.conf files from breaking.
115 * ace/Event_Handler.h: Added a new ACCEPT_MASK for use with the
116 new asynchronous accept() operation support for Win32.
118 * ace: Added a new config file for WinNT 4.0 called
119 config-winnt-4.0-msvc4.x.h. This file contains #defines for new
120 features in WinNT 4.0 such as non-blocking acquire for
121 CRITICALSECTIONs (TryEnterCriticalSection()),
122 SignalObjectAndWait(), and CancelIO(). Oddly enough, these
123 functions seem to be missing from the MSVC++ 4.2 #include files,
124 so I added them to the config file.
126 * ace: Changed the name of config-win32-msvc4.0.h to
127 config-win32-msvc4.x.h since this config file works for MSVC++
130 * ace/Proactor: Added a new "cancel_io" method on the Proactor.
131 This makes it possible to cancel all I/O that is outstanding on
132 a thread. Thanks to Tim for help with this.
134 Sat Dec 28 23:49:09 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu>
136 * ace/ReactorEx.h: Fixed some bugs with ACE_ReactorEx::dispatch.
137 For instance, the index should only be incremented when handlers
140 * ace/OS.i: Fixed some typos regarding the ACE_cond_t for NT.
142 * examples/Reactor/Proactor/test_proactor.cpp: Dr. Schmidt and I
143 hacked this to be way cool. In particular, we no longer
144 have to know the size of the files to be transferred in
145 advance. This scheme uses a clever protocol that shuts down
146 the Peer Handler when (1) all input from the file has arrived,
147 (2) all output to the remote peer handler has been sent, and (3)
148 all input from the remote peer handler has been received.
149 The Peer Handler now uses calls close_writer on the stream
150 to notify the remote peer when its done writing. The Input
151 File Handler sends an mb==0 to tell the Peer Handler when
152 it's done reading from the file. The Peer Handle uses a
153 state variable to OR in all the different conditions for
156 Fri Dec 27 23:39:19 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
158 * ace/Stream.cpp (pop): Modified the code so that we don't delete
159 the Module we are popping unless the flags request this.
161 * ace/Service_Record.cpp (fini): Always make sure to first fini()
162 each Module, then remove() (and delete) them.
164 * ace/Stream.cpp (remove): Updated the code so that we don't
165 delete the Module unless the flags request this.
167 Thu Dec 26 18:51:22 1996 David L. Levine <levine@cs.wustl.edu>
169 * ace/config-linux-lxpthreads.h: Has James CE Johnson's
170 latest adjustments to this config file.
172 Tue Dec 24 10:55:20 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
174 * ace/OS.cpp (ace_thread_adapter): Changed the message that is
175 printed if we exit the thread. Thanks to Luca for this
178 Tue Dec 24 15:38:43 1996 David L. Levine <levine@cs.wustl.edu>
180 * ace/OS.i (cond_destroy): added call to event_destroy ()
181 for waiters_done_ on WTHREADS platforms
183 * ace/Future.cpp: added specialization of
184 template class ACE_Atomic_Op<ACE_Thread_Mutex, int>;
185 so that libACE is self-contained with respect to template
186 instantiations (with g++, for example)
188 * ace/Malloc.cpp: added specialization of
189 template class ACE_Atomic_Op<ACE_PROCESS_MUTEX, int>;
190 so that libACE is self-contained with respect to template
191 instantiations (with g++, for example)
193 * examples/Reactor/Misc/test_reactors.cpp,
194 examples/Threads/future1.cpp, examples/Threads/future2.cpp,
195 examples/Threads/manual_event.cpp, examples/Threads/task_two.cpp,
196 performance-tests/Synch-Benchmarks/Benchmark.cpp,
197 tests/Future_Test.cpp, tests/Reactors_Test.cpp: instantiate
198 ACE_Atomic_Op with int instead of u_long so that it can use
199 the specialization in libACE
201 Tue Dec 24 12:49:21 1996 David L. Levine <levine@cs.wustl.edu>
203 * ace/OS.h (struct siginfo_t): added declaration of
204 siginfo_t (ACE_HANDLE *handles) to match definition in
205 OS.cpp. Thanks to James Johnson for pointing this out.
207 * ace/OS.cpp (thr_create): fixed position of
208 #endif /* !ACE_LACKS_THREAD_STACK_SIZE */ directive, it
209 needed to be before the closing '}' of the block. Thanks to
210 James Johnson for pointing this out, also.
212 * ace/OS.cpp: don't include ace/ARGV.h except on WIN32 because
213 it's only needed there, and don't compile ACE_Thread_Adapter on
214 VxWorks to save space
216 * apps/Gateway/Peer/Gateway_Handler.h: changed #include "Event.h"
217 to be #include "Peer_Message.h" so that Peer_Header::ROUTING_ID
218 can be referenced in the class declaration. This subproject
219 still doesn't build, though; I think that Event.h is needed.
221 * ace/OS.h (struct ACE_cond_t): declare waiters_done_ as
222 ACE_sema_t on VxWorks only, to avoid recursive struct
223 definition with ACE_event_t
225 * ace/OS.i (ACE_OS::cond_*): on VxWorks only, use sema
226 operations on ACE_cond_t::waiters_done_ instead of event ops
228 Tue Dec 24 10:55:20 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
230 * examples/Threads/task_three.cpp (main): Changed the use of
231 new-style C++ casts for ACE_Sig_Action to old-style C casts so
232 that more picky compilers like GCC won't complain. Thanks to
233 Sandro Doro <alex@aureus.sublink.org> for reporting this.
235 * examples/Threads/task_two.cpp: Fixed a typo where int should be
236 used as the type for ACE_Atomic_Op rather than u_long. Thanks
237 to David Levine for noticing this.
239 * ace/OS.i: Generalized the implementation of ACE_OS::cond_wait()
240 so that it will work with Win32 and VxWorks. Thanks to David
241 Levine for pointing this out.
243 * ace/Synch_T.cpp: Removed ACE_Process_Condition since it isn't
244 really feasible to implement this as a template. At some point,
245 it should be reimplemnted as a non-template that is only
246 guaranteed to work on Solaris and some POSIX pthreads platforms.
248 Sun Dec 22 21:23:57 1996 David L. Levine <levine@cs.wustl.edu>
250 * ace/Acceptor.cpp: replaced two statements that looked like this:
251 "ptr && ptr->foo ()" with "if (ptr) ptr-> foo()" to prevent
252 compiler warnings about computed values that aren't used
254 * netsvcs/clients/Tokens/manual/manual.cpp: added explicit "int"
255 return type to declaration of handle_exception (ACE_HANDLE) so
256 that compilers don't complain about no type
258 * ASX/Event_Server/Event_Server/Options.cpp,
259 ASX/UPIPE_Event_Server/Options.cpp: rearranged initializers
260 in Options ctor to match declaration order
262 Sun Dec 22 21:16:23 1996 Douglas C. Schmidt <schmidt@mambo.cs.wustl.edu>
264 * ace/OS.cpp (thr_create): added a new ACE_HAS_PTHREADS_XAVIER to
265 deal with the sparam.sched_priority features of the Linux
266 pthreads implementation. Thanks to James Johnson for this.
268 * ace/OS.i (thr_setprio): I forgot to define int policy = 0;
270 * ace/SV_Semaphore_Simple.i: Removed the frigging LUSED macro and
271 updated the ACE_SV_Semaphore_Simple::name_2_key() method to
272 consider *all* the characters in the name. This will help avoid
273 nasty bugs when different lock names have a common prefix.
275 * ace/Local_Name_Space_T.cpp (ACE_Local_Name_Space): Added a call
276 to "delete this->lock_" since we now allocate it dynamically.
278 * apps/Gateway/Gateway/gatewayd.cpp: Changed call to
279 ACE_SVC_INVOKE from ACE_Gateway to Gateway.
281 * ace/OS.i: In function thr_sigsetmask changed the line:
283 #if defined (ACE_HAS_IRIX62_THREADS)
287 #if defined (ACE_HAS_IRIX62_THREADS) || defined (ACE_HAS_PTHREADS_XAVIER)
289 Thanks to James CE Johnson <jcej@lads.com> for this.
291 * ace/config-linux-[lx]pthreads.h: Added a #define for the
292 ACE_HAS_THREAD_SPECIFIC_STORAGE symbol. Thanks to James CE
293 Johnson <jcej@lads.com> for this.
295 * ace: created a new config file called config-linux-lxpthreads.h.
296 This contains the ACE #defines necessary to use L. Xavier's
297 threading package on Linux. Thanks to James CE Johnson
298 <jcej@lads.com> for this.
300 * build/gcc/ace/Synch: Moved the definition of the ACE_*Event
301 classes *outside* of ACE_HAS_THREADS so that the Proactor will
302 compile correctly even when there's no threading defined.
304 * ace/config-linux-pthread.h: Added #define ACE_MT_SAFE, which
305 seems to have been missing. Thanks to James Johnson for
308 * tests/TSS_Test.cpp: Now that we've got Chris Lahey's fixes for
309 AIX we can run this test on AIX.
311 * ace/OS.cpp (thr_create): Added a #ifdef for
312 pthread_attr_setstacksize() for Linux pthreads, which doesn't
313 seem to support this. Thanks to James CE Johnson
314 <jcej@lads.com> for this fix.
316 * ace/OS.i: Added DCE pthreads fixes for OSF/1 3.2. Thanks to
317 Harry Gunnarsson <hg@carmenta.se> for these.
319 Sat Dec 21 13:54:45 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
321 * ace/Synch_T: Integrated a solution that will allow MVS to use
322 ACE_TSS. The problem is that the MVS C++ compiler requires an
323 extern "C" destructor function for pthread_key_delete and the
324 ACE_TSS stuff uses a paramatized C++ destructor function
325 (ACE_TSS<TYPE>::cleanup). To solve this, a new class
326 (ACE_TSS_Adapter) was created that encapsulates a thread
327 specific object and it's associated C++ destructor. The ACE_TSS
328 methods were then modified so that they provide access to the
329 thread specific object through the ACE_TSS_Adapter. Also added
330 a generic extern "C" cleanup routine that takes an
331 ACE_TSS_Adapter as an argument. It then calls the adapters
332 cleanup method passing it the saved address of the thread
333 specific object. Thanks to Chuck Gehr <gehr@sweng.stortek.com>
336 * ace/OS: Updated the code so that it will work with MFC and
337 AfxBeginThread(). Thanks to Detlef for these changes.
339 * ace/README: Added two new #defines for ACE_LACKS_COND_T and
340 ACE_LACKS_RWLOCK_T to make it possible to define these in a
341 fine-grained manner for various platforms.
343 * ace/OS.h: Restructured the ACE_HAS_THREADS section so that we
344 factor out the code for ACE_cond_t and ACE_rwlock_t so that it
345 is only defined if we don't support these features natively.
347 * ace/ReactorEx: Added a new "alertable" parameter to the
348 handle_events() method. If alertable is true, then
349 WaitForMultipleObjectsEx is used as the demultiplexing call,
350 otherwise WaitForMultipleObjects is used.
352 * ace/Signal.cpp: Had to move a few things around so that the code
353 would compile for HP/UX. Thanks to Neil B. Cohen
354 <nbc@metsci.com> for reporting this.
356 * ace/Acceptor.cpp: Updated the handle_close() method so that the
357 Acceptor shuts down the listen socket and prevents handle leaks.
358 Thanks to Irfan for reporting this.
360 Thu Dec 19th 03:48:26 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu>
362 * ace/Local_Name_Space_T.cpp: Made sure that the mutexes are
363 getting named properly (both the mutex owned by the
364 Local_Name_space and the lock owned by the backing
365 store). For the time being I named these two to be the
366 extensions of the backing store file name.
368 * ace/Local_Name_Space_T.cpp: Replaced the create_manager code
369 such that we use the double check pattern. This is simpiler
370 and easy to understand compared to the current code.
372 * ace/Naming_Context.cpp: Gave the database name a default value.
374 * ace/Malloc_T.cpp: The lock_name should never be 0. This will
375 cause all instances of the same pool to get different
378 Sat Dec 21 09:43:35 1996 David L. Levine <levine@cs.wustl.edu>
380 * ace/OS.{h,i}: fixes for VxWorks introduced in 4.1, and for
381 inlining: moved #include of OS.i after #defines but before
384 Thu Dec 19 15:58:09 1996 David L. Levine <levine@cs.wustl.edu>
386 * ace/config-vxworks*.h, include/makeinclude/platform_vxworks*.GNU:
387 enable inlining on VxWorks by default
389 Wed Dec 18 16:44:47 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu>
391 * ace/Proactor.cpp (dispatch): Changed this method to take an
392 int error parameter to set errno just before dispatching.
393 This allows us to better propagate overlapped I/O errors to the
396 Wed Dec 18 16:21:36 1996 David L. Levine <levine@cs.wustl.edu>
398 * ace/OS.{h,i} and ace/INET_Addr.cpp: more VxWorks
399 gethostbyname () tweaks
401 Wed Dec 18 15:24:13 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu>
403 * ace/Proactor.cpp (ACE_Proactor): Initialize completion_port_ to
404 0. This is the only way that CreateIoCompletionPort works
405 first time in. ACE_INVALID_HANDLE makes it break.
407 * (ACE_Proactor): Added a call to CreateIoCompletionPort in the
408 constructor so that GetQueuedCompletionStatus can be called
409 before ACE_Proactor::initiate is called. This is necessary if
410 an application is using the Proactor as a timer mechanism only.
412 Tue Dec 18 7:58:07 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu>
414 * ace/Proactor.i (get_handle): Changed this to return
415 ACE_INVALID_HANDLE on non Win32 platforms. Also changed
416 shared_event_ from an ACE_Manual_Event to an ACE_Auto_Event.
417 This allows us to remove the call to reset from handle_signal.
419 * examples/Reactor/Proactor/test_timeout.cpp: Added a new example
420 application to the Proactor example suite. Check the README for
423 * examples/Reactor/ReactorEx/test_timeout.cpp: Added a new example
424 application to the ReactorEx example suite. Check the README for
427 * ace/Service_Config.cpp: Fixed a bug in run_reactorEx_event_loop
428 (ACE_Time_Value &) so that it doesn't return on timeout.
430 Tue Dec 18 7:06:32 1996 <harrison@samba.cs.wustl.edu>
432 * ace/Proactor.cpp (handle_events): Once again removed the
433 timer_skew_ code. Changed the ACE_HANDLE global_handle_ to
434 ACE_Manual_Event shared_event_. Added a constructor that takes
435 an ACE_Timer_Queue *. Changed the implementation to use an
436 ACE_OS::sleep if only timers are registered. We need to figure
437 out a better approach than the sleep.
439 * ace/Service_Config.cpp (run_proactor_event_loop): Changed this
440 to only return when an error occurs. If handle_events returns a
441 0, then a timeout occurred, and we can continue to dispatch
442 events. We only return when all of the time has expired.
444 * ace/Registry_Name_Space.h (ACE_Registry_Name_Space): Moved the
445 include statements below the ACE_WIN32 and UNICODE directives.
447 * ace/OS.h (siginfo_t): Added siginfo_t (ACE_HANDLE *handle)
448 constructor prototype.
450 Wed Dec 18 06:37:22 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
452 * ace/OS.i (cond_wait): Added the new algorithm for condition
453 variable emulation on Win32. (and VxWorks). This should fix the
454 nasty problems we had with earlier version (which weren't
455 "fair"). Thanks to James Mansion, Karlheinz, Detlef, and Irfan
456 for helping with this.
458 * ace/Registry.h: Removed the "ACE_TURN_NOMINMAX_OFF" stuff
459 in order to simplify the code. Thanks to Irfan for this.
461 * ace/OS.i (sema_post): Added a new overloaded version of
462 ACE_OS::sema_post(), which takes a "release count." This is the
463 number of times to release the semaphore. Note that Win32
464 supports this natively, whereas on POSIX we need to loop...
466 * ace/Proactor.cpp (handle_events): Changed the Proactor logic so
467 that it will correctly propagate any errors that occur to the
468 handle_{input,output}_complete callback.
470 Tue Dec 17 20:56:56 1996 David L. Levine <levine@cs.wustl.edu>
472 * ace/OS.{h,i}: on VxWorks: implemented ACE_OS::gethostbyname (),
473 and fixed inet_ntoa () to return -1 on failure
475 * ace/OS.cpp: in ::spa () for VxWorks, zero out unused argv[]
476 slots to overwrite args from previous invocations OS.cpp
478 Tue Dec 17 04:27:07 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
480 * ace/ReactorEx: Added a new feature to the ReactorEx. If we
481 enable the wait_all flag when calling
482 ACE_ReactorEx::handle_events() *and* we give an
483 ACE_Event_Handler (this is a new final param to the call) then
484 the handle_signal() call will be invoked on this
485 "wait_all_callback" object when all the handles become signaled.
486 Moreover, we pass in the array of signaled handled to through
487 the siginfo_t parameter (see the following ChangeLog entry for
488 details). If there is no wait_all_callback param, then all the
489 handle_signal() methods are invoked on all the handles.
491 * ace/OS.h (siginfo_t): Augmented the siginfo_t interface so that
492 we can pass an array of signaled Win32 HANDLEs, in addition to
493 just a single HANDLE. This is used in the ReactorEx.
495 * examples/Reactor/ReactorEx/test_reactorEx.cpp: Added a number of
496 enhancements to this test program based on discussions with
497 Irfan, Karlheinz, Dieter, and Detlef.
499 * ace/Task_T.i (msg_queue): If we override the existing definition
500 of the Message_Queue in an ACE_Task then we need to delete the
501 existing Message_queue (if necessary and mark the Message_Queue
502 as no longer being a candidate for deletion (since we have
503 supplied our own definition). Irfan had added this earlier, but
504 it seemed to get lost...
506 * examples/Reactor/Proactor/test_proactor.cpp: The class called
507 STDIN_HANDLEr is misnamed since we don't read from stdin, we
508 read from a file. Therefore, I've changed this to be
511 * examples/Reactor/ReactorEx/test_{proactor,reactorEx}.cpp:
512 Changed misspellings of transfered to transferred.
514 * ace/Memory_Pool.cpp (ACE_MMAP_Memory_Pool): Since NT doesn't support
515 SIGSEGV thre's no point in even trying to register for this
518 * ace/OS.i: Reverted some lost UNICODE fixes -- thanks to Irfan
521 * ace/Local_Name_Space_T.cpp (create_manager_i): Removed a
522 debug statement since it may be causing problems with printing
525 Mon Dec 16 11:25:55 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
527 * ace/OS.i (cuserid): Fixed the definition to ACE_OS::cuserid() so
528 that it uses LPTSTR. Thanks to Irfan for this fix.
530 * ace/Task.cpp (activate): In ACE_Task::activate() there is a possibility to actually
531 "reactivate" the task using the <force_activate> flag. The following
532 illustrates that ability:
534 if (this->thr_count_ > 0 && force_active == 0)
535 return 1; // Already active.
537 this->thr_count_ = n_threads;
539 The thing is that, when the task is running and we reactivate it
540 (actually we add threads) the command should be:
542 this->thr_count_ += n_threads;
546 this->thr_count_ = n_threads;
548 That way <this->thr_count_> holds the new number of threads currently
549 associated with the task. Thanks to Hamual for this fix.
551 * ace/OS.i (inet_aton): Placed the return 1 within the curly
552 braces to make the HP/UX compiler happy. Thanks to Kenny Want
555 Mon Dec 16 12:56:43 1996 David L. Levine <levine@cs.wustl.edu>
557 * ace/OS.i: removed spurious "*/" after an #endif. Thanks to
558 Harry Gunnarsson <hg@carmenta.se> for reporting this.
560 * ace/Svc_Conf_l.cpp: #ifdef'ed out ace_yyunput () and
561 ace_yy_{push,pop,top}_state () because they're not used,
562 and commented out a few "break"s after "return"s in switch
563 statements to prevent compiler warnings.
565 * ace/Typed_SV_Message.i: reordered initializations in ctor to
566 match declaration order.
568 * examples/Threads/Makefile, performance-tests/Misc/Makefile,
570 Removed "LIBS += -lm" from these Makefiles because it doesn't
571 appear to be necessary, and not all platforms have a libm.
573 * include/makeinclude/platform_sunos4_g++.GNU, platform_sunos5_g++.GNU,
574 platform_sunos5_x86_g++.GNU, platform_unixware_g++.GNU:
575 added -lm to LIBS because it was removed from the Makefiles, and
576 it's needed with g++.
578 * netsvcs/lib/Makefile: removed /pkg/gnu/lib dependencies. Thanks
579 to Per Andersson <Per.Andersson@hfera.ericsson.se> for pointing
582 * netsvcs/servers/svc.conf: changed _make_ACE_Logger() to
583 _make_ACE_Logging_Strategy() svc.conf. Thanks to Per Andersson
584 <Per.Andersson@hfera.ericsson.se> for reporting this.
586 Sun Dec 15 13:01:17 1996 David L. Levine <levine@cs.wustl.edu>
588 * ace/Naming_Context.cpp: reordered initializations in default ctor
589 to match declaration order.
591 * ace/Svc_Conf_y.cpp: added parens to a couple of combined
592 assignments/conditionals to avoid compiler warnings.
594 * include/makeinclude/platform_sunos5_sunc++*.GNU: reverted
595 SOLINK step back to creating real .so files, because it
596 seems to be necessary, sometimes, for template instantiation.
598 * netsvcs/lib/Server_Logging_Handler.cpp: removed ACE_INLINE's.
600 * tests/MM_Shared_Memory_Test.cpp: declare shm_key as char[]
601 instead of char *, so that the string gets put into the data
602 segment rather than the text segment. The string gets modified,
603 which causes a core dump with the g++/SunOS5.5 build if the string
604 is in the text segment.
606 Sun Dec 15 10:29:20 1996 Douglas C. Schmidt <schmidt@flamenco.cs.wustl.edu>
608 * netsvcs/servers/svc.conf: Removed the "lib" prefix for the
609 netsvcs DLL. This is now added automatically by the
610 ACE::ldfind() operation.
612 * ace/SString.cpp (ACE_CString): Removed the #pragmas for Win32.
613 They aren't necessary since we should replace the ACE_USHORT16
614 cast with a char cast. Thanks to Amos Shapira <amos@dsi.co.il>
617 Sat Dec 14 14:25:38 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
619 * build/SunOS5.5/tests/UPIPE_SAP_Test.cpp (main): Fixed several
620 minor bugs with UPIPE_SAP_Test.cpp.
622 * ace/OS.i (thr_join): Added implementations for Solaris threads
623 and most versions of POSIX pthreads where ACE_hthread_t and
624 ACE_thread_t are the same type!
626 * ace/OS: Began adding hooks so that we can eventually move away
627 from the current split between ACE_thread_t and ACE_hthread_t
628 and unify them via ACE_Thread_ID.
630 * ace/{OS,Thread}.h: Changed the interface of thr_getprio() so
631 that it takes an int & rather than an int *.
633 * ace/OS.i (thr_getprio): Fixed a minor bug for Win32 where we
634 weren't depositing the thread priority into the return value!
636 * Makefile: Changed the order in which things are built so that
637 netsvcs are built right after libACE, followed by the tests.
639 Sat Dec 14 11:54:22 1996 Douglas C. Schmidt <schmidt@flamenco.cs.wustl.edu>
641 * apps/Gateway/Gateway/Consumer_Map: Change the Consumer_Map class
642 so that it was no longer templatized. There isn't any point in
643 doing this since we aren't going to be changing these types for
646 * apps/Gateway/Gateway: Factored out the code for selecting the
647 concurrency strategy into a separate *.h file called
648 Concurrency_Strategy.h.
650 * apps/Gateway/Gateway: Began revising the Gateway application to
651 use the new ACE Event Channel.
653 * ace/Svc_Handler: Now that we've got put() and svc() with no-op
654 defaults in class ACE_Task_Base, we don't need them in
655 ACE_Svc_Handler anymore, so I removed them!
657 * ace/Task: Finally got sick of having to provide no-op
658 open()/put()/close() routines in all ACE_Task subclasses, so I
659 changed these methods from pure virtual to virtual with default
660 no-op behavior. Updated all the tests, as well.
662 Sat Dec 14 11:39:15 1996 David L. Levine <levine@cs.wustl.edu>
664 * ace/{Module,Stream,Svc_Handler,Synch_T,Task_T}.cpp and Synch_T.i:
665 removed ACE_INLINE qualifier from functions in .cpp files; in
666 the case of Synch_T, moved ACE_INLINE functions from .cpp to .i file
668 * apps/Gateway/Gateway/Routing_Table.cpp,
669 examples/ASX/Event_Server/Event_Server/Peer_Router.cpp,
670 examples/ASX/UPIPE_Event_Server/Peer_Router.cpp:
671 removed ACE_INLINEs from .cpp files
673 * ace/CORBA_Handler.h and ace/Token_Collection.{h,cpp}:
674 changed __INLINE__ to __ACE_INLINE__
676 * ace/Svc_Conf_y.cpp: commented out unused arguments to
677 suppress compiler complaints
679 Fri Dec 13 22:07:11 1996 David L. Levine <levine@cs.wustl.edu>
681 * include/makeinclude/platform_sunos5_sunc++*.GNU: replaced
682 SOLINK step in build of shared objects for SunOS5 with SunC++
683 with symlink from .so to .o file.
685 * ace/config-vxworks*.h: added ACE_NEEDS_SYSTIME_H to VxWorks
686 configs because it's needed with inlining
688 * include/makeinclude/platform_vxworks*.GNU: cleaned up VxWorks
691 Fri Dec 13 00:53:34 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
693 * ace: Replaced all uses of
695 #if defined (.....) // ....
699 #if defined (.....) /* ... */
701 so that broken C++ compilers won't complain. Thanks to
702 John Cosby <John.D.Cosby@cpmx.saic.com> for reporting this.
704 * ace/Thread.i: Updated the signature of getprio() and setprio()
705 so that they take ACE_hthread_t. Thanks to Wayne Vucenic
706 <wvucenic@netgate.net> for finding this.
708 * Reran all the tests on NT and Solaris. Everything seems to
709 work. Therefore, incremented the version number to 4.1 and put
710 it out for ftp and http.
712 Thu Dec 12 18:51:04 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
714 * tests/Priority_Task_Test.cpp (svc): Added a new test to exercise
715 the new "priority" feature of ACE_OS::thr_create()
716 (which is also available to ACE_Task).
718 * ace/Thread: Added getprio() and setprio() methods to ACE_Thread.
720 Fri Dec 13 13:44:12 1996 David L. Levine <levine@cs.wustl.edu>
722 * ace/config-vxworks*.h: added ACE_NEEDS_SYSTIME_H to VxWorks
723 configs because it's needed with inlining
725 * include/makeinclude/platform_vxworks*.GNU: cleaned up VxWorks
728 Thu Dec 12 18:51:04 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
730 * ace: Added a new macro called ACE_UNUSED_ARG() to keep
731 the compiler from outputting warnings about unused
732 arguments. So far, this is mostly done for Win32, but it
733 should be easy to do it for other compilers. Thanks
734 to Matthias for these changes.
736 * ace/OS.cpp: Added support so that thread priorities will
737 automatically be set when we spawn threads using
738 ACE_OS::thr_create().
740 * ace/OS.cpp: Simplified the logic for handling NULL thr_handles
741 and thr_ids. Now, we set all this stuff in one place at the
742 beginning of the function, rather than recomputing it all over
745 * ace/config-aix-{3.2.5,4.1.x}.h: Added the
746 ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS flag.
748 * ace/Thread_Manager.cpp (ACE_Thread_Control): Conditionally
749 compiled the logic for calling this->exit() in the destructor
750 for ACE_Thread_Control so that we only make this call if
751 ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS is *not* set. This will
752 prevent infinite recursion on platforms like AIX. Thanks to
753 Chris Lahey for reporting this.
755 * apps/Gateway/Gateway/Channel.cpp (recv_peer): Added the logic
756 that makes sure we don't get screwed up by partial headers.
757 Thanks to Chris Cleeland for this.
759 Thu Dec 12 20:55:02 1996 David L. Levine <levine@cs.wustl.edu>
761 * include/makeinclude/platform_sunos5_sunc++*.GNU: removed
762 SOLINK step in build of shared objects for SunOS5 with SunC++:
765 Thu Dec 12 03:48:26 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu>
767 * ace/Naming_Context: Modified ACE_Naming such that on Win32, you
768 can use ACE_Registry_Name_Space.
770 * ace/Registry_Name_Space: ACE_Registry_Name_Space is a Name_Space
771 which uses ACE_Registry as the persistence mechanism. Win32
772 clients of ACE_Naming can now start using (the more robust and
773 reliable) Registry persistence without any major code changes.
775 * tests/Naming_Test.cpp: Added the use of Registry_Name_Space to
776 the test if we are on Win32 and UNICODE is turned on.
778 * examples/Registry: Fixed UNICODE behavior of the tests
780 Wed Dec 11 20:33:28 1996 Douglas C. Schmidt <schmidt@lindy.cs.wustl.edu>
782 * ace/Synch_T.h: Added a warning that indicates why it isn't
783 possible to use ACE_Process_Condition<ACE_Process_Mutex> on
786 * tests/TSS_Test.cpp: Moved the Errno class to a file
787 TSS_Test_Errno.h and replaced the Errno class with the #include
788 "TSS_Test_Errno.h" to work around "features" with AIX C++'s
789 template instantiation scheme.
791 * ace/OS.i (inet_aton): Replaced the use of ((ACE_UINT32) -1) with
792 ((ACE_UINT32) ~0). I expect this is more portable...
794 * tests/run_tests.bat: Added "Service_Config_Test" to the
797 Tue Dec 10 22:59:26 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu>
799 * tests: Added Service_Config_Test to Win32 makefiles.
801 * ace/OS.i (inet_aton): We need to cast htonl to (long)
803 * tests: Added/Fixed UNICODE behavior of the following:
805 MM_Shared_Memory_Test.cpp
809 Process_Mutex_Test.cpp
811 Time_Service_Test.cpp
815 * netsvcs/lib: Added/Fixed UNICODE behavior of the following:
816 ACE_TS_Clerk_Processor::poolname_
818 Tue Dec 10 00:33:08 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
820 * tests/Service_Config_Test.cpp (main): Added a new method called
821 run_test() to ensure that ACE_Service_Config daemon is destroyed
822 before we try to end the test.
824 * ace/OS.i (inet_aton): We need to cast -1 to (ACE_UINT32).
826 * tests/Process_Mutex_Test.cpp (main): Added a minor change to
827 make gcc happy by moving the definition of int i *outside* the
828 loop. Thanks to Thilo Kielmann
829 <kielmann@informatik.uni-siegen.de> for reporting this.
831 * ace/OS.h: gcc complains about memcmp, memcpy, strcmp, and strcpy
832 (from ACE_OS::) being used before defined inline. This is due
833 to the include of SString.h at the end of OS.h. So I reordered
834 things in accordance to the changes from Thilo Kielmann
835 <kielmann@informatik.uni-siegen.de>.
837 * build/SunOS5.5/examples/Shared_Malloc/test_multiple_mallocs.cpp:
838 Changed the definition of char *base_addr to void *base_addr.
840 * ace/Memory_Pool.cpp (ACE_MMAP_Memory_Pool_Options): Changed the
841 definition of char *base_addr to void *base_addr.
843 * Put out what is hopefully the final beta release of 4.0.33.
845 * ace/Message_Queue: Added the enqueue() method again to maintain
846 backwards compatibility. Thanks to Karlheinz for pointing out
849 * ace/Service_Config.h: The svc.conf factory functions were
850 begin defined as extern "C", but the function pointer defined in
851 the ACE_Static_Svc_Descriptor struct is not declared as extern
852 "C", therefore, there was a mismatch. Here's how to fix this:
854 In Service_Config.h, before the struct ACE_Static_Svc_Descriptor
858 typedef ACE_Service_Object *(*ACE_SERVICE_ALLOCATOR)(void);
861 Then in the struct alloc_ field was changed as follows:
863 from: ACE_Service_Object *(*alloc_)(void);
864 to: ACE_SERVICE_ALLOCATOR alloc_;
866 Thanks to Chuck Gehr for this.
868 * ace/Memory_Pool.cpp (commit_backing_store_name): Changed uses of
869 "counter" from int to size_t to remove warnings.
871 * ace/ACE.cpp: Reimplemented the ACE::daemonize() method to
872 conform to the latest version in Richard Steven's new UNP book.
874 * ace/INET_Addr.cpp (set): Replaced the use of ACE_OS::inet_addr()
875 with ACE_OS::inet_aton(). Thanks to W. Richard Stevens for this
878 * ace/OS: Added a new function called inet_aton(), which is based
879 on a new POSIX socket addressing function that is non-ambiguous
880 in its return value (unlike inet_addr).
882 * tests: Added a new Service_Config_Test.cpp to make sure that the
883 timeout features mentioned below work.
885 * ace/Service_Config.cpp: Changed the implementation of
886 run_{reactor,proactor,reactorEx}_event_loop so that it returns
887 if the corresponding handle_events() method times out.
888 Thanks to Phil Logan <phill@in.ot.com.au> for reporting
891 * ace/LSOCK_Stream: Moved get_remote_addr() from the private part
892 of the class and implemented it using get_local_addr(). This
893 fixes problems that previously occurred when using the
894 ACE_Connector with ACE_LSOCK_Stream. Thanks to Stuart Powell
895 <stuartp@in.ot.com.au> for this suggestion.
897 Mon Dec 9 22:03:30 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
899 * examples/Threads: Updated the test.mak and test.mdp files to
900 reflect the new name changes. Thanks to Matthias for this.
902 * ace/ACE.cpp (ldfind): Added new code that will work if the
903 "base" part of the filename to look for is the same on both UNIX
904 and NT. The library name will be made up of three parts
905 [ACE_DLL_PREFIX]base part[ACE_DLL_SUFFIX], where prefix is "lib"
906 on UNIX and nothing on NT and suffix is ".dll" on NT and ".so"
907 on UNIX. If either prefix or suffix are missing from the
908 filename you supply to ldfind they will be added
909 automagically. This all will work independent from the pathname,
910 which will be treated completely separately from the filename
911 and can contain either UNIX style or NT style separators.
915 ===============================================================
916 netsvc netsvc.dll libnetsvc.so
917 (PATH will be evaluated) (LD_LIBRARY_PATH evaluated)
919 libnetsvc.dll libnetsvc.dll libnetsvc.dll + warning
920 netsvc.so netsvc.so + warning libnetsvc.so
922 ..\../libs/netsvc ..\..\libs\netsvc.dll ../../libs/libnetsvc.so
923 (absolute path used) (absolute path used)
925 The first and the last of these 4 examples is the way the new
926 functionality is supposed to be used. You simple supply the
927 pathname and the base part of the filename and ldfind will
928 figure everything out.
930 Thanks to Tilo Chris for this code.
932 * ace/OS.h: Added a new macro called ACE_DLL_PREFIX, which is
933 defined to "" on Win32 and "lib" on UNIX. Thanks to Tilo for
936 * ace/Reactor.cpp (detach): After further thought, I
937 have commented out the
941 call since I don't think we really need it.
943 * ace/Reactor.cpp (detach): There was a problem with
944 ACE_Reactor::detach().
948 // Reinitialize the Reactor pointer to 0.
951 should be moved before:
953 eh->handle_close (handle, mask);
955 This will render the reactor handle not available in the
956 handle_close method but at least handle_close can delete itself.
957 Thanks to Luca for reporting this.
959 * examples/Reactor/Ntalker: Replaced the use of ACE_OS::getopt()
960 with the ACE_Get_Opt iterator. Thanks to Alexandre Karev
961 <Alexandre.Karev@cern.ch> for suggesting this.
963 * ace/OS.h: Moved the #endif /* ACE_HAS_DCETHREADS ||
964 ACE_HAS_PTHREADS */ once again in order to make sure that the
965 right things happen when #if defined (ACE_HAS_THREADS) is
966 *false*. Thanks to Robert Lyng <RLyng@msmail.hsii.ccare.com>
969 Mon Dec 9 02:06:48 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu>
971 * ace/SString: Made accessors return const references.
973 * ace/OS.h: Added macro ACE_WIDE_STRING which allows the
974 conversion of char* to wchar_t* when UNICODE is turned on.
976 * ace: Added/Fixed UNICODE behavior of the following:
978 /* Local_Name_Space */
979 ACE_Local_Name_Space_T::context_file_
988 ACE_File_Lock::ACE_File_Lock
991 ACE_SPIPE_Addr::addr_to_string
995 ACE_FILE_Addr::addr_to_string
998 ACE_DEV_Addr::addr_to_string
1001 ACE_Addr::addr_to_string
1002 ACE_Addr::string_to_addr
1003 Note: These two were removed from the base class since they are
1004 not common to all Address classes.
1007 ACE_Allocator_Adapter::ACE_Allocator_Adapter
1008 ACE_Malloc::ACE_Malloc
1013 /* Shared_Memory_MM */
1014 ACE_Shared_Memory_MM::ACE_Shared_Memory_MM
1015 ACE_Shared_Memory_MM::open
1018 ACE_Overlapped_File::ACE_Overlapped_File
1019 ACE_Overlapped_File::open
1024 /* Naming_Context */
1025 ACE_Name_Options::namespace_dir
1026 ACE_Name_Options::process_dir
1027 ACE_Name_Options::database
1030 ACE_Predefined_Naming_Contexts::connect
1031 ACE_Predefined_Naming_Contexts::is_local_host
1034 ACE_CString::ACE_CString
1037 ACE_Mem_Map::ACE_Mem_Map
1040 /* Service_Config */
1041 ACE_Service_Config::logger_key_
1044 ACE_System_Time::ACE_System_Time
1047 ACE_Sbrk_Memory_Pool::ACE_Sbrk_Memory_Pool
1048 ACE_Shared_Memory_Pool::ACE_Shared_Memory_Pool
1049 ACE_Local_Memory_Pool::ACE_Local_Memory_Pool
1050 ACE_MMAP_Memory_Pool::ACE_MMAP_Memory_Pool
1051 ACE_Lite_MMAP_Memory_Pool::ACE_Lite_MMAP_Memory_Pool
1071 Sun Dec 8 19:00:45 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu>
1073 * ace/Reactor.cpp (handle_events): Updated this method to use the
1074 ACE_Countdown_Time::update method after the mutex has been
1077 * ace/Time_Value.cpp (update): Added an ACE_Countdown_Time::update
1078 method that calls stop and start. This is useful for methods
1079 such as ACE_Reactor::handle_events that need to update timeout
1080 values after acquiring locks, but before waiting on the
1081 demultiplexing mechanism (e.g. select).
1083 * ace/ReactorEx.cpp (handle_events): Modularized the
1084 implementation of handle_events. Now it uses helper functions
1085 to significantly simplify the implementation. Also updated the
1086 header file documentation.
1088 * ace/Timer_Queue: Added a timer_skew_ data member and accessor
1089 methods to ACE_Timer_Queue. Also added an expire method that
1090 calls gettimeofday and adds the timer_skew_ for you. These
1091 changes will help simplify Reactor, Proactor, and ReactorEx
1094 * ace/Reactor : Removed timer_skew_. This code now just calles
1095 timer_queue->expire () with no parameters. Very clean.
1097 * ace/ReactorEx : Removed timer_skew_ code.
1099 * ace/Proactor : Removed timer_skew_ code.
1101 * examples/Proactor/test_proactor.cpp: Fixed this application so
1102 that it exits when all the data has been sent and received.
1103 Previously, it used a cool timeout mechanism to "guess" when all
1104 the data had been received. Ahh, but we can't have too much
1105 fun, or people start to get nervous.
1107 * ace/Service_Config.cpp (run_reactorEx_event_loop (Time_Value)):
1108 Fixed the implementation of this method. It now handles
1109 reactorEx events until end_reactorEx_event_loop is called, or
1110 the specified time value expires. Also fixed the
1111 run_proactor_event_loop (Time_Value) method.
1113 * examples/ReactorEx/test_timeout.cpp: Added a new example
1114 application that shows how to use
1115 Service_Config::run_reactorEx_event_loop with timeouts. Check
1116 the examples/ReactorEx/README file for more details.
1118 * examples/Proactor/test_timeout.cpp: Added a new example
1119 application that shows how to use
1120 Service_Config::run_proactor_event_loop with timeouts. Yes, this
1121 screams for common dispatcher interfaces for Reactor, Proactor,
1124 Sun Dec 8 10:27:19 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
1126 * ace/Service_Manager.cpp (init): Changed all uses of "int port"
1127 to "u_short port" to be consistent with socket types.
1129 * ace/ACE.cpp (bind_port): Changed all uses of "int port" to
1130 "u_short port" to be consistent with socket types.
1132 * ace/Remote_Name_Space.cpp: Changed all uses of "int port" to
1133 "u_short port" to be consistent with socket types.
1135 * ace/SV_Semaphore_{Simple,Complex}: Changed all uses of "int n"
1136 to "u_short n" to be consistent with the SYSV types!
1138 * ace/OS.h: Moved the location of the ACE_HAS_USING_KEYWORD macros
1139 until *after* we #include "ace/Time_Value.h". Thanks to
1142 * ace/Signal.cpp: Finished implementing the
1143 ace_signal_handlers_dispatching logic, which wasn't done
1144 entirely earlier. Thanks to Alexandre Karev
1145 <Alexandre.Karev@cern.ch> for reporting this.
1147 * netsvcs/servers/main.cpp (main): Fixed several small bugs in the
1148 netsvcs main test program. Thanks to Alexandre Karev
1149 <Alexandre.Karev@cern.ch> for finding this.
1151 * ace/Reactor: Removed the timer_skew_ data member from the
1152 ACE_Reactor since this is now covered by the
1155 * ace/Reactor.cpp (handle_events): Added the new version of the
1156 ACE_Countdown_Time to simplify the code.
1158 * ace/Time_Value: Added a new class called ACE_Countdown_Time,
1159 which is used by the Reactor, ReactorEx, and Proactor to keep
1160 track of how much time elapsed.
1162 * ace/config-win32-msvc4.0.h: Added a change that forces the MSVC
1163 compiler to reference the proper Winsock - lib during linking of
1164 ACE. This change is necessary because a) in the release version
1165 the link to the winsock.lib was completly missing and b) only
1166 wsock32.lib has been included (which is wrong when WinSock2 is
1167 used). Thanks to Matthias for this.
1169 * ace/Module.cpp (ACE_Module): Added code to zero-out the
1170 q_pair_[2] pointers. Thanks to Matthias for this.
1172 * tests: Removed the argv name from most main() functions so that
1173 we don't get warnings...
1175 * examples/Threads: Fixed some errors in the threads examples
1176 directory, most of which are ambigious overloads. Also included
1177 a (MSVC 4.1) makefile for all tests in this directory. Thanks
1178 to Matthias for this.
1180 * examples/Threads: Renamed all the files by removing the word
1181 "test_" at the beginning. This is redundant!
1183 * tests/TSS_Test.cpp: If we are running AIX (i.e., if
1184 ACE_TEMPLATES_REQUIRE_PRAGMA), then conditionally avoid
1185 compiling this test program because it doesn't work unless we
1186 split off class Errno due to AIX's rules for generating
1187 templates. This is too much work to get right...
1189 * ace/OS.i (thr_self): Updated the conditional compilation tests
1190 so that we check for ACE_HAS_THREAD_SELF first. Thanks to Chris
1193 * ace/{config-osf1-3.2.h,config-aix-4.1.x.h}: Updated this file so
1194 that is has the new ACE_HAS_THREAD_SELF macro, which indicates
1195 that the platform uses thread_self() rather than pthread_self().
1197 * ace/config-aix-4.1.x.h: According to Chris Lahey
1198 <Chris_Lahey@cccis.com>, AIX 4.1.x should have ACE_HAS_PTHREADS
1199 rather than ACE_HAS_DCETHREADS.
1201 * ace/Thread_Manager: Removed the thread_descriptor_i() methods
1202 and replaced them by generalizing the find() method to become
1203 find_thread() and find_hthread(). Thanks to Hamutal Yanay
1204 <Hamutal_Yanay@mail.icomverse.com> for suggesting this.
1206 Sun Dec 8 14:39:53 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu>
1208 * ace/Timer_Queue: Added a timer_skew_ data member and accessor
1209 methods to ACE_Timer_Queue. Also added an expire method
1210 that calls gettimeofday and adds the timer_skew_ for you. These
1211 changes will help simplify Reactor, Proactor, and ReactorEx
1214 Sat Dec 7 01:14:04 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu>
1216 * tests/Process_Mutex_Test.cpp: Added new test which checks the
1217 functionality of a ACE_Process_Mutex. Abandoned mutexes can be
1218 created by selecting the correct command-line arguments.
1220 * examples/Reactor/ReactorEx/test_reactorEx.cpp: Reverted back to
1221 old scheme which does not utilize traits.
1223 * ace/Task_T.h: Removed the synchronization trait in Task. This is
1224 because template typedefs are only supported by a few
1227 Sat Dec 7 16:55:37 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
1229 * ace/Thread_Manager.cpp: Because thread_descriptor_i() only returns
1230 0 or -1 on failure the code for
1231 ACE_Thread_Manager::thr_self(ACE_hthread_t &) should read:
1233 if (-1 == this->thread_descriptor_i (id, td))
1235 handle = &td.thr_handle_;
1237 Thanks to Matthias for reporting this.
1239 * ace/OS: Added a new static instance of ACE_thread_key_t to work
1240 around the pthreads implementation on MVS (which doesn't store
1241 TSS keys as ints!). Thanks to Chuck Gehr for reporting this.
1243 * ace/config-mvs.h: Added #define ACE_TEMPLATES_REQUIRE_SOURCE for
1244 MVS C++. Thanks to Chuck Gehr for reporting this.
1246 * ace/Signal.cpp: ace_dispatcher was being set to
1247 ace_signal_handlers_dispatch() which calls
1248 ACE_Sig_Handlers::dispatch (when ACE_HAS_SIC_C_FUNC is defined),
1249 whereas it was set to ACE_SigHanlder::dispatch (no s) if not
1250 defined. I intended to set this to ace_signal_handler_dispatch
1251 (no s). Thanks to Chuck Gehr for reporting this.
1253 * ace/Makefile: Fixed a small typo where I wasn't matching char
1254 *getenv in the sed regular expression.
1256 * ace/{OS,Synch}: Moved various classes around so that things will
1257 compile correctly when ACE_WIN32 is defined but ACE_HAS_THREADS
1258 is *not* defined. Thanks to Robert Lyng
1259 <RLyng@msmail.hsii.ccare.com> for reporting this.
1261 Sat Dec 7 16:55:37 1996 Matthias Kerkhoff <make@cs.tu-berlin.de>
1263 * ace/Module: Added some values to the enum so Module clients
1264 can decide whether the reader, the writer or both should be
1265 automatically deleted.
1267 * ace/{Stream,Module,Task}: Changed some function arguments
1268 from u_long to int (because enums are represented as ints).
1270 * ace/Task: Added a new virtual function to ACE_Task_Base
1271 (module_closed), which by default calls
1272 ACE_Task_Base::close(1). Please note the changed flags
1273 argument. This allows clients to differ between calls
1274 originated from a Module and/or Stream from those which
1275 result from ~ACE_Task_Exit(). ~ACE_Task_Exit() calls
1276 ACE_Task_Base::close(0). This may be or not be a problem to
1277 existing applications. It may (hopefully not)
1278 be neccessary to change ACE_Task_Base::module_close back to
1279 calling ACE_Task_Base::close(0).
1281 Fri Dec 06 14:44:20 1996 David L. Levine <levine@cs.wustl.edu>
1283 * ace/OS.cpp: added ::spa () function to allow command line args
1284 to be passed to programs in VxWorks
1286 * ace/OS.i: (ACE_OS::gettimeofday): VxWorks returns nsec instead
1289 Fri Dec 6 01:21:48 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu>
1291 * examples/Reactor/ReactorEx/test_reactorEx.cpp: Rewrote the
1292 example such that the test now uses the new Notification
1293 Strategy scheme in ACE. This allows a message queue consumer to
1294 wait in ReactorEx without spawning a new thread, or creating
1295 extra Win32 events. This make the example smaller and much
1298 * ace/Task_T.h: Added synchronization trait to Task.
1300 * ace/Task_T.i (msg_queue): Added a check to delete the old
1301 message_queue if we had created it.
1303 * ace/ReactorEx.cpp (remove_handler): Removed the call to set
1304 reactorEx of the event handler to zero becauses the event
1305 handler may no longer be there after the handle_close()
1308 Thu Dec 05 21:18:49 1996 David L. Levine <levine@cs.wustl.edu>
1310 * ace/OS.cpp (thr_create): Oops, needed to add another check if
1311 thr_id == 0 before assigning *thr_handle = *thr_id, for systems
1312 such as Solaris 2.4 that don't have PTHREADS.
1314 Wed Dec 4 09:09:56 1996 David L. Levine <levine@cs.wustl.edu>
1316 * ace/Log_Msg.cpp (log): added printout to stderr before call
1317 to exit(). Silent calls to exit() are bad :-}
1319 * performance-tests/Synch-Benchmarks/Options.cpp (print_results):
1320 only use rusage if ACE_HAS_PRUSAGE_T is #defined
1322 * examples/IPC_SAP/SOCK_SAP/CPP-in{client,server}.cpp:
1323 use blocking connect on VxWorks
1325 * ace/config-vxworks*.h: added ACE_LACKS_MPROTECT and
1328 * include/makeinclude/platform_vxworks*: removed INCLDIRS and
1329 added indlib.o to GreenHills LIBS
1331 * Makefile (cleanrelease and release): changed "rm -r" of
1332 ACE.tar.gz to "rm -f", that's probably what was meant
1334 Wed Dec 4 00:27:07 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu>
1336 * ace/config-win32-msvc*.0.h: Added NOMINMAX.
1338 * ace/Registry: Removed NOMINMAX and
1339 VC_PLUS_PLUS_NESTED_CLASS_PROBLEM flags from the header file.
1340 The VC_PLUS_PLUS_NESTED_CLASS_PROBLEM flag is no longer needed
1341 and NOMINMAX is defined at the project level. Thanks to
1342 Matthias Kerkhoff <make@cs.tu-berlin.de> for suggesting this.
1344 Mon Dec 2 14:13:44 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
1346 * ace: Changed all occurrences of ACE_Event_Handler
1347 reactorex() to reactorEx() to be consistent. Thanks to
1348 Matthias for suggesting this.
1350 * ace/Message_Queue.cpp (close): We didn't allocate the memory for
1351 the notification_strategy_, so we darn well can't delete it!
1352 Thanks to Matthias for finding this.
1354 * ace/Log_Msg.cpp (ACE_TSS_cleanup): Made the ACE_TSS_cleanup
1355 function extern "C" for MVS C++ and compilers like it... Thanks
1356 to Chuck Gehr for reporting this.
1358 * tests/Naming_Test.cpp (main): Added delete ns_context to close
1359 things down and free up the semaphores. Thanks to David Levine
1360 for suggesting this.
1362 * examples/Reactor/Misc/test_demuxing.cpp (handle_input): Fixed a
1363 "typo" where we were accessing mb->msg_priority() *after*
1364 deleting it! Thanks to Matthias for finding this.
1366 Mon Dec 2 09:57:15 1996 David L. Levine <levine@cs.wustl.edu>
1368 * tests/run_tests.*: updated lists of tests to be run
1370 * tests/*.cpp: removed trailing .cpp from argument to
1371 ACE_START_TEST because it would appear in the log file name
1373 Mon Dec 2 00:08:51 1996 Douglas C. Schmidt <schmidt@lambada.cs.wustl.edu>
1375 * ace/Log_Record.cpp (dump): There was an error on line 19 of
1378 ACE_DEBUG ((LM_DEBUG, "\npid_ = %s\n", this->pid_));
1380 should be changed to:
1382 ACE_DEBUG ((LM_DEBUG, "\npid_ = %d\n", this->pid_));
1384 Thanks to Sandro Doro <alex@aureus.sublink.org> for reporting
1387 * examples/Reactor/Misc/test_handle_set.cpp: Updated the test to
1388 remove a warning caused by sloppy nesting of loop counters.
1390 Mon Dec 2 00:23:23 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu>
1392 * ace/Strategies.{h,cpp}: Update the base-class and added
1395 * tests/test_config.h: Added ACE_INIT_LOG, ACE_APPEND_LOG and
1396 ACE_APPEND_LOG to facilitate the appending of log messages to a
1397 file. Also changed Pipe_Test to use this new mechanism.
1399 * test/Naming_Test: Changed test to use "lite" implementation to
1402 * netsvcs/lib: Fixed multiple type mismatch warnings.
1404 * ace/ReactorEx: Fixed syntax errors in recently modified
1407 * ace/ace.{mdp.mak}: Added Strategies.cpp to VC++ makefile.
1409 Sun Dec 1 19:19:02 1996 Douglas C. Schmidt <schmidt@lambada.cs.wustl.edu>
1411 * ace/Service_Config: Moved the #inclusion of ace/Proactor.h and
1412 ace/ReactorEx.h from the *.h file to the *.cpp file to avoid
1413 problems with circular dependencies.
1415 * ace/Reactor: Added a new parameter to the Reactor's
1416 initialization methods so that we can install a subclass of
1417 ACE_Timer_Queue. This is in anticipation of Tim's new
1418 "real-time" implementation of a timer queue.
1420 * ace/Reactor: Changed the internal Reactor name
1421 ACE_Notification_Handler to ACE_Reactor_Notify to be consistent
1422 with the ACE_ReactorEx_Notify class.
1424 * examples/Reactor/Misc/test_demuxing.cpp: Revised this test so
1425 that it now illustrates the new notification mechanism of the
1426 ACE_Message_Queue class.
1428 * examples/Reactor/Misc: Changed the name of the signal_tester.cpp
1429 file to test_demuxing.cpp, which is really what this does.
1431 * ace/{Strategies,Message_Queue}: Created a suite of
1432 "Notification Strategies" that are used with the new
1433 ACE_Message_Queue notification scheme. This works as
1436 1. There's a new virtual hook method on ACE_Message_Queue
1437 called notify(). Whenever a new Message_Block is
1438 enqueued the notify() hook is called. By default, this
1441 2. If you want to do something with the notify() hook, you
1444 a. You can subclass from ACE_Message_Queue and
1445 override this method. This is an example of the
1446 "Template Method" pattern.
1448 b. You can configure an ACE_Notification_Strategy *
1449 into an ACE_Message_Queue. An
1450 ACE_Notification_Strategy is the vehicle for
1451 extending the behavior of ACE_Message_Queue wrt
1452 notification *without subclassing*. Thus, it's an
1453 example of the Bridge/Strategy patterns.
1455 3. ACE_Notification_Strategy is defined in
1456 ace/Strategies.{h,cpp}. There are two pre-defined
1459 a. ACE_Reactor_Notification_Strategy -- integrates the
1460 ACE_Message_Queue notification into the
1461 ACE_Reactor::notify() method.
1463 b. ACE_ReactorEx_Notification_Strategy -- integrates
1464 the ACE_Message_Queue notification into the
1465 ACE_ReactorEx::notify() method.
1467 Both of these can be used almost identically in order to
1468 seamlessly integrate multiple threads of control, inserting
1469 ACE_Message_Blocks in one or more ACE_Message_Queues, with
1470 the various ACE event demultiplexors (i.e., ACE_Reactor
1473 * ace: Created a new pair of files called Strategies_T.cpp and
1474 Strategies_T.h and move the template ACE_*Strategies classes
1475 into those files. This was necessary since there are now new
1476 non-template notification strategies in Strategies.{h,cpp}.
1478 * ace/Message_Queue: Created a new "notification hook" mechanism
1479 that makes it possible for event demuxers (like ACE_Reactor and
1480 ACE_ReactorEx) to be informed automatically when a Message_Block
1481 is inserted into the Message_Queue. This is useful for
1482 sitations where you'd like to integrate multiple threads (each
1483 of which is pumping data into an ACE_Message_Queue) with an
1484 ACE_Reactor or an ACE_ReactorEx. Thanks to Matthias Kerkhoff
1485 <make@cs.tu-berlin.de> and Luca for suggesting this.
1487 * ace/Synch.h: Modified the implementation of
1488 ACE_Null_Condition_Mutex::wait() so that it always returns -1
1489 and sets errno to ETIME. This reflects the fact that if you'll
1490 never be awakened if you "sleep" on a Null_Condition...
1492 * ace/ReactorEx: Generalized the ACE_ReactorEx so that its
1493 notify() method now behaves like the ACE_Reactor, i.e., it can
1494 queue up ACE_Event_Handlers that are dispatched in the ReactorEx
1497 * tests: Renamed the Shared_Memory_MM_Test.cpp to
1498 MM_Shared_Memory_Test.cpp and remove the
1499 Shared_Memory_SV_Test.cpp since it was redundant to the
1500 SV_Shared_Memory_Test.cpp.
1502 * tests/SV_Shared_Memory_Test.cpp (main): Revised the SVSV IPC
1503 shared memory test to be more robust.
1505 * ace/SV_Semaphore_Simple.cpp (open): If the char *name == 0 then
1506 use ACE_DEFAULT_SEM_KEY instead.
1508 * ace/Memory_Pool: Generalized the ACE_Shared_Memory_Pool so that
1509 there can be more than 1 shared memory pool active at a time
1510 (similar to what we did for ACE_MMAP_Memory_Pool).
1512 * ace/Memory_Pool.h: There was an unnecessary
1513 ACE_SV_Semaphore_Complex in ACE_Shared_Memory_Pool that was left
1514 over from earlier days. I've removed this.
1516 * ace/Memory_Pool.cpp (ACE_Shared_Memory_Pool): Revised
1517 the constructor so that if we get a NULL pool_name we'll
1520 * examples/Makefile: Added the System_V_IPC and Shared_Memory
1523 * ace/Message_Queue.h: Added a virtual destructor to
1524 ACE_Message_Queue so that it can be destroyed appropriately,
1527 * ace/Message_Queue.h: Renamed enqueue() to enqueue_prio() to be
1528 consistent with the other names (e.g., enqueue_head() and
1529 enqueue_tail(). Updated the test programs to reflect this.
1531 Sun Dec 1 12:06:46 1996 David L. Levine <levine@cs.wustl.edu>
1533 * ace/config-vxworks*.h: Removed #define ACE_HAS_STRBUF_T:
1534 copy and paste error
1536 Sun Dec 1 00:15:45 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu>
1538 * ace/OS.h: ACE_NEW_RETURN and ACE_NEW were reverted back to the
1539 old implementation. This is temporary till the infinite loop
1540 problem with ACE_ERROR, ACE_DEBUG and ACE_TRACE being called
1541 from ACE_Log_Msg::instance() is fixed.
1543 * ace/Synch.h: Repositioned ACE_Semaphore such that there are no
1544 problems in compiling ACE_Process_Semaphore under Win32.
1546 * ace/config-win32-msvc4.0.h: Changed ACE_HAS_STL to
1547 ACE_HAS_STANDARD_CPP_LIBRARY which is more descriptive (and what
1548 is expected by stdcpp.h).
1550 * ace/Registry.h: Added the setting of NOMINMAX and
1551 VC_PLUS_PLUS_NESTED_CLASS_PROBLEM flags so that STL behaves
1554 * ace/Log_Msg.cpp (open): Fixed a small bug such that msg_ostream
1555 is only set this to cerr if it hasn't already been set.
1557 * STL: Updated the STL directory will latest code from
1558 http://www.rahul.net/terris/ and also added the original
1559 readme2.stl file. Created ACE_Changes which has the list of
1560 changes made to the STL distribution.
1562 Sat Nov 30 12:02:00 1996 Douglas C. Schmidt <schmidt@lambada.cs.wustl.edu>
1564 * ace/OS.h: Added a new pragma that disables warning #4097 in
1565 MSVC++ (typedef-name used as synonym for class-name). This
1566 keeps Win32 clients from getting warning on Win32. Thanks to
1567 Matthias Kerkhoff <make@cs.tu-berlin.de> for this.
1569 * ace/Log_Msg.cpp: Created a new macro called ACE_NEW_RETURN_I,
1570 which is used withing ACE_Log_Msg::instance(). We can't afford
1571 to call ACE_LOG_MSG->instance() from within
1572 ACE_Log_Msg::instance() or else we will recurse infinitely!
1573 Thanks to Irfan for finding this.
1575 * ace/OS.i (mprotect): Added a #if !defined (ACE_LACKS_MPROTECT)
1576 conditional compilation directive to support the EPLX real time
1577 OS from CDC (based on LYNX). Thanks to Alexandre Karev
1578 <karev@cern.ch> for reporting this.
1580 Sat Nov 20 12:23:45 1996 Prashant Jain <pjain@merengue.cs.wustl.edu>
1582 * tests/Naming_Test.cpp (main): Added code that creates a unique
1583 backing store name and removes the backing store every time
1586 Fri Nov 29 12:54:12 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
1588 * ace/Stream.cpp (open): Changed tail->close() and head->close()
1589 to delete tail and delete head now that we've got our new
1592 * ace/Module: Moved the destructor from the private part of the
1593 class to the public part and changed things so that close() no
1594 longer "deletes this." This is too confusing and error-prone.
1595 In addition, changed the Module destructor so that it will try
1596 to call close() only if close hasn't already been called.
1598 * ace/Synch.h: Moved ACE_Process_Semaphore out of the
1599 ACE_HAS_THREADS section since this is available on platforms
1600 that don't have threads.
1602 * Now that Log_Msg.h is being #included in OS.h, I removed all
1603 other #includes of Log_Msg.h throughout the rest of ACE.
1605 * ace/OS.h: Rearranged the definition of the ACE_NEW and
1606 ACE_NEW_RETURN macros so that they come at the end of OS.h.
1607 This enables us to #include "ace/Log_Msg.h" here, as well, so
1608 that we can make use of the ACE_LOG_MSG macro in the definition
1609 of ACE_NEW and ACE_NEW_RETURN.
1611 * ace/Singleton.cpp (instance): Updated the ACE_Singleton
1612 implementation to use the new ACE_NEW and ACE_NEW_RETURN macros.
1614 * ace/OS.h: Revised the ACE_NEW and ACE_NEW_RETURN macros so that
1615 they check to see if the constructor of the newly allocated
1616 object failed (i.e., by checking the ACE_LOG_MSG->op_status()
1619 * tests/Reactors_Test.cpp: Added an ACE_ASSERT() after each
1620 Reactor we create in order to make sure it worked.
1622 * tests/Reactors_Test.cpp: Added an ACE_Service_Config daemon
1623 instance within main() in order to ensure that the Reactor is
1624 cleaned up appropriately. This avoids problems with NT 4.0,
1625 where there seems to be a bug if you don't shut down sockets
1626 explicitly when the process exits.
1628 * tests/Pipe_Test.cpp (main): Improved the pipe test so that it
1629 automatically iterates multiple times in order to test whether
1630 there are problems with rapidly opening and closing NT socket
1633 Thu Nov 28 03:07:48 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu>
1635 * netsvcs: netsvcs.mak and netsvcs.mdp were changed such that
1636 it becomes easier to find ace.lib while compiling netsvcs.lib.
1638 * tests/Pipe_Test.cpp: Add more instances of ACE_Pipes to the test
1639 and also added an option to close down the pipe.
1641 Thu Nov 28 00:53:16 1996 Douglas C. Schmidt <schmidt@lambada.cs.wustl.edu>
1643 * ace/config-sunos4-g++.h: This config file contained two
1644 exclusive definitions
1646 #define ACE_HAS_SVR4_SIGNAL_T
1650 #define ACE_HAS_SUNOS4_SIGNAL_T
1652 The first one was moved out. Thanks to Alexandre Karev
1653 <akg@na47sun05.cern.ch> for reporting this.
1657 #elif defined (ACE_HAS_SUNOS4_SIGNAL_T)
1661 typedef void (*ACE_SignalHandler)(void);
1662 typedef void (*ACE_SignalHandlerV)(void);
1666 typedef void (*ACE_SignalHandler)(...);
1667 typedef void (*ACE_SignalHandlerV)(...);
1669 to make gcc happy. The first one was moved out. Thanks to
1670 Alexandre Karev <akg@na47sun05.cern.ch> for reporting this.
1672 * ace/Pipe.cpp (close): Arrgh! Fixed a total braino where we
1673 weren't using ACE_OS::closesocket() to close down the Win32
1674 ACE_Pipe implementation, which uses sockets... Thanks to Irfan
1675 and Tilo for helping me figure this one out!
1677 * tests/CPP_Test.cpp: Completely reworked this test so that it
1678 should run correctly on Win32 and UNIX.
1680 Wed Nov 27 16:50:17 1996 Douglas C. Schmidt <schmidt@lambada.cs.wustl.edu>
1682 * Put out a new beta of ACE 4.0.33.
1684 * tests/Mutex_Test.cpp (test): Fixed the test() function so that
1685 it doesn't use the ACE_Thread_Control unless we explicitly want
1688 * tests/test_config.h: Added addition information about the
1689 process id and thread id of the main thread.
1691 * ace/Synch.h: Speed things up a bit by conditionally #including
1692 "ace/SV_Semaphore_Complex.h" only if we are compiling on a
1693 non-Win32 platform or a POSIX platform. Thanks to Matthias
1694 Kerkhoff <make@cs.tu-berlin.de> for this.
1696 * ace/SV_Semaphore_Complex.h: Incorporated the new ACE_USING
1697 macro, which is useful if you have
1703 class d : private b {
1704 b::a() // still works, but depriciated
1705 using b::a() // should be used instead
1708 Thanks to Matthias Kerkhoff <make@cs.tu-berlin.de> for this.
1710 * ace/OS.h: Added a new macro called ACE_USING, which is used to
1711 distinguish between platforms that support namespace "using"
1712 semantics and those that don't. Thanks to Matthias Kerkhoff
1713 <make@cs.tu-berlin.de> for this.
1715 * examples/Misc/test_XtReactor[12].cpp: Had to add the infamous
1716 #define String XtString before including Xm/PushB.h. Also, there
1717 were some references to XtReactor when the class is now
1718 ACE_XtReactor. Thanks to Gonzalo Diethelm <gonzo@ing.puc.cl>
1721 * ace/XtReactor.cpp (ACE_XtReactor): timeout_ was not being
1722 initialized on the constructor, and that caused a core dump.
1723 Thanks to Gonzalo Diethelm <gonzo@ing.puc.cl> for reporting
1726 * ace/SOCK.h: Put the open() call in the protected part of the
1727 class since we generally don't want clients to call this
1728 directly. Thanks to Eric Newton <ecn@clark.net> for pointing
1731 * ace/ACE.cpp: Fixed a bug where sin.sin_family was being set
1732 rather than sin.sin_len. Thanks to Chuck Gehr
1733 <gehr@sweng.stortek.com> for reporting this.
1735 * ace/ACE.cpp: Enhanced the ACE::{send_n,recv_n} methods so that
1736 they check to see if errno == EWOULDBLOCK when ACE_OS::send() or
1737 ACE_OS::recv() returns -1. If that's the case, then they keep
1740 Thanks to Mehdi TABATABAI <Mehdi.TABATABAI@ed.gva.sita.int> for
1743 * ace/Log_Msg.h: Fixed ACE_RETURN so that it only has 1 parameter
1744 if ACE_NLOGGING is enabled. Thanks to Antonio Tortorici
1745 <antonio@rh0011.roma.tlsoft.it> for reporting this.
1747 * ace/config-vxworks*.h: Added ACE_NTRACE macros so that
1748 tracing doesn't magically turn on!
1750 * ace/Task.cpp (activate): the &ACE_Task_Base::svc_run() argument
1751 needs a cast to ACE_THR_FUNC, because that's what
1752 ACE_Thread_Manager::spawn_n() requires. On VxWorks,
1753 ACE_THR_FUNC functions return an int, while svc_run() returns
1754 void *. Thanks to David Levine for this.
1756 * ace/Thread_Manager.cpp (kill_thr): I was mistakenly passing in
1757 the thr_handle_ where I should have been passing in the thr_id_.
1758 In addition, made sure we don't set errno to the wrong value...
1759 Thanks to Ross Dargahi <rossd@acm.org> for reporting this.
1761 * ace/{Synch_T,Synch}.h: If we don't actually own the lock
1762 anymore, don't try to do a release. Thanks to Jonathan Biggar
1763 <jon@sems.com> for reporting this bug.
1765 * ace/ACE.cpp (handle_timed_complete): Added an ex_handles mask so
1766 that non-blocking connects will work correctly on Win32. Thanks
1767 to Antonio Tortorici <antonio@rh0011.roma.tlsoft.it> for
1770 * ace/Message_Queue.h: Updated the documentation to stress the
1771 fact that the timeouts are specified in *absolute* time, rather
1772 than in relative time. Thanks to Bob Dunmire <bobd@titan.com>
1775 * tests/test_config.h: Modified the ACE_END_TEST macro so that the
1776 log file is closed. This works around a problem on VxWorks
1777 where destructors of static objects don't get closed
1778 automatically. Thanks to David Levine for this fix.
1780 * ace/OS.i (rand_r): Added a fix for Digital UNIX so that rand_r
1781 works correctly in MT settings. Thanks to Thilo Kielmann
1782 <kielmann@informatik.uni-siegen.de> for this.
1784 Wed Nov 27 16:12:00 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu>
1786 * ace/Stream.cpp: Fixed a bug in ACE_Stream::open to
1787 allow applications to specify a tail or a head without
1788 having to specify both. This was needed by the ACE_Pipeline
1789 application since it only needs a Pipeline-specific tail
1792 Tue Nov 26 18:00:25 1996 Douglas C. Schmidt <schmidt@lambada.cs.wustl.edu>
1794 * ace: Functions should not be declared with ACE_INLINE in a
1795 .cpp file. Fixed this problem in the following files:
1797 SPIPE_Acceptor.cpp:116:ACE_INLINE
1798 TLI_Acceptor.cpp:145:ACE_INLINE int
1799 TLI_Acceptor.cpp:192:ACE_INLINE
1800 Task.cpp:121:ACE_INLINE int
1801 Task.cpp:130:ACE_INLINE void
1803 * ace/{OS,Thread}: Added Chuck Gehr's suggested change for the
1804 pthread_keycreate() routine, which must take extern "C"
1805 functions on MVC C++. This fix isn't perfect, but it should
1806 allow the ACE library to build...
1808 * man: Updated all of the manual pages and HTML files.
1810 * ace/Signal.cpp: Updated the code so that we don't try to
1811 register a static C++ dispatch method if ACE_HAS_SIG_C_FUNC is
1812 defined. This fixes problems with the MVS C++ compiler...
1813 Thanks to Chuck Gehr for this suggestion.
1815 * ace/OS.h: Added extern "C" { } wrappers around the signal
1816 handling mechanisms if ACE_HAS_SIG_C_FUNC is defined. This
1817 fixes problems with the MVS C++ compiler... Thanks to Chuck
1818 Gehr for this suggestion.
1820 * ace/Reactor.cpp (open): Moved the initialization of the
1821 ACE_Timer_Queue field to *before* the handler_rep_.open() call.
1822 We do this first in case the handler_rep_ call fails (which it
1823 sometimes does on Win32 when we restart applications quickly due
1824 to the use of sockets as a notification mechanism). At least
1825 this way the timer_queue_ isn't 0, so we can still use the
1826 Reactor as a timer... Thanks to Tilo Christ for motivating
1829 * ace/OS.i: Apparently, DIGITAL_UNIX gethostbyname() returns
1830 thread-specific storage, so we can use this for
1833 * ace/OS.i: Need to add:
1837 after line 3268: return (size_t) ACE_OS::sysconf (_SC_THREAD_STACK_MIN);
1839 otherwise we get a compile error:
1841 line 3296.1: CBC1331(W) Return value of type "unsigned int" is expected
1843 This is because no code ends up getting generated. Thanks to Chuck
1846 * ace/OS.i (ACE_PTHREAD_CLEANUP_PUSH): Removed an extraneous set
1847 of parens. Thanks to Chuck Gehr for this fix.
1849 * ace/OS.cpp (thr_create): Oops, needed to add a check if thr_id
1850 == 0 before assigning *thr_handle = *thr_id! Thanks to Prashant
1853 Tue Nov 26 21:06:13 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu>
1855 * ace/Pipe.cpp (open): This change relates to Win32 code only.
1856 Removed the reuse_addr flag to acceptor.open() so that we don't
1857 try to reuse the acceptor socket immediately. Apparently, this
1858 causes no end of trouble on Win32 as the following connect()
1859 call fails (randomly). Now it should be possible to create
1860 multiple ACE_Pipes in one process and hence create multiple
1861 Reactors also without any problems.
1863 * tests/Pipe_Test.cpp: Added a ACE_Pipe test to check for the
1864 creation of multiple pipes in a process. Also changed the
1865 relevant makefiles and scripts.
1867 Tue Nov 26 11:27:33 1996 David L. Levine <levine@cs.wustl.edu>
1869 * tests/{CPP_Test,Mutex_Test,Shared_Memory_MM_Test,SPIPE_Test}.cpp:
1870 added VXWORKS support for these tests by spawning a new thread
1871 instead of forking a new process (the same as on Win32)
1873 * netsvcs/clients/Naming/Client/Client_Test.cpp (open): Added a
1874 return 0 for success.
1876 * ace/Singleton.h: Modified the use of the ACE_NEW_RETURN macro so
1877 we not only check if new has failed, but also check that the
1878 constructor has succeeded. If it hasn't, we bail out... Thanks
1879 to Luca for this suggestion.
1881 * ace/Log_Msg: Added a 4th parameter to log_hexdump() in order to
1882 print out a comment. Thanks to Luca for this.
1884 * ace/ACE.cpp (ldfind): Changed the implementation to look for
1885 ACE_DLL_SUFFIX rather than '.' since '.' might exist in the
1888 * Removed all the NT-specific svc.conf files and updated the other
1889 files to use the new "auto-dll-suffix" feature in ACE.
1891 * ace/Synch_T.cpp (ts_get): Fixed a nasty bug introduced by recent
1892 changes to ACE_TSS<>::ts_get(). The ACE_Mutex should be
1893 ACE_Thread_Mutex. This should fix lots of nasty run-time bugs
1894 seen with recent versions of the ACE 0.33 beta...
1896 Tue Nov 26 14:40:00 1996 David L. Levine <levine@cs.wustl.edu>
1898 * Log_Msg.cpp: fake out TSS on VxWorks in Log_Msg::instance()
1899 by using a spare field in the task control block
1901 * tests/{CPP_Test,Mutex_Test,Shared_Memory_MM_Test,SPIPE_Test}.cpp:
1902 added VXWORKS support for these tests by spawning a new
1903 thread instead of forking a new process (the same as on
1906 * OS.h: VxWorks can't handle the ACE_THR_FUNC typedef if
1907 it's in the extern "C" block, so I moved it back out.
1908 Also, the horrible GreenHills hack is no longer required.
1910 * OS.i: there's an ACE_OS_CALL_RETURN before a ::strncpy() call,
1911 I changed it to ACE_OS_CALL.
1913 * OS.i: Added call to VxWorks ::mkdir()
1915 * Pipe.cpp: VxWorks doesn't know about TCP_NODELAY.
1917 * INET_Addr.cpp: get_host_name() is missing a return
1918 statement, on VxWorks only
1920 * Thread_Manager.i: in ACE_Thread_Control::thr_mgr(), there
1921 were two consecutive return statements, removed the first
1924 * Time_Request_Reply.{h,cpp}: GreenHills warns that "type
1925 qualifiers are meaningless" for declaration of const
1926 ACE_UINT32 time(), so I removed them.
1928 * UPIPE_Stream.cpp, line 95: warning: integer conversion
1929 resulted in a change of sign, so we cast n to int.
1931 * Map_Manager.cpp: in ACE_Map_Manager::resize_i(), variable
1932 foo is unnecessary, so we omitted it.
1934 * tests/CPP_Test.cpp (and a few others) have references to
1937 Tue Nov 26 03:15:22 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu>
1939 * tests: Added Map_Manager_Test and Message_Queue_Test to
1940 makefiles (NT and UNIX) and one-button scripts.
1942 * tests: (Barrier_Test.cpp Buffer_Stream_Test.cpp Mutex_Test.cpp
1943 Priority_Buffer_Test.cpp Recursive_Mutex_Test.cpp
1944 Shared_Memory_MM_Test.cpp) Fixed typos mainly and other small
1945 changes. Also fixed logging file problems so to make logging
1946 of tests more accurate.
1948 Mon Nov 25 00:23:40 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
1950 * performance-tests/Synch-Benchmarks/Options.cpp (Options):
1951 Reordered the initialization of data members to keep G++ from
1954 * performance-tests/Synch-Benchmarks/pipe_thr_test.cpp: Changed
1955 some types so that we don't get warnings.
1957 * tests/Mutex_Test.cpp (test): Added a "return 0". Thanks to
1958 David Levine for reporting this.
1960 * ace/TTY_IO.cpp: Rearranged some definitions so that we don't get
1961 "unused variable" warnings from g++.
1963 * ace/SOCK_Dgram.cpp (recv): Rearranged some definitions so that
1964 we don't get "unused variable" warnings from g++.
1966 * tests/Priority_Buffer_Test.cpp (consumer): Fixed a typo -- I was
1967 missing a *... Thanks to David Levine for reporting this.
1969 * ace/OS.h (ACE_SVC_FACTORY_DECLARE): Changed the macro so that it
1970 defines a function with `extern "C"' linkage in order to be
1973 * ace/OS.cpp (thr_create): Moved the conditional compilation test
1974 for ACE_HAS_THR_C_FUNC outside of ACE_HAS_SETKIND_NP since MVS
1975 doesn't have this! Thanks to Chuck Gehr for this info.
1977 * ace/OS.i (thr_sigsetmask): Replaced the tests for
1978 ACE_HAS_DCETHREADS and ACE_HAS_SETKIND_NP with
1979 ACE_LACKS_PTHREAD_THR_SIGSETMASK, which is more appropriate.
1981 * ace/OS.cpp (ace_mutex_lock_cleanup_adapter): Changed the
1982 signature so that it returns "void" rather than "void *".
1983 Thanks to Chuck Gehr for this.
1985 * ace/OS.h: Removed #include <sys/param.h> to avoid problems on
1986 MVS. Thanks to Chuck Gehr for this.
1988 * ace/config-sunos5.5-sunc++-4.1.h: It looks like SunC++ 4.1 still
1989 doesn't fix their template typedefs bugs. So I've commented
1990 this out in the config file. Thanks to Fred LaBar
1991 <flabar@fallschurch.esys.com> for reporting this.
1993 * ace/ACE.cpp (ldfind): Added support for a new feature that will
1994 append the default suffix (e.g., ".dll" or ".so") for a shared
1995 library on the current platform to the name of the file if it
1996 cannot find an suffix. It will also check that a provided
1997 suffix will match the default suffix for that platform and if it
1998 doesn't it will produce a log entry with a warning. This change
1999 will allow unified svc.conf-files for both UNIX and WinNT.
2000 Thanks to Tilo Christ <christ@swl.fh-heilbronn.de> for this.
2002 * ace/OS.cpp (thr_create): Came up with a remarkably clever scheme
2003 that should make it possible to utilize the ACE library *without
2004 change* on MVS, where the frigging C++ compiler requires all
2005 functions passed to pthread_create() have an extern "C" linkage.
2006 The trick was to generalize the thread adapter mechanism used
2009 * ace/OS: Added a new macro called ACE_PTHREAD_CLEANUP_PUSH that
2010 selects the right mechanism (e.g., ace_spawn_adapter or not) for
2011 passing functions to pthread_cleanup_push().
2013 * ace/config-mvs.h: Added a new macro called ACE_HAS_THR_C_FUNC
2014 which expresses the fact that the MVS C++ compiler *must* have
2015 an extern "C" function passed to pthread_create().
2017 * ace/OS.h: Modified all uses of ACE_OS::mutex_lock_cleanup() to
2018 use the extern "C" ace_spawn_adapter() on platforms MVS like MVS
2019 that can't deal with non-C functions to pthread_create. Thanks
2020 to Chuck Gehr for reporting this.
2022 * ace/OS.cpp (thr_create): Added Chuck Gehr's patches for MVS.
2024 Sun Nov 24 12:30:45 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
2026 * ace: Added Chuck Gehr's <gehr@sweng.stortek.com> config-mvs.h
2029 * ace: Began adding support for WinSock 2.0. Thanks to Luca for
2032 * ace/UPIPE_{Acceptor,Connector,Stream}: Updated the UPIPE
2033 components so that they keep a reference count that keeps track
2034 of the number of "owners" (which should always be 2 -- one for
2035 the connector-side and one for the acceptor-side). By keeping
2036 this count, we can ensure that we don't close down the
2037 underlying ACE_Stream until both sides have called close().
2038 This will remove a nasty bug that was lurking in some of the
2041 * ace/Message_Block.h: Added a new copy() method that assumes the
2042 buf passed in is a NUL-terminated string.
2044 * tests/UPIPE_SAP_Test.cpp: Modified this test so that threads
2045 exit in a well-defined order. This should prevent problems on
2048 * ace/OS.i: Changed SIGNAL_SAFE_OS_CALLS to
2049 ACE_HAS_SIGNAL_SAFE_OS_CALLS to be consistent...
2051 * ace/config-vxworks*.h: Removed the SIGNAL_SAFE_OS_CALLS #define
2052 from the VxWorks config files. There's no need to use this by
2055 * ace/Event_Handler: Moved all the default implementations of the
2056 virtual methods in ACE_Event_Handler from the *.i file to the
2057 *.cpp and made them no longer be inlines. This will fix some
2058 problems with some compilers (e.g., MSVC++ 4.1) and is also more
2059 reasonable since there's really no purpose for inlining these
2060 virtual functions since they are rarely called. Thanks to James
2061 Michael Dwyer <jdwyer@knox.edu> for reporting this problem.
2063 Sat Nov 23 12:39:03 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
2065 * ace/Svc_Conf.y: Changed the parser so that it accepts DLL
2066 pathnames that lack *.dll or *.so suffixes. This is necessary
2067 so that we can automatically append the correct suffix depending
2068 on the platform. Thanks to Tilo Christ
2069 <christ@swl.fh-heilbronn.de> for suggesting this.
2071 * ace/Makefile: Updated the Makefile so that it will automatically
2072 insert the appropriate so that conditions for include of
2073 ace/OS.h can be checked correctly.
2075 Fri Nov 22 18:12:49 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
2077 * ace/OS.i (thr_sigsetmask): DCE threads (at least as implemented
2078 by Digital) have no means for setting the signal mask on a
2079 per-thread basis. Therefore, modified the code so that it
2080 correctly returns ACE_NOTSUP_RETURN(-1) for DCEthreads. Thanks
2081 to Thilo Kielmann <kielmann@informatik.uni-siegen.de> for
2084 * performance-tests/Synch-Benchmarks/synch_driver.cpp (run_test):
2085 Fixed this implementation so that it will shut down correctly
2086 when a signal occurs or a timeout occurs (whichever comes
2089 Fri Nov 22 08:02:39 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu>
2091 * ace.{mdp,mak}: Changed ace.mak so that it links with the
2092 non-debug version of Microsoft's multithreaded dll when compiled
2093 with the release option
2095 Thu Nov 21 10:37:40 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
2097 * ace/Service_Config: Changed the implementation of the
2098 Service_Config class so that it no longer inherits from
2099 ACE_Event_Handler. This was causing problems because the new
2100 reactor() method in the ACE_Event_Handler was conflicting with
2101 the static reactor() method on ACE_Service_Config.
2103 * ace/OS.cpp (detach): Since we no longer use an
2104 ACE_Recursive_Thread_Mutex, we can remove the line
2106 else if (ACE_TSS_Cleanup::lock_.get_nesting_level () > 1)
2109 Thanks to Matthias Kerkhoff <make@cs.tu-berlin.de> for
2112 * ace/Thread_Manager.cpp (spawn_n): Replaced int i with size_t i
2113 to avoid warnings between signed and unsigned values.
2115 * ace: There is an easy way to speed up the "Update dependencies"
2116 in MSVC. Just keep the the compiler from complaining about
2117 missing header by inserting a comment like below in the
2118 #include-directives which are not used in Win32.
2120 Therefore, instead of
2122 #include <somefile.h>
2126 #include /**/ <somefile.h>
2128 Please let me know if this causes problems for any
2129 pre-processors. Thanks to Matthias Kerkhoff
2130 <make@cs.tu-berlin.de> for this suggestion!
2132 * ace/OS.cpp: Added support for AfxBeginThread in
2133 ACE_OS::thr_create() and ACE_OS::exit(). Now ACE should work
2134 with MFC when you give the THR_USE_AFX flag to
2135 ACE_OS::thr_create()! Thanks to Matthias Kerkhoff
2136 <make@cs.tu-berlin.de> for this!
2138 * ace/Malloc_T.cpp (avail_chunks): Changed the return value to
2139 ssize_t so we can return -1 if we can't get the lock. Thanks to
2140 Tilo for reporting this.
2142 * ace/config-sunos4-sun3.x.h: Added new #ifdefs for Sun C++ 3.0.1
2143 on SunOS 4.1.3. Thanks to Eric Parker <eparker@credence.com>
2146 * ace/Stack.h: Added a new method called peek() to the
2147 ACE_Unbounded_Queue classes so that the first element can be
2148 retrieved without removing it. Thanks to Luca for this
2151 * ace/SString.cpp (ACE_CString): Changed ACE_CString so that it
2152 uses memcpy() rather than str(n)cpy() so that we can store any
2153 structure into it. Thanks to Luca for this suggestion.
2155 * ace/Acceptor: Since we moved the reactor() accessors to
2156 ACE_Event_Handler we can omit these from the Acceptor and
2159 * ace: Updated the ACE_Reactor and ACE_ReactorEx so that they
2160 automatically sets the pointers in ACE_Event_Handlers. Thanks
2161 to Luca for this suggestion.
2163 * ace/Event_Handler: Added pointers to all the ACE demultiplexors
2164 (e.g., ACE_Reactor, ACE_ReactorEx, and ACE_Proactor) to
2165 ACE_Event_Handler, along with set/get accessor methods. This
2166 supports a very common use-case where an event handler keeps
2167 track of its demultiplexor. Thanks to Luca for this suggestion.
2169 * ace/OS.cpp: Since we do not use the recursion count from the
2170 Recursive Mutex any more in ACE_TSS_Cleanup::exit() we can
2171 replace the Recursive Mutex by a regular ACE_Thread_Mutex that
2172 is recursive on NT natively and more efficient. Thanks to
2173 Detlef for suggesting this.
2175 * ace/OS.cpp: Since we do not use the recursion count from the
2176 Recursive Mutex any more in ACE_TSS_Cleanup::exit() we can
2177 replace the Recursive Mutex by a regular ACE_Thread_Mutex that
2178 is recursive on NT natively and more efficient. Thanks to
2179 Detlef for suggesting this.
2181 * ace: Backed out all of Detlef's changes to ACE_OS and
2182 ACE_TSS::ts_get(). It turns out that this is unnecessary since
2183 he reimplemented ACE_TSS_Cleanup so that it no longer needs to
2184 hold the lock when callbacks are made. Once again, Detlef
2185 proves that he's a macho man, not a boy ;-)
2187 Thu Nov 21 08:12:51 1996 David L. Levine <levine@cs.wustl.edu>
2189 * include/makeinclude/platform_sunos5_sunc++_4.1.GNU:
2190 put back the LD definition
2192 * include/makeinclude/platform_osf1_4.0_g++.GNU:
2193 added LD definition to work with latest wrapper_macros.GNU
2195 Wed Nov 20 10:32:52 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu>
2197 * tests: Mutex_Test.cpp Priority_Buffer_Test.cpp
2198 Reader_Writer_Test.cpp Thread_Pool_Test.cpp were changed
2199 slightly to remove some compile time warnings.
2201 Wed Nov 20 21:35:28 1996 David L. Levine <levine@cs.wustl.edu>
2203 * ace/Svc_Conf_l.cpp: added #include of ace/config.h so that
2204 conditions for include of ace/OS.h can be checked.
2206 Wed Nov 20 02:38:40 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
2208 * ace/Service_Config.cpp: Moved the definition of logger_key_ to
2209 OS.h and changed it to a macro (ACE_LOGGER_KEY) so that it will
2210 be portable to Win32 and UNIX. Thanks to Tilo for reporting
2213 * ace/OS: Changed the return value of ACE_OS::getgid() from uid_t
2214 to gid_t to be POSIX compliant.
2216 * ace/OS.cpp (thr_create): Fixed a typo where we were assigning
2217 stacksize rather than size. Thanks Thilo.
2219 * ace/OS.cpp (thr_create): Added a new piece of code for
2220 ACE_NEEDS_HUGE_THREAD_STACKSIZE, which is necessary to create a
2221 larger per-thread stack size in order to run ACE_Log_Msg::log.
2222 Thanks to Thilo for this.
2224 * tests/TSS_Test.cpp: Changed the name of the static variable
2225 "lock" to "cout_lock" to avoid a potential namespace clash on
2226 Digital UNIX. Thanks to Thilo Kielmann for reporting this.
2228 * ace/SOCK_Dgram.cpp (recv): Added a cast (char *)
2229 io_vec->iov_base so that this would work correctly on platforms
2230 where iov_base is a void * (e.g., AIX and HP/UX). Thanks to
2231 Alan Stewart for the change.
2233 * ace/OS.h: Added a few new changes for Digital UNIX 4.0a. These
2234 should fix problems with ctime_r() and asctime_r(). Thanks to
2235 Dave Trumble for the fixes.
2237 * tests/UPIPE_SAP_Test.cpp: Disabled this test if we don't have
2238 threads and (STREAM Pipes or Win32). Thanks to Thilo Kielmann's
2239 <kielmann@informatik.uni-siegen.de> for this info.
2241 Tue Nov 19 23:09:08 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu>
2243 * ace/Log_Record.cpp (print): Added a call to ACE_OS::fflush
2244 before returning. This change was suggested by Luca in order to
2245 help prevent messages from getting lost when applications exit.
2246 We're unsure of the affects this will have on performance, so we
2247 may change this back in the future.
2249 Tue Nov 19 00:06:57 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
2251 * Released a beta version of ACE 4.0.33 for testing.
2253 * ace/TTY_IO.h: Added the ACE_Export macro before the ACE_TTY_IO
2254 class to make things work correctly for Win32 DLLs. Thanks
2255 to William L. Gerecke <gerecke@rayva.org> for fixing this.
2257 * ace/OS.h: Improved the support for RLIMIT_NOFILE. Thanks to
2258 Alan Stewart <axs2@osi.com> for reporting this.
2260 * ace/OS.h: Removed the following code from OS.h because
2261 it is causing problems on some platforms:
2263 #if (!defined (timespec) && !defined (m88k))
2264 #define timestruc_t struct timespec
2265 #endif /* timespec */
2267 Thanks to Fred LeBar for reporting this.
2269 * ace/OS.cpp (thr_create): Needed to create an
2270 ACE_OS::NULL_hthread so that we can assign the "NULL thread
2271 handle" on POSIX platforms. Thanks to Alan Stewart
2272 <axs2@osi.com> for reporting this.
2274 * ace/OS.i: The HP/UX C++ compiler is unable to grok inline
2275 functions with multiple returns. So I recoded the
2276 ACE_OS::event* methods to avoid this. Thanks to Alan Stewart
2277 <axs2@osi.com> for reporting this.
2279 * ace/OS.h: Moved the "undef" of t_errno until after the inclusion
2280 of mman.h and dlfcn.h to prevent problems with DU4.0a. Thanks
2281 to David Trumble <trumble@steosf.nio.dec.com> for reporting
2284 * ace/Pipe.cpp (open): Fixed a typo where
2285 this->ACE_SOCK::set_option() was being used instead of
2286 writer.set_option(). Thanks to Tilo Christ
2287 <christ@swl.fh-heilbronn.de> for reporting this.
2289 * ace/Message_Queue.h: Fixed a bug where
2291 ACE_Message_Queue <ACE_SYNCH_1> &queue_;
2295 ACE_Message_Queue <ACE_SYNCH_2> &queue_;
2297 Thanks to Rick Orr <rorr@costello.den.csci.csc.com> for
2300 * apps/Makefile: Updated the Makefile so that it no longer tries
2301 to look for Synch-Benchmarks. Thanks to Amos Shapira
2302 <amos@dsi.co.il> for reporting this.
2304 * ace/Activation_Queue.cpp (dequeue): Added a sanity check to make
2305 sure that we actually deleted the first element in the queue.
2306 Thanks to Andres Kruse <Andres.Kruse@cern.ch> for reporting
2309 * include/makeinclude/platform_sunos5_sunc++_4.1.GNU: Added a
2310 minor change to remove the libACE.a archive prior to creating a
2311 new one. This works around bugs with the SunOS 4.x C++
2312 compiler. Thanks to Andres Kruse <Andres.Kruse@cern.ch> for
2315 * ace/Malloc_T.cpp (avail_chunks): Added Fred LeBar's code and
2316 comments for computing the available chunks.
2318 * tests/Mutex_Test.cpp: Rewrote the Mutex_Test so that it behaves
2319 correctly on UNIX and Win32. Thanks to Irfan for reporting the
2322 * ace/Log_Msg.cpp (sync): Somehow, the statement that updated the
2323 pid_ after sync() is called following a fork() got removed, so I
2326 * ace/config-sunos5.*-g++.h: Added the
2327 -D_REENTRANT flag to the config files for the G++ version of
2328 ACE. This fixes a nasty problem that otherwise arises when
2329 compiling on SunOS 5.x. Thanks to Hanan Herzog
2330 <hanan@wallenda.stanford.edu> for reporting this.
2332 Tue Nov 19 21:14:15 1996 David L. Levine <levine@cs.wustl.edu>
2334 * performance-tests/Synch-Benchmarks/Benchmark.{h,cpp}:
2335 use thread ID class for VxWorks as well as Pthreads.
2337 * OS.i, config-{osf1-4.0,sunos5.[45]}-g++.h: Moved GNU
2338 #include <cstring> out of config files and into OS.i.
2340 * ace/Svc_Conf_l.cpp: added #include of ace/OS.h for HPUX and
2343 * ace/Token.cpp: reordered initializations in Ace_Queue_Entry
2344 ctor to match declaration order.
2346 Mon Nov 18 00:47:27 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
2348 * ace/OS.h: Added a new #define called ACE_HAS_BROKEN_CONVERSIONS
2349 to workaround problems with the HP/UX C++ compiler, which
2350 doesn't seem to be able to grok foo->operator T *(). Thanks to
2351 Alan Stewart <axs2@osi.com> for reporting this bug and the fix.
2352 Also updated the config-hpux*.h files with this define.
2354 * examples/Misc: Added a new test (test_get_opt.cpp) which
2355 exercises the ACE_Get_Opt class.
2357 Sun Nov 17 13:00:02 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
2359 * ace/Get_Opt: Replaced the GNU-based implementation of class
2360 ACE_Get_Opt with an implementation based on BSD UNIX. The
2361 advantage here is that the BSD version is not encumbered by the
2362 GNU GPL. Thus, ACE has no more dependencies on GNU GPL. Thanks
2363 to James Hu <jxh@cs.wustl.edu> for finding the BSD code.
2365 Mon Nov 18 00:13:25 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu>
2367 * ace/stdcpp.h: Added this file to ACE. This file contains the
2368 portability ugliness for the Standard C++ Library. As
2369 implementations of the "standard" emerge, this file will need to
2370 be updated. Although not very useful now, we are gearing up for
2371 a support for STL on UNIX and NT.
2373 * ace/OS.h: Added an include "ace/stdcpp.h".
2375 * ace/Log_Record.h (ACE_Log_Record): Removed the iostream include
2376 mess that got accidentally committed to the release.
2378 Sun Nov 17 00:13:25 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu>
2380 * For some totally evil reason, MSVC++ will not allow any use of
2381 the "allocator" symbol. It's an STL thing. As a result, I've
2382 had to change all of the following files to rename allocator to
2383 alloc: Local_Name_Space_T.cpp, Map_Manager.cpp, Malloc_T.cpp,
2384 Message_Block.cpp, Read_Buffer.cpp, SString.cpp. The root
2385 of the problem can be seen by compiling the code below:
2387 template <class TYPE>
2390 int foo; // compile error because of the foo<> class.
2392 int main () { return 0; }
2394 * Service_Config.{h,cpp}: We have to change the allocator
2395 accessors to alloc. This is probably going to break
2396 many things. If necessary, we can conditionally compile in the
2397 old accessors for platforms that are not using STL and MSVC++.
2399 * ace/Task.h: Added ACE_Export macros to the class definitions.
2401 Sun Nov 17 13:00:02 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
2403 * ace: Added Thilo Kielmann's <kielmann@informatik.uni-siegen.de>
2404 patches for OSF/1 4.0a.
2406 * ace/OS: Revised the implementation of ACE_OS::asctime_r() and
2407 ACE_OS::ctime_r() to simplify common cases. However, this may
2408 have broken some code on OSF/1 4.0a. Can someone please check
2411 * tests/SPIPE_Test.cpp: Conditionally compiled this file so that
2412 we only build the SPIPE test if (1) we're running on Win32 or
2413 (2) ACE_HAS_STREAM_PIPES. Thanks to David Levine for this
2416 * ace/OS.i (ctime_r): Fixed a typo that was caused by a misplaced
2417 #endif. Thanks to Eshel Liran <liran@macs.biu.ac.il> for
2420 * ace/Time_Value: Disabled ACE_TRACE within these method in order
2421 to prevent infinite recursion.
2423 * ace/Log_Record: Originally, when verbose mode was enabled you
2424 can get the date and time down to the seconds. However, it is
2425 useful for performance testings to have milliseconds displayed
2426 in the log. To accomplish this, I changed ACE_Log_Msg and
2427 ACE_Log_Record to they also keep track of and print the microsec
2428 time, as well. Thanks to Luca for suggesting this.
2430 * ace/Map_Manager.cpp: updated all the ACE_Map_Manager methods so
2431 their read and write Guards use the ACE_*_GUARD macros.
2433 * ace/Malloc_T.cpp: Updated all the ACE_Malloc methods so their
2434 read and write Guards use the ACE_*_GUARD macros.
2436 * ace/OS.cpp (svc_run): Added an ACE_DEBUG announcing that an
2437 exception has propagated beyond the outermost svc_run()
2438 function. Thanks to Luca for this suggestion.
2440 * tests/test_config.h: VxWorks passes in a NULL argv (arrghhh...).
2441 Therefore, to work around this in the ./tests directory, I changed
2442 the ACE_START_TEST macro to take a NAME parameter, and then I
2443 added the following local variable:
2445 const char *program = argv ? argv[0] : NAME;
2447 Thanks to David Levine for this fix.
2449 Sat Nov 16 12:01:08 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
2451 * examples/Threads/test_tss2.cpp: Added Detlef's new test for
2454 * ace/Synch_T.cpp (ts_get): Added Detlef's changes to fix deadlock
2455 problems with ACE_TSS on NT.
2457 Fri Nov 15 18:01:26 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
2459 * ace/ACE_SOCK_Stream.cpp: NT will signal an abortive close
2460 to the opposite party if a socket is closed before all of its
2461 data has been sent out. According to the NT SDK-docs, you should
2462 do a shutdown before the closesocket() in order to prepare a
2463 graceful close. Thus, I've placed an
2464 ACE_SOCK_Stream::close_writer() method just before the call to
2465 ACE_SOCK::close() in the new close() of the ACE_SOCK_Stream
2466 class. Thanks to Tilo Christ <christ@swl.fh-heilbronn.de> for
2469 * ace/INET_Addr.cpp: The function ACE_INET_Addr::addr_to_string
2470 was a virtual function that is also inline and defined in the .i
2471 file. Some compilers have a problem with this, so I moved it
2472 into the *.cpp file. In addition, its sister function was also
2473 virtual and is defined as:
2476 ACE_INET_Addr::string_to_addr (const char s[])
2478 in the .cpp file. I removed the ACE_INLINE directive. Thanks
2479 to Fred LaBar <flabar@fallschurch.esys.com> for reporting this.
2481 Thu Nov 14 16:20:20 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
2483 * ace/Malloc_T.cpp: Added a new method to ACE_Malloc that will
2484 return the number of chunks available on the free list. Thanks
2485 to Fred Labar <flabar@fallschurch.esys.com> for this.
2487 Wed Nov 13 01:22:16 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
2489 * ace/ReactorEx.cpp (handle_events): I've changed siginfo_t on
2490 Win32 (which was previously typedef'd to int) so that it has the
2491 following structure:
2495 siginfo_t (ACE_HANDLE handle);
2497 ACE_HANDLE si_handle_;
2498 // Win32 HANDLE that has become signaled.
2501 Then, I've changed the ACE_ReactorEx::handle_events() method to
2504 // Assign the ``signaled'' HANDLE so that callers can get
2506 siginfo_t sig (relative_handles[relative_index]);
2508 if (relative_handlers[relative_index]->handle_signal
2511 Thus, you can refer to the signaled handle as
2515 within the handle_signal() call back. Thanks to Matthias
2516 Kerkhoff <make@cs.tu-berlin.de> for suggesting this.
2518 * ace/System_Time.h: Made ACE_System_Time::get_local_time() a
2519 static member function. Thanks to Matthias Kerkhoff
2520 <make@cs.tu-berlin.de> for suggesting this.
2522 * ace/Message_Queue.h: The internal variables for counting the
2523 bytes stored in the queue were declared as of type int (in
2524 Message_Queue.h). But they are set (e.g. with
2525 ACE_Message_Queue::ACE_Message_Queue) with values of size_t.
2527 When running tests/Priority_Buffer_Test, the high_water_mark_ is
2528 preset with the value LONG_MAX. While assigning this value from
2529 size_t to int, this becomes -1 and the queue is always believed
2530 to be full :-( The fix is to change the internal data structures
2531 in Message_Queue.h from int to size_t. Thanks to Thilo Kielmann
2532 <kielmann@informatik.uni-siegen.de> for reporting this.
2534 * tests: Fixed problems with the following three tests:
2536 Priority_Buffer_Test.cpp
2537 Reader_Writer_Test.cpp
2540 When these are compiled with gcc on Digital UNIX 4.0a the static
2541 ACE_Thread_Manager thr_mgr; was never getting initialized due to
2542 gcc compiler bugs. The fix is to replace the static thread
2543 manager with the ACE_Service_Config::thr_mgr() singleton.
2544 Thanks to Thilo Kielmann <kielmann@informatik.uni-siegen.de> for
2547 Tue Nov 12 19:43:12 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
2549 * ace/Thread_Manager.cpp (spawn_n): Was missing a 0 after ?.
2550 Thanks to Thilo Kielmann <kielmann@informatik.uni-siegen.de> for
2553 * ace/Log_Msg.h: Created a new macro call ACE_ERROR_BREAK(X) {
2554 ACE_ERROR(X); break;} for use within switch and loop statements.
2555 Thanks to Luca for this idea.
2557 * ace/Pipe.cpp: Enabled the "reuse addr" flag for accepting and
2558 connecting the Win32 version of ACE_Pipe. Thanks to Luca for
2559 reporting this problem.
2561 * ace/OS.i (thr_join): ACE_Thread::join () has a default second
2562 parameter (the status) set to 0. This is not handled in
2563 ACE_OS::thr_join(). To avoid getting a system error in NT we
2564 handle this as we did with ACE_OS::thr_create() and the
2565 thr_handle parameter.
2567 * ace/config-irix6.2-sgic++.h: Updated the set of patches required
2568 for IRIX 6.2. Thanks to Amos Shapira for reporting this.
2570 Sun Nov 10 15:40:17 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu>
2572 * ace/Token_Invariants.cpp: Moved static data
2573 declarations out of ACE_Token_Invariant_Manager::instance and
2574 into the header file. This is supposed to help with a g++
2577 Sun Nov 10 13:22:03 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
2579 * ace/Pipe.cpp (open): Set the loopback socket into TCP_NODELAY
2580 mode so that we don't block for 200 ms... Thanks to Luca
2581 Priorelli <lucapri@mbox.vol.it>.
2583 * ace/Thread_Manager: Created a new version of spawn_n() that
2584 gives parameters for stack, stack_size, and also for the
2585 assigned ACE_hthread_t's. Thanks to Thilo Kielmann
2586 <kielmann@informatik.uni-siegen.de> for suggesting this.
2588 Sun Nov 10 13:56:38 1996 Prashant Jain <pjain@merengue.cs.wustl.edu>
2590 * tests/Reactors_Test.cpp (main): Fixed the test so that the
2591 output of the test goes to a log file instead of STDOUT.
2593 Sat Nov 9 11:23:13 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
2595 * ace/Synch.i: Fixed a bug in ACE_Thread_Mutex_Guard.
2598 this->owner_ == block ? this->lock_.acquire () : this->lock_.tryacquire ();
2602 this->owner_ = block ? this->lock_.acquire () : this->lock_.tryacquire ();
2604 Thanks to Alexander Smundak <sasha@migration.com> for reporting
2607 Sat Nov 9 01:44:15 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu>
2609 * ace/Message_Queue: Added forward and reverse iterators to
2610 Message_Queue. Also, added typedefs to Message_Queue for
2611 ITERATOR, and REVERSE_ITERATOR. This makes the Queue like an STL
2612 collection and also makes it easier to use since you don't have
2613 to define types for the iterators. Please see
2614 test/Message_Queue_Test.cpp for an example.
2616 * ace/Map_Manager: Added reverse iterator to Map_Manager. Also,
2617 added typedefs to Map_Manager for ENTRY, ITERATOR, and
2618 REVERSE_ITERATOR. This makes the Map more like an STL collection
2619 and also makes it easier to use since you don't have to define
2620 types for the iterators and the entry. Please see
2621 test/Map_Manager_Test.cpp for an example. Note that the new
2622 typedefs does not break existing code.
2624 Fri Nov 8 20:04:26 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
2626 * ace/Malloc.h: Fixed a typo on line 176 that reads:
2628 #include "ace/Sync_T.h"
2632 #include "ace/Synch_T.h"
2634 Thanks to Todd Barkalow <todd_barkalow@stortek.com> for
2637 Wed Nov 6 00:38:02 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
2639 * ace/Pipe: Added the const qualifier to the following methods:
2641 ACE_HANDLE ACE_Pipe::read_handle (void) const;
2642 ACE_HANDLE ACE_Pipe::write_handle (void) const;
2644 Thanks to Luca for reporting this.
2646 * ace/config-win32-msvc4.0.h: Redefined
2647 ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES since it looks like
2648 MSVC++ 4.0 still doesn't work. Maybe this is fixed in 4.2?
2650 Tue Nov 5 03:09:44 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
2652 * ace/Strategies.cpp: I'd forgotten to update one of the
2653 accept(*svc_handler) calls to use the new
2654 accept(svc_handler->peer()) syntax.
2656 * netsvcs/lib/Server_Logging_Handler.cpp: Added a cast to
2657 (COUNTER) 0 when initializing ::request_count_ to avoid problems
2658 on Win32. Thanks to Luca for pointing this out.
2660 * ace/Thread_Manager: Added a new thr_self() method that return
2661 the unique ID of the thread. This is not strictly necessary
2662 (because a thread can always just call <ACE_Thread::thr_self>).
2663 However, we put it here to be complete. Thanks to Hamutal Yanay
2664 <Hamutal_Yanay@mail.icomverse.com> for suggesting this.
2666 * ace/OS.cpp (thr_create): I was accidentally closing down
2667 ::CloseHandle (thr_handle) (where thr_handle is a HANDLE *) when
2668 I should have been doing a ::CloseHandle (handle) instead.
2669 Thanks to Luca for finding this!
2671 Tue Nov 5 14:26:32 1996 David Levine <levine@cs.wustl.edu>
2673 * include/makeinclude/wrapper_macros.GNU: Changed LINK.{c,cc}
2674 commands to use LD instead of CXX. Changed all platform macros
2675 files (except for g++ on VxWorks) to correspond.
2677 * tests/run_tests.sh: changed -e test to -f for portability and
2678 reordered tests. Thanks to Michael Michael Rueger
2679 <m_rueger@SYSCOMP.DE> for originally creating run_tests.sh, and
2680 for maintaining it, and to Alan Stewart <axs2@osi.com> for
2681 suggesting fixes/enhancements.
2683 * tests/Time_Service_Test.cpp and Tokens_Test.cpp: changed to
2684 return 0 on success instead of 42
2686 Fri Nov 1 03:53:39 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu>
2688 * STL: Added STL files to $WRAPPER_ROOT/STL. This code is a
2689 modified version (changes for VC++ compiler) of the publicly
2690 available implementation of STL from HP. Currently,
2691 ACE_Registry uses these STL classes.
2693 Fri Nov 1 00:25:01 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
2695 * ace/CORBA_Handler.cpp (process_events): There was a very subtle
2696 race condition in the ACE_MT_CORBA_Handler. process_events()
2697 accessed the singleton directly without taking the mutex. At
2698 startup the process_event thread is kicked off from the
2699 constructor and the instance_ is set. Hence the race. The
2700 solution is to attempt to take the mutex before accessing the
2701 instance. Thanks to David Artus <david.artus@sbil.co.uk> for
2702 reporting the problem and providing the fix.
2704 * ace/Log_Msg.cpp (log): Improved the performance of the Log_Msg
2705 mechanism by not doing any parsing of the format string if the
2706 user has disabled this priority.
2708 * ace/Reactor.cpp: Added a chance for the open() method of the
2709 Notification_Pipe failing. Thanks to Luca for pointing this
2712 * ace/Reactor.cpp (handle_events): Added a change to the semantics
2713 of the ACE_Reactor so that it doesn't fall out of the event loop
2714 when signals arrive that it handles. Thanks to Stuart Powell
2715 <stuartp@in.ot.com.au> for this fix.
2717 * ace/Service_Repository.cpp (remove): Fixed a bug with
2718 Service_Record::remove() that was failing if there were only two
2719 records and we are removing the first one. Thanks to Alex
2720 Villazon <villazon@cui.unige.ch> for reporting this.
2722 * ace: Recompiled everything on Solaris with G++ and CC and it
2725 * ace/Module: Replaced the use of char * with const char * for
2726 assigning the Module a name.
2728 * ace: Split the Task.{cpp,i.h} file into Task_T.{cpp,i,h} in
2729 order to factor out the new non-template ACE_Task_Base and
2730 ACE_Task_Exit classes. This is required for GCC-based compilers
2731 that include the *.cpp files...
2733 Thu Oct 31 00:36:38 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
2735 * ace/Malloc_T.h: Made the destructor of ACE_Allocator_Adapter
2738 * ace/Thread: Reorganized the ACE_Thread so that the
2739 ACE_HAS_THREADS #ifdef is no longer required...
2741 * ace/Strategies.h: Changed all the destructors to be virtual so
2742 that G++ will stop complaining...
2744 * ace/Thread_Manager: Reorganized the ACE_Thread_Manager so that
2745 the ACE_HAS_THREADS #ifdef is no longer required...
2747 * ace/config-win32-msvc4.0.h: Added Dieter Quehl's great hack to
2748 get ACE to compile correctly on Win32 with MFC!
2750 * ace/Task: I've rearranged the implementation of ACE_Task<>
2751 in the following way:
2753 1. Defined a non-template class ACE_Task_Base from which the
2754 ACE_Task<...> inherits (instead of inheriting from
2755 Ace_Service_Object, which ACE_Task_Base now inherits from.
2757 2. Move all methods that don't depend on the <ACE_MT_SYNCH> or
2758 <ACE_NULL_SYNCH> modifers from the ACE_Task template to
2761 There are two motivations for making this change:
2763 1. It reduces ``template bloat'' by factoring out common
2764 code that can be shared between ACE_Task<ACE_MT_SYNCH>
2765 and ACE_Task<ACE_NULL_SYNCH>.
2767 2. It makes it possible for the Thread_Manager to use
2768 ACE_Task_Base *'s for managing groups of ACE_Tasks
2769 in a fully polymorphic manner.
2771 Note that the new changes don't break any existing code that
2772 uses ACE_Task. Thanks to Hamutal Yanay
2773 <Hamutal_Yanay@hub.comverse.com> and Ari Erev's
2774 <Ari_Erev@comverse.com> for suggesting these changes.
2776 * ace/Thread_Manager: Changed the use of ACE_Task<ACE_SYNCH> to
2777 ACE_Service_Object because this avoids nasty problems with
2778 template type conflicts. The right solution is probably to
2779 create a new non-template base class for ACE_Task called
2780 ACE_Task_Base and move all the ACE_Task operations into there
2781 that don't involve the Message_Queue directly. I'll need to
2782 think more about this...
2784 * ace/SOCK_Stream: Added new timed send_n() and recv_n() methods,
2785 which use the underlying timed ACE::send() and ACE::recv()
2788 * ace/ACE.cpp: Added new timed send_n() and recv_n() methods,
2789 which use the underlying timed ACE::send() and ACE::recv()
2792 Wed Oct 30 00:27:21 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
2794 * ace/OS.h: Changed MAXHOSTNAMELEN on Win32 from
2795 (MAX_COMPUTERNAME_LENGTH+1) (which is around 16 or so) to 256.
2796 Thanks to Tilo Christ <christ@swl.fh-heilbronn.de> for this
2799 * ace: Made #define STRICT a compile time option if the
2800 ACE_HAS_STRICT flag is enabled. This prevents ACE from breaking
2801 existing application (i.e., non-ACE) code. Thanks to Karlheinz
2802 for pointing this out!
2804 * ace/Synch_T.cpp: Fixed a typo in ACE_Condition<MUTEX>::wait
2807 return ACE_OS::cond_wait (&this->cond_, this->mutex_.lock_);
2811 return ACE_OS::cond_wait (&this->cond_, &this->mutex_.lock_);
2813 Thanks to Dieter Quehl <dietrich.quehl@med.siemens.de> for
2816 * ace/Svc_Handler.h: Removed the operator ACE_PEER_STREAM &() from
2817 the ACE_Svc_Handler class since we don't need it anymore due to
2820 * ace/{Acceptor,Connector}.cpp: Removed the use of operator
2821 ACE_PEER_STREAM &() in the Acceptor::accept() and
2822 Connector::connect() code and replaced it with
2823 svc_handler->peer(). This works much better and is more
2826 Wed Oct 30 00:30:00 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu>
2828 * Registry: Added a Name Service implementation to ACE based on
2829 Win32 Registry. The ACE_Registry interface is inspired by the
2830 interface specified in the CORBA Naming Service Specification.
2831 The implementation is done through Win32 Reg*() functions.
2832 Other than providing an OO wrapper for the Win32 Reg*()
2833 functions, ACE_Registry provides an abstraction for iteration
2834 over the elements of the Registry. This only works on Win32
2835 platforms (unless you are brave enough to reimplement the
2836 Win32 Registry API on UNIX and link it in underneath ACE!).
2838 * ace/Local_Name_Space_T.cpp: Moved SEH out of methods of
2839 Name_Space_Map to the methods of Local_Name_Space. Some of
2840 the calls to Local_Name_Space methods used the allocator to
2841 either malloc or find or free shared memory. Adding SEH to these
2842 methods ensured that any exception raised due to remapping would
2843 be caught and handled appropriately.
2845 Also, to fool the stupid MFC compiler, we added _i methods
2846 so that it stopped bitching about destructors not getting called
2849 * Added three new tests to /examples/Naming. Thanks to Lothar for
2850 providing these tests.
2852 Tue Oct 29 18:10:09 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
2854 * ace/ACE.cpp (send): Integrated a new and simpler version of
2855 timed ACE::send(). Thanks to Vital Aza <va3@cs.wustl.edu> for
2856 coming up with this.
2858 * ace/XtReactor.cpp: When the ACE_Reactor is constructed it
2859 creates the notify pipe and registers it with the attach()
2860 method. The XtReactor overloads this method BUT because the
2861 attach occurs when constructing the base class ACE_Reactor, the
2862 ACE_Reactor attach() is called not the XtReactor attach(). This
2863 means that the notify pipe is registered with the ACE_Reactor
2864 event handling code not the XtReactor and so notfications don't
2865 work. To get around this we simply close and re-opened the
2866 notification handler in the constructor of the XtReactor.
2867 Thanks to Rodney Skinner <rods@in.ot.com.au> for this fix.
2869 * ace/XtReactor.cpp (schedule_timer): The ACE_Reactor returns a
2870 timer_id from it's equivalent call but the XtReactor always
2871 returns 0. To fix this we simply replaced the "return 0;" in
2872 the function with "return result;" Thanks to Rodney Skinner
2873 <rods@in.ot.com.au> for reporting this.
2875 Tue Oct 29 00:02:44 1996 Douglas C. Schmidt <schmidt@lambada.cs.wustl.edu>
2877 * ace/config-win32-msvc4.0.h: Defined the STRICT symbol based on a
2878 suggestion from Luca. STRICT type checking in WINDOWS.H
2879 enhances type safety for Windows programs by using distinct
2880 types to represent all the different HANDLES in Windows. So for
2881 example, STRICT prevents you from mistakenly passing an HPEN to
2882 a routine expecting an HBITMAP. Note that if you have STRICT
2883 type checking enabled in one file, but not in another, the C++
2884 compiler will generate different external link symbols for a
2885 single function. This will result in link-time errors If you are
2886 mixing STRICT and non-STRICT code, you must be aware of linkage
2887 inconsistencies. In general, all MFC programming and all C++
2888 should be done with STRICT. If you have legacy C code, then not
2889 using STRICT is acceptable
2891 * ace/OS.cpp (thr_create): Added a special check for the situation
2892 where we have both ACE_HAS_PTHREADS and ACE_HAS_STHREADS
2893 defined. In this case, we are running on Solaris, where
2894 ACE_thread_t and ACE_hthread_t are the same. Therefore, we can
2895 copy the value of the *thr_id into the *thr_handle. This
2896 ensures that the ACE_Thread_Manager behaves correctly with
2897 respect to suspending and resuming threads and ACE_Tasks.
2899 * ace/Trace.cpp (ACE_Trace): Changed the use of LM_DEBUG to
2900 LM_TRACE in the constructor and destructor. Thanks to Luca for
2903 * ace/OS.i: Added a cast to of (HMODULE) handle so that the STRICT
2904 macro would work correctly for Win32. Thanks to Luca for this.
2906 * ace/config-win32-msvc4.0.h: According to Luca, ACE compiles file
2907 with ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES undefined on NT. So
2908 I undefined it! If there are any problems with this, please let
2911 * ace/SOCK_Dgram: Added Luca Priorelli <lucapri@mbox.vol.it>
2912 implementation of recv() for SOCK Dgrams that allows clients to
2913 read from a socket without having to provide a buffer to read.
2915 * examples/Threads/test_task_four.cpp: This is a new test
2916 program to test the new interfaces. Thanks to Hamutal Yanay
2917 & Ari Erev for this.
2919 * tests/test_config.h: Added a call to the new ACE_OS::mkdir()
2920 wrapper to create the log directory if one doesn't already
2921 exist. This should solve some nasty problems with NT reported
2922 by Tilo Christ <christ@swl.fh-heilbronn.de>.
2924 * ace/OS.h: Added a new macro ACE_DEFAULT_DIR_PERMS and changed
2925 the spelling of the existing ACE_DEFAULT_PERMS to
2926 ACE_DEFAULT_FILE_PERMS, which is more accurate.
2928 Mon Oct 28 21:35:12 1996 Douglas C. Schmidt <schmidt@lambada.cs.wustl.edu>
2930 * ace/OS.h: Added a wrapper for the mkdir() system call. We need
2931 it for some of the tests.
2933 * ace/Task: Changed the name of ACE_Task_Exit<>::set_this() to
2934 ACE_Task_Exit<>::set_task(). Thanks to Hamutal Yanay & Ari Erev
2935 for suggesting this.
2937 * ace/{Task,Thread_Manager}: Integrated Hamutal
2938 <Hamutal_Yanay@hub.comverse.com> Yanay & Ari Erev's
2939 <Ari_Erev@comverse.com> enhancements to add ACE_Task support
2940 to the ACE_Thread_Manager. This allows the ACE_Thread_Manager to
2941 know about ACE_Tasks directly, rather than knowing
2942 indirectly via their lower-level thread IDs. The changes
2943 are described below:
2945 - Added a parameter to the activate() method. It is used to
2946 pass an ACE_Task* to spawn_n().
2948 - Modified suspend() and resume() to call
2949 thrMgr->suspend_task() and thrMgr->resume_task() instead of
2950 thrMgr->suspend_grp() and thrMgr->resume_grp().
2952 - Added an ACE_Task * parameter to spawn_n().
2954 - Added an ACE_Task * parameter to append_thr().
2956 - append_thr() uses the ACE_Task * input parameter to
2957 initialize the thread descriptor.
2959 - Added the following methods:
2968 num_tasks_in_group()
2969 num_threads_in_tasks()
2975 set_grp() Like the current set_grp() but gets an ACE_Task *
2977 get_grp() Like the current set_grp() but outputs an
2983 Sun Oct 27 11:25:00 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
2985 * ace/OS: modified the ACE_OSCALL_RETURN macro so that we'll
2986 no longer have zillions of warnings about _result not
2989 * ace/Synch_T: Changed the use of ACE_Mutex for ACE_TSS to
2992 * ace: Added the necessary template specializations to get ACE
2993 compiled correctly with G++.
2995 * ace/Log_Msg.h: There were some places in the ACE_{DEBUG,ERROR}
2996 macros that should have been using __ace_error but there still
2997 using errno (which is wrong since this might be changed due to
2998 side-effects of calling ACE_Log_Msg::instance()). I found this
2999 problem due to the use of -Wall with G++! As a result of this
3000 fix, ACE now compiles much more cleanly with gcc -Wall.
3002 * ace/Strategy: Improved the scheme used to define the PEER_ADDR
3003 type of the ACE_Accept_Strategy so that it will work correctly
3004 on platforms whose C++ compilers aren't quite up to handling all
3005 variants of template typedefs. In particular, many platforms
3006 don't support the use of template typedefs in parameter names...
3008 * ace/OS: HP/UX omitted the const in the prototype of
3009 const_timewait(). Therefore, I added a new typedef to handle
3010 this and updated all the HP/UX config*.h files.
3012 * ace: Added a new config file (config-sunos5.5-sunc++-4.1.h)
3013 which reflects the fact that SunC++ 4.1 fixes template bugs that
3014 prevented earlier versions from supporting template typedefs
3015 correctly. The new config file #defines
3016 ACE_HAS_TEMPLATE_TYPEDEFS.
3018 Sat Oct 26 02:22:25 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3020 * ace: On the advice of David Levine, I compiled ACE with gcc
3021 -Wall and started to fix lots of minor warnings (e.g.,
3022 misordered data member initializations).
3024 * ace/Local_Tokens.h: Changed the destructors of ACE_Mutex_Token,
3025 ACE_RW_Token, ACE_Token_Proxy, and ACE_RW_Token to be virtual.
3027 * ace/Synch_T.h: Changed the destructor of ACE_TSS to be virtual.
3029 * ace/OS: Changed the prototype of ACE_OS::select() so that it
3030 uses const ACE_Time_Value *.
3032 * Updated all uses of ACE_Malloc to use the new ACE_*_MEMORY_POOL
3033 #defines. This makes it possible to use the ACE_Malloc<> scheme
3034 with lame C++ compilers.
3036 * ace/ACE: Changed the interface of the new timed send/recv calls
3037 to use ACE_Time_Value *, which makes it easier to determine
3038 the blocking semantics at runtime. Thanks to Bill Fulton
3039 <bill@fasttrack2.bscc.bls.com> for suggesting this.
3041 Sat Oct 26 15:55:02 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu>
3043 * ace/OS.h: We determined that MSVC++ is capable of supporting
3044 template typedefs. Therefore, we can enable the
3045 ACE_HAS_TEMPLATE_TYPEDEFS flag, which makes life much easier for
3048 Fri Oct 25 23:16:16 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu>
3050 * examples/Shared_Malloc/test_multiple_mallocs.cpp: Added a new
3051 test that demonstrates the new ability of ACE_Malloc<> to to
3052 handle multiple mallocs rooted at different base addresses.
3054 * ace/Memory_Pool: Fixed this stuff so that it works even when C++
3055 compilers can't grok template typedefs.
3057 * ace: Put all the macros that handle the fact that many C++
3058 compilers have broken template implementations into one place
3059 (OS.h), rather than having this spread out in many files.
3061 * In ACE_MMAP_Memory_Pool::init_acquire (), we reset errno to 0 in
3062 the case where the file already exists (and errno == EEXIST).
3064 * Added an ACE_*_Memory_Pool_Options class to each Memory Pool
3065 class. The Options class allows detailed parameters to be passed
3066 to the constructor of the Memory Pool class. Since a typedef'd
3067 Options class was added to every Memory Pool class, this gave us
3068 the ability to use traits in ACE_Malloc and
3069 ACE_Allocator_Adapter to construct generic Memory Pools that can
3070 be initialized uniquely for each instance of ACE_Malloc. Note
3071 that this new feature only works for C++ compilers that support
3072 template typedefs correctly (e.g., MSVC++ 4.x, SunC++ 4.1,
3073 and the AIX C++ compiler).
3075 * Added additional constructors to ACE_Malloc and
3076 ACE_Allocator_Adapter to allow Options to be passed in to Memory
3079 * Added an extra field in ACE_Name_Options which allows
3080 specification of the base address of the memory pool. This is
3081 now used by ACE_Local_Name_Space::create_manager() to create an
3082 ACE_Allocator_Adapter. This now allows us to have multiple
3083 ACE_Naming_Context simultaneously in the same process address
3086 * Also added error checking for constructors (in
3087 ACE_Local_Name_Space and ACE_Malloc) by checking errno
3088 values. This is a "hack" since we currently do not use exception
3091 Thu Oct 24 02:43:11 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3093 * examples/Connection/misc/Makefile: The Makefile in
3094 ACE_wrappers/examples/Connection/misc seems to have been
3095 truncated. I replaced it. Thanks to Alan Stewart
3096 <axs2@osi.com> for reporting this.
3098 * examples/IPC_SAP/SOCK_SAP/CPP-{inclient,inserver}.cpp: Updated
3099 these examples to use the new timed send()/recv() operations.
3101 * ace/SOCK_IO: Added timed send()/recv() methods, using the base
3102 level implementations in class ACE.
3104 * ace/ACE: Added timed send()/recv() methods.
3106 Wed Oct 23 19:56:45 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3108 * examples/IPC_SAP/SOCK_SAP/CPP-inclient.cpp (main): Changed the
3109 behavior of the test program so that it doesn't take a
3110 local_addr, but rather will use the default (this prevents a
3111 common problem that happens when users run the test without
3112 reading the README file).
3114 * ace/ACE.cpp: Added a new method (get_flags) that returns the
3115 current setting of flags associated with handle.
3117 * Start of a brave new world: ACE is now under CVS version
3118 control... Thanks to David Levine and Chris Cleeland
3119 for making this happen.
3121 Sat Oct 19 12:33:56 1996 David L. Levine <levine@cs.wustl.edu>
3123 * added ACE threads mappings to VxWorks 5.2 tasks in OS.*.
3124 NOTE: this is _untested_ at this point, but only affects
3127 * changed name of first argument of ACE_OS::sigprocmask() and
3128 ACE_OS::thr_sigsetmask() from "signum" to "how" to better
3129 represent what it really is.
3131 Wed Oct 16 01:59:40 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3133 * ace/Log_Record.cpp (print): added Luca's suggestion for checking
3134 if host_name == 0 for the ostream version of print(), as well.
3136 * Released version of ACE 4.0.32 for testing.
3138 * ace/Synch.h: Added many small fixes for HP/UX 10.x. Thanks to
3139 Alan Stewart <axs2@osi.com> for providing these.
3141 * ace/OS.h: Added many new ACE_LACKS* and ACE_HAS* macros to
3142 support the MVS port. Thanks to Chuck Gehr
3143 <gehr@sweng.stortek.com> for these.
3145 Tue Oct 15 11:56:59 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3147 * ace/OS.h: in a continuing effort to protect the ACE namespace,
3148 I've changed ace/OS.h around lines 127-137 so that "SYNCH" and
3149 "SYNCH_MUTEX", etc. are prefixed with "ACE_". Thanks to Alan
3150 Stewart <axs2@osi.com> for suggesting this.
3152 * ace/Local_Tokens.h: Removed an unnecessary parameter name
3153 that was unused. Thanks to Stuart Powell <stuartp@in.ot.com.au>
3156 Tue Oct 15 17:03:37 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu>
3158 * ace/ReactorEx.cpp (handle_events): Fixed a bug in handle_events
3159 so that the correct handlers get called when multiple handles
3160 become signaled simultaneously. Thanks to Ari Erev
3161 <Ari_Erev@comverse.com> for pointing out this bug. I also took
3162 this opportunity to fix a bug when handlers are removed during
3165 * examples/Reactor/ReactorEx/test_remove_handler.cpp: Added a new
3166 application that tests how the ReactorEx services simultaneous
3167 events and removes handlers. This example also illustrates the
3168 use of the new ACE_Events wrapper. Check
3169 examples/Reactor/ReactorEx/README for more details.
3171 Mon Oct 14 11:43:18 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3173 * tests: Added a new version of run_tests.sh, which was
3174 contributed by Michael Rueger <mike@SYSCOMP.DE>.
3176 * examples/Logger/simple-server/Logging_Handler.cpp (handle_input)
3177 and examples/Logger/Acceptor-server/server_loggerd.cpp
3178 (handle_input): Changed from stderr to cerr to work around bugs
3179 with the C run-time libraries on Win32. Thanks to Tilo Christ
3180 <christ@swl.fh-heilbronn.de> for suggesting this.
3182 Mon Oct 14 11:09:42 1996 Prashant Jain <pjain@merengue.cs.wustl.edu>
3184 * ace/Local_Name_Space_T.cpp (remap): Added processor specific
3185 stuff to remap(). The code was taken from the book "Win32
3186 Network Programming" by Ralph Davis (p.18) and takes care of
3187 cases specific to the 80x86 processor. The code ensures that the
3188 registers are set properly when we continue execution after an
3191 Sun Oct 13 21:18:38 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3193 * ace/Log_Record.cpp (print): Added a test to make sure that the
3194 value returned from ctime_r != 0 (e.g., if time_stamp_ == -1) in
3195 order to avoid crashes.
3197 * examples/Logger/client/logging_app.cpp (main): Moved the
3198 construction of the ACE_Log_Record log_record object into the
3199 loop so that it will be recreated each time through. If this
3200 isn't done, then we'll be continually "encoding" values into
3201 network byte order that have already been encoded and screwing
3202 things up on little-endian machines (such as Intel). Thanks to
3203 Irfan and Tilo Christ <christ@swl.fh-heilbronn.de> for pointing
3204 me in the right direction on this.
3206 * ace/Log_Record.cpp: Changed the default constructor so that it
3207 gives default initializations to the data members.
3209 * examples/Logger/Acceptor-server/server_loggerd.cpp (handle_input):
3210 Fixed a couple of typos where
3212 Logging_Handler::handle_input (int)
3216 Logging_Handler::handle_input (ACE_HANDLE)
3226 Thanks to Irfan for finding these.
3228 Sat Oct 12 08:48:23 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3230 * Released a beta version of ACE 4.0.32 for testing.
3232 * ace/Log_Record.cpp: rewrote the code a bit to try and avoid
3233 problems on NT when host_name == 0.
3235 * ace/Log_Record.cpp: Changed the use of ACE_OS::ctime() to
3236 ACE_OS::ctime_r() to avoid problems that might arise when
3237 ACE_Log_Record::print() is called from multiple threads.
3239 * ace/Log_Record.cpp: Commented out calls to ACE_TRACE to avoid
3240 weird problems with circular dependencies. Thanks to Luca
3241 Priorelli <lucapri@mbox.vol.it> for suggesting this.
3243 * build/SunOS5.5/examples/Makefile: Added the Logger directory to
3244 the list of targets that are build automatically by Make.
3246 Fri Oct 11 17:13:03 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3248 * ace: Fixed lots of small warnings revealed when using the
3249 Greenhills compiler on VxWorks. Thanks to David Levine for
3252 * ace/Pipe.h: In Pipe.h, the return value of ACE_Pipe::close()
3253 isn't explicitly declared, so some compilers gag. Thanks to
3254 David Levine for this.
3256 Thu Oct 10 12:05:55 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3258 * ace/Thread.cpp: Correctly wrapped the methods in the *.cpp file
3259 so that they are ignored if threads *aren't* supported.
3261 * ace/Service_Repository.cpp (remove): Added the ACE_MT in front
3262 of all the ACE_GUARD* macros that utilize ACE_Thread* locks in
3263 order to ensure that ACE compiles correctly on all non-MT
3266 * examples/Shared_Malloc/Malloc.cpp: Removed the special purpose
3267 class for PROCESS_MUTEX since ACE_Process_Mutex will now work
3268 for non-MT platforms.
3270 * examples/Misc/test_dump.cpp: Changed all occurrences of
3272 cerr << "string " << this << endl;
3276 cerr << "string " << (u_long) this << endl;
3278 to work around problems with IRIX 5.3. Thanks to Tilo Christ
3279 <christ@swl.fh-heilbronn.de> for reporting this.
3281 * ace/config-linux.h: Added a // in front of a stray comment line.
3282 Thanks to Neil Cohen for pointing this out.
3284 * ace/config-hpux-10.x-g++.h: Added a new config file for HP/UX
3285 10.x which should fix some problems with templates by using the
3286 G++ compiler. Thanks to <afarahat@CCGATE.HAC.COM> for
3289 Wed Oct 9 14:34:19 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3291 * ace/OS: Changed the logic of socket initialization, which has
3292 been moved out of ACE_SOCK and into ACE_OS. This makes it
3293 possible to program more fully at the ACE_OS API (if such a
3294 crazy thing is really necessary ;-)).
3296 * examples/IPC_SAP/SOCK_SAP/C-in{client,server}.cpp: Fixed up the
3297 client and server apps so they will work on NT
3298 (i.e., replaced the use of int with ACE_HANDLE). Thanks to Joe
3299 DeAngelis <bytor@faxint.com> for suggesting this.
3301 * ace/Synch.h: Now that we've got support for POSIX semaphores on
3302 Solaris, then we'll use them (when they are supported...) as the
3303 implementation of ACE_Process_Semaphore rather than using the
3304 slower ACE_SV_Semaphore_Complex stuff...
3306 * ace/OS.{h,i}: Added David Levine's support for named POSIX
3307 semaphores. If ACE_HAS_POSIX_SEM is defined, then ACE_Semaphore
3308 will construct a named POSIX semaphore if passed a non-null
3309 name, or an unamed POSIX semaphore if passed a null name. This
3310 is a great addition because POSIX semaphores are more powerful
3311 and useful than the Solaris UI semaphores. Unfortunately,
3312 Solaris 2.5 doesn't support them (yet).
3314 Tue Oct 8 16:00:00 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu>
3316 * ace/OS: Integrated Irfan's encapsulation/emulation for Win32
3317 Events at the ACE_OS level. A new structure ACE_event_t was
3318 created to support Events on non-WIN32 platforms. On WIN32
3319 platforms ACE_event_t is just a HANDLE. On non-WIN32 platforms,
3320 ACE_event_t uses a combination of mutexes, condition variables,
3321 and counters to emulate Events. Both auto-reset and manual-reset
3322 events are supported.
3324 * ace/Synch: Integrated Irfan's encapsulation/emulation for Win32
3325 Events at the C++ wrappers level. There are three wrappers that
3326 were created: ACE_Event, ACE_Auto_Event, and ACE_Manual_Event.
3327 ACE_Event is a wrapper for the ACE_event_t structure. It
3328 provides functionality for signal, wait, pulse, and reset on an
3329 event. ACE_Event supports both auto-reset and manual-reset
3330 events. However, specializations of ACE_Event were created
3331 (ACE_Manual_Event and ACE_Auto_Event) to make it easier to use
3334 * examples/Threads/test_manual_event.cpp: A test for manual-reset
3335 events. The test involves the creation and use of a barrier
3336 which uses an ACE_Manual_Event.
3338 * examples/Threads/test_auto_event.cpp: A test for auto-reset
3339 events. The test involves the use of an ACE_Auto_Event for
3342 Tue Oct 8 15:45:01 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3344 * ace/DEV.cpp (ACE_DEV): Removed a stray call to
3345 ACE_IO_SAP::dump(). Thanks to Brad Flood <BFLOOD@tcs.lmco.com>
3348 * ace/OS.i: Added ACE_HAS_CHARPTR_SOCKOPT for VxWorks. Thanks to
3349 David Levine for this.
3351 * ace/Dump.cpp (instance): Added an ACE_MT() macro around the
3352 ACE_GUARD_RETURN macro so that this will compile correctly on
3353 non-threaded platforms. Thanks to David Levine for this.
3355 * ace/OS.h: the declaration of ACE_OS::msgctl needs "struct
3356 msqid_ds" instead of just "msqid_ds" to compile with the
3357 Greenhills C++ compiler. Thanks to David Levine for this...
3359 * ace/Local_Name_Space_T.h: Added #include "ace/Local_Name_Space.h"
3360 to avoid a problem during template generation. Thanks to
3361 Chris Lahey for this fix.
3363 * ace/OS.i (getprotobynumber_r): Added a pair of fixes from Chris
3364 Lahey to get the ACE wrappers for the getprotoby*_r() methods to
3367 * examples/Threads: Added two new examples (test_auto_event.cpp
3368 and test_manual_event.cpp) that exercise the new ACE_Event
3371 * ace/Synch: Integrated Irfan's encapsulation/emulation for Win32
3372 Events at the C++ wrappers level.
3374 * ace/OS: Integrated Irfan's encapsulation/emulation for Win32
3375 Events at the ACE_OS level.
3377 Fri Oct 4 08:32:47 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3379 * ace/OS.i: Added David Levine's new ACE_OS::mktemp() implementation.
3381 Wed Oct 2 13:26:20 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3383 * ace/SV_Message_Queue.i: Changed the casts of (msgbuf *) to
3386 * ace/OS.i: Added David Levine's implementation of inet_addr() for
3389 * ace/OS.i: Continued to merge together various parts of Win32 and
3390 UNIX to reduce redundancies.
3392 Tue Oct 1 15:03:42 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3394 * ace/OS.i: Added Chuck Gehr's new changes to ACE_OS::mutex_init()
3395 and ACE_OS::cond_init() to handle the MVS Pthreads madness.
3397 * ace/OS.i: Added zillions of #ifdefs for VXWORKS. It's amazing
3398 these guys call themselves POSIX compliant -- lots of stuff is
3399 missing. Thanks to David Levine for doing this!
3401 * ace/OS.cpp: Added David Levine's implementation of mktemp()
3402 for platforms that don't support it.
3404 * ace/OS.h: Added a bunch of minor changes for VXWORKS. In
3405 addition, started to factor out common #ifdefs to make the code
3408 * ace/OS.h: Added a new macro for ACE_LACKS_UTSNAME, and factored
3409 this out for both VxWorks and Win32.
3411 * ace/Time_Value.h: Added support for 2 VXWORKSisms: (1) we need
3412 to #include sys/times.h rather than the standard UNIX sys/time.h
3413 and (2) we need to change const timeval & to const struct
3414 timeval & to keep the Greenhills compiler happy. Thanks to
3415 David Levine for this.
3417 * ace/INET_Addr.cpp: Added support for the insane VXWORKS
3418 hostGetByName() function. Yikes! Thanks to David Levine for
3421 * ace/Memory_Pool.cpp: Added a new #define called ACE_LACKS_SBRK
3422 and ACE_LACKS_SYSV_SHMEM, which is enabled on Win32 and VxWorks.
3423 Thanks to David Levine for reporting this.
3425 * ace/OS.h: Added new macros that #define ETIME for platforms like
3426 VxWorks that don't support it, but do support ETIMEDOUT.
3428 * ace/OS.h: Added placeholder #defines for USYNC_PROCESS and
3429 USYNC_THREAD when !defined (ACE_HAS_THREADS). Thanks to Neil
3430 Cohen for reporting this.
3432 Tue Oct 1 00:42:35 1996 Douglas C. Schmidt <schmidt@polka.cs.wustl.edu>
3434 * ace/Message_Block.cpp (size): Member base_ of ACE_Message_Block
3435 was being set to the new memory pointer before the old contents
3436 are saved in method size. So the line
3440 was moved to a place some lines below. Thanks to Marco Sommerau
3441 <sommerau@informatik.uni-stuttgart.de> for detecting this.
3443 * ace/Message_Queue.cpp: Changed the implementation of the
3444 enqueue_i() method so that FIFO order is maintained when
3445 messages of the same priority are inserted consecutively.
3446 Thanks to Jay Denkberg <jay_denkberg@comverse.com> for
3449 Mon Sep 30 22:59:38 1996 Douglas C. Schmidt <schmidt@polka.cs.wustl.edu>
3451 * ace/OS.i (thr_yield): Added a new macro ACE_HAS_YIELD_VOID_PTR
3452 to make pthread_yield work on MVS. Thanks to Chuck Gehr
3453 <gehr@sweng.stortek.com> for this fix.
3455 * ace/OS: Added a new macro called ACE_HAS_TIMEZONE_GETTIMEOFDAY
3456 that handles problems on MVS. Thanks to Chuck Gehr
3457 <gehr@sweng.stortek.com> for this fix.
3459 Mon Sep 30 13:45:10 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu>
3461 * ace/Local_Tokens.h: Updated some documentation in all the Token
3464 Mon Sep 30 18:01:12 1996 Prashant Jain <pjain@merengue.cs.wustl.edu>
3466 * netsvcs/lib/: Renamed files Logger.{h,cpp} to
3467 Logging_Strategy.{h,cpp} to avoid confusion with Server_Logging
3468 and Client_Logging stuff. In addition, I modified the affected
3469 files, including Makefile, README, and the config files in the
3472 Sun Sep 29 12:47:37 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3474 * ace/OS.h: Added Chuck Gehr <gehr@sweng.stortek.com> fixes for
3475 MVS to enable signals to work correctly.
3477 * ace/Time_Value.h: Added an extern "C" { } block around #include
3478 <pthreads.h> to solve a problem with Linux. Thanks to Padhu
3479 Ramalingam <padhu@magicnet.net> for reporting this.
3481 * netsvcs/lib/Server_Logging_Handler.cpp: Changed the
3482 initialization of a static template object from ::request_count_
3483 (0L) to ::request_count_ = 0L. Thanks to Gonzalo Diethelm
3484 <gonzo@ing.puc.cl> for reporting this.
3486 * ace/Remote_Tokens.h: Moved the inclusion of "Singleton.h" from
3487 Remote_Tokens.cpp to Remote_Tokens.h. This should avoid
3488 template instantiation problems on some platforms (e.g., Irix
3491 * ace/config-irix6.2-sgic++.h: Changed ACE_HAS_SIGINFO to
3492 ACE_HAS_SIGINFO_T and added ACE_HAS_UCONTEXT_T. Thanks to
3493 Gonzalo Diethelm <gonzo@ing.puc.cl> for reporting this.
3495 * ace/Token_Invariants.h: The ctor/dtor were private and the
3496 compiler would not allow a template of the class to be created.
3497 I switched them to public, but I wish there was a better way...
3498 Thanks to Gonzalo Diethelm <gonzo@ing.puc.cl> for reporting
3501 * ace/Synch_T.h: #include'd "ace/Event_Handler.h". Thanks to
3502 Gonzalo Diethelm <gonzo@ing.puc.cl> for reporting this.
3504 * ace/Synch.h: The parameter name gives warnings when
3505 instantiating templates. Thanks to Gonzalo Diethelm
3506 <gonzo@ing.puc.cl> for reporting this.
3508 * ace/Process: Changed the definition of the get_pid() method to
3509 getpid() to avoid a conflict with Irix. Thanks to Gonzalo
3510 Diethelm <gonzo@ing.puc.cl> for reporting this.
3512 * ace/Log_Msg.cpp (log): Added another #elif !defined (ACE_WIN32)
3513 to handle logging for OS platforms that (1) aren't Win32 and (2)
3514 are versions of UNIX that don't support STREAM pipes. Thanks to
3515 Gonzalo Diethelm <gonzo@ing.puc.cl> for reporting this.
3517 * ace/Acceptor.cpp (handle_signal): Erased the signum parameter
3518 name to avoid a nasty warning about arguments not used when
3519 instantiating templates. Thanks to Gonzalo Diethelm
3520 <gonzo@ing.puc.cl> for reporting this.
3522 * ace/OS.h: Added the ACE_Export symbol to the definition of
3523 ACE_Str_Buf. This makes it compile and link on NT. Thanks to
3524 Prashant for noticing this (our favorite Win32ism...).
3526 * ace/Thread.h (ACE_Thread): Removed a default argument for one of
3527 the ACE_Thread::join() wrappers so this won't be ambiguous with
3528 the other join() wrapper.
3530 * ace/OS: Added a new wrapper for strtok_r().
3532 Sun Sep 29 16:12:01 1996 Prashant Jain <pjain@merengue.cs.wustl.edu>
3534 * netsvcs/lib/: Renamed the project file for Win32 from lib.mdp to
3535 netsvcs.mdp. Also the original project file did not include some
3536 files such as Naming_Handler.cpp and Server_Logging_Handler.cpp
3537 and I fixed that. Finally removed two files System_Time.{h,cpp}
3538 which are already present in ace/.
3540 Sat Sep 28 16:34:56 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3542 * ace/OS: Added a new overloaded select() method that takes a
3543 const ACE_Time_Value &. This is useful for situations where you
3544 are passing in ACE_Time_Value::zero.
3546 Fri Sep 27 16:20:46 1996 Douglas C. Schmidt <schmidt@polka.cs.wustl.edu>
3548 * ace/ACE: Added a fix for the fact that VxWork's write() call
3549 doesn't take a const char *.
3551 * ace: Started adding support for VxWorks and GreenHills compiler,
3552 e.g., added the config-vxwork-ghs-1.8.h file. Thanks to David
3553 Levine <levine@cs.wustl.edu> for getting this rolling!
3555 Thu Sep 26 00:15:46 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3557 * ace/Timer_Queue: Changed the public interface methods to be
3558 virtual in order to make it possible to override them in
3559 subclasses. This makes it feasible to implement different types
3562 * ace/OS: Added a wrapper for the strspn() string call. Thanks to
3563 Irfan for noticing this omission.
3565 * ace/Synch_T.cpp (wait): Changed the line:
3567 return ACE_OS::cond_wait (&this->cond_, this->mutex_);
3571 return ACE_OS::cond_wait (&this->cond_, &this->mutex_.lock_);
3573 Thanks to Dieter Quehl <dietrich.quehl@med-iss1.med.siemens.de>
3576 * ace/config-sunos5.4-g++.h: Removed the #define for
3577 ACE_HAS_BROKEN_RANDR and replaced the ACE_HAS_SVR4_SIGNAL_T with
3578 ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES since it looks like the
3579 latest gcc release (2.7.2) fixes this in their own header files.
3581 Sat Sep 21 10:45:43 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3583 * ace/OS.h: Added a new #define called ACE_HAS_BROKEN_MSG_H to the
3584 config-osf1-3.2.h file and used it in OS.h to work around
3585 problems with <msg.h> prototypes on that platform.
3587 Fri Sep 20 00:15:29 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3589 * Released version 4.0.31 for testing.
3591 * ace/Pipe.cpp: Initialize handles_ to ACE_INVALID_HANDLE in
3592 default constructor. Thanks to Tim Harrison for pointing this
3595 * ace: Copied in new versions of ace.{mak,mdp} for Win32.
3597 * ace: Added TTY_IO.cpp to the Makefile.
3599 * ace/config-win32-msvc[24].0.h: Updated the config file so that
3600 it *doesn't* #define ACE_HAS_STRBUF_T since this type clearly
3601 isn't available on Win32!
3603 * ace: Modified all of OS.i and config-*.h files so that they
3604 would be consisten with respect to handling the size_t and int
3605 differences in socket implementations. Thanks to Chuck Gehr
3606 <gehr@sweng.stortek.com> for helping with this for AIX.
3608 * ace/ACE.h (ACE): Added a new method called max_handles() that
3609 returns the maximum number of open handles currently supported
3612 * examples/Reactor/Misc/signal_tester.cpp: Revised the test to
3613 utilize the new idioms for programming with signals.
3615 * ace/OS.h: added a new #define called ACE_DEV_NULL that defaults
3616 to "/dev/null" on UNIX and "nul" on NT. Thanks to David Trumble
3617 <trumble@steosf.nio.dec.com> for reporting this fix.
3619 * ace/Log_Msg.cpp: Added some checks to make sure that we don't
3620 try to strdup() if we are passed a NULL pointer. Thanks to Luca
3621 for suggesting this.
3623 * ace/OS: Move ACE_Str_Buf into OS.{h,i} and remove the Str_Buf.h
3626 * Makefile: Added the "performance-tests" directory to the list of
3627 directories we build when making ACE.
3629 * ace: Moved the definition of strbuf from Str_Buf.h into OS.h.
3630 Thanks to Irfan for recommending this.
3632 * ace/Makefile: Added some additional sed magic on the
3633 Svc_Conf_y.cpp file in order to remove the very last warnings
3636 Thu Sep 19 00:00:17 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3638 * ace/Service_Config.cpp (open): Only initialize the logger to use
3639 STDERR if the user hasn't already set the ACE_Log_Msg::flags().
3640 Thanks to Tom Leith <trl@icon-stl.net> for suggesting this.
3642 * ace/OS: Removed all traces of the ACE_HAS_INT_SOCKNAME and
3643 ACE_HAS_LENPTR_SOCKOPT since Chris Lahey's new fixes for AIX
3644 obviate the need for these.
3646 * ace/OS.i: Only #include <rpc/rpc.h> if the platform has RPC!
3647 Thanks to Chuck Gehr <gehr@sweng.stortek.com> for suggesting
3650 * ace: Removed all uses of ACE_HAS_SETOWN and replaced them with
3651 explicit tests for F_SETOWN and FASYNC. This is more portable.
3652 Thanks to Chuck Gehr <gehr@sweng.stortek.com> for suggesting
3655 * ace/OS: Added a new #define called ACE_HAS_SIZET_SOCKET_LEN to
3656 handle platforms where the length parameter of bind(),
3657 connect(), accept(), etc. uses size_t rather than int. This
3658 helps to get ACE working on MVS. Thanks to Chuck Gehr
3659 <gehr@sweng.stortek.com> for suggesting this.
3661 * ace/OS: Added Chris Lahey's fixes that make the
3662 getprotoby{name,number}_r() functions work for AIX.
3664 * ace: Changed the ACE_HAS_STRUCT_HOSTENT_DATA to
3665 ACE_HAS_STRUCT_NETDB_DATA because we use a single symbol to
3666 refer to all of the odd netdb.h stuff that AIX has...
3668 * ace: Changed all uses of:
3670 iovec *iovp = (iovec *) alloca (total_tuples * sizeof *iovp);
3674 iovec *iovp = (iovec *) alloca (total_tuples * sizeof (iovec));
3676 to keep the AIX compiler from complaining (falsely) about using
3677 iovp before it is initialized. Thanks to Chris Lahey for
3680 * ace/OS.h: Added Chris Lahey's changes that handle AIX's
3681 _XOPEN_EXTENDED_SOURCE features without polluting all the socket
3684 * ace/Thread.cpp (spawn_n): Removed an unreferenced local variable
3685 so that the Win32 compiler doesn't complain.
3687 * ace/OS.h: Added the definition for strbuf{} for NT.
3689 * ace: Removed the msg_hack.h file since it had OSF and DEC
3690 copyright info in it. Replaced this with Antonio Tortorici's
3691 <antonio@rh0011.roma.tlsoft.it> clever use of _KERNEL and the
3692 new ACE_LACKS_SYSV_MSQ_PROTOS.
3694 * ace/INET_Addr.h: Updated the documentation to indicate more
3695 clearly the use of getservbyname().
3697 * ace/OS.cpp (thr_create): Added basic hooks to support the use of
3698 AfxBeginThread on Win32. This is necessary to allow ACE to work
3699 seemlessly with MFC applications. Added an THR_USE_AFX flag
3700 that can be "or'd" in with the other thread flags in calls to
3701 ACE_OS::thr_create(). If this flag is enabled *and* if we are
3702 compiling with ACE_HAS_MFC enabled, then AfxBeginThread() is
3703 called rather than _beginthreadex().
3705 * ace/INET_Addr.h (set): Fixed a typo in the documentation for
3706 set() (the order of "host:port" was backwards...). Thanks to
3707 Brad Flood <BFLOOD@tcs.lmco.com> for reporting this.
3709 Wed Sep 18 00:36:01 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3711 * ace/SOCK_IO.cpp: Added a new recv() method that allows a client
3712 to read from a socket without having to provide a buffer to
3713 read. This method determines how much data is in the socket,
3714 allocates a buffer of this size, reads in the data, and returns
3715 the number of bytes read. The caller is responsible for
3716 deleting the memory. Thanks to Luca Priorelli
3717 <lucapri@mbox.vol.it> for suggesting this.
3719 * ace/OS.h: Added a special #ifdef for IRIX 6.2 threads so that
3720 THR_BOUND and THR_SCOPE_SYSTEM are different. Thanks to Gonzalo
3721 Diethelm <gonzo@ing.puc.cl> for reporting this.
3723 * ace/Message_Block.i (msg_class): Added a new "class" of messages
3724 to ACE_Message_Block: MB_USER. This is useful for writing
3725 extensible applications a la Microslush Windows MSG stuff...
3727 Tue Sep 17 16:38:44 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3729 * ace/Message_Block: Changed the signature of the
3730 ACE_Message_Block constructors (and init()) so that they take
3731 const char * rather than char *. In addition, changed the
3732 definition of one of the constructors (and init()) so that it
3733 takes a size field in addition to the buffer.
3735 * ace/Message_Block.cpp (size): Fixed a bug in the
3736 ACE_Message_Block::size() method -- we were failing to deal with
3737 allocators and ownership correctly during a resize. Thanks to
3738 Amos Shapira <amos_shapira@mail.icomverse.com> for reporting
3741 * ace/Naming_Context.cpp: Removed the source of yet another
3742 warning about "inconsistent dll linkage. dllexport assumed."
3744 * ace/Mem_Map.cpp (map_it): Added a cast to size_t (file_len)
3745 because by this time we know that file_len >= 0. This avoids
3746 yet another warning on WinNT!
3748 * ace/Reactor.h: Fixed the remaining warnings about
3749 "signed/unsigned mismatch" in Win32 by changing the type of
3750 cur_size_ from size_t to ssize_t.
3752 * ace/Log_Msg.cpp: Modified the code so that on NT we use
3753 ACE_SPIPE_Msg rather than ACE_FIFO_Send_Msg. Thanks to Luca
3754 Priorelli <lucapri@mbox.vol.it> for suggesting this.
3756 * ace/OS.i: Implemented the and put[p]msg() wrappers by being
3757 smart about allocating and copying data.
3759 * ace/TTY_IO.cpp (control): There was one too many end parentheses
3760 on line 192 of TTY_IO.cpp. Thanks to Dave Trumble
3761 <trumble@steosf.nio.dec.com> for reporting this fix.
3763 * ace/Log_Msg.cpp (local_host): Fixed the use of program_name_ and
3764 local_host_ so that they strdup() the values passed by the
3765 users, rather than copying pointers. This avoids problems if
3766 the user doesn't pass in static memory. Thanks to Luca
3767 Priorelli <lucapri@mbox.vol.it> for reporting this. Somehow
3768 this change got lost and I've reapplied it...
3770 * ace/Log_Record.cpp (round_up): Added an extra + 1 to the length
3771 since otherwise the final '\0' gets lots if len is a multiple of
3772 8. Thanks to Luca Priorelli <lucapri@mbox.vol.it> for reporting
3773 this. Somehow this change got lost and I've reapplied it.
3775 * ace/Memory_Pool.h: removed #if defined (ACE_HAS_SIGINFO_T) logic
3776 from both handle_signal() definitions (ACE_Shared_Memory_Pool
3777 and ACE_MMAP_Memory_Pool). Thanks to Chris Lahey for fixing
3780 * ace/OS.h: Moved the define of SA_RESTART below the #include for
3781 signal.h. Otherwise SA_RESTART will always be defined by OS.h,
3782 since SA_RESTART is defined on AIX in signal.h. Thanks to Chris
3783 Lahey for fixing this.
3785 * ace/OS.h: Added some new #pragmas to suppress harmless warnings
3786 for the MSVC++ compiler.
3788 Tue Sep 17 13:20:53 1996 Prashant Jain <pjain@merengue.cs.wustl.edu>
3790 * ace/Local_Name_Space_T.cpp: Modified ACE_Local_Name_Space::
3791 create_manager () so that all three naming scopes use the
3792 database variable defined in Name Options. This allows us to
3793 specify different names for databases for all three naming
3794 contexts. However, it is imporant to note that this can lead to
3795 potential problems where, for example, a process may use the
3796 same name for PROC_LOCAL database as an already existing
3799 Mon Sep 16 01:31:21 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3801 * examples/Logger/simple-server/Logging_Handler: get_handle(),
3802 handle_input(), and handle_close() want the right types
3803 (ACE_HANDLE instead of int). Thanks to Luca Priorelli
3804 <lucapri@mbox.vol.it> for reporting these.
3806 * examples/Logger/simple-server/Logging_Acceptor.cpp: Fixed a typo
3807 (Log_Mskg.h should be Log_Msg.h of course...). In addition,
3808 changed the use of -1 to ACE_INVALID_HANDLE. Thanks to Luca
3809 Priorelli <lucapri@mbox.vol.it> for reporting these.
3812 * ace: Changed all uses of ACE_HAS_ACE_INLINED_OSCALLS to
3813 ACE_HAS_INLINED_OSCALLS. This was a vestiage of a global
3814 replace gone amok. Thanks to Alan Stweart <Axs2@osi.com> for
3817 * ace/Log_Msg.cpp (open): Added a check for the OSTREAM flag in
3818 the ACE logger. Thanks to Rick Orr
3819 <rorr@costello.den.csci.csc.com> for noticing this.
3821 * Released version 4.0.30 for testing.
3823 * netsvcs/clients/Naming/Dump_Restore/Dump_Restore.cpp
3824 (Dump_Restore): Deleted an extra "return 0;" within a
3825 constructor (duh...).
3827 * examples/Threads/test_process_{semaphore,mutex}.cpp (main):
3828 Fixed some annoying G++ compiler bug related problems. We need
3829 to use old-style C casts to prevent ambiguous parsing.
3831 * examples/ASX/Event_Server/Transceiver/transceiver: Rewrote this
3832 example to illustrate how to use the ACE_Connector and
3835 * examples/ASX/Event_Server/Transceiver/transceiver: Finally clued
3836 in and realized that it is just not suitable to implement the
3837 event server transceiver with separate threads for input and
3838 output. It is simply to non-portable to get these shut down
3839 gracefully. I think John Ousterhout was right -- threads are
3842 * examples/ASX/Event_Server: Merged the Consumer/Supplier
3843 directories into a single Transceiver directory to reflect the
3844 fact that the Consumer and Supplier were completely symmetrical!
3846 * ace/Module.cpp (close): Don't delete the Tasks in a Module if
3847 there are still threads running in them. Otherwise we'll end up
3850 Mon Sep 16 15:50:45 1996 Prashant Jain <pjain@merengue.cs.wustl.edu>
3852 * performance-tests/Misc/test_naming.cpp: Added a new test to the
3853 performance-tests directory called test_naming which simply does
3854 performance testing on Naming Service. The test runs both the
3855 SYNC and the NO-SYNC version of Naming Service.
3857 Mon Sep 16 15:22:52 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu>
3859 * ace/Proactor.cpp (initiate): Added a check for
3860 ERROR_NETNAME_DELETED after ReadFile/WriteFile. Now the
3861 initiating handler is immediately dispatched for EOF *and*
3862 closed connections. Thanks to Luca Priorelli
3863 <lucapri@mbox.vol.it> for suggesting this change.
3865 Sun Sep 15 00:55:59 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3867 * Fixed all uses of ACE_Service_Config::end_event_loop() and
3868 ACE_Service_Config::run_event_loop() to be
3869 ACE_Service_Config::end_reactor_event_loop() and
3870 ACE_Service_Config::run_reactor_event_loop() since we now have
3871 to consider the other event loops (e.g., Proactor and ReactorEx)
3872 and it doesn't seem right to relegate those to 2nd class status.
3874 * ace: Finally got fed up with all the #ifdefs required to deal
3875 with extended signals and just changed the
3876 ACE_Event_Handler::handle_signal() method to always use the
3877 extended signal interface. Fortunately, we can use default
3878 values to hid this from callers (though you may need to change
3879 your class definitions if you were assuming the
3880 handle_signal(int) interface.
3882 * ace/Memory_Pool.h: Changed all the methods of the various
3883 Memory_Pool classes to be virtual so that subclasses can
3884 selectively override them. This shouldn't affect performance
3885 since all existing use cases work directly with the "derived"
3886 classes themselves, so there shouldn't be any overhead since the
3887 compiler can use direct calls rather than virtual function
3890 * ace/OS.cpp (thr_create): Changed the call to CreateThread() to
3891 _beginthreadex() and the call to ExitThread() to _endthreadex()
3892 for Win32 in order to make ACE threads work correctly with
3893 Win32. Thanks to James Mansion <james@wgold.demon.co.uk> for
3896 * ace/ACE: Added two new static functions: read_adapter() and
3897 register_stdin_handler(). These are useful when writing code
3898 that must demultiplexing ACE_STDIN on both Win32 and UNIX. This
3899 works around Win32 limitations that don't allow us to select()
3900 on non-sockets (such as ACE_STDIN).
3902 * examples/ASX/CCM_App/SC_Server.cpp: Updated this
3903 test so that it should now work correctly on Win32, where it
3904 isn't possible to select() on STDIN...
3906 * ace/Synch_T: Added a new class to ACE called "ACE_Test_and_Set."
3907 As this name implies, this class implements an atomic ``test and
3908 set'' abstraction. This has all sorts of useful implications,
3909 particularly because it is a template that can be paramaterized
3910 by the type of LOCK (e.g., ACE_Null_Mutex, ACE_Thread_Mutex,
3911 etc.) and the type of TYPE (e.g., int, double, sig_atomic_t,
3912 etc.). In addition, because this "is-a" ACE_Event_Handler it
3913 instances can be registered with the Reactor and used to shut
3914 down event hoops gracefully upon receipt of certain signals
3915 (e.g., SIGINT). In fact, I've redone many of the example
3916 applications (e.g., ./examples/Logger/server/server_loggerd.cpp)
3917 to illustrate how this works.
3919 Sun Sep 15 20:40:17 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu>
3921 * ace/ReactorEx.cpp (notify): I've redesigned this code.
3922 Previously, ReactorEx was explicitly managing a handle that it
3923 kept in handles_[0]. handles_[0] was used to implement
3924 ReactorEx::notify, which allowed other threads to wake up the
3925 thread waiting in ReactorEx::handle_events. Now ReactorEx has
3926 an Event_Handler (ReactorEx_Notify) that is registered in the
3927 constructor of ReactorEx. This allows us to treat events from
3928 handles_[0] just like every other event (i.e. by dispatching to
3929 handles_[0]->handle_signal). One of the results of this change
3930 is that code in remove_handler() is simplified a bit.
3932 Sun Sep 15 17:56:52 1996 Prashant Jain <pjain@merengue.cs.wustl.edu>
3934 * ace/Naming_Context.cpp: Added a new flag to the constructor and
3935 open() method of ACE_Naming_Context that allows us to specify
3936 which Memory_Pool to use when creating ACE_Local_Name_Space
3937 (that is choose between ACE_MMap_Memory_Pool and
3938 ACE_Lite_MMap_Memory_Pool).
3940 * ace/Memory_Pool.cpp: Added a new class called
3941 ACE_Lite_MMap_Memory_Pool which subclasses ACE_MMap_Memory_Pool
3942 and overrides the sync method so that it is a no-op.
3944 * ace/Local_Name_Space.cpp: Made some siginificant changes in
3945 ACE_Local_Name_Space. Here is what the problem was:
3946 ACE_Name_Space_Map (which is an ACE_Map_Manager) used an
3947 ACE_RW_Process_Mutex for synchronization. However, since the Map
3948 was kept in shared memory and was shared by all the processes,
3949 it got instantiated only by the first process which came
3950 along. Therefore, only the first process got around to creating
3951 and initializing the lock.
3953 In fixing the problem, we made some other changes to
3954 ACE_Local_Name_Space and ACE_Name_Space_Map. Both classes are
3955 now template classes. ACE_Local_Name_Space needs to be
3956 parameterized with a Memory_Pool (thus giving us a hook to
3957 implement the NO-SYNC option) as well as a LOCK.
3958 ACE_Name_Space_Map needs to be parameterized by an ALLOCATOR
3959 which is created by ACE_Local_Name_Space. Note that the reason
3960 we need to parameterize ACE_Name_Space_Map is so that we can
3961 pass an ACE_Allocator_Adapter (which subclasses from
3962 ACE_Allocator) with every method. It is not possible to pass an
3963 ACE_Allocator since the ::remap() method relies on an
3964 allocator() method defined on the ALLOCATOR that is passed in
3965 (and ACE_Allocator does not define an allocator() method).
3967 The purpose of the class ACE_Name_Space_Map still remains the
3968 same. It IS_A Map_Manager and provides the hook to set the
3969 allocator to the process specific one. However, none of its
3970 methods acquire any locks. For that reason, the Map_Manager is
3971 parameterized with the Null_Mutex. All synchronization takes
3972 place inside ACE_Local_Name_Space. ACE_Naming_Context
3973 instantiates ACE_Local_Name_Space (depending upon the scope) and
3974 by default parameterizes it with ACE_MMap_Memory_Pool and
3975 ACE_RW_Process_Mutex.
3977 Also made some more fixes to ACE_Local_Name_Space. In
3978 create_manager(), after we create the allocator, we now check to
3979 see if the backing store was created successfully and if not, we
3982 Sat Sep 14 00:00:31 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
3984 * examples/Logger: Renamed the original server directory to
3985 "simple-server" and added a new directory called
3986 "Acceptor-server" which implements the Logger using the
3987 ACE_Acceptor. Note that almost all of the implementation code
3990 * ace/Local_Name_Server_T.cpp: Removed the name_server_map_ array
3991 and replaced it with the ACE_NAME_SERVER_MAP #define, which is
3992 now contained in OS.h.
3994 * ace/Malloc.h: Added "virtual ... = 0" to the bind() and
3995 trybind() methods of the ACE_Allocator since they should be pure
3996 virtual functions...
3998 * ace/Synch{_T}: Separated out the wait (ACE_Time_Value *) and
3999 wait (void) methods in order to optimize the call sequence for
4000 the common case when there is no timeout.
4002 * ace/Synch: Added a new wait(ACE_Thread_Mutex &) method to
4003 ACE_Condition_Thread_Mutex so that we are consistent with the
4004 templated ACE_Condition_Mutex.
4006 * include/makeinclude: Changed uses of -pic to -PIC because ACE is
4007 now creating more than 2082 symbols. It's probably time to
4008 split up the library...
4010 * ace/DEV_IO: Moved the ACE_DEV_Addr instance from ACE_DEV_IO into
4011 ACE_DEV so that it will be available for the ACE_DEV_Connector.
4012 This fixes a bug that prevented us from using the ACE_Connector
4013 in conjunction with the ACE_DEV_* classes. Thanks to Karlheinz
4014 for clarifying what had to occur.
4016 Fri Sep 13 00:16:32 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
4018 * ace/OS.h: Changed the order of #includes so that <assert.h>
4019 comes before <sys/stat.h>. This fixes some bugs with the
4020 Siemens SVR4 C++. Thanks to Antonio Tortorici
4021 <antonio@rh0011.roma.tlsoft.it> for this fix
4023 * ace/ACE.cpp (handle_timed_complete): Added yet another weird
4024 hack to deal with the insanity that is TLI...
4026 * ace/Synch.cpp: Replaced all uses of ACE_Thread_Mutex_Guard with
4027 ACE_GUARD macros in order to avoid problems when mutexes fail.
4029 * ace/OS.h: Changed the definition of the ACE_*GUARD macros so
4030 that they are always enabled, even when we turn off ACE_MT_SAFE.
4031 This avoids a nasty semantic problem for components that use
4032 ACE_Process_Mutex. Thanks to Avraham Nash
4033 <Avraham_Nash@praxisint.com> for reporting this problem.
4035 * ace/OS: Removed ACE_OS::fork_exec() since its functionality has
4036 been subsumed by ACE_Process.
4038 * ace/Thread_Manager: Added a new thread_descriptor_i() method
4039 that *doesn't* grab the lock in order to avoid deadlocks.
4041 * include/makeinclude/platform_sunos5_sunc++.GNU (CXX): had to add
4042 the -pta option so that we achieve template closure in ACE.
4044 * include/makeinclude: Added -lthread to the
4045 platform_sunos5_sunc++.GNU file. I don't know how this slipped
4048 * ace/{DEV_IO,FILE_IO,SOCK_IO,SPIPE_Stream}: Fixed a braino with
4049 alloca where I was failing to multiply by sizeof (iovec). Isn't
4050 C great? ... Thanks to Chuck Gehr <gehr@sweng.stortek.com> for
4053 * ace/SOCK_Dgram_Mcast.cpp: Added two changes to the ACE multicast
4054 code in order to get it to work on Win32. The first change is
4055 to put the IP_ADD_MEMBERSHIP setsockopt() call *after* the
4056 bind() (in shared_open()). The second is to convert the
4057 ACE_INET_Addr::get_ip_address() from host byte order into
4058 network byte order. Thanks to Todd L. Montgomery
4059 <tmont@cerc.wvu.edu> and Steve Weismuller
4060 <spweismu@rsoc.rockwell.com> for helping with this.
4062 * examples/Threads/test_barrier2.cpp: Incorporated Karlheinz's
4063 new ACE_Barrier test program.
4065 * ace/Synch.h: Added Karlheinz's ACE_Null_Barrier class.
4067 Fri Sep 13 00:30:50 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu>
4069 * tests/{Tokens_Test,Time_Service_Test}.cpp: Updated tests to use
4070 ACE_Process instead of ACE_OS::fork_exec.
4072 * ace/Process.cpp: Added a new ACE_Process abstraction that is a
4073 Portable encapsulation for creating new processes. It allows
4074 assignment of STDIN, STDOUT, and STDERR of the new process. On
4075 UNIX, ACE_Process uses fork and exec. On Win32, it uses
4076 CreateProcess. Since we can set the standard handles, we can
4077 mimic UNIX pipes on Win32 by building chains of processes. This
4078 class should be used instead ACE_OS::fork_exec.
4080 * examples/OS/Process/process.cpp (main): Added new example
4081 application to show how to use ACE_Process.
4083 Thu Sep 12 00:55:25 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
4085 * ace/DEV_IO: Added methods get_local_addr() and get_remote_addr()
4086 so that ACE_Connector will work correctly. Thanks to Brad Flood
4087 <BFLOOD@tcs.lmco.com> for reporting this.
4089 * ace/Thread_Manager.cpp (thr_self): Added a fix to solve the
4090 problem that Win32 GetCurrentThread() returns a pseudo-handle
4091 rather than a real handle. Now, we just look things up using
4092 the thread id rather than the thread handle. Thanks to Luca
4093 Priorelli" <lucapri@mbox.vol.it> for clarifying this.
4095 * ace/Proactor.cpp (initiate): Fixed an incorrect set of return
4096 values -- they were reversed. Thanks to Brad Flood
4097 <BFLOOD@tcs.lmco.com> for reporting this.
4099 * ace/OS.i (thr_cmp): Added a check for
4100 !defined(ACE_HAS_SETKIND_NP) to avoid a problem with OSF/1.
4101 Thanks to Martin Schoeckle <schoeckle@ike.uni-stuttgart.de> for
4104 * examples/IPC_SAP/DEV_SAP: Updated these examples to use the new
4107 * ace: Moved the TTY_IO code from the
4108 examples/IPC_SAP/DEV_SAP/{reader,writer} directories into the
4109 files TTY_IO.{h,cpp} in the main part of ACE and integrated Brad
4110 Flood's <BFLOOD@tcs.lmco.com> changes for Win32.
4112 * ace/DEV_IO.i: Changed the mapping of send_n() and recv_n()
4113 methods to use write_n() and read_n() respectively so they will
4114 work on NT. Thanks to Brad Flood <BFLOOD@tcs.lmco.com> for
4117 * ace/Thread_Manager.h: Implemented a non-synchronized version of
4118 the lookup function for the <hthread_descriptor>. This version
4119 assumes that the lock is help. We need this to avoid
4120 intra-class method deadlock on systems (such as Solaris) that
4121 lack recursive mutexes.
4123 * ace/Log_Msg.cpp (ACE_Log_Msg): made sure to initialize
4124 ACE_Log_Msg::thr_handle_ to 0. I'm not sure how this got
4125 changed... Thanks to Luca Priorelli <lucapri@mbox.vol.it> for
4128 * examples/Reactor/ReactorEx/test_reactorEx.cpp
4129 (register_thread_exit_hook): Changed hthread_t to ACE_hthread_t.
4130 Thanks to Luca Priorelli <lucapri@mbox.vol.it> for reporting
4133 * apps/Gateway/Gateway/Channel.h: Due to inconsistencies between
4134 the semantics of sockets and TLI with respect to establishing
4135 non-blocking connections it's not a good idea to use TLI in
4136 conjunction with select(). Therefore, I've #if 0'd out the use
4137 of TLI in the Gateway application.
4139 Wed Sep 11 00:25:38 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
4141 * ace/ACE.cpp (handle_timed_complete): Fixed a typo that was
4142 failing to set n = ACE::recv(...). In addition, rethought how
4143 we figure out if a connection completes for the nth time...
4145 * ace/TLI.cpp (open): Modified the implementation of open() so
4146 that if oflag == 0 it is given an initial value of O_RDWR.
4147 Otherwise we'll get a "badflags" t_errno.
4149 * ace/Connector.h (connect): Modified connect() so that the
4150 default value of the flags parameter is O_RDWR. This is
4151 necessary to make TLI_Connector::connect() work correctly by
4154 * examples/Logger: Updated the example logger client and server to
4155 illustrate more clearly how things like the Singleton Reactor
4156 and the ACE_Reactor timer mechanism work. Thanks to Joe
4157 DeAngelis <bytor@faxint.com> for suggesting this.
4159 * ace/Pipe: Added a new constructor that makes it possible to
4160 initialize the <ACE_Pipe> from the <read> and <write> handles.
4161 Thanks to Stevan Warwick (sjw@aesthetic.com) for suggesting
4164 * config-irix5.3-sgic++.h: Added #define for ACE_NEEDS_SYSTIME_H.
4165 Thanks to Stevan Warwick (sjw@aesthetic.com) for reporting this.
4167 * examples/Logger/server/Client_Acceptor: Fixed some stray
4168 mis-uses of int that should have been ACE_HANDLE. Thanks to
4169 Luca Priorelli" <lucapri@mbox.vol.it> for reporting this.
4171 * ace/{ACE,Log_Msg}.cpp: Added fixes for hexdump(). Thanks to
4172 Luca Priorelli" <lucapri@mbox.vol.it> for supplying these.
4174 * ace/Reactor.cpp (ACE_Reactor): Fixed a typo: "this->max_handlep1
4175 ()" should be "this->handler_rep_.max_handlep1 ()". Thanks to
4176 Scott Shupe <shupes@mitre.org> for reporting this.
4178 * apps/Orbix-Examples/Event_Comm: Added a bunch of changes to make
4179 this application compile with Orbix 2.0. Thanks to Mike
4180 O'Malley <momalley@caesun16.msd.ray.com> for the fixes.
4182 * ace/OS.cpp (thr_create): Added yet another fix for the IRIX 6.2
4183 pthreads implementation. Thanks to Gonzalo Diethelm
4184 <gonzo@ing.puc.cl> for reporting this.
4186 * ace/config-irix6.2-sgic++.h: Changed ACE_HAS_IRIX53_GETTIMEOFDAY
4187 to ACE_HAS_IRIX_GETTIMEOFDAY because this also seems to be the
4188 case for IRIX 6.2... Thanks to Gonzalo Diethelm
4189 <gonzo@ing.puc.cl> for reporting this.
4191 * ace/TLI_{Connector,Acceptor}.cpp: Added tests against NULL
4192 pointers to avoid segmentation faults when the TLI
4193 implementation doesn't allocate memory for the udata and opt
4194 fields of netbuf structures.
4196 * ace/Mem_Map.i (ACE_Mem_Map): Added an accessor so that callers
4197 can get the name of the filename that is being used as the
4198 backing store. Thanks to the James Mansion
4199 <james@wgold.demon.co.uk> for recommending this.
4201 Tue Sep 10 00:26:52 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
4203 * ace/OS.cpp (thr_create): Modified the thr_create()
4204 implementation for Win32 so that if the caller doesn't care
4205 about this value we can avoid a HANDLE leak. Thanks to the
4206 James Mansion <james@wgold.demon.co.uk> for recommending this.
4208 * ace/Thread.cpp (ACE_Thread): Moved both definitions of spawn_n()
4209 into the Thread.cpp since they have loops and don't benefit from
4212 * ace/Svc_Handler.h: Moved operator delete() into the public part
4213 of the class in order to make various compilers happy...
4215 * ace/OS.i (ACE_OS): Fixed the #define that selects the (union
4216 wait *) alternative of wait(). This original was protected by
4217 ACE_LACKS_POSIX_PROTO, but it should be ACE_HAS_UNION_WAIT.
4219 * performance-tests: Created a new directory that will contain all
4220 of the ACE performance tests. Move the Synch-Benchmarks and the
4221 TTCP tests from ./apps into here, and also moved the
4222 test_mutex.cpp and test_singleton.cpp files from
4223 ./examples/{Threads,Misc}, respectively. Thanks to Tim Harrison
4224 for this suggestion.
4226 * ace/OS.i (ACE_OS): in WIN32 closesocket() returns 0 if call is
4227 OK, so I changed the return value to be the other way around.
4228 Thanks to Luca Priorelli <lucapri@mbox.vol.it> for reporting
4231 * ace: Changed the ACE_NO_POSIX_PROTO #define to something more
4232 meaningful: ACE_LACKS_POSIX_PROTO. Thanks to Jonathan Biggar
4233 <jon@sems.com> for suggesting this.
4235 * ace/config-sunos4-g++.h: Added the #define ACE_NEEDS_SYSTIME_H.
4236 Thanks to Alexandre Karev <akg@na47sun05.cern.ch> for reporting
4239 * ace/OS: Fixed a bunch of pthreads portability problems that
4240 showed up on OSF/1 4.0. Also added support for asctime_r() and
4241 ctime_r() for OSF/1 4.0. Thanks to Dave Trumble
4242 <trumble@steosf.nio.dec.com> for reporting these fixes.
4244 * ace/Synch_T.cpp (ACE_TSS_Read_Guard): Removed a stray "new" that
4245 was causing problems for the ACE_NEW macro. Thanks to Dave
4246 Trumble <trumble@steosf.nio.dec.com> for reporting this.
4248 * ace/Local_Tokens.h: Fixed a broken use of "friend", which was
4249 missing the keyword "class." Thanks to Dave Trumble
4250 <trumble@steosf.nio.dec.com> for reporting this.
4252 * ace/config-osf1-4.0.h: Included Dave Trumble's
4253 <trumble@steosf.nio.dec.com> config file for OSF/1 4.0.
4255 * include/makeinclude/platform_osf1_4.0.GNU: Included Dave
4256 Trumble's <trumble@steosf.nio.dec.com> platform macros file for
4257 OSF/1 4.0. Also renamed platform_osf1.GNU to
4258 platform_osf1_3.2.GNU to deal with the new version.
4260 * ace/Proactor: There wasn't a way to destroy an
4261 ACE_Overlapped_File object without closing the ACE_HANDLE
4262 attached to it. Therefore, I added a flag that keeps track of
4263 whether we have to delete this or not. Thanks to Amos Shapira
4264 <amos_shapira@mail.icomverse.com> for suggesting this.
4266 * examples/Threads/test_future[12].cpp: Updated the tests to use
4267 the new call() semantics in order to shut down the Scheduler's
4268 event loop gracefully.
4270 * ace/Method_Object.cpp: Added a return value to the call()
4271 routine. This can be used to indicate to the caller that it is
4272 necessary to shut down the event loop.
4274 Mon Sep 9 02:07:08 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
4276 * ace/Service_Config.cpp (ACE_Service_Config): #ifdef's out the
4277 registration of signal handling to control reconfiguration on
4278 Win32 since it doesn't really handle signals very well. Thanks
4279 to John Morey <jmorey@tbi.com> for bringing this to my
4282 * ace/CORBA_Handler: Replaced CORBA_[123] with ACE_CORBA_[123].
4284 * examples/CORBA: Updated the test programs to work portably
4285 across different versions of Orbix.
4287 * ace/OS: Added a new wrapper for the getcwd() call.
4289 * examples/Threads/test_recursive_mutex.cpp: Added the use of
4290 ACE_Guard<> to illustrate how these work with the
4291 ACE_Recursive_Thread_Mutex. Thanks to Gonzalo Diethelm
4292 <gonzo@ing.puc.cl> for motivating me to do this.
4294 * examples/Threads/test_process_{mutex,semaphore}: Added two new
4295 tests to illustrate how the ACE_Process_Mutex and
4296 ACE_Process_Semaphore work, respectively.
4298 * ace/Synch: Replaced the implementation of ACE_Process_Semaphore
4299 to use SV_Semaphore_Complex on UNIX platforms in order to get
4300 the same semantics for Win32 and for UNIX. Thanks to the James
4301 Mansion <james@wgold.demon.co.uk> for recommending this.
4303 * ace/OS.h: Added some parens around the ACE BIT* macros so that
4304 the precedence levels would be dealt with correctly and we don't
4305 get any nasty surprises...
4307 * ace/{Synch_T,Synch}: Modified the implementation of all the
4308 *acquire()/release() methods so they keep track of whether they
4309 own the mutex. Thus, if a code path needs to give up the mutex
4310 within the lifetime of the mutex, and it calls mutex_.release(),
4311 then the destructor will not call it again. Thanks to the James
4312 Mansion <james@wgold.demon.co.uk> for recommending this.
4314 * ace/{Synch_T,Synch}: Changed the name of the field result_ to
4315 owner_ for the ACE_Thread_Muetx_Guard and ACE_Guard. This is
4316 more representative of the true purpose of this field.
4318 * ace/Synch: Updated ACE_Thread_Mutex_Guard so that it has the
4319 same interface and semantics of ACE_Guard. Thanks to the
4320 ever-vigilant James Mansion <james@wgold.demon.co.uk> for
4323 * examples/Log_Msg/test_log_msg.cpp (main): Added a test of the
4324 new ACE_Log_Msg::priority_mask() functionality.
4326 * ace/Log_Msg.cpp: Added a new method called priority_mask(),
4327 which updates the new thread-specific priority_mask_ data member
4328 with the new mask and returns the old mask. This is useful for
4329 applications written using ACE_Log_Msg. Often, these have log()
4330 calls with low priority such as LM_DEBUG that don't need to be
4331 printed, but for which the logging code should not be removed.
4332 The priority_mask() scheme makes it possible to selective enable
4333 printing of certain priorities. Thanks to Rochi Febo Dommarco
4334 <rocky@alter.it> for suggesting this.
4336 * netsvcs/clients/Logger/indirect_logging.cpp (main): Modified the
4337 test program so that it randomly selects logging priorities that
4340 * ace/Log_Priority.h: Renumbered the LM_* logging flags so that
4341 they are all powers of two. This makes it easy to implement a
4342 scheme for selectively printing only certain logging values.
4344 Sun Sep 8 10:46:40 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
4346 * ace/Proactor.cpp: Fixed up the error handling in ACE_Proactor so
4347 that it returns an error both in case of "bad errors," as well
4348 as when ACE_WIN32 isn't defined. Thanks to Amos Shapira
4349 <amos_shapira@mail.icomverse.com> for reporting this.
4351 Sun Sep 8 14:11:08 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu>
4353 * examples/Reactor/Proactor/README: Updated the test_proactor.cpp
4354 and README files to clarify the relationship between the
4355 Proactor and ReactorEx. This example uses the Proactor as the
4356 main event loop (not the Reactor or ReactorEx). Thus, this
4357 application can only do overlapped I/O and timers
4358 asynchronously. To be able to react to other Win32 events, see
4359 the ACE_ReactorEx and the examples/Reactor/ReactorEx/ test.
4360 Thanks to Amos Shapira <amos_shapira@mail.icomverse.com> for
4361 pointing out the ambiguity.
4363 Sat Sep 7 14:09:21 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
4365 * ace/Task.cpp: Enhanced the activate() method so that the caller
4366 can set the priority and the thread group id. Thanks to
4367 Karlheinz for this suggestion.
4369 * ace/OS.h: Added default values of 0 for the trailing arguments
4370 for the {mutex,sema,cond}_init() methods.
4372 * examples/Threads/test_mutex.cpp: Added a new test program that
4373 illustrates the difference between implementations of thread
4374 mutex wrappers that use inheritance and dynamic binding vs. the
4375 ACE approach (which doesn't use inheritance and dynamic
4376 binding). The results I got on my SPARCstation 20 model 712 is
4377 included in the source file. Thanks to James Mansion
4378 <james@wgold.demon.co.uk> for motivating me to write this.
4380 * examples/Misc/test_singleton.cpp: Added a new test program that
4381 illustrates the performance of using the Double-Checked Locking
4382 pattern compared with the standard "Mutex::acquire()/release()"
4383 approach. Thanks to Jim Coplien <cope@research.bell-labs.com>
4384 for encouraging me to get these performance numbers.
4386 Tue Sep 3 00:38:47 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
4388 * ace/XtReactor: Added minor fixes to XtReactor to fix complaints
4389 about "bool" not being defined and the destructor
4390 ~ACE_XtReactor() has already having a body. Thanks to Andres
4391 Kruse <Andres.Kruse@cern.ch> for these fixes.
4393 * ace/Mem_Map.cpp: Make sure that this->length_ is initialized to
4394 0 in ACE_Mem_Map::map (). Thanks to James Mansion
4395 <james@wgold.demon.co.uk> for pointing this out.
4397 * ace/Thread.i (spawn_n): In ACE_Thread::spawn_n the sense of the
4398 following check is wrong:
4400 for (i = 0; i < n; i++)
4401 // Bail out if error occurs.
4402 if (ACE_OS::thr_create (func, arg, flags, &t_id, 0, priority,
4403 stack == 0 ? 0 : stack[i],
4404 stack_size == 0 ? 0 : stack_size[i]) != 0)
4405 thread_ids[i] = t_id;
4409 The '!=' should be '=='. Thanks to James Mansion
4410 <james@wgold.demon.co.uk> for pointing this out.
4412 * include/makeinclude/rules.local.GNU (MAKEFILE): Changed the
4413 $WRAPPER_ROOT/include/makeinclude/rules.local.GNU line that
4416 sed -e "s:$(WRAPPER_ROOT);$$(WRAPPER_ROOT);g" \
4418 so that the double dollar is now "\$$" (prefixed the first
4419 dollar sign with a backslash). If not, my shell will try to
4420 execute WRAPPER_ROOT for some reason. With "\$$" it works as it
4421 should. Thanks to Marius Kjeldahl <marius@funcom.no> for
4424 * Released version 4.0.29 for testing.
4426 * ace/OS.i (thr_getspecific): Added a new case for OSF/1. Thanks
4427 to Martin Schoeckle <schoeckle@ike.uni-stuttgart.de> for
4430 * ace/Thread_Manager.cpp (spawn_i): Removed an invalid
4431 initialization of ACE_hthread_t = 0, which doesn't work on all
4432 pthreads platforms because pthreads uses a struct in some
4433 implementations. Thanks to Martin Schoeckle
4434 <schoeckle@ike.uni-stuttgart.de> for reporting this.
4436 * man: Updated all the nroff and html documentation to conform to
4437 the latest version of ACE.
4439 * netsvcs/lib/{Name_Handler,TS_Server_Handler}.cpp: Fixed
4440 some mistakes in the ACE_TEMPLATES_REQUIRE_SPECIALIZATION
4441 code so that all the services can be linked together without
4442 multiply defined symbols.
4444 * netsvcs/lib/Name_Handler.cpp: Fixed a spot where we weren't
4445 passing in an lvalue to send_request(). Why this wasn't showing
4446 up earlier I don't know, but GCC caught it!
4448 Mon Sep 2 00:47:00 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
4450 * ace/Thread_Manager.cpp: Updated all comparisons of ACE_thread_t
4451 and ACE_hthread_t so that they use the ACE_OS::thr_equal() and
4452 ACE_OS::thr_cmp() methods, respectively. Thanks very much to
4453 Martin Schoeckle <schoeckle@ike.uni-stuttgart.de> for identify
4456 * ace/OS: Added a new method called thr_cmp() which compares two
4457 ACE_hthread_t values for equality. Unfortunately, we can't just
4458 compare these directly via == because on some platforms they are
4459 implemented as structs. Right now, I'm assuming that if
4460 ACE_HAS_TID_T is enabled that we can compare tid_t's using ==.
4461 If this turns out to be incorrect (e.g., if tid_t's are also
4462 implemented as structs, please let me know).
4464 * ace/Future: Changed the overloaded result() method to a pair of
4465 get()/set() methods.
4467 * tests/test_config.h: Fixed a bug in the reset() routine. This
4468 was originally deleting the global static ace_file_stream.
4469 However, this was causing segmentation faults if destructors for
4470 objects local to main() were trying to write to the output file.
4471 Therefore, instead of deleting the ostream, we simply flush()
4474 In addition, also renamed the various functions in test_config.h
4475 to make sure they don't conflict with any other names by
4476 prefixing them with ace_test_...
4478 * ace: Added many small fixes for IRIX 6.2. Thanks to Gonzalo
4479 Diethelm <gonzo@ing.puc.cl> for reporting all of these!
4481 * ace/OS: Added a wrapper for the UNIX syscon() system call.
4483 * ace/LSOCK.cpp (recv_handle): Rearranged the casts so that things
4484 work correctly on platforms with odd definitions ot struct
4485 iovec. Thanks to Gonzalo Diethelm <gonzo@ing.puc.cl> for
4488 * ace/Task.cpp (ACE_Task_Exit): Rearranged the order in which we
4489 shut down a Task via the Task_Exit hook so that we first
4490 decrement the count of the threads in the task and *then* call
4491 its close() hook. This guards against cases where the close()
4492 hook does something crazy like "delete this".
4494 * ace/XtReactor.h: Changed #include "X11/Intrinsic.h" to #include
4495 <X11/Intrinsic.h>. Thanks to Gonzalo Diethelm
4496 <gonzo@ing.puc.cl> for suggesting this.
4498 * ace/Future.cpp (ACE_Future): Added some strategic "consts" to
4499 the assignment operator and copy constructor for ACE_Future and
4502 * examples/Threads/test_task_three.cpp (main): Revised the test so
4503 that it will shut itself down automatically when all the threads
4506 * examples/Threads/test_task_two.cpp (main): Revised this test so
4507 that it doesn't run forever, but only runs either 1000 times or
4508 as many times as the user specifies on the command line. Thanks
4509 to Gonzalo Diethelm <gonzo@ing.puc.cl> for suggesting this.
4511 * ace/OS.i: Added an extra #else for thr_sigsetmask(),
4512 thr_min_stack(), and thr_kill() for weirdo platforms that don't
4513 conform to the other threading APIs...
4515 Sun Sep 1 20:15:28 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
4517 * examples/ASX/Message_Queue: Changed the use of read(0, ...) and
4518 write(1, ...) to ACE_OS::read(ACE_STDIN, ...) and
4519 ACE_OS::write(ACE_STDOUT, ...) in buffer_stream.cpp and
4522 * ace/OS.i: Fixed the errno mapping of the cond_timedwait()
4523 functions so that they set errno to ETIME rather than EBUSY when
4524 timeouts occur. This is necessary to support Solaris and POSIX
4525 pthreads semantics on Win32.
4527 * build/SunOS5.5/examples/ASX/Message_Queue/buffer_stream.cpp:
4528 Modified the example somewhat so that it uses the Singleton
4529 thr_mgr() method from ACE_Service_Config.
4531 Sun Sep 1 17:29:58 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu)
4533 * ace/ACE.cpp (map_errno): Added a new static method to the ACE
4534 class. This method allows us to map troublesome win32 errno
4535 values (e.g. WSAEWOULDBLOCK) to values that standard C strerr
4536 function understands. Thank you Microsoft.
4538 * ace/Log_Msg.cpp (log): Added a call to ACE::map_errno to the %p
4539 option. Now the ACE logger can begin to map Win32 error values
4540 into meaningful strings.
4542 * netsvcs/lib/lib.mdp: Added a project file for the netsvcs
4543 library. This builds a dll into ace/netsvcs.dll (not into the
4544 netsvcs/lib directory). This reduces the number of paths needed
4547 * examples/Tokens: Renamed this directory netsvsc/clients/Tokens.
4549 * ace/ace.mdp: Removed wsock32.lib from the ace files listing.
4550 The problem is that we can't assume where MSDEV is installed. I
4551 added wsock32.lib and advapi32.lib to the
4552 build/settings/link/library_modules line.
4554 * ace/config-win32-msvc4.0.h: Disabled the "C4355: 'this' : used
4555 in base member initializer list" warning. Thanks to Amos
4556 Shapira for figuring this out for us. Although "this" is
4557 unneeded for win32, it is required for compilers on other
4558 platforms (e.g., AIX).
4560 * ace/Message_Queue.cpp (dequeue_head_i): Andres Kruse pointed out
4561 that we weren't doing head_->prev (0), when dequeuing!
4563 Tue Aug 27 21:00:25 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
4565 * include/makeinclude/platform_sunos5_sunc++_4.1.GNU (CXX): Added
4566 Andres Kruse's changes for SunC+ 4.1.
4568 * ace: Fixed line # 12 of ace/config-sunos4-sun4.1.4.h,
4571 "#define ACE_HAS_SVSV_IPC" (ACE_HAS_ ess vee ess vee _IPC)
4575 "#define ACE_HAS_SYSV_IPC" (ACE_HAS_ ess wye ess vee _IPC)
4577 Fix another problem:
4579 #define ACE_LACKS_THREAD_STACK_ADDR (OS.cpp)
4581 was inconsistently defined in:
4583 #define ACE_LACKS_THREAD_STACK_ADDRESS (config-aix-4.1.x.h)
4585 Thanks to Alan Stweart <Axs2@osi.com> for reporting
4588 Mon Aug 26 00:34:05 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
4590 * Updated all of ACE such that the ACE_GUARD* macros now all take
4591 the name of the ACE_*Guard* that they will use as the scoped
4592 locking object. This is important for several reasons:
4594 1. It make it more clear what is going on in the code, rather
4595 than hiding behind the macros!
4597 2. It is now possible to have multiple ACE_GUARD* macros in the
4598 same scope by calling each scoped locking object a different
4599 name. This is used in the Local_Tokens.cpp file.
4601 * ace/Synch.h (ACE_Null_Mutex_Guard): Added the locked() method so
4602 that this signature will conform to the one expected of
4605 * tests: Added a new file Test_Future.cpp, which tests the new ACE
4606 Futures mechanism using Active Obejcts. Thanks to Andres Kruse
4607 <kruse@cern.ch> for contributing this test.
4609 * ace: Added three new files: Future.{h,cpp},
4610 Method_Object.{h,cpp}, and Activation_Queue.{h,cpp}, which
4611 implement Polymorphic Futures. Thanks to Andres Kruse
4612 <kruse@cern.ch> for contributing these.
4614 * ace/Stream.cpp (dump): Replaced LM_INFO with LM_DEBUG.
4616 Sun Aug 25 21:57:57 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
4618 * ace: Rather than using operator new directly, most of ACE now
4619 uses the ACE_NEW and ACE_NEW_RETURN macros. For instance,
4620 rather than writing:
4622 if (token_manager_ == 0)
4623 token_manager_ = new ACE_Token_Manager;
4627 if (token_manager_ == 0)
4628 ACE_NEW_RETURN (token_manager_, ACE_Token_Manager, 0);
4630 The reason for this is that it makes it much easier to ensure
4631 that all dynamic memory allocation errors are treated uniformly.
4632 I've updated the entire ACE library code tonight to make this
4633 usage consistent whenever possible.
4635 Sat Aug 24 11:51:38 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
4637 * ace/Time_Value.h: Simplified various things so that the nasty
4638 macros necessary to build DLLs on Win32 will be simplier. In
4639 addition, I will only #include <sys/time.h> for those platforms
4640 that don't already do this in <time.h> (i.e., if
4641 ACE_NEEDS_SYSTIME_H is defined in config.h). Please let me know
4642 if you run across any platforms like this.
4644 * ace/TLI_{Connector,Acceptor}: Added two additional parameters at
4645 the end of the connect() and accept() methods, respectively, so
4646 that the ACE TLI wrappers can be used with X.25. Thanks to Ajit
4647 Sagar <asagar@spdmail.spd.dsccc.com> for suggesting this fix.
4649 * ace: Integrated Eric Newton's XtReactor into the Makefile. If
4650 you want to include this into ACE, make sure to define
4651 ACE_HAS_XT in the config.h file.
4653 * examples/Misc: Integrated the XtReactor tests.
4655 * ace/OS.i (getservbyname,gethostby*): Fixed a suble omission --
4656 any calls to socket function should be wrapped by the
4657 ACE_SOCKCALL_RETURN macro in order to make the errnos work
4660 * ace/OS: Added support for the getprotoby{name,number} wrappers.
4661 Thanks to Joe DeAngelis <bytor@faxint.com> for suggesting this.
4663 * ace/Connector.cpp: Fixed a subtle bug in the ACE_Connector.
4664 The problem centered around the following line in
4667 if (this->handler_map_.find (handle, ast) == -1)
4669 This lookup always failed because the key, the handle of the
4670 service handler, was always -1. The service handler's handle is
4671 not set until a successful connection is made and connector
4672 transfers ownership of the handle to the service handler. The
4673 fix for this is to store the ACE_HANDLE in the ACE_Svc_Tuple
4674 *separately* from the ACE_Svc_Handler. Thanks to Bill Gerecke
4675 <gerecke@rayva.org> for being so persistent in tracking this
4678 * ace/ARGV.cpp (ACE_ARGV): Added a nifty new constructor that
4679 converts argv-style vectors of strings into a single string
4680 (this is the reverse of what the original constructor does!).
4682 * ace/ACE: Added a new utility method called strecpy(), which
4683 copies <t> to <s>, returning a pointer to the end of the copied
4684 region (rather than the beginning, a la <strcpy>.
4686 Thu Aug 22 15:43:58 1996 <harrison@samba.cs.wustl.edu>
4688 * ace/OS.h: Changed the interface of ACE_OS::fork_exec (char
4689 *const argv[]). (There is no longer a separate const char *path
4690 parameter. Now, argv[0] must be the full path name to the
4693 * tests/Time_Service_Test.cpp: Updated the Time Service
4694 one-button test to use the new ACE_OS::fork_exec. I didn't
4697 * tests/Tokens_Test.cpp: Updated the Tokens one-button test to
4698 use the new ACE_OS::fork_exec. It actually works now.
4700 * tests/test_config.h: Added some more #defines to help simplify
4701 path differences between NT and UNIX. Perhaps these should be
4704 Thu Aug 22 13:46:58 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
4706 * ace/Thread_Manager.cpp (ACE_Thread_Control): The status_ member
4707 in ACE_Thread_Control() was not being initialized! This caused
4708 Purify to complain loudly about invalid memory accesses. I have
4709 added an initialiser to ACE_Thread_Control::ACE_Thread_Control
4710 to set status_ to 0. Thanks to Ross Dargahi <rossd@krinfo.com>
4713 * ChangeLog: The ACE configuration files "config-irix*.h" defined
4714 'ACE_HAS_SIGINFO' to indicate that IRIX supports SVR4 extended
4715 signals. This should be 'ACE_HAS_SIGINFO_T' instead. Thanks to
4716 Craig Johnston <johnston@tortilla.ds.boeing.com> for reporting
4719 Wed Aug 21 21:09:01 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
4721 * ace/Time_Value.h: Added an extra condition, #if defined
4722 (ACE_BUILD_DLL) so that ACE_Svc_Export evaluates to
4723 something. Previously, it was evaluating to nothing in some
4724 files such as Naming_Context.cpp where we were doing #define
4725 ACE_BUILD_DLL and not #define ACE_BUILD_SVC_DLL.
4727 Wed Aug 21 00:33:17 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
4729 * ace/ACE.cpp (format_hexdump): Fixed a minor bug in
4730 format_hexdump(). If the buffer to dump is a multiple of 16 it
4731 prints an extra blank line. ALso fixed the code to use spaces
4732 rather than tabs and put an extra space between the first 8 HEX
4733 bytes and the second. Thanks to Luca Priorelli
4734 <lucapri@mbox.vol.it> for this code.
4736 * ace/Log_Msg.h (ACE_HEX_DUMP): Added a new logging macro:
4738 #define ACE_HEX_DUMP(X) \
4739 do { int __ace_error = errno; \
4740 ACE_Log_Msg *ace___ = ACE_Log_Msg::instance (); \
4741 ace___->set (__FILE__, __LINE__, 0, errno, ace___->restart (),
4742 ace___->msg_ostream ()); \ ace___->log_hexdump X; \
4745 which makes it possible to dump info in HEX. Thanks to Luca
4746 Priorelli <lucapri@mbox.vol.it> for suggesting this.
4748 * ace/config-win32-msvc4.0.h: Added
4750 #define _WINSOCKAPI_
4752 To avoid multiple inclusions. Thanks to Luca Priorelli
4753 <lucapri@mbox.vol.it> for suggesting this.
4755 * ace/OS.h: enclosed the #define of WIN32_LEAN_AND_MEAN macro
4756 definition between #ifndef ... #endif to avoid compiler
4757 warnings. Thanks to Luca Priorelli <lucapri@mbox.vol.it> for
4760 * ace/SOCK.cpp (win32_fini): Fixed a potential problem in ACE
4761 where any code of the form:
4763 ACE_DEBUG ((LM_DEBUG, "%d", GetLastError()));
4765 will reset errno a couple of times before GetLastError() gets
4766 called. So the result is always 0. The fix is to say:
4768 int ret = GetLastError();
4769 ACE_DEBUG ((LM_DEBUG, "%d", ret));
4771 Thanks to Luca Priorelli <lucapri@mbox.vol.it> for noticing
4774 * ace/Connector.cpp (create_AST): Was missing a return 0; if we
4775 successfully register a cancellation id. Thanks to William
4776 L. Gerecke <gerecke@rayva.org> for reporting this bug.
4778 * ace/Module.h: Added a non-existent friend class to get ACE
4782 friend class ACE_Shutup_GPlusPlus; // Turn off g++ warning
4784 // *Must* use dynamic allocation.
4786 Thanks to Eric Newton for the suggestion.
4788 * ace/Svc_Conf.y (ace_create_service_type): Removed some stray
4789 calls to ACE_ERROR that were left over from earlier
4790 configurations of ACE. Thanks to Gonzalo Diethelm
4791 <gonzo@ing.puc.cl> for reporting this.
4793 * ace/Log_Msg.cpp (instance): Fixed the #ifdefs so that
4794 ACE_MT_SAFE implies ACE_HAS_THREAD_SPECIFIC_STORAGE. Thanks to
4795 Gonzalo Diethelm <gonzo@ing.puc.cl> for reporting the need for
4798 Tue Aug 20 13:09:55 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
4800 * INET_Addr.cpp, line 84: Irix's C++ is not able to determine
4801 whether to use the set(u_short,ACE_UINT32,int) or the
4802 set(u_short,const char [],int), since on Irix, INADDR_ANY is 0.
4803 I cast the value so that the call would read set(port,
4804 ACE_UINT32(INADDR_ANY)) and everything went fine. Thanks to
4805 Gonzalo Diethelm <gonzo@ing.puc.cl> for reporting this.
4807 * ace/Synch[_T]: Added a new wait() method that takes a first
4808 parameter which is the mutex used to serialize access to the
4809 condition. This is useful if you want to store the
4810 ACE_Condition object in shared memory (in which case, the use of
4811 a reference to mutex_t doesn't work!). Thanks to Mark Patton
4812 <mark_patton@ftw.paging.mot.com> for recommending this approach.
4814 * ace/Task.h: Added a forward template declaration for
4815 ACE_Task_Exit so that it will compile on HP/UX. Thanks to Tim
4816 Ottinger <tottinge@csci.csc.com> for pointing this out.
4818 * ace: changed line 19 of ace/Str_Buf.h from
4826 Fixed similar problems with OS.h at line 1154 and Dump.h at line
4827 150. Thanks to Alan Stewart <axs2@osi.com> for reporting this.
4829 Tue Aug 20 20:18:49 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
4831 * tests/TSS_Test.cpp (main): Fixed a small typo. I was referencing
4832 the wrong variable but didn't catch it since it was in the #if
4833 !defined (ACE_HAS_THREADS) section. Fixed the typo and also
4834 renamed the variable called big_count to iterations. Thanks to
4835 Tim Ottinger <tottinge@csci.csc.com> for pointing this out.
4837 Mon Aug 19 19:25:50 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
4839 * {examples,apps,tests}: Removed the use of zerop from these
4842 * ace/{Acceptor.cpp,Name_Proxy.cpp,Token.i}: Removed the use of
4843 zerop from these files, as well...
4845 * ace/Connector.cpp (connect_svc_handler): It looks like our good
4846 friend ACE_Time_Value::zerop isn't getting initialized correctly
4847 on Win32. Therefore, I've replaced it with a direct use of
4848 &ACE_Time_Value::zero.
4850 * ace/Time_Value.cpp: Removed the static pointer variable "zerop"
4851 since there was no guarantee it was getting intialized before it
4852 is used! Instead of using ACE_Time_Value::zerop, use
4853 &ACE_Time_Value::zero. Thanks to William L. Gerecke
4854 <gerecke@rayva.org> for reporting this problem.
4856 * ace/OS: Added zillions of changes to make ACE compile with OSF/1
4857 and its DCE threads implementation. Thanks to Martin Schoeckle
4858 <schoeckle@ike.uni-stuttgart.de> for sending these.
4860 * ace/config-osf1-3.2.h: Updated this file with fixes for OSF/1 by
4861 Martin Schoeckle <schoeckle@ike.uni-stuttgart.de>.
4863 * ace/ACE.cpp (handle_timed_complete): Added new logic to
4864 ACE::handle_timed_complete() so that it sets errno to
4865 ECONNREFUSED if the connection is refused by the server. When
4866 you issue an asynchronous connect request, to complete it, you
4867 will use complete() with a timeout. However, complete can fail,
4868 and then it will deallocate any resource, (i.e. close down the
4869 socket handle), also for timeout expiration. So, a user
4870 interested in retrying to complete a connection while the
4871 timeout expires will not use complete(); but rather will use
4872 handle_timed_complete(). In fact, using handle_timed_complete()
4873 the user could detect the reason of a failure (by examining
4874 errno) and decide how to proceed. In the old ACE version the
4875 problem was that, if handle_timed_complete() failed because of
4876 the recv() returning 0, errno remained unchanged and so its
4877 value could be quite misleading with respect to the reasons of
4878 the failure. Thanks to Antonio Tortorici
4879 <antonio@rh0011.roma.tlsoft.it> for this fix and the explanation
4882 * ace/OS.h: Added support for Borland 5.0's uint64. Thanks to
4883 Hani Yakan <hani@i-online.com> for suggesting the strategy to
4886 Mon Aug 19 15:52:07 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
4888 * tests: Added new macros to the test_config.h file in order to
4889 simplify the testing.
4891 Mon Aug 19 00:21:22 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
4893 * Re-released version 4.0.28 for testing (will change the version
4894 number after Tim gives me the new Token stuff).
4896 * {netsvcs/lib,tests/test_config.h}: Removed spurious dependencies
4897 on fstream.h and iostream.h. Thanks to Alan Stewart
4898 <axs2@osi.com> for reporting this.
4900 Sat Aug 17 17:25:49 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
4902 * ace/Reactor: Removed the use of "inline" in the Reactor.cpp
4903 files because this was causing problems with some
4904 compilers/linkers. Thanks to Gonzalo Diethelm
4905 <gonzo@ing.puc.cl> for recommending this.
4907 * examples/Misc/test_XtReactor1.cpp: Added a new test of the
4908 XtReactor, courtesy of Eric Newton <ecn@clark.net>.
4910 * ace/config-hpux-10.x.h: According to Eugene K. Plaude
4911 <jec@r-style.msk.su>, HP-UX 10.01 supports user-level threads
4912 based on the pthreads interface specified by POSIX in 1003.4a,
4913 Draft 4 (which is basically DCE threads). Therefore, I've
4914 enabled the ACE_HAS_DCETHREADS symbol in the config-hpux-10.x.h
4915 configuration file. If this isn't correct, please let me know.
4917 Sat Aug 17 02:18:39 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu)
4919 * examples/Tokens/manual/README: Added a new Token example
4920 application. The manual test gives users a text-based
4921 interactive interface to local or remote tokens. This is
4922 extremely useful for manually testing the token server and
4923 setting up deadlock scenarios. See the README file for more
4926 * examples/Tokens/deadlock/README: Updated the deadlock example
4927 application to test the new deadlock detection algorithm for
4928 readers/writer locks. I also added the use of Token Invariants
4929 to ensure correctness of the mutexes and readers/writer locks.
4930 See the README file for more details.
4932 Fri Aug 16 22:16:05 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu)
4934 * ace/Token_Manager.cpp: Updated all Token code to use
4935 ACE_OS::last_error instead of errno.
4937 Fri Aug 16 00:03:24 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
4939 * After a long hiatus, released version 4.0.28 for testing.
4941 Thu Aug 15 21:04:35 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
4943 * man: Updated all the ACE manual pages and html pages to reflect
4946 * netsvcs/lib/Server_Logging_Handler.cpp: Fixed an omitted
4947 "ACE_BUILD_SVC_DLL" that was causing linker errors on NT.
4948 Thanks to Luca Priorelli <lucapri@mbox.vol.it> for reporting
4951 * examples/Log_Msg/test_log_msg.cpp: Added a test for the new
4952 log_hexdump() function.
4954 * ace/Log_Msg.cpp (log_hexdump): Integrated the log_hexdump() code
4955 into the ACE Log_Msg abstraction. Thanks to Luca Priorelli
4956 <lucapri@mbox.vol.it> for fixing this and for Todd Montgomery
4957 for originally supplying the code.
4959 * ace/Signal.cpp (ACE_Sig_Handlers): Moved the #endif /* HPUX */
4960 down to the end of the file so that it works correctly on HPUX.
4961 Thanks to Eric C. Newton <ecn@clark.net> for report this bug.
4963 * ace/OS.i: Updated the behavior of thr_join() so that it will do
4964 a ::CloseHandle after getting the exit status. Thanks to the
4965 ever vigilant James Mansion
4966 (mansionj@lonnds.ml.com) for noticing this.
4968 * examples: Finally added Tim and Prashant's examles/OS directory,
4969 which contains a test that illustrates a "portable" means to
4970 spawn processes on NT and UNIX.
4972 * ace/Malloc_T.cpp (next): Added an overloaded next() method that
4973 returns the name that is bound to the pointer in the
4974 Malloc_Iterator. This is useful in order to differentiate
4975 entries in the pool based on their name. Thanks to Kim Gillies
4976 <gillies@noao.edu> for suggesting this.
4978 * ace: Changed all uses of thread_t, thread_key_t, mutex_t,
4979 rwlock_t, sema_t, cond_t, etc. to ACE_* in order to avoid
4980 polluting the name space. Also switched from using macros to
4981 using typedefs whereever possible. Thanks to Gonzalo Diethelm
4982 <gonzo@ing.puc.cl> for recommending this.
4984 * ace/System_Time.cpp: Added template specializations for
4985 templates used in the ACE_System_Time class. This should solve
4986 some nasty undefined templates problems with GCC... Thanks to
4987 Joseph DeAngelis <bytor@faxint.com> for pointing out the
4990 * ace/Name_Space.cpp: Fixed the file Name_Space.cpp as follows:
4993 #define ACE_BUILD_DLL
4994 //#include "Name_Space.h"
4995 #include "ace/Name_Space.h"
4997 Thanks to Eugene K. Plaude <jec@r-style.msk.su> for fixing this!
4999 * ace/config-hpux-10.x.h: Added support for TLI since according to
5000 Eugene K. Plaude <jec@r-style.msk.su> this should work. If not,
5003 Wed Aug 14 21:29:46 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
5005 * examples/Reactor/Logger: rearranged the Logger directory so it
5006 would be more clear what the client and server programs did and
5009 * examples: Merged the contents of the SVR4 examples directory
5010 into the IPC_SAP/SOCK_SAP directory so that we can remove the
5011 SVR4 directory altogether (it wasn't contributing much...).
5013 * examples: Removed the vestigal Win32 tests since ACE now runs on
5014 Win32 and we don't need a separate test directory.
5016 * netsvcs/client: Renamed the file remaining file in this
5017 directory to logging_app.cpp since I moved the other file to the
5018 examples/Reactor/Logger directory.
5020 * ace/Reactor.cpp (check_handles): If eh->get_handle() returns -1
5021 the select() code will index the [-1] element of an array. To
5022 fix this, I've added a check of the value returned from
5023 eh->get_handle(). Thanks to Eric C. Newton <ecn@clark.net> for
5026 * ace/OS.i (sema_wait): Fixed a subtle bug in the Pthreads
5027 wrappers that surfaced on the SGI IRIX 6.2 port. There was some
5028 code that looked like this:
5030 pthread_cleanup_push();
5033 pthread_cleanup_pop();
5036 However, on Irix 6.2, the push introduces a new scope that is
5037 closed by the pop, so result goes out of scope before returning.
5038 Thanks to Gonzalo Diethelm <gonzo@ing.puc.cl> for pointing this
5041 * ace/OS.h: Changed the definition of pthread_mutex_t and
5042 pthread_cond_t to mutex_t and cond_t to be consistent with other
5043 usage in ACE. Thanks to Gonzalo Diethelm <gonzo@ing.puc.cl> for
5046 Wed Aug 14 01:25:47 1996 <harrison@samba.cs.wustl.edu>
5048 * ace/SPIPE_Acceptor.cpp: Added the PIPE_TYPE_MESSAGE |
5049 PIPE_READMODE_MESSAGE flags to CreateNamedPipe pipe options so
5050 that data is received in messages rather than as a stream. This
5051 is consistent with the behavior of the SPIPE_Connector. When we
5052 have time, we need to extend the interface so that stream pipes
5053 are also supported, as well.
5055 * SPIPE_Acceptor.cpp: Made the ACE SPIPE in and out buffer sizes
5056 10 k. The previous size was just 512 bytes. This larger buffer
5057 size helps decrease flow control.
5059 Tue Aug 13 23:21:46 1996 <harrison@samba.cs.wustl.edu>
5061 * examples/Connection/blocking: Updated the blocking SPIPE example
5062 application to use a pool of threads in the proactor to handle
5063 incoming client messages. The SPIPE-acceptor example
5064 illustrates how named pipes are used on NT. Once the server
5065 establishes a connection to a single client, it spawns a thread
5066 pool to handle incoming requests via the proactor event
5067 loop. That is, a separate thread from the pool is used to
5068 process each message sent by a client. The size of the thread
5069 pool can be specified by command-line arguments. This example
5070 leverages the queueing performed by the NT kernel to trivially
5071 implement a thread pool architecture. See
5072 examples/Connection/blocking/README for more details.
5074 * Service_Config.h: Added a <thread> parameter (with a default
5075 size of 0) to the proactor accessor method. This allows
5076 applications to specify the size of the thread pool that can
5077 block on Proactor::handle_events.
5079 Tue Aug 13 02:30:58 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
5081 * ace/Task: Added a new public interface called thr_count(). This
5082 returns a count of the number of threads running within a Task.
5083 If the value returned is 0, then the Task is a Passive Object.
5084 If the value returns is > 0 the task is an Active Object, and
5085 the value is a count of the number of threads running within the
5086 object at this snapshot of time.
5088 * ace/OS: I implemented Karlheinz's suggested optimizations for
5089 the ACE condition variable implementation under Win32. Here's
5090 the deal... The original implementation used an internal_mutex
5091 to ensure that access to the count of the number of waiters was
5092 serialized between the waiter and signaler threads. The new
5093 implementation is designed so that only the waiter threads
5094 access the waiter count. Therefore, we can utilize the
5095 external_mutex to serialize access to this, thus eliminating the
5096 need for the internal_mutex. However, this means that code
5097 *must* be written using the standard condition variable idiom,
5102 external_mutex.acquire ();
5107 external_mutex.release ();
5110 Rather than like this:
5114 external_mutex.acquire ();
5118 external_mutex.release ();
5122 which is what some thread programming books recommend as an
5123 optimization. However, you should be careful not to use this
5124 form since it can lead to "lost wakeup" bugs caused by the fact
5125 that the implementation of ACE_OS::cond_signal will test if the
5126 waiter count > 0 *without holding any locks*!!!
5128 Fortunately, ensuring this shouldn't be a problem since most ACE
5129 code uses the following idiom:
5133 ACE_Guard mon (external_mutex);
5138 // Destructor of mon releases external_mutex.
5141 Clearly, there are subtle tradeoffs between performance and
5142 programmability here...
5144 * ace/Synch: Updated all of the ACE semaphore wrappers to take the
5145 new "max" value as their final constructor argument.
5147 * ace/OS: Added a new default argument to the end of the
5148 sema_init() method. This allows us to specify the maximum value
5149 of the semaphore (this is only important on NT). Currently, it
5150 is hard-coded to 0x7fffffff in uses. The new approach makes it
5151 possible to set the max to a different value. Thanks to
5152 Karlheinz for requesting this.
5154 * ace/Message_Queue.cpp: Added an implementation of the dump().
5157 * ace/Synch.cpp: Added an implementation of the dump() method.
5160 * ace: Updated all usage of ACE_Thread_Mutex_Guard so that it now
5161 uses the ACE_GUARD* macros correctly. Thanks to Chris Eich
5162 <Chris_Eich@optilink.optilink.dsccc.com> for pointing out the
5165 * examples/Threads: Added Karlheinz's new test_barrier2.cpp test
5166 program that makes sure that the ACE_Message_Queues are working
5167 correctly when accessed by multiple threads.
5169 * netsvcs/lib/Server_Logging_Handler.cpp (handle_logging_record):
5170 Fixed an errant use of ACE_Guard, which wasn't properly checking
5171 of the Guard acquired the lock. Thanks to Chris Eich
5172 <Chris_Eich@optilink.optilink.dsccc.com> for pointing this out.
5174 * ace/OS.h (ACE_GUARD): Added default "ace_mon" implementations of
5175 type ACE_Null_Mutex even in cases where there's no threading
5176 defined so that code accessing ace_mon.release() and
5177 ace_mon.acquire() will compile correctly.
5179 * apps/Gateway/Gateway/Channel.h: Fixed the code so
5180 that we don't try to use TLI if the platform doesn't support it
5181 (instead, we'll use sockets). Thanks to Marius Kjeldahl
5182 <marius@funcom.no> for reporting this problem.
5184 * examples/ASX/Event_Server/{Supplier,Consumer}: Fixed the code so
5185 that we don't try to use TLI if the platform doesn't support it
5186 (instead, we'll use sockets). Thanks to Marius Kjeldahl
5187 <marius@funcom.no> for reporting this problem.
5189 Mon Aug 12 14:50:47 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
5191 * examples/Misc: Added Eric Newton's <ecn@clark.net> test case for
5192 his XtReactor integration.
5194 * ace: Included Eric Newton's <ecn@clark.net> code that integrates
5195 ACE with the Xt event loop. This still needs a bit of work
5196 (e.g., making it thread-safe and incorporating signal support), so
5197 I haven't added it to the Makefile yet. If someone can take the
5198 time to fix it up, I'll be happy to integrate it into ACE.
5200 * ace/Message_Queue.cpp (dequeue_head): Fixed the mother of all
5201 bugs in the ACE_Message_Queue implementation... The problem was
5202 that I was trying to be too clever by optimizing the number of
5203 Condition::signal() calls by only calling signal() when the
5204 queue changed state from empty to non-empty (or full to
5205 non-full). It turns out that this optimization works fine for a
5206 single producer/consumer case, but fails when there are multiple
5207 consumers. The fix was just to call signal() every time. This
5208 should be ok because the underlying Condition variable
5209 implementation will perform the optimization in the correct
5210 fashion. Thanks to the omniscient Karlheinz for detecting this
5211 problem and reporting it.
5213 Sun Aug 11 15:52:07 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
5215 * tests: Made minor changes to test_config.h, SPIPE_Test.cpp, and
5216 UPIPE_SAP_Test.cpp to accomodate the change made to SPIPE_Addr.
5217 SPIPE_Addr now accepts a string of the form [host:]port and then
5218 creates the rendezvous point. Originally, SPIPE_Addr would
5219 assume that the string being passed in was the actual rendezvous
5222 Sat Aug 10 18:41:21 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
5224 * netsvcs/lib/Logger.cpp (init): Added a new service to netsvcs
5225 called ACE_Logger which allows us to control the output of all
5226 the services. The ACE_Logger service can be invoked with
5227 different flags (such as STDERR|OSTREAM) which in turn sets
5228 ACE_Log_Msg to direct the output of all the services to the
5229 appropriate stream(s). Note that if a service needs to stay
5230 unaffected from ACE_Logger, it should be invoked before
5231 ACE_Logger gets invoked. Also note that like other services in
5232 netsvcs, ACE_Logger can also be dynamically linked in.
5234 Sat Aug 10 14:23:07 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
5236 * Added Steve Huston's <shuston@ultranet.com> patches to get ACE
5237 to compile on UnixWare 2.01. This mostly involved changes to
5238 the internal types used by the socket wrappers. Thanks Steve!
5240 Fri Aug 9 01:34:19 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
5242 * examples/ASX/UPIPE_Event_Server/Options.cpp (print_results):
5243 Added a typedef to avoid problems if a platform doesn't support
5244 prusage_t. Thanks to Marius Kjeldahl <marius@funcom.com> for
5247 * include/makeinclude/platform_linux_pthread.GNU. The line that
5250 LIBS = -lpthreads -lstdc++
5252 was modified to say:
5254 LIBS += -lpthreads -lstdc++
5256 Thanks to Marius Kjeldahl <marius@funcom.com> for reporting
5259 Fri Aug 9 18:26:16 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
5261 * ace/Local_Name_Space.cpp (reset): Fixed a subtle (yet very
5262 annoying bug). In switching contexts a test program would hang
5263 after a certain number of switches. Having gone through the code
5264 thoroughly and with the aid of Purify, the bug was narrowed down
5265 to an extraneous delete taking place in
5266 ACE_Name_Space::reset(). Essentially, we do not need to delete
5267 ACE_Name_Space_Map::instance() which is actually the
5268 SHARED_MALLOC since it gets deleted in the destructor of
5269 ACE_Local_Name_Space.
5271 Thu Aug 8 17:55:20 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
5273 * ace/SPIPE_Addr.cpp (set): Implemented
5274 ACE_SPIPE_Addr::string_to_addr(). Modified ACE_SPIPE_Addr::set()
5275 using code provided by Brad Flood to create the rendezvous
5276 point. Note that originally ACE_SPIPE_Addr constructor and set()
5277 would take the actual rendezvous point but now they rely on
5278 being passed a string which is of the format "[host]:port"
5279 (where host is optional). The rendezvous point is then created
5280 by extracting from the string the hostname (if any) and also
5281 using the port number as the unique pipe name. Note that this
5282 approach works on both UNIX and Win32.
5284 Mon Aug 5 20:15:59 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
5286 * ace/OS.i (last_error): Fixed a typo. In the set and get methods
5287 last_error(), there should be a check for "if defined
5288 (ACE_WIN32)" and not "if defined (ACE_HAS_WIN32)"
5290 Wed Aug 7 00:21:42 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
5292 * ace/Log_Msg.h: Replaced all uses of errno *following calls to
5293 ACE_Log_Msg::instance()* so that we first cache errno in a local
5294 variable called __ace_errno. We need to do this because
5295 ACE_Log_Msg::instance() can reset errno == 0. Thanks to
5296 Tim for pointing this out.
5298 Mon Aug 5 20:15:59 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
5300 * ace/OS.i (last_error): Fixed a typo. In the set and get methods
5301 last_error(), there should be a check for
5302 "if defined (ACE_WIN32)" and not "if defined (ACE_HAS_WIN32)"
5304 Sat Aug 3 14:52:32 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
5306 * examples/Win32/win32_client.cpp: Changed ACE_GUARD_RETURN to
5307 ACE_GUARD in the method Errno::flags since the return type is
5310 * examples/Connection/non_blocking/CPP-connector.cpp: Made some
5311 minor changes to get things compiling on Win32. The call to
5312 handle_close now takes zero as the first argument (which is
5313 never used). Also the arguments to ACE_SERVER_ADDRESS are now
5314 swapped (hostname followed by port number) to be consistent with
5315 the change made to the macro. Thanks to Brad Flood for
5316 suggesting these changes.
5318 * examples/Connection/non_blocking/CPP-acceptor.cpp: Made minor
5319 changes to some of the methods to make sure all control paths
5320 return a value. Also changed the default port number to
5321 ACE_DEFAULT_SERVER_PORT_STR to match what the connector tries to
5322 connect to. Thanks to Brad Flood <BFLOOD@slc.unisysgsg.com> for
5323 suggesting these changes.
5325 * ace/OS.h (ACE_SERVER_ADDRESS): Modified the macro
5326 ACE_SERVER_ADDRESS so that it creates a string of a server
5327 address with a "host:port" format. Previously the order was
5328 reversed. Thanks to Brad Flood for suggesting this change.
5330 Sat Aug 3 00:07:26 1996 Douglas C. Schmidt (schmidt@lambada.cs.wustl.edu)
5332 * ace: Fixed problems with recursive tracing of ACE_TRACE by
5333 commenting out certain constructors in IPC_SAP.cpp,
5334 FIFO_Send_Msg.cpp, FIFO_Send.cpp, and FIFO.cpp. Thanks to
5335 Karlheinz for finding and reporting these fixes.
5337 Fri Aug 2 22:19:05 1996 Douglas C. Schmidt (schmidt@lambada.cs.wustl.edu)
5339 * ace/ACE.cpp (format_hexdump): Fixed an infamous "off by one" bug
5340 that was causing this to fail on Win32 (time to switch to Java? ;-)).
5341 Thanks to lucapri@mbox.vol.it for finding this.
5343 Thu Aug 1 14:08:30 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
5345 * ace/CORBA_Handler.cpp (activate_service): Fixed a typo caused by
5346 an omitted ENDTRY. Thanks to Garrett Conaty
5347 <gconaty@outbackinc.com> for noticing this.
5349 Mon Jul 29 10:03:16 1996 Douglas C. Schmidt (schmidt@lambada.cs.wustl.edu)
5351 * examples/Win32/win32_client.cpp: There was a typo in one of the
5352 ACE_GUARD macros. Thanks to Tim Ottinger
5353 <tottinge@csci.csc.com> for pointing this out.
5355 Mon Jul 22 12:41:22 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
5357 * ace/Local_Name_Space.cpp (reset): Added a new method
5358 ACE_Name_Space_Map::reset() which deletes the instance of
5359 ACE_Name_Space_Map. This forces instance() to create a new
5360 instance using a new context file in the case of the context
5361 having changed. I make use of this in
5362 ACE_Local_Name_Space::create_manager().
5364 Fri Jul 19 12:28:07 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
5366 * ace/System_Time.cpp (get_master_system_time): Modified
5367 ACE_System_Time::get_master_system_time() so that if an entry
5368 for the time is not found in shared memory (indicating that no
5369 Clerk is running), then we should just return the local time of
5372 * netsvcs/lib/TS_Clerk_Handler.cpp (update_time): Modified
5373 ACE_TS_Clerk_Handler::update_time() so that if the Clerk is not
5374 connected to any servers, is sets the delta time to zero
5375 allowing clients to then use the local time of the host.
5377 Wed Jul 17 22:19:53 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
5379 * ace/UPIPE_Connector.cpp (connect): Added an #ifdef around the
5380 check of ACE_OS::isastream (handle) in
5381 ACE_UPIPE_Connector::connect() since the call is not supported
5384 Thu Jul 11 22:22:57 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu)
5386 * ace/OS.i (kill): Modified ACE_OS::kill so that it works on NT.
5387 It takes a process ID, creates a handle for the associated
5388 process, and calls TerminateProcess on the handle. This is
5389 actually pretty dangerous according to the NT documentation.
5390 Can majorly confuse DLLs. Does the same old thing on UNIX.
5392 * ace/OS.cpp (fork_exec): Added a fork_exec operation to ACE_OS.
5393 This works on UNIX and NT. It combines the forking and exec'ing
5394 into one call. This has to be combined since Win32
5395 CreateProcess only starts applications from scratch (unlike UNIX
5398 * examples/OS/test_os.cpp: Added a new example application to test
5399 the new ACE_OS::fork_exec and ACE_OS::kill operations.
5401 Tue Jul 9 13:04:14 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
5403 * ace/Service_Manager.cpp (reconfigure_services): To improve
5404 portability on Win32 and UNIX I replaced the use of a signal to
5405 trigger reconfiguration to instead make a call to the new
5406 ACE_service_Config::reconfig_occurred() method. This should
5407 actually perform the same as the original approach, since all
5408 the signal handler ever did was to set this flag! Thanks to
5409 Karlheinz for pointing out the need for this.
5411 * ace/Service_Config.h: Added a new static public method called
5412 reconfig_occurred(sig_atomic_t) to set if a reconfiguration
5413 should take place the next time through the event loop.
5415 Mon Jul 8 14:20:01 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
5417 * ace/Time_Value.h: Added "ACE_Export" before all global operators
5418 to allow them to be dll-exportable on NT.
5420 Mon Jul 8 13:12:05 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
5422 * ace/{Message_Block,DEV_IO,SPIPE_Stream}.cpp: Fixed several more
5423 cases of delete array that should have been delete [] array.
5424 Thanks to Tom Leith for pointing out some of these. I can hear
5425 the ghost of James Mansion coming closer... ;-)
5427 * INSTALL: Added tips on how to install ACE on a Win32 platform
5428 that lacks a network card.
5430 * ChangeLog: Split ChangeLog-96 into two files (ChangeLog-96a and
5431 ChangeLog-96b) since it was becoming quite large! Thanks to
5432 Chris Lahey for pointing this out.
5434 * ace/Stream.cpp: Was missing a "return 0;" at the end of the
5435 close() method. Thanks to Tom Leith <trl@icon-stl.net> for
5438 Mon Jul 8 14:20:01 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
5440 * ace/Time_Value.h: Added "ACE_Export" before all global operators
5441 to allow them to be exportable from Win32 DLLs.
5443 Sun Jul 7 10:34:48 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
5445 * Released version 4.0.27 for testing.
5447 * config-sunos5.5*.h: Removed all uses of ACE_HAS_SVR4_SIGNAL_T in
5448 the config files since Solaris 2.5 has consistent signal and
5449 sigaction types (at last!).
5451 * Installed and compiled ACE successfully with the new SunC++ 4.1
5452 compiler on Solaris 2.5. However, there seems to be major
5453 problems with the interaction of the SunC++ exception handling
5454 runtime system and the Solaris multi-threading mechanisms. This
5455 is causing the ACE multi-threading tests to bomb with
5456 segmentation faults inside of the _ex_unwind() library function.
5457 If you read the /opt/SUNWspro_3.1/READMEs/c++ file you'll see
5458 why this problem is occurring (apparently due to bugs in the
5459 Solaris libC.so.5 C++ runtime library).
5461 There seem to be two fixes for this problem:
5463 1. Add the following to *all* threads (including main):
5465 #include <exception.h>
5467 void *my_thread_entry_point (void *) {
5468 set_terminate (abort);
5469 set_unexpected (abort);
5474 This is the approach recommended by the README file in
5475 SUNWspro_3.1. However, it is *clearly* a horrible hack and
5476 very non-portable (therefore, I deem it worthy of Microsoft
5479 2. Compile ACE (and applications?) with -noex in order to avoid
5480 this bug. This is clearly not desirable either since it
5481 precludes the use of exception handling with C++ and threads
5484 Since ACE doesn't use exceptions internally on Solaris option 2
5485 seems like the best approach for the time being. When Sun gets
5486 it act together and releases a bug-free library and C++
5487 software, I'll fix ACE accordingly.
5489 * tests: Integrated the latest of Prashant's "one-button" tests
5490 into the main ACE release. These will run on both UNIX and
5493 * ace/UPIPE_Stream.cpp (recv): Changed the semantics of the
5494 ACE_UPIPE_Stream::recv (char *, size_t, ACE_Time_Value *)
5495 method. Currently, the behavior is to block until *exactly* N
5496 bytes are read. However, this is incorrect for 2 reasons:
5498 1. It makes it hard to write a server that doesn't know
5499 precisely how big the messages are from the client. In
5500 particular, if the receiver doesn't know how big the buffer
5501 messages are from the client it will block indefinitely!
5503 2. It is redundant with respect to the
5504 ACE_UPIPE_Stream::recv_n(), which also blocks until all N
5507 Therefore, I've made the new UPIPE_Stream::recv() method block
5508 only until it's received the first block of data that allows it
5509 to fulfill its size request, or anything that is smaller than
5512 * ace/OS.cpp (thr_create): Since POSIX pthreads doesn't provide an
5513 equivalent of THR_NEW_LWP in the pthreads_attr_* functions, I've
5514 added an emulation that should work for Solaris. Basically, if
5515 THR_NEW_LWP is set when ACE_OS::thr_create() is called, we use
5516 the ACE_OS::thr_{get,set}concurrency methods to increase the
5517 number of LWPs by one.
5519 * ace/Message_Block: Changed the default high water mark for an
5520 ACE_Message_Queue from 4K to 16K. This is useful since it
5521 allows applications to buffer more information before blocking.
5523 * ace/Log_Msg: Added a pair of operations that allow applications
5524 to acquire and release the synchronization lock used internally
5525 by the ACE_Log_Msg implementation. This allows applications to
5526 hold the lock atomically over a number of calls to ACE_Log_Msg,
5527 which is useful for composite operations like the following:
5529 // Make sure the following operations are run atomically!
5530 ACE_LOG_MSG->acquire ();
5534 if (c_stream.recv (&c, 1) == -1)
5535 ACE_DEBUG ((LM_DEBUG,
5536 "(%t) buffer recv from supplier failed\n"));
5538 ACE_DEBUG ((LM_DEBUG, "%c", c));
5541 ACE_LOG_MSG->release ();
5543 * examples/IPC_SAP/UPIPE_SAP: Revised all of the UPIPE_Stream
5544 tests to make them more consistent and correct with respect to
5547 * ace/Stream.cpp (link_i): There was a bug in the link_i() logic
5548 because we weren't also linking the other stream back to our
5551 * ace/UPIPE_{Acceptor,Connector}: Modified both of these classes
5554 * ace/Stream.cpp (close): Modified close() so that it now detects
5555 "double-closes" and ignores anything but the first one.
5557 * ace/UPIPE_Stream: Updated this class so that it no longer
5558 inherits from ACE_Stream (previously ACE_UPIPE_Stream had
5559 inherited from *both* ACE_Stream *and* ACE_SPIPE). There are
5560 several reasons we shouldn't inherit from ACE_Stream:
5562 1. There are operations on ACE_Stream that don't make any sense
5563 on ACE_UPIPE_Stream (e.g., link(), unlink()).
5565 2. ACE_Stream isn't really designed to be subclassed (e.g.,
5566 it doesn't have virtual methods).
5568 3. Not inheriting makes the interface cleaner, e.g., we now use
5569 send() and recv() methods consistently, rather than
5570 send_msg()/put() and recv_msg()/get().
5572 4. The return values from the I/O methods are now more
5573 consistent than they were before.
5575 * ace/Message_Block: The signature for the copy() method was
5576 incorrect. It should have been copy (const char *, .....)
5577 rather than copy (char *, ....).
5579 * examples/IPC_SAP/UPIPE_SAP: Together with Prashant, fixed up the
5580 ACE_UPIPE_Stream tests so they more cleverly
5581 (and correctly) utilize and illustrate various ACE concurrency
5584 Sat Jul 6 18:28:55 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
5586 * ace/Stream.cpp: Fixed some obscure bugs with Stream::unlink()
5587 and Stream::link(). These bugs were triggered by the
5588 ACE_UPIPE_Stream tests. We need to make sure that we don't have
5589 race conditions in the order in which ACE_UPIPE_Stream close()
5590 down. Prashant and I fixed this problem by (1) adding a lock to
5591 unlink() and link() and then creating unlink_i() and link_i() to
5592 perform the work and (2) being more careful about trying to
5593 unlink our side and the other side of a linked Stream.
5595 * ace/config-linux.h: According to Istvan Buki
5596 <istvan.buki@infoboard.be>, Linux now supports the
5597 send_msg()/recv_msg() system calls, as well as UNIX domain
5598 sockets. Therefore, I've updated the config-linux*.h file to
5599 remove the existing restrictions. If this turns out not to be
5600 the case, please let me know.
5602 * ace/LSOCK.cpp (recv_handle): Added a change to some casts to
5603 make ACE compile with Linux. Thanks to Istvan Buki
5604 <istvan.buki@infoboard.be> for reporting this.
5606 * apps/Gateway/Gateway/File_Parser.cpp (readword): Removed
5609 for (int x; foo(x); )
5615 Which is now a deprecated feature of C++.
5617 * include/makeinclude: added the -lw library to the GNU G++
5618 platform*.GNU file in order to pick up the wide-character string
5621 Fri Jul 5 18:11:44 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
5623 * Re-released version 4.0.26 for testing.
5625 * ace/CORBA_Handler.cpp (activate_service): Revised the code to
5626 use the Orbix macros for TRY/CATCH rather than try/catch. We
5627 need this to make legacy code work! Thanks to Irfan for
5630 * ace/Thread_Manager: Fixed a bunch of typos that grelims snuck
5631 in. Thanks to Jack Erickson <jack@cibc.com> for reporting this.
5633 * examples/IPC_SAP/TLI_SAP/ftp-server.cpp: Fixed some typos that
5634 were causing problems on AIX. Thanks to Greg Wilson
5635 <gvwilson@vnet.ibm.com> for reporting this.
5637 * examples/Reactor/Misc/test_time_value.cpp (operator<<): Added a
5638 "const" in front of the ACE_Time_Value & in order to make things
5639 work correctly on AIX. Thanks to Greg Wilson
5640 <gvwilson@vnet.ibm.com> for reporting this.
5642 * ace/SPIPE_Acceptor: Fixed some missing "returns" that had sprung
5643 up in the #else arm of the SPIPE code. Thanks to Greg Wilson
5644 <gvwilson@vnet.ibm.com> for reporting this.
5646 * apps/Synch-Benchmarks/Benchmark: Fixed a typo that was causing
5647 the application to fail to compile on AIX. Thanks to Greg
5648 Wilson <gvwilson@vnet.ibm.com> for reporting this.
5650 * Changed all uses of virtual int init (int, char **) to virtual
5651 int init (int, char *[]) to workaround bugs with MSVC++...
5653 * ace/OS.h: for POSIX pthreads, changed the definition of the
5654 THR_SCOPE_SYSTEM macro so that it has the same value as
5655 THR_BOUND. If this isn't done, then things don't quite work
5656 right when we implement the ACE_OS::thr_create() wrapper.
5658 Thu Jul 4 13:17:35 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
5660 * ace/Thread_Manager: Added a new method called thr_self() that
5661 *does* return a real handle that can be used by
5662 WaitForMultipleObjects, etc. Note that this new approach
5663 cleverly caches this handle in TSS in order to cut down on
5664 search time. Thanks to Jesper for pointing this technique out.
5666 * ace/OS.i (thr_self): After receiving comments from Jesper, undid
5667 the earlier change today that was returning a duplicated handle
5668 for ACE_OS::thr_self(). It turns out this is a bad idea because
5669 the handle most typically doesn't get released, which leads to
5672 * ace/Thread_Manager: Added a new private method called
5673 check_state(). This method extends existing code to be smarter
5674 about how we check to see what "state" (e.g., suspended,
5675 cancelled, etc.) a thread is in. The original code
5676 (which was a macro called ACE_CHECK_STATE) didn't behave
5677 correctly if we asked about the state of a thread that was
5678 different from ourselves!
5680 * ace/Thread: Modified the public interface to
5681 ACE_Thread::spawn_n() so that it now takes a void *stack[] and
5682 size_t stack_size[]. If stack != 0 it is assumed to be an array
5683 of n pointers to the base of the stacks to use for the threads
5684 being spawned. Likewise, if stack_size != 0 it is assumed to be
5685 an array of n values indicating how big each of the
5686 corresponding stacks are. This is useful since now we can spawn
5687 a group of threads each of which has its own custom stack and/or
5688 stack size. Thanks to Ashish Singhai
5689 <singhai@delirius.cs.uiuc.edu> for pointing out the need for
5692 * apps/Synch-Benchmarks: Updated the Synch benchmarks so that most
5693 of them work again. The trick is *not* to use ACE_OS::sleep ()
5694 (which doesn't seem to be thread-friendly...) but instead to use
5695 ACE_OS::select() as a timer.
5697 * man: updated the manual pages and html pages to reflect all the
5700 * ace/Malloc_T.cpp (open): Added a check to make sure that if
5701 init_acquire() fails we don't let this go by undetected...
5702 Thanks to Karlheinz for pointing out the need for this.
5704 * ace/OS.i (thr_getconcurrency): Fixed a subtle bug with the
5705 ACE_OS::thr_getconcurrency() function. I was mistakenly using
5706 ACE_ADAPT_RETVAL for the result of ::thr_getconcurrency(), which
5709 * ace/Service_Record.cpp (remove): Fixed a typo that was causing
5710 the removals of Modules in a dynamically configured Stream to go
5711 into infinite loops.
5713 * ace/OS.i (thr_self): Modified the ACE_OS::thr_self (hthread_t &)
5714 function so that it will return a *duplicate* of the current
5715 thread's pseudo-handle returned by GetCurrentThread(). This
5716 change is necessary because the pseudo-handle returned by
5717 GetCurrentThread() is pretty useless (e.g., it can't be used by
5718 any other thread to "wait" for this thread to exit). This new
5719 behavior is used in the examples/Reactor/ReactorEx test program.
5721 * ace/Service_Config.cpp: I'd forgotten to assign the
5722 delete_svc_rep_ flag when dynamically allocating the svc_rep_.
5725 Wed Jul 3 20:09:44 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
5727 * Added a new subdirectory called $WRAPPER_ROOT/tests that
5728 contains the first phase of the ACE regression tests.
5730 * ace/Reactor.cpp (check_handles): Fixed an earlier fix with the
5731 ACE_Reactor::wait_for_multiple_events() method. The earlier fix
5732 had changed the exit condition of do/while loop to be
5734 while (nfound == -1 && this->handle_error () >= 0);
5736 However, this was causing signal handling to break...
5737 Therefore, the right fix is to keep the exit test as:
5739 while (nfound == -1 && this->handle_error () > 0);
5741 and instead fix handle_errors() so that it returns 1 if we're
5742 able to fix a bad handle... Thanks to Prashant and Irfan for
5745 * ace/OS: Finally broken down and added a new pair of ACE_OS
5746 functions called "last_error()". These basically call
5747 SetLastError/GetLastError on Win32 or they set/get errno on
5750 * ace/config-linux.h: Fixed an annoying problem with
5751 struct msghdr in Linux by adding
5753 #define msg_accrights msg_control
5754 #define msg_accrightslen msg_controllen
5756 to the config-linux*.h files. Thanks to Michael R"uger
5757 <m_rueger@syscomp.de> for suggesting this.
5759 * ace/SOCK_IO.cpp (recv): Fixed a "bug" where
5760 ACE_SOCK_IO::{send,recv} allocates with:
5762 iovec *iovp = new iovec[total_tuples];
5768 Thanks to the ever vigilant James Mansion
5769 (mansionj@lonnds.ml.com) for noticing this.
5771 Tue Jul 2 23:48:38 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu)
5773 * ace/Service_Config.h: Added ReactorEx to the singleton resources
5774 that the Service_Configurator holds. This includes accessors,
5775 destruction hooks, and event loop methods.
5777 * examples/Reactor/ReactorEx/README: There is a new example
5778 application for the ReactorEx. Please check out
5779 examples/Reactor/ReactorEx/README for details.
5781 Tue Jul 2 18:43:12 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
5783 * Released version 4.0.25 for testing.
5785 * examples/ASX/Message_Queue/priority_buffer.cpp: Added a new test
5786 program that illustrates the use of the new Message_Queue
5789 * ace/Message_Queue: Added new support for prioritized message
5790 enqueueing into the ACE_Message_Queue. Now, when an application
5791 uses ACE_Message_Queue::enqueue() the new Message_Block is
5792 inserted into the queue according to its msg_priority(). When
5793 dequeue_head() is used the item retrieved will then be the item
5794 of "highest priority" (priorities range from 0 to MAX_LONG).
5795 Note that the semantics of the existing enqueue methods,
5796 enqueue_head() and enqueue_tail(), remain unchanged.
5798 * ace/Message_Block: Changed the type of the priority in a message
5799 block to u_long rather than u_char. This gives us a much
5800 greater range of priorities!
5802 Mon Jul 1 01:12:08 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
5804 * ace/Thread.h: Changed a couple of mistyped comments. Thanks
5805 to the eagle eyes of Andres Kruse for noticing this.
5807 * ace/OS: added more comprehensive support for UNICODE to
5808 both the Win32 and UNIX OS adaptation layer. This new
5809 support automagically selects the appropriate implementation
5810 (i.e., either char * or wchar_t *) for the string comparison
5811 routines (which are used in places like ACE_Mem_Map).
5813 * ace/Service_Config: Split up the ACE_Service_Config::close()
5814 method into two parts: close_svcs() and close_singletons().
5815 This makes it possible to remove svc.conf services without
5816 destroying Singletons like the Proactor, Reactor, etc. Thanks
5817 to Karlheinz for recommending this.
5819 * ace/Service_Config: Added flags for remembering who created the
5820 Singleton Proactor, Allocator, Thread_Manager, and
5821 Service_Repository (in addition to the Reactor, which I did last
5822 week). If we created these Singletons, then we are responsible
5823 for freeing them up. Thanks to Karlheinz for pointing out the
5826 Mon Jul 1 16:26:27 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
5828 * ace/Connector.cpp: Added two new arguments to connect () namely,
5829 "int flags" and "int perms". The Connector can now pass these
5830 two arguments to its template arguments (e.g., SOCK_Connector,
5831 SPIPE_Connector, etc.) when calling their connect() method. A
5832 consequence of doing this was that we had to modify the
5833 signature of the connect() method on some of the IPC_SAP classes
5834 (e.g., TLI_Connector, SOCK_Connector, and LSOCK_Connector).
5835 Note that these changes may break some existing code,
5836 particularly with TLI_Connector (see below), so beware...
5838 * ace/TLI_Connector.cpp: Changed the order of the connect()
5839 arguments to be more consistent with the rest of the IPC_SAP
5840 classes used with the Connector. Please note that existing
5841 examples which use TLI_Connector may need to be modified as a
5842 result of this change.
5844 * ace/OS.i (open): Modified ACE_OS::open() to use the argument
5845 perms to turn the flag FILE_FLAG_OVERLAPPED on and off for
5848 * ace/Service_Config.cpp (end_proactor_event_loop): Added new
5849 methods run_proactor_event_loop() and end_proactor_event_loop()
5850 which call handle_events on the Proactor.
5852 Mon Jul 1 02:15:34 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu)
5854 * ace/Proactor.h: Made ACE_Proactor an ACE_Event_Handler so that
5855 it can be registered with the ACE_ReactorEx. ACE_Proactor
5856 associates the same global HANDLE with every overlapped I/O
5857 operation. This global HANDLE can be registered with the
5858 ACE_ReactorEx. Therefore, by using the
5859 ACE_Proactor::handle_signal method as an adapter, we can now
5860 dispatch overlapped I/O and other "waitable" objects from a one
5861 ACE_ReactorEx running in a single thread of control. Thanks to
5862 James Mansion <mansionj@lonnds.ml.com> for setting us on the
5865 * ace/ReactorEx.h: Added a ACE_ReactorEx to encapsulate Win32
5866 WaitForMultipleObjects(). The ACE_ReactorEx handle_events()
5867 method calls ACE_Event_Handler::handle_signal when the
5868 corresponding Win32 HANDLE becomes signaled. This gives us a
5869 uniform abstraction for dispatching all "waitable" objects on
5870 Win32, including events related to I/O completion ports and
5871 events related to other forms of NT synchronization (such as
5872 mutexes, semaphores, threads, etc.).
5874 * ace/Timer_Queue.h (calculate_timeout): Added a calculate_timeout
5875 method to ACE_Timer_Queue. Also removed the same method from
5876 ACE_Reactor. This is so Reactor, ReactorEx, and Proactor can
5877 all reuse the calculations required by the Timer_Queue without