Sun Dec 31 01:02:01 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/OS (mmap): Added a new parameter to the argument list for
	  mmap().  This parameter is an ACE_HANDLE * and is used in the
	  Win32 implementation, which requires CreateFileMapping to open a
	  new HANDLE.  This handle is passed back to the caller, which is
	  then responsible for freeing it...  I'll probably need to modify
	  the ACE_Mem_Map class to manage this new handle for the WIN32
	  version.

	* ace: Updated all the SPIPE files in preparation to porting them
	  to Windows NT, where they will be implemented using Win32 Named
	  Pipes!

	* ace/Typed_SV_Message: Fixed a mysterious braino where the method
	  definitions for Typed_SV_Message were actually within
	  Typed_SV_Message_Queue.cpp.  I'm not sure why this happened, but
	  it's clearly been this way for eons...  Also, changed the name
	  of the method "max" to "max_size" to avoid conflicts with macros
	  on Windows NT...

	* ace: Added a new config symbol: ACE_HAS_SYSV_IPC.  If this is
	  *not* set (e.g., Win32) then don't try to compile any of the
	  System V IPC mechanisms (e.g., shared memory, message queues,
	  semaphores).

	* ace/Malloc: Reimplemented the Malloc-family to factor out common
	  code.  Also added a new method called "trybind" which atomically
	  tries to bind a new void *pointer to a char *name.  If there is
	  no name with the same value, the bind succeeds.  Otherwise, the
	  bind "fails", but returns the existing pointer.

	* ace/Map_Manager: Reimplemented the Map_Manager to factor out
	  common code.  Also added a new method called "trybind" which
	  atomically tries to bind a new int_id to an ext_id.  If there is
	  no ext_id with the same name, the bind succeeds.  Otherwise, the
	  bind "fails", but returns the existing int_id.

	* ace/Memory_Pool.cpp: Commented out all the diagnostic messages
	  in the various ACE_*_Memory_Pools.  Now that we're actually
	  using this within ACE, they were distracting.

	* ace/CORBA_Handler.cpp (ACE_ST_CORBA_Handler): Gave iterations_
	  an initial value of "5" for backwards compatibility.  Thanks to
	  Irfan for doing this.

	* ace/Map_Manager.cpp (ACE_Map_Manager): Fixed some more braino in
	  the constructors of Map_Manager.  During the recent changes I'd
	  forgotten to initialize the Map_Manager's instance variables to
	  0.  Thanks to Irfan for finding this out the hard way... ;-)

	* ace/OS.i (gettimeofday): Added a WIN32 implementation of
	  gettimeofday.  This is pretty nasty, but it should centralize
	  all of this processing in one place in ACE!

Sat Dec 30 00:50:20 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/Timer_Queue: Removed the current_time() method from the
	  Timer_Queue class.  All uses will be replaced with calls to
	  ACE_OS::gettimeofday().  Not only does this factor out more
	  code, but it is also reentrant!

	* ace/ACE.cpp (handle_timed_accept): Consolidated code so that
	  select() is always used, rather than poll().

        * ace: Generalized the ACE file locking wrappers (both at the
	  Synch-level and the ACE_OS class level) to enable them to lock
	  arbitrary regions (aka "records") of a file.  Before, they could
	  only lock the entire file (which remains the default behavior).
	  This new behavior works for both NT and UNIX.

	* ace/Synch: Removed the definition and use of the
	  ACE_SYNCH_ERROR_RETURN macro from all the ACE Synch* methods.
	  This behavior has been integrated into the ACE_OS class instead
	  since it cleans up lots of code that would otherwise have been
	  hard to write.

	* ace/INET_Addr.cpp (get_host_name): Fixed a bug that arose by
	  trying to use the reentrant version of gethostbyaddr all the
	  time.  In order to fix this, I've added a new get_host_name()
	  method that allows the caller to supply a buffer for the
	  hostname.

	* ace: Cleaned up all the POSIX_TIMER junk that permeated ACE.
	  Now all platforms will have the POSIX timer structures (e.g.,
	  timestruc_t and timespec), though only those that actually
	  support nano-second timing will be able to do anything useful
	  with this...  As part of this cleanup, the poll, select, and
	  cond_timedwait method in ACE_OS now take ACE_Time_Value * rather
	  than int, timeval *, and timestruc_t, respectively.  This
	  *greatly* cleans up the clutter throughout the rest of ACE.

	* ace/ACE: Added two new methods called tv2msec and msec2tv that
	  converts ACE_Time_Value format into millisecond format and vice
	  versa.  This will make it easier to port code between NT and
	  UNIX.

	* ace/Reactor: Removed the code in the Reactor that previously
	  allowed it to be resized after it had been initialized.  This
	  code no longer was used due to the recent enhancements that
	  ensure the Reactor is only initialized once per-process.

	* ace/Reactor: Modified the Reactor so that it now compiles on NT.
	  It doesn't work yet, but at least it compiles!

	* ace/Reactor: Moved the "max3" method from the Reactor to OS.h,
	  where it has become a template function usable throughout ACE.

	* ace/OS.cpp: Added extern "C" before the NT implementations of 
	  readv() and writev().

	* ace/OS.i: Fixed the declaration of ::readv() and ::writev() for
	  cases where the OS doesn't provide them natively.

	* ace/Event_Handler: Modified handle_signal() to take an int
	  rather than an ACE_HANDLE.  The old way broke under NT...

	* ace: Made lots of minor changes to resolve signed int
	  vs. unsigned int mismatches.  Thanks to the MSVC++ 4.0 compiler
	  for pointing these out.  At least it's good for
	  something... ;-).

Fri Dec 29 15:01:10 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/ACE.cpp (handle_timed_accept): Reimplemented the core
	  select() loop to make the code portable to Win32.

	* ace/Map_Manager.cpp (ACE_Map_Manager): Fixed a minor bug caused
	  by recent changes (forgot to initialize max_size_ in the
	  constructor...).

	* Updated all the manual pages to reflect the latest changes.

	* ace/ACE.cpp: Fixed up the ACE class so that all of the methods
	  should compile on both Windows NT and UNIX!

	* ace/OS: Moved the get_file_size() method from class ACE and put
	  it into class ACE_OS, where it's been renamed to filesize().
	  This is really more of an "OS" function, e.g., it's supported on
	  Win32 directly.

	* ace/OS.cpp: added readv() and writev() implementations for those
	  platforms (e.g., Windows NT) that require them.

	* ace/Makefile: Added a new regex to the Svc_Conf_l.cpp target
	  that will substitute <stdio> for <unistd>.  This should solve a
	  portability problem with Windows NT...

	* ace/Malloc: Modified the sync() and protect() methods to use
	  void * rather than char *.  This is now consistent with the OS
	  classes.

	* ace/OS: Changed things so that all the mmap() related OS
	  wrappers use void * in their external interface.  Any
	  discrepancies between platforms are now dealt with internally,
	  in the implementation of the methods.  Thanks to Chris Lahey
	  (clahey@ix.netcom.com) for suggesting this.

	* ace/Local_Name_Space: Modified how ACE_NS_String is used to
	  instantiate ACE_Map_Manager in order to work around problems
	  with AIX C++.  Thanks to Chris Lahey (clahey@ix.netcom.com) for
	  reporting this.

	* ace/Synch.i: Added a definition for ACE_RW_Mutex::acquire().

Fri Dec 29 00:34:16 1995 Chris Lahey (clahey@ix.netcom.com)

        * ace/OS.h: Changed the #ifdef for ACE_HAS_COMPLEX_LOCKS to
	  ACE_HAS_COMPLEX_LOCK.
	
  	  Changed prototypes for ACE_OS:mprotect(), msync(), and munmap()
	  to accept ACE_MMAP_TYPE for their first arg.  The AIX versions
	  of these calls all expect void * for their pointer variable.
	  Note that madvise() takes a caddr_t for its 1st arg and
	  therefore does not need to be altered.  (See related changes in
	  OS.i and Mem_Map.i)

	  Changed prototype for ACE_OS::getsockname(), arg3 to int * (See
	  related change in OS.i)

	  Changed prototype for ACE_OS::setsockopt(), arg4 to const char *
	  and arg 5 to int (See related change in OS.i)

	* ace/OS.i: Changed function definition for ACE_OS::mprotect(),
	  msync(), and munmap() to accept ACE_MMAP_TYPE as their 1st arg.

	  The following changes relate to the inconsistencies in the
	  sockets calls on AIX.  I thought it would make more sense to
	  leave the public interfaces alone and then handle the
	  differences internally.  That way it won't break any exisiting
	  code.

          Changed function definition for ACE_OS::getsockname() to accept
	  arg3 as int *.  Made similar changes in ACE_OS::setsockopt() -
	  change definition to accept const char * for arg4 and int for
	  arg5. Add the following code at the start of the function:
	  Also made changes to ACE_OS::recvfrom() - change arg 6 back so it is 
	  int *. 

	* ace/Mem_Map.i: In ACE_Mem_Map::advise(), cast 1st arg to
	  ACE_OS:madvise() to (caddr_t).

	* ace/Memory_Pool.cpp: In ACE_MMAP_Memory_Pool::acquire(), make
	  cast to char * in the return statement.  In
	  ACE_MMAP_Memory_Pool::handle_signal(), also make same cast in
	  the ACE_DEBUG statement near the top of the function.

	* ace/Reactor.cpp and ace/Reactor.h: ACE_Reactor::handler_i()
	  doesn't return properly if *eh != 0.  Remove last "else" so
	  function always returns 0 if handler != 0.

	  In ACE_Reactor::owner(), we need to change signature since
	  thread_t is not an integer.  This has been changed to int
	  ACE_Reactor::owner(thread_t *t_id); The last two lines have been
	  changed to: *t_id = this->owner_; return 0;

	* ace/Synch.cpp: In ACE_Condition_Mutex::wait(), the call to
	  cond_timedwait() does not exist, but ACE_OS::cond_timedwait()
	  does exist.  It takes the same arguments.

	* ace/Synch.h and ace/Synch_T.h: At the end of both files, before
	  the #define INLINE check for this define's existence to avoid
	  causing compilers to choke.

	* ace/Mem_Map.i: In ACE_Mem_Map::operator(), the return statement
	  looked very odd.  In the assignment to addr, why is the ", 0" in
	  the statement?

Fri Dec 29 00:34:16 1995  Douglas C. Schmidt  (schmidt@lambada.cs.wustl.edu)

	* ace: Fixed up many minor problems with the various types of
	  Shared_Memory wrappers.  This mostly entailed changing from char
	  * to void * to be more consistent with the other parts of ACE.
	  In addition, I now only include the *.i files if __INLINE__ is
	  enabled.

	* ace/Memory_Pool.cpp (map_file): Fixed a minor bug by enabling
	  MAP_FIXED if we're trying to map a file using a fixed address.

Thu Dec 28 18:39:16 1995  Douglas C. Schmidt  (schmidt@merengue.cs.wustl.edu)

	* ace/Local_Name_Space.cpp: Finished implementing changes to the
	  ACE_Malloc stuff and the Local_Name_Space that Irfan had begun
	  last semester.

	* ace/SString.cpp: Added new optimizations to the assignment
	  operators of the ACE_[WCS]String classes to avoid
	  freeing/allocating memory if the current size is large enough.

	* ace/SString: Added copy constructors...

	* ace/Local_Name_Space.cpp: Modified the implementation of bind()
	  to avoid a race condition.

	* ace/Map_Manager.cpp (bind): Changed the semantics of bind() so
	  that callers can control whether or not INT_IDs are reassigned.
	  Also changed things so that callers can get back the existing
	  value if they choose not to reassign.

	* ace/SString.cpp: Removed the "P" (persistent) versions of all
	  these classes and merged them into the default versions.  The
	  persistence is now determined by the type of allocator passed in
	  as a parameter to the constructor (or by using the "default"
	  allocator that is accessible via
	  ACE_Service_Config::allocator()).

	* ace/Map_Manager.cpp: Removed the "P" (persistent) versions of
	  all these classes and merged them into the default versions.
	  The persistence is now determined by the type of allocator
	  passed in as a parameter to the constructor (or by using the
	  "default" allocator that is accessible via
	  ACE_Service_Config::allocator()).

	* ace/Malloc_T: Modified the bind() algorithm so that it will
	  allow the caller to determine whether duplicates are allowed or
	  not...  Also changed things so that callers can get back the
	  existing value if they choose not to allow duplicates.  Irfan
	  questions the sanity of this... ;-)

	* ace/Synch: To be consistent, added acquire_write and
	  acquire_read methods to ACE_Mutex.  These are useful for cases
	  where we are going to be parameterizing classes like ACE_Malloc
	  with some type of mutex wrapper (e.g., ACE_RW_Mutex, ACE_Mutex).

	* ace/Malloc_T.cpp (calloc): Added a new method called "calloc"
	  that will not only allocate the memory dynamically, but will
	  also give it an initial value (e.g., '\0').

Thu Dec 28 01:10:43 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/OS.i: Modified the implementation of the TLI methods so that
	  they are conditionally compiled away if the platform doesn't
	  support TLI...  Thanks to Neil Cohen for pointing out the need
	  for this...

	* ace/OS.i: Modified the implementation of dlopen() and dlsym() to
	  account for limitations with SunOS 4.x...

	* ace/Service_Repository.cpp: Modified this class to use the
	  ACE_OS::dlclose method.

	* ace/Parse_Node.cpp: Modified this class to use the
	  ACE_OS::dlopen and ACE_OS::dlsym methods.

Wed Dec 27 23:25:03 1995  Jesper S. M|ller  (stophph@diku.dk)

	* Added appropriate flags in OS.h for successful inclusion of
	  several header files, such as Malloc.h and friends.  Also added
	  mprotect to ACE_OS for Win32 to avoid linker errors.

	* Added a return value (from map_file) to
	  ACE_MMAP_Memory_Pool::handle_signal.  The compiler was
	  complaining.  Likewise on
	  ACE_MMAP_Memory_Pool::commit_backing_store (there 0 seemed like
	  the correct off-the-end return value).

	* Removed include of some SV semaphore file, if not needed in
	  Malloc.h.  Worse for Memory_Pool.h, since the SV_Semaphore
	  wrappers consistently differ completely from the other
	  synchronization routines. I guess we'll need some variant of
	  ACE_Process_Semaphore that takes an integer as a key instead of
	  a string, and does not perform automatic init/destroy.
	  
	* Also upgraded fd's from int to ACE_HANDLEs and changes -1 to
	  ACE_INVALID_HANDLE where appropriate.

	* By help of aggresive preprocessor conditionals, made Handle_Set
	  work with Win32. There is a fd_set abstraction with appropriate
	  FD_xxx macros for WinSock, and it requires no sync'ing.  The
	  Handle_Set_Iterator should also work. The good looks of
	  Handle_Set was impaired, though. Right now, the trigger is the
	  ACE_WIN32 flag, although it should be something like
	  ACE_FD_SET_USES_BITS for the unix approach, or like
	  ACE_FD_SET_USES_VECTOR for the WinSock approach.

	* Reactor almost compiles now, but not quite: Handlers are
	  addressed by fd, this is no longer possible - what a mess - we
	  need to step through the handle indices somehow. This will
	  likely get into some nasty quadratic complexities when iterating
	  the handles to find the event_handler for each file
	  handle. Mabye we can circumvent this with a hash table lookup
	  for those opaque handles.

	* There was a problem with the Svc_Conf.l.cpp and the
	  Svc_Conf.y.cpp and the extremely lame MSVC++ 2.0.  I had to
	  rename them to Svc_Conf_y.cpp, etc. Awful!

	* Added code to inquire the 'host' name for Win32 in the ACE_Client_Id
	  class. Another candidate for ACE_OS.

	* About 60 or so ACE .cpp files compile now, which reminds me that
	  I'll be working on some precompiled header scheme soon, since it
	  takes for ever and ever, even on my 32meg system with pretty
	  good SCSI drives.  Mabye it's because I'm only running a 66MHz
	  i486 DX2 (yawn).

	* Dozens of other changes have been made to various files, all
	  pertaining to int vs. ACE_HANDLE. In Service_Manager.h, a signal
	  number was an ACE_HANDLE, but just close by, some fd's were
	  ints. Fixed that, too.

Sat Dec 23 14:15:16 1995  Jesper S. M|ller  (stophph@diku.dk)

        * I've also grouped the .i and .cpp functions by class,
	  and #if'ed the sbrk and SysV pools out, since 
	  Win32 cannot support those.

	* Added 'inline' to day accessor functions in Date_Time.

	* Two things that missed me in Trace.cpp:
	  1) The inclusion order was so that I couldn't
	     build Trace.o, since it didn't know the MALLOC_HOOK thing.
	     I moved the #include of Trace.h down below that of ACE.h.
	  2) The declaration and definition of the ACE_Trace constructor
	     differed by a const, which I added.
	  3) When linking, multiple symbols were found for some
	     OS calls like mutex_init, corresponding to the larger
	     OS Win32 functions. I has ACE_INLINED_OS_CALLS off,
	     so sometimes the OS functions were inlined, sometimes
	     not.
	     I disabled the inline hack in Trace.cpp for WIN32 for now.
	  This seemed to resolve matters.

	* There was a major problem in OS.i, where Synch.h was needed for
	  mutex support (in conjunction with TSS info linked list).  I
	  chose to make thr_keycreate and some others non-inlined.

	* More 'is-it-a-handle-or-success' confusion in SOCK*.* Changed
	  ACE_SOCK_Dgram to use int status.  Changed ACE_SOCK_CODgram to
	  use int status.  Changed ACE_LSOCK to use int status. Also
	  changed a few derived classes
	
Fri Dec 22 14:03:15 1995  Douglas C. Schmidt  (schmidt@lambada.cs.wustl.edu)

	* ace/OS.h: Added a new type for rwlock_t for platforms that don't
	  support threading...  Thanks to Neil Cohen for reporting this.

	* ace: Merged in all of Jesper's changes for NT and Chris Lahey's
	  changes for AIX.

	* ace: Merged tli.h into OS.h to avoid name conflicts on Win32.

	* Fixed duplicated names where case is the only difference.
		ace/thread.cpp
		ace/Thread.cpp
		ace/TLI.h
		ace/tli.h
		apps/Token_Server/mutex_example/simple_token_client.cpp
		apps/Token_Server/mutex_example/Simple_Token_Client.cpp
		apps/Token_Server/script_example/scripting_token_client.cpp
		apps/Token_Server/script_example/Scripting_Token_Client.cpp
		tests/IPC_SAP/SOCK_SAP/FD-client.cpp
		tests/IPC_SAP/SOCK_SAP/fd-client.cpp
		tests/IPC_SAP/SOCK_SAP/FD-server.cpp
		tests/IPC_SAP/SOCK_SAP/fd-server.cpp
	
Wed Dec 20 22:26:24 1995  Jesper S. M|ller  (stophph@diku.dk)

	* FIFO.cpp: One last comparison of 'open' return status where and
	  ACE_INVALID_HANDLE should be changed to -1.

	* One more last wrong comparison in FIFO_Recv_Msg.cpp.
	  (Never say never again!)

	* Put an appropriate conditional around the inclusion of
	  Handle_Set.h for ACE_WIN32 (for now).

	* Introduced a few backslashes in the macros of Dump.h that were
	  somehow left out...  Had to add a really stupid constructor for
	  struct Tuple.  I haven't a clue why MSVC++ wants this!  Replaced
	  'return ACE_ODB;' with 'return ACE_ODB::instance_;' in the
	  Singleton access function. 

	* Added a constructor for ACE_ODB. It may be private, but it still
	  needs to be defined...

	* Stack and Set compiles fine for Win32 (not surprisingly)
	
	* If'ed out the guts of ACE_IPC_SAP enable/disable calls for
	  Win32, since async IO doesn't work that way on there.

	* Event_Handler now uses ACE_INVALID_HANDLE for default args.

	* SOCK compiles except for the ACE_SOCKET <> ACE_HANDLE
	  problem. Refer to issue #3 above.

	* We're swamping the ace directory with .mak files. I used the
	  winntace.mak file, which is compilable and linkable.

Thu Dec 21 15:37:42 1995  Douglas C. Schmidt  (schmidt@merengue.cs.wustl.edu)

	* ace: Greatly simplified the include files so that (1) compilers
	  are faster and (2) the ACE_Trace mechanism works correctly.

	* ace/Trace: Modified the ACE_Trace_TSS class so that it is no
	  longer a template.  This was overkill since we know the type
	  head of time (i.e., ACE_Trace_State).

	* ace: Added a number of new changes to ACE to make things work on
	  AIX.  Thanks to Chris Lahey <clahey@ix.netcom.com> for these
	  changes.

	* ace/Thread_Manager.cpp: Removed the get_max_thr_id() method
	  since it was not portable to NT or POSIX pthreads.  Nothing in
	  ACE depended on it anyway...

	* ace/OS: Added a new static data member called NULL_thread that
	  is a "zero'd" out thread id.  This is necessary to deal with the
	  POSIX pthread implementation of a thread id, which is not always
	  implemented as a number...  By using this new approach, all the
	  special-case code in Synch.cpp disappears...

	* ace/OS: Added a new method to class ACE_OS called thr_equal()
	  that masks the differences between comparing thread ids using
	  the threading libraries.  This simplifies the code in Synch.cpp
	  and Reactor.cpp.

        * ace: Updated all uses of mmap() to use the new ACE_MMAP_TYPE
	  typedef.  This deals with the fact that different versions of
	  UNIX define mmap() inconsistently (e.g., some use void * and
	  some use char *...).

	* ace: Removed testconfig.h and merged all of those #defines into
	  OS.h.  This centralizes changes in one place and also eliminates
	  the need for ./apps and ./tests to include extraneous files...

	* ace/testconfig.h: Changed all uses of 0666 to ACE_DEFAULT_PERMS.
	  Also, removed all PERMS enums and substituted ACE_DEFAULT_PERMS
	  instead.

Wed Dec 20 17:29:55 1995  Tim H. Harrison  (harrison@merengue.cs.wustl.edu)

	* Rewrote the Token deadlock detection algorithm.  It now performs
	  "best-effort" detection of deadlock for remote acquires and
	  complete deadlock detection for local acquires.

Wed Dec 20 02:37:39 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/OS.h: The select() system call has its own include file on
	  AIX: <sys/select.h>.  We can wrap the #include with a variable
	  #if defined (ACE_HAS_SELECT_H).

	* include/makeinclude/platform_aix.GNU: Added new support for AIX.
	  Thanks to Chris Lahey <clahey@ix.netcom.com> for these changes.
	  Added a number of other minor changes, as well.

	* ace: Made a bunch of minor changes to get ACE to compile on
	  SunOS4.x, Linux, and SGI.

	* ace/config-linux.h: added ACE_HAS_MSG (thanks to Neil Cohen
	  for this).

	* ace/OS.h: Conditionally compile for ACE_HAS_UTIME for
	  <sys/utime.h>.

	* Released an alpha version of ACE containing the new Windows NT
	  port.

	* Integrated and tested all the new Windows NT changes in class
	  ACE_OS, as well as the Synch* and Threads* classes.  We're now
	  able to build Jesper's win32_test.cpp file in ./ace!  A complete
	  NT port should be just around the corner...

Tue Dec 19 17:59:04 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * ace: Move the remaining contents of sysincludes.h into ACE.h.
	  There is no more sysincludes.h (at long last!).

	* ace: Rearranged things so that the OS.[hi] files contain all the
	  OS-specific #defines and #includes that were previously in
	  sysincludes.h.

        * ace: Renamed the ACE_Misc class to class ACE, which is more
	  representative of what it does.

	* INSTALL: updated the installation instructions to explain how
	  the new directory structure works.  Thanks to Neil Cohen for
	  pointing out the discrepancy beteen the source and the
	  documentation ;-).

	* Reorganized (by flattening) the ACE library directory structure
	  to make it work for both Windows NT and UNIX.  Note that Windows
	  NT does not have symbolic links, so the old way of doing things
	  didn't port...  The consequences of these changes is there is
	  now a single directory called $WRAPPER_ROOT/ace that contains
	  the *.[hi] and *.cpp source files.  This is also where the
	  libACE.a and libACE.so libraries are built by default.  Also,
	  note that the suffix used by ACE has been changed from *.C to
	  *.cpp to deal with the lame Visual C++ compiler...

Tue Dec 19 01:26:54 1995  Douglas C. Schmidt  (schmidt@merengue.cs.wustl.edu)

	* tests/ASX/Event_Server/Event_Server/Supplier_Router.cpp (put):
	  Fixed up a problem with the Event_Server.  Somewhere along the
	  way it stopped being concurrent!  The new version fixes this.
	  Thanks to Alex V Maclinvosky <alexm@teltrunk1.tait.co.nz> for
	  noticing this...

	* Added a billion new changes to class OS to integrate the Windows
	  NT port with the rest of ACE.  We are getting very close...

Mon Dec 18 12:45:13 1995  Jesper S. Møller  (stophph@diku.dk)
 
	* Major problems in the IPC_SAP. First, I detected that some open
	  calls returned handles, some returned -1 or 0.  For instance
	  ACE_SOCK has a constructor, that calls this->open and expects a
	  handle (which it even sets as the current handle
	  value!). Unfortunately, the return from open is either 0 or -1,
	  depending on how well the open went.  ACE_HANDLE being
	  typedef'ed to a void* really reveals some problems!  I have
	  solved the problem for the FIFO*.* family and for SOCK.* 

Mon Dec 18 12:43:46 1995  Douglas C. Schmidt  (schmidt@merengue.cs.wustl.edu)

	* tests/Reactor/CODgram/CODgram.C (main): Fixed a bug in main()
	  caused by initializing the Reactor twice.  Thanks to Aurelio
	  Nocerino <aurelio@irsipcs2-27-le0.irsip.na.cnr.it> for reporting
	  this.

	* libsrc/Service_Configurator/Service_Config.C Added a new
	  constructor to ACE_Service_Config that can be used to initialize
	  internal variables without performing a full configuration.

Mon Dec 18 01:22:22 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Service_Config: renamed tokens.h to sc_tokens.h to avoid
	  file name collision on Win32.  Thanks to Jesper S. M|ller
	  <stophph@diku.dk> for reporting this.

	* tests/Mem_Map/IO_Test: renamed io_test.C to test_io.C to avoid
	  file name collision on Win32.  Thanks to Jesper S. M|ller
	  <stophph@diku.dk> for reporting this.

	* libsrc/Misc/OS: Implemented condition variables for Windows NT.

Sun Dec 17 21:23:32 1995  Douglas C. Schmidt  (schmidt@merengue.cs.wustl.edu)

	* libsrc/Misc/Trace: Fixed up the ACE_Trace class so that it
	  doesn't include any calls that will improperly trigger infinite
	  recursion!  This allows the ACE library to be traced completely.

Sat Dec 16 19:12:37 1995  Jesper S. Møller  (stophph@diku.dk)
 
	* Changes to OS.*:
	  * Added conditionals to the OS.h for Win32, for the special ACE/Win32
	    thr_destroy_tss(), which is automatic for Solaris.
	  * Changed declarations of thr_create, thr_suspend, thr_continue, 
	    thr_join and thr_[gs]etprio to use hthread_t instead of thread_t.
	  * Changed return type of OS::open from int to ACE_HANDLE.
	  * Provided non-obtrusive handling of thr_handle in OS::thr_create
	    for non-Win32.
	  * Copied ACE::writev to OS::writev for Win32. Something similar
	    should happen for other systems...

	* Changes to Thread.*:
	  * Changed join, suspend and continue to take handles.
	  * Added thread handle return address to spawn.

	* Changes to Thread_Manager.*:
	  * Added thread handles to the Thread_Descriptor structure.
	  * Modified insert_thr and append_thr functions to also take
	    handles.
	  * Made ACE_Thread_Descriptor::Thread_State (a enum) public
	    so Thread_Manager::append_thr could use it as a formal
	    parameter (I suspect this is a bug in MSVC++).
	  * Changes the various flavours of suspend, continue, etc. to
	    use handles instead of id's. Keep in mind that none of this
	    is destructive for Unix, but vital for Win32.
	  * There is still a problem with ACE_Thread_Control registering
	    itself with the Thread_Manager - the thread does not have means
	    of finding it's own handle. In this particular case, we could
	    have the thread duplicate it's pseudohandle into a real one,
	    and pass that one along. I'd really, really, really rather not
	    have to maintain a thread id->handle mapping myself; It would
	    slow down thread manipulation and give some troublesome memory
	    overhead.

	* Changes to Log_Msg.*:
	  * OS::getpid instead of ::getpid.

	* Changes to Misc.*:
 	  * Sections inappropriate for Win32 #if'd out...
	  * Provided naive timestamp function (No date) for Win32.

	* Changes to IPC_SAP.*:
 	  * Uses OS::ioctl instead of ::ioctl
	  * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE

	* Changes to FIFO.*, :
	  * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE

	* Changes to FIFO_Send.*:
	  * open now returns an int insted of an ACE_HANDLE.
	  * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE

	* Changes to FIFO_Send_Msg.*:
	  * open now returns an int insted of an ACE_HANDLE.
	  * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE
	  * Uses OS::writev instead of ::writev

	* Changes to FIFO_Recv.*:
	  * open now returns an int insted of an ACE_HANDLE.
	  * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE

	* Changes to FIFO_Recv_Msg.*:
	  * open now returns an int insted of an ACE_HANDLE.
	  * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE

	* Changes to sysincludes.h:
	  * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE

Sat Dec 16 12:29:06 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/IPC_SAP/Addr/INET_Addr.C: Changed the implementation so
	  that the reentrant versions of the library calls are always used
	  (class OS sorts this all out).  This reduces the amount of
	  clutter in the code.

	* libsrc/Threads/Synch: Added a new implementation of
	  "readers/writer" locks for both Windows NT and POSIX pthreads.
	  By default, these threads packages don't have this feature.

	* libsrc/Threads/Synch: Added a new macro called
	  ACE_SYNCH_ERROR_RETURN that greatly simplifies the definition of
	  the synchronization wrappers.

	* include/ace/sysincludes.h: Removed the pthreads_map.h file and
	  integrated this into sysincludes.h.  

Fri Dec 15 02:39:25 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Misc/OS.i: Finished updating class OS so that it will
	  compile correctly for OS platforms that don't support threads,
	  as well as platforms that support POSIX Pthreads vs. Solaris
	  threads, etc.

	* libsrc/Misc/OS: integrated Jesper S. M|ller <stophph@diku.dk>
	  support for POSIX regular expressions (e.g., compile() and
	  step()) and sysinfo() into ACE.

	* Integrated and tested all of Irfan's changes to ACE to support
	  the new persistence Name_Server.  This added some new classes in
	  various places that use the ACE_Allocator.

Thu Dec 14 00:23:43 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* tests/ASX/Event_Server/Event_Server: Fixed an "off by 1" bug in
	  the declaration of char *argv[3] in the open() methods of
	  Supplier_Router.C and Consumer_Router.C.  Thanks to the "ever
	  dissatisfied" Alex V Maclinvosky <alexm@teltrunk1.tait.co.nz>
	  for reporting this.

	* libsrc/Service_Configurator/Service_Config: Added a new
	  "Singleton" access point for the global ACE_Allocator.

	* libsrc/Naming/Name_Options.C (parse_args): Made it possible to
	  change the name of the process on the command line via the -P
	  option.  The default is still to use argv[0] as the process
	  name.

	* include/ace/testconfig.h (ACE_DEFAULT_GLOBALNAME): Changed the
	  value from "/localnames" to "/globalnames" to avoid a conflict.

	* libsrc/Misc/SString.C: Added Irfan's new "persistent" string
	  mechanisms that use the ACE_Allocator_Manager.  We may
	  eventually update the existing SS* stuff to use this.

	* Merged in Jesper S. M|ller <stophph@diku.dk> updates for Windows
	  NT.

	* include/ace/Malloc.h: Added a forward declaration for
	  ACE_Malloc_Iterator right before ACE_Malloc.  Thanks to Antonio
	  Tortorici <antonio@rh0011.roma.tlsoft.it> for reporting it.

	* libsrc/Threads/Synch_T.h: Fixed a small typo in
	  ACE_Null_Condition.  Thanks to Antonio Tortorici
	  <antonio@rh0011.roma.tlsoft.it> for reporting it.

	* include: Added new config-linux.h and platform_macros.GNU config
	  files for Linux.  Thanks to Timothy Newell
	  <910430n@dragon.acadiau.ca> for this stuff.

Wed Dec 13 23:08:11 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/IPC_SAP/Addr/INET_Addr.C (set): Fixed a small typo in the
	  ACE_INET_Addr::set (const char port_name[], ACE_UINT32
	  inet_address) method where the test should be != rather than ==
	  0.  Thanks to Bill Lear (rael@anarchy.cybercom.net) for
	  reporting this.

Sun Dec 10 12:23:54 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Service_Configurator/Service_Record.C (init): Fixed a
	  small problem where a NULL pointer was being returned if a user
	  passes a non-existent config file (using the -f option) to
	  ACE_Service_Config::open().  Thanks to Dieter Quehl
	  (quehl@erlh.siemens.de) for noticing this.

	* libsrc/Log_Msg/Log_Msg.C (log): added a new option (%T) that
	  causes the current timestamp to be inserted into the log msg.
	  Thanks to Dieter Quehl (quehl@erlh.siemens.de) for suggesting
	  this.

	* libsrc/Misc/Misc: Added a new timestamp() method that returns
	  the current timestamp in the form
	  "hour:minute:second:microsecond."  The month, day, and year are
	  also stored in the beginning of the date_and_time array.

	* tests/Shared_Malloc: Added Irfan Pyarali <ip1@cec.wustl.edu> new
	  test program that exercises the new features of ACE_Malloc that
	  are described in the following bullet.

	* libsrc/Shared_Malloc: Added Irfan Pyarali <ip1@cec.wustl.edu>
	  cool new versions of ACE_Malloc and ACE_MMAP_Memory_Pool.  These
	  new versions provide the following enhancements:
	  
	  1. Persistence -- via the sync() method
	  2. Protection -- via the prot() method
	  3. Named malloc chunks -- via bind(), find(), unbind().
	  4. Named iteration -- via ACE_Malloc_Iterator

Thu Dec  7 00:31:26 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Reactor/Signal.C: Replaced ACE_Guard with ACE_TSS_Guard
	  to ensure that locks are correctly released even if
	  Event_Handler::handle_signal() callbacks invoke
	  ACE_Thread::exit().  Thanks to Detlef Becker
	  (beckerd@erlh.siemens.de) for suggesting this.

	* libsrc/Threads/Synch_T: Used inheritance to factor out the
	  shared code between ACE_Guard, ACE_Read_Guard, and
	  ACE_Write_Guard in order to reduce unnecessary duplication.

	* libsrc/Threads/Synch_T: Changed the implementation of ACE_Guard
	  to keep a pointer to the LOCK rather than a reference.  This
	  makes the code more flexible and aids in factorization.

	* libsrc/Threads/Synch_T: Changed the implementation of ACE_Guard
	  to incorporate ACE_Try_Guard semantics.  This reduces the amount
	  of classes and duplicate code in ACE.

Wed Dec  6 21:36:02 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* include/ace/Trace: Changed the type of the string passed into
	  ACE_Trace from char * to const char *.

	* libsrc/Reactor/Reactor.C: Had forgotten to initialize the
	  initialized_ and requeue_position_ members appropriately in the
	  constructor of the ACE_Reactor if ACE_MT_SAFE is *disabled*.
	  Thanks to Mark Zusman <marklz@topaz.technion.ac.il> for pointing
	  this out.

	* libsrc/Threads/Synch_T.C: changed the order of some methods so
	  they would be properly defined if ACE_HAS_THREADS and
	  ACE_HAS_THREAD_SPECIFIC are *not* enabled.  This should fix
	  remaining problems with ACE on SunOS 4 and SGI.  Thanks to
	  Aniruddha Gokhale <gokhale@cs.wustl.edu> for noticing this.

Tue Dec  5 01:06:14 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* Changed things around so that the Name_Server and Token_Server
	  client interfaces are include in libACE.

	* libsrc/Shared_Malloc: added a const char *pool_name to
	  ACE_Malloc::ACE_Malloc.  This is passed into the constructor of
	  the MEMORY_POOL to make it easier to dynamically name memory
	  pools.

Mon Dec  4 21:20:28 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Threads/Synch_T: Modified the place that the
	  ACE_Thread_Specific methods are defined so that they will be
	  compiled correctly for platforms without threads or
	  thread-specific storage.

Sun Dec  3 23:04:41 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/ASX/Message_Block: Modified clone() so that it takes an
	  extra parameter that specifies which flags SHOULD NOT BE
	  TRANSFERED to the clone.  This defaults to
	  ACE_Message_Block::DONT_DELETE.  Thanks to Alex V Maclinvosky
	  <alexm@teltrunk1.tait.co.nz> for suggesting this.

Sun Dec  3 17:43:11 1995  Tim H. Harrison  (harrison@lambada.cs.wustl.edu)

	* The number of files in the Token library has been reduced.  As a
	  result, many of the files have been renamed.  Also, the .i files
	  have been purged of relatively large methods (these have been
	  moved to the .C files.)  Lastly, most uses of dynamic memory
	  allocation have been removed from the library.  This was
	  important to reduce the amount of serialization in threaded
	  applications caused by the dynamic allocation.

Sun Dec  3 17:29:54 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Threads/Synch: Modified all the synchronization classes
	  so that they disallow assignment and initialization!

	* libsrc/Threads/Synch: Moved the ACE_Thread_Specific class from
	  its own files into the Threads/Synch.[Chi] files.  This should
	  eliminate a set of horrible interdependencies among files.

Sat Dec  2 16:07:40 1995  Douglas C. Schmidt  (schmidt@mambo.cs.wustl.edu)

	* libsrc/Misc/SString.C (ACE_CString): Added a destructor to
	  CString.  Thanks to Tim for noticing this...

Tue Nov 28 17:25:02 1995  Prashant Jain  (pjain@tango.cs.wustl.edu)

	* apps/Name_Server/client/lib/Name_Proxy: Changed Name_Proxy to
	  inherit from ACE_Service_Object rather than ACE_Event_Handler.
	  This will allow a Name_Proxy to be dynamically linked into an
	  application via the svc.conf file.

	* apps/Name_Server/client/lib/Name_Proxy: Added new methods
	  init, fini, and info.

Tue Nov 28 00:56:52 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* tests/Threads/test_thread_specific.C: Added code to test the new
	  ACE_TSS_Guard class...

	* libsrc/Threads/Synch_T: Added the new ACE_TSS_Guard class.  This
	  class is similar to the existing ACE_Guard, except that it uses
	  thread-specific storage to ensure locks are released even if a
	  thread exits via thr_exit()!

Mon Nov 27 20:39:58 1995  Prashant Jain  (pjain@tango.cs.wustl.edu)

        * apps/Name_Server/{client,server}/tests: Added new tests to
	  exercise the key features of the name server.

	* apps/Name_Server/client/lib: Simplified access to the nameserver
	  database.  For example, all the network-byte ordering code was
	  moved out of the Local and Remote Name_Spaces.  This code is no
	  longer necessary since we'll be providing a different means to
	  get portable name service repositories via a tool that extracts
	  the "key/value/type" tuples and stores them in a
	  machine-independent format.  The result of this change is that
	  the Name_Server code is much easier to understand and modify.

	* apps/Name_Server/client/lib: Split local and remote name spaces
	  into two classes to simplify usage.  This approach uses the
	  Bridge pattern to have a baseclass called Binding and then have
	  subclasses called Local_Name_Space and Remote_Name_Space.  The
	  constructor of Naming_Context then allocates the right one
	  (i.e., it serves as a factory).  This approach remove all the
	  switch statements in the code and makes it much easier to use
	  and extend.

	* apps/Name_Server: updated all the Name_Server components to 
	  use ACE naming conventions.

	* apps/Name_Server/client/lib: Changed ACE_Name_Options to use the
	  Singleton pattern rather than the global variable...

Mon Nov 27 00:47:32 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Shared_Malloc/Malloc.h: Named the previously anonymous
	  struct inside of ACE_Malloc_Header to be
	  ACE_Malloc_Control_Block in order to keep the OSE tools working.
	  Thanks to Karlheinz for reporting this.

	* libsrc/Threads/Synch: Fixed a major bug in the ACE_Semaphore
	  wrappers.  Apparently, these had slipped between the cracks and
	  were not correctly mapping onto the ACE return value scheme
	  where -1 corresponds to an error with errno set to indicate the
	  type of error.

	* tests: Cleaned up some files that mistakenly were defining 
	  LSOCK* objects even for platforms (i.e., Linux) that don't
	  support them.  Thanks to Timothy Newell
	  <910430n@dragon.acadiau.ca> for noticing this.

Sun Nov 26 12:42:51 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Shared_Malloc/Malloc: Added a new accessor method
	  (memory_pool) that returns a reference to the MEMORY_POOL object
	  used to configure ACE_Malloc.

	* libsrc/Shared_Malloc/Malloc: Changed the constructor of
	  ACE_Malloc to take advantage of the new init_release method on
	  all the ACE_*_Memory_Pools.

	* libsrc/Shared_Malloc/Memory_Pool: Added a new method to all the
	  ACE_*_Memory_Pool classes called "init_release".  This is called
	  when ACE_Malloc finishes initializing the dynamic memory
	  manager.  This method is necessary in order to initialize the
	  ACE_MMAP_Memory_Pool correctly if there are multiple processes
	  that try to initialize ACE_Malloc simultaneously.  In addition,
	  also added an ACE_SV_Semaphore_Complex to the
	  ACE_MMAP_Memory_Pool in order to serialize initialization
	  correctly.

	* libsrc/Shared_Malloc/Memory_Pool: Added sync() and protect()
	  methods to all of the ACE_*_Memory_Pool classes in order to
	  support a uniform interface for use with the "robust memory"
	  mechanism we're building.

	* libsrc/Mem_Map/Mem_Map: Added two new "protect" methods to
	  ACE_Map_Manager in order to allow clients to change the
	  protection of memory-mapped regions.

	* libsrc/ASX/Map_Manager: Changed Map_Manager methods to use
	  "const" for EXT_ID and INT_ID at request of Prashant Jain
	  (pjain@cs.wustl.edu).

	* libsrc/Shared_Malloc/Memory_Pool: Revised the
	  ACE_Shared_Memory_Pool so that it would actually work
	  correctly...  This code hadn't been reviewed carefully before
	  and there were some bugs...

	* libsrc/Shared_Malloc/Malloc: added "INLINE" to the
	  ACE_Allocator_Adapter components.

	* libsrc/Shared_Malloc/Memory_Pool: Greatly simplified and
	  consolidated the mmap(2) code for ACE_MMAP_Memory_Pool.

	* libsrc/Shared_Malloc/Memory_Pool.i (release): Removed the
	  vestigal this->mmap_.remove() call in release(), but added the
	  appropriate code to close the fd and unmap the region.  Thanks
	  to Irfan Pyarali <ip1@cec.wustl.edu> for noticing this.

Sat Nov 25 18:12:55 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/CORBA/CORBA_Handler.C (activate_service): 
	  Modified activate_service so that

	  if (service_name != 0
	      && this->register_service (service_name, marker_name, 
	                                 service_location) == -1)
            return -1;

	  is changed to 

	  if (service_name != 0 && service_location != 0
	      && this->register_service (service_name, marker_name, 
		            		 service_location) == -1)
            return -1;

	  Irfan Pyarali <ip1@cec.wustl.edu> requested this.

Sat Nov 25 16:41:15 1995  Douglas C. Schmidt  (schmidt@lambada.cs.wustl.edu)

	* libsrc/Misc/Set: Changed all the find() and size() methods to
	  be const member functions.  Thanks to Irfan Pyarali
	  (ip1@cec.wustl.edu) for requesting this.

Fri Nov 24 02:51:59 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Reactor/Reactor.C: Fixed the Reactor so that if we're
	  compiling with DEADLOCK_DETECTION enabled it will create a
	  uniquely named mutex by stringifying "this".

Thu Nov 23 21:45:43 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/IPC_SAP: Changed

	* libsrc/Service_Configurator/Service_Config: Added three new
	  methods to allow programmers to set the process-wide Singletons
	  for Reactor, Service_Repository, and Thread_Manager.

Tue Nov 21 01:59:06 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Mem_Map/Mem_Map.C: Fixed a stupid typo in map_it() that
	  was causing problems due to unsigned arithmetic semantics...
	  This should make the file_reverse.C Mem_Map tests work correctly
	  now...  Thanks to Bill Lear <rael@anarchy.cybercom.net> for
	  noticing the problem.

	* tests/Mem_Map/IO-tests/io_test.C (parse_args):  Fixed a
	  classic C/C++ braino in io_test.C:

	  The for loop in parse_args()

	  for (int c; (c = get_opt () != -1); )

	  should be

	  for (int c; ((c = get_opt ()) != -1); )

	  How embarrassing.  Maybe Bertrand Meyer is right -- C++ is too
	  dangerous for its own good... ;-).  Thanks to Bill Lear
	  <rael@anarchy.cybercom.net> for finding this!

	* Removed all traces of ACE_Condition<ACE_Mutex> from the library.
	  This should make life much easier for compilers (like G++) that
	  can't grok templates very well...

	* libsrc/Threads/Thread_Specific.C (ts_object): Added a new method
	  that allows you to simultaneously "test and set" thread-specific
	  data!  This is used to support a neat new trick that ensures
	  locks are released even if a thr_exit() is called!

	* libsrc/Service_Configurator/Service_Repository: Removed the
	  Recursive_Mutex from Service_Repository and replaced it with a
	  regular (non-recursive) mutex.  Had to rewrite the code a bit so
	  that it wouldn't try to call internal methods that acquired the
	  mutex (this leads to instant deadlock!)

Mon Nov 20 01:05:47 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Threads/Synch: Finally gave in and accepted the fact that
	  GNU G++ is a horrible, horrible blight on mankind...  Changed
	  the internals of Synch.[Chi] to completely remove any
	  dependencies on templates.  I hope this fixes some portability
	  problems deep in the libraries...  Added several new classes to
	  reflect this change: ACE_Mutex_Guard, ACE_Mutex_Condition, and
	  ACE_Recursive_Mutex.

	* libsrc/IPC_SAP/UPIPE_SAP/UPIPE_Acceptor.C (ACE_UPIPE_Acceptor):
	  Fixed a stupid typo that was causing the constructor of
	  UPIPE_Acceptor to become inlined!!!

	* apps/Gateway/Gateway: Fixed up the Makefile so that the gatewayd
	  executable would compile with G++.

	* include/ace/config-irix5.3-sgic++.h: Changed the SGI config.h
	  file so that it uses select() rather than poll() by default.
	  The select() version of the Reactor is implemented more
	  efficiently in ACE...

        * include: Added config files for AIX courtesy of Byron Walton
	  <bwalton@hughes.scg.hac.com>.

	* libsrc/Reactor/Signal.C: #ifdef'd out some code in Signal.[hC]
	  that was causing problems for the HPUX C++ compiler.  What a
	  *horrible* compiler!

	* libsrc/Reactor/Event_Handler.h: Added two new methods to
	  ACE_Event_Handler: get_priority() and set_priority().  These
	  will be used to control the behavior of the ACE_Reactor's
	  dispatching.  This also required added a new data member to
	  ACE_Event_Handler that stores the priority (which defaults to
	  MIN_PRIORITY).

	* libsrc/Misc/Stack.C (enqueue): Added a new class called
	  ACE_Unbounded_Queue.  This is required for Tim's Token_Server
	  connection repository stuff...

	* libsrc/CORBA/CORBA_Handler.C: Added new support to both the
	  single-threaded and multi-threaded versions of CORBA_Handler so
	  that it will now suspend/resume the services associated with a
	  CORBA_Handler.

	* libsrc/CORBA/CORBA_Handler.C (ACE_MT_CORBA_Handler): Updated the
	  constructor to use the associated Thread_Manager to spawn a new
	  thread.  This will allow the suspend() and resume() methods to
	  atomically resume and suspend the daemon thread and its event
	  handler.

	* libsrc/Threads/Synch.h: Fixed up the order of #includes to solve
	  problems with circular header dependencies!

	* Had to add zillions of little changes to avoid problems with
	  circular includes for G++...

	* tests/ASX/Event_Server/Event_Server/Peer_Router.C (bind_peer):
	  Fixed a typo that had been dormant for ages due to C++'s very
	  late binding of templates...  G++ picked this right up!

Sun Nov 19 11:55:02 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Reactor/Signal: Replaced the static HANDLER_SET stuff
	  withing ACE_Sig_Handlers with a different implementation using
	  ACE_Fixed_Set.  This should fix nasty problems with static
	  variables on HP/UX...

        * Fixed the entire library so that all occurrences of ace_log_msg
	  are changed to use the ACE_LOG_MSG macro.  This macro has magic
	  properties that should greatly simplify the effort required to
	  compile ACE robustly on platforms with lame C++ compilers...

	* libsrc/Log_Msg/Log_Msg: Finally got my act together with respect
	  to thread-specific data and the ACE_Log_Msg class.  The new
	  version can be conditionally compiled such that it won't use the
	  ACE_Thread_Specific smart-pointer wrapper mechanism unless the
	  platform supports thread-specific storage and threads.  This
	  will make life much easier for lame C++ compilers that can't
	  handle static data member templates correctly...  

	* apps/Name_Server/{client,server}/lib/Makefile (LIBS): Added a
	  reference to -lACE in the Makefiles of the ./lib directories in
	  order to get GCC to work correctly...

        * Added a bunch of fixes courtesy of Bill Lear
	  <rael@anarchy.cybercom.net> to make ACE compile more cleanly
	  with GNU GCC 2.7.x.

Sat Nov 18 11:27:40 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Misc/Trace.C: Fixed up the ACE_Trace class so that it
	  will compile better on platforms that don't support
	  thread-specific storage.  The trick was to make a new Singleton
	  called ACE_Nest_Depth and then conditionally compile it
	  according to whether the platform supports thread-specific data
	  or not!

	* include/makeinclude/platform_sunos5_g++.GNU: Added the new
	  config file that should allow ACE to build correctly with GCC
	  2.7.x.  Todd L. Montgomery <tmont@cerc.wvu.edu> deserves a big
	  round of applause for getting this stuff to work!  If I had a
	  budget, I'd give him a raise ;-)

	* libsrc/Misc/Set.C (remove): Tightened up the semantics of all
	  the *Set::remove() methods so that they return 1 if they
	  succeed, 0 if the item isn't in the set, and -1 if they fail.
	  Thanks to Tim Harrison for noticing the inconsistencies.

Fri Nov 17 01:34:51 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* apps/Logger/Reactor_Logger: Fixed up this example app so that it
	  would compile with GNU G++ correctly.  There was a problem with
	  the order of include files!  Thanks to Todd L. Montgomery
	  <tmont@cerc.wvu.edu> for reporting this.

	* libsrc/ASX/Module.C (writer): Fixed ACE_READER so that it is
	  properly qualified with ACE_Task_Flags::ACE_READER.  Thanks to
	  Neil Cohen (nbc@metsci.com) for finding this!

	* apps/Gateway/Gateway/Routing_Entry: Replaced ACE_Fixed_Set with
	  ACE_Unbounded_Set to get around the seemingly endless problems
	  with HP/UX...

	* libsrc/Misc/Set: Fixed a braino in ACE_Unbounded_Set, where I'd
	  forgotten to define cur_size_.  Thanks to Todd L. Montgomery
	  <tmont@cerc.wvu.edu> for reporting this.

	* libsrc/Connection/Acceptor.C: Change the #undefs of the
	  shorthand names PA_AC_1, PA_AC_2, and PA_AD in
	  libsrc/Connection/Acceptor.C to PR_AC_1, PR_AC_2, and PR_AD
	  (same as in Connector.C and Strategies.C).  Thanks to 
	  Dieter Quehl <quehl@erlh.siemens.de> for reporting this.

Thu Nov 16 02:14:22 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Misc/Trace: Fixed the ACE_Trace stuff by making the
	  "nesting_indent_" a static data member.  This will undoubtedly
	  break some lame C++ compilers, but it's easy enough to remove
	  this stuff via conditional compilation using the ACE_NTRACE
	  #define in ./include/ace/config.h.

	* libsrc/Threads/Thread_Specific.C (cleanup): Under no
	  circumstances should ACE_Thread_Specific be allowed to
	  called ACE_Trace.  Otherwise, chaos will result!

	* apps/Name_Server/{client,server}/tests/Makefile: Switched the
	  order of the -lACE and -lName* so that -lACE came *afterwards*
	  in order for the SGI linker to pick up the symbols correctly.

	* libsrc/Reactor/Signal: I'd accidentally put the "dump" methods
	  in the *.i file rather than the *.C file.  This was causing
	  problems for G++.

	* libsrc/ASX/Task: Changed all "Q_" prefixes to "ACE_" prefixes in
	  order to work around a bug with HP/UX...

	* Recompiled everything on SunOS 4.x with SunC++ 4.0.1.  It seems
	  to work!

Thu Nov 16 18:05:03 1995  Tim H. Harrison  (harrison@tango.cs.wustl.edu)

	* I moved around some class declarations so that g++ can properly
	  instantiate templates for ACE_Token_Collection and
	  ACE_Token_Manager.

Wed Nov 15 00:26:40 1995  Tim H. Harrison  (harrison@lambada.cs.wustl.edu)

	* The token library should now compile on platforms which do not
	  support threads.  All token components will be compiled into the
	  library, but use null mutexes and condition variables.  The
	  remote mutex library shall run properly on single-threaded
	  platforms, so it compiles as usual.

Wed Nov 15 01:05:38 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* Fixed a bunch of minor problems with the SGI port.  Things
	  should work now on IRIX 5.3!

	* man/man3: Completely regenerated all the manual pages to
	  reflect all the recent updates.

	* libsrc: Added ACE_TRACE macros to every single method in ACE!
	  This will help with debugging...

Wed Nov 15 00:26:40 1995  Tim H. Harrison  (harrison@lambada.cs.wustl.edu)

	* The token library should now compile on platforms which do not
	  support threads.  All token components will be compiled into the
	  library, but use null mutexes and condition variables.  The
	  remote mutex library shall run properly on single-threaded
	  platforms, so it compiles as usual.

Tue Nov 14 01:58:47 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* tests/CORBA: Added a new test to illustrate the
	  ACE_MT_CORBA_Handler.

	* libsrc/ASX/Task.C (ACE_Task_Exit): Fixed a niggling problem with
	  ACE_Task_Exit.  Originally, if a thread exited via an implicit
	  ACE_Thread::exit() (i.e., "falling off the end of the
	  ACE_Task::svc_run function) then the ACE_Thread_Control on the
	  thread stack would automatically unregister the thread from the
	  ACE_Thread_Manager.  However, this did *not* occur if a thread
	  explicitly called ACE_Thread::exit() since in that case the
	  destructor for ACE_Thread_Control never got called.  The
	  solution to this is a trivial change to ACE_Task_Exit, which now
	  maintains an instance of ACE_Thread_Control internally, which
	  will automatically be released when the thread-specific
	  thread-exit-hook destructor gets called to cleanup upon thread
	  exit.  Since this happens regardless of whether the thread
	  terminates implicitly or explicitly the ACE_Thread_Manager will
	  always be able to clean up it's internal resources (unless the
	  process exit()s, which is a whole different issue... ;-)).

        * Changed all occurrences of ACE_CORBA_Handler to
	  ACE_ST_CORBA_Handler.  Now we've got two types of
	  CORBA_Handlers: single-threaded (ST) and multi-threaded (MT).
	  Take a look at ./apps/Orbix-examples/Event_Comm/{Supplier,Consumer} 
	  for an example of how to leverage this in a portable manner!

	* libsrc/CORBA/CORBA_Handler: Totally redesigned the ACE
	  CORBA_Handler stuff so that it now uses the Singleton pattern
	  explicitly, rather than using the half-baked static method
	  version...  Changed the test code to reflect this update!

	* libsrc/CORBA/CORBA_Handler.C (activate_service): Changed the
	  check so that if <service_name> == 0 then we don't try to do a
	  putit (previously, this check used <marker_name>, which is less
	  useful...).

	* libsrc/CORBA/CORBA_Handler.C (activate_service): Removed the
	  <default_iterations> flag from the constructor so that we can
	  make the CORBA_Handler and the MT_CORBA_Handler equivalent.

	* include/ace/sysincludes.h: Added a new macro called
	  ACE_THREAD_EXIT_HOOK that enables application threads
	  (including the main thread) to register a Task * who's
	  close method will automatically be called when the thread
	  exits, either implicitly (by falling off the end) or explicitly
	  (by a thread calling ACE_Thread::exit ()).

	* libsrc/ASX/Task: Moved ACE_Task_Exit into the interface part of
	  ACE_Task so that Irfan can maybe use this in his stuff ;-).

	* libsrc/Misc: Incorporated the ACE_Date_Time class into the
	  release.  This is an *interface* for a system independent
	  representation of date and time.  Implementation will follow...

	* libsrc/CORBA: Added a new MT_CORBA_Handler, which makes it
	  very straightforward to integrate the ACE_Reactor with
	  multi-threaded (MT) Orbix.

	* libsrc/Threads/Token.C: Yow, fixed a dumb problem in Tokens.C
	  where I was failing to include the *.i file if we weren't
	  compiling with inlining on!!!!

Mon Nov 13 01:13:37 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/ASX/Message_Block: Added several new methods to
	  Message_Block to allow users to access and set various flags.
	  Thanks to Alex V Maclinvosky <alexm@teltrunk1.tait.co.nz> for
	  suggesting this and providing a prototype implementation.

        * include/ace/sysincludes.h: Added a new macro called ACE_NDEBUG
	  that can be used to toggle support for "live object dumping".
	  If this macro is enabled then

	* libsrc/Misc/Dump.h: Added support for "live object dumping" into
	  ACE.  This technique is implemented with the "External
	  Polymorphism" pattern described in a paper available at
	  http://www.cs.wustl.edu/~schmidt/EuroPLoP-96.ps.Z.  

	* libsrc/Threads: Added new classes called *_Process_* and
	  *_Thread_* for ACE_RW_Mutex, ACE_Barrier, ACE_Condition, and
	  ACE_Semphaore.  This will allow programmers explicitly state the
	  scope of their locks more explicitly and will also facilitate
	  portability to Windows NT...

	* libsrc/Threads: Updated the constructors of all the Synch and
	  Synch_T classes to take an option const char * called "name."
	  At the moment, this doesn't do anything, but when we port to
	  Window NT it will be used to ensure that we can name our
	  process-global synchronization objects.

	* libsrc/Threads/Synch: Added a new tryacquire method to
	  ACE_RW_Mutex to be consistent with acquire and release...

	* libsrc/Threads/Synch.C (ACE_Mutex): Added a new "name" parameter
	  to an ACE_Mutex in order to support process-semantics on NT...

	* include/ace/sysincludes.h: Added a #define for EDEADLK in case
	  some systems don't support it (this is needed by the new
	  ACE_*_Token stuff).

Sun Nov 12 14:17:01 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* apps/Name_Server: Modified the client and server test programs
	  so that they can both be linked statically and/or dynamically.
	  If svc.conf is present then dynamic linking is used, otherwise
	  static linking is used.  This makes it much easier to test!!!

	* apps/Name_Server/client/lib/Naming_Context.C (local): Changed
	  things a bit so that if our server host name is "localhost" then
	  we assume we are local no matter what...

	* apps/Name_Server: Moved directories around a bit so that all the
	  tests and libs for the client/server portions of the
	  ACE_Name_Server build correctly...

	* apps/Name_Server/server: Replaced the ad hoc Name_Acceptor and
	  Name_Handler to use the official ACE_Acceptor and
	  ACE_Svc_Handler...  This cleans up the code considerably...

	* libsrc/Threads/Synch: Added a new wrapper for the the UNIX file
	  locking mechanism called ACE_File_Lock.  This has the same
	  interface as the other locking mechanisms (e.g., ACE_Mutex and
	  ACE_Semaphore).  Therefore, it can be used in the ACE_Guard
	  class!

Sat Nov 11 13:53:48 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Shared_Malloc/Memory_Pool: Improved MMAP_Memory_Pool so
	  that it will be smarter about remapping the file if we aren't
	  trying to force a fixed addr to be used for the mapping.  In
	  particular, if we *aren't* forcing a particular address, the new
	  solution will be more flexible and allow the OS to determine
	  where to remap the memory should we need to grow the backing
	  store and the mapping range...

	* libsrc/Misc/Set: Implemented a simple version of the
	  Unbounded_Set class and its iterator.

	* libsrc/Misc/SString: Changed all the implementations of methods
	  in SString classes to use new/delete rather than
	  strdup()/free().

	* apps/Name_Server/client/Name_Proxy: Changed rcv_reply() to
	  recv_reply().

	* apps/Name_Server/client/Name_Proxy: Modified ACE_Name_Proxy so
	  that the constructor and open take an ACE_Synch_Options.

	* apps/Name_Server/client/Name_Options.C (ACE_Name_Options): Added
	  a default for the Name_Space directory called
	  (ACE_DEFAULT_NAMESPACE_DIR) to the testconfig.h file...

Sat Nov 11 00:24:37 1995  Tim H. Harrison  (harrison@lambada.cs.wustl.edu)

	* tests/Tokens/test_token_manager/test_token_manager.C: The token
	  manager has a working deadlock detection algorithm.
	  ACE_Local_Mutex uses this to report deadlock situations.
	  Changes were made to ACE_Local_Mutex to fix a couple bugs which
	  were causing deadlock.  Also, a new test application has been
	  added to test deadlock detection using the local mutex.	  

Fri Nov 10 17:16:06 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Mem_Map/Mem_Map.h: Changed the type of <length_> from
	  long to size_t.

	* tests/Threads/test_thread_manager.C (main): Added a main() for
	  the case when there's

	* tests/ASX/UPIPE_Event_Server/event_server.C (main): Fixed a
	  typo that was causing problems on SunOS 4.x.

	* tests/Service_Configurator/IPC-tests/client/local_spipe_client_test.C:
	  added #include "ace/Log_Msg.h" (why was this working?!).

	* include/makeinclude/rules.lib.GNU: Changed the order of operations
	  in rules.lib.GNU from

	  $(AR) $(ARFLAGS) $@ $?
	  -$(RANLIB) $@
	  -chmod a+r $@
 
          to

	  $(AR) $(ARFLAGS) $@ $?
	  -chmod a+r $@
	  -$(RANLIB) $@

	  to keep ranlib happy on SunOS 4.x.

	* apps/Time_Server: Added a Makefile

	* include/ace/sysincludes.h: Removed the <termios.h> include
	  since it was causing major problems on SunOS 4.x...

	* apps/Name_Server/Naming_Context.C: Fixed up a couple of problems
	  with casts.  Thanks to Jack Erickson <jack@cibc.com> for
	  pointing this out.

Thu Nov  9 15:49:40 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Threads/Synch_T: moved Atomic_Op from ./Misc to ./Threads
	  and merged it into the Synch_T files.  This makes more sense as
	  a place to put it...

	* libsrc/Misc/SString.C (operator +=): Fixed a typo that would
	  have caused mistakes when memcpy() was used.  Thanks to Prashant
	  Jain <pjain@wuerl.wustl.edu> for noticing this.

Wed Nov  8 22:36:51 1995  Tim H. Harrison  (harrison@lambada.cs.wustl.edu)

	* libsrc/Reactor/Reactor.C (TOKEN_GUARD): The reactor now uses the
	  TOKEN_GUARD macro.  The Reactor can now be conditionally
	  compiled with ACE_REACTOR_HAS_DEADLOCK_DETECTION to use the new
	  ACE_Local_Mutex in conjunction with the ACE_Token_Manager to
	  detect deadlock.  The deadlock detection algorithm has not yet
	  been implemented, but the hooks are now in place.

	* libsrc/Tokens:  This subdir includes ACE's new Token library.
	  Check out libsrc/Tokens/README for more info.

	* tests/Tokens:  There are a couple test applications for the new
	  Token library.  See tests/Tokens/README for more info.

	* apps/Token_Server:  This directory contains some new client
	  interfaces to the old ACE TokenServer, now Token_Server.  There
	  are also some example use cases included in this directory.  As
	  always, see apps/Token_Server/README for more info.

Wed Nov  8 00:14:55 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/IPC_SAP/IO_SAP: Added the new classes for IO_SAP from
	  Gerhard Lenzer (lenzer@csaserv.erlh.siemens.de).  This 
	  eliminates UNIX I/O-specific features from ACE.

	* libsrc/Misc/Set: Added a new find() method to each of the
	  ACE_*_Set classes...

	* include/ace/sysincludes.h (ACE_ALLOC_HOOK_DECLARE): Changed
	  enum __Ace { __ACE } to struct __ACE {}.  I think this
	  will cause less problems with M.I...

	* libsrc/ASX/Message_Block: Added a new "allocator" parameter to a
	  Message_Block.  This allows the memory stored by a Message_Block
	  to come from someplace besides the normal heap (e.g., a shared
	  memory segment!).

	* libsrc/ASX/Message_Block.C (ACE_Message_Block): Yow, fixed a bug
	  in the destructor where ACE_BIT_ENABLED was being used in place
	  of ACE_BIT_DISABLED!  I think this was causing a memory leak...

	* libsrc/Reactor/Reactor: added a pair of methods that allow a
	  thread to set/get the notion of who "owns" the event loop.  Only
	  the owner of the loop can do a handle_events() call.  Also
	  changed things so that the requeue_position() are available for
	  both threaded and non-threaded implementations (just to have a
	  uniform interface...).

	* libsrc/ASX/Message_Block: added a new constructor and a new
          init() method that just assume ownership of a char * passed
	  as the parameter.  Note that this does *not* set any other
	  fields in the Message_Block and is only used to ferry around 
	  totally opaque data in the Message Block!

Tue Nov  7 00:52:15 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* tests/Log_Msg/test_log_msg.C (main): Added some new tests to
	  make sure that op_status() and errnum() work on ace_log_msg.
	  Thanks to Tim Harrison for these tests.

Mon Nov  6 12:55:46 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Threads/Thread_Specific: Changed a couple of places in
	  the Thread_Specific code so that key_ is initialized to 0 and
	  the ts_obj * is initialized to 0.  If these *aren't* 0 then
	  weird bugs happen on Solaris...  Thanks to Tim Harrison for
	  noticing this and suggesting the fix!

	* libsrc/Threads/Synch_T: Added an accessor method to obtain
	  the underlying mutex within ACE_Condition.

	* libsrc/Threads/Synch.C (ACE_Process_Mutex): Added a dummy
	  argument of type const char * to ACE_Process_Mutex.  This is in
	  anticipation of the info required in Windows NT to support a
	  named process-wide Mutex.  On UNIX, this argument is ignored...

Fri Nov  3 19:02:54 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/IPC_SAP/SOCK_SAP: Back from C++ World...  Fixed a couple
	  of typos in SOCK_Dgram_Bcast and SOCK_CODgram that included the
	  *.i files multiple times...  Thanks to Alex V Maclinvosky
	  <alexm@teltrunk1.tait.co.nz> for reporting this.

Tue Oct 31 02:12:13 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Reactor/Reactor: Modifed the MT_SAFE Reactor so that the
	  its open() method keeps track of which thread originally created
	  it.  This thread is then considered the "owner" of the Reactor.
	  If a different thread tries to run the handle_events() method
	  then an error is returned.

	* libsrc/ASX/Task.C: Added a "group id" field to the ACE_Task.
	  This can be used to suspend and resume a group of tasks
	  atomically.  Also added default suspend() and resume() methods
	  that do just that!

	* libsrc/Reactor/Reactor: Made the open() method
	  thread-safe.  Thanks to Detlef Becker (beckerd@erlh.siemens.de)
	  for pointing out the need for this.

Mon Oct 30 00:02:53 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Shared_Malloc/Memory_Pool.C (ACE_MMAP_Memory_Pool): 
	  Made it possible to configure the ACE_MMAP_Memory_Pool with a
	  (backing_store_) file name so that it is possible for multiple
	  processes to share one wellknown file, as well as to have
	  multiple pools per process.  Check out the
	  ./tests/Shared_Malloc/test_malloc.C file for an example of how
	  this works (try the -p -e -L10000 -t3 options).  

	* libsrc/Reactor/Reactor: Moved handler_i into the *.C file to
	  avoid problems with inline functions on HP/UX.

        * libsrc/Misc/SString: Added a new class called ACE_CString.  This
	  class is similar to ACE_WString (which has "wide character"
	  size), though CString has regular "char" size.  Note that both
	  of these classes are "true" string classes, unlike ACE_SString,
	  which is a very simple string class that is only to be used for
	  very specific purposes...

	* libsrc/Shared_Malloc/Memory_Pool.C (acquire): Fixed an
	  "off-by-one" error in ACE_MMAP_Memory_Pool::acquire() that was
	  causing an extra byte to be written to the backing store file...
	  This was causing the ./tests/Shared_Malloc/test_malloc.C program
	  to fail when -p was given.  After this fix the test works
	  again... (thank God!).

Sun Oct 29 22:43:25 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Shared_Malloc/Malloc: Added two new classes:
	  ACE_Allocator and ACE_Allocator_Adapter.  ACE_Allocator uses
	  inheritance and dynamic binding to provide extensible mechanisms
	  for allocating and deallocating memory.  ACE_Allocator_Adapter
	  implements the Adapter pattern to enable ACE_Allocator to be
	  used with instantiations of the ACE_Malloc<> template class.

Sat Oct 28 13:51:07 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* tests/ASX/Event_Server: Added a new directory called
	  UPIPE_Event_Server, which tests a version of the Event_Server 
	  that is instantiated with ACE_UPIPE_* IPC mechanisms,
	  rather than by the ACE_SOCK_* mechanisms.

	* libsrc/IPC_SAP/Addr: Created a new file called UPIPE_Addr.h.
	  This file contains a typedef of ACE_SPIPE_Addr to
	  ACE_UPIPE_Addr.  The purpose of doing this is to "logically"
	  decouple the ACE_UPIPE* classes from the ACE_SPIPE* classes
	  (even though they share the same *physical* representation at
	  this point...).

	* libsrc/IPC_SAP: Fixed a small bug in TLI_Connector.connect() and
	  SOCK_Connector.connect() that failed to set the
	  new_stream::handle_ to ACE::INVALID_HANDLE when the connection
	  failed.  Thanks to the ever-astute Mark Patton
	  (mark_patton@tx72.mot.com) for noticing this.

Thu Oct 26 15:08:22 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* tests/Threads: created a new test program called
	  test_thread_manager.C that tests the new semantics for managing
	  groups of threads.

	* libsrc/Reactor/Signal.C (ACE_Sig_Action): Added a new method
	  that allows me to create a Sig_Action object that contains both
	  the handler and the signal to register for.  This handler is
	  register to handle the signal in the constructor of the
	  object...

	* libsrc/Threads/Thread_Manager: enhanced the Thread_Manager to
	  add support for operations (i.e., suspend, resume, kill) on a
	  group of threads.

	* libsrc/Threads/Thread_Manager: Added a new method that allows
	  the Thread_Manager to resize itself automatically when it's
	  internal table gets full.

	* libsrc/Threads/Thread_Manager: Updated the return value of
	  Thread_Manager::spawn() and Thread_Manager::spawn_n() so that
	  they return -1 on failure *and the group id* on success.
	  Originally, they returned 0 on success, but this new return
	  value is more useful since it can be used to control groups of
	  threads atomically.

Wed Oct 25 01:03:32 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * apps/Name_Server: Began integrating the newly donated name
	  server into ACE.  There are a number of dependencies on
	  RogueWave that must be removed, but things are looking good so
	  far.

	* libsrc/Misc/Set: Changed the name of ACE_Unordered_Set to
	  ACE_Fixed_Set to be consistent with the ACE Stack classes...

	* libsrc/Misc/Set: Added new ACE classes called ACE_Unbounded_Set,
	  ACE_Bounded_Set, ACE_Unbounded_Set_Iterator, and
	  ACE_Bounded_Set_Iterator to deal with ACE name service
	  stuff.

	* libsrc/Misc/SString: Added a new class called ACE_WString that
	  gives a very simple "wide-character" string representation for
	  ACE.  This is needed for the ACE name service stuff.

	* libsrc/Misc/SString.C (operator =): Fixed this so that ::strdup
	  is matched up with ::free, rather than with delete...

	* libsrc/Log_Msg/Log_Msg.C (log): Updated the ACE_Log_Msg class to
	  store an ostream * in thread-specific storage.  This can be used
	  in conjunction with the dump() method on each ACE class, as well
	  as with the ACE_ERROR and ACE_DEBUG logging macros.

Tue Oct 24 00:19:13 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* Added a definition of the dump() method to every class in ACE in
	  anticipation of the changes requested for Siemens.

	* Changed all occurrences of ACE_Signal_* to ACE_Sig_* to make the
	  ACE naming of signal handling wrappers consistent.

	* libsrc/Threads/Thread: Fixed some obscure bugs with the way that
	  ACE_Thread was compiling on platforms that don't support
	  threads.

	* include/ace/config-irix*.h: Removed all TLI support from the SGI
	  platform.  It seems to be totally screwed up from the tests that
	  I've run and there's no sense in bending over backwards to
	  support an IPC API that is brain-damaged to begin with...

	* apps/Logger/Service_Configurator_Logger/Thr_Server_Logger: Fixed
	  up the code so that the Thr_Logging_Server stuff will compile
	  correctly even for platforms that lack threads!

	* libsrc/Connection/Strategies: Added new strategies that provide
  	  Singleton creation and Process concurrency policies.

	* libsrc/Connection/Connector.C (handle_close): Make sure that all
	  pending timer objects are removed from the Reactor's timer queue
	  when a Connector shuts down.  In addition, make sure to remove
	  and delete all dynamically allocated ASTs, as well.  Thanks to
	  Karl-Heinz Dorn (kdorn@erlh.siemens.de) for suggesting this.

	* libsrc/Threads/Thread_Manager.C (wait): Modified wait() so that
	  it now takes an ACE_Time_Value *, which can be used to wait
	  until all threads terminate or a timeout occurs...

	* libsrc/Threads/Thread_Manager: Moved Thr_Descriptor from within
	  the ACE_Thread_Manager class to become ACE_Thr_Descriptor at
	  file scope.  This is in anticipation of the cool new thread
	  manager stuff on the way...

	* libsrc: Updated every class in ACE to include a "dump" method
	  with the signature "void dump (void);" This method soon will be
	  tied into the ACE_Dump mechanism to allow all live objects in
	  ACE to have their state dumped automagically on-demand.  This is
	  useful for debugging and tracing etc.

	* libsrc: Updated every class in ACE to include a "Alloc hook."
	  This hook will enable all ACE classes to be allocated from a
	  particular memory pool.

	* include/makeinclude/rules.local.GNU: fixed the clean target to
	  delete the *.rpo files (else gcc -frepo can get some crazy
	  errors) and combines all rm-commands for the target realclean
	  into one command (in some cases the last two lines do not have
	  any files to delete, in which case rm produces an usage
	  message).  Thanks to John Huchinson (hutchiso@epi.syr.ge.com)
	  for the patch.

	* libsrc/IPC_SAP/Addr/INET_Addr: Fixed all the uses of gethost*
	  and getserv* to use the reentrant get*_r functions if
	  ACE_HAS_REENTRANT_FUNCTIONS is set and ACE_MT_SAFE is set.
	  Thanks to Bill Tang <tang@tekats.com> for suggesting this.

	* libsrc/Misc/OS: Started adding support for the POSIX *_r
	  functions to the OS class.

	* include/ace: Added a new #define called
	  ACE_HAS_REENTRANT_FUNCTIONS.  This indicates that the platform
	  supports reentrant functions (i.e., all the POSIX *_r functions
	  like gethostbyname_r).

Mon Oct 23 21:15:50 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* include/makeinclude/platform_irix5.3.GNU (LIBS): Removed the
	  link of the nsl lib since it seems not to be present on this
	  platform.  Thanks to Karel Zuiderveld
	  <Karel.Zuiderveld@cv.ruu.nl> for noticing this.

	* libsrc/IPC_SAP/Addr/INET_Addr.i (operator ==): Enhanced the
	  semantics of comparison to check both the port number and IP
	  address.  Thanks to Mark Patton (mark_patton@tx72.mot.com) for
	  suggesting this.

Thu Oct 19 00:10:28 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/IPC_SAP/Addr/INET_Addr.C (set): Fixed a stupid bug that
	  failed to set errno appropriately if things go wrong with this
	  method.  Thanks to Mark Patton (mark_patton@tx72.mot.com) for
	  noticing this!

Sat Oct 14 12:07:16 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Threads/Thread_Manager: Modified the Thread_Manager so
	  that even in the case where we are compiling for non-MT systems
	  the Thread_Manager still has the same method interface (all of
	  which are no-ops).

Wed Oct 11 00:12:57 1995  Douglas C. Schmidt  (schmidt@mambo.cs.wustl.edu)

	* Finished commenting all the classes in ACE.  Updated all manual
	  pages accordingly.

Fri Oct  6 14:17:17 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* tests/ASX/Event_Server/Event_Server: Changed 

	  ACE_SOCK_Acceptor &sa = (ACE_SOCK_Acceptor &) *this->acceptor_;
 
          to
 
          ACE_SOCK_Acceptor &sa = this->acceptor_->acceptor();

	  Thanks to Dieter Quehl (quehl@erlh.siemens.de) for suggesting
          this.

Thu Oct  5 00:22:56 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/ASX/Map_Manager: Added a new find() method to the
	  Map_Manager.  This method only checks for the existence of an
	  EXTERNAL_ID, and doesn't return the INTERNAL_ID.

	* Introduced the new "trait"-based *_Connector, *_Acceptor, and
	  *_Stream interfaces for all the IPC_SAP classes.  Basically, for
	  each class like
	  {SOCK,TLI,SPIPE,etc,}_{Acceptor,Connector,Stream}, there's now a
	  typedef for the appropriate type of ACE_*_Addr subclass and the
	  appropriate type of ACE_*_Stream class.  For example, here's
	  what's in ACE_SOCK_Acceptor (same goes for ACE_SOCK_Connector):
	  
	  class ACE_SOCK_Acceptor 
	  {
	  public:
	    // ...
	    
	    // = Traits.
	    typedef ACE_INET_Addr PEER_ADDR;
	    typedef ACE_SOCK_Stream PEER_STREAM;
	  };

	  Once C++ compilers can grok template typedefs correct, this new
	  approach will allow much greater simplification of code, so that
	  template classes like

	  template <class SVC_HANDLER, class PEER_ACCEPTOR, class PEER_ADDR>	  
	  class ACE_Acceptor { /* ... */ 
	    virtual int open (const PEER_ADDR &); 
	  };
	  
	  that are currently used like this:
	  
	  ACE_Acceptor <My_Svc_Handler, ACE_SOCK_Acceptor, ACE_INET_Addr> acc;

	  can be replaced with

	  template <class SVC_HANDLER, class PEER_ACCEPTOR>
	  class ACE_Acceptor { /* ... */ 
	    virtual int open (const PEER_ACCEPTOR::PEER_ADDR &); 
          };

	  that are used like this:

	  ACE_Acceptor <My_Svc_Handler, ACE_SOCK_Acceptor> acc;

	  i.e., the ACE_SOCK_Acceptor maintains a "trait" that the
	  ACE_Acceptor uses to determine the appropriate addr.  This is
	  more concise and less error-prone than the current scheme that
	  requires you to pass into the ACE_INET_Addr separately (ugh).

	  Note that the trick to making all this work is to typedef the
	  PEER_ADDR trait into the ACE_SOCK_Acceptor class, as follows:

	  class ACE_SOCK_Acceptor {
	  public:
	    typedef ACE_INET_Addr PEER_ADDR; // Trait...
	  };
	  
	  Unfortunately, none of the C++ compilers (e.g., SunC++ 4.0.1,
	  G++ 2.7.0) support this stuff yet...  Therefore, I've added
	  a set of macros that that will toggle back and forth between
	  whichever approach works, depending on the setting of 
	  ACE_HAS_TEMPLATE_TYPEDEFS.  Hopefully, over time compilers will
	  support this stuff correctly and life will become easier.

	* libsrc/ASX/Message_Queue: Changed all occurrences of the S_MUTEX
	  and S_CONDITION macros to ACE_SYNCH_MUTEX and
	  ACE_SYNCH_CONDITION in order to conform to the new ACE namespace
	  control conventions.

	* libsrc/Connection/Acceptor: Modified the Acceptor class to split
	  it into two classes: ACE_Acceptor (which implements a very
	  simple, very concise version of the Acceptor pattern, without
	  all the extra strategy mechanisms, etc.).  These strategies have
	  now been factored out into a new class called
	  ACE_Strategy_Acceptor.  The point of these changes is to "keep
	  simple things simple, but enable powerful extensions when
	  necessary."  All the test programs that utilized the earlier
	  strategy version of the Acceptor have been updated to the the
	  Strategy_Acceptor instead.

	* libsrc/Connection/Connector: added two new protected methods,
	  connect_svc_handler() and activate_svc_handler().  These methods
	  allow subclasses to override the Connector's strategies for
	  connection establishment and concurrency.  In addition, it makes
	  the pattern much easier to explain via the Connector pattern and
	  also is more similar to the Acceptor.

Wed Oct  4 18:45:58 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* apps/Orbix-Examples/Event_Comm: Fixed the examples in this
	  directory so that they compile with the new ACE.

Tue Oct  3 17:33:46 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* include/makeinclude/rules.nested.GNU: Added support so that
	  ACE can now be built in parallel using the -jN option of GNU
	  make.  To accomplish this, just type
	  
	  % make MAKEFLAGS=-j2
	  
	  on the command line and the "-j2" flag will be passed through to
	  the make hierarchy.  Once the SunC++ compiler supports parallel
	  makes correctly (Template.DB causes problems) this will allow me
	  to tke advantage of my new dual-CPU SPARCstation 20!!!

Mon Oct  2 13:34:14 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Connection: Cleaned up some of the code related to
	  Time_Values * by adding a new method call time_value() to the
	  ACE_Synch_Options class.

	* libsrc/Service_Config/Service_Record: Changed things a bit so
	  that we don't have to include "ace/Stream.h" in
	  Service_Record.h, but instead use forward decls of the
	  appropriate types.  This breaks a circular dependency that was
	  causing problems for GNU C++.  Thanks to John Hutchinson
	  (hutchiso@epi.syr.ge.com) for finding this problem.

Sat Sep 30 13:45:08 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* Changed all uses of typedef PARENT to inherited, which is less
	  obtrusive.

Fri Sep 29 01:33:54 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Misc: Completed the new OS class, which will be used
	  shortly to remove all direct UNIX system calls in ACE.

	* libsrc: Completed redocumented the header files for almost all
	  of ACE.  The goal was to document all the methods in all the
	  classes.  This has most been achieved (only a few minor changes
	  remain).  The result is *much* better manual page entires in
	  ./man/man3, as well as much more consistent header files and
	  overall documentation for ACE.

	* libsrc/Reactor/Reactor: Changed all uses of get() to
	  handler_i().  Also changed the check_connections() method to
	  check_handles().  Note that all these changes are invisible to
	  apps...

Thu Sep 28 01:22:36 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/IPC_SAP/Addr/SPIPE_Addr: Changed all occurrences of
	  {get,set}_user_id() and {get,set}_group_id() to user_id() and
	  group_id() in order to be more consistent with other parts of
          ACE.

	* libsrc/ASX/Task.C (module): Modified the implementation of
	  several Task helper methods (e.g., sibling()) so that they don't
	  crash if there is not Module associated with the Task.

	* libsrc/ASX/Stream: Removed the sync_ data member from the
	  private part of Stream since it didn't seem to be used for
	  anything.

	* libsrc/ASX/Map_Manager.C (bind): Changed the type of the INT_ID
	  to bind() from INT_ID to const INT_ID &.

	* libsrc/IPC_SAP/Addr/Addr: Moved some methods around in the *.i
	  file to the *.C file in order to be smarter about inlining.

	* libsrc/Misc/Auto_Ptr.h: Added a new pair of classes called
	  "auto_ptr" and "auto_array_ptr".  These implement the ANSI/ISO
	  C++ standard auto_ptr mechanism, which helps to write
	  exception-safe code.  The code is based on material from Jack
	  Reeves (jack@fx.com) and Dr. Harald M. Mueller
	  (mueller@garwein.hai.siemens.co.at).

	* libsrc/Threads/Synch_T.h (ACE_Null_Condition): Changed the
	  behavior of Null_Condition::{signal,broadcast} so that they
	  return 0 rather than setting errno = ETIME and returning -1.

Wed Sep 27 00:16:01 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Threads/Synch: Fixed a bug with class ACE_Barrier: count_
	  wasn't being set properly.

	* tests/Threads/test_barrier.C (main): Fixed a stupid bug 
	  in the ACE_Barrier -- the main function was exiting, thereby
	  destroying the barrier!

	* tests/IPC_SAP/{SOCK,TLI}_SAP: Added test cases to exercise the
	  new reuse_addr feature of SOCK_Connector and TLI_Connector.

	* libsrc/IPC_SAP/{SOCK,TLI}_SAP/{SOCK,TLI}_Connector: Implemented
	  the new behavior for reusing a local address.  Also fixed a few
	  error cases that would have lead to descriptor leaks.

	* libsrc/IPC_SAP/SOCK_SAP/SOCK.C (open): Modified a few return
	  values and comparisons to ease the transition to WIN32.  

	* libsrc/ASX/Task.C (ACE_Task): Changed the behavior of
	  Task::activate() so that it uses the
	  ACE_Service_Config::thr_mgr() Singleton if no thread manager has
	  been associated with a Task when it becomes an active object.

	* libsrc/Service_Configurator/Service_Config: Added a new static
	  method to class Service_Config called thr_mgr().  This static
	  method behaves as a "Singleton" and provides a convenient
	  default thread manager that is available to all threads
	  throughout a process.

	* libsrc/IPC_SAP: Changed all the IPC_SAP/*_SAP/*_Connector.[hiC]
	  files and the Connection/Connector.[Chi] class in order to add
	  "reuse_addr" behavior consistent with the Reactor.  This enables
	  the client to specify that the "local_addr" should be reused
	  (e.g., via SOCKREUSEADDR), even if its "2 minute wait" time
	  hasn't elapsed yet.  The libsrc/Connection/Connector.[Chi] files
	  were also changed to support this new interface.

	* libsrc/Log_Msg/Log_Msg.C (log): Fixed a mistake in Log_Record
	  caused by the new thread-safe storage enhancement.  The data
	  being logged was being rounded up incorrectly.  Thanks to Daniel
	  Proulx (daproulx@qc.bell.ca) for reporting this.

	* libsrc/Reactor/Signal.i (operator): Made a minor change to the
	  definition of operator struct sigaction * to work around a bug
	  with the HP/UX C++ compiler (lame, lame, lame)...

	* libsrc/Service_Config: Changed all occurrences of
	  ACE_Service_Config::reactor (which was originally a globally
	  accessible public method of class ACE_Service_Config) to
	  ACE_Service_Config::reactor () (i.e., made the reactor a
	  Singleton implemented by a static method).  This was long
	  overdue and will fix all sorts of niggling problems with order
	  of initialization since the reactor() method can do "lazy
	  creation" of Reactors now, i.e., create one the first time it is
	  referenced.  In addition, changed the
	  ACE_Service_Config::svc_rep to ACE_Service_Config::svc_rep () in
	  the same manner.

	* Changed all occurrences of the form:
	
	  *_Stream stream;
	  *_Connector con (stream, remote_addr);
	  
	  if (stream.get_handle () == ACE::INVALID_HANDLE)
	     ...
	
          To 

	  *_Stream stream;
	  *_Connector con;
	  
	  if (con.connect (stream, remote_addr) == -1)
	     ...
	  
	  which is cleaner and less error prone with respect to
	  UPIPE_Stream (which doesn't have a valid handle once it's
	  connected).

	* Changed all occurrences of get_handle () == -1 to get_handle ()
	  == ACE::INVALID_HANDLE to help smooth the move to WIN32...

	* libsrc: Created a new directory called Shared_Memory and moved
	  the Shared_Malloc_MM and Shared_Malloc_SV classes from the
	  ./Shared_Malloc directory to here, where they are now called
	  Shared_Memory_MM and Shared_Memory_SV.  This is a better
	  name/place for them since they never really had anything to do
	  with malloc in the first place!  What remains the Shared_Malloc
	  is the Malloc.* and Memory_Pool.* classes, which are typically
	  used for truly shared malloc/free.

	* apps/Gateway/Gateway: added new logic to the Gateway to enable
	  it to specify which local port to bind() to.

Tue Sep 26 21:17:29 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Connection/Strategies.C (open): Added a return 0; at the
	  end of the ACE_Thread_Strategy::open method.

	* tests/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.C:
	  Made CLI_Stream a template so that we don't have to worry about
	  multiple includes of classes...

Mon Sep 25 01:41:27 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/IPC_SAP: Revised the close() method of TLI_SAP and
	  SOCK_SAP so that they don't try to close down a handle that ==
	  ACE::INVALID_HANDLE.

	* Changed all uses of ::free ((char *) ...) to ::free
	  (ACE_MALLOC_T (...)) to work around inconsistent prototype
	  problems with some compilers.

	* include/ace/sysincludes.h: Changed ACE_MALLOC_TYPE to
	  ACE_MALLOC_T which is a bit less verbose...

	* libsrc/Service_Configurator/Makefile (BUILD): Fixed the argument
	  to sed from -s (which is invalid) to -e (which is valid).
	  Thanks to Doug Ritter (dougr@guilder.datalytics.com) for
	  noticing this.  Also used sed to do a more elegant fix on the
	  age-old problem of inconsistent prototypes for free() and
	  realloc()...

	* libsrc/IPC_SAP/UPIPE_SAP: Rewrote all the UPIPE_* classes to
	  remove any dependencies on class UPIPE.  This class appears to
	  be unnecessary since it mimics the behavior of class SPIPE.  To
	  simplify the behavior of the UPIPE_* classes, they now inherit
	  from the SPIPE_* classes where appropriate.

	* libsrc/IPC_SAP/UPIPE_SAP: Changed the semantics of the
	  UPIPE_Connector and UPIPE_Acceptor connection methods so that
	  they close down the SPIPE_Stream after a connection is
	  established successfully.  This is important to conserve
	  descriptors.

	* libsrc/Misc: Created a new class called OS, which encapsulates
	  *all* of the UNIX system calls and library routines within a
	  single class.  The rest of ACE will program only to the methods
	  in this interface, which will make it much easier to port to
	  other versions of UNIX (and WIN32!).

Sun Sep 24 11:49:47 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/IPC_SAP/SOCK_SAP: Conditionally compile the LSOCK_* stuff
	  if the OS platform (e.g., Linux) doesn't support it.

	* Changed all occurrences of ACE_HAS_NO_... to ACE_LACKS_... in
	  all the config*.h files and the headers/source.  This reads
	  better...

	* Changed all uses of (1) Acceptor::peer_acceptor_ to
	  Acceptor::acceptor(), (2) Svc_Handler::peer_ to
	  Svc_Handler::peer(), and (3) Connector::peer_connector_ to
	  Connector::connector() to make the code more abstract and
	  resilient to future changes.

	* include/ace/sysincludes.h: Added a new macro called
	  ACE_NEW_RETURN that provides a useful abstraction for
	  expressions involving operator new since we can change memory
	  allocation error handling policies (e.g., depending on whether
	  ANSI/ISO exception handling semantics are being used).

	* libsrc/Threads/Thread.C: Changed things a bit so that if
	  ACE_MT_SAFE == 0 then Thread::self() returns 1, regardless of
	  whether the platform supports threads.

	* Went through the entire library and (hopefully) made sure that
	  all calls to global system calls and library routines are
	  prefixed with "::".

	* libsrc/Misc/Get_Opt.C: Changed this class to use the Log_Msg
	  logging mechanism rather than stderr...

	* tests/Misc: Added a new test program to test the Profile_Timer.

	* tests/Reactor/misc: Added a new test program to test the
	  Handle_Set.

	* libsrc/Service_Configurator: Changed the error messages in
	  Svc_Conf.y and Svc_Conf.l to go to the ACE Log_Msg logging
	  mechanism rather than stderr...

	* libsrc/Connection/Acceptor: Modified the Acceptor and
	  Oneshot_Acceptor classes so that they take advantage of the new
	  ACE_Creation_Strategy, ACE_Accept_Strategy, and
	  ACE_Concurrency_Strategy components.  This will make is easy to
	  define Acceptors that can be flexibly configured to use various
	  creation strategies (e.g., dynamic linking, singletons, dynamic
	  memory creation, etc.) for making Svc_Handlers.

	* libsrc/Connection/Svc_Handler: Added several new classes --
	  ACE_Creation_Strategy, ACE_Accept_Strategy, and
	  ACE_Concurrency_Strategy -- that form the heart of the new
	  ACE_Acceptor implementation.  These classes define the creation,
	  passive connection acceptance, and concurrency strategies
	  employed by the Acceptor factory when it receives a connection
	  from a client.

	* libsrc/Connection/Acceptor: Modified the implementation of the
	  Acceptor and the Oneshot_Acceptor.  These classes are no longer
	  related by inheritance since they behave in fundamentally
	  different ways and sharing code was making it hard to write and
	  use these classes correctly.

	* libsrc/Misc/Misc: Moved the enum INVALID_HANDLE from IPC_SAP.h
	  to Misc.h since this is actually more general than just the
	  sockets stuff and we need to be portable to WIN32...  Therefore,
	  any code that originally said ACE_IPC_SAP::INVALID_HANDLE should
	  now be ACE::INVALID_HANDLE.

	* Removed the ACE_OMIT_SERVICE_CONFIGURATOR flags.  These are
	  annoying -- anyone who wants to subset ACE should be responsible
	  for doing this stuff.

Fri Sep 22 22:36:33 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Threads/Thread_Spawn.C: Greatly simplified the
	  implementation of Thread_Spawn by leveraging the new class Task
	  semantics for activate().  Now, all the concurrency activation
	  mechanisms necessary to create active objects are associated
	  with a Task and all the Thread_Spawn needs to do is to define a
	  new make_svc_handler() Factory Method to create a SVC_HANDLER
	  and activate it!

	* libsrc/ASX/Task.C: Tightened up the semantics of Task::activate
	  (which turns a passive object into an active object, i.e., one
	  with its own thread).  Now, if an object is activated more than
	  once it ignores the other requests, unless the force_active
	  parameter is enabled.  Moreover, activate() now takes a
	  parameter that indicates the number of threads to allocate for
	  the Task.  This makes it simple to have a "thread pool"
	  associated with a Task.

Thu Sep 21 00:49:55 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* tests/Connection: Updated the CPP-acceptor and CPP-connector to
	  use the underlying Acceptor and Connector patterns more
	  robustly.  Also added new hooks to include a Service_Config
	  component so that integrating this with the ACE dynamic linking
	  scheme will be a snap!

	* libsrc/Connection/Acceptor.C: Revised the Oneshot_Acceptor to be
	  robust in situations where it isn't given a Reactor *...

	* apps/Logger: Fixed a couple of minor problems with *.i files
	  being included when __INLINE__ is set.  This should help G++
	  compiler ACE better...

	* libsrc/Reactor/Reactor: Enhanced the Reactor::notify() method so
	  that it takes both an Event_Hander * and a Reactor_Mask, which
	  it passes to the Reactor's main event loop thread via the pipe.
	  The event loop thread uses this mask to determine which method
	  to invoke.  This new feature is due to the insight of Karl-Heinz
	  Dorn (kdorn@erlh.siemens.de).

	* libsrc/Connection/Connector: Fixed a braino in
	  Connector::handle_output, which was using ::getpeername() to
	  check whether a connection has been established with a peer.
	  Naturally, this only works for sockets, and doesn't work at all
	  for TLI or SPIPEs...

	* libsrc/IPC_SAP/Addr/SPIPE_Addr.C (set): Changed the return type
	  of this method to "int" in order to conform to the types
	  expected by the Acceptor/Connector patterns.

	* Removed all uses of the global scope "::" for all variables and
	  methods that are not UNIX system calls or library calls in
	  preparation to change over to the new OS class (requested by
	  Siemens).

Wed Sep 20 14:39:08 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/IPC_SAP/SPIPE_SAP: Renamed the SPIPE_IO classes to
	  SPIPE_Stream to be consistent with the other parts of the ACE
	  library.  Updated all parts of the library to reflect this
	  change.

	* tests/Service_Configurator: Moved the current contents of this
	  directory into a new directory called IPC-tests.  Created a new
	  directory called Connection-tests where the dynamic linking
	  examples for Siemens will go.

	* libsrc/Reactor/Signal: Made a bunch of minor changes to support
	  signal handling on SunOS 4.x platforms.  Thanks to Aniruddha
	  Gokhale <gokhale@cs.wustl.edu> for help with this.

	* libsrc/Threads/Synch.h: Modified the #ifdefs a bit so that
	  Synch_T.h gets included regardless of whether ACE_HAS_THREADS.

	* libsrc/Threads/Synch_Options: Added a new set() method to make
	  it possible to initialize the Synch_Options from outside the
	  constructor.

	* libsrc/Connection/Svc_Handler.C: Added checks within the
	  ACE_Svc_Handler so that if we are given a NULL Reactor we don't
	  crash!

	* libsrc/Mem_Map: Tidied up this class and added comments to the
	  header so that the class2man has something to generate manual
	  pages from!

	* libsrc/Misc/Misc: Added a new method called "round_to_pagesize",
	  which was previously in Mem_Map.  This is a better place for it
	  since other parts of ACE (e.g., Shared_Memory) use it.

	* libsrc/Misc/Misc: Added a new method called "get_file_size",
	  which was previously in Mem_Map.  This is a better place for it
	  since other parts of ACE might want to use it.

Tue Sep 19 00:24:41 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* Released a beta version of ACE 3.3.1 for G++ testing.

	* libsrc/IPC_SAP/SOCK_SAP/SOCK_Dgram.C: Removed a stray INLINE
	  that was causing problems for G++.  Thanks to E. Jason Scheck
	  <jasons@ims.com> for reporting this.

	* libsrc/IPC_SAP/Addr/INET_Addr: Improved the documentation for
	  this class and also added new semantics to the constructor and
	  set() method so that a "ip_addr:port_number" tuple can be given
	  as a single string (e.g., "1234:tango.cs.wustl.edu" or
	  "1234:128.252.166.57").  This is useful since it gives a uniform
	  interface for addressing for Internet domain, UNIX domain, and
	  SPIPE domain addresses...  Updated the ./tests/Connection tests
	  to use this form (which is nice since now they are all very
	  orthogonal!)

	* tests/Connection: Created a whole new suite of tests that
	  exercise the connection patterns for all of the relevant IPC
	  mechanisms (e.g., SOCK_SAP, TLI_SAP, SPIPE_SAP, and UPIPE_SAP).

	* bin/clone.C: fixed the first #include so that it uses #include
	  "ace/sysincludes.h".  Thanks to Alex V Maclinvosky
	  <alexm@teltrunk1.tait.co.nz> for noticing this.

Mon Sep 18 01:52:07 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/ASX/Message_Queue.C (close): Fixed yet another problem
	  with variables being defined in for loops.  G++ is good for
	  detecting this ;-).

	* libsrc/Threads: Moved all the template classes from Synch.* into
	  Synch_T.* in order to make it possible to compile templates with
	  G++.  Thanks to E. Jason Scheck <jasons@ims.com> for suggesting
	  this.

	* libsrc/IPC_SAP/UPIPE_SAP: Make a number of changes to ensure
	  that all the UPIPE_SAP classes conform to the same interface as
	  all the other ACE IPC classes.

	* Changed all occurrences of THR_FUNC to ACE_THR_FUNC to protect
	  the global namespace better.

Sun Sep 17 13:36:23 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* tests/ASX/Message_Queue: Fixed a typo in these test programs
	  that caused a segfault since a vararg parameter was omitted on a
	  call to the Log_Msg::log() method.  Maybe iostreams isn't so bad
	  after all... ;-)

	* apps/Logger/Service_Configurator_Logger/Thr_Server_Logger: fixed
	  a stupid error that was caused by some mods I made after ECOOP
	  to update the threaded logging server.  When I changed the
	  Thr_Logging_Acceptor so that it no longer inherited from the
	  Logging_Acceptor I forgot to redefine the init() method...

	* man: Totally regenerated the ACE manual pages using the new
	  versions of the OSE tools provided by Karl-Heinz Dorn
	  (kdorn@erlh.siemens.de).

	* Changed all occurrences of MT_SYNCH and NULL_SYNCH to
	  ACE_MT_SYNCH and ACE_NULL_SYNCH, respectively.  This is
	  consistent with the ACE naming conventions and had been an
	  oversight when I renamed everything earlier.

	* Fully built and tested ACE with the __INLINE__ flag enabled.
	  This will generate code with many small methods in the library
	  inlined.  Had to fix a bunch of minor things to allow this to
	  work without compilation-order dependency problems.

        * libsrc: Made a bunch of changes to the way that header files are
	  included internally to ACE in order to break compilation-order
	  dependencies.  This is necessary to support GNU G++'s lame
	  handling of templates.  None of this stuff should affect
	  application code.

	* tests: Added a whole new slew of tests for the remaining parts
	  of ACE that weren't currently included in ./tests.  This stuff
	  exercises ACE components like the Log_Msg logger and factors all
	  the #if defined (DEBUGGING) code out of the ./libsrc directory
	  tree and puts it in the ./tests directory tree, where it
	  belongs.

	* Changed all uses of the error macros LM_* to ACE_* in order to
	  avoid name collisions with other libraries, frameworks, and
	  toolkits.  In addition, changed all uses of the error enumerals
	  LOG_ to LM_ in order to avoid a conflict with system #defines in
	  <sys/syslog.h>.

	  In order to change these automatically, I used the following 
	  UNIX command sequence:

	  % find . -type f -print | xargs perl -p -i -e 's/LM_/ACE_/g'
	  % find . -type f -print | xargs perl -p -i -e 's/LOG_/LM_/g'

Sat Sep 16 11:55:18 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* tests/Threads: Added a new test for Thread_Specific storage.

	* Added a new platform/compiler configuration flag called
	  ACE_TEMPLATES_REQUIRE_SOURCE that must be set for compilers 
	  (e.g., GNU G++) whose template mechanism must be able to
	  see the source code (i.e., the *.C files).  Changed *lots* of
	  header files to enable this...  Also had to change the
	  corresponding *.C files so that they wouldn't get included
	  twice...

        * libsrc/Connection: redid the implementation of Acceptor,
	  Connector, and Svc_Handler to get more control over the scope of
	  #defines like #define SH SVC_HANDLER, etc.

	* libsrc/Threads/Thread_Spawn: Totally redid the implementation of
          Thread_Spawn to use the Acceptor class template.  This greatly
          reduces the amount of code to implement the Thread_Spawn!

	* libsrc/Threads/Thread_Spawn: Moved the Thread_Spawn
	  implementation into the ./libsrc/Threads directory rather than
	  in the ./libsrc/Service_Configurator directory since it deals
	  with threading and thus belongs in the other place.

Fri Sep 15 00:25:51 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Threads/Token.i (tryacquire): Added a cast to fix passing
	  a const pointer to a function that was expecting a non-const.
	  Thanks to E. Jason Scheck <jasons@ims.com> for reporting this.

	* libsrc: Added a bunch of changes to enable G++ to compile ACE.
	  A lot of this involves moving around info in header files so
	  that templates can be dealt with using the relatively lame GNU
	  C++ repository scheme.  Thanks to E. Jason Scheck
	  <jasons@ims.com> for all his help in this.

        * libsrc/Synch: created Synch_Options.C out of Svc_Handler.C, so
	  that Svc_Handler.C could be "template pure"; all the other files
	  were already separated.  Thanks to E. Jason Scheck
	  <jasons@ims.com> for recommending this.

	* Makefile (clone): Added a tiny fix that solves a weird problem
	  that arises with symbolic links on HP/UX.  Thanks to Jam Hamidi
	  (jh1@osi.com) for tips on how to fix this.

Thu Sep 14 10:55:30 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* apps/Gateway/Gateway/Channel.C (route_message): Updated the main
	  routing code to check for whether a channel is_active()
	  (i.e., is actually connected) before trying to send messages
	  to it.  This was originally done in the Set class iterator, but
	  I revised that to make it more reuseable and to workaround bugs
	  in the HP/UX compiler so I had to update the main code...

	* libsrc/Threads/Thread_Specific: Added a new method to called
	  ts_object () to class ACE_Thread_Specific that get the
	  thread-specific object for the key associated with this object.
	  Returns 0 if the data has never been initialized, otherwise
	  returns a pointer to the data.  This is useful since now you can
	  query a thread-specific storage mechanism to see if there's ever
	  been a thread-specific object created *without* having to
	  actually create one if one hasn't been created yet!  Thanks to
	  Detlef Becker (beckerd@erlh.siemens.de) for pointing this out.

	* include/makeinclude/platform_sunos5_sunc++_orbix.GNU (LIBS):
	  Changed the default compilation strategy for SunOS 5.x machines
	  to use -mt.  This seems to be necessary to build robust
	  libraries that are thread-safe.  Thanks to Phil Mesnier
	  <phil@yakko.envision.com> and Chris Cleeland
	  <chris@envision.com> for hounding me until I changed the
	  existing solution.  If you *don't* want this behavior you need
	  to remove -mt from the platform_macros.GNU file and and remove
	  the ACE_HAS_THREADS and ACE_MT_SAFE flags, etc. from the
	  config-sunos5.*.h files.

	* libsrc/Shared_Malloc/Memory_Pool.C (ACE_MMAP_Memory_Pool): Added
	  a new parameter to the constructor called write_each_page that
	  if enabled forces a write to each page to ensure that space is
	  allocated from the file system (otherwise, we can end up failing
	  due to optimisitic resource allocation...).  Thanks to Phil
	  Brooks <phil_brooks@mentorg.com> for detecting this issue and
	  implementing a solution.

	* include/ace/sysincludes.h: Added #ifdef support for HP/UX, which
	  fails to properly wrap <sys/mman.h> with an extern "C" block.

Mon Sep 11 01:39:35 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Connection/Connector.C (handle_input): Changed the call
	  to Svc_Handler::close() to accept the default value of 0 rather
	  than -1...  Thanks to Mark Seaborn
	  <mseaborn@itthp1.comm.mot.com> for noticing this.

	* libsrc/Connection: Changed all uses of ADDR to PEER_ADDR to
	  avoid a name clash in Linux...  Thanks to James Morris
	  <jmorris@aurora.apana.org.au> for finding this.

Sun Sep 10 03:56:18 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Threads/Synch: Added support for "barrier
	  synchronization" to ACE in the form of ACE_Barrier.  Thanks to
	  Bruce Worden (bruce@betsy.gps.caltech.edu) for suggesting this
	  and pointing me in the right direction.

	* tests/Threads: Added a test for the new barrier synchronization
	  mechanism. 

Sat Sep  9 11:58:16 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Reactor/Reactor: Changed Reactor::max to Reactor::max3 to
	  avoid problems with conflicting names of macros in Sun header
	  files!

Mon Sep  4 14:34:52 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Reactor/Signal: The new ACE_Signal_Handlers mechanism
	  appears to be working!  There's a test in ./tests/Reactor/misc
	  called test-signal.C that illustrates how all this works.

	* libsrc/Reactor/Signal: Added several new methods to
	  ACE_Sig_Action to make life easier to implement the new
	  ACE_Signal_Handler code...

	* libsrc/Reactor/Signal.C (ACE_Sig_Action): Changed the order of
	  the arguments to the ACE_Sig_Action constructor.  It's almost
	  always the case that you want to vary the SignalHandler, but
	  only rarely do you want to vary the mask or flags.  By
	  reordering this, it's easier to get the correct default values
	  without adding extra junk...

Mon Sep  4 01:11:29 1995  Tim Harrison  (harrison@tango.cs.wustl.edu)

	* libsrc/IPC_SAP/SOCK_SAP/SOCK_Dgram_Multicast: added support to
	  allow a port to be reused for multicast sockets.  This is useful
	  if you are multicasting to multiple processes, some of which are
	  on the same host!

	* libsrc/ASX/Map_Manager: Fixed an odd bug that must have gone
	  undetected for a long time somehow.  Basically, the "is_free_"
	  field of the ACE_Search_Structure struct was never being set to
	  it's correct initial value of 1.  I don't know how this didn't
	  surface before...  At any rate, it is fixed now...

	* include/ace/sysincludes.h: Changed the inline methods for
	  SET'ing and CLR'ing bits to be macros in order to get cheap
	  polymorphic behavior...  Also changed them to use the prefix
	  "ACE_" to avoid namespace pollution.  Changed all dependencies
	  in the source code (only a few...).

	* libsrc/Reactor/Signal: Added a new class called
	  ACE_Signal_Handlers, which subclasses from ACE_Signal_Handler.
	  This new class implements the semantics required for Siemens.
	  For example, this class allows multiple signal handlers to be
	  registered for the same signal.  It also makes SA_RESTART the
	  default mode.  Note that by default, the Reactor uses the
	  original ACE_Signal_Handler semantics.  If you want the new
	  semantics, simply pass the Reactor a pointer to
	  ACE_Signal_Handlers.

	* include/ace/sysincludes.h: Removed the automatic inclusion of
	  ./libsrc/Misc/Misc.h from sysincludes.h since this was causing
	  problems with include file ordering.

Sun Sep  3 00:22:11 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Reactor/Signal.C (remove_handler): Moved a definition of
	  ACE_Sig_Action out of an inner block to avoid portability
	  problems.

	* libsrc/ASX/Map_Manager: Improved the documentation of this class
	  and fixed up a couple of problems with the scope of loop
	  indexes.

	* libsrc/Misc/{Stack,Set}: Added this new file that contains a set
	  of Stack and Unordered Set implementations.  The Unordered Set
	  is used in various places in ACE (e.g., libsrc/Reactor/Signal
	  and apps/Gateway/Gateway/Routing_Entry).

	* libsrc/Log_Msg/Log_Msg: Moved the definition and declaration of
	  Thread_Specific<Log_Msg> ace_log_msg from this directory to
	  ./libsrc/Misc/Misc.h in order to cleanup the namespace and also
	  to help make this work on DEC platforms...

	* libsrc/Reactor/Signal: Changed ACE_Signal_Handler from a static
	  class to a non-static class in order to allow subclassing.  This
	  is necessary to support the Siemens requirements.

	* libsrc/Shared_Malloc/Memory_Pool: Modified ACE_MMAP_Memory_Pool
	  so that it no longer stores the name of the backing store in a
	  static character array (which made it impossible to have more
	  than one of these at a time...).  The new version stores the
	  name in each ACE_MMAP_Memory_Pool object.  It also selects a
	  name that won't conflict with other names by using ::mktemp.

	* tests/Shared_Malloc/test_malloc.C (parse_args): Fixed two stupid
	  omissions of "break" when parsing command-line arguments.  Isn't
	  C++ great?! (NOT)...

	* apps/Synch-Benchmarks: Came up with a killer solution to the
	  nagging problem of POSIX Pthread's lack of an integral thread id
	  (a la Solaris threads thr_self()).  The solution leverages off
	  of our new ACE_Thread_Specific wrapper to provide the necessary
	  functionality.  Thanks to Reginald S. Perry (perry@zso.dec.com)
	  for triggering the thoughts that lead to this solution...

Sat Sep  2 17:00:46 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/IPC_SAP/TLI_SAP/TLI_Acceptor: Changed the implementation
	  of ACE_TLI_Acceptor so that ACE_TLI_Request is defined inside
	  the TLI_Acceptor.C file (this is the so-called "Cheshire Cat"
	  technique).  This clean up the code and the global namespace a
	  bit.

Fri Sep  1 00:53:47 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* Released new version of ACE 3.3

	* libsrc/IPC_SAP/UPIPE_SAP/UPIPE.C: Fixed a small problem with
	  failing to #ifdef this file correctly if we don't have
	  threads...  Thanks to John Morey (jmorey@hitel.com) for
	  reporting this.

	* tests/ASX/CCM_App/svc.conf: Fixed the svc.conf file so that it
	  looked in the .shobj directory rather than the .obj directory.

	* Released new version of ACE 3.2.9...

	* libsrc/Log_Msg/Log_Msg: Added a new field called "restart_" to
	  the thread-specific storage.  This will be used to control
	  whether system calls are restarted when interrupted.

	* Changed inheritance syntax from

	  class xxx
	    : public yyyy
	  {
	  };

	  to 

	  class xxx : public yyyy
	  {
	  };

	  so that the OSE tools would work correctly.

Thu Aug 31 00:12:40 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/IPC_SAP/UPIPE_SAP: Changed all uses of UPIPE_Addr to
	  SPIPE_Addr since they were the same thing.  This also allows
	  much reuse of code...

	* libsrc/IPC_SAP/{TLI_SAP,SOCK_SAP,SPIPE_SAP}: fixed the
	  "complete" method for these classes so that it uses the new
	  ACE::handle_timed_complete() method in libsrc/Misc.  This cleans
	  up the code by merging common logic.

	* libsrc/IPC_SAP/{DEV_SAP,FILE_SAP,SPIPE_SAP}: fixed the "connect"
	  method for these classes to conform to the API used by the
	  SOCK_SAP and TLI_SAP wrappers.  In addition, cleaned up the code
	  so that common logic was pushed into a new method in libsrc/Misc
	  called ACE::handle_timed_connect().

Wed Aug 30 00:20:18 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Connection/Acceptor.C (open): Fixed this method so that
	  it returns a value on all paths through the code...

	* libsrc/IPC_SAP/TLI_SAP/TLI.C (ACE_TLI): Moved the option
	  allocation code from the TLI::open() method into the TLI
	  constructor in order to make sure it is always called!

	* libsrc/IPC_SAP/DEV_SAP/DEV_Connector: Changed the signature of
	  the DEV_Connector::connect method to allow users to specify
	  flags, permissions, and timeouts (this is now consistent with
	  other parts of ACE).

	* libsrc/IPC_SAP/FILE_SAP/FILE_Connector: Changed the signature of
	  the FILE_Connector::connect method to allow users to specify
	  flags, permissions, and timeouts (this is now consistent with
	  other parts of ACE).

	* tests/IPC_SAP/TLI_SAP: Updated the test code to check the new
	  timer support for connection establishment.

	* libsrc/IPC_SAP/TLI_SAP: Updated the code to make it conform to
	  the interfaces provided by SOCK_SAP.  This primarily affected
	  the TLI_Acceptor and TLI_Connector classes in order to add
	  support for timed connects and accepts.

	* libsrc/Reactor/Signal.C: Modified Signal_Handler::dispatch so
	  that it saves/restores errno to prevent it from being corrupted
	  by the handle_signal callback.  Thanks to Detlef for suggesting
	  this.

	* libsrc/Shared_Malloc/Memory_Pool: Changed the name of
	  ACE_Local_Memory_Pool to ACE_Sbrk_Memory_Pool.  Then added a new
	  version of ACE_Local_Memory_Pool that uses the C++ operator new
	  to acquire chunks of memory.  This enables the ACE Malloc class
	  to integrate with existing programs that use new/delete.  Thanks
	  to Karlheinz for suggesting this.

	* libsrc/IPC_SAP: Added the UPIPE mechanism donated by SIEMENS.
	  This provides an intra-process IPC mechanism that has the same
	  API as the interprocess and network mechanisms.

	* Reran catman on ./man/windex.  Thanks to Dieter Quehl
	  (quehl@csaserv.erlh.siemens.de) for reporting the need for this.

	* Released new version of ACE 3.2.9...

	* tests: Fixed a bunch of minor problems that occurred when
	  building on HP/UX.  Thanks to John Morey
	  (jmorey@hitel.com) for reporting these.

	* apps/Gateway/Gateway/Peer_Message.h: Changed the default values
	  of the parameters to Peer_Addr so they aren't trying to assign
	  negative values to unsigned chars!  Thanks to John Morey
	  (jmorey@hitel.com) for noticing this...

Tue Aug 29 18:52:17 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Thread/Thread_Specific: Changed the constructor so
	  that it will take an initial TYPE *, which will be used to
	  initialize the thread-specific object.  This is necessary to
	  support the changes to ACE_Task described in the following
	  bullet.

	* libsrc/ASX/Task: Added a new class called ACE_Task_Exit to
	  Task.C.  This class is used in conjunction with
	  ACE_Thread_Specific to keep exit information for a Task in
	  thread-specific storage.  This ensures that the Task::close()
	  method will get called no matter how the thread exits (e.g., via
	  Thread::exit() or by "falling off the end of Task::svc_run").

Mon Aug 28 09:54:35 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* Released new version of ACE 3.2.9...

	* libsrc/Reactor/Handle_Set.C: changed the type of MSB_MASK from
	  u_long to ACE_UINT32 to handle problems with the Alpha's 64 bit
	  longs...

	* libsrc/Threads/Thread_Specific: Continued to try and get this
	  class to build correctly on other platforms...  I think I've
	  just about got it working right now...

	* libsrc/IPC_SAP/IO_SAP/IO_SAP: Added installation flags that
	  indicate whether the platform has terminal ioctl flags like
	  TCGETS and TCSETS.  I know that SunOS 5.x has these, but I'm not
	  sure about other platforms...

Sat Aug 26 13:55:45 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* Released new version of ACE 3.2.9...

Fri Aug 25 09:05:09 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Threads/Thread_Specific.h: Fixed a typo that was causing
	  this file to fail on HP/UX.  Thanks to Neil Cohen
	  (nbc@metsci.com) for finding this!

	* libsrc/IPC_SAP/DEV_SAP/DEV_IO: Added conditional support for
	  getmsg/putmsg calls in the DEV_IO class.  This will make things
	  work correctly for platforms that don't support SVR4 STREAM
	  pipes.

	* libsrc/IPC_SAP/FILE_SAP/FILE_IO: Added the same fixes to FILE_IO
	  that I added to DEV_IO...

	* include/ace/sysincludes.h (MAXNAMELEN): Fixed a typo in
	  sysincludes.h that caused problems for the G++ compiler.

	* libsrc/Connection/Acceptor.C (handle_close): Removed a
	  diagnostic message that was getting printed if a
	  Oneshot_Acceptor had already been removed from the reactor (it's
	  ok for this call to fail).  Thanks to Irfan Pyarali
	  (ip1@cec.wustl.edu) for noticing this!

	* libsrc/ASX/Task.C (ACE_Task): Fixed a bug in the constructor
	  that prevented a Message_Queue from being allocated
	  automagically.

Thu Aug 24 16:47:14 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* include/ace/sysincludes.h: added support for 64 bit machines so
	  that Internet addresses are 32 bits, as they must be!

	* libsrc/Shared_Malloc/Malloc: Changed things so that MALLOC_STATS
	  is now *off* by default...  (also changed the name to
	  ACE_MALLOC_STATS).

Wed Aug 23 15:21:25 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* include/ace/config-osf1.h: Added support for thread-specific
	  storage.  Please let me know if this breaks on OSF/1!

	* libsrc/Threads/Thread: Added support for the thread-specific
	  storage wrappers for both Pthreads and Solaris threads.  Also,
	  rearranged some of the code to emphasize similarities between
	  Pthreads and Solaris threads.

	* libsrc/Threads/Thread_Specific: Updated this to remove "static"
	  from all the data members in this class since those should be
	  specific to an *instance* rather than to an instantiation of the
	  particular template class.  Tim claims this works...

	* libsrc/Threads/Token.C: Fixed a couple of typos that misspelled
	  "assert" (jaysus...).  Thanks to David Trumble
	  (trumble@cvg.enet.dec.com) for noticing this.

	* libsrc/Threads/Token.C (release): Fixed a very stupid bug that
	  was causing the Token never to become "unused"...  No excuses
	  for this, except that Pthreads is partly responsible ;-)

Tue Aug 22 11:36:58 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/ASX/Task: Changed the behavior of task so that it doesn't
	  try to delete the Message_Queue or Thread_Manager if it didn't
	  allocate them!  Thanks to Karl-Heinz Dorn
	  (kdorn@erlh.siemens.de) for suggesting this fix.

	* libsrc/ASX/Message_Block: Changed the semantics for
	  Message_Block::end() so that it returns a pointer to 1 past the
	  end of the data.  This is more consistent with toolkits like
	  STL.  Also changed the behavior of Message_Block::copy() so that
	  it checks to make sure the data will fit in its buffer.

	* tests and apps: Revised a bunch of files to add #ifdef so that
	  TLI tests and apps are not compiled if the platform doesn't
	  support it...

	* Fixed a bunch of minor problems for HP/UX (which lacks TLI and
          other common OS features).  Thanks to Mark Seaborn
	  (mseaborn@itthp1.comm.mot.com) for noticing these.

Mon Aug 21 00:19:29 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Misc: Changed the name of the class Argument_Vector to
	  ACE_ARGV.  This is a bit more concise...  UNIX programmer will
	  know precisely what argv is...

	* Updated all of ACE to use the new naming scheme, which prepends
	  all ACE classes with "ACE_".  This is an important change since
	  it prevents ACE from polluting the namespace of applications
	  (unless they also prefix "ACE_" in front of their classes, which
	  is not very likely!).

	  Since this change basically affects every single file in the
	  entire release, as well as all existing user code I've written a
	  perl script called "rename-ace.pl" to automate all of this.
	  This script is in $WRAPPER_ROOT/bin.  To use it, simply type:
	  
	  % find . -type f -print | egrep '[Chi]$' | xargs rename-ace.pl

	  Note that you will need to change the first line of
	  rename-ace.pl to point it to whereever perl is located on your
	  system.

	  I've tested this on the entire ACE source code base and it seems
	  to work fine.  Please be careful using it on your code, however,
	  since it may conflict with names that you use.  When in doubt,
	  remove the '-pi' from the first line of the rename-ace.pl perl
	  script and replace it with '-p' (which is non-destructive).
	  Then run the commands above and check the output carefully.
	  When you're convinced that everything is ok, add the '-pi' back
	  again.  Let me know immediately if you find any problems with
	  this scheme!

	* libsrc/Connection/Acceptor.C: Added a virtual destructor to the
	  Oneshot_Acceptor to make sure that descriptors are closed down
	  correctly.  Thanks to Irfan (irfan@wuerl.wustl.edu) for
	  suggesting this.

	* libsrc: Change all occurrences of Shared_Memory to
	  SV_Shared_Memory to firmly indicate the origins of this
	  wrapper...

Sun Aug 20 23:12:03 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/IPC_SAP: added the IO_SAP, DEV_SAP, and FILE_SAP
	  components donated by SIEMENS to the ACE release.

	* libsrc/ASX: Split the Message_Queue.* files into Message_Block.*
	  and Message_Queue.* in anticipation of the Windows NT port...

Fri Aug 18 13:54:09 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Threads/Thread_Specific: Move the operator->() 
	  method back into the *.C file in order to make HP/UX
	  happy...

	* apps/Gateway/Peer: Removed the Options.* files since they
	  weren't being used and they were causing problems on OSF/1...

	* libsrc/Misc/Profile_Timer: Factored common code together by
	  making a new typedef called Rusage that defaults to either
	  struct rusage or prusage_t, depending on installation flags.
	  Fixed a couple places in the code that were depending on the
	  prusage_t type (which is now the Profile_Timer::Rusage type...).

Thu Aug 17 14:31:11 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Connection/Connector.h: Changed some typedefs in order to
	  keep the Centerline compiler from crapping out.  I can't
	  *believe* how screwed up that compiler is when it comes to
	  templates...

	* Released new version of ACE 3.2.9...

	* libsrc/Threads/Synch: Fixed a bunch of typos that showed up
	  on OSF/1.  Also tried to fix some other problems by removing
	  "const" from all the methods...

Wed Aug 16 22:26:24 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Threads/Thread_Specific.h: Fixed another stupid bug
	  caused by a braino that failed to unconditionally include
	  Thread_Specific.i.  Stuart Powell found this also... (thanks!).

	* libsrc/Threads/Thread_Specific.h: In Thread_Specific.h the
	  inlining macros were only included if threads were used.  This
	  obviously didn't work for people without threads...  I
	  moved the #endif for ACE_HAS_THREADS... back before the #ifdef
	  __INLINE__ stuff (e.g. to line 71).  Thanks to Stuart Powell
	  (stuartp@ot.com.au) for suggesting this.

	* libsrc/Threads/Synch.h: Fixed a typo that manifested itself for
	  pthreads: Condition count_nonzero_ should obviously be
	  Condition<Mutex> count_nonzero_.  Thanks to Rob Clairmont
	  (rclairmo@bnr.ca) for reporting this.

Tue Aug 15 00:31:44 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Log_Msg/Log_Msg.C (log): Fixed a stupid typo (*format++
	  should have been format++...).

	* libsrc/Misc/Trace.h: Move the class TSS_Int from within class
	  Trace to file scope and changed the name to ACE_TSS_Int to
	  handle problems with the HP/UX compiler.

	* include/ace/sysincludes.h: Added the word "struct" in front
	  of rusage to make things work on HP/UX.  Thanks to Neil Cohen
	  (nbc@metsci.com) for reporting this fix.

	* apps/TokenServer/server/TokenMap.C: Fixed yet another problem
	  with scope of variables defined in for loops...

	* Released new version of ACE 3.2.9...

	* libsrc/Connector: Fixed a braino whereby I didn't use consistent
	  naming for my #defines (PA should have been PRC).  Thanks to
	  Alex (alexey@ace.elektra.ru) for noticing this.

Mon Aug 14 18:13:46 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/IPC_SAP/SPIPE_Acceptor: Modified the interface of open()
	  and accept() so they would conform to the SOCK_Acceptor and
	  TLI_Acceptor.  This makes it possible to use SPIPE_Acceptor in
	  similar situations (e.g., Acceptor and Connector patterns).

	* libsrc/ASX/Stream: Fix a bug that occurred when trying to dump()
	  a linked Stream.

	* libsrc/Connection/Acceptor: Moved the body of the init() method
	  out of this class since it was unnecessarily dependent on the
	  INET_Addr domain addressing types.  This required changes to the
	  ./apps and ./tests directory in order to add the init() method
	  to classes that used the default behavior.  

	* libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Acceptor.C: Fixed close() so that
	  it will call fdetach(2) *before* closing down the descriptor.  I
	  hope this will fix a problem noticed by people at SIEMENS.

	* tests/ASX/Event_Server/Event_Server/Options: Fixed a problem
	  with the default port numbers (they weren't using the values
	  from ./include/ace/testconfig.h).

	* include/ace/sysincludes.h (MAXNAMELEN): If MAXNAMELEN is not
	  defined by a platform then ACE sets it to be FILENAME_MAX, 
	  which should be defined in stdio.h.  Thanks to Todd Blanchard
	  (tblancha@evolving.com) for this suggestion.

Sun Aug 13 17:02:57 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Service_Configurator/Parse_Node: Changed the name of
	  Function_Node::symbol (const void *) so that it won't give 
	  those annoying warnings anymore...

	* libsrc/Reactor/Handle_Set: Moved the definition of MSB_MASK from
	  the header file into a static const within the .C file in order
	  to avoid overflow problems on certain compilers.

	* libsrc/Threads/Synch: Implemented bare-bones versions of
	  Semaphore and RW_Mutex for the POSIX Pthreads wrappers so that
	  they'll be more compatible with the Solaris threads wrappers.
	  The semaphore implementation uses a Condition object and a
	  Mutex, which should be a reasonable solution.  The RW_Mutex is a
	  cop-out for now and just uses a Mutex (i.e., no extra
	  parallelism for readers...).  If anyone has a good
	  implementation of RW_Mutex that they'd like to share please let
	  me know.

	* libsrc/Threads/Thread_Specific: Fixed the prototypes for copy
	  constructor and operator=, which were broken...  Thanks to Alex
	  (alexey@ace.elektra.ru) for noticing this.

	* libsrc/Shared_Malloc/Memory_Pool.C: Added some casts to
	  MAP_FAILED to handle OSF/1.  Thanks to Alex
	  (alexey@ace.elektra.ru) for noticing this.

	* libsrc/Threads/Token: Fixed things so that threads waiting for a
	  token wouldn't get screwed up by signals that occur...

	* include/ace/sysincludes.h: Changed the #ifdef
	  ACE_SELECT_USES_LONG to ACE_SELECT_USES_INT for HP/UX since
	  believe it or not, it really does use int, not long!

	* libsrc/SV_Semaphores: Fixed some weird problems that the HP/UX
	  compiler was having when trying to inline methods in this class.
	  As a consequence, I've rearranged the class to avoid inlining
	  non-trivial methods.  Thanks to John Morey (jmorey@hitel.com)
	  for reporting these problems.

Wed Aug  9 01:29:16 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Threads/Token: Added a tryacquire() method to become
	  interface compliant with other LOCK mechanisms.

Sat Aug  5 09:18:29 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Connection: Fixed a couple of bugs when using
	  the Acceptor and Svc_Handler when ACE_OMIT_SERVICE_CONFIGURATOR 
	  is enabled.  Thanks to Stuart Powell (stuartp@ot.com.au) for
	  bringing this to my attention. 

	* include/ace/sysincludes.h: Added a #ifdef for MAXNAMELEN to
	  handle systems (like HP/UX) that don't support it.

Thu Aug  3 22:59:13 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* Released new version of ACE 3.2.9...

	* libsrc/Reactor/Time_Value.i (normalize): Added new code to
	  perform normalization of Time_Values.  Thanks to Hans Rohnert
	  (Hans.Rohnert@zfe.siemens.de) of SIEMENS for the suggestion.

Tue Aug  1 00:19:00 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* Changed all code that used Log_Msg::log() directly to use
	  LM_ERROR or LM_DEBUG.  This will ensure that logging will work
	  with the new thread-specific storage implementation.

	* libsrc/Threads/Thread_Manager.i (open): Fixed this method so
	  that it is thread-safe when a Thread_Manager is resized.

	* libsrc/ASX/Map_Manager.i (open): Fixed this method so that it is
	  thread-safe when a Map_Manager is resized.

Mon Jul 31 12:56:17 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Misc/Trace: Reimplemented the ACE Trace class to use the
	  new thread-specific storage wrapper.

	* libsrc/Log_Msg: Reimplemented the Log_Msg class to use the new
	  thread-specific storage wrapper.  This shouldn't affect any
	  existing code that was careful to only use the LM* macros...

	* libsrc/Threads: Added a new class called Thread_Specific which
	  implements a C++ wrapper for SunOS 5.x thread-specific data
	  (this will also work for POSIX pthreads I believe).  Thanks to
	  Tim Harrison (harrison@cs.wustl.edu) for coming up with the idea
	  for using C++ "smart pointers" to implement this.

	* libsrc/Reactor/Timer_Queue.h: Moved Timer_Node from within
	  Timer_Queue to outside Timer_Queue and renamed it to
	  ACE_Timer_Node.  Unfortunately, some compilers still don't like
	  nested classes (ugh)...

	* Changed ACE_Synch_Options to be simply Synch_Options since it
	  is *not* an ACE private class...

Sun Jul 30 00:07:28 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* include/makeinclude/README: Added a new #define called
	  ACE_HAS_THREAD_SPECIFIC_STORAGE, which does exactly what it
	  sounds like!  So far, I know that Solaris defines this.  I'm not
	  sure which other platforms do (perhaps OSF/1 does?).

Fri Jul 28 14:53:45 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* Fixed a bunch more problems with loop variables that were
	  uncovered with GCC 2.7.  Thanks to Matt Stevens
	  (mstevens@ent.mrj.com) for noticing this.

	* apps/Logger/Service_Configurator_Logger: Added a new flag called
	  ACE_HAS_NO_STATIC_DATA_MEMBER_TEMPLATES which is necessary to
	  workaround bugs with GNU G++...  Thanks to Matt Stevens
	  (mstevens@ent.mrj.com) for noticing this.

	* libsrc/Connection/Connector.C (cleanup_AST): Changed the
	  parameter list just a tad to try and fix a problem with
	  G++ (which doesn't seem to like unscoped typedefs in
	  argument lists or return values.

	* libsrc/Misc/Profile_Timer.i: Changed ::getrusage to be getrusage
	  to avoid problems with macros and scope operators...  

	* include/ace/testconfig.h (ACE_DEFAULT_RENDEZVOUS): Changed the
	  value from /tmp/foo to /tmp/fifo.ace.  Thanks to Neil B. Cohen
	  (nbc@metsci.com) for suggesting this.

Thu Jul 27 12:30:06 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* apps/TokenServer/server/TokenHandler.C (abandon): Fixed a minor
	  bug that caused assert() to fail when a client abandoned a
	  Token.

	* libsrc/Reactor: Fixed a bug with the design of the Reactor's
	  Timer_Queue cancellation mechanism.  The new mechanism is much
	  more robust since it ensures that timer_ids (used to cancel
	  pending timers) are unique up to values of greater than 2
	  billion timers!  As long as timers don't stay around longer than
	  this there should be no problems with accidentally deleting the
	  wrong timer.  Thanks to Bill Sears (wsears@world.std.com) for
	  noticing this problem.
	  
	  One nice consequence to this change is that legacy code that
	  would have broken with the previous change is now 100%
	  compatible!

	* Provided a definition of ACE_Synch_Options::arg(const void *),
	  which I'd forgotten to define before (darn templates...).
	  Thanks to Tim Harrison (harrison@cs.wustl.edu) for finding this!

	* include/ace/sysincludes.h: Added a total hack to get HP/UX to
	  understand getrusage().  The trick is to use the following 
	  undocumented syscall:

	  #define getrusage(a, b)  syscall(SYS_GETRUSAGE, a, b);

	  What a hack (but it works...).

Tue Jul 25 13:20:58 1995  Douglas C. Schmidt  (schmidt@kavita.cs.wustl.edu)

	* libsrc/Misc/Profile_Timer: Fixed a typo in Profile_Timer.h
	  (ACE_HAS_RUSAGE_T should have been ACE_HAS_GETRUSAGE).  Thanks
	  to George Reynolds (george@dvcorp.com) for noticing this.

	* Changed all uses of ::getopt() to use the ACE class Get_Opt
	  get_opt.  Also changed all uses of optarg to get_opt.optarg.
	  Thanks to Bob Vistica (robertv@ims.com) for detecting and
	  reporting some inconsistencies in my previous changes...

Mon Jul 24 19:03:03 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* include: I've added config and platform support for SGI IRIX5.3
	  for use with the SGI C++ compiler.  Thanks to Stuart Powell
	  (stuartp@ot.com.au) for these config files.

	* libsrc/Connection/Acceptor.C (handle_input): Added the
	  Event_Handler::DONT_CALL flag when removing the Oneshot_Acceptor
	  from the Reactor so that we don't set it's peer_acceptor_ to -1.

Mon Jul 24 12:46:10 1995  Douglas C. Schmidt  (schmidt@kavita.cs.wustl.edu)

	* libsrc/Misc/Profile_Timer: Fixed problems stemming from the fact
	  that HP/UX doesn't seem to support getrusage() (how odd).

	* tests/Connection: a new test directory to test out the Connector
	  and Acceptor pattern implementations.

Sun Jul 23 12:26:37 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/Connection/Acceptor.C: Fixed a minor bug with the 
	  Oneshot_Acceptor constructor.  Thanks to John Morey
	  (jmorey@hitel.com) for noticing this and the one below.

	* libsrc/Reactor/Timer_Queue: Moved the static method current_time
	  from the Timer_Queue.i file to the Timer_Queue.C file.  This
	  avoids a bug with HP/UX C++.

Sat Jul 22 15:54:27 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * Released beta version 3.2.9.  Once this compiles on all major
	  platforms then it's time to move to version 3.3.

	* Added a number of miscellaneous changes for OSF/1 courtesy of
  	  David Trumble (trumble@cvg.enet.dec.com).  One of these changes
  	  involved changing all uses of Reactor::{ADD,SET,CLR,GET} to
  	  Reactor::{ADD,SET,CLR,GET}_MASK in order to avoid a class with
  	  some symbols in OSF/1.

Fri Jul 21 00:21:02 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* Finally was able to test ACE on the SunOS 4.x platform (using
	  the SunC++ 4.0.1 compiler).  The entire release compiled
	  correctly!  This is a great relief after fighting with this
	  stuff for months...  If you are building ACE on SunOS 4.x I'd
	  *strongly* recommend you get SunC++ 4.0.1 since it is the only
	  compiler that seems to be able to grok the weirdness of SunOS
	  4.x...

	* Finished updating all the ./tests and ./apps code so that it
	  works correctly with the new Acceptor/Connector modifications.
	  To see examples of these changes check out
	  ./tests/IPC_SAP/SOCK_SAP/CPP-{nbclient,inserver}.C.

	* libsrc/Misc/Profile_Timer: Merged in the new Profile_Timer
	  implementation from David Trumble (trumble@cvg.enet.dec.com).
	  This will work with basically the same interface as the current
	  scheme even if the OS platform doesn't support the prusage_t
	  type...

Thu Jul 20 01:07:23 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Connection: Added a new class called ACE_Synch_Options
	  which is used in both the Acceptor and Connector classes to
	  consolidate options related to synchronous and asynchronous
	  behavior.

	* libsrc/Connection: Added a new class called Oneshot_Acceptor.
	  This class inherits from the Acceptor but it only accepts one
	  connection at a time (i.e., it doesn't keep itself registered
	  with the Reactor).  Several examples in the tests/SOCK_SAP
	  directory have been added to illustrate how all this works.

	* libsrc/Connection/Connector: completely redid the Connector and
	  Acceptor class interfaces to incorporate the new changes for
	  asynchronous and synchronous behavior.  The new scheme should be
	  much more general (and correct...).  Thanks to Tim and Irfan for
	  helping out with this.

	* libsrc/Threads/Synch: Fixed the implementation of Recursive_Lock
	  so that it won't have race conditions when testing the thread id
	  and nesting level in parallel threads.

Wed Jul 19 13:15:05 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Reactor/Timer_Queue: Added new support for cancellation
	  of individual Event_Handlers in the Reactor.  In addition, it is
	  now possible to cancel all Event_Handlers with a single call to
	  Timer_Queue::cancel().  Note that this new scheme will break
	  existing code since Timer_Queue::schedule() (and
	  Reactor::schedule_timer()) now return ACE_Timer_Node *'s rather
	  than ints...

	* libsrc/Service_Configurator/Service_Config: Fixed a problem
	  where the "-s" option didn't work since it was parsed when
	  "Service_Config::open" was called
	  (it sets Service_Config::signum_).  However, previously the
	  signal handler was already setup by the constructor.  By moving
	  this registration to the open() method the problem was solved.
	  Thanks to Bob Vistica (robertv@ims.com) for noticing this.

	* libsrc/Service_Configurator/Service_Manager: Changed the
	  Service_Manager::reconfigure_services to use this->signum_
	  rather than to hard code SIGHUP.  Thanks to Bob Vistica
	  (robertv@ims.com) for this insight.

Mon Jul 17 12:08:08 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Threads/Token.C (renew): Fixed a typo so that we compare
	  this->head_ == 0 rather than this->head_->next_ == 0.

	* libsrc/Reactor/Reactor.h: Changed the Reactor to use the
	  Reactor_Token rather than the pure Token to make sure that the
	  sleep_hook() is called to unblock the Reactor.

Fri Jul 14 14:12:07 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* libsrc/Connection: Changed the default behavior of the Connector
	  and Acceptor classes such that they pass a -1 to
	  svc_handler_->close() when things go wrong.  This is useful as a
	  flag to close() (e.g., if it needs to figure out what to do if
	  is shuts down prematurely).

	* libsrc/Connection/Svc_Handler.C: Added a default definition of
	  the put() method, which is defined as a pure virtual method in
	  class Task.

Thu Jul 13 23:10:35 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* include/ace/sysincludes.h: Added support for the SGI IRIX 5.3
	  OS.  More screwy gettimeofday() hacks (what a pain...).  Thanks
	  to Matt Stevens (mstevens@kirk.softeng.infonautics.com) for
	  these fixes.

	* include/makeinclude/platform_sunos5_centerline.GNU: Fixed a
	  vexing problem that was causing the Centerline C++ compiler to
	  puke when compiling ACE.  Thanks to Chandra Venkatapathy
	  (cvenkat@develop.bsis.com) for finding a solution!

Tue Jul 11 00:01:15 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * Released version 3.2.6 for use by Karl and Detlef.

Mon Jul 10 00:28:51 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* apps/TTCP: Added support for benchmarking the performance of
	  Orbix, ORBeline, ACE SOCK_SAP, and C sockets.  These results are
	  available at URL http://www.cs.wustl.edu/~schmidt/COOTS-95.ps.Z

	* libsrc/Service_Configurator/Makefile: Added new commands to the
	  Service Configurator Makefile so that all automatically
	  generated flex and yacc symbols (i.e., the "yy" stuff) is
	  renamed "ace_yy".  The purpose is to avoid conflicts with other
	  uses of flex/yacc lexers/parsers with ACE.  Thanks to Steve
	  Ritter (ritter@titan.com) for this suggestion and code.

	* libsrc/IPC_SAP/TLI: Changed the TLI files so they are
          conditionally compiled only if the platform supports TLI...

	* libsrc/Connection: Changed the inlining strategy of Connector,
	  Acceptor, and Svc_Handler so that very short methods are always
	  inlined, but anything larger is never inlined...

Sun Jul  9 14:07:02 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* include/ace/testconfig.h: Changed all occurrences of DEFAULT_*
	  to ACE_DEFAULT_ to prevent namespace collision.

        * libsrc/Connection/Connector: Massively improved the Connector
          class so that its connect() method supports the following
          behavior (tv == "timeout value" and ur == "use Reactor"):

          Parameters      | Description                   
                          |                             
          tv   |  ur      |                             
          -----|----------|-------------------------------
               |	  |                               
          NULL | yes      | infinite timeout (using Reactor)
               |          |
          time | yes      | try asynch transaction for    
               |          | the specified time (using Reactor)
               |          |
          0,0  | yes      | poll; try, if EWOULDBLOCK,    
               |          |       then return immediately
               |          |       (using Reactor)
               |          |
          NULL | no       | block forever (don't use Reactor)
               |          |                               
          time | no       | do a blocking transaction     
               |          | for the specified time
               |          | (don't use Reactor)                 
               |          |                               
          0,0  | no       | poll; but do not initiate a
               |          | nonblocking transaction
               |          | (don't use Reactor)    

	* libsrc/IPC_SAP/SOCK_SAP/SOCK_Connector: Changed the behavior of
	  the SOCK_Connector::connect() method so that it uses Time_Values
	  rather than a simple flag that indicates whether or not to use
	  non-blocking connectors.  The new scheme is an improvement since
	  it allows greater control over synchronous and asynchronous
	  timeouts for connection establishment.  This behavior parallels
	  that of SOCK_Acceptor, as well!  If this works well then I'll
	  update the TLI_Connector and SPIPE_Connector to match this
	  interface.

        * libsrc: Continued to improve ACE's use of the global name space
          by prefixing all "helper" classes with "ACE_"

        * Updated SPIPE_Acceptor so that it would have the same basic
          interface as the SOCK_Acceptor and TLI_Acceptor.

        * libsrc/IPC_SAP: Consolidated the handle_timed_wait() methods
          used by the TLI, socket, and STREAM pipe wrappers so that they
          share the new ACE::handle_timed_accept() method, which is in
          libsrc/Misc.

        * libsrc/Misc: Modified the structure of Misc.[Ch].  Originally,
          this file contained a bunch of stand-alone C functions with the
          prefix "ace_" to keep them from conflicting with user's code.
          I've modified things now so that all the miscellaneous functions
          are now static methods in class ACE.  This provides better scope
          control...

        * libsrc/Log_Msg/Log_Msg: Replaced the use of a Mutex in class
          Log_Msg with a Recursive_Lock<Mutex>.  This is necessary to
          handle signals correctly...

        * libsrc/Reactor/Reactor: Modified the behavior of
          Reactor::notify() so that writers will block if the pipe is
          full.  This solves some nasty flow-control problems.

        * libsrc/Reactor/Handle_Set: changed all uses of fd_set to
          ACE_FD_SET_TYPE * so that HP_UX would work correctly...

        * include/ace/config-hpux.h: Removed the ACE_HAS_XLI flag until I
          get a better idea which HP systems this is installed on.

        * libsrc/Threads/Thread: Added a new static method called
          spawn_n() that spawns "n" threads all running the same function.

Sat Jul  8 14:14:34 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/Service_Configurator: Made some miscellaneous changes to
          "const" methods and parameters in order to handle the new
          Reactor changes (C++ can be such a pain about this
          sometimes...).

        * libsrc/Threads: Added "yield" and "sigsetmask" methods to class
          Thread.  How did I manage to omit these before?!

        * libsrc/Reactor: Updated the Reactor to use the new Token class
          described below.  This greatly simplies the structure of the
          multi-thread support in the Reactor code.  In addition, it
          should improve performance because it cuts the number of context
          switches compared with the old scheme.  Many thanks to
          Karl-Heinz and Detlef for encouraging me to redo the Reactor
          implementation.

        * libsrc/Threads: Added a new class called Token that provides a
          flexible and efficient recursive mutex scheme.  Thanks to
          Karl-Heinz Dorn (kdorn@erlh.siemens.de) and Detlef Becker
          (beckerd@erlh.siemens.de) for sharing their original code for this.

Thu Jul  6 10:37:45 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/Reactor/Event_Handler_T: Conditionally compiled this so
          that it will only compile if the compiler supports template
          typedefs (e.g., G++ doesn't seem to like this...).

        * Started to make changes in ACE to deal with the new ANSI C++
          semantics in the scope of variables defined within for loops.
          Thanks to Aniruddha Gokhale (gokhale@cs.wustl.edu) for noticing
          this in G++ 2.7...

Wed Jul  5 21:50:39 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/Connection/Svc_Handler: Fixed the behavior of the
          Svc_Handler class so that it can be configured with a Reactor
          other than Service_Config::reactor, just like the Acceptor and
          Connector.  Thanks to Karl-Heinz Dorn (kdorn@erlh.siemens.de)
          for suggesting this!

Tue Jul  4 00:21:31 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * Added some new changes for Linux courtesy of Charles Rennolet
          (clr@thurse.mn.org).

        * libsrc/Reactor/Reactor.C (bit_ops): Fixed a dumb error in
          bit_ops that was caused by checking "else if (Reactor::SET)"
          rather than "else if (ops == Reactor::SET)".  Thanks to Mark
          Patton (mark_patton@tx72.mot.com) for finding this bug and
          reporting it along with the fix.

        * include/ace/sysincludes.h: Added new fixes for M_SYNC and
          ENOTSUP on SunOS 4.

        * libsrc/Reactor: Added new support for integrating X and the
          Reactor.  These files are called XtReactor.* and XReactor.*.
          Thanks to Eric Vaughan (evaughan@arinc.com) for providing this
          stuff...

Mon Jul  3 19:44:07 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * Added support for SunOS 5.5 on i86 PC.  Thanks to Bin Mu
          (mubin@wfg.com) for the config files and fixes.

        * libsrc/Misc/Profile_Timer: Added new support for versions of
          UNIX that don't support prusage_t.  The new version of
          Profile_Timer will use gettimeofday() and getrusage() of
          prusage_t and /procfs isn't available...  This code hasn't been
          tested yet (since I don't have SunOS 4.x) so I don't know if it
          works.

        * Hopefully fixed the SunOS4 prototype for gettimeofday().  Thanks
          to Andrew McGowan (ajm@se09.wg2.waii.com) for the suggested fix.

        * include/makeinclude/platform_hpux.GNU (CC): Added new support
          for building ACE and shared libraries on HP/UX.  Thanks to Jam
          Hamidi (jh1@osi.com) for this code.

        * libsrc/Reactor/Handle_Set: Fixed Handle_Set_Iterator::operator++
          to check for index to be greater or equal than NUM_WORDS instead
          of just equal. This is better for sanity, although it may not be
          needed. Thanks to Carlos Garcia Braschi (cgarcia@caramba.tid.es)
          for suggesting this fix.

Wed Jun 14 11:16:40 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/IPC_SAP/TLI_Acceptor: modified TLI_Acceptor so that it's
          public constructor/open() and accept() methods are more similar
          to the SOCK_Acceptor.  In particular, added support for
          "SO_REUSEADDR" in TLI_Acceptor and time values for accept().
          Thanks to John P. Hearn (jph@ccrl.nj.nec.com), TLI_SAP now does
          the right thing for socket options.

        * libsrc/IPC_SAP: Fixed up the SOCK_Acceptor and TLI_Acceptor in
          order to add better support for "timed accepts."  The new scheme
          uses Time_Values, which is more consistent with other parts of
          ACE.  In addition, the Time_Value was moved from the
          constructor/open() to the accept() method, which allows more
          fine grained control over this behavior.  Thanks to Irfan
          (ip1@cs.wustl.edu) for suggesting this.

        * libsrc/IPC_SAP: Cleaned up the SOCK_Acceptor::open and
          TLI_Acceptor::open routine.  In addition to being more compact
          and robust, this routine now also let's open() determine which
          local port to bind to (if you pass in Addr::sap_any as the
          local_addr).  Thanks to Irfan (ip1@cs.wustl.edu) for suggesting
          this.

Tue Jun 13 16:09:13 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/Reactor/Timer_Queue: Fixed an odd problem with the
          Timer_Queue on Solaris.  Apparently the select() call will
          return slightly earlier than the timeout dictates due to lack of
          granularity with the system clock.  This was causing problems
          where the Reactor wasn't correctly dispatching the
          handle_timeout() method of Event_Handlers.  The fix was to add a
          10 Millisec "fudge factor" when calling the
          Timer_Queue::expire() method.  Please let me know if this causes
          any problems.  Thanks to Giang Hoang Nguyen
          (yang@titan.com) to noticing this problem.

        * libsrc/Connection/Acceptor: Enhanced the Acceptor class so that
          it is possible to accept a new SVC_HANDLER synchronously, rather
          than always driving this acceptance out of the Reactor's event
          loop.  Thanks to Irfan (ip1@cs.wustl.edu) for suggesting this.

        * libsrc/IPC_SAP/Addr: Changed all occurrences of ace_sap_any to
          Addr::sap_any (i.e., sap_any is now a static data member in
          class Addr).  This is an improvement since it helps to limit the
          scope of what would otherwise be global variables...

Wed Jun  7 17:26:31 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * apps/Logger/Reactor_Logger/Client_Acceptor.i (handle_input):
          Fixed a braino that omitted an important block of code!  Thanks
          to Ken Konecki (kenk@wfg.com) for finding this.

Fri Jun  2 13:59:07 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/IPC_SAP/Addr/INET_Addr.i (set): Removed the special case
          for INADDR_ANY.  This should just fall right out...

Thu Jun  1 19:45:21 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/IPC_SAP/SOCK_SAP/SOCK_Connector: Added support to
          SOCK_Connector so that it is possible to bind the local TCP port
          number prior to establishing the connection.  Also fixed the
          TLI_Connector to be consistent with this approach.  Thanks to
          Mark Patton (mark_patton@tx72.mot.com) for this idea.

        * Fixed a problem with Mem_Map that was caused by the fact that
          some versions of Unix (e.g., SunOS 4.x) don't support MS_SYNC...
          Thanks to Andy McGowan (mcgowan@wg2.waii.com) for noticing this.

        * Fixed a very stupid bug in ./libsrc/Synch.h that accidentally
          omitted this->lock_.acquire() from the Guard class constructor.
          Thanks to Bin Mu (mubin@wfg.com) for noticing this!

Fri May 26 13:20:38 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/Connection/Acceptor: Added a new method called
          make_svc_handler() that generalizes the dynamic creation of a
          SVC_HANDLER by the Acceptor's Template Method handle_input().
          This scheme is completely backwardly compatible with the
          original approach, but now allows transparent extension too!
          
        * libsrc/Connection/Acceptor: cleaned up the Template Method logic
          in Acceptor::handle_input.  No longer do we set the listener
          socket into non-blocking mode and then rely on a -1 with
          EWOULDBLOCK to indicate there are no more connections to
          establish.  This was causing problems for singleton Svc_Handlers
          since the Acceptor was setting their peer_stream_ to -1...  The
          new approach should complete solve this problem.

Mon May 22 15:10:27 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * Released version 3.2.3 so that Bill Sears can test the new
          #include "ace/" features.

        * Modified all the ACE source, tests, and apps so that all
          #includes of its headers are refixed by ace/, e.g.:

          #include <ace/Reactor.h>

          There are two reasons for have the include files be of
          this form:

          First, you can tell at a glance by looking at the caller where 
          the library is coming from.  

          Secondly, you can build an include tree of the form:

                  /include/lib1
                  /include/lib2
                  /include/lib3 
                  /include/ace

          which then links to WRAPPER_ROOT.  Now, all you have to do
          when you build a make file is point to the include root, and
          put links in the include root.  This is especially helpful
          if there are multiple versions.

          This means just one less thing that has to be modified in the
          Makefile.  Thanks to Bill Sears (wsears@world.std.com) for
          recommending this change.

Sat May 20 17:12:35 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * config-irix5.3-sgic++.h: Added new configuration support for SGI
          IRIX5.3 courtesy of Stuart Powell (stuartp@ot.com.au).

Sat May 13 20:44:06 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * Generalized the SOCK_Connector::complete method so that it takes
          a Time_Value timeout.  This allows applications to wait upto a
          certain limit before giving up on a non-blocking connection.
          Updated the tests in ./tests/IPC_SAP/SOCK_SAP/CPP-inclient.C to
          illustrate how this is used.

        * Added some interesting new tests to ./tests/Mem_Map that can be
          used to benchmark the performance of various strategies (e.g.,
          stdio, read/write, mmap, etc.) for copying files.

Fri May 12 19:09:10 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/Mem_Map/Mem_Map: Added two new overloaded methods called
          sync() that are wrappers around the msync(3c) system call.  Also
          added a new unmap() method that gives access to the full
          behavior of munmap(3c).

Wed May 10 14:16:16 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * Tried yet another fix for the gettimeofday() botch that both
          Centerline and SunOS 5.4 screw up in different ways.  Thanks to
          Medhi Tabatabai (Mehdi.Tabatabai@ed.nce.sita.int) for the latest
          fixes.

Tue May  9 19:05:58 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/Reactor/Handle_Set.C: Fixed some "off-by-one" errors that
          were occurring in the Handle_Set::sync() and set_max() methods.
          Thanks to Nigel Hooke (n.hooke@trl.oz.au) for finding and fixing
          these.

Mon May  8 02:01:54 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/Reactor/Reactor.C: Moved the Null_Callback class from
          being nested within the Reactor class to outside the Reactor
          class.  This fixes a problem with the SIG compiler.

        * Released version 3.2.2.

        * libsrc/Reactor/Signal.C: Made the Signal_Handler class
          thread-safe as well as signal-safe.

        * libsrc/Reactor/Reactor.C: Modified the new Reactor
          implementation slightly to handle signals correctly.

        * libsrc/Threads/Synch.h: Added a new conversion operator to
          Recursive_Lock that returns the underlying LOCK in case we need
          it for something (e.g., to initialize a Condition object).

Sun May  7 04:17:46 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/Reactor/Reactor.C: Finished what I hope will be the last
          set of changes to make the Reactor robust in multi-threaded
          programs in situations where separate threads are used to
          register and remove handlers.  The final solution is elegant in
          that it does not significantly penalize the performance of
          programs that do not use separate threads to register and remove
          handlers.  Moreover, if you compile without the ACE_MT_SAFE flag
          the Reactor will not include additional state information
          related to the multi-threaded implementation.
          
        * libsrc/Threads/Synch.h: Subclassed the Guard class to make a new
          class Try_Guard that uses tryacquire() to obtain a LOCK.

Fri May  5 18:43:50 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * Released version 3.2.1

Thu May  4 19:43:01 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/IPC_SAP/TLI_SAP/TLI_Connector.C (connect): Fixed a
          problem whereby a t_bind() was being done twice.  Since I didn't
          write this code I don't know if my fix will work generically on
          all platforms supporting TLI.  Please let me know if there are
          any problems.

Tue May  2 17:21:53 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/Reactor: Added a new notification feature that allows
          multiple threads of control to enqueue Event_Handler * to the
          main Reactor thread via the pipe used to wake up the main
          Reactor thread.  The Reactor will call the handle_exception()
          method on Event_Handler with a HANDLE == -1 to notify the
          handler.  This feature is very useful if you need to have
          certain operations (such as handler termination) performed in
          the main thread.

Tue Apr 25 00:34:18 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/Reactor: Fixed a stupid pair of typos in the Reactor that
          failed to cast arguments to the pipe to char *.
          
        * libsrc/Connection: Fixed a portability problem with the
          Connector: we can't use RW_Mutex for synchronization since not
          all platforms support threads.  The quick fix is to use
          Null_Mutex, but a better long term approach is on the way!

        * Released version 3.2.

        * Added richer support for the TLI_Connector to make it work
          better with protocols other than TCP/IP.  Thanks to Mats
          Sundvall (sundvall@perrier.embnet.se) for these enhancements.

Mon Apr 24 02:26:04 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * Changed the SOCK_Dgram_Brdcast class name to SOCK_Dgram_Bcast
          and the SOCK_Mcast to SOCK_Dgram_Mcast to be more consistent.

        * Massively improved the Reactor's support for multi-threading.
          There was actually a major problem in previous versions of ACE
          that used poll() as the underlying event demultiplexor.  Poll()
          produced incorrect results when the Reactor::handle_events()
          method was run in one thread, but another thread came along and
          registered or removed an Event_Handler.  The new version fixes
          this problem so that the Reactor will now work correctly in
          multi-threaded programs.

          One consequence of this change is that sysincludes.h and the
          SunOS 5.x configuration files have been changed so that poll()
          is no longer used as the default demultiplexor.  The reason is
          that poll() doesn't work as efficiently when used in
          multi-threaded programs (ugh).  See the Reactor code for
          examples of how this all works now.  Basically, the trick is to
          use the select()-style implementation for most of the code, and
          transform to poll()-style implementation only when necessary.

Sat Apr 22 03:35:51 1995  Douglas C. Schmidt  (schmidt@lambada.cs.wustl.edu)

        * libsrc/ASX/Message_Queue: Added a new method to the
          Message_Queue class called unblock().  This method allows one
          thread to release all other threads that are waiting for
          messages to be enqueued or dequeued on a Message_Queue.
          Modified the return value of methods like enqueue_head() and
          dequeue_head() so that if a thread unblocks() then these methods
          return -1 with errno == ESHUTDOWN.  Also changed the name of
          some of the internal methods so that they would be more
          consistent.

        * libsrc/Connection/Connector: Fixed a stupid bug caused by
          failing to have a destructor for Connector.  Thus, there are
          cases where unconnected Svc_Handlers are left around in the
          handler_map_.  This causes problems for dynamic linking in
          conjunction with the Reactor, so now the destructor iterates
          through all the unconnected Svc_Handlers and removes them from
          the Reactor.

Fri Apr 21 15:28:46 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/Reactor/Signal: Changed Sig_Set::addset() and
          Sig_Set::delset() to the more appropriately named sig_add() and
          sig_del().  Also added '_' in the Sig_Set method names to be
          more consistent...

        * Removed the ./libsrc/IPC_SAP/SOCK_SAP/misc.[hC] file and merged
          the one function in that file (ace_bind_port) into
          ./libsrc/Misc/Misc.[hC].

        * Added a bunch of fixes from various people to make ACE compile
          better on SGI, SunOS 4, and HP/UX.  Thanks for all the fixes!

        * libsrc/IPC_SAP/Addr: Changed sap_any to ace_sap_any to avoid
          problems with the namespace.

        * Added a new portability flag that only compiles the SOCK_Mcast.*
          stuff if the platform supports multicast!

        * ./libsrc/Shared_Malloc: Fixed some portability bugs with
          Memory_Pool.C and added new support for SunOS 4.x running SunC++
          4.x.  Thanks to Steve Warwick (swarwick@arinc.com) for this
          strategic help.

Wed Apr 19 09:05:43 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * Fixed up the ./libsrc/CORBA_Handler so that it will correctly
          compile on platforms that don't have Orbix...

        * libsrc/Misc: added a new "Simple String" class called SString.
          This is not really meant to be used by end-user applications.
          It is used by certain portions of ACE that need to have
          operator== and operator!= defined on a string (e.g., the
          Token_Server and the Orbix Event_Comm components that use the
          Map_Manager).

Tue Apr 18 00:09:31 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/ASX: Fixed a stupid bug in Task::activate() that didn't
          spawn a thread if the Thread_Manager was NULL...

Sat Apr 15 19:39:30 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/Reactor: Added a new class to the Reactor called
          Event_Handler_T.[hi].  This class makes it easy to integrate
          existing classes into the Reactor framework without requiring
          them to inherit from Event_Handler directly.  This technique is
          a superset of the DEF_TIE approach used by IONA in Orbix as one
          of the ways to combine an existing class (that doesn't know
          anything about CORBA) with a CORBA interface.  Thanks to Greg
          Lavender
          (g.lavender@isode.com) for the suggestion.

Fri Apr 14 14:41:49 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * Run catman on the ./man directory so that it now has a windex
          file.  This facilitates "man -k".

Thu Apr 13 23:39:22 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/Reactor: Made the Reactor be a stand-alone component that
          does not require any other ACE libraries.

        * Added two new methods to the Reactor so that you can now
          register or remove a set of HANDLEs in a single call.  Thanks to
          Bill Sears
          (wsears@world.std.com) for this suggestion.  Basically, now you
	  can register or deregister a set of n HANDLEs with one operation
          (rather than doing n register_handler () or n remove_handler
          ()).

        * include/sysincludes.h: Changed the name of the macro MT to
          ACE_MT and DB to ACE_DB to avoid polluting the namespace.

Wed Apr 12 11:14:46 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/Reactor/Reactor.C (close): Added code to close down the
          pipe handles when the Reactor is shut down.  Thanks to Mark
          Patton (mark_patton@tx72.mot.com) for this info.

Fri Apr  7 18:33:30 1995  Douglas C. Schmidt  (schmidt@siesta.cs.wustl.edu)

        * Added a new method to CORBA_Handler so that handlers don't need
          to subclass from CORBA_Handler, but rather can call the
          CORBA_Handler::register_service() method (which is static).
          Thanks to Chris Tarr (ctarr@objectspace.co) for this suggestion.

Mon Apr  3 13:09:45 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * Added a new static method to Service_Config.[hC] called
          end_event_loop().  This can be used to stop the run_event_loop()
          method of the Service_Config.  In addition, all the methods in
          Service_Config were changed to be static to emphasize the fact
          that the Service Configurator is a singleton...

        * include/Trace.h (ACE_TRACE): Changed the macro T to ACE_TRACE.
          This will prevent namespace pollution.

        * Added support for the Orbix CORBA implementation.  If you don't
          have Orbix, you'll need to remove this flag from the
          config-sunos5-sunc++.4.x.h file if you are compiling on SunOS
          5.x.

Sun Apr  2 01:12:19 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * Added new support for C++ wrappers around the IP multicasting.
          There are three new files in ./libsrc/IPC_SAP/SOCK_SAP called
          SOCK_Mcast.[hiC] and a new test directory in
          ./tests/Reactor/multicast and ./tests/Reactor/ntalker to
          illustrate how to use this stuff.  Thanks to Tim Harrison
          (harrison@cs.wustl.edu) for this code.

Sat Apr  1 18:48:40 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * Added support to the libsrc/Shared_Malloc/Memory_Pool.[hC] class
          for System V shared memory, as well as for mmap(2) and sbrk(2)
          memory.  Please note that this has not been extensively tested
          yet, so use with caution...

Thu Mar 30 21:50:00 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/Misc/Atomic_Op: Added the postfix versions of the ++ and
          -- operators.  This stops the Sun CC compiler from griping about
          the "anachronistic" usage when using a++ rather than ++a.
          Thanks to Bruce Worden <bruce@betsy.gps.caltech.edu> for the
          suggestion.

Wed Mar 29 22:26:37 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/Reactor/Handle_Set: Fixed a weird problem where I was
          using NOFILE as the max number of descriptors rather than
          FD_SETSIZE.  I don't know why I was doing this.

        * Also fixed up a problem with Handle_Set that was causing the
          iterator to go nuts when it got a strange initial value of
          fd_set in Handle_Set.  Orbix triggers this kind of nonsense in
          some cases...

Tue Mar 28 21:01:36 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/Reactor/Reactor.C: swapped the order of dispatching so
          that handle_exception methods are dispatched before handle_input
          methods to improve response time for exceptions (e.g., OOB
          data).  Thanks to Detlef Becker
          (beckerd@erlh.siemens.de) for suggesting this.

        * Fixed a bug in ./ASX/Stream.i that caused problems when a Module
          was popped off a Stream.  Thanks to Paul Stephenson for noticing
          this and sending me the fix.

        * Changed the Reactor::dispatch methods so that they dispatch the
          timers *before* dispatching the I/O-based event handlers.  This
          is helpful for systems that are time-delay sensitive.

        * libsrc/Reactor/Time_Value: Added new += and -= operators to
          Time_Value.  Thanks to Alex V. Maclinovsky
          (garyh@teleng1.tait.co.nz) for this suggestion.

Thu Mar 23 15:38:23 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/IPC_SAP/Addr/SPIPE_Addr.i (set): Fixed a problem that the
          HP/UX compiler had with complex arithmetic expressions.

        * libsrc/Service_Configurator: fixed up the Service_Configurator
          source code so that it will compile correctly on HP/UX
          platforms.

Tue Mar 21 00:28:25 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * libsrc/IPC_SAP/SOCK_SAP/LSOCK_Connector.h: Fixed an amazingly
          stupid bug with LSOCK_Connector, where I was passing in a
          default argument of PF_INET instead of PF_UNIX... Arrgh!

Mon Mar 20 20:24:29 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * Fixed up the $WRAPPER_ROOT/include/makeinclude/ directory to
          define a new set of platform-specific configuration files.  This
          should greatly improve the portability of ACE to different
          OS/compiler platforms.

        * Added a bunch of changes to allow ACE to build with Lucid C++ on
          SunOs 4.x.  This should also fix some other problems we've been
          having with SunOS 4.x.  Thanks to Lee Baker (baker@ctis.af.mil)
          for these changes.

Sun Mar 19 00:34:30 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * Added manual pages for all of the ./libsrc libraries.  These
          manual pages are all generated automagically from the libsrc
          header files.

Sat Mar 18 10:48:46 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * Finally broke down and fixed the Makefile scheme so that there
          is just one shared library (libACE.so) and one archive library
          (libACE.a).  This should massively simplify the application
          development process, though it may require a bit of fixing of
          Makefiles to remove all the -lReactor -lIPC_SAP stuff that was
          in there before.

        * libsrc/IPC_SAP/TLI_SAP/: Fixed a stupid bug that was causing
          core dumps since the TLI option pointers weren't initialized to
          0 in the TLI::TLI constructor.  Thanks to Ed Brown for noticing
          this (eebrown@netcom.com).

Wed Mar 15 00:08:19 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * Added some new fixes to get ACE to run on OSF1 and Linux.

Tue Mar 14 13:36:31 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * Added several changes to the source code and config-hpux.h
          configuration file based on comments from Alex Ranous
          (ranous@nsa.hp.com).  In particular, changed ACE_HAS_NO_FDSET to
          ACE_SELECT_USES_LONG. 

Mon Mar 13 09:23:58 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * Improved the Makefile scheme so that the use of PTDIRS is no
          longer required.  The trick was to link the appropriate template
          *.C files into the WRAPPER_ROOT/include directory.  This enables
          the compiler to find them in one single place.

Sun Mar 12 22:35:50 1995  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * Added a new mechanism to clean up the insane number of -D's in
          the Makefile.  This new mechanism requires a bit more work at
          installation time, but should greatly reduce the effort during
          normal software development
          (once ACE is installed...).  See the INSTALL file 
          for more details.

Fri Mar 10 17:29:02 1995  Douglas Schmidt  <douglas@gtcterminator>

        * Fixed a stupid bug in Map_Manager.i which wasn't correctly
          setting default values for fields in one of the Map_Manager
          constructors.

Fri Mar 10 08:54:42 1995  Doug Schmidt  <douglas@gtccipher>

        * /libsrc/Connection/Acceptor.i: Fixed a potential memory leak in
          handle_input().

Thu Mar  9 11:59:54 1995  Doug Schmidt  <douglas@gtccipher>

        * Changed the Map_Manager::find() method to use class Read_Guard
          so that multiple finds may proceed in parallel on a multiple
          threaded application.  Likewise, changed the implementation of
          bind() and unbind() to use class Write_Guard so that destructive
          operations will be serialized correctly.  One consequence of
          this is that RW_Mutex must be used instead of Mutex...

        * Added a new overloaded Map_Manager::unbind() method with an
          INT_ID parameter.  This parameter that passes back a reference
          to the internal id being unbound.  This allows the caller to
          clean up any dynamic memory associated with the INT_ID.

Tue Mar  7 13:32:17 1995  Doug Schmidt  <douglas@gtccipher>

        * Changed a bunch more things to get ACE to compile with
          Centerline C++.  This should also make ACE more portable to
          other cfront-based compilers.

        * Had to change the ASX source in ACE to work around a stupid
          problem with templates in cfront-based C++ compilers.
          Fortunately, it was possible to mask most of the problems using
          the C++ preprocessor.

        * There seem to be some problems with cfront-based compilers (such
          as centerline).  They don't like the new SYNCH::MUTEX usage in
          the Message_Queue.

        * Removed several unused local variables in the INET_Addr::set()
          method.

Wed Mar  1 00:35:11 1995  Douglas C. Schmidt  (schmidt@tango)

        * Added a major performance boost on high-speed networks.  It
          turns out that send(3) and revc(3) are slower than write(2) and
          read(2) (since the latter are system calls, and the former are
          library calls.  Therefore, I added new overloaded methods to
          SOCK_IO so that write(2) and read(2) are available to the user!

Tue Feb 28 10:13:09 1995  Douglas C. Schmidt  (schmidt@tango)

        * libsrc/Reactor/Reactor.C: Fixed the implementation of the
          Reactor::open and Reactor::Reactor constructor so that it is now
          possible to resize the size of the Reactor *after* the
          constructor has run (by calling open()) *without* having to shut
          down the Reactor first.

        * Modified the Reactor::attach() method so that it will ADD the
          new bits to the bitmask rather than SET them.  Thanks to Mark
          Patton for recommending this
          (mark_patton@tx72.mot.com).

Sat Feb 25 15:08:04 1995  Douglas C. Schmidt  (schmidt@tango)

        * Released version 3.0.5.

Fri Feb 24 17:57:01 1995  Douglas C. Schmidt  (schmidt@tango)

        * Used the OSE class2man scripts to generate UNIX manual pages for
          IPC_SAP, Thread, Connection, and Reactor.  Other manual pages
          will be forthcoming...

        * libsrc/IPC_SAP/Addr/INET_Addr.i: Fixed a bug in one of the
          INET_Addr::set() methods that caused a segmentation fault if
          host_name was NULL.  In addition, greatly cleaned up the code so
          that all the "set" methods share a common basis of code.

Tue Feb 21 19:32:28 1995  Douglas C. Schmidt  (schmidt@tango)

        * Updated the entire release to use the new SYNCH template
          interface for Task, Module, Stream, and Message_Queue.  This is
          *much* cleaner, though it reveals some bugs with the Sun C++
          templates facility.

Mon Feb 20 22:46:14 1995  Douglas C. Schmidt  (schmidt@tango)

        * Changed the SPIPE_SAP, SOCK_SAP, and TLI_SAP *Connector class
          methods from open() to connect().  This is a more accurate name
          and it also fits in nicely with the Acceptor::accept() method.

        * Started integrating new versions of various header files that
          include hooks to automatically generate documentation.

Tue Feb 14 20:52:13 1995  Douglas C. Schmidt  (schmidt@tango)

        * Changed the order in which the Reactor dispatches descriptors.
          Originally, it dispatched the "read" descriptors *before* the
          "write" descriptors.  Now, it dispatches the "write" descriptors
          first.  This was necessary to handle weird behavior of sockets
          over TCP/IP when data is piggy-backed with the final ACK on a
          non-blocking connection.

Mon Feb 13 15:49:21 1995  Douglas C. Schmidt  (schmidt@tango)

        * Changed the name of Event_Handler::get_fd() to
          Event_Handler::get_handle() to be more consistent with other
          usage in ACE.

Sat Feb  4 22:47:34 1995  Douglas C. Schmidt  (schmidt@tango)

        * libsrc/Service_Configurator/Service_Object: changed the
          destructor to be virtual (thanks to Steffen Winther Sorensen
          <sts@dad.stibo.dk> for noticing this).

Sat Jan 28 16:29:49 1995  Douglas C. Schmidt  (schmidt@tango)

        * Changed the name of class Map_Manager's Search_Structure struct
          to Map_Entry.  This is more specific to what that data structure
          really does.

        * Began adding support for Linux, courtesy of sts@dad.stibo.dk.

Sun Jan 22 23:15:38 1995  Douglas C. Schmidt  (schmidt@tango)

        * Changed the name of the ./libsrc/Connector-Acceptor directory to
          ./libsrc/Connection.  Also changed the name of libConn_Acc.so to
          libConnection.so to be more consistent.

Sat Jan 21 13:59:18 1995  Douglas C. Schmidt  (schmidt@tango)

        * libsrc/IPC_SAP: Fixed the *Acceptor classes for SOCK_SAP and
          SPIPE_SAP so they behave just like FIFO_SAP and contain a method
          called remove().  This method closes the underlying descriptor
          and also unlinks the local address from the file system.

        * libsrc/ASX/Message_Queue.i (copy): Fixed this code so that it
          correctly stores starting at the wr_ptr rather than the rd_ptr.
          Thanks to Chris Cleeland
          (chris@milo.st-louis.mo.us) for pointing this out
          to me.

Wed Jan 11 13:07:19 1995  Douglas C. Schmidt  (schmidt@tango)

        * Changed all uses of class Thr_Manager to class Thread_Manager
          and class Thr_Cntl to Thread_Control.  This is more readable and
          is now consistent with the documentation...

Tue Jan 10 13:49:31 1995  Douglas C. Schmidt  (schmidt@tango)

        * Modified the makefile scheme so that only the *.so files are
          built by default.  If you want to build both *.a and *.so files,
          uncomment out the lines described in
          $WRAPPER_ROOT/include/makeinclude/rules.lib.GNU.  Note that this
          will require you to run make on the ./libsrc directories twice
          in order to properly build and install both the *.a and *.so
          libraries.

Mon Jan  9 22:57:29 1995  Douglas C. Schmidt  (schmidt@tango)

        * libsrc/Reactor/Signal.h: Changed the name of the Signal_Block
          class to the Signal_Guard class to be more consistent with the
          Guard class in Synch.h.

Sat Jan  7 19:49:46 1995  Douglas C. Schmidt  (schmidt@tango)

        * tests/ASX/Event_Server/Event_Server: Revised the Event Server
          test example to use the Acceptor pattern components.

Fri Jan  6 23:38:21 1995  Douglas C. Schmidt  (schmidt@tango)

        * Added a new method to class Task that turns a task into an
          active object (i.e., associates a thread of control with the
          task).  This is useful since it replaces all the places in
          application code that original said "this->thr_mgr_.spawn
          (THR_FUNC
          (&this->svc_run))", etc...

Thu Jan  5 21:05:15 1995  Douglas C. Schmidt  (schmidt@tango)

        * libsrc/ASX: Changed the capitalization of class STREAM to class
          Stream.  This seems more reasonable since I don't see any
          particular reason to shout about Streams!

        * libsrc/ASX/Task: Changed name of method qreply() to reply() to
          reflect the fact that the name of the class is no longer Queue!
          
        * libsrc/ASX: Made both Task and Message_Queue into parameterized
          types.  This greatly improves the ability to parameterized
          synchronization into an application.

        * Changed all occurrences of timestruc_t to use Time_Value
          instead.  This helps to improve portability and reduce the
          "impedence mismatch" caused by mixing both C and C++ types in
          the ACE interfaces.  Note that one drawback of this is that we
          lose nano-second timing accuracy.  However, I don't know of any
          real OS platforms that support that degree of precision anyway!

        * libsrc/Reactor: Moved the static "zero" data member from the
          Timer_Queue class to the Time_Value class.  Also added a new
          static data member called "zerop," which is a pointer to "zero".

        * libsrc/Threads/Synch: Changed the interface of class Condition
          so that it no longer has both wait() and a timedwait() methods.
          Since C++ has default values, these two methods were redundant.
          Now, there is only a single method called wait().  By default,
          it's argument is 0, which defaults to the original wait()
          semantics.  If the argument is non-zero then the timewait
          semantics apply.

        * libsrc/Threads/Synch: Added a new class called Null_Condition.
          This is similar to the Null_Mutex class in the sense that it has
          the same interface as class Condition, but it's methods are all
          no-ops
          (however, wait() and signal() both set errno = ETIME
          before returning...).  This class is useful for
          parameterizing synchronization into an application.

