summaryrefslogtreecommitdiff
path: root/ChangeLog-96a
diff options
context:
space:
mode:
authorlevine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1996-10-21 21:41:34 +0000
committerlevine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1996-10-21 21:41:34 +0000
commita5fdebc5f6375078ec1763850a4ca23ec7fe6458 (patch)
treebcf0a25c3d45a209a6e3ac37b233a4812f29c732 /ChangeLog-96a
downloadATCD-a5fdebc5f6375078ec1763850a4ca23ec7fe6458.tar.gz
Initial revision
Diffstat (limited to 'ChangeLog-96a')
-rw-r--r--ChangeLog-96a3888
1 files changed, 3888 insertions, 0 deletions
diff --git a/ChangeLog-96a b/ChangeLog-96a
new file mode 100644
index 00000000000..8b25e02595f
--- /dev/null
+++ b/ChangeLog-96a
@@ -0,0 +1,3888 @@
+Sun Jun 30 15:28:43 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/OS.i (cond_timedwait): Fixed the implementation of the
+ ACE_OS::cond_timedwait() wrapper such that if the
+ caller-specified timeout elapses without the condition variable
+ being signaled that errno is always set to ETIME. This fixes
+ some inconsistencies that occurred with POSIX pthreads and Win32
+ threads. Thanks to Ross Dargahi <rossd@acm.org> for pointing
+ this out.
+
+ * ace/SOCK.cpp: Changed SOCK::close() to use the new
+ ACE_OS::closesocket() call. This should fix some weird bugs
+ that have been lurking in the code for some time now!
+
+ * ace/OS: Added a new method to ACE_OS called closesocket(). This
+ handles the differences between Win32 and UNIX in their
+ treatment of sockets (e.g., NT requires the use of
+ closesocket(), whereas UNIX requires the use of close(). Thanks
+ to Irfan, Prashant, and Tim for figuring this one out!
+
+Sat Jun 29 21:23:04 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * ace/SPIPE_Acceptor.cpp (create_new_instance): Added the flag
+ (FILE_FLAG_OVERLAPPED) in call to CreateNamedPipe.
+
+Fri Jun 28 01:31:24 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Svc_Handler.cpp (open): Fixed a small typo that caused a
+ compile error if the DEBUGGING macro was enabled. Thanks to
+ Irfan for finding this.
+
+Wed Jun 26 03:19:27 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Synch_T.cpp (ts_get): The tss object allocated off the heap
+ should be released if setspecific fails. Thanks to John Lu
+ <johnlu@f1.telekurs.ch> for reporting this.
+
+ * ace/CORBA_Handler.cpp (handle_input): changed ACE_OS::send and
+ ACE_OS::recv to ACE::send and ACE::recv respectively in
+ CORBA_Handler.cpp. Thanks to Irfan for pointing this out.
+
+ * ace/Service_Config: slightly modified the Service_Config.[h,cpp]
+ in order to make it possible to create an ACE_Service_Config
+ with an external ACE_Reactor as a parameter. On creation I was
+ handling this partly correct (i.e., not creating a new reactor).
+ However, there was no flag for remembering this for a later
+ deletion. Thus, on deletion I was doing a delete on the Reactor
+ regardless of who created it. This is now fixed. Thanks to
+ Karlheinz for pointing this out.
+
+ * examples/ASX/CCM_App/CCM_App.cpp: Changed all uses of init (int,
+ char **) to init (int, char *[]) to work around a "feature" with
+ MSVC++ 4.x... Thanks to Karlheinz for pointing this out.
+
+ * ace/OS.h: Added a new typedef of TCHAR to be compatible with
+ Win32 UNICODE type names...
+
+ * ace/{Mem_Map,DEV_Addr,SPIPE_Addr,FILE_Addr}: Added UNICODE
+ support for Win32 to all interfaces that require filenames.
+
+ * ace/{SPIPE_Stream,SOCK_IO,FILE_IO,DEV_IO}: Added a new pair of
+ send()/recv() methods that take ACE_OVERLAPPED pointers in order
+ to make it possible to integrate seamlessly with Win32
+ overlapped I/O. Naturally, these methods are simply
+ "callthroughs" to the ACE_OS versions...
+
+ * ace/OS: Added a new pair of send()/recv() methods that take
+ ACE_OVERLAPPED pointers in order to make it possible to
+ integrate seamlessly with Win32 overlapped I/O.
+
+ * ace/SPIPE_Acceptor: Factored out common code in the Win32
+ implementation of ACE SPIPES (which uses Win32 Named Pipes, of
+ course ;-)).
+
+ * ace/SPIPE_Acceptor.h: Removed a vestige of the past --
+ ACE_SPIPE_LISTENER_H should be ACE_SPIPE_ACCEPTOR_H...
+
+Wed Jun 19 19:35:12 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * ace/SPIPE_{Acceptor,Connector}: Modified SPIPE_Acceptor and
+ SPIPE_Connector to implement Named Pipes on NT. The public
+ interface remains the same.
+
+Sun Jun 16 00:45:41 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Service_Config: Provided public accessor methods for the
+ following data memebers of the ACE_Service_Config:
+
+ reconfig_occurred_
+ end_event_loop_
+
+ Thanks to Steve Warwick <sjw@aesthetic.com> for suggesting this.
+
+ * ace/Synch*: Added UNICODE support for the ACE synchronization
+ classes (e.g., ACE_Mutex, ACE_RW_Mutex, ACE_Semaphore, etc.).
+
+ * ace/OS: Added UNICODE support for the ACE_OS::dl_open()
+ function, as well as the ACE_OS synchronization functions.
+
+ * ace/CORBA_Handler: Added Seth's changes for Orbix 2.0.
+
+Sat Jun 1 13:30:55 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * ace/Memory_Pool.cpp (remap): Fixed a bug in
+ ACE_MMAP_Memory_Pool::remap (). The test for whether or not the
+ addr falls within the range had a '!' (not) missing, that is, it
+ was failing when it should be succeeding and vice versa.
+
+Sun Jun 9 00:01:44 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * Released version 4.0.24 for testing.
+
+ * ace: Changed all uses of ACE_Guard<LOCK> m (lock_) to ACE_GUARD
+ (LOCK, lock_), which is a macro that is defined as follows:
+
+ ACE_Guard<MUTEX> ace_mon (LOCK); \
+ if (m.locked () == 0) return;
+
+ The reason we need this is (1) detect locking failures, rather
+ than have things fail silently and (2) to automatically detect
+ deadlock in the Reactor. In addition, I also added
+ ACE_GUARD_RETURN, which is similar to ACE_GUARD, except that it
+ returns a "failure" status when the lock is not acquired.
+ Thanks to Karlheinz for suggesting this.
+
+ * ace/Log_Msg: Added the new thr_state() accessors to Log_Msg.
+
+ * ace/Thread_Manager.cpp: factored out some common code by having
+ the public interfaces (like resume() and suspend()) utilize the
+ protected interfaces (like resume_thr() and suspend_thr()).
+
+ * ace/Thread_Manager.cpp: Added sanity checks for suspend(),
+ resume(), cancel(), etc. so that we don't blow up if someone
+ tries to perform an operation on an invalid thread id.
+
+ * ace/Thread_Manager: Added a suite of new methods for
+ (1) cooperatively "canceling" threads and (2) testing if threads
+ are cancelled (also added similar checks to test if threads are
+ suspended or resumed). The cooperative cancellation mechanism
+ is based on a design fleshed out with Detlef and Karlheinz.
+ It's essentially a compromise between the powerful mechanisms
+ available via POSIX pthreads vs. the totally lame mechanisms
+ available in Win32.
+
+ Here's how it all works:
+
+ 1. Added several new methods to ACE_Thread_Manager:
+
+ cancel(thr_id); -- cancels thr_id
+ cancel_all(); -- cancels all the threads in a Thread_Manager
+ cancel_grp(grp_id); -- cancels a group of threads in a Thread_Manager
+ testcancel(thr_id); -- returns "true" if thr_id has been cancelled
+
+ 2. Updated ACE_Log_Msg to maintain the current state of a thread
+ in thread-specific-storage (TSS). Actually, it's more clever
+ than that since I really keep a *pointer* to the state of a
+ thread in TSS. This pointer actually points *back* to the
+ ACE_Thread_State field in the ACE_Thread_Manager! I use it
+ as a cache as follows:
+
+ ACE_Thread_Manager::testcancel (thread_t t_id)
+ {
+ ACE_MT (ACE_Thread_Mutex_Guard m (this->lock_));
+
+ // Try to get the cached value out of TSS to avoid lookup.
+ ACE_Thread_State *thr_state = ACE_LOG_MSG->thr_state ();
+
+ if (thr_state == 0)
+ { // We need to init the cache.
+ int i = this->find (t_id);
+ if (i == -1) return -1;
+ // Update the TSS cache.
+ ACE_LOG_MSG->thr_state (thr_state = &this->thr_table_[i].thr_state_);
+ }
+ return *thr_state == ACE_THR_CANCELLED;
+ }
+
+ Note that this allows me to avoid searching the
+ Thread_Manager on every Thread_Manager::cancel() access
+ except the first one!
+
+ 3. I've updated the examples/Threads/test_thread_manager.cpp
+ test file to exercise the new cooperative thread cancellation
+ scheme. It basically spawns a bunch of threads that go into
+ their own event loops doing
+
+ if (thr_mgr ()->testcancel (ACE_Thread::self ()) != 0)
+ break;
+
+ every so often. Naturally, the main thread cancels them by saying
+
+ thr_mgr ()->cancel_grp (grp_id);
+
+ when it wants to inform them to shut down.
+
+ * ace/Thread_Manager: Moved the Thread_State enum from the
+ ACE_Thread_Descriptor class to OS.h and renamed it to be
+ ACE_Thread_State. This will make it easier to integrate the
+ state of a thread in thread-specific storage...
+
+Sat Jun 8 13:35:17 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/OS.i (sema_post): revised the implementation of the POSIX
+ Pthreads semaphore implementation just a bit in order to make it
+ slightly more efficient (it now releases the mutex before
+ signaling the condition variable).
+
+ * ace/OS.i and config-aix.4.1.h: added a fix that separates the
+ decision about whether optlen is a pointer from the decision of
+ the type of optlen. This fixes a problem on AIX. Thanks to Bob
+ Olson <olson@mcs.anl.gov> for this fix.
+
+ * ace/Proactor.h: Fixed a small glitch that was causing some
+ compilers to break due to the fact that they can't grok fully
+ qualified destructor syntax in the class definition. Thanks to
+ Alfred Keller <kellera@pop.eunet.ch> for reporting this.
+
+ * ace/OS.h: Added some Win32 macros (e.g., GENERIC_READ) to the
+ UNIX side of the house in order to compile the Proactor on Win32
+ and UNIX.
+
+Fri Jun 7 19:36:27 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * Added a new Bourne shell script called ACE-install.sh that will
+ automatically download and install on UNIX machines. Thanks to
+ Ajit Sagar <asagar@spdmail.spd.dsccc.com> for contributing this.
+
+Thu Jun 6 00:37:02 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * Released version 4.0.23 for testing.
+
+ * ace/Local_Tokens: Updated the *.cpp and *.i files to remove
+ warnings and generally improve the conformance to the ACE coding
+ guidelines.
+
+ * examples: Moved the Proactor directory into the Reactor
+ directory since the Proactor and Reactor are really two
+ implementations of the same basic pattern.
+
+ * ace/Memory_Pool.cpp: Fixed an inconsistency caused by not
+ updating __INLINE__ to __ACE_INLINE__. Thanks to Neil Cohen for
+ finding this.
+
+ * ace: Added support for the Florida State PTHREADS package.
+ Thanks to Gary Salsbery <gsalsber@simsun.atsc.allied.com> and
+ Eric Beser <beser@simsun.atsc.allied.com> for helping with this.
+
+ * ace: Added support for the m88k OS. Thanks to Gary Salsbery
+ <gsalsber@simsun.atsc.allied.com> and Eric Beser
+ <beser@simsun.atsc.allied.com> for helping with this.
+
+ * ace/OS.h: Added a default value of NULL to the sigwait() OS
+ wrapper method to simplify the usecase in certain cases.
+
+ * ace/Memory_Pool.cpp (commit_backing_store): Fixed what is
+ hopefully the last typo related to the ACE_DEFAULT_BASE_ADDR
+ macro. Thanks to Neil B. Cohen <nbc@metsci.com> for reporting
+ this.
+
+Thu Jun 6 15:31:40 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu)
+
+ * ace/CORBA_Handler.h: This version of the CORBA_Handler works
+ with Orbix 2.0. Most of the changes involve the use of C++
+ Exception Handling (the removal of IT_X), and the location of
+ some CORBA system exception classes.
+
+ * ace/Event_Handler.h: Added handle_*_complete methods for the
+ Proactor. The Proactor now takes Event_Handlers and calls back
+ the **_complete methods when overlapped I/O operations have
+ completed.
+
+ * ace/Service_Config.h: Added static accessors for the Proactor to
+ the Service_Config object. Similar to the Reactor accessors,
+ applications can now use the Service_Config object as the global
+ access point to the Proactor event demultiplexor.
+
+Wed Jun 5 22:40:28 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/OS.i (t_free): Added a check to avoid deleting a NULL ptr.
+ This was causing problems for the TLI_Acceptor. Thanks to Ajit
+ Sagar <asagar@spdmail.spd.dsccc.com> for reporting this.
+
+ * ace/Makefile: Changed things back so that both static and
+ dynamic libs are built by default... Thanks to Brad Brown
+ <bbrown@rdxsunhost.aud.alcatel.com> for pointing this out...
+
+Sat Jun 1 13:49:51 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * Released version 4.0.22 for testing.
+
+ * Added Tim Harrison's latest tests for Proactor.
+
+Sat Jun 1 13:30:55 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * ace/Memory_Pool.cpp (remap): Fixed a bug in
+ ACE_MMAP_Memory_Pool::remap (). The test for whether or not the
+ addr falls within the range had a '!' (not) missing, that is, it
+ was failing when it should be succeeding and vice versa.
+
+Fri May 31 16:31:13 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * Rereleased version 4.0.21 for testing.
+
+ * Copied over new versions of the Proactor -- there was a small
+ problem with the UNIX version that caused it not to compile...
+
+Fri May 31 00:03:41 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu)
+
+ * examples/Proactor/test_proactor.cpp: Added a test program for
+ the Proactor. Check examples/Proactor/README for more details
+ on this test example.
+
+ * ace/Proactor.cpp: Added first pass at the Proactor for win32.
+ The Proactor is a Reactor-like abstraction that uses
+ asynchronous I/O, rather than synchronous I/O. On Windows NT we
+ implement the Proactor using overlapped I/O. We'll soon be
+ porting the Proactor to Solaris using POSIX 4.x aio_* API for
+ real-time programming.
+
+ Unfortunately, the Proactor has not yet been integrated with
+ Windows NT WaitForMultipleObjects since it appears that I/O
+ Completion ports are not "waitable" objects on Windows NT. Does
+ anyone know if this has been fixed in release 4.0?
+
+Thu May 30 05:51:23 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Synch.i: Reordered the definitions of several methods in
+ Synch.i to avoid warnings from G++. Thanks to Marco Sommerau
+ <sommerau@matisse.informatik.uni-stuttgart.de> for noticing
+ this.
+
+ * ace/Log_Msg.cpp: There was a problem having to do with the order
+ in which static objects by G++. In particular, G++ was calling
+ the constructor of the lock_ mutex in Log_Msg.cpp *after* it was
+ being used for the first time. The right solution is to make
+ lock_ be a pointer and allocate it once in the instance()
+ method. Thanks to Marco Sommerau
+ <sommerau@matisse.informatik.uni-stuttgart.de> for finding this
+ problem.
+
+ * ace/TLI_Acceptor.cpp (close): Make sure to only close down the
+ TLI_Request_Queue if queue_ is non-NULL! Thanks to Ajit Sagar
+ <asagar@spdmail.spd.dsccc.com> for spotting this.
+
+ * ace: Changed all the enums in the various SysV wrappers from
+ things like CREATE and OPEN to ACE_CREATE and ACE_OPEN to avoid
+ name clashes with other systems. In addition, also changed
+ NONBLOCK to ACE_NOWAIT to avoid clashes with the existing
+ ACE_NONBLOCK macro! Thanks to Steve Warwick <sjw@aesthetic.com>
+ for suggesting this.
+
+ * ChangeLog: Changed all usages of the INLINE macro to ACE_INLINE.
+ This avoids name clashes with other systems. Thanks to
+ Chris Eich <Chris_Eich@optilink.optilink.dsccc.com> for
+ suggesting this.
+
+Mon May 27 13:03:58 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Map_Manager.cpp (trybind): The function trybind() doesn't
+ return a value as it should. A return was missing from the last
+ line of the function. Thanks to Stuart Powell
+ <stuartp@in.ot.com.au> for finding this problem.
+
+ * ace/Acceptor.cpp (dump): The debug print referred to
+ "scheduling_strategy_" which doesn't exist in the relevant
+ class. Replacing it with "concurrency_strategy_" fixes the
+ problem. Thanks to Stuart Powell <stuartp@in.ot.com.au> for
+ finding this problem.
+
+ * ace/Mem_Map.i: Make sure to close down the file mapping
+ correctly when we upmap the view!
+
+ * ace/OS.h: Changed the default shared memory address from 16 M to
+ 64 M in order to work around problems with AIX.
+
+ * ace/Memory_Pool: Moved and renamed the enums in
+ ACE_Shared_Memory_Pool so that they'd be in OS.h. This makes it
+ easier to remember to change them if they are incorrect. Thanks
+ to Lionel Mommeja <mommeja@vnet.ibm.com> for suggesting this.
+
+ * ace/Stream.cpp: Removed #if defined (ACE_HAS_THREADS)
+
+ * ace/OS.cpp (svc_run): Added a Win32 try/except block to
+ Spawn_Args::svc_run so that we catch all Win32 structured
+ exceptions in order to make sure that we clean up correctly when
+ the thread exits.
+
+Sun May 26 11:37:08 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * ace/Local_Name_Space.cpp: Used the new Win32 exception
+ integration in order to ensure that the Name Server will
+ transparently work correctly when the backing store is extended
+ by other processes on the same machine.
+
+ * ace/Memory_Pool.cpp: Revised the ACE_MMAP_Memory_Pool to export
+ the mechanism for extending the virtual memory mapping. This
+ can now be called by other programs (e.g., in order to integrate
+ with Win32 Structure Exception Handling).
+
+ * ace/Memory_Pool.cpp: Changed the use of ACE_OS::lseek() to
+ ACE_OS::filesize() in order to determine the current offset when
+ we're remapping the address space.
+
+Wed May 22 13:08:44 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * ace/OS.h (ACE_DEFAULT_TIME_SERVER_STR): Added a new entry for
+ ACE_DEFAULT_TIME_SERVER_STR.
+
+ * ace/Malloc_T.cpp (advance): Fixed two small bugs. In
+ ACE_Malloc::try_bind(), if we have a match we need to set
+ pointer to node->pointer_ and not node->name_.
+ Ina ACE_Malloc_Iterator::advance(), the continue in the for loop
+ should be for strcmp != 0 instead of == 0.
+
+Sun May 19 12:03:11 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * Released version 4.0.20 for testing.
+
+ * ace/Service_Record.cpp (remove): Fixed a very mysterious bug
+ that was caused by deleteing an object and then trying to access
+ it's next_ pointer. This worked on UNIX, but fortunately the
+ MSVC++ compiler does special things to deleted memory and the
+ bug was revealed! At long last, MSVC++ does something right
+ ;-).
+
+ * ace/Module.cpp: Revised the code a bit to use the ACE_SET_BITS
+ and ACE_CLR_BITS macros to improve readability.
+
+ * ace/SV_Semaphore_Complex.cpp (open): Fixed a race condition
+ where we weren't correctly checking for EIDRM. Thanks to
+ Michael Fortinsky <mike@vocaltec.com> for reporting this.
+
+Sat May 18 10:49:04 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace: Added a new ace.mak and ace.mdp file for Win32.
+
+ * ace/Service_Record.cpp: Rewrote some code to work around a bug
+ with MSVC++. This bug was causing problems since the
+ ACE_Shared_Object methods were getting called, rather than the
+ Test_Task methods used in the examples/ASX/CCM_App.cpp file.
+ Thanks to Tom Leith for pointing out this problem!
+
+ * ace/OS.h: Added a new #define for ACE_DEFAULT_SVC_CONF to deal
+ with differences between NT and UNIX pathnames.
+
+ * ace/Time_Value.h: Moved the definition of the INLINE macro from
+ OS.h to Time_Value.h so that it will be in scope for
+ Time_Value.i. Thanks to Neil Cohen for reporting this.
+
+ * examples/Reactor/Misc/signal_tester.cpp: There was a typo in
+ signal_test.cpp. It had mean to use handle_input() rather than
+ handle_output() to exercise the asynchronous signal handling
+ capabilities. This is fixed now.
+
+ * apps/Synch-Benchmarks/Benchmark.cpp (thr_id): Added a new #if
+ define (ACE_HAS_DCETHREADS) to make this work on AIX. Thanks to
+ Greg Wilson <gvw@cs.toronto.edu> for reporting this.
+
+ * ace/Local_Name_Space: Moved ACE_NS_String and ACE_NS_Internal
+ from the *.cpp file to the *.h file to work around a "feature"
+ of the AIX C++ compiler. Thanks to Greg Wilson
+ <gvw@cs.toronto.edu> for reporting this.
+
+ * ace/Reactor.h (ACE_Handler_Repository): Changed the type of
+ cur_size_ from size_t to ssize_t to avoid type mismatches.
+
+ * ace/Name_Request_Reply.cpp (decode): Fixed some inconsistencies
+ between signed and unsigned loop counters...
+
+ * ace/OS.h: Changed the typedef of pid_t on Win32 from
+ DWORD to long to be consistent with UNIX.
+
+Thu May 16 18:49:14 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * Released version 4.0.19 for testing.
+
+ * build/SunOS5.4/ace/ACE.cpp (ldfind): Fixed a bug in ldfind()
+ that caused a segfault if we didn't resolve the filename in the
+ LD_SEARCH_PATH.
+
+ * ace/Reactor and Timer_Queue: Changed the interface of cancel()
+ to include a const void **arg. If arg is non-NULL then it will
+ be set to point to the ``magic cookie'' argument passed in when
+ the Event_Handler was registered. This makes it possible to
+ free up the memory and avoid memory leaks.
+
+ * ace/Service_Record: Removed the #ifdefs that checked if
+ ACE_HAS_THREADS because we ought to be able to build all of this
+ stuff now that we've got the ACE_OS wrappers.
+
+ * ace/Svc_Conf.y: Removed the #ifdefs that checked if
+ ACE_HAS_THREADS because we ought to be able to build all of this
+ stuff now that we've got the ACE_OS wrappers.
+
+ * ace/OS.h (ACE_DEFAULT_BACKING_STORE): Made a different
+ ACE_DEFAULT_BACKING_STORE for NT and for UNIX to handle the
+ differences in directory separator characters...
+
+Wed May 15 18:45:48 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * examples/ASX/CCM_App/CCM_App.cpp: Fixed up the test application
+ so that it should support dynamic linking on Win32. Thanks to
+ Tom Leith for reporting this.
+
+ * ace: Added the ACE_Export macro to class ACE and the various
+ "helper" classes related to ACE_Malloc in order to have this
+ work properly when use with ACE_Malloc outside of the ACE DLL.
+
+ * ace/Svc_Conf.l: Added support for '\' and ':' in the regular
+ expression for an ACE pathname in order to support Win32
+ filenames (e.g., "C:\foobar\"). Thanks to Tom Leith
+ <trl@icon-stl.net> for reporting this.
+
+ * ace/Malloc_T.cpp (ACE_Allocator_Adapter): Moved the constructor
+ from the *.i file to the *.cpp file and added a new constructor
+ that takes both a pool_name *and* a lock_name. This is
+ necessary because the ACE Malloc now has this API, as well.
+
+ * examples/Threads/test_barrier.cpp (main): Fixed a bug that was
+ caused by the main() thread exiting before all the other worker
+ threads had finished "waiting" on their Barrier. The fix is to
+ use ACE_Thread_Manager to control the thread exits...
+
+Mon May 13 00:03:09 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * examples/Connection/non_blocking/CPP-acceptor.cpp: Modified the
+ implementation of the Svc_Handler::open() method so that it will
+ truly behave as an iterative server (as advertised...).
+ Currently, it behaves as a half-iterative server (i.e., the
+ Oneshot_Acceptor is iterative, but the Svc_Handler is
+ "concurrently"), which is causing problems because we're wiping
+ out the values of Svc_Handler each time through the main event
+ loop. Thanks to Gerolf Wendland for noticing this problem.
+
+ * ace/Log_Msg: Added an alternative logging mechanism that makes
+ it possible to integrate variable argument lists from other
+ logging mechanisms into the ACE mechanism. Thanks to Chris
+ Lahey for proposing this.
+
+ * ace/Synch.h: Moved ACE_Process_Mutex so that it appears *after*
+ ACE_Mutex (since it depends on ACE_Mutex). Thanks to Dieter
+ Quehl for finding this.
+
+ * Released version 4.0.18 for testing.
+
+ * ace/Name_Space.cpp: Added the ACE_BUILD_DLL macro at the
+ beginning of this file so that it will build as a DLL on NT
+ correctly.
+
+ * ace/Name_Space.cpp: Added a default constructor for
+ ACE_Name_Binding so that it will compile when used as a template
+ argument for ACE_Unbounded_Set.
+
+Sun May 12 14:23:44 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Map_Manager: Totally reworked the Map Manager so that it can
+ be more flexible with respect to where the allocator comes from.
+ This is necessary for certain parts of ACE (e.g.,
+ Local_Name_Space) that must be very careful about which
+ allocator is used to manage memory.
+
+ * ace/Synch: Moved ACE_Process_Mutex and ACE_RW_Process_Mutex
+ *outside* of the ACE_HAS_THREADS #ifdef since these are now
+ always defined on all platforms (because the Process_Mutex stuff
+ uses SV Semaphores, which are portable even if we don't have
+ threads!).
+
+ * ace/Naming_Context.cpp (parse_args): Removed an unnecessary call
+ to strdup(). This was detected by Purify!
+
+Sun May 12 14:26:20 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * ace/Local_Name_Space.cpp (shared_bind): Fixed a small bug. In
+ computing type_len in shared_bind(), we needed to add 1 to
+ account for the NUL character.
+
+ * ace/Local_Name_Space.cpp: (list_types): Fixed some potential
+ memory leaks. In list_types() as well as list_type_entries()
+ calling pattern.char_rep() was allocating memory which was never
+ getting deleted. Similarly, in list_names() and list_values,
+ call to char_rep was also allocating memory that was not getting
+ deleted.
+
+Sat May 11 16:19:51 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Log_Msg.cpp (local_host): added a static member to
+ ACE_Log_Msg that maintains the local host name. Now, instead of
+ always displaying "<local host>", we can insert the actual local
+ name into the object and then it will be automatically printed
+ when VERBOSE mode is enabled. Thanks to Chris Lahey for
+ suggesting this.
+
+ * ace/Local_Name_Space.cpp: Used the new ACE_Name_Binding class to
+ simplify the implementation of all the list_* methods in
+ ACE_Local_Name_Space.
+
+ * ace/Name_Space.cpp: Made a number of changes to the
+ ACE_Name_Binding class in order to make it work more efficiently
+ and concisely (e.g., reduce the amount of copying and eliminate
+ the need for converting the type field back and forth to/from
+ ACE_WStrings).
+
+ * examples/Service_Configurator/IPC-tests/server/Handle_L_Dgram.cpp:
+ Fixed a typo where #if !defined (ACE_LACKS_UNIX_DOMAIN_SOCKETS)
+ was *before* the #include of the header file that defines this
+ macro! Thanks to Nigel for pointing this out, as well.
+
+ * ace: Added a number of fixes to make ACE compile on SCO UNIX
+ 3.2.4 using gcc 2.7.2. Thanks to Nigel Lowe <nigel@nt.com> for
+ helping with this.
+
+ * netsvcs/lib/Name_Handler.cpp: operation_ needs to be declared as
+ just LIST_OP and not ACE_Name_Handler::LIST_OP. For some strange
+ reason NT complains otherwise. Thanks to Prashant for finding
+ this.
+
+Fri May 10 01:09:17 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace: Added new versions of ace.mak and ace.mdp to fix a couple
+ of minor typos.
+
+ * ace/Malloc_T.cpp (ACE_Malloc): Added a new constructor that
+ takes both the pool_name and the lock_name explicitly. This is
+ more flexible. Thanks to Ramesh Nagabushnam <rcn@nynexst.com>
+ for suggesting this.
+
+ * ace/Malloc_T: Modified the constructor of ACE_Malloc so that by
+ default the name of the memory pool (which is also used as the
+ name of the lock...) is ACE_DEFAULT_MUTEX.
+
+ * Released version 4.0.17 for testing.
+
+ * ace/Connector.cpp (create_AST): Must reset errno = EWOULDBLOCK
+ to avoid making caller's think that something else has gone
+ awry... Thanks to Steve Warwick <sjw@aesthetic.com> for chasing
+ this down!
+
+ * ace/ACE.cpp (handle_timed_complete): If you issue a non-blocking
+ connect on a socket, you will have back a failure with errno =
+ EINPROGRESS. Then, if for some reason, the connection could not
+ be established, the select (which you have to issue to know
+ about the completion of connection) will return you the fd set
+ both in the read mask and in the write mask (infact select
+ returns 2 in this case). The behaviour above affects the method
+ ACE::handle_time_complete, so I changed the last part of the
+ above method, this way:
+
+ if (n <= 0)
+ {
+ ...
+ ...
+ }
+ else if (rd_handles.is_set(h))
+ {
+ char dummy;
+ // The following recv() won't block provided that the
+ // ACE_NONBLOCK flag has not been turned off .
+
+ if (ACE::recv (h, &dummy, 1, MSG_PEEK) <= 0)
+ return ACE_INVALID_HANDLE;
+ }
+
+ // 1. The HANDLE is ready for writing or 2. recv() returned that
+ // there are data to be read thus the connection was successfully
+ // established.
+ return h;
+
+ That is, I reversed the sense of the tests so that the
+ rd_handles() is checked first for failure along with the recv().
+ Thanks to Antonio Tortorici <antonio@rh0011.roma.tlsoft.it> for
+ suggesting this.
+
+ * examples/Threads/test_thread_manager.cpp (main): Changed argv[1]
+ to argv[2]. Thanks to Andres Kruse <kruse@cern.ch> for finding
+ this problem.
+
+ * examples/Connection/non-blocking: Fixed some nasty bugs that
+ caused the non-blocking connector and acceptor test programs to
+ crash and burn. Thanks to Steve Warwick and Gerolf Wendland for
+ finding this problem.
+
+ * ace/SV_Semaphore_Simple.cpp (open): Check for
+ ACE_INVALID_SEM_KEY and return -1 in this case.
+
+ * ace/Synch.h: Removed the default value of 0 for the name of the
+ ACE_Process_Mutex and the ACE_RW_Process_Mutex and replaced it
+ with a new macro called ACE_DEFAULT_MUTEX. Using 0 didn't make
+ any sense on either NT or UNIX because process-wide Mutexes
+ should be named!
+
+ * ace/SV_Semaphore_Simple.cpp (name_2_key): Added a check for name
+ == 0 and bail out of that's the case rather than crash!
+
+ * ace/Reactor.cpp (wait_for_multiple_events): In the Reactor's
+ wait_for_multiple_events method, the do {} while () around the
+ select/poll system call is trying to wait until some "good"
+ event occurs, with handle_error() taking care of unexpected
+ problems. In the case of a bad file descriptor, however,
+ handle_error() returns 0. This was exiting the loop because the
+ loop exit condition was:
+
+ do { /* ... */ } while (nfound == -1 && this->handle_error () > 0);
+
+ which eventually causes ACE_Service_Config::run_event_loop() to
+ exit. Since the offending file descriptor is handled by
+ handle_error(), the loop should continue. Therefore, I've
+ changed the while to read:
+
+ while (nfound == -1 && this->handle_error () >= 0);
+
+ Thanks to Eric C. Newton <ecn@clark.net> for providing this fix.
+
+ * ace/INET_Addr.cpp (string_to_addr): Changed the order of the
+ parameters so that the form is now "ip-address:port". This
+ should (finally) be consistent for both string_to_addr() and
+ addr_to_string()...
+
+ * ace/Log_Msg: Changed the char * parameter of the log() method to
+ const char *. Thanks to Chris for suggesting this!
+
+ * ace/Synch_T.cpp: Moved the #if defined (ACE_HAS_THREADS) down to
+ the right part of the file... Thanks to Alex Karev
+ <akg@na47sun05.cern.ch> for finding this.
+
+ * ace/Malloc.h: Added a very important #else... Thanks to Alex
+ Karev <akg@na47sun05.cern.ch> for finding this.
+
+ * ace/Signal.i (ACE_Sig_Guard): Changed the sense of the #ifdef
+ tests in the ACE_Sig_Guard constructor and destructor from #if
+ !defined (ACE_MT_SAFE) to #if 0 // !defined (ACE_MT_SAFE) in
+ order to get the right semantics for signals (which should be
+ blocked "process wide").
+
+ * ace/Synch_T.h: put the frigging copy constructor in the public
+ section of ACE_Atomic_Op because it was causing trouble for
+ NT...
+
+Mon May 6 00:11:37 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * Released version 4.0.16 for testing.
+
+ * ace/Log_Msg.cpp: Was defining ACE_Recursive_Thread_Mutex in the
+ wrong place (i.e., outside of the #if defined (ACE_MT_SAFE).
+ This was screwing up HP/UX. Thanks to Neil Cohen for pointing
+ this out!
+
+ * Incorported new versions of ace.mdp and ace.mak for Win32.
+
+Sun May 5 16:18:43 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * netsvcs/lib/Server_Logging_Handler.cpp (handle_input): Fixed a
+ bug whereby handle_input() was returning the number of bytes
+ read by handle_logging_record() rather than 0 or -1. This was
+ causing problems for the logger since it was hanging in read()!
+
+ * ace/Synch_T.cpp: Fixed some minor problems with the use of const
+ in ACE_Atomic_Op that was causing warnings.
+
+Sat May 4 16:31:46 1996 Douglas C. Schmidt (schmidt@mambo.cs.wustl.edu)
+
+ * ace/SOCK_Dgram_Bcast: Reimplemented most of the ACE socket
+ broadcast mechanism to (1) clean up the code and have it use
+ other parts of ACE and (2) make it work for Windows NT. Thanks
+ to Steve Weismuller <spweismu@rsoc.rockwell.com> for the basic
+ ideas here.
+
+ * ace/INET_Addr: Added a new method to set the port number without
+ changing the host address. This is useful in the broadcast
+ class.
+
+ * ace/Log_Record.cpp (print): Changed the hack of replacing the
+ newline with a call to flush() instead. This seems like a
+ better fix. Thanks to Alex for suggesting it.
+
+ * ace/Log_Msg.cpp (log): Moved the order of the print operations
+ so that the ostream one goes last. This avoids a nasty problem
+ due to the fact that it replaces the newline (if any). Thanks
+ to Alex for pointing this out too!
+
+ * ace/Log_Msg.cpp (log): Don't auto-increment bp at the end of
+ the log() method, instead just terminate it:
+
+ *bp = '\0'; // Terminate bp.
+
+ This makes the length computation correct... Thanks to the
+ ever-vigilent Alexandre Karev <akg@na47sun05.cern.ch> for
+ reporting this.
+
+ * examples/Shared_Malloc/test_malloc.cpp: Fixed a bug where a void
+ * that was really an int was being cast incorrectly. Thanks to
+ Raj for pointing this out.
+
+Sat May 4 12:51:25 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Reactor.cpp (find): Modified the ACE_Handler_Repository so
+ that it doesn't crash when it isn't initialized properly.
+ Thanks to Darrin for pointing this out.
+
+ * ace/Synch_T.cpp (wait): Changed the call wait(ACE_Time_Value *)
+ to wait(const ACE_Time_Value *) since wait() will not change the
+ time value object.
+
+ * ace/Thread_Manager.cpp (wait): Changed the call
+ wait(ACE_Time_Value *) to wait(const ACE_Time_Value *) since
+ wait() will not change the time value object. Thanks to Chris
+ Lahey for suggesting this.
+
+ * ace/Synch.h: Added a (const char * = 0) argument to
+ ACE_Null_Mutex so that it would work correctly with
+ ACE_Thread_Mutex and ACE_Process_Mutex...
+
+Fri May 3 17:26:07 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * netsvcs/lib/Name_Handler.cpp (lists_entries): Used '_' with
+ name/value/type in ACE_Name_Binding to be consistent with the
+ notation.
+
+Fri May 3 02:24:19 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Synch: Updated ACE_Process_Mutex to use SV_Semaphore_Complex
+ as the UNIX implementation. This seems like the only portable
+ and robust way to get the same semantics on UNIX and on NT!
+
+ * ace/Malloc_T: It turned out there was a subtle bug with
+ ACE_Malloc on NT when used with the ACE_Process_Mutex
+ concurrency policy. On NT, we were storing the *HANDLE* of a
+ mutex in shared memory. Naturally, this didn't make any sense
+ since each HANDLE is relative to only one process!!! (duh ;-)).
+ This worked fine on UNIX because mutex_t's created with
+ USYNC_PROC mode can be stored in shared memory and accessed
+ directly...
+
+ We fixed this by changing ACE_Malloc so that the
+ LOCK is allocated in non-shared memory. We then
+ fixed ACE_Process_Mutex so that on UNIX it is
+ implemented with SV_Semaphore_Complex. This is
+ (a) portable and (b) it gives the right semantics.
+
+ As a result, we were able to totally eliminate the storage of
+ the lock in shared memory. Therefore, it doesn't matter of the
+ host crashes anymore! In addition, we were able to totally
+ remove the ugly "init_finished" lock that was previously stored
+ in shared memory by ACE_MMAP_Memory_Pool. This is *much*
+ cleaner!!
+
+ Thanks to Karlheinz et al for pointing this problem out in the
+ first place!
+
+ * ace: Removed a stray file called Svc_Conf_tokens.h. This was
+ causing problems on Win32 due to name clashes... Thanks to Adam
+ Miller for pointing this out.
+
+ * ace/SString.cpp (strstr): there were some for (size_t j; ...) {}
+ if (j == x) constructs in the code that have as of recently
+ become non-standard. Thanks to Darrin <darrin@jeeves.net>
+ for reporting this.
+
+Tue Apr 30 00:18:46 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Thread.i (self): Commented out the ACE_Trace call in the
+ ACE_Thread::self() methods to avoid infinite recursion problems
+ on Win32.
+
+ * ace/Token.cpp (ACE_Token): Commented out the ACE_Trace call in
+ the constructor of ACE_Token to avoid infinite recursion
+ problems on Win32.
+
+ * ace/Log_Msg.cpp (instance): Moved the definition of the static
+ variable keylock_ into the static instance() method in order to
+ avoid "order of initialization" problems on Win32. Thanks
+ to Tim for figuring this out!
+
+Sun Apr 28 17:07:58 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * netsvcs: Rearranged and renamed the subdirectories so that they
+ are now called ./netsvcs/{lib,clients,servers}. In addition,
+ moved the Logger, Naming, and Tokens examples from ./examples
+ into the ./netsvcs/clients directory in order to make the
+ relationships more clear.
+
+Sat Apr 27 14:23:43 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * ace/Name_Space.cpp (operator ==): Created a new file
+ Name_Space.cpp and moved the definitions for
+ ACE_Name_Binding::operator== and ~ACE_Name_Space in it. Also
+ modified code to use '_' at the end of name/value/type in
+ ACE_Name_Binding.
+
+Sat Apr 27 16:00:03 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/INET_Addr.i (get_host_addr): There was an error where
+ sprintf(s,"%d:%s" ...) should have been %s:%d. Thanks to
+ Raj <raj@itd.ssb.com> for pointing this out.
+
+Mon Apr 22 01:24:45 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Dump_T.h: #included "ace/Dump.h" so that this file will
+ compile on HP/UX. Thanks to Neil Cohen for reporting this
+ problem.
+
+ * Released version 4.0.15 for testing.
+
+ * ace/Synch_T: Added the appropriate "const" qualifiers to certain
+ operators in ACE_Atomic_Op.
+
+Sun Apr 21 12:54:18 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace: Fixed a problem that Dieter was having with the Name Server
+ when toggling between Naming_Contexts. Basically, what I've
+ done is
+
+ 1. Moved the unmap() call into the ACE_Mem_Map::close() method
+ (this ensures that the region is correctly unmapped when the
+ Mem_Map is deleted).
+
+ 2. I've removed the call to this->allocator_->remove () within
+ ~ACE_Local_Name_Space. This ensures that we don't remove the
+ backing store file.
+
+ * ace/Mem_Map.cpp: Modified the ACE_Mem_Map::remove method to call
+ ACE_Mem_Map::close() in order to share code.
+
+ * ace/Mem_Map.cpp: Modified the ACE_Mem_Map::close() method so
+ that it unmaps the mapped region before closing down the backing
+ store. This prevents "dangling mapping."
+
+ * ace/Local_Name_Space.cpp (ACE_Local_Name_Space): Initialized all
+ the pointers to NULL.
+
+ * ace/Synch_T.cpp (ACE_Atomic_Op): Enhanced the Atomic_Op
+ implementation by adding an assignment operator and disallowing
+ the copy constructor (forcing objects of ACE_Atomic_Op to be
+ passed by reference).
+
+ * examples/Naming/Client/Client_Test: Reorganized the code for
+ Client_Test so that it will run correctly as a Win32 netsvc
+ (e.g., added the ACE_Svc_Export macro).
+
+Sun Apr 21 20:23:40 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * ace/Naming_Context.cpp (close): Added a new method to
+ Naming_Context called close() that deletes the instance of
+ name_space_.
+
+ * ace/Local_Name_Space.cpp (ACE_Local_Name_Space): Added stuff to
+ the destructor of Local_Name_Space so that it calls remove on
+ the allocator_ to ensure we unmap the file. Also, we delete the
+ allocator_.
+
+ * examples/Naming/Client/Client_Test.cpp (set_proc_local): Changed
+ set_proc_local (), set_node_local() and set_host() so that
+ before we change name space, we do a close() on
+ Naming_Context. The close ensures that we unmap the file as well
+ as delete the instance of the name space.
+
+Sat Apr 20 12:39:20 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace: Removed the Name_Options.* files and merged the
+ ACE_Name_Options class into Naming_Context.*. This simplifies
+ some order of include problems...
+
+ * ace/Naming_Context.cpp (init): Switched the code so that rather
+ than always opening with ACE_Naming_Context::PROC_LOCAL, we use
+ ACE_Name_Options::context(), which can be overridden by using
+ the new -c command-line option (e.g., -c NODE_LOCAL). Thanks to
+ Dieter for suggesting this.
+
+ * ace/OS.i: Modified the Win32 implementation of all the
+ ACE_OS::flock_*lock() methods so that they'd have the same
+ behavior as the UNIX ones with respect to a length of 0 meaning
+ "lock the entire length of the file." This works, of course, by
+ having each method check if len == 0, and if so, calling
+ GetFileSize() to set the size of the file.
+
+ * ace/Synch.h: Changed the default len value for all the
+ File_Lock::*acquire* methods to 1 rather than 0 to work around a
+ problem with Win32. Thanks to Detlef for reporting this.
+
+ * ace/ACE.cpp (ldfind): Added a strdup() of the LD_SEARCH_PATH
+ returned by getenv() so that we don't overwrite the environment
+ variable by using strtok(). Thanks very much to Prashant for
+ figuring this out!
+
+Thu Apr 18 22:13:43 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * examples/Naming/Client/Client_Test.cpp (list_value_entries):
+ Added check in list_name_entries and list_value_entries to see
+ if type actually exists before trying to print it out.
+
+Wed Apr 17 16:40:42 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * Released version 4.0.14 for testing.
+
+ * Added Tim Harrison's new instructions for building and using ACE
+ as a DLL and SLL on Win32.
+
+ * ace/Svc_Conf.h: Due to the new changes to the yacc code, I had
+ to move the definition of YYSTYPE into the Svc_Conf.h file
+ rather than have it in the Svc_Conf.y file. This solves a
+ variety of multiple-inclusion problems...
+
+ * ace: Modified all the yacc token symbols so that they will be
+ prefixed with ACE_. This avoids namespace pollution problems.
+
+ * Added the ACE_STATIC_SVC* macro support to a number of files so
+ that the static versions of all the ACE services will be
+ registered with the ACE Service Repository correctly. Thanks to
+ Jesper for pointing this out!
+
+ * ace/OS.h: the first occurence of
+
+ typedef thread_t tid_t;
+
+ in the OS.h file should read
+
+ typedef pthread_t tid_t;
+
+ Thanks to Jan Rychter <jwr@icm.edu.pl> for reporting this.
+
+ * ace/Read_Buffer.cpp: Fixed rec_read() so that it will fail
+ correctly when new fails!
+
+Wed Apr 17 19:05:42 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * netsvcs/lib/Name_Handler.cpp (type_request): Here is a brief
+ description of the changes made to ACE_Name_Handler to simplify
+ the dispatch method and make it more elegant:
+
+ 1) I created a table called op_table_. It contains pointers to
+ member functions of ACE_Name_Handler. This table can be
+ indexed using the msg_type. However, I went one step further
+ to have all the list methods be grouped under two
+ methods. That is, requests for list_names, list_values, and
+ list_types are handled by one method called lists() and
+ similarly, requests for list_name_entries,
+ list_value_entries, and list_type_entries are handled by
+ another method called lists_entries(). A MASK is used to have
+ the op_table_ index to the same method for these requests.
+
+ 2) I also created another table called list_table_. This is
+ primarily used by lists() to keep track of a couple of things:
+ + pointers to member functions of Name_Handler that
+ handle the actual request.
+ + pointers to member functions of Name_Handler that act
+ as factories to create the appropriate request to
+ send back.
+ + description of the message type.
+
+ A different MASK is used to index into the list_table_ to
+ invoke the appropriate method or get the appropriate description.
+
+ 3) Within the method lists_entries(), I once again make use of
+ the pointers to member functions technique. This time,
+ however, I use pointers to member functions of Naming_Context
+ which I assign in the switch statement.
+
+Tue Apr 16 13:03:49 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * Released version 4.0.13 for testing.
+
+ * ace/INET_Addr.i: moved the get_port_number routine up to the top
+ of the file so it gets defined before it is used. Linux did not
+ like it where it was... Thanks to Neil Cohen for reporting
+ this.
+
+ * ace: Split the Dump.* files into Dump_T.* files. This is
+ necessary to support the template policies of various C++
+ compilers.
+
+ * ace/Malloc_T.cpp (dump): Fixed an erroneous use of -> since
+ guard_ is a non-pointer... Thanks to Neil Cohen for reporting
+ this.
+
+ * ace/Log_Record.cpp (print): Finally figured out how to do
+ extensible ostream logging so that it will seamlessly work with
+ ACE_Log_Msg. This required one change to ACE_Log_Record,
+ however. In Log_Record.cpp:
+
+ In ACE_Log_Record::print(char *, int, ostream, size_t len), added
+
+ char *t = this->msg_data_[len - 1];
+
+ if (t == '\n')
+ *t = '\0';
+
+ s << this->msg_data_ << endl;
+
+ This is required because the virtual function overflow() in
+ streambuf does not get called until endl is called to flush the
+ buffer. Note that (at least on AIX), '\n' is treated separately
+ from endl and will not cause the overflow() function to be
+ called. Thanks to Chris Lahey for this idea.
+
+ * ace/OS: Added a new wrapper for strrchr().
+
+ * ace/Token_Collection.cpp (renew): Added a cast of
+ (const char *) to token_name so that the conversion operator
+ will get called correctly. Thanks to Gonzalo Diethelm
+ <gonzo@ing.puc.cl> for reporting this.
+
+Tue Apr 16 13:29:32 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * ace/Name_Request_Reply.cpp (decode): Fixed a small bug in encode()
+ and decode() of ACE_Name_Request. When doing ntohs and htons, we
+ only ought to do it for the name and value part of data. type
+ needed to be left alone since it is not a short.
+
+Mon Apr 15 02:31:00 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * include/makeinclude/platform_hpux_orbix.GNU: Added
+ David.L.Sames.1@gsfc.nasa.gov (David Sames) config*.h file and
+ platform_*.GNU file for HP/UX 9.x using Orbix.
+
+ * ace/OS.i: Fixed all uses of pthread_cleanup_{pop,push} so that
+ they will work correctly if (1) the OS implements the as macros
+ and (2) if these macros must obey strict nesting rules...
+ Thanks to Reginald S. Perry <perry@zso.dec.com> for pointing out
+ how to do this effectively.
+
+ * ace/Thread_Manager.h: Fixed a typo where the typedef
+
+ typedef (ACE_Thread_Manager::*THR_FUNC)(int, int);
+
+ was lacking a return value. Thanks to Reginald S. Perry
+ <perry@zso.dec.com> for reporting this.
+
+ * netsvcs/bin/main.cpp (main): Fixed the main program so that it
+ passes the options correctly for the statically linked service
+ invocations. Thanks to Jesper for reporting this.
+
+ * examples/Naming/Client/Client_Test: Updated the client test
+ program so that it will work on Window NT, where it's not valid
+ to select() on non-socket HANDLEs (ugh). Thanks to Jesper for
+ pointing this out...
+
+ * Released version 4.0.11 for testing.
+
+Mon Apr 15 00:20:02 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * ace/Local_Name_Space.cpp (strstr): Fixed ACE_NS_String::strstr
+ to function properly. It was assuming that length of the pattern
+ as well as the string was in units of ACE_USHORT16 when in
+ reality the length is number of bytes.
+
+ * ace/Local_Name_Space.cpp (value_): Modified ACE_NS_Internal so
+ that instead of taking an ACE_NS_String for type, it now take a
+ char*. It therefore keeps type around as a char*. This should
+ help solve some problems we were encountering with byte ordering
+ when sending data between NT machines and Sun.
+
+ * netsvcs/lib/Name_Handler.cpp: Cleaned up lists_entries by making
+ use of pointer to member functions. A single call to the
+ appropriate list method takes care of everything.
+
+Sun Apr 14 16:21:32 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/INET_Addr.i (addr_to_string): Swapped the order that the
+ hostname and port number are printed to make this consistent
+ with the way that ACE_INET_Addr::string_to_addr works. Thanks
+ to Ashish Singhai <singhai@delirius.cs.uiuc.edu> for pointing
+ this out.
+
+ * ace/TLI_Acceptor: Changed the methods to take an ACE_Addr rather
+ than an ACE_INET_Addr. This allows other address families (such
+ as DECnet) to be used with the TLI wrappers. Thanks to Ajit
+ Sagar <asagar@spdmail.spd.dsccc.com> for suggesting this.
+
+ * ace/Local_Name_Space.cpp (list_types): Removed the use of
+ regular expression matching for the name and value types of the
+ name server and replaced these with substring matching instead.
+ This is necessary since we're working with wide characters here,
+ and it doesn't make any sense to perform regular expressions on
+ these puppies...
+
+ * ace/Local_Name_Space.cpp: Added a new strstr() method on all the
+ ACE_NS_String class so that we can compare substrings for wide
+ character types.
+
+ * ace/SString: Added a new strstr() method on all the
+ ACE_[WSC]String classes so that we can compare substrings,
+ even for wide character types!
+
+ * apps/gperf: Incorporated the GNU gperf program from the FSF.
+ We're going to make some improvements to this for a subsequent
+ paper.
+
+Sun Apr 14 15:30:05 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * ace/Name_Request_Reply.h: Changed the enum values for the
+ Constants such as BIND, REBIND, etc. The new values allow us to
+ do bitwise operations using MASK to be able to dispatch the same
+ method for all the list operations. For use case of this, please
+ see Name_Handler::dispatch().
+
+ * netsvcs/lib/Name_Handler.cpp (dispatch): Completely changed
+ dispatch() so that now it uses a table of pointer to member
+ functions to call the appropriate method when a request
+ arrives. In addition, requests for LIST_NAMES, LIST_VALUES, and
+ LIST_ENTRIES are now handled by one method called lists() in which
+ I factored out a lot of common code. Similarly, requests for
+ LIST_NAME_ENTRIES, LIST_VALUE_ENTRIES, and LIST_TYPE_ENTRIES are
+ handled by lists_entries(). This has really cleaned up the code.
+
+Sat Apr 13 15:26:51 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * ace/Name_Request_Reply.cpp: Made changes so that all
+ byte-ordering computations take place in encode and decode
+ methods of ACE_Name_Request_Reply and ACE_Name_Reply
+ only. Previously some of these computations were taking place in
+ Get/Set methods such as name_len() which was highly error prone.
+ (init): Added new methods called init() to both ACE_Name_Request
+ and ACE_Name_Reply that initialize length to size of transfer_. This
+ is needed since the length gets set only once in the constructor
+ and after that each call to encode() switches the byte ordering
+ causing problems.
+
+Sat Apr 13 11:44:16 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * Released version 4.0.10 for testing.
+
+ * ace: Removed the ACE_HAS_THREAD_T macro from various places.
+ This was unnecessary given the new scheme for dealing with
+ threading.
+
+ * ace/config-linux-pthread.h: Fixed a typo that was preventing
+ compilation from working. Thanks to Jan Rychter
+ <jwr@icm.edu.pl> for finding this.
+
+Fri Apr 12 13:17:47 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * apps/Gateway/Gateway: The gateway application appears to
+ be working again!
+
+ * ace/OS.cpp (thr_create): Based on conversations with Chris
+ Lahey, modified the pthreads ACE_OS::thr_create implementation
+ so that it doesn't try to assign the hthread_t thr_handle since
+ this is meaningless in pthreads...
+
+ * apps/Gateway/Gateway/Gateway.cpp: Fixed a typo that was causing
+ the system to go into an infinite loop when the config file was
+ empty!
+
+ * apps/Gateway/Gateway/Gateway.cpp: I was forgetting to set the
+ line_number to 0 before calling read_entry()...
+
+ * ace/Parse_Node.cpp: Fixed a dumb error that arose because I
+ forgot that you can't call dlerror() twice and get the same
+ result (it returns NULL the second time). As usual, RTFM.
+
+ * ace: Removed ACE_HAS_TLI from all the SunOS 4.x config*.h files
+ and platform_*.GNU files. There are just too many bugs with TLI
+ on SunOS 4.x to support it by default...
+
+ * examples: Made some minor fixes to make the examples all compile
+ with GCC.
+
+ * apps/Gateway/Gateway/Gateway: Reimplemented the Gateway
+ application as to be an ACE network service. This should make
+ life much easier on platforms with broken C++ templates...
+
+ * apps/Gateway/Gateway: Revised the Config_Parser.* files so that
+ templates would be split from the non-templates. This avoids
+ bugs with some C++ compilers...
+
+ * ChangeLog: added the ACE_TEMPLATES_REQUIRE_SPECIALIZATION flag
+ to the config-linux-pthreads.h file. Thanks to
+ Jean-Francois.Ripouteau@netsurf.org for reporting this, and also
+ for archiving the ACE mailing list.
+
+Thu Apr 11 01:37:25 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * Released version 4.0.9 for testing.
+
+ * ace: regenerated all the manual pages and html pages.
+
+ * Built ACE successfully on SGI IRIX 5.3 using GNU G++ 2.7.2.
+
+ * ace/Thread_Manager: renamed the descriptor() accessor methods to
+ hthread_descriptor() and thread_descriptor() to avoid
+ ambiguities due to the fact that hthread_t and thread_t can now
+ be the same type.
+
+ * ace/Thread_Manager: revised the hthread_t so that it is always
+ large enough to hold valid thread ids.
+
+ * ace: Moved the config-osf1.h file to be named config-osf1-3.2.h
+ in anticipation of OSF/1 4.0...
+
+ * ace: Changed all occurrences of wchar_t to ACE_USHORT16, which
+ is a more portable way of representing wchar_t's so that we can
+ pass them across the network... Unfortunately, wchar_t tends to
+ be different sizes on different machines, so we can't use the
+ binary form!!!
+
+ * ace: Added many, many small changes to get ACE to compile on
+ OSF/1 3.2D using DEC C++ 5.3. Thanks to Tom Marrs
+ <0002104588@mcimail.com> for slogging through all of this stuff!
+
+ * ace/Thread_Manager.h: Fixed a stupid oversight where I forgot to
+ add a -1 to the trailing argument of spawn*. Thanks to Neil
+ Cohen for spotting this.
+
+ * ace: Added a new ACE config file for AIX 3.2.5 courtesy of Bob
+ Olson <olson@mcs.anl.gov>. In addition, I changed the name of the
+ config-aix.h file to be config-aix-4.1.x.h and called the new
+ file config-aix-3.2.5.h.
+
+ * apps/Synch-Benchmarks/Benchmark.cpp: Added template
+ specializations for ACE_TSS and ACE_Atomic_Op. Thanks to Matt
+ Stevens for pointing out the need for this.
+
+ * ace/CORBA_Handler: Added a number of fixes to get the ACE
+ CORBA_Handler to compile on Win32 with Orbix 2.0. Thanks to
+ Rich Ryan <rryan@mseng.kla.com> for these fixes.
+
+ * ace/OS.cpp (thr_create): Fixed a small bug in the pthreads
+ thr_create() code by dereferencing p_thr before casting it
+ to hthread_t and assigning it to *thr_handle.
+
+ * ace/OS.i: Backed out the previous changes of pthread_cleanup*.
+ It turns out that on SunOS 5.5 these macros force a certain
+ style of programming this is hard to integrate with the existing
+ implementations of other ACE wrapper methods. Fortunately, none
+ of this affects existing ACE code since we just use the default
+ solaris threads API in this case...
+
+ * ace/OS.i: Modified the order of #ifdefs in various ACE_OS::thr_*
+ methods to take advantage of the pthreads features on Solaris
+ 2.5.
+
+ * ace: Removed the last few typos that prevented ACE from building
+ on SunOS 4.x with G++...
+
+ * ace/Thread_Manager: Changed spawn() and spawn_n() so that
+ they optionally take a group parameter and automatically add
+ this to an existing thread group. That way we don't need to
+ spawn the thread(s) and then reassign them after the fact.
+ The new API automatically assigns the thread(s) to the group
+ you specify. Thanks to Chris Lahey for this idea.
+
+ * ace: Fully integrated POSIX pthreads into the ACE build for
+ Solaris 2.5.
+
+ * netsvcs/lib/Server_Logging_Handler.cpp: Rearranged the Server
+ Logging files so that things will compile and link correctly
+ using stock GNU G++.
+
+ * ace/Log_Msg.cpp (ACE_Log_Msg): Forgot to initialize the ostream
+ * to 0. This was causing problems for Win32...
+
+ * ace: *Finally* got the static and dynamic ACE libraries to
+ compile on SunOS 4.x using stock G++!
+
+ * ace/Synch_T.h: Added a new macro called ACE_SYNCH that will
+ be ACE_NULL_SYNCH if !ACE_HAS_THREADS and ACE_MT_SYNCH if
+ ACE_HAS_THREADS.
+
+ * ace/Service_Record.cpp: Changed this to use ACE_SYNCH. This
+ will fix template problems with G++ on SunOS 4.x.
+
+ * build/SunOS5.5/ace/OS.i (sema_wait): Changed all uses of
+ ::pthread_cleanup_{push,pop} to pthread_cleanup_{push,pop} since
+ these are implemented as macros on Solaris....
+
+Thu Apr 11 19:43:33 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * examples/Naming/Dump_Restore/Dump_Restore.cpp (init): Modified
+ Dump_Restore in order to work correctly without having
+ Name_Options around as a Singleton.
+
+ * examples/Naming/Client/Client_Test.cpp (set_host): Modified
+ Client_Test in order to work correctly without having
+ Name_Options around as a Singleton. It simply uses the accessor
+ provided by Naming_Context to get to Name_Options.
+
+ * ace/Name_Options.cpp: Changed Name_Options so that it is no
+ longer a Singleton. As a result, now there is an instance of
+ Name_Options per Naming_Context. Note that for an application to
+ change Name_Options, it can use the accessor function provided
+ in Naming_Context. As a consequence of all these changes, we can
+ now have multiple Naming_Contexts per application.
+
+Wed Apr 10 20:19:50 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/OS.h: Incorporated a mapping for Solaris 2.5 pthreads so
+ that it fits in nicely with the earlier ACE pthreads support.
+ From now on, the pthreads API will be the default threading
+ scheme for ACE on Solaris 2.5...
+
+ * ace: Added the file name to every *.cpp and *.i file in ACE.
+ This makes it easier to figure out what's what when looking at
+ the source code. Thanks to Chris Lahey for suggesting this.
+
+ * ace/CORBA_Handler.cpp (ACE_CORBA_Handler): Added bodies for
+ the copy constructor and assignment operator of ACE_CORBA_Handler
+ (which are private) since some compilers generate link errors
+ for these! Thanks to Rich Ryan <rryan@mseng.kla.com> for
+ pointing this out.
+
+ * ace/Synch_T.cpp (ts_get): at line 270 (within
+ ACE_TSS<TYPE>::ts_get (void) const) there was a keycreate() call
+ that did not have an instance pointer pass in with it. The
+ symptom has been that if the last active task has been finished
+ all active tasks being created afterwards won't get the close()
+ hook invoked. I've fixed this in order to solve a mysterious
+ bug with ACE_TSS. Thanks to the ever-vigilant Detlef for
+ reporting this bug and fix.
+
+Wed Apr 10 01:56:52 1996 Douglas C. Schmidt (schmidt@mambo.cs.wustl.edu)
+
+ * ace: Added the ACE_TEMPLATES_REQUIRE_SPECIALIZATION to
+ config-sunos5.5-g++.h file. This should allow ACE to build
+ correctly. Thanks to Adam Miller for pointing this out.
+
+ * ace: Installed SunOS 5.5, so now we can finally test pthreads!
+
+ * ace/OS: Modified the implementation of mutex_t for Win32 so that
+ it automatically selects the CRITICAL_SECTION or the HANDLE form
+ of Mutex depending on whether the type argument is USYNC_THREAD
+ or USYNC_PROCESS, respectively. This now means that all the
+ existing ACE code that used ACE_Condition<ACE_Mutex> will
+ continue to work correctly on Win32 and UNIX!
+
+Tue Apr 9 23:04:30 1996 Douglas C. Schmidt (schmidt@mambo.cs.wustl.edu)
+
+ * ace/Synch: Somehow, the definitions for ACE_Thread_Semaphore and
+ ACE_Process_Semaphore were MIA. I've added the implementations.
+ Thanks to Bruce Worden <bruce@betsy.gps.caltech.edu> for
+ noticing this...
+
+Tue Apr 9 02:16:02 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Service_Config.cpp: reordered the #includes in this file so
+ that it works correctly on Win32. Thanks to Rich Ryan
+ <rryan@mseng.kla.com> for help with this.
+
+ * ace/Auto_Ptr.cpp (remove): added the implementations of the
+ auto_ptr::remove() and auto_array_ptr::remove() static methods.
+ Thanks to Chris Lahey for noticing their absence...
+
+ * ace/Auto_Ptr: Added the #pragma implementation ("Auto_Ptr.cpp")
+ statement if defined ACE_TEMPLATES_REQUIRE_PRAGMA to work on
+ AIX. Thanks to Chris Lahey for this.
+
+ * ace/Makefile: Moved Auto_Ptr from FILES to TEMPLATE_FILES to
+ work on AIX. Thanks to Chris Lahey for pointing this out.
+
+ * Modified a bunch of the apps and example Makefiles so that
+ things will build better using G++.
+
+ * ace/Name_Options.cpp (parse_args): Made the "database" name the
+ same as the process name by default...
+
+ * ace/Reactor.h: Changed the type of current_ in
+ ACE_Handler_Repository_Iterator from size_t to ssize_t so that
+ this can handle negative numbers. Thanks to Mark Zusman
+ <marklz@rotem.technion.ac.il> for reporting this.
+
+Mon Apr 8 23:33:15 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * netsvcs/lib/Name_Handler.cpp (recv_request): Fixed a small
+ bug. In recv_request() ntohl was being called again on length
+ which was causing problems since the length was already in host
+ byte order. The ACE Name Server should now be working on NT.
+
+Mon Apr 8 02:14:30 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace: Fixed a number of minor problems that caused duplicate
+ symbols when linking ACE with G++ (no-repo) on SunOS 5.x and
+ SunOS 4.x. Thanks to Andy Gokhale for help with this.
+
+ * ace: Added Jan Rychter <jwr@icm.edu.pl> very nice contribution
+ of pthreads and DCE threads to ACE. This should make life
+ easier for Linux users and users of other pthreads packages.
+
+ * ace/Service_Config.cpp (process_directives): Changed the code to
+ use an auto_ptr to make sure that we always release the
+ ace_obstack memory, regardless of how we exit.
+
+ * ace/OS.i (strerror): Changed sys_errlist to _sys_errlist to work
+ around bugs with SunOS 4.x. This will undoubted break some
+ other twisted UNIX system.
+
+ * ace/Local_Tokens.cpp (acquire): Added a return 0 at the very
+ end... Thanks to Chris Lahey for reporting this (yet
+ again... ;-)).
+
+ * ace/Parse_Node: Made a bunch of small changes to deal with the
+ fact that there's no dlerror() equivalent on NT...
+
+ * ace/Task.h: The static function instance() should return
+ ACE_Task_Exit<ACE_SYNCH_1>* (or <ACE_SYNCH_2>), not
+ ACE_Task_Exit *. Thanks to Chris Lahey for spotting this.
+
+ * ace/Thread_Manager.cpp: added an argument to the exit() method
+ that allows applications to exit without calling thr_exit. This
+ would allow the method to be called from within a pthread
+ cancellation cleanup routine, without calling thr_exit a 2nd
+ time. Thanks to Chris Lahey for suggesting this.
+
+ * ace/Log_Record.cpp (operator <<): Changed the verbose option so
+ that it is an attribute, this will allow the ostream to print
+ verbose information if necessary. Thanks to Chris Lahey for
+ suggesting this change.
+
+ * ace/config-win32-msvc*.h: Added the
+ ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES flag since it appears
+ that this causes problem with some versions of MSVC++ 4.0...
+
+ * Released version 4.0.6 for testing.
+
+ * netsvcs/lib/Server_Logging_Handler.h: #included the
+ Svc_Handler.h file, that absence of which was causing problems
+ for HP/UX. Thanks to Richard Orr
+ <rorr@costello.den.csci.csc.com> for reporting this.
+
+ * Made a few minor changes to the source to make sure that it
+ compiles correctly on SunOS 5.x with G++.
+
+ * ace/Thread_Manager.h: Added the insert() method for the non-MT
+ version of Thread_Manager. Thanks to Alexandre Karev
+ <akg@na47sun05.cern.ch> for reporting this.
+
+ * ace/Task: Renamed the static double-check lock_ to
+ ace_task_lock_ to avoid a name conflict with the existing
+ this->lock_ instance in each class. Thanks to Prashant for
+ tracking this down...
+
+Sun Apr 7 14:40:05 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * examples/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.cpp:
+ Rolled back a change that replaced #defines with typedefs. It
+ turned out the #defines were there for a reason... Thanks Neil
+ B. Cohen <nbc@metsci.com> for pointing this out...
+
+ * ace/OS.h: Added a new check to deal with the fact that many
+ versions of Pthreads don't support tid_t (which seems to be an
+ AIXism...).
+
+Thu Apr 4 01:19:19 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * Officially released version 4.0.5...
+
+ * ace/OS.h (ACE_TSS_TYPE): Somehow the ACE_TSS_TYPE macros ended
+ up *before* the inclusion of Time_Value.h, which meant that
+ these macros weren't being expanded properly. This may help
+ explain odd behavior with ACE TSS.
+
+ * ace/Thread_Manager.cpp (insert): Added a new method that allows
+ us to insert a thread into an ACE_Thread_Control after it's been
+ constructed.
+
+ * ace/Message_Block: Fixed a typo in the init() method. Thanks to
+ Ross Dargahi <rossd@krinfo.com> for noticing this.
+
+ * ChangeLog: Finally got all of ACE built on SunOS 5.x and SunOS
+ 4.x using only the stock GNU GCC compiler (i.e., no template
+ repository...). This should make it easier to port to other
+ versions of G++.
+
+ * ace/Task: Modified the ACE_Task and ACE_Task_Exit implemenation
+ so that it only uses 1 TSS key per ACE_Task template
+ instantation, rather than 1 TSS key per ACE_Task instance. This
+ works around horrible limitations with Win32...
+
+ * ace/Thread_Manager: Added new methods to set and get the
+ Thread_Manager used in a Thread_Control.
+
+ * ace/Pipe.cpp (open): Fixed a bug in where ACE_Pipe::open did not
+ set this->handles_, thus a garbage handle gets registered.
+ Inserted the following two lines at line 53 of Pipe.cpp:
+
+ this->handles_[0] = reader.get_handle ();
+ this->handles_[1] = writer.get_handle ();
+
+ Thanks to Kirk Sinnard <kirk.sinnard@lawson.com> for this fix.
+
+ * ace/OS.h: Added a couple of fixes for the SCO port. Thanks
+ again to Matt Newhook <matthew@neweast.ca>
+
+ * ace/OS.cpp: Integrated Detlef's clever scheme for freeing up
+ thread-specific storage correctly on Win32...
+
+ * ace/Task.cpp (ACE_Task): Made sure to initialize the
+ next_-pointer of ACE_TASK and Message_Queue point to NULL.
+ This fixes a problem on NT. Thanks to Karlheinz for
+ noticing this...
+
+ * include/makeinclude/rules.lib.GNU (VLIB): Fixed up the ACE
+ makefiles so that we can now build on SunOS 4.x correctly
+ without using the template repositories...
+
+ * ace/Service_Config.cpp: Added a bunch of template
+ specializations so that GNU G++ can be used to compile ACE on
+ SunOS 4.x *without* requiring the template repository hacks...
+ Thanks to Mark Zusman for helping with this.
+
+Wed Apr 3 00:55:12 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * examples/Reactor/Misc/test_reactors.cpp: Added a new torture
+ test of the ACE_Reactor and ACE_Task. Thanks to Detlef for
+ contributing this...
+
+ * netsvcs/bin/Makefile: Removed a stray -lACE_svcs from the
+ Makefile. Thanks to Matt Stevens for reporting this.
+
+ * ace/Synch.cpp: Fixed two mistakes related to keeping INLINE on
+ the get_thread_id() and get_nesting_level() when I moved them
+ into the *.cpp file... Thanks to Matt Stevens for finding this.
+
+ * ace/Reactor.cpp (owner): modified owner() so that it returns
+ the original owner when setting a new owner. This makes it
+ possible to write code like this:
+
+ thread_t t;
+
+ reactor->owner (ACE_Thread::self (), &t);
+ reactor->handle_events ();
+ reactor->owner (t);
+
+ * ace/SOCK_Connector.cpp (connect): Added an additional check for
+ errno == EWOULDBLOCK for non-blocking connects due to screwy
+ semantics of Win32 non-blocking sockets...
+
+ * netsvcs/lib/Client_Logging_Handler: Fixed a very obscure bug
+ that arose due to the way that UNIX select() interacts with
+ SVR4 MSG_BAND data. It turns out that you must use the
+ ACE_Event_Handler::EXCEPT_MASK to get this to work properly
+ (gag). This stuff is much easier with SVR4 poll().
+
+Tue Apr 2 13:57:05 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/OS.i: Fixed an error compiling the new Log_Msg.cpp because
+ when it inlined OS.i, there were references to
+ ACE_OS::thread_mutex_*() before the functions were declared
+ inline. The references were assumed to be external, and then
+ when the linkage was actually declared as inline, the compiler
+ choked. To fix this, in OS.i, all the thread_mutex_* calls
+ where moved above the first reference, which was in
+ ACE_OS::cond_broadcast(). Also moved the mutex*() calls since
+ they are referenced by the thread_mutex calls. So the order is
+ mutex*(), then thread_mutex*(), and then cond*(). Thanks to
+ Chris Lahey for reporting this.
+
+ * netsvcs/lib/Client_Logging_Handler.cpp: Added missing return
+ values in some of the methods. Thanks to Tim Harrison for
+ spotting this...
+
+ * ace/Map_Manager.cpp (shared_unbind): It was possible that INT_ID
+ could be assigned a value from a previously unbound map entry.
+ The shared_unbind matches the ext_id, but does not see if the
+ entry had previously been unbound. This causes a problem if the
+ INT_ID type is a pointer type, and the user of the map deletes
+ objects as a result of the unbind returning a 0. The correct
+ solution is to include a test for is_free in the shared_unbind
+ before checking the equality of the ext_id. Thanks to Phil
+ Mesnier <phil@envision.com> for reporting this.
+
+ * ace/Reactor.cpp (next): Fixed a bug that prevented the
+ iterator's next() method from detecting the end of the
+ iteration. Thanks to Mark Zusman <marklz@rotem.technion.ac.il>
+ for reporting this.
+
+ * ace/Reactor.cpp (advance): Fixed a bug that prevented the
+ iterator from advancing. Thanks to Mark Zusman
+ <marklz@rotem.technion.ac.il> for reporting this.
+
+ * ace/Log_Msg.cpp (open): Added a check for logger_key being NULL,
+ in which case we log to STDERR rather than segfault...
+
+ * netsvcs/lib/Server_Logging_Handler.h: Fixed a typo in
+ the declaration of
+
+ ACE_SVC_FACTORY_DECLARE (ACE_Server_Logging_Acceptor)
+
+ Thanks to Neil Cohen for finding this.
+
+Mon Apr 1 00:17:21 1996 Douglas C. Schmidt (schmidt@mambo.cs.wustl.edu)
+
+ * ace/Time_Value.i: Fixed two stupid bugs in the Time_Value
+ relational operators. Thanks to Mathew Newhook
+ <matthew@thor.udc.neweast.ca> for pointing this out.
+
+ * ace/OS.h: Added an extern "C" block around the netdb, net/if.h,
+ netinet/in.h, arpa/inet.h to work around problems with SCO.
+ Thanks to Mathew Newhook <matthew@thor.udc.neweast.ca> for this.
+
+ * ace/Reactor: Merged the ACE_Pipe into the Reactor
+ implementation. This cleans up some nasty OS-specific code in a
+ clean way.
+
+ * ace/CORBA_Handler.cpp (ACE_MT_CORBA_Handler): Fixed some typos
+ that arose during the transition to the ACE_Pipe.
+
+ * ace/Pipe: Added a new open() method that doesn't return the
+ handles, it just stashes them away for safe keeping. This is
+ useful for places like the Reactor.
+
+ * ace/Local_Name_Space.h: Added ACE_Export to the front of
+ ACE_NS_String. Thanks to Detlef for suggesting this.
+
+ * From now on, I'll be numbering each new release of ACE with a
+ different minor number. However, the latest version of ACE will
+ also always be available at
+
+ http://www.cs.wustl.edu/~schmidt/ACE.tar.gz
+
+ This is useful if you just want to get the latest one without
+ having to bother with keeping track of minor numbers. For
+ instance, that way you can still keep that reference in my
+ bookmark list and you don't have to remodify it with every
+ release. Thanks to the ever-vigilant Chris Lahey for suggesting
+ this.
+
+ * ace: added new a ACE project file (ace.mdp) and Makefile
+ (ace.mak) to create ACE as a DLL on Win32. This should greatly
+ simplify the Win32 build process...
+
+ * INSTALL: Added new INSTALL file explaining how to build for
+ Win32.
+
+ * ace/Thread_Manager.cpp: Fixed a horrible bug with Win32. On
+ reasonable systems ACE_Thread::exit() should not return.
+ However, due to horrible semantics with Win32 thread-specific
+ storage this call can return (don't ask...). Therefore, we need
+ to reacquire the mutex so that we don't get burned when the
+ Guard automatically releases it when this method returns. Thanks
+ to Tim for helping me figure this out.
+
+ * ace: Fixed some problems with errno in Remote_Tokens and
+ Local_Tokens.
+
+ * ace/Reactor.cpp: Fixed an annoying preponderance of useless
+ ACE_MT_SAFE #ifdefs in the Reactor implementation. Thanks to
+ Gerolf Wendland <wendland@hpp015.mch2.scn.de> for pointing this
+ out!
+
+Sun Mar 31 13:09:27 1996 Douglas C. Schmidt (schmidt@mambo.cs.wustl.edu)
+
+ * ace/OS: Changed the implementation of cond_t and rwlock_t for
+ Win32 to use thread_mutex_t (i.e., CRITICAL_SECTIONS) rather
+ than mutex_t (i.e., Win32 Mutexes). This should improve
+ performance without sacrificing generality (of which there is
+ none at the moment since we don't have process-wide condition
+ variables or readers/writer locks on Win32 anyway..
+
+ * ace/Thread_Manager.cpp (remove_thr): Fixed bugs in the
+ ACE_Thread_Manager class. The wait() member grabbed the
+ Thread_Mutex lock_, then (if the current_count is not zero)
+ grabs the Condition lock zero_cond_. Doing so, however
+ implicitly released lock_, which meant that another thread could
+ get into wait(), and wait on zero_cond_. zero_cond_ was only
+ signaled from ACE_Thread_Manager::remove_thr() when the
+ current_count_ is zero, but it signaled with
+ ACE_Condition_Thread_Mutex::signal(), which only releases one
+ thread that is waiting on the Mutex. Thus, any other threads
+ waiting on zero_cond_ would never be resumed. The fix was to
+ use ACE_Condition_Thread_Mutex::broadcast() rather than
+ ACE_Condition_Thread_Mutex::signal() in
+ ACE_Thread_Manager::remove_thr(). This fix is only reliable
+ since remove_thr() is called only when ACE_Thread_Manager::lock_
+ is held by the calling thread. Thank to Bruce Worden
+ <bruce@seismo.gps.caltech.edu> for reporting problem and
+ suggesting this fix.
+
+ * ace/Token: Modified this class so that it only works with
+ ACE_Thread_Mutex (which is more precise than what was going on
+ before...).
+
+ * ace/Synch.h: Modified ACE_RW_Process_Mutex so that on Win32 it
+ uses ACE_Process_Mutex until we've got a working
+ RW_Process_Mutex for Win32...
+
+ * ace/Synch: Removed the ACE_Process_Barrier until we get a
+ working implementation...
+
+ * ace/Synch: Changed the ACE_Barrier so that it only tries to work
+ within a single process.
+
+ * ace: Changed all uses of ACE_Condition_Mutex to
+ ACE_Condition_Thread_Mutex to reflect what's really going on
+ here...
+
+ * Changed all uses of ACE_Mutex to ACE_Thread_Mutex throughout
+ ACE. This is *much* more meaningful and makes it possible to do
+ some great optimizations on Win32!
+
+ * ace: Changed all uses of ACE_Mutex_Guard to
+ ACE_Thread_Mutex_Guard. This is a more accurate name for how
+ this is used in ACE.
+
+ * netsvcs/lib/Client_Logging_Server: Reengineered the ACE
+ Client_Logging service so that fits into the ACE network service
+ format. This version is particularly interesting since it
+ illustrates a "Connector-driven" service. In contrast, all the
+ other ACE network services are "Acceptor-driven" services.
+
+ * netsvcs: Merged the implementation of all the ACE network
+ services into a single ./netsvcs/lib directory. Each of these
+ is now a fully dynamically linkable service. Created a single
+ main.cpp program in the ./netsvcs/bin directory. This main
+ illustrates how to dynamically link an or all of the ACE network
+ services to form complete applications. Thanks to Prashant for
+ help with this.
+
+ * ace/OS.cpp: Changed readv() and writev() so that they will once
+ again compile for Win32. Note, however, that if you try to
+ readv() and writev() on the same descriptor you will lose since
+ they are not atomic! However, this stuff is stuff useful if
+ you're *not* reading/writing to a common descriptor...
+
+ * ace/Synch_T.cpp: Removed the ACE_Null_Condition<> template.
+ This didn't really make any sense...
+
+ * ace/OS: Changed the test of lock_.get_nesting_level() in
+ ACE_TSS_Cleanup::exit () to account for the fact that a
+ ACE_Recursive_Thread_Mutex now starts out with a nesting level
+ of 1 when it is first acquired.
+
+ * ace/Synch_T: Removed the implementation of ACE_Recursive_Lock.
+ It just doesn't generalize correctly to other types of
+ synchronization mechanisms...
+
+ * ace/Synch: Reimplemented ACE_Recursive_Thread_Mutex using Dave
+ Butenhof's <butenhof@zko.dec.com> strategy. This fixes some
+ latent race conditions in the original implementation.
+
+ * ace: Changed the name of ACE_Recursive_Mutex to
+ ACE_Recursive_Thread_Mutex since the current implementation
+ really only works for Thread_Mutexes or Thread_RW_Mutexes...
+
+ * ace: Removed the "Assert.h" file and moved its functionality
+ into Log_Msg.h. This is more consistent with the rest of the
+ error reporting and logging in ACE and also avoids some nasty
+ circular include problems.
+
+ * ace/Local_Tokens.cpp: Changed the use of ACE_RETURN so that it
+ passes in errno.
+
+ * ace/Log_Msg: Changed the arguments to the ACE_RETURN macro so
+ that errno can be returned explicitly.
+
+Sun Mar 31 15:52:58 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * ace/Local_Name_Space.cpp (create_manager): Added three new
+ methods -- list_name_entries, list_name_values, and
+ list_name_types. They work similar to list_names, list_values,
+ and list_types (respectively) except they return the entire
+ tuple associated with a name binding.
+
+Sat Mar 30 16:46:32 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/SPIPE_Stream.i (send_handle): There was a typo -- the
+ parameter shouldn't be "const ACE_HANDLE handle", it should
+ just be ACE_HANDLE handle.
+
+Sat Mar 30 16:09:25 1996 Douglas C. Schmidt (schmidt@mambo.cs.wustl.edu)
+
+ * INSTALL: Added new Win32 installation instructions to build
+ ACE as a DLL.
+
+Sat Mar 30 14:42:02 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * Carefully tested ACE on SGI and SunOS 5.x using G++ and CC.
+ Everything seems to work now... Released version 4.0.2.
+
+ * ace/Acceptor.cpp (ACE_Strategy_Acceptor): Added default
+ initializations of NULL for service_name_ and
+ service_description_ in the ACE_Strategy_Acceptor's default
+ constructor.
+
+ * ace: Fixed a slew of warnings for HP/UX. Thanks to John Morey
+ for reporting these.
+
+ * ace/FILE.h (ACE_FILE_Info): Changed the type of field size_ from
+ size_t to off_t to avoid warnings from C++ compilers...
+
+ * ace/OS.cpp (ftruncate): Added a new function for platforms like
+ SCO that lack ftruncate(). Thanks to Matthew Newhook
+ <matthew@neweast.ca> for contributing this.
+
+Sat Mar 30 12:41:16 1996 Douglas C. Schmidt <schmidt@pride.cs.wustl.edu>
+
+ * ace: Removed the ACE_svcs library for the time being and merged
+ everything back into libACE. There were two reasons for this
+ change:
+
+ 1. There is a subtle dependency between the ACE_Reactor and the
+ ACE_Local_Tokens* stuff when deadlock detection is enabled.
+ This was causing problems.
+
+ 2. This was driving GNU G++ nuts because of the need to
+ do the "prelink."
+
+ Sooo, for the time being, there's just one ACE library. If
+ anyone wants to take the time to split everything up so that it
+ works for all different platforms and send me the fixes I'll be
+ glad to include this in ACE.
+
+ * ace/Thread.i: Made the ACE_Thread::thr_self() methods call
+ down to the ACE_OS::thr_self() methods for the case where
+ the platform doesn't support threads. This means that we
+ only have to set the default thread id in one place...
+
+Sat Mar 30 11:53:31 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * bin/class2info.awk: Modified the handleClass() AWK function so
+ that it can correctly deal with the new ACE_Export and
+ ACE_Svc_Export tags needed to build ACE DLLs... Here's the
+ trick:
+
+ sub( "^[\t ]*class[\t ]+(ACE_[.]*Export[\t ]+)?", "", $0 )
+
+ completely intuitive, eh? ;-)
+
+ * apps/Gateway: Reimplemented the Gateway prototype so that it
+ uses the new Reactor cancel_wakeup() and schedule_wakeup()
+ methods instead of mask_ops().
+
+ * ace/Reactor: Added new high-level <Event_Handler> "scheduling"
+ operations called schedule_wakeup() and cancel_wakeup(). These
+ methods utilize the lower-level Reactor mask_ops() methods to
+ schedule and cancel Event_Handlers for subsequent dispatching by
+ the Reactor. I added these new interfaces because they are more
+ intuitive than calling mask_ops(), which is a non-descriptive
+ name unless you understand the Reactor implementation...
+
+ * ace/config-irix5.*.h: It turns out that on IRIX 5.x the
+ bi-directional SVR4 pipe semantics are *disabled* by default.
+ Therefore, I've changed the config-irix4.*.h files to comment
+ out ACE_HAS_STREAM_PIPES.
+
+Fri Mar 29 08:25:33 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/ACE.cpp (ldfind): Changed the character given to strtok() to
+ account for the differences in UNIX and Win32 described in the
+ follow bullet.
+
+ * ace/OS.h: UNIX and Win32 use different characters to separate
+ pathnames in their runtime LD search path (':' and ';'
+ respectively). Therefore, I've added new macros to ACE OS to
+ account for this stuff portably.
+
+ * ace/OS.i: Changed the behavior of the ACE_OS::thr_self() methods
+ so that they always return 1 if ACE_HAS_THREADS is *not*
+ enabled. This makes application code work correctly across
+ threaded and non-threaded platforms.
+
+ * ace/OS.i: Changed the return value of the Win32 arm of the
+ ACE_OS::dlopen() and ACE_OS::dlsym() functions so that they are
+ now identical to the way that UNIX behaves.
+
+ * ace/Svc_Conf.y: added a #define for ACE_BUILD_DLL to make Win32
+ happy...
+
+ * ace/Synch.i: Fixed a number of bugs in the ACE_Mutex and
+ ACE_Thread_Mutex tryacquire_read() and tryacquire_write()
+ methods. I was calling mutex_lock() rather than
+ mutex_trylock()! Thanks to Prashant for finding this.
+
+ * ace/OS.cpp (exit): Fixed a bug caused by the fact that the test
+ for the nesting level of the recursive mutex should have been
+ for > 0 rather than > 1. Thanks to Kirk Sinnard
+ <1764@mn.lawson.lawson.com> for tracking this down!
+
+ * ace/Log_Msg: Enhanced ACE_Log_Msg so that it automatically
+ caches the process id. This makes it more robust even if users
+ don't call open()!
+
+ * examples/Connection/non_blocking/CPP-connector.cpp Fixed a bunch
+ of typos that caused templates to fail on HP/UX. Thanks to Neil
+ Cohen for spotting this.
+
+ * ace/Shared_Memory_SV: Change all uses of "int id" to "key_t id"
+ to reflect the new use of key_t in the Memory_Pool.
+
+ * ace/Memory_Pool.cpp (ACE_MMAP_Memory_Pool): Fixed a potential
+ but in the construction of an MMAP memory pool. Because NT uses
+ strings rather than integers to name its semaphores we were
+ passing in junk to the NT Process_Mutex initializer. Arrgh! I
+ fixed this problem by typedef'ing key_t to be char * on Win32
+ and then updating the ACE_DEFAULT_SEM_KEY to be
+ "C:\\temp\ace.sem" rather than 1234.... Also added a new macro
+ called ACE_INVALID_SEM_KEY, which is NULL on NT and -1 on UNIX.
+
+ * ace/Log_Msg.cpp (instance): Fixed a typo for HP/UX and
+ other non-threaded platforms!
+
+ * ace/Synch_T.cpp (ACE_TSS_Guard): Added another small fix
+ to ACE_TSS_Guard to make sure we free up the key when we
+ go away.
+
+Thu Mar 28 15:28:44 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/OS.h: changed the names of macros ACE_DYNAMIC_SVC* to new
+ names that reflect their new, more general nature now that we've
+ got the ACE_Static_Svcs stuff...
+
+ * ace/Service_Config.cpp (load_defaults): Added a very nice
+ mechanism that generalizes the configuration of statically
+ linked services. This makes it possible to insert statically
+ linked services into a program without changing any of the
+ existing ACE_Service_Config code. These static services can
+ then be enabled via the svc.conf file using the "static"
+ directive. Thanks to Matthew Newhook <matthew@neweast.ca> for
+ suggesting this and for doing the bulk of the implementation.
+
+ * ace: Commented out the ACE_TRACE calls in ACE_Unbounded_Set,
+ ACE_OS, and all the ACE synchronization wrappers to work around
+ some horrible dependencies with Win32 and thread-specific
+ storage... The moral here is that you have to be careful what
+ you trace because circualar dependencies abound... My new
+ policy is that low-level routines are not automatically traced
+ because they can cause infinite recursion.
+
+ * ace/Synch_T.cpp: Fixed a nasty bug with ACE_TSS_Guard. This was
+ causing programs that uses ACE_TSS_Guard to segfault... Thanks
+ to Kirk Sinnard <kirk.sinnard@lawson.com> for reporting this.
+
+ * ace/Synch: Added "lock()" methods to all the ACE synchronization
+ wrappers to return the underlying C level object... This is
+ necessary at some points in ACE.
+
+ * ace/Synch: Fixed a horrible bug in ACE_Recursive_Mutex and
+ ACE_Recursive_Lock that was causing instant deadlock because the
+ non-recursive Solaris/Pthread mutex was being acquired too
+ eagerly...
+
+Thu Mar 28 12:14:57 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * ace/Map_Manager.cpp (rebind): Added a new method called resize()
+ which increases the size of the map. Both open() and
+ shared_bind() make use of this method to dynamically increase
+ the size of the map.
+
+ * ace/Local_Name_Space.cpp (shared_bind): Modified shared_bind()
+ in accordance to the changes to Map_Manager. shared_bind() no
+ longer has to check if the map runs out of room since
+ Map_Manager dynamically grows the map.
+
+ * ace/Map_Manager.cpp (shared_bind): Changed shared_bind() so that
+ when the map reaches max_size_, we grow the map by DEFAULT_SIZE
+ by making a call to open().
+
+Wed Mar 27 20:00:47 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * ace/Local_Name_Space.cpp (shared_bind): Fixed a bug which was
+ allocating memory for a name binding which would fail on a bind
+ since there already existed a binding. This was causing the
+ mapped-file to grow even when binds would fail.
+
+Tue Mar 26 13:49:24 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/INET_Addr.i (addr_to_string): Moved the order of
+ get_host_addr() so that it comes before addr_to_string().
+ Thanks to Neil Cohen for finding this.
+
+ * ace/Synch: Added a new implementation of ACE_Thread_Mutex that
+ takes advantage of the new ACE_OS::thread_mutex_* mechanisms.
+
+ * ace/OS: Added a new set of ACE_OS::thread_mutex_* mechanisms
+ that map efficiently to either Win32 CRITICAL_SECTIONs or UNIX
+ mutex_t's with type set to USYNC_THREAD. This allows ACE to
+ take advantage of the lightweight Win32 synchronization
+ mechanisms. When Windows NT 4.0 comes out, we'll at last have a
+ perfect mapping since WinNT 4.0 supports
+ TryEnterCriticalSection!
+
+Tue Mar 26 17:35:31 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * ace/Map_Manager.cpp: Added two new methods -- total_size() and
+ current_size() which return the max_size and current_size of the
+ map respectively.
+
+Mon Mar 25 20:22:25 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Service_Config.cpp (initialize): Updated the use of ACE_ARGV
+ to use the new method names.
+
+ * ace/ARGV.cpp (ACE_ARGV): Changed the name of the two main
+ methods of ACE_ARGC from count() and operator&() to argc() and
+ argv(). This seems much more consistent with UNIX and C/C++
+ naming conventions.
+
+ * ace/ARGV.cpp (ACE_ARGV): Added environment variable substitution
+ to the ACE_ARGV class using the new ACE::strenvdup() method.
+ This is transparently available to the ACE Service Configurator
+ now, which enables the svc.conf file to include things like
+ this:
+
+ dynamic Name_Service Service_Object *
+ name_svc.so:make_Name_Service() "-p $PORT -h $HOST"
+
+ * ace/ACE: Added a new function called strenvdup() that returns a
+ dynamically allocated duplicate of its <str> argument,
+ substituting the environment variable if str[0] == '$'.
+
+ * ace/Naming_Context: Modified this class so that it now inherits
+ from ACE_Service_Config. This enables application programmers
+ to dynamically link instances of ACE_Naming_Context into their
+ applications via the svc.conf file.
+
+ * ace/OS.i (access): Added a new wrapper for the access() method.
+
+ * ace/Local_Name_Space.cpp: Fixed an error in each list_xxx
+ methods. If there's an error in the for-loop we must still call
+ ACE_OS::free() to release resources. Thanks to the
+ ever-vigilant Karlheinz Dorn for spotting this.
+
+ * ace/Strategies: added virtual methods with name dump() to
+ ACE_Scheduling_Strategy, ACE_Schedule_All_Reactive_Strategy, and
+ ACE_Schedule_All_Threaded_Strategy. These methods are
+ referenced in ACE_Strategy_Acceptor::dump() method
+ (Acceptor.cpp). Thanks to Alexandre Karev for reporting this.
+
+ * include/makeinclude: Added a number of changes to allow ACE to
+ build shared libraries correctly on AIX. Thanks to Chris Lahey
+ for these fixes.
+
+ * ace/Makefile: added tempinc to the list of directories to delete
+ for "clean". Also, between the call to the two sub make files,
+ added a $(RM) -rf tempinc. Since we make both libs from the
+ same directory, we need to delete the tempinc directory to be
+ sure we don't get the templates generated for libACE included in
+ libACE_svcs.
+
+ * ace/OS.i: Improved the mapping between ACE Win32 GetLastError()
+ values and POSIX-like errnos. This is now centralized in the
+ ACE_FAIL_RETURN macro.
+
+ * examples/Threads/test_thread_specific.cpp: Added many new tests
+ to exercise the ACE thread-specific storage mechanisms on Win32
+ and UNIX.
+
+Mon Mar 25 4:00:01 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * ace/Name_Options.cpp (parse_args): Added a new data variable
+ called database_ that keeps the name of the name server
+ database. Also added accessor methods for this.
+
+ * ace/Local_Name_Space.cpp (create_manager): Changed
+ create_manager() to use ACE_Name_Options::instance ()->database
+ () instead of ACE_Name_Options::instance ()->process_name().
+
+ * ace/ACE.cpp (ldopen): Added a new method called ldopen that
+ finds a file either using absolute path or using
+ LD_LIBRARY_PATH. If the file is found, it opens the file and
+ returns a pointer to the file.
+
+ * ace/Parse_Node.cpp: used the new ACE::ldfind() method to locate
+ the shared object file. This makes it possible to put
+ "relative" names into svc.conf files and then allow ACE to
+ locate the appropriate shared object DLL.
+
+ * ace/ACE: added new methods called ldopen() and ldfind() that
+ find the file <filename> either using absolute path or using
+ LD_LIBRARY_PATH. If found, ldopen() opens the file and returns
+ a pointer to the file.
+
+Sun Mar 24 10:41:12 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * Compiled ACE successfully on Windows '95.
+
+ * ace/OS: Totally redid the ACE thread-specific storage cleanup
+ mechanism in OS.cpp to avoid bugs with the previous
+ implementation.
+
+ * ace/Synch_T: Modified ACE_TSS_Guard so that it will call
+ ACE_OS::thr_keyfree () when it's finished. This should help to
+ eliminate the unbounded use of thread-specific storage slots
+ within a thread.
+
+ * ace/Thread: added a new method keyfree() that calls down to the
+ ACE_OS::thr_keyfree ().
+
+ * ace/Thread_Manager.cpp: Modified the semantics of
+ ACE_Thread_Manager::exit () so that it "always" calls
+ ACE_Thread::exit () even if the user hasn't registered this
+ thread with the thread manager. This avoids some subtle
+ problems that arise typically when I forget to put an
+ ACE_Thread_Control around the main() function.
+
+ * examples/Threads/test_thread_specific.cpp: Added new tests to
+ ensure that the Win32 TSS cleanup logic is working correctly!
+
+ * ace/Log_Msg: Moved the definition of the ACE_FIFO_Send_Msg queue
+ from the Log_Msg.h file to the Log_Msg.cpp file. The MSVC++
+ compiler was having problems with this when building a DLL.
+ Besides, this needs to be replaced with Sockets for Win32
+ anyway...
+
+ * ace/OS.cpp: Put a safe guard in the readv() and writev()
+ emulations so that they return ACE_NOTSUP_RETURN if
+ ACE_HAS_THREADS is enabled. This is necessary because the
+ readv() and writev() emulations are *not* atomic if multiple
+ threads are used. If someone can provide an atomic
+ implementation I'll enhance the code to remove the existing
+ restrictions.
+
+ * ace/OS: Created a new macro called ACE_SYSCALL_FAILED, which is
+ mapped to 0xFFFFFFFF on Win32 and -1 on UNIX.
+
+ * ace/Synch and Synch_T: cleaned up the implementation of the
+ Recursive_Lock and Recursive_Mutex to use the ACE_Guard classes.
+ This simplifies the code.
+
+Sat Mar 23 16:53:14 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * ace: Updated all ACE classes to use the new ACE_Export macro.
+ This will enable them to transparently be used to create a Win32
+ DLL. Also added ACE_BUILD_DLL to all the *.cpp files.
+
+ * tests/CPP-inserver.cpp (main): Modified CPP-inclient.cpp and
+ CPP-inserver.cpp to use non-blocking I/O. In particular,
+ CPP-inserver times out on select and then checks to see if any
+ connections have arrived. Both applications are also working on
+ NT.
+
+Sat Mar 23 15:02:47 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Local_Tokens.cpp (proxy_): Modified the print statement for
+ local tokens to account for the fact that thread ids can be
+ unsigned on some platforms.
+
+ * ace/Log_Msg.cpp (log): Modified the output format of the %t
+ directive to ACE_Log_Msg::log() so that it prints values in
+ unsigned form rather than signed form. This fixes a bug with
+ Win32 on Windows '95.
+
+ * ace/ACE: Added two new methods ACE::read_n() and ACE::write_n().
+ These are now necessary since Win32 distinguishes between
+ operations on SOCKETs and operations on other forms of HANDLEs.
+
+ * ace/ACE: Changed all uses of ACE::set_fl() and ACE::clr_fl() to
+ ACE::set_flags() and ACE::clr_flags().
+
+ * ace/ACE: Changed the name of ACE function handle_timed_connect()
+ to handle_timed_open() since this is reall what it does...
+
+Fri Mar 22 00:11:19 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Stack: Added a "Node of last resort" to the
+ ACE_Unbounded_Stack. This ensures we are graceful in the face
+ of memory failures.
+
+ * ace/OS.i (sleep): Fixed a bug with the Win32 ACE_OS::sleep
+ mapping. This should have had an "ACE_OSCALL_RETURN" in it...
+
+ * ace/ACE.h: Had forgotten to put "static" in front of "basename".
+ Thanks to Neil Cohen for reporting this...
+
+ * ace/Name_Options.cpp (process_name): Changed char * to const
+ char * to avoid compile error. Thanks to Neil Cohen for this...
+
+ * ace/IPC_SAP: Implemented the enable()/disable() methods to work
+ with non-blocking I/O for SOCKETs on Windows NT.
+
+ * ace/OS.i: Modified ioctl() to support the ioctlsocket() call on
+ Windows NT.
+
+ * ace/Log_Msg.cpp (log): Fixed a bug that was caused by not
+ NUL-terminating the logging string properly when a %a is given.
+ Thanks to Tim Harrison for finding this.
+
+ * ace/OS: Added a new overloaded "ACE_OS::sleep" method that takes
+ an ACE_Time_Value rather than a u_int. This is much more useful
+ for fine-grained timers than the horrible UNIX sleep() call.
+
+ * ace/OS.h: #included "sys\timeb.h" in the Win32 version of ACE.
+
+Thu Mar 21 22:18:50 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * apps: Fixed all incorrect usages of ACE_HANDLE = -1 to use
+ ACE_HANDLE = ACE_INVALID_HANDLE in order to work with Win32...
+
+ * ace/OS.i (gettimeofday): Replaced the existing implementation of
+ gettimeofday with a new version that is shorter, more efficient,
+ and most importantly, correct... Thanks to Todd Montgomery. and
+ Mike Flinn for this stuff.
+
+ * ace/ACE: added a new method called basename() that returns the
+ filename portion of a pathname.
+
+Thu Mar 21 21:51:48 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * ace/OS.h (ACE_DEFAULT_GLOBALNAME): Added some new #defines for
+ NT: ACE_DEFAULT_NAMESPACE_DIR, ACE_DEFAULT_LOCALNAME, and
+ ACE_DEFAULT_GLOBALNAME.
+
+ * ace/Local_Name_Space.cpp (ACE_Local_Name_Space): Fixed a subtle
+ bug. Instead of doing a new char [xxx], I was doing a new char
+ (xxx). Also, added some #if defined (ACE_WIN32) to support
+ special cases for NT (for example determining the context file
+ name).
+
+Wed Mar 20 02:03:39 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Log_Msg.cpp (log): If we're writing to stdout or to an
+ iostream make sure the lock is help to avoid race conditions and
+ scrambled output.
+
+Tue Mar 19 00:12:25 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Thread_Manager.h: Added new default values to spawn() and
+ spawn_n().
+
+ * ace/OS.i (sigaction): Added support for signals to the ACE NT
+ mapping.
+
+ * ace/ACE: Added 4 new methods to class ACE: send(), send(),
+ recv(), recv(). These calls mask some differences between UNIX
+ and Win32 IPC mechanisms. Then, reimplemented the Reactor's
+ notification mechanism to use this.
+
+ * ace/OS.i (ACE_OSCALL_RETURN): fixed zillions of warnings on
+ HP/UX by making a small change to line 151 of the OS.i file.
+ Thanks to Neil Cohen for reporting this.
+
+ * ace/Reactor.cpp: Rewrote the Reactor::notify() mechanism to
+ avoid using readv() and writev(). These work fine on UNIX, but
+ don't work correctly on Windows NT due to race conditions.
+ Basically, we need to reimplement this stuff on Win32 to avoid
+ the problem.
+
+ * ace/OS.h: Added SIGQUIT, SIG_BLOCK, SIG_UNBLOCK, and SIG_SETMASK
+ definitions to NT.
+
+ * ace/Time_Value: added a new set() method to be consistent with
+ the ACE_Time_Value (long, long) constructor.
+
+ * ace/Service_Config.cpp (open): Fixed a bug where the
+ ACE_Service_Repository and ACE_Reactor weren't being initialized
+ correctly if the ACE_Service_Config::ACE_Service_Config (const
+ char *) method was called.
+
+ * ace/Service_Config.cpp: Changed the constructor for
+ Service_Config so that it doesn't barf if the svc.conf file
+ isn't found.
+
+Mon Mar 18 00:34:45 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Reactor.h: Hid the inclusion of the Local_Tokens.h file in
+ the Reactor so that by default there will be no dependency
+ between libACE and libACE_svcs. This should prevent compilation
+ problems on some platforms.
+
+ * bin: Included the html-windex shell script from Vincent Pommier
+ <pommier@volnay.stortek.com>.
+
+ * man: Included a shell script to automatically generate an
+ acewindex.html file. This file is useful just after running
+ man2html. Thanks to Vincent Pommier
+ <pommier@volnay.stortek.com> for contributing this.
+
+ * man/html: I've just used the man2html programs to generate the
+ html documentation from the man3 directory. It seems to work
+ pretty well.
+
+ * ace/Assert.h: Added a forward declaration for class ACE_Log_Msg
+ to fix problems NuMega preprocessing. Thanks to Mike Flinn
+ <mike.flinn@smtpgate.aws.waii.com> for finding this.
+
+ * ace: Implemented about 1/3rd of the "dump" methods for the
+ various ACE classes.
+
+ * ace/Acceptor.cpp (info): Fixed a bug -- should use PR_AD rather
+ than ACE_INET_Addr since this is used for SPIPEs as well...
+
+ * ace/Synch_T.cpp (ACE_TSS): If ACE_Thread::keycreate () fails
+ then we do an fprintf() and return at the moment. It doesn't do
+ any good to do an ACE_Log_Msg operation since those all require
+ thread-specific storage and this will just cause a recursive
+ problem...
+
+ * ace/OS.cpp: Removed a memory leak in ACE_OS::thr_destory_tss()
+ that was caused by forgetting to delete each ACE_TSS_Key_Info
+ object when we no longer needed it. Thanks to Mike Flinn
+ <mike.flinn@smtpgate.aws.waii.com> for finding this.
+
+ * ace/OS.cpp: Added a new method to class ACE_OS called
+ thr_keyfree(). This enables us to free up a thread-specific
+ storage key on Win32 (it isn't implemented on the UNIX
+ platforms).
+
+ * ace/ACE.cpp (timestamp): In order to get ACE_OS::timestamp to
+ work on Win32, the wMonth, wDay, wYear structure members were
+ added to the sprintf statement. Thanks to Mike Flinn
+ <mike.flinn@smtpgate.aws.waii.com> for this fix.
+
+ * examples: Changed all uses of ACE::send_n (1, ...) to
+ ACE_OS::write (ACE_STDOUT, ...) to avoid problems with NT's
+ hacked support for sockets and HANDLEs. Thanks to Bernd Hofner
+ <hofner@pd.et-inf.uni-siegen.de> for noticing this.
+
+Sun Mar 17 00:43:14 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/CORBA_Handler.cpp (handle_input): Fixed the CORBA_Handler to
+ use send()/recv() rather than read()/write().
+
+ * ace/Process_Manager: put the hooks in for the forthcoming ACE
+ Process Manager, which will provide a service similar to the
+ ACE_Thread_Manager, except that it will work for processes, not
+ threads.
+
+ * netsvcs: all the ACE network services appear to be working
+ again...
+
+ * man: Completely regenerated all the manual pages to reflect all
+ the most recent changes.
+
+ * ace/OS.h: Created a new macro called ACE_DEFAULT_REACTOR_SIZE.
+ This is useful for two reasons (1) it centralizes this value in
+ one place in ACE and (2) removes a horrible circular dependency
+ between the Service_Config.h and Reactor.h...
+
+ * ace/Strategies: Added new strategies to handle "scheduling" of
+ Svc_Handlers launched by a Strategy_Acceptor. In this context,
+ scheduling refers to "suspending" and "resuming" Svc_Handlers.
+ There are several alternative strategies ranging from (1)
+ suspending/resuming a single handler, (2) suspending/resuming
+ all the handlers in a Reactor, and (3) suspending/resuming all
+ handlers controlled by a Thread_Manager. This very powerful
+ feature makes it simple to write ACE_Network_Services that can
+ control all their handlers in one fell swoop...
+
+ * ace/Task: Added new accessors/mutators to get/set the
+ Thread_Manager and the Message_Queue associated with a Task.
+ This makes life easier and more abstract in subclasses and
+ elsewhere.
+
+ * ace/Reactor: added an iterator to the ACE_Handler_Repository.
+ This makes it possible to implement the suspend_handlers() and
+ resume_handlers() very efficiently on both UNIX and Windows NT.
+
+ * ace/Reactor: Added two new methods called suspend_handlers() and
+ resume_handlers(). These methods suspend and resume all the
+ active Event_Handlers in the Reactor in one fell swoop.
+
+ * ace/Reactor.i (suspend_handler): Fixed a bug in the Reactor
+ where we were not factoring out the code for suspend_handler()
+ appropriately with respect to locking.
+
+ * netsvcs/Logging/Server_Daemon/Thr_Logging_Handler: Enhanced the
+ threaded logging service so that all active threads can be
+ automatically suspended and resumed via the ACE_Service_Config
+ svc.conf file.
+
+ * netsvcs/Logging/Server_Daemon/Logging_Handler.cpp: Rewrote the
+ ACE Logging service to use the new ACE_Strategy_Acceptor
+ implementation. This greatly reduced duplicate code. There's
+ almost nothing left in this directory save the actual service
+ itself!
+
+ * netsvcs/Tokens: Rewrote the ACE Token service to use the new
+ ACE_Strategy_Acceptor implementation. This greatly reduced
+ duplicate code. There's almost nothing left in this directory
+ save the actual service itself!
+
+ * netsvcs/Naming: Rewrote the ACE Naming service to use the new
+ ACE_Strategy_Acceptor implementation. This greatly reduced
+ duplicate code. There's almost nothing left in this directory
+ save the actual service itself!
+
+Sat Mar 16 20:02:08 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * netsvcs: Created a new subdirectory off of $WRAPPER_ROOT and put
+ all the ACE network services (e.g., Time, Logging, Naming, and
+ Tokens) into that directory. These services all instantiate the
+ new ACE_Strategy_Acceptor implementation, which greatly
+ simplifies their behavior and code.
+
+ * ace/Acceptor: Made some enhancements to the
+ ACE_Strategy_Acceptor in order to make it more suitable for use
+ as a generic "Service" launcher. This class now defines common
+ behavior for all the ACE network services (e.g., Time, Logging,
+ Naming, and Tokens).
+
+ * apps/Token_Server: Made the main Token_Server application be
+ dynamically linked if there's a valid svc.conf file.
+
+ * apps/Name_Server/Name_Server: Made the Server_Test a
+ "well-behaved" service. Previously, it block in a private event
+ loop within Name_Server::run(), which was called by
+ Server_Test::init() when the service was linked dynamically.
+ This obviously doesn't work correctly since it means that we
+ can't dynamically link any other services after this one! The
+ new version is "event-loop" friendly since it uses the main
+ Service_Config::run_event_loop() method.
+
+ * ACE-categories: Added a new emacs "outline" file that
+ illustrates how the filenames in $WRAPPER_ROOT/ace cluster into
+ class categories. Thanks to Chris Eich
+ <Chris_Eich@optilink.optilink.dsccc.com> and Alex V. Maclinovsky
+ <alexm@teltrunk1.tait.co.nz> for helping create this.
+
+ * ace: Split ACE into two libraries: libACE and libACE_svcs.
+ libACE contains the "core" ACE components. libACE_svcs contains
+ the client-side layered services (e.g., naming service, token
+ service, etc.). There are two reasons for doing this:
+
+ 1. It reduces the size of ACE for many common usecases (i.e.,
+ most people aren't using the naming service or the token
+ service). Any future layered services in ACE will be placed
+ into the libACE_svcs library rather than libACE.
+
+ 2. It works around annoying compiler bugs with lame compilers
+ like HP/UX C++. Now, if those compiles can't compile the
+ token service (which is very template intensive) it won't
+ affect the core ACE library components. This improves the
+ portability of ACE.
+
+ * Added -lACE_svcs to the ./apps/{Token_Server,Name_Server} and
+ ./examples/{Tokens,Naming} Makefiles to account for the new
+ libraries. Note that no source code changes are required...
+
+Fri Mar 15 00:03:48 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * apps/Name_Server/server/Name_Handler.cpp (recv_request): Fixed
+ the same problem as occurred in Token_Handler (these both come
+ from the same source...).
+
+ * apps/Token_Server/Token_Handler.cpp (recv_request): There was a
+ subtle bug in the Token_Handler that stems from my old code.
+ The line
+
+ n = this->peer_.recv ((void *) (((char *) &this->token_request_)
+ + sizeof (ACE_UINT32)),
+ length);
+
+ This should actually be:
+
+ n = this->peer_.recv ((void *) (((char *) &this->token_request_)
+ + sizeof (ACE_UINT32)),
+ length - sizeof (ACE_UINT32));
+
+ since length was read already. The old way tried to read 4
+ bytes too much. Thanks to Jesper for noticing this.
+
+ * ace/Connector.cpp (connect_svc_handler): Modified the connector
+ so that it automatically calls the close () method of the
+ Svc_Handler when the connection fails abortively. This makes
+ the semantics the same for synchronous and asynchronous
+ connection invocation modes. Thanks to Irfan for insisting on
+ this!
+
+ * apps/Token_Server/Token_Acceptor.cpp (handle_input): Changed
+ return type from int to ACE_HANDLE for NT compatibility. Thanks
+ to Jesper for this insight.
+
+ * ace/OS.h: The defines for ACE_LACKS_MODE_MASKS (OS.h) were only defined
+ when !ACE_WIN32. This has been fixed. Thanks to Irfan for
+ spotting this too.
+
+ * ace/OS.i (mmap): made a small change to ACE_OS::mmap to fix NT
+ portability problem (new variable added:nt_flags). Thanks to
+ Irfan for spotting this.
+
+ * ace/Local_Tokens.h: Added #include "ace/Map_Manager.h" after
+ line 41 in Local_Tokens.h to allow ACE to compile correctly with
+ the horrid HP/UX compiler. Thanks to Neil Cohen for figuring
+ this out (what a trooper!).
+
+ * ace/Local_Tokens.cpp (ACE_TPQ_Entry *): Replace
+
+ return ACE_TSS<ACE_TPQ_Entry>::operator ACE_TPQ_Entry *();
+
+ with
+
+ return (ACE_TPQ_Entry *) (*((ACE_TSS<ACE_TPQ_Entry> *) this));
+
+ to work around problems with MSVC++ 4.0 when the browse option
+ is enabled. Thanks to Kirk Sinnard <1764@mn.lawson.lawson.com>
+ for this fix.
+
+ * ace/config-sunx86-sunc++-4.x.h: Swapped the lines
+
+ // Compiler/platform supports SVR4 signal typedef.
+ //#define ACE_HAS_SVR4_SIGNAL_T
+ #define ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES
+
+ to
+
+ // Compiler/platform supports SVR4 signal typedef.
+ #define ACE_HAS_SVR4_SIGNAL_T
+ //#define ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES
+
+ to avoid an error using ProWorks C++ 4.0.1 (w/ patches) which
+ blow up in the Signal.x stuff with a prototyping error. Thanks
+ to John P. Hearn <hearn_j@sat.mot.com> for this recommendation.
+
+ * ace/Shared_Memory.h: The conditional compilation wrapper was out
+ of date, so I renamed it. Thanks to Alex V Maclinovsky
+ <alexm@teltrunk1.tait.co.nz> for reporting this.
+
+Thu Mar 14 23:18:59 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Thread.h: There was a bug in the ACE_Thread class. I
+ attempted to make the class uninstantiable by making the
+ constructor private. However, the statement was:
+
+ private:
+ Thread (void);
+
+ which is not the definition of the ctor! The code compiled
+ since it thinks Thread is a member function. As a result, you
+ could instantiate a object of ACE_Thread class, but no longer...
+ Also added this to the !defined (ACE_HAS_THREADS) arm of the
+ conditional compilation. Thank to Sandeep Joshi
+ <sandeepj@emailbox.att.com> for noticing this.
+
+ * ace/Log_Record.i (decode): Fixed a stupid typo where htonl
+ (this->length_) should have been htohl (this->length_)...
+ Thanks to Audun Tornquist <Audun.Tornquist@iu.hioslo.no> for
+ noticing this.
+
+Tue Mar 12 14:51:39 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * ace/Name_Request_Reply.cpp (decode): Added ntohl and htonl calls
+ wherever data was being exchanged.
+
+Sat Mar 9 17:49:51 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu)
+
+ * ace/OS.i (cond_wait): Updated the Win32 implementation to
+ correspond precisely with the UNIX semantics where the mutex is
+ always reacquired even when errors occur.
+
+Mon Mar 4 23:03:37 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu)
+
+ * INSTALL: updated the win32 to describe building test
+ applications.
+
+Mon Mar 4 16:17:05 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * ace/Local_Name_Space.cpp (resolve): Fixed a small bug. The type
+ field in resolve was copying extraneous stuff (because of being
+ kept around as a wchar_t). So I added a new method to the class
+ ACE_NS_String called len() which simply returns len_. Using this
+ I can now do a strncpy of len bytes for type (instead of a
+ simple strcpy) and then null-terminate the string to remove the
+ garbage.
+
+Thu Feb 29 23:41:04 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu)
+
+ * ace/Token_Request_Reply.cpp: Fixed a byte-order bug which was
+ showing up on intel platforms.
+
+ * ace/Remote_Tokens.cpp: Fixed a race condition in
+ ACE_TSS_Connection which was munging mt token server clients.
+
+ * examples/Tokens/mutex/*: The Token Server example applications
+ now use ACE_Thread_Manager, which should make them portable to
+ Win32.
+
+ * apps/Token_Server/Token_Server.cpp: The Token Server is now a
+ Service_Object which can be dynamically linked.
+
+ * ace/OS.i: Win32 ACE_OS:: signal methods now return 0 instead of
+ -1. So, calls to signal code succeed, but do nothing useful.
+
+Thu Feb 29 20:38:32 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * apps/Logger/Server_Daemon/Server_Logger.cpp
+ (handle_logging_record): There was a typo where
+ ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES was incorrectly spelled.
+ This caused problems on HP/UX. Thanks to Neil Cohen for
+ finding this.
+
+Wed Feb 28 11:41:49 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Mem_Map.cpp: Fixed a nasty bug with Win32 memory mapping...
+ It turns out we need to be very careful when remapping a
+ previously mapped region if the MapViewOfFile we're trying to
+ establish *grows* beyond what was originally mapped with
+ CreateFileMapping(). The new scheme seems to work correctly
+ with both UNIX and Win32.
+
+ * ace/OS.h: apparently when using MFC library functions it
+ is not possible to include windows.h. Instead, users
+ must include AFX.h. Therefore, I've modified OS.h to
+ include the following:
+
+ #if !defined (__AFX_H__)
+ #include <windows.h>
+ #endif /* __AFX_H__ */
+
+ Thanks to Patty Genualdi (genualdp@agcs.com) for pointing this
+ out.
+
+ * ace/Memory_Pool.cpp: Modified init_acquire() so that it calls
+ ACE_Mem_Map::open() rather than ACE_Mem_Map::map() the first
+ time. This ensures that the file is mapped correctly.
+
+ * ace/Mem_Map: Added a new method called open() that creates/opens
+ a file without actually mapping it.
+
+ * ace/SOCK_Dgram_Mcast.cpp (make_multicast_address): Added
+ new support for Windows NT.
+
+ * ace/Memory_Pool: reimplemented ACE_MMAP_Memory_Pool so that uses
+ ACE_Mem_Map. This ensures that we can leverage all the work
+ that went into making ACE_Mem_Map work on Win32.
+
+ * ace/Memory_Pool.cpp (map_file): Modified the code so that we
+ always unmap the file before trying to remap it. This avoids
+ problems with Win32...
+
+ * ace/Mem_Map: Modified the implementation of ACE_Mem_Map so that
+ it takes advantage of the improved features in ACE_OS::mmap.
+ Also added new a method that returns the memory-mapped addr more
+ easily.
+
+ * ace/OS: Modified the ACE_OS::mmap() method so that it is more
+ efficient for remapping files on Win32.
+
+ * ace/OS.h: renamed the type QWORD to ACE_QWORD to avoid namespace
+ pollution. Thanks to Patty Genualdi (genualdp@agcs.com) for
+ pointing this out.
+
+ * ace/OS.h: Changed the value of the SIGPIPE emulation for Win32
+ to match the UNIX value in order to avoid problems. Thanks to
+ Jesper for noticing this.
+
+ * apps/Token_Server: Fixed misuse of int for ACE_HANDLE in various
+ places. Thanks to Jesper for noticing this.
+
+ * Renamed the ./tests directory to ./examples to make way for the
+ new ACE regression tests. These tests will go into the new
+ ./tests directory.
+
+ * ace/Mem_Map.cpp: Added a destructor and a close() method that
+ closes down the file HANDLE if we allocated it. This is useful
+ to prevent descriptor leaks. Thanks to Irfan for suggesting
+ this.
+
+ * ace: Made a number of changes to remove unreferenced parameters
+ from ACE methods. This eliminates zillions of warning from the
+ HP/UX compiler. Thanks to Neil Cohen for reporting this.
+
+ * ace/Local_Name_Space.cpp (resolve): revised some code to work
+ around bugs with the HP/UX compiler... Thanks to Neil Cohen for
+ this workaround.
+
+Tue Feb 27 21:06:09 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/OS.i: The Win32 CreateFile does not handle the return you
+ would expect when the file exists. You would expect EEXISTS (17
+ in UNIX) but the GetLastError is set to 80
+ (ERROR_FILE_EXISTS). Therefore, I changed ACE_OS::open to map
+ ERROR_FILE_EXISTS onto EEXIST. This is only a partial solution,
+ however. There must be a better way to handle this!
+
+ * ace/Mem_Map.cpp (ACE_Mem_Map): Fixed a bug with one of the
+ ACE_Mem_Map destructors that was causing problems due to the
+ fact that base_addr_ wasn't being initialized to 0. Thanks to
+ Karlheinz for noticing this.
+
+ * ace/Signal.i: signals on AIX cannot use sigprocmask() in any
+ multithreaded programs. Instead, the call
+ ACE_OS::thr_sigsetmask() should be used since it is used to
+ update the thread signal mask. This comes up only in the
+ Sig_Guard constructor and destructor. Therefore, I #ifdef the
+ call under the ACE_MT_SAFE macro, using sigprocmask() in the
+ #else case. Thanks to Chris Lahey for reporting this.
+
+ * tests: removed all uses of ACE_OS::join (0, ....) in ACE and
+ replaced them with ACE_Thread_Manager::wait() calls. This
+ ensures that the ACE code is portable to Win32 and POSIX
+ pthreads!
+
+ * ace/Dynamic_Service.cpp: Added a #include of
+ "ace/Service_Config.h" to work around problems with HP/UX.
+ Thanks to John Morey for reporting this.
+
+Sun Feb 25 12:10:38 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * apps/Token_Server: changed the name token_server.cpp to main.cpp
+ to avoid a name clash on Win32...
+
+ * man/man3: updated all the ACE manual pages to reflect the
+ most recent changes.
+
+ * ace/OS.i: Implemented the cond_timedwait() method correctly in
+ ACE_OS. This method should now do the right thing with respect
+ to blocking, polling, and timewaits for Win32.
+
+ * ace/OS.i: Modified the Win32 implementation of all the
+ socket-related wrappers in ACE_OS. The new implementation very
+ cleverly sets errno to the result of WSAGetLastError() if a
+ socket-related call fails. Since all of the WinSock errors are
+ mapped into their equivalent UNIX errno values this enables
+ socket applications to work portably for UNIX and Win32.
+
+ * ace/Malloc_T.cpp (ACE_Malloc): Improved error reporting for
+ cases where the Memory_Pool::init_acquire() fails (e.g., if the
+ backing store was already created by another user and we don't
+ have permission to access it...).
+
+ * ace/Task: modified Task.h so that it is no longer necessary to
+ write #include "ace/Synch_T.h" in order to use ACE_MT_SYNCH,
+ etc.
+
+ * ace/SOCK.cpp (DllMain): Added a clever "Schwartz counter" to
+ make sure that the WinSock library is correctly initialized,
+ even if we're not using ACE as a DLL!!!
+
+ * tests/Mem_Map/file-reverse: got the file reverse test program
+ working. The ACE_Mem_Map class should now be ported to Win32...
+
+ * ace/OS.i (open): Changed how the O_CREAT flag was handled
+ to give it UNIX semantics...
+
+Sat Feb 24 12:55:27 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/UPIPE_Stream.cpp (recv): Fixed a signed/unsigned mismatch.
+ There should be no more mismatches in ACE...
+
+ * ace/Name_Proxy.cpp (recv_reply): Fixed a signed/unsigned
+ mismatch.
+
+ * ace/Message_Block.cpp (copy): Fixed a signed/unsigned mismatch.
+
+ * ace/INET_Addr.cpp (get_host_name): Changed the type of the
+ hostnamelen parameter from int to size_t to be more "abstract."
+ This will also prevent a warning from the MSVC++ compiler.
+
+ * apps/Logger/Client_Daemon/Client_Logger.i: Fixed a braino with
+ network byteoder that was causing Client_Logger::send() to fail
+ on INTEL boxes. Thanks to Bryon G. Rigg
+ <bgrigg@opus.bcbnet.com> for finding this.
+
+Fri Feb 23 01:59:34 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/OS.i: Enhanced mmap() to give the same semantics as UNIX
+ mmap() by using MapViewOfFileEx(). Also greatly improved the
+ UNIX emulation capabilities so that mmap() now has the same API
+ for UNIX and Win32.
+
+ * ace/Time_Value: Added functions to constructor and conversion
+ from/to Win32 FILETIME. This enables us to reuse those 100ns
+ conversions in ACE_Profile_Timer.
+
+ * ace/Time_Value: Fixed a problem with these:
+
+ // True if tv1 < tv2.
+
+ INLINE int
+ operator < (const ACE_Time_Value &tv1,
+ const ACE_Time_Value &tv2)
+ {
+ ACE_TRACE ("operator <");
+ return tv2 > tv1;
+ }
+
+ This should be "tv2 >= tv1". Same problem was fixed with
+ operator <=.
+
+ * ace/Profile_Timer.i, fixed the following:
+
+ this->end_time_ = ACE_OS::gettimeofday ();
+ this->last_time_ = this->end_time_;
+ this->last_usage_ = this->end_usage_;
+ ACE_OS::getrusage (RUSAGE_SELF, &this->end_usage_);
+
+ This will overwrite end_time before it is saved to
+ last_time...
+
+ * tests/Threads: Added Jesper's test for readers/writers locks.
+ The test adds a number of reader and writer threads. When
+ active, writers modify a shared variable and verify that only
+ one writer and no readers are active. When active, readers
+ check that no writers are active and that the shared data is
+ never changed. The test passes for different ratios of
+ readers/writers, and debug output shows that several readers are
+ allowed simultaneously. Or, in other words, we have an
+ indication that it should work.
+
+ * ace/OS.i: Added Win32 implementations of getpid(), fork(),
+ lseek(), dup(), cond_timedwait (), getrusage ()
+
+ * ace/OS.i: Modified all the ACE_OS::str* routines so that they no
+ longer do an ACE_OSCALL_RETURN. This can lead to weird bugs...
+ Thanks to Jesper for noticing this.
+
+ * ace/config-sunos4-sun4.1.4.h: Added a new config file that
+ should work with SunOS 4.x... Also added support for SunOS
+ 4.1.4. Thanks to Mick Adams (eeimas@eei.ericsson.se) for help
+ with this.
+
+Thu Feb 22 18:58:36 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * tests/Naming/Client/Name_Service.h (ACE_Service_Object):
+ Modified test application to make use of ACE_Dynamic_Service.
+
+ * ace/Dynamic_Service.h: Added a new class called Dynamic_Service
+ which provides a general interface to add and retrieve arbitrary
+ things into the ACE service repository.
+
+ * apps/Name_Server/README: Rearranged files so that Name_Server
+ and Name_Handler are now contained in the server directory under
+ apps and are no longer under /ace. Also, the Dump_Restore
+ directory has been moved under /tests/Naming.
+
+Thu Feb 22 01:56:46 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/INET_Addr.cpp (set): Fixed a byteorder bug in ACE_INET_Addr
+ that was causing problems when ACE was used on Win32 running on
+ Intel platforms...
+
+ * ace/Mem_Map.cpp (map_it): Fixed ACE_Mem_Map so that it will work
+ correctly on Win32.
+
+ * ace/SOCK_Stream.i: Changed the implementation of the Win32
+ versions of send() and recv() so that they will never use the
+ read() and write() calls. This works around limitations with
+ Win32, which can't do a ReadFile() or WriteFile()
+ *synchronously* with a SOCKET.
+
+ * Changed all occurrences of read (0, ...) to read (ACE_STDIN,
+ ...) and all occurrences of write (1, ...) to write
+ (ACE_STDOUT, ...) in order to be compatible across UNIX and
+ Win32.
+
+ * tests/ASX/Event_Server: Fixed up all the socket I/O calls so
+ that they use the WinSock send()/recv() methods rather than
+ ReadFile and WriteFile...
+
+ * ace/OS.i: Updated open() to correctly emulated UNIX open()
+ semantics on Win32.
+
+ * ace/OS.cpp (thr_exit): Added support to the NT port so that
+ thr_exit() doesn't endup doing multiple deletions of the same
+ object. Thanks to Karlheinz for this fix.
+
+ * ace/OS.h: Moved the location of ACE_MAXCLIENTIDLEN so that
+ MAXHOSTNAMELEN would be correctly visible for NT.
+
+ * ace/Reactor.cpp: Added a temporary fix for the fact that
+ writev() and readv() don't work correctly yet on NT. The
+ solution is to replace write() with two writes() and readv()
+ with two reads() for the Reactor's notification scheme. A
+ better solution should be forthcoming.
+
+ * ace/Reactor.cpp: Made sure to initialize the timer_queue_ to 0
+ in the constructors so that the Reactor's destructor can avoid
+ crashing horribly if the constructor fails. Thanks to Karlheinz
+ for pointing out the need for this.
+
+ * ace/SOCK.cpp: Added support for WSAStartup for using WinSock
+ within the ACE_SOCK class.
+
+Wed Feb 21 21:05:55 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/ACE.cpp (bind_port): Made a quick fix to work around the
+ fact that NT doesn't set errno...
+
+ * ace/OS.i (mmap): Fixed a bug in mmap for the NT port. It should
+ return MAP_FAILED on error rather than 0 to be equivalent to the
+ UNIX version. Thanks to Irfan for spotting this.
+
+Mon Feb 19 00:31:42 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Typed_SV_Message.i (ACE_Typed_SV_Message): Modified the
+ constructor calls so that length_ and max_size_ are correctly
+ set when created. Thanks to Alexandre Karev
+ <akg@na47sun05.cern.ch> for reporting this.
+
+ * ace/SV_Message_Queue.i (remove): fixed bug in
+ ACE_SV_Message_Queue::remove method where `internal_id_' member
+ was modified *BEFORE* it was used the last time in
+ ACE_SV_Message_Queue::control. Thanks to Alexandre Karev
+ <akg@na47sun05.cern.ch> for reporting this.
+
+ * ace/Typed_SV_Message.i (length): Fixed a minor typo that caused
+ a bigger bug ;-). Thanks to Alexandre Karev
+ <akg@na47sun05.cern.ch> for reporting this.
+
+ * ace/OS.h: Added new macros that allow programs to portably
+ access stdin, stdout, and stderr HANDLEs on Win32 and UNIX as
+ follows:
+
+ #if defined (ACE_WIN32)
+ #define ACE_STDIN GetStdHandle (STD_INPUT_HANDLE)
+ #define ACE_STDOUT GetStdHandle (STD_OUTPUT_HANDLE)
+ #define ACE_STDERR GetStdHandle (STD_ERROR_HANDLE)
+ #else
+ #define ACE_STDIN 0
+ #define ACE_STDOUT 1
+ #define ACE_STDERR 2
+ #endif /* ACE_WIN32 */
+
+ * ace/INET_Addr.i: modified the return value of get_port_number so
+ that it returns the value in host byte order. This has actually
+ been a latent bug in ACE for years, but it only surfaced
+ recently after porting to NT on the Intel instruction set (which
+ is "little-endian").
+
+ * tests/ASX/Event_Server: Merged in the latest changes to the
+ Event_Server tests, which enable it to compile on Windows NT.
+ Now, I just need to get it working on NT...
+
+ * Updated all of ACE to use the new ACE_ASSERT rather than assert.
+
+ * ace/Assert.h: Added a new file and a new macro called
+ ACE_ASSERT. This uses the ACE_Log_Msg Singleton to provide a
+ more consistent means to do assertions. Thanks to Alexandre
+ Karev <akg@na47sun05.cern.ch> for suggesting this.
+
+ * ace/Log_Msg.cpp (log): added for method ACE_Log_Msg::log lines
+ to skip the `sprintf' part for %N - file name and %l - line
+ number format specifiers. Thanks to Alexandre Karev
+ <akg@na47sun05.cern.ch> for reporting this.
+
+ * Remote_Name_Space: Removed an initalizer to ACE_WString that was
+ driving the HP/UX compiler nuts.
+
+Sun Feb 18 18:11:22 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Synch.h (ACE_Null_Condition_Mutex): Added a missing body to
+ the wait() method. Thanks to Byron Riggs for noticing this.
+
+Sat Feb 17 19:10:06 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * tests/Naming/README (client): Added description for new
+ features, including support for list_values and list_types. Also
+ added a small description about test programs using DLL.
+
+ * ace/Name_Request_Reply.cpp (decode): Fixed a small bug in
+ ACE_Name_Request::decode. type_ was not null terminated causing
+ some garbage to be returned.
+
+Thu Feb 15 14:57:06 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * ace/Remote_Name_Space.cpp: Changed names of some parameters to
+ comply with ACE syntax.
+
+Wed Feb 14 13:36:31 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * ace/Local_Name_Space.cpp (resolve): Type support has been added
+ to Name_Server. A new class called ACE_NS_Internal was created to
+ keep value and type information.
+
+Fri Feb 9 17:12:00 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * "Officially" released ACE 4.0
+
+ * ace/OS.i (sema_post): Fixed a bug in the NT port.
+
+ #elif defined (ACE_HAS_WTHREADS)
+ return ::ReleaseSemaphore (*s, 1, 0);
+ #endif /* ACE_HAS_STHREADS */
+
+ This returns 1 for success, and disturbs cond_broadcast...
+ This was replaced by:
+
+ #elif defined (ACE_HAS_WTHREADS)
+ return ::ReleaseSemaphore (*s, 1, 0) ? 0 : -1;
+ #endif /* ACE_HAS_STHREADS */
+
+ Thanks to Jesper S. M|ller (stophph@diku.dk) for this.
+
+ * ace/OS.i (cond_init): Fixed a bug in the NT condition synch
+ code, as the initial count of the semaphore was 1. This gives an
+ inconsistent condition: The first waiter went straight through...
+ Change in ACE_OS::cond_init:
+
+ if (ACE_OS::sema_init (&cv->sema_, 0, type, name, arg) != 0)
+ return -1;
+
+ Thanks to Jesper S. M|ller (stophph@diku.dk) for this.
+
+ * ace/Singleton.cpp: Fixed a stupid bug that was caused by failure
+ to #include "ace/Synch_T.h"... Thanks to Neil Cohen and Byron
+ Riggs for giving me insights on what the problem was. ACE now
+ compiles on HP/UX.
+
+Fri Feb 9 11:07:04 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
+
+ * tests/Naming/server/Server_Test.cpp (init): Modified server
+ tests to dynamically link Naming Services. Both client and
+ server tests now make use of the ACE dynamic linking mechanisms.
+
+ * ace/Local_Name_Space.cpp: Added list_values() to Name
+ Server. The functionality is very similar to list_names (returns
+ list of values that match a pattern).
+
+ * tests/Naming/client/Client_Test.cpp (bind): Replaced all uses of
+ cerr and cout with ACE_ERROR, ACE_ERROR_RETURN, and ACE_DEBUG.
+ Split the file Client_Test.cpp into two files -- Client_Test.cpp
+ and Name_Service.cpp (similarly .h file) each containing the
+ corresponding class. Modified svc.conf to work with the changes.
+
+Thu Feb 8 02:05:26 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Log_Msg.cpp (log): Enhanced the Log_Msg class so that it
+ supports "nested" calls via %r. If SILENT mode enabled, nested
+ outputs will enclosed in {..} brackets in thread-specific
+ storage. Thanks to Alexandre Karev <akg@na47sun05.cern.ch> for
+ suggesting this.
+
+ * ace/Synch: Added a new class called ACE_Null_Condition_Mutex.
+ This is necessary to fix bugs with stupid compilers... Thanks
+ to Zusman Mark <marklz@rotem.technion.ac.il> for reporting this.
+
+ * tests/Naming/client: made a first pass implementation of a
+ client application that dynamically links in a Naming_Context
+ based on information provided by the svc.conf file.
+
+ * ace/Name_Options: Fixed yet more problems with dynamic memory
+ management. The old version didn't make a copy of the strings
+ it was passed and this caused major problems.
+
+ * ace: Fixed a whole slew of problems with the ACE Name Server
+ stuff that arose from inconsistent use of const char * vs. char
+ *...
+
+Wed Feb 7 00:58:45 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/CORBA_Handler.cpp (ACE_MT_CORBA_Handler): Added new
+ enhancements to ACE_MT_CORBA_Handler to make it work correctly
+ with Windows NT. Thanks to Irfan for making these changes.
+
+ * ace/Connector.cpp (fini): Make another workaround for bugs with
+ MSVC++ 2.0...
+
+ * ace/SPIPE_Connector.cpp (connect): Added a call to ACE_CLR_BITS
+ (flags, O_CREAT) to make darn sure that the O_CREAT flag is not
+ set. Thanks to Chris Cleeland for suggesting this.
+
+Tue Feb 6 01:40:29 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/OS.h: added a new prototype to OS.h that should help with
+ portability to nasty platforms with broken rand_r() definitions.
+ Thanks to Aurelio Nocerino
+ <aurelio@irsipcs2-27-le0.irsip.na.cnr.it> for suggesting this.
+
+ * Local_Tokens: Changed all uses of enumerals MAXTOKENNAMELEN and
+ MAXCLIENTIDLEN to symbol #defines ACE_MAXTOKENNAMELEN and
+ ACE_MAXCLIENTIDLEN. This works around bugs with HP/UX.
+ Thanks to Neil Cohen for reporting this problem.
+
+ * ChangeLog: split the ChangeLog files into 4 separate files --
+ one for '96, '95, '94', and '93. Hard to believe I've been
+ working on this stuff for so long!
+
+ * ace/OS: Fixed the use of ::memset to replace sizeof buffer with
+ sizeof (ACE_SERVENT_DATA) and sizeof (ACE_HOSTENT_DATA). This
+ fixes bugs that surfaced on AIX. Thanks to Chris Lahey for
+ finding these.
+
+ * ace/SPIPE_Addr.cpp (ACE_SPIPE_Addr): Fixed a bug in
+ SPIPE_Addr::SPIPE_Addr(const SPIPE_Addr&). What happens is that
+ when the size is calculated it does not take into account the
+ required zero byte at the end of the rendezvous_ member. Thanks
+ to Chris Cleeland <chris@envision.com> for reporting this.
+
+ * ace/Local_Tokens: Had to move all ACE_Token_Proxy methods from
+ Local_Tokens.i to Local_Tokens.cpp and remove INLINE - otherwise
+ gcc reported them as undefined methods during linkage stage.
+ Thanks to Zusman Mark <marklz@rotem.technion.ac.il> for
+ reporting this.
+
+ * ace: Changed ACE_Name_Request_Reply::LAST to
+ ACE_Name_Request_Reply::MAX_ENUM to avoid problems with name
+ conflicts on OSF/1. Thanks to Eshel Liran
+ <liran@bimacs.cs.biu.ac.il> for suggesting this.
+
+ * ace/Synch_T: Fix all definitions of ACE_Atomic_Ops so that they
+ compile correctly on platforms that lack threads! Thanks to
+ Alexandre Karev <akg@na47sun05.cern.ch> for noticing this.
+
+ * include/makeinclude: Added a new config file from Bryon G. Rigg
+ <bgrigg@opus.bcbnet.com>, which should allow ACE to build on
+ Linux.
+
+ * ace/Remote_Tokens.cpp: Moved ACE_TSS_Connection to
+ Remote_Tokens.h to avoid problems with AIX. Thanks to the
+ ever-vigilant Chris Lahey for reporting this.
+
+Mon Feb 5 23:34:42 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu)
+
+ * Added CORBA_Ref.h which contains the new class ACE_CORBA_Ref.
+ This class provides a nice wrapper for making the use of Orbix
+ object references more transparent. This is done by automating
+ the release and duplicate calls.
+
+Mon Feb 5 15:43:17 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace: added Prashant's latest changes to the Name_Handler*,
+ Naming_Context*, and Remote_Name_Space*. These changes make it
+ possible to retrieve lists of values based on a pattern, which
+ can be a regular expression.
+
+ * Moved the apps/Name_Server/Client-Server tests into tests/Naming
+ and most of the apps/Token_Server/* tests into tests/Tokens to
+ conform to Karlheinz's testing style.
+
+ * ace: Modified a number of files in ACE to make it compile
+ correctly with MSVC++ 2.0.
+
+Sun Feb 4 23:58:43 1996 Douglas C. Schmidt (schmidt@mambo.cs.wustl.edu)
+
+ * ace/Reactor: Generalized ACE_Null_Callback to work correctly
+ with Windows NT (which lacks pipes). The new design uses the
+ ACE socket wrappers for NT. It requires very few changes to the
+ code to handle NT now! Also changed the name to
+ ACE_Notification_Handler, which is more descriptive.
+
+Sun Feb 4 14:47:50 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Remote_Tokens.cpp: Reworked ACE_Singleton to avoid
+ portability problems on compilers like GCC.
+
+Thu Feb 1 12:47:46 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Remote_Tokens.cpp: Generalized the parameters passed into
+ ACE_Singleton so they would compile on HP/UX and other platforms
+ that lack threads. Thanks to Neil Cohen for noticing the
+ problem.
+
+Wed Jan 31 22:49:13 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace: Modified a number of minor things in ACE to get it to
+ compile successfully with Windows NT MSVC++ 4.0. Updated the
+ INSTALL file to explain this process better...
+
+Tue Jan 30 01:12:07 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/CORBA_Handler.cpp: changed things so that no diagonistic
+ messages are printed.
+
+ * Regenerated all the ACE manual pages to bring them up to date
+ with the recent changes.
+
+ * ace/Malloc.h: Modified the ACE_Malloc header file so that it
+ works correctly when ACE_MALLOC_STATS is enabled. Thanks to
+ Alexandre Karev <akg@na47sun05.cern.ch> for reporting this.
+
+ * ace/OS.cpp (mutex_lock_cleanup): removed the leading & before
+ p_lock. Thanks to Chris Lahey for noticing this.
+
+ * ace: Added the new ACE_Singleton class. This class uses the
+ Adapter pattern to turn ordinary classes into Singletons
+ optimized with the Double-Check pattern.
+
+ * Added Tim's latest Token Server changes (which include support
+ for local and remote mutexes and readers/writer locks) and
+ Prashant's latest Name Server changes (which allows the contents
+ of a Name Server to be dumped and restored to/from an ASCII
+ file).
+
+Mon Jan 29 02:22:23 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Handle_Set: Changed MAX_SIZE and WORD_SIZE to MAXSIZE and
+ WORDSIZE to avoid name collisions with HP/UX. Thanks to Byron
+ Rigg <bryon_rigg@mail.telecorpsys.com> for suggesting this.
+
+ * ace/Time_Value.h: Added a new config symbol ACE_HAS_SVR4_TIME to
+ differentiate between UNIX platforms that support "POSIX_TIME"
+ (i.e., timespec_t) and those that support "SVR4_TIME" (i.e.,
+ timestruc_t). This is necessary to work around HP/UX... Thanks
+ to Byron Rigg <bryon_rigg@mail.telecorpsys.com> for suggesting
+ this.
+
+ * ace/config-hpux-10.x.h: config-hpux.h has now been renamed to
+ config-hpux-10.x.h and config-hpux-9.x.h. Thanks to Byron Rigg
+ <bryon_rigg@mail.telecorpsys.com> for suggesting this.
+
+ * ace/Synch_T: Added a new method called ts_get() and made both
+ the operator-> and operator TYPE * call this. I hope this will
+ fix a bug with HP/UX reported by Neil Cohen...
+
+ * ace/OS.i (dlclose): Added Win32 support for dlclose(). Thanks
+ to Todd L. Montgomery <tmont@cerc.wvu.edu> for pointing the way
+ here...
+
+ * ace: Split off the old class ACE_Dynamically_Allocated, renamed
+ it ACE_Dynamic, put it in a separate file called Dynamic.*.
+ This is necessary to solve nasty multiple definition problems
+ with compilers that require the source of template.
+
+ * ace/Synch_T: moved
+
+ template <class TYPE> TYPE *
+ ACE_TSS<TYPE>::make_TSS_TYPE (void) const
+ {
+ return new TYPE;
+ }
+
+ out from condition compilation block
+
+ #if (defined (ACE_HAS_THREADS) && defined(ACE_HAS_THREAD_SPECIFIC_STORAGE))
+
+ in file Synch_T.cpp. This class member called in many other
+ places regardless ACE_HAS_THREADS and
+ ACE_HAS_THREAD_SPECIFIC_STORAGE defined or not...
+
+ * ace/Name_Handler.cpp: Changed the use of the "inherited" typedef
+ to fully expand to ACE_Svc_Handler<ACE_SOCK_STREAM,
+ ACE_NULL_SYNCH>. This is necessary to workaround bugs with AIX.
+ Thanks to Chris Lahey for reporting this.
+
+ * tests and apps: Fixed an odd problem that only surfaced recently
+ with GNU G++. Apparently, it doesn't like function-style casts
+ of the form ACE_SignalHandler (foo), but will accept
+ (ACE_SignalHandler) foo. Since both approaches are equally good
+ for what I'm doing, I've updated all the code in ACE to be more
+ portable.
+
+Sun Jan 28 12:24:58 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * tests/Shared_Malloc/test_malloc.cpp (spawn): when forming
+ argv[] for execv, moved
+
+ argv[ ... ] = Options::instance ()->debug () ? "-d" : "";
+
+ to the end of the vector just before terminator. This will
+ allow to pass rest of arguments to exec if -d switch not
+ specified. Thanks to Alexandre Karev <akg@na47sun05.cern.ch>
+ for reporting this.
+
+ * tests/Shared_Malloc/Malloc.cpp: To avoid conflict with
+ ACE_DEFAULT_SEM_KEY in OS.h changed SEMA_KEY value in
+ tests/Shared_Malloc/Malloc.cpp to ACE_DEFAULT_SEM_KEY + 1.
+ Thanks to Alexandre Karev <akg@na47sun05.cern.ch> for reporting
+ this.
+
+ * ace/SV_Semaphore_Complex.i: Changed all arguments in calls like
+
+ this->acquire( n+2 )
+ and
+ this->tryacquire( n+2 )
+ to
+ this->acquire( n )
+ and
+ this->tryacquire( n )
+ .
+ Since the semaphore number is incremented by 2 in
+ SV_Semaphore_Complex::acquire
+ and
+ SV_Semaphore_Complex::tryacquire
+
+ when SV_Semaphore_Simple::(acquire/tryacquire) is called.
+ Thanks to Alexandre Karev <akg@na47sun05.cern.ch> for pointing
+ this out.
+
+Sat Jan 27 16:14:27 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Read_Buffer: Added a new component that efficiently reads in
+ an artibrarily large buffer from a file up to an including a
+ termination character. Also performs search/replace on single
+ occurrences a character in the buffer using the priniciples of
+ Integrated Layer Processing.
+
+Fri Jan 26 12:01:06 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Thread_Manager: Made a small change to workaround the use of
+ a struct type for thread_t and hthread_t in HP/UX. Thanks to
+ Bryon Rigg <bryon_rigg@mail.telecorpsys.com> for noticing this.
+
+Thu Jan 25 19:54:01 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Svc_Handler: Added some minor changes to account for
+ limitations with GNU G++. I think the new implementation will
+ be portable across all C++ platforms.
+
+ * ace/SV_Semaphore_*: Widened the interface of SV_Semaphore*
+ classes to include a flags parameter. This can be used to pass
+ in SEM_UNDO, which is important in many applications. Thanks to
+ Andrew Gilbert <agilbert@csci.csc.com> for suggesting this.
+
+ * ace/Synch_T.cpp: We are forced to "cast away const" inside of of
+ the ACE_TSS const methods in order to make the ACE_Guard work.
+ The right thing to do would be to make the lock "mutable" but
+ that's hopelessly non-portable.
+
+Thu Jan 25 14:34:12 1996 Douglas C. Schmidt (schmidt@merengue.cs.wustl.edu)
+
+ * ace/Log_Msg: Fixed a minor bug in ACE_Log_Msg that kept
+ resetting the restart and iostream value no matter what we'd set
+ it to before. Thanks to Prashant for finding this.
+
+ * bin: Fixed up the Makefile process for the clone program. Now
+ it builds without having to depend on ACE. Thanks to Brad Brown
+ (bbrown@rdxsunhost.aud.alcatel.com) for suggesting this.
+
+ * ace/Synch: Modified ACE_Condition*.remove so that cond_destroy()
+ is called in a loop if the condition variable is BUSY. This
+ avoids a condition where a condition is signaled and because of
+ some timing problem, the thread that is to be signaled has
+ called the cond_wait routine after the signal call. Since the
+ condition signal is not queued in any way, deadlock occurs
+ unless this loop is used. Thanks to Chris Lahey for pointing
+ this out.
+
+ * ace/CORBA_Handler: Made all the methods in ACE_CORBA_Handler
+ private to make sure that users don't inherit from this class!
+ Instead, the ACE_MT_CORBA_HAndler and ACE_ST_CORBA_Handler
+ should be used as Singletons.
+
+ * ace/CORBA_Handler: Added new support for Orbix on Windows
+ NT. This requires clever use of macros in order to handle
+ inherent differences between generated code.
+
+ * ace/Svc_Handler: Added a clever idiom that transparently checks
+ if we were allocated dynamically. This information is used by
+ the <destroy> method to decide if we need to delete <this>...
+ The idiom is based on a paper by Michael van Rooyen
+ (mrooyen@cellnet.co.uk) that appeared in the April '96 issue of
+ the C++ Report. We've spruced it up to work correctly in
+ multi-threaded programs by using our ACE_TSS class.
+
+ * ace/config-win32-msvc4.0.h (ACE_LACKS_RECVMSG): Fixed a typo
+ in the MSVC++ config files.
+
+Thu Jan 25 02:59:22 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * Finally got the frigging library built on SGI. This was a chore
+ due to compiler bugs, but at least it's another datapoint for
+ successful cross-platform building...
+
+Wed Jan 24 00:10:29 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Time_Value.cpp (operator-=): Changed operator += and
+ operator -= to use const ACE_Time_Value & rather than
+ ACE_Time_Value &. Thanks to Alex V Maclinvosky for noticing
+ this. In addition, also changed *all* ACE_Time_Value parameters
+ to be const ACE_Time_Value &. This should reduce the number of
+ excess constructors called...
+
+ * ace/OS: Added Chris Lahey's latest changes that introduce POSIX
+ pthread cancellation cleanup handlers. Also added an herror()
+ function that is comparable to perror().
+
+ * ace/OS: (thr_join): Added a new version of thr_join() which
+ works for Windows NT. Windows NT requires a HANDLE, which is
+ fundamentally incompatible with other things...
+
+ * ace/Thread_Manager: added two new methods that return the
+ ACE_Thread_Descriptor corresponding to either a thr_id or a
+ thr_handle.
+
+ * ace/Thread_Manager: Made the spawn() interface compatible with
+ the other spawn() interfaces in ACE_OS and ACE_Thread by adding
+ the hthread_t type.
+
+ * ace/Log_Msg.cpp (log): Fixed things up so that we can now print
+ out the thread id for all versions of threads!
+
+ * ace/OS: Added a new overloaded version of ACE_OS::thr_self()
+ that returns the "kernel" thread id. This is necessary on
+ systems like NT and AIX, which separate kernel thread ids from
+ user thread ids. Thanks to Chris Lahey for suggesting this.
+
+Tue Jan 23 01:17:23 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/OS.i (sigwait): Changed the parameter of sigwait() from
+ const sigset * to sigset *. Thanks to Neil Cohen for chasing
+ this down on SunOS 5.5....
+
+ * ace/Malloc_T.cpp: Fixed a typo in bind() whereby
+ the test if (duplicates == 0 || this->shared_find (name) != 0)
+ should be if (duplicates == 0 && this->shared_find (name) != 0).
+ Thanks to the ever vigilant Alexandre Karev
+ <akg@na47sun05.cern.ch> for reporting this.
+
+ * tests: Fixed all test programs that previously used the "execl"
+ family of system calls to use the "execv" family instead.
+
+ * ace/OS: Added support for the "execv" family of exec() system
+ calls. Unlike the "execl" family, these calls are easy to
+ support since they don't require variadic arguments. I've added
+ the hooks for the "execl" family, as well, but haven't actually
+ implemented them yet.
+
+ * ace/Memory_Pool.cpp (ACE_Shared_Memory_Pool): Fixed a bug that
+ was tickled when pool_name == 0. Thanks to Alexandre Karev
+ <akg@na47sun05.cern.ch> for reporting this.
+
+ * ace/OS.h: removed FD_SETSIZE from the ACE_WIN32 stuff since this
+ is defined in winsock.h.
+
+ * ace/OS.cpp (ACE_Spawn_Args): Added "f" to the parameter list.
+
+ * ace/CORBA_Handler: Added a new macro called CORBA_T that masks
+ the incompatibilities between the version of Orbix on NT and on
+ Solaris.
+
+ * ace/OS.h: Added support for compilers (like NT) that don't
+ support "mode masks" (these are used to give symbolic names for
+ file creation modes passed to open() and creat().
+
+ * ace/SString.cpp: Added Tim's new copy constructor code for
+ SString.cpp. This doesn't appear to be strictly necessary , but
+ it is more explicit and therefore it useful.
+
+ * ace/Map_Manager.cpp: Fixed a bug in Map_Manager that was failing
+ to call the placement new operator for every element in the map
+ that was dynamically created by the allocator().
+
+ * ace/Synch_T: Added Tim's new ACE_TSS implementation. This
+ version is more flexible than the old one.
+
+Mon Jan 22 00:03:24 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Time_Value.h: changed a few minor things to get this
+ compiling again on NT. Thanks to Irfan for helping with this.
+
+ * ace/Synch_Options: Changed all the "accessor" methods to be
+ const member functions at the request of Irfan. I just know
+ this is going to cause const cancer... ;-)
+
+ * ace/Acceptor and Connector: Changed all parameters that take
+ ACE_Synch_Options & to take const ACE_Synch_Options & at the
+ request of Irfan.
+
+ * ace/OS.i (uname): Added rudimentary support for the uname()
+ function for Windows NT. If anyone has suggestions on how to
+ fill in all these fields portably please let me know!
+
+ * ace/Connector.h: Changed a stray -1 to ACE_INVALID_HANDLE.
+ Thanks to Irfan for noticing this.
+
+ * ace/Profile_Timer.h: Added the keyword "public" to handle one
+ arm of the conditional compilation that is only exercised on
+ NT... Thanks to Irfan for noticing this.
+
+ * ace/OS.i (mutex_init): Removed the call to
+ pthread_mutexattr_setkind_np() it isn't in the final POSIX
+ standard.
+
+ * ace/Reactor.cpp (unbind): Removed the ACE_MAX3 template function
+ from OS.h and inlined its only use in the Reactor. This was
+ causing problems with some C++ compilers. Thanks to Mark Zusman
+ <marklz@topaz.technion.ac.il> for reporting this.
+
+ * ace/OS.i: Fixed a number of omitted return results in
+ gettimeofday() and ctime_r() that were masked by the
+ ACE_OSCALL_RETURN macros. Thanks to Mark Zusman
+ <marklz@topaz.technion.ac.il> for reporting these.
+
+ * ace/config-linux.h: Added new symbolic constants to handle the
+ fact that Linux seems to lack recvmsg(), sendmsg(), msync(), and
+ madvise(). Thanks to Neil Cohen for noticing this.
+
+ * include/makeinclude: Fixed all the *-orbix.GNU files to use
+ $(ORBIX_ROOT)/lib rather than $(ORBIX_ROOT)/ace. Thanks to
+ Pramod Kumar Singh <pramod@saturn.miel.mot.com> for reporting
+ this.
+
+ * ace/config*.h: Changed all typos of the form ACE_HAS_SVSV_IPC to
+ ACE_HAS_SYSV_IPC. Thanks to Alexandre Karev
+ <akg@na47sun05.cern.ch> for reporting this!
+
+ * ace/OS: Changed the order of parameters passed to thr_create()
+ to be consistent with all the spawn() and spawn_n() usages in
+ ACE. Thanks to Chris Lahey for pointing this out.
+
+Sun Jan 21 15:06:15 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace: Added a new "priority" parameter to the spawn() and
+ spawn_n() methods in ACE_Thread and ACE_Thread_Manager. This
+ allows us to pass the priority on down to thr_create(). Thanks
+ to Chris Lahey for pointing this out. Note that this change
+ required reordering the parameters so that the stack and
+ stack_size parameters now come last for these methods. Since
+ those are not likely to change much this is a good place to put
+ them (i.e., at the end).
+
+ * ace/Thread.i (spawn_n): Added a new overloaded spawn_n() method
+ that accepts an array of thread_t's to be filled in. This is
+ useful if you want to know the thread IDs of any threads
+ created.
+
+ * Changed ACE_OS::signal() to ACE_Sig_Action across all of ACE to
+ be portable to pthreads implementations. Thanks to Chris Lahey
+ for pointing this out.
+
+ * ace/OS: Added a new set of OS C++ wrappers for POSIX pthread
+ cancellation routines. Thanks to Chris Lahey for these.
+
+ * ace/Thread: Added a new set of ACE C++ wrappers for POSIX
+ pthread cancellation routines. Thanks to Chris Lahey for
+ these.
+
+ * ace/Map_Manager: Revised the Map_Manager::bind method. This has
+ now been split into bind() and rebind() methods. The bind()
+ method is very simple -- if you try to bind() to something that
+ already exists you fail. The rebind() method allows you to
+ atomically update existing values in a map. It also gives you
+ back the existing values so that you can delete them if
+ necessary. The Local_Name_Space::bind() and rebind() methods
+ have been updated to use this new interface.
+
+ * ace/Malloc_T.cpp (find): Fixed a typo -- find() should have set
+ its pointer parameter to node->pointer_, rather than
+ node->name_! This bug was revealed during testing of the ACE
+ Name Server.
+
+ * ace/Local_Name_Space.cpp: Fixed bugs with computation of the
+ size of ACE_NS_Strings -- they needed to count the wchar_t's
+ correctly, along with several other minor fixes. These were
+ revealed during testing of the ACE Name Server.
+
+ * ace/SString.cpp: Fixed several bugs that prevented the
+ assignment operators from working correctly. These were
+ revealed during testing of the ACE Name Server.
+
+Sat Jan 20 08:33:54 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Local_Name_Space.cpp (shared_bind): The args to to the
+ NS_String constructors were not in the correct order:
+
+ wchar_t *value_rep = (wchar_t *) (ptr);
+ wchar_t *name_rep = (wchar_t *) (ptr + name_len);
+ ACE_NS_String ext_id (name.fast_rep (), name_rep, name_len);
+ ACE_NS_String int_id (value.fast_rep (), value_rep, value_len);
+
+ They should be:
+
+ ACE_NS_String ext_id (name_rep, name.fast_rep (), name_len);
+ ACE_NS_String int_id (value_rep, value.fast_rep (), value_len);
+
+ Thanks to Irfan for noticing this.
+
+ * ace/OS.h: defined the following in ACE_OS:
+
+ #define MS_ASYNC 0
+ #define MS_SYNC 0
+ #define MS_INVALIDATE 0
+
+ under NT so that calls to mmap will port transparently. Thanks
+ to Irfan for suggesting this.
+
+Thu Jan 18 16:25:16 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace: Added a new symbol that indicates if the platform supports
+ the new BSD sin_len field of inet_addr.
+
+ * ace/OS: added new support for AIX gethostbyaddr_r(),
+ gethostbyname_r(), and getservbyname_r(). This fixes some
+ problems caused by improper choice of buffer size. Also changed
+ the INET_Addr.cpp file to use these new changes. Thanks to
+ Chris Lahey for recommending these changes.
+
+Wed Jan 17 01:10:48 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/OS.i (printf): the ACE_OS::printf() function did not work.
+ Needed to call vprintf() internally, not printf. Thanks to
+ Chris Lahey for pointing this out.
+
+ * Released version 4.0.
+
+ * include/makeinclude: added the -lgen library to all the
+ platform_sunos5.*.GNU files.
+
+ * ace/Memory_Pool.cpp: removed the INLINE macros in Memory_Pool.cpp.
+ Thanks to Alexandre Karev (karev@vxcern.cern.ch) for noticing
+ this!
+
+ * ace/Malloc_T.cpp: moved the comment "Ce n'est pas une catst"
+ outside of the macro ACE_NEW_RETURN. The prepocessor truncates
+ the macro expansion when it encounters the comment. Thanks to
+ Greg Baker <GBaker@p01.az15m.iac.honeywell.com> for pointing
+ this out.
+
+ * ace/Reactor.cpp (close): added "return 0" at the end of the
+ close member function. The function is prototyped to return an
+ int and the compiler expects a return outside of the if clause.
+ Thanks to Greg Baker <GBaker@p01.az15m.iac.honeywell.com> for
+ pointing this out.
+
+ * ace/Stack.cpp (free_all_nodes): Removed a spurious ACE_OS that
+ was stuck on the front of ::delete. Thanks to Greg Baker
+ <GBaker@p01.az15m.iac.honeywell.com> for pointing this out.
+
+ * ace/OS.i: Added extern "C" to the prototype for syscall in OS.i.
+ Without it, you get unresolved symbols at link time. Thanks to
+ Greg Baker <GBaker@p01.az15m.iac.honeywell.com> for pointing
+ this out.
+
+ * ace/Message_Queue.cpp: Changed the return values for
+ enqueue_head(), enqueue_tail(), dequeue_head(), and
+ peek_dequeue_head() to return the number of messages that are
+ still on the queue. This helps some algorithms perform better
+ and avoid blocking unnecessarily. Thanks to Alex V Maclinvosky
+ <alexm@teltrunk1.tait.co.nz> for suggesting this...
+
+ * ace/Synch_T.cpp (ACE_Condition): Fixed a bug in
+ ~ACE_Recursive_Lock and ~ACE_Recursive_Mutex that was causing
+ the destructor to be called twice (once implicitly and once
+ explicitly). Thanks to Chris Lahey for pointing this out.
+
+Mon Jan 15 12:44:29 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace: Created a new config symbol called ACE_HAS_ALLOCA_H. This
+ is required to differentiate between AIX and other versions of
+ UNIX. Thanks to Chris Lahey for pointing this out.
+
+ * ace: moved config-hpux.h to config-hpux-9.x.h in anticipation of
+ the changes required to handle HP/UX 10.0!
+
+Sun Jan 14 23:38:23 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/OS.h (ACE_MAX3): Fixed the definition of ACE_MAX3 (it needed
+ a return value of template type T). Thanks to Mark Zusman
+ <marklz@topaz.technion.ac.il> for noticing this.
+
+ * ace: Added a new section to all the template files called
+ ACE_TEMPLATES_REQUIRE_SPECIALIZATION to deal with the screwy GNU
+ G++ semantics that are required if you *don't* have the template
+ repository patches. Thanks to Mark Zusman
+ <marklz@topaz.technion.ac.il> for this.
+
+Fri Jan 12 00:47:57 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Time_Value.h: #included <pthreads.h> to the Time_Value.h
+ class so that it would be the first file included. This fixes a
+ problem with AIX. Thanks to Chris Lahey for reporting this and
+ suggesting the fix.
+
+ * ace: Fixed a braino with the #ifdefs in SPIPE_Stream and
+ SPIPE_Acceptor. These were checking for ACE_WIN32 rather than
+ ACE_HAS_STREAM_PIPES. Naturally, that failed on versions of
+ UNIX (e.g., Linux) that lack STREAM pipes! Thanks to Neil Cohen
+ for taking time out of fighting blizzards to report this!
+
+ * ace/Svc_Handler: Added a new method for handle_timeout, which
+ shuts things down by default. Thanks to Irfan for suggesting
+ this.
+
+ * Fixed a minor problem caused when Tim added the Double-Check
+ pattern to ACE_ODB...
+
+Thu Jan 11 01:48:02 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * Integrated AIX fixes from Chris Lahey <clahey@ix.netcom.com>.
+ These should allow ACE to build correctly using the AIX compiler
+ and it's screwy template mechanisms!
+
+ * ace: Fixed some minor bugs that caused problems when compiling
+ with G++.
+
+Wed Jan 10 00:17:05 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Trace.cpp: Fixed a typo that was causing problems when using
+ ACE_TRACE (we were ending up with recursive tracing in the
+ ACE_Trace class!). Thanks to Detlef for noticing this.
+
+ * ace/ACE.cpp: Moved methods from ACE.i to ACE.cpp and removed the
+ INLINE macro to deal with order of include problems with GNU
+ G++.
+
+Tue Jan 9 19:00:41 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Task.i (flush): Added a check to make sure that msg_queue_
+ != 0 before trying to close() the queue. This solves a problem
+ if the queue has already been closed. Thanks to Alex V
+ Maclinvosky <alexm@teltrunk1.tait.co.nz> for reporting this...
+
+ * tests/ASX/Event_Server/Event_Server: Fixed minor bugs in
+ Supplier_Router.cpp and Consumer_Router.cpp -- I was checking
+ for this->getq (mb) > 0 rather than this->getq (mb) >= 0.
+ Thanks to Alex V Maclinvosky <alexm@teltrunk1.tait.co.nz> for
+ noticing this...
+
+ * ace/Synch_T.h: Commented out the ACE_ALLOC_HOOK stuff. This is
+ causing order-of-include problems on HP/UX. Also moved the
+ ACE_Null_Condition::wait() method to Synch_T.i to avoid the same
+ problem. Thanks to Greg Baker
+ <GBaker@p01.az15m.iac.honeywell.com> for pointing this out.
+
+Sun Jan 7 18:57:49 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Makefile: Added the Dump file to ACE. Thanks to Tim for
+ fixing this up to make it ready for prime time.
+
+ * Thanks to Craig Rodrigues <rodrigc@ecf.toronto.edu> for sending
+ me a new version of psnup that *finally* fixes the nasty
+ problems with "4-up" printing of postscript! This makes it much
+ easier to distribute ACE documentation...
+
+Sun Jan 7 18:31:07 1996 Tim H. Harrison (harrison@merengue.cs.wustl.edu)
+
+ * ace: Used the "Double-Check" pattern to eliminate potential race
+ conditions when using Singletons in multi-threaded programs.
+ Classes affected included ACE_[MS]T_CORBA_Handler, Name_Options,
+ Trace, and ACE_ODB.
+
+Fri Jan 5 00:03:29 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/OS.i: Added the following to OS.i:
+
+ #if defined (ACE_LACKS_SYSCALL)
+ int syscall (int, ACE_HANDLE, struct rusage *);
+ #endif /* ACE_LACKS_SYSCALL */
+
+ This should fix some problems with HP/UX. Thanks to Walt Akers
+ (akers@cebaf.gov) for pointing out the problem.
+
+ * ace/Handle_Set: Fixed the Handle_Set conversion operator so that
+ it returns fd_set * rather than ACE_FD_SET_TYPE *. Thanks to
+ Walt Akers (akers@cebaf.gov) for pointing out the problem.
+
+ * ace/Time_Value.h: I think I've fixed the problem with the order
+ of #includes with respect to POSIX and SVR4 time. The trick was
+ to put this test in ace/Time_Value.h and then to make sure that
+ the ace/config.h file was included at this point! Also changed
+ the symbol from ACE_HAS_POSIX_TIMERS to ACE_HAS_POSIX_TIME to be
+ more accurate.
+
+Thu Jan 4 23:16:59 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/OS.i (gettimeofday): Changed the implementation of
+ gettimeofday() to use the ::_ftime call rather than the more
+ complex ::GetSystemTime(), ::SystemTimeToFileTime() duo.
+
+Thu Jan 4 9:32:38 1996 Chris Lahey (clahey@ix.netcom.com)
+
+ * ace/config-aix.h: added #define ACE_TEMPLATES_REQUIRE_SOURCE
+ to make ACE work with AIX C++ compiler.
+
+ * include/makeinclude/platform_aix.GNU:
+
+ Added -qtempinc to the CPPFLAGS
+ Removed the PIC= definition completely
+
+ * ace/Task.h: ACE_Task::svc() should not be declared as a pure
+ virtual, removed = 0.
+
+ * ace/Map_Manager.cpp: in trybind() member function, the line
+ int_id = ss.int_id_;
+ should be:
+ int_id = search_structure[index].int_id_;
+
+Thu Jan 4 01:23:38 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/Map_Manager.cpp: Fixed a braino in Map_Manager -- didn't
+ need the <index> parameter to shared_bind(). Thanks to Tim for
+ finding this!
+
+ * ace/Log_Msg.cpp (instance): Tim Harrison did a noble service to
+ humanity by fixing a potential race condition in the instance()
+ Singleton of ACE_Log_Msg.
+
+Wed Jan 3 00:49:57 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace: Made some minor changes to fix portability problems with
+ SGI. Fortunately, this should also fix some other problems with
+ HP/UX another other non-thread platforms.
+
+ * ace/ACE.cpp (format_hexdump): Added Todd Montgomery's amazing
+ "format_hexdump" method to class ACE.
+
+Tue Jan 2 20:47:57 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/SV_Semaphore*: updated the interface of the _Simple and
+ _Complex System V semaphore wrappers to include the _read() and
+ _write() forms of acquire() and tryacquire(). Note that I've
+ implemented these as calls to acquire() and tryacquire(), so
+ they don't add any extra behavior. This is needed for interface
+ conformance with other forms of ACE synchronization mechanisms.
+
+ * ace/Time_Value.h: Changed the header to #include <sys/time.h>
+ in order to work around nasty "order of include" problems.
+
+ * tests: Created a new directory called Win32. This contains test
+ programs that This directory contains test programs that have
+ been compiled and tested successfully under Windows NT. As we
+ get further along, we'll move this stuff into the general ACE
+ $WRAPPER_ROOT/tests directory (since of course all ACE programs
+ will run without any problems under Win32, right? ;-)). See
+ the ./tests/Win32/README file for instructions on how to build
+ these tests.
+
+ * ace/Reactor.h: Moved the ACE_Handler_Repository out of the
+ ACE_MT_SAFE section of the code. This was a "typo." Thanks to
+ Walt Akers <akers@cebaf.gov> for reporting this.
+
+Mon Jan 1 01:18:12 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
+
+ * ace/ACE.i: Moved the recv_n() and send_n() methods from ACE.cpp
+ into ACE.i and set things so that if __INLINE__ is set then
+ we'll inline those too!
+
+ * ace: Irfan and I got the first major part of the Win32 to work
+ finally! We made two socket programs (client and server) that
+ talked to each other and to UNIX. Things are really starting to
+ take shape!