diff options
author | levine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1996-10-21 21:41:34 +0000 |
---|---|---|
committer | levine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1996-10-21 21:41:34 +0000 |
commit | a5fdebc5f6375078ec1763850a4ca23ec7fe6458 (patch) | |
tree | bcf0a25c3d45a209a6e3ac37b233a4812f29c732 /ChangeLog-96a | |
download | ATCD-a5fdebc5f6375078ec1763850a4ca23ec7fe6458.tar.gz |
Initial revision
Diffstat (limited to 'ChangeLog-96a')
-rw-r--r-- | ChangeLog-96a | 3888 |
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! |