Merge pull request #2301 from sonndinh/remove-dup-reactor-functions
[ACE_TAO.git] / ACE / ChangeLogs / ChangeLog-1997a
blob161d4746d2da997f42c5d5a06c49504932032f6b
1 Thu Jul  3 20:36:19 1997  Nanbor Wang  <nw1@cumbia.cs.wustl.edu>
3         * performance-tests/Misc/childbirth_time.cpp: Changed the
4           parameter type of "Profiler" from int to size_t to make g++
5           happy.
7 Thu Jul 03 20:03:18 1997  David L. Levine  <levine@cs.wustl.edu>
9         * ace/Reactor.cpp (remove_handler): added ACE_UNUSED_ARG
10           when NSIG != 0.
12 Wed Jul  2 23:41:43 1997  Nanbor Wang  <nw1@cumbia.cs.wustl.edu>
14         * performance-tests/Misc/childbirth_time.cpp: Fixed some typos.
16 Wed Jul  2 23:13:10 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
18         * performance-tests/Misc/childbirth_time.cpp: Revised the
19           code to use ACE programming style.
21 Wed Jul 02 23:02:24 1997  Douglas C. Schmidt  <schmidt@cs.wustl.edu>
23         * ACE version 4.2.15, released Wed Jul 02 23:02:24 1997.
25 Wed Jul  2 22:23:49 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
27         * ace/Service_Config.cpp: Used the new ACE_LACKS_UNIX_SIGNALS
28           macro to reduce the #ifdef complexity somewhat.
30         * ace/config-{chorus,win32-common}.h: Added #define for
31           ACE_LACKS_UNIX_SIGNALS.
33         * ace/OS.h: If a platform (e.g., Chorus) doesn't support signals
34           then #define NSIG 0.
36         * ace/Reactor.cpp: Chorus does not support signals.  Make the call
37           to register/remove_handler(sig_set, evnet_handler) return
38           succesfully so that some of the examples and test programs do
39           not need to be changed.  Thanks to Wei Chiang for this.
41         * ace/config-chorus.h: Added a new macro for
42           ACE_LACKS_NAMED_POSIX_SEM to handle Chorus.  Thanks to Wei
43           Chiang for this.
45         * ace/OS.i: Define macros ACE_PTHREAD_CLEANUP_* so that the
46           related code does not need to be surrounded with #ifdefs.
47           Thanks to Wei Chiang for this.
49         * ace/OS.i: Chorus does not support named semaphores. The code
50           that to do with names in sema_init() and sema_destory() is
51           therefore disabled.  Thanks to Wei Chiang for this.
53         * ace/config-chorus.h: Added support for ACE_LACKS_PTHREAD_CLEANUP
54           and ACE_HAS_POSIX_SEM to the Chorus port.  Thanks to Wei Chiang
55           for this.
57 Wed Jul  2 17:37:09 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
59         * ace/Hash_Map_Manager.cpp: Clarified the behavior of close_i() a
60           bit more.
62 Wed Jul  2 09:54:36 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
64         * ace/Hash_Map_Manager.cpp: Fixed a couple more size_t->u_long
65           conversions for ACE_Hash_Map_Manager::hash().  This didn't harm
66           anything but it's good to be consistent.
68 Wed Jul  2 16:46:59 1997  Nanbor Wang  <nw1@cumbia.cs.wustl.edu>
70         * performance-tests/Misc/childbirth_time.cpp: Added this program
71           to measure child process/thread creation mechanisms on various
72           platforms.  Native thread creation test only supports Solaris
73           and NT threads so far. But you can still use ACE_OS::thr_create
74           method on your platform if not supported.
76 Wed Jul  2 15:59:53 1997  Darrell Brunsch <brunsch@cs.wustl.edu>
78         * ace/High_Res_Timer.cpp: Created a function get_registry_scale_factor
79           that finds out the speed of the processor using the NT registry (in
80           megahertz).  This means that ACE_High_Res_Timers should automatically 
81           get the correct scale factor.
83         * tests/Timer_Queue_Test.cpp: Removed the call to 
84           get_env_global_scale_factor().
86 Wed Jul  2 15:39:33 1997  Tim H. Harrison  <harrison@waltz.cs.wustl.edu>
88         * ace/Process.cpp: Modified spawn to check for the NO_EXEC
89           flag after forking on UNIX.  If it's set, spawn returns the
90           child pid without exec'ing.  Updated the NT version to
91           always return the child pid on success.
93 Wed Jul 02 10:55:23 1997  David L. Levine  <levine@cs.wustl.edu>
95         * tests/SPIPE_Test.cpp,UPIPE_SAP_Test.cpp: tweaked the static
96           functions a bit to avoid warnings about unused statics on VxWorks.
98 Wed Jul 02 00:16:07 1997  Douglas C. Schmidt  <schmidt@cs.wustl.edu>
100         * ACE version 4.2.14, released Wed Jul 02 00:16:07 1997.
102 Tue Jul  1 22:49:58 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
104         * ace/Strategies_T.h: Changed the return value of all the hash()
105           methods to be u_long.
107         * tests/Map_Manager_Test.cpp (hash): Changed the return value of
108           all the hash() methods to be u_long.
110         * ace/SString.cpp: Changed the return value of all the hash()
111           methods to be u_long.
113         * ace/Hash_Map_Manager: Changed the return value of hash()
114           to return a u_long in order to (1) be consistent with
115           the return value of hash_pjw() and (2) give the maximal
116           range for the hash function.  Thanks to Marina Spivak
117           <marina@cs.wustl.edu> for reporting this.
119 Tue Jul 01 14:47:22 1997  David L. Levine  <levine@cs.wustl.edu>
121         * ace/High_Res_Timer.{h,i} (gettime): use gettime () static function
122           to wrap all calls to ACE_OS::gethrtime ().  On ACE_WIN32, if the
123           global scale factor has not been set, then gettime () uses
124           ACE_OS::gettimeofday () instead of ACE_OS::gethrtime (), because
125           gettimeofday doesn't need the scale factor.
127 Mon Jun 30 17:28:53 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
129         * Makefile (RELEASE_FILES): Removed the rpc++ directory from the
130           main release since this doesn't seem to be widely used and the
131           GPL copyleft confuses people.
133 Mon Jun 30 15:08:04 1997  David L. Levine  <levine@cs.wustl.edu>
135         * include/makeinclude/platform_vxworks5.x_g++.GNU: added -lgcc
136           to LDFLAGS.
138 Mon Jun 30 12:00:02 1997  Douglas C. Schmidt  <schmidt@cs.wustl.edu>
140         * ACE version 4.2.13, released Mon Jun 30 12:00:02 1997.
142 Sat Jun 28 08:27:27 1997  David L. Levine  <levine@cs.wustl.edu>
144         * ace/OS.h: added definitions of ACE_SHLIB_HANDLE and
145           ACE_DEFAULT_SHLIB_MODE on platforms other than
146           ACE_HAS_SVR4_DYNAMIC_LINKING and hpux.
148         * ace/OS.i: split definitions of ACE_OS::cond_* member
149           functions into two:  for ACE_WIN32/VXWORKS and all others.
150           That allows us to break the circular dependencies between
151           those functions and the ACE_OS::sema_* member functions.
153         * ace/Svc_Conf_y.cpp: commented out unused args and wrapped
154           assignments in "if" conditionals with parenthesis to avoid
155           g++ warnings.
157         * ace/{ACE,INET_Addr,OS}.cpp (VxWorks only): added ACE_UNUSED_ARG
158           calls.
160         * ace/Parse_Node.cpp (ACE_Stream_Node,ACE_Dynamic_Node,ACE_Dummy_Node
161           constructors): reordered initializers to match declaration order.
163         * ace/Profile_Timer.h (elapsed_time): commented out unused arg "et".
165         * ace/Read_Buffer.cpp (rec_read): initialized local variable "c" to
166           make sure that it is always defined before use.
168         * ace/SPIPE_Acceptor.cpp (remove): don't declare local variable
169           "result" if ! ACE_HAS_STREAM_PIPES, because it's not used in
170           that case.
172         * ace/config-vxworks5.x-g++.h: added ACE_LACKS_IOSTREAM_FX,
173           ACE_LACKS_LINEBUFFERED_STREAMBUF, and ACE_LACKS_SIGNED_CHAR.
175         * ace/IOStream_T.h (ipfx): comment out unused variable "need".
177         * platform_vxworks5.2_g++.GNU: added -Wall now that the ACE library
178           builds cleanly with it.
180         * platform_vxworks5.x_g{++,hs}.GNU: renamed 5.x instead of 5.2.
182         * netsvcs/lib/Token_Handler.cpp: reordered initializers to match
183           declaration order.
185         * tests/SV_Shared_Memory_Test.cpp: moved template specializations
186           so that they're not done on platforms that don't support SV IPC.
188         * examples/IOStream/client/iostream_client.cpp,
189           examples/IOStream/server/iostream_server.cpp:
190           use ACE_HAS_STRING_CLASS rather than __GNUC__ to determine whether
191           the platform has a String class.
193 Fri Jun 27 13:10:46 1997  Douglas C. Schmidt  <schmidt@merengue.cs.wustl.edu>
195         * ace: Changed the name of config-vxworks5.2-g++.h to
196           config-vxworks5.x-g++.h since it works with 5.2 and 5.3.
198         * examples/Mem_Map/IO-tests/IO_Test.cpp: Fixed some bugs that were
199           preventing this from running correctly.
201 Fri Jun 27 13:37:37 1997  Steve Huston  <shuston@riverace.com>
203         * ace/Svc_Conf.y: Finished the sanity checks started below.
205 Fri Jun 27 11:55:13 1997  Darrell Brunsch <brunsch@cs.wustl.edu>
207         * ace/Timer_Queue_T.cpp: added a check for an empty queue in expire
209 Fri Jun 27 07:53:58 1997  David L. Levine  <levine@cs.wustl.edu>
211         * tests/Message_Queue_Notifications_Test.cpp (handle_output,
212           handle_exception,main): added ACE_UNUSED_ARG (fd) to avoid
213           compilation warnings about unused arguments.
215 Fri Jun 27 01:08:54 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
217         * ace/Connector.cpp (create_AST): Replaced the gratuitous #ifdef
218           for ACE_WIN32 and EXCEPT_MASK with the new CONNECT_MASK.  This
219           is much cleaner!
221         * ace/Event_Handler.h: Added a new CONNECT_MASK that defaults to
222           READ_MASK | WRITE_MASK (with | EXCEPT_MASK thrown in for Win32).
223           Thanks to Irfan for this suggestion.
225 Thu Jun 26 19:53:11 1997  Nanbor Wang  <nw1@lambada.cs.wustl.edu>
227         * ace/OS.i (strtok_r): Added check on a null string so we won't go
228           past the end of a string.
230         * performance-tests/Misc/context_switch_time.cpp (main): Added
231           get_env_gloval_scale_factor() at the very beginning so that high
232           resolution timer can return correct time in millisecond.
234 Thu Jun 26 15:29:55 1997  Darrell Brunsch <brunsch@cs.wustl.edu>
236         * tests/Timer_Queue_Test.cpp: Changed the random scheduling to use
237           past times instead of future time.  This should fix some unusual
238           behavior of this test.  Thanks to Gonzalo A. Diethelm 
239           <gonzo@ing.puc.cl> for reporting this.
241 Thu Jun 26 12:38:16 1997  Douglas C. Schmidt  <schmidt@cs.wustl.edu>
243         * ACE version 4.2.12, released Thu Jun 26 12:38:16 1997.
245 Thu Jun 26 01:11:10 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
247         * ace/Svc_Conf.y: Added some sanity checks to make sure we don't
248           segfault when things go wrong during the svc.conf file parsing.
249           Thanks to Steve Huston for this suggestion.
251 Thu Jun 26 08:36:37 1997  David L. Levine  <levine@cs.wustl.edu>
253         * Makefile: fix UPTODATE check (for release target) by not
254           running it in a sub-shell.  Also, added ACE-lessons.html
255           to RELEASE_FILES.
257         * performance-tests/Misc/context_switch_time.cpp: use same priority
258           values on Win32 platforms as on Solaris, because thread priority
259           increases with increasing priority values on both of those platforms.
261 Thu Jun 26 01:34:46 1997  Nanbor Wang  <nw1@lambada.cs.wustl.edu>
263         * performance-tests/Misc/misc.{mak,mdp}: Added makefile for NT.
264         
265         * ace/{FILE,DEV}.{h,i}: Added the disable(int signum) function to
266           prevent NT from disabling a FILE/DEV using socket calls.
268 Wed Jun 25 12:59:00 1997    <irfan@TWOSTEP>
270         * ace/Synch_T.h (ACE_SYNCH_PROCESS_MUTEX and
271           ACE_SYNCH_NULL_MUTEX): Added new template typedef to the list. 
273         * tests/Message_Queue_Notifications_Test.cpp: New test for
274           demonstrating notification qualities of Message_Queue.
276         * ace/Strategies.h: Added accessors to these classes to make them
277           more usable.
279 Wed Jun 25 10:47:34 1997  Steve Huston  <shuston@riverace.com>
281         * ace/Parse_Node.cpp: Insure that ACE_Object_Node::symbol(void)
282           returns 0 if the underlying shared library can't be loaded.
284         * ace/OS.h: Added a new type, ACE_SHLIB_HANDLE to allow dynamic
285           linking using correct types on all platforms that support it.
286           Also added a const ACE_SHLIB_DEFAULT_MODE for the 'mode' argument
287           when doing a dlopen-like operation.
288           Moved the ACE_OSCALL_* macros to this file from OS.i
290         * ace/OS.i: Moved ACE_OSCALL_* macros out of here and into OS.h.
291           Added support for dlopen/close/sym/error on HP-UX.  Note - the
292           Service_Configurator tests do not run yet on HP - I'm working on
293           that.
295         * ace/Service_Record.{h, i, cpp}: Use new ACE_SHLIB_HANDLE type for
296           dynamic loading operations.
298         * ace/Parse_Node.{h, cpp}: Use new ACE_SHLIB_HANDLE where appropriate.
300         * ace/Strategies_T.cpp: Use new ACE_SHLIB_HANDLE type.
302 Wed Jun 25 02:36:05 1997  Nanbor Wang  <nw1@lambada.cs.wustl.edu>
304         * ace/OS.i (gmtime_r): Modified the implementation of gmtime_r
305           when OS doesn't provide one.  Notice that the implementation
306           only simulate the semantic and is not thread-safe. 
308         * ace/OS.h: Moved definition of ACE_SHLIB_HANDLE typedef and
309           ACE_DEFAULT_SHLIB_MODE global variable for Win32 to where it
310           belongs.
311           
312         * ace/OS.i: Changed the return type of dlopen() when ACE_HAS_UNICODE to
313           ACE_SHLIB_HANDLE.
314         
315         * ace/OS.{h,i}: Moved ACE_OSCALL and ACE_OSCALL_RETURN for WIN32
316           from OS.i to OS.h.
318 Wed Jun 25 01:23:58 1997  Nanbor Wang  <nw1@dingo.wolfpack.cs.wustl.edu>
320         * ace/OS.i (strtok_r): Modified the implementation when OS does
321           not provide reentrant strtok_r so that our imp. comforms with
322           the semantic of strtok_r ().
324 Wed Jun 25 00:37:56 1997  Douglas C. Schmidt  <schmidt@cs.wustl.edu>
326         * ACE version 4.2.11, released Wed Jun 25 00:37:56 1997.
328 Tue Jun 24 21:30:53 1997  David L. Levine  <levine@cs.wustl.edu>
330         * ace/Svc_Conf_y.cpp: commented out unused args and wrapped
331           assignments in "if" conditionals with parenthesis to avoid
332           g++ warnings.
334 Tue Jun 24 18:15:46 1997  Nanbor Wang  <nw1@dingo.wolfpack.cs.wustl.edu>
336         * ace/Reactor.cpp (wait_for_multiple_events): Modified the way to
337           manipulate timeout value so that we can differentiate when there
338           are timeout events to be handle from no timer and we want to
339           wait indefinitely.
341 Tue Jun 24 16:52:22 1997  David L. Levine  <levine@cs.wustl.edu>
343         * ace/OS.h: reverted ACE_hrtime_t to unsigned __int64 with VC++.
344           This might break something, but we need to know what.
346 Tue Jun 24 16:38:52 1997  Darrell Brunsch <brunsch@cs.wustl.edu>
348         * Added Visual C++ 5.0 specific workspace (.dsw) and project (.dsp)
349           files to both the ace and tests subdirectory.  ACE.DSW in the root
350           directory contains all the project files, so a batch build should
351           be able to build all the project files.
353 Tue Jun 24 14:27:47 1997  Darrell Brunsch <brunsch@cs.wustl.edu>
355         * ace/Timer_{Hash,Heap,List,Wheel}_T.cpp: Changed cancel (type..)
356           to call cancellation() even if there are no timers to cancel.  
357           This causes the correct behavior of calling handle_close () 
358           during expire when handle_timeout() returns -1.  Thanks to 
359           Hamutal Yanay <hamutal_yanay_at_quantum@mail.icomverse.com> for 
360           pointing this out.
362         * tests/Timer_Queue_Test.cpp: Updated to correctly test this.
364 Tue Jun 24 13:02:51 1997  David L. Levine  <levine@cs.wustl.edu>
366         * ace/SString.h (ACE_SString ctor): changed "allocator" to "alloc".
367           Thanks to Brian Mendel <bmendel@mdc.com> for reporting this.
369 Tue Jun 24 12:58:28 1997  James C Hu  <jxh@lambada.cs.wustl.edu>
371         * include/makeinclude/platform_irix6.4*: Shuts up useless warnings
372           about multiply defined template instances.
374 Tue Jun 24 12:50:52 1997  Douglas C. Schmidt  <schmidt@cs.wustl.edu>
376         * ACE version 4.2.10, released Tue Jun 24 12:50:52 1997.
378 Tue Jun 24 00:44:30 1997  Nanbor Wang  <nw1@lambada.cs.wustl.edu>
380         * ace/SPIPE.{h,i}: Added the disable(int signum) function to
381           prevent NT from disabling an SPIPE using socket calls.
383 Mon Jun 23 22:14:39 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
385         * ace/Svc_Conf*: Changed the name of the YYSTYPE field
386           ACE_Static_Node_ to static_node_ to be consistent with the other
387           fields.
389 Mon Jun 23 18:28:55 1997  David L. Levine  <levine@cs.wustl.edu>
391         * ace/ACE.cpp: added auto_basic_array_ptr specialization.
393         * ace/Service_Config.cpp, tests/Future_Test.cpp,
394           examples/Threads/future[12].cpp: added auto_basic_ptr
395           specializations.
397         * include/makeinclude/platform_vxworks5.2_g++.GNU:
398           reworked to supported different targets, instead of only PowerPC.
400 Mon Jun 23 16:06:35 1997  James C. Hu  <jxh@swarm.cs.wustl.edu>
402         * ace/OS.i: Moved definition of sema_* methods to follow cond_*
403           methods to remove compiler warnings on SGI.
405 Mon Jun 23 09:42:08 1997  Darrell Brunsch <brunsch@cs.wustl.edu>
407         * tests/Timer_Queue_Test.cpp: added testing for cancellation 
408           during expire (when of handle_timeout() in an event handler 
409           returning -1).
411 Mon Jun 23 09:18:39 1997  David L. Levine  <levine@cs.wustl.edu>
413         * Makefile: added up-to-date check for "make release" from
414           /project/adaptive/ACE_wrappers.  Also, "make release" now
415           adds release entry to latest ChangeLog.
417         * ace/Makefile: build shared library before static library. 
418           This appears to fix a problem with Sun C++ 4.{1,2} possibly 
419           related to its template instantiation scheme.  If the
420           static library is built first, then .shobj/Reactor.so
421           and .shobj/Timer_Hash.so (and possibly others) fail to
422           build due to ACE_TimeValue::normalize () "relocations remain
423           against allocatable but non-writable sections".
424           Thanks to Steve Huston <shuston@riverace.com> and
425           Satoshi Ueno <satoshi.ueno@gs.com> for reporting this, and
426           to Satoshi for verifying the fix.
428         * ace/ACE.cpp (terminate_process): removed used of
429           ACE_OSCALL_RETURN macro because its defined in OS.i, and so
430           not available if inlining is disabled.
432         * ace/Auto_Ptr.{h,i}: made "p_" protected instead of private
433           so that it can be accessed with the new class arrangement.
434           Also, made the auto_array_ptr operator-> const.
436         * ace/Sched_Params.cpp (previous_priority, VxWorks only):
437           removed ACE_UNUSED_ARG (policy) because policy is used in
438           this function. 
440         * netsvcs/lib/TS_Clerk_Handler.cpp (parse_args): wrapped TCHAR
441           argument to sizeof in parenthesis.
443 Mon Jun 23 09:12:04 1997  Nanbor Wang  <nw1@lambada.cs.wustl.edu>
445         * ace/Auto_Ptr.i (auto_array_ptr): Fixed a typo.
447 Mon Jun 23 08:03:46 1997  Darrell Brunsch <brunsch@cs.wustl.edu>
449         * ace/Auto_Ptr.h: changed inheritance of auto_basic_array_ptr in 
450           auto_array_ptr to include the template parameter X.
452         * ace/IOStream_T.i: removed default parameter in the definition
453           of ACE_Streambut_T::recv_n() and ACE_SOCK_Dgram_SC::recv_n()
455 Mon Jun 23 01:13:15 1997    <irfan@TWOSTEP>
457         * ace/OS.cpp (fork_exec): Fixed the usage of ACE_WIDE_STRING.
459         * test_registry_iterator.cpp (main): Fixed the usage of
460           ACE_WIDE_STRING.
462         * netsvcs/lib/TS_Clerk_Handler.cpp (parse_args): Fixed the usage
463           of ACE_WIDE_STRING.
465         * ace/Auto_Ptr.h: Added support for basic types by seperating the
466           auto_ptr classes into two. One that requires the -> operator
467           support and the other that does not. The former inherits from
468           the latter.
470         * ace/{FILE,DEV,SPIPE}_Addr.h: Added support for multibyte and
471           wide character addr_to_string and string_to_addr functionality.
473         * ace/Connector.cpp && ace/Acceptor.cpp (info): Fixed sizeof bug.
475         * examples/Connection/blocking/SPIPE: Added UNICODE support for
476           this example.
478         * ace/OS.h: Added new macro ACE_MULTIBYTE_STRING.
480         * ace/ACE.cpp (terminate_process): Fixed unused args errors.
482 Sun Jun 22 09:58:36 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
484         * Released version 4.2.9 for testing.
486         * ace/Log_Msg.cpp (open): Changed the use of ACE_LOG_MSG-> within
487           the open() method to use this-> in order to avoid deadlocks.
488           Thanks to Per Andersson for reporting this.
490         * ace/ACE.cpp: Changed the use of __SVR4 and __unix to sparc and
491           unix to work better with various UNIX environments.  Thanks to
492           Michael R. MacFaden <mrm@cisco.com> for these changes.
494         * ace/Handle_Set.cpp (count_bits): Added special code to handle
495           the case where fdmask is typedef'd as a long rather than an int.
496           Thanks to Eric Newton <ecn@smart.net> and James Johnson for
497           reporting this.
499         * ace/IOStream.h: Changed the name of QuotedString to
500           ACE_Quoted_String to be consistent with the ACE naming scheme.
501           Thanks to James Johnson for suggesting this.
503         * ace/IOStream_T.i: Added this new file to split off the inlined
504           code from the header file.
506         * ace/ACE.cpp (terminate_process): Remove the
507           ACE_UNUSED_ARG(signum) from terminate_process().  Thanks to Wei
508           Chiang for reporting this.
510 Sun Jun 22 17:19:18 1997  David L. Levine  <levine@cs.wustl.edu>
512         * examples/Threads/process_manager.cpp (main): replaced call to
513           kill with terminate.
515 Sat Jun 21 10:48:34 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
517         * examples/Reactor/FIFO: Added a new example that illustrates
518           how the Reactor and the FIFO wrappers work together.  Thanks
519           to Johannes Gutleber <Johannes.Gutleber@cern.ch> for sending
520           this.
522         * tests/Time_Service_Test.cpp (main): Replaced the kill() call
523           with the terminate() call since kill() isn't portable across
524           platforms.
526         * ace/Process: The kill() method on this class was being used
527           incorrectly.  I've created a new method called terminate() that
528           terminates the process.
530         * ace/Process_Manager: Renamed the kill() method to terminate()
531           and updated the implementation to use the new
532           ACE::terminate_process() call.
534         * ace/ACE: Moved the incorrect Win32 and Chorus implementations of
535           ACE_OS::kill() and put them in a new static method called
536           ACE::terminate_process().
538         * ace/ACE: Changed the name of the is_process_active() to the
539           more concise process_active().
541         * ace/OS.i: Added an implementation of ACE_OS::kill() for Chorus.
542           Note that this doesn't behave as UNIX does -- it kills the
543           process id rather than sending a signal!  Thanks to Wei Chiang
544           <chiang@tele.nokia.fi> for these fixes.
546         * examples/Reactor/Misc/notification.cpp: Added patches to run
547           this example under Chorus.  Thanks to Wei Chiang
548           <chiang@tele.nokia.fi> for these fixes.
550         * ace/Connector.cpp (create_AST): Changed the order of some
551           instructions in Connector::create_AST method to make it more
552           safer to use in multi-thread environment.  Thank to Paul Han
553           <phan@CCGATE.HAC.COM> for reporting the problem and the fix.
555         * ace/Connector.cpp (create_AST): Make sure to pass in the "mask"
556           when calling remove_handler() so that we get the right set of
557           bits removed from the Reactor.
559         * tests/Reactor_Timer_Test.cpp (class Time_Handler): Changed int
560           to long to avoid type conversion problems on 64 bit SGI.  Thanks
561           to Fred LaBar <flabar@fallschurch.esys.com> for reporting this.
563         * examples/Reactor/FIFO: Added a test program to illustrate the
564           interaction of the ACE Reactor with the FIFO IPC mechanism.
565           Thanks to Johannes Gutleber <Johannes.Gutleber@cern.ch> for this
566           test.
568         * examples/Reactor/Misc/pingpong.cpp: Added support for Chorus.
569           Thanks to Wei Chiang <chiang@tele.nokia.fi> for this.
571         * ace: Added a number of minor changes to signal assignment
572           code so that ACE will compile with Tandem NonStop.  Thanks
573           to Jan Perman <uabjjpp@osd.ericsson.se> for these fixes.
575         * ace/config-tandem.h:  Added a new config file for the
576           Tandem NonStop-UX 4.2MP platform.  Thanks to Jan Perman
577           <uabjjpp@osd.ericsson.se> for contributing this.
579         * include/makeinclude/platform_tandem.GNU:  Added a new platform 
580           file for the Tandem NonStop-UX 4.2MP platform.  Thanks to
581           Jan Perman <uabjjpp@osd.ericsson.se> for contributing this.
583         * ace/config-unixware-2.1.2-g++.h: Added a new config file for
584           UNIXWARE 2.1.2.  Thanks to Ganesh Pai (gpai@voicetek.com) for
585           contributing this.
587         * include/makeinclude/platform_unixware_g++.GNU: Updated the
588           UNIXWARE platform config file to work for version 2.1.2.  Thanks
589           to Ganesh Pai (gpai@voicetek.com) for contributing this.
591         * ace/Handle_Set.cpp (count_bits): Added another 0xff mask to
592           prevent problems with sign extension on machines with 32 bit
593           ints and 64 bit longs.  Thanks to James Johnson for reporting
594           this.
596         * ace/OS.h: Updated all of the ACE_DEFAULT* macros in OS.h so that
597           they can be overridden by #defines in the config.h file.  Thanks
598           to Chuck Gehr for suggesting this.
600 Thu Jun 19 22:20:20 1997  David L. Levine  <levine@cs.wustl.edu>
602         * ace/OS.h (VxWorks/g++ only): added horrible hack to work around
603           mismatch of memcmp, etc., prototypes in <string.h>.
605         * ace/OS.i: reordered many function definitions to avoid use
606           before definition.  Building with g++ 2.7.2 on VxWorks 5.3.1
607           revealed them.
609         * ace/config-vxworks5.2-g++.h: removed ACE_HAS_STRING_CLASS and
610           ACE_HAS_GNU_CSTRING_H, because those aren't distributed with
611           Tornado 1.0.1.
613 Thu Jun 19 15:31:53 1997  Darrell Brunsch <brunsch@cs.wustl.edu>
615         * ace/Timer_Wheel_T.cpp: Fixed problem with expire () not
616           expiring timers with a timeout of the current time. This was
617           causing problems with Timer_Queue_Test when high profile
618           timers were disabled (such as Windows NT when the
619           environment variable ACE_SCALE_FACTOR was undefined)
621 Wed Jun 18 19:43:35 1997  David L. Levine  <levine@cs.wustl.edu>
623         * ace/Signal.cpp: 'removed "const" from #define of
624           ACE_MAX_SIGNAL_HANDLERS because it broke Irix 6.2 build.  Thanks
625           to Gonzalo A. Diethelm <gonzo@ing.puc.cl> for reporting this.
627         * examples/Threads/task_four.cpp (Invoker_Task::svc): fixed typo,
628           n_tasks instead of ntasks.
630 Wed Jun 18 11:25:14 1997  Nanbor Wang  <nw1@lambada.cs.wustl.edu>
632         * examples/Threads/{task_four,token}.cpp: Changed the use of
633           cerr/cout to ACE_DEBUG macro.  Thanks to Chuck Gehr
634           <gehr@sweng.stortek.com> for pointing these out.
635         
636 Tue Jun 17 15:11:09 1997  David L. Levine  <levine@cs.wustl.edu>
638         * ace/config-sunos5.5-sunc++-4.x.h,
639           include/makeinclude/platform_sunos5_sunc++.GNU: support enabling of
640           exception handling via "exceptions=1" make flag.  Exception handling
641           does seem to work with Sun C++ 4.2, even on MP machines, if patch
642               104631-02 "C++ 4.2: Jumbo Patch for C++ 4.2 on Solaris SPARC"
643           is applied.  Please beware that enabling of exception handling can
644           adversely affect peformance, even if the program doesn't use it.
645           So, we haven't enabled it by default.  Thanks to Chris Cleeland
646           for suggesting not to enable it by default.
648         * ace/IOStream.h: added #include of "ace/config.h" so that
649           ACE_LACKS_ACE_IOSTREAM can be checked.  Thanks to Ganesh Pai
650           <gpai@voicetek.com> for reporting this problem.
652         * ace/ACE.cpp (get_handle): use /dev/udp instead of /dev/ip on
653           SVR4 machines because it has other read permission by default
654           (on Solaris 2.x).
656         * ace/ACE.cpp (get_ip_interfaces): use auto_array_ptr instead of
657           auto_ptr so that the array gets deleted properly, and zero it
658           out to avoid unitialized memory read reports from Purify.
660         * ace/Timer_Hash_T.cpp (cancel): added "[]" to delete of timer_ids
661           array.  Purify rules.
663         * Timer_Queue_Test.cppc (test_performance): added "[]" to delete of
664           times array.  Purify rules.
666 Tue Jun 17 15:31:01 1997  Steve Huston  <shuston@riverace.com>
668         * ace/ACE.cpp: Fixed get_ip_interfaces (and count_interfaces) to
669           work properly on HP-UX (and probably other similar UNIXes).  Needed
670           to work with non-IP interfaces present, and fixed to copy the
671           IP address without the fudge factor being applied.
673 Tue Jun 17 14:02:01 1997  Nanbor Wang  <nw1@lambada.cs.wustl.edu>
675         * ace/{Free_List.h,Free_List.cpp,Timer_Queue_T.h}: Added #include
676           "ace/Synch_T.h" to Free_List.h and removed related inclusion
677           from Free_List.cpp and Timer_Queue_T.h.  Thanks to
678           Jack Erickson <jack@cibc.com> for reporting this problem.
680 Tue Jun 17 09:41:48 1997  David L. Levine  <levine@cs.wustl.edu>
682         * tests/Enum_Interfaces_Test.cpp: changed name of log file to match
683           the program name, so that the one-button test can easily find it.
685 Tue Jun 17 04:58:38 1997  Nanbor Wang  <nw1@lambada.cs.wustl.edu>
687         * ace/Timer_Queue_T.h: Added include file "ace/Synch_T.h" to avoid
688           compilation errors in SC 4.1.  We didn't notice this because
689           most of us have moved to SC 4.2.  Don't know why this didn't
690           cause any problem in SC 4.2.  Thanks to Jack Erickson
691           <jack@cibc.com> for reporting this bug.
693 Mon Jun 16 22:25:18 1997  Steve Huston <shuston@riverace.com>
695         * ace/ACE.cpp: Fixed conditional compiles to compile the 
696           interface counting code for HP - it reports 0 interfaces,
697           so it needs more debugging still.
699         * include/makeinclude/platform_hpux_aCC.GNU: added -g to link
700           command for building shared library.
702         * tests/Buffer_Stream_Test.cpp: fixes to execute correctly and only
703           fail assertions on real failures.
705 Mon Jun 16 19:05:13 1997  Steve Huston <shuston@riverace.com>
707         * ace/Free_List.cpp: added #include ace/Synch.h, needed by
708           Free_List.i.  Fixes compile errors on HP-UX.
710 Mon Jun 16 10:59:55 1997  Darrell Brunsch <brunsch@cs.wustl.edu>
712         * ace/Timer_Wheel_T.cpp: Changed expire () so it doesn't
713           access past the end of an array when it finds nothing to
714           expire.  Thanks to Norbert Rapp
715           <norbert.rapp@nexus-informatics.de> for catching this.
717 Sun Jun 15 03:44:21 1997  Nanbor Wang  <nw1@dingo.wolfpack.cs.wustl.edu>
719         * examples/Threads/thread_specific.cpp (worker): Changed the
720           output of diagnostics from using cout to using printf.  Also
721           corrected several portability problems.  Thanks for Chuck Gehr
722           <gehr@sweng.stortek.com> for pointing these out.
723         
724         * ace/OS.i (thread_mutex_trylock): Corrected the code for NT.  Now
725           this function returns 0 if lock is obtained and -1 otherwise.
726           Thanks to Robert V. Head <rhead@virtc.com> for noticing this.
728         * performance-tests/Synch-Benchmarks/Synch_Tests.{mdp.mak}:
729           Added project workspace and makefile for NT to this directory.
730         
731         * performance-tests/Synch-Benchmarks/svc.conf: 
732         * performance-tests/Synch-Benchmarks/{Options,Benchmark}.h:
733         * performance-tests/Synch-Benchmarks/*.cpp: Reworked these
734           files to have them compiled on NT.
736 Sat Jun 14 03:53:13 1997  Nanbor Wang  <nw1@dingo.wolfpack.cs.wustl.edu>
738         * performance-tests/Synch-Benchmarks/pipe_proc_test.cpp (class
739           Pipe_Proc_Test): Changed the type of pipe_handles[] from int to
740           ACE_HANDLE.
742         * performance-tests/Synch-Benchmarks/sysvsema_test.cpp: When
743           creating the semaphore, explicitly cast the key value to (key_t)
744           since NT couldn't handle the conversion.
746 Fri Jun 13 19:32:03 1997  Steve Huston <shuston@riverace.com>
748         * ace/ACE.cpp: Fixed count_interfaces to compile on non-SVR4
749           systems such as HP-UX.  Not tested yet.
751         * ace/OS.i: Fixed mis-arranged conditional compile for HP-UX in
752           asctime_r.
754 Fri Jun 13 03:13:51 1997  Nanbor Wang  <nw1@dingo.wolfpack.cs.wustl.edu>
756         * ace/config-win32-common.h: Added a "pragma comment" directive to
757           direct MSVC to link in mswsock.lib automatically.  Thanks to
758           Bill Tang <btang@magellan.com> for reminding this.
760         * ace/ace.{mak,mdp}: Removed explicit inclusion of mswsock.lib.
761           Thanks to Bill Tang <btang@magellan.com> for reminding this.
763         * examples/OS/Process/Process.{mdp,mak}: For some reasons, I got
764           an "unknown link error, please refer to documentation for
765           appropriate technical supports" when building this example on NT
766           (didn't help much, did it?)  Reassigning the linked library
767           solved the problem.
769         * examples/OS/Process/process.cpp: Updated class name
770           ACE_ProcessEX to ACE_Process because ACE_ProcessEX no longer
771           exists.  Also, all exec'ed programs' absolute names have been
772           changed and let the environment variable "path" to decide which
773           program(s) to exec.
775 Thu Jun 12 15:48:16 1997  Chris Cleeland  <cleeland@cs.wustl.edu>
777         * ace/ACE.cpp (get_ip_interfaces): Corrected code in the BSDish
778           section so that it at least compiles on Linux.  I haven't tested
779           this AT ALL.
781         * ace/Timer_Queue_T.cpp (calculate_timeout): When this was called
782           with the default argument from handle_events(), max_timeout was
783           passed as zero, which would cause a SEGV when attempts were made
784           to deref it.  Added protection to simply return a zero ptr in that
785           case.
787 Thu Jun 12 13:18:03 1997  Steve Huston <shuston@riverace.com>
789         * ace/OS.{h,i,cpp}: Changes for HP-UX 10 primarily.  Threads
790           support for DCE Draft 4 threads (bundled with HP-UX 10).
791           Correct usage of reentrant C library functions for HP-UX.
793         * ace/OS.i: Changed timeout argument to 2nd select function to
794           allow the compiler to pick a conversion operator.  As it was,
795           HP compiler would not compile it.
797         * ace/Service_Object.cpp: When deleting the service memory pointed
798           to by a void *, use "operator delete" rather than deleting a void,
799           which is prohibited by the current ANSI C++ draft.
801         * ace/config-hpux-10.x.h: This is now a compiler-independent header
802           file, and is included by config-hpux-10.x-hpc++.h.  This file
803           contains all correct settings for HP-UX 10.x, and compiler-specific
804           config files should use this - see config-hpux-10.x-hpc++.h.
806         * ace/config-hpux-10.x-hpc++.h: New config file for either of the HP
807           compilers (HP C++ or HP aC++).  It figures it out internally, and
808           uses config-hpux-10.x.h for OS details.
810         * include/makeinclude/rules.lib.GNU: Allow for doing a PRELIB step
811           when building a shared library, and not using .shobj/*.so files.
812           This allows HP aC++ to close all template instantiations for the
813           entire library at once, rather than separately, reducing the
814           size of the resultant library significantly.
816         * include/makeinclude/platform_hpux-aCC.GNU: build libraries with
817           templates instantiated all at once.  Compile with flags for using
818           the reentrant versions of C library functions.
820 Wed Jun 11 15:20:15 1997  Nanbor Wang  <nw1@merengue.cs.wustl.edu>
822         * ace/Timer_Queue_T.{h,cpp} (calculate_timeout): Changed the
823           second parameter the_timeout from a ref. to a ptr. to a ptr in
824           order to avoid compilation warning.  Since the pointer itself is
825           not modified within the function, it's ok to change this. 
827         * ace/Reactor.cpp (wait_for_multiple_events): Added ACE_Time_Value
828           the_timeout as a place holder for timeout value when
829           max_wait_time is NULL.  Otherwise,
830           Timer_Queue::calculate_timeout won't process the timer queue
831           even it's not empty.
833 Wed Jun 11 11:14:29 1997  James C Hu  <jxh@lambada.cs.wustl.edu>
835         * include/makeinclude/platform_mvs.GNU (RANLIB):  Requested change
836           from Check Gehr (gehr@sweng.stortek.com), RANLIB = echo
838 Wed Jun 11 04:47:52 1997  Nanbor Wang  <nw1@dingo.wolfpack.cs.wustl.edu>
840         * ACE.cpp (count_interfaces): Two bugs were corrected here.  Both
841           were typo.
843         * tests/Timer_Queue_Test.cpp: Added include file ace/Timer_Queue.h
845 Tue Jun 10 16:02:52 1997  Darrell Brunsch <brunsch@cs.wustl.edu>
847         * ace/SString.{h,cpp}: Changed the parameters in CString::substring()
848           and WString::substring().  Removed const and changed length to a
849           ssize_t because of signed/unsigned comparison warnings.
851         * ace/ACE.cpp: Changed a loop variable in get_ip_interfaces() to 
852           a size_t because of a signed/unsigned comparison warning.
854 Tue Jun 10 12:47:49 1997    <irfan@TWOSTEP>
856         * ace/SString.cpp (operator = and operator +=): There were two
857           bugs here.  operator= forgot to tack on the NULL terminator
858           after the memcpy() and operator+= appended the second string
859           incorrectly. Thanks to Michael R. MacFaden <mrm@cisco.com> for
860           pointing these out.
862 Tue Jun 10 12:16:04 1997  Darrell Brunsch <brunsch@cs.wustl.edu>
864         * ace/Makefile: Updated to reflect newly added files
866         * ace/Proactor.cpp: Removed template specializations.
868         * ace/Reactor.cpp: Removed some template specializations.
870         * ace/Timer_Hash.h: Added an include for Timer_Heap.
872         * ace/Timer_Hash_T.cpp: Changed a reference to ACE_Timer_Node
873           to ACE_Timer_Node_T<TYPE>
875         * ace/Timer_{Hash,Heap,List,Wheel}_T.h: Changed #include 
876           "ace/Timer_{...}.h" to "ace/Timer_{...}_T.h".
878         * ace/Timer_Queue.cpp: Removed some template specializations.
880         * ace/Timer_Queue.h: Removed the including of Timer_Queue.cpp
881           since there are no templates to warrant it. 
883         * ace/Timer_{Hash,Heap,List,Wheel}.cpp: Added these and put the
884           appropriate template specializations here.
886 Tue Jun 10 02:08:25 1997  Nanbor Wang  <nw1@siesta.cs.wustl.edu>
888         * examples/Log_Msg/README: Revised.
890         * examples/Log_Msg/test_log_msg.cpp: Revised program output so
891           that it's clearer to explain.
893 Mon Jun 09 15:46:41 1997    <irfan@TWOSTEP>
895         * OS.i (mutex_lock): When WaitForSingleObject returns
896           WAIT_ABANDONED, the lock is held by the calling thread.
897           Therefore we must return 0 from the method.  I have added a new
898           mutex_lock() method that takes an extra "abandoned" parameter.
899           This is set wehen the mutex is abandoned.  Thanks to Dieter
900           Quehl <dietrich.quehl@med.siemens.de> for pointing this out.
902 Mon Jun  9 02:31:36 1997  Nanbor Wang  <nw1@siesta.cs.wustl.edu>
904         * tests/Sigset_Ops_Test.cpp (main): Comment out testing of invalid
905           sigset checking for most platforms don't seem to support it.
906           Perhaps the ACE's sigset* functions should remove this check for
907           compatibility.  
909 Sun Jun  8 11:39:06 1997  Douglas C. Schmidt  <schmidt@mambo.cs.wustl.edu>
911         * ace/OS.i (set): There was a typo here where 
913           ((long) (d - (double) l)) * 1000000
915           should be 
917           (long) ((d - (double) l) * 1000000)
919           since otherwise the values are always 0.  Thanks to Jim Crossley
920           <jim@lads.com> for reporting this.
922         * tests/Enum_Interfaces_Test.cpp (main): Changed ACE_UINT32 to
923           size_t to be consistent with the class definition.  Thanks to
924           Nanbor Wang for reporting this.
926         * ace/Token.h: Added some no-op method for ACE_Token so that it
927           will still compile even if ACE_HAS_THREADS isn't defined.
929 Sun Jun  8 01:37:52 1997  Nanbor Wang  <nw1@siesta.cs.wustl.edu>
931         * examples/Log_Msg/README: Added a README file.
933         * tests/Sigset_Ops_Test.cpp (main): bug fixed.
936 Sat Jun  7 16:40:22 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
938         * ace/SString.h (string.): Added a substring() member function to
939           ACE_*String classes.  Thanks to Michael MacFaden <mrm@cisco.com>
940           for contributing this.
942         * ace/ACE: Added a new method called
944           int get_ip_interfaces(count, address_array) 
946           which will query the OS kernel for the IP addresses for each network
947           interface found and return a count and array of ACE_INET_Addr objects.
948           The reason for adding this method is that most client apps
949           assume gethostbyname(uname|gethostname)) will work.  If the
950           nameservices is misconfigured/broken or the machine is multi-homed,
951           the client apps have alot of coding to do to figure out if an inteface
952           represents a local address or not.  On UNIX, this includes
953           the loopback addr. On NT, the loopback addr is not added
954           (but may change the impl if others think this useful).
955           Thanks to Michael MacFaden <mrm@cisco.com> for contributing
956           this.
958         * ace/Synch[_T]: Changed all the classes so that internal instance
959           variables are now protected rather than private.  This allows
960           greater flexibility if there's a need to subclass
961           (which shouldn't occur very much...).  Thanks to
962           Reza Roodsari <reza@sprynet.com> for suggesting this.
964 Fri Jun 06 21:30:57 1997  David L. Levine  <levine@cs.wustl.edu>
966         * ace/Timer_{Hash,Wheel}_T.cpp:  added #includes of
967           ace/High_Res_Timer.h.  Also, in Timer_Wheel_T.cpp (cancel),
968           moved the declaration of "i" out of the loop because it's
969           used in two different loops.
971 Fri Jun 06 17:11:13 1997    <irfan@TWOSTEP>
973         * OS.i (sleep): If ACE_POLL_IS_BROKEN is defined, use select() to
974           do micro second sleeps.
976         * ace/CORBA_Handler.h (ACE_CORBA_*): The new version of Orbix
977           (2.2C01) on NT finally supports namespaces.  So now the macros
978           ACE_CORBA_n need to be defined using the "::" and not the "_"
979           for NT if the new Orbix is being used. Thanks to John Morey
980           (jmorey@tbi.com) for the changes.
982 Fri Jun 06 02:16:08 1997    <nw1@COYOTE>
984         * Sigset_Ops_Test.cpp: Added to test correct implementation of
985           sigset manipulating functions. 
986         
987         * run_tests.{sh,bat}, Makefile: Added Sigset_Ops_Test.
989 Thu Jun 05 20:32:39 1997  David L. Levine  <levine@cs.wustl.edu>
991         * tests/Timer_Queue_Test.cpp (randomize_array): removed static
992           qualifier now that it's a template function.  It caused a warning
993           with Sun C++.
995 Thu Jun 05 18:28:36 1997    <irfan@TWOSTEP>
997         * ace/Asynch_Acceptor.cpp (open): The Proactor was beening passed
998           implicitly. I have made this explicit by making this a parameter
999           to open. Thanks to MehulM@spa-marketing.com (Mehul Mahimtura)
1000           for this.
1002 Thu Jun  5 12:06:45 1997  Chris Cleeland  <cleeland@merengue.cs.wustl.edu>
1004         * ace/Timer_Queue_T.h (ACE_Timer_Queue_T): Overloaded
1005           calculate_timeout with a version that accepts a pointer to
1006           storage for the ACE_Time_Value as an argument.  This has a small
1007           performance win over the other b/c it does not take a lock.
1008           The change was made after examining Quantify output for TAO
1009           and observing that this lock caused
1010           Reactor::wait_for_multiple_events() to consume a substantial
1011           percentage of processing time.
1013         * ace/Reactor.cpp (wait_for_multiple_events): This now uses a
1014           different version of calculate_timeout() that doesn't require
1015           taking a lock.
1017 Thu Jun 05 08:48:49 1997  David L. Levine  <levine@cs.wustl.edu>
1019         * ace/Reactor.cpp: added template specializations.
1021         * ace/Timer_Queue_T.cpp (ACE_Timer_Queue_T ctor): rearranged
1022           initializers to match declaration order.
1024 Thu Jun  5 06:08:06 1997  Nanbor Wang  <nw1@dingo.wolfpack.cs.wustl.edu>
1026         * ace/OS.i (sigaddset, sigdelset, sigismember): NSIG itself is
1027           invalid and must be excluded.
1029 Wed Jun 04 21:24:35 1997  David L. Levine  <levine@cs.wustl.edu>
1031         * ace/config-sunos5.5-g++.h: fixed typo: #define instead of
1032           #defined ACE_HAS_CLOCK_GETTIME.
1034         * ace/config-sunos5.5-sunc++*.h: Combined
1035           config-sunos5.5-sunc++-4.x.h and config-sunos5.5-sunc++-4.1.h,
1036           and removed the latter.  The Orbix config file now #includes
1037           config-sunos5.5-sunc++-4.x.h and adds its differences.
1039         * include/makeinclude/platform_sunos5_sunc++*.GNU: Combined
1040           platform_sunos5_sunc++.GNU and platform_sunos5_sunc++-4.1.GNU,
1041           and removed the latter.  platform_sunos5_sunc++_orbix.GNU now
1042           includes the non-orbix file and adds its differences.  Also,
1043           added optional CC -fast support.  To enable, just add "fast=1"
1044           to your "make" invocation.
1046 Wed Jun 04 12:21:41 1997    <irfan@TWOSTEP>
1048         * tests: Made the following config files consistent:
1049           UNIXclerk.conf UNIXtokens.conf Win32clerk.conf Win32server.conf
1050           Win32tokens.conf
1052         * ace/OS.h: Made sure that some #defines were guarded for
1053           redefinition specially for the Bristol (that provides Win32 API
1054           on AIX) headers. Thanks to Rich Christy (rchristy@cccis.com) for
1055           suggesting these changes.
1057         * ace/Handle_Set.h: Changed the type of handle_index from int to
1058           u_int on Win32.  Thanks to Jack Erickson (jack@cibc.com) for
1059           suggesting this.
1061         * ace/FILE.h (ACE_FILE_STREAM): Fixed this #define from
1062           ACE_FILE_Stream to ACE_FILE_IO.
1064 Tue Jun  3 21:23:48 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
1066         * ace/Timer_{Queue,Hash}: Fixed some uses of template typedefs
1067           since GCC is too lame to handle them correctly.  Therefore, I
1068           had to expand TIMER_QUEUE into the ugly fully expanded name.
1070         * ace/Timer_Queue_T.cpp: Moved the implementation of
1071           ACE_Event_Handler_Handle_Timeout_Upcall from Timer_Queue.* into
1072           Timer_Queue_T.* since only template classes should go into *_T.*
1073           files.
1075 Tue Jun  3 18:16:02 1997  Darrell Brunsch <brunsch@cs.wustl.edu>
1077         * ace/Timer_Queue.*:
1079           Templatized ACE_Event_Handler_Handle_Timeout_Upcall with LOCK
1080                 
1081           Added deletion() to Upcall Functors.  This gets called if there
1082           are any nodes in a queue and the queue's destructor is called
1084         * ace/Timer_Queue_T.*:
1086           Changed iterator accessor to public
1088           Removed two template parameters from ACE_Timer_Node_T so only
1089           EVENT is left.  Added accessors instead of using friendships,
1090           and deleted the constructor (use set() instead)
1092           Changed iterator into a general iterator (with first(), next(),
1093           isdone() and item () methods)
1094           
1095           Added remove_first () method that removes and returns the
1096           earliest timer in the queue
1097           
1098           Added ACE_Free_List support
1100         * ace/Timer_Heap*:
1102           Added upcall functor deletion() support
1104           Added remove_first () method that removes and returns the
1105           earliest timer in the queue
1106           
1107         * ace/Timer_List*:
1109           Changed to double-linked circular list and changed the timer_id
1110           to be a pointer to the node (like it is in Timer Wheel and Timer
1111           Hash)
1113           Added upcall functor deletion() support
1115           Added remove_first () method that removes and returns the
1116           earliest timer in the queue
1117           
1118           Added check for timer_id of -1 so we don't try to delete the
1119           error code if it is passed into cancel
1121           Changed Timer_List_Iterator_T constructor parameter from list to
1122           listParm to resolve a conflict with STL.  Thanks to Todd
1123           Barkalow <barkate@louisville.stortek.com> for this fix
1125         * ace/Timer_Wheel*:
1126           Added HighRes timer support
1127           
1128           Added upcall functor deletion() support
1129           
1130           Added earliest_pos_ variable to keep track of the list with
1131           the earliest node
1133           Created an expire that is specialized for ACE_Timer_Wheel
1135           Added remove_first () method that removes and returns the
1136           earliest timer in the queue
1137           
1138           Added check for timer_id of -1 so we don't try to delete the
1139           error code if it is passed into cancel
1141         * ace/Timer_Hash*:
1143           Added Timer Hash Queue - This is a class that can take another
1144           timer queue type (Timer List, Timer Heap...) as a template
1145           parameter (BUCKET) and then do an intermediate hash of a timer
1146           to determine which queue among a table of timer queues to put
1147           the timer into.  ACE_Timer_Hash is typedefed to the Timer List
1148           version and ACE_Timer_Hash_Heap is typedefed to the Timer Heap
1149           version
1151           Added HighRes timer support
1153           Added upcall functor deletion() support
1155           Created an expire that is specialized for ACE_Timer_Hash
1157           Added remove_first () method that removes and returns the
1158           earliest timer in the queue
1159           
1160           Added check for timer_id of -1 so we don't try to delete the
1161           error code if it is passed into cancel
1163         * ace/Free_List.*
1165           Added ACE_Free_List<T> and ACE_Locked_Free_List<T, LOCK>.  These
1166           are used to maintain free lists of nodes. ACE_Free_List is a
1167           abstract class where ACE_Locked_Free_List is a concrete one that
1168           has a mutex parameter (LOCK).
1170         * ace/OS.h:
1172           Added ACE_DEFAULT_TIMER_HASH_TABLE_SIZE constant
1174           Added ACE_DEFAULT_FREE_LIST_* constants
1176         * ace/Proactor.*:
1178           Added deletion() to Upcall Functors.  This gets called if there
1179           are any nodes in a queue and the queue's destructor is called.
1181         * tests/Timer_Queue_Test.cpp:
1183           Added HighRes timer support
1185           Changed the array of timer queues into a list (to more easily
1186           add/remove/comment out an entry)
1188           Added some more performance tests with randomization
1190 Tue Jun  3 00:26:06 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
1192         * ace/OS.h: Changed the access protection for ACE_cond_t,
1193           ACE_sema_t, ACE_event_t, and ACE_rwlock_t so that it is
1194           protected rather than private.  In addition, added ACE_Export to
1195           all of these classes so that they are visible outside of a DLL.
1196           Thanks to Ivan Murphy for these suggestions.
1198         * ace/OS.h: Changed the value of ACE_MAX_DEFAULT_PORT on Win32 to
1199           0 in order to work around a nasty NTism...  Thanks to Jon Biggar
1200           <jon@sems.com> for reporting this.
1202 Mon Jun  2 16:29:48 1997  James C Hu  <jxh@lambada.cs.wustl.edu>
1204         * ace/Process.*:
1205           - Fixed ACE_Process::spawn to close descriptors after having
1206           been duped.
1207           - Fixed ACE_Process::spawn to exit () after an error is
1208           encountered in the child process, rather than returning.
1209           - Fixed ACE_Process_Options::set_handles to duplicate handles
1210           that are passed in, and then to close them in the destructor.
1212 Sun Jun 01 22:21:28 1997  David L. Levine  <levine@cs.wustl.edu>
1214         * examples/Threads/tss1.cpp: made some globals non-static or
1215           const so that tss1 will link with Sun C++ 4.2 -O3.  I don't
1216           know what the problem is; it only shows up with optimization
1217           enabled.  These fixes work around it.
1219 Sun Jun 01 20:29:20 1997  James CE Johnson <jcej@lads.com>
1221         * ace/IOStream*:
1222           - removed the old 4/5/97 comments
1223           - made operator>>, << on QuotedString a template
1225           This last makes QuotedString much more functional.  As
1226           templated functions, the QuotedString can now be used on
1227           other iostream-type objects.  The previous method of
1228           defining the function only for the type of ACE_IOStream
1229           being created was didn't provide this flexibility.
1231 Sat May 31 07:01:22 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
1233         * ace/Log_Msg.cpp (open): To avoid handle leaks, we need to
1234           shutdown the message_queue before trying to reopen it.  Thanks
1235           to Per Andersson for this suggestion.
1237         * include/makeinclude/platform_osf1_4.0.GNU: Added a new platform
1238           config file.  Thanks to James Johnson for this.
1240 Fri May 30 16:25:25 1997    <irfan@TWOSTEP>
1242         * CPP-inclient.cpp (main): Properly compare to the "quit"
1243           string. Thanks to "Andre Arpin" <arpin@adan.kingston.net> for
1244           reporting this.
1246         * tests/UPIPE_SAP_Test.cpp (connector): Changed the eof marker in
1247           the strings.
1249 Fri May 30 14:04:44 1997  James C Hu  <jxh@lambada.cs.wustl.edu>
1251         * include/makeinclude/platform_irix6.4_sgic++.GNU: added to make
1252           things compile on latest SGI machines.  Removed +pp and -woff...
1253           flags from the CCFLAGS variable.  Added new -woff flags to hide
1254           other warnings.
1256         * ace/config-irix6.4-sgic++*.h: copied corresponding configs from
1257           irix6.2 and removed ACE_HAS_SVR4_TIME, since this seems to be no
1258           longer true of irix6.4.
1260 Fri May 30 02:39:39 1997    <irfan@TWOSTEP>
1262         * ace/Connector.cpp 
1263           
1264           (create_AST): On Win32, added the except mask when registering
1265           with the Reactor to find out when asynchronous connects
1266           complete.
1268           (Svc_Tuple): Made sure that the default value for the timer_id
1269           in AST is not 0. 0 is a valid timer_id. I have changed this to
1270           be -1.
1272           (handle_exception): Added this method. On
1273           Win32, the except mask must also be set for asynchronous
1274           connects.
1276 Thu May 29 21:28:25 1997    <harrison@samba.cs.wustl.edu>
1278         * Process.*: Removed the ACE_Process_Old class.
1280         * Local_Tokens_T.*: Removed all these files.  They have not been
1281           used by the token library for some time.  They were mistakenly
1282           put in the release.
1284 Thu May 29 02:00:14 1997    <irfan@TWOSTEP>
1286         * ACE.cpp (is_process_active): Added this method which checks if a
1287           process is still alive. Thanks to Chris (CLahey@cccis.com) for
1288           this code. 
1290         * ace/OS.i (kill): Changed PROCESS_ALL_ACCESS to
1291           PROCESS_TERMINATE.
1293         * ace/ACE.cpp (bind_port): Changed the implementation of this
1294           method such that a recently used port is not used again in the
1295           next call to this method on Win32, i.e., upper limit is
1296           decreased even in the successful case. This fixes the problem on
1297           Win32 where binding to a recently used port works but the
1298           following connect fails.
1300         * ace/Acceptor.cpp (close): Added a close method that allows us
1301           to shutdown the Acceptor (without having to destroy it).
1303         * ace/Connector.cpp (close): Added a close method that allows us
1304           to shutdown the Connector (without having to destroy it).
1306         * apps/Gateway/Gateway/Proxy_Handler_Connector.cpp
1308           (handle_close): Removed this method. This code seemed to be
1309           duplicating the code in the handle_close of the proxies.
1311           (initiate_connection): Removed the code that did
1312           rescheduling. The proxies are responsible for this.
1314         * apps/Gateway/Gateway/Event_Channel.cpp
1316           (initiate_proxy_connection): Must *always* use the correct synch
1317           options while connecting.
1319           (reinitiate_proxy_connection): Always register for timeouts if
1320           we are not disconnecting. This allows us to remove duplicated
1321           logic in Proxy_Handler_Connector. 
1323           The new logic of close() allows us to remove the code that use
1324           to remove the proxy from the map to prevent double deletes.
1326           (close): Changed the shutdown logic to: Tell everyone that the
1327           spaceship is here (behind the comet), close down the connector,
1328           close down the acceptor, tell everyone that it is now time to
1329           commit suicide.
1331         * apps/Gateway/Gateway/Proxy_Handler.cpp (handle_timeout): Must
1332           return 0, or else the timer queue will cancel the handler and
1333           *all* its timeouts.
1335         * apps/Gateway/Peer/svc.conf,Makefile: We now generate a Peer
1336           shared library (instead of just an .so). The svc.conf was
1337           changed to reflect this.
1339         * tests/UPIPE_SAP_Test.cpp: Fixed output message.
1341         * Handle_Set.i (operator): Fixed typo.
1343 Thu May 29 11:09:52 1997  David L. Levine  <levine@cs.wustl.edu>
1345         * include/makeinclude/rules.local.GNU: check for directory
1346           write permission before attempting to install.  This helps
1347           support shared ACE workspaces.  There are two easy ways
1348           to not install "private" libraries in the shared workspace:
1349           1) remove write permission from $WRAPPER_ROOT/ace, or
1350           2) add "INSTALL=" to invocations of "make".
1352 Thu May 29 06:07:18 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
1354         * ace/OS.i (thr_join): Revised some code in the #ifdef'd out
1355           version of ACE_OS::thr_join() so that it will compile correctly.
1356           Note that this code isn't currently used, but someday it will
1357           be.  Thanks to Hamutal Yanay for reporting this.
1359 Wed May 28 16:37:57 1997  David L. Levine  <levine@cs.wustl.edu>
1361         * ace/OS.{h,i} (ACE_Time_Value): added default constructor,
1362           which does not call normalize ().  ACE_Time_Value::normalize ()
1363           was showing up as a relatively minor, but signficant hot
1364           spot in Event Channel latency tests.
1366 Wed May 28 16:02:53 1997  James C Hu  <jxh@lambada.cs.wustl.edu>
1368         * ace/OS.i: Changes to strdup and getpid for CHORUS, as per Wei
1369           Chiang's suggestions.
1371 Tue May 27 18:26:51 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
1373         * ace/config-hpux-10.x-decthreads.h: Added support for HP/UX 10.10
1374           with DCE threads.  Thanks to Shankar Krishnamoorthy
1375           <kshankar@lucent.com> for these fixes.
1377         * ace/Local_Tokens_T.h: #if def'd out all of this file since it
1378           doesn't seem to be used anymore.  Thanks to Shankar
1379           Krishnamoorthy <kshankar@lucent.com> for reporting this.
1381         * ace/Makefile (TEMPLATE_FILES): Removed Local_Tokens_T since it
1382           doesn't appear to be used anywhere.
1384 Tue May 27 18:47:34 1997  James C Hu  <jxh@lambada.cs.wustl.edu>
1386         * tests/*.cpp: Various changes for EBCIDIC compatibility.
1387           Thanks to Chuck Gehr for pointing out the need for this!
1389         * tests/test_config.h: Added ACE_ALPHABET to aid a-z sending and
1390           comparing.
1392 Tue May 27 15:03:25 1997  David L. Levine  <levine@cs.wustl.edu>
1394         * tests/Future_Test.cpp: added ACE_Future{_Rep}<int> template
1395           specializations.
1397 Tue May 27 07:49:03 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
1399         * ace/Future.cpp: Made a few minor reformatting changes to Per's
1400           new Future enhancements.
1402 Tue May 27 14:19:14 1997  Per Andersson <Per.Andersson@hfera.ericsson.se>
1404         * ace/Future: Fixed self assignment bug in ACE_Future<>::operator=().
1405           Fixed bug in ACE_Future<>::set(). It is now possible to do a 
1406           ACE_Future<>::set() followed by a ACE_Future<>::get() without
1407           hanging forever.
1409           Moved all handling of the ACE_Future_Rep<> reference count
1410           into three new static ACE_Future_Rep<> member functions,
1411           create, attach, assign and detach.
1413           Removed one mutex from ACE_Future_Rep<> by changing the
1414           reference count from an ACE_Atomic_Op<int> into a plain
1415           int. The ACE_Future_Rep<>::value_ready_mutex_ mutex is
1416           instead used for serializing changes to the reference count. 
1417           (ACE_Future_Rep<>::attach, ACE_Future_Rep<>::detach())
1419           Removed mutex from ACE_Future<> the serialization is
1420           performed by the ACE_Future_Rep<>::attach,
1421           ACE_Future_Rep<>::detach() and ACE_Future_Rep<>::assign()
1422           functions.
1424           Changed the ACE_Future<> default constructor to always
1425           create a  ACE_Future_Rep<>
1427         * tests/Future_Test.cpp: Added test case for
1428           ACE_Future<>::set() followed by ACE_Future<>::get().  Added
1429           test for working  ACE_Future::operator=(). The test is not
1430           fool proof but it crashes or hangs the test process with the
1431           old ACE_Future<> implementation.
1433 Mon May 26 14:19:14 1997  James C Hu  <jxh@polka.cs.wustl.edu>
1435         * ace/OS.{h,i}: Fixed difftime implementation for cases where
1436           systems implement it as a macro.  Fixed tempnam by adding
1437           ACE_LACKS_TEMPNAM.
1439 Sun May 25 11:36:22 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
1441         * examples/Reactor/Misc: Removed test_handle_set.cpp since it 
1442           is now completed subsumed by tests/Handle_Set_Test.cpp.
1444         * tests/Handle_Set_Test.cpp: Updated the test of
1445           the ACE_Handle_Set so that it shows how fast the iterator works.
1447         * ace/Reactor.cpp: Updated the Reactor to use the new
1448           ACE_Handle_Set_Iterator (whic no longer requires calling
1449           operator++ to advance the iterator).
1451         * ace/Handle_Set: Rewrote the ACE_Handle_Set_Iterator to speed it up. 
1452           The result seems to be about 15% faster than the original.
1454         * ace/OS.h: Changed the MSB_MASK static constant into a macro and
1455           moved it from Handle_Set.cpp into OS.h, changing its name to
1456           ACE_MSB_MASK.
1458         * ace/Sched_Params.cpp (priority_max): Added another #ifdef for
1459           Chorus.  Thanks to Wei Chiang for reporting this.
1461         * include/makeinclude/platform_sunos5_sunc++_orbix.GNU: added -l
1462           in front of orbixmt.  Thanks to Wei Chiang for pointing this
1463           out.
1465         * ace/ACE.cpp: Changed the default port for NT so that it starts
1466           at 65279 rather than 65535.  Hopefully, this will fix that
1467           annoying bug that has been plaguing us on NT 4.0 for months.
1468           Thanks to Goran Lowkrantz <Goran.Lowkrantz@Infologigruppen.se>
1469           for reporting this.
1471 Sat May 24 23:42:32 1997  David L. Levine  <levine@cs.wustl.edu>
1473         * performance-tests/Misc/test_naming.cpp (do_testing): replaced
1474           strlen () calls in character array size with constant expression.
1476 Sat May 24 12:07:48 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
1478         * Released version 4.2.1 for testing.
1480         * ace/Reactor.cpp (bind): Fixed a stupid typo where I was using
1481           the ACE_REACTOR_EVENT_HANDLER macro instead of the
1482           ACE_REACTOR_HANDLE macro.  Thanks to Detlef for reporting this.
1484         * ace/OS.i: Added a new macro called ACE_HAS_THR_MINSTACK to deal
1485           with weirdo mangling of names by Tandem.  Thanks to Jan Perman
1486           <uabjjpp@osd.ericsson.se> for reporting this.
1488         * ace/OS.h: Added a new macro ACE_LACKS_PRI_T for those platforms
1489           using STHREADS (e.g., Tandem NonStop OS) that don't have pri_t
1490           defined.  Thanks to Jan Perman <uabjjpp@osd.ericsson.se> for
1491           reporting this.
1493         * ace/Connector.cpp (connect): Make sure to save/restore errno
1494           since svc_handler->close() may change it.  Thanks to Michael
1495           Hartman <c62nt57@ibx.com> for reporting this.
1497         * include/makeinclude/platform_chorus.GNU: Added a new platform
1498           macros file for Chorus.  Thanks to Wei Chang for this.
1500         * ace/OS.cpp (sched_params): Reordered the #ifdefs so that Chorus
1501           comes first.
1503         * ace/OS.i (sleep): If the platform defines ACE_HAS_CLOCK_GETTIME
1504           then we'll use the nanosleep() method rather than sleep().
1506         * ace/OS.h: disabled THR_NEW_LWP for Chorus.  Thanks to Wei Chang
1507           for reporting this.
1509         * ace/Sched_Params.cpp: ACE_SCHED_OTHER and ACE_SCHED_RR have the
1510           same value on Chorus.  Thanks to Wei Chang for reporting this.
1512 Sat May 24 09:21:08 1997  David L. Levine  <levine@cs.wustl.edu>
1514         * netsvcs/lib/Server_Logging_Handler.cpp: protected second
1515           ACE_Svc_Handler specialization for case that ACE_HAS_THREADS,
1516           when ACE_HAS_TLI.  It had gotten lost in the last pass of
1517           that module.  Thanks to Sandro Doro <doros@aureus.sublink.org>
1518           for reporting this problem.
1520 Sat May 24 03:19:38 1997  Nanbor Wang  <nw1@dingo.wolfpack.cs.wustl.edu>
1522         * ace/OS.i (sigaddset, sigdelset, sigemptyset, sigfillset,
1523           sigismember): Modified the implementation of these function so
1524           as to conform with POSIX standard.  Basically all functions do
1525           the same things they did but more conservative protections are
1526           added.  The modified semantic becomes,
1527           
1528           sigemptyset, sigfillset, sigaddset, sigdelset:  return 0 if
1529             succeed, -1 otherwise. 
1530           sigismember: returns 0 if signum is not in the set, 1 if signum
1531             is in the set, and -1 if error occurs.
1533           If error occured, errno will be set to one of the following
1534           value: 
1535             EFAULT:  sigset is not a valid address.
1536             EINVAL:  signum is not a valid signal number.
1538           Notice that, so far, this is for NT only.
1540 Sat May 24 01:53:22 1997  James C Hu  <jxh@polka.cs.wustl.edu>
1542         * performance-tests/Misc/test_naming.cpp (do_testing): Thanks to
1543           Sandro Doro, squashed a bug where we were trying to concatenate
1544           onto a string constant.
1546 Fri May 23 01:01:01 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
1548         * ace/config-hpux-9.x.h: Added
1550           #define ACE_HAS_BROKEN_ENUMS
1551           #define ACE_HAS_IP_MULTICAST
1552           #define ACE_LACKS_GETPGID
1554           Thanks to Neil Cohen for reporting these.
1556         * ace/Thread_Manager.h: Made the private methods and data members
1557           protected so that subclasses can extend it.  Thanks to Hamutal
1558           Yanay for this suggestion.
1560 Fri May 23 21:27:05 1997  David L. Levine  <levine@cs.wustl.edu>
1562         * ace/Process.{h,cpp} (env_argv): added "const" to char * type in
1563           return type, for argument compatibility in call to ACE_OS::execve ().
1565         * ace/Process.cpp (spawn): removed unreachable return statement at
1566           end of function.
1568         Thanks to Dave Mayerhoefer <mayerhoefer@svappl36.mdc.com> for
1569         reporting the above two problems.
1571         * ace/{IOStream*,Makefile}: Split out templates into
1572           ace/IOStream_T.{h,cpp} files.  This way, automatic template
1573           instantiation systems that require templates to be in separate
1574           files, such as on Irix 6.2, will be able to build IOStream_Test
1575           and the ACE_IOStream examples without warnings.  (The
1576           ACE_IOSTREAM_BUILDING_TEMPLATE macro that did this only worked
1577           if ACE_TEMPLATES_REQUIRE_SOURCE was defined.  It's no longer
1578           needed with the separate template files.)
1580         * tests/IOStream_Test.cpp,
1581           examples/IOStream/client/iostream_client.cpp,
1582           examples/IOStream/server/iostream_server.cpp:
1583           swapped ACE_Streambuf and ACE_Streambuf_T class names so that
1584           the template class has the "_T".  And renamed ACE_IOStream_T
1585           for consistency.
1587         * ace/{IOStream.*,README},
1588           tests/IOStream_Test.cpp,
1589           examples/IOStream/client/iostream_client.cpp,
1590           examples/IOStream/server/iostream_server.cpp,
1591           config-hpux-9.x*.h:
1592           Added ACE_LACKS_ACE_IOSTREAM protection
1593           so that these can easily be built on platforms that have
1594           trouble with ACE_IOStream.
1596         * Priority_Task_Test.cpp: removed close () because it didn't really
1597           close the Task, and added printout to main () after all tasks have
1598           been spawned to help debug non-termination.
1600         * ace/OS.cpp: (thr_create, with STHREADS only): *thr_handle was
1601           used but *thr_id had been set by ::thr_create, so threads never
1602           got activated.  Fixed by using *thr_id instead of *thr_handle
1603           in the calls to ACE_OS::thr_setprio and ACE_OS::continue.
1604           Thanks to Jan Perman <uabjjpp@osd.ericsson.se> for reporting
1605           this problem.
1607 Fri May 23 20:12:33 1997  James C Hu  <jxh@polka.cs.wustl.edu>
1609         * tests/SV_Shared_Memory_Test.cpp: Thanks to Chuck Gehr, fixed
1610           ASCII dependent code in the parent and child routines.
1612 Fri May 23 02:58:28 1997  Nanbor Wang  <nw1@siesta.cs.wustl.edu>
1614         * ace/OS.i (dlsym): Added ACE_USES_ASM_SYMBOL_IN_DLSYM, support
1615           for platforms (FreeBSD) which use assembly symbols instead of C
1616           symbols in dlsym ().
1618         * ace/config-freebsd[-pthread].h: Added flag ACE_HAS_CHARPTR_DL
1619           and ACE_USES_ASM_SYMBOL_IN_DLSYM.
1621 Thu May 22 08:14:21 1997  David L. Levine  <levine@cs.wustl.edu>
1623         * tests/Tokens_Test.cpp: added deletes to avoid memory leaks.
1625 Wed May 21 16:15:48 1997  David L. Levine  <levine@cs.wustl.edu>
1627         * ace/{config-irix6.2*.h,README}: removed ACE_LACKS_IOSTREAM_SETGET
1628           because tests won't build with it.  Also, added
1629           ACE_LACKS_SIGNED_CHAR.
1631         * ace/IOStream.h: removed "const" from PUT_PROT of
1632           u_char * and void *.  This should allow the IOStream test
1633           and examples to build and run on Irix platforms.  Thanks
1634           to Torbjorn Lindgren <tl@funcom.com> and Amos Shapira
1635           <amos@dsi.co.il> for reporting this, and to James Hu for
1636           helping fix it.
1638         * ace/{OS.cpp,Sched_Params.cp} (Solaris only): use 0 min priority
1639           again, with workaround in ACE_OS::thr_create to not use
1640           ::pthread_attr_setschedparam () if the priority is 0.  Instead,
1641           the priority of the newly created thread is set to 0 (if it
1642           wasn't created with 0) after the thread is created, with
1643           ::pthread_setschedparam ().
1645 Wed May 21 15:23:37 1997  Chris Cleeland  <cleeland@cs.wustl.edu>
1647         * ace/Strategies_T.* (ACE_Hash_Addr): Eliminated the ADDR_T
1648           template parameter as a base class.  It is now a wholly-contained
1649           member of the ACE_Hash_Addr<> with conversion operators.
1650           This caused problems on certain compilers, notably HP-UX.
1652 Wed May 21 14:13:36 1997  James C Hu  <jxh@polka.cs.wustl.edu>
1654         * ace/OS.{h,i} (difftime): Added implementation to ACE_OS.  I
1655           don't expect any problems since it is in ANSI.
1657         * ace/OS.{h,i} (tempnam): Added implementation to ACE_OS.
1659 Wed May 21 01:17:40 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
1661         * Released version 4.2.
1663         * ace/Acceptor.cpp (activate_svc_handler ): Removed an unnecessary
1664           return 0.  Thanks to Amos Shapira <amos@dsi.co.il> for reporting
1665           this.
1667         * ace/Message_Block.cpp (release): I believe that
1668           ACE_Message_Block::release() should return something other than
1669           0, i.e., it should return the result of release_i().  Thanks to
1670           Amos Shapira <amos@dsi.co.il> for reporting this.
1672 Wed May 21 01:17:40 1997 Per Andersson <Per.Andersson@hfera.ericsson.se>
1674         * Moved most code from netsvcs/lib/Server_Logging_Handler.* to
1675           Server_Logging_Handler_T.*.  Made template out of
1676           ACE_Server_Logging_Handler and ACE_Server_Logging_Acceptor. 
1677           Factorised out as much as possible to reduce code
1678           duplication. The log record processing was moved from
1679           ACE_Server_Logging_Handler it should now be handled by the
1680           Log_Message_Receiver class. It is now possible to change 
1681           how log records processed without changing code in
1682           Server_Logging_Handler* and it is possible to have several
1683           Server_Logging_Handlers that processes log records
1684           in different ways without duplicating all the server code.
1685           All that is needed is to write a new/change
1686           Log_Message_Receiver and instantiate a couple of templates.
1688         * netsvcs/lib/Server_Logging_Handler.h added lots of typedefs
1689           for making template instantiations easier.
1691         * netsvcs/lib/Server_Logging_Handler.h addad lots template
1692           instatiations, there are now 58 all together.
1694         * Added netsvc/lib/Log_Message_Receiver.{h,cpp}, implementstwo
1695           simple log message receivers that prints the log record to
1696           stderr. 
1698 Tue May 20 13:50:17 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
1700         * ace/config-hpux-9.x.h: Added a #define for ACE_HAS_BROKEN_ENUM,
1701           ACE_HAS_IP_MULTICAST, and ACE_LACKS_GETPGID.  Thanks to Neil
1702           Cohen for reporting this.  
1704         * include/makeinclude/platform_sunos5_sunc++_orbix.GNU: Replaced
1705           the use of -lITsrv with -lorbixmt.  Thanks to Wei Chiang for
1706           this.
1708         * include/makeinclude/platform_osf1_3.2.GNU: Make sure that all
1709           the template repositories are in the same directory to work
1710           around problems with the C++ compiler.  Also added -lrt to get
1711           the apps and tests to run.  Thanks to Tom Dobridge for this
1712           help.
1714 Tue May 20 17:13:15 1997  Carlos O'Ryan  <coryan@charlie>
1716         * ace/config-hpux-10.x-nothread.h: 
1717         * ace/config-hpux-10.x-aCC.h: 
1718         * ace/Stream_Modules.cpp: 
1719         ACE_LACKS_STREAM_MODULES is no longer needed, moving the inclusion
1720         of "ace/Task.h" to the beginning of "ace/Stream_Modules.h" solved
1721         the problem nicely.
1723         * ace/config-hpux-10.x.h: 
1724         * ace/config-hpux-10.x-aCC.h: 
1725         ACE_HAS_BROKEN_HPUX_TEMPLATES is not needed on newer HP/CXX
1726         compilers; further, old ones will not compile ACE even if the
1727         macro is defined.
1729         * ace/Timer_List_T.h: 
1730         * ace/Timer_Queue_T.i: 
1731         I moved the definition of ACE_Timer_Queue_T::lock() from the .i
1732         file to the .h file, HP/CXX gets completely confused otherwise.
1733         I also added a number of ACE_INLINE missing in the .i file.
1735         * ace/Stream_Modules.h: 
1736         * ace/Stream_Modules.cpp: 
1737         I had to move the inclusion of "ace/Task.h" outside of the
1738         protections against multiple inclusion for Stream_Modules.h.
1739         That seems to solve the ciclyc dependancy for
1740         Task->Module->Stream_Module->Task.
1741         BTW, the same thing was already done in "ace/Log_Record.h".
1742         I'll try to remove the ACE_LACKS_STREAM_MODULES macro, it seems
1743         that the last change makes it redundant.
1745         * ace/Signal.cpp: 
1746         HP/CXX compiler will not close the library unless
1747         ACE_MAX_SIGNAL_HANDLERS is defined as "const size_t". The previous
1748         definition ("size_t") did compile tough.
1750         * ace/Log_Record.h: 
1751         We need to include "ace/ACE.h" before "ace/Log_Priority.h".
1753         * ace/Log_Priority.h: 
1754         HP/CXX compiler seems to reserve a few bits in enums, so the
1755         ENSURE_32_BITS trick would result in a compile time error.
1756         Since HP enums are always 32 bits we could skip the definition for
1757         ENSURE_32_BITS altogether, but I prefer to keep a consistent
1758         namespace across plaforms, I have found a value for ENSURE_32_BITS
1759         that seems to work.
1761         * include/makeinclude/platform_hpux.GNU: 
1762         Some options to improve compile time, since we use explicit
1763         template instantiation there is no need for a ptcomp o ptlink
1764         phase.
1766 Tue May 20 09:10:18 1997  Nanbor Wang  <nw1@number.wustl.edu>
1768         * ace/config-freebsd-pthread.h: 
1769         * ace/config-freebsd.h: Removed "FreeBSD" directive because gcc on
1770           FreeBSD defines __FreeBSD__ automatically.
1772         * ace/OS.i (sigaddset, sigdelset, sigismember): Added range
1773           checking to these functions in order to avoid disasters.  Sig
1774           number should be between 1 and NSIG.
1775           (sigwait): Changed ifdef (FreeBSD) to ifdef (__FreeBSD__) since
1776           compiler does it for us.      
1778 Tue May 20 08:41:11 1997  David L. Levine  <levine@cs.wustl.edu>
1780         * examples/Threads/tss2.cpp: added #include of ace/Thread.h
1781           because Sun C++ 4.1 needs it.
1783 Mon May 19 16:04:32 1997  David L. Levine  <levine@cs.wustl.edu>
1785         * bin/create_ace_build: changed startup line for compatibility
1786           with bash.  This startup line lets the script run without
1787           hard-coding the full path to the perl executable, as long as
1788           perl is on the user's PATH.
1790 Mon May 19 12:45:21 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
1792         * examples/Threads/reader_writer.cpp: Changed the code so that we
1793           don't try to treat thread ids as ints!  Thanks to Chuck Gehr for
1794           reporting this.
1796 Sun May 18 21:57:54 1997  David L. Levine  <levine@cs.wustl.edu>
1798         * examples/Threads/tss2.cpp: added second parameter to
1799           ACE_TSS_Singleton template specialization.
1801 Sun May 18 09:20:15 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
1803         * examples/Threads/TSS_Data.h: Added the second parameter for
1804           ACE_SYNCH_MUTEX since Rich and Chris updated ACE_TSS_Singleton.
1806         * ace/Singleton.cpp: Added the updated version of
1807           ACE_TSS_Singleton that implements the Double-Checked Locking
1808           pattern.  Thanks to Rich Christy and Chris Lahey for this.
1810         * ace/Strategies_T.cpp (activate_svc_handler): Fixed the logic so
1811           that a value is always returned.  Thanks to David Levine for
1812           noticing this.
1814 Sun May 18 07:25:11 1997  David L. Levine  <levine@cs.wustl.edu>
1816         * netsvcs/lib/Server_Logging_Handler.cpp: removed second
1817           ACE_Svc_Handler specialization for non-threaded, has-TLI case.
1818           That's because it is the same as the first; the only difference
1819           was that one specialized with ACE_SYNCH and the other with
1820           ACE_NULL_SYNCH.  Without threads, those macros expand to the
1821           same thing.  Thanks Sandro Doro <doros@aureus.sublink.org> for
1822           reporting this.
1824         * examples/Threads/tss2.cpp: added ACE_TSS<TSS_Data> template
1825           specialization.
1827 Sat May 17 23:24:34 1997  Nanbor Wang  <nw1@number.wustl.edu>
1829         * ace/OS.i (sigismember): Corrected the code when
1830           ACE_LACKS_SIGSET.
1832 Sat May 17 00:06:04 1997    <irfan@TWOSTEP>
1834         * examples/ASX/Event_Server/Transceiver/transceiver.cpp
1835           (Event_Transceiver): Corrected signal registration for Win32.
1837         * apps/Gateway/Gateway/Gateway.cpp (parse_args): Since the
1838           Connector is now fixed, non-blocking is now working fine.
1840         * ace/Connector.cpp (handle_close,create_AST): Made sure we close
1841           down the svc_handler on error.
1843         * ace/{Acceptor.cpp,Connector.cpp} (activate_svc_handler): The
1844           if statement logic in these methods was incorrect.
1846         * ace/SOCK_Connector.cpp (connect): Just like in complete(), we
1847           start out with non-blocking disabled on the <new_stream>.
1849         * ace/OS.h: When ACE_LACKS_SIGSET is defined, changed the
1850           definition of sigset_t from void * to unsigned int.
1852 Sat May 17 12:25:22 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
1854         * ace/{Acceptor,Connector,Strategies_T}: Make sure to either
1855           enable or disable ACE_NONBLOCK (depending on the flags).  This
1856           ensures that we always start with the I/O mode set to a
1857           deterministic state.  Thanks to Irfan for suggesting this.
1859         * ace/Connector: Added a new "flags" parameter to the 
1860           ACE_Connector and ACE_Strategy_Connector which keeps track of
1861           flags that control how Svc_Handler are initialized prior to
1862           being activated.  
1864         * ace/Strategies_T.cpp (activate_svc_handler): Make sure to set
1865           the peer's handle into non-blocking mode *before* calling the
1866           Svc_Handler's open() method.  This ensures that things are set
1867           up correctly when this hook is called.
1869 Sat May 17 02:19:27 1997  Nanbor Wang  <nw1@number.wustl.edu>
1871         * ace/config-freebsd.h (ACE_HAS_BROKEN_TIMESPEC_MEMBERS): 
1873         * ace/OS.i (set, timestruct_t, nanosleep): 
1875         * ace/High_Res_Timer.cpp (elapsed_time): 
1877         * ace/README: Added ACE_HAS_BROKEN_TIMESPEC_MEMBERS so that we can
1878           fix that problem FreeBSD 2.1.x brings by defining timespec as {
1879           time_t ts_sec ; long ts_nsec }.  Notice:  This is highly
1880           non-portable.  Please refer to ACE code and see how to write
1881           portable.  Fortunately, only older versions of FreeBSD have
1882           this.  Yesterday's hack didn't work, so, it's removed.  Thanks
1883           to Satoshi Ueno <satoshi.ueno@gs.com> for reporting and helping
1884           debug on his FreeBSD 2.1.7R box.
1886 Sat May 17 00:06:04 1997    <irfan@TWOSTEP>
1888         * apps/Gateway/Gateway/Proxy_Handler.cpp (open): Turn on
1889           non-blocking I/O only after the Channel is done sending the id
1890           to the Peer.
1892         * apps/Gateway/Gateway/Gateway.cpp: 
1894           - Added necessary DLL build macros. 
1896           - Removed error checking for Reactor::remove_handler() for STDIN
1897             as STDIN is never registered with the Reactor on Win32.
1899           - Fixed the registration of SIGINT.
1901           - blocking_semantics_ should be 1 when blocking is on and not 0.
1903           - Since the Connector is currently broken with respect to
1904             non-blocking connects, I have put a temporary fix such that
1905             only blocking connects are done. Revert this after the
1906             Connector is fixed.
1908         * apps/Gateway/Gateway/Event_Channel.cpp: 
1910           - Only if socket_queue_size > 0, do we set a new value.
1912           - In reinitiate_proxy_connection(), we must unbind the proxy
1913             from the proxy_map_ as we are no longer responsible for
1914             this. The Connector should now be responsible for this.
1916         * apps/Gateway/Gateway/Concrete_Proxy_Handlers.cpp: Added
1917           necessary DLL build macros.
1919         * apps/Gateway/Peer/Peer.cpp: 
1921           - Added include file and necessary DLL build macros. 
1923           - Removed error checking for Reactor::remove_handler() for STDIN
1924             as STDIN is never registered with the Reactor on Win32.
1926           - Fixed the registration of SIGINT.
1928         * apps/Gateway/{Peer,Gateway}: Added Win32 makefiles.
1930         * ace/ACE.cpp (read_adapter): Handle for the read_adapter should
1931           always be STDIN.
1933 Fri May 16 18:43:17 1997  Nanbor Wang  <nw1@number.wustl.edu>
1935         * ace/config-freebsd.h: Minor modification for working on FreeBSD
1936           2.1.x platform.  Added includion of <sys/time.h> and
1937           <sys/types.h>.  Defined ACE_HAS_POSIX_TIME for 2.1.x.  Redefine
1938           timespec to timeval to hack around a bug on 2.1.x.  Thanks to
1939           Satoshi Ueno <satoshi.ueno@gs.com> for reporting this.
1940         
1941 Fri May 16 12:25:32 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
1943         * netsvcs/lib: Reverted back to the original Server_Logging_Handler 
1944           behavior since the new version is breaking GCC's templates.
1946         * ace/Log_Record.h: need to #include "ace/ACE.h" before
1947           "ace/Log_Priority.h" so that "Log_Priority.h" sees the
1948           configuration stuff (otherwise the following fix won't work).
1950         * ace/Log_Priority.h: Added a workaround for lame C++ compilers
1951           like the one on HP/UX that can't support large enums.  Thanks to
1952           Robert Head for reporting this.
1954         * ace/Singleton: Added the new ACE_TSS_Singleton, which stores
1955           Singletons in thread-specific storage.  Thanks to Chris Lahey
1956           and Rich Christy <rchristy@cccis.com> for this.
1958         * ace/OS.h: Removed the ACE_Singleton_Strategy since we don't need
1959           it anymore.
1961         * netsvcs/lib: Added the new Server_Logging_Handler_T.* and
1962           Log_Message_Receiver.* netsvcs.  Thanks to Per Andersson for
1963           contributing these.
1965         * examples/Misc/Makefile: Removed the XtReactor tests from the
1966           Makefile until we figure out a good way to get them integrated
1967           with the appropriate libraries.
1969         * ace/config-irix6.2-sgic++-nothread.h: Added the following:
1971           ACE_LACKS_LINEBUFFERED_STREAMBUF
1972           ACE_HAS_SETOWN
1973           ACE_HAS_SYSENT_H
1974           ACE_HAS_SYSINFO
1976           Thanks to Torbjorn Lindgren <tl@funcom.com> for reporting
1977           this.
1979         * ace/Proactor.cpp: Changed the use of lock() to mutex() since we
1980           changed the name in Timer_Queue.
1982         * ace/Timer_Queue_T.i: Changed the name of the lock() method to
1983           mutex() to work around compile problems with HP/UX.  Thanks to
1984           Robert Head <rhead@mail.virtc.com> for reporting this
1985           workaround.
1987         * ace/config-irix5.3-sgic++.h: Made a few changes to get ACE to
1988           work on IRIX 5.3.  Thanks to Eugene R. Somdahl <gene@endo.com>
1989           for these fixes.
1991         * ace/OS: Added calloc() implementation.  I don't know how
1992           this managed to fall through the cracks!
1994         * include/makeinclude/platform_osf1_4.0.GNU: Added a few more
1995           tweaks courtesy of James Johnson.
1997         * include/makeinclude/platform_osf1_3.2.GNU: Added a few more
1998           tweaks courtesy of Tom Dobridge.
2000         * include/makeinclude/platform_osf1_4.0.GNU (DLD): Added -shared
2001           -expect_unresolved '*' so that calls to the linker via cxx will
2002           work correctly.  Thanks to Thilo for this.
2004         * include/makeinclude/platform_chorus.GNU: Removed CLASSIXDIR =
2005            /usr/home/chiang/chorus/merge/extended-i386at, added the
2006            nostdinc flag, and removed extra whitespace.  Thanks to Wei
2007            Chiang for reporting this.
2009 Fri May 16 00:02:33 1997 <irfan@TWOSTEP>
2011         * ace/ReactorEx: Even though changes to the owner field are very
2012           well synchronized within the class code, the owner()
2013           accessor is public and can be called from out side the
2014           class. Therefore, I have added a owner_i() that does not do
2015           locking. All internal calls to check the owner will use the
2016           new accessor, whereas application code outside the class can
2017           still use the old synchronized accessor.
2019 Fri May 16 11:39:51 1997  Nanbor Wang  <nw1@cs.wustl.edu>
2021         * ace/OS.i (sigaddset, sigdelset, sigemptyset, sigfillset,
2022           sigismember): Added implementation when ACE_LACKS_SIGSET so that
2023           platforms (NT?) without these functions can still manipulate
2024           sigset_t variables.
2026 Thu May 15 22:19:59 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
2028         * examples/ASX/Event_Server/Event_Server: Removed the THR_DETACHED
2029           flag from options so that we can wait on the threads
2030           correctly.
2032         * ace/Stream_Modules.cpp: Changed the logic for determining when
2033           to compile the Stream_Modules.cpp code.  Now, we compile it
2034           unless ACE_LACKS_STREAM_MODULES is defined (i.e., we're on HP/UX
2035           10.x using aCC).
2037         * netsvcs/lib/Server_Logging_Handler.cpp (handle_input): Fixed
2038           a bug in handle_input() where we need to return the result, not 
2039           just 0 or 1.  Thanks to Per Andersson for reporting this.
2041         * ace/Log_Priority.h: Changed the values of the enums in
2042           ACE_Log_Priority so that they can be dealt with via bitwise
2043           operations.  Thanks to Per Andersson for this.
2045         * include/makeinclude/platform_osf1_4.0.GNU: Added support for
2046           templates.  Thanks to Steve Huston and James Johnson for
2047           verifying this.
2049         * include/makeinclude/platform_osf1_3.2.GNU: Got rid of all
2050           unresolved symbol warnings using cxx 5.5 on DEC/OSF v3.2 by
2051           using the linker flag "-expect_unresolved '*'."  In addition, I
2052           added -threads to the DCFLAGS macro.  Thanks to Tom Dobridge
2053           <dobridge@persimmon.com> for this.
2055         * ace/Strategies_T: Added a minor ACE_Reactive_Strategy extension
2056           to enable non-blocking I/O in active_svc_handler().  Thanks to
2057           Arturo Montes <mitosys@colomsat.net.co> for contributing this.
2059         * ace/config-osf1-4.0[-g++].h: Added a #define for
2060           ACE_POLL_IS_BROKEN since DEC UNIX's poll() doesn't seem to work
2061           correctly as a highres timer.  Thanks to James Johnson and Thilo
2062           for reporting this.
2064         * examples/Threads/thread_specific.cpp (worker): Changes
2065           size_t i back to int i to avoid a signed/unsigned complaint.
2066           Thanks to David Levine for reporting this.
2068         * ace/config-chorus.h: Added ACE_LACKS_MPROTECT,
2069           ACE_HAS_IP_MULTICAST, and ACE_LACKS_SOCKETPAIR to the Chorus
2070           port.  Thanks to Wei Chiang <chiang@erebor.tele.nokia.fi> for
2071           reporting this.
2073         * ace/OS.i: Added ACE_LACKS_ACCESS to the Chorus config file
2074           and VxWorks config file, as well as to OS.i.
2076 :       * ace/OS.i: Added ACE_LACKS_GETSERVBYNAME to the Chorus config
2077           file and VxWorks config file, as well as to OS.i.
2079         * ace/OS.i: Added ACE_LACKS_SBRK to the Chorus config file, as
2080           well as to the definition of the ACE_OS::sbrk() function.
2082         * ace/OS.h: Removed #include /**/ <pwd.h> from the Chorus-specific
2083           part of OS.h since it's already included elsewhere.  Thanks to
2084           Wei Chiang <chiang@erebor.tele.nokia.fi> for reporting this.
2086         * ace/Reactor: Added a typedef for ACE_Reactor_Token to
2087           ACE_Null_Mutex for situations where ACE_MT_SAFE is *disabled*.
2088           This makes the code more consistent.
2090         * ace/Reactor: Added an interface that makes it possible to
2091           acquire a reference to the <ACE_Reactor_Token> that is used to
2092           serialize the internal Reactor's processing logic.  This can be
2093           useful for situations where you need to avoid deadlock
2094           efficiently when <ACE_Event_Handlers> are used in multiple
2095           threads.  Thanks to Detlef for pointing out the utility of this.
2097 Thu May 15 23:34:30 1997  Tim H. Harrison  <harrison@waltz.cs.wustl.edu>
2099         * ace/Process_Manager.cpp (spawn_n): Changed
2100           ACE_Process_Manager::start_n to ACE_Process_Manager::spawn_n.
2102 Thu May 15 15:39:13 1997  Carlos O'Ryan  <coryan@charlie>
2104         * include/makeinclude/platform_hpux.GNU: 
2105         * ace/config-hpux-10.x.h: 
2106         * ace/config-hpux-10.x-nothread.h: 
2107           HP/CXX cannot achieve template closure, not even using the
2108           dummy exec trick: apparently the repository gets a bit
2109           corrupted. HP/CXX (version 10.24) support explicit template
2110           instantiation, I believe this to be a superior method for
2111           ensuring library closure (and it works).
2113         * ace/Task_T.cpp: 
2114         * ace/Stream_Modules.cpp: 
2115           I have changed the hack to compile under HP-UX,
2116           "ace/Module.h" is once more included in ace/Task_T.cpp, but
2117           "ace/Stream_Modules.cpp" is protected: it will be empty
2118           under HP-UX unless included from the
2119           "ace/Stream_Modules.h". I still believe that there is a
2120           problem in the cyclic dependancy Task -> Module -> Thru_Task
2121           -> Task; but it seems that the current hack works better.
2123         * ace/OS.h: 
2124           Defining ACE_UNUSED_ARG as (a) for HP/CXX does not work so I
2125           moved it to the SGI and GCC definition.
2127         * ace/OS.i: 
2128           More unused args.
2130         * ace/Handle_Set.h: 
2131           Removed the extra qualification for ACE_Handle_Set::NBITS,
2132           HP/CXX sends a lot of warnings with that.
2134         * ace/IOStream.h: 
2135           It included "IOStream.cpp" I think that "ace/IOStream.cpp"
2136           is better. 
2138         * ace/Local_Name_Space_T.h: 
2139           Ditto for "Local_Name_Space.h"
2141 Thu May 15 17:40:06 1997    <irfan@TWOSTEP>
2143         * ace/ReactorEx.i (owner): Since changes to the owner field are
2144           very well synchronized, we do not need to synchronize this
2145           accessor.
2147         * ace/IOStream.h: Added /**/ after #include directives.
2148         
2149         * ace: Update Win32 makefiles to include UNICODE make option.
2151 Thu May 15 08:54:53 1997  David L. Levine  <levine@cs.wustl.edu>
2153         * Makefile (release, cleanrelease): use -prune option to "find"
2154           instead of filtering its output.  Thanks to Chris Cleeland for
2155           suggesting this.
2157 Wed May 14 21:52:22 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
2159         * ace/UPIPE_Stream.cpp (control): We need to "cast away const" so
2160           that this method can call the Stream's control() method
2161           (which is non-const).  Thanks to David Levine for locating this.
2163         * ace/Singleton.cpp: Finished re-implementing ACE_Singleton.
2165         * examples/ASX/Message_Queue/buffer_stream.cpp: Updated this
2166           example to illustrate (1) how filters work in an ACE_Stream and
2167           (2) to make sure that resizing buffers work.
2169         * ace/UPIPE_Stream.h: Changed the signature of control()
2170           to take an int so that it will match the base class
2171           signature.
2173         * ace/Singleton.h: The new ACE_SingletonEx isn't working yet.
2174           I've #ifdef'd it out until it works.
2176         * examples/Threads/tss2.cpp: Updated this test program to
2177           illustrate the use of the new ACE_SingletonEx class.
2179         * ace/Singleton.h: Added a new instance() method to the ACE
2180           Singleton that can be used to set the Singleton.  This is useful
2181           for situations where the type being used as the Singleton
2182           doesn't have a default constructor.  Thanks to Arturo Montes
2183           <mitosys@colomsat.net.co> for this suggestion.
2185         * ace/Singleton: Factored out common code in the Singleton and
2186           SingletonEx implementations so they will be cleaner and more
2187           portable.
2189         * ace/Local_Name_Space_T.h,
2190           ace/Map_Manager.h,
2191           ace/Hash_Map_Manager.h,
2192           ace/SString.h,
2193           ace/Hash_Map_Manager.cpp: 
2194         
2195           Changed all uses of the identifier "allocator" to "alloc" to
2196           avoid conflicts with MSVC++ STL 5.0.  Thanks to William
2197           L. Gerecke <gerecke@rayva.org> for reporting this.
2199         * ace/config-aix-4.[12].x.h: Replaces
2200           ACE_LACKS_PTHREAD_THR_SIGSETMASK with ACE_HAS_SIGTHREADMASK.
2201           Thanks to Chris Lahey for this.
2203         * ace/OS.i (thr_sigsetmask): Added the ACE_HAS_SIGTHREADMASK
2204           support for AIX.  Thanks to Chris Lahey for this.
2206         * ace/Singleton: Added the new ACE_SingletonEx, which supports
2207           both heap-based and thread-specific storage-based Singletons.
2208           Thanks to Chris Lahey for this.
2210         * ace/OS.h: Added the new ACE_Singleton_Strategy to OS.h.  Thanks
2211           to Chris Lahey for this.
2213 Wed May 14 16:32:57 1997  David L. Levine  <levine@cs.wustl.edu>
2215         * Makefile: use cpio instead of tar to allow easy filtering
2216           of CVS files from the release.
2218 Wed May 14 15:00:58 1997    <irfan@TWOSTEP>
2220         * examples/IPC_SAP/SOCK_SAP/CPP-inclient.cpp (main): Fixed code.
2222         * examples/Naming: Replaced multiple makefiles with one makefile.
2224         * ace/OS.h: Added UNICODE support for some #defines.
2226         * OS.i (vsprintf): Added support for this in ACE_OS.
2228         * OS.cpp (socket_init && socket_fini): It is ok to print out cout
2229           and cerr messages from here (as the C runtime library is still
2230           attached) but it is *not* ok to print out ACE_DEBUG
2231           messages. God only knows the state of the thread specific LogMsg
2232           instance when the process reaches this piece of code.
2234           Also added a (handy) sprintf that has the following prototype:
2236           sprintf (wchar_t *buf, const char *format, ...)
2238         * ace/Process: UNICODE fixes.
2240         * tests: Fixed the following such that they work with UNICODE:
2242           Pipe_Test.cpp 
2243           Process_Mutex_Test.cpp 
2244           Process_Strategy_Test.cpp 
2245           Time_Service_Test.cpp 
2246           Tokens_Test.cpp
2248         * Time_Service_Test.cpp (main): Fixed typo in the svc.conf
2249           filename for the clerk.
2251 Tue May 13 18:56:27 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
2253         * ace/IOStream.h: To make C++ compilers happy I added
2254           the following changes by modifying
2256           ACE_IOStream & operator>>( ACE_Time_Value *& tv );
2258           to be
2260           ACE_IOStream<STREAM> & operator>>( ACE_Time_Value *& tv );
2262           Thanks to Chuck Gehr for this fix.
2264 Tue May 13 21:32:12 1997  David L. Levine  <levine@cs.wustl.edu>
2266         * ace/Process.cpp (~ACE_Process_Options): delete
2267           command_line_buf_ was missing the [].
2269         * examples/Threads/process_manager.cpp (main): avoid compiler
2270           warning due to implicit creation of temporary by explicitly
2271           creating an ACE_Process_Options instance.  It gets passed to
2272           ACE_Process_Manager::spawn (ACE_Process_Options &), which
2273           takes a non-const reference.
2275 Tue May 13 18:08:32 1997    <irfan@TWOSTEP>
2277         * examples/ASX/UPIPE_Event_Server: Made enough fixes for this to
2278           compile on Win32 but more work need to be done for this to
2279           work on Win32.
2281         * ace/OS.i (kill): The error result for ::OpenProcess() is null
2282           and *not* invalid handle.
2284         * ace/Process.i (kill): Changed the implementation to remove the
2285           ACE_OS::kill() code from ACE_Process::kill() for Win32. This
2286           allows us to avoid calling ::OpenProcess() unnecessarily.
2288         * tests: For Win32, added Reactor_Exceptions_Test and
2289           Priority_Tasks_Tests. Files changes include run_tests.bat,
2290           tests.mak, and tests.mdp.
2292         * tests/Future_Test.cpp (main): Fixed memory leaks in main() and
2293           in name_i().
2295         * tests/Thread_Pool_Test.cpp (open): The loop was messed up
2296           causing memory leaks. I fixed it.
2298         * ace/UPIPE_Stream.cpp (close): I am not sure why the stream was
2299           closed with M_DELETE_NONE. This indicates that close() should
2300           not delete any Tasks. This caused a memory leak as the Tasks in
2301           the Tail and Head modules were not deleted. I have removed this
2302           to fix the memory leak.
2304           Also added a destructor such that mb_last_ is released if it is
2305           still around. 
2307 Tue May 13 16:48:18 1997  James C Hu  <jxh@polka.cs.wustl.edu>
2309         * ace/Process.cpp: Added implementations to new interfaces
2310           to ACE_Process_Options::setenv (char *envp[]), and
2311           ACE_Process_Options::command_line (char *argv[]).
2313         * apps/JAWS/server/HTTP_Response.cpp: Required changes so that CGI
2314           processing will work with the new ACE_Process class.
2316         * apps/JAWS/stress_testing/benchd.cpp: Requried changes due to
2317           changes in the ACE_Process interface.
2319 Tue May 13 15:22:01 1997  Tim H. Harrison  <harrison@waltz.cs.wustl.edu>
2321         * ace/Process_Manager.h:  Changed ACE_Process_Manager::start to
2322           ACE_Process_Manager::spawn.
2324         * ace/Process.cpp (spawn): The check for a null environment argv
2325           was incorrect.  Thanks to Nanbor for finding this.
2327 Mon May 12 18:59:39 1997  David L. Levine  <levine@cs.wustl.edu>
2329         * ace/config-mvs.h: conditionally use ACE_HAS_UCONTEXT_T or
2330           ACE_LACKS_UCONTEXT_H depending on __COMPILER_VER__.  Thanks to
2331           Chuck Gehr <gehr@sweng.stortek.com> for this fix.
2333         * OS.h, OS.cpp (thr_create), Task.h, Thread.h, Thread_Manager.h:
2334           use ACE_DEFAULT_THREAD_PRIORITY instead of -1, because -1 is a
2335           valid priority on Win32.  Thanks to Irfan for discovering this
2336           problem with Priority_Task_Test.
2338         * ace/Thread_Manager.cpp (wait_grp,wait_task): changed type of loop
2339           index "i" from size_t to int to avoid signed/unsigned comparison.
2341 Mon May 12 18:41:19 1997  Nanbor Wang  <nw1@cs.wustl.edu>
2343         * ace/config-freebsd-pthread.h: 
2344         * ace/config-freebsd.h: Added ACE_LACKS_RWLOCK_T to FreeBSD config
2345           files.  Thanks to Amancio Hasty <hasty@rah.star-gate.com> for
2346           noticing this. 
2348 Mon May 12 17:11:50 1997  Tim H. Harrison  <harrison@waltz.cs.wustl.edu>
2350         * ace/Process.h: Changed ACE_Process::start to
2351           ACE_Process::spawn.  Added new argv-style methods for
2352           ACE_Process::setenv and ACE_Process::command_line.  These new
2353           argv-style methods do not have implementations yet.
2355 Mon May 12 15:27:41 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
2357         * ace/config-aix-4.[12].x.h: Added ACE_HAS_EXCEPTIONS to
2358           the AIX 4.* config files.  Thanks to Chris Lahey for this.
2360 Mon May 12 13:49:54 1997    <irfan@TWOSTEP>
2362         * ace/Thread_Manager.cpp (wait): We have to make sure that while
2363           we wait for these threads to exit, we do not have the
2364           lock. Therefore we make a copy of all interesting entries and
2365           let go of the lock. We then do the join().
2367         * ace/Task.cpp (wait): Removed the extra locking in wait(). The
2368           Thread Manager will handle this correctly.
2370         * ace/ACE.cpp (register_stdin_handler): Changed the options such
2371           that the Thread Manager used for the adapter is passed along to
2372           the method executed by the new thread. We can then notify the
2373           thread manager when this adapter thread exits.
2375         * examples/ASX/Event_Server/Event_Server: Changed the way the
2376           reference count was being kept on the context. Now, the
2377           reference count starts with zero and every instance and every
2378           active Task increments it. This works well as Task::close() is
2379           called one from the module being deleted and from the active
2380           thread going away.
2382 Mon May 12 11:11:51 1997    <harrison@samba.cs.wustl.edu>
2384         * ace/Process.*: Removed the old ACE_Process and replaced it with
2385           what was ACE_ProcessEx.
2387         * ace/Process_Manager.{i,cpp}:  Updated to use the new ACE_Process
2388           API.
2390 Mon May 12 08:16:38 1997  David L. Levine  <levine@cs.wustl.edu>
2392         * ace/config-freebsd*.h: added support for FreeBSD 2.1.7R.
2393           Thanks to Satoshi Ueno <satoshi.ueno@gs.com> for figuring
2394           out the differences and to Nanbor Wang <nw1@cs.wustl.edu>
2395           for updating the config files.
2397 Sun May 11 17:36:59 1997    <harrison@samba.cs.wustl.edu>
2399         * tests/{Pipe_Test.cpp, Process_Mutex_Test.cpp,
2400           Time_Service_Test.cpp, Token_Service_Test.cpp}:  Updated these
2401           files to use the new ACE_Process API.
2403 Sun May 11 14:40:51 1997  David L. Levine  <levine@cs.wustl.edu>
2405         * ace/config-osf1-4.0.h: put back ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS.
2407         * ace/ACE_Process.cpp (ACE_Process_Options ctor): reordered
2408           initializers to match declaration order.
2410 Sat May 10 19:44:28 1997    <harrison@samba.cs.wustl.edu>
2412         * Process.h: ACE_ProcessEx now works on Solaris and NT.  There
2413           have been some changes to the API.  ACE_ProcessEx::cl_options
2414           and ACE_ProcessEx::path have been combined into
2415           ACE_ProcessEx::command_line.  ACE_ProcessEx::command_line must
2416           be used to specify path and command-line arguments.  There is
2417           also a second ACE_ProcessEx::setenv method that allows
2418           applications to set environment variables in a "VAR=VALUE"
2419           format.
2421 Sat May 10 10:51:11 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
2423         * ace/config-osf1-3.2.h: Added three new flags to the config file
2424           for OSF/1 3.2:
2426           #define ACE_LACKS_SETSCHED 
2427           #define ACE_LACKS_RWLOCK_T
2428           #define ACE_LACKS_GETPGID
2430           Thanks to Tom Dobridge <dobridge@persimmon.com> for reporting
2431           this.
2433 Fri May 09 16:37:48 1997  David L. Levine  <levine@cs.wustl.edu>
2435         * ace/config-osf1-4.0.h: added DEC_CXX.
2437         * ace/config-osf1-4.0-g++.h: removed commented-out
2438           ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS.
2440           Thanks to Thilo Kielmann <kielmann@informatik.uni-siegen.de> for
2441           patches for the above two OSF config files.
2442         
2443         * ace/Sched_Params.cpp (priority_min): On Solaris (with STHREADS),
2444           don't return priority of 0 because ::pthread_attr_setschedparam ()
2445           will refuse to use it (with EINVAL).  So, bump priority of 0 up to 1.
2447         * tests/Priority_Task_Test.cpp: retry the task activation with
2448           priority 0 if it fails with non-zero priority.  This lets the
2449           test run on platforms such as Linux that only let the superuser
2450           set non-zero priority.
2452         * ace/ACE_Process.cpp (ACE_Process_Options ctor): reordered
2453           initializers to match declaration order.
2455         * examples/Connection/non_blocking/test_lsock_acceptor.cpp: fixed
2456           typo in template specializations: ACE_LSOCK_ACCEPTOR instead of
2457           ACE_SOCK_LACCEPTOR.
2459 Fri May  9 13:07:20 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
2461         * ace/UNIX_Addr: Changed the return values of all the set()
2462           methods so that they conform to the signature used by the
2463           INET_Addrs.
2465         * examples/Connection/non-blocking: Added two new test programs,
2466           test_lsock_{connector,acceptor}.cpp that 
2467         
2469         * ace/LSOCK_Stream.cpp: Revised the get_remote_addr() method so
2470           that it uses the underlying ACE_SOCK::get_remote_addr() method
2471           rather than the get_local_addr() method.  Hopefully, this will
2472           fix an ACE bug with UNIX domain sockets.  Thanks to Paul Han
2473           <phan@CCGATE.HAC.COM> for reporting the problem and the fix.
2475         * include/makeinclude/platform_aix4.2.GNU (LLIBS): Changed
2476         
2477           LLIBS = -lC_r -lC -lpthreads -lbsd -ltli_r -ldl -lc_r -lm -lc $(ACELIB)
2479           to
2481           LLIBS =  -ltli_r -ldl  $(ACELIB)
2483           MakeC++SharedLib_r includes all the other libs automatically in
2484           the search. 
2486         * apps/Gateway/Gateway/Proxy_Handler.h: Moved the handle_close()
2487           method into the public section since the Connector now calls it.
2489         * ace/Containers.cpp: Updated all the operator= methods so
2490           that they no longer try to return *this.  Thanks to Chris Lahey
2491           for reporting this.
2493         * ace/IOStream.h: Replaced __alpha with DIGITAL_UNIX && DEC_CXX.
2494           Thanks to Thilo for reporting this.
2496         * build/gcc/tests/Simple_Message_Block_Test.cpp (main): Changed
2497           the use of ACE_Mutex to ACE_SYNCH_MUTEX so that everything will
2498           build correctly on non-MT platforms.
2500         * ace/Timer_{Heap,List}_T.cpp: To ensure backwards compatibility
2501           with the old "int" return value of Timer_*::schedule() we must
2502           cast the long value to int before returning it.  Thanks to Thilo
2503           Kielmann <kielmann@informatik.uni-siegen.de> for reporting this.
2505         * ace/Acceptor.cpp,
2506           ace/Connector.cpp:
2507           If an active or passive connection times out and the Connector
2508           or Acceptor calls the handle_timeout() method of the
2509           Svc_Handler, we now keep track of whether the handle_timeout()
2510           method returns -1.  If so, we call handle_close() on the
2511           Svc_Handler automatically.  Thanks to Michael Hartman
2512           <c62nt57@ibx.com> for suggesting this.
2514         * tests/IOStream_Test.cpp: Fixed this test so that it runs on
2515           non-MT platforms.
2517         * ace/Module.cpp: Changed the implementation of the close_i()
2518           method so that it will wait for all active threads in a Task to
2519           exit before deleting the task.
2521         * ace/Task: Added a wait() method on an ACE_Task that will use the
2522           new ACE_Thread_Manager::wait_task() method to block until all
2523           threads have shutdown in a Task.
2525         * ace/Thread_Manager: Finally implemented the wait_task() and
2526           wait_grp() interfaces on ACE_Thread_Manager.  
2528         * ace/SOCK_Dgram.cpp: Added a timed recv() operation.  Thanks
2529           to Hongbo Xu <hxu@mas.co.nz> for contributing this.
2531         * ace/Timer_Queue_T.cpp: Added #include "ace/Synch.h" to keep the
2532           DEC C++ compiler happy.  Thanks to James CE Johnson
2533           <jcej@lads.com> for this.
2535         * ace/Containers.i (size): Changed <TYPE> to <T> so that this
2536           compiles on the Alpha.  Thanks to James CE Johnson
2537           <jcej@lads.com> for this.
2539         * ace/IOStream.h: Include the std_macros header on the Alpha.
2540           Thanks to James CE Johnson <jcej@lads.com> for this.
2542         * include/makeinclude/platform_osf1_4.0.GNU (SOBUILD): Removed
2543           -lACE from the link line.  Thanks to James CE Johnson
2544           <jcej@lads.com> for this.
2546         * tests/Timer_Queue_Test.cpp: Changed all the int timer ids to
2547           long so that the test will work on DEC ALPHAs.  Thanks to Thilo
2548           Kielmann <kielmann@informatik.uni-siegen.de> for reporting this.
2550         * ace/Process: Fixed a number of compile problems for UNIX.
2552         * ace/Process.h: Changed the methods named stdin/stdout/stderr to
2553           std_in/std_out/std_err to avoid name clashes with the standard C
2554           library.
2556         * ace/OS: Changed the use of ACE_Unbounded_Set to
2557           ACE_Unbounded_Stack in order to get the appropriate semantics
2558           for TSS cleanup on NT.
2560         * ace/Containers: Enhanced the ACE_Unbounded_Stack class so
2561           that it supports insert()/remove()/find() methods.  These
2562           rather unorthodox methods are useful for implementing the
2563           TSS semantics required by OS.cpp.
2565         * ace/Containers: Revised all the interfaces for the various
2566           containers so that they all have the same "look and feel."
2568 Fri May  9 00:00:21 1997  James C Hu  <jxh@polka.cs.wustl.edu>
2570         * apps/JAWS/server/HTTP_Request.{h,cpp}: Added a uritopath
2571           translation method, so that CGI location can be computed as it
2572           is searched.  Added methods to access the parsed headers.
2574         * apps/JAWS/server/HTTP_Response.{h,cpp}: Flushed out the
2575           implementation of cgi_response () method.  If all goes well, it
2576           should be able to execute a CGI program.  I don't set the IO
2577           handles to point at the socket handle yet.
2579         * apps/JAWS/server/README: Updated description of JAWS behavior.
2581 Thu May  8 18:04:14 1997  Irfan Pyarali  <irfan@cs.wustl.edu>
2583         * ace/Containers: Made the return values of Container methods
2584           more consistant with other components of ACE (i.e., 0 for
2585           success, -1 for failure).
2587         * ace/Containers (ACE_Unbounded_Stack<T>::delete_all_nodes):
2588           Fixed subtle bug in delete_all_nodes.
2590         * ace/OS.cpp (ACE_TSS_Cleanup::exit): Changed because of
2591           return value changes in ACE containers. 
2593         * Containers: Added size methods to stack containers and
2594           consolidated friendship between ACE_Unbounded_Stack_Iterator and
2595           ACE_Unbounded_Stack
2597         * tests/Message_Block_Test.cpp: I was incorrect about each data
2598           block having its own lock. Since *many* data blocks can share
2599           the same lock, for the case of message block chains, we would
2600           like to optimize locking. 
2602           Therefore, the first guy in the chain grabs the lock and passes
2603           it to the continuation chain. When each guy in the chain gets
2604           it, it compares the passed lock to its own locking strategy. If
2605           it is the same lock, no need to acquire the lock again. If our
2606           lock is different, then we do our own locking.          
2608         * tests/Simple_Message_Block_Test.cpp: This test program is a
2609           torture test that illustrates how ACE_Message_Block reference
2610           counting works, how and when locks are used, how memory is
2611           managed, and how continuation chains of message blocks are
2612           made. Ideally used with purify :-)
2614         * tests: Added new test. Following changed:
2615           Makefile run_tests.bat run_tests.sh tests.mak tests.mdp
2617 Thu May  8 18:04:14 1997  James C Hu  <jxh@polka.cs.wustl.edu>
2619         * include/makeinclude/platform_irix6.2_sgic++.GNU:  Moved SGI C++
2620           options out of CPPFLAGS into CCFLAGS so that gcc won't emit
2621           diagnostics during a make depend.
2623 Thu May  8 11:52:41 1997  Chris Cleeland  <cleeland@cs.wustl.edu>
2625         * ace/{Task,Thread}.h: Added documentation describing
2626           thread priority determination to methods where priority
2627           is an [optional] argument.  Note that if you want to inspect
2628           the REAL documentation, you should look at the code for
2629           ACE_OS::thr_create().  But that's convoluted and touchy.
2631         * ace/Strategies_T.h (ACE_Cached_Connection_Strategy): Added
2632           documentation for this class.
2634 Thu May 08 00:10:00 1997    <harrison@samba.cs.wustl.edu>
2636         * ace/Process.*: This is the first pass at the new ACE_Process
2637           class.  It is now called ACE_ProcessEx.  When it is completely
2638           ported to Solaris, we'll replace the current ACE_Process with
2639           ACE_ProcessEx.
2641         * examples/OS/Process/process.cpp: Added some examples for the
2642           new ACE_ProcessEx.
2644 Wed May 07 21:58:29 1997    <irfan@TWOSTEP>
2646         * ace/Message_Block.h: ACE_Data_Block calling delete on the
2647           ACE_Message_Block was incorrect.  This was a hack to simplify
2648           the locking issues! However this optimization leaded to
2649           incorrect code. Therefore I have taken this behavior out. The
2650           new implementation will lock and unlock multiple times in the
2651           case when there are message_blocks in the continuation field,
2652           all of which point to same data block. However, this is a
2653           strange case that can be optimized later. For now correct code
2654           is more important.
2656           Also, the continuation message blocks are only deleted in the
2657           release() method and not in the destructor. This will ensure
2658           that if message blocks of the stack are chained together, we
2659           will not call release on message blocks of the stack.
2661           Also note that release() should only be called on message blocks
2662           that have been dynamically allocated. Message blocks of the
2663           stack will clean up properly when the activation record of the
2664           method completes. Dynamically allocated messages blocks should
2665           *never* be chained with message blocks allocated of the stack.
2666         
2667         * examples/ASX/Event_Server/Event_Server/Peer_Router.h: Removed
2668           empty definitions of assignment operator and copy constructor.
2670         * examples/ASX/Event_Server/Event_Server/event_server.cpp
2671           (handle_input): Added code here will make sure we actually wait
2672           for the user to type something. On platforms like Win32,
2673           handle_input() is called prematurely (even when there is no
2674           data).
2676         * examples/ASX/Event_Server/Event_Server/Peer_Router.cpp: Changed
2677           a log message.
2679 Wed May  7 22:55:00 1997  James C Hu  <jxh@polka.cs.wustl.edu>
2681         * JAWS/server/*: Debugging changes!  GET and HEAD both work
2682           now.  As well as changes to make it compile cleanly on
2683           VXWORKS, as reported by David.
2685 Wed May 07 16:05:39 1997  David L. Levine  <levine@cs.wustl.edu>
2687         * ace/Makefile: added Timer_Wheel to FILES.  Thanks to Thilo
2688           Kielmann <kielmann@informatik.uni-siegen.de> for reporting this.
2690         * include/makeinclude/platform_irix6.2_sgic++.GNU: enabled CPPFLAGS
2691           to instantiate all templates so that gatewayd will build.
2692           Thanks to Nathan N. Vuong <nvuong@mail08.mitre.org> for reporting
2693           this problem and Eric Dean Russell <edrusse@somnet.sandia.gov>
2694           for supplying and the fix.
2696         * ace/Map_Manager.h: updated comments to indicate that find
2697           functions return a non-negative integer if the item is found.
2699         * ace/Map_Manager.cpp (find_i (const EXT_ID &, INT_ID &)): return
2700           index instead of 0 if the item is found, to be consistent with
2701           find_i (const EXT_ID &).
2703         * ace/IOStream.cpp (ACE_Streambuf_T ctor): added initializations of
2704           eback_saved_ and pbase_saved_ to avoid unitialized memory read
2705           reports from Purify.
2707 Tue May  6 07:39:25 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
2709         * ace/Service_Config.cpp (open): Make sure to perform the
2710           daemonization logic first so that we get a new process created
2711           before initializing reactors, etc.  Thanks to Adrian Salt
2712           <acsalt@magi.com> for reporting this.
2714         * examples/IPC_SAP/SOCK_SAP/CPP-inserver-poll.cpp (main): 
2715           Changed ACE::INVALID_HANDLE to ACE_INVALID_HANDLE.
2716           Thanks to Dani Flexer <danif@alice.actcom.co.il> for
2717           reporting this.
2719         * tests/Conn_Test.cpp (compare_i): Changed the comparison from
2720           a1 == a2 to a1 != a2 since this appears to be what is needed.
2721           We need to improve the comments here!
2723         * tests/Conn_Test.cpp: Split the definition of the Svc_Handler
2724           template into its own Conn_Test.h file to work around "features"
2725           with AIX C++.  Thanks to Chris Lahey for reporting this.
2727         * ace/Containers.cpp: Fixed a bug in the set() method for
2728           ACE_Unbounded_Queue.  Again, thank goodness for cs242!
2730         * ace/Containers.cpp: Fixed a bug in the enqueue_head() logic for
2731           ACE_Unbounded_Queue.  Thank goodness for cs242 ;-).
2733         * ace/Containers.cpp: Added a destructor for ACE_Node to keep the
2734           compilers happy.
2736 Tue May 06 11:31:49 1997  David L. Levine  <levine@cs.wustl.edu>
2738         * netsvcs/lib/*.cpp: removed break statements after
2739           ACE_RETURNs to avoid unreachable statement warnings from
2740           GHS.  
2742         * ace/OS.cpp (mktime): added time_t cast of -1 (error) return
2743           to avoid compiler warning.
2745         * ace/config-vxworks-ghs-1.8.h: added ACE_LACKS_SIGNED_CHAR.
2747         * ace/Containers.cpp (dequeue_head): fixed typos in variable names.
2749         * examples/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.cpp:
2750           removed #ifdef ACE_HAS_TLI around some template specializations so
2751           that this subproject will build on platforms non-TLI platforms such
2752           as Linux.
2754 Tue May  6 17:02:54 1997  James C Hu  <jxh@polka.cs.wustl.edu>
2756         * ace/OS.{h,i}: Added strftime ().  Also, enhanced strcasecmp
2757           implementation to account for lexicographical ordering for
2758           mismatches.
2760         * apps/JAWS/server/Parse_Headers.{h,cpp} (class Headers_Map):
2761           Changed signature of casting operator to return a pointer
2762           rather than a reference to a constant pointer, to fix
2763           anachronism warning Doug found.
2765         * apps/JAWS/server/HTTP_Config.{h,cpp}: Added class
2766           HTTP_Config to be a container for HTTP server options
2767           such as locations of directories, port, etc.
2769         * apps/JAWS/server/HTTP_Helpers.{h,cpp}: Added code to enhance
2770           support for CGI scripts: 
2771           - Added HTTP_decode_string to HTTP_Helper class, to deal
2772             with percent codes.
2774         * apps/JAWS/server/HTTP_Request.{h,cpp}: Added code to enhance
2775           support for CGI scripts: 
2776           - Added cgi_, cgi_env_, and cgi_args_ data members to
2777             and corresponding accessors.
2778           - Added nice accessors to the important data members to
2779             simplify other parts of the code.
2780           - Added method to parse URI to determine the name of the CGI
2781             executable if present.
2783         * apps/JAWS/server/HTTP_Response.{h,cpp}: Added code to
2784           enhance support for CGI scripts:
2785           - Hooks are now present to make the appropriate calls
2786             to activate a CGI program.
2788         * apps/JAWS/server/*.{h,cpp}
2789           Various changes from the ACE mailing list incorporated.
2790           Cosmetic changes for ACE coding style.
2792           SGI fixes.
2794 Tue May  6 00:00:54 1997  Chris Cleeland  <cleeland@cs.wustl.edu>
2796         * ace/Message_Block.cpp: Added template specialization for
2797           ACE_Guard<> that prevented ACE from compiling under Linux.
2799 Mon May  5 22:17:15 1997  Sumedh Mungee      <sumedh@cs.wustl.edu>
2800         
2801        * apps/JAWS/stress_testing: Removed the usleep definition from
2802          global.h, it was unused by the program.
2804 Mon May 05 21:01:42 1997  David L. Levine  <levine@cs.wustl.edu>
2806         * ace/config-linux*.h: added ACE_HAS_STRING_CLASS.  Thanks to
2807           Luis Lopes <llopes@tick.rcc.Ryerson.CA> for reporting this.
2809 Mon May 05 19:58:16 1997    <irfan@TWOSTEP>
2811         * ace/ace.{mak,mdp}: Readded IOStream.cpp to the makefile. 
2813         * ace/Synch_T.h: Added ACE_SYNCH_RECURSIVE_MUTEX.
2815         * ace/Timer_Queue: Added an extra template parameter to
2816           Timer_Queues that specifies the type of locking to be used
2817           inside of the timer queue.
2819           Also changed the functor callback routines so that they are more
2820           descriptive compared to operator ().
2822 Mon May  5 21:37:01 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
2824         * ace/Message_Block: Revised the release() logic for
2825           ACE_Message_Block and ACE_Data_Block so that we will delete both
2826           within the same block of code in order to hold the lock.  This
2827           should prevent nasty race conditions in multi-threaded programs.
2828           Thanks to Craig Perras <craig.perras@CyberSafe.COM> for
2829           reporting this problem.
2831         * ace/Message_Block.cpp: Replaced an explicit acquire()/release()
2832           of ACE_Lock::locking_strategy_ with a call to an ACE_Guard.
2834         * ace/Containers.cpp (set): Optimized for the common case where
2835           we're increasing the size of the set by 1.
2837         * ace/Containers: Merged the ACE_Set_Node, ACE_Stack_Node, and
2838           ACE_Set_Node into a single "ACE_Node" class.  This tidies up the
2839           code quite a bit.
2841         * ace: Removed the Set.* and Stack.* files and replaced them with
2842           the Containers.* files.  This file contains the ACE_*Stack,
2843           ACE_*Queue, and ACE_*Set classes.  If this revised file scheme
2844           breaks existing code please let me know and I'll provide
2845           backwards compatibility.
2847         * ace/Stack: Changed the name of ACE_Unbounded_Queue::enqueue() to
2848           ACE_Unbounded_Queue::enqueue_tail() and also added
2849           ACE_Unbounded_Queue::enqueue_head().
2851         * ace/OS: Changed the names of the parameters of the ACE_OS::mem*
2852           methods from ACE_OS::mem* (void *s, const void *t) to
2853           ACE_OS::mem* (void *t, const void *s) since "t" should stand for
2854           "target" and "s" for "source."  Thanks to Andres Kruse
2855           <Andres.Kruse@cern.ch> for pointing this out.
2857         * ace/Stack: Removed the peek() method from ACE_Unbounded_Queue.
2858           This functionality is now subsumed by the get(..., 0) method.
2859           If this breaks any existing code please let me know.
2861         * ace/Stack.h: Moved all the functionality from ACE_Unbounded_Set
2862           into ACE_Unbounded_Queue.  That's really where this belonged in
2863           the first place.  Thanks to David Levine for noticing this.
2865         * ace/Set.h: Moved ACE_Set_Node from the *.cpp file into the *.cpp
2866           file in anticipation of AIX C++ compiler bugs ;-).
2868         * examples/ASX/Event_Server/Transceiver/transceiver.cpp:
2869           Rearranged the location where we register to receive standard
2870           input so that the socket handle will not be initialized at this
2871           point.  Thanks to craig perras <craigp@wolfenet.com> for
2872           reporting this.
2874         * examples/ASX/Event_Server/Transceiver/transceiver.cpp
2875           (Event_Transceiver): Make sure to #ifdef around SIGQUIT for
2876           WIN32 since it lacks this signal.  Thanks to craig perras
2877           <craigp@wolfenet.com> for reporting this.
2879         * ace/config-osf1-4.0-g++.h: Removed the ACE_LACKS_SIGNED_CHAR
2880           since this seems to be compiler specific.  Thanks to Thilo for
2881           this insight.
2883         * ace/Strategies_T: Added a number of fixes and enhancements to
2884           the new Hash_Addr and ACE_Cached_Connect_Strategy classes.
2886         * ace/Strategies_T.h: Added #include for "Hash_Map_Manager.h".
2887           Thanks to Amos Shapira <amos@dsi.co.il> for reporting this.
2889         * ace/config-hpux-10.*.h: Applied a number of patches courtesy of
2890           Carlos O'Ryan.
2892         * ace/Dump.cpp: Changed a cast from
2894           delete (ACE_Dumpable_Ptr *) this->dumper_;
2896           to
2898           delete (ACE_Dumpable *) this->dumper_;
2900           This fixes a potential bug.  Thanks to Carlos O'Ryan for this
2901           bug report.
2903         * ace/DEV_IO.h,
2904         * ace/SPIPE_Stream.h: Removed the = 0 default value for one send()
2905           method to avoid ambiguity with the other send() method.  Thanks
2906           to Carlos O'Ryan for this bug report.
2908         * ace/Map_Manager.cpp (advance): Removed a cast to size_t since
2909           that is always true.  Thanks to David Levine for pointing this
2910           out.
2912         * ace/XtReactor: Moved the remove_handler_i() and
2913           register_handler_i() methods into the protected portion
2914           of the class.  Since these should never be called by the
2915           client I've moved them into protected portion to ensure this
2916           is the case. 
2918         * ace/XtReactor: Changed the implementation of the XtReactor to
2919           use long for dealing with timers.  Thanks to Stuart Powell
2920           <stuartp@in.ot.com.au> for reporting this.
2922 Mon May 5 17:16:41 1997  Carlos O'Ryan  <coryan@mat.puc.cl>
2924         * ace/config-hpux-10.x.h, config-hpux-10.x-nothread.h: 
2925           Some patches are needed to compile ACE under HP-UX (using HP/C++),
2926           I documented those patches.
2928 Mon May 05 11:50:39 1997  David L. Levine  <levine@cs.wustl.edu>
2930         * netsvcs/lib/Server_Logging_Handler.cpp: fixed ACE_Svc_Handler
2931           specializations, yet again, for Linux w/LXPthreads.  Thanks to
2932           Luis Lopes <llopes@tick.rcc.Ryerson.CA> for reporting this
2933           problem with sufficient detail for us to track it down.
2935         * ace/Stack.* (ACE_Unbounded_Queue):
2937           1) made peek () const.
2938           2) added another peek (u_int index = 0) function that can peek
2939              at any queue item, not just the first.  It returns a pointer
2940              to the item (or 0 if not found), to avoid copying.
2941           3) changed return type of size () from int to size_t.
2942           4) inlined size ().
2944         * ace/Strategies_T.cpp (connect_svc_handler, operator==):
2945           added return type.
2947         * netsvcs/lib/Server_Logging_Handler.cpp: fixed template
2948           specializations for platforms that have neither THREADS nor
2949           TLI.  Thanks to Nanbor Wang <nw1@cs.wustl.edu> for reporting this.
2951 Sun May  4 12:34:09 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
2953         * ace/OS.cpp: If ACE_HAS_THREADS isn't defined then we'll just
2954           use mktime() without the locking.
2956         * ace/Set: Removed the get() methods from the ACE_Fixed_Set and
2957           ACE_Bounded_Set since they don't make much sense on these
2958           abstractions.
2960         * ace/Set: Changed the new "find" method to be called "get" to
2961           correspond to the new "set" method I'm adding.
2963         * ace/SString.cpp: Added a operator << for ACE_CString in 
2964           order to print it with iostreams.
2966         * ace/Set.cpp: Added a reset method to the ACE_Unbounded_Set to
2967           remove all the nodes without completely destroying the set.
2969         * ace/SString: Added friend operator+ to both ACE_CString and
2970           ACE_WString in order to provide a concatenation operator.
2972         * ace/SString: Added a compare() method to all the ACE String
2973           classes.  This behaves just like the Standard C library strcmp()
2974           function.
2976         * ace/Message_Queue.i: Oddly, there were a bunch of methods
2977           defined in this *.i file that didn't have ACE_INLINE in front of
2978           them.  I'm surprised this didn't give compile errors on some
2979           platforms.  I've fixed this by moving these methods into the
2980           *.cpp file.
2982         * ace/Stream,
2983           ace/Service_Repository,
2984           ace/Reactor,
2985           ace/Message_Queue,
2986           ace/Map_Manager,
2987           ace/Malloc_T,
2988           ace/Hash_Map_Manager,
2989           ace/Set: Added a done() method on all the iterators so that
2990           we can check within the iteration itself to see if there are any
2991           remaining elements.  In addition, updated the return value of
2992           advance() on all iterators so that it returns 1 if we're not
2993           done and 0 if we're done.
2995 Sun May 04 07:22:49 1997  David L. Levine  <levine@cs.wustl.edu>
2997         * ace/Timer_Heap_T.cpp: changed some more int declarations to longs.
2999 Sat May  3 17:38:19 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
3001         * Changed all uses of Reactor::{scheduler_timer,cancel}() and
3002           Timer_{Queue,List,Heap,Wheel}::{schedule,cancel}() to use 
3003           long rather than int.  This is important since it ensures that
3004           we can make the Timing Wheels trick of casting the
3005           Timer_Node * to long work correctly on machines that have 64
3006           bit pointers, 64 bit longs, and 32 bit ints (e.g,. DEC
3007           ALPHA).  Thanks to Thilo Kielmann
3008           <kielmann@informatik.uni-siegen.de> for pointing this out,
3009           even though he finds this solution distasteful ;-).
3011         * netsvcs/lib/TS_Clerk_Handler.cpp (initiate_connection): I
3012           believe there was also a bug here -- if schedule_timer() returns
3013           0 that's not an error!
3015         * apps/Gateway/Gateway/Proxy_Handler_Connector.cpp
3016           (initiate_connection): I believe there was a bug here -- if
3017           schedule_timer() returns 0 that's not an error!
3019         * tests/IOStream_Test.cpp: Added some minor changes for DEC UNIX.
3020           Thanks to James CE Johnson <jjohnson@lads.com> for reporting
3021           this.
3023         * ace/IOStream: Added a number of minor changes for DEC UNIX.
3024           Thanks to James CE Johnson <jjohnson@lads.com> for reporting
3025           this.
3027         * ace/config-osf1-4.0.h: Added
3028           ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS to the config.h file.
3029           Thanks to James CE Johnson <jjohnson@lads.com> for reporting
3030           this.
3032         * ace/SString: Made the ace_string_null_string_ a static data
3033           member rather than an external constant.  This should control
3034           the name space a bit better.
3036         * ace/SString.cpp: Fixed the ACE_CString::operator += so that it
3037           won't screw up if this->rep_ initially points to the
3038           ACE_String_null_string_.
3040         * examples/Misc: Added a new test_set.cpp program that exercises
3041           the ACE_*_Set classes.
3043 Sat May 03 06:56:10 1997  David L. Levine  <levine@cs.wustl.edu>
3045         * ace/Map_Manager.cpp (dtor): removed void return (typo).
3047         * ace/Set.cpp (ACE_Fixed_Set<T>::operator =): typo: fs instead of bs.
3049         * ace/Set.cpp (ACE_Fixed_Set<T, SIZE>::find): typo: index instead of i.
3051         * ace/IOStream.cpp: fixed typo: "#if defined" instead of just "#if".
3053         * tests/Conn_Test.cpp,
3054           netsvcs/lib/{Client_Logging_Handler,TS_Clerk_Handler}.cpp,
3055           netsvcs/clients/Tokens/manual/manual.cpp,
3056           apps/Gateway/Gateway/Event_Channel.cpp,:
3057           apps/JAWS/client/Blob.cpp,
3058           examples/ASX/Event_Server/Event_Server/Peer_Router.cpp,
3059           examples/ASX/Event_Server/Transceiver/transceiver.cpp,
3060           examples/ASX/UPIPE_Event_Server/{Consumer,Supplier}_Router.cpp,
3061           examples/Connection/misc/test_upipe.cpp,
3062           examples/Connection/non_blocking/test_*_connector.cpp: added
3063           ACE_Map_Entry template specialization.  It's needed now that the
3064           destructor is explicit.
3066 Fri May  2 14:57:56 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
3068         * ace/Map_Manager.cpp: Added a no-op destructor to ACE_Map_Entry
3069           just to keep some compilers happy.  Thanks to Chuck Gehr for
3070           reporting this.
3072         * ace/config-osf1-4.0.h: Added 
3073         
3074           #define ACE_LACKS_IOSTREAM_FX
3075           #define ACE_LACKS_LINEBUFFERED_STREAMBUF
3076           #define ACE_LACKS_SIGNED_CHAR
3078           Thanks to James CE Johnson <jjohnson@lads.com> for reporting
3079           this.
3081         * ace/Timer_{Wheel,Heap,List}_T.h: Fixed a typo in all these
3082           classes that was failing to put the keyword "class" after
3083           "friend."  Also, replaced the use of the typedef with the
3084           expanded name of the class to work around problems with DEC
3085           C++.  Thanks to James CE Johnson <jjohnson@lads.com> for
3086           reporting this. 
3088         * ace/Set: Added a find() method that will return the "ith"
3089           element in the set.
3091         * ace/Set: Added copy constructors and assignment operators to all
3092           the ACE_*_Set classes.
3094         * ace/Set.cpp: Changed the implementation of ACE_Unbounded_Set to
3095           use a dummy node and a circular list.  This improves performance
3096           and also makes it possible to implement "queue" semantics for
3097           inserting at the tail of the set.
3099         * ace/config-osf1-4.0.h: Added the ACE_HAS_STRING_CLASS macro.
3100           Thanks to James CE Johnson <jcej@lads.com> for this.
3102         * ace/IOStream: Added the ACE_HAS_STRING_CLASS macro to
3103           replace the nasty #ifdefs we had previously.  Thanks to
3104           James CE Johnson <jcej@lads.com> for this.
3106         * ace/config*.g++: Added ACE_HAS_STRING_CLASS for all the GNU 
3107           compilers and Win32.
3109         * ace/config-mvs.h: Added a new version that contains support for
3110           IBM OS/390 r2.  Thanks to Chuck Gehr for this.
3112 Fri May 02 08:14:30 1997  David L. Levine  <levine@cs.wustl.edu>
3114         * examples/ASX/Event_Server/Transceiver/transceiver.cpp: removed
3115           specializations of ACE Guards because they're in libGateway.
3116           Thanks to Joey Zhu <joey.zhu@wcom.com> for reporting this problem.
3118         * examples/ASX/Event_Server/Transceiver/{Makefile,transceiver.cpp}:
3119           added template specializations to transceiver.cpp so that it no
3120           longer needs to be linked with libGateway.
3122         * examples/ASX/Event_Server/Event_Server/{Makefile,Peer_Router.cpp}:
3123           added template specialization to Peer_Router.cpp so that event_server
3124           no longer needs to be linked with libGateway.
3126         Thanks to Joey Zhu <joey.zhu@wcom.com> for reporting the above
3127         link problems.
3129         * apps/Gateway/Peer/{Makefile,Peer.cpp}: added template
3130           specialization to Peer.cpp so that peerd no longer needs to
3131           be linked with libGateway.
3133         * Log_Msg.cpp (VxWorks only): fixed used of ::taskDeleteHookAdd (it
3134           should only be called once for all Log_Msg instances) and added call
3135           to ::taskDeleteHookDelete to clean up when the last task exits.
3136           Thanks to Dave Mayerhoefer <mayerhoefer@svappl36.mdc.com> for
3137           reporting this.
3139         * tests/Conn_Test.cpp: changed some fprintf print specifiers to avoid
3140           g++ warnings about printing pointer values.
3142 Thu May 01 00:05:59 1997    <irfan@TWOSTEP>
3144         * tests/Time_Service_Test.cpp (main): Made sure that the backing
3145           store is not there at the start of the program. We need to make
3146           sure because this test kills the Time Clerk and on some
3147           platforms the Clerk is not allowed to do a graceful shutdown. By
3148           cleaning the backing store here, we are sure that we get a fresh
3149           start and no garbage data from a possible aborted run. 
3151           The old code deleting the backing store at the end of the test
3152           is still there but does not work on Win32 as unlink fails with
3153           ERROR_ACCESS_DENIED. I am not sure why this is happening!  For
3154           now the unlink at the start of the program will do.
3156           Also added a wait for the clerk before deleting the backing
3157           store. This way we are sure that we do not delete the backing
3158           store before the clerk is done with it.
3160         * netsvcs/lib/TS_Clerk_Handler.cpp: Fixed an obscure bug with
3161           ACE_TS_Clerk_Processor. ACE_TS_Clerk_Processor (which is an
3162           ACE_Connector) and all its pending connection objects are still
3163           registered with the Reactor when the process exits and the
3164           Service_Object is deleted. After this the destructor of the
3165           Reactor then calls handle_close on ACE_TS_Clerk_Processor
3166           (which does not exist anymore), causing a seg fault. The
3167           solution is to call ACE_Connector::fini from
3168           ACE_TS_Clerk_Processor::fini. ACE_Connector::fini will
3169           unregister ACE_TS_Clerk_Processor and all pending connects from
3170           the Reactor.
3172 Wed Apr 30 17:47:11 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
3174         * ace/OS.i (getpwnam_r): Changed the expression to check if
3175           getpwnam_r() returns -1 for AIX.  Thanks to Chris Lahey for
3176           this.
3178         * ace/Timer_Wheel_T.h: changed
3180           // = Don't allow these operations for now.
3181           ACE_Timer_Wheel_T (const ACE_Timer_Wheel_T &);
3182           void operator= (const ACE_Timer_Wheel_T &);
3184           to:
3186           // = Don't allow these operations for now.
3187           ACE_Timer_Wheel_T (const ACE_Timer_Wheel_T<TYPE, FUNCTOR> &);
3188           void operator= (const ACE_Timer_Wheel_T<TYPE, FUNCTOR> &);
3190           Thanks to Chuck Gehr for reporting this.
3192         * ace/OS.cpp: Made mktime() thread-safe.  If any platforms support
3193           multi-thread safe versions of mktime() please let me know so we
3194           can set the ACE_HAS_MT_SAFE_MKTIME macro for that config file.
3196         * ace/OS.i: Added a new special case for getpwnam_r() on AIX.
3197           Thanks to Chris Lahey for reporting this.
3199 Wed Apr 30 16:01:04 1997  James C Hu  <jxh@polka.cs.wustl.edu>
3201         * ace/OS.i, ace/OS.h: added mktime().
3203 Wed Apr 30 14:17:34 1997  David L. Levine  <levine@cs.wustl.edu>
3205         * ace/config-vxworks*.h: added ACE_LACKS_PWD_FUNCTIONS.  Thanks
3206           to Dave Mayerhoefer <mayerhoefer@svappl36.mdc.com> for reporting
3207           this.
3209         * ace/OS.i: cleaned up ACE_LACKS_PWD_FUNCTIONS comments a bit.
3211         * ace/Array.{h,i}: added const operator [].
3213         * ace/Array.cpp (ctors): reordered initializers to match declaration
3214           order.
3216         * netsvcs/lib/Server_Logging_Handler.cpp: protect against multiple
3217           inclusion.  Thanks to Kevin Martindale
3218           <kevin_martindale@stortek.com> for reporting this problem.
3220 Wed Apr 30 08:42:55 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
3222         * ace: Added a new generic Array class, which we'll use until
3223           STL becomes more widely portable.
3225         * ace: Added a new macro ACE_LACKS_GETPGID to clean up the code
3226           in ACE_OS::getpgid().
3228         * ace: Added new config*.h files and platform*.GNU files for
3229           FreeBSD.  Thanks to Nanbor Wang <nw1@cs.wustl.edu> for these.
3231 Wed Apr 30 07:44:36 1997  David L. Levine  <levine@cs.wustl.edu>
3233         * ace/config-osf1-4.0*.h: removed ACE_HAS_SIGWAIT.
3235         * ace/OS.{h,i}: applied Thilo's patch for sigwait on Digital
3236           Unix 4.0, which defines sigwait as a macro.  Thanks to
3237           Thilo Kielmann <kielmann@informatik.uni-siegen.de> for
3238           this and the above config file patches.
3240         * ace/IOStream.{h,cpp}: James CE Johnson <jcej@lads.com> updated
3241           the IOStream class; see comments in IOStream.h.
3243         * examples/Logger/client/logging_app.cpp (main),
3244           performance-tests/Misc/test_naming.cpp (*): replaced sprintf
3245           with ACE_OS::sprintf.  Thanks to Thilo Kielmann
3246           <kielmann@informatik.uni-siegen.de> for reporting these.
3248 Tue Apr 29 20:03:38 1997    <sumedh@cs.wustl.edu>
3250         * apps/JAWS/stress_testing/http_tester.cpp : Removed usage
3251           of pow (), and changed method of calculating throughput/latency
3252           to use straight multiplication instead of pow (). Updated
3253           Makefile to not link -lm.
3255 Tue Apr 29 19:57:52 1997    <irfan@TWOSTEP>
3257         * config-win32-common.h (ACE_HAS_TEMPLATE_SPECIALIZATION): Win32
3258           supports this option. Added to config file.
3260         * ace: Removed tracing for the following to make things work with
3261           tracing on:
3262           
3263           ACE::timestamp
3264           ACE_FIFO_Send_Msg::send
3265           ACE_SPIPE_Stream::send
3266           ACE_Sig_Guard::ACE_Sig_Guard
3267           ACE_Sig_Guard::~ACE_Sig_Guard
3269         * netsvcs/servers/main.cpp (main): Added special code for Win32
3270           such that only SIGINT is being registered with the Signal
3271           Handler. SIGQUIT is not supported on Win32.
3273         * netsvcs/lib/Token_Handler.cpp (init): Removed the registration
3274           of the Acceptor for SIGINTs.
3276         * netsvcs/lib/TS_Server_Handler.cpp (init): Same as above.
3278         * netsvcs/lib/Client_Logging_Handler.cpp (open): Removed the
3279           registration of SIGPIPE for Win32. Win32 does not support
3280           SIGPIPE.
3282         * tests/Process_Strategy_Test.cpp (server): The new thread must
3283           become owner before it can call Reactor::handle_events. Also
3284           fixed #define typo.
3286         * ace/OS.cpp (socket_fini): Remove the ACE error message as the IO
3287           Stream objects are already gone by this point in the program.
3289         * examples/Registry/Registry.mak: Replaced the old makefiles with
3290           this one. Also added _AFXDLL as a preprocessor define, forcing
3291           the correct inclusion of header files that give a consistent
3292           definition of HKEY. This is a hack till we have a better
3293           solution.
3295         * ace/Event_Handler: Removed the old Proactor callback methods. 
3297 Tue Apr 29 17:39:40 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
3299         * ace/config-mvs.h: Added #define ACE_LACKS_LINEBUFFERED_STREAMBUF
3300           for MVS.  Thanks to Chuck Gehr <gehr@sweng.stortek.com> for
3301           reporting this.
3303         * ace: Commented out ACE_TRACE calls in constructors in
3304           several ACE classes in order to avoid problems with circular
3305           initialization dependencies related to mutexes that are
3306           breaking code on WinNT when ACE_NTRACE is set to 0.  Thanks
3307           to Lothar Hermann <hermann@csaserv.med.siemens.de> for
3308           reporting these. 
3310         * ace/Reactor.cpp: It looks as if Windows NT isn't returning
3311           the number of bytes requested by a WinSock recv() used in
3312           the ACE_Reactor::notify() in some situations.  This is
3313           causing problems for test programs under heavy load.  The
3314           fix appears to be to add an additional ACE::recv() to obtain
3315           the remaining bytes.  Thanks to Karlheinz for reporting this
3316           and to Irfan for helping to fix it.
3318         * ace/OS.i: Fixed a very subtle bug with ACE_OS::cond_wait() and
3319           ACE_OS::cond_signal() that only manifests itself when
3320           ACE_HAS_SIGNAL_OBJECT_AND_WAIT is enabled (which isn't the
3321           default).  The problem stemmed from the fact that we were
3322           assuming that if we used condition variables it implied that the
3323           external mutex had USYNC_PROCESS scope.  In fact, the external
3324           mutexes typically have USYNC_THREAD scope, so
3325           SignalObjectAndWait() was hanging indefinitely.  Fortunately,
3326           the fix was easy -- just add a run-time check for the type of
3327           the external mutex and take the appropriate action.  Thanks to
3328           Irfan for noticing this.
3330         * tests/Reader_Writer_Test.cpp: Added a parse_args() function that
3331           allows us to override the default number of reader/writer
3332           threads + the number of iterations.
3334         * ace/OS: Added patches for Digital UNIX to handle the
3335           getpwnam_r() name.  Thanks to Thilo Kielmann
3336           <kielmann@informatik.uni-siegen.de> for these patches.
3338 Tue Apr 29 14:27:19 1997    <harrison@samba.cs.wustl.edu>
3340         * OS.h: Added ACE_HAS_SVC_DLL.  If you write a library and
3341           want it to use ACE_Svc_Export, this will cause those macros
3342           to build dlls.  If you want your ACE service to be a static
3343           library, comment out this line.  As far as I know, the only
3344           reason to have a library be an ACE "service" is to leverage
3345           the ACE_Svc_Export macros.  It's just as easy to define your
3346           own export macros.
3348 Tue Apr 29 07:25:25 1997  David L. Levine  <levine@cs.wustl.edu>
3350         * apps/JAWS/server/HTTP_Request.h (HTTP_Request): added destructor
3351           declaration.
3353         * apps/JAWS/server/Parse_Headers.cpp (parse_header_line): assign local
3354           "value" to value_ field of map_[header].
3356         * apps/JAWS/server/HTTP_Request.cpp (HTTP_fix_path): commented this
3357           static function out because it's not used, and g++ warns about that.
3359         * apps/JAWS: added CVS header to all .h, .i, and .cpp files.
3361 Tue Apr 29 00:33:46 1997    <irfan@TWOSTEP>
3363         * examples/Reactor/Misc/notification.cpp: Add this test to the
3364           Win32 makefile.
3366         * ace: Removed config-win32-msvc2.0.h,  config-win32-msvc4.0.h
3367           config-win32-msvc4.x.h, and config-winnt-4.0-msvc.h from the
3368           repository. These files have been replaced by config-win32.h
3369           and config-win32-common.h.
3371         * IOStream_Test.cpp (main): Added return 0 at the end of main().
3373         * examples/Reactor/Proactor/test_proactor.mak: Added wsock32.lib
3374           to the link line. I am not sure why we have to do this again
3375           since ace.lib already includes it. Without this library in the
3376           link line, GetAcceptExSockaddr is not defined. Go figure!
3378         * apps/JAWS/server/jaws.mak: Same as above.
3380         * ace/ace.{mak,mdp}: Fixed the generation of the release version
3381           of ace.dll such that wsock32.lib is automatically included.
3383 Tue Apr 29 00:16:27 1997  James C Hu  <jxh@polka.cs.wustl.edu>
3385         * JAWS: Changes to support CGI scripts
3387           Changed the following files --
3388           HTTP_Handler.cpp HTTP_Handler.h HTTP_Helpers.cpp
3389           HTTP_Helpers.h HTTP_Request.cpp HTTP_Request.h IO.cpp IO.h
3391           Added the following files --
3392           HTTP_Response.cpp HTTP_Response.h Parse_Headers.cpp
3393           Parse_Headers.h
3395           Removed the file --
3396           JXH_String.h
3398         * JAWS/stress_testing: Changed the Makefile to link in the math
3399           library (-lm).
3401         * ace/OS.h and ace/OS.i: Added support for memmove().
3403 Mon Apr 28 21:35:35 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
3405         * ace/IOStream.h: Added a new macro called
3406           ACE_LACKS_IOSTREAM_SETGET, which works around bugs with SGI C++
3407           on IRIX 6.2.  Thanks to Torbjorn Lindgren <tl@funcom.com> for
3408           reporting this.
3410         * ace/Timer_List_T.h: Replaced the use of 
3411           ITERATOR with ACE_Timer_Queue_Iterator_T<TYPE, FUNCTOR> to
3412           work around problems with SGI C++.  Thanks to 
3413           Torbjorn Lindgren <tl@funcom.com> for reporting this.
3415         * ace/Timer_List_T.cpp: Removed the use of NODE * and replaced it
3416           with ACE_Timer_Node_T<TYPE, FUNCTOR> in order to work around
3417           bugs with certain C++ compilers (i.e., SGI).  Thanks to Torbjorn
3418           Lindgren <tl@funcom.com> for reporting this.
3420         * tests/Conn_Test.cpp: Removed some extraneous template
3421           specializations.  Thanks to Nanbor Wang <nw1@cs.wustl.edu> for
3422           reporting these.
3424         * apps/JAWS/client/Blob.cpp: Rearranged some of the template
3425           specializations in the hope of fixing a linker problem with
3426           SunC++ 4.2.
3428         * ace/config-irix-6.2*.h.  It appears that SGI IRIX 6.2 supports
3429           pread() and pwrite() so I enabled the ACE_HAS_P_READ_WRITE macro
3430           in the IRIX 6.2 config file.
3432         * ace/OS.cpp: Implemented ACE_OS::pread() and ACE_OS::pwrite() for
3433           systems that lack this feature.  The implementation uses the new
3434           ACE_Thread_Mutex monitor lock in order to ensure atomicity
3435           between the lseek() and the read()/write().
3437         * ace/OS.cpp: Finally broke down and added a ACE_Thread_Mutex
3438           monitor lock to the ACE_OS implementation file.  This is useful
3439           for situations where we need to serialize certain ACE_OS
3440           emulation calls (e.g., ACE_OS::{pwrite,pread}).
3442 Mon Apr 28 15:42:48 1997  David L. Levine  <levine@cs.wustl.edu>
3444         * apps/JAWS/client/blobby.cpp: updated template specializations.
3446         * apps/JAWS/stress_testing/global.h: removed #includes of system
3447           headers because ace/OS.h takes care of them.  They were causing
3448           warnings with g++ (because they were #included before OS.h).
3450         * examples/ASX/UPIPE_Event_Server/Supplier_Router.cpp: fixed
3451           typos in template specializations.
3453         * tests/Conn_Test.cpp,Message_{Block,Queue}_Test.cpp,
3454           Process_Strategy_Test.cpp: fixed template specializations
3455           for platforms without threads.  Thanks to Nanbor Wang
3456           <nw1@cs.wustl.edu> for pointing out this problem.
3458         * ace/Connector.h: use ACE_SYNCH_RW_MUTEX in Map typedefs
3459           instead of old ACE_RW_Mutex (which should have been
3460           ACE_Thread_RW_Mutex) and ACE_Null_Mutex (depending on
3461           whether the platform has threads). 
3463         * ace/Service_Record.cpp: added ACE_NULL_SYNCH template
3464           specializations with threads, because they're still needed even
3465           with threads.  This way, individual programs don't have to
3466           specialize these.
3468         * ace/Task.cpp: added ACE_TSS<ACE_Task_Exit> and
3469           ACE_TSS<ACE_Dynamic> template specializations, if the platform
3470           has threads and TSS.  This way, individual programs don't have
3471           to specialize them.
3473         * apps/Gateway/Gateway/Event_Channel.cpp,
3474           Proxy_Handler{,_Connector}.cpp,apps/JAWS/server/HTTP_Server.cpp,
3475           examples/ASX/Event_Server/Transceiver/transceiver.cpp,
3476           examples/ASX/UPIPE_Event_Server/Consumer_Router.cpp,
3477           examples/Connection/blocking/SPIPE-connector.cpp,
3478           examples/Connection/misc/{Connection_Handler,test_upipe}.cpp,
3479           examples/Connection/non_blocking/test_*.cpp,
3480           examples/IOStream/server/iostream_server.cpp,
3481           examples/Logger/Acceptor-server/server_loggerd.cpp,
3482           examples/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.cpp,
3483           netsvcs/lib/Client_Logging_Handler.cpp,
3484           netsvcs/lib/TS_{Clerk,Server}_Handler.cpp:
3485           removed template instantiations that are now in
3486           ace/Service_Record.cpp and ace/Task.cpp.  This should help
3487           on platforms without threads.
3489         * examples/ASX/UPIPE_Event_Server/Supplier_Router.cpp: fixed
3490           typos in template specializations.
3492         * examples/ASX/Event_Server/Event_Server/Peer_Router.cpp: protected
3493           the ACE_*Guard template instantiations with #ifdef ACE_HAS_THREADS.
3495         * examples/ASX/Event_Server/Transceiver/transceiver.cpp: protected
3496           the ACE_*Guard template instantiations with #ifdef ACE_HAS_THREADS.
3498         * apps/JAWS/stress_testing/benchd.cpp (serve): added return -1 if
3499           the strcmp () fails so that the function always returns a value.
3501 Mon Apr 28 18:53:58 1997  Darrell Brunsch <brunsch@cs.wustl.edu>
3503         * ace/OS.h: Added ACE_DEFAULT_TIMER_WHEEL_SIZE and 
3504           ACE_DEFAULT_TIMER_WHEEL_RESOLUTION constants.
3505         
3506         * ace/Timer_Wheel_T.h: switched to use these constants
3507           
3508         * tests/Timer_Queue_Test.cpp: switched to use these constants
3510         * ace/Timer_Wheel: added a new strategy for Timer Queues, one 
3511           based on a hash table of ordered lists.  
3512                 
3513           These files were added:
3514         
3515           - ace/Timer_Wheel.h
3516           - ace/Timer_Wheel_T.h
3517           - ace/Timer_Wheel_T.cpp
3518         
3519           These files were also changed to accomodate Timer Wheel
3520           
3521           - ace/Timer_Queue.cpp 
3522           - ace/Timer_Queue_T.h
3523           - ace/Timer_Queue_T.cpp
3524           - tests/Timer_Queue_Test.cpp 
3526 Mon Apr 28 17:32:04 1997  Chris Cleeland  <cleeland@cs.wustl.edu>
3528         * examples/ASX/Event_Server/Event_Server/Peer_Router.cpp: Added
3529           template specializations.
3531         * examples/ASX/Event_Server/Transceiver/transceiver.cpp: Added
3532           template specializations.
3534         * ace/OS.cpp (thr_create): Hopefully resolved tension
3535           btw. priority determination algorithms for IRIX, LinuxThreads, and
3536           DEC UNIX 4.0.  Thanks to Thilo for information that lead to this.
3538 Mon Apr 28 00:25:17 1997    <irfan@TWOSTEP>
3540         * apps/JAWS/client: Removed ACE_Export macro from class
3541           declarations. Fixed buffer size bug in
3542           ACE_Blob_Reader::receive_reply ().
3544 Sun Apr 27 22:22:14 1997    <irfan@TWOSTEP>
3546         * ace/Proactor: The Proactor can now be registered with ReactorEx
3547           and both of them can be run from ReactorEx's event loop. Added a
3548           flag to Proactor's constructor that indicates whether the
3549           Proactor will be used in conjunction with ReactorEx event
3550           loop. Only if this flag is set will the event in the Proactor be
3551           used by the Asynch IO components. This will help with
3552           performance.
3554         * examples/Reactor/Proactor/test_multiple_loops.cpp: Added a new
3555           test that shows the integration of the event loops of Proactor
3556           and ReactorEx.
3558         * ace/Asynch_IO: Added an ACE_EVENT parameter to the constructors
3559           of classes that inherit from the OVERLAPPED structure. This way
3560           the Proactor's event_ can be set in the OVERLAPPED structure.
3562           Also changed the open methods on the Asynch IO classes to take a
3563           Proactor as an extra parameter.
3564         
3565           Changed ACE_Handler's handle_timeout() to handle_time_out() in
3566           ACE_Handler. This is temporary till we decide on the argument
3567           about mixing the interface of ACE_Event_Handler and
3568           ACE_Handler. This change allows user to inherit from ACE_Handler
3569           and ACE_Event_Handler and use the different handle_timeout()
3570           method, one of which returns void and the other return an int.
3572         * examples/Reactor/Proactor/test_timeout.cpp: This file got
3573           affected by the above change.
3575 Sun Apr 27 17:44:28 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
3577         * ace/OS.h: Added a new #define called ACE_DEFAULT_HTTP_SERVER_PORT.
3578           Naturally, this defaults to 80...
3580         * apps/JAWS/client/blobby.cpp: Cleaned up the blobby example so
3581           that it conforms more closely to the ACE style guide.
3583         * examples/IPC_SAP/SOCK_SAP/CPP-in{server,client}.cpp: Took out
3584           the VxWorks-specific #ifdefs.  I believe this is fixed in ACE_OS
3585           now.  If not, the burden of proof is on the VxWorks testers to
3586           prove me wrong ;-).
3588         * ace/Synch_T.h: Added a new macro ACE_SYNCH_RW_MUTEX to
3589           complement the existing ACE_SYNCH_MUTEX and ACE_SYNCH_CONDITION
3590           macros.  This will clean up lots of code in various test
3591           programs.
3593         * ace/Synch_T.h: Added two new macros, ACE_SYNCH_MUTEX and
3594           ACE_SYNCH_CONDITION.  These default to ACE_MT_SYNCH::MUTEX and
3595           ACE_MT_SYNCH::MUTEX if template typedefs are supported and
3596           ACE_HAS_THREADS is enabled.  If template typedefs *aren't*
3597           supported but ACE_HAS_THREADS is enabled these macros turn into
3598           ACE_Thread_Mutex and ACE_Thread_Condition.  Finally, if
3599           ACE_HAS_THREADS is disabled these macros turn into
3600           ACE_Null_Mutex and ACE_Null_Condition.  These macros make it
3601           possible to write code that is more portable across platforms
3602           and configurations.  Thanks to Carlos O'Ryan for this
3603           suggestion.
3605         * ace/OS.h: Replaced all uses of ACE_SYNCH_MUTEX and
3606           ACE_SYNCH_CONDITION with ACE_SYNCH_MUTEX_T and
3607           ACE_SYNCH_CONDITION_T since (1) this usage relates to templates
3608           and (2) it frees up the namespace for the new ACE_SYNCH_MUTEX
3609           and ACE_SYNCH_CONDITION macros.
3611         * ace/Timer_Queue.cpp: Added yet more template specializations for
3612           the benefit of GCC (ugh).
3614         * ace/Timer_Wheel_T.cpp: Had to revise things just a bit to
3615           compile with GCC and it's lame template mechanism.  This
3616           required changing NODE * to ACE_Timer_Node_T<TYPE, FUNCTOR> * in
3617           several method definitions.
3619         * apps/JAWS/server/HTTP_Server.h: Changed the use of ACE_WIN32 to
3620           ACE_HAS_THREAD_SAFE_ACCEPT since this is a more precise way to
3621           determine if the platform allows multiple threads to call
3622           accept() on the same port.  If other platforms support this
3623           feature please make sure to add it to their config*.h files.
3625         * ace/config-win32-common.h: Defined ACE_HAS_THREAD_SAFE_ACCEPT,
3626           since Win32 allows multiple threads to call accept() on the same
3627           port.
3629         * examples/ASX/UPIPE_Event_Server/Supplier_Router.cpp: The mutex
3630           should be ACE_RW_Mutex, not ACE_Null_Mutex...
3632 Sun Apr 27 18:13:24 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
3634         * ace/Proactor.h: Added Timer_Wheel support.
3636 Sun Apr 27 18:13:24 1997  Sumedh Mungee <sumedh@cs.wustl.edu>
3638         * apps/JAWS/client: Removed blobby.h, and replaced it with
3639           blobby_options.{h,cpp}.
3641         * apps/JAWS/stress-testing: Removed unused argument warnings
3642           etc.
3644 Sun Apr 27 07:41:44 1997  David L. Levine  <levine@cs.wustl.edu>
3646         * ace/Timer_Queue.cpp: added #includes for template specializations,
3647           and removed some unused specializations.
3649         * ace/Timer_Wheel_T.cpp: added newline at end of file.
3651         * ace/Timer_Wheel_T.cpp (ACE_Timer_Wheel_T ctor): reordered
3652           initializers to match declaration order.
3654         * ace/Log_Msg.cpp (log): added support for indenting output according
3655           to the current nesting level by adding a new format specifier, I,
3656           which indents the output according to the current trace_depth_.
3657           If a width is also specified it is taken as multiplier (so that
3658           the indentation is n*trace_depth_).  Thanks to Matthias Kerkhoff
3659           <make@cs.tu-berlin.de> for providing the code for this feature!
3661         * examples/Reactor/Misc/test_timer_queue.cpp: fixed typos in
3662           #includes, and added #include of ace/Timer_Heap.h.
3664 Sat Apr 26 17:19:56 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
3666         * ace/Timer_Queue.cpp: The correct Timer_Queue.cpp file was not
3667           checked in. Also the necessary #include was missing.
3668         
3669         * ace/Proactor.h: Proactor need all three Timer include files.
3671         * ace/ace.{mdp,mak}: Updated for changes to Timer files.
3673         * ace: Updated the following files to include /**/ before an
3674           include file directive: OS.h, config-win32-common.h,
3675           bstring.h. Thanks to Matthias Kerkhoff <make@cs.tu-berlin.de>
3676           for reporting this.
3678 Sat Apr 26 13:41:15 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
3680         * ace/config-sco-5.0.0-mit-pthread.h: Added
3681           ACE_LACKS_PTHREAD_CANCEL.  Thanks to Arturo Montes
3682           <mitosys@colomsat.net.co> for reporting this.
3684         * ace: Came up with a scheme that allowed us to remove the
3685           ace/Timers.{h,i,cpp} files by adding
3686           ACE_Timer_{Queue,Heap,List}_T.{h,i,cpp} files instead.  Thus, no
3687           existing code should break.
3689 Fri Apr 25 17:17:06 1997  Chris Cleeland  <cleeland@cs.wustl.edu>
3691         * ace/OS.cpp (thr_create): Fixed the fix from Thilo so that it
3692           compiled properly on Linux.  Hopefully I didn't break his, and I
3693           should have detected the problem earlier.  Mea culpa.
3695 Fri Apr 25 12:45:23 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
3697         * ace/OS.h: Added a new macro called ACE_HAS_SIG_MACROS for the
3698           case where the frigging OS defines things like sigismember and
3699           sigfillset as macros (ugh).
3701         * ace/FILE_IO.h: Removed a trailing default initializer from the
3702           send() method since it was ambiguous.  Thanks to Carlos O'Ryan
3703           for reporting this bug.
3705         * ace/OS.i (select): Unfortunately the (operator timeval*) defined
3706           for ACE_Time_Value was not used in ACE_OS::select (int width,
3707           fd_set *rfds, fd_set *wfds, fd_set *efds, const ACE_Time_Value
3708           *timeout) because the operator cannot be applied for a
3709           ACE_Time_Value*.  Therefore, I fixed this as follows:
3711           ACE_SOCKCALL_RETURN (::select (width, 
3712                                  (ACE_FD_SET_TYPE *) rfds, 
3713                                  (ACE_FD_SET_TYPE *) wfds, 
3714                                  (ACE_FD_SET_TYPE *) efds, 
3715                                  timeout == 0 ? 0 : (timeval *) *timeout) , int, -1);
3717           Thanks to Carlos O'Ryan for reporting this bug.
3719         * ace: Applied a slew of patches from Carlos O'Ryan in order to
3720           get ACE to compile on HP/UX 10.x with the aCC compiler.
3722         * ace/Shared_Memory_MM: Export the filename in
3723           ACE_Shared_Memory_MM class in order to aid debugging.  Thanks to
3724           Ashish Singhai <singhai@delirius.cs.uiuc.edu> for reporting
3725           this.
3727 Fri Apr 25 14:58:38 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
3729         * ace/Timers: Updated the following files to make it compile on
3730           g++. The following files were updated:
3732           Proactor.cpp Timer_Heap.cpp Timer_List.cpp Timer_Queue.cpp
3733           Timers.cpp
3735 Thu Apr 24 21:13:51 1997    <irfan@TWOSTEP>
3737         * ace/Timer_Queue: Decoupled the Timer Queue from
3738           ACE_Event_Handler and the callback routines in the handler
3739           (handle_timeout and handle_close). The new Timer Queue is
3740           parameterized by the type of data to store and a FUNCTOR on
3741           which methods are invoked by the Timer Queue when timeouts and
3742           cancellations occur.
3744           No changes occured to the algorithms of the different
3745           implementations of the Timer Queues (Timer List and Timer
3746           Heap). Timer Queues, Timer List, and Timer Heap were all renamed
3747           as <class>_T. However, typedef were added such that there is now
3748           an ACE_Timer_Queue, ACE_Timer_Heap, and ACE_Timer_List, each
3749           being an instantiation of the respective template classes. The
3750           instantiation is done with ACE_Event_Handler as the type of data
3751           to be stored in Timer Queue and
3752           ACE_Event_Handler_Handle_Timeout_Upcall as the FUNCTOR that does
3753           the appropriate upcall to ACE_Event_Handler.
3755           Due to these typedefs, 99.9% of existing code should not
3756           break. However, the following two will cause problems:
3758           (a) Forward declarations of Timer_Queue will not work! This is
3759           because Timer_Queue is now a typedef and not a class.
3761           (b) #include "ace/Timer_Queue.h" will not be enough to get the
3762           ACE_Timer_Queue typedef. The new typedefs are in a new file
3763           called Timers.h. This file also has typedefs for ACE_Timer_Heap
3764           and ACE_Timer_List.
3766           Currently Proactor is the only class that uses a different
3767           instantiation of the Timer Queue class. Proactor's Timer Queue
3768           class is instantiated with ACE_Handler as the type of data to be
3769           stored in Timer Queue and ACE_Proactor_Handle_Timeout_Upcall as
3770           the FUNCTOR that does the appropriate posting to the Proactor's
3771           completion port.
3773           The Upcall Strategy is not needed any more cause it is replaced
3774           by the FUNCTORs. Thus this is removed.
3775         
3776           Small modifications were made to the following files
3777           because of the changes to Timer_Queue.
3779           - examples/Reactor/Misc/test_timer_queue.cpp
3780           - examples/Reactor/Proactor/test_timeout.cpp
3781           - tests/Timer_Queue_Test.cpp
3782           - ace/Makefile (both UNIX and Win32)
3783           - ace/Connector.h
3784           - ace/Reactor.h
3785           - ace/ReactorEx.h
3786           - ace/Proactor.h
3788         * ace/Proactor: Proactor now uses the new timer queues. Proactor's
3789           Timer Queue class is instantiated with ACE_Handler as the type
3790           of data to be stored in Timer Queue and
3791           ACE_Proactor_Handle_Timeout_Upcall as the FUNCTOR that does the
3792           appropriate posting to the Proactor's completion port. This will
3793           help reduce the overhead of creating new act for each
3794           timer. This also enables the cancellation of entire
3795           ACE_Handlers.
3797         * examples/Reactor/Misc: Added Win32 makefiles.
3799         * ace/Shared_Memory_MM.i: Fixed typo.
3801         * ace/SOCK_Connector.cpp: Fixed typo.
3803 Thu Apr 24 13:56:28 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
3805         * ace/SOCK_Dgram.cpp: Added support for FreeBSD (i.e., BSD 4.4)
3806           features for passing file descriptors between processes.  Thanks
3807           to Nanbor Wang <nw1@cs.wustl.edu> for reporting this.
3809         * ace/LSOCK_Stream.cpp: Added support for FreeBSD (i.e., BSD 4.4)
3810           features for passing file descriptors between processes.  Thanks
3811           to Nanbor Wang <nw1@cs.wustl.edu> for reporting this.
3813         * ace/LSOCK.cpp: Added support for FreeBSD (i.e., BSD 4.4)
3814           features for passing file descriptors between processes.  Thanks
3815           to Nanbor Wang <nw1@cs.wustl.edu> for reporting this.
3817         * ace/SOCK_Connector.cpp (complete): There's a bug in WinNT that
3818           causes non-blocking connects to fail.  The workaround is to
3819           sleep for 1 millisecond.  Thanks to Steve Huston
3820           <shuston@riverace.com> for reporting this.
3822         * ace/Connector.cpp (handle_output): There's a bug in WinNT that
3823           causes non-blocking connects to fail.  The workaround is to
3824           sleep for 1 millisecond.  Thanks to Steve Huston
3825           <shuston@riverace.com> for reporting this.
3827         * tests/Conn_Test.cpp: Changed from operator != to operator == to
3828           be consistent with what is required by the ACE_Hash_Map_Manager.
3830         * ace/Hash_Map_Manager: Factored out the equality comparison into
3831           an equal() method in order to facilitate template
3832           specialization.  In addition, rather than using the != operator
3833           we now default to using the operator== operator and negating the
3834           result.  This is consistent with the behavior of the
3835           ACE_Map_Manager.
3837         * ace/Map_Manager: Factored out the equality comparison into an
3838           equal() method in order to facilitate template specialization.
3840         * ace/OS.i: Added a new #ifdef called ACE_LACKS_PTHREAD_CANCEL.
3841           I'm not sure which platforms should set this, but it fixes
3842           a bug with ACE_OS::thr_cancel().  Thanks to Eric Dean
3843           Russell <edrusse@somnet.sandia.gov> for reporting this.
3845         * tests/Process_Strategy_Test.cpp (handle_input): We were
3846           comparing EOF to a char, which gets complaints on platforms
3847           where char is unsigned by default.  I added a cast of EOF to
3848           char to fix this.  Thanks to Amos Shapira <amos@dsi.co.il> for
3849           reporting this.
3851         * apps/JAWS/server/HTTP_Helpers.cpp (instance): Changed the
3852           return type from const char * to const char **.  Thanks to
3853           Amos Shapira <amos@dsi.co.il> for reporting this.
3855         * ace/OS.i (getpwnam_r): Added a missing #else.  Thanks to
3856           Amos Shapira <amos@dsi.co.il> for reporting this.
3858         * ace/Timer_Heap: Made many minor enhancements to ACE_Timer_Heap
3859           in an effort to figure out why we're getting memory leaks.
3861 Thu Apr 24 09:33:53 1997  David L. Levine  <levine@cs.wustl.edu>
3863         * Makefile: modified the TIMESTAMP macro to update the third
3864           component, if there is one, of the version number in the VERSION
3865           file.  This assumes that alpha/beta releases are numbered with
3866           three components, and that final releases are not.  So, if the
3867           version number is, e.g., 4.2, it will not be modified because it
3868           is assumed to be for a final release.  Manual switching between
3869           alpha/beta and final release "modes" is therefore still required.
3871         * ace/Timer_Heap.cpp (copy): added cast of max_size_ to int to avoid
3872           signed/unsigned comparison.
3874         * ace/config-sunos5.4-g++.h: removed
3875           ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES because it caused compile
3876           warnings about conversion from `(int)' to `(...)' at Signal.i:113.
3877           (And the other sunos5.4 config files don't have it.)
3878           Thanks to Joey Zhu <joey.zhu@wcom.com> for reporting this.
3880         * tests/Timer_Queue_Test.cpp (main): added delete of timer_ids array
3881           to avoid memory leak.
3883 Wed Apr 23 22:56:57 1997  Sumedh Mungee <sumedh@cs.wustl.edu>
3885         * apps/JAWS/client/*:  Fixed warnings due to size_t
3886         * apps/JAWS/client/Blob_Handler: Fixed error by passing
3887           pointer to base class ACE_Blob_Handler instead
3888           of pointing to ACE_Blob_Reader, in call to connect
3890 Wed Apr 23 20:57:35 1997  James C Hu  <jxh@polka.cs.wustl.edu>
3892         * ace/OS.i and ace/OS.h: added methods for getpwnam and
3893           getpwnam_r, with hooks for NT.
3895         * ace/config-irix6.2.*: added ACE_LACKS_PWD_REENTRANT_FUNCTIONS.
3896         
3897 Wed Apr 23 14:27:48 1997  David L. Levine  <levine@cs.wustl.edu>
3899         * ace/Timer_Queue.cpp (ACE_Timer_Queue ctor): reordered initializers
3900           to match declaration order.
3902         * tests/Process_Strategy_Test.cpp: added ACE_Singleton template
3903           specialization.  In function client (), null terminated "buf"
3904           before call to ACE_OS::strrchr () to avoid uninitialized memory
3905           read.  Also, fixed typo in test name (argument to ACE_START_TEST).
3907         * examples/Service_Configurator/Misc/Timer_Service.cpp (init): changed
3908           type of loop index to int to avoid signed/unsigned comparison, and
3909           initialized "interval" so that it has a value even if one isn't
3910           specified on the command line.
3912 Wed Apr 23 10:52:45 1997  Chris Cleeland  <cleeland@cs.wustl.edu>
3914         * ace/OS.cpp (thr_create): Removed errant preprocessor conditional
3915           for determining the scheduling priority.  Thanks to Thilo Kielmann
3916           <kielmann@informatik.uni-siegen.de> for reporting this.
3918 Wed Apr 23 09:06:52 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
3920         * tests/Process_Strategy_Test.cpp: Finished updating this program
3921           so that it is an automated test.
3923         * ace/Acceptor.h: Moved get_handle() into the public portion of
3924           the Acceptor.
3926         * include/makeinclude/platform_irix6.2_sgic++.GNU (SOBUILD): There
3927           was an extra @ in $@@.  Thanks to Amos Shapira <amos@dsi.co.il>
3928           for reporting this.
3930         * apps/JAWS/client/Blob[_Handler].cpp: Added casts for free ((void
3931           *) filename_);.  Thanks to Amos Shapira <amos@dsi.co.il> for
3932           reporting this.
3934         * apps/JAWS/server/HTTP_Helpers.h (class HTTP_Status_Code):
3935           Removed an extraneous const * from the definition of instance().
3936           Thanks to Amos Shapira <amos@dsi.co.il> for reporting this.
3938 Wed Apr 23 03:15:11 1997  James C Hu  <jxh@polka.cs.wustl.edu>
3940         * apps/JAWS/server/README: Updated to add some clarity and more
3941           useful information.
3943 Tue Apr 22 20:17:00 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
3945         * ace/Synch.cpp: Added a new method called open() to ACE_File_Lock
3946           so that we don't have to initialize it solely in the
3947           constructor.
3949         * tests/Process_Strategy_Test.cpp: Added new test code that
3950           exercises the ACE_Process_Strategy, ACE_Thread_Strategy, and
3951           ACE_Reactive_Strategy classes.
3953         * ace/Strategies_T: Added a new class called
3954           ACE_Reactive_Strategy, which inherits from
3955           ACE_Concurrency_Strategy and registers new Svc_Handlers with the
3956           Reactor.
3958         * ace/Strategies_T.cpp (ACE_Thread_Strategy): Added a check for
3959           failed open() methods and call ACE_ERROR.
3961         * tests/Map_Manager_Test.cpp: Added a template specialization for
3962           the ACE_Hash_Map_Manager::hash() method, which is enabled if the
3963           compiler supports template specializations.
3965         * ace/Hash_Map_Manager.h (pool): Moved the ext_id.hash() call into
3966           a separate method so that we can perform template specialization
3967           of it more easily.
3969         * ace/README: Added a new #define called
3970           ACE_HAS_TEMPLATE_SPECIALIZATION so that we can work around funky
3971           compilers that don't support this advanced template feature.
3973         * ace: Added Nanbor Wang's port to FreeBSD.  The port is done
3974           at FreeBSD 3.0-current as of 2/9/97, which is the
3975           latest stable system before Lite2 merge.  Since the merge is
3976           current under testing and changes are introduced in a daily
3977           basis, I don't recommend using -current after the date.  You
3978           can specified the date in your "supfile", run CVSup to get the entire 
3979           source tree and do a 'make world' to update (or reverse) your
3980           system.
3982           Pthread library is provided by John Birrell.  There is a
3983           bug fix at mid April so you may want to CVSup the latest libc_r
3984           library and re-make the pthreaded library.
3986           A shared library must be name as lib<name>.so.<version
3987           number> (e.g. libACE.4.1.0).  I would recommend adding a
3988           post-compile hook in the Makefile so we FreeBSDers can
3989           rename the shared library to it's proper name with correct
3990           major and minor version number attached.  (which is a trick
3991           BSD library makefiles use.) 
3993         * examples/OS/Process/process.cpp (main): Replaced the use of
3994           "/bin/cat" with "cat" since we are now using execvp().  Thanks
3995           to Nanbor Wang <nw1@cs.wustl.edu> for reporting this.
3997         * ace/Process.cpp (start): Changed the use of execv() to execvp()
3998           in order to avoid having to pass in the full pathname.
4000         * ace/OS.i (sigwait): Added an #ifdef for FreeBSD so that we
4001           return ACE_NOTSUP_RETURN(-1) for ACE_OS::sigwait().  Thanks to
4002           Nanbor Wang <nw1@cs.wustl.edu> for reporting this.
4004 Tue Apr 22 17:46:30 1997    <harrison@samba.cs.wustl.edu>
4006         * Process.cpp (start): We must pass in 0 instead of "" to
4007           CreateProcess for the current working directory.
4009 Tue Apr 22 01:38:14 1997    <irfan@TWOSTEP>
4011         * ace/Timer_Queue: Added ACE_Upcall_Strategy as a parameter to the
4012           constructor.  <expire> will call <upcall_strategy->upcall> if
4013           <upcall_strategy> is not 0. Else it will call <handle_timeout>
4014           on the <Event_Handler>. Thus ACE_Upcall_Strategy becomes a
4015           vehicle for extending the behavior of ACE_Timer_Queue wrt the
4016           upcall (callback) *without subclassing*.  Hence, it's an example
4017           of the Bridge/Strategy patterns.
4019           This also affected ACE_Timer_List and ACE_Timer_Heap
4021         * ace/Strategies: Added ACE_Upcall_Strategy.
4023         * ace/Proactor: Added timing support to the <handle_event> calls.
4025         * ace/Asynch_IO: ACE_Handler now supports handle_timeout.
4027         * ace/Proactor: Added timer support for the new Proactor.  This
4028           new scheme allows any of the threads in the "thread pool"
4029           waiting on the completion port of the Proactor to execute the
4030           callback routine of the handler.
4032           The implementation included adding ACE_Proactor_Timer_Handler
4033           class that has a thread that will wait on the earliest time in a
4034           timer queue and an event. When a timer expires, the thread will
4035           post a completion event on the port and go back to waiting on
4036           the timer queue and event. If the event is signaled, the thread
4037           will refresh the time it is currently waiting on (in case the
4038           earliest time has changed).
4040           The ACE_Proactor::Asynch_Timer class is posted to the completion
4041           port when a timer expires. When the <complete> method of this
4042           object is called, the <handler>'s handle_timeout method will be
4043           called.
4044         
4045         * examples/Reactor/Proactor/test_timeout: This example illustrates
4046           the new timer features in the Proactor
4048         * examples/Reactor/Proactor/test_proactor.{mdp,mak}: Added new
4049           example.
4051 Mon Apr 21 18:14:32 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
4053         * ace/config-win32-common.h: Added checks around _AFXDLL before
4054           defining it. Thanks to Bruce Meyer <bmeyer1@gte.net> for
4055           pointing this out.
4057 Mon Apr 21 11:31:16 1997  Chris Cleeland  <cleeland@cs.wustl.edu>
4059         * examples/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.cpp:
4060         Removed some unnecessary explicit template instantiations.
4062         * examples/Threads/barrier1.cpp (main): Explicitly converted
4063         n_threads to int.
4065 Sun Apr 20 23:08:37 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
4067         * ace/{Local,Remote}_Tokens.h: Added a private declarations of the
4068           copy constructor and assignment operator for classes that
4069           inherit from ACE_TSS. This is necessary since the compiler will
4070           auto generate these two operations that will end up using the
4071           non-existent copy constructor and assignment operator from the
4072           TSS class and cause linker errors.
4074 Sun Apr 20 20:47:34 1997  Sumedh Mungee       <sumedh@cs.wustl.edu>
4076         * apps/JAWS/client: Reworked the ACE_Blob* classes to work
4077           with the new Connector behavior. Added README for this 
4078           directory. Added comments.
4080         * apps/JAWS/stress-testing: Added README file
4081         
4082 Sun Apr 20 13:11:25 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
4084         * apps/Makefile: By default, we now compile JAWS along with the
4085           rest of ACE.  I've also added some README files that explain
4086           what JAWS is all about.
4088         * examples/Service_Configurator/Misc/Timer_Service: Improved the
4089           Timer_Service test so that it makes more sense and is better
4090           documented.
4092 Sat Apr 19 11:56:35 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
4094         * include/makeinclude: Removed the platform_irix6.2_sgiCC.GNU
4095           from the release.  Thanks to Torbjorn Lindgren
4096           <tl@funcom.no> for these fixes.
4098         * include/makeinclude/platform_irix6.2_sgic++.GNU: Updated the SGI
4099           C++ platform config file.  Thanks to Torbjorn Lindgren
4100           <tl@funcom.no> for these fixes.
4102         * ace/Log_Msg.cpp (log_hexdump): The char * arguments should be
4103           const char *'s.  Thanks to Matthias Kerkhoff
4104           <make@cs.tu-berlin.de> for reporting this.
4106 Sat Apr 19 18:52:44 1997  David L. Levine  <levine@cs.wustl.edu>
4108         * (format_hexdump): changed type of first arg to const char *
4109           for compatibility with Log_Msg::log_hexdump ().
4111 Thu Apr 17 08:25:06 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
4113         * ace/Memory_Pool.h: Fixed a couple of typos in Memory_Pool
4114           classes.  Thanks to Neil B. Cohen <nbc@metsci.com> for reporting
4115           this.
4117         * netsvcs/lib/Name_Handler.h: Arrgh, there was still one more
4118           missing #include that I forgot to move into the *.h file.
4119           Thanks to David Levine for noticing this.
4121         * ace/Synch.cpp (wait): There was a bug in
4122           ACE_Condition::wait(MUTEX& mutex, const ACE_Time_Value
4123           *abstime.)  Basically when abstime is zero, it ignores the
4124           parameter "mutex" that has been passed to it and instead goes on
4125           to call "ACE_Condition<MUTEX>::wait()" which uses "this->mutex_"
4126           as the mutex to be released and not the mutex that the caller
4127           has given.  The fix is to change the call "this->wait()" in the
4128           if-clause to:  
4130           return ACE_OS::cond_wait (&this->cond_, &mutex_.lock_);
4132           Thanks to Ashish Singhai <Ashish.Singhai@ACM.ORG> for reporting
4133           this.
4135 Thu Apr 17 16:33:21 1997  David L. Levine  <levine@cs.wustl.edu>
4137         * ace/Memory_Pool.cpp: fixed typos in ACE_MMAP_Memory_Pool_Options
4138           constructor declaration and initializer list.  In init_acquire,
4139           added cast of minimum_bytes_ to size_t to avoid signed/unsigned
4140           comparison.
4142         * include/makeinclude/{platform*,wrapper_macros}.GNU:
4143           moved -g out of wrapper_macros.GNU and into each platform
4144           file so that -gstabs can be used on SCO.  Thanks to
4145           Ganesh Pai <gpai@voicetek.com> for reporting that problem.
4147           (The real change was getting rid of the CFLAGS += DCFLAGS
4148           default.  We could have left DCFLAGS=-g in wrapper_macros.GNU
4149           and overridden for SCO.  But the way I changed things, the
4150           C/CFLAGS pieces are together in each platform file, so they're
4151           easier to find.)
4153 Wed Apr 16 17:05:55 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
4155         * ace/Memory_Pool.cpp (acquire): Added code to enable a minimum
4156           bytes field with the Shared_Memory_Pool.  Thanks to Fred LaBar
4157           <flabar@fallschurch.esys.com> for these enhancements.
4159         * tests/Process_Strategy_Test.cpp: Only compile this test if
4160           ACE_LACKS_EXEC is *not* defined since ACE_Process_Strategy
4161           requires fork().  Thanks to Irfan for pointing this out!
4163         * netsvcs/lib: Fixed a couple o' typos that had escaped detection
4164           last night.  Thanks to David Levine for reporting this.
4166         * ace/Synch[_T].h: removed the use of {} rather than ; for
4167           the private copy constructors and assignment operators.
4168           Hopefully this won't break code on older C++ compilers.  Thanks
4169           to Berni Merkle <merkle@io.freinet.de> for suggesting this.
4171         * Added a whole slew of minor fixes for unused variables in
4172           the tests and examples.  Thanks to Torbjorn Lindgren
4173           <tl@funcom.no> for reporing these.
4175         * ace/Handle_Set.cpp (ACE_Handle_Set_Iterator): The order of 
4176           the clause
4178           this->handles_.mask_.fds_bits[this->index_] == 0
4179           && this->num_ < ACE_Handle_Set::MAXSIZE
4181           was backwards.  It should be:
4183           this->index_ < ACE_Handle_Set::NUM_WORDS
4184           && this->handles_.mask_.fds_bits[this->index_] == 0
4186           Thanks to Michael Newton <michaeln@in.ot.com.au> for
4187           reporting this.
4189 Wed Apr 16 21:34:53 1997  David L. Levine  <levine@cs.wustl.edu>
4191         * tests/Process_Strategy_Test.cpp: added template specializations.
4193 Wed Apr 16 15:46:58 1997    <irfan@TWOSTEP>
4195         * tests/Process_Strategy_Test: Added test to batch files and
4196           MSVC++ Makefiles.
4198         * tests/Process_Strategy_Test.cpp (open): Added UNICODE support.
4200         * ace/OS.h: Added SIGCHLD to Win32 section.
4202         * ace/config-win32-common.h: UNICODE should not be automatically
4203           defined if ACE_HAS_UNICODE is defined. ACE_HAS_UNICODE signifies
4204           that the OS has UNICODE support. It does not mean that your code
4205           must be UNICODE. UNICODE must be defined at the project level.
4207 Wed Apr 16 16:55:47 1997  David L. Levine  <levine@cs.wustl.edu>
4209         * ace/SString.{h,cpp}: Modified CString to not allocate 1 byte for
4210           a 0 length string.  Instead, set the internal representation to
4211           the address of static class character null_string_.
4213 Wed Apr 16 11:47:35 1997  Chris Cleeland  <cleeland@cs.wustl.edu>
4215         * ace/Map_Manager.cpp (free_search_structure): Added the loop
4216           variable back in that must have been inadvertently deleted in the
4217           previous entry.
4219 Wed Apr 16 09:35:39 1997  David L. Levine  <levine@cs.wustl.edu>
4221         * ace/Map_Manager.cpp (free_search_structure): changed type of
4222           loop index to size_t to avoid signed/unsigned mismatch.
4224 Wed Apr 16 04:07:50 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
4226         * ace/Strategies_T: Widened the constructor interface for
4227           ACE_Process_Strategy based on the feedback I got from
4228           implementing the Process_Strategy_Test.cpp program.
4230         * tests/Process_Strategy_Test.cpp: Added an interesting new test
4231           that illustrates the use of the ACE_Process_Strategy and the
4232           ACE_File_Lock.  To exercise this program, you can telnet to it
4233           and type "read" and "inc" to query and change the count of
4234           the numbers in the file, respectively.
4236         * ace/Connector.cpp (create_AST):  I fixed a couple of things
4237           in Connector.cpp: 
4239           - In create_AST, it needs to save and restore errno, else it
4240             gets wiped on Win32 and other platforms.
4242           - On Win32 when a non-blocking connect completes and handle_output is
4243             called, it tries to get the peer address.  If done too quickly, it
4244             fails.  I put in a Sleep(0) call.  I think this is not a great
4245             solution, but I don't have a better one yet.
4246             
4247           Thanks to Steve Huston <shuston@riverace.com> for fixing
4248           these bugs. 
4250 Tue Apr 15 17:09:33 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
4252         * ace/SOCK_Stream.cpp (close): Removed the call to close_writer()
4253           on UNIX since that doesn't do the correct thing in many
4254           cases since it causes a protocol transmission which isn't
4255           what we want if we're using fork().
4257         * ace/Strategies_T.cpp (activate_svc_handler): Added a call to
4258           svc_handler->destroy() in the parent since we don't need it and
4259           we're leaking descriptors and memory otherwise...  Thanks to
4260           Kevin Boyle <kboyle@sanwafp.com> for reporting this.
4262         * ace/OS.i (thr_sigsetmask): Replaced the use of
4263           PTHREADS_1003_DOT_1C with ACE_HAS_PTHREAD_SIGMASK.  Thanks to
4264           Arturo Montes <mitosys@colomsat.net.co> for suggesting this.
4266         * ace: Changed all uses of ACE_HAS_PTHREADS_XAVIER to
4267           ACE_HAS_PTHREAD_SIGMASK, which is more descriptive.  Thanks to
4268           Arturo Montes <mitosys@colomsat.net.co> for suggesting this.
4270         * ace/config-aix-4.2.x.h: Added #define ACE_LACKS_RWLOCK_T to make
4271           things compile with AIX 4.2.  Thanks to Jeremy Buch
4272           <davinci@nortel.ca> for reporting this.
4274         * ace/XtReactor.cpp (register_handler_i): Added "[]" to delete
4275           this->ids_ since it is an array.  Thanks to Jean-Marc Strauss
4276           <strauss@club-internet.fr> for reporting this.
4278         * netsvcs/lib: Moved all the class definitions into the *.h files
4279           to avoid complaints from the IBM C++ compiler.
4281         * ace/OS.h: Added a #define for WNOHANG since this is missing on
4282           NT.  Thanks to Brian Mendel <bmendel@mdc.com> for reporting
4283           this.
4285         * examples/Connection/non_blocking/test_sock_connector.cpp: Added
4286           a typedef for ACE_RW_Mutex so that the code compiles on non-MT
4287           platforms.  Thanks to Ganesh Pai <gpai@voicetek.com> for
4288           reporting this.
4290         * examples/Connection/non_blocking/test_tli_connector.cpp: Added a
4291           typedef for ACE_RW_Mutex so that the code compiles on non-MT
4292           platforms.  Thanks to Ganesh Pai <gpai@voicetek.com> for
4293           reporting this.
4295         * examples/Connection/misc/test_upipe.cpp: Added a typedef for
4296           ACE_RW_Mutex so that the code compiles on non-MT platforms.
4297           Thanks to Ganesh Pai <gpai@voicetek.com> for reporting this.
4299         * performance-tests/Synch-Benchmarks/Options.cpp: Added a #ifdef
4300           for ACE_Thread_Mutex so that the code compiles on non-MT
4301           platforms.  Thanks to Ganesh Pai <gpai@voicetek.com> for
4302           reporting this.
4304         * examples/ASX/Event_Server/Transceiver/transceiver.cpp: Added a
4305           typedef for ACE_RW_Mutex so that the code compiles on non-MT
4306           platforms.  Thanks to Ganesh Pai <gpai@voicetek.com> for
4307           reporting this.
4309         * examples/ASX/UPIPE_Event_Server/Consumer_Router.cpp: Added a
4310           typedef for ACE_RW_Mutex so that the code compiles on non-MT
4311           platforms.  Thanks to Ganesh Pai <gpai@voicetek.com> for
4312           reporting this.
4314         * examples/ASX/Event_Server/Event_Server/Options.cpp
4315           (print_results): Although rusage struct is defined on SCO, there
4316           is no getrusage(), rusage is used only by wait()
4317           etc. internally.  Therefore, we had to move some #ifdefs around.
4318           Thanks to Ganesh Pai <gpai@voicetek.com> for reporting this.
4320         * apps/Gateway/Gateway/Proxy_Handler_Connector.cpp: Added a
4321           typedef for ACE_RW_Mutex so that the code compiles on non-MT
4322           platforms.  Thanks to Ganesh Pai <gpai@voicetek.com> for
4323           reporting this.
4325         * tests/Conn_Test.cpp: Added a typedef for ACE_RW_Mutex so that
4326           the code compiles on non-MT platforms.  Thanks to Ganesh Pai
4327           <gpai@voicetek.com> for reporting this.
4329         * tests/SPIPE_Test.cpp (main): Removed the VXWORKS arm of the
4330           #ifdef, which is not correct since this stuff only works if
4331           we're working with a version of VxWorks that has STREAM pipes.
4333         * include/makeinclude/platform_sco5.0.0-nothread.GNU: Changed
4334         
4335           LIBS            = -lsocket -lnsl -ldl
4337           to
4339           LIBS            += -lsocket -lnsl -ldl
4341           Thanks to Ganesh Pai <gpai@voicetek.com> for reporting this.
4343         * netsvcs/lib/Client_Logging_Handler.cpp: Added a typedef for
4344           ACE_RW_Mutex so that the code compiles on non-MT platforms.
4345           Thanks to Ganesh Pai <gpai@voicetek.com> for reporting this.
4347         * netsvcs/lib/TS_Clerk_Handler.cpp: Added a typedef for
4348           ACE_RW_Mutex so that the code compiles on non-MT platforms.
4349           Thanks to Ganesh Pai <gpai@voicetek.com> for reporting this.
4351         * examples/ASX/Event_Server/Event_Server/Peer_Router.cpp: Added a
4352           typedef for ACE_RW_Mutex so that the code compiles on non-MT
4353           platforms.  Thanks to Ganesh Pai <gpai@voicetek.com> for
4354           reporting this.
4356 Tue Apr 15 23:16:43 1997    <harrison@samba.cs.wustl.edu>
4358         * ace/[Hash_]Map_Manager.cpp: The [Hash_]Map_Manager now
4359           explicitly calls the destructors of Map_Entry objects before
4360           freeing up the space.  Not sure why we were not doing this
4361           before...
4363 Tue Apr 15 17:09:33 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
4365         * examples/Logger: Added MSVC++ makefile to Acceptor-server
4366           and client.
4368 Tue Apr 15 21:51:45 1997  James C Hu  <jxh@polka.cs.wustl.edu>
4370         * apps/JAWS/server/IO.cpp: Added a template instance for
4371           ACE_Singleton so it would link using GCC.  Removed GCC
4372           warnings.
4374         * apps/JAWS/server/HTTP_Server.cpp: Added template instances for
4375           LOCK_SOCK_Acceptor, ACE_Task, ACE_Thru_Task, ACE_Message_Queue,
4376           ACE_Module so it would link using GCC.  Removed GCC warnings.
4378         * apps/JAWS/server/HTTP_Server_T.cpp: Removed template instance of
4379           LOCK_SOCK_Acceptor, since it was not really being compiled.
4381 Tue Apr 15 21:51:45 1997  James C Hu  <jxh@polka.cs.wustl.edu>
4383         * apps/JAWS/server/IO.cpp: Added a template instance for
4384           ACE_Singleton so it would link using GCC.  Removed GCC
4385           warnings.
4387         * apps/JAWS/server/HTTP_Server.cpp: Added template instances for
4388           LOCK_SOCK_Acceptor, ACE_Task, ACE_Thru_Task,
4389           ACE_Message_Queue, ACE_Module so it would link using GCC.
4390           Removed GCC warnings.  
4392         * apps/JAWS/server/HTTP_Server_T.cpp: Removed template
4393           instance of LOCK_SOCK_Acceptor, since it was not really
4394           being compiled. 
4396         * apps/JAWS/server/HTTP_Handler.cpp: Removed GCC warnings.
4398 Tue Apr 15 13:01:13 1997  David L. Levine  <levine@cs.wustl.edu>
4400         * ace/Token_Request_Reply.cpp (ctor): added initialization of
4401           transfer_.data_ to avoid unitialized memory read.
4403         * tests/test_config.h: removed "static" qualifier from
4404           randomize () to avoid warning from g++ when it's not called
4405           in a test.  
4407         * examples/IPC_SAP/SPIPE_SAP/server.cpp (main): moved
4408           declaration of local variable "handle" up before its first
4409           use. 
4411 Tue Apr 15 17:09:33 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
4413         * examples/Connection/blocking/Makefile: Removed the Makefile
4414           for this test. This example is only suppose to work on WIN32
4415           and therefore the Makefile is not necessary. I have replace
4416           this file with a MSVC++ make file.
4418 Mon Apr 14 23:08:27 1997    <irfan@TWOSTEP>
4420         * INSTALL: Updated install files for Win32.
4422         * ace/SPIPE_Stream: Changed the use of ACE::send_n to ACE::write_n
4423           and ACE::recv_n to ACE::read_n.
4425         * ace/OS.h (WNOHANG): Added WNOHANG to OS.h for Win32.
4427         * ace/OS.i (getpgid): Fixed extra return.
4429         * examples/Connection/blocking/SPIPE-acceptor: Updated the code to
4430           use the new Proactor and the new asynchronous IO.     
4432 Mon Apr 14 21:32:24 1997  David L. Levine  <levine@cs.wustl.edu>
4434         * examples/IPC_SAP/SOCK_SAP/FD-unserver.cpp (handle_client):
4435           ACE_OS::sprintf instead of sprintf.
4437         * examples/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.cpp
4438           (svc): declare "t" as time_t instead of long.
4440           Thanks to Thilo Kielmann <kielmann@informatik.uni-siegen.de> for
4441           reporting both of these.
4443 Mon Apr 14 00:02:39 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
4445         * ace/OS.i (getpgid): Removed the extraneous return in front of
4446           ACE_NOTSUP_RETURN.  Thanks to Mike Bernat <sagmb@sagus.com> for 
4447           reporting this.
4449         * ace/Process.cpp: Replaced the use of ACE_OS::fork(void) with
4450           ACE_OS::fork(const char *) so that we can pass in the name of
4451           the process we're exec'ing.
4453         * examples/Threads/process_manager.cpp: Added a test program that
4454           exercises the features of the new ACE_Process_Manager.
4456         * ace/Process_Manager: Finished a rudimentary implementation of
4457           ACE_Process_Manager.  There's still plenty of work to be done on
4458           this, however...
4460         * ace/Thread_Manager.cpp (dump): Added dump() methods for
4461           ACE_Thread_Descriptor and ACE_Thread_Manager.
4463 Sun Apr 13 11:40:26 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
4465         * ace/OS: Added a getpgid() call to ACE_OS.
4467         * ace/Thread_Manager: Changed the 'int n' of spawn_n() to size_t n
4468           since this is more appropriate because we can't spawn a negative
4469           number of threads...
4471         * ace/Thread_Manager.cpp (close): Make sure to lock the calls to
4472           close() in case things get amiss.
4474         * ace/Process.cpp (start): Updated ACE_Process::start() to that it
4475           doesn't try to exec() a program if argv == 0.  This allows us to
4476           use ACE_Process to fork() a process without exec'ing.
4478         * tests/Timer_Queue_Test.cpp (randomize_array): Added a new
4479           "randomization" test that determines the performance of randomly
4480           canceling items in the array.  Thanks to Darrell Brunsch
4481           <brunsch@cs.wustl.edu> for this enhancement.
4483         * tests/test_config.h: Moved the randomize() function from
4484           Naming_Test.cpp to test_config.h so that we can use it in other
4485           tests (e.g., the new Timer_Queue_Test.cpp that Darrell is
4486           working on).
4488         * ace/OS: Added a new #define called ACE_HAS_NONCONST_MSGSND which
4489           can be used for platforms (e.g., SCO) that don't have a const
4490           parameter for msgsend().  Thanks to Arturo Montes
4491           <mitosys@colomsat.net.co> for reporting this.
4493         * ace/config-sco-5.0.0-mit-pthread.h: Added some fixes to make
4494           this work on SCO.  Thanks to Arturo Montes
4495           <mitosys@colomsat.net.co> for reporting this.
4497         * ace/OS.i (cond_timedwait): There is a *small* chance for a
4498           context switch before ACE_OS::cond_timedwait() is reached.  In
4499           this case, the current time *may* advance by some milliseconds.
4500           The code in ACE_OS::cond_timedwait() then converts the given
4501           absolute time to a relative time.  In the described situation
4502           this will be a very, very long t ime (0xfffffffn).  Therefore, I
4503           added a check to avoid the "negative timespan" case.  Thanks to
4504           Matthias Kerkhoff <make@cs.tu-berlin.de> for suggesting this.
4506         * ace/Set: Moved all the size() methods out of the *.i file and
4507           into the *.cpp file to avoid problems with quirky compilers
4508           (e.g., SGI) that can't handle this.  Thanks to Torbjorn Lindgren
4509           <tl@funcom.no> for pointing this out.
4511         * examples/Threads/process_semaphore.cpp (main): Removed a stray
4512           ^M that was causing the SGI C++ compiler some grief.  Thanks to
4513           Torbjorn Lindgren <tl@funcom.no> for pointing this out.
4515         * ace/OS.i (gettimeofday): Rearranged the code a bit to return
4516           errors correctly if they occur (which should be *very*
4517           unlikely).  Thanks to Torbjorn Lindgren <tl@funcom.no> for
4518           pointing this out.
4520         * netsvcs/lib/Server_Logging_Handler.cpp: Replaced the use of
4521           ACE_TLI* with LOGGING_PEER*.  Thanks to Tom Wright
4522           <twright@gem-net.demon.co.uk> for reporting this.
4524         * ace/Connector.cpp: Made sure to initialize all of the instance
4525           variables for the ACE_Strategy_Connector and ACE_Connector.
4526           Thanks to David Levine for pointing this out.
4528         * ace/Synch.h: Changed protected: to private: so that we can
4529           ensure that we never copy classes like ACE_File_Lock, etc.
4530           Thanks to Berni Merkle <merkle@io.freinet.de> for reporting
4531           this.
4533         * examples/Shared_Malloc/test_malloc.cpp (malloc_recurse): Added
4534           the print_stats() call back into the test since Sandro's fixes
4535           should now support this.
4537         * ace/Malloc[_T]: Added patches to enable ACE_Allocator's to print
4538           malloc statistics.  Thanks to Sandro Doro
4539           <alex@aureus.sublink.org> for these fixes.
4541 Sat Apr 12 20:42:11 1997  David L. Levine  <levine@cs.wustl.edu>
4543         * tests/Priority_Task_Test.cpp (open): only use THR_SCHED_FIFO
4544           if it is defined.  (It isn't on Solaris without PTHREADS.)
4546         * examples/ASX/Event_Server/Event_Server/Peer_Router.cpp
4547           (make_svc_handler): added return statement.
4549 Sat Apr 12 11:53:49 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
4551         * examples/ASX/Event_Server/Transceiver/transceiver.cpp (main):
4552           The first argument to connect () is now a SVC_HANDLER *&.
4553           Therefore, we can no longer allows us to pass the address of a
4554           SVC_HANDLER on the stack (or in the data segment).
4555           Fortunately, the fix is easy, as shown below:
4557           Event_Transceiver transceiver, *tp = &transceiver;
4559           connector.connect (tp, ACE_INET_Addr (port_number, host_name));
4561           Thanks to David Levine for reporting this problem.
4563 Fri Apr 11 15:14:59 1997  David L. Levine  <levine@cs.wustl.edu>
4565         * tests/Conn_Test.cpp: moved declaration of "result" out of
4566           loop because it's used after the loop.  Thanks to
4567           Thilo Kielmann <kielmann@informatik.uni-siegen.de> for
4568           reporting this.  Also, removed a few unnecessary template
4569           specializations.
4571         * apps/Gateway/Gateway/Proxy_Handler_Connector.cpp: fixed template
4572           specializations for no-thread platforms.  Thanks to Ganesh Pai
4573           <gpai@voicetek.com> for reporting this.
4575         * performance-tests/Misc/context_switch_time.cpp (main):
4576           removed call to ACE_High_Res_Timer::supported ().
4578 Fri Apr 11 14:31:42 1997  Chris Cleeland  <cleeland@cs.wustl.edu>
4580         * tests/Conn_Test.cpp: Added several explicit template
4581           instantiations.
4583 Fri Apr 11 13:49:04 1997  David L. Levine  <levine@cs.wustl.edu>
4585         * ace/OS.h: VxWorks changes only:  added taskHookLib.h.  Thanks
4586           to Dave Mayerhoefer <mayerhoefer@svappl36.mdc.com> for reporting
4587           that.  Also rearranged the VxWorks #includes and such a bit.
4589         * ace/Log_Msg.cpp (atexit): VxWorks changes only:  added cast
4590           of spare1 to ACE_Log_Msg *.  Thanks to Dave Mayerhoefer
4591           <mayerhoefer@svappl36.mdc.com> for reporting that.  Also,
4592           in exists () and instance (), replaced double indirection
4593           of the ACE_Log_Msg instance with indirection through a pointer
4594           reference.
4596         * ace/High_Res_Timer.{h,i}: removed supported () because
4597           ACE_OS::gettimeofday () is used if a high-res timer isn't available.
4599         * ace/OS.i (thr_sigsetmask),config-sunos5.4-*.h: swapped order of
4600           #ifdefs to that ACE_LACKS_PTHREAD_THR_SIGSETMASK is checked before
4601           ACE_HAS_STHREADS.  Added that #define to all SunOS 5.4 configs.
4602           Thanks to Joey Zhu <joey.zhu@wcom.com> for reporting this.
4604         * ace/Token_Request_Reply.cpp (ctor): added a initializations to 0
4605           of requeue_position_, notify_, and arg_.  With this change, all
4606           of the ACE tests run without any Purify access anomalies!
4607           (There are still some memory leaks, though.)
4609         * include/makeinclude/rules.local.GNU: added -DMAKEDEPEND to
4610           invocation of g++dep.  This allows users to get proper
4611           dependencies if they have conditional #includes in their code.
4612           They can added #if defined (MAKEDEPEND) as necessary to make
4613           sure that all headers are seen by g++dep.
4615 Fri Apr 11 10:46:56 1997  Chris Cleeland  <cleeland@cs.wustl.edu>
4616         
4617         * config-linux*.h: Added ACE_HAS_IP_MULTICAST as the default for
4618           all Linux configurations.  If you're a 1.x user, or you didn't
4619           config that into your 2.x kernel, you'll have to remove this from
4620           your version of the file.
4622 Thu Apr 10 00:34:10 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
4624         * examples/Logger/simple-server/Logging_Acceptor.cpp
4625           (handle_input): We need to call svc_handler->close() if accept()
4626           or open() fails.  Thanks to Ganesh Pai <gpai@voicetek.com> for
4627           reporting this.
4629         * ace/Service_Config.cpp (close): Moved the call to
4630           ACE_Service_Config::close_singletons() to outside the check for
4631           ACE_Service_Config::svc_rep_ since the Singletons can be used
4632           independently of the services.  Thanks to Matthias Kerkhoff
4633           <make@cs.tu-berlin.de> for suggesting this.
4635 Wed Apr  9 21:11:38 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
4637         * apps/Gateway/Gateway/Gateway.cpp (handle_signal): Evil demons
4638           added bugs to my code that were causing segfaults when signals
4639           shutdown the gateway.  This is now fixed.
4641         * apps/Gateway/Gateway/Proxy_Handler.h: Changed ACE_Event_Channel
4642           & to ACE_Event_Channel * to keep the compiler happy.
4644         * examples/Connection/non_blocking/CPP-connector.h: Added a
4645           do-nothing default constructor to keep ACE_Connector happy.
4647         * examples/Connection/misc/test_upipe.cpp: Added a do-nothing
4648           default constructor to keep ACE_Connector happy.
4650         * examples/Connection/blocking/SPIPE-connector.h: Added a
4651           do-nothing default constructor to keep ACE_Connector happy.
4653         * apps/Gateway/Gateway/Proxy_Handler: Added a do-nothing default
4654           constructor to keep ACE_Connector happy.
4656         * netsvcs/lib: Added some default arguments to
4657           TS_Clerk_Handler.cpp and Client_Logger_Handler.cpp to keep the
4658           compiler from complaining about the new ACE_Connector features.
4659           Thanks to David Levine for reporting this.
4661         * ace/Timer_Heap.cpp (reheap_down): Fixed a *very* subtle bug in
4662           reheap_down() where parent was starting off at 0 whereas it
4663           should have been starting off at child_index / 2.
4665         * examples/Logger/simple-server/Logging_Handler: Removed the use
4666           of the operator ACE_SOCK_Stream &() and replaced it with the
4667           more intuitive peer() approach used in ACE_Svc_Handler et al.
4668           Thanks to Ganesh Pai <gpai@voicetek.com> for reporting this.
4670         * ace: Added a bunch of changes to improve ACE support on SCO 5.0.
4671           Thanks to Ganesh Pai <gpai@voicetek.com> for these fixes.
4673         * tests/Conn_Test.cpp: Completely reworked this test so that it
4674           illustrates how to use the ACE_Strategy_Connector, which is
4675           customized with a special Caching_Connect_Strategy that recycles
4676           connections.
4678         * ace/Connector: Finished implementing the new
4679           ACE_Strategy_Connector.  This is similar in design to the
4680           ACE_Strategy_Acceptor.
4682         * ace: Changed the signature of all the make_svc_handler() methods
4683           so that they return int (rather than SVC_HANDLER *) and they
4684           pass back a SVC_HANDLER * by reference.  This makes it possible
4685           to totally control the creation of svc handlers (which is useful
4686           for the new ACE_Strategy_Connector).
4688         * ace/Connector.cpp: Factored out the active_svc_handler() call
4689           from the connect_svc_handler() method into the connect() method
4690           so that it would behave correctly as a Template Method and
4691           Strategy.
4693         * ace/Connector: Removed the explicit use of the Reactor data
4694           member from the ACE_Connector since it's inherited from the
4695           ACE_Service_Object.
4697         * ace/Log_Msg.cpp: The MVS compiler doesn't like the call to
4698           atexit() in ACE_Log_Msg::instance() because atexit() requires an
4699           a function pointer of type extern "C" for its parameter.  I've
4700           fixed this via an adapter.  Thanks to Chuck Gehr
4701           <gehr@sweng.stortek.com> for reporting this.
4703         * ace/Strategies_T: Added a new ACE_Connect_Strategy that
4704           complements the ACE_Strategy_Connector in the same manner that
4705           the ACE_Accept_Strategy complements the ACE_Strategy_Acceptor.
4707         * ace/Connector.h: The destructor for ACE_Connector should have
4708           been virtual.  Now it is.
4710         * ace/Connector: Added a new factory method called
4711           make_svc_handler().  This behaves similiarly to the
4712           ACE_Acceptor::make_svc_handler().  However, for the
4713           ACE_Connector we only use this when the SVC_HANDLER * is NULL.
4715         * ace/Connector: Changed the signature for connect() to take a &
4716           to a SVC_HANDLER * in anticipation of our new
4717           ACE_Strategy_Connector.  This new connector will make it easy to
4718           implement cached connections.
4720         * ace/config-win32-common.h: Added a new #include for <mswsock.h>,
4721           which contains the declarations for TransmitFile() data
4722           structures.  They are in WINSOCK.H if you do not use
4723           ACE_HAS_WINSOCK2.  Thanks to Norbert Rapp
4724           <norbert.rapp@nexus-informatics.de> for reporting this.
4726         * ace/OS.i: Fixed a typo in the new condition variable
4727           implementation for Win32.  Thanks to Norbert Rapp
4728           <norbert.rapp@nexus-informatics.de> for reporting this.
4730 Wed Apr 09 22:06:23 1997    <harrison@samba.cs.wustl.edu>
4732         * Memory_Pool.h: Modified ACE_MMAP_Memory_Pool and
4733           ACE_MMAP_Memory_Pool_Options to include the new guess_on_fault
4734           option.  This is only for platforms that can not report which
4735           address caused a segmentation fault (via signal or exception).
4736           When guess_on_fault is set (via ACE_MMAP_Memory_Pool_Options),
4737           ACE_MMAP_Memory_Pool::handle_signal calls
4738           ACE_MMAP_Memory_Pool::remap "guessing" that the segmentation
4739           fault was caused by an access to memory not yet mapped.
4741 Wed Apr 09 16:46:16 1997  David L. Levine  <levine@cs.wustl.edu>
4743         * ace/OS.{h,i}: fixed readPPCTimeBase declaration and return
4744           value (for now: it really needs to return a 64 bit quantity).
4745           Thanks to Dave Mayerhoefer <mayerhoefer@svappl36.mdc.com> for
4746           reporting these.
4748 Wed Apr  9 03:12:24 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
4750         * ace/config-win32-common.h: Defining _WIN32_WINNT as 0x0400
4751           implies ACE_HAS_WINSOCK2.
4752         
4753         * ace/Asynch_IO: The implementation of ACE_Asynch_Transmit_File
4754           and ACE_Asynch_Accept are only supported if ACE_HAS_WINSOCK2 is
4755           defined or you are on WinNT 4.0 or higher. Therefore, added
4756           appropriate #defines.  Thanks to Matthias Kerkhoff
4757           <make@cs.tu-berlin.de> for suggesting this.
4759 Tue Apr  8 22:45:28 1997  Prashant Jain  <pjain@merengue.cs.wustl.edu>
4761         * java/src/SOCKStream.java (SOCKStream): Made two small changes to
4762           the two send(). Instead of doing a println, I now do a
4763           print. This was really a bug!
4765 Tue Apr 08 22:08:12 1997  David L. Levine  <levine@cs.wustl.edu>
4767         * include/makeinclude/platform_sunos5_sunc++_4.1.GNU: removed
4768           "rm -f $@" from AR command so that archive won't be removed
4769           during incremental updates.  Thanks to Chuck Gehr
4770           <gehr@sweng.stortek.com> for reporting this.
4772 Tue Apr  8 00:04:22 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
4774         * ace/Task_T.cpp: Added a hack to work around the new weird HP/UX
4775           aCC template semantics.  Thanks to Neil B. Cohen
4776           <nbc@metsci.com> for reporting this.
4778         * ace/config-hpux-10.x[-g++].h: Added #define
4779           ACE_HAS_CLOCK_GETTIME.  Thanks to Neil B. Cohen <nbc@metsci.com>
4780           for reporting this.
4782         * ace/config-hpux-10.x[-g++].h: Added ACE_HAS_IP_MULTICAST and removed
4783           ACE_LACKS_STRRECVFD.  Thanks to Neil B. Cohen <nbc@metsci.com>
4784           for reporting this.
4786         * ace/config-hpux-10.x.h: Apparently some HP/UX 10.x C++ compilers
4787           don't support volatile, so I #defined it away as a macro.
4788           Thanks to Neil B. Cohen <nbc@metsci.com> for reporting this.
4790         * ace/Log_Msg.cpp: Put a #if defined (ACE_MT_SAFE) around the
4791           entire Log_Msg destructor.  Thanks to Neil B. Cohen
4792           <nbc@metsci.com> for reporting this.
4794         * ace/config-hpux-10.x[-g++].h: Added #define ACE_HAS_STREAMS on
4795           the recommendation of Neil B. Cohen <nbc@metsci.com>.
4797 Mon Apr 07 12:08:21 1997    <harrison@samba.cs.wustl.edu>
4799         * ace/Set.cpp: For some reason, VC++ 5.0 doesn't like to have the
4800           constructors X::X(X&) and X::X(X*).  We can change the X::X(X*)
4801           constructor to take in an extra argument with a default value.
4802           This seems to have sufficiently satisfied the VC++ 5.0 for the
4803           time being.  There were no changes necessary to other Set.cpp
4804           code (as the extra argument has a default value).
4806 Mon Apr 07 08:05:03 1997  David L. Levine  <levine@cs.wustl.edu>
4808         * ace/config-win32.h: enabled ACE_HAS_UNICODE by default.
4809           Thanks to Matthias Kerkhoff <make@cs.tu-berlin.de> for
4810           suggesting this.
4812         * ace/config-sunos5.4-g++.h: enabled ACE_HAS_BROKEN_RANDR and
4813           disabled ACE_HAS_SVR4_SIGNAL_T.  Thanks to Joey Zhu
4814           <joey.zhu@wcom.com> for reporting these problems and testing
4815           the fix.
4817         * ace/Proactor.h (ACE_Proactor): commented out unused arguments
4818           in non-WIN32 version.
4820 Sun Apr 06 22:51:02 1997    <irfan@TWOSTEP>
4822         * ace/Proactor: Complete rewrite of Proactor that pushes all the
4823           differences in asynchronous I/O to the edges of the framework -
4824           i.e., into the new Asynch_IO classes. This allows the Proactor
4825           to easily support new asynchronous operations.
4827           Currently, the new Proactor supports minimal functionality. In
4828           the future, we will complete this.
4830           The Proactor is used in conjunction with the new Asynch_IO
4831           classes.  There is a different class for each operation. Please
4832           see Asynch_IO.h for details.
4834           There is also a new ACE_Asynch_Acceptor that uses AcceptEx.
4836           Example is in:
4837           ACE_wrappers/examples/Reactor/Proactor/test_proactor.cpp.  
4839           This example illustrates how the ACE_Proactor can be used to
4840           implement an application that does various asynchronous
4841           operations.
4843         * apps/JAWS/server: Complete rewrite of JAWS. The new JAWS has
4844           support for Asynch-Thread-Pool (on WIN32), Synch-Thread-Pool,
4845           and Thread-per-Request. Different models can be configured using
4846           the svc.conf file.  The server now supports both GET and PUT
4847           commands.
4848           
4849           The HTTP_Handler class is a state based implementation of the
4850           HTTP protocol. Therefore, it can be used synchronously and
4851           asynchronously. It uses an abstract IO class to move between
4852           different HTTP protocol states. It is up to the IO class to
4853           decide on synchronous or asynchronous I/O.
4855         * apps/JAWS/client: This is an example of the implementation of
4856           BlobStreaming in ACE. This version of BlobStreaming uses HTTP as
4857           a transport protocol. 
4859           Blobby :-) is a simple application written using the ACE_Blob
4860           class, which is capable of doing both file uploads and
4861           downloads.  If a file is downloaded, the downloaded data is sent
4862           to standard output, so that it can be piped as necessary.
4864         * ace/Mem_Map.cpp (map_it): This method now uses ACE_OS::pwrite
4865           (if ACE_HAD_P_READ_WRITE is defined) instead of
4866           ACE_OS::lseek/ACE_OS::write to write the end-of-file byte. The
4867           old scheme does not work if the file is in OVERLAPPED mode.
4869         * ace/OS: Added pread and pwrite to the OS class (if
4870           ACE_HAD_P_READ_WRITE is defined). On Win32, these functions use
4871           the OVERLAPPED structure to specify the offset. This
4872           implementation will block until the write/read completes (even
4873           if the file is in OVERLAPPED mode).
4875         * ace/config: Added ACE_HAS_P_READ_WRITE to the following
4876           platforms that support pread() and pwrite() calls:
4877           config-sunos4-g++.h 
4878           config-sunos4-lucid3.2.h
4879           config-sunos4-sun3.x.h 
4880           config-sunos4-sun4.1.4.h
4881           config-sunos4-sun4.x-orbix.h 
4882           config-sunos4-sun4.x.h
4883           config-sunos5.4-centerline-2.x.h 
4884           config-sunos5.4-g++.h
4885           config-sunos5.4-sunc++-4.x-orbix.h
4886           config-sunos5.4-sunc++-4.x.h 
4887           config-sunos5.5-g++.h
4888           config-sunos5.5-sunc++-4.1.h  
4889           config-sunos5.5-sunc++-4.x-orbix.h
4890           config-sunos5.5-sunc++-4.x.h 
4891           config-sunx86-sunc++-4.x.h
4892           config-win32-common.h
4894 Sun Apr  6 14:16:18 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
4896         * tests/Timer_Queue_Test.cpp: Added tests to make sure that the
4897           new ACE_Timer_Queue::cancel() logic is working correctly.  So
4898           far, it seems to be fine.
4900         * ace/Timer_{Heap,List}.cpp (cancel): Changed the comparison for
4901           dont_call_handle_close to be correct.
4903         * ace/OS.cpp: Deleted a useless return.  Thanks to Gonzalo
4904           A. Diethelm <gonzo@ing.puc.cl> for reporting this.
4906         * ace/config-irix6.2-sgic++.h: Added the following definitions:
4908           + ACE_LACKS_PTHREAD_THR_SIGSETMASK
4909           + ACE_HAS_PTHREAD_EQUAL
4910           + ACE_HAS_PTHREAD_T
4911           + ACE_HAS_SYSENT_H
4912           + ACE_HAS_SYSINFO
4913           + ACE_HAS_TEMPLATE_TYPEDEFS
4915           Deleted the following definitions:
4917           + #define ACE_HAS_SYS_SIGLIST (Irix's compiler only has a
4918             _sys_siglist array when compiling their own internal
4919             functions).
4921           Thanks to Gonzalo A. Diethelm <gonzo@ing.puc.cl> for this.
4923         * ace/Process: Added new support for setting the environment
4924           variable and the current working directory.  Thanks to Gonzalo
4925           A. Diethelm <gonzo@ing.puc.cl> for this enhancement.
4927         * ace/OS.h: "sys/stat.h" was being included more than once, so I
4928           fixed this.  Thanks to Gonzalo A. Diethelm <gonzo@ing.puc.cl>
4929           for reporting this.
4931         * ace/XtReactor.cpp: Added the register_handler_i() method, which
4932           just delegates to the one defined in the Reactor.  This is
4933           necessary to adjust to the C++ type system rules.  Thanks to
4934           Gonzalo A. Diethelm <gonzo@ing.puc.cl> for reporting this.
4936         * ace/Service_Config.cpp: Added the Double-Checked Locking
4937           Optimization pattern to all the ACE_Service_Config Singletons
4938           (e.g., thr_mgr(), reactor(), etc.) so that they behave correctly
4939           in multi-threaded programs.  Thanks to Matthias Kerkhoff
4940           <make@cs.tu-berlin.de> for insisting on this.
4942         * ace/OS.i (nanosleep): If the nanosleep() system call isn't
4943           supported by the OS platform we'll just use ACE_OS::sleep(const
4944           ACE_Time_Value &) instead.
4946         * ace/Log_Msg.cpp: Changed the logic of
4947           ACE_Log_Msg_Manager::remove() so that it returns the number of
4948           remaining registered instances.  When this goes to 0 we'll
4949           cleanup.
4951         * ace/OS.i: Enhanced the ACE_OS::cond_[timed_]wait() methods so
4952           that they use SignalObjectAndWait() whenever possible to avoid
4953           potential problems with unfairness.  See
4954           http://www.cs.wustl.edu/~schmidt/editorial-15.html for more
4955           details.  Thanks to David Holmes <ltdholmes@mri.mq.edu.au> for
4956           pointing out this subtlety.
4958 Sun Apr 06 20:01:57 1997  David L. Levine  <levine@cs.wustl.edu>
4960         * include/makeinclude/wrapper_macros.GNU: added "purify" and
4961           "quantify" make command options.  To build Purified versions
4962           of all executables in the current direction, for example:
4964                 % make clean; make purify=1
4966           These options assume that purify or quantify are in your PATH.
4968         * ace/Task.{h,cpp}: removed ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES
4969           from ACE_Task_Exit declaration and ACE_Task_Exit::instance ().
4970           ACE_Task_Exit is no longer a template class, so we don't need that.
4972         * ace/Task_T.h: added missing "*/" at end of comment after #endif.
4974         * tests/IOStream.cpp (server): added check for 0 strlen of
4975           "buf" to avoid out-of-bound array reference.
4977         * ace/Svc_Conf_l.cpp, Makefile: added #define ACE_BUILD_DLL.
4978           Thanks to Matthias Kerkhoff <make@cs.tu-berlin.de> for
4979           reporting this.
4981         * ace/Set.cpp(ACE_Set_Node ctor): commented out unused arg MS_SUCKS.
4983 Sat Apr  5 14:21:29 1997  Prashant Jain  <pjain@merengue.cs.wustl.edu>
4985         * java/: Changed package name from ACE to JACE across all directories.
4987 Sat Apr  5 13:12:37 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
4989         * tests/MM_Shared_Memory_Test.cpp: Removed the use of dynamic
4990           memory allocation to avoid memory leaks.
4992         * ace/Service_Config: Changed _defaults to _static_svcs since this
4993           more accurately reflects what they do.
4995         * examples/Shared_Malloc/test_malloc.cpp: Removed the
4996           print_stats() call since it doesn't work via this API.  Thanks
4997           to Sandro Doro <alex@aureus.sublink.org> for reporting this.
4999         * ACE-install.sh: Tweeked the install script by changing the
5000           "gunzip; tar; gzip" sequence into "gunzip -c | tar xvf -" to
5001           speed it up a little.  Thanks to Per Andersson
5002           <Per.Andersson@hfera.ericsson.se> for this fix.
5004         * examples/Threads/future1.cpp: Make sure to delete the char *name
5005           that is retrieved from the future in order to avoid a memory
5006           leak.  Thanks to Matthias Kerkhoff <make@cs.tu-berlin.de> for
5007           figuring this out.
5008         
5009         * examples/Threads/future1.cpp: Make sure to delete this->name_ in
5010           the Scheduler destructor to avoid a memory leak.
5012         * examples/Threads/task_four.cpp (close): Enhanced the close()
5013           method so that it will actually delete the memory for the
5014           Worker_Task.
5016         * ace/XtReactor.cpp (register_handler_i): Added the 
5018           if (mask & ACE_Event_Handler::ACCEPT_MASK)
5019             ACE_SET_BITS (condition, XtInputReadMask);
5021           Thanks to Jean-Marc Strauss <strauss@club-internet.fr> for
5022           reporting this.
5024         * ace/Timer_Queue.cpp (expire): This is the only method that calls
5025           ACE_Timer_Queue::cancel() with dont_call_handle_close set to 0.
5027         * ace/Reactor: Modified the cancel_timer() methods so that they
5028           also take a dont_call_handle_close parameter and pass it on to
5029           the Timer_Queue::cancel() method.
5031         * ace/Timer_{List,Heap}.cpp: Modified all the cancel() methods so
5032           that they will not call handle_close() unless the new parameter
5033           dont_call_handle_close is 0 (it is 1 by default).  This will
5034           avoid nasty problems with recursion.  Thanks to Paul Han
5035           <phan@CCGATE.HAC.COM> for suggesting this.
5037         * ace/Timer_{List,Heap}.cpp (schedule): If a user tried to
5038           schedule a NULL ACE_Event_Handler then we return -1 with errno
5039           set to EINVAL.
5041         * ace/Message_Block.cpp: Somehow the file got screwed up and was
5042           reverted back to an earlier incarnation where we didn't use
5043           ACE_Service_Config::alloc()...  Thanks to Matthias Kerkhoff
5044           <make@cs.tu-berlin.de> for figuring this out.
5046 Sat Apr  5 19:11:46 1997  Tim H. Harrison  <harrison@waltz.cs.wustl.edu>
5048         * ace/Signal.i (ACE_Sig_Guard): Changed the constructor of
5049           ACE_Sig_Guard so that it doesn't call ACE_OS::sigprocmask for
5050           Win32.  This keeps errno from being set to ENOSYS at random
5051           times.
5053 Sat Apr 05 17:27:02 1997    <irfan@TWOSTEP>
5055         * Registry.cpp (resolve): Type and size of the object is only set
5056           if RegQueryValueEx() returns success. Thanks to Alan
5057           (Alan_Cabrera@fp.cibc.com) for reporting this.
5059 Sat Apr 05 13:11:04 1997  David L. Levine  <levine@cs.wustl.edu>
5061         * ace/Log_Msg.cpp (instance): Added another ACE_NO_HEAP_CHECK.
5062           Matthias provided the fix.
5064         * ace/config-win32.h: Disable ACE_HAS_STRICT by default, because
5065           it will break existing application code.
5067         * ace/OS.{h,cpp},Log_Msg.{h,cpp}: fixes from Matthias Kerkhoff
5068           <make@cs.tu-berlin.de> to avoid memory-leak reports when MFC
5069           or (the CrtHeapXXX()-functions of the Win32 runtime library)
5070           are used.
5072           The problem is, that MFC (and so may other Win32 applications
5073           do) allocates a thread specific storage slot for each running
5074           thread which contains various control and debug informations.
5075           Part of this information is an object, which when constructed
5076           makes a snapshop of the heap. When this object is destroyed,
5077           the snapshot is compared to the actual heap. All object still
5078           existing on the heap are reported as memory leaks (which
5079           is in most situations correct).  Because the object is deleted
5080           when the thread (or programs main) is left and this happens
5081           before atexit is called, some leak reports are false (because,
5082           e.g., all these ACE_Log_Msg's will be deleted in atexit).
5084           The fix for ACE_Log_Msg consists of three changes (two only
5085           relevant for Win32, one relevant for all platforms.)
5086           Description of changes:
5088           a) Introduced a new macro ACE_NO_HEAP_CHECK, which turns
5089           off the built in heap checking until the current code block
5090           is left. (defined for all platforms, but only does something
5091           for Win32). This changes os.h and config-win32-common.h.
5093           b) Added a static member function to ACE_Log_Msg. The function
5094           (exists) returns 0 if the calling thread don't have an ACE_Log_Msg
5095           and non-null if an ACE_Log_Msg exists. This changes Log_Msg.h
5096           and Log_Msg.cpp.
5098           c) Changed ACE_Thread_Adapter in a way that creating a new
5099           thread does not automatically create an ACE_Log_Msg for the
5100           calling thread. This happened until now, because the new
5101           thread inherited the log settings of the calling thread.
5102           This behaviour makes no sense, if the calling thread does
5103           not have an ACE_Log_Msg, so i use ACE_Log_Msg::exists() (see
5104           above) to prevent the implicit creation of an ACE_Log_Msg
5105           for the calling thread.
5107           Thanks, Matthias!
5109         * ace/config-win32.h and config-win32-common.h: new, consolidated
5110           Win32 config files.  Thanks, again, Matthias!
5112         * ace/OS.h (ACE_UNUSED_ARG): determine whether we're building
5113           on an Irix platform by looking for ACE_HAS_IRIX_GETTIMEOFDAY
5114           instead of ACE_HAS_IRIX62_THREADS.
5116         * ace/Log_Msg.cpp: VxWorks (only!) change: no longer strdups
5117           program_name and local_host to avoid memory leaks.  Instead,
5118           the addresses of these are copied by ACE_Log_Msg.  So, only
5119           strings in the text segment should be passed to its functions!
5120           Again, this change is for VxWorks only.
5122         * ace/Sched_Params.cpp: moved memsets of pcinfo so that entire
5123           pcinfo structure is zeroed out, to _really_ avoid Purify warnings.
5125 Fri Apr 04 12:28:40 1997  David L. Levine  <levine@cs.wustl.edu>
5127         * ace/config-mvs.h: removed ACE_HAS_IP_MULTICAST because MVS
5128           doesn't define ip_mreq.  Thanks to Chuck Gehr
5129           <gehr@sweng.stortek.com> for reporting this.
5131         * ace/OS.i (mutex_init): fixed the extra braces once and for all.
5132           Thanks to Chuck Gehr <gehr@sweng.stortek.com> for reporting it.
5134         * ace/OS.i, config-sco-5.0.0*.h: fixed for SCO so that it uses
5135           single-argument gettimeofday () prototype, but calls two-arg
5136           (SVR4) version in ACE_OS::gettimeofday ().  Thanks to Ganesh
5137           Ganesh Pai <gpai@voicetek.com> for solving this problem.
5139         * ace/Log_Msg.{h,cpp}: added ACE_Log_Msg destructor.  In
5140           instance (), added call to ::atexit () (::taskDeleteHookAdd ()
5141           on VxWorks) to register cleanup handler.  Each new instance
5142           of an ACE_Log_Msg is inserted into an ACE_Unbounded_Set; the
5143           cleanup handler iterates over the Set and deletes the
5144           ACE_Log_Msgs at program exit.  
5146           Also, the two strings that are allocated get cleaned up after
5147           the last ACE_Log_Msg instance is deleted.  Many thanks to
5148           Matthias Kerkhoff <make@cs.tu-berlin.de> for figuring this out
5149           and cranking out the code.
5151           It works differently on VxWorks, because it doesn't have
5152           ::atexit ().  VxWorks has ::taskDeleteHookAdd (), which is
5153           called when each task exits.  So, the Set isn't used.  Instead,
5154           the cleanup hook is called for each task when it exits, passing
5155           the task control block (TCB) of the exiting task.  A pointer to
5156           the ACE_Log_Msg instance is contained in one of the spare fields
5157           of the TCB, so the cleanup handler simply deletes it.
5159         * ace/IOStream.h: specify template parameter (ACE_IOStream<STREAM>)
5160           to ACE_OPERATOR{G,P}_SET macros.  Thanks to Chuck Gehr
5161           <gehr@sweng.stortek.com> for providing this fix.
5163 Thu Apr  3 22:17:53 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
5165         * ace/Registry.cpp: Changed STRING_SEPARATOR from Istring to
5166           LPCTSTR.  Thanks to Matthias Kerkhoff <make@cs.tu-berlin.de> for
5167           suggesting this.
5169 Thu Apr  3 21:39:45 1997  Chris Cleeland  <cleeland@cs.wustl.edu>
5171         * ace/OS.i (mutex_init): Removed errant open-brace ('{').  Thanks
5172           to Chuck Gehr (gehr@sweng.stortek.com) for the fix!
5174 Thu Apr 03 08:52:34 1997  David L. Levine  <levine@cs.wustl.edu>
5176         * ace/OS.h,OS.cpp,Sched_Params.cpp: added /**/ to some #include
5177           directives.  Thanks to Matthias Kerkhoff <make@cs.tu-berlin.de>
5178           for reporting these.
5180         * ace/OS.cpp (writev, readv): changed type of local variable "i"
5181           from size_t to int to avoid signed/unsigned mismatch.  Thanks
5182           to Matthias Kerkhoff <make@cs.tu-berlin.de> for reporting this.
5184         * ace/OS.cpp (readv), SOCK_Dgram.cpp (recv): added casts of
5185           iov_len and copyn because iov_len is int on some platforms and
5186           size_t on others.  This avoids compiler (MSVC 4.1) warnings.
5187           Thanks to Matthias Kerkhoff <make@cs.tu-berlin.de> for reporting
5188           this.
5190         * include/makeinclude/platform_sco5.0.0-nothread.GNU:
5191           updated CCFLAGS and added LD=$(CXX).   Thanks to
5192           Ganesh Pai <gpai@voicetek.com> for these fixes.
5194         * ace/OS.h: added #include of <sys/regset.h> for SCO only.
5195           Thanks to Ganesh Pai <gpai@voicetek.com> for this fix.
5197         * ace/config-sco-5.0.0*.h: added #define ACE_HAS_IP_MULTICAST.
5198           Thanks to Ganesh Pai <gpai@voicetek.com> for this fix.
5200         * ace/config-{chorus,linux*,sco*}.h: removed #define of
5201           ACE_HAS_INLINED_OSCALLS because it's no longer needed in the
5202           config files:  it's #defined in OS.h if needed.
5204 Thu Apr  3 01:48:01 1997  Tim H. Harrison  <harrison@lambada.cs.wustl.edu>
5206         * ace/Malloc.i (malloc): ACE_New_Allocator::malloc only calls new
5207           if nbytes is > 0.  Purify was complaining that 0 bytes were
5208           allocated but never deleted.  Go figure.
5210 Wed Apr  2 22:24:48 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
5212         * ace/OS.cpp: Moved the ACE_OS::inet_aton() method into the *.cpp
5213           file and made it non-inline to work around a bug with HP/UX C++.
5214           Thanks to Neil Cohen for this fix.
5216 Wed Apr 02 10:09:37 1997  David L. Levine  <levine@cs.wustl.edu>
5218         * ace/config-sunos5.5-sunc++-4.1.h: added template specialization
5219           with Sun C++ 4.2.
5221         * include/makeinclude/platform_sunos5_sunc++_4.1.GNU: removed +w
5222           and added comments about Sun C++ 4.2 support.
5224         * include/makeinclude/platform_chorus.GNU, platform_hpux_gcc.GNU,
5225           platform_irix5.{2,3_g++}.GNU, platform_linux{_,pthread}.GNU,
5226           platform_m88k.GNU,platform_osf1_4.0_g++.GNU,
5227           platform_sco-nothread.GNU,platform_sco5.0.0-*.GNU,
5228           platform_sunos{4,5}_g++.GNU, platform_sunos5_x86_g++.GNU,
5229           platform_unixware_g++.GNU, platform_vxworks5.2_g++.GNU:
5230           added -fno-implicit-templates to CCFLAGS.  See INSTALL file
5231           for discussion of the g++ option.  Also, added -O2 because
5232           it dramatically reduces object file sizes.
5234         * netsvcs/clients/Tokens/manual/manual.cpp: made
5235           STDIN_Token::TID typedef public so that template
5236           specialization (w/ Sun C++ 4.2) can access it.
5238 Wed Apr  2 10:02:47 1997  Chris Cleeland  <cleeland@cs.wustl.edu>
5240         * ace/OS.h: Added definitions for THREAD- and PROCESS-LEVEL
5241           priorities because some implementations define these while
5242           others don't.  These are now
5243           ACE_{THR,PROC}_{FIFO,RR,OTHER}_{MIN,MAX,DEF}.  The only really
5244           NEW concept is the *_DEF, which is a default value assigned by
5245           ACE_OS::thr_create() if one isn't given.  Of special note is that
5246           we don't redefine a default values if it's already been
5247           defined, which allows individual programs to have their
5248           own ACE-wide "default".
5250         * ace/OS.cpp (thr_create): Uses ACE_{THR,PROC}_* macros
5251           rather than the PRI_* macros.
5253         * ace/Sched_Params.cpp (priority_min,priority_max): These now
5254           use ACE_{THR,PROC}_* macros to ignore OS-specific priority
5255           assignments.
5257         * ace/config-linux-lxpthreads.h: Removed definitions of
5258           PRI_{FIFO,RR,OTHER}_{MIN,MAX}.
5260         * include/makeinclude/platform_linux*.GNU (CCFLAGS): Added
5261           -fno-implicit-templates now that it's supported.  This
5262           eliminates messages of the sort 'ld: Warning size of
5263           <mangled template specialization name> change from xx to yy'
5264           when linking libACE.so.  Thanks to David Levine for making
5265           this possible!
5266         
5267 Tue Apr  1 15:27:28 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
5269         * bin/g++dep: Removed the "/bin" prefix so that this won't fail on
5270           platforms that don't have sed in /bin.  Thanks to Sandro Doro
5271           <alex@aureus.sublink.org> for this fix.
5273 Tue Apr 01 09:55:07 1997  David L. Levine  <levine@cs.wustl.edu>
5275         * ace/OS.h: protected definition of struct flock on VxWorks,
5276           because it defines that type in sys/fcntlcom.h.  (It doesn't
5277           appear to support flock (), though.)  Thanks to Dave
5278           Mayerhoefer <mayerhoefer@svappl36.mdc.com> for reporting this.
5280         * ace/OS.h: define ACE_hrtime_t as u_longlong_t gcc, because
5281           its long long types are only 4 bytes long.  Its longlong_t
5282           types are 8 bytes.  Also made ACE_hrtime_t unsigned for
5283           other than gcc on Unix platforms.
5285         * ace/OS.* (gethrtime), config-vxworks-ghs-1.8.h: added support
5286           for PowerPC with Green Hills compiler.  Thanks to Dave
5287           Mayerhoefer <mayerhoefer@svappl36.mdc.com> for providing the
5288           readPPCTimeBase assembler routine.
5290         * ace/config-vxworks*.h: removed #include of vxWorks.h because
5291           its no longer necessary with the TimeValue.h merged into OS.h.
5293         * ace/High_Res_Timer.cpp (elapsed_time): added cast to
5294           initialization of nseconds to avoid compiler warning from
5295           MSVC 4.1 about narrowing from unsigned __int64.
5296           Thanks to Matthias Kerkhoff <make@cs.tu-berlin.de> for
5297           reporting this.
5299 Mon Mar 31 18:18:35 1997  Carlos O'Ryan  <coryan@charlie>
5301         * ace/config-hpux-10.x-g++.h: 
5302         It was tuned to HP-UX 10.10 (and further) using g++ 2.7.2 without
5303         DCE/Threads.
5305         * ace/Task_T.cpp: 
5306         Another iteration on the Module.h file, this time it is not
5307         included *only* under HPUX and when using HP/aCC. Still IMHO
5308         problems will arise as template sintax checking becomes more
5309         popular.
5311         * ace/Local_Name_Space_T.h: 
5312         * ace/Local_Name_Space_T.cpp: 
5313         Replaced MAXNAMELEN with MAXPATHLEN since some platforms
5314         (e.g., HP/UX) have a very low value (e.g., 14 bytes) for
5315         MAXNAMELEN.
5317         * ace/config-hpux-10.x-aCC.h: 
5318         The comment did not make clear what was compiler/platform
5319         target. It also included some remarks that only applied to
5320         HP/C++.
5322         * tests/Future_Test.cpp: 
5323         * tests/Message_Block_Test.cpp: 
5324         * tests/Thread_Pool_Test.cpp: 
5325         Will not compile if ACE_HAS_THREADS was not defined and
5326         ACE_TEMPLATES_REQUIRE_SPECIALIZATION was: they tried to
5327         instantiate templates that were only defined when ACE_HAS_THREADS.
5329         * ace/config-hpux-10.x-aCC.h: 
5330         More fine tuning: ACE_HAS_EXCEPTIONS,
5331         ACE_LACKS_LINEBUFFERED_STREAMBUF,
5332         ACE_HAS_STREAM_PIPES.
5334         * ace/TLI_Stream.h: 
5335         * ace/TLI_Acceptor.h: 
5336         No "Meta-type info" was defined (the PEER_ADDR and PEER_STREAM
5337         typedefs).
5339         * ace/Signal.h: 
5340         * ace/Signal.cpp: 
5341         With HP/aCC we can enable ACE_Sig_Handlers.
5343 Mon Mar 31 22:36:55 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
5345         * ace/Service_Config.cpp (process_directives): Return -1 if
5346           ace_yyerrno > 0.  Thanks to Alan Cabrera
5347           <Alan_Cabrera@fp.cibc.com> for reporting this.
5349 Mon Mar 31 17:38:08 1997  Chris Cleeland  <cleeland@cs.wustl.edu>
5351         * ace/OS.cpp (thr_create): Moved priority determination after
5352           policy determination because it's possible for setting of the
5353           priority to fail if it's not a valid priority for the [default]
5354           policy.
5356 Mon Mar 31 09:00:54 1997  David L. Levine  <levine@cs.wustl.edu>
5358         * performance-tests/Misc/context_switch_time.cpp: this test no
5359           longer worked.  So, reverted to revision 4.5, plus minimum
5360           changes necessary to support build on platforms without threads.
5362         * examples/Threads/Makefile, performance-tests/Misc/Makefile:
5363           moved context_switch_time.cpp from examples/Threads to
5364           performance-tests/Misc.
5366         * examples/Logger/Acceptor-server/server_loggerd.cpp,
5367           examples/Reactor/Misc/pingpong.cpp,
5368           examples/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.cpp,
5369           examples/Shared_Malloc/Malloc.cpp:
5370           added template specializations.
5372         * include/makeinclude/platform_sunos5_g++.GNU: removed dependency
5373           of CCFLAGS on CFLAGS to avoid duplicate -g in build command.
5374           Also, added -fno-implicit-templates in comment.
5376 Sun Mar 30 12:52:58 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
5378         * ace/Malloc.h: The block begining with:
5379           #if defined (ACE_MALLOC_STATS)
5380           and ending with end of struct ACE_Malloc_Stats
5381           must be moved (up) after line 107
5383           Thanks to Sandro Doro <alex@aureus.sublink.org> for pointing
5384           this out.
5386         * ace/Malloc_T.cpp: The line
5387           this->malloc_stats_.dump ();
5388           must be changed in:
5389           this->cb_ptr_->malloc_stats_.dump ();
5391           Thanks to Sandro Doro <alex@aureus.sublink.org> for pointing
5392           this out.
5394         * ace/Malloc_T.cpp: the line
5395           this->cb_ptr_->malloc_stats_.print ();    // print not exists
5396           may be changed in:
5397           this->cb_ptr_->malloc_stats_.dump ();
5399           Thanks to Sandro Doro <alex@aureus.sublink.org> for pointing
5400           this out.
5402         * ace/Malloc_T.h: Added "virtual" to the ACE_New_Allocator methods
5403           to reinforce the fact that they are indeed virtual.  Thanks to
5404           Sandro Doro <alex@aureus.sublink.org> for pointing this out.
5406         * ace/Malloc.h: Added "virtual" to the ACE_New_Allocator methods
5407           to reinforce the fact that they are indeed virtual.
5409 Sat Mar 29 20:26:54 1997  David L. Levine  <levine@cs.wustl.edu>
5411         * ace/OS.h: moved #defin of RTLD_LAZY after #include of dlfcn.h.
5412           Thanks to Chris Lahey <CLahey@cccis.com> for this fix.
5414         * ace/Task_T.h: replaced #include of "ace/Module.h" because some
5415           Task_T methods use ACE_Module methods.
5417         * examples/Connection/non_blocking/test_{sock,spipe,tli}_{acceptor,
5418           connector}.cpp,
5419           examples/System_V_IPC/SV_Semaphores/Semaphores_{1,2}.cpp:
5420           added template specializations.
5422 Sat Mar 29 17:08:33 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
5424         * ace/OS.cpp: Added many new ACE_UNUSED_ARGS macros to eliminate
5425           warnings when we are compiling without threads.
5427 Fri Mar 28 11:34:38 1997  David L. Levine  <levine@cs.wustl.edu>
5429         * ace/Task.{h,cpp},Thread_Manager.h: changed remaining
5430           priority types to long and defaults to -1.
5432         * ace/Thread_Manager.cpp (spawn_i): don't clobber errno!
5433           ACE_OS::thr_create () sets errno and returns -1.  So,
5434           its return value should not be used to set errno.
5436         * ace/OS.cpp (thr_create): fixed PTHREADS_1003_DOT_1C thread
5437           priority logic.  Thanks to Thilo Kielmann
5438           <kielmann@informatik.uni-siegen.de> for the patch.
5440         * ace/config-sunos5.5*.h,README,OS.cpp (thr_create): added
5441           ACE_HAS_ONLY_SCHED_OTHER to indicate that platform (Solaris 2.5)
5442           only supports POSIX SCHED_OTHER scheduling policy.
5444         * tests/Priority_Task_Test.cpp (open): added THR_SCHED_FIFO flag.
5445           Thanks to Thilo Kielmann <kielmann@informatik.uni-siegen.de> for
5446           for this suggestion.
5448         * examples/ASX/Event_Server/Event_Server/Makefile,
5449                                     Transceiver/Makefile:
5450           added -lGateway to LIBS to pick up its template
5451           instantiations during links.
5453         * examples/ASX/Event_Server/Event_Server/Peer_Router.cpp,
5454                                     Transceiver/transceiver.cpp,
5455                    Connection/blocking/SPIPE-{acceptor,connector}.cpp,
5456                               misc/Connection_Handler.cpp,test_upipe.cpp,
5457                    Logger/simple-server/server_loggerd.cpp,
5458                    UPIPE_Event_Server/{Consumer,Supplier}_Router.cpp,
5459                    performance-tests/Synch-Benchmarks/Options.cpp:
5460           added template specializations.
5462 Thu Mar 27 21:10:59 1997  David L. Levine  <levine@cs.wustl.edu>
5464         * ace/IOStream.h: only use built-in ipfx{0,1} () with __GNUC__,
5465           because that's the only compiler we know of that has them.
5466           Thanks to Carlos O'Ryan <coryan@mat.puc.cl> for pointing this
5467           out, and to James CE Johnson <jcej@lads.com> for providing the fix.
5469         * ace/OS.i: rearranged order of ACE_Time_Value functions (moved
5470           set ()'s up, moved arithmetic operators down) so that they are
5471           defined before use.
5473         * ace/Task_T.cpp: removed ACE_TEMPLATES_REQUIRE_SOURCE around
5474           #include of "ace/Module.h" so that it will build with Sun C++ 4.1.
5476         * apps/Gateway/Peer/Makefile: added -lGateway to LIBS to
5477           pick up its template instantiations during links.
5479         * apps/Gateway/Peer/Peer.cpp: added template instantations.
5481 Thu Mar 27 14:10:39 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
5483         * ace/OS.h: Added two new accessors to ACE_Time_Value:
5485           operator timeval *() const;
5486           // Returns a pointer to the object as a timeval.
5488           const operator timeval *() const;
5489           // Returns a pointer to the object as a timeval.
5491           Thanks to Carlos O'Ryan <coryan@mat.puc.cl> for this suggestion.
5493         * ace/OS.i (ACE_Time_Value): Inlined many of the ACE_Time_Value
5494           accessors.
5496         * ace/OS.h: Reimplemented ACE_Str_Buf at 
5498           struct ACE_Export ACE_Str_Buf : public strbuf
5499           {
5500             // = Initialization method
5501             ACE_Str_Buf(void* b = 0, int l = 0, int max = 0);
5502             // Constructor.
5503           };
5505           this makes the casting from ACE_Str_Buf* to strbuf* a "safe"
5506           cast and makes it more portable (say on platforms where the
5507           fields in strbuf are not in the right order).  Thanks to Carlos
5508           O'Ryan <coryan@mat.puc.cl> for this fix.
5510         * ace/OS.h: Moved the definition of imr_multiaddr to just before
5511           class ACE_OS so that it picks everything up appropriately.
5512           Thanks to Hakan Kallberg <hk@simulina.se> for reporting this.
5514         * ace/config-aix-4.[12].x.h and config-mvs.h: Fixed the
5515           ACE_HAS_MULTICAST macros, which should have said
5516           ACE_HAS_IP_MULTICAST.  Thanks to Daniel Montalibet
5517           <daniel_montalibet@stortek.com> for reporting this.
5519 Thu Mar 27 15:54:10 1997  Chris Cleeland  <cleeland@cs.wustl.edu>
5521         * ace/{Thread,Thread_Manager}.{h,i,cpp} (ACE_Thread): Changed
5522           type for priority arg to spawn*() from u_int to long to
5523           support changes in thr_create indicated below.  Thanks to
5524           Thilo Kielmann <kielmann@informatik.uni-siegen.de> for these
5525           changes.
5527         * ace/OS.cpp: Ensure that whenever either a priority of a
5528           scheduling policy is set explicitly, with POSIX threads, the
5529           other argument and the flag THR_EXPLICIT_SCHED is set
5530           automatically.  A range check for priority values for POSIX
5531           1003.1c is also included.  Thanks to Thilo Kielmann
5532           <kielmann@informatik.uni-siegen.de> for these changes.
5534         * ace/OS.h: Changed type and default value of priority arg to 
5535           thr_create from u_int to long and 0 to -1.  Thanks to Thilo 
5536           Kielmann <kielmann@informatik.uni-siegen.de> for these
5537           changes.  Also added ACE_MAX and ACE_MIN macros.
5539 Thu Mar 27 11:25:38 1997  David L. Levine  <levine@cs.wustl.edu>
5541         * netsvcs/servers/Makefile: removed SHOBJ so that main.so is not
5542           built, because it wasn't needed.  Thanks to Sandro Doro
5543           <alex@aureus.sublink.org> for this fix.
5545         * ace/config-aix-4.[12].x.h,config-mvs.h: changed
5546           ACE_HAS_MULTICAST to ACE_HAS_IP_MULTICAST.  Thanks to Daniel
5547           Montalibet <daniel_montalibet@stortek.com> for reporting
5548           this. 
5550         * include/makeinclude/platform_sunos5_g++.GNU,
5551                               platform_sunos5_x86_g++.GNU,
5552                               platform_unixware_g++.GNU:
5553           removed "-L$(WRAPPER_ROOT)/ace -L./" from LDFLAGS because it
5554           is added to LDFLAGS in include/makeinclude/wrapper_macros.GNU.
5556         * apps/Gateway/Gateway/{Event_Channel.cpp,Gateway.cpp,
5557                                 Proxy_Handler.cpp,Proxy_Handler_Acceptor.cpp,
5558                                 Proxy_Handler_Connector.cpp,
5559           examples/IPC_SAP/UPIPE_SAP/ex{2,3}.cpp,
5560           netsvcs/clients/Naming/Client/Client_Test.cpp,
5561           netsvcs/clients/Tokens/manual/manual.cpp:
5562           added template specializations.
5564 Thu Mar 27 10:05:59 1997  Prashant Jain  <pjain@merengue.cs.wustl.edu>
5566         * netsvcs/lib/TS_Clerk_Handler.cpp: Fixed two things:
5567           1) In TS_Clerk_Processor::parse_args() changed
5568           "%n:\n[-p hostname:port] [-t timeout] [-p poolname]\n%a", 1),
5569           to
5570           "%n:\n[-h hostname:port] [-t timeout] [-p poolname]\n%a", 1),
5572           2) In TS_Clerk_Processor::alloc() changed
5573           void *temp = 0;
5574           // Only create the state if it doesn't already exist.
5575           if (this->shmem_->find (ACE_DEFAULT_TIME_SERVER_STR, temp) ==  -1)
5576           {
5577             // Allocate the space out of shared memory for the system time entry
5578             temp = this->shmem_->malloc (sizeof (this->system_time_));
5580           to:
5582           // Only create the state if it doesn't already exist.
5583           if (this->shmem_->find (ACE_DEFAULT_TIME_SERVER_STR) ==  -1)
5584           {
5585             // Allocate the space out of shared memory for the system time entry
5586             void *temp = this->shmem_->malloc (sizeof (this->system_time_));
5588           Thanks to Sandro Doro (alex@aureus.sublink.org) for suggesting these changes.
5590 Thu Mar 27 01:00:18 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
5592         * include/makeinclude/platform_irix6.2_sgiCC.GNU: Added a new
5593           platform config file for SGI Irix 6.2 using the CC compiler (not
5594           NCC nor the MipsProcompiler).  Thanks to Eric Dean Russell
5595           <edrusse@somnet.sandia.gov> for these changes.
5597         * ace/OS.h: Moved the ACE_LACKS_UTSNAME_T block into the right
5598           part of the code.  Thanks to Jonathan Biggar <jon@sems.com> for
5599           this fix.
5601         * ace/Malloc.h: Added an enhancement so that the new alignment
5602           features will work regardless of the size of ACE_MALLOC_ALIGN.
5603           Thanks to Fred LaBar <flabar@fallschurch.esys.com> for this fix.
5605         * ace/Synch_Options.cpp: We now automatically set the USE_TIMEOUT
5606           flag if a non-0 timeout value is supplied.  Thanks to Tim
5607           Liddelow <tim@cst.com.au> for this suggestion.
5609 Wed Mar 26 08:47:24 1997  David L. Levine  <levine@cs.wustl.edu>
5611         * ace/{ACE.cpp,Log_Msg.cppOS.cpp},
5612           tests/{Message_Queue_Test.cpp,Naming_Test.cpp}:
5613           Changed ::sprintf calls to ACE_OS::sprintf.  Thanks to
5614           Thilo Kielmann <kielmann@informatik.uni-siegen.de> for
5615           reporting this.
5617         * netsvcs/lib/{Client_Logging_Handler.cpp,Name_Handler.cpp,
5618                        Server_Logging_Handler.cpp,TS_Service_Handler.cpp,
5619                        Token_Handler.cpp}: added template specializations.
5621 Tue Mar 25 06:47:14 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
5623         * ace/OS.h: Moved config.h to the top of OS.h so that we don't
5624           have to worry about not defining things in the right place.
5625           Thanks to Matthias Kerkhoff <make@cs.tu-berlin.de> for pointing
5626           this out.
5628 Tue Mar 25 22:54:49 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
5630         * ace/OS.i: Added UNICODE support for ACE_OS::chdir().  Thanks to
5631           Ivan Murphy <Ivan.Murphy@med.siemens.de> for the code.
5633 Tue Mar 25 21:26:10 1997  David L. Levine  <levine@cs.wustl.edu>
5635         * ace/TTY_IO.{h,cpp},README, and these config files:
5636           config-aix-*.h, config-hpux-*.h, config-irix5.*.h,
5637           config-mvs.h, config-osf1-*.h, config-sun*.h (except for g++
5638           and config-sunos5.5-sunc++-4.1.h), config-win*.h:
5639           Added ACE_NEEDS_DEV_IO_CONVERSION to conditionally compile the
5640           ACE_DEV_IO & conversion operator for ACE_TTY_IO, which is a
5641           subclass of ACE_DEV_IO.  Thanks to Fred LaBar
5642           <flabar@fallschurch.esys.com> and Gonzalo Diethelm
5643           <gonzo@ing.puc.cl> for reporting warnings without this on
5644           Irix 6.2 with the mipsPro compiler.
5646         * ace/OS.cpp (thr_create): on VxWorks, always pass 0 as first arg to
5647           ::taskSpawn () so that VxWorks will generate the task ID.
5648           Thanks to Dave Mayerhoefer <mayerhoefer@svappl36.mdc.com>
5649           for providing this fix, without which random task names would
5650           be assigned.
5652         * ace/ACE.cpp (get_bcast_addr): added return 0 at end of non-WIN32
5653           code to avoid compile warning from g++.
5655         * tests/IOStream_Test.cpp: removed extra "(%P|%t)" from output.
5656           I couldn't get ACE_ERROR_RETURN to work on g++:  it complained
5657           about mismatched return types when returning an int from a
5658           function that returns a void *, and about mismatched arguments
5659           to an ACE_Log_Msg function if I cast the int to a void *.  So,
5660           I used ACE_ERROR instead.
5661           Added ACE_UNUNSED_ARG (arg).  Removed unused variables
5662           error_at_server and error_at_client.
5664         * netsvcs/lib/TS_Clerk_Handler.cpp: added another template
5665           specialization.
5667         * examples/Reactor/Multicast/client.cpp: Log_Wrapper::LOG_DEBUG
5668           instead of LM_DEBUG.
5670         * examples/Threads/context_switch_time.cpp: use ACE_Sched_Params
5671           to get platform-dependent thread priorities.  Also, moved #includes
5672           so that config.h is read before testing for ACE_HAS_THREADS.
5674         * examples/Threads/{auto_event.cpp,barrier2.cpp,future1.cpp,
5675                             future2.cpp,reader_writer.cpp,tss1.cpp,tss2.cpp}:
5676           added template specializations.
5678 Tue Mar 25 10:01:05 1997  Chris Cleeland  <cleeland@cs.wustl.edu>
5680         * config-linux.h: Added
5681         ACE_HAS_{SVR4_DYNAMIC_LINKING,AUTOMATIC_INIT_FINI}.  Thanks to
5682         alex@aureus.sublink.org (Sandro Doro) for the change.
5684         * platform_linux.GNU: Added -ldl to LIBS.  Thanks to
5685         alex@aureus.sublink.org (Sandro Doro) for the change.
5687 Tue Mar 25 16:01:34 1997  Carlos O'Ryan  <coryan@charlie>
5689         * ace/Svc_Handler.cpp: 
5690         I forgot to comment this: "operator delete" used to call ::delete
5691         on a void*, on ANSI/C++ this is not allowed. Since "operator new"
5692         calls ::new for a char[] I do a casting to char* and call
5693         ::delete[] on the char pointer.
5695         * ace/config-hpux-10.x-aCC.h: 
5696         HP-UX 10.10 supports CLOCK_GETTIME, my guess is that it should
5697         work with g++ and HP/C++, but I won't mess with those files yet.
5699         * ace/Connector.h: 
5700         The default address parameter for "connect" is a bit tricky, from
5701         the comments in the file:
5702           //
5703           // If the compiler supports 'typename' we cannot use
5704           // 
5705           // PEER_CONNECTOR::PEER_ADDR::sap_any
5706           // 
5707           // because PEER_CONNECTOR::PEER_ADDR is not considered a
5708           // type. But: 
5709           //
5710           // typename PEER_CONNECTOR::PEER_ADDR::sap_any
5711           // 
5712           // will not work either, because now we are declaring sap_any a
5713           // type, further:
5714           // 
5715           // (typename PEER_CONNECTOR::PEER_ADDR)::sap_any
5716           //
5717           // is considered a casting expression. All I can think of is
5718           // using a typedef, I tried PEER_ADDR but that was a source of
5719           // trouble on some platforms. I will try:
5720           //
5721           typedef ACE_PEER_CONNECTOR_ADDR ACE_PEER_ADDR_TYPEDEF;
5723         * ace/OS.h: 
5724         The stock HP C++ compiler (cfront based) gives lots of warnings in
5725         <net/if.h>. I used to define volatile to avoid this warnings. Now
5726         I think I'll rather like to see them.
5728         * ace/SPIPE_Stream.h: 
5729         * ace/SPIPE_Connector.h: 
5730         There was no meta-type info (PEER_ADDR) for SPIPE_Stream and
5731         SPIPE_Connector.
5733         * ace/Stream_Modules.h: 
5734         * ace/Stream_Modules.cpp: 
5735         Fixed a "bug" introduced in my last change: a couple of
5736         ACE_ALLOC_HOOK_* were commented but shouldn't.
5738         * examples/Connection/non-blocking/CPP-acceptor.cpp (open): 
5739         PR_AD cannot be used in this context, it expands to
5740         _ACE_PEER_ACCEPTOR::PEER_ADDR (via ACE_PEER_ACCEPTOR_ADDR), but
5741         the template parameter is _ACE_PEER_STREAM (aka PR_ST_1, aka
5742         ACE_PEER_STREAM_1).
5743         The right macro was ACE_PEER_STREAM_ADDR.
5745         * ace/Connector.h: 
5746         * ace/Connector.cpp: 
5747         The typedef trick I used (PEER_ADDR) did not work on every
5748         platform.
5749         I also broke some examples since ACE_PEER_CONNECTOR_ADDR did not
5750         include ACE_TYPENAME on its definition. Hopefully this new trick
5751         will work everywhere.
5753         * I finally sorted out the mistery of including "ace/Module.h"
5754         into "ace/Task_T.cpp": when compiling "ace/Stream_Modules.cpp" you
5755         get the following include sequence:
5756         Stream_Modules.cpp
5757           Stream_Modules.h
5758             Task.h
5759               Task.i
5760               Task_T.h
5761                 Message_Queue.h (descendants removed)
5762                 Synch_T.h (descendants removed)
5763                 Task.h (already included).
5764                 Task_T.i
5765                 Task_T.cpp
5766                   Module.h
5767                     ACE.h (descendants removed)
5768                     Task.h (already included).
5769                     Module.i
5770                     Module.cpp
5772         At this point Module.cpp uses ACE_Thru_Task declared on
5773         Stream_Modules.h, but after the #include "ace/Task.h";
5774         in fact Module.cpp tries to #include "ace/Stream_Modules.cpp" but
5775         that second #include expands to nothing due to the canonical
5776         protection on Stream_Modules.h.
5777         That explains the removal of Module.h in Task_T.cpp.
5778         If you are wondering why so long an explanation for this change
5779         the answer is simple: just because I was curious on now it worked.
5781 Mon Mar 24 14:08:48 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
5783         * ace/SOCK_Dgram_Bcast.cpp (mk_broadcast): Cleaned up the code a
5784           bit.
5786         * ace/ACE: Added a new method called get_bcast_addr() which will
5787           get the broadcast address for a host.  Thanks to Paul Han
5788           <phan@CCGATE.HAC.COM> for suggesting this.
5790         * ace/UNIX_Addr: Added another set method in UNIX_Addr class:
5792           void set (const ACE_UNIX_Addr &sa);
5793           // Creates an ACE_UNIX_Addr from another <ACE_UNIX_Addr>.
5795           Thanks to Paul Han <phan@CCGATE.HAC.COM> for this.
5796           
5797         * ace/SOCK_Dgram: Removed the #if defined (ACE_HAS_IP_MULTICAST) 
5798           since this is now handled at the ACE_OS level.
5800         * ace/OS.h: Added support for IP multicast macros and structs even
5801           on platforms that don't support it so that the tests will
5802           compile without having lots of #ifdefs.
5804         * tests/Future_Test.cpp: Added a check for platforms that lack
5805           threads.  Thanks to Hakan Kallberg <hk@simulina.se>
5806           for reporting this.
5808         * netsvcs/lib/Server_Logging_Handler.cpp: Added a check for
5809           platforms that lack threads.  Thanks to Hakan Kallberg
5810           <hk@simulina.se> for reporting this.
5812         * examples/Threads/context_switch_time.cpp: Added an #ifdef for
5813           ACE_HAS_THREADS to this test so that it will compile on
5814           platforms that don't have threading.  Thanks to Scott Halstead
5815           <scott.halstead@gs.com> for reporting this.
5817         * tests/IOStream_Test.cpp: Fixed up this test so that it works
5818           correctly on platforms that lack multi-threading.  Thanks to
5819           Scott Halstead <scott.halstead@gs.com> for reporting this.
5821         * netsvcs/lib/Makefile: Reincluded the LIB target so that we'll
5822           build a static library.  Thanks to Scott Halstead
5823           <scott.halstead@gs.com> for reporting this.
5825         * ace/SOCK_Dgram.cpp (recv): Added a check to make sure that we
5826           don't try to copy more into the recv buffer than we've really
5827           got.  Thanks to Alan_Cabrera@fp.cibc.com for this fix.
5829         * ace/OS.cpp (readv): Added a check to make sure that we don't try
5830           to copy more into the recv buffer than we've really got.  Thanks
5831           to Alan_Cabrera@fp.cibc.com for this fix.
5833         * ace/Malloc.h: Modified the alignment strategy to define
5834           ACE_MALLOC_ALIGN to a number of bytes. (it gets rounded to a
5835           number of long's).  This makes it easier to work with more
5836           complex buffer alignment strategies (e.g., DMA).  Thanks to Fred
5837           LaBar <flabar@fallschurch.esys.com> for this.
5839         * ace/OS.cpp (readv): Added several more changes for the readv()
5840           emulation.  Thanks to Alan Cabrera <Alan_Cabrera@fp.cibc.com>
5841           and Adam Porter <aporter@cs.umd.edu> for these fixes.
5843 Mon Mar 24 14:22:17 1997  David L. Levine  <levine@cs.wustl.edu>
5845         * ace/OS.cpp (thr_create): For VxWorks, fixed call to ::taskSpawn ().
5846           ACE's arguments are in an array, not individual arguments.
5847           Also, set flags to VX_FP_TASK if it's 0, to match behavior
5848           of ::sp ().  Thanks to Dave Mayerhoefer
5849           <mayerhoefer@svappl36.mdc.com> for reporting these and providing
5850           the fix.
5852         * ace/High_Res_Timer.cpp (elapsed_time (struct timespec &):
5853           fixed, using same approach as in elapsed_time
5854           (ACE_hrtime_t &nanoseconds), to get nanosecond resolution.
5856         * netsvcs/lib/TS_Clerk_Handler.cpp (handle_close): added
5857           ACE_UNUSED_ARG (mask).  Also, added template specializations.
5859         * examples/Reactor/Multicast/server.cpp (Server_Events ctor):
5860           rearranged initializers to match declaration order.
5862         * examples/IOStream/server/iostream_server.cpp,
5863                             client/iostream_client.cpp:
5864           added template specializations.
5866 Mon Mar 24 13:21:31 1997  Tim H. Harrison  <harrison@lambada.cs.wustl.edu>
5868         * ace/High_Res_Timer.cpp (elapsed_time): Added an
5869           ACE_High_Res_Timer::elapsed_time (ACE_hrtime_t &nanosecond)
5870           method that returns the number of elapsed nanoseconds.  This is
5871           accomplished even with the scale factors converting to
5872           microseconds.  It also does not use floating point
5873           calculations.
5875 Sun Mar 23 13:25:39 1997  Tim H. Harrison  <harrison@lambada.cs.wustl.edu>
5877         * ace/High_Res_Timer.h: Removed <scale_factor> from the
5878           constructor of High_Res_Timer.  All High_Res_Timers now use
5879           global_scale_factor_ directly.  Hopefully, this will not break
5880           any existing code!
5882 Sat Mar 22 12:06:22 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
5884         * ace/OS.h: The include statement for config.h was too low.  Some
5885           defines for key_t, needed for NT, didn't work.  Thanks to Alan
5886           Cabrera <Alan_Cabrera@fp.cibc.com> for these fixes.
5888         * examples/Reactor/Multicast: Improved the multicast client and
5889           server programs to work better.
5891         * ace/Connector.cpp: Modified the ACE_Connector::handle_close()
5892           method to prevent recursive calls to itself.  Thanks to Paul Han
5893           <phan@CCGATE.HAC.COM> for reporting this.
5895         * ace/Svc_Handler.cpp: Put the check (closing_ == 0) in the
5896           destructor as well as in the destroy() method.  This prevents a
5897           possible core dump when the timer exists.  The instruction
5898           reactor::remove_handler in the shutdown method currently will be
5899           called twice when ACE_Svc_Handler object is being deleted.  Core
5900           dump occurs when it tries to execute ACE_Reactor::remove_handler
5901           method the second time because the ACE_Svc_Handler object
5902           pointer has already been deleted by the previous instruction
5903           ACE_Reactor::cancel_timer.  Thanks to Paul Han
5904           <phan@CCGATE.HAC.COM> for reporting this.
5906         * ace/OS.cpp: Added new thread-safe implementations of writev()
5907           and readv() for platforms that lack these functions.
5909         * ace/SOCK_Dgram.cpp: Added new implementations of
5910           ACE_SOCK_Dgram::{send,recv} that define methods for
5911           send(iovec[], ...)  and recv(iovec[], ...) for systems that
5912           don't have sendmsg() and recvmsg().  Thanks to Alan Cabrera
5913           <Alan_Cabrera@fp.cibc.com> for these fixes.
5915         * apps/jaws/HTTP_Handler.cpp: Removed some problematic template
5916           specializations that were left over from an earlier version of
5917           JAWS.  Thanks to Adam Porter <aporter@cs.umd.edu> for reporting
5918           this.
5920         * examples/Logger/Acceptor-server/server_loggerd.cpp: Revised the
5921           code to use the new ACE_Svc_Handler logic that checks to ensure
5922           that we don't recurse infinitely in handle_close().
5923           Thanks to Jean-Marc Strauss <strauss@club-internet.fr> for
5924           reporting this problem.
5926         * examples/Logger/simple-server/Logging_Handler.cpp
5927           (handle_close): Added a check to make sure we don't end up
5928           recursively calling handle_close().  This will prevent
5929           a segfault.
5931 Sat Mar 22 07:30:49 1997  David L. Levine  <levine@cs.wustl.edu>
5933         * ace/High_Res_Timer.*: Changed scale factor to convert
5934           platform-dependent clock units to microseconds instead of
5935           nanoseconds.  That way, it should be greater than 1 for
5936           all supported platforms.  So, it's now an unsigned long
5937           instead of a double.
5939         * ace/OS.h: Changed ACE_hrtime_t to unsigned __int64 with
5940           _MSC_VER.  Also, fixed typo: "uint64" instead of "unit64"
5941           without _MSC_VER.
5943 Fri Mar 21 08:37:34 1997  Carlos O'Ryan  <coryan@charlie>
5945         * makeinclude/rules.lib.GNU:
5946         I use the macro SOEXT to support HP non-standard extension for
5947         shared library names (.sl instead of .so).
5948         I also changed the rule to build shared libraries: under HP-UX you
5949         cannot pass extra libraries (-lXXX options) when building a shared
5950         lib. Before HP-UX 10.10 it wasn't a problem because no library was
5951         needed with ACE, but to support XLI the '-lxti' flag must be used
5952         on binaries (but not on shared libs).
5954         * include/makeinclude/platform_hpux.GNU: 
5955         The PIC option (+Z) was used always, clearly not intended.
5957         * include/makeinclude/platform_hpux_gcc.GNU: 
5958         Added a config file for g++ under HP-UX.
5960         * include/makeinclude/platform_hpux_aCC.GNU: 
5961         Added a config file for HP/aCC compiler under HP-UX.
5963         * ace/Makefile: 
5964         * netsvcs/lib/Makefile: 
5965         Changed to support the SOEXT macro.
5967         * config-hpux-10.x.h: 
5968         * config-hpux-10.x-aCC.h: 
5969         * config-hpux-10.x-g++.h: 
5970         I updated the files to HP-UX 10.10, AFAIK since that version HP-UX
5971         uses fd_set instead of int in select(2) (so ACE_SELECT_USES_INT is
5972         not needed) and the OS supports siginfo_t and ucontext_t so
5973         ACE_HAS_SIGINFO_T and ACE_HAS_UCONTEXT_T are defined.
5974         I *do not* have threads at my site nor the infamous PHSS_6246
5975         patch so I couldn't test the threaded version nor the HP cfront
5976         based one.
5977         ACE compiled fine with g++ and HP/aCC though.
5979         * ace/OS.h: 
5980         * ace/Malloc_T.h: 
5981         HP/aCC supports the typename keyword. I added a new config macro
5982         'ACE_HAS_TYPENAME_KEYWORD', when it is defined ACE_TYPENAME
5983         expands to 'typename' when not it expands to nothing.
5984         On the cases where HP/aCC requires the usage of 'typename' I added
5985         a 'ACE_TYPENAME'.
5987         * ace/OS.i: 
5988         * ace/OS.cpp: 
5989         ACE_OS::inet_aton cannot be inlined under HP-UX.
5991         * ace/Connector.h: 
5992         * ace/Connector.cpp: 
5993         I have decided to use a typedef (PEER_ADDR) instead of
5994         ACE_PEER_CONNECTOR_ADDR, mainly because the second form
5995         requires a ACE_TYPENAME before each usage.
5997         * ace/Event_Handler_T.i: 
5998         Much to my surprize ACE_TYPENAME is required when using a template
5999         typedef as a return value.
6001         * ace/Local_Name_Space_T.h: 
6002         HP/aCC does not like the usage of a private typedef from another
6003         class.
6005         * ace/Strategies_T.h: 
6006         * ace/Strategies_T.cpp: 
6007         ACE_Process_Strategy declared two defaults constructors:
6008         ACE_Process_Strategy(void) and ACE_Process_Strategy(int = 1).
6009         The constructor code was wrong, it called open() with parameters:
6010         open(thr_mgr, thr_flags, n_threads)
6011         none of which were defined, worse, open() receives just one
6012         parameter (the number of processes) just as the constructor, I
6013         believe that C-w programming is lurking here.
6015         * ace/Signal.cpp: 
6016         Though the header file does not declare ACE_Sig_Handlers under
6017         HP-UX (and the code is not defined too) some auxiliary functions
6018         that use ACE_Sig_Handlers were defined. I removed their
6019         definition.
6020         Some day I'll try to take a look at the code, trying to find out
6021         was wrong with them.
6023         * ace/Stream_Modules.h: 
6024         * ace/Stream_Modules.cpp: 
6025         By mistake I commented out the ACE_ALLOC_HOOK_* macros; have to
6026         fix it *real soon*.
6028         * ace/Task_T.cpp: 
6029         No need to include "ace/Module.h" since only the template
6030         declaration is used. When ACE_TEMPLATES_REQUIRE_SOURCE is defined
6031         you end up using ACE_Thru_Task before it gets defined.
6032         This is no problem unless your compiler checks template sintax
6033         before instantiation as the HP/aCC compiler do.
6035         * examples/Reactor/Misc/test_demuxing.cpp: 
6036         ACE_MT_SYNCH was used, but it is only defined if ACE_HAS_THREADS,
6037         I used ACE_SYNCH instead, which is defined as ACE_MT_SYNCH if
6038         ACE_HAS_THREADS and as ACE_NULL_SYNCH if not.
6039         Maybe the semantics are wrong, but the thing compiles.
6041 Fri Mar 21 15:10:59 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
6043         * ace/Makefile (FILES): Moved Log_Msg to the beginning of the
6044           source list in the ace Makefile.  This is nice because it forces
6045           the compilation of OS.i and that, obviously, is where you get
6046           the complaints for the port.  It's nice to have it at the
6047           beginning so you catch the errors very early on before you've
6048           compiled 30 or 40 files.  Thanks to Scott Halstead
6049           <scott.halstead@gs.com> for this suggestion.
6051         * ace/Memory_Pool.cpp: Added #if !defined
6052           (ACE_LACKS_SYSV_SHMEM) to handle systems like Chorus that
6053           lack this feature.  
6055 Thu Mar 20 18:58:50 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
6057         * ace/Svc_Handler.cpp (destroy): Added a state variable to keep
6058           track of when we are closing down the Svc_Handler.  This is
6059           necessary to prevent endless recursive calls to handle_close()
6060           due to the recent enhancements to ACE_Timer_{List,Heap}.  Thanks
6061           to Bert Craytor <Bert_Craytor@peoplesoft.com> for reporting
6062           this.
6064         * tests/Conn_Test.cpp: Added a new test that makes sure the
6065           Acceptor, Connector, and Svc_Handler are working correctly.
6067         * ace: Added some more changes for Chorus.  Thanks to Wei Chiang
6068           <chiang@tele.nokia.fi> for these changes.
6070         * ace/OS.h: Added #define for SIGSEGV for platforms that lack it
6071           (e.g., Chorus).
6073         * ace: Made a bunch of minor changes to support SunOS 4.x better.
6074           Thanks to Scott Halstead <scott.halstead@gs.com> for reporting
6075           these problems.
6077         * tests/Conn_Test.cpp: Added ACE_TEMPLATES_REQUIRE_SPECIALIZATION
6078           for the various templates used in this test.  Thanks to Thilo
6079           Kielmann <kielmann@informatik.uni-siegen.de> for reporting this.
6081         * ace/Connector.cpp (connector): Fixed some minor bugs that
6082           prevented the ACE_Connector from compiling.  Thanks to David
6083           Levine for noticing this.
6085         * ace/OS.h: Moved the ACE_LACKS_SIGACTION block so that it will
6086           work on Win32.  Thanks to Matthias Kerkhoff
6087           <make@cs.tu-berlin.de> for pointing this out.
6089 Thu Mar 20 22:38:27 1997  David L. Levine  <levine@cs.wustl.edu>
6091         * ace/Timer_Heap.cpp: added template specializations.
6093         * netsvcs/lib/Client_Logging_Handler.cpp,
6094                       Name_Handler.cpp
6095                       Server_Logging_Handler.cpp
6096                       TS_Clerk_Handler.cpp
6097                       TS_Server_Handler.cpp
6098                       Token_Handler.cpp: added template specializations.
6099           There are still many missing from libnetsvcs.
6101         * tests/Conn_Test.cpp,
6102                 Future_Test.cpp
6103                 IOStream_Test.cpp
6104                 Map_Manager_Test.cpp
6105                 Message_Block_Test.cpp
6106                 Message_Queue_Test.cpp
6107                 Reader_Writer_Test.cpp
6108                 SV_Shared_Memory_Test.cpp
6109                 Thread_Pool_Test.cpp}: added template specializations.
6110           Thanks to Thilo Kielmann <kielmann@informatik.uni-siegen.de>
6111           for providing these.
6113         * ace/Log_Msg.cpp: removed commented-out template specialization.
6115         * include/makeinclude/platform_{chorus,hpux,hpux_gcc}.GNU:
6116           split out CFLAGS and CCFLAGS from CC and CXX.
6118         * ace/config-aix-4.[12].x.h: added back ACE_HAS_THREAD_SELF and
6119           and ACE_HAS_SVR4_DYNAMIC_LINKING; removed ACE_HAS_PTHREAD_T.
6120           Thanks to Chris Lahey <CLahey@cccis.com> for figuring these out.
6122 Thu Mar 20 12:25:30 1997    <harrison@samba.cs.wustl.edu>
6124         * ace/ace.{mak,mdp}: Build->Settings->Code Generation->Processor is
6125           now set to "Pentium" instead of "Blend*" for Debug and Release
6126           builds.
6128         * ace/config-win32-msvc4.x.h:
6129         * ace/config-win32-msvc2.0.h:
6130         * ace/config-winnt-4.0-msvc4.x.h: Only define ACE_HAS_PENTIUM when
6131           _M_IX86 == 500.  Projects must specify Pentium in
6132           Build->Settings->Code Generation->Processor to use the RDTSC
6133           instruction in ACE_OS::gethrtime.
6135         * ace/High_Res_Timer.{cpp,i}: By default, High_Res_Timer is
6136           constructed with a scale_factor == 1.  This allowed me to remove
6137           all the checks for scale_factor == 0 in the code.
6139         * ace/High_Res_Timer.h (static gettimeofday): If
6140           global_scale_factor_ is not set, and we're on a platform that
6141           requires global_scale_factor_ (e.g., Win32),
6142           ACE_OS::gettimeofday will be used instead of ACE_OS::gethrtime.
6143           This allows the scale_factor of 1 to still result in correct
6144           values.
6146 Wed Mar 19 15:02:09 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
6148         * ace: Added zillions of minor changes so that ACE will compile on
6149           the new aCC compiler for HPUX.  Thanks to Gonzalo A. Diethelm
6150           <gonzo@ing.puc.cl> and Carlos O'Ryan <coryan@mat.puc.cl> for
6151           help with this.
6153         * ace/SOCK_Dgram_Mcast.cpp (subscribe): In addition to the
6154           SO_REUSEADDR option, Irix has a SO_REUSEPORT option that must
6155           also be set to allow multiple sockets to bind to the same
6156           multicast address.  Thanks to Robert V. Head <rhead@vtcs20a> for
6157           reporting this.
6159         * ace: Added a slew of changes to support CHORUS.  Thanks to
6160           Wei Chiang <chiang@tele.nokia.fi> for these changes.
6162         * ace/config-sunos4.*.h: Added #define ACE_HAS_UNION_WAIT based
6163           on the recommendation of Kumar Neelakantan
6164           <kneelaka@painewebber.com>.
6166         * ace/Log_Msg.cpp (log_hexdump): Replaced the use of ::sprintf()
6167           with ACE_OS::sprintf() so that the return value would be correct
6168           on SunOS 4.x!
6170         * ace/OS: Added ACE_HAS_CHARPTR_SPRINTF and ACE_SPRINTF_ADAPTER
6171           to ACE_OS::sprintf() for SunOS 4.x platforms.  Thanks to Kumar
6172           Neelakantan <kneelaka@painewebber.com> for reporting this.
6174         * ace/Handle_Set.cpp (ACE_Handle_Set_Iterator): If the bound was
6175           reached in the following loop, we should set this->num_ =
6176           this->handles_.max_handle_ + 1 rather than go into the 2nd loop.
6177           Thanks to Michael Newton <michaeln@in.ot.com.au> for reporting
6178           this.
6180         * ace/Handle_Set.cpp (ACE_Handle_Set_Iterator):
6181           ACE_Handle_Set_Iterator::ACE_Handle_Set_Iterator did not work
6182           properly if called with a zero handleset, as there was no bounds
6183           check on the first loop therein.  Thanks to Michael Newton
6184           <michaeln@in.ot.com.au> for reporting this.
6186 Wed Mar 19 16:06:32 1997  David L. Levine  <levine@cs.wustl.edu>
6188         * ace/OS.h,README: added ACE_HAS_AIX_BROKEN_SOCKET_HEADER to wrap
6189           #include of sys/socket.h with #undef/#define of __cplusplus.
6191         * ace/config-aix-4.[12].x.h: added ACE_HAS_AIX_BROKEN_SOCKET_HEADER,
6192           ACE_HAS_PTHREAD_T, ACE_LACKS_TCP_H, and ACE_LACKS_SETSCHED.
6193           Removed ACE_HAS_SVR4_DYNAMIC_LINKING and ACE_HAS_THREAD_SELF.
6195         Thanks to Daniel Montalibet <daniel_montalibet@stortek.com> for
6196         both of the above modifications.
6198         * platform_{dgux4_epc,irix5.3_g++,linux*,m88k,osf1_3.2,sco*,
6199           sunos4_g++,sunos5_centerline*,sunos5_g++,sunos5_sunc++*,
6200           unixware_g++,vxworks5.2_g++}.GNU: split out CFLAGS and CCFLAGS.
6201           Also, removed -lstdc++/-lm from g++ versions, because we now set
6202           CXX to g++ instead of gcc, so those libraries are picked up.
6204         * include/makeinclude/platform_osf1_4.0{,_g++}.GNU:
6205           added -lrt to support ACE_Sched_Params.  Thanks to
6206           Thilo Kielmann <kielmann@informatik.uni-siegen.de> for
6207           suggesting this.  Also, split out CFLAGS and CCFLAGS.
6209         * ace/OS.h: removed SVR4_DYNAMIC_LINKING protection around
6210           #define of RTLD_LAZY because it's used in ace/Parse_Node.cpp.
6211           Thanks to Matthias Kerkhoff <make@cs.tu-berlin.de> for pointing
6212           this out.
6214         * ace/OS.i (thr_setcanceltype): added ACE_UNUSED_ARGS for STHREADS
6215           case.  Thanks to Chuck Gehr <gehr@sweng.stortek.com> for
6216           providing this fix.
6218 Tue Mar 18 21:53:03 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
6220         * ace/SOCK_Dgram_Bcast.cpp (mk_broadcast): Modified the
6221           SOCK_Dgram_Bcast class by adding a const char *host_name to the
6222           contructor, and open, and mk_broadcast methods.  If the user
6223           passes in the host_name, then only the broadcast address of an
6224           interface that has a matching ip address with the host will be
6225           added to the if_list_.  Otherwise, nothing changes.  Thanks to
6226           Paul <phan@CCGATE.HAC.COM> for this feature.
6228 Tue Mar 18 13:20:59 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
6230         * ace/ace.mdp: Reverted the change for DllMain as the entry point
6231           to ace.dll.  This is causing problems in multi-threaded
6232           applications. 
6234         * netsvcs/lib/Client_Logging_Handler.cpp: Added a check in fini()
6235           to make sure we have a valid handler.  If the connect attempt
6236           failed, this->handler_ will be set to 0.
6238         * tests/Mem_Map_Test.cpp: Added code that removes all temporary
6239           files created by the test.
6241         * tests/Time_Service_Test.cpp: Made sure we remove the backing
6242           store file left behind by a aborted clerk process.
6244         * examples/Reactor/Ntalker/ntalker.cpp: The ntalker now uses
6245           ACE::register_stdin_handler to register the STDIN. This function
6246           allows for portability.
6248 Tue Mar 18 08:12:22 1997  David L. Levine  <levine@cs.wustl.edu>
6250         * ace/Svc_Conf_y.cpp,Makefile: replaced "y.tab.c" string with
6251           "Svc_Conf_y.cpp" to ease debugging.  Thanks to Luca Priorelli
6252           <lucapri@mbox.vol.it> for suggesting this.
6254         * ace/IOStream.cpp (close): replaced call to
6255           ACE_SOCK_Stream::close () with one to generic STREAM::close ().
6256           Thanks to Kumar Neelakantan <kneelaka@painewebber.com> for
6257           reporting this problem.
6259         * ace/OS.h,README,config-*.h: removed ACE_HAS_RTLD_LAZY_V, and
6260           replaced with #define of RTLD_LAZY macro only if it's not
6261           already defined (and if ACE_HAS_SVR4_DYNAMIC_LINKING is defined).
6262           Thanks to Chris Lahey <CLahey@cccis.com> for providing this fix.
6264         * ace/OS.i (thr_setcancelstate, thr_setcanceltype, thr_cancel):
6265           added ACE_UNUSED_ARG calls to avoid compiler warnings.  Thanks
6266           to Chuck Gehr <gehr@sweng.stortek.com> for suggesting them.
6268         * ace/Local_Name_Space_T.h: moved #include of Local_Name_Space.h up
6269           because this file needs declaration of ACE_NS_String.  There
6270           _shouldn't_ be a circular include problem because the #includes are
6271           protected.  Thanks to Daniel Montalibet
6272           <daniel_montalibet@stortek.com> for reporting this problem and
6273           providing the fix.
6275         * ace/Local_Name_Space.h: removed #include of ace/Service_Config.h.
6277         * include/makeinclude/wrapper_macros.GNU: put -I. before
6278           -I$(WRAPPER_ROOT) instead of after.
6280         * tests/IOStream_test.cpp: added checks for receipt of proper values.
6282 Tue Mar 18 01:38:14 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
6284         * ace/ace.mdp: Add DllMain as the entry point of ace.dll.  This
6285           allows us to call WSAStartup when ace.dll is loaded in and
6286           WSACleanup when ace.dll is unloaded.  People using ace as a
6287           static library are still out in the cold with respect of getting
6288           WSACleanup called before the process exits. 
6289         
6290           I am not sure of two cases: (1) What happens when an application
6291           crashes and was not able to call WSACleanup and (2) if the
6292           application wants to continue using sockets when ace.dll is
6293           unloaded.  I hope this solves more problems than it creates ;-)
6295 Tue Mar 18 01:38:14 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
6297         * ace/Parse_Node.cpp: Added END_OF_LINE characters to some
6298           ACE_ERRORs.
6300         * netsvcs/{lib,servers}: Fixed the project files to produce and
6301           use the dll in the correct place (which is netsvcs/lib).
6303         * ace/Log_Record.cpp: Corrected format string for fprintf().
6305         * examples/Threads/test.mdp: Added context_switch_time.cpp to the
6306           project.
6308           All of the above bugs were reported by Luca Priorelli
6309           <lucapri@mbox.vol.it>.  Thanks for the contribution.
6311 Mon Mar 17 12:59:56 1997  David L. Levine  <levine@cs.wustl.edu>
6313         * ace/OS.{h,i}: added nanosleep (), currently supported only
6314           on POSIX platforms (if ACE_HAS_CLOCK_GETTIME is defined).
6316         * examples/Mem_Map/IO-tests/{IO_Test.cpp,test_io.cpp):
6317           LM_ERROR instead of ACE_ERROR, and fixed call to ACE::basename ().
6319         * ace/OS.cpp (sched_params): return -1 if not supported,
6320           instead of ENOTSUP.
6322         * ace/OS.cpp (fork): added ACE_UNUSED_ARG (program_name) for WIN32
6323           and VxWorks.
6325         * ace/Sched_Params.cpp (priority_min, priority_max, next_priority,
6326           previous_priority): not supported on MVS, via ACE_LACKS_SETSCHED.
6327           Thanks to Chuck Gehr <gehr@sweng.stortek.com> for figuring this
6328           out and providing the fix.
6330         * tests/Timer_Queue_Test.cpp (test_performance): changed type of
6331           local variable "i" to (signed) int to avoid signed/unsigned
6332           comparison, and eventual seg fault because a loop would never
6333           terminate.
6335 Sun Mar 16 11:31:46 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
6337         * ace/Timer_{List,Queue,Heap}.h: Defined copy constructors and
6338           assignment operators in the private part of the class so that
6339           users won't accidentally make mistakes.
6341 Sat Mar 15 21:44:45 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
6343         * ace/Timer_{Queue,List}.cpp (cancel): handle_close() should be
6344           called only once (especially when handle_close() implements
6345           "delete this;" ).  Since it is possible that the EH will be
6346           registered more than once, I changed the code to do the
6347           following:
6349           if (number_of_cancellations == 1)
6350             // Call the close hook.
6351             curr->handler_->handle_close (ACE_INVALID_HANDLE, 
6352                                           ACE_Event_Handler::TIMER_MASK);
6354           Thanks to Hamutal Yanay <Hamutal_Yanay@mail.icomverse.com> for
6355           suggesting this.
6357         * examples/Mem_Map/IO-tests/test_io.cpp (run_tests): Removed all
6358           uses of ::perror and replaced them with calls to ACE_ERROR
6359           macros.
6361         * ace/Mem_Map.i (unmap): The ACE_Mem_Map::close method does not
6362           work properly if the value of file_mapping_ is equal to
6363           ACE_INVALID_HANDLE.  In this case the method calls a useless
6364           close (-1).  Therefore, I changed:
6366           if (this->file_mapping_ != this->handle_)
6367             ACE_OS::close (this->file_mapping_);
6369           in:
6371           if (this->file_mapping_ != this->handle_ &&
6372               this->file_mapping_ != ACE_INVALID_HANDLE)
6373             ACE_OS::close (this->file_mapping_);
6375           Thanks to Sandro Doro <alex@aureus.sublink.org> for reporting
6376           this.
6378 Thu Mar 13 18:21:15 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
6380         * ace/ReactorEx.h: Change protection of methods/variables of
6381           ReactorEx from private to protected. Thanks to Matthias Kerkhoff
6382           <make@cs.tu-berlin.de> for suggesting this.
6384 Thu Mar 13 16:31:54 1997  David L. Levine  <levine@cs.wustl.edu>
6386         * ace/OS.i (thr_getprio): Added missing ACE_NOTSUP_RETURN
6387           for the case of pthreads && !defined (ACE_LACKS_SETSCHED).
6388           Thanks to Chuck Gehr <gehr@sweng.stortek.com> for
6389           reporting this.
6391 Thu Mar 13 00:12:15 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
6393         * ace/Local_Name_Space_T.cpp (dump): Added ACE_UNUSED_ARG around
6394           fake_this to stop the compiler from complaining about unused
6395           variables.
6397         * ace/Message_Block.cpp (ACE_Data_Block::size): Moved the copying
6398           of the old base before freeing it up. Thanks to Dieter Quehl
6399           (dietrich.quehl@med.siemens.de) for pointing this out.
6401         * ace/Local_Name_Space_T.cpp: Added code to the list methods such
6402           that structured exceptions are handled correctly.  Thanks to
6403           Karlheinz Dorn (karlheinz.dorn@med.siemens.de) for reporting
6404           this.
6406 Wed Mar 12 21:31:51 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
6408         * examples/Reactor/Ntalker/ntalker.cpp: Made changes to the
6409           program which allows it to run under Win32. 
6411         * ace/SOCK_Dgram_Mcast.cpp: Made changes to the setting of the
6412           interface address so that it works correctly under Win32. 
6413           Thanks to Todd L. Montgomery (tmont@cs.wvu.edu), Anton van
6414           Straaten (anton@appsolutions.com), Ole O. Johnsen
6415           (Ole.Johnsen@gpi.telemax.no), Mike Flinn
6416           (mike.flinn@smtpgate.aws.waii.com), Steve Weismuller
6417           (spweismu@rsoc.rockwell.com) and others who helped out.
6419 Wed Mar 12 17:05:52 1997  Chris Cleeland  <cleeland@cs.wustl.edu>
6421         * ace/config-linux-lxpthreads.h: Added ACE_HAS_IP_MULTICAST.
6423 Wed Mar 12 16:07:07 1997  David L. Levine  <levine@cs.wustl.edu>
6425         * ace/OS.i (gethrtime): Added support for VxWorks and
6426           other platforms that support ACE_HAS_CLOCK_GETTIME.
6428 Tue Mar 11 21:38:42 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
6430         * ace/OS.i (open): Improved support for passing flags through to
6431           CreateFile ().
6433 Tue Mar 11 14:30:12 1997  David L. Levine  <levine@cs.wustl.edu>
6435         * ace/config-vxworks-ghs-1.8.h: added ACE_LACKS_SYS_NERR.
6436           Thanks to Dave Mayerhoefer <mayerhoefer@svappl36.mdc.com> for
6437           reporting this.
6439         * ace/OS.{i,cpp} (uname, hostname): added VxWorks support.
6440           Thanks to Dave Mayerhoefer <mayerhoefer@svappl36.mdc.com> for
6441           providing this.  (Also, uninlined ACE_OS::uname on WIN32
6442           and VxWorks because it contains string literals.)
6444         * ace/High_Res_Timer.{i,cpp}: fixed interpretation of units:
6445           ACE_hrtime_t is in nanoseconds, so it should be divided by
6446           1000000000 to get seconds.  Fixed divs/mods to first divide
6447           by 1000, then div/mod.  Thanks to Luca Priorelli
6448           <lucapri@mbox.vol.it> for identifying this problem.
6450           Also, removed some casts that are no longer necessary, and
6451           added some casts of ACE_hrtime_t values to longs to avoid
6452           compiler warnings.  Thanks to Matthias Kerkhoff
6453           <make@cs.tu-berlin.de> for pointing this out.
6455         * ace/Reactor.cpp (unbind): cast "index" to int to avoid
6456           signed/unsigned comparison.  Thanks to Matthias Kerkhoff
6457           <make@cs.tu-berlin.de> for pointing this out.
6459         * ace/ReactorEx.cpp (bind): changed type of "current_size" to
6460           size_t to avoid signed/unsigned comparison.  Thanks to Matthias
6461           Kerkhoff <make@cs.tu-berlin.de> for pointing this out.
6463         * ace/Timer_Heap.cpp (ctor, grow_heap): cast unsigned value
6464           (i + 1) to int before negating to avoid compiler warning.
6465           Thanks to Matthias Kerkhoff <make@cs.tu-berlin.de> for pointing
6466           this out.
6468         * examples/Threads/context_switch_time.cpp (main): added
6469           ACE_SCOPE_PROCESS param to ACE_Sched_Params instances so
6470           that the test works on WIN32.  Thanks to Luca Priorelli
6471           <lucapri@mbox.vol.it> for identifying this problem.
6473         * ace/Registry.{h,cpp},Registry_Name_Space.{h,cpp},Svc_Conf_Tokens.h,
6474           Svc_Conf_{l,y}.cpp,Timer_{Heap,List}.cpp,config-aix-4.2.x.h,
6475           config-dgux-4.11-epc.h,config-mvs.h,config-sco-5.0.0-fsu-pthread.h,
6476           config-sco-5.0.0-mit-pthread.h,config-sco-5.0.0-nothread.h:
6477           added CVS header (Id wrapped in $).
6479         * netsvcs/clients/Logger/indirect_logging.cpp (main): declare loop
6480           index as signed int to avoid signed/unsigned comparison.
6482 Tue Mar 11 07:34:04 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
6484         * tests/Timer_Queue_Test.cpp: Added some code to illustrate how
6485           the new handle_close() hook for ACE_Timer_{Heap,List} work.
6487         * ace/Timer_Heap.cpp (cancel): Modified the Timer_Heap and
6488           Timer_Queue so that it will call the handle_close() hook when
6489           Event_Handler's are cancelled.  This is necessary to reclaim
6490           resources.  Thanks to Hamutal Yanay
6491           <Hamutal_Yanay@mail.icomverse.com> for suggesting this.
6493         * ace/Event_Handler.h (signal): Added a TIMER_MASK, which is
6494           passed to handle_close() when a timer is cancelled.
6496         * ace/Log_Msg.cpp (log): Fixed a bug by setting LPTSTR lpMsgBuf =
6497           0 on line 524.  Thanks to Mark Wright <markw@odi.com.au> for
6498           reporting this.
6500 Sun Mar  10 13:06:04 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
6502         * examples/Mem_Map/IO-tests: Fixed a small bug in "IO_Test.cpp"
6503           file.  In the "int Mmap1_Test::run_test" method I inserted an
6504           lseek to rewind the output file.  With this correction the speed
6505           go up due to IO cache.  Thanks to Sandro Doro
6506           <alex@aureus.sublink.org> for reporting this.
6508 Sun Mar  9 18:24:37 1997  Prashant Jain  <pjain@merengue.cs.wustl.edu>
6510         * java/src/IOCntlMsg.java (IOCntlMsg): Added two new
6511           classes/files, namely IOCntlCmds and IOCntlMsg.
6513         * java/src/Task.java: Added accessors to get/set the flags of the
6514           Task. 
6516 Sun Mar  9 13:06:04 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
6518         * ace/Reactor: Fixed an evil bug where the expression
6519         
6520           if (handle >= 0 || handle < this->max_handlep1_)
6521           
6522           should be
6523           
6524           if (handle >= 0 && handle < this->max_handlep1_)
6526           Thanks to Mark Wright <markw@odi.com.au> for reporting this.
6528 Sun Mar  9 13:06:04 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
6530         * apps/Gateway: Updated the Peer and Gateway applications so that
6531           they don't try to register ACE_STDIN with the Reactor on Win32.
6533         * apps/Gateway: Changed a bunch of calls to
6534           ACE_Reactor::remove_handler() so that it no longer tries to
6535           remove descriptor 0, but instead uses ACE_STDIN.  Naturally,
6536           this doesn't work due to the way that Win32 implements select()
6537           but at least it compiles...  Thanks to Elliot Lau
6538           <eeklau@post1.com> for reporting this.
6540         * apps/Gateway/Gateway/File_Parser: Changed the enumerated type
6541           ERROR to PARSE_ERROR to avoid a name clash with a symbol
6542           reserved by Win32 (barf).  Thanks to Elliot Lau
6543           <eeklau@post1.com> for reporting this.
6545 Sat Mar  8 12:37:44 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
6547         * ace/Log_Msg.cpp: Changed the implementation of ACE_Log_Msg so
6548           that all accesses to the lock_ are now through a Singleton.
6549           This makes it possible to define multiple instances of
6550           ACE_Log_Msg within the same thread.  Thanks to Jeff Morgan
6551           <jeff@audioactive.com> for helping track this down.
6553         * Added support for SCO 5.0.  Thanks to Auturo
6554           <mitosys@colomsat.net.co> for these patches.
6556 Thu Mar 06 13:24:04 1997  David L. Levine  <levine@cs.wustl.edu>
6558         * ace/OS.i (gettimeofday): moved declaration of "result" so
6559           that it's not declared on VxWorks, where it's not needed;
6560           (stat): added cast of file arg to char * for VxWorks;
6561           (thr_getprio): added missing "#else" before ACE_NOTSUP_RETURN (-1).
6562           Thanks to Dave Mayerhoefer <mayerhoefer@svappl36.mdc.com> for
6563           reporting these.
6565         * ace/OS.cpp (sched_param): with STHREADS, map ACE_SCOPE_THREAD
6566           to ACE_SCOPE_PROCESS'.
6568         * ace/Svc_Conf_l.cpp: commented out YY_BREAK after ace_yyterminate ()
6569           to avoid GHS compiler warning about unreachable statement.
6570           Thanks to Dave Mayerhoefer <mayerhoefer@svappl36.mdc.com> for
6571           reporting this.
6573         * ace/ace.mak: removed Thread_Priority and renamed Scheduling_Params
6574           to Sched_Param.
6576         * examples/IPC_SAP/SOCK_SAP/FD-unserver.cpp (handle_client):
6577           added "l" qualifier for sprintf of ACE_OS::getpid ().
6579         * tests/Priority_Task_Test.cpp,
6580           examples/Threads/{context_switch_time.cpp,Makefile}:
6581           adapted to new thread priority/ACE_Sched_Params.
6583 Wed Mar  5 14:33:04 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
6585         * ace/UNIX_Addr.cpp: Enhanced the implementation of set() so
6586           that it works correctly on MVS, which has a different definition
6587           of struct sockaddr_un:
6588           
6589           struct sockaddr_un {                                               
6590                 unsigned char  sun_len;                                         
6591                 unsigned char  sun_family;                                      
6592                 char  sun_path[108];                                   
6593           };
6595           Thanks to Chuck Gehr <gehr@sweng.stortek.com> for reporting
6596           this.
6598 Wed Mar 05 14:47:14 1997  David L. Levine  <levine@cs.wustl.edu>
6600         * ace/OS.{h,cpp},Makefile; also, renamed Scheduling_Params.* to
6601           Sched_Params.* and removed Thread_Priority.*:
6603           Major change in scheduling parameters interface:
6604           The key change is that there is no longer a special thread priority
6605           enum.  Thread_Priority was changed to int, so applications can do
6606           whatever they want.  The ACE_Sched_Params class has some static
6607           functions to help do this portably.
6609           Here  are the changes from the ACE 4.1.3:
6611           1) ACE_Thread_Priority:  removed this class.
6613             It contained "priority class" and "thread priority".
6614             "Priority class" is platform-specific and doesn't
6615             need to be visible in ACE; it is subsumed by scheduling policy,
6616             see below.  "Thread priority" is replaced by the global
6617             ACE_Sched_Priority typedef in ace/OS.h, see next change.
6619           2) ace/OS.h:  added ACE_Sched_Priority typedef (to int)
6620              and ACE_SCOPE_THREAD.
6622           3) ace/OS.h:  added scheduling policy #defines:  ACE_SCHED_OTHER,
6623              ACE_SCHED_FIFO, and ACE_SCHED_RR.  There's an ACE_Sched_Params::
6624              Policy typedef that can take one of these values.
6626           4) ACE_Sched_Params:  added priority_min (), priority_max (),
6627              next_priority (), and previous_priority () functions.  All
6628              require an ACE_Sched_Params::Policy argument and take an
6629              optional scope argument (to support the distinct thread
6630              and process priorities on DEC UNIX).
6632              min_priority () and max_priority () have platform-specific
6633              and policy-specific values, and direction (the min value may
6634              be higher than the max value).  The increment and decrement
6635              operations allow applications to iterate over them, etc.,
6636              without explicitly specifying the direction of the priority
6637              (0 for high or low priority).
6639           5) The only way to apply ACE_Sched_Params is through
6640              ACE_OS::sched_params (const ACE_Sched_Params &).
6641              (This is not really a change, except for the name change from
6642              ACE_OS::set_sched_params ().
6644              It sets both policy and priority of current thread or
6645              process (depending on the scope in ACE_Sched_Params).
6646              Not all combinations of policy, priority, and scope are
6647              legal on all platforms.  Unfortunately, I see no way around
6648              this, because the intersection of legal ranges
6649              on our supported platforms is empty.  If an illegal request
6650              is made, ACE_OS::sched_params () sets errno to EINVAL and
6651              returns -1.
6653           6) added ACE_OS::thr_setprio (const ACE_Sched_Priority prio)
6654              to set the current thread's priority, only.
6656           Many thanks to Thilo Kielmann <kielmann@informatik.uni-siegen.de>
6657           for his careful review of this class design, thoughtful comments,
6658           and assistance with implementation, especially for PTHREADS
6659           platforms.
6661 Wed Mar  5 14:36:59 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
6663         * SString.cpp: Fixed ACE*String initialization bugs. Thanks to
6664           jmorey@tbi.com (John Morey) for reporting this.
6666 Wed Mar  5 14:33:04 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
6668         * ace/OS.i: Fixed a bug in gethrtime
6670           const ACE_Time_Value now = ACE_OS::gettimeofday (void);
6672           which should be
6674           const ACE_Time_Value now = ACE_OS::gettimeofday ();
6676           Thanks to Chuck Gehr <gehr@sweng.stortek.com> for reporting
6677           this.
6679 Tue Mar  4 16:37:26 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
6681         * examples/IPC_SAP/SOCK_SAP/CPP-unserver.cpp (main): Make life
6682           easier by doing an unlink(rendezvous) before reopening the
6683           UNIX-domain socket.  Thanks to Jeff Morgan
6684           <jeff@audioactive.com> for suggesting this.
6686 Sun Mar 02 19:58:00 1997  David L. Levine  <levine@cs.wustl.edu>
6688         * ace/config*.h: removed #define of ACE_HAS_INLINED_OSCALLS
6689           because it's no longer needed in the config files:  it's
6690           #defined in OS.h if needed.
6692 Sun Mar  2 17:14:29 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
6694         * include/makeinclude: Updated all the platform-*g++.GNU files so
6695           that they no longer -D__ACE_INLINE__ (since this is handled in
6696           the the config-*g++.h files).
6698         * ace: Updated all the config-*g++.h files so that they now
6699           #define __ACE_INLINE__ rather than having this set in the
6700           platform_*.GNU file.  This makes ACE easier to build and
6701           integrate with other software packages.
6703 Fri Feb 28 02:22:33 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
6705         * ace/SOCK_*: There were problems starting UDP broadcast servers
6706           (all using the same well known port number) multiple times on
6707           one machine (this is very useful test distributed applications
6708           on one single machine).  Setting the SO_REUSEADDR option for the
6709           broadcast socket allows binding of a socket that is already in
6710           use and thus allows us to start more than one broadcast servers
6711           in parallel on one machine.  Thanks to Dieter Quehl
6712           <dietrich.quehl@med.siemens.de> for this fix.
6714           Therefore, I patched ACE_SOCK_Dgram_Bcast, ACE_SOCK_Dgram and
6715           ACE_SOCK to include this feature.  In addition, I also changed
6716           ACE_SOCK_Connector/ACE_SOCK_Acceptor to use this feature instead
6717           of calling setsockopt() there explicitly.
6719         * examples/IPC_SAP/SOCK_SAP/FD-unserver.cpp (main): Fixed up the
6720           use of ACE_OS::fork() here to use the new "named" version.
6722         * ace/OS.h: Added a clever new wrapper function called fork (const
6723           char *program_name), which calls fork() and then automatically
6724           calls ACE_LOG_MSG->sync (program_name) to sync up the program
6725           name.  This eliminates a common source of error when forking
6726           children and using ACE_Log_Msg::log().
6728         * examples/IPC_SAP/SOCK_SAP/FD-un{client,server}.cpp: Updated the
6729           FD client and FD server programs so that it is now a concurrent
6730           server.
6732         * ace/config-mvs.h: Added #define ACE_LACKS_TCP_H for MVS.  Thanks
6733           to Chuck Gehr for pointing this out.
6735         * ace/OS.h: Added a new #define ACE_LACKS_TCP_H that skips the
6736           inclusion of the netinet/tcp.h file if it isn't on the platform.
6738         * ace/OS.i (thr_cancel): Changed the line
6740           ACE_UNUSED_ARG (t_id);
6742           to
6744           ACE_UNUSED_ARG (thr_id);
6746           Thanks to Chuck Gehr <gehr@sweng.stortek.com> for reporting
6747           this.
6749         * ace/SString.cpp: Fixed up all the ACE_[CSW]String code so that
6750           always allocates a rep_ even in the null constructor.  This
6751           saves us from having to handle odd special cases later on...
6752           Thanks to John Morey <JMOREY@tbi.com> for reporting this.
6754         * ace/Service_Repository.cpp (close): Changed the order in which
6755           services are destroyed when the Service Configurator is closed.
6756           Currently, services are destroyed in the order in which they are
6757           created according to the svc.conf file.  Now, we shut them down
6758           in reverse order.  This makes more sense when services are
6759           related, i.e., one service has to be started before another.
6760           Thanks to Karlheinz for this suggestion.
6762 Fri Feb 28 12:13:09 1997  David L. Levine  <levine@cs.wustl.edu>
6764         * ace/OS.h: fixed definition of ACE_TIMER_SKEW.  Thanks
6765           to Chuck Gehr <gehr@sweng.stortek.com> for pointing this out.
6767 Thu Feb 27 21:36:28 1997  David L. Levine  <levine@cs.wustl.edu>
6769         * ace/OS.{i,cpp} (gethrtime):  support on all platforms by
6770           using ACE_OS::gettimeofday () if there is no native high
6771           resolution timer. Moved ACE_OS::getimeofday () definition
6772           toward top of OS.i so that it is always defined before
6773           being called.  Finally, expanded gethrtime () support from
6774           linux to __GNUC__ with ACE_HAS_PENTIUM; it should work on
6775           platforms such as VxWorks with gcc on Pentiums.
6777         * ace/config-osf1-4.0-{,g++}.h:  added ACE_HAS_CLOCK_GETTIME.
6778           Thanks to Thilo Kielmann <kielmann@informatik.uni-siegen.de>
6779           for pointing this out.
6781 Thu Feb 27 17:06:12 1997    <harrison@samba.cs.wustl.edu>
6783         * ace/High_Res_Timer.h (get_env_global_scale_factor):  This static
6784           method will set the global_scale_factor to the value in an
6785           environment variable (ACE_SCALE_FACTOR by default).
6787         * ace/High_Res_Timer.*: Changed all calculations to divide by
6788           scale_factor before doing / and %.  This must be done before the
6789           mod for correctness.
6791         * ace/Profile_Timer.i (start): Changed start and stop methods to
6792           call ACE_High_Res_Timer::gettimeofday.  This should allow
6793           greater timing accurracy.
6795         * ace/High_Res_Timer.h (global_scale_factor): Added a static
6796           global_scale_factor that allows applications to set one scale
6797           factor for all high res timers.  This is important for platforms
6798           like intel where the scale factor will vary based on the
6799           processor clock speed.
6801         * ace/High_Res_Timer.i (gettimeofday): This static method calls
6802           ACE_OS::gethrtime and converts to an ACE_Time_Value based on the
6803           global_static_factor.
6805 Wed Feb 26 18:28:35 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
6807         * ACE-install.sh: Added some fixes for the ACE-install.sh script.
6808           Thanks to Eugene R. Somdahl <gene@endo.com> for reporting these.
6810         * ace/Connector.cpp (handle_close): Added a test to see if the
6811           reactor_ is NULL and if it is, don't bother trying to use it to
6812           clean up.  Thanks to Paul Han <phan@CCGATE.HAC.COM> for this
6813           suggestion.
6815 Tue Feb 25 21:19:57 1997  David L. Levine  <levine@cs.wustl.edu>
6817         * ace/OS.h,config-sunos*.h: default ACE_TIMER_SKEW to 0,
6818           and override to 10 ms in all Solaris config files.
6820         * ace/Svc_Conf_l.cpp,Makefile: #undef ACE_HAS_TERM_IOCTLS
6821           so that /usr/include/sys/termios.h won't be included; it
6822           #defines ECHO, and Svc_Conf_l.cpp has an ECHO symbol.
6824         * ace/ACE.cpp (sock_error): added ACE_UNUSED_ARG (error);.
6826         * ace/Timer_Queue.cpp (ctor): rearranged initializers to
6827           match declaration order.
6829 Tue Feb 25 19:57:54 1997    <harrison@samba.cs.wustl.edu>
6831         * ace/Timer_Queue.cpp (gettimeofday): Added gettimeofday accessors
6832           on the Timer_Queue.  The default implementation calls
6833           ACE_OS::gettimeofday.  Applications can specify, via pointers to
6834           functions, that a timer queue use an alternate gettimeofday
6835           implementation (e.g., a high resolution timer).
6837         * ace/Reactor.cpp (schedule_timer): The Reactor no longer calls
6838           ACE_OS::gettimeofday.  Instead, it calls
6839           Timer_Queue::gettimeofday.
6841         * ace/ReactorEx.cpp (schedule_timer): The ReactorEx no longer calls
6842           ACE_OS::gettimeofday.  Instead, it calls
6843           Timer_Queue::gettimeofday.
6845 Tue Feb 25 17:40:57 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
6847         * ace/Log_Msg.cpp: Updated the 'p' option of the log() method to
6848           use the new ACE::sock_error() method for cases where
6849           FormatMessage() fails.
6851         * ace/ACE: Added a new sock_error() method to class ACE which
6852           returns the appropriate message for each WinSock error code.
6853           This makes up for an apparent oversight in Win32.  Thanks to
6854           Michael R. MacFaden" <mrm@cisco.com> for this.
6856 Tue Feb 25 01:33:06 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
6858         * ace/OS.h: Moved <netinet/tcp.h> outside of the VXWORKS #ifdef
6859           since it seems to be available on other platforms (e.g.,
6860           Solaris).  If people find this not to be the case on all
6861           platforms please let me know and I'll #ifdef it.  Thanks to
6862           Sumedh Mungee <sumedh@cs.wustl.edu> for reporting this.
6864 Tue Feb 25 16:20:29 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
6866         * examples/Connection/non_blocking/CPP-acceptor.cpp: Added a
6867           specific checl for timeouts. Also, changed
6868           ACE_PEER_ACCEPTOR_ADDR to ACE_PEER_STREAM_ADDR
6870         * examples/Connection/non_blocking/non-blocking.{mak,mdp}: New
6871           project files for Win32.
6873         * ace/Log_Msg.cpp: Minor changes.
6875 Mon Feb 24 17:16:06 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
6877         * ace/Log_Msg.cpp (ACE_Log_Msg): Enable the thread-specific
6878           tracing flag by default.  This ensures that tracing will work
6879           "out of the box."
6881         * ace/config-sunos5.[45]-g++.h: Added a #define for
6882           ACE_HAS_TERM_IOCTLS.  Thanks to Joey Zhu <joey.zhu@wcom.com> for
6883           reporting this.
6885         * ace/Synch.cpp (acquire): Simplified the recursive mutex logic
6886           for acquire().  Thanks to Arthur J. Lewis" <hfdh99a@prodigy.com>
6887           for reporting this.
6889         * examples/Connection/non_blocking/CPP-acceptor.cpp (init): Added
6890           a #ifdef for ACE_WIN32 so that we don't register the signal
6891           handler for SIGPIPE since it's not supported on Win32.  Thanks
6892           to Ivan Murphy <Ivan.Murphy@med.siemens.de> for reporting this
6893           problem.
6895         * examples/Connection/non_blocking: The SPIPE examples in
6896           (test_spipe_{acceptor,connector}.cpp) aren't ported to Win32
6897           yet.  They currently don't work because ACE_SPIPE*'s can't be
6898           registered with the ACE_Reactor (which only works with sockets).
6899           I've #ifdef'd these examples so that they don't get compiled on
6900           Win32.  Thanks to Ivan Murphy <Ivan.Murphy@med.siemens.de> for
6901           reporting this problem.
6903 Mon Feb 24 20:28:10 1997  David L. Levine  <levine@cs.wustl.edu>
6905         * ace/OS.h: use signed __int64 for ACE_hrtime_t because VC++
6906           won't convert unsigned __int64 to double.  Thanks to Irfan
6907           <irfan@cs.wustl.edu> for reporting this.
6909         * include/makeinclude/platform_{irix5.3_g++,linux*,m88k,
6910           osf1_4.0_g++,sco-nothread,sunos*g++,unixware_g++}.GNU:
6911           changed C++ compiler (CXX) from gcc to g++ so that libg++
6912           will be linked in.  Thanks to James CE Johnson <jcej@lads.com>
6913           for suggesting this.
6915         * examples/IOStream/{client,server}/Makefile,tests/Makefile:
6916           removed -lg++, when gcc is the compiler, because it's no
6917           longer needed with g++ as the compiler.
6919 Sat Feb 22 23:03:45 1997  David L. Levine  <levine@cs.wustl.edu>
6921         * ace/OS.i: restored version 4.89 and 4.90 changes that
6922           were lost in version 4.91.
6924         * ace/OS.{i,cpp},config-linux*.h: added ACE_OS::gethrtime ()
6925           support for Linux on Pentiums.
6927         * ace/High_Res_Timer.*: changed scale_factor type from
6928           u_long to double so that it can be less than 1.
6930         * ace/Thread_Priority.cpp: "linux" instead of "LINUX".
6932         * tests/Priority_Task_Test.cpp (open): set this->priority_ because
6933           an assertion uses it.  Also, use ACE_NORMAL_PRIORITY_CLASS so that
6934           root doesn't have to run the test on Solaris.
6936 Sat Feb 22 22:07:35 1997  Chris Cleeland  <cleeland@cs.wustl.edu>
6938         * tests/Priority_Task_Test.cpp (open): Now use
6939           ACE_Thread_Priority while setting the priority of the new
6940           thread.
6942         * ace/Thread_Priority.cpp (convert_to_os_priority): Changed
6943           return type for this to 'int' from 'long' on Linux.  Thanks
6944           to James CE Johnson <jjohnson@lads.com> for pointing this
6945           out!
6947         * ace/OS.i (thr_cancel): Corrected erroneous macro argument.
6948           Thanks to James CE Johnson <jjohnson@lads.com> for pointing
6949           this out!
6951 Sat Feb 22 17:00:59 1997    <harrison@samba.cs.wustl.edu>
6953         * ace/OS.i (gethrtime): Added support for intel's RDTSC
6954           instruction for pentium architectures.
6956 Sat Feb 22 10:57:47 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
6958         * ace/Stream.cpp (open): Make sure that if we allocate the Tasks
6959           in the Stream head and the Stream tail that we set the M_DELETE
6960           flag so that the close() method will clean up the memory.
6961           Thanks to David Levine and Purify for noticing this problem.
6963 Fri Feb 21 08:06:41 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
6965         * ace/OS.i: Yikes, it looks like the Solaris and the POSIX version
6966           of sigwait() are different!  The Solaris version returns the
6967           signal number, whereas the POSIX version returns 0 on success,
6968           errno on failure, and sets a parameter with the signal on
6969           success.  I've fixed the ACE_OS C++ wrapper so that the right
6970           thing happens, i.e., errno is always set to the error (if
6971           sigwait() returns -1) and the signum is always returned as the
6972           argument and the return value on success ...  Thanks to Harry
6973           Gunnarsson <hg@carmenta.se> for reporting this.
6975 Fri Feb 21 11:01:22 1997  David L. Levine  <levine@cs.wustl.edu>
6977         * ace/Thread_Priority.cpp: fixed return type of
6978           convert_to_os_priority () for Linux.  Thanks to
6979           James CE Johnson <jcej@lads.com> for pointing this out.
6981         * examples/Shared_Malloc/test_malloc.cpp,
6982           examples/System_V_IPC/SV_Message_Queues/{T,}MQ_Server.cpp (main):
6983           added ACE_UNUSED_ARG (sa);.
6985 Fri Feb 21 04:12:31 1997    <irfan@TWOSTEP>
6987         * ace/OS.h: Added ACE_SEH_FINALLY.
6989         * ace/ReactorEx.h: Added ACE_ReactorEx_Test as a friend class. I
6990           think we should have one such friend class for all classes in
6991           ACE.
6993         * examples/Reactor/ReactorEx/test_exceptions.cpp: New test which
6994           checks how ReactorEx deals with structured exceptions thrown by
6995           user code
6997         * ace/ReactorEx.cpp (safe_dispatch): Added protection against
6998           structured exceptions caused by user code when dispatching
6999           handles
7001 Thu Feb 20 17:32:54 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
7003         * apps/Gateway: Added a new -v flag to the peerd and gatewayd
7004           applications so that they will print out the strings that are
7005           passed to them.  This makes it easier to debug and see what's
7006           happening.
7008 Wed Feb 19 19:39:06 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
7010         * apps/Gateway/Gateway/Concrete_Proxy_Handlers.cpp (recv): Removed
7011           the VERBOSE #ifdefs since they weren't used and were causing
7012           compile errors.  Thanks to Bert Craytor
7013           <Bert_Craytor@peoplesoft.com> for reporting this.
7015 Wed Feb 19 00:39:50 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
7017         * examples/ASX/Event_Server: Updated the README file a bit to
7018           clarify some loose ends.  The documentation now explains
7019           precisely how to start up the transceivers correctly.  Thanks to
7020           Patty Genuald <genualdp@agcs.com> for suggesting this.
7022         * include/makeinclude: Removed the default symlink for
7023           platform_macros.GNU since it is "Solaris-biased" ;-).  Thanks to
7024           Amos Shapira <amos@dsi.co.il> for reporting this.
7026 Wed Feb 19 14:41:18 1997  Tim H. Harrison  <harrison@lambada.cs.wustl.edu>
7028         * ace/Reactor.cpp: Modified to use timer_queue_->gettimeofday().
7030         * ace/Proactor.cpp: Modified to use timer_queue_->gettimeofday().
7032         * ace/ReactorEx.cpp: Modified to use
7033           timer_queue_->gettimeofday().  Also had to modify the
7034           ReactorEx_Notify mechanism to use the ReactorEx's timer queue to
7035           call gettimeofday.
7037         * ace/Timer_Queue.h: Added a gettimeofday method.  This allows
7038           applications to replace the timer mechanism used by the
7039           Reactors.  The default implementation returns
7040           ACE_OS::gettimeofday.  However, a real-time application can
7041           inherit from Timer_Queue and override gettimeofday to return a
7042           value from a high resolution timer.
7044         * STL/bool.h: Changed the defines for type bool.  First, bool is no
7045           longer defined for WIN32 since yvals.h typedefs it already.
7046           Also, I moved the defines out the namespace.  I'm not sure if
7047           that's the right thing to do.
7049 Tue Feb 18 16:41:02 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
7051         * include/makeinclude: Added minor enhancements to rules.local.GNU
7052           and wrapper_macros.GNU so that it works with MVS.  Thanks to
7053           Chuck Gehr <gehr@sweng.stortek.com> for this.
7055         * include/makeinclude: Added a new platform_mvs.GNU file that
7056           supports builds on MVS!  Thanks to Chuck Gehr
7057           <gehr@sweng.stortek.com> for this.
7059         * tests/TSS_Test.cpp (worker): To get TSS_Test.cpp to compile on
7060           MVS we changed line 69 from:
7062           ACE_thread_key_t key = 0;
7064           to:
7066           ACE_thread_key_t key = ACE_OS::NULL_key;
7068           and line 122 from:
7070           key = 0;
7072           to:
7074           key = ACE_OS::NULL_key;
7076           Thanks to Chuck Gehr <gehr@sweng.stortek.com> for reporting
7077           this.
7079         * ace/Reactor.cpp (dispatch): Fixed the dispatching logic so that
7080           we bail out as soon as we discover that our state has changed.
7081           Thus, we'll recompute the fd_sets used for select().
7083 Tue Feb 18 19:02:53 1997    <irfan@cha-cha.cs.wustl.edu>
7085         * ace/ReactorEx: 
7087         (a) Made wakeup_all_threads() public. Thanks to Hamutal Yanay
7088             <Hamutal_Yanay@mail.icomverse.com> for suggesting this.
7090         (b) Change closed_for_business_ to open_for_business_. Also made
7091             sure that open and close can potentially be called multiple
7092             times from multiple threads.
7094         (c) Changed unbind and unbind_all such that they iterate through
7095             all the handles.
7097         (d) Added a check to see if the handle has been scheduled for
7098             deletion before dispatching it.
7100 Tue Feb 18 21:24:57 1997  David L. Levine  <levine@cs.wustl.edu>
7102         * ace/IOStream.h,README: replaced ACE_WIN32 conditional with
7103           ACE_LACKS_IOSTREAM_FX.
7105         * ace/config-{mvs,win*}.h: added #define ACE_LACKS_IOSTREAM_FX.
7106           Thanks to Chuck Gehr <gehr@sweng.stortek.com> for pointing
7107           out the need for this support for MVS.
7109         * examples/Reactor/Misc/test_demuxing.cpp: removed unused
7110           variable "done".
7112         * examples/Reactor/Misc/test_signals_1.cpp (main),
7113           examples/Reactor/Ntalker/ntalker.cpp (main):
7114           added ACE_UNUSED_ARG (sig);.
7116 Tue Feb 18 17:15:24 1997  Tim H. Harrison  <harrison@lambada.cs.wustl.edu>
7118         * ace/ace.mdp, ace/mak: Modified release configuration to build
7119           acer.dll.
7121 Tue Feb 18 11:43:04 1997  David L. Levine  <levine@cs.wustl.edu>
7123         * ace/Log_Msg.cpp: removed destructor because it's not declared
7124           and it's empty.
7126         * ace/OS.i (thr_setprio): added another case (that is NOTSUP)
7127           for platforms with Pthreads and with LACK_SETSCHED.  Thanks to
7128           Chuck Gehr <gehr@sweng.stortek.com> for pointing this out.
7130         * tests/Reactor_Notify_Test.cpp (main): added shutdown flag so
7131           that normal termination reaches ACE_END_TEST.
7133         * tests/Reactors_Test.cpp (worker): changed "timeout" message to
7134           "Reactor shutdown" because that indicates normal termination,
7135            and won't fool the one-button test.
7137         * examples/Mem_Map/IO-tests/test_io.cpp (main): added
7138           ACE_UNUSED_ARG (sa);.
7140         * examples/Misc/test_trace.cpp (main): added ACE_UNUSED_ARG
7141           for sig1 and sig2.
7143 Tue Feb 18 03:50:10 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
7145         * ace/ReactorEx: 
7147           (a) Added a closed_for_business_ flag so that handle_events()
7148               cannot be called after the ReactorEx has been closed down.
7150           (b) Transfer of ownership of the ReactorEx to a new owner has
7151               changed. The transfer will not complete until all threads
7152               are ready for it (just like the handle set).
7153               ReactorEx->update_state() now looks out for changes in
7154               ownership.
7156         * examples/Reactor/ReactorEx/test_MT.cpp:
7157           
7158           (a) The test now terminates and number of iterations can be
7159               specified on the command line.
7160               
7161           (b) Graceful shutdown of ReactorEx is now exercised in the
7162               test. This is a change for the earlier infinite loop. This
7163               also shows how to gracefully close ReactorEx which is being
7164               shared by multiple threads.
7166           (c) Timers were added to the test.
7168         * ace/config{win32}: Added flag ACE_LACKS_LINEBUFFERED_STREAMBUF.
7170 Mon Feb 17 22:37:35 1997  Tim H. Harrison  <harrison@lambada.cs.wustl.edu>
7172         * ace/Log_Msg.h (ACE_RETURN): Modified all ACE_RETURN macros to
7173           use ACE_OS::last_error instead of errno.  This makes these more
7174           portable to Win32.
7176         * ace/Log_Msg.cpp (log): Modified Win32 version to use
7177           FormatMessage if errnum is greater than sys_nerr.
7179         * ace/OS.i (last_error): Modified Win32 version to return
7180           GetLastError if errno == 0.
7182 Mon Feb 17 18:32:29 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
7184         * ace/OS.h: Protected the #ifdef for CLOCK_REALTIME so that it
7185           won't conflict with an existing macro in AIX.  Thanks to Chris
7186           Lahey <CLahey@cccis.com> for this.
7188         * ace/Local_Name_Space_T.h: Added Local_Name_Space.h to
7189           Local_Name_Space_T.h so that templates will work correctly on
7190           AIX.  Thanks to Chris Lahey <CLahey@cccis.com> for this.
7192         * tests: Added a new test, Reactor_Notify_Test.cpp, which tests
7193           out the new max_notify_iterations() method on the Reactor.
7195         * ace/Reactor: Finished rewriting and testing the new dispatching
7196           logic of the Reactor.  The new implementation guards against
7197           pathological cases where ACE_Event_Handler::handle_*() methods
7198           remove registered ACE_Event_Handler objects whose handles are
7199           pending in the dispatch_set.  Previously there was no good way
7200           to guard against this.  Now, it should be handled automatically.
7202         * ace: Added many minor fixes to remove warnings with the SGI C++
7203           compiler.  Thanks to Gonzalo Diethelm <gonzo@ing.puc.cl> for
7204           suggesting this.
7206         * include/makeinclude/platform_irix6.2_sgic++.GNU: Turned on all
7207           the warnings for the SGI C++ compiler.  Thanks to Gonzalo
7208           Diethelm <gonzo@ing.puc.cl> for suggesting this.
7210 Mon Feb 17 20:59:47 1997  David L. Levine  <levine@cs.wustl.edu>
7212         * ace/IOStream.h: added null ipfx (), etc., methods for ACE_WIN32
7213           because its iostream class doesn't have them.
7215         * ace/OS.h: added #include of <netinet/tcp.h> on VxWorks.
7217         * ace/Pipe.cpp (open): enabled TCP_NODELAY on VxWorks now that
7218           OS.h #includes <netinet/tcp.h>.
7220         * ace/ReactorEx.h: made ACE_ReactorEx_Handler_Repository destructor
7221           virtual because the class has other virtual functions.
7223         * tests/IOStream_Test.cpp: removed ACE_WIN32 #ifndef, and
7224           removed q_char bool conversion operator because it shouldn't
7225           be needed.
7227         * examples/Reactor/Misc/pingpong.cpp (handle_input): cast buf_len
7228           to ssize_t to avoid signed/unsigned comparison.
7230         * examples/Service_Configurator/IPC-tests/client/\
7231           remote_dgram_client_test.cpp (main): cast mmap.size () to
7232           ssize_t to avoid signed/unsigned comparison.
7234 Mon Feb 17 09:25:08 1997  Chris Cleeland  <cleeland@cs.wustl.edu>
7236         * ace/config-linux-lxpthreads.h: Bumped the Linux kernel version
7237         number assigned to the symbol LINUX.  Also added conditional
7238         defines for PTHREAD_{MAX,MIN}_PRIORITY when using Xavier Leroy's
7239         LinuxThreads.
7241         * ace/Thread_Priority.cpp: Added convert_to_os_priority() for Linux.
7242         
7243 Mon Feb 17 03:15:48 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
7245         * tests/SOCK_Test.cpp (server): Changed recv_n() to recv().
7247         * tests/tests.{mak,mdp}: Added two new tests: IOStream and
7248           Reactor_Notify.
7250         * ace/Reactor: Removed all special checks for setting
7251           ACE_Reactor::max_notify_iterations_ on WIN32 to be 1.  This was
7252           made possible after we figured out that the errno was being
7253           reset after the recv() call in handle_input().  This allows
7254           ACE_Reactor_Notify::handle_input() to serve upto
7255           ACE_Reactor::max_notify_iterations_ notifications in one shot
7256           rather than just 1 on WIN32. This should speed up the Reactor on
7257           WIN32 platforms.
7258         
7259 Sun Feb 16 12:23:23 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
7261         * ace/Reactor.cpp: Totally rewrote the ACE_Reactor's dispatching
7262           mechanism so that it now keeps track of whether the state of the
7263           wait_set_ has changed during a dispatch (i.e., whenever
7264           register_handler_i() or remove_handler_i() is called).  If the
7265           wait_set_ state *has* changed, then we bail out and rerun
7266           select() in order to get the latest changes.
7268         * ace/Reactor.cpp: Changed the implementation of the
7269           ACE_Reactor_Notify class so that (1) it short-circuits a trip
7270           through the ACE_Reactor::notify_handle() method (after all, it's
7271           just going to call its own handle_input() method back) and (2)
7272           the ACE_Reactor_Notify::handle_input() method now returns a
7273           count of the number of handlers that it dispatched.
7275         * ace/Log_Msg.h: Added a (%P|%t) so that we now print out the
7276           process id and thread number for failed ACE_ASSERT() calls.
7278         * tests: Removed the unnecessary template specializations of
7279           ACE_Atomic_Op<ACE_Thread_Mutex, int> since this is already done
7280           in libACE.
7282         * ace/Reactor.cpp: Removed the #ifdef preventing the enabling of
7283           non-blocking mode for the recv() side of the Reactor's
7284           notification pipe (socket) for Win32.  I believe that with the
7285           new max_notify_iterations scheme we should be all set.
7287         * ace/ReactorEx.cpp: Added an identical API for bounding the
7288           max_notify_iterations() for ReactorEx.
7290         * ace/Reactor.cpp: Enhanced the Reactor's notify() mechanism so
7291           that it is now possible to set the max_notify_iterations(),
7292           which limits the number of times that the
7293           ACE_Reactor_Notify::handle_input() method will iterate and
7294           dispatch the ACE_Event_Handlers that are passed in via the
7295           notify pipe before breaking out of its recv() loop.  This is
7296           necessary to keep from starving out other Event_Handlers.
7297           Thanks to Rod Skinner <rods@in.ot.com.au> for pointing out the
7298           need for this.
7300         * ace/Reactor.cpp: Fixed a bug in the WIN32
7301           ACE_Reactor_Notify::handle_input() logic.  We were calling
7302           requeue_position(0) when we should have been calling renew().
7304 Sat Feb 15 11:46:39 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
7306         * ace/ACE.cpp: It appears that VxWorks doesn't support fcntl().
7307           However, it does seem to support ioctl().  Therefore, that's how
7308           we'll set the descriptors into non-blocking mode.  Thanks to
7309           Dave Mayerhoefer <mayerhoefer@svappl36.mdc.com> for reporting this.
7311         * ace/SOCK_Stream.h: Corrected the documentation for
7312           ACE_SOCK_Stream::recv_n (void *buf, size_t len, int flags, const
7313           ACE_Time_Value *timeout).  Thanks to Paul Roman
7314           <proman@npac.syr.edu> for reporting this.
7316         * ace/SOCK_Stream.i (recv_n): Fixed a minor bug in the
7317           SOCK_Stream.i line 38: 
7319           ACE_TRACE ("ACE_SOCK_Stream::send_n");
7321           should be
7323           ACE_TRACE ("ACE_SOCK_Stream::recv_n");
7325           Thanks to Paul Roman <proman@npac.syr.edu> for reporting this.
7327 Fri Feb 14 00:40:14 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
7329         * ace/TTY_IO.cpp (control): Moved the drop out timer value from
7330           the ACE struct to the WinNT struct.  Thanks to Brad Flood
7331           <BFLOOD@tcs.lmco.com> for this fix.
7333 Thu Feb 13 21:24:17 1997    <irfan@cha-cha.cs.wustl.edu>
7335         * ace/OS.i (event_wait): Fixed the missing check for success.
7337         * ace/Synch: Fixed problems with multiple removal of
7338           resources. Thanks to Bert (Bcraytor@aol.com) for pointing this
7339           out.
7341         * examples/Threads/test.{mdp,mak}: Reorganized project so that it
7342           is easier to use. 
7344         * examples/Threads: Small changes to make tests run faster.     
7346 Thu Feb 13 01:49:38 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
7348         * ace/OS.i (stat): Added stat() to ACE_OS.
7350         * apps/jaws: The ACE web server has now been ported to Win32. 
7352         * ace/ReactorEx: Add a new version of remove_handler().
7354         * examples/Reactor/ReactorEx/test_MT.cpp: Fixed stuff so that only
7355           <concurrent_threads> are activated.
7357 Wed Feb 12 22:58:15 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
7359         * ace/ReactorEx: Made minor changes to the ReactorEx.
7361         * examples/Reactor/ReactorEx/test_MT.cpp: Updated Irfan's new
7362           ReactorEx test to use ACE_Tasks.
7364 Wed Feb 12 00:08:42 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
7366         * ace/ReactorEx: Finished a complete rewrite of
7367           ReactorEx.  The new version allows multiple threads of
7368           control to wait simultaneously in
7369           ::WaitForMultipleObjects(). This was difficult because the 
7370           set of ACE_HANDLEs used in ReactorEx->handle_events() is 
7371           shared between all threads.  We devised a clever protocol
7372           that ensures all changes to the handle set are
7373           serialized. This serialization was achieved by using
7374           multiple (auto and manual) events and mutexes and by taking
7375           advantage of the "waitAll" semantics of
7376           WaitForMultipleObjects().
7378           Concept of "owner" thread is introduced in ReactorEx.  We
7379           need to keep track of the "owner" because we don't want
7380           multiple threads to try to expire timers. Therefore the
7381           "owner" thread is the only one allowed to expire
7382           timers. Also, the owner thread is the only thread which
7383           waits on the internal notify handle (which is used to
7384           dispatch explicit calls to
7385           ACE_ReactorEx::notify(). Initially, the creator thread of
7386           ReactorEx becomes the "owner" thread. Ownership can later be
7387           transferred among threads, just as with the standard
7388           ACE_Reactor.
7390           We also updated the Handler Repository since it now
7391           keeps track of <handle, event_handler> tuples to be added
7392           and deleted from the current handle set at the appropriate
7393           time (i.e., when all threads are out of
7394           WaitForMultipleObjects() and have completed all necessary
7395           dispatching).  The Handler_Repository implements the update
7396           protocol that is used to serialize changes to its internal
7397           state.
7398         
7399           Two slots were added to the <size> parameter in the
7400           constructor and open methods of ReactorEx that will store
7401           handles used for internal management. Therefore, users can add
7402           upto MAXIMUM_WAIT_OBJECTS - 2 handles into ReactorEx.  On
7403           current WinNT platforms (e.g., 3.51 and 4.0)
7404           MAXIMUM_WAIT_OBJECTS is 64.
7406           Note that the interface to ReactorEx did not change in this
7407           process. Your existing code should work without changes.
7408           Moreover, we've optimized the implementation so that if only
7409           1 thread calls ACE_ReactorEx::handle_events() the code is
7410           very efficient.  Moreover, you can dynamically add or remove
7411           threads without having to register them with the ReactorEx.
7413         * examples/Reactor/ReactorEx/test_MT.cpp: This application tests
7414           multiple threads simultaneously calling
7415           ReactorEx->handle_events(). It also shows how different threads
7416           can update the state of ReactorEx.
7418 Wed Feb 12 00:08:42 1997  Douglas C. Schmidt  <schmidt@polka.cs.wustl.edu>
7420         * ace/Synch: Added a remove() call to ~ACE_Thread_Mutex so that it
7421           will be removed (and resources cleaned up) automatically when an
7422           ACE_Thread_Mutex object goes out of scope.  Thanks to Jay
7423           Denkberg <jay_denkberg@mail.icomverse.com> for reporting this.
7425         * ace: Added a new config file (config-irix6.2-sgic++-nothreads.h)
7426           that works for non-Pthread versions of SGI 6.2.  Thanks to Fred
7427           LaBar <flabar@fallschurch.esys.com> for this.
7429         * ace/XtReactor: Fixed a bunch of minor bugs that crept into the
7430           ACE_XtReactor.  Thanks to Fred LaBar
7431           <flabar@fallschurch.esys.com> for reporting this.
7433         * ace/OS.i (thr_getprio): Fixed a typo in the #ifdefs so that we
7434           return ACE_NOTSUP_RETURN(-1) if threading isn't enabled.  Thanks
7435           to Fred LaBar <flabar@fallschurch.esys.com> for reporting this.
7437 Tue Feb 11 11:26:03 1997  David L. Levine  <levine@cs.wustl.edu>
7439         * ace/OS.{h,i},config-vxworks*.h,README: added ACE_HAS_CLOCK_GETTIME,
7440           and only support ACE_OS::clock_gettime if that's defined.
7441           It can be supported on Solaris 2.5, but -lposix4 is then required.
7443         * ace/Thread_Priority.*: added increment () and decrement ()
7444           operations.
7446         * include/makeinclude/platform_sunos5_sunc++_4.1.GNU:
7447           added -pta back to avoid link problems with template classes
7448           that have virtual functions that are all inline, if inlining
7449           is disabled.  Though we don't see the problem, other 4.1 users do.
7450           Thanks to mscallinan@CCGATE.HAC.COM for reporting this.
7452         * examples/Logger/simple-server/Logging_Handler.cpp (handle_input):
7453           cast "len" to ssize_t to prevent mixed signed/unsigned comparison.
7455         * examples/Logger/simple-server/server_loggerd.cpp (main):
7456           added ACE_UNUSED_ARG (sa);.
7458         * examples/Reactor/Misc/notification.cpp (Thread_Handler ctor):
7459           changed type of n_threads argument from int to size_t to avoid
7460           signed/unsigned comparison.
7462 Mon Feb 10 15:27:02 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
7464         * ace/Timer_Queue: Added a virtual destructor so that subclasses
7465           deleted via ACE_Timer_Queue *'s will call the right destructor.
7466           Thanks to Stuart Powell <stuartp@in.ot.com.au> for reporting
7467           this.
7469         * ace/Timer_Heap.cpp: Added support for automatically growing
7470           ACE_Timer_Heaps.  This allows heaps to grow automatically as new
7471           ACE_Event_Handlers are added dynamically.  Thanks to Stuart
7472           Powell <stuartp@in.ot.com.au> for this enhancement.
7474         * ace/Memory_Pool: Added support that allows flags to be passed in
7475           to the MMAP_Memory_Pool.  This can be used to set the
7476           appropriate type of backing store semantics (e.g., MAP_PRIVATE
7477           and MAP_SHARED).  Thanks to Fred LaBar
7478           <flabar@fallschurch.esys.com> for providing this.
7480 Sun Feb  9 11:56:37 1997  Douglas C. Schmidt  <schmidt@polka.cs.wustl.edu>
7482         * ace/Map_Manager.cpp (bind_i): A recent change to Map_Manager
7483           broke the Connector since errno was getting set to ENOENT rather
7484           than EWOULDBLOCK.  Thanks to Mark Rabotnikov
7485           <mark@usp.elscintcorp.co.il> for finding this.
7487 Sun Feb 09 21:44:34 1997  David L. Levine  <levine@cs.wustl.edu>
7489         * ace/ACE.{h,cpp}: added static u_long is_prime ().
7491         * ace/{OS.cpp,Thread_Priority.cpp}: added comment about thread
7492           priorities only being tested for 1003.1C version of Pthreads.
7493           Thanks to Thilo Kielmann <kielmann@informatik.uni-siegen.de>
7494           for suggesting this.
7496         * ace/OS.{h,i}: added ACE_OS::clock_gettime ().  It allows
7497           applications to get high-resolution time on POSIX systems.
7499         * ace/Future.cpp (dump): cast ref_count_ to an int because
7500           g++ doesn't figure it out (it's an ACE_Atomic_Op<ACE_Thread_Mutex,
7501           int>, which does have an int conversion operator).
7503         * ace/Timer_List.cpp (constructor): added initializer for
7504           timer_id_ to prevent unitialized memory read report from Purify.
7506         * tests/IOStream_Test.cpp,Makefile: added IOStream_Test,
7507           complements of James CE Johnson <jcej@lads.com>.  Very cool!
7509         * tests/Future_Test.cpp: replaced call to ::sin ()
7510           with one to ACE::is_prime () to remove dependency on libm.
7512         * examples/IPC_SAP/UPIPE_SAP/ex1.cpp (peer1, peer2): removed
7513           unused variables c_addr and serv_addr: they were replaced by
7514           a global.
7516         * examples/Threads/future{1,2}.cpp: replaced call to ::sin ()
7517           with one to ACE::is_prime () to remove dependency on libm.
7519         * netsvcs/clients/Naming/Dump_Restore/createfile.cpp: removed
7520           #include of math.h, it wasn't needed.
7522 Sat Feb 08 15:19:50 1997  David L. Levine  <levine@cs.wustl.edu>
7524         * ace/ReactorEx.h: commented out ACE_ReactorEx_Notify::message_queue_
7525           declaration if not ACE_WIN32 because Sun C++ chokes on it.
7527         * examples/IPC_SAP/{FILE,SPIPE}_SAP/client.cpp: declare "len" as
7528           ssize_t to avoid signed/unsigned comparison.
7530 Fri Feb  7 01:13:05 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
7532         * ace/OS.i (select): Simplified Chris' fixes for the weird
7533           Linux select() semantics.
7535         * ace/OS: Added a new accessor method called waiters() in
7536           ACE_cond_t that returns the number of waiters on the condition
7537           variable.  Thanks to Karlheinz for suggesting this.
7539         * ace/OS: Changed all the ACE_cont_t, ACE_rwlock_t, etc. so that
7540           their fields are private, but made class ACE_OS a friend.
7541           Applications should not be mucking with these fields since they
7542           may change.
7544         * ace/OS.h: Fixed a minor typo where friend class ACE_rwlock_t
7545           should be friend class ACE_OS.  Thanks to Thilo Kielmann
7546           <kielmann@informatik.uni-siegen.de> for reporting this.
7548         * ace/Log_Msg.cpp: Added a destructor to ACE_Log_Msg and changed
7549           ACE_TSS_cleanup so that it calls delete (ACE_Log_Msg *) ptr.
7550           Thanks to Per Anderson <Per.Andersson@hfera.ericsson.se> for
7551           reporting this.
7553         * tests/Map_Manager_Test.cpp: Create a file Map_Manager_Test_Key.h
7554           and move the class Key into the include file.  Include this *.h
7555           file in Map_Manager_Test.cpp.  This is needed for template
7556           generation on AIX.  Thanks to Chris Lahey <CLahey@cccis.com> for
7557           pointing this out.
7559 Fri Feb  7 17:29:40 1997  Chris Cleeland  <cleeland@cs.wustl.edu>
7561         * ace/OS.cpp (set_sched_params): added support for POSIX
7562           threads.  Thanks to Thilo Kielmann
7563           <kielmann@informatik.uni-siegen.de> for figuring it out and
7564           for providing the code.
7566         * tests/Naming_Test.cpp (test_find): Changed final delete[] to
7567           not try to delete a static buffer. :-(
7569         * tests/SOCK_Test.cpp (server): Added assertion test for
7570           modified select timeval.
7572 Fri Feb 07 13:56:24 1997  David L. Levine  <levine@cs.wustl.edu>
7574         * ace/{OS.cpp,Thread_Priority.cpp}: added ACE_Thread_Priority
7575           support for Digital Unix.  Thanks to Thilo Kielmann
7576           <kielmann@informatik.uni-siegen.de> for figuring the priorities
7577           and priority classes out and for providing the code.
7579         * ace/High_Res_Timer.{h,cpp},config-linux*.h,README:
7580           use struct timespec instead of timespec_t, because not all
7581           platforms have the timespec_t typedef.  Thanks to
7582           Marius Kjeldahl <marius@funcom.com> for reporting this on Linux
7583           and Chris Lahey <CLahey@cccis.com> for reporting it on AIX.
7585         * ace/IOStream.h: use "ssize_t send (...)", etc., instead of exact
7586           function prototypes.
7588         * examples/IPC_SAP/TLI_SAP/db-server.cpp: declare struct member as
7589           const char * instead of const char [] because it's not static and
7590           the struct doesn't have constructors.
7592         * examples/Reactor/Multicast/server.cpp (Server_Events ctor):
7593           reordered initializers to match declaration order.
7595 Fri Feb 07 05:08:51 1997    <irfan@cha-cha.cs.wustl.edu>
7597         * ace/Synch.cpp (dump): Fixed access error.
7599         * ace/OS.h: Fixed ACE_rwlock_t friend declaration.
7601         * ace/OS.i: Moved ACE_cond_t::waiters() such that it is now
7602           visiable to NT. Also fixed ACE_OS::cond_timed_wait by returning
7603           the correct return value on a TIMEOUT. Also fixed typo in
7604           ACE_OS::sema_wait.    
7606 Thu Feb  6 20:25:13 1997  Chris Cleeland  <cleeland@cs.wustl.edu>
7608         * ace/OS.i (select): Adapted ACE_OS::select methods for use on
7609           platforms (such as Linux) that allow select(2) to modify its
7610           struct timeval arg.  New behavior is triggered by the define
7611           ACE_HAS_NONCONST_SELECT_TIMEVAL.  Thanks to Jorn Jensen
7612           <jornj@funcom.com> for reporting this!
7614 Thu Feb 06 09:48:43 1997  David L. Levine  <levine@cs.wustl.edu>
7616         * ace/config-sunos-sun*.h,README: added
7617           ACE_LACKS_LINEBUFFERED_STREAMBUF and ACE_LACKS_SIGNED_CHAR.
7619         * ace/IOStream.{h,cpp}: support
7620           ACE_LACKS_LINEBUFFERED_STREAMBUF and ACE_LACKS_SIGNED_CHAR
7621           so that this builds with SunC++.
7623         * examples/IOStream/client/iostream_client.cpp:
7624           reordered args and fixed argv indexes.
7626         * examples/IOStream/server/iostream_server.cpp:
7627           use ACE_DEFAULT_SERVER_PORT for default port.
7629         * tests/Naming_Test.cpp (randomize): changed type of "size" arg to
7630           size_t to avoid compiler warnings about signed/unsigned comparison.
7632 Thu Feb 06 09:40:47 1997  Chris Cleeland <cleeland@cs.wustl.edu>
7634         * ace/config-linux*.h: added typedef of timespec_t.
7636 Wed Feb  5 01:45:03 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
7638         * ace/OS.i: Changed the Win32 implementation of all methods that call
7639           WaitForMultipleObjects() so that errno is set to
7640           WAIT_ABANDONED if the mutex is abandoned.  This makes it
7641           possible for users to understand why ACE_OS methods that use
7642           synchronization operations fail.  Thanks to Ivan Murphy
7643           <Ivan.Murphy@med.siemens.de> for reporting this problem.
7645         * ace/IOStream.cpp (ACE_Streambuf): Moved the const initialization
7646           from the header file to the constructor since this is the only
7647           portable way to do this.  Thanks to Michael Maxie
7648           <maxie@acm.org> for reporting this.
7650         * ace/OS.i: Updated the call to thr_setprio() for pthreads so that
7651           it first determines the existing scheduling parameters and then
7652           updates the priority.  Thanks to Thilo Kielmann
7653           <kielmann@informatik.uni-siegen.de> for help with this.
7655         * ace/config-osf1-4.0*.h: Updated ACE_NEEDS_HUGE_THREAD_STACKSIZE
7656           to be 1 mega to minimize porting surprises.  Thanks to Thilo
7657           Kielmann <kielmann@informatik.uni-siegen.de> for help with this.
7659         * tests/Naming_Test.cpp: Cleaned up a few minor things related to
7660           int i = 0 vs. size_t i = 0.
7662         * ace/SOCK_Dgram.cpp: Added a new macro called
7663           ACE_HAS_SOCKADDR_MSG_NAME, which is used on platforms (e.g.,
7664           DG/UX) that require a cast to (struct sockaddr *) for the
7665           msg_name field of struct msghdr.
7667 Wed Feb 05 10:45:41 1997  David L. Levine  <levine@cs.wustl.edu>
7669         * ace/IOStream.h: replaced __*manip with expanded types, because
7670           Sun C++ doesn't have those typedefs; and added complete prototypes
7671           for send, recv, send_n, and recv_n.
7673         * ace/IOStream.cpp: fixed "#define ACE_IOSTREAM_C" to keep g++ sane.
7675         * ace/Hash_Map_Manager.{h,cpp},Map_Manager.{h,cpp}: replaced
7676           DEFAULT_SIZE with ACE_DEFAULT_MAP_SIZE so that Naming_Test runs
7677           on SunC++ 4.1.
7679         * ace/High_Res_Timer.*: added optional scale factor.
7681         * examples/IOStream/{client,server}/Makefile:  addd -g++ if building
7682           with gcc.
7684         * tests/Naming_Test.cpp: moved declaration of "i" out of for loop
7685           because it is used after the loop.
7687         * examples/ASX/UPIPE_Event_server/{Consumer,Supplier}_Router.cpp
7688           (open): return 1 if init () succeeds.  There's a commented-out
7689           call to activate the objects that would (should?) return a value.
7691         * examples/IPC_SAP/FIFO_SAP/FIFO-client.cpp (main): declare n
7692           as ssize_t instead of size_t to avoid compiler warning about
7693           signed/unsigned comparison.
7695 Tue Feb  4 19:06:52 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
7697         * ace/Signal.cpp: Fixed all the ACE_Sig_Handler[s] methods so that
7698           they now use ACE_Guard, rather than ACE_TSS_Guard, *unless* they
7699           are actually performing callbacks to user-code.  Not only is
7700           this faster, but it also avoids thread-specific storage key
7701           leaks on platforms like Solaris!
7703         * ace/OS.cpp (thr_keyfree): Added a new #ifdef for
7704           ACE_HAS_THR_KEYDELETE, which is defined for UNIXWARE.  This
7705           fixes a nasty problem with leaking thread-specific keys.  Thanks
7706           to Nigel Owen <Nigel@voicelink.co.nz> for reporting this.
7708         * ace/Message_Block.cpp: Added a #include for
7709           "ace/Service_Config.h".
7711         * ace/Malloc.i: Fixed a few warnings by removing the names of
7712           unused parameters.
7714         * ace: Added many minor changes to ACE so that it will work on
7715           DG/UX.  Thanks to Michael Maxie <maxie@acm.org> for all these.
7717         * ace/LSOCK_Stream.cpp: Applied the same fix as to LSOCK.cpp.
7719         * ace/LSOCK.cpp: Removed the cast of 0 to (char *) for msg_name
7720           since some platforms use (struct sockaddr *).  By omitting the
7721           cast the compiler will figure it out correctly.  Thanks to
7722           Michael Maxie <maxie@acm.org> for this.
7724         * ace/IOStream: Added a new template adapter for creating an
7725           iostream-like object using an ACE IPC Stream for the actual I/O.
7726           Thanks to James CE Johnson <jcej@lads.com> for this.
7728         * examples/Misc/test_iostreams.cpp: Added a test that illustrates
7729           how the new ACE_iostreams mechanism works.  Thanks to James CE
7730           Johnson <jcej@lads.com> for this.
7732         * ace/Message_Block: Updated the ACE_Message_Block implementation
7733           to use ACE_Service_Config::alloc() if the user doesn't supply a
7734           customize version.  This also means that we never delete the
7735           allocator_strategy_, so we can remove this flag and reduce the
7736           amount of storage by 4 bytes.  Thanks to Irfan for noticing that
7737           we can do this.
7739         * ace/platform_dgux4_epc.h: Added a new platform config file
7740           for DG/UX.  Thanks to Michael Maxie <maxie@acm.org> for
7741           this.
7743         * ace/config-dgux-4.11-epc.h: Added a new config file for DG/UX.
7744           Thanks to Michael Maxie <maxie@acm.org> for this.
7746 Tue Feb 04 18:26:01 1997    <irfan@cha-cha.cs.wustl.edu>
7748         * ace/Service_Config.cpp (alloc): The implementation now creates a
7749           ACE_New_Allocator rather than a ACE_Allocator_Adaptor.  If
7750           you still want the old behavior, simply provide your own
7751           custom allocator singleton for ACE_Service_Config.
7753         * ace/OS.i (mktemp): Added the missing ACE_INLINE directive.
7755         * ace/OS.h: ACE_HAS_INLINED_OSCALLS is now automatically defined
7756           when __ACE_INLINE__ is defined.  This avoids mysterious linking
7757           problems that occur otherwise.
7759         * ace/Malloc: Added a virtual destructor to ACE_Allocator.  Also
7760           added a new class ACE_New_Allocator which is a sub-class of
7761           ACE_Allocator. This class uses the new/delete operators to
7762           allocate and free up memory.  Please note that the only methods
7763           that are supported are malloc() and free(). All other
7764           methods are no-ops.  If you require more functionality, please use:
7765           ACE_Allocator_Adapter <ACE_Malloc <ACE_LOCAL_MEMORY_POOL,
7766           MUTEX>> This will allow you to use the added functionality of
7767           bind/find/etc. while using the new/delete operators.
7769 Mon Feb  3 15:35:24 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
7771         * ace/config-aix-*.h: Added a (char *) cast to
7772           ACE_DEFAULT_BASE_ADDR.  Thanks to John Cosby
7773           <John.D.Cosby@cpmx.saic.com> for reporting this.
7775         * ace/OS.cpp: Added a new set() method that sets the Time_Value
7776           from a double.  Thanks to Brad Flood for this suggestion.
7778         * ace/OS: Changed ACE_OS::flock_t to ACE_OS::ace_flock_t to avoid
7779           a name clash on DG/UX.  Thanks to Michael Maxie <maxie@acm.org>
7780           for reporting this.
7782 Tue Feb  4 03:02:52 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
7784         * tests/Naming_Test.cpp: Added timing and made debug print outs
7785           optional. Also added randomization of the test data.
7787         * ace/OS.h: Fixed prototype for gethrtime ()
7789 Mon Feb 03 21:00:56 1997  David L. Levine  <levine@cs.wustl.edu>
7791         * ace/OS.h: define ACE_SCOPE_PROCESS and ACE_SCOPE_THREAD
7792           even if ACE_HAS_THREADS is not defined.  Thanks to
7793           Michael Maxie <maxie@acm.org> for pointing this out.
7795         * examples/Threads/{process_mutex.cpp,process_semaphore.cpp,
7796           task_three.cpp,thread_manager.cpp,thread_specific.cpp} (main):
7797           added ACE_UNUSED_ARG (sa);.
7799         * examples/Threads/reader_writer.cpp: fixed declaration of
7800           "shared_data" to be "static volatile" instead of "volatile
7801           static", and removed unused variable "n".
7803         * examples/Threads/thread_pool.cpp: removed unused variable "result".
7805 Sun Feb 02 21:24:02 1997  David L. Levine  <levine@cs.wustl.edu>
7807         * ace/OS.h: changed hrtime_t to ACE_hrtime_t.
7809         * ace/{config-win*.h,README}: added #define ACE_HAS_PENTIUM to
7810           enable gethrtime () support.
7812         * ace/High_Res_Time.{h,i,cpp}: removed platform-specific #ifdef's,
7813           instead added "unsupported ()" static member function; changed
7814           changed signature of elapsed_time to take time reference as
7815           argument instead of return value; added elapsed_time
7816           (ACE_Time_Value &) and elapsed_time_incr (ACE_Time_Value &).
7818         * examples/Thread/context_switch.cpp: use ACE_High_Res_Timer
7819           instead of the old Timer adapter.
7821         * ace/config-aix-4.1.x.h: fixed typo: #defind ACE_HAS_LONGLONG_T.
7823         * ace/config-aix-4.2.x.h: added #define ACE_HAS_LONGLONG_T.
7825         * ace/Thread_Priority.{h,cpp}: moved #include of OS.h from .cpp
7826           to .h file.
7828 Sun Feb 02 10:30:29 1997  David L. Levine  <levine@cs.wustl.edu>
7830         * ace/Local_Name_Space.cpp: removed ACE_Map_Manager, ACE_Map_Iterator,
7831           and ACE_Map_Entry: they don't appear to be used and, without
7832           including their headers, this file won't compile.
7834         * ace/Hash_Map_Manager.cpp (Hash_Map_Manager (ACE_Allocator *)):
7835           reordered initializers to match declaration order.
7837 Sat Feb  1 15:11:28 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
7839         * include/makeinclude/platform_aix4.2.GNU (LD): Removed the -qnoro
7840           flag since it is no longer needed.  Thanks to Rob Jordan
7841           <jordan@hursley.ibm.com> for reporting this.
7843 Sat Feb  1 03:25:21 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
7845         * ace/SString.cpp: Added two methods to the wide string
7846           implementation for high-performance. Even though these methods
7847           are somewhat ugly and not the "OO" way of doing things,
7848           performance was at stake here.
7850         * ace/Registry_Name_Space.cpp (resolve): Fixed the implementation
7851           by correctly figuring out the size of the value in the
7852           Registry. This allows us to dynamically allocated the correct
7853           amount of memory.
7855         * ace/Registry: Fixed the constant MAX_CONTEXT_NAME_SIZE to be the
7856           maximum path length.
7858         * ace/Naming_Context.cpp: Fixed various memory leaks.
7860         * ace/Local_Name_Space_T.h: Replaced the simple-minded Map_Manager
7861           with the new (improved) Hash_Map_Manager.     
7863         * ace/Local_Name_Space.cpp: Added new methods operator!= and hash
7864           required by the map.
7866         * ace/Hash_Map_Manager.cpp (ACE_Hash_Map_Manager): Added an extra
7867           constructor.
7869         * tests/Naming_Test.cpp: Removed memory leaks.
7871 Fri Jan 31 19:39:48 1997  David L. Levine  <levine@cs.wustl.edu>
7873         * ace/Hash_Map_Manager.cpp (ctor): reordered initializers
7874           to match declaration order.
7876         * tests/Time_Value_Test.cpp: cast double argument to long
7877           because there no longer is a constructor that takes a double.
7879         * ace/Hash_Map_Manager.{h,cpp}: removed #include of
7880           ace/Hash_Map_Manager.i because it doesn't exist.
7881           Protected .cpp file against multiple includes.  Moved
7882           #include of "ace/Malloc.h" from .h to .cpp file.
7884         * ace/Map_Manager.cpp (current_size, total_size): cast -1 to
7885           size_t to avoid warning about signed-to-unsigned conversion.
7887         * ace/OS.h: moved hrtime_t typedef for ACE_WIN32 so it doesn't
7888           get defined twice.
7890         * ace/OS.i (getservbyname): one last ACE_HAS_NONCONST_GETBY change:
7891           missed "lproto" to "proto".
7893         * bin/create_ace_build: added checks for existing symlinks, so
7894           now the script can be re-run safely at any time on a build
7895           tree to update it.
7897 Fri Jan 31 02:16:30 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
7899         * ace/config-aix-*.h: Made the default value for
7900           ACE_DEFAULT_BASE_ADDR 0x80000000 to work around restrictions
7901           with AIX.  Thanks to Rob Jordan <jordan@hursley.ibm.com> for
7902           this.
7904         * examples/Map_Manager: Added a new example of the
7905           Hash_Map_Manager.
7907         * tests/Map_Manager: Integrated the Hash_Map_Manager into the
7908           Map_Manager test and greatly improved the test (e.g., by adding
7909           timing).
7911         * ace: Added a new implementation of the Map_Manager called
7912           Hash_Map_Manager.  This, of course, uses hashing rather than
7913           linear search.  The result should be a much faster
7914           implementation for many types of applications. 
7916 Thu Jan 30 13:55:08 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
7918         * ace/Map_Manager: Changed the return type of total_size() and
7919           current_size() to size_t.
7921         * ace/OS: Had to remove the ACE_Time_Value (double) constructor
7922           since it caused ambiguities with ACE_Time_Value (long).  Thanks
7923           to Per Andersson for figuring this out.
7924   
7925         * include/makeinclude/platform_linux_lxpthread.GNU (CXX): Added
7926           -D_REENTRANT to make things work correctly in MT programs.
7927           Thanks to Marius for this fix.
7929         * ace/OS.h: Added several extra constructors for ACE_Time_Value so
7930           that it won't cause problems with the new ACE_Time_Value
7931           (double) constructor.
7933         * ace/Log_Record.cpp (ACE_Log_Record): Added an "L" to the 0
7934           initial value used for time_stamp_.  Thanks to Marius for
7935           reporting this.
7937         * ace: Added the new config-aix-4.2.x.h file, which supports the
7938           AIX4.2 platform.  Thanks to Rob Jordan <jordan@hursley.ibm.com>
7939           for this.
7941         * include/makeinclude/platform_aix4.2.GNU: Added support for the
7942           new AIX4.2 platform.  Thanks to Rob Jordan
7943           <jordan@hursley.ibm.com> for this.
7945         * ace/OS.h: It's now possible to override ACE_DEFAULT_BASE_ADDR in
7946           a config.h file.  This is important for platforms that need to
7947           put shared memory segments at particular address ranges.  Thanks
7948           to Rob Jordan <jordan@hursley.ibm.com> for suggesting this.
7950 Thu Jan 30 16:01:37 1997  David L. Levine  <levine@cs.wustl.edu>
7952         * ace/{config-aix-4.1.x.h,README}: added ACE_HAS_AIX_HIRES_TIMER,
7953           see change to gettimeofday in OS.i below; and ACE_HAS_LONGLONG_T.
7955         * ace/OS.i (gettimeofday, gethrtime): use read_real_time () if
7956           ACE_HAS_AIX_HIRES_TIMER.  Thanks to Bob Olson
7957           <olson@mcs.anl.gov> for this suggestion.
7959         * ace/OS.h: define hrtime_t as long long if ACE_HAS_AIX_HIRES_TIMER.
7961         * ace/OS.{i,cpp}: uninlined ACE_OS::gethostbyname (),
7962           and ACE_OS::inet_ntoa () on VxWorks, because they have
7963           static char arrays.
7965         * ace/OS.i (gethostbyaddr, getservbyname, gethostbyaddr,
7966           gethostbyname, getservbyname_r): with ACE_HAS_NONCONST_GETBY,
7967           instead of copying the const argument, just cast it to (char *).
7968           Thanks to Michael Maxie <maxie@acm.org> for pointing out the
7969           problem with the nonstatic char arrays with sizes determined at
7970           runtime.
7972         * ace/High_Res_Timer.*: added ACE_HAS_AIX_HIRES_TIMER support.
7973           Also, renamed get_time () to elapsed_microseconds ().
7975         * examples/Threads/{Timer.h,context_switch_time.cpp}:
7976           ACE_High_Res_Timer::elapsed_microseconds () instead of
7977           ACE_High_Res_Timer::get_time ().
7979         * bin/create_ace_build: added this script: it creates an ACE build
7980           tree in directory "build/<build name>" below the current
7981           directory, which must be a ACE "top level" directory (such as
7982           $WRAPPER_ROOT).  The build tree directory structure mirrors that
7983           of the ACE top level directory structure, except that instead of
7984           containing any plain files, it contains only symlinks to the files
7985           in the ACE top level structure.
7987 Thu Jan 30 06:57:50 1997  David L. Levine  <levine@cs.wustl.edu>
7989         * ace/Thread_Priority.cpp (convert_to_os_priority): changed
7990           switch (priority_class) to switch (priority_class_).
7991           Thanks to Chris Lahey <CLahey@cccis.com> for pointing this out.
7992           Also, return -1 on other than Solaris, Win32, and VxWorks.
7994 Wed Jan 29 22:05:01 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
7996         * tests/Naming_Test.cpp: Added the prefix "test_" to the bind(),
7997           find(), rebind(), and unbind() functions.  This avoids name
7998           clashes with the bind() call from the socket API.  Thanks to
7999           Marius for this info.
8000           
8001         * ace/OS.cpp (ACE_Time_Value): Added a new constructor that makes
8002           it possible to construct an ACE_Time_Value from a double.
8003           Thanks to Brad Flood <BFLOOD@tcs.lmco.com> for this.
8005         * ace/OS.i (thr_join): If ACE_HAS_THREADS is defined, but none of
8006           the threading APIs match (e.g., AIX) then we'll return
8007           ACE_NOTSUP_RETURN(-1).  Thanks to Chris Lahey for help with
8008           this.
8010         * include/makeinclude/platform_aix.GNU: Made some changes to the
8011           type of dynamic linker and libraries used by AIX 4.1.  Thanks to
8012           Chris Lahey for help with this.
8014         * ace/config-aix-4.1.x.h: Changed from BSD 4.3 to 4.4.  Thanks
8015           to Chris Lahey for help with this.
8017 Wed Jan 29 09:03:48 1997  David L. Levine  <levine@cs.wustl.edu>
8019         * ace/OS.h: moved ACE_id_t and ACE_pri_t typedefs out of the
8020           ACE_HAS_THREADS section.
8022         * ace/OS.cpp: fixed ACE_OS::set_sched_params on Win32 and VxWorks.
8024         * ace/Scheduling_Parameters.*, ace/Thread_Priority.*: updated
8025           comments.
8027         * examples/Threads/{context_switch_time.cpp,Timer.h,Makefile}:
8028           added context switch timing test.  Currently only works on
8029           Suns because that's the only platform for which ACE has a
8030           high-resolution timer.
8032         * Makefile: added chmod of VERSION file in TIMESTAMP macro.
8034 Wed Jan 29 00:59:12 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
8036         * include/makeinclude/platform_linux_lxpthread.GNU (CXX): Removed
8037           the -D_MIT_POSIX_PTHREADS symbol since we're using Xavier's
8038           threads instead.  Thanks to Marius Kjeldahl <marius@funcom.com,
8039           mariusk@sn.no> for reporting this.
8041         * ace/config-linux-lxpthreads.h: Removed the _MIT_POSIX_PTHREADS
8042           symbol since we're using Xavier's threads instead.  Thanks to
8043           Marius Kjeldahl <marius@funcom.com, mariusk@sn.no> for reporting
8044           this.
8046 Tue Jan 28 23:32:58 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
8048         * ace/SString: Added hash() methods to each ACE String class so
8049           that we can use this with the new ACE_Hash_Set implementation of
8050           ACE_Map_Manager.
8052         * ace/ACE.h (ACE): Added a UNICODE version of hash_pjw() so that
8053           we can use it to hash ACE_WString.
8055         * ace/OS.i (thr_setprio): Fixed a typo that was left over from a
8056           previous change.  Thanks to Fred LaBar
8057           <flabar@fallschurch.esys.com> for reporting this.
8059         * apps/Gateway/Gateway/{proxy_config,consumer_config}: Added
8060           comments to these config files so they are easier to understand.
8061           Thanks to Chuck Gehr for motivating this.
8063         * apps/Gateway/Peer/Peer.cpp: Changed the name from connection_id_
8064           to proxy_id_, which is more accurate.
8066         * apps/Gateway/Peer/Peer.cpp: Added a destructor to Peer_Handler
8067           so that it can clean itself up properly when shutdown with a
8068           signal.  This fixes a nasty bug.
8070         * ace/config-win32-msvc4.x.h (ACE_HAS_MFC): By default, ACE now
8071           enables ACE_HAS_MFC.  This makes it possible to use
8072           AfxBeginThread() with the ACE_THR_AFX flag.
8074         * ace/OS.cpp: Fixed a typo in the call to ::AfxBeginThread()
8075           function.  Thanks to Karlheinz for reporting this.
8077         * apps/Gateway/Peer/Peer.cpp: Removed all uses of the Map_Manager
8078           from the Peer.  There's only ever one connection from a Gateway
8079           per-Peer, so what was this doing here anyway?!  It was causing
8080           problems due to multiple deletions, so removing it improves
8081           robustness of the tests.
8083         * ace/OS.i: Commented out the "extern char **_sys_siglist"
8084           definition since this was conflicting with the definition in
8085           Solaris.  If some platforms needs this, we'll need to add a
8086           specific #ifdef.
8088 Tue Jan 28 21:57:45 1997  David L. Levine  <levine@cs.wustl.edu>
8090         * ace/OS.{h,cpp}:  added ACE_OS::set_sched_params ().  It permits
8091           platform-independent setting of thread priorities and
8092           priority classes.  It is currently supported on Solaris,
8093           Win32, and VxWorks.
8095         * ace/Scheduling_Parameters.{h,i,cpp},
8096           ace/Thread_Priority.{h,i,cpp}, ace/Makefile:
8097           Added these two classes to support ACE_OS::set_sched_params ().
8099 Tue Jan 28 12:42:39 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
8101         * ace/ace.mdp: Added the "Using MFC in a Shared DLL" flags.
8103         * tests/test_config.h (ACE_INIT_LOG): Made this UNICODE safe.
8105         * tests/Pipe_Test.cpp (main): Added an iteration count to control
8106           the number of children created by the main process.
8108         * ace/Memory_Pool.cpp (init_acquire): cast this->minimum_bytes_ to
8109           size_t to avoid compiler warning if size_t is unsigned.
8111         * ace/OS.h: Added strncat to the OS class.
8113 Tue Jan 28 09:13:00 1997  David L. Levine  <levine@cs.wustl.edu>
8115         * ace/ACE.cpp (ACE::ldfind),
8116           ace/Local_Name_Space_T.cpp,
8117           ace/Local_Token.cpp (ACE_TPQ_Entry::ACE_TPQ_Entry),
8118           ace/Log_Msg.cpp (ACE_Log_Msg::msg, ACE_Log_Msg::find),
8119           Memory_Pool.cpp (ACE_MMAP_Memory_Pool::ACE_MMAP_Memory_Pool),
8120           ace/Naming_Context.cpp (ACE_Naming_Context::open),
8121           ace/Parse_Node.cpp (ACE_Location_Node::open_handle),
8122           ace/Registry.cpp (ACE_Predefined_Naming_Contexts::is_local_host, 
8123                 ACE_Registry::Binding_Iterator::Object_Iteration::next_n,
8124                 ACE_Registry::Binding_Iterator::Context_Iteration::next_n),
8125           tests/UPIPE_SAP_Test.cpp:
8126           changed "sizeof char" to "sizeof (char)" because g++ and Sun C++
8127           (properly) choked on it.
8129         * ace/Local_Name_Space_T.cpp (create_manager_i):
8130           -- ::strncat () instead of ACE_OS::strcat ()
8131           -- "lock_name_for_backing_store" instead of
8132              "lock_name_for_local_name_space"
8134         * ace/Naming_Context.cpp (both constructors): reordered
8135           initializers to match declaration order.
8137         * include/makeinclude/platform_sunos5_g++.GNU: removed
8138           -fno-strict-prototypes because it's not needed with SunOS 5.5.1.
8140 Mon Jan 27 21:33:00 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
8142         * tests/Naming_Test.cpp (main): Made modifications to the test to
8143           make it more dynamic.  Also made it work with UNICODE and
8144           ACE_Naming_Context.
8146         * ace/Local_Name_Space_T.cpp (create_manager_i): Added a better
8147           naming scheme for the locks.
8149         * ace: Changed the calculations of string lengths such that the
8150           size of the character type is carefully considered.
8152           The following were affected:
8153           
8154           ACE.cpp (ACE::ldfind)
8155           Local_Token.cpp (ACE_TPQ_Entry::ACE_TPQ_Entry)
8156           Log_Msg.cpp (ACE_Log_Msg::msg, ACE_Log_Msg::find)
8157           Memory_Pool.cpp (ACE_MMAP_Memory_Pool::ACE_MMAP_Memory_Pool)
8158           Naming_Context.cpp (ACE_Naming_Context::open)
8159           Parse_Node.cpp (ACE_Location_Node::open_handle)
8160           Registry.cpp (ACE_Predefined_Naming_Contexts::is_local_host, 
8161                 ACE_Registry::Binding_Iterator::Object_Iteration::next_n,
8162                 ACE_Registry::Binding_Iterator::Context_Iteration::next_n)
8163                         
8164         * ace/OS.h: Added UNICODE support for ACE_DEFAULT_LOCALNAME.
8166         * ace/Proactor.cpp: Redid "lost" changes to add UNICODE support to:
8168           /* Proactor */
8169           ACE_Overlapped_File::ACE_Overlapped_File
8170           ACE_Overlapped_File::open
8172         * ace/Registry_Name_Space.h: Changed the order of #include and
8173           #define as that the correct set of MACROS are defined for the
8174           include files.
8176         * tests/MM_Shared_Memory_Test.cpp: Added UNICODE support.
8177         
8178 Mon Jan 27 09:16:03 1997  David L. Levine  <levine@cs.wustl.edu>
8180         * include/makeinclude/platform_sunos5_sunc++.GNU,
8181           include/makeinclude/platform_sunos5_sunc++_orbix.GNU,
8182           ace/config-sunos5.5-sunc++-4.x-orbix.h
8183           ace/config-sunos5.5-sunc++-4.x.h:
8184           disabled exception handling by commenting out ACE_HAS_EXCEPTIONS
8185           in the config files and adding -noex to the platform files,
8186           because it causes trouble, at least on MP machines.
8188 Mon Jan 27 14:54:31 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
8190         * ace/Memory_Pool.h: Added code to ACE_MMAP_Memory_Pool_Options to
8191           take a minimum_bytes parameter.  This is needed to prevent mmap
8192           remapping when a large segment is requested.  Thanks to Fred
8193           LaBar <flabar@fallschurch.esys.com> for this.
8195 Sun Jan 26 13:39:13 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
8197         * ace/OS.i: Changed the typo sis_siglist to sys_siglist.  Also,
8198           changed the logic from #if !defined (ACE_HAS_SYS_SIGLIST) to
8199           #if defined (ACE_HAS_SYS_SIGLIST) since this makes more sense...
8200           Thanks to Nanbor Wang <nw1@cs.wustl.edu> for noticing this.
8202 Sat Jan 25 20:30:23 1997  David L. Levine  <levine@cs.wustl.edu>
8204         * ace/config-sunos5.5-sunc++-4.1.h: commented out ACE_HAS_EXCEPTIONS
8205           #define because -noex is required with it, and that causes core
8206           dump during thread exit on multiprocessor UltraSparcs.
8208         * include/makeinclude/platform_sunos5_sunc++_4.1.GNU: added -noex
8209           back because of core dump during thread exit on
8210           multiprocessor UltraSparcs.
8212         * examples/ASX/Event_Server/Event_Server/Event_Analyzer.cpp,
8213           examples/ASX/UPIPE_Event_Server/Event_Analyzer.cpp (control):
8214           added "default" case to switch statement to eliminate compiler
8215           warnings about enumeration values not being handled in switch.
8217         * examples/ASX/UPIPE_Event_Server/event_server.cpp (consumer):
8218           removed unused variable "iter".
8220 Sat Jan 25 12:50:24 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
8222         * ace/OS.i: Updated all the cond_timedwait() and cond_wait()
8223           methods so that they decrement the count of waiters by one even
8224           when errors occur.  Thanks to Irfan for finding this.
8226         * ace/Map_Manager.cpp: Updated the ACE_Map_Iterator code so that
8227           it no longer crashes if the Map has been closed.  Thanks to
8228           Slawomir Kuzniar <kuzniar@Bear.COM> for reporting this.
8230 Sat Jan 25 11:34:56 1997  Irfan Pyarali  <irfan@flamenco.cs.wustl.edu>
8232         * ace/SOCK_Connector.cpp (complete): Added a sleep of zero seconds
8233           which allows non-blocking connects to work properly on NT.
8235         * ace/config-winnt-4.0-msvc4.x.h and config-win32-msvc4.x.h: 
8236           Added ACE_HAS_BROKEN_NON_BLOCKING_CONNECTS.
8238         * ace/OS.i: Moved out all code for Time_Value from #if region. It
8239           is common to all.
8241         * ace/Reactor: Added helper routines to stop the VC++ compiler from
8242           bitching about destructors in exception handling code.
8244         * ace/ace.{mak,mdp}: Removed Time_Value.cpp from project.
8246         * tests/tests.{mak,mdp}: Corrected the creation of SOCK_Test and
8247           Message_Blob_Test executables and temporary files.
8249 Fri Jan 24 09:01:50 1997  David L. Levine  <levine@cs.wustl.edu>
8251         * examples/Connection/misc/Connection_Handler.cpp: added
8252           specialization of ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH>
8253           so that subproject will build with g++ without optimization.
8255         * apps/Gateway/Gateway/Proxy_Handler.cpp: added specializations
8256           of ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_SYNCH> and
8257           ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH>
8258           so that subproject will build with g++ without optimization.
8260         * tests/Reactor_Exceptions_Test.cpp (main): added ACE_UNUSED_ARG
8261           for argc and argv when ACE_HAS_EXCEPTIONS is not defined.
8263         * performance-tests/Misc/test_mutex.cpp: made destructor of
8264           Thread_Mutex_Derived virtual because the class has other virtual
8265           functions.
8267 Thu Jan 23 11:51:45 1997  David L. Levine  <levine@cs.wustl.edu>
8269         * ace/config-sunos5.5-g++.h: commented out ACE_HAS_EXCEPTIONS because
8270           -fhandle-exceptions is broken in g++ 2.7.2 (and is required in order
8271           to use exception handling); also, added ACE_HAS_INLINED_OSCALLS, if
8272            __ACE_INLINE__ is #defined.
8274         * ace/config-sunos5.5-sunc++-4.1.h: added ACE_HAS_INLINED_OSCALLS,
8275           if __ACE_INLINE__ is #defined.
8277 Wed Jan 22 15:04:47 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
8279         * ace/OS.h: Moved the ACE_TIMER_SKEW macro to below the #inclusion
8280           of config.h and updated it so that it can be overridden in the
8281           config.h file if necessary.  Thanks to Bob Olson
8282           <olson@mcs.anl.gov> for motivating this.
8284         * ace/OS.cpp: Fixed the implementation of
8285           ACE_Thread_ID::operator== so that it works correctly when thread
8286           ids and thread handles aren't ints.  Thanks to Chuck Gehr for
8287           reporting this.
8289         * ace/OS.i (thr_getprio): Moved a stray #else into the right
8290           place.  Thanks to Chuck Gehr for reporting this.
8292         * ace/OS.i (sema_post): this->count_++ should have been
8293           s->count_++.  Thanks to Chuck Gehr for reporting this.
8295         * ace/Synch_T.cpp: Added an extern "C" definition for
8296           ACE_TSS_C_cleanup().  Thanks to Chuck Gehr for reporting this.
8298         * ace: Added a new #define called ACE_LACKS_SYS_NERR to the
8299           config files for MVS and VxWorks.  This is used in OS.cpp
8300           as follows:
8302           #if defined (ACE_LACKS_SYS_NERR)
8303           int sys_nerr = ERRMAX + 1;
8304           #endif /* ACE_LACKS_SYS_NERR */
8306           Thanks to Chuck Gehr for reporting this.
8308         * Removed all #inclusions of "ace/Time_Value.h."  This file
8309           no longer contains anything besides a #include "ace/OS.h"
8310           and is only kept around due to backwards compatibility.
8312         * ace: Moved the contents of Time_Value.h into OS.h to reduce the
8313           confusion that arises from the #inclusion of "config.h" in
8314           Time_Value.h.  Also merged the contents of Time_Value.{i,cpp}
8315           into OS.{i,cpp}.  Thanks to the MDA guys for motivating this.
8317         * tests/Reactor_Exceptions_Test.cpp: Added a new test that
8318           exercises the Reactor with C++ exceptions.  Thanks to Luca for
8319           the test.
8321         * ace/Reactor.cpp (handle_events): Added Win32 structured
8322           exception handling support to the ACE_Reactor::handle_events()
8323           method so that it correctly releases the token lock when Win32
8324           SEH occur in callback routines.  Thanks to Luca for reporting
8325           this problem.
8327         * ace: Added a new macro called ACE_HAS_EXCEPTIONS, which
8328           indicates that the compiler supports C++ exception handling.
8330         * include/makeinclude/platform_sunos5_sunc++*.GNU: Commented out
8331           the -noex flag for now.  Hopefully, things will work correctly
8332           now.
8334         * ace/Thread_Manager.cpp (exit): Removed the final acquire() on
8335           ace_mon, which is no longer necessary since the Guard classes
8336           now keep track of whether they are "owned".  Thanks to Karlheinz
8337           and Detlef for this fix.
8339 Wed Jan 22 09:05:31 1997  David L. Levine  <levine@cs.wustl.edu>
8341         * Makefile,VERSION: modified top-level Makefile (and VERSION)
8342           to add a timestamp to the VERSION file if creating a release
8343           from the /project/adaptive/ACE_wrappers directory.  If it
8344           causes problems, this will disable it:
8345           % make  TIMESTAMP=  release.
8347         * ace/Local_Tokens.cpp (dump): replaced "ACE_TSS<ACE_TPQ_Entry>"
8348           with "ACE_TPQ_ENTRY" so that ACE_NO_TSS_TOKENS is supported.
8350         * ace/Synch.h: fixed typo in comment header for ACE_Thread_Semaphore
8352         * ace/config-vxworks-ghs-1.8.h,config-vxworks5.2-g++.h,
8353           config-unixware-2.01-g++.h:
8354           protect ACE_HAS_INLINED_OSCALLS #defined with
8355           #if defined (__ACE_INLINE__).
8357         * apps/Gateway/Gateway/Event_Channel.cpp (open): added
8358           ACE_UNUSED_ARG (sig);.
8360         * examples/ASX/Event_Server/Event_Server/Peer_Router.h:
8361           declared a friend of class Peer_Router_Context because it
8362           has a private destructor, to eliminate compiler warning
8363           about not having any friends.
8365         * examples/ASX/Event_Server/Event_Server/Supplier_Router.cpp
8366           (open): added return 0 in "true" branch of if statement so
8367           that the function always returns a value.
8369 Tue Jan 21 09:19:44 1997  David L. Levine  <levine@cs.wustl.edu>
8371         * tests/Reader_Writer_Test.cpp (reader): commented out unused
8372           variable "n"; also, commented out unused function
8373           print_usage_and_die.
8375         * tests/TSS_Test.cpp, Thread_Manager_Test.cpp (main): added
8376           ACE_UNUSED_ARG (sa);.
8378         * tests/Thread_Pool_Test.cpp (open):  added return 0 at end.
8380 Tue Jan 21 11:00:12 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
8382         * apps/Gateway/Gateway/Gateway.cpp (parse_args): There was a small
8383           bug in parse_args (latest beta), it mixed proxy and consumer
8384           conf files.  Thanks to Per Andersson
8385           <Per.Andersson@hfera.ericsson.se> for reporting this.
8387 Mon Jan 20 13:29:28 1997  David L. Levine  <levine@cs.wustl.edu>
8389         * ace/OS.i, ace/Task.h, and ace/Thread_Manager.h: changed a few
8390           occurrences of NULL to 0 (for other than Win32 platforms),
8391           primarily to avoid compiler warnings on VxWorks if ACE.h isn't
8392           #included before stddef.h.
8394         * netsvcs/clients/Naming/Dump_Restore/Dump_Restore.cpp
8395           (handle_input): replaced %d format with %hu for u_short arg.
8397         * netsvcs/clients/Tokens/deadlock/deadlock_detection_test.cpp
8398           (run_writer): initialized variable "t" to avoid compiler warning.
8400         * examples/Connection/misc/Connection_Handler.cpp (handle_timeout):
8401           added ACE_UNUSED_ARG (tv); also, added explicit int return type
8402           to definition of Connection_Handler::close (u_long).
8404         * examples/Threads/task_four.cpp (Invoker_Task::svc):
8405           moved declaration of "task" out of for loop because it is
8406           also used after the for loop.
8408         * netsvcs/lib/Name_Handler.cpp, Server_Logging_Handler.cpp,
8409           TS_Clerk_Handler.cpp, TS_Server_Handler.cpp, Token_Handler.cpp:
8410           added ACE_UNUSED_ARG (sig);.
8412 Sun Jan 19 11:10:49 1997  David L. Levine  <levine@cs.wustl.edu>
8414         * include/makeinclude/platform_sunos5_sunc++.GNU,
8415           platform_sunos5_sunc++_4.1.GNU:
8416           added comment about compiler warnings with +w option.
8417           Also, added +w to platform_sunos5_sunc++_4.1.GNU.  With the
8418           other changes in this ChangeLog entry, there no longer should
8419           be significant warnings from Sun C++ when building ACE.
8421         * examples/ASX/Event_Server/Event_Server/Peer_Router.cpp
8422           (Peer_Handler::put): added ACE_UNUSED_ARG (tv);.
8424         * examples/IPC_SAP/SPIPE_SAP/NPServer.cpp (main),
8425           netsvcs/clients/Tokens/invariant/invariant.cpp (main):
8426           commented out argc and argv.
8428         * examples/Mem_Map/file-reverse/file-reverse.cpp (main):
8429           removed unused variable "cp".
8431         * netsvcs/clients/Tokens/manual/manual.cpp (handle_input,
8432           handle_exception): added ACE_UNUSED_ARG (fd); and
8433           (create_proxy): added return statement at end:  even
8434           though it should never be reached, it eliminates a
8435           compiler warning.
8437         * examples/OS/Process/process.cpp,
8438           examples/Reactor/Misc/test_reactors.cpp,
8439           netsvcs/clients/Tokens/deadlock/deadlock_detection_test.cpp,
8440           netsvcs/clients/Tokens/mutex/test_mutex.cpp,
8441           netsvcs/clients/Tokens/rw_lock/rw_locks.cpp,
8442           performance-tests/TTCP/ORBeline/ttcp_i.cpp,
8443           performance-tests/TTCP/Orbix/ttcp_i.cpp (main):
8444           return 0 instead of 42.
8446 Sat Jan 18 10:54:25 1997  Prashant Jain  <pjain@merengue.cs.wustl.edu>
8448         * java/src/README: Updated the README file to indicate how
8449           documentation for Java ACE cab be automatically generated.
8451 Fri Jan 17 11:47:10 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
8453         * ace/OS.h: Added an equivalent set of
8454           ACE_LSOCK_{STREAM,ACCEPTOR,CONNECTOR} macros to complement the
8455           ones for ACE_SOCK_*.  Thanks to Gonzalo Diethelm
8456           <gonzo@ing.puc.cl> for suggesting this.
8458         * ace/OS.cpp (ACE_Thread_Adapter): Added a new feature that allows
8459           logging features to be inherited by threads.  It works with
8460           those OSs (e.g., Win32) that use ACE_Thread_Adapter class.  At
8461           some point, we might do this for all the OSs.  Thanks to Luca
8462           for this.
8464         * examples/Connection/misc/Connection_Handler.cpp: Added a
8465           new example that illustrates how to use the Acceptor pattern
8466           to create multiple threads, each running its own Reactor.
8468         * ace/Log_Msg.cpp (dump): Some of the variables in the dump()
8469           method have the wrong format specification type. These are:
8470           restart_ (%d), flags_ (%x), priority_mask_ (%d).  They are now
8471           fixed, thanks to Luca.
8473         * tests/Priority_Task_Test.cpp (open): Add an ACE_ASSERT to make
8474           sure that the tasks activate() correctly.  Thanks to David for
8475           finding this.
8477         * ace/config-linux-lxpthreads.h: Added #defines for
8478           ACE_HAS_AUTOMATIC_INIT_FINI and ACE_HAS_SVR4_DYNAMIC_LINKING.
8479           Thanks to Marius for this.
8481         * ace/Malloc.h: Changed the typedef of ACE_Malloc_Align to a macro
8482           called ACE_MALLOC_ALIGN to allow users to override this value in
8483           their config.h file.  This is necessary for platforms that don't
8484           have "long" word alignments.  Thanks to Fred LaBar
8485           <flabar@fallschurch.esys.com> for this suggestion.
8487         * ace/OS.h: Added an #ifdef check for ACE_HAS_IRIX62_THREADS and
8488           if so, we'll use the if (&a) /* null */; } form of the
8489           ACE_UNUSED_ARG macro to avoid unnecessary warnings.  Thanks to
8490           Fred LaBar <flabar@fallschurch.esys.com> for testing this out.
8492 Fri Jan 17 16:33:25 1997  David L. Levine  <levine@cs.wustl.edu>
8494         * ace/High_Res_Timer.*: added elapsed_time () and get_time ().
8496         * netsvcs/clients/Tokens/collection/collection.cpp, rw_locks.cpp:
8497           commented out unused variables to avoid compiler warnings; and
8498           return 0 from main ().
8500         * include/makeinclude/rules.local.GNU,
8501           netsvcs/lib/Makefile,
8502           examples/Service_Configurator/IPC-tests/server/Makefile:
8503           fixed ESOBUILD mechanism to work on all platforms, not just Linux.
8504           Thanks to Marius Kjeldahl <marius@funcom.com> for this fix.
8506         * ace/OS.i and OS.cpp: uninlined functions that use varargs, because
8507           they usually won't get inlined anyways.
8509         * ace/OS.cpp (thr_create): added #else clause to be sure that
8510           always sparam.sched_priority always get set to the priority argument.
8512         * netsvcs/clients/Naming/Client/Client_Test.cpp: commented out
8513           unused parameters and wrapped combined assignments/conditional
8514           values to avoid compiler (g++) warnings.
8516         * tests/Priority_Task_Test.cpp: added check for successful thread
8517           spawn, and ACE_NEW_THREAD to svc () so that messages get logged.
8519 Thu Jan 16 17:03:47 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
8521         * include/makeinclude: Added support for shared object files
8522           on Linux.  Thanks to Marius Kjeldahl <mariusk@sn.no,
8523           marius@funcom.com> for his help with this. 
8525         * ace: Merged in the IRIX support, mainly the missing netdb
8526           reentrant functions.  Thanks to Gonzalo Diethelm
8527           <gonzo@ing.puc.cl> and Carlos O'Ryan <coryan@mat.puc.cl> for
8528           their help.
8530         * ace/Timer_{List,Heap,Queue}: Changed iterator() to iter() to
8531           avoid name clashes with STL (ugh).
8533         * ace/Timer_{Heap,List}.cpp: Added ACE_BUILD_DLL so that things
8534           will link.  Thanks to John Morey for reporting this.
8536         * ace/Synch_T.h: Fixed: class ACE_Write_Guard: method:
8537           tryacquire_write so that it will call
8538           ...->lock_->tryacquire_write() and not
8539           ...->lock_->acquire_write().  Thanks to Alexandre Karev
8540           <Alexandre.Karev@cern.ch> for this fix.
8542 Thu Jan 16 15:51:16 1997  David L. Levine  <levine@cs.wustl.edu>
8544         * Dump.cpp (register_object): initialized "slot" so that g++ doesn't
8545           complain about uninitialized use.
8547         * Reactor.cpp (initialized): use ACE_GUARD_RETURN instead of
8548           ACE_GUARD because the function returns a value;
8549           (find): initialize "i" if handle is out of range so that g++
8550           doesn't complain about uninitialized use.
8552         * Service_Repository.cpp (remove): removed unused variable "handle".
8554         * Thread_Manager.h: made destructor virtual now that spawn_i () is
8555           virtual.
8557         * Timer_Heap.cpp: changed some int loop indicies to size_t to
8558           make sure that comparisons are consistently signed or unsigned.
8560         * OS.h, config-vxworks*.h: removed ACE_HAS_GREENHILLS_SOCKETS
8561           ACE macro because the code it wrapped applies to all VxWorks
8562           compilers, not just GreenHills.
8564 Wed Jan 15 02:06:21 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
8566         * ace/ACE.cpp (round_to_pagesize): If _SC_PAGESIZE is enabled then
8567           we set the ACE::pagesize_ variable using sysconf(2).  Thanks to
8568           James Mansion for this suggestion.
8570 Wed Jan 15 02:06:21 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
8572         * ace/Timer_Queue.cpp (expire): Changed a line of code from
8573         
8574           ACE_Timer_Queue_Iterator &iterator (this->iterator ());
8576           to
8578           ACE_Timer_Queue_Iterator &iterator = this->iterator ();
8580           so that the Visual C++ compiler can grok it.  Thanks to John
8581           Morey for reporting this.
8583         * ace/Reactor.cpp: Modified the close() method so that it can be
8584           called multiple times with no bad side-effects.
8586         * ace/Pipe.cpp: Modified the close() method so that it can be
8587           called multiple times with no bad side-effects.
8589         * ace/Reactor: Added an initialized() method that indicates
8590           whether the Reactor was successfully initialized.  Also
8591           rearranged the code in ACE_Reactor::open() so that initialized_
8592           is only set at the end of the method when everything succeeds.
8593           If things *don't* succeed, we call close() on the way out.
8594           Thanks to Luca for these suggestions.
8596         * ace/Reactor.cpp (close): When closing down the ACE_Reactor, we
8597           now set initialized_ back to 0 so that it can be reopened again
8598           later.
8600         * tests/Reader_Writer_Test.cpp: There were some problems with this
8601           test due to the fact that on many pthreads platforms pthread_t
8602           isn't an int (it's a struct).  Thanks to Chuck Gehr
8603           <gehr@sweng.stortek.com> for the fix.
8605         * ace/OS.i (exit): In WIN32 when the process exits through an
8606           ExitProcess() call, some process resources (e.g., file handles)
8607           are freed before the static variable destructors are
8608           called. This results in an application error when tracing is
8609           enabled.  Removing the ACE_TRACE call in ~ACE_Event_Handler
8610           seems to fix this.  Thanks to Luca for this fix.
8612         * ace/OS: Fixed the implementation of semaphores for the POSIX
8613           port (POSIX lacks semaphores).  The trick was to add a "waiters"
8614           field, along with the semaphore count.  Thanks to John Bossom
8615           <John.Bossom@Cognos.COM> for reporting this.
8617         * examples/Threads/wfmo.cpp: Added a new test program that seems
8618           to indicate that the Win32 WaitForMultipleObjects() function can
8619           be called in multiple threads, all of which wait on the same set
8620           of HANDLEs.  Note that the dispatching of the threads is
8621           relatively "fair" (i.e., everyone gets a chance to process the
8622           various HANDLEs as they become active).  Thanks to Ari Erev
8623           <Ari_Erev@comverse.com> for suggesting this and providing the
8624           initial code.
8626         * ace/Thread_Manager.h: Made the spawn_i() method virtual and
8627           moved it into the protected section of the class so that it can
8628           be over-ridden by subclasses.  Thanks to Tim Harrison for
8629           suggesting this.
8631 Tue Jan 14 15:57:55 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
8633         * ace/OS.h: Changed the default size of ACE_DEFAULT_TIMERS to
8634           _SC_TIMER_MAX (which is typically around 40 or so).
8635           Thanks to Stuart Powell <stuartp@in.ot.com.au> for
8636           suggesting this.
8638         * tests/Timer_Queue_Test.cpp (main): Added some additional logic
8639           so that we can test the performance of the preallocated and
8640           non-preallocated ACE_Timer_Heap.
8642         * ace/Timer_Heap: Added a new "preallocate nodes" mechanism to the
8643           ACE_Timer_Heap.  If this is enabled by the constructor, then we
8644           preallocate as many ACE_Timer_Nodes as there are slots in the
8645           heap.  This allows us to completely remove the need for dynamic
8646           memory allocation, which is important for real-time systems.
8648         * ace/Thread_Manager.cpp (remove_thr): Optimized the code just a
8649           tad by decrementing the current_count_ *first*.  Thanks to Per
8650           Andersson <Per.Andersson@hfera.ericsson.se> for suggesting this.
8652         * ace/ReactorEx: Updated the implementation so that the
8653           handle_events() method now in fact *does* return the number of
8654           event handler's dispatched (i.e., the implementation matches the
8655           documentation...).  Thanks to Hamutal Yanay
8656           <Hamutal_Yanay@mail.icomverse.com> for reporting this.
8658         * ace/Service_Repository.cpp (remove): Removed an extra call to
8659           ACE_OS::dlclose().  This is already being called in the
8660           destructor of ACE_Service_Record.  Thanks to Karlheinz for
8661           reporting this.
8663         * man: Updated all the nroff and html documentation.
8665         * ace/Timer_Heap: Implemented the spiffy new timer cancellation
8666           algorithm that requires only O(log N) time to remove a timer
8667           from the ACE_Timer_Heap.  This is about 50 to 100 times faster
8668           than using the ACE_Timer_List implementation.
8670 Tue Jan 14 21:01:36 1997  David L. Levine  <levine@cs.wustl.edu>
8672         * ace/OS.h: Replace "Linux" preprocessor symbol with "linux".
8674 Mon Jan 13 17:57:50 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
8676         * ace/Synch: Added lock() accessor methods to both
8677           ACE_Process_Semaphore and ACE_Process_Mutex.  Thanks to Hamutal
8678           Yanay <Hamutal_Yanay@mail.icomverse.com> for suggesting this.
8680         * ace/config-mvs.h: Added a #define for ACE_HAS_GETPAGESIZE.
8681           Thanks to Chuck Gehr for this information.
8683         * ace/LSOCK_Stream.h: Added a new typedef for PEER_ADDR that is
8684           associated with ACE_UNIX_Addr.  Thanks to Mark Rabotnikov
8685           <mark@usp.elscintcorp.co.il> for suggesting this.
8687 Mon Jan 13 22:24:09 1997  David L. Levine  <levine@cs.wustl.edu>
8689         * ace/OS.h: Added #undefs of sigemptyset and sigfillset on Linux
8690           when __OPTIMIZE__ is enabled.  Yes, the system header on Linux
8691           really #defines them when optimizing!  Thanks to an anonymous
8692           ACE user for pointing this out.
8694         * tests/tests_config.h: Dropped ACE_MAX_ITERATIONS back to 10.
8696 Sun Jan 12 16:59:52 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
8698         * ace/Timer_List.cpp (schedule): Cleanup the code so that (1)
8699           timer_id never == -1 (in order to distinguish it from error
8700           return values and (2) so that we avoid an unnecessary check for
8701           operator new failure.
8703         * ace/OS.h: Added a new #define called ACE_DEFAULT_MAX_TIMERS,
8704           which specifies the maximum number of ACE_Event_Handlers
8705           supported by ACE_Timer_Heap.
8707         * ace/Proactor.cpp (ACE_Proactor): Updated the allocation of
8708           ACE_Timer_Queue so that it really points to an ACE_Timer_List by
8709           default.  Naturally, this can be overridden by users.
8711         * ace/ReactorEx.cpp (open): Updated the allocation of
8712           ACE_Timer_Queue so that it really points to an ACE_Timer_List by
8713           default.  Naturally, this can be overridden by users.
8715         * ace/Reactor.cpp (open): Updated the allocation of
8716           ACE_Timer_Queue so that it really points to an ACE_Timer_List by
8717           default.  Naturally, this can be overridden by users.
8719         * ace: Added two new classes called ACE_Timer_List and
8720           ACE_Timer_Heap, which derive from ACE_Timer_Queue.
8721           ACE_Timer_List is essentially the old behavior of
8722           ACE_Timer_Queue, i.e., it uses an implementation of a linked
8723           list of ACE_Timer_Nodes.  ACE_Timer_Heap, on the other hand,
8724           uses a heap-based callout queue, which is more appropriate for
8725           certain real-time applications.
8727         * ace/Timer_Queue: Revised the ACE_Timer_Queue implementation so
8728           that it's now an abstract base class with most of the
8729           implementation details pushed into the ACE_Timer_List and
8730           ACE_Timer_Heap subclasses.
8732         * ace/Timer_Queue.h: Made all the ACE_Timer_Queue methods public
8733           so that we can override them in a subclass (e.g., the new
8734           ACE_Timer_Heap).
8736         * examples/Logger/Acceptor-server/server_loggerd.cpp: Fixed this
8737           example application so that it only uses a single Reactor (the
8738           REACTOR::instance()) rather than two Reactors.  Thanks to Sandro
8739           Doro <alex@aureus.sublink.org> for reporting this.
8741         * netsvcs/lib/Logging_Strategy.cpp: Fixed the #include of
8742           fstream.h and iostream.h to use the '<' '>' notation rather than
8743           the '"' and '"' notation.  This avoids problems with running
8744           "make depend".  Thanks to Rino Simioni <sir@necsy.it> for
8745           reporting this fix.
8747 Sun Jan 12 18:20:49 1997  David L. Levine  <levine@cs.wustl.edu>
8749         * ace/ACE.cpp (round_to_pagesize): fixed typo in reference to
8750           ACE::pagesize_.
8752         * ace/ACE.cpp: initialize ACE::pagesize_ to 0.
8754         * ace/config-irix*.h and config-win*.h: removed ACE_PAGE_SIZE
8755           definition because these platforms no longer use it.
8757         * tests/UNIX*.conf and Win32server.conf:  replaced net_svcs
8758           with netsvcs.
8760 Sat Jan 11 15:11:28 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
8762         * ace/OS.i (thr_setprio): The POSIX implementation of
8763           ACE_OS:thr_setprio did not set the priority.  It calls:
8765           pthread_setschedparam( thr_id, &policy, &param )
8767           and then does
8769           prio = param.sched_priority.
8771           instead of
8773           param.sched_priority = prio;
8774           
8775           This is now fixed.  Thanks to John Bossom <John.Bossom@Cognos.COM>
8776           for reporting this.
8778         * ace/config-irix*.h: Modified all the IRIX config files to
8779           use the new ACE_HAS_GETPAGESIZE feature since this is necessary 
8780           to differentiate between IRIX and IRIX64.
8781           Thanks to Fred LaBar <flabar@fallschurch.esys.com> for
8782           reporting this.
8784         * ace/ACE.cpp: Modified the round_to_pagesize() so that if
8785           a config.h file enables ACE_HAS_GETPAGESIZE then we use
8786           that function in preference to the value in config.h.
8787           Thanks to Fred LaBar <flabar@fallschurch.esys.com> for
8788           suggesting this.
8790         * ace/ACE.cpp: Modified the round_to_pagesize() so that on
8791           platforms that allow the page size to be obtained dynamically
8792           we'll get that rather than replying on what it set in the
8793           config.h file.  We'll cache this value in a static variable
8794           to speedup searches.  Thanks to James Mansion for suggesting
8795           this.
8797         * apps/Gateway/Gateway: Finished adding support for thread-safe
8798           reference counting to the uses of ACE_Message_Block.
8800         * examples/ASX/Event_Server/Event_Server/Peer_Router.cpp: Replaced
8801           the use of ACE_MT_SYNCH with ACE_SYNCH so that this will compile
8802           correctly on non-MT platforms.
8804 Fri Jan 10 12:38:42 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>
8806         * Added a COPYING file that explicitly states the copyright status
8807           of ACE.
8809         * ace/config-win32-msvc4.x.h and ace/config-winnt-4.0-msvc4.x.h:
8810           By default, we'll revert to *not* enabling
8811           ACE_HAS_TEMPLATE_TYPEDEFS for MSVC++ 4.2, even though this is
8812           well-support by the compiler since it breaks some application
8813           code that expects to use 3 template parameters for
8814           ACE_Svc_Handler<>.  The "fix" is to use the ACE_SOCK_STREAM
8815           macros (rather than using the "ACE_SOCK_Stream, ACE_INET_Addr"
8816           tuple) in order to achieve portability in either case.  Thanks
8817           to Karlheinz for pointing out the need for backwards
8818           compatibility.
8820 Wed Jan  8 01:00:05 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
8822         * tests/Message_Block_Test.cpp: Enhanced the torture test of the
8823           ACE_Message_Block so that it stresses the reference counting
8824           implementation in a multi-threaded environment.
8826 Wed Jan 08 10:26:45 1997  David L. Levine  <levine@cs.wustl.edu>
8828         * ace/Message_Block.cpp (~ACE_Data_Block): assigned 0 to
8829           allocator_strategry_ after deleting it; fixed template
8830           specializations (for g++) by using macros instead of class names;
8831           commented out template specializations because Service_Record.cpp
8832           already has them, and they should only appear once in the library
8833           in order to avoid link clashes
8835         * ace/Service_Object.cpp (ACE_Service_Object): reordered
8836           initializations in constructor
8838         * ace/Service_Record.cpp (ACE_Service_Record): reordered
8839           initializations in constructor
8841         * ace/config-linux-lxpthreads.h:  added
8842           ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS, thanks to
8843           James CE Johnson <jcej@lads.com> for tracking down this
8844           problem and testing the fix.
8846 Tue Jan  7 13:03:25 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
8848         * ace/Message_Block: Continued to improve the
8849           ACE_Message_Block/ACE_Data_Block implementation.
8851         * ace/Message_Block: Added a new constructor to ACE_Message_Block
8852           that takes an ACE_Data_Block * and "owns" it.  Thanks to Tim for
8853           this idea.
8855         * ace/Log_Msg.cpp: Now that we've prevented signal handlers from
8856           occurring within critical sections of ACE_Log_Msg::log() we
8857           don't need to use the ACE_Recursive_Thread_Mutex anymore.
8858           Instead, we just need ACE_Thread_Mutex.
8860         * ace/Log_Msg.cpp (log): Added an ACE_Sig_Guard to the block in
8861           ACE_Log_Msg::log() that acquires the mutex that serializes
8862           output.  This prevents nasty problems with recursive to
8863           ACE_Log_Msg::log() from within signal handlers.
8865         * ace/Service_Config.cpp (end_reactor_event_loop): Added a timeout
8866           of ACE_Time_Value::zero to the ACE_Reactor::notify() method when
8867           called in the ACE_Service_Config::end_reactor_event_loop().
8868           This prevents the Reactor from blocking indefinitely if there's
8869           no longer a thread to receive from the notification pipe.
8870   
8871         * netsvcs/clients/Naming/Dump_Restore: Removed the vestigal
8872           nametest.cpp and nametest.h files.  I'm not sure why they were
8873           still there, but they shouldn't have been!
8875         * ace/Synch.i (remove): this->owner_ should be set to -1 before
8876           calling this->release().  Thanks to Per Andersson
8877           <Per.Andersson@hfera.ericsson.se> for suggesting this.
8879         * ace/Thread_Manager.cpp (exit): Added a flag called "do_thr_exit"
8880           to the ACE_Thread_Control::exit() method.  This controls whether
8881           we call ACE_OS::thr_exit() after removing the thread from the
8882           Thread Manager's internal table.  This is necessary to work
8883           around pthread bugs on certain platforms (e.g., AIX and Linux).
8885         * ace/Synch.h: Removed the
8886           ACE_Recursive_Thread_Mutex::set_nesting() method since this
8887           isn't being used and is potentially dangerous.  Thanks to Per
8888           Andersson <Per.Andersson@hfera.ericsson.se> for suggesting this.
8890         * ace/XtReactor: Updated the XtReactor so that it uses the next
8891           internal Reactor implementation.  Thanks to Mark Rabotnikov
8892           <mark@usp.elscintcorp.co.il> for reporting this.
8894         * ace/Task.i: Updated the grp_id(int) method to cache the group id
8895           in the task and then set it in the Thread_Manager, if there is
8896           one.  Thanks to Hamutal Yanay <Hamutal_Yanay@mail.icomverse.com>
8897           for suggesting this.
8899         * ace/Log_Record.h: Updated the ACE_Log_Record class to use the
8900           new ACE_MAXLOGMSGLEN macro.
8902         * ace/OS.h: Added a new #define called ACE_MAXLOGMSGLEN.  By
8903           default this is 4k.  However, you can reset it in the config.h
8904           file if you'd like to increase or decrease the size.  Thanks to
8905           Anthony McConnell for suggesting this.
8906           
8907         * examples/Threads/tss[12].cpp: Tidied up the tss1.cpp and
8908           tss2.cpp examples and improved the comments.  Thanks to Luca for
8909           suggesting this.
8911         * ace/Service_Object.cpp (fini): Added the "virtual" keyword to
8912           the new destructor of ACE_Service_Type.  Thanks to David for
8913           reporting this.
8915         * ace/Message_Block.i: Rearranged the order of the ACE_Data_Block
8916           and ACE_Message_Block locking_strategy() methods so that they'd
8917           be defined as inline before being used.  Thanks to David for
8918           reporting this.
8920 Mon Jan  6 16:46:06 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
8922         * ace/Service_Manager.cpp (fini): Only try to remove the
8923           ACE_Service_Manager from the Reactor if it's actually been
8924           registered in the first place (i.e., if it's get_handle() method
8925           does not return ACE_INVALID_HANDLE).
8927         * netsvcs/servers/svc.conf: Changed the name of the net services
8928           .so file from libnet_svcs to netsvcs so that it will work
8929           correctly with our new "cross-platform" svc.conf ACE::ldfind()
8930           strategy.  Thanks to Marius Kjeldahl <marius@funcom.com> for
8931           reporting this.
8933         * ace/Reactor.cpp (find): Added a strategic break and a check for
8934           handle_in_range().  Thanks to Tim for this help!
8936         * netsvcs/clients/Naming/Client/svc.conf: Removed the "lib" part
8937           from the executable shared object file names in the svc.conf
8938           file so that it will work with the new "cross-platform" svc.conf
8939           ACE::ldfind() strategy.  Thanks to Marius Kjeldahl
8940           <marius@funcom.com> for reporting this.
8942         * ace/Service_Record.cpp (fini): Added an extra assignment to a
8943           temporary const void *obj to avoid problems with MSVC++ and it's
8944           cast mechanism.
8946         * ace/ReactorEx.h: Added a default parameter to
8947           ACE_ReactorEx::notify().  Thanks to Tim for noticing this.
8949 Sun Jan  5 10:48:23 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
8951         * tests: Added a new test for ACE_Message_Block, which is called
8952           Message_Block_Test.cpp (no surprise there ;-)).  This test
8953           exercises the reference counting mechanisms.
8955         * ace/Message_Block.h: Made the destructors for ACE_Message_Block
8956           and ACE_Data_Block virtual, so that these classes can be
8957           subclassed and ACE_Message_Blocks can delete these
8958           subclasses (either via release() or delete).  Thanks to Tilo
8959           Christ for suggesting this.
8961         * ace/Message_Block.cpp: Modified the implementation
8962           of ACE_Message_Block/ACE_Data_Block so that we always create
8963           an allocator_strategy_.  By default, this strategy will be
8964           ACE_Allocator_Adapter <ACE_Malloc <ACE_Local_Memory_Pool, ACE_Null_Mutex> >;
8965           This greatly simplifies the code.
8967         * ace/Message_Block.h: It's now possible to assign a
8968           Message_Block's priority when you create it.
8970         * ace/Reactor: Sped things up some more by merging the Reactor's
8971           any_ready() and fill_in_ready() methods together.  This reduces
8972           redundant computations.
8974         * ace/Reactor: Changed the name of ACE_Reactor::detach() to
8975           ACE_Reactor::remove_handler_i() and changed the name of
8976           ACE_Reactor::attach() to ACE_Reactor::register_handler_i().
8977           This is more consistent with the other naming schemes.
8979         * ace/Reactor.cpp: Reworked the implementation of the Handler
8980           Repository's unbind() method in order to simplfy the logic.
8981           Also merged in all the Reactor's detach() functionality into the
8982           unbind() method in order to localize all the handler removal
8983           processing.
8985         * ace/Reactor[Ex].cpp: Added more descriptive errno entries for
8986           failed operations in the handler repository.
8988         * ace/Reactor.cpp: Modified the implementation of the Handler
8989           Repository's bind() method so that it reports an error if you
8990           try to register an Event_Handler for an invalid HANDLE.
8992         * ace/Reactor.cpp: Reimplemented the internals of the Reactor to
8993           prepare for the upcoming merge of the Reactor and ReactorEx to
8994           use a single code base.
8996         * ace/Timer_Queue.cpp: Modified the behavior of the expire()
8997           methods so that they return the number of ACE_Event_Handlers
8998           whose handle_timeout() method was called.
9000 Sat Jan  4 11:47:05 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
9002         * ace/Reactor.h: Removed the #ifdefs for ACE_HAS_POLL.  This will
9003           be recast as a strategy in subsequent implementations.
9005         * ace/Reactor.cpp: Added a new call,
9006           ACE_Handler_Repository::handle_in_range(), which checks to make
9007           sure that the HANDLE is within the range of 0 .. max_handlep1_.
9008           This factors out some redundant code.
9010         * ace/Reactor.cpp: Sped up the performance of the Reactor by
9011           removing redundant calls to
9012           ACE_Handler_Repository::invalid_handle() and
9013           ACE_Handler_Repository::find().
9015         * tests/Reactors_Test.cpp: Added a test for
9016           the new Reactor::notify() method with timeouts.
9018         * examples/Reactor/Misc/notification.cpp (svc): Added a test for
9019           the new Reactor::notify() method with timeouts.
9021         * ace/Reactor[Ex]: Modified the Reactor and ReactorEx so that they
9022           use timed send() operations for their notify() methods.  This
9023           makes it possible for users to bound the amount of time they're
9024           willing to wait to try and notify the Reactor.  This is mostly
9025           useful to avoid infinite blocking if there is congestion in the
9026           Reactor's notification mechanism.
9028         * ace/ACE.cpp: Added a new timed send() method that uses the
9029           write() system call on UNIX and the socket send() call on Win32.
9030           This new method is used in the new ACE_Reactor::notify() method,
9031           which now supported timed notifications.
9033         * ace/Reactor.cpp (ACE_Handler_Repository): To simplify the code
9034           and reduce unnecessary #ifdefs, I've merged the max_handlep1_
9035           and cur_size_ fields (which are now called max_handlep1_).
9037 Fri Jan  3 10:47:15 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
9039         * ace: Replaced all uses of "delete mb" with mb->release ();
9041         * ace/Stream_Modules.cpp: Replaced the use of explicit bit
9042           twiddling with the ACE_BIT* macros.
9044         * ace/Message_Block.cpp: Make sure that we use the
9045           allocator_strategy_ to create the memory for the reference count
9046           since this may need to go into shared memory if that's the
9047           memory pool where the Message_Block allocations are coming from.
9049         * ace/OS.h: Added two new macros, ACE_ALLOCATOR_RETURN and
9050           ACE_ALLOCATOR, which are similar to ACE_NEW_RETURN and ACE_NEW, 
9051           except that these
9053         * ace/Message_Block.cpp (release): Make sure to "delete this"
9054           outside the scope of the locking_strategy_.
9056         * ace/Service_Object.cpp: Added a destructor to ACE_Service_Type.
9057           Thanks to Per.Andersson@hfera.ericsson.se (Per Andersson) for
9058           suggesting this.
9060         * ace/Service_Object.i: Be smarter about how we reassign the name_
9061           pointer, i.e., delete the old one and make a copy.  Thanks to
9062           Per.Andersson@hfera.ericsson.se (Per Andersson) for reporting
9063           this.
9065         * ace/Module.cpp (open): Rearranged the assignments to
9066           reader_q->mod_ and writer_q->mod_ so that we don't try to
9067           initialize through NULL pointers.  Thanks to
9068           Per.Andersson@hfera.ericsson.se (Per Andersson) for reporting
9069           this.
9071         * ace/Service_Record.cpp (ACE_Service_Record): Initialized name_
9072           to NULL so that the following change works correctly now.
9073           Thanks to Per.Andersson@hfera.ericsson.se (Per Andersson) for
9074           reporting this.
9076         * ace/Service_Record.i (name): Make sure to delete [] (char *)
9077           this->name_ before allocating a new one.  Thanks to
9078           Per.Andersson@hfera.ericsson.se (Per Andersson) for reporting
9079           this.
9081         * ace/Message_Block: Reworked the reference counting implemention
9082           so that reference counts are shared correctly amongst their
9083           various owners.  This requires making a deep copy the "header"
9084           portion, but a shallow copy of the "data."
9086         * ace/Message_Block.cpp (ACE_Message_Block): Updated all three
9087           ACE_Message_Block constructors so that they all call the init()
9088           method.  This centralizes all the initialization logic in one
9089           place.
9091 Thu Jan  2 00:42:21 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
9093         * ace/Message_Block.cpp (ACE_Message_Block): Make sure to set the
9094           cont_ field to 0 after "releasing" it so that we don't
9095           mistakenly think it's still around later on.  This problem arose
9096           in the ACE_Message_Queue::close() method, which was trying to
9097           count the number of bytes being freed.
9099         * ace/Message_Queue.cpp (close): Fixed a subtle bug where we
9100           weren't actually deleting messages from the
9101           ACE_Message_Queue::close() routine.  This should work now...
9103         * ace/Message_Queue.cpp (close): Replaced the use of "delete mb"
9104           with "mb->release()" since the Message_Blocks are now reference
9105           counted.  
9107         * ace/Message_Block: Enhanced the reference counting scheme so
9108           that you can increment and decrement the count by an arbitrary
9109           amount.  This is particular useful when you know you'll be
9110           sending the same Message_Block to N consumers.
9112         * ace/Singleton: The dump() must be used same as instance()
9113           (without supplying an object) so it must be declarated *static*,
9114           i.e.,
9116           static void dump (void);
9118           Thanks to Sandro Doro <alex@aureus.sublink.org> for reporting
9119           this.
9121         * examples/ASX/Event_Server: Completely rewrote and retested the
9122           ACE Event Server example.  The new code is *much* easier to
9123           understand, has many more comments, is more robust, and compiles
9124           much faster since I removed many of the templates.
9126         * examples/ASX/Event_Server/Tranceiver/tranceiver.cpp: Fixed the
9127           tranceiver so that it shuts down correctly when the Event_Server
9128           exits.
9130         * examples/Connection/non_blocking/CPP-connector.cpp: Fixed a
9131           problem where we were trying to select() on ACE_STDIN on Win32.
9132           Naturally, this doesn't work, so we used the
9133           ACE::register_stdin_handler() to fix this.  Thanks to
9134           Samuel_Bercovici <Samuel_Bercovici_at_EFT__AD2@mail.icomverse.com>
9135           for reporting this.
9137         * examples/ASX/Event_Server/Event_Server/Options: Changed the
9138           Options class to be a Singleton...
9140         * ace/Task.h: Added "const" method qualifier to accessor methods
9141           like is_reader() and is_writer().
9143 Wed Jan  1 00:10:47 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>
9145         * ace/Message_Block: Added a new static release() method that
9146           behaves like the non-static method release(), except that it
9147           checks if <mb> is 0.  This is similar to CORBA::release(), which
9148           is useful if you want to eliminate lots of checks for NULL
9149           pointers before calling release() on them.
9151         * Updated all places in ACE where we use
9152           ACE_Event_Handler::READ_MASK when we should be using
9153           ACE_Event_Handler::ACCEPT_MASK.
9155         * examples/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.cpp:
9156           Changed the name of the acceptor class from Handle_Thr_Stream to
9157           Handle_Thr_Acceptor, which is more accurate.
9159         * ace/Reactor: Since we've now got an
9160           ACE_Event_Handler::ACCEPT_MASK (intended primarily to accept
9161           connections asynchronously using Win32 overlapped I/O) we can
9162           now use this with the ACE_Reactor, as well.  In particular, any
9163           time that we are registering a "passive-mode" socket acceptor we
9164           can now specify ACE_Event_Handler::ACCEPT_MASK.  This is much
9165           more intuitive than using the READ_MASK (which never made any
9166           sense...).  The ACE_Reactor now treats the ACCEPT_MASK as a
9167           READ_MASK internally, so you can still use READ_MASK if you'd
9168           like (i.e., this change doesn't break any existing code).
9170         * ace/Event_Handler: Changed "get_priority" and "set_priority" to
9171           simply "priority(void)" and "priority(int)" to be more
9172           consistent with other parts of ACE.
9174         * apps/Gateway/Gateway: Updated the Gateway so that the
9175           concurrency strategies can now be specified on the
9176           command-line (or in the svc.conf file), rather than being
9177           determined at compile-time.  This is much more flexible.
9178           See the ./apps/Gateway/Gateway/README file for details.
9180         * apps/Gateway/Gateway: Verified that all the multi-threading
9181           strategies still work.
9183         * ace/Message_Block.cpp (ACE_Message_Block): Make sure that we
9184           "release" the continuation field, rather than delete it, since
9185           its reference count may be > 1.
9187         * ace/Log_Msg.cpp (log): Change the abort_prog logic a bit so that
9188           we always print a message to stderr if we're exiting,
9189           regardless...  Thanks to David Levine for pointing this out.
9191         * apps/Gateway/Gateway: Moved all of the configuration file
9192           parsing logic *outside* of the Event_Channel into the Gateway
9193           class so that we wouldn't have unnecessary dependencies.
9195         * apps/Gateway/Gateway: Redesigned the Gateway so that the
9196           Proxy_Handlers (i.e., the Consumer_Proxy and Supplier_Proxy)
9197           most of their work to the Event_Channel.  This "lightweight
9198           proxy" design is an improvement since it is now possible to
9199           emulate the COS Event Channel semantics within the Event_Channel
9200           "kernel."
9202         * Happy new year!  Let's start a new ChangeLog to celebrate the
9203           new year.