Make x.0.10 publicly available
[ACE_TAO.git] / ACE / ChangeLogs / ChangeLog-1995
blob429e5681fdc24750351ef066a485f4a47563f2b7
1 Sun Dec 31 01:02:01 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3         * ace/OS (mmap): Added a new parameter to the argument list for
4           mmap().  This parameter is an ACE_HANDLE * and is used in the
5           Win32 implementation, which requires CreateFileMapping to open a
6           new HANDLE.  This handle is passed back to the caller, which is
7           then responsible for freeing it...  I'll probably need to modify
8           the ACE_Mem_Map class to manage this new handle for the WIN32
9           version.
11         * ace: Updated all the SPIPE files in preparation to porting them
12           to Windows NT, where they will be implemented using Win32 Named
13           Pipes!
15         * ace/Typed_SV_Message: Fixed a mysterious braino where the method
16           definitions for Typed_SV_Message were actually within
17           Typed_SV_Message_Queue.cpp.  I'm not sure why this happened, but
18           it's clearly been this way for eons...  Also, changed the name
19           of the method "max" to "max_size" to avoid conflicts with macros
20           on Windows NT...
22         * ace: Added a new config symbol: ACE_HAS_SYSV_IPC.  If this is
23           *not* set (e.g., Win32) then don't try to compile any of the
24           System V IPC mechanisms (e.g., shared memory, message queues,
25           semaphores).
27         * ace/Malloc: Reimplemented the Malloc-family to factor out common
28           code.  Also added a new method called "trybind" which atomically
29           tries to bind a new void *pointer to a char *name.  If there is
30           no name with the same value, the bind succeeds.  Otherwise, the
31           bind "fails", but returns the existing pointer.
33         * ace/Map_Manager: Reimplemented the Map_Manager to factor out
34           common code.  Also added a new method called "trybind" which
35           atomically tries to bind a new int_id to an ext_id.  If there is
36           no ext_id with the same name, the bind succeeds.  Otherwise, the
37           bind "fails", but returns the existing int_id.
39         * ace/Memory_Pool.cpp: Commented out all the diagnostic messages
40           in the various ACE_*_Memory_Pools.  Now that we're actually
41           using this within ACE, they were distracting.
43         * ace/CORBA_Handler.cpp (ACE_ST_CORBA_Handler): Gave iterations_
44           an initial value of "5" for backwards compatibility.  Thanks to
45           Irfan for doing this.
47         * ace/Map_Manager.cpp (ACE_Map_Manager): Fixed some more braino in
48           the constructors of Map_Manager.  During the recent changes I'd
49           forgotten to initialize the Map_Manager's instance variables to
50           0.  Thanks to Irfan for finding this out the hard way... ;-)
52         * ace/OS.i (gettimeofday): Added a WIN32 implementation of
53           gettimeofday.  This is pretty nasty, but it should centralize
54           all of this processing in one place in ACE!
56 Sat Dec 30 00:50:20 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
58         * ace/Timer_Queue: Removed the current_time() method from the
59           Timer_Queue class.  All uses will be replaced with calls to
60           ACE_OS::gettimeofday().  Not only does this factor out more
61           code, but it is also reentrant!
63         * ace/ACE.cpp (handle_timed_accept): Consolidated code so that
64           select() is always used, rather than poll().
66         * ace: Generalized the ACE file locking wrappers (both at the
67           Synch-level and the ACE_OS class level) to enable them to lock
68           arbitrary regions (aka "records") of a file.  Before, they could
69           only lock the entire file (which remains the default behavior).
70           This new behavior works for both NT and UNIX.
72         * ace/Synch: Removed the definition and use of the
73           ACE_SYNCH_ERROR_RETURN macro from all the ACE Synch* methods.
74           This behavior has been integrated into the ACE_OS class instead
75           since it cleans up lots of code that would otherwise have been
76           hard to write.
78         * ace/INET_Addr.cpp (get_host_name): Fixed a bug that arose by
79           trying to use the reentrant version of gethostbyaddr all the
80           time.  In order to fix this, I've added a new get_host_name()
81           method that allows the caller to supply a buffer for the
82           hostname.
84         * ace: Cleaned up all the POSIX_TIMER junk that permeated ACE.
85           Now all platforms will have the POSIX timer structures (e.g.,
86           timestruc_t and timespec), though only those that actually
87           support nano-second timing will be able to do anything useful
88           with this...  As part of this cleanup, the poll, select, and
89           cond_timedwait method in ACE_OS now take ACE_Time_Value * rather
90           than int, timeval *, and timestruc_t, respectively.  This
91           *greatly* cleans up the clutter throughout the rest of ACE.
93         * ace/ACE: Added two new methods called tv2msec and msec2tv that
94           converts ACE_Time_Value format into millisecond format and vice
95           versa.  This will make it easier to port code between NT and
96           UNIX.
98         * ace/Reactor: Removed the code in the Reactor that previously
99           allowed it to be resized after it had been initialized.  This
100           code no longer was used due to the recent enhancements that
101           ensure the Reactor is only initialized once per-process.
103         * ace/Reactor: Modified the Reactor so that it now compiles on NT.
104           It doesn't work yet, but at least it compiles!
106         * ace/Reactor: Moved the "max3" method from the Reactor to OS.h,
107           where it has become a template function usable throughout ACE.
109         * ace/OS.cpp: Added extern "C" before the NT implementations of 
110           readv() and writev().
112         * ace/OS.i: Fixed the declaration of ::readv() and ::writev() for
113           cases where the OS doesn't provide them natively.
115         * ace/Event_Handler: Modified handle_signal() to take an int
116           rather than an ACE_HANDLE.  The old way broke under NT...
118         * ace: Made lots of minor changes to resolve signed int
119           vs. unsigned int mismatches.  Thanks to the MSVC++ 4.0 compiler
120           for pointing these out.  At least it's good for
121           something... ;-).
123 Fri Dec 29 15:01:10 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
125         * ace/ACE.cpp (handle_timed_accept): Reimplemented the core
126           select() loop to make the code portable to Win32.
128         * ace/Map_Manager.cpp (ACE_Map_Manager): Fixed a minor bug caused
129           by recent changes (forgot to initialize max_size_ in the
130           constructor...).
132         * Updated all the manual pages to reflect the latest changes.
134         * ace/ACE.cpp: Fixed up the ACE class so that all of the methods
135           should compile on both Windows NT and UNIX!
137         * ace/OS: Moved the get_file_size() method from class ACE and put
138           it into class ACE_OS, where it's been renamed to filesize().
139           This is really more of an "OS" function, e.g., it's supported on
140           Win32 directly.
142         * ace/OS.cpp: added readv() and writev() implementations for those
143           platforms (e.g., Windows NT) that require them.
145         * ace/Makefile: Added a new regex to the Svc_Conf_l.cpp target
146           that will substitute <stdio> for <unistd>.  This should solve a
147           portability problem with Windows NT...
149         * ace/Malloc: Modified the sync() and protect() methods to use
150           void * rather than char *.  This is now consistent with the OS
151           classes.
153         * ace/OS: Changed things so that all the mmap() related OS
154           wrappers use void * in their external interface.  Any
155           discrepancies between platforms are now dealt with internally,
156           in the implementation of the methods.  Thanks to Chris Lahey
157           (clahey@ix.netcom.com) for suggesting this.
159         * ace/Local_Name_Space: Modified how ACE_NS_String is used to
160           instantiate ACE_Map_Manager in order to work around problems
161           with AIX C++.  Thanks to Chris Lahey (clahey@ix.netcom.com) for
162           reporting this.
164         * ace/Synch.i: Added a definition for ACE_RW_Mutex::acquire().
166 Fri Dec 29 00:34:16 1995 Chris Lahey (clahey@ix.netcom.com)
168         * ace/OS.h: Changed the #ifdef for ACE_HAS_COMPLEX_LOCKS to
169           ACE_HAS_COMPLEX_LOCK.
170         
171           Changed prototypes for ACE_OS:mprotect(), msync(), and munmap()
172           to accept ACE_MMAP_TYPE for their first arg.  The AIX versions
173           of these calls all expect void * for their pointer variable.
174           Note that madvise() takes a caddr_t for its 1st arg and
175           therefore does not need to be altered.  (See related changes in
176           OS.i and Mem_Map.i)
178           Changed prototype for ACE_OS::getsockname(), arg3 to int * (See
179           related change in OS.i)
181           Changed prototype for ACE_OS::setsockopt(), arg4 to const char *
182           and arg 5 to int (See related change in OS.i)
184         * ace/OS.i: Changed function definition for ACE_OS::mprotect(),
185           msync(), and munmap() to accept ACE_MMAP_TYPE as their 1st arg.
187           The following changes relate to the inconsistencies in the
188           sockets calls on AIX.  I thought it would make more sense to
189           leave the public interfaces alone and then handle the
190           differences internally.  That way it won't break any exisiting
191           code.
193           Changed function definition for ACE_OS::getsockname() to accept
194           arg3 as int *.  Made similar changes in ACE_OS::setsockopt() -
195           change definition to accept const char * for arg4 and int for
196           arg5. Add the following code at the start of the function:
197           Also made changes to ACE_OS::recvfrom() - change arg 6 back so it is 
198           int *. 
200         * ace/Mem_Map.i: In ACE_Mem_Map::advise(), cast 1st arg to
201           ACE_OS:madvise() to (caddr_t).
203         * ace/Memory_Pool.cpp: In ACE_MMAP_Memory_Pool::acquire(), make
204           cast to char * in the return statement.  In
205           ACE_MMAP_Memory_Pool::handle_signal(), also make same cast in
206           the ACE_DEBUG statement near the top of the function.
208         * ace/Reactor.cpp and ace/Reactor.h: ACE_Reactor::handler_i()
209           doesn't return properly if *eh != 0.  Remove last "else" so
210           function always returns 0 if handler != 0.
212           In ACE_Reactor::owner(), we need to change signature since
213           thread_t is not an integer.  This has been changed to int
214           ACE_Reactor::owner(thread_t *t_id); The last two lines have been
215           changed to: *t_id = this->owner_; return 0;
217         * ace/Synch.cpp: In ACE_Condition_Mutex::wait(), the call to
218           cond_timedwait() does not exist, but ACE_OS::cond_timedwait()
219           does exist.  It takes the same arguments.
221         * ace/Synch.h and ace/Synch_T.h: At the end of both files, before
222           the #define INLINE check for this define's existence to avoid
223           causing compilers to choke.
225         * ace/Mem_Map.i: In ACE_Mem_Map::operator(), the return statement
226           looked very odd.  In the assignment to addr, why is the ", 0" in
227           the statement?
229 Fri Dec 29 00:34:16 1995  Douglas C. Schmidt  (schmidt@lambada.cs.wustl.edu)
231         * ace: Fixed up many minor problems with the various types of
232           Shared_Memory wrappers.  This mostly entailed changing from char
233           * to void * to be more consistent with the other parts of ACE.
234           In addition, I now only include the *.i files if __INLINE__ is
235           enabled.
237         * ace/Memory_Pool.cpp (map_file): Fixed a minor bug by enabling
238           MAP_FIXED if we're trying to map a file using a fixed address.
240 Thu Dec 28 18:39:16 1995  Douglas C. Schmidt  (schmidt@merengue.cs.wustl.edu)
242         * ace/Local_Name_Space.cpp: Finished implementing changes to the
243           ACE_Malloc stuff and the Local_Name_Space that Irfan had begun
244           last semester.
246         * ace/SString.cpp: Added new optimizations to the assignment
247           operators of the ACE_[WCS]String classes to avoid
248           freeing/allocating memory if the current size is large enough.
250         * ace/SString: Added copy constructors...
252         * ace/Local_Name_Space.cpp: Modified the implementation of bind()
253           to avoid a race condition.
255         * ace/Map_Manager.cpp (bind): Changed the semantics of bind() so
256           that callers can control whether or not INT_IDs are reassigned.
257           Also changed things so that callers can get back the existing
258           value if they choose not to reassign.
260         * ace/SString.cpp: Removed the "P" (persistent) versions of all
261           these classes and merged them into the default versions.  The
262           persistence is now determined by the type of allocator passed in
263           as a parameter to the constructor (or by using the "default"
264           allocator that is accessible via
265           ACE_Service_Config::allocator()).
267         * ace/Map_Manager.cpp: Removed the "P" (persistent) versions of
268           all these classes and merged them into the default versions.
269           The persistence is now determined by the type of allocator
270           passed in as a parameter to the constructor (or by using the
271           "default" allocator that is accessible via
272           ACE_Service_Config::allocator()).
274         * ace/Malloc_T: Modified the bind() algorithm so that it will
275           allow the caller to determine whether duplicates are allowed or
276           not...  Also changed things so that callers can get back the
277           existing value if they choose not to allow duplicates.  Irfan
278           questions the sanity of this... ;-)
280         * ace/Synch: To be consistent, added acquire_write and
281           acquire_read methods to ACE_Mutex.  These are useful for cases
282           where we are going to be parameterizing classes like ACE_Malloc
283           with some type of mutex wrapper (e.g., ACE_RW_Mutex, ACE_Mutex).
285         * ace/Malloc_T.cpp (calloc): Added a new method called "calloc"
286           that will not only allocate the memory dynamically, but will
287           also give it an initial value (e.g., '\0').
289 Thu Dec 28 01:10:43 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
291         * ace/OS.i: Modified the implementation of the TLI methods so that
292           they are conditionally compiled away if the platform doesn't
293           support TLI...  Thanks to Neil Cohen for pointing out the need
294           for this...
296         * ace/OS.i: Modified the implementation of dlopen() and dlsym() to
297           account for limitations with SunOS 4.x...
299         * ace/Service_Repository.cpp: Modified this class to use the
300           ACE_OS::dlclose method.
302         * ace/Parse_Node.cpp: Modified this class to use the
303           ACE_OS::dlopen and ACE_OS::dlsym methods.
305 Wed Dec 27 23:25:03 1995  Jesper S. M|ller  (stophph@diku.dk)
307         * Added appropriate flags in OS.h for successful inclusion of
308           several header files, such as Malloc.h and friends.  Also added
309           mprotect to ACE_OS for Win32 to avoid linker errors.
311         * Added a return value (from map_file) to
312           ACE_MMAP_Memory_Pool::handle_signal.  The compiler was
313           complaining.  Likewise on
314           ACE_MMAP_Memory_Pool::commit_backing_store (there 0 seemed like
315           the correct off-the-end return value).
317         * Removed include of some SV semaphore file, if not needed in
318           Malloc.h.  Worse for Memory_Pool.h, since the SV_Semaphore
319           wrappers consistently differ completely from the other
320           synchronization routines. I guess we'll need some variant of
321           ACE_Process_Semaphore that takes an integer as a key instead of
322           a string, and does not perform automatic init/destroy.
323           
324         * Also upgraded fd's from int to ACE_HANDLEs and changes -1 to
325           ACE_INVALID_HANDLE where appropriate.
327         * By help of aggresive preprocessor conditionals, made Handle_Set
328           work with Win32. There is a fd_set abstraction with appropriate
329           FD_xxx macros for WinSock, and it requires no sync'ing.  The
330           Handle_Set_Iterator should also work. The good looks of
331           Handle_Set was impaired, though. Right now, the trigger is the
332           ACE_WIN32 flag, although it should be something like
333           ACE_FD_SET_USES_BITS for the unix approach, or like
334           ACE_FD_SET_USES_VECTOR for the WinSock approach.
336         * Reactor almost compiles now, but not quite: Handlers are
337           addressed by fd, this is no longer possible - what a mess - we
338           need to step through the handle indices somehow. This will
339           likely get into some nasty quadratic complexities when iterating
340           the handles to find the event_handler for each file
341           handle. Mabye we can circumvent this with a hash table lookup
342           for those opaque handles.
344         * There was a problem with the Svc_Conf.l.cpp and the
345           Svc_Conf.y.cpp and the extremely lame MSVC++ 2.0.  I had to
346           rename them to Svc_Conf_y.cpp, etc. Awful!
348         * Added code to inquire the 'host' name for Win32 in the ACE_Client_Id
349           class. Another candidate for ACE_OS.
351         * About 60 or so ACE .cpp files compile now, which reminds me that
352           I'll be working on some precompiled header scheme soon, since it
353           takes for ever and ever, even on my 32meg system with pretty
354           good SCSI drives.  Mabye it's because I'm only running a 66MHz
355           i486 DX2 (yawn).
357         * Dozens of other changes have been made to various files, all
358           pertaining to int vs. ACE_HANDLE. In Service_Manager.h, a signal
359           number was an ACE_HANDLE, but just close by, some fd's were
360           ints. Fixed that, too.
362 Sat Dec 23 14:15:16 1995  Jesper S. M|ller  (stophph@diku.dk)
364         * I've also grouped the .i and .cpp functions by class,
365           and #if'ed the sbrk and SysV pools out, since 
366           Win32 cannot support those.
368         * Added 'inline' to day accessor functions in Date_Time.
370         * Two things that missed me in Trace.cpp:
371           1) The inclusion order was so that I couldn't
372              build Trace.o, since it didn't know the MALLOC_HOOK thing.
373              I moved the #include of Trace.h down below that of ACE.h.
374           2) The declaration and definition of the ACE_Trace constructor
375              differed by a const, which I added.
376           3) When linking, multiple symbols were found for some
377              OS calls like mutex_init, corresponding to the larger
378              OS Win32 functions. I has ACE_INLINED_OS_CALLS off,
379              so sometimes the OS functions were inlined, sometimes
380              not.
381              I disabled the inline hack in Trace.cpp for WIN32 for now.
382           This seemed to resolve matters.
384         * There was a major problem in OS.i, where Synch.h was needed for
385           mutex support (in conjunction with TSS info linked list).  I
386           chose to make thr_keycreate and some others non-inlined.
388         * More 'is-it-a-handle-or-success' confusion in SOCK*.* Changed
389           ACE_SOCK_Dgram to use int status.  Changed ACE_SOCK_CODgram to
390           use int status.  Changed ACE_LSOCK to use int status. Also
391           changed a few derived classes
392         
393 Fri Dec 22 14:03:15 1995  Douglas C. Schmidt  (schmidt@lambada.cs.wustl.edu)
395         * ace/OS.h: Added a new type for rwlock_t for platforms that don't
396           support threading...  Thanks to Neil Cohen for reporting this.
398         * ace: Merged in all of Jesper's changes for NT and Chris Lahey's
399           changes for AIX.
401         * ace: Merged tli.h into OS.h to avoid name conflicts on Win32.
403         * Fixed duplicated names where case is the only difference.
404                 ace/thread.cpp
405                 ace/Thread.cpp
406                 ace/TLI.h
407                 ace/tli.h
408                 apps/Token_Server/mutex_example/simple_token_client.cpp
409                 apps/Token_Server/mutex_example/Simple_Token_Client.cpp
410                 apps/Token_Server/script_example/scripting_token_client.cpp
411                 apps/Token_Server/script_example/Scripting_Token_Client.cpp
412                 tests/IPC_SAP/SOCK_SAP/FD-client.cpp
413                 tests/IPC_SAP/SOCK_SAP/fd-client.cpp
414                 tests/IPC_SAP/SOCK_SAP/FD-server.cpp
415                 tests/IPC_SAP/SOCK_SAP/fd-server.cpp
416         
417 Wed Dec 20 22:26:24 1995  Jesper S. M|ller  (stophph@diku.dk)
419         * FIFO.cpp: One last comparison of 'open' return status where and
420           ACE_INVALID_HANDLE should be changed to -1.
422         * One more last wrong comparison in FIFO_Recv_Msg.cpp.
423           (Never say never again!)
425         * Put an appropriate conditional around the inclusion of
426           Handle_Set.h for ACE_WIN32 (for now).
428         * Introduced a few backslashes in the macros of Dump.h that were
429           somehow left out...  Had to add a really stupid constructor for
430           struct Tuple.  I haven't a clue why MSVC++ wants this!  Replaced
431           'return ACE_ODB;' with 'return ACE_ODB::instance_;' in the
432           Singleton access function. 
434         * Added a constructor for ACE_ODB. It may be private, but it still
435           needs to be defined...
437         * Stack and Set compiles fine for Win32 (not surprisingly)
438         
439         * If'ed out the guts of ACE_IPC_SAP enable/disable calls for
440           Win32, since async IO doesn't work that way on there.
442         * Event_Handler now uses ACE_INVALID_HANDLE for default args.
444         * SOCK compiles except for the ACE_SOCKET <> ACE_HANDLE
445           problem. Refer to issue #3 above.
447         * We're swamping the ace directory with .mak files. I used the
448           winntace.mak file, which is compilable and linkable.
450 Thu Dec 21 15:37:42 1995  Douglas C. Schmidt  (schmidt@merengue.cs.wustl.edu)
452         * ace: Greatly simplified the include files so that (1) compilers
453           are faster and (2) the ACE_Trace mechanism works correctly.
455         * ace/Trace: Modified the ACE_Trace_TSS class so that it is no
456           longer a template.  This was overkill since we know the type
457           head of time (i.e., ACE_Trace_State).
459         * ace: Added a number of new changes to ACE to make things work on
460           AIX.  Thanks to Chris Lahey <clahey@ix.netcom.com> for these
461           changes.
463         * ace/Thread_Manager.cpp: Removed the get_max_thr_id() method
464           since it was not portable to NT or POSIX pthreads.  Nothing in
465           ACE depended on it anyway...
467         * ace/OS: Added a new static data member called NULL_thread that
468           is a "zero'd" out thread id.  This is necessary to deal with the
469           POSIX pthread implementation of a thread id, which is not always
470           implemented as a number...  By using this new approach, all the
471           special-case code in Synch.cpp disappears...
473         * ace/OS: Added a new method to class ACE_OS called thr_equal()
474           that masks the differences between comparing thread ids using
475           the threading libraries.  This simplifies the code in Synch.cpp
476           and Reactor.cpp.
478         * ace: Updated all uses of mmap() to use the new ACE_MMAP_TYPE
479           typedef.  This deals with the fact that different versions of
480           UNIX define mmap() inconsistently (e.g., some use void * and
481           some use char *...).
483         * ace: Removed testconfig.h and merged all of those #defines into
484           OS.h.  This centralizes changes in one place and also eliminates
485           the need for ./apps and ./tests to include extraneous files...
487         * ace/testconfig.h: Changed all uses of 0666 to ACE_DEFAULT_PERMS.
488           Also, removed all PERMS enums and substituted ACE_DEFAULT_PERMS
489           instead.
491 Wed Dec 20 17:29:55 1995  Tim H. Harrison  (harrison@merengue.cs.wustl.edu)
493         * Rewrote the Token deadlock detection algorithm.  It now performs
494           "best-effort" detection of deadlock for remote acquires and
495           complete deadlock detection for local acquires.
497 Wed Dec 20 02:37:39 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
499         * ace/OS.h: The select() system call has its own include file on
500           AIX: <sys/select.h>.  We can wrap the #include with a variable
501           #if defined (ACE_HAS_SELECT_H).
503         * include/makeinclude/platform_aix.GNU: Added new support for AIX.
504           Thanks to Chris Lahey <clahey@ix.netcom.com> for these changes.
505           Added a number of other minor changes, as well.
507         * ace: Made a bunch of minor changes to get ACE to compile on
508           SunOS4.x, Linux, and SGI.
510         * ace/config-linux.h: added ACE_HAS_MSG (thanks to Neil Cohen
511           for this).
513         * ace/OS.h: Conditionally compile for ACE_HAS_UTIME for
514           <sys/utime.h>.
516         * Released an alpha version of ACE containing the new Windows NT
517           port.
519         * Integrated and tested all the new Windows NT changes in class
520           ACE_OS, as well as the Synch* and Threads* classes.  We're now
521           able to build Jesper's win32_test.cpp file in ./ace!  A complete
522           NT port should be just around the corner...
524 Tue Dec 19 17:59:04 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
526         * ace: Move the remaining contents of sysincludes.h into ACE.h.
527           There is no more sysincludes.h (at long last!).
529         * ace: Rearranged things so that the OS.[hi] files contain all the
530           OS-specific #defines and #includes that were previously in
531           sysincludes.h.
533         * ace: Renamed the ACE_Misc class to class ACE, which is more
534           representative of what it does.
536         * INSTALL: updated the installation instructions to explain how
537           the new directory structure works.  Thanks to Neil Cohen for
538           pointing out the discrepancy beteen the source and the
539           documentation ;-).
541         * Reorganized (by flattening) the ACE library directory structure
542           to make it work for both Windows NT and UNIX.  Note that Windows
543           NT does not have symbolic links, so the old way of doing things
544           didn't port...  The consequences of these changes is there is
545           now a single directory called $WRAPPER_ROOT/ace that contains
546           the *.[hi] and *.cpp source files.  This is also where the
547           libACE.a and libACE.so libraries are built by default.  Also,
548           note that the suffix used by ACE has been changed from *.C to
549           *.cpp to deal with the lame Visual C++ compiler...
551 Tue Dec 19 01:26:54 1995  Douglas C. Schmidt  (schmidt@merengue.cs.wustl.edu)
553         * tests/ASX/Event_Server/Event_Server/Supplier_Router.cpp (put):
554           Fixed up a problem with the Event_Server.  Somewhere along the
555           way it stopped being concurrent!  The new version fixes this.
556           Thanks to Alex V Maclinvosky <alexm@teltrunk1.tait.co.nz> for
557           noticing this...
559         * Added a billion new changes to class OS to integrate the Windows
560           NT port with the rest of ACE.  We are getting very close...
562 Mon Dec 18 12:45:13 1995  Jesper S. Møller  (stophph@diku.dk)
564         * Major problems in the IPC_SAP. First, I detected that some open
565           calls returned handles, some returned -1 or 0.  For instance
566           ACE_SOCK has a constructor, that calls this->open and expects a
567           handle (which it even sets as the current handle
568           value!). Unfortunately, the return from open is either 0 or -1,
569           depending on how well the open went.  ACE_HANDLE being
570           typedef'ed to a void* really reveals some problems!  I have
571           solved the problem for the FIFO*.* family and for SOCK.* 
573 Mon Dec 18 12:43:46 1995  Douglas C. Schmidt  (schmidt@merengue.cs.wustl.edu)
575         * tests/Reactor/CODgram/CODgram.C (main): Fixed a bug in main()
576           caused by initializing the Reactor twice.  Thanks to Aurelio
577           Nocerino <aurelio@irsipcs2-27-le0.irsip.na.cnr.it> for reporting
578           this.
580         * libsrc/Service_Configurator/Service_Config.C Added a new
581           constructor to ACE_Service_Config that can be used to initialize
582           internal variables without performing a full configuration.
584 Mon Dec 18 01:22:22 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
586         * libsrc/Service_Config: renamed tokens.h to sc_tokens.h to avoid
587           file name collision on Win32.  Thanks to Jesper S. M|ller
588           <stophph@diku.dk> for reporting this.
590         * tests/Mem_Map/IO_Test: renamed io_test.C to test_io.C to avoid
591           file name collision on Win32.  Thanks to Jesper S. M|ller
592           <stophph@diku.dk> for reporting this.
594         * libsrc/Misc/OS: Implemented condition variables for Windows NT.
596 Sun Dec 17 21:23:32 1995  Douglas C. Schmidt  (schmidt@merengue.cs.wustl.edu)
598         * libsrc/Misc/Trace: Fixed up the ACE_Trace class so that it
599           doesn't include any calls that will improperly trigger infinite
600           recursion!  This allows the ACE library to be traced completely.
602 Sat Dec 16 19:12:37 1995  Jesper S. Møller  (stophph@diku.dk)
604         * Changes to OS.*:
605           * Added conditionals to the OS.h for Win32, for the special ACE/Win32
606             thr_destroy_tss(), which is automatic for Solaris.
607           * Changed declarations of thr_create, thr_suspend, thr_continue, 
608             thr_join and thr_[gs]etprio to use hthread_t instead of thread_t.
609           * Changed return type of OS::open from int to ACE_HANDLE.
610           * Provided non-obtrusive handling of thr_handle in OS::thr_create
611             for non-Win32.
612           * Copied ACE::writev to OS::writev for Win32. Something similar
613             should happen for other systems...
615         * Changes to Thread.*:
616           * Changed join, suspend and continue to take handles.
617           * Added thread handle return address to spawn.
619         * Changes to Thread_Manager.*:
620           * Added thread handles to the Thread_Descriptor structure.
621           * Modified insert_thr and append_thr functions to also take
622             handles.
623           * Made ACE_Thread_Descriptor::Thread_State (a enum) public
624             so Thread_Manager::append_thr could use it as a formal
625             parameter (I suspect this is a bug in MSVC++).
626           * Changes the various flavours of suspend, continue, etc. to
627             use handles instead of id's. Keep in mind that none of this
628             is destructive for Unix, but vital for Win32.
629           * There is still a problem with ACE_Thread_Control registering
630             itself with the Thread_Manager - the thread does not have means
631             of finding it's own handle. In this particular case, we could
632             have the thread duplicate it's pseudohandle into a real one,
633             and pass that one along. I'd really, really, really rather not
634             have to maintain a thread id->handle mapping myself; It would
635             slow down thread manipulation and give some troublesome memory
636             overhead.
638         * Changes to Log_Msg.*:
639           * OS::getpid instead of ::getpid.
641         * Changes to Misc.*:
642           * Sections inappropriate for Win32 #if'd out...
643           * Provided naive timestamp function (No date) for Win32.
645         * Changes to IPC_SAP.*:
646           * Uses OS::ioctl instead of ::ioctl
647           * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE
649         * Changes to FIFO.*, :
650           * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE
652         * Changes to FIFO_Send.*:
653           * open now returns an int insted of an ACE_HANDLE.
654           * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE
656         * Changes to FIFO_Send_Msg.*:
657           * open now returns an int insted of an ACE_HANDLE.
658           * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE
659           * Uses OS::writev instead of ::writev
661         * Changes to FIFO_Recv.*:
662           * open now returns an int insted of an ACE_HANDLE.
663           * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE
665         * Changes to FIFO_Recv_Msg.*:
666           * open now returns an int insted of an ACE_HANDLE.
667           * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE
669         * Changes to sysincludes.h:
670           * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE
672 Sat Dec 16 12:29:06 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
674         * libsrc/IPC_SAP/Addr/INET_Addr.C: Changed the implementation so
675           that the reentrant versions of the library calls are always used
676           (class OS sorts this all out).  This reduces the amount of
677           clutter in the code.
679         * libsrc/Threads/Synch: Added a new implementation of
680           "readers/writer" locks for both Windows NT and POSIX pthreads.
681           By default, these threads packages don't have this feature.
683         * libsrc/Threads/Synch: Added a new macro called
684           ACE_SYNCH_ERROR_RETURN that greatly simplifies the definition of
685           the synchronization wrappers.
687         * include/ace/sysincludes.h: Removed the pthreads_map.h file and
688           integrated this into sysincludes.h.  
690 Fri Dec 15 02:39:25 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
692         * libsrc/Misc/OS.i: Finished updating class OS so that it will
693           compile correctly for OS platforms that don't support threads,
694           as well as platforms that support POSIX Pthreads vs. Solaris
695           threads, etc.
697         * libsrc/Misc/OS: integrated Jesper S. M|ller <stophph@diku.dk>
698           support for POSIX regular expressions (e.g., compile() and
699           step()) and sysinfo() into ACE.
701         * Integrated and tested all of Irfan's changes to ACE to support
702           the new persistence Name_Server.  This added some new classes in
703           various places that use the ACE_Allocator.
705 Thu Dec 14 00:23:43 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
707         * tests/ASX/Event_Server/Event_Server: Fixed an "off by 1" bug in
708           the declaration of char *argv[3] in the open() methods of
709           Supplier_Router.C and Consumer_Router.C.  Thanks to the "ever
710           dissatisfied" Alex V Maclinvosky <alexm@teltrunk1.tait.co.nz>
711           for reporting this.
713         * libsrc/Service_Configurator/Service_Config: Added a new
714           "Singleton" access point for the global ACE_Allocator.
716         * libsrc/Naming/Name_Options.C (parse_args): Made it possible to
717           change the name of the process on the command line via the -P
718           option.  The default is still to use argv[0] as the process
719           name.
721         * include/ace/testconfig.h (ACE_DEFAULT_GLOBALNAME): Changed the
722           value from "/localnames" to "/globalnames" to avoid a conflict.
724         * libsrc/Misc/SString.C: Added Irfan's new "persistent" string
725           mechanisms that use the ACE_Allocator_Manager.  We may
726           eventually update the existing SS* stuff to use this.
728         * Merged in Jesper S. M|ller <stophph@diku.dk> updates for Windows
729           NT.
731         * include/ace/Malloc.h: Added a forward declaration for
732           ACE_Malloc_Iterator right before ACE_Malloc.  Thanks to Antonio
733           Tortorici <antonio@rh0011.roma.tlsoft.it> for reporting it.
735         * libsrc/Threads/Synch_T.h: Fixed a small typo in
736           ACE_Null_Condition.  Thanks to Antonio Tortorici
737           <antonio@rh0011.roma.tlsoft.it> for reporting it.
739         * include: Added new config-linux.h and platform_macros.GNU config
740           files for Linux.  Thanks to Timothy Newell
741           <910430n@dragon.acadiau.ca> for this stuff.
743 Wed Dec 13 23:08:11 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
745         * libsrc/IPC_SAP/Addr/INET_Addr.C (set): Fixed a small typo in the
746           ACE_INET_Addr::set (const char port_name[], ACE_UINT32
747           inet_address) method where the test should be != rather than ==
748           0.  Thanks to Bill Lear (rael@anarchy.cybercom.net) for
749           reporting this.
751 Sun Dec 10 12:23:54 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
753         * libsrc/Service_Configurator/Service_Record.C (init): Fixed a
754           small problem where a NULL pointer was being returned if a user
755           passes a non-existent config file (using the -f option) to
756           ACE_Service_Config::open().  Thanks to Dieter Quehl
757           (quehl@erlh.siemens.de) for noticing this.
759         * libsrc/Log_Msg/Log_Msg.C (log): added a new option (%T) that
760           causes the current timestamp to be inserted into the log msg.
761           Thanks to Dieter Quehl (quehl@erlh.siemens.de) for suggesting
762           this.
764         * libsrc/Misc/Misc: Added a new timestamp() method that returns
765           the current timestamp in the form
766           "hour:minute:second:microsecond."  The month, day, and year are
767           also stored in the beginning of the date_and_time array.
769         * tests/Shared_Malloc: Added Irfan Pyarali <ip1@cec.wustl.edu> new
770           test program that exercises the new features of ACE_Malloc that
771           are described in the following bullet.
773         * libsrc/Shared_Malloc: Added Irfan Pyarali <ip1@cec.wustl.edu>
774           cool new versions of ACE_Malloc and ACE_MMAP_Memory_Pool.  These
775           new versions provide the following enhancements:
776           
777           1. Persistence -- via the sync() method
778           2. Protection -- via the prot() method
779           3. Named malloc chunks -- via bind(), find(), unbind().
780           4. Named iteration -- via ACE_Malloc_Iterator
782 Thu Dec  7 00:31:26 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
784         * libsrc/Reactor/Signal.C: Replaced ACE_Guard with ACE_TSS_Guard
785           to ensure that locks are correctly released even if
786           Event_Handler::handle_signal() callbacks invoke
787           ACE_Thread::exit().  Thanks to Detlef Becker
788           (beckerd@erlh.siemens.de) for suggesting this.
790         * libsrc/Threads/Synch_T: Used inheritance to factor out the
791           shared code between ACE_Guard, ACE_Read_Guard, and
792           ACE_Write_Guard in order to reduce unnecessary duplication.
794         * libsrc/Threads/Synch_T: Changed the implementation of ACE_Guard
795           to keep a pointer to the LOCK rather than a reference.  This
796           makes the code more flexible and aids in factorization.
798         * libsrc/Threads/Synch_T: Changed the implementation of ACE_Guard
799           to incorporate ACE_Try_Guard semantics.  This reduces the amount
800           of classes and duplicate code in ACE.
802 Wed Dec  6 21:36:02 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
804         * include/ace/Trace: Changed the type of the string passed into
805           ACE_Trace from char * to const char *.
807         * libsrc/Reactor/Reactor.C: Had forgotten to initialize the
808           initialized_ and requeue_position_ members appropriately in the
809           constructor of the ACE_Reactor if ACE_MT_SAFE is *disabled*.
810           Thanks to Mark Zusman <marklz@topaz.technion.ac.il> for pointing
811           this out.
813         * libsrc/Threads/Synch_T.C: changed the order of some methods so
814           they would be properly defined if ACE_HAS_THREADS and
815           ACE_HAS_THREAD_SPECIFIC are *not* enabled.  This should fix
816           remaining problems with ACE on SunOS 4 and SGI.  Thanks to
817           Aniruddha Gokhale <gokhale@cs.wustl.edu> for noticing this.
819 Tue Dec  5 01:06:14 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
821         * Changed things around so that the Name_Server and Token_Server
822           client interfaces are include in libACE.
824         * libsrc/Shared_Malloc: added a const char *pool_name to
825           ACE_Malloc::ACE_Malloc.  This is passed into the constructor of
826           the MEMORY_POOL to make it easier to dynamically name memory
827           pools.
829 Mon Dec  4 21:20:28 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
831         * libsrc/Threads/Synch_T: Modified the place that the
832           ACE_Thread_Specific methods are defined so that they will be
833           compiled correctly for platforms without threads or
834           thread-specific storage.
836 Sun Dec  3 23:04:41 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
838         * libsrc/ASX/Message_Block: Modified clone() so that it takes an
839           extra parameter that specifies which flags SHOULD NOT BE
840           TRANSFERED to the clone.  This defaults to
841           ACE_Message_Block::DONT_DELETE.  Thanks to Alex V Maclinvosky
842           <alexm@teltrunk1.tait.co.nz> for suggesting this.
844 Sun Dec  3 17:43:11 1995  Tim H. Harrison  (harrison@lambada.cs.wustl.edu)
846         * The number of files in the Token library has been reduced.  As a
847           result, many of the files have been renamed.  Also, the .i files
848           have been purged of relatively large methods (these have been
849           moved to the .C files.)  Lastly, most uses of dynamic memory
850           allocation have been removed from the library.  This was
851           important to reduce the amount of serialization in threaded
852           applications caused by the dynamic allocation.
854 Sun Dec  3 17:29:54 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
856         * libsrc/Threads/Synch: Modified all the synchronization classes
857           so that they disallow assignment and initialization!
859         * libsrc/Threads/Synch: Moved the ACE_Thread_Specific class from
860           its own files into the Threads/Synch.[Chi] files.  This should
861           eliminate a set of horrible interdependencies among files.
863 Sat Dec  2 16:07:40 1995  Douglas C. Schmidt  (schmidt@mambo.cs.wustl.edu)
865         * libsrc/Misc/SString.C (ACE_CString): Added a destructor to
866           CString.  Thanks to Tim for noticing this...
868 Tue Nov 28 17:25:02 1995  Prashant Jain  (pjain@tango.cs.wustl.edu)
870         * apps/Name_Server/client/lib/Name_Proxy: Changed Name_Proxy to
871           inherit from ACE_Service_Object rather than ACE_Event_Handler.
872           This will allow a Name_Proxy to be dynamically linked into an
873           application via the svc.conf file.
875         * apps/Name_Server/client/lib/Name_Proxy: Added new methods
876           init, fini, and info.
878 Tue Nov 28 00:56:52 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
880         * tests/Threads/test_thread_specific.C: Added code to test the new
881           ACE_TSS_Guard class...
883         * libsrc/Threads/Synch_T: Added the new ACE_TSS_Guard class.  This
884           class is similar to the existing ACE_Guard, except that it uses
885           thread-specific storage to ensure locks are released even if a
886           thread exits via thr_exit()!
888 Mon Nov 27 20:39:58 1995  Prashant Jain  (pjain@tango.cs.wustl.edu)
890         * apps/Name_Server/{client,server}/tests: Added new tests to
891           exercise the key features of the name server.
893         * apps/Name_Server/client/lib: Simplified access to the nameserver
894           database.  For example, all the network-byte ordering code was
895           moved out of the Local and Remote Name_Spaces.  This code is no
896           longer necessary since we'll be providing a different means to
897           get portable name service repositories via a tool that extracts
898           the "key/value/type" tuples and stores them in a
899           machine-independent format.  The result of this change is that
900           the Name_Server code is much easier to understand and modify.
902         * apps/Name_Server/client/lib: Split local and remote name spaces
903           into two classes to simplify usage.  This approach uses the
904           Bridge pattern to have a baseclass called Binding and then have
905           subclasses called Local_Name_Space and Remote_Name_Space.  The
906           constructor of Naming_Context then allocates the right one
907           (i.e., it serves as a factory).  This approach remove all the
908           switch statements in the code and makes it much easier to use
909           and extend.
911         * apps/Name_Server: updated all the Name_Server components to 
912           use ACE naming conventions.
914         * apps/Name_Server/client/lib: Changed ACE_Name_Options to use the
915           Singleton pattern rather than the global variable...
917 Mon Nov 27 00:47:32 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
919         * libsrc/Shared_Malloc/Malloc.h: Named the previously anonymous
920           struct inside of ACE_Malloc_Header to be
921           ACE_Malloc_Control_Block in order to keep the OSE tools working.
922           Thanks to Karlheinz for reporting this.
924         * libsrc/Threads/Synch: Fixed a major bug in the ACE_Semaphore
925           wrappers.  Apparently, these had slipped between the cracks and
926           were not correctly mapping onto the ACE return value scheme
927           where -1 corresponds to an error with errno set to indicate the
928           type of error.
930         * tests: Cleaned up some files that mistakenly were defining 
931           LSOCK* objects even for platforms (i.e., Linux) that don't
932           support them.  Thanks to Timothy Newell
933           <910430n@dragon.acadiau.ca> for noticing this.
935 Sun Nov 26 12:42:51 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
937         * libsrc/Shared_Malloc/Malloc: Added a new accessor method
938           (memory_pool) that returns a reference to the MEMORY_POOL object
939           used to configure ACE_Malloc.
941         * libsrc/Shared_Malloc/Malloc: Changed the constructor of
942           ACE_Malloc to take advantage of the new init_release method on
943           all the ACE_*_Memory_Pools.
945         * libsrc/Shared_Malloc/Memory_Pool: Added a new method to all the
946           ACE_*_Memory_Pool classes called "init_release".  This is called
947           when ACE_Malloc finishes initializing the dynamic memory
948           manager.  This method is necessary in order to initialize the
949           ACE_MMAP_Memory_Pool correctly if there are multiple processes
950           that try to initialize ACE_Malloc simultaneously.  In addition,
951           also added an ACE_SV_Semaphore_Complex to the
952           ACE_MMAP_Memory_Pool in order to serialize initialization
953           correctly.
955         * libsrc/Shared_Malloc/Memory_Pool: Added sync() and protect()
956           methods to all of the ACE_*_Memory_Pool classes in order to
957           support a uniform interface for use with the "robust memory"
958           mechanism we're building.
960         * libsrc/Mem_Map/Mem_Map: Added two new "protect" methods to
961           ACE_Map_Manager in order to allow clients to change the
962           protection of memory-mapped regions.
964         * libsrc/ASX/Map_Manager: Changed Map_Manager methods to use
965           "const" for EXT_ID and INT_ID at request of Prashant Jain
966           (pjain@cs.wustl.edu).
968         * libsrc/Shared_Malloc/Memory_Pool: Revised the
969           ACE_Shared_Memory_Pool so that it would actually work
970           correctly...  This code hadn't been reviewed carefully before
971           and there were some bugs...
973         * libsrc/Shared_Malloc/Malloc: added "INLINE" to the
974           ACE_Allocator_Adapter components.
976         * libsrc/Shared_Malloc/Memory_Pool: Greatly simplified and
977           consolidated the mmap(2) code for ACE_MMAP_Memory_Pool.
979         * libsrc/Shared_Malloc/Memory_Pool.i (release): Removed the
980           vestigal this->mmap_.remove() call in release(), but added the
981           appropriate code to close the fd and unmap the region.  Thanks
982           to Irfan Pyarali <ip1@cec.wustl.edu> for noticing this.
984 Sat Nov 25 18:12:55 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
986         * libsrc/CORBA/CORBA_Handler.C (activate_service): 
987           Modified activate_service so that
989           if (service_name != 0
990               && this->register_service (service_name, marker_name, 
991                                          service_location) == -1)
992             return -1;
994           is changed to 
996           if (service_name != 0 && service_location != 0
997               && this->register_service (service_name, marker_name, 
998                                          service_location) == -1)
999             return -1;
1001           Irfan Pyarali <ip1@cec.wustl.edu> requested this.
1003 Sat Nov 25 16:41:15 1995  Douglas C. Schmidt  (schmidt@lambada.cs.wustl.edu)
1005         * libsrc/Misc/Set: Changed all the find() and size() methods to
1006           be const member functions.  Thanks to Irfan Pyarali
1007           (ip1@cec.wustl.edu) for requesting this.
1009 Fri Nov 24 02:51:59 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1011         * libsrc/Reactor/Reactor.C: Fixed the Reactor so that if we're
1012           compiling with DEADLOCK_DETECTION enabled it will create a
1013           uniquely named mutex by stringifying "this".
1015 Thu Nov 23 21:45:43 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1017         * libsrc/IPC_SAP: Changed
1019         * libsrc/Service_Configurator/Service_Config: Added three new
1020           methods to allow programmers to set the process-wide Singletons
1021           for Reactor, Service_Repository, and Thread_Manager.
1023 Tue Nov 21 01:59:06 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1025         * libsrc/Mem_Map/Mem_Map.C: Fixed a stupid typo in map_it() that
1026           was causing problems due to unsigned arithmetic semantics...
1027           This should make the file_reverse.C Mem_Map tests work correctly
1028           now...  Thanks to Bill Lear <rael@anarchy.cybercom.net> for
1029           noticing the problem.
1031         * tests/Mem_Map/IO-tests/io_test.C (parse_args):  Fixed a
1032           classic C/C++ braino in io_test.C:
1034           The for loop in parse_args()
1036           for (int c; (c = get_opt () != -1); )
1038           should be
1040           for (int c; ((c = get_opt ()) != -1); )
1042           How embarrassing.  Maybe Bertrand Meyer is right -- C++ is too
1043           dangerous for its own good... ;-).  Thanks to Bill Lear
1044           <rael@anarchy.cybercom.net> for finding this!
1046         * Removed all traces of ACE_Condition<ACE_Mutex> from the library.
1047           This should make life much easier for compilers (like G++) that
1048           can't grok templates very well...
1050         * libsrc/Threads/Thread_Specific.C (ts_object): Added a new method
1051           that allows you to simultaneously "test and set" thread-specific
1052           data!  This is used to support a neat new trick that ensures
1053           locks are released even if a thr_exit() is called!
1055         * libsrc/Service_Configurator/Service_Repository: Removed the
1056           Recursive_Mutex from Service_Repository and replaced it with a
1057           regular (non-recursive) mutex.  Had to rewrite the code a bit so
1058           that it wouldn't try to call internal methods that acquired the
1059           mutex (this leads to instant deadlock!)
1061 Mon Nov 20 01:05:47 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1063         * libsrc/Threads/Synch: Finally gave in and accepted the fact that
1064           GNU G++ is a horrible, horrible blight on mankind...  Changed
1065           the internals of Synch.[Chi] to completely remove any
1066           dependencies on templates.  I hope this fixes some portability
1067           problems deep in the libraries...  Added several new classes to
1068           reflect this change: ACE_Mutex_Guard, ACE_Mutex_Condition, and
1069           ACE_Recursive_Mutex.
1071         * libsrc/IPC_SAP/UPIPE_SAP/UPIPE_Acceptor.C (ACE_UPIPE_Acceptor):
1072           Fixed a stupid typo that was causing the constructor of
1073           UPIPE_Acceptor to become inlined!!!
1075         * apps/Gateway/Gateway: Fixed up the Makefile so that the gatewayd
1076           executable would compile with G++.
1078         * include/ace/config-irix5.3-sgic++.h: Changed the SGI config.h
1079           file so that it uses select() rather than poll() by default.
1080           The select() version of the Reactor is implemented more
1081           efficiently in ACE...
1083         * include: Added config files for AIX courtesy of Byron Walton
1084           <bwalton@hughes.scg.hac.com>.
1086         * libsrc/Reactor/Signal.C: #ifdef'd out some code in Signal.[hC]
1087           that was causing problems for the HPUX C++ compiler.  What a
1088           *horrible* compiler!
1090         * libsrc/Reactor/Event_Handler.h: Added two new methods to
1091           ACE_Event_Handler: get_priority() and set_priority().  These
1092           will be used to control the behavior of the ACE_Reactor's
1093           dispatching.  This also required added a new data member to
1094           ACE_Event_Handler that stores the priority (which defaults to
1095           MIN_PRIORITY).
1097         * libsrc/Misc/Stack.C (enqueue): Added a new class called
1098           ACE_Unbounded_Queue.  This is required for Tim's Token_Server
1099           connection repository stuff...
1101         * libsrc/CORBA/CORBA_Handler.C: Added new support to both the
1102           single-threaded and multi-threaded versions of CORBA_Handler so
1103           that it will now suspend/resume the services associated with a
1104           CORBA_Handler.
1106         * libsrc/CORBA/CORBA_Handler.C (ACE_MT_CORBA_Handler): Updated the
1107           constructor to use the associated Thread_Manager to spawn a new
1108           thread.  This will allow the suspend() and resume() methods to
1109           atomically resume and suspend the daemon thread and its event
1110           handler.
1112         * libsrc/Threads/Synch.h: Fixed up the order of #includes to solve
1113           problems with circular header dependencies!
1115         * Had to add zillions of little changes to avoid problems with
1116           circular includes for G++...
1118         * tests/ASX/Event_Server/Event_Server/Peer_Router.C (bind_peer):
1119           Fixed a typo that had been dormant for ages due to C++'s very
1120           late binding of templates...  G++ picked this right up!
1122 Sun Nov 19 11:55:02 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1124         * libsrc/Reactor/Signal: Replaced the static HANDLER_SET stuff
1125           withing ACE_Sig_Handlers with a different implementation using
1126           ACE_Fixed_Set.  This should fix nasty problems with static
1127           variables on HP/UX...
1129         * Fixed the entire library so that all occurrences of ace_log_msg
1130           are changed to use the ACE_LOG_MSG macro.  This macro has magic
1131           properties that should greatly simplify the effort required to
1132           compile ACE robustly on platforms with lame C++ compilers...
1134         * libsrc/Log_Msg/Log_Msg: Finally got my act together with respect
1135           to thread-specific data and the ACE_Log_Msg class.  The new
1136           version can be conditionally compiled such that it won't use the
1137           ACE_Thread_Specific smart-pointer wrapper mechanism unless the
1138           platform supports thread-specific storage and threads.  This
1139           will make life much easier for lame C++ compilers that can't
1140           handle static data member templates correctly...  
1142         * apps/Name_Server/{client,server}/lib/Makefile (LIBS): Added a
1143           reference to -lACE in the Makefiles of the ./lib directories in
1144           order to get GCC to work correctly...
1146         * Added a bunch of fixes courtesy of Bill Lear
1147           <rael@anarchy.cybercom.net> to make ACE compile more cleanly
1148           with GNU GCC 2.7.x.
1150 Sat Nov 18 11:27:40 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1152         * libsrc/Misc/Trace.C: Fixed up the ACE_Trace class so that it
1153           will compile better on platforms that don't support
1154           thread-specific storage.  The trick was to make a new Singleton
1155           called ACE_Nest_Depth and then conditionally compile it
1156           according to whether the platform supports thread-specific data
1157           or not!
1159         * include/makeinclude/platform_sunos5_g++.GNU: Added the new
1160           config file that should allow ACE to build correctly with GCC
1161           2.7.x.  Todd L. Montgomery <tmont@cerc.wvu.edu> deserves a big
1162           round of applause for getting this stuff to work!  If I had a
1163           budget, I'd give him a raise ;-)
1165         * libsrc/Misc/Set.C (remove): Tightened up the semantics of all
1166           the *Set::remove() methods so that they return 1 if they
1167           succeed, 0 if the item isn't in the set, and -1 if they fail.
1168           Thanks to Tim Harrison for noticing the inconsistencies.
1170 Fri Nov 17 01:34:51 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1172         * apps/Logger/Reactor_Logger: Fixed up this example app so that it
1173           would compile with GNU G++ correctly.  There was a problem with
1174           the order of include files!  Thanks to Todd L. Montgomery
1175           <tmont@cerc.wvu.edu> for reporting this.
1177         * libsrc/ASX/Module.C (writer): Fixed ACE_READER so that it is
1178           properly qualified with ACE_Task_Flags::ACE_READER.  Thanks to
1179           Neil Cohen (nbc@metsci.com) for finding this!
1181         * apps/Gateway/Gateway/Routing_Entry: Replaced ACE_Fixed_Set with
1182           ACE_Unbounded_Set to get around the seemingly endless problems
1183           with HP/UX...
1185         * libsrc/Misc/Set: Fixed a braino in ACE_Unbounded_Set, where I'd
1186           forgotten to define cur_size_.  Thanks to Todd L. Montgomery
1187           <tmont@cerc.wvu.edu> for reporting this.
1189         * libsrc/Connection/Acceptor.C: Change the #undefs of the
1190           shorthand names PA_AC_1, PA_AC_2, and PA_AD in
1191           libsrc/Connection/Acceptor.C to PR_AC_1, PR_AC_2, and PR_AD
1192           (same as in Connector.C and Strategies.C).  Thanks to 
1193           Dieter Quehl <quehl@erlh.siemens.de> for reporting this.
1195 Thu Nov 16 02:14:22 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1197         * libsrc/Misc/Trace: Fixed the ACE_Trace stuff by making the
1198           "nesting_indent_" a static data member.  This will undoubtedly
1199           break some lame C++ compilers, but it's easy enough to remove
1200           this stuff via conditional compilation using the ACE_NTRACE
1201           #define in ./include/ace/config.h.
1203         * libsrc/Threads/Thread_Specific.C (cleanup): Under no
1204           circumstances should ACE_Thread_Specific be allowed to
1205           called ACE_Trace.  Otherwise, chaos will result!
1207         * apps/Name_Server/{client,server}/tests/Makefile: Switched the
1208           order of the -lACE and -lName* so that -lACE came *afterwards*
1209           in order for the SGI linker to pick up the symbols correctly.
1211         * libsrc/Reactor/Signal: I'd accidentally put the "dump" methods
1212           in the *.i file rather than the *.C file.  This was causing
1213           problems for G++.
1215         * libsrc/ASX/Task: Changed all "Q_" prefixes to "ACE_" prefixes in
1216           order to work around a bug with HP/UX...
1218         * Recompiled everything on SunOS 4.x with SunC++ 4.0.1.  It seems
1219           to work!
1221 Thu Nov 16 18:05:03 1995  Tim H. Harrison  (harrison@tango.cs.wustl.edu)
1223         * I moved around some class declarations so that g++ can properly
1224           instantiate templates for ACE_Token_Collection and
1225           ACE_Token_Manager.
1227 Wed Nov 15 00:26:40 1995  Tim H. Harrison  (harrison@lambada.cs.wustl.edu)
1229         * The token library should now compile on platforms which do not
1230           support threads.  All token components will be compiled into the
1231           library, but use null mutexes and condition variables.  The
1232           remote mutex library shall run properly on single-threaded
1233           platforms, so it compiles as usual.
1235 Wed Nov 15 01:05:38 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1237         * Fixed a bunch of minor problems with the SGI port.  Things
1238           should work now on IRIX 5.3!
1240         * man/man3: Completely regenerated all the manual pages to
1241           reflect all the recent updates.
1243         * libsrc: Added ACE_TRACE macros to every single method in ACE!
1244           This will help with debugging...
1246 Wed Nov 15 00:26:40 1995  Tim H. Harrison  (harrison@lambada.cs.wustl.edu)
1248         * The token library should now compile on platforms which do not
1249           support threads.  All token components will be compiled into the
1250           library, but use null mutexes and condition variables.  The
1251           remote mutex library shall run properly on single-threaded
1252           platforms, so it compiles as usual.
1254 Tue Nov 14 01:58:47 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1256         * tests/CORBA: Added a new test to illustrate the
1257           ACE_MT_CORBA_Handler.
1259         * libsrc/ASX/Task.C (ACE_Task_Exit): Fixed a niggling problem with
1260           ACE_Task_Exit.  Originally, if a thread exited via an implicit
1261           ACE_Thread::exit() (i.e., "falling off the end of the
1262           ACE_Task::svc_run function) then the ACE_Thread_Control on the
1263           thread stack would automatically unregister the thread from the
1264           ACE_Thread_Manager.  However, this did *not* occur if a thread
1265           explicitly called ACE_Thread::exit() since in that case the
1266           destructor for ACE_Thread_Control never got called.  The
1267           solution to this is a trivial change to ACE_Task_Exit, which now
1268           maintains an instance of ACE_Thread_Control internally, which
1269           will automatically be released when the thread-specific
1270           thread-exit-hook destructor gets called to cleanup upon thread
1271           exit.  Since this happens regardless of whether the thread
1272           terminates implicitly or explicitly the ACE_Thread_Manager will
1273           always be able to clean up it's internal resources (unless the
1274           process exit()s, which is a whole different issue... ;-)).
1276         * Changed all occurrences of ACE_CORBA_Handler to
1277           ACE_ST_CORBA_Handler.  Now we've got two types of
1278           CORBA_Handlers: single-threaded (ST) and multi-threaded (MT).
1279           Take a look at ./apps/Orbix-examples/Event_Comm/{Supplier,Consumer} 
1280           for an example of how to leverage this in a portable manner!
1282         * libsrc/CORBA/CORBA_Handler: Totally redesigned the ACE
1283           CORBA_Handler stuff so that it now uses the Singleton pattern
1284           explicitly, rather than using the half-baked static method
1285           version...  Changed the test code to reflect this update!
1287         * libsrc/CORBA/CORBA_Handler.C (activate_service): Changed the
1288           check so that if <service_name> == 0 then we don't try to do a
1289           putit (previously, this check used <marker_name>, which is less
1290           useful...).
1292         * libsrc/CORBA/CORBA_Handler.C (activate_service): Removed the
1293           <default_iterations> flag from the constructor so that we can
1294           make the CORBA_Handler and the MT_CORBA_Handler equivalent.
1296         * include/ace/sysincludes.h: Added a new macro called
1297           ACE_THREAD_EXIT_HOOK that enables application threads
1298           (including the main thread) to register a Task * who's
1299           close method will automatically be called when the thread
1300           exits, either implicitly (by falling off the end) or explicitly
1301           (by a thread calling ACE_Thread::exit ()).
1303         * libsrc/ASX/Task: Moved ACE_Task_Exit into the interface part of
1304           ACE_Task so that Irfan can maybe use this in his stuff ;-).
1306         * libsrc/Misc: Incorporated the ACE_Date_Time class into the
1307           release.  This is an *interface* for a system independent
1308           representation of date and time.  Implementation will follow...
1310         * libsrc/CORBA: Added a new MT_CORBA_Handler, which makes it
1311           very straightforward to integrate the ACE_Reactor with
1312           multi-threaded (MT) Orbix.
1314         * libsrc/Threads/Token.C: Yow, fixed a dumb problem in Tokens.C
1315           where I was failing to include the *.i file if we weren't
1316           compiling with inlining on!!!!
1318 Mon Nov 13 01:13:37 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1320         * libsrc/ASX/Message_Block: Added several new methods to
1321           Message_Block to allow users to access and set various flags.
1322           Thanks to Alex V Maclinvosky <alexm@teltrunk1.tait.co.nz> for
1323           suggesting this and providing a prototype implementation.
1325         * include/ace/sysincludes.h: Added a new macro called ACE_NDEBUG
1326           that can be used to toggle support for "live object dumping".
1327           If this macro is enabled then
1329         * libsrc/Misc/Dump.h: Added support for "live object dumping" into
1330           ACE.  This technique is implemented with the "External
1331           Polymorphism" pattern described in a paper available at
1332           http://www.cs.wustl.edu/~schmidt/EuroPLoP-96.ps.Z.  
1334         * libsrc/Threads: Added new classes called *_Process_* and
1335           *_Thread_* for ACE_RW_Mutex, ACE_Barrier, ACE_Condition, and
1336           ACE_Semphaore.  This will allow programmers explicitly state the
1337           scope of their locks more explicitly and will also facilitate
1338           portability to Windows NT...
1340         * libsrc/Threads: Updated the constructors of all the Synch and
1341           Synch_T classes to take an option const char * called "name."
1342           At the moment, this doesn't do anything, but when we port to
1343           Window NT it will be used to ensure that we can name our
1344           process-global synchronization objects.
1346         * libsrc/Threads/Synch: Added a new tryacquire method to
1347           ACE_RW_Mutex to be consistent with acquire and release...
1349         * libsrc/Threads/Synch.C (ACE_Mutex): Added a new "name" parameter
1350           to an ACE_Mutex in order to support process-semantics on NT...
1352         * include/ace/sysincludes.h: Added a #define for EDEADLK in case
1353           some systems don't support it (this is needed by the new
1354           ACE_*_Token stuff).
1356 Sun Nov 12 14:17:01 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1358         * apps/Name_Server: Modified the client and server test programs
1359           so that they can both be linked statically and/or dynamically.
1360           If svc.conf is present then dynamic linking is used, otherwise
1361           static linking is used.  This makes it much easier to test!!!
1363         * apps/Name_Server/client/lib/Naming_Context.C (local): Changed
1364           things a bit so that if our server host name is "localhost" then
1365           we assume we are local no matter what...
1367         * apps/Name_Server: Moved directories around a bit so that all the
1368           tests and libs for the client/server portions of the
1369           ACE_Name_Server build correctly...
1371         * apps/Name_Server/server: Replaced the ad hoc Name_Acceptor and
1372           Name_Handler to use the official ACE_Acceptor and
1373           ACE_Svc_Handler...  This cleans up the code considerably...
1375         * libsrc/Threads/Synch: Added a new wrapper for the the UNIX file
1376           locking mechanism called ACE_File_Lock.  This has the same
1377           interface as the other locking mechanisms (e.g., ACE_Mutex and
1378           ACE_Semaphore).  Therefore, it can be used in the ACE_Guard
1379           class!
1381 Sat Nov 11 13:53:48 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1383         * libsrc/Shared_Malloc/Memory_Pool: Improved MMAP_Memory_Pool so
1384           that it will be smarter about remapping the file if we aren't
1385           trying to force a fixed addr to be used for the mapping.  In
1386           particular, if we *aren't* forcing a particular address, the new
1387           solution will be more flexible and allow the OS to determine
1388           where to remap the memory should we need to grow the backing
1389           store and the mapping range...
1391         * libsrc/Misc/Set: Implemented a simple version of the
1392           Unbounded_Set class and its iterator.
1394         * libsrc/Misc/SString: Changed all the implementations of methods
1395           in SString classes to use new/delete rather than
1396           strdup()/free().
1398         * apps/Name_Server/client/Name_Proxy: Changed rcv_reply() to
1399           recv_reply().
1401         * apps/Name_Server/client/Name_Proxy: Modified ACE_Name_Proxy so
1402           that the constructor and open take an ACE_Synch_Options.
1404         * apps/Name_Server/client/Name_Options.C (ACE_Name_Options): Added
1405           a default for the Name_Space directory called
1406           (ACE_DEFAULT_NAMESPACE_DIR) to the testconfig.h file...
1408 Sat Nov 11 00:24:37 1995  Tim H. Harrison  (harrison@lambada.cs.wustl.edu)
1410         * tests/Tokens/test_token_manager/test_token_manager.C: The token
1411           manager has a working deadlock detection algorithm.
1412           ACE_Local_Mutex uses this to report deadlock situations.
1413           Changes were made to ACE_Local_Mutex to fix a couple bugs which
1414           were causing deadlock.  Also, a new test application has been
1415           added to test deadlock detection using the local mutex.         
1417 Fri Nov 10 17:16:06 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1419         * libsrc/Mem_Map/Mem_Map.h: Changed the type of <length_> from
1420           long to size_t.
1422         * tests/Threads/test_thread_manager.C (main): Added a main() for
1423           the case when there's
1425         * tests/ASX/UPIPE_Event_Server/event_server.C (main): Fixed a
1426           typo that was causing problems on SunOS 4.x.
1428         * tests/Service_Configurator/IPC-tests/client/local_spipe_client_test.C:
1429           added #include "ace/Log_Msg.h" (why was this working?!).
1431         * include/makeinclude/rules.lib.GNU: Changed the order of operations
1432           in rules.lib.GNU from
1434           $(AR) $(ARFLAGS) $@ $?
1435           -$(RANLIB) $@
1436           -chmod a+r $@
1438           to
1440           $(AR) $(ARFLAGS) $@ $?
1441           -chmod a+r $@
1442           -$(RANLIB) $@
1444           to keep ranlib happy on SunOS 4.x.
1446         * apps/Time_Server: Added a Makefile
1448         * include/ace/sysincludes.h: Removed the <termios.h> include
1449           since it was causing major problems on SunOS 4.x...
1451         * apps/Name_Server/Naming_Context.C: Fixed up a couple of problems
1452           with casts.  Thanks to Jack Erickson <jack@cibc.com> for
1453           pointing this out.
1455 Thu Nov  9 15:49:40 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1457         * libsrc/Threads/Synch_T: moved Atomic_Op from ./Misc to ./Threads
1458           and merged it into the Synch_T files.  This makes more sense as
1459           a place to put it...
1461         * libsrc/Misc/SString.C (operator +=): Fixed a typo that would
1462           have caused mistakes when memcpy() was used.  Thanks to Prashant
1463           Jain <pjain@wuerl.wustl.edu> for noticing this.
1465 Wed Nov  8 22:36:51 1995  Tim H. Harrison  (harrison@lambada.cs.wustl.edu)
1467         * libsrc/Reactor/Reactor.C (TOKEN_GUARD): The reactor now uses the
1468           TOKEN_GUARD macro.  The Reactor can now be conditionally
1469           compiled with ACE_REACTOR_HAS_DEADLOCK_DETECTION to use the new
1470           ACE_Local_Mutex in conjunction with the ACE_Token_Manager to
1471           detect deadlock.  The deadlock detection algorithm has not yet
1472           been implemented, but the hooks are now in place.
1474         * libsrc/Tokens:  This subdir includes ACE's new Token library.
1475           Check out libsrc/Tokens/README for more info.
1477         * tests/Tokens:  There are a couple test applications for the new
1478           Token library.  See tests/Tokens/README for more info.
1480         * apps/Token_Server:  This directory contains some new client
1481           interfaces to the old ACE TokenServer, now Token_Server.  There
1482           are also some example use cases included in this directory.  As
1483           always, see apps/Token_Server/README for more info.
1485 Wed Nov  8 00:14:55 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1487         * libsrc/IPC_SAP/IO_SAP: Added the new classes for IO_SAP from
1488           Gerhard Lenzer (lenzer@csaserv.erlh.siemens.de).  This 
1489           eliminates UNIX I/O-specific features from ACE.
1491         * libsrc/Misc/Set: Added a new find() method to each of the
1492           ACE_*_Set classes...
1494         * include/ace/sysincludes.h (ACE_ALLOC_HOOK_DECLARE): Changed
1495           enum __Ace { __ACE } to struct __ACE {}.  I think this
1496           will cause less problems with M.I...
1498         * libsrc/ASX/Message_Block: Added a new "allocator" parameter to a
1499           Message_Block.  This allows the memory stored by a Message_Block
1500           to come from someplace besides the normal heap (e.g., a shared
1501           memory segment!).
1503         * libsrc/ASX/Message_Block.C (ACE_Message_Block): Yow, fixed a bug
1504           in the destructor where ACE_BIT_ENABLED was being used in place
1505           of ACE_BIT_DISABLED!  I think this was causing a memory leak...
1507         * libsrc/Reactor/Reactor: added a pair of methods that allow a
1508           thread to set/get the notion of who "owns" the event loop.  Only
1509           the owner of the loop can do a handle_events() call.  Also
1510           changed things so that the requeue_position() are available for
1511           both threaded and non-threaded implementations (just to have a
1512           uniform interface...).
1514         * libsrc/ASX/Message_Block: added a new constructor and a new
1515           init() method that just assume ownership of a char * passed
1516           as the parameter.  Note that this does *not* set any other
1517           fields in the Message_Block and is only used to ferry around 
1518           totally opaque data in the Message Block!
1520 Tue Nov  7 00:52:15 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1522         * tests/Log_Msg/test_log_msg.C (main): Added some new tests to
1523           make sure that op_status() and errnum() work on ace_log_msg.
1524           Thanks to Tim Harrison for these tests.
1526 Mon Nov  6 12:55:46 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1528         * libsrc/Threads/Thread_Specific: Changed a couple of places in
1529           the Thread_Specific code so that key_ is initialized to 0 and
1530           the ts_obj * is initialized to 0.  If these *aren't* 0 then
1531           weird bugs happen on Solaris...  Thanks to Tim Harrison for
1532           noticing this and suggesting the fix!
1534         * libsrc/Threads/Synch_T: Added an accessor method to obtain
1535           the underlying mutex within ACE_Condition.
1537         * libsrc/Threads/Synch.C (ACE_Process_Mutex): Added a dummy
1538           argument of type const char * to ACE_Process_Mutex.  This is in
1539           anticipation of the info required in Windows NT to support a
1540           named process-wide Mutex.  On UNIX, this argument is ignored...
1542 Fri Nov  3 19:02:54 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1544         * libsrc/IPC_SAP/SOCK_SAP: Back from C++ World...  Fixed a couple
1545           of typos in SOCK_Dgram_Bcast and SOCK_CODgram that included the
1546           *.i files multiple times...  Thanks to Alex V Maclinvosky
1547           <alexm@teltrunk1.tait.co.nz> for reporting this.
1549 Tue Oct 31 02:12:13 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1551         * libsrc/Reactor/Reactor: Modifed the MT_SAFE Reactor so that the
1552           its open() method keeps track of which thread originally created
1553           it.  This thread is then considered the "owner" of the Reactor.
1554           If a different thread tries to run the handle_events() method
1555           then an error is returned.
1557         * libsrc/ASX/Task.C: Added a "group id" field to the ACE_Task.
1558           This can be used to suspend and resume a group of tasks
1559           atomically.  Also added default suspend() and resume() methods
1560           that do just that!
1562         * libsrc/Reactor/Reactor: Made the open() method
1563           thread-safe.  Thanks to Detlef Becker (beckerd@erlh.siemens.de)
1564           for pointing out the need for this.
1566 Mon Oct 30 00:02:53 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1568         * libsrc/Shared_Malloc/Memory_Pool.C (ACE_MMAP_Memory_Pool): 
1569           Made it possible to configure the ACE_MMAP_Memory_Pool with a
1570           (backing_store_) file name so that it is possible for multiple
1571           processes to share one wellknown file, as well as to have
1572           multiple pools per process.  Check out the
1573           ./tests/Shared_Malloc/test_malloc.C file for an example of how
1574           this works (try the -p -e -L10000 -t3 options).  
1576         * libsrc/Reactor/Reactor: Moved handler_i into the *.C file to
1577           avoid problems with inline functions on HP/UX.
1579         * libsrc/Misc/SString: Added a new class called ACE_CString.  This
1580           class is similar to ACE_WString (which has "wide character"
1581           size), though CString has regular "char" size.  Note that both
1582           of these classes are "true" string classes, unlike ACE_SString,
1583           which is a very simple string class that is only to be used for
1584           very specific purposes...
1586         * libsrc/Shared_Malloc/Memory_Pool.C (acquire): Fixed an
1587           "off-by-one" error in ACE_MMAP_Memory_Pool::acquire() that was
1588           causing an extra byte to be written to the backing store file...
1589           This was causing the ./tests/Shared_Malloc/test_malloc.C program
1590           to fail when -p was given.  After this fix the test works
1591           again... (thank God!).
1593 Sun Oct 29 22:43:25 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1595         * libsrc/Shared_Malloc/Malloc: Added two new classes:
1596           ACE_Allocator and ACE_Allocator_Adapter.  ACE_Allocator uses
1597           inheritance and dynamic binding to provide extensible mechanisms
1598           for allocating and deallocating memory.  ACE_Allocator_Adapter
1599           implements the Adapter pattern to enable ACE_Allocator to be
1600           used with instantiations of the ACE_Malloc<> template class.
1602 Sat Oct 28 13:51:07 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1604         * tests/ASX/Event_Server: Added a new directory called
1605           UPIPE_Event_Server, which tests a version of the Event_Server 
1606           that is instantiated with ACE_UPIPE_* IPC mechanisms,
1607           rather than by the ACE_SOCK_* mechanisms.
1609         * libsrc/IPC_SAP/Addr: Created a new file called UPIPE_Addr.h.
1610           This file contains a typedef of ACE_SPIPE_Addr to
1611           ACE_UPIPE_Addr.  The purpose of doing this is to "logically"
1612           decouple the ACE_UPIPE* classes from the ACE_SPIPE* classes
1613           (even though they share the same *physical* representation at
1614           this point...).
1616         * libsrc/IPC_SAP: Fixed a small bug in TLI_Connector.connect() and
1617           SOCK_Connector.connect() that failed to set the
1618           new_stream::handle_ to ACE::INVALID_HANDLE when the connection
1619           failed.  Thanks to the ever-astute Mark Patton
1620           (mark_patton@tx72.mot.com) for noticing this.
1622 Thu Oct 26 15:08:22 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1624         * tests/Threads: created a new test program called
1625           test_thread_manager.C that tests the new semantics for managing
1626           groups of threads.
1628         * libsrc/Reactor/Signal.C (ACE_Sig_Action): Added a new method
1629           that allows me to create a Sig_Action object that contains both
1630           the handler and the signal to register for.  This handler is
1631           register to handle the signal in the constructor of the
1632           object...
1634         * libsrc/Threads/Thread_Manager: enhanced the Thread_Manager to
1635           add support for operations (i.e., suspend, resume, kill) on a
1636           group of threads.
1638         * libsrc/Threads/Thread_Manager: Added a new method that allows
1639           the Thread_Manager to resize itself automatically when it's
1640           internal table gets full.
1642         * libsrc/Threads/Thread_Manager: Updated the return value of
1643           Thread_Manager::spawn() and Thread_Manager::spawn_n() so that
1644           they return -1 on failure *and the group id* on success.
1645           Originally, they returned 0 on success, but this new return
1646           value is more useful since it can be used to control groups of
1647           threads atomically.
1649 Wed Oct 25 01:03:32 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1651         * apps/Name_Server: Began integrating the newly donated name
1652           server into ACE.  There are a number of dependencies on
1653           RogueWave that must be removed, but things are looking good so
1654           far.
1656         * libsrc/Misc/Set: Changed the name of ACE_Unordered_Set to
1657           ACE_Fixed_Set to be consistent with the ACE Stack classes...
1659         * libsrc/Misc/Set: Added new ACE classes called ACE_Unbounded_Set,
1660           ACE_Bounded_Set, ACE_Unbounded_Set_Iterator, and
1661           ACE_Bounded_Set_Iterator to deal with ACE name service
1662           stuff.
1664         * libsrc/Misc/SString: Added a new class called ACE_WString that
1665           gives a very simple "wide-character" string representation for
1666           ACE.  This is needed for the ACE name service stuff.
1668         * libsrc/Misc/SString.C (operator =): Fixed this so that ::strdup
1669           is matched up with ::free, rather than with delete...
1671         * libsrc/Log_Msg/Log_Msg.C (log): Updated the ACE_Log_Msg class to
1672           store an ostream * in thread-specific storage.  This can be used
1673           in conjunction with the dump() method on each ACE class, as well
1674           as with the ACE_ERROR and ACE_DEBUG logging macros.
1676 Tue Oct 24 00:19:13 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1678         * Added a definition of the dump() method to every class in ACE in
1679           anticipation of the changes requested for Siemens.
1681         * Changed all occurrences of ACE_Signal_* to ACE_Sig_* to make the
1682           ACE naming of signal handling wrappers consistent.
1684         * libsrc/Threads/Thread: Fixed some obscure bugs with the way that
1685           ACE_Thread was compiling on platforms that don't support
1686           threads.
1688         * include/ace/config-irix*.h: Removed all TLI support from the SGI
1689           platform.  It seems to be totally screwed up from the tests that
1690           I've run and there's no sense in bending over backwards to
1691           support an IPC API that is brain-damaged to begin with...
1693         * apps/Logger/Service_Configurator_Logger/Thr_Server_Logger: Fixed
1694           up the code so that the Thr_Logging_Server stuff will compile
1695           correctly even for platforms that lack threads!
1697         * libsrc/Connection/Strategies: Added new strategies that provide
1698           Singleton creation and Process concurrency policies.
1700         * libsrc/Connection/Connector.C (handle_close): Make sure that all
1701           pending timer objects are removed from the Reactor's timer queue
1702           when a Connector shuts down.  In addition, make sure to remove
1703           and delete all dynamically allocated ASTs, as well.  Thanks to
1704           Karl-Heinz Dorn (kdorn@erlh.siemens.de) for suggesting this.
1706         * libsrc/Threads/Thread_Manager.C (wait): Modified wait() so that
1707           it now takes an ACE_Time_Value *, which can be used to wait
1708           until all threads terminate or a timeout occurs...
1710         * libsrc/Threads/Thread_Manager: Moved Thr_Descriptor from within
1711           the ACE_Thread_Manager class to become ACE_Thr_Descriptor at
1712           file scope.  This is in anticipation of the cool new thread
1713           manager stuff on the way...
1715         * libsrc: Updated every class in ACE to include a "dump" method
1716           with the signature "void dump (void);" This method soon will be
1717           tied into the ACE_Dump mechanism to allow all live objects in
1718           ACE to have their state dumped automagically on-demand.  This is
1719           useful for debugging and tracing etc.
1721         * libsrc: Updated every class in ACE to include a "Alloc hook."
1722           This hook will enable all ACE classes to be allocated from a
1723           particular memory pool.
1725         * include/makeinclude/rules.local.GNU: fixed the clean target to
1726           delete the *.rpo files (else gcc -frepo can get some crazy
1727           errors) and combines all rm-commands for the target realclean
1728           into one command (in some cases the last two lines do not have
1729           any files to delete, in which case rm produces an usage
1730           message).  Thanks to John Huchinson (hutchiso@epi.syr.ge.com)
1731           for the patch.
1733         * libsrc/IPC_SAP/Addr/INET_Addr: Fixed all the uses of gethost*
1734           and getserv* to use the reentrant get*_r functions if
1735           ACE_HAS_REENTRANT_FUNCTIONS is set and ACE_MT_SAFE is set.
1736           Thanks to Bill Tang <tang@tekats.com> for suggesting this.
1738         * libsrc/Misc/OS: Started adding support for the POSIX *_r
1739           functions to the OS class.
1741         * include/ace: Added a new #define called
1742           ACE_HAS_REENTRANT_FUNCTIONS.  This indicates that the platform
1743           supports reentrant functions (i.e., all the POSIX *_r functions
1744           like gethostbyname_r).
1746 Mon Oct 23 21:15:50 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1748         * include/makeinclude/platform_irix5.3.GNU (LIBS): Removed the
1749           link of the nsl lib since it seems not to be present on this
1750           platform.  Thanks to Karel Zuiderveld
1751           <Karel.Zuiderveld@cv.ruu.nl> for noticing this.
1753         * libsrc/IPC_SAP/Addr/INET_Addr.i (operator ==): Enhanced the
1754           semantics of comparison to check both the port number and IP
1755           address.  Thanks to Mark Patton (mark_patton@tx72.mot.com) for
1756           suggesting this.
1758 Thu Oct 19 00:10:28 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1760         * libsrc/IPC_SAP/Addr/INET_Addr.C (set): Fixed a stupid bug that
1761           failed to set errno appropriately if things go wrong with this
1762           method.  Thanks to Mark Patton (mark_patton@tx72.mot.com) for
1763           noticing this!
1765 Sat Oct 14 12:07:16 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1767         * libsrc/Threads/Thread_Manager: Modified the Thread_Manager so
1768           that even in the case where we are compiling for non-MT systems
1769           the Thread_Manager still has the same method interface (all of
1770           which are no-ops).
1772 Wed Oct 11 00:12:57 1995  Douglas C. Schmidt  (schmidt@mambo.cs.wustl.edu)
1774         * Finished commenting all the classes in ACE.  Updated all manual
1775           pages accordingly.
1777 Fri Oct  6 14:17:17 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1779         * tests/ASX/Event_Server/Event_Server: Changed 
1781           ACE_SOCK_Acceptor &sa = (ACE_SOCK_Acceptor &) *this->acceptor_;
1783           to
1785           ACE_SOCK_Acceptor &sa = this->acceptor_->acceptor();
1787           Thanks to Dieter Quehl (quehl@erlh.siemens.de) for suggesting
1788           this.
1790 Thu Oct  5 00:22:56 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1792         * libsrc/ASX/Map_Manager: Added a new find() method to the
1793           Map_Manager.  This method only checks for the existence of an
1794           EXTERNAL_ID, and doesn't return the INTERNAL_ID.
1796         * Introduced the new "trait"-based *_Connector, *_Acceptor, and
1797           *_Stream interfaces for all the IPC_SAP classes.  Basically, for
1798           each class like
1799           {SOCK,TLI,SPIPE,etc,}_{Acceptor,Connector,Stream}, there's now a
1800           typedef for the appropriate type of ACE_*_Addr subclass and the
1801           appropriate type of ACE_*_Stream class.  For example, here's
1802           what's in ACE_SOCK_Acceptor (same goes for ACE_SOCK_Connector):
1803           
1804           class ACE_SOCK_Acceptor 
1805           {
1806           public:
1807             // ...
1808             
1809             // = Traits.
1810             typedef ACE_INET_Addr PEER_ADDR;
1811             typedef ACE_SOCK_Stream PEER_STREAM;
1812           };
1814           Once C++ compilers can grok template typedefs correct, this new
1815           approach will allow much greater simplification of code, so that
1816           template classes like
1818           template <class SVC_HANDLER, class PEER_ACCEPTOR, class PEER_ADDR>      
1819           class ACE_Acceptor { /* ... */ 
1820             virtual int open (const PEER_ADDR &); 
1821           };
1822           
1823           that are currently used like this:
1824           
1825           ACE_Acceptor <My_Svc_Handler, ACE_SOCK_Acceptor, ACE_INET_Addr> acc;
1827           can be replaced with
1829           template <class SVC_HANDLER, class PEER_ACCEPTOR>
1830           class ACE_Acceptor { /* ... */ 
1831             virtual int open (const PEER_ACCEPTOR::PEER_ADDR &); 
1832           };
1834           that are used like this:
1836           ACE_Acceptor <My_Svc_Handler, ACE_SOCK_Acceptor> acc;
1838           i.e., the ACE_SOCK_Acceptor maintains a "trait" that the
1839           ACE_Acceptor uses to determine the appropriate addr.  This is
1840           more concise and less error-prone than the current scheme that
1841           requires you to pass into the ACE_INET_Addr separately (ugh).
1843           Note that the trick to making all this work is to typedef the
1844           PEER_ADDR trait into the ACE_SOCK_Acceptor class, as follows:
1846           class ACE_SOCK_Acceptor {
1847           public:
1848             typedef ACE_INET_Addr PEER_ADDR; // Trait...
1849           };
1850           
1851           Unfortunately, none of the C++ compilers (e.g., SunC++ 4.0.1,
1852           G++ 2.7.0) support this stuff yet...  Therefore, I've added
1853           a set of macros that that will toggle back and forth between
1854           whichever approach works, depending on the setting of 
1855           ACE_HAS_TEMPLATE_TYPEDEFS.  Hopefully, over time compilers will
1856           support this stuff correctly and life will become easier.
1858         * libsrc/ASX/Message_Queue: Changed all occurrences of the S_MUTEX
1859           and S_CONDITION macros to ACE_SYNCH_MUTEX and
1860           ACE_SYNCH_CONDITION in order to conform to the new ACE namespace
1861           control conventions.
1863         * libsrc/Connection/Acceptor: Modified the Acceptor class to split
1864           it into two classes: ACE_Acceptor (which implements a very
1865           simple, very concise version of the Acceptor pattern, without
1866           all the extra strategy mechanisms, etc.).  These strategies have
1867           now been factored out into a new class called
1868           ACE_Strategy_Acceptor.  The point of these changes is to "keep
1869           simple things simple, but enable powerful extensions when
1870           necessary."  All the test programs that utilized the earlier
1871           strategy version of the Acceptor have been updated to the the
1872           Strategy_Acceptor instead.
1874         * libsrc/Connection/Connector: added two new protected methods,
1875           connect_svc_handler() and activate_svc_handler().  These methods
1876           allow subclasses to override the Connector's strategies for
1877           connection establishment and concurrency.  In addition, it makes
1878           the pattern much easier to explain via the Connector pattern and
1879           also is more similar to the Acceptor.
1881 Wed Oct  4 18:45:58 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1883         * apps/Orbix-Examples/Event_Comm: Fixed the examples in this
1884           directory so that they compile with the new ACE.
1886 Tue Oct  3 17:33:46 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1888         * include/makeinclude/rules.nested.GNU: Added support so that
1889           ACE can now be built in parallel using the -jN option of GNU
1890           make.  To accomplish this, just type
1891           
1892           % make MAKEFLAGS=-j2
1893           
1894           on the command line and the "-j2" flag will be passed through to
1895           the make hierarchy.  Once the SunC++ compiler supports parallel
1896           makes correctly (Template.DB causes problems) this will allow me
1897           to tke advantage of my new dual-CPU SPARCstation 20!!!
1899 Mon Oct  2 13:34:14 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1901         * libsrc/Connection: Cleaned up some of the code related to
1902           Time_Values * by adding a new method call time_value() to the
1903           ACE_Synch_Options class.
1905         * libsrc/Service_Config/Service_Record: Changed things a bit so
1906           that we don't have to include "ace/Stream.h" in
1907           Service_Record.h, but instead use forward decls of the
1908           appropriate types.  This breaks a circular dependency that was
1909           causing problems for GNU C++.  Thanks to John Hutchinson
1910           (hutchiso@epi.syr.ge.com) for finding this problem.
1912 Sat Sep 30 13:45:08 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1914         * Changed all uses of typedef PARENT to inherited, which is less
1915           obtrusive.
1917 Fri Sep 29 01:33:54 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1919         * libsrc/Misc: Completed the new OS class, which will be used
1920           shortly to remove all direct UNIX system calls in ACE.
1922         * libsrc: Completed redocumented the header files for almost all
1923           of ACE.  The goal was to document all the methods in all the
1924           classes.  This has most been achieved (only a few minor changes
1925           remain).  The result is *much* better manual page entires in
1926           ./man/man3, as well as much more consistent header files and
1927           overall documentation for ACE.
1929         * libsrc/Reactor/Reactor: Changed all uses of get() to
1930           handler_i().  Also changed the check_connections() method to
1931           check_handles().  Note that all these changes are invisible to
1932           apps...
1934 Thu Sep 28 01:22:36 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1936         * libsrc/IPC_SAP/Addr/SPIPE_Addr: Changed all occurrences of
1937           {get,set}_user_id() and {get,set}_group_id() to user_id() and
1938           group_id() in order to be more consistent with other parts of
1939           ACE.
1941         * libsrc/ASX/Task.C (module): Modified the implementation of
1942           several Task helper methods (e.g., sibling()) so that they don't
1943           crash if there is not Module associated with the Task.
1945         * libsrc/ASX/Stream: Removed the sync_ data member from the
1946           private part of Stream since it didn't seem to be used for
1947           anything.
1949         * libsrc/ASX/Map_Manager.C (bind): Changed the type of the INT_ID
1950           to bind() from INT_ID to const INT_ID &.
1952         * libsrc/IPC_SAP/Addr/Addr: Moved some methods around in the *.i
1953           file to the *.C file in order to be smarter about inlining.
1955         * libsrc/Misc/Auto_Ptr.h: Added a new pair of classes called
1956           "auto_ptr" and "auto_array_ptr".  These implement the ANSI/ISO
1957           C++ standard auto_ptr mechanism, which helps to write
1958           exception-safe code.  The code is based on material from Jack
1959           Reeves (jack@fx.com) and Dr. Harald M. Mueller
1960           (mueller@garwein.hai.siemens.co.at).
1962         * libsrc/Threads/Synch_T.h (ACE_Null_Condition): Changed the
1963           behavior of Null_Condition::{signal,broadcast} so that they
1964           return 0 rather than setting errno = ETIME and returning -1.
1966 Wed Sep 27 00:16:01 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
1968         * libsrc/Threads/Synch: Fixed a bug with class ACE_Barrier: count_
1969           wasn't being set properly.
1971         * tests/Threads/test_barrier.C (main): Fixed a stupid bug 
1972           in the ACE_Barrier -- the main function was exiting, thereby
1973           destroying the barrier!
1975         * tests/IPC_SAP/{SOCK,TLI}_SAP: Added test cases to exercise the
1976           new reuse_addr feature of SOCK_Connector and TLI_Connector.
1978         * libsrc/IPC_SAP/{SOCK,TLI}_SAP/{SOCK,TLI}_Connector: Implemented
1979           the new behavior for reusing a local address.  Also fixed a few
1980           error cases that would have lead to descriptor leaks.
1982         * libsrc/IPC_SAP/SOCK_SAP/SOCK.C (open): Modified a few return
1983           values and comparisons to ease the transition to WIN32.  
1985         * libsrc/ASX/Task.C (ACE_Task): Changed the behavior of
1986           Task::activate() so that it uses the
1987           ACE_Service_Config::thr_mgr() Singleton if no thread manager has
1988           been associated with a Task when it becomes an active object.
1990         * libsrc/Service_Configurator/Service_Config: Added a new static
1991           method to class Service_Config called thr_mgr().  This static
1992           method behaves as a "Singleton" and provides a convenient
1993           default thread manager that is available to all threads
1994           throughout a process.
1996         * libsrc/IPC_SAP: Changed all the IPC_SAP/*_SAP/*_Connector.[hiC]
1997           files and the Connection/Connector.[Chi] class in order to add
1998           "reuse_addr" behavior consistent with the Reactor.  This enables
1999           the client to specify that the "local_addr" should be reused
2000           (e.g., via SOCKREUSEADDR), even if its "2 minute wait" time
2001           hasn't elapsed yet.  The libsrc/Connection/Connector.[Chi] files
2002           were also changed to support this new interface.
2004         * libsrc/Log_Msg/Log_Msg.C (log): Fixed a mistake in Log_Record
2005           caused by the new thread-safe storage enhancement.  The data
2006           being logged was being rounded up incorrectly.  Thanks to Daniel
2007           Proulx (daproulx@qc.bell.ca) for reporting this.
2009         * libsrc/Reactor/Signal.i (operator): Made a minor change to the
2010           definition of operator struct sigaction * to work around a bug
2011           with the HP/UX C++ compiler (lame, lame, lame)...
2013         * libsrc/Service_Config: Changed all occurrences of
2014           ACE_Service_Config::reactor (which was originally a globally
2015           accessible public method of class ACE_Service_Config) to
2016           ACE_Service_Config::reactor () (i.e., made the reactor a
2017           Singleton implemented by a static method).  This was long
2018           overdue and will fix all sorts of niggling problems with order
2019           of initialization since the reactor() method can do "lazy
2020           creation" of Reactors now, i.e., create one the first time it is
2021           referenced.  In addition, changed the
2022           ACE_Service_Config::svc_rep to ACE_Service_Config::svc_rep () in
2023           the same manner.
2025         * Changed all occurrences of the form:
2026         
2027           *_Stream stream;
2028           *_Connector con (stream, remote_addr);
2029           
2030           if (stream.get_handle () == ACE::INVALID_HANDLE)
2031              ...
2032         
2033           To 
2035           *_Stream stream;
2036           *_Connector con;
2037           
2038           if (con.connect (stream, remote_addr) == -1)
2039              ...
2040           
2041           which is cleaner and less error prone with respect to
2042           UPIPE_Stream (which doesn't have a valid handle once it's
2043           connected).
2045         * Changed all occurrences of get_handle () == -1 to get_handle ()
2046           == ACE::INVALID_HANDLE to help smooth the move to WIN32...
2048         * libsrc: Created a new directory called Shared_Memory and moved
2049           the Shared_Malloc_MM and Shared_Malloc_SV classes from the
2050           ./Shared_Malloc directory to here, where they are now called
2051           Shared_Memory_MM and Shared_Memory_SV.  This is a better
2052           name/place for them since they never really had anything to do
2053           with malloc in the first place!  What remains the Shared_Malloc
2054           is the Malloc.* and Memory_Pool.* classes, which are typically
2055           used for truly shared malloc/free.
2057         * apps/Gateway/Gateway: added new logic to the Gateway to enable
2058           it to specify which local port to bind() to.
2060 Tue Sep 26 21:17:29 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2062         * libsrc/Connection/Strategies.C (open): Added a return 0; at the
2063           end of the ACE_Thread_Strategy::open method.
2065         * tests/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.C:
2066           Made CLI_Stream a template so that we don't have to worry about
2067           multiple includes of classes...
2069 Mon Sep 25 01:41:27 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2071         * libsrc/IPC_SAP: Revised the close() method of TLI_SAP and
2072           SOCK_SAP so that they don't try to close down a handle that ==
2073           ACE::INVALID_HANDLE.
2075         * Changed all uses of ::free ((char *) ...) to ::free
2076           (ACE_MALLOC_T (...)) to work around inconsistent prototype
2077           problems with some compilers.
2079         * include/ace/sysincludes.h: Changed ACE_MALLOC_TYPE to
2080           ACE_MALLOC_T which is a bit less verbose...
2082         * libsrc/Service_Configurator/Makefile (BUILD): Fixed the argument
2083           to sed from -s (which is invalid) to -e (which is valid).
2084           Thanks to Doug Ritter (dougr@guilder.datalytics.com) for
2085           noticing this.  Also used sed to do a more elegant fix on the
2086           age-old problem of inconsistent prototypes for free() and
2087           realloc()...
2089         * libsrc/IPC_SAP/UPIPE_SAP: Rewrote all the UPIPE_* classes to
2090           remove any dependencies on class UPIPE.  This class appears to
2091           be unnecessary since it mimics the behavior of class SPIPE.  To
2092           simplify the behavior of the UPIPE_* classes, they now inherit
2093           from the SPIPE_* classes where appropriate.
2095         * libsrc/IPC_SAP/UPIPE_SAP: Changed the semantics of the
2096           UPIPE_Connector and UPIPE_Acceptor connection methods so that
2097           they close down the SPIPE_Stream after a connection is
2098           established successfully.  This is important to conserve
2099           descriptors.
2101         * libsrc/Misc: Created a new class called OS, which encapsulates
2102           *all* of the UNIX system calls and library routines within a
2103           single class.  The rest of ACE will program only to the methods
2104           in this interface, which will make it much easier to port to
2105           other versions of UNIX (and WIN32!).
2107 Sun Sep 24 11:49:47 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2109         * libsrc/IPC_SAP/SOCK_SAP: Conditionally compile the LSOCK_* stuff
2110           if the OS platform (e.g., Linux) doesn't support it.
2112         * Changed all occurrences of ACE_HAS_NO_... to ACE_LACKS_... in
2113           all the config*.h files and the headers/source.  This reads
2114           better...
2116         * Changed all uses of (1) Acceptor::peer_acceptor_ to
2117           Acceptor::acceptor(), (2) Svc_Handler::peer_ to
2118           Svc_Handler::peer(), and (3) Connector::peer_connector_ to
2119           Connector::connector() to make the code more abstract and
2120           resilient to future changes.
2122         * include/ace/sysincludes.h: Added a new macro called
2123           ACE_NEW_RETURN that provides a useful abstraction for
2124           expressions involving operator new since we can change memory
2125           allocation error handling policies (e.g., depending on whether
2126           ANSI/ISO exception handling semantics are being used).
2128         * libsrc/Threads/Thread.C: Changed things a bit so that if
2129           ACE_MT_SAFE == 0 then Thread::self() returns 1, regardless of
2130           whether the platform supports threads.
2132         * Went through the entire library and (hopefully) made sure that
2133           all calls to global system calls and library routines are
2134           prefixed with "::".
2136         * libsrc/Misc/Get_Opt.C: Changed this class to use the Log_Msg
2137           logging mechanism rather than stderr...
2139         * tests/Misc: Added a new test program to test the Profile_Timer.
2141         * tests/Reactor/misc: Added a new test program to test the
2142           Handle_Set.
2144         * libsrc/Service_Configurator: Changed the error messages in
2145           Svc_Conf.y and Svc_Conf.l to go to the ACE Log_Msg logging
2146           mechanism rather than stderr...
2148         * libsrc/Connection/Acceptor: Modified the Acceptor and
2149           Oneshot_Acceptor classes so that they take advantage of the new
2150           ACE_Creation_Strategy, ACE_Accept_Strategy, and
2151           ACE_Concurrency_Strategy components.  This will make is easy to
2152           define Acceptors that can be flexibly configured to use various
2153           creation strategies (e.g., dynamic linking, singletons, dynamic
2154           memory creation, etc.) for making Svc_Handlers.
2156         * libsrc/Connection/Svc_Handler: Added several new classes --
2157           ACE_Creation_Strategy, ACE_Accept_Strategy, and
2158           ACE_Concurrency_Strategy -- that form the heart of the new
2159           ACE_Acceptor implementation.  These classes define the creation,
2160           passive connection acceptance, and concurrency strategies
2161           employed by the Acceptor factory when it receives a connection
2162           from a client.
2164         * libsrc/Connection/Acceptor: Modified the implementation of the
2165           Acceptor and the Oneshot_Acceptor.  These classes are no longer
2166           related by inheritance since they behave in fundamentally
2167           different ways and sharing code was making it hard to write and
2168           use these classes correctly.
2170         * libsrc/Misc/Misc: Moved the enum INVALID_HANDLE from IPC_SAP.h
2171           to Misc.h since this is actually more general than just the
2172           sockets stuff and we need to be portable to WIN32...  Therefore,
2173           any code that originally said ACE_IPC_SAP::INVALID_HANDLE should
2174           now be ACE::INVALID_HANDLE.
2176         * Removed the ACE_OMIT_SERVICE_CONFIGURATOR flags.  These are
2177           annoying -- anyone who wants to subset ACE should be responsible
2178           for doing this stuff.
2180 Fri Sep 22 22:36:33 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2182         * libsrc/Threads/Thread_Spawn.C: Greatly simplified the
2183           implementation of Thread_Spawn by leveraging the new class Task
2184           semantics for activate().  Now, all the concurrency activation
2185           mechanisms necessary to create active objects are associated
2186           with a Task and all the Thread_Spawn needs to do is to define a
2187           new make_svc_handler() Factory Method to create a SVC_HANDLER
2188           and activate it!
2190         * libsrc/ASX/Task.C: Tightened up the semantics of Task::activate
2191           (which turns a passive object into an active object, i.e., one
2192           with its own thread).  Now, if an object is activated more than
2193           once it ignores the other requests, unless the force_active
2194           parameter is enabled.  Moreover, activate() now takes a
2195           parameter that indicates the number of threads to allocate for
2196           the Task.  This makes it simple to have a "thread pool"
2197           associated with a Task.
2199 Thu Sep 21 00:49:55 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2201         * tests/Connection: Updated the CPP-acceptor and CPP-connector to
2202           use the underlying Acceptor and Connector patterns more
2203           robustly.  Also added new hooks to include a Service_Config
2204           component so that integrating this with the ACE dynamic linking
2205           scheme will be a snap!
2207         * libsrc/Connection/Acceptor.C: Revised the Oneshot_Acceptor to be
2208           robust in situations where it isn't given a Reactor *...
2210         * apps/Logger: Fixed a couple of minor problems with *.i files
2211           being included when __INLINE__ is set.  This should help G++
2212           compiler ACE better...
2214         * libsrc/Reactor/Reactor: Enhanced the Reactor::notify() method so
2215           that it takes both an Event_Hander * and a Reactor_Mask, which
2216           it passes to the Reactor's main event loop thread via the pipe.
2217           The event loop thread uses this mask to determine which method
2218           to invoke.  This new feature is due to the insight of Karl-Heinz
2219           Dorn (kdorn@erlh.siemens.de).
2221         * libsrc/Connection/Connector: Fixed a braino in
2222           Connector::handle_output, which was using ::getpeername() to
2223           check whether a connection has been established with a peer.
2224           Naturally, this only works for sockets, and doesn't work at all
2225           for TLI or SPIPEs...
2227         * libsrc/IPC_SAP/Addr/SPIPE_Addr.C (set): Changed the return type
2228           of this method to "int" in order to conform to the types
2229           expected by the Acceptor/Connector patterns.
2231         * Removed all uses of the global scope "::" for all variables and
2232           methods that are not UNIX system calls or library calls in
2233           preparation to change over to the new OS class (requested by
2234           Siemens).
2236 Wed Sep 20 14:39:08 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2238         * libsrc/IPC_SAP/SPIPE_SAP: Renamed the SPIPE_IO classes to
2239           SPIPE_Stream to be consistent with the other parts of the ACE
2240           library.  Updated all parts of the library to reflect this
2241           change.
2243         * tests/Service_Configurator: Moved the current contents of this
2244           directory into a new directory called IPC-tests.  Created a new
2245           directory called Connection-tests where the dynamic linking
2246           examples for Siemens will go.
2248         * libsrc/Reactor/Signal: Made a bunch of minor changes to support
2249           signal handling on SunOS 4.x platforms.  Thanks to Aniruddha
2250           Gokhale <gokhale@cs.wustl.edu> for help with this.
2252         * libsrc/Threads/Synch.h: Modified the #ifdefs a bit so that
2253           Synch_T.h gets included regardless of whether ACE_HAS_THREADS.
2255         * libsrc/Threads/Synch_Options: Added a new set() method to make
2256           it possible to initialize the Synch_Options from outside the
2257           constructor.
2259         * libsrc/Connection/Svc_Handler.C: Added checks within the
2260           ACE_Svc_Handler so that if we are given a NULL Reactor we don't
2261           crash!
2263         * libsrc/Mem_Map: Tidied up this class and added comments to the
2264           header so that the class2man has something to generate manual
2265           pages from!
2267         * libsrc/Misc/Misc: Added a new method called "round_to_pagesize",
2268           which was previously in Mem_Map.  This is a better place for it
2269           since other parts of ACE (e.g., Shared_Memory) use it.
2271         * libsrc/Misc/Misc: Added a new method called "get_file_size",
2272           which was previously in Mem_Map.  This is a better place for it
2273           since other parts of ACE might want to use it.
2275 Tue Sep 19 00:24:41 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2277         * Released a beta version of ACE 3.3.1 for G++ testing.
2279         * libsrc/IPC_SAP/SOCK_SAP/SOCK_Dgram.C: Removed a stray INLINE
2280           that was causing problems for G++.  Thanks to E. Jason Scheck
2281           <jasons@ims.com> for reporting this.
2283         * libsrc/IPC_SAP/Addr/INET_Addr: Improved the documentation for
2284           this class and also added new semantics to the constructor and
2285           set() method so that a "ip_addr:port_number" tuple can be given
2286           as a single string (e.g., "1234:tango.cs.wustl.edu" or
2287           "1234:128.252.166.57").  This is useful since it gives a uniform
2288           interface for addressing for Internet domain, UNIX domain, and
2289           SPIPE domain addresses...  Updated the ./tests/Connection tests
2290           to use this form (which is nice since now they are all very
2291           orthogonal!)
2293         * tests/Connection: Created a whole new suite of tests that
2294           exercise the connection patterns for all of the relevant IPC
2295           mechanisms (e.g., SOCK_SAP, TLI_SAP, SPIPE_SAP, and UPIPE_SAP).
2297         * bin/clone.C: fixed the first #include so that it uses #include
2298           "ace/sysincludes.h".  Thanks to Alex V Maclinvosky
2299           <alexm@teltrunk1.tait.co.nz> for noticing this.
2301 Mon Sep 18 01:52:07 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2303         * libsrc/ASX/Message_Queue.C (close): Fixed yet another problem
2304           with variables being defined in for loops.  G++ is good for
2305           detecting this ;-).
2307         * libsrc/Threads: Moved all the template classes from Synch.* into
2308           Synch_T.* in order to make it possible to compile templates with
2309           G++.  Thanks to E. Jason Scheck <jasons@ims.com> for suggesting
2310           this.
2312         * libsrc/IPC_SAP/UPIPE_SAP: Make a number of changes to ensure
2313           that all the UPIPE_SAP classes conform to the same interface as
2314           all the other ACE IPC classes.
2316         * Changed all occurrences of THR_FUNC to ACE_THR_FUNC to protect
2317           the global namespace better.
2319 Sun Sep 17 13:36:23 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2321         * tests/ASX/Message_Queue: Fixed a typo in these test programs
2322           that caused a segfault since a vararg parameter was omitted on a
2323           call to the Log_Msg::log() method.  Maybe iostreams isn't so bad
2324           after all... ;-)
2326         * apps/Logger/Service_Configurator_Logger/Thr_Server_Logger: fixed
2327           a stupid error that was caused by some mods I made after ECOOP
2328           to update the threaded logging server.  When I changed the
2329           Thr_Logging_Acceptor so that it no longer inherited from the
2330           Logging_Acceptor I forgot to redefine the init() method...
2332         * man: Totally regenerated the ACE manual pages using the new
2333           versions of the OSE tools provided by Karl-Heinz Dorn
2334           (kdorn@erlh.siemens.de).
2336         * Changed all occurrences of MT_SYNCH and NULL_SYNCH to
2337           ACE_MT_SYNCH and ACE_NULL_SYNCH, respectively.  This is
2338           consistent with the ACE naming conventions and had been an
2339           oversight when I renamed everything earlier.
2341         * Fully built and tested ACE with the __INLINE__ flag enabled.
2342           This will generate code with many small methods in the library
2343           inlined.  Had to fix a bunch of minor things to allow this to
2344           work without compilation-order dependency problems.
2346         * libsrc: Made a bunch of changes to the way that header files are
2347           included internally to ACE in order to break compilation-order
2348           dependencies.  This is necessary to support GNU G++'s lame
2349           handling of templates.  None of this stuff should affect
2350           application code.
2352         * tests: Added a whole new slew of tests for the remaining parts
2353           of ACE that weren't currently included in ./tests.  This stuff
2354           exercises ACE components like the Log_Msg logger and factors all
2355           the #if defined (DEBUGGING) code out of the ./libsrc directory
2356           tree and puts it in the ./tests directory tree, where it
2357           belongs.
2359         * Changed all uses of the error macros LM_* to ACE_* in order to
2360           avoid name collisions with other libraries, frameworks, and
2361           toolkits.  In addition, changed all uses of the error enumerals
2362           LOG_ to LM_ in order to avoid a conflict with system #defines in
2363           <sys/syslog.h>.
2365           In order to change these automatically, I used the following 
2366           UNIX command sequence:
2368           % find . -type f -print | xargs perl -p -i -e 's/LM_/ACE_/g'
2369           % find . -type f -print | xargs perl -p -i -e 's/LOG_/LM_/g'
2371 Sat Sep 16 11:55:18 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2373         * tests/Threads: Added a new test for Thread_Specific storage.
2375         * Added a new platform/compiler configuration flag called
2376           ACE_TEMPLATES_REQUIRE_SOURCE that must be set for compilers 
2377           (e.g., GNU G++) whose template mechanism must be able to
2378           see the source code (i.e., the *.C files).  Changed *lots* of
2379           header files to enable this...  Also had to change the
2380           corresponding *.C files so that they wouldn't get included
2381           twice...
2383         * libsrc/Connection: redid the implementation of Acceptor,
2384           Connector, and Svc_Handler to get more control over the scope of
2385           #defines like #define SH SVC_HANDLER, etc.
2387         * libsrc/Threads/Thread_Spawn: Totally redid the implementation of
2388           Thread_Spawn to use the Acceptor class template.  This greatly
2389           reduces the amount of code to implement the Thread_Spawn!
2391         * libsrc/Threads/Thread_Spawn: Moved the Thread_Spawn
2392           implementation into the ./libsrc/Threads directory rather than
2393           in the ./libsrc/Service_Configurator directory since it deals
2394           with threading and thus belongs in the other place.
2396 Fri Sep 15 00:25:51 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2398         * libsrc/Threads/Token.i (tryacquire): Added a cast to fix passing
2399           a const pointer to a function that was expecting a non-const.
2400           Thanks to E. Jason Scheck <jasons@ims.com> for reporting this.
2402         * libsrc: Added a bunch of changes to enable G++ to compile ACE.
2403           A lot of this involves moving around info in header files so
2404           that templates can be dealt with using the relatively lame GNU
2405           C++ repository scheme.  Thanks to E. Jason Scheck
2406           <jasons@ims.com> for all his help in this.
2408         * libsrc/Synch: created Synch_Options.C out of Svc_Handler.C, so
2409           that Svc_Handler.C could be "template pure"; all the other files
2410           were already separated.  Thanks to E. Jason Scheck
2411           <jasons@ims.com> for recommending this.
2413         * Makefile (clone): Added a tiny fix that solves a weird problem
2414           that arises with symbolic links on HP/UX.  Thanks to Jam Hamidi
2415           (jh1@osi.com) for tips on how to fix this.
2417 Thu Sep 14 10:55:30 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2419         * apps/Gateway/Gateway/Channel.C (route_message): Updated the main
2420           routing code to check for whether a channel is_active()
2421           (i.e., is actually connected) before trying to send messages
2422           to it.  This was originally done in the Set class iterator, but
2423           I revised that to make it more reuseable and to workaround bugs
2424           in the HP/UX compiler so I had to update the main code...
2426         * libsrc/Threads/Thread_Specific: Added a new method to called
2427           ts_object () to class ACE_Thread_Specific that get the
2428           thread-specific object for the key associated with this object.
2429           Returns 0 if the data has never been initialized, otherwise
2430           returns a pointer to the data.  This is useful since now you can
2431           query a thread-specific storage mechanism to see if there's ever
2432           been a thread-specific object created *without* having to
2433           actually create one if one hasn't been created yet!  Thanks to
2434           Detlef Becker (beckerd@erlh.siemens.de) for pointing this out.
2436         * include/makeinclude/platform_sunos5_sunc++_orbix.GNU (LIBS):
2437           Changed the default compilation strategy for SunOS 5.x machines
2438           to use -mt.  This seems to be necessary to build robust
2439           libraries that are thread-safe.  Thanks to Phil Mesnier
2440           <phil@yakko.envision.com> and Chris Cleeland
2441           <chris@envision.com> for hounding me until I changed the
2442           existing solution.  If you *don't* want this behavior you need
2443           to remove -mt from the platform_macros.GNU file and and remove
2444           the ACE_HAS_THREADS and ACE_MT_SAFE flags, etc. from the
2445           config-sunos5.*.h files.
2447         * libsrc/Shared_Malloc/Memory_Pool.C (ACE_MMAP_Memory_Pool): Added
2448           a new parameter to the constructor called write_each_page that
2449           if enabled forces a write to each page to ensure that space is
2450           allocated from the file system (otherwise, we can end up failing
2451           due to optimisitic resource allocation...).  Thanks to Phil
2452           Brooks <phil_brooks@mentorg.com> for detecting this issue and
2453           implementing a solution.
2455         * include/ace/sysincludes.h: Added #ifdef support for HP/UX, which
2456           fails to properly wrap <sys/mman.h> with an extern "C" block.
2458 Mon Sep 11 01:39:35 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2460         * libsrc/Connection/Connector.C (handle_input): Changed the call
2461           to Svc_Handler::close() to accept the default value of 0 rather
2462           than -1...  Thanks to Mark Seaborn
2463           <mseaborn@itthp1.comm.mot.com> for noticing this.
2465         * libsrc/Connection: Changed all uses of ADDR to PEER_ADDR to
2466           avoid a name clash in Linux...  Thanks to James Morris
2467           <jmorris@aurora.apana.org.au> for finding this.
2469 Sun Sep 10 03:56:18 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2471         * libsrc/Threads/Synch: Added support for "barrier
2472           synchronization" to ACE in the form of ACE_Barrier.  Thanks to
2473           Bruce Worden (bruce@betsy.gps.caltech.edu) for suggesting this
2474           and pointing me in the right direction.
2476         * tests/Threads: Added a test for the new barrier synchronization
2477           mechanism. 
2479 Sat Sep  9 11:58:16 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2481         * libsrc/Reactor/Reactor: Changed Reactor::max to Reactor::max3 to
2482           avoid problems with conflicting names of macros in Sun header
2483           files!
2485 Mon Sep  4 14:34:52 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2487         * libsrc/Reactor/Signal: The new ACE_Signal_Handlers mechanism
2488           appears to be working!  There's a test in ./tests/Reactor/misc
2489           called test-signal.C that illustrates how all this works.
2491         * libsrc/Reactor/Signal: Added several new methods to
2492           ACE_Sig_Action to make life easier to implement the new
2493           ACE_Signal_Handler code...
2495         * libsrc/Reactor/Signal.C (ACE_Sig_Action): Changed the order of
2496           the arguments to the ACE_Sig_Action constructor.  It's almost
2497           always the case that you want to vary the SignalHandler, but
2498           only rarely do you want to vary the mask or flags.  By
2499           reordering this, it's easier to get the correct default values
2500           without adding extra junk...
2502 Mon Sep  4 01:11:29 1995  Tim Harrison  (harrison@tango.cs.wustl.edu)
2504         * libsrc/IPC_SAP/SOCK_SAP/SOCK_Dgram_Multicast: added support to
2505           allow a port to be reused for multicast sockets.  This is useful
2506           if you are multicasting to multiple processes, some of which are
2507           on the same host!
2509         * libsrc/ASX/Map_Manager: Fixed an odd bug that must have gone
2510           undetected for a long time somehow.  Basically, the "is_free_"
2511           field of the ACE_Search_Structure struct was never being set to
2512           it's correct initial value of 1.  I don't know how this didn't
2513           surface before...  At any rate, it is fixed now...
2515         * include/ace/sysincludes.h: Changed the inline methods for
2516           SET'ing and CLR'ing bits to be macros in order to get cheap
2517           polymorphic behavior...  Also changed them to use the prefix
2518           "ACE_" to avoid namespace pollution.  Changed all dependencies
2519           in the source code (only a few...).
2521         * libsrc/Reactor/Signal: Added a new class called
2522           ACE_Signal_Handlers, which subclasses from ACE_Signal_Handler.
2523           This new class implements the semantics required for Siemens.
2524           For example, this class allows multiple signal handlers to be
2525           registered for the same signal.  It also makes SA_RESTART the
2526           default mode.  Note that by default, the Reactor uses the
2527           original ACE_Signal_Handler semantics.  If you want the new
2528           semantics, simply pass the Reactor a pointer to
2529           ACE_Signal_Handlers.
2531         * include/ace/sysincludes.h: Removed the automatic inclusion of
2532           ./libsrc/Misc/Misc.h from sysincludes.h since this was causing
2533           problems with include file ordering.
2535 Sun Sep  3 00:22:11 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2537         * libsrc/Reactor/Signal.C (remove_handler): Moved a definition of
2538           ACE_Sig_Action out of an inner block to avoid portability
2539           problems.
2541         * libsrc/ASX/Map_Manager: Improved the documentation of this class
2542           and fixed up a couple of problems with the scope of loop
2543           indexes.
2545         * libsrc/Misc/{Stack,Set}: Added this new file that contains a set
2546           of Stack and Unordered Set implementations.  The Unordered Set
2547           is used in various places in ACE (e.g., libsrc/Reactor/Signal
2548           and apps/Gateway/Gateway/Routing_Entry).
2550         * libsrc/Log_Msg/Log_Msg: Moved the definition and declaration of
2551           Thread_Specific<Log_Msg> ace_log_msg from this directory to
2552           ./libsrc/Misc/Misc.h in order to cleanup the namespace and also
2553           to help make this work on DEC platforms...
2555         * libsrc/Reactor/Signal: Changed ACE_Signal_Handler from a static
2556           class to a non-static class in order to allow subclassing.  This
2557           is necessary to support the Siemens requirements.
2559         * libsrc/Shared_Malloc/Memory_Pool: Modified ACE_MMAP_Memory_Pool
2560           so that it no longer stores the name of the backing store in a
2561           static character array (which made it impossible to have more
2562           than one of these at a time...).  The new version stores the
2563           name in each ACE_MMAP_Memory_Pool object.  It also selects a
2564           name that won't conflict with other names by using ::mktemp.
2566         * tests/Shared_Malloc/test_malloc.C (parse_args): Fixed two stupid
2567           omissions of "break" when parsing command-line arguments.  Isn't
2568           C++ great?! (NOT)...
2570         * apps/Synch-Benchmarks: Came up with a killer solution to the
2571           nagging problem of POSIX Pthread's lack of an integral thread id
2572           (a la Solaris threads thr_self()).  The solution leverages off
2573           of our new ACE_Thread_Specific wrapper to provide the necessary
2574           functionality.  Thanks to Reginald S. Perry (perry@zso.dec.com)
2575           for triggering the thoughts that lead to this solution...
2577 Sat Sep  2 17:00:46 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2579         * libsrc/IPC_SAP/TLI_SAP/TLI_Acceptor: Changed the implementation
2580           of ACE_TLI_Acceptor so that ACE_TLI_Request is defined inside
2581           the TLI_Acceptor.C file (this is the so-called "Cheshire Cat"
2582           technique).  This clean up the code and the global namespace a
2583           bit.
2585 Fri Sep  1 00:53:47 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2587         * Released new version of ACE 3.3
2589         * libsrc/IPC_SAP/UPIPE_SAP/UPIPE.C: Fixed a small problem with
2590           failing to #ifdef this file correctly if we don't have
2591           threads...  Thanks to John Morey (jmorey@hitel.com) for
2592           reporting this.
2594         * tests/ASX/CCM_App/svc.conf: Fixed the svc.conf file so that it
2595           looked in the .shobj directory rather than the .obj directory.
2597         * Released new version of ACE 3.2.9...
2599         * libsrc/Log_Msg/Log_Msg: Added a new field called "restart_" to
2600           the thread-specific storage.  This will be used to control
2601           whether system calls are restarted when interrupted.
2603         * Changed inheritance syntax from
2605           class xxx
2606             : public yyyy
2607           {
2608           };
2610           to 
2612           class xxx : public yyyy
2613           {
2614           };
2616           so that the OSE tools would work correctly.
2618 Thu Aug 31 00:12:40 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2620         * libsrc/IPC_SAP/UPIPE_SAP: Changed all uses of UPIPE_Addr to
2621           SPIPE_Addr since they were the same thing.  This also allows
2622           much reuse of code...
2624         * libsrc/IPC_SAP/{TLI_SAP,SOCK_SAP,SPIPE_SAP}: fixed the
2625           "complete" method for these classes so that it uses the new
2626           ACE::handle_timed_complete() method in libsrc/Misc.  This cleans
2627           up the code by merging common logic.
2629         * libsrc/IPC_SAP/{DEV_SAP,FILE_SAP,SPIPE_SAP}: fixed the "connect"
2630           method for these classes to conform to the API used by the
2631           SOCK_SAP and TLI_SAP wrappers.  In addition, cleaned up the code
2632           so that common logic was pushed into a new method in libsrc/Misc
2633           called ACE::handle_timed_connect().
2635 Wed Aug 30 00:20:18 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2637         * libsrc/Connection/Acceptor.C (open): Fixed this method so that
2638           it returns a value on all paths through the code...
2640         * libsrc/IPC_SAP/TLI_SAP/TLI.C (ACE_TLI): Moved the option
2641           allocation code from the TLI::open() method into the TLI
2642           constructor in order to make sure it is always called!
2644         * libsrc/IPC_SAP/DEV_SAP/DEV_Connector: Changed the signature of
2645           the DEV_Connector::connect method to allow users to specify
2646           flags, permissions, and timeouts (this is now consistent with
2647           other parts of ACE).
2649         * libsrc/IPC_SAP/FILE_SAP/FILE_Connector: Changed the signature of
2650           the FILE_Connector::connect method to allow users to specify
2651           flags, permissions, and timeouts (this is now consistent with
2652           other parts of ACE).
2654         * tests/IPC_SAP/TLI_SAP: Updated the test code to check the new
2655           timer support for connection establishment.
2657         * libsrc/IPC_SAP/TLI_SAP: Updated the code to make it conform to
2658           the interfaces provided by SOCK_SAP.  This primarily affected
2659           the TLI_Acceptor and TLI_Connector classes in order to add
2660           support for timed connects and accepts.
2662         * libsrc/Reactor/Signal.C: Modified Signal_Handler::dispatch so
2663           that it saves/restores errno to prevent it from being corrupted
2664           by the handle_signal callback.  Thanks to Detlef for suggesting
2665           this.
2667         * libsrc/Shared_Malloc/Memory_Pool: Changed the name of
2668           ACE_Local_Memory_Pool to ACE_Sbrk_Memory_Pool.  Then added a new
2669           version of ACE_Local_Memory_Pool that uses the C++ operator new
2670           to acquire chunks of memory.  This enables the ACE Malloc class
2671           to integrate with existing programs that use new/delete.  Thanks
2672           to Karlheinz for suggesting this.
2674         * libsrc/IPC_SAP: Added the UPIPE mechanism donated by SIEMENS.
2675           This provides an intra-process IPC mechanism that has the same
2676           API as the interprocess and network mechanisms.
2678         * Reran catman on ./man/windex.  Thanks to Dieter Quehl
2679           (quehl@csaserv.erlh.siemens.de) for reporting the need for this.
2681         * Released new version of ACE 3.2.9...
2683         * tests: Fixed a bunch of minor problems that occurred when
2684           building on HP/UX.  Thanks to John Morey
2685           (jmorey@hitel.com) for reporting these.
2687         * apps/Gateway/Gateway/Peer_Message.h: Changed the default values
2688           of the parameters to Peer_Addr so they aren't trying to assign
2689           negative values to unsigned chars!  Thanks to John Morey
2690           (jmorey@hitel.com) for noticing this...
2692 Tue Aug 29 18:52:17 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2694         * libsrc/Thread/Thread_Specific: Changed the constructor so
2695           that it will take an initial TYPE *, which will be used to
2696           initialize the thread-specific object.  This is necessary to
2697           support the changes to ACE_Task described in the following
2698           bullet.
2700         * libsrc/ASX/Task: Added a new class called ACE_Task_Exit to
2701           Task.C.  This class is used in conjunction with
2702           ACE_Thread_Specific to keep exit information for a Task in
2703           thread-specific storage.  This ensures that the Task::close()
2704           method will get called no matter how the thread exits (e.g., via
2705           Thread::exit() or by "falling off the end of Task::svc_run").
2707 Mon Aug 28 09:54:35 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2709         * Released new version of ACE 3.2.9...
2711         * libsrc/Reactor/Handle_Set.C: changed the type of MSB_MASK from
2712           u_long to ACE_UINT32 to handle problems with the Alpha's 64 bit
2713           longs...
2715         * libsrc/Threads/Thread_Specific: Continued to try and get this
2716           class to build correctly on other platforms...  I think I've
2717           just about got it working right now...
2719         * libsrc/IPC_SAP/IO_SAP/IO_SAP: Added installation flags that
2720           indicate whether the platform has terminal ioctl flags like
2721           TCGETS and TCSETS.  I know that SunOS 5.x has these, but I'm not
2722           sure about other platforms...
2724 Sat Aug 26 13:55:45 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2726         * Released new version of ACE 3.2.9...
2728 Fri Aug 25 09:05:09 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2730         * libsrc/Threads/Thread_Specific.h: Fixed a typo that was causing
2731           this file to fail on HP/UX.  Thanks to Neil Cohen
2732           (nbc@metsci.com) for finding this!
2734         * libsrc/IPC_SAP/DEV_SAP/DEV_IO: Added conditional support for
2735           getmsg/putmsg calls in the DEV_IO class.  This will make things
2736           work correctly for platforms that don't support SVR4 STREAM
2737           pipes.
2739         * libsrc/IPC_SAP/FILE_SAP/FILE_IO: Added the same fixes to FILE_IO
2740           that I added to DEV_IO...
2742         * include/ace/sysincludes.h (MAXNAMELEN): Fixed a typo in
2743           sysincludes.h that caused problems for the G++ compiler.
2745         * libsrc/Connection/Acceptor.C (handle_close): Removed a
2746           diagnostic message that was getting printed if a
2747           Oneshot_Acceptor had already been removed from the reactor (it's
2748           ok for this call to fail).  Thanks to Irfan Pyarali
2749           (ip1@cec.wustl.edu) for noticing this!
2751         * libsrc/ASX/Task.C (ACE_Task): Fixed a bug in the constructor
2752           that prevented a Message_Queue from being allocated
2753           automagically.
2755 Thu Aug 24 16:47:14 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2757         * include/ace/sysincludes.h: added support for 64 bit machines so
2758           that Internet addresses are 32 bits, as they must be!
2760         * libsrc/Shared_Malloc/Malloc: Changed things so that MALLOC_STATS
2761           is now *off* by default...  (also changed the name to
2762           ACE_MALLOC_STATS).
2764 Wed Aug 23 15:21:25 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2766         * include/ace/config-osf1.h: Added support for thread-specific
2767           storage.  Please let me know if this breaks on OSF/1!
2769         * libsrc/Threads/Thread: Added support for the thread-specific
2770           storage wrappers for both Pthreads and Solaris threads.  Also,
2771           rearranged some of the code to emphasize similarities between
2772           Pthreads and Solaris threads.
2774         * libsrc/Threads/Thread_Specific: Updated this to remove "static"
2775           from all the data members in this class since those should be
2776           specific to an *instance* rather than to an instantiation of the
2777           particular template class.  Tim claims this works...
2779         * libsrc/Threads/Token.C: Fixed a couple of typos that misspelled
2780           "assert" (jaysus...).  Thanks to David Trumble
2781           (trumble@cvg.enet.dec.com) for noticing this.
2783         * libsrc/Threads/Token.C (release): Fixed a very stupid bug that
2784           was causing the Token never to become "unused"...  No excuses
2785           for this, except that Pthreads is partly responsible ;-)
2787 Tue Aug 22 11:36:58 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2789         * libsrc/ASX/Task: Changed the behavior of task so that it doesn't
2790           try to delete the Message_Queue or Thread_Manager if it didn't
2791           allocate them!  Thanks to Karl-Heinz Dorn
2792           (kdorn@erlh.siemens.de) for suggesting this fix.
2794         * libsrc/ASX/Message_Block: Changed the semantics for
2795           Message_Block::end() so that it returns a pointer to 1 past the
2796           end of the data.  This is more consistent with toolkits like
2797           STL.  Also changed the behavior of Message_Block::copy() so that
2798           it checks to make sure the data will fit in its buffer.
2800         * tests and apps: Revised a bunch of files to add #ifdef so that
2801           TLI tests and apps are not compiled if the platform doesn't
2802           support it...
2804         * Fixed a bunch of minor problems for HP/UX (which lacks TLI and
2805           other common OS features).  Thanks to Mark Seaborn
2806           (mseaborn@itthp1.comm.mot.com) for noticing these.
2808 Mon Aug 21 00:19:29 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2810         * libsrc/Misc: Changed the name of the class Argument_Vector to
2811           ACE_ARGV.  This is a bit more concise...  UNIX programmer will
2812           know precisely what argv is...
2814         * Updated all of ACE to use the new naming scheme, which prepends
2815           all ACE classes with "ACE_".  This is an important change since
2816           it prevents ACE from polluting the namespace of applications
2817           (unless they also prefix "ACE_" in front of their classes, which
2818           is not very likely!).
2820           Since this change basically affects every single file in the
2821           entire release, as well as all existing user code I've written a
2822           perl script called "rename-ace.pl" to automate all of this.
2823           This script is in $WRAPPER_ROOT/bin.  To use it, simply type:
2824           
2825           % find . -type f -print | egrep '[Chi]$' | xargs rename-ace.pl
2827           Note that you will need to change the first line of
2828           rename-ace.pl to point it to whereever perl is located on your
2829           system.
2831           I've tested this on the entire ACE source code base and it seems
2832           to work fine.  Please be careful using it on your code, however,
2833           since it may conflict with names that you use.  When in doubt,
2834           remove the '-pi' from the first line of the rename-ace.pl perl
2835           script and replace it with '-p' (which is non-destructive).
2836           Then run the commands above and check the output carefully.
2837           When you're convinced that everything is ok, add the '-pi' back
2838           again.  Let me know immediately if you find any problems with
2839           this scheme!
2841         * libsrc/Connection/Acceptor.C: Added a virtual destructor to the
2842           Oneshot_Acceptor to make sure that descriptors are closed down
2843           correctly.  Thanks to Irfan (irfan@wuerl.wustl.edu) for
2844           suggesting this.
2846         * libsrc: Change all occurrences of Shared_Memory to
2847           SV_Shared_Memory to firmly indicate the origins of this
2848           wrapper...
2850 Sun Aug 20 23:12:03 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2852         * libsrc/IPC_SAP: added the IO_SAP, DEV_SAP, and FILE_SAP
2853           components donated by SIEMENS to the ACE release.
2855         * libsrc/ASX: Split the Message_Queue.* files into Message_Block.*
2856           and Message_Queue.* in anticipation of the Windows NT port...
2858 Fri Aug 18 13:54:09 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2860         * libsrc/Threads/Thread_Specific: Move the operator->() 
2861           method back into the *.C file in order to make HP/UX
2862           happy...
2864         * apps/Gateway/Peer: Removed the Options.* files since they
2865           weren't being used and they were causing problems on OSF/1...
2867         * libsrc/Misc/Profile_Timer: Factored common code together by
2868           making a new typedef called Rusage that defaults to either
2869           struct rusage or prusage_t, depending on installation flags.
2870           Fixed a couple places in the code that were depending on the
2871           prusage_t type (which is now the Profile_Timer::Rusage type...).
2873 Thu Aug 17 14:31:11 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2875         * libsrc/Connection/Connector.h: Changed some typedefs in order to
2876           keep the Centerline compiler from crapping out.  I can't
2877           *believe* how screwed up that compiler is when it comes to
2878           templates...
2880         * Released new version of ACE 3.2.9...
2882         * libsrc/Threads/Synch: Fixed a bunch of typos that showed up
2883           on OSF/1.  Also tried to fix some other problems by removing
2884           "const" from all the methods...
2886 Wed Aug 16 22:26:24 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2888         * libsrc/Threads/Thread_Specific.h: Fixed another stupid bug
2889           caused by a braino that failed to unconditionally include
2890           Thread_Specific.i.  Stuart Powell found this also... (thanks!).
2892         * libsrc/Threads/Thread_Specific.h: In Thread_Specific.h the
2893           inlining macros were only included if threads were used.  This
2894           obviously didn't work for people without threads...  I
2895           moved the #endif for ACE_HAS_THREADS... back before the #ifdef
2896           __INLINE__ stuff (e.g. to line 71).  Thanks to Stuart Powell
2897           (stuartp@ot.com.au) for suggesting this.
2899         * libsrc/Threads/Synch.h: Fixed a typo that manifested itself for
2900           pthreads: Condition count_nonzero_ should obviously be
2901           Condition<Mutex> count_nonzero_.  Thanks to Rob Clairmont
2902           (rclairmo@bnr.ca) for reporting this.
2904 Tue Aug 15 00:31:44 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2906         * libsrc/Log_Msg/Log_Msg.C (log): Fixed a stupid typo (*format++
2907           should have been format++...).
2909         * libsrc/Misc/Trace.h: Move the class TSS_Int from within class
2910           Trace to file scope and changed the name to ACE_TSS_Int to
2911           handle problems with the HP/UX compiler.
2913         * include/ace/sysincludes.h: Added the word "struct" in front
2914           of rusage to make things work on HP/UX.  Thanks to Neil Cohen
2915           (nbc@metsci.com) for reporting this fix.
2917         * apps/TokenServer/server/TokenMap.C: Fixed yet another problem
2918           with scope of variables defined in for loops...
2920         * Released new version of ACE 3.2.9...
2922         * libsrc/Connector: Fixed a braino whereby I didn't use consistent
2923           naming for my #defines (PA should have been PRC).  Thanks to
2924           Alex (alexey@ace.elektra.ru) for noticing this.
2926 Mon Aug 14 18:13:46 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2928         * libsrc/IPC_SAP/SPIPE_Acceptor: Modified the interface of open()
2929           and accept() so they would conform to the SOCK_Acceptor and
2930           TLI_Acceptor.  This makes it possible to use SPIPE_Acceptor in
2931           similar situations (e.g., Acceptor and Connector patterns).
2933         * libsrc/ASX/Stream: Fix a bug that occurred when trying to dump()
2934           a linked Stream.
2936         * libsrc/Connection/Acceptor: Moved the body of the init() method
2937           out of this class since it was unnecessarily dependent on the
2938           INET_Addr domain addressing types.  This required changes to the
2939           ./apps and ./tests directory in order to add the init() method
2940           to classes that used the default behavior.  
2942         * libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Acceptor.C: Fixed close() so that
2943           it will call fdetach(2) *before* closing down the descriptor.  I
2944           hope this will fix a problem noticed by people at SIEMENS.
2946         * tests/ASX/Event_Server/Event_Server/Options: Fixed a problem
2947           with the default port numbers (they weren't using the values
2948           from ./include/ace/testconfig.h).
2950         * include/ace/sysincludes.h (MAXNAMELEN): If MAXNAMELEN is not
2951           defined by a platform then ACE sets it to be FILENAME_MAX, 
2952           which should be defined in stdio.h.  Thanks to Todd Blanchard
2953           (tblancha@evolving.com) for this suggestion.
2955 Sun Aug 13 17:02:57 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2957         * libsrc/Service_Configurator/Parse_Node: Changed the name of
2958           Function_Node::symbol (const void *) so that it won't give 
2959           those annoying warnings anymore...
2961         * libsrc/Reactor/Handle_Set: Moved the definition of MSB_MASK from
2962           the header file into a static const within the .C file in order
2963           to avoid overflow problems on certain compilers.
2965         * libsrc/Threads/Synch: Implemented bare-bones versions of
2966           Semaphore and RW_Mutex for the POSIX Pthreads wrappers so that
2967           they'll be more compatible with the Solaris threads wrappers.
2968           The semaphore implementation uses a Condition object and a
2969           Mutex, which should be a reasonable solution.  The RW_Mutex is a
2970           cop-out for now and just uses a Mutex (i.e., no extra
2971           parallelism for readers...).  If anyone has a good
2972           implementation of RW_Mutex that they'd like to share please let
2973           me know.
2975         * libsrc/Threads/Thread_Specific: Fixed the prototypes for copy
2976           constructor and operator=, which were broken...  Thanks to Alex
2977           (alexey@ace.elektra.ru) for noticing this.
2979         * libsrc/Shared_Malloc/Memory_Pool.C: Added some casts to
2980           MAP_FAILED to handle OSF/1.  Thanks to Alex
2981           (alexey@ace.elektra.ru) for noticing this.
2983         * libsrc/Threads/Token: Fixed things so that threads waiting for a
2984           token wouldn't get screwed up by signals that occur...
2986         * include/ace/sysincludes.h: Changed the #ifdef
2987           ACE_SELECT_USES_LONG to ACE_SELECT_USES_INT for HP/UX since
2988           believe it or not, it really does use int, not long!
2990         * libsrc/SV_Semaphores: Fixed some weird problems that the HP/UX
2991           compiler was having when trying to inline methods in this class.
2992           As a consequence, I've rearranged the class to avoid inlining
2993           non-trivial methods.  Thanks to John Morey (jmorey@hitel.com)
2994           for reporting these problems.
2996 Wed Aug  9 01:29:16 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
2998         * libsrc/Threads/Token: Added a tryacquire() method to become
2999           interface compliant with other LOCK mechanisms.
3001 Sat Aug  5 09:18:29 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3003         * libsrc/Connection: Fixed a couple of bugs when using
3004           the Acceptor and Svc_Handler when ACE_OMIT_SERVICE_CONFIGURATOR 
3005           is enabled.  Thanks to Stuart Powell (stuartp@ot.com.au) for
3006           bringing this to my attention. 
3008         * include/ace/sysincludes.h: Added a #ifdef for MAXNAMELEN to
3009           handle systems (like HP/UX) that don't support it.
3011 Thu Aug  3 22:59:13 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3013         * Released new version of ACE 3.2.9...
3015         * libsrc/Reactor/Time_Value.i (normalize): Added new code to
3016           perform normalization of Time_Values.  Thanks to Hans Rohnert
3017           (Hans.Rohnert@zfe.siemens.de) of SIEMENS for the suggestion.
3019 Tue Aug  1 00:19:00 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3021         * Changed all code that used Log_Msg::log() directly to use
3022           LM_ERROR or LM_DEBUG.  This will ensure that logging will work
3023           with the new thread-specific storage implementation.
3025         * libsrc/Threads/Thread_Manager.i (open): Fixed this method so
3026           that it is thread-safe when a Thread_Manager is resized.
3028         * libsrc/ASX/Map_Manager.i (open): Fixed this method so that it is
3029           thread-safe when a Map_Manager is resized.
3031 Mon Jul 31 12:56:17 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3033         * libsrc/Misc/Trace: Reimplemented the ACE Trace class to use the
3034           new thread-specific storage wrapper.
3036         * libsrc/Log_Msg: Reimplemented the Log_Msg class to use the new
3037           thread-specific storage wrapper.  This shouldn't affect any
3038           existing code that was careful to only use the LM* macros...
3040         * libsrc/Threads: Added a new class called Thread_Specific which
3041           implements a C++ wrapper for SunOS 5.x thread-specific data
3042           (this will also work for POSIX pthreads I believe).  Thanks to
3043           Tim Harrison (harrison@cs.wustl.edu) for coming up with the idea
3044           for using C++ "smart pointers" to implement this.
3046         * libsrc/Reactor/Timer_Queue.h: Moved Timer_Node from within
3047           Timer_Queue to outside Timer_Queue and renamed it to
3048           ACE_Timer_Node.  Unfortunately, some compilers still don't like
3049           nested classes (ugh)...
3051         * Changed ACE_Synch_Options to be simply Synch_Options since it
3052           is *not* an ACE private class...
3054 Sun Jul 30 00:07:28 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3056         * include/makeinclude/README: Added a new #define called
3057           ACE_HAS_THREAD_SPECIFIC_STORAGE, which does exactly what it
3058           sounds like!  So far, I know that Solaris defines this.  I'm not
3059           sure which other platforms do (perhaps OSF/1 does?).
3061 Fri Jul 28 14:53:45 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3063         * Fixed a bunch more problems with loop variables that were
3064           uncovered with GCC 2.7.  Thanks to Matt Stevens
3065           (mstevens@ent.mrj.com) for noticing this.
3067         * apps/Logger/Service_Configurator_Logger: Added a new flag called
3068           ACE_HAS_NO_STATIC_DATA_MEMBER_TEMPLATES which is necessary to
3069           workaround bugs with GNU G++...  Thanks to Matt Stevens
3070           (mstevens@ent.mrj.com) for noticing this.
3072         * libsrc/Connection/Connector.C (cleanup_AST): Changed the
3073           parameter list just a tad to try and fix a problem with
3074           G++ (which doesn't seem to like unscoped typedefs in
3075           argument lists or return values.
3077         * libsrc/Misc/Profile_Timer.i: Changed ::getrusage to be getrusage
3078           to avoid problems with macros and scope operators...  
3080         * include/ace/testconfig.h (ACE_DEFAULT_RENDEZVOUS): Changed the
3081           value from /tmp/foo to /tmp/fifo.ace.  Thanks to Neil B. Cohen
3082           (nbc@metsci.com) for suggesting this.
3084 Thu Jul 27 12:30:06 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3086         * apps/TokenServer/server/TokenHandler.C (abandon): Fixed a minor
3087           bug that caused assert() to fail when a client abandoned a
3088           Token.
3090         * libsrc/Reactor: Fixed a bug with the design of the Reactor's
3091           Timer_Queue cancellation mechanism.  The new mechanism is much
3092           more robust since it ensures that timer_ids (used to cancel
3093           pending timers) are unique up to values of greater than 2
3094           billion timers!  As long as timers don't stay around longer than
3095           this there should be no problems with accidentally deleting the
3096           wrong timer.  Thanks to Bill Sears (wsears@world.std.com) for
3097           noticing this problem.
3098           
3099           One nice consequence to this change is that legacy code that
3100           would have broken with the previous change is now 100%
3101           compatible!
3103         * Provided a definition of ACE_Synch_Options::arg(const void *),
3104           which I'd forgotten to define before (darn templates...).
3105           Thanks to Tim Harrison (harrison@cs.wustl.edu) for finding this!
3107         * include/ace/sysincludes.h: Added a total hack to get HP/UX to
3108           understand getrusage().  The trick is to use the following 
3109           undocumented syscall:
3111           #define getrusage(a, b)  syscall(SYS_GETRUSAGE, a, b);
3113           What a hack (but it works...).
3115 Tue Jul 25 13:20:58 1995  Douglas C. Schmidt  (schmidt@kavita.cs.wustl.edu)
3117         * libsrc/Misc/Profile_Timer: Fixed a typo in Profile_Timer.h
3118           (ACE_HAS_RUSAGE_T should have been ACE_HAS_GETRUSAGE).  Thanks
3119           to George Reynolds (george@dvcorp.com) for noticing this.
3121         * Changed all uses of ::getopt() to use the ACE class Get_Opt
3122           get_opt.  Also changed all uses of optarg to get_opt.optarg.
3123           Thanks to Bob Vistica (robertv@ims.com) for detecting and
3124           reporting some inconsistencies in my previous changes...
3126 Mon Jul 24 19:03:03 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3128         * include: I've added config and platform support for SGI IRIX5.3
3129           for use with the SGI C++ compiler.  Thanks to Stuart Powell
3130           (stuartp@ot.com.au) for these config files.
3132         * libsrc/Connection/Acceptor.C (handle_input): Added the
3133           Event_Handler::DONT_CALL flag when removing the Oneshot_Acceptor
3134           from the Reactor so that we don't set it's peer_acceptor_ to -1.
3136 Mon Jul 24 12:46:10 1995  Douglas C. Schmidt  (schmidt@kavita.cs.wustl.edu)
3138         * libsrc/Misc/Profile_Timer: Fixed problems stemming from the fact
3139           that HP/UX doesn't seem to support getrusage() (how odd).
3141         * tests/Connection: a new test directory to test out the Connector
3142           and Acceptor pattern implementations.
3144 Sun Jul 23 12:26:37 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3146         * libsrc/Connection/Acceptor.C: Fixed a minor bug with the 
3147           Oneshot_Acceptor constructor.  Thanks to John Morey
3148           (jmorey@hitel.com) for noticing this and the one below.
3150         * libsrc/Reactor/Timer_Queue: Moved the static method current_time
3151           from the Timer_Queue.i file to the Timer_Queue.C file.  This
3152           avoids a bug with HP/UX C++.
3154 Sat Jul 22 15:54:27 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3156         * Released beta version 3.2.9.  Once this compiles on all major
3157           platforms then it's time to move to version 3.3.
3159         * Added a number of miscellaneous changes for OSF/1 courtesy of
3160           David Trumble (trumble@cvg.enet.dec.com).  One of these changes
3161           involved changing all uses of Reactor::{ADD,SET,CLR,GET} to
3162           Reactor::{ADD,SET,CLR,GET}_MASK in order to avoid a class with
3163           some symbols in OSF/1.
3165 Fri Jul 21 00:21:02 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3167         * Finally was able to test ACE on the SunOS 4.x platform (using
3168           the SunC++ 4.0.1 compiler).  The entire release compiled
3169           correctly!  This is a great relief after fighting with this
3170           stuff for months...  If you are building ACE on SunOS 4.x I'd
3171           *strongly* recommend you get SunC++ 4.0.1 since it is the only
3172           compiler that seems to be able to grok the weirdness of SunOS
3173           4.x...
3175         * Finished updating all the ./tests and ./apps code so that it
3176           works correctly with the new Acceptor/Connector modifications.
3177           To see examples of these changes check out
3178           ./tests/IPC_SAP/SOCK_SAP/CPP-{nbclient,inserver}.C.
3180         * libsrc/Misc/Profile_Timer: Merged in the new Profile_Timer
3181           implementation from David Trumble (trumble@cvg.enet.dec.com).
3182           This will work with basically the same interface as the current
3183           scheme even if the OS platform doesn't support the prusage_t
3184           type...
3186 Thu Jul 20 01:07:23 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3188         * libsrc/Connection: Added a new class called ACE_Synch_Options
3189           which is used in both the Acceptor and Connector classes to
3190           consolidate options related to synchronous and asynchronous
3191           behavior.
3193         * libsrc/Connection: Added a new class called Oneshot_Acceptor.
3194           This class inherits from the Acceptor but it only accepts one
3195           connection at a time (i.e., it doesn't keep itself registered
3196           with the Reactor).  Several examples in the tests/SOCK_SAP
3197           directory have been added to illustrate how all this works.
3199         * libsrc/Connection/Connector: completely redid the Connector and
3200           Acceptor class interfaces to incorporate the new changes for
3201           asynchronous and synchronous behavior.  The new scheme should be
3202           much more general (and correct...).  Thanks to Tim and Irfan for
3203           helping out with this.
3205         * libsrc/Threads/Synch: Fixed the implementation of Recursive_Lock
3206           so that it won't have race conditions when testing the thread id
3207           and nesting level in parallel threads.
3209 Wed Jul 19 13:15:05 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3211         * libsrc/Reactor/Timer_Queue: Added new support for cancellation
3212           of individual Event_Handlers in the Reactor.  In addition, it is
3213           now possible to cancel all Event_Handlers with a single call to
3214           Timer_Queue::cancel().  Note that this new scheme will break
3215           existing code since Timer_Queue::schedule() (and
3216           Reactor::schedule_timer()) now return ACE_Timer_Node *'s rather
3217           than ints...
3219         * libsrc/Service_Configurator/Service_Config: Fixed a problem
3220           where the "-s" option didn't work since it was parsed when
3221           "Service_Config::open" was called
3222           (it sets Service_Config::signum_).  However, previously the
3223           signal handler was already setup by the constructor.  By moving
3224           this registration to the open() method the problem was solved.
3225           Thanks to Bob Vistica (robertv@ims.com) for noticing this.
3227         * libsrc/Service_Configurator/Service_Manager: Changed the
3228           Service_Manager::reconfigure_services to use this->signum_
3229           rather than to hard code SIGHUP.  Thanks to Bob Vistica
3230           (robertv@ims.com) for this insight.
3232 Mon Jul 17 12:08:08 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3234         * libsrc/Threads/Token.C (renew): Fixed a typo so that we compare
3235           this->head_ == 0 rather than this->head_->next_ == 0.
3237         * libsrc/Reactor/Reactor.h: Changed the Reactor to use the
3238           Reactor_Token rather than the pure Token to make sure that the
3239           sleep_hook() is called to unblock the Reactor.
3241 Fri Jul 14 14:12:07 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3243         * libsrc/Connection: Changed the default behavior of the Connector
3244           and Acceptor classes such that they pass a -1 to
3245           svc_handler_->close() when things go wrong.  This is useful as a
3246           flag to close() (e.g., if it needs to figure out what to do if
3247           is shuts down prematurely).
3249         * libsrc/Connection/Svc_Handler.C: Added a default definition of
3250           the put() method, which is defined as a pure virtual method in
3251           class Task.
3253 Thu Jul 13 23:10:35 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3255         * include/ace/sysincludes.h: Added support for the SGI IRIX 5.3
3256           OS.  More screwy gettimeofday() hacks (what a pain...).  Thanks
3257           to Matt Stevens (mstevens@kirk.softeng.infonautics.com) for
3258           these fixes.
3260         * include/makeinclude/platform_sunos5_centerline.GNU: Fixed a
3261           vexing problem that was causing the Centerline C++ compiler to
3262           puke when compiling ACE.  Thanks to Chandra Venkatapathy
3263           (cvenkat@develop.bsis.com) for finding a solution!
3265 Tue Jul 11 00:01:15 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3267         * Released version 3.2.6 for use by Karl and Detlef.
3269 Mon Jul 10 00:28:51 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3271         * apps/TTCP: Added support for benchmarking the performance of
3272           Orbix, ORBeline, ACE SOCK_SAP, and C sockets.  These results are
3273           available at URL http://www.cs.wustl.edu/~schmidt/COOTS-95.ps.Z
3275         * libsrc/Service_Configurator/Makefile: Added new commands to the
3276           Service Configurator Makefile so that all automatically
3277           generated flex and yacc symbols (i.e., the "yy" stuff) is
3278           renamed "ace_yy".  The purpose is to avoid conflicts with other
3279           uses of flex/yacc lexers/parsers with ACE.  Thanks to Steve
3280           Ritter (ritter@titan.com) for this suggestion and code.
3282         * libsrc/IPC_SAP/TLI: Changed the TLI files so they are
3283           conditionally compiled only if the platform supports TLI...
3285         * libsrc/Connection: Changed the inlining strategy of Connector,
3286           Acceptor, and Svc_Handler so that very short methods are always
3287           inlined, but anything larger is never inlined...
3289 Sun Jul  9 14:07:02 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3291         * include/ace/testconfig.h: Changed all occurrences of DEFAULT_*
3292           to ACE_DEFAULT_ to prevent namespace collision.
3294         * libsrc/Connection/Connector: Massively improved the Connector
3295           class so that its connect() method supports the following
3296           behavior (tv == "timeout value" and ur == "use Reactor"):
3298           Parameters      | Description                   
3299                           |                             
3300           tv   |  ur      |                             
3301           -----|----------|-------------------------------
3302                |          |                               
3303           NULL | yes      | infinite timeout (using Reactor)
3304                |          |
3305           time | yes      | try asynch transaction for    
3306                |          | the specified time (using Reactor)
3307                |          |
3308           0,0  | yes      | poll; try, if EWOULDBLOCK,    
3309                |          |       then return immediately
3310                |          |       (using Reactor)
3311                |          |
3312           NULL | no       | block forever (don't use Reactor)
3313                |          |                               
3314           time | no       | do a blocking transaction     
3315                |          | for the specified time
3316                |          | (don't use Reactor)                 
3317                |          |                               
3318           0,0  | no       | poll; but do not initiate a
3319                |          | nonblocking transaction
3320                |          | (don't use Reactor)    
3322         * libsrc/IPC_SAP/SOCK_SAP/SOCK_Connector: Changed the behavior of
3323           the SOCK_Connector::connect() method so that it uses Time_Values
3324           rather than a simple flag that indicates whether or not to use
3325           non-blocking connectors.  The new scheme is an improvement since
3326           it allows greater control over synchronous and asynchronous
3327           timeouts for connection establishment.  This behavior parallels
3328           that of SOCK_Acceptor, as well!  If this works well then I'll
3329           update the TLI_Connector and SPIPE_Connector to match this
3330           interface.
3332         * libsrc: Continued to improve ACE's use of the global name space
3333           by prefixing all "helper" classes with "ACE_"
3335         * Updated SPIPE_Acceptor so that it would have the same basic
3336           interface as the SOCK_Acceptor and TLI_Acceptor.
3338         * libsrc/IPC_SAP: Consolidated the handle_timed_wait() methods
3339           used by the TLI, socket, and STREAM pipe wrappers so that they
3340           share the new ACE::handle_timed_accept() method, which is in
3341           libsrc/Misc.
3343         * libsrc/Misc: Modified the structure of Misc.[Ch].  Originally,
3344           this file contained a bunch of stand-alone C functions with the
3345           prefix "ace_" to keep them from conflicting with user's code.
3346           I've modified things now so that all the miscellaneous functions
3347           are now static methods in class ACE.  This provides better scope
3348           control...
3350         * libsrc/Log_Msg/Log_Msg: Replaced the use of a Mutex in class
3351           Log_Msg with a Recursive_Lock<Mutex>.  This is necessary to
3352           handle signals correctly...
3354         * libsrc/Reactor/Reactor: Modified the behavior of
3355           Reactor::notify() so that writers will block if the pipe is
3356           full.  This solves some nasty flow-control problems.
3358         * libsrc/Reactor/Handle_Set: changed all uses of fd_set to
3359           ACE_FD_SET_TYPE * so that HP_UX would work correctly...
3361         * include/ace/config-hpux.h: Removed the ACE_HAS_XLI flag until I
3362           get a better idea which HP systems this is installed on.
3364         * libsrc/Threads/Thread: Added a new static method called
3365           spawn_n() that spawns "n" threads all running the same function.
3367 Sat Jul  8 14:14:34 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3369         * libsrc/Service_Configurator: Made some miscellaneous changes to
3370           "const" methods and parameters in order to handle the new
3371           Reactor changes (C++ can be such a pain about this
3372           sometimes...).
3374         * libsrc/Threads: Added "yield" and "sigsetmask" methods to class
3375           Thread.  How did I manage to omit these before?!
3377         * libsrc/Reactor: Updated the Reactor to use the new Token class
3378           described below.  This greatly simplies the structure of the
3379           multi-thread support in the Reactor code.  In addition, it
3380           should improve performance because it cuts the number of context
3381           switches compared with the old scheme.  Many thanks to
3382           Karl-Heinz and Detlef for encouraging me to redo the Reactor
3383           implementation.
3385         * libsrc/Threads: Added a new class called Token that provides a
3386           flexible and efficient recursive mutex scheme.  Thanks to
3387           Karl-Heinz Dorn (kdorn@erlh.siemens.de) and Detlef Becker
3388           (beckerd@erlh.siemens.de) for sharing their original code for this.
3390 Thu Jul  6 10:37:45 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3392         * libsrc/Reactor/Event_Handler_T: Conditionally compiled this so
3393           that it will only compile if the compiler supports template
3394           typedefs (e.g., G++ doesn't seem to like this...).
3396         * Started to make changes in ACE to deal with the new ANSI C++
3397           semantics in the scope of variables defined within for loops.
3398           Thanks to Aniruddha Gokhale (gokhale@cs.wustl.edu) for noticing
3399           this in G++ 2.7...
3401 Wed Jul  5 21:50:39 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3403         * libsrc/Connection/Svc_Handler: Fixed the behavior of the
3404           Svc_Handler class so that it can be configured with a Reactor
3405           other than Service_Config::reactor, just like the Acceptor and
3406           Connector.  Thanks to Karl-Heinz Dorn (kdorn@erlh.siemens.de)
3407           for suggesting this!
3409 Tue Jul  4 00:21:31 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3411         * Added some new changes for Linux courtesy of Charles Rennolet
3412           (clr@thurse.mn.org).
3414         * libsrc/Reactor/Reactor.C (bit_ops): Fixed a dumb error in
3415           bit_ops that was caused by checking "else if (Reactor::SET)"
3416           rather than "else if (ops == Reactor::SET)".  Thanks to Mark
3417           Patton (mark_patton@tx72.mot.com) for finding this bug and
3418           reporting it along with the fix.
3420         * include/ace/sysincludes.h: Added new fixes for M_SYNC and
3421           ENOTSUP on SunOS 4.
3423         * libsrc/Reactor: Added new support for integrating X and the
3424           Reactor.  These files are called XtReactor.* and XReactor.*.
3425           Thanks to Eric Vaughan (evaughan@arinc.com) for providing this
3426           stuff...
3428 Mon Jul  3 19:44:07 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3430         * Added support for SunOS 5.5 on i86 PC.  Thanks to Bin Mu
3431           (mubin@wfg.com) for the config files and fixes.
3433         * libsrc/Misc/Profile_Timer: Added new support for versions of
3434           UNIX that don't support prusage_t.  The new version of
3435           Profile_Timer will use gettimeofday() and getrusage() of
3436           prusage_t and /procfs isn't available...  This code hasn't been
3437           tested yet (since I don't have SunOS 4.x) so I don't know if it
3438           works.
3440         * Hopefully fixed the SunOS4 prototype for gettimeofday().  Thanks
3441           to Andrew McGowan (ajm@se09.wg2.waii.com) for the suggested fix.
3443         * include/makeinclude/platform_hpux.GNU (CC): Added new support
3444           for building ACE and shared libraries on HP/UX.  Thanks to Jam
3445           Hamidi (jh1@osi.com) for this code.
3447         * libsrc/Reactor/Handle_Set: Fixed Handle_Set_Iterator::operator++
3448           to check for index to be greater or equal than NUM_WORDS instead
3449           of just equal. This is better for sanity, although it may not be
3450           needed. Thanks to Carlos Garcia Braschi (cgarcia@caramba.tid.es)
3451           for suggesting this fix.
3453 Wed Jun 14 11:16:40 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3455         * libsrc/IPC_SAP/TLI_Acceptor: modified TLI_Acceptor so that it's
3456           public constructor/open() and accept() methods are more similar
3457           to the SOCK_Acceptor.  In particular, added support for
3458           "SO_REUSEADDR" in TLI_Acceptor and time values for accept().
3459           Thanks to John P. Hearn (jph@ccrl.nj.nec.com), TLI_SAP now does
3460           the right thing for socket options.
3462         * libsrc/IPC_SAP: Fixed up the SOCK_Acceptor and TLI_Acceptor in
3463           order to add better support for "timed accepts."  The new scheme
3464           uses Time_Values, which is more consistent with other parts of
3465           ACE.  In addition, the Time_Value was moved from the
3466           constructor/open() to the accept() method, which allows more
3467           fine grained control over this behavior.  Thanks to Irfan
3468           (ip1@cs.wustl.edu) for suggesting this.
3470         * libsrc/IPC_SAP: Cleaned up the SOCK_Acceptor::open and
3471           TLI_Acceptor::open routine.  In addition to being more compact
3472           and robust, this routine now also let's open() determine which
3473           local port to bind to (if you pass in Addr::sap_any as the
3474           local_addr).  Thanks to Irfan (ip1@cs.wustl.edu) for suggesting
3475           this.
3477 Tue Jun 13 16:09:13 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3479         * libsrc/Reactor/Timer_Queue: Fixed an odd problem with the
3480           Timer_Queue on Solaris.  Apparently the select() call will
3481           return slightly earlier than the timeout dictates due to lack of
3482           granularity with the system clock.  This was causing problems
3483           where the Reactor wasn't correctly dispatching the
3484           handle_timeout() method of Event_Handlers.  The fix was to add a
3485           10 Millisec "fudge factor" when calling the
3486           Timer_Queue::expire() method.  Please let me know if this causes
3487           any problems.  Thanks to Giang Hoang Nguyen
3488           (yang@titan.com) to noticing this problem.
3490         * libsrc/Connection/Acceptor: Enhanced the Acceptor class so that
3491           it is possible to accept a new SVC_HANDLER synchronously, rather
3492           than always driving this acceptance out of the Reactor's event
3493           loop.  Thanks to Irfan (ip1@cs.wustl.edu) for suggesting this.
3495         * libsrc/IPC_SAP/Addr: Changed all occurrences of ace_sap_any to
3496           Addr::sap_any (i.e., sap_any is now a static data member in
3497           class Addr).  This is an improvement since it helps to limit the
3498           scope of what would otherwise be global variables...
3500 Wed Jun  7 17:26:31 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3502         * apps/Logger/Reactor_Logger/Client_Acceptor.i (handle_input):
3503           Fixed a braino that omitted an important block of code!  Thanks
3504           to Ken Konecki (kenk@wfg.com) for finding this.
3506 Fri Jun  2 13:59:07 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3508         * libsrc/IPC_SAP/Addr/INET_Addr.i (set): Removed the special case
3509           for INADDR_ANY.  This should just fall right out...
3511 Thu Jun  1 19:45:21 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3513         * libsrc/IPC_SAP/SOCK_SAP/SOCK_Connector: Added support to
3514           SOCK_Connector so that it is possible to bind the local TCP port
3515           number prior to establishing the connection.  Also fixed the
3516           TLI_Connector to be consistent with this approach.  Thanks to
3517           Mark Patton (mark_patton@tx72.mot.com) for this idea.
3519         * Fixed a problem with Mem_Map that was caused by the fact that
3520           some versions of Unix (e.g., SunOS 4.x) don't support MS_SYNC...
3521           Thanks to Andy McGowan (mcgowan@wg2.waii.com) for noticing this.
3523         * Fixed a very stupid bug in ./libsrc/Synch.h that accidentally
3524           omitted this->lock_.acquire() from the Guard class constructor.
3525           Thanks to Bin Mu (mubin@wfg.com) for noticing this!
3527 Fri May 26 13:20:38 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3529         * libsrc/Connection/Acceptor: Added a new method called
3530           make_svc_handler() that generalizes the dynamic creation of a
3531           SVC_HANDLER by the Acceptor's Template Method handle_input().
3532           This scheme is completely backwardly compatible with the
3533           original approach, but now allows transparent extension too!
3534           
3535         * libsrc/Connection/Acceptor: cleaned up the Template Method logic
3536           in Acceptor::handle_input.  No longer do we set the listener
3537           socket into non-blocking mode and then rely on a -1 with
3538           EWOULDBLOCK to indicate there are no more connections to
3539           establish.  This was causing problems for singleton Svc_Handlers
3540           since the Acceptor was setting their peer_stream_ to -1...  The
3541           new approach should complete solve this problem.
3543 Mon May 22 15:10:27 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3545         * Released version 3.2.3 so that Bill Sears can test the new
3546           #include "ace/" features.
3548         * Modified all the ACE source, tests, and apps so that all
3549           #includes of its headers are refixed by ace/, e.g.:
3551           #include <ace/Reactor.h>
3553           There are two reasons for have the include files be of
3554           this form:
3556           First, you can tell at a glance by looking at the caller where 
3557           the library is coming from.  
3559           Secondly, you can build an include tree of the form:
3561                   /include/lib1
3562                   /include/lib2
3563                   /include/lib3 
3564                   /include/ace
3566           which then links to WRAPPER_ROOT.  Now, all you have to do
3567           when you build a make file is point to the include root, and
3568           put links in the include root.  This is especially helpful
3569           if there are multiple versions.
3571           This means just one less thing that has to be modified in the
3572           Makefile.  Thanks to Bill Sears (wsears@world.std.com) for
3573           recommending this change.
3575 Sat May 20 17:12:35 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3577         * config-irix5.3-sgic++.h: Added new configuration support for SGI
3578           IRIX5.3 courtesy of Stuart Powell (stuartp@ot.com.au).
3580 Sat May 13 20:44:06 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3582         * Generalized the SOCK_Connector::complete method so that it takes
3583           a Time_Value timeout.  This allows applications to wait upto a
3584           certain limit before giving up on a non-blocking connection.
3585           Updated the tests in ./tests/IPC_SAP/SOCK_SAP/CPP-inclient.C to
3586           illustrate how this is used.
3588         * Added some interesting new tests to ./tests/Mem_Map that can be
3589           used to benchmark the performance of various strategies (e.g.,
3590           stdio, read/write, mmap, etc.) for copying files.
3592 Fri May 12 19:09:10 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3594         * libsrc/Mem_Map/Mem_Map: Added two new overloaded methods called
3595           sync() that are wrappers around the msync(3c) system call.  Also
3596           added a new unmap() method that gives access to the full
3597           behavior of munmap(3c).
3599 Wed May 10 14:16:16 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3601         * Tried yet another fix for the gettimeofday() botch that both
3602           Centerline and SunOS 5.4 screw up in different ways.  Thanks to
3603           Medhi Tabatabai (Mehdi.Tabatabai@ed.nce.sita.int) for the latest
3604           fixes.
3606 Tue May  9 19:05:58 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3608         * libsrc/Reactor/Handle_Set.C: Fixed some "off-by-one" errors that
3609           were occurring in the Handle_Set::sync() and set_max() methods.
3610           Thanks to Nigel Hooke (n.hooke@trl.oz.au) for finding and fixing
3611           these.
3613 Mon May  8 02:01:54 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3615         * libsrc/Reactor/Reactor.C: Moved the Null_Callback class from
3616           being nested within the Reactor class to outside the Reactor
3617           class.  This fixes a problem with the SIG compiler.
3619         * Released version 3.2.2.
3621         * libsrc/Reactor/Signal.C: Made the Signal_Handler class
3622           thread-safe as well as signal-safe.
3624         * libsrc/Reactor/Reactor.C: Modified the new Reactor
3625           implementation slightly to handle signals correctly.
3627         * libsrc/Threads/Synch.h: Added a new conversion operator to
3628           Recursive_Lock that returns the underlying LOCK in case we need
3629           it for something (e.g., to initialize a Condition object).
3631 Sun May  7 04:17:46 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3633         * libsrc/Reactor/Reactor.C: Finished what I hope will be the last
3634           set of changes to make the Reactor robust in multi-threaded
3635           programs in situations where separate threads are used to
3636           register and remove handlers.  The final solution is elegant in
3637           that it does not significantly penalize the performance of
3638           programs that do not use separate threads to register and remove
3639           handlers.  Moreover, if you compile without the ACE_MT_SAFE flag
3640           the Reactor will not include additional state information
3641           related to the multi-threaded implementation.
3642           
3643         * libsrc/Threads/Synch.h: Subclassed the Guard class to make a new
3644           class Try_Guard that uses tryacquire() to obtain a LOCK.
3646 Fri May  5 18:43:50 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3648         * Released version 3.2.1
3650 Thu May  4 19:43:01 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3652         * libsrc/IPC_SAP/TLI_SAP/TLI_Connector.C (connect): Fixed a
3653           problem whereby a t_bind() was being done twice.  Since I didn't
3654           write this code I don't know if my fix will work generically on
3655           all platforms supporting TLI.  Please let me know if there are
3656           any problems.
3658 Tue May  2 17:21:53 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3660         * libsrc/Reactor: Added a new notification feature that allows
3661           multiple threads of control to enqueue Event_Handler * to the
3662           main Reactor thread via the pipe used to wake up the main
3663           Reactor thread.  The Reactor will call the handle_exception()
3664           method on Event_Handler with a HANDLE == -1 to notify the
3665           handler.  This feature is very useful if you need to have
3666           certain operations (such as handler termination) performed in
3667           the main thread.
3669 Tue Apr 25 00:34:18 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3671         * libsrc/Reactor: Fixed a stupid pair of typos in the Reactor that
3672           failed to cast arguments to the pipe to char *.
3673           
3674         * libsrc/Connection: Fixed a portability problem with the
3675           Connector: we can't use RW_Mutex for synchronization since not
3676           all platforms support threads.  The quick fix is to use
3677           Null_Mutex, but a better long term approach is on the way!
3679         * Released version 3.2.
3681         * Added richer support for the TLI_Connector to make it work
3682           better with protocols other than TCP/IP.  Thanks to Mats
3683           Sundvall (sundvall@perrier.embnet.se) for these enhancements.
3685 Mon Apr 24 02:26:04 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3687         * Changed the SOCK_Dgram_Brdcast class name to SOCK_Dgram_Bcast
3688           and the SOCK_Mcast to SOCK_Dgram_Mcast to be more consistent.
3690         * Massively improved the Reactor's support for multi-threading.
3691           There was actually a major problem in previous versions of ACE
3692           that used poll() as the underlying event demultiplexor.  Poll()
3693           produced incorrect results when the Reactor::handle_events()
3694           method was run in one thread, but another thread came along and
3695           registered or removed an Event_Handler.  The new version fixes
3696           this problem so that the Reactor will now work correctly in
3697           multi-threaded programs.
3699           One consequence of this change is that sysincludes.h and the
3700           SunOS 5.x configuration files have been changed so that poll()
3701           is no longer used as the default demultiplexor.  The reason is
3702           that poll() doesn't work as efficiently when used in
3703           multi-threaded programs (ugh).  See the Reactor code for
3704           examples of how this all works now.  Basically, the trick is to
3705           use the select()-style implementation for most of the code, and
3706           transform to poll()-style implementation only when necessary.
3708 Sat Apr 22 03:35:51 1995  Douglas C. Schmidt  (schmidt@lambada.cs.wustl.edu)
3710         * libsrc/ASX/Message_Queue: Added a new method to the
3711           Message_Queue class called unblock().  This method allows one
3712           thread to release all other threads that are waiting for
3713           messages to be enqueued or dequeued on a Message_Queue.
3714           Modified the return value of methods like enqueue_head() and
3715           dequeue_head() so that if a thread unblocks() then these methods
3716           return -1 with errno == ESHUTDOWN.  Also changed the name of
3717           some of the internal methods so that they would be more
3718           consistent.
3720         * libsrc/Connection/Connector: Fixed a stupid bug caused by
3721           failing to have a destructor for Connector.  Thus, there are
3722           cases where unconnected Svc_Handlers are left around in the
3723           handler_map_.  This causes problems for dynamic linking in
3724           conjunction with the Reactor, so now the destructor iterates
3725           through all the unconnected Svc_Handlers and removes them from
3726           the Reactor.
3728 Fri Apr 21 15:28:46 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3730         * libsrc/Reactor/Signal: Changed Sig_Set::addset() and
3731           Sig_Set::delset() to the more appropriately named sig_add() and
3732           sig_del().  Also added '_' in the Sig_Set method names to be
3733           more consistent...
3735         * Removed the ./libsrc/IPC_SAP/SOCK_SAP/misc.[hC] file and merged
3736           the one function in that file (ace_bind_port) into
3737           ./libsrc/Misc/Misc.[hC].
3739         * Added a bunch of fixes from various people to make ACE compile
3740           better on SGI, SunOS 4, and HP/UX.  Thanks for all the fixes!
3742         * libsrc/IPC_SAP/Addr: Changed sap_any to ace_sap_any to avoid
3743           problems with the namespace.
3745         * Added a new portability flag that only compiles the SOCK_Mcast.*
3746           stuff if the platform supports multicast!
3748         * ./libsrc/Shared_Malloc: Fixed some portability bugs with
3749           Memory_Pool.C and added new support for SunOS 4.x running SunC++
3750           4.x.  Thanks to Steve Warwick (swarwick@arinc.com) for this
3751           strategic help.
3753 Wed Apr 19 09:05:43 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3755         * Fixed up the ./libsrc/CORBA_Handler so that it will correctly
3756           compile on platforms that don't have Orbix...
3758         * libsrc/Misc: added a new "Simple String" class called SString.
3759           This is not really meant to be used by end-user applications.
3760           It is used by certain portions of ACE that need to have
3761           operator== and operator!= defined on a string (e.g., the
3762           Token_Server and the Orbix Event_Comm components that use the
3763           Map_Manager).
3765 Tue Apr 18 00:09:31 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3767         * libsrc/ASX: Fixed a stupid bug in Task::activate() that didn't
3768           spawn a thread if the Thread_Manager was NULL...
3770 Sat Apr 15 19:39:30 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3772         * libsrc/Reactor: Added a new class to the Reactor called
3773           Event_Handler_T.[hi].  This class makes it easy to integrate
3774           existing classes into the Reactor framework without requiring
3775           them to inherit from Event_Handler directly.  This technique is
3776           a superset of the DEF_TIE approach used by IONA in Orbix as one
3777           of the ways to combine an existing class (that doesn't know
3778           anything about CORBA) with a CORBA interface.  Thanks to Greg
3779           Lavender
3780           (g.lavender@isode.com) for the suggestion.
3782 Fri Apr 14 14:41:49 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3784         * Run catman on the ./man directory so that it now has a windex
3785           file.  This facilitates "man -k".
3787 Thu Apr 13 23:39:22 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3789         * libsrc/Reactor: Made the Reactor be a stand-alone component that
3790           does not require any other ACE libraries.
3792         * Added two new methods to the Reactor so that you can now
3793           register or remove a set of HANDLEs in a single call.  Thanks to
3794           Bill Sears
3795           (wsears@world.std.com) for this suggestion.  Basically, now you
3796           can register or deregister a set of n HANDLEs with one operation
3797           (rather than doing n register_handler () or n remove_handler
3798           ()).
3800         * include/sysincludes.h: Changed the name of the macro MT to
3801           ACE_MT and DB to ACE_DB to avoid polluting the namespace.
3803 Wed Apr 12 11:14:46 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3805         * libsrc/Reactor/Reactor.C (close): Added code to close down the
3806           pipe handles when the Reactor is shut down.  Thanks to Mark
3807           Patton (mark_patton@tx72.mot.com) for this info.
3809 Fri Apr  7 18:33:30 1995  Douglas C. Schmidt  (schmidt@siesta.cs.wustl.edu)
3811         * Added a new method to CORBA_Handler so that handlers don't need
3812           to subclass from CORBA_Handler, but rather can call the
3813           CORBA_Handler::register_service() method (which is static).
3814           Thanks to Chris Tarr (ctarr@objectspace.co) for this suggestion.
3816 Mon Apr  3 13:09:45 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3818         * Added a new static method to Service_Config.[hC] called
3819           end_event_loop().  This can be used to stop the run_event_loop()
3820           method of the Service_Config.  In addition, all the methods in
3821           Service_Config were changed to be static to emphasize the fact
3822           that the Service Configurator is a singleton...
3824         * include/Trace.h (ACE_TRACE): Changed the macro T to ACE_TRACE.
3825           This will prevent namespace pollution.
3827         * Added support for the Orbix CORBA implementation.  If you don't
3828           have Orbix, you'll need to remove this flag from the
3829           config-sunos5-sunc++.4.x.h file if you are compiling on SunOS
3830           5.x.
3832 Sun Apr  2 01:12:19 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3834         * Added new support for C++ wrappers around the IP multicasting.
3835           There are three new files in ./libsrc/IPC_SAP/SOCK_SAP called
3836           SOCK_Mcast.[hiC] and a new test directory in
3837           ./tests/Reactor/multicast and ./tests/Reactor/ntalker to
3838           illustrate how to use this stuff.  Thanks to Tim Harrison
3839           (harrison@cs.wustl.edu) for this code.
3841 Sat Apr  1 18:48:40 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3843         * Added support to the libsrc/Shared_Malloc/Memory_Pool.[hC] class
3844           for System V shared memory, as well as for mmap(2) and sbrk(2)
3845           memory.  Please note that this has not been extensively tested
3846           yet, so use with caution...
3848 Thu Mar 30 21:50:00 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3850         * libsrc/Misc/Atomic_Op: Added the postfix versions of the ++ and
3851           -- operators.  This stops the Sun CC compiler from griping about
3852           the "anachronistic" usage when using a++ rather than ++a.
3853           Thanks to Bruce Worden <bruce@betsy.gps.caltech.edu> for the
3854           suggestion.
3856 Wed Mar 29 22:26:37 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3858         * libsrc/Reactor/Handle_Set: Fixed a weird problem where I was
3859           using NOFILE as the max number of descriptors rather than
3860           FD_SETSIZE.  I don't know why I was doing this.
3862         * Also fixed up a problem with Handle_Set that was causing the
3863           iterator to go nuts when it got a strange initial value of
3864           fd_set in Handle_Set.  Orbix triggers this kind of nonsense in
3865           some cases...
3867 Tue Mar 28 21:01:36 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3869         * libsrc/Reactor/Reactor.C: swapped the order of dispatching so
3870           that handle_exception methods are dispatched before handle_input
3871           methods to improve response time for exceptions (e.g., OOB
3872           data).  Thanks to Detlef Becker
3873           (beckerd@erlh.siemens.de) for suggesting this.
3875         * Fixed a bug in ./ASX/Stream.i that caused problems when a Module
3876           was popped off a Stream.  Thanks to Paul Stephenson for noticing
3877           this and sending me the fix.
3879         * Changed the Reactor::dispatch methods so that they dispatch the
3880           timers *before* dispatching the I/O-based event handlers.  This
3881           is helpful for systems that are time-delay sensitive.
3883         * libsrc/Reactor/Time_Value: Added new += and -= operators to
3884           Time_Value.  Thanks to Alex V. Maclinovsky
3885           (garyh@teleng1.tait.co.nz) for this suggestion.
3887 Thu Mar 23 15:38:23 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3889         * libsrc/IPC_SAP/Addr/SPIPE_Addr.i (set): Fixed a problem that the
3890           HP/UX compiler had with complex arithmetic expressions.
3892         * libsrc/Service_Configurator: fixed up the Service_Configurator
3893           source code so that it will compile correctly on HP/UX
3894           platforms.
3896 Tue Mar 21 00:28:25 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3898         * libsrc/IPC_SAP/SOCK_SAP/LSOCK_Connector.h: Fixed an amazingly
3899           stupid bug with LSOCK_Connector, where I was passing in a
3900           default argument of PF_INET instead of PF_UNIX... Arrgh!
3902 Mon Mar 20 20:24:29 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3904         * Fixed up the $WRAPPER_ROOT/include/makeinclude/ directory to
3905           define a new set of platform-specific configuration files.  This
3906           should greatly improve the portability of ACE to different
3907           OS/compiler platforms.
3909         * Added a bunch of changes to allow ACE to build with Lucid C++ on
3910           SunOs 4.x.  This should also fix some other problems we've been
3911           having with SunOS 4.x.  Thanks to Lee Baker (baker@ctis.af.mil)
3912           for these changes.
3914 Sun Mar 19 00:34:30 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3916         * Added manual pages for all of the ./libsrc libraries.  These
3917           manual pages are all generated automagically from the libsrc
3918           header files.
3920 Sat Mar 18 10:48:46 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3922         * Finally broke down and fixed the Makefile scheme so that there
3923           is just one shared library (libACE.so) and one archive library
3924           (libACE.a).  This should massively simplify the application
3925           development process, though it may require a bit of fixing of
3926           Makefiles to remove all the -lReactor -lIPC_SAP stuff that was
3927           in there before.
3929         * libsrc/IPC_SAP/TLI_SAP/: Fixed a stupid bug that was causing
3930           core dumps since the TLI option pointers weren't initialized to
3931           0 in the TLI::TLI constructor.  Thanks to Ed Brown for noticing
3932           this (eebrown@netcom.com).
3934 Wed Mar 15 00:08:19 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3936         * Added some new fixes to get ACE to run on OSF1 and Linux.
3938 Tue Mar 14 13:36:31 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3940         * Added several changes to the source code and config-hpux.h
3941           configuration file based on comments from Alex Ranous
3942           (ranous@nsa.hp.com).  In particular, changed ACE_HAS_NO_FDSET to
3943           ACE_SELECT_USES_LONG. 
3945 Mon Mar 13 09:23:58 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3947         * Improved the Makefile scheme so that the use of PTDIRS is no
3948           longer required.  The trick was to link the appropriate template
3949           *.C files into the WRAPPER_ROOT/include directory.  This enables
3950           the compiler to find them in one single place.
3952 Sun Mar 12 22:35:50 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)
3954         * Added a new mechanism to clean up the insane number of -D's in
3955           the Makefile.  This new mechanism requires a bit more work at
3956           installation time, but should greatly reduce the effort during
3957           normal software development
3958           (once ACE is installed...).  See the INSTALL file 
3959           for more details.
3961 Fri Mar 10 17:29:02 1995  Douglas Schmidt  <douglas@gtcterminator>
3963         * Fixed a stupid bug in Map_Manager.i which wasn't correctly
3964           setting default values for fields in one of the Map_Manager
3965           constructors.
3967 Fri Mar 10 08:54:42 1995  Doug Schmidt  <douglas@gtccipher>
3969         * /libsrc/Connection/Acceptor.i: Fixed a potential memory leak in
3970           handle_input().
3972 Thu Mar  9 11:59:54 1995  Doug Schmidt  <douglas@gtccipher>
3974         * Changed the Map_Manager::find() method to use class Read_Guard
3975           so that multiple finds may proceed in parallel on a multiple
3976           threaded application.  Likewise, changed the implementation of
3977           bind() and unbind() to use class Write_Guard so that destructive
3978           operations will be serialized correctly.  One consequence of
3979           this is that RW_Mutex must be used instead of Mutex...
3981         * Added a new overloaded Map_Manager::unbind() method with an
3982           INT_ID parameter.  This parameter that passes back a reference
3983           to the internal id being unbound.  This allows the caller to
3984           clean up any dynamic memory associated with the INT_ID.
3986 Tue Mar  7 13:32:17 1995  Doug Schmidt  <douglas@gtccipher>
3988         * Changed a bunch more things to get ACE to compile with
3989           Centerline C++.  This should also make ACE more portable to
3990           other cfront-based compilers.
3992         * Had to change the ASX source in ACE to work around a stupid
3993           problem with templates in cfront-based C++ compilers.
3994           Fortunately, it was possible to mask most of the problems using
3995           the C++ preprocessor.
3997         * There seem to be some problems with cfront-based compilers (such
3998           as centerline).  They don't like the new SYNCH::MUTEX usage in
3999           the Message_Queue.
4001         * Removed several unused local variables in the INET_Addr::set()
4002           method.
4004 Wed Mar  1 00:35:11 1995  Douglas C. Schmidt  (schmidt@tango)
4006         * Added a major performance boost on high-speed networks.  It
4007           turns out that send(3) and revc(3) are slower than write(2) and
4008           read(2) (since the latter are system calls, and the former are
4009           library calls.  Therefore, I added new overloaded methods to
4010           SOCK_IO so that write(2) and read(2) are available to the user!
4012 Tue Feb 28 10:13:09 1995  Douglas C. Schmidt  (schmidt@tango)
4014         * libsrc/Reactor/Reactor.C: Fixed the implementation of the
4015           Reactor::open and Reactor::Reactor constructor so that it is now
4016           possible to resize the size of the Reactor *after* the
4017           constructor has run (by calling open()) *without* having to shut
4018           down the Reactor first.
4020         * Modified the Reactor::attach() method so that it will ADD the
4021           new bits to the bitmask rather than SET them.  Thanks to Mark
4022           Patton for recommending this
4023           (mark_patton@tx72.mot.com).
4025 Sat Feb 25 15:08:04 1995  Douglas C. Schmidt  (schmidt@tango)
4027         * Released version 3.0.5.
4029 Fri Feb 24 17:57:01 1995  Douglas C. Schmidt  (schmidt@tango)
4031         * Used the OSE class2man scripts to generate UNIX manual pages for
4032           IPC_SAP, Thread, Connection, and Reactor.  Other manual pages
4033           will be forthcoming...
4035         * libsrc/IPC_SAP/Addr/INET_Addr.i: Fixed a bug in one of the
4036           INET_Addr::set() methods that caused a segmentation fault if
4037           host_name was NULL.  In addition, greatly cleaned up the code so
4038           that all the "set" methods share a common basis of code.
4040 Tue Feb 21 19:32:28 1995  Douglas C. Schmidt  (schmidt@tango)
4042         * Updated the entire release to use the new SYNCH template
4043           interface for Task, Module, Stream, and Message_Queue.  This is
4044           *much* cleaner, though it reveals some bugs with the Sun C++
4045           templates facility.
4047 Mon Feb 20 22:46:14 1995  Douglas C. Schmidt  (schmidt@tango)
4049         * Changed the SPIPE_SAP, SOCK_SAP, and TLI_SAP *Connector class
4050           methods from open() to connect().  This is a more accurate name
4051           and it also fits in nicely with the Acceptor::accept() method.
4053         * Started integrating new versions of various header files that
4054           include hooks to automatically generate documentation.
4056 Tue Feb 14 20:52:13 1995  Douglas C. Schmidt  (schmidt@tango)
4058         * Changed the order in which the Reactor dispatches descriptors.
4059           Originally, it dispatched the "read" descriptors *before* the
4060           "write" descriptors.  Now, it dispatches the "write" descriptors
4061           first.  This was necessary to handle weird behavior of sockets
4062           over TCP/IP when data is piggy-backed with the final ACK on a
4063           non-blocking connection.
4065 Mon Feb 13 15:49:21 1995  Douglas C. Schmidt  (schmidt@tango)
4067         * Changed the name of Event_Handler::get_fd() to
4068           Event_Handler::get_handle() to be more consistent with other
4069           usage in ACE.
4071 Sat Feb  4 22:47:34 1995  Douglas C. Schmidt  (schmidt@tango)
4073         * libsrc/Service_Configurator/Service_Object: changed the
4074           destructor to be virtual (thanks to Steffen Winther Sorensen
4075           <sts@dad.stibo.dk> for noticing this).
4077 Sat Jan 28 16:29:49 1995  Douglas C. Schmidt  (schmidt@tango)
4079         * Changed the name of class Map_Manager's Search_Structure struct
4080           to Map_Entry.  This is more specific to what that data structure
4081           really does.
4083         * Began adding support for Linux, courtesy of sts@dad.stibo.dk.
4085 Sun Jan 22 23:15:38 1995  Douglas C. Schmidt  (schmidt@tango)
4087         * Changed the name of the ./libsrc/Connector-Acceptor directory to
4088           ./libsrc/Connection.  Also changed the name of libConn_Acc.so to
4089           libConnection.so to be more consistent.
4091 Sat Jan 21 13:59:18 1995  Douglas C. Schmidt  (schmidt@tango)
4093         * libsrc/IPC_SAP: Fixed the *Acceptor classes for SOCK_SAP and
4094           SPIPE_SAP so they behave just like FIFO_SAP and contain a method
4095           called remove().  This method closes the underlying descriptor
4096           and also unlinks the local address from the file system.
4098         * libsrc/ASX/Message_Queue.i (copy): Fixed this code so that it
4099           correctly stores starting at the wr_ptr rather than the rd_ptr.
4100           Thanks to Chris Cleeland
4101           (chris@milo.st-louis.mo.us) for pointing this out
4102           to me.
4104 Wed Jan 11 13:07:19 1995  Douglas C. Schmidt  (schmidt@tango)
4106         * Changed all uses of class Thr_Manager to class Thread_Manager
4107           and class Thr_Cntl to Thread_Control.  This is more readable and
4108           is now consistent with the documentation...
4110 Tue Jan 10 13:49:31 1995  Douglas C. Schmidt  (schmidt@tango)
4112         * Modified the makefile scheme so that only the *.so files are
4113           built by default.  If you want to build both *.a and *.so files,
4114           uncomment out the lines described in
4115           $WRAPPER_ROOT/include/makeinclude/rules.lib.GNU.  Note that this
4116           will require you to run make on the ./libsrc directories twice
4117           in order to properly build and install both the *.a and *.so
4118           libraries.
4120 Mon Jan  9 22:57:29 1995  Douglas C. Schmidt  (schmidt@tango)
4122         * libsrc/Reactor/Signal.h: Changed the name of the Signal_Block
4123           class to the Signal_Guard class to be more consistent with the
4124           Guard class in Synch.h.
4126 Sat Jan  7 19:49:46 1995  Douglas C. Schmidt  (schmidt@tango)
4128         * tests/ASX/Event_Server/Event_Server: Revised the Event Server
4129           test example to use the Acceptor pattern components.
4131 Fri Jan  6 23:38:21 1995  Douglas C. Schmidt  (schmidt@tango)
4133         * Added a new method to class Task that turns a task into an
4134           active object (i.e., associates a thread of control with the
4135           task).  This is useful since it replaces all the places in
4136           application code that original said "this->thr_mgr_.spawn
4137           (THR_FUNC
4138           (&this->svc_run))", etc...
4140 Thu Jan  5 21:05:15 1995  Douglas C. Schmidt  (schmidt@tango)
4142         * libsrc/ASX: Changed the capitalization of class STREAM to class
4143           Stream.  This seems more reasonable since I don't see any
4144           particular reason to shout about Streams!
4146         * libsrc/ASX/Task: Changed name of method qreply() to reply() to
4147           reflect the fact that the name of the class is no longer Queue!
4148           
4149         * libsrc/ASX: Made both Task and Message_Queue into parameterized
4150           types.  This greatly improves the ability to parameterized
4151           synchronization into an application.
4153         * Changed all occurrences of timestruc_t to use Time_Value
4154           instead.  This helps to improve portability and reduce the
4155           "impedence mismatch" caused by mixing both C and C++ types in
4156           the ACE interfaces.  Note that one drawback of this is that we
4157           lose nano-second timing accuracy.  However, I don't know of any
4158           real OS platforms that support that degree of precision anyway!
4160         * libsrc/Reactor: Moved the static "zero" data member from the
4161           Timer_Queue class to the Time_Value class.  Also added a new
4162           static data member called "zerop," which is a pointer to "zero".
4164         * libsrc/Threads/Synch: Changed the interface of class Condition
4165           so that it no longer has both wait() and a timedwait() methods.
4166           Since C++ has default values, these two methods were redundant.
4167           Now, there is only a single method called wait().  By default,
4168           it's argument is 0, which defaults to the original wait()
4169           semantics.  If the argument is non-zero then the timewait
4170           semantics apply.
4172         * libsrc/Threads/Synch: Added a new class called Null_Condition.
4173           This is similar to the Null_Mutex class in the sense that it has
4174           the same interface as class Condition, but it's methods are all
4175           no-ops
4176           (however, wait() and signal() both set errno = ETIME
4177           before returning...).  This class is useful for
4178           parameterizing synchronization into an application.