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-95 | |
download | ATCD-a5fdebc5f6375078ec1763850a4ca23ec7fe6458.tar.gz |
Initial revision
Diffstat (limited to 'ChangeLog-95')
-rw-r--r-- | ChangeLog-95 | 4179 |
1 files changed, 4179 insertions, 0 deletions
diff --git a/ChangeLog-95 b/ChangeLog-95 new file mode 100644 index 00000000000..429e5681fdc --- /dev/null +++ b/ChangeLog-95 @@ -0,0 +1,4179 @@ +Sun Dec 31 01:02:01 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * ace/OS (mmap): Added a new parameter to the argument list for + mmap(). This parameter is an ACE_HANDLE * and is used in the + Win32 implementation, which requires CreateFileMapping to open a + new HANDLE. This handle is passed back to the caller, which is + then responsible for freeing it... I'll probably need to modify + the ACE_Mem_Map class to manage this new handle for the WIN32 + version. + + * ace: Updated all the SPIPE files in preparation to porting them + to Windows NT, where they will be implemented using Win32 Named + Pipes! + + * ace/Typed_SV_Message: Fixed a mysterious braino where the method + definitions for Typed_SV_Message were actually within + Typed_SV_Message_Queue.cpp. I'm not sure why this happened, but + it's clearly been this way for eons... Also, changed the name + of the method "max" to "max_size" to avoid conflicts with macros + on Windows NT... + + * ace: Added a new config symbol: ACE_HAS_SYSV_IPC. If this is + *not* set (e.g., Win32) then don't try to compile any of the + System V IPC mechanisms (e.g., shared memory, message queues, + semaphores). + + * ace/Malloc: Reimplemented the Malloc-family to factor out common + code. Also added a new method called "trybind" which atomically + tries to bind a new void *pointer to a char *name. If there is + no name with the same value, the bind succeeds. Otherwise, the + bind "fails", but returns the existing pointer. + + * ace/Map_Manager: Reimplemented the Map_Manager to factor out + common code. Also added a new method called "trybind" which + atomically tries to bind a new int_id to an ext_id. If there is + no ext_id with the same name, the bind succeeds. Otherwise, the + bind "fails", but returns the existing int_id. + + * ace/Memory_Pool.cpp: Commented out all the diagnostic messages + in the various ACE_*_Memory_Pools. Now that we're actually + using this within ACE, they were distracting. + + * ace/CORBA_Handler.cpp (ACE_ST_CORBA_Handler): Gave iterations_ + an initial value of "5" for backwards compatibility. Thanks to + Irfan for doing this. + + * ace/Map_Manager.cpp (ACE_Map_Manager): Fixed some more braino in + the constructors of Map_Manager. During the recent changes I'd + forgotten to initialize the Map_Manager's instance variables to + 0. Thanks to Irfan for finding this out the hard way... ;-) + + * ace/OS.i (gettimeofday): Added a WIN32 implementation of + gettimeofday. This is pretty nasty, but it should centralize + all of this processing in one place in ACE! + +Sat Dec 30 00:50:20 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * ace/Timer_Queue: Removed the current_time() method from the + Timer_Queue class. All uses will be replaced with calls to + ACE_OS::gettimeofday(). Not only does this factor out more + code, but it is also reentrant! + + * ace/ACE.cpp (handle_timed_accept): Consolidated code so that + select() is always used, rather than poll(). + + * ace: Generalized the ACE file locking wrappers (both at the + Synch-level and the ACE_OS class level) to enable them to lock + arbitrary regions (aka "records") of a file. Before, they could + only lock the entire file (which remains the default behavior). + This new behavior works for both NT and UNIX. + + * ace/Synch: Removed the definition and use of the + ACE_SYNCH_ERROR_RETURN macro from all the ACE Synch* methods. + This behavior has been integrated into the ACE_OS class instead + since it cleans up lots of code that would otherwise have been + hard to write. + + * ace/INET_Addr.cpp (get_host_name): Fixed a bug that arose by + trying to use the reentrant version of gethostbyaddr all the + time. In order to fix this, I've added a new get_host_name() + method that allows the caller to supply a buffer for the + hostname. + + * ace: Cleaned up all the POSIX_TIMER junk that permeated ACE. + Now all platforms will have the POSIX timer structures (e.g., + timestruc_t and timespec), though only those that actually + support nano-second timing will be able to do anything useful + with this... As part of this cleanup, the poll, select, and + cond_timedwait method in ACE_OS now take ACE_Time_Value * rather + than int, timeval *, and timestruc_t, respectively. This + *greatly* cleans up the clutter throughout the rest of ACE. + + * ace/ACE: Added two new methods called tv2msec and msec2tv that + converts ACE_Time_Value format into millisecond format and vice + versa. This will make it easier to port code between NT and + UNIX. + + * ace/Reactor: Removed the code in the Reactor that previously + allowed it to be resized after it had been initialized. This + code no longer was used due to the recent enhancements that + ensure the Reactor is only initialized once per-process. + + * ace/Reactor: Modified the Reactor so that it now compiles on NT. + It doesn't work yet, but at least it compiles! + + * ace/Reactor: Moved the "max3" method from the Reactor to OS.h, + where it has become a template function usable throughout ACE. + + * ace/OS.cpp: Added extern "C" before the NT implementations of + readv() and writev(). + + * ace/OS.i: Fixed the declaration of ::readv() and ::writev() for + cases where the OS doesn't provide them natively. + + * ace/Event_Handler: Modified handle_signal() to take an int + rather than an ACE_HANDLE. The old way broke under NT... + + * ace: Made lots of minor changes to resolve signed int + vs. unsigned int mismatches. Thanks to the MSVC++ 4.0 compiler + for pointing these out. At least it's good for + something... ;-). + +Fri Dec 29 15:01:10 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * ace/ACE.cpp (handle_timed_accept): Reimplemented the core + select() loop to make the code portable to Win32. + + * ace/Map_Manager.cpp (ACE_Map_Manager): Fixed a minor bug caused + by recent changes (forgot to initialize max_size_ in the + constructor...). + + * Updated all the manual pages to reflect the latest changes. + + * ace/ACE.cpp: Fixed up the ACE class so that all of the methods + should compile on both Windows NT and UNIX! + + * ace/OS: Moved the get_file_size() method from class ACE and put + it into class ACE_OS, where it's been renamed to filesize(). + This is really more of an "OS" function, e.g., it's supported on + Win32 directly. + + * ace/OS.cpp: added readv() and writev() implementations for those + platforms (e.g., Windows NT) that require them. + + * ace/Makefile: Added a new regex to the Svc_Conf_l.cpp target + that will substitute <stdio> for <unistd>. This should solve a + portability problem with Windows NT... + + * ace/Malloc: Modified the sync() and protect() methods to use + void * rather than char *. This is now consistent with the OS + classes. + + * ace/OS: Changed things so that all the mmap() related OS + wrappers use void * in their external interface. Any + discrepancies between platforms are now dealt with internally, + in the implementation of the methods. Thanks to Chris Lahey + (clahey@ix.netcom.com) for suggesting this. + + * ace/Local_Name_Space: Modified how ACE_NS_String is used to + instantiate ACE_Map_Manager in order to work around problems + with AIX C++. Thanks to Chris Lahey (clahey@ix.netcom.com) for + reporting this. + + * ace/Synch.i: Added a definition for ACE_RW_Mutex::acquire(). + +Fri Dec 29 00:34:16 1995 Chris Lahey (clahey@ix.netcom.com) + + * ace/OS.h: Changed the #ifdef for ACE_HAS_COMPLEX_LOCKS to + ACE_HAS_COMPLEX_LOCK. + + Changed prototypes for ACE_OS:mprotect(), msync(), and munmap() + to accept ACE_MMAP_TYPE for their first arg. The AIX versions + of these calls all expect void * for their pointer variable. + Note that madvise() takes a caddr_t for its 1st arg and + therefore does not need to be altered. (See related changes in + OS.i and Mem_Map.i) + + Changed prototype for ACE_OS::getsockname(), arg3 to int * (See + related change in OS.i) + + Changed prototype for ACE_OS::setsockopt(), arg4 to const char * + and arg 5 to int (See related change in OS.i) + + * ace/OS.i: Changed function definition for ACE_OS::mprotect(), + msync(), and munmap() to accept ACE_MMAP_TYPE as their 1st arg. + + The following changes relate to the inconsistencies in the + sockets calls on AIX. I thought it would make more sense to + leave the public interfaces alone and then handle the + differences internally. That way it won't break any exisiting + code. + + Changed function definition for ACE_OS::getsockname() to accept + arg3 as int *. Made similar changes in ACE_OS::setsockopt() - + change definition to accept const char * for arg4 and int for + arg5. Add the following code at the start of the function: + Also made changes to ACE_OS::recvfrom() - change arg 6 back so it is + int *. + + * ace/Mem_Map.i: In ACE_Mem_Map::advise(), cast 1st arg to + ACE_OS:madvise() to (caddr_t). + + * ace/Memory_Pool.cpp: In ACE_MMAP_Memory_Pool::acquire(), make + cast to char * in the return statement. In + ACE_MMAP_Memory_Pool::handle_signal(), also make same cast in + the ACE_DEBUG statement near the top of the function. + + * ace/Reactor.cpp and ace/Reactor.h: ACE_Reactor::handler_i() + doesn't return properly if *eh != 0. Remove last "else" so + function always returns 0 if handler != 0. + + In ACE_Reactor::owner(), we need to change signature since + thread_t is not an integer. This has been changed to int + ACE_Reactor::owner(thread_t *t_id); The last two lines have been + changed to: *t_id = this->owner_; return 0; + + * ace/Synch.cpp: In ACE_Condition_Mutex::wait(), the call to + cond_timedwait() does not exist, but ACE_OS::cond_timedwait() + does exist. It takes the same arguments. + + * ace/Synch.h and ace/Synch_T.h: At the end of both files, before + the #define INLINE check for this define's existence to avoid + causing compilers to choke. + + * ace/Mem_Map.i: In ACE_Mem_Map::operator(), the return statement + looked very odd. In the assignment to addr, why is the ", 0" in + the statement? + +Fri Dec 29 00:34:16 1995 Douglas C. Schmidt (schmidt@lambada.cs.wustl.edu) + + * ace: Fixed up many minor problems with the various types of + Shared_Memory wrappers. This mostly entailed changing from char + * to void * to be more consistent with the other parts of ACE. + In addition, I now only include the *.i files if __INLINE__ is + enabled. + + * ace/Memory_Pool.cpp (map_file): Fixed a minor bug by enabling + MAP_FIXED if we're trying to map a file using a fixed address. + +Thu Dec 28 18:39:16 1995 Douglas C. Schmidt (schmidt@merengue.cs.wustl.edu) + + * ace/Local_Name_Space.cpp: Finished implementing changes to the + ACE_Malloc stuff and the Local_Name_Space that Irfan had begun + last semester. + + * ace/SString.cpp: Added new optimizations to the assignment + operators of the ACE_[WCS]String classes to avoid + freeing/allocating memory if the current size is large enough. + + * ace/SString: Added copy constructors... + + * ace/Local_Name_Space.cpp: Modified the implementation of bind() + to avoid a race condition. + + * ace/Map_Manager.cpp (bind): Changed the semantics of bind() so + that callers can control whether or not INT_IDs are reassigned. + Also changed things so that callers can get back the existing + value if they choose not to reassign. + + * ace/SString.cpp: Removed the "P" (persistent) versions of all + these classes and merged them into the default versions. The + persistence is now determined by the type of allocator passed in + as a parameter to the constructor (or by using the "default" + allocator that is accessible via + ACE_Service_Config::allocator()). + + * ace/Map_Manager.cpp: Removed the "P" (persistent) versions of + all these classes and merged them into the default versions. + The persistence is now determined by the type of allocator + passed in as a parameter to the constructor (or by using the + "default" allocator that is accessible via + ACE_Service_Config::allocator()). + + * ace/Malloc_T: Modified the bind() algorithm so that it will + allow the caller to determine whether duplicates are allowed or + not... Also changed things so that callers can get back the + existing value if they choose not to allow duplicates. Irfan + questions the sanity of this... ;-) + + * ace/Synch: To be consistent, added acquire_write and + acquire_read methods to ACE_Mutex. These are useful for cases + where we are going to be parameterizing classes like ACE_Malloc + with some type of mutex wrapper (e.g., ACE_RW_Mutex, ACE_Mutex). + + * ace/Malloc_T.cpp (calloc): Added a new method called "calloc" + that will not only allocate the memory dynamically, but will + also give it an initial value (e.g., '\0'). + +Thu Dec 28 01:10:43 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * ace/OS.i: Modified the implementation of the TLI methods so that + they are conditionally compiled away if the platform doesn't + support TLI... Thanks to Neil Cohen for pointing out the need + for this... + + * ace/OS.i: Modified the implementation of dlopen() and dlsym() to + account for limitations with SunOS 4.x... + + * ace/Service_Repository.cpp: Modified this class to use the + ACE_OS::dlclose method. + + * ace/Parse_Node.cpp: Modified this class to use the + ACE_OS::dlopen and ACE_OS::dlsym methods. + +Wed Dec 27 23:25:03 1995 Jesper S. M|ller (stophph@diku.dk) + + * Added appropriate flags in OS.h for successful inclusion of + several header files, such as Malloc.h and friends. Also added + mprotect to ACE_OS for Win32 to avoid linker errors. + + * Added a return value (from map_file) to + ACE_MMAP_Memory_Pool::handle_signal. The compiler was + complaining. Likewise on + ACE_MMAP_Memory_Pool::commit_backing_store (there 0 seemed like + the correct off-the-end return value). + + * Removed include of some SV semaphore file, if not needed in + Malloc.h. Worse for Memory_Pool.h, since the SV_Semaphore + wrappers consistently differ completely from the other + synchronization routines. I guess we'll need some variant of + ACE_Process_Semaphore that takes an integer as a key instead of + a string, and does not perform automatic init/destroy. + + * Also upgraded fd's from int to ACE_HANDLEs and changes -1 to + ACE_INVALID_HANDLE where appropriate. + + * By help of aggresive preprocessor conditionals, made Handle_Set + work with Win32. There is a fd_set abstraction with appropriate + FD_xxx macros for WinSock, and it requires no sync'ing. The + Handle_Set_Iterator should also work. The good looks of + Handle_Set was impaired, though. Right now, the trigger is the + ACE_WIN32 flag, although it should be something like + ACE_FD_SET_USES_BITS for the unix approach, or like + ACE_FD_SET_USES_VECTOR for the WinSock approach. + + * Reactor almost compiles now, but not quite: Handlers are + addressed by fd, this is no longer possible - what a mess - we + need to step through the handle indices somehow. This will + likely get into some nasty quadratic complexities when iterating + the handles to find the event_handler for each file + handle. Mabye we can circumvent this with a hash table lookup + for those opaque handles. + + * There was a problem with the Svc_Conf.l.cpp and the + Svc_Conf.y.cpp and the extremely lame MSVC++ 2.0. I had to + rename them to Svc_Conf_y.cpp, etc. Awful! + + * Added code to inquire the 'host' name for Win32 in the ACE_Client_Id + class. Another candidate for ACE_OS. + + * About 60 or so ACE .cpp files compile now, which reminds me that + I'll be working on some precompiled header scheme soon, since it + takes for ever and ever, even on my 32meg system with pretty + good SCSI drives. Mabye it's because I'm only running a 66MHz + i486 DX2 (yawn). + + * Dozens of other changes have been made to various files, all + pertaining to int vs. ACE_HANDLE. In Service_Manager.h, a signal + number was an ACE_HANDLE, but just close by, some fd's were + ints. Fixed that, too. + +Sat Dec 23 14:15:16 1995 Jesper S. M|ller (stophph@diku.dk) + + * I've also grouped the .i and .cpp functions by class, + and #if'ed the sbrk and SysV pools out, since + Win32 cannot support those. + + * Added 'inline' to day accessor functions in Date_Time. + + * Two things that missed me in Trace.cpp: + 1) The inclusion order was so that I couldn't + build Trace.o, since it didn't know the MALLOC_HOOK thing. + I moved the #include of Trace.h down below that of ACE.h. + 2) The declaration and definition of the ACE_Trace constructor + differed by a const, which I added. + 3) When linking, multiple symbols were found for some + OS calls like mutex_init, corresponding to the larger + OS Win32 functions. I has ACE_INLINED_OS_CALLS off, + so sometimes the OS functions were inlined, sometimes + not. + I disabled the inline hack in Trace.cpp for WIN32 for now. + This seemed to resolve matters. + + * There was a major problem in OS.i, where Synch.h was needed for + mutex support (in conjunction with TSS info linked list). I + chose to make thr_keycreate and some others non-inlined. + + * More 'is-it-a-handle-or-success' confusion in SOCK*.* Changed + ACE_SOCK_Dgram to use int status. Changed ACE_SOCK_CODgram to + use int status. Changed ACE_LSOCK to use int status. Also + changed a few derived classes + +Fri Dec 22 14:03:15 1995 Douglas C. Schmidt (schmidt@lambada.cs.wustl.edu) + + * ace/OS.h: Added a new type for rwlock_t for platforms that don't + support threading... Thanks to Neil Cohen for reporting this. + + * ace: Merged in all of Jesper's changes for NT and Chris Lahey's + changes for AIX. + + * ace: Merged tli.h into OS.h to avoid name conflicts on Win32. + + * Fixed duplicated names where case is the only difference. + ace/thread.cpp + ace/Thread.cpp + ace/TLI.h + ace/tli.h + apps/Token_Server/mutex_example/simple_token_client.cpp + apps/Token_Server/mutex_example/Simple_Token_Client.cpp + apps/Token_Server/script_example/scripting_token_client.cpp + apps/Token_Server/script_example/Scripting_Token_Client.cpp + tests/IPC_SAP/SOCK_SAP/FD-client.cpp + tests/IPC_SAP/SOCK_SAP/fd-client.cpp + tests/IPC_SAP/SOCK_SAP/FD-server.cpp + tests/IPC_SAP/SOCK_SAP/fd-server.cpp + +Wed Dec 20 22:26:24 1995 Jesper S. M|ller (stophph@diku.dk) + + * FIFO.cpp: One last comparison of 'open' return status where and + ACE_INVALID_HANDLE should be changed to -1. + + * One more last wrong comparison in FIFO_Recv_Msg.cpp. + (Never say never again!) + + * Put an appropriate conditional around the inclusion of + Handle_Set.h for ACE_WIN32 (for now). + + * Introduced a few backslashes in the macros of Dump.h that were + somehow left out... Had to add a really stupid constructor for + struct Tuple. I haven't a clue why MSVC++ wants this! Replaced + 'return ACE_ODB;' with 'return ACE_ODB::instance_;' in the + Singleton access function. + + * Added a constructor for ACE_ODB. It may be private, but it still + needs to be defined... + + * Stack and Set compiles fine for Win32 (not surprisingly) + + * If'ed out the guts of ACE_IPC_SAP enable/disable calls for + Win32, since async IO doesn't work that way on there. + + * Event_Handler now uses ACE_INVALID_HANDLE for default args. + + * SOCK compiles except for the ACE_SOCKET <> ACE_HANDLE + problem. Refer to issue #3 above. + + * We're swamping the ace directory with .mak files. I used the + winntace.mak file, which is compilable and linkable. + +Thu Dec 21 15:37:42 1995 Douglas C. Schmidt (schmidt@merengue.cs.wustl.edu) + + * ace: Greatly simplified the include files so that (1) compilers + are faster and (2) the ACE_Trace mechanism works correctly. + + * ace/Trace: Modified the ACE_Trace_TSS class so that it is no + longer a template. This was overkill since we know the type + head of time (i.e., ACE_Trace_State). + + * ace: Added a number of new changes to ACE to make things work on + AIX. Thanks to Chris Lahey <clahey@ix.netcom.com> for these + changes. + + * ace/Thread_Manager.cpp: Removed the get_max_thr_id() method + since it was not portable to NT or POSIX pthreads. Nothing in + ACE depended on it anyway... + + * ace/OS: Added a new static data member called NULL_thread that + is a "zero'd" out thread id. This is necessary to deal with the + POSIX pthread implementation of a thread id, which is not always + implemented as a number... By using this new approach, all the + special-case code in Synch.cpp disappears... + + * ace/OS: Added a new method to class ACE_OS called thr_equal() + that masks the differences between comparing thread ids using + the threading libraries. This simplifies the code in Synch.cpp + and Reactor.cpp. + + * ace: Updated all uses of mmap() to use the new ACE_MMAP_TYPE + typedef. This deals with the fact that different versions of + UNIX define mmap() inconsistently (e.g., some use void * and + some use char *...). + + * ace: Removed testconfig.h and merged all of those #defines into + OS.h. This centralizes changes in one place and also eliminates + the need for ./apps and ./tests to include extraneous files... + + * ace/testconfig.h: Changed all uses of 0666 to ACE_DEFAULT_PERMS. + Also, removed all PERMS enums and substituted ACE_DEFAULT_PERMS + instead. + +Wed Dec 20 17:29:55 1995 Tim H. Harrison (harrison@merengue.cs.wustl.edu) + + * Rewrote the Token deadlock detection algorithm. It now performs + "best-effort" detection of deadlock for remote acquires and + complete deadlock detection for local acquires. + +Wed Dec 20 02:37:39 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * ace/OS.h: The select() system call has its own include file on + AIX: <sys/select.h>. We can wrap the #include with a variable + #if defined (ACE_HAS_SELECT_H). + + * include/makeinclude/platform_aix.GNU: Added new support for AIX. + Thanks to Chris Lahey <clahey@ix.netcom.com> for these changes. + Added a number of other minor changes, as well. + + * ace: Made a bunch of minor changes to get ACE to compile on + SunOS4.x, Linux, and SGI. + + * ace/config-linux.h: added ACE_HAS_MSG (thanks to Neil Cohen + for this). + + * ace/OS.h: Conditionally compile for ACE_HAS_UTIME for + <sys/utime.h>. + + * Released an alpha version of ACE containing the new Windows NT + port. + + * Integrated and tested all the new Windows NT changes in class + ACE_OS, as well as the Synch* and Threads* classes. We're now + able to build Jesper's win32_test.cpp file in ./ace! A complete + NT port should be just around the corner... + +Tue Dec 19 17:59:04 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * ace: Move the remaining contents of sysincludes.h into ACE.h. + There is no more sysincludes.h (at long last!). + + * ace: Rearranged things so that the OS.[hi] files contain all the + OS-specific #defines and #includes that were previously in + sysincludes.h. + + * ace: Renamed the ACE_Misc class to class ACE, which is more + representative of what it does. + + * INSTALL: updated the installation instructions to explain how + the new directory structure works. Thanks to Neil Cohen for + pointing out the discrepancy beteen the source and the + documentation ;-). + + * Reorganized (by flattening) the ACE library directory structure + to make it work for both Windows NT and UNIX. Note that Windows + NT does not have symbolic links, so the old way of doing things + didn't port... The consequences of these changes is there is + now a single directory called $WRAPPER_ROOT/ace that contains + the *.[hi] and *.cpp source files. This is also where the + libACE.a and libACE.so libraries are built by default. Also, + note that the suffix used by ACE has been changed from *.C to + *.cpp to deal with the lame Visual C++ compiler... + +Tue Dec 19 01:26:54 1995 Douglas C. Schmidt (schmidt@merengue.cs.wustl.edu) + + * tests/ASX/Event_Server/Event_Server/Supplier_Router.cpp (put): + Fixed up a problem with the Event_Server. Somewhere along the + way it stopped being concurrent! The new version fixes this. + Thanks to Alex V Maclinvosky <alexm@teltrunk1.tait.co.nz> for + noticing this... + + * Added a billion new changes to class OS to integrate the Windows + NT port with the rest of ACE. We are getting very close... + +Mon Dec 18 12:45:13 1995 Jesper S. Møller (stophph@diku.dk) + + * Major problems in the IPC_SAP. First, I detected that some open + calls returned handles, some returned -1 or 0. For instance + ACE_SOCK has a constructor, that calls this->open and expects a + handle (which it even sets as the current handle + value!). Unfortunately, the return from open is either 0 or -1, + depending on how well the open went. ACE_HANDLE being + typedef'ed to a void* really reveals some problems! I have + solved the problem for the FIFO*.* family and for SOCK.* + +Mon Dec 18 12:43:46 1995 Douglas C. Schmidt (schmidt@merengue.cs.wustl.edu) + + * tests/Reactor/CODgram/CODgram.C (main): Fixed a bug in main() + caused by initializing the Reactor twice. Thanks to Aurelio + Nocerino <aurelio@irsipcs2-27-le0.irsip.na.cnr.it> for reporting + this. + + * libsrc/Service_Configurator/Service_Config.C Added a new + constructor to ACE_Service_Config that can be used to initialize + internal variables without performing a full configuration. + +Mon Dec 18 01:22:22 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Service_Config: renamed tokens.h to sc_tokens.h to avoid + file name collision on Win32. Thanks to Jesper S. M|ller + <stophph@diku.dk> for reporting this. + + * tests/Mem_Map/IO_Test: renamed io_test.C to test_io.C to avoid + file name collision on Win32. Thanks to Jesper S. M|ller + <stophph@diku.dk> for reporting this. + + * libsrc/Misc/OS: Implemented condition variables for Windows NT. + +Sun Dec 17 21:23:32 1995 Douglas C. Schmidt (schmidt@merengue.cs.wustl.edu) + + * libsrc/Misc/Trace: Fixed up the ACE_Trace class so that it + doesn't include any calls that will improperly trigger infinite + recursion! This allows the ACE library to be traced completely. + +Sat Dec 16 19:12:37 1995 Jesper S. Møller (stophph@diku.dk) + + * Changes to OS.*: + * Added conditionals to the OS.h for Win32, for the special ACE/Win32 + thr_destroy_tss(), which is automatic for Solaris. + * Changed declarations of thr_create, thr_suspend, thr_continue, + thr_join and thr_[gs]etprio to use hthread_t instead of thread_t. + * Changed return type of OS::open from int to ACE_HANDLE. + * Provided non-obtrusive handling of thr_handle in OS::thr_create + for non-Win32. + * Copied ACE::writev to OS::writev for Win32. Something similar + should happen for other systems... + + * Changes to Thread.*: + * Changed join, suspend and continue to take handles. + * Added thread handle return address to spawn. + + * Changes to Thread_Manager.*: + * Added thread handles to the Thread_Descriptor structure. + * Modified insert_thr and append_thr functions to also take + handles. + * Made ACE_Thread_Descriptor::Thread_State (a enum) public + so Thread_Manager::append_thr could use it as a formal + parameter (I suspect this is a bug in MSVC++). + * Changes the various flavours of suspend, continue, etc. to + use handles instead of id's. Keep in mind that none of this + is destructive for Unix, but vital for Win32. + * There is still a problem with ACE_Thread_Control registering + itself with the Thread_Manager - the thread does not have means + of finding it's own handle. In this particular case, we could + have the thread duplicate it's pseudohandle into a real one, + and pass that one along. I'd really, really, really rather not + have to maintain a thread id->handle mapping myself; It would + slow down thread manipulation and give some troublesome memory + overhead. + + * Changes to Log_Msg.*: + * OS::getpid instead of ::getpid. + + * Changes to Misc.*: + * Sections inappropriate for Win32 #if'd out... + * Provided naive timestamp function (No date) for Win32. + + * Changes to IPC_SAP.*: + * Uses OS::ioctl instead of ::ioctl + * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE + + * Changes to FIFO.*, : + * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE + + * Changes to FIFO_Send.*: + * open now returns an int insted of an ACE_HANDLE. + * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE + + * Changes to FIFO_Send_Msg.*: + * open now returns an int insted of an ACE_HANDLE. + * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE + * Uses OS::writev instead of ::writev + + * Changes to FIFO_Recv.*: + * open now returns an int insted of an ACE_HANDLE. + * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE + + * Changes to FIFO_Recv_Msg.*: + * open now returns an int insted of an ACE_HANDLE. + * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE + + * Changes to sysincludes.h: + * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE + +Sat Dec 16 12:29:06 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/IPC_SAP/Addr/INET_Addr.C: Changed the implementation so + that the reentrant versions of the library calls are always used + (class OS sorts this all out). This reduces the amount of + clutter in the code. + + * libsrc/Threads/Synch: Added a new implementation of + "readers/writer" locks for both Windows NT and POSIX pthreads. + By default, these threads packages don't have this feature. + + * libsrc/Threads/Synch: Added a new macro called + ACE_SYNCH_ERROR_RETURN that greatly simplifies the definition of + the synchronization wrappers. + + * include/ace/sysincludes.h: Removed the pthreads_map.h file and + integrated this into sysincludes.h. + +Fri Dec 15 02:39:25 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Misc/OS.i: Finished updating class OS so that it will + compile correctly for OS platforms that don't support threads, + as well as platforms that support POSIX Pthreads vs. Solaris + threads, etc. + + * libsrc/Misc/OS: integrated Jesper S. M|ller <stophph@diku.dk> + support for POSIX regular expressions (e.g., compile() and + step()) and sysinfo() into ACE. + + * Integrated and tested all of Irfan's changes to ACE to support + the new persistence Name_Server. This added some new classes in + various places that use the ACE_Allocator. + +Thu Dec 14 00:23:43 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * tests/ASX/Event_Server/Event_Server: Fixed an "off by 1" bug in + the declaration of char *argv[3] in the open() methods of + Supplier_Router.C and Consumer_Router.C. Thanks to the "ever + dissatisfied" Alex V Maclinvosky <alexm@teltrunk1.tait.co.nz> + for reporting this. + + * libsrc/Service_Configurator/Service_Config: Added a new + "Singleton" access point for the global ACE_Allocator. + + * libsrc/Naming/Name_Options.C (parse_args): Made it possible to + change the name of the process on the command line via the -P + option. The default is still to use argv[0] as the process + name. + + * include/ace/testconfig.h (ACE_DEFAULT_GLOBALNAME): Changed the + value from "/localnames" to "/globalnames" to avoid a conflict. + + * libsrc/Misc/SString.C: Added Irfan's new "persistent" string + mechanisms that use the ACE_Allocator_Manager. We may + eventually update the existing SS* stuff to use this. + + * Merged in Jesper S. M|ller <stophph@diku.dk> updates for Windows + NT. + + * include/ace/Malloc.h: Added a forward declaration for + ACE_Malloc_Iterator right before ACE_Malloc. Thanks to Antonio + Tortorici <antonio@rh0011.roma.tlsoft.it> for reporting it. + + * libsrc/Threads/Synch_T.h: Fixed a small typo in + ACE_Null_Condition. Thanks to Antonio Tortorici + <antonio@rh0011.roma.tlsoft.it> for reporting it. + + * include: Added new config-linux.h and platform_macros.GNU config + files for Linux. Thanks to Timothy Newell + <910430n@dragon.acadiau.ca> for this stuff. + +Wed Dec 13 23:08:11 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/IPC_SAP/Addr/INET_Addr.C (set): Fixed a small typo in the + ACE_INET_Addr::set (const char port_name[], ACE_UINT32 + inet_address) method where the test should be != rather than == + 0. Thanks to Bill Lear (rael@anarchy.cybercom.net) for + reporting this. + +Sun Dec 10 12:23:54 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Service_Configurator/Service_Record.C (init): Fixed a + small problem where a NULL pointer was being returned if a user + passes a non-existent config file (using the -f option) to + ACE_Service_Config::open(). Thanks to Dieter Quehl + (quehl@erlh.siemens.de) for noticing this. + + * libsrc/Log_Msg/Log_Msg.C (log): added a new option (%T) that + causes the current timestamp to be inserted into the log msg. + Thanks to Dieter Quehl (quehl@erlh.siemens.de) for suggesting + this. + + * libsrc/Misc/Misc: Added a new timestamp() method that returns + the current timestamp in the form + "hour:minute:second:microsecond." The month, day, and year are + also stored in the beginning of the date_and_time array. + + * tests/Shared_Malloc: Added Irfan Pyarali <ip1@cec.wustl.edu> new + test program that exercises the new features of ACE_Malloc that + are described in the following bullet. + + * libsrc/Shared_Malloc: Added Irfan Pyarali <ip1@cec.wustl.edu> + cool new versions of ACE_Malloc and ACE_MMAP_Memory_Pool. These + new versions provide the following enhancements: + + 1. Persistence -- via the sync() method + 2. Protection -- via the prot() method + 3. Named malloc chunks -- via bind(), find(), unbind(). + 4. Named iteration -- via ACE_Malloc_Iterator + +Thu Dec 7 00:31:26 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Reactor/Signal.C: Replaced ACE_Guard with ACE_TSS_Guard + to ensure that locks are correctly released even if + Event_Handler::handle_signal() callbacks invoke + ACE_Thread::exit(). Thanks to Detlef Becker + (beckerd@erlh.siemens.de) for suggesting this. + + * libsrc/Threads/Synch_T: Used inheritance to factor out the + shared code between ACE_Guard, ACE_Read_Guard, and + ACE_Write_Guard in order to reduce unnecessary duplication. + + * libsrc/Threads/Synch_T: Changed the implementation of ACE_Guard + to keep a pointer to the LOCK rather than a reference. This + makes the code more flexible and aids in factorization. + + * libsrc/Threads/Synch_T: Changed the implementation of ACE_Guard + to incorporate ACE_Try_Guard semantics. This reduces the amount + of classes and duplicate code in ACE. + +Wed Dec 6 21:36:02 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * include/ace/Trace: Changed the type of the string passed into + ACE_Trace from char * to const char *. + + * libsrc/Reactor/Reactor.C: Had forgotten to initialize the + initialized_ and requeue_position_ members appropriately in the + constructor of the ACE_Reactor if ACE_MT_SAFE is *disabled*. + Thanks to Mark Zusman <marklz@topaz.technion.ac.il> for pointing + this out. + + * libsrc/Threads/Synch_T.C: changed the order of some methods so + they would be properly defined if ACE_HAS_THREADS and + ACE_HAS_THREAD_SPECIFIC are *not* enabled. This should fix + remaining problems with ACE on SunOS 4 and SGI. Thanks to + Aniruddha Gokhale <gokhale@cs.wustl.edu> for noticing this. + +Tue Dec 5 01:06:14 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Changed things around so that the Name_Server and Token_Server + client interfaces are include in libACE. + + * libsrc/Shared_Malloc: added a const char *pool_name to + ACE_Malloc::ACE_Malloc. This is passed into the constructor of + the MEMORY_POOL to make it easier to dynamically name memory + pools. + +Mon Dec 4 21:20:28 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Threads/Synch_T: Modified the place that the + ACE_Thread_Specific methods are defined so that they will be + compiled correctly for platforms without threads or + thread-specific storage. + +Sun Dec 3 23:04:41 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/ASX/Message_Block: Modified clone() so that it takes an + extra parameter that specifies which flags SHOULD NOT BE + TRANSFERED to the clone. This defaults to + ACE_Message_Block::DONT_DELETE. Thanks to Alex V Maclinvosky + <alexm@teltrunk1.tait.co.nz> for suggesting this. + +Sun Dec 3 17:43:11 1995 Tim H. Harrison (harrison@lambada.cs.wustl.edu) + + * The number of files in the Token library has been reduced. As a + result, many of the files have been renamed. Also, the .i files + have been purged of relatively large methods (these have been + moved to the .C files.) Lastly, most uses of dynamic memory + allocation have been removed from the library. This was + important to reduce the amount of serialization in threaded + applications caused by the dynamic allocation. + +Sun Dec 3 17:29:54 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Threads/Synch: Modified all the synchronization classes + so that they disallow assignment and initialization! + + * libsrc/Threads/Synch: Moved the ACE_Thread_Specific class from + its own files into the Threads/Synch.[Chi] files. This should + eliminate a set of horrible interdependencies among files. + +Sat Dec 2 16:07:40 1995 Douglas C. Schmidt (schmidt@mambo.cs.wustl.edu) + + * libsrc/Misc/SString.C (ACE_CString): Added a destructor to + CString. Thanks to Tim for noticing this... + +Tue Nov 28 17:25:02 1995 Prashant Jain (pjain@tango.cs.wustl.edu) + + * apps/Name_Server/client/lib/Name_Proxy: Changed Name_Proxy to + inherit from ACE_Service_Object rather than ACE_Event_Handler. + This will allow a Name_Proxy to be dynamically linked into an + application via the svc.conf file. + + * apps/Name_Server/client/lib/Name_Proxy: Added new methods + init, fini, and info. + +Tue Nov 28 00:56:52 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * tests/Threads/test_thread_specific.C: Added code to test the new + ACE_TSS_Guard class... + + * libsrc/Threads/Synch_T: Added the new ACE_TSS_Guard class. This + class is similar to the existing ACE_Guard, except that it uses + thread-specific storage to ensure locks are released even if a + thread exits via thr_exit()! + +Mon Nov 27 20:39:58 1995 Prashant Jain (pjain@tango.cs.wustl.edu) + + * apps/Name_Server/{client,server}/tests: Added new tests to + exercise the key features of the name server. + + * apps/Name_Server/client/lib: Simplified access to the nameserver + database. For example, all the network-byte ordering code was + moved out of the Local and Remote Name_Spaces. This code is no + longer necessary since we'll be providing a different means to + get portable name service repositories via a tool that extracts + the "key/value/type" tuples and stores them in a + machine-independent format. The result of this change is that + the Name_Server code is much easier to understand and modify. + + * apps/Name_Server/client/lib: Split local and remote name spaces + into two classes to simplify usage. This approach uses the + Bridge pattern to have a baseclass called Binding and then have + subclasses called Local_Name_Space and Remote_Name_Space. The + constructor of Naming_Context then allocates the right one + (i.e., it serves as a factory). This approach remove all the + switch statements in the code and makes it much easier to use + and extend. + + * apps/Name_Server: updated all the Name_Server components to + use ACE naming conventions. + + * apps/Name_Server/client/lib: Changed ACE_Name_Options to use the + Singleton pattern rather than the global variable... + +Mon Nov 27 00:47:32 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Shared_Malloc/Malloc.h: Named the previously anonymous + struct inside of ACE_Malloc_Header to be + ACE_Malloc_Control_Block in order to keep the OSE tools working. + Thanks to Karlheinz for reporting this. + + * libsrc/Threads/Synch: Fixed a major bug in the ACE_Semaphore + wrappers. Apparently, these had slipped between the cracks and + were not correctly mapping onto the ACE return value scheme + where -1 corresponds to an error with errno set to indicate the + type of error. + + * tests: Cleaned up some files that mistakenly were defining + LSOCK* objects even for platforms (i.e., Linux) that don't + support them. Thanks to Timothy Newell + <910430n@dragon.acadiau.ca> for noticing this. + +Sun Nov 26 12:42:51 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Shared_Malloc/Malloc: Added a new accessor method + (memory_pool) that returns a reference to the MEMORY_POOL object + used to configure ACE_Malloc. + + * libsrc/Shared_Malloc/Malloc: Changed the constructor of + ACE_Malloc to take advantage of the new init_release method on + all the ACE_*_Memory_Pools. + + * libsrc/Shared_Malloc/Memory_Pool: Added a new method to all the + ACE_*_Memory_Pool classes called "init_release". This is called + when ACE_Malloc finishes initializing the dynamic memory + manager. This method is necessary in order to initialize the + ACE_MMAP_Memory_Pool correctly if there are multiple processes + that try to initialize ACE_Malloc simultaneously. In addition, + also added an ACE_SV_Semaphore_Complex to the + ACE_MMAP_Memory_Pool in order to serialize initialization + correctly. + + * libsrc/Shared_Malloc/Memory_Pool: Added sync() and protect() + methods to all of the ACE_*_Memory_Pool classes in order to + support a uniform interface for use with the "robust memory" + mechanism we're building. + + * libsrc/Mem_Map/Mem_Map: Added two new "protect" methods to + ACE_Map_Manager in order to allow clients to change the + protection of memory-mapped regions. + + * libsrc/ASX/Map_Manager: Changed Map_Manager methods to use + "const" for EXT_ID and INT_ID at request of Prashant Jain + (pjain@cs.wustl.edu). + + * libsrc/Shared_Malloc/Memory_Pool: Revised the + ACE_Shared_Memory_Pool so that it would actually work + correctly... This code hadn't been reviewed carefully before + and there were some bugs... + + * libsrc/Shared_Malloc/Malloc: added "INLINE" to the + ACE_Allocator_Adapter components. + + * libsrc/Shared_Malloc/Memory_Pool: Greatly simplified and + consolidated the mmap(2) code for ACE_MMAP_Memory_Pool. + + * libsrc/Shared_Malloc/Memory_Pool.i (release): Removed the + vestigal this->mmap_.remove() call in release(), but added the + appropriate code to close the fd and unmap the region. Thanks + to Irfan Pyarali <ip1@cec.wustl.edu> for noticing this. + +Sat Nov 25 18:12:55 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/CORBA/CORBA_Handler.C (activate_service): + Modified activate_service so that + + if (service_name != 0 + && this->register_service (service_name, marker_name, + service_location) == -1) + return -1; + + is changed to + + if (service_name != 0 && service_location != 0 + && this->register_service (service_name, marker_name, + service_location) == -1) + return -1; + + Irfan Pyarali <ip1@cec.wustl.edu> requested this. + +Sat Nov 25 16:41:15 1995 Douglas C. Schmidt (schmidt@lambada.cs.wustl.edu) + + * libsrc/Misc/Set: Changed all the find() and size() methods to + be const member functions. Thanks to Irfan Pyarali + (ip1@cec.wustl.edu) for requesting this. + +Fri Nov 24 02:51:59 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Reactor/Reactor.C: Fixed the Reactor so that if we're + compiling with DEADLOCK_DETECTION enabled it will create a + uniquely named mutex by stringifying "this". + +Thu Nov 23 21:45:43 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/IPC_SAP: Changed + + * libsrc/Service_Configurator/Service_Config: Added three new + methods to allow programmers to set the process-wide Singletons + for Reactor, Service_Repository, and Thread_Manager. + +Tue Nov 21 01:59:06 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Mem_Map/Mem_Map.C: Fixed a stupid typo in map_it() that + was causing problems due to unsigned arithmetic semantics... + This should make the file_reverse.C Mem_Map tests work correctly + now... Thanks to Bill Lear <rael@anarchy.cybercom.net> for + noticing the problem. + + * tests/Mem_Map/IO-tests/io_test.C (parse_args): Fixed a + classic C/C++ braino in io_test.C: + + The for loop in parse_args() + + for (int c; (c = get_opt () != -1); ) + + should be + + for (int c; ((c = get_opt ()) != -1); ) + + How embarrassing. Maybe Bertrand Meyer is right -- C++ is too + dangerous for its own good... ;-). Thanks to Bill Lear + <rael@anarchy.cybercom.net> for finding this! + + * Removed all traces of ACE_Condition<ACE_Mutex> from the library. + This should make life much easier for compilers (like G++) that + can't grok templates very well... + + * libsrc/Threads/Thread_Specific.C (ts_object): Added a new method + that allows you to simultaneously "test and set" thread-specific + data! This is used to support a neat new trick that ensures + locks are released even if a thr_exit() is called! + + * libsrc/Service_Configurator/Service_Repository: Removed the + Recursive_Mutex from Service_Repository and replaced it with a + regular (non-recursive) mutex. Had to rewrite the code a bit so + that it wouldn't try to call internal methods that acquired the + mutex (this leads to instant deadlock!) + +Mon Nov 20 01:05:47 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Threads/Synch: Finally gave in and accepted the fact that + GNU G++ is a horrible, horrible blight on mankind... Changed + the internals of Synch.[Chi] to completely remove any + dependencies on templates. I hope this fixes some portability + problems deep in the libraries... Added several new classes to + reflect this change: ACE_Mutex_Guard, ACE_Mutex_Condition, and + ACE_Recursive_Mutex. + + * libsrc/IPC_SAP/UPIPE_SAP/UPIPE_Acceptor.C (ACE_UPIPE_Acceptor): + Fixed a stupid typo that was causing the constructor of + UPIPE_Acceptor to become inlined!!! + + * apps/Gateway/Gateway: Fixed up the Makefile so that the gatewayd + executable would compile with G++. + + * include/ace/config-irix5.3-sgic++.h: Changed the SGI config.h + file so that it uses select() rather than poll() by default. + The select() version of the Reactor is implemented more + efficiently in ACE... + + * include: Added config files for AIX courtesy of Byron Walton + <bwalton@hughes.scg.hac.com>. + + * libsrc/Reactor/Signal.C: #ifdef'd out some code in Signal.[hC] + that was causing problems for the HPUX C++ compiler. What a + *horrible* compiler! + + * libsrc/Reactor/Event_Handler.h: Added two new methods to + ACE_Event_Handler: get_priority() and set_priority(). These + will be used to control the behavior of the ACE_Reactor's + dispatching. This also required added a new data member to + ACE_Event_Handler that stores the priority (which defaults to + MIN_PRIORITY). + + * libsrc/Misc/Stack.C (enqueue): Added a new class called + ACE_Unbounded_Queue. This is required for Tim's Token_Server + connection repository stuff... + + * libsrc/CORBA/CORBA_Handler.C: Added new support to both the + single-threaded and multi-threaded versions of CORBA_Handler so + that it will now suspend/resume the services associated with a + CORBA_Handler. + + * libsrc/CORBA/CORBA_Handler.C (ACE_MT_CORBA_Handler): Updated the + constructor to use the associated Thread_Manager to spawn a new + thread. This will allow the suspend() and resume() methods to + atomically resume and suspend the daemon thread and its event + handler. + + * libsrc/Threads/Synch.h: Fixed up the order of #includes to solve + problems with circular header dependencies! + + * Had to add zillions of little changes to avoid problems with + circular includes for G++... + + * tests/ASX/Event_Server/Event_Server/Peer_Router.C (bind_peer): + Fixed a typo that had been dormant for ages due to C++'s very + late binding of templates... G++ picked this right up! + +Sun Nov 19 11:55:02 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Reactor/Signal: Replaced the static HANDLER_SET stuff + withing ACE_Sig_Handlers with a different implementation using + ACE_Fixed_Set. This should fix nasty problems with static + variables on HP/UX... + + * Fixed the entire library so that all occurrences of ace_log_msg + are changed to use the ACE_LOG_MSG macro. This macro has magic + properties that should greatly simplify the effort required to + compile ACE robustly on platforms with lame C++ compilers... + + * libsrc/Log_Msg/Log_Msg: Finally got my act together with respect + to thread-specific data and the ACE_Log_Msg class. The new + version can be conditionally compiled such that it won't use the + ACE_Thread_Specific smart-pointer wrapper mechanism unless the + platform supports thread-specific storage and threads. This + will make life much easier for lame C++ compilers that can't + handle static data member templates correctly... + + * apps/Name_Server/{client,server}/lib/Makefile (LIBS): Added a + reference to -lACE in the Makefiles of the ./lib directories in + order to get GCC to work correctly... + + * Added a bunch of fixes courtesy of Bill Lear + <rael@anarchy.cybercom.net> to make ACE compile more cleanly + with GNU GCC 2.7.x. + +Sat Nov 18 11:27:40 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Misc/Trace.C: Fixed up the ACE_Trace class so that it + will compile better on platforms that don't support + thread-specific storage. The trick was to make a new Singleton + called ACE_Nest_Depth and then conditionally compile it + according to whether the platform supports thread-specific data + or not! + + * include/makeinclude/platform_sunos5_g++.GNU: Added the new + config file that should allow ACE to build correctly with GCC + 2.7.x. Todd L. Montgomery <tmont@cerc.wvu.edu> deserves a big + round of applause for getting this stuff to work! If I had a + budget, I'd give him a raise ;-) + + * libsrc/Misc/Set.C (remove): Tightened up the semantics of all + the *Set::remove() methods so that they return 1 if they + succeed, 0 if the item isn't in the set, and -1 if they fail. + Thanks to Tim Harrison for noticing the inconsistencies. + +Fri Nov 17 01:34:51 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * apps/Logger/Reactor_Logger: Fixed up this example app so that it + would compile with GNU G++ correctly. There was a problem with + the order of include files! Thanks to Todd L. Montgomery + <tmont@cerc.wvu.edu> for reporting this. + + * libsrc/ASX/Module.C (writer): Fixed ACE_READER so that it is + properly qualified with ACE_Task_Flags::ACE_READER. Thanks to + Neil Cohen (nbc@metsci.com) for finding this! + + * apps/Gateway/Gateway/Routing_Entry: Replaced ACE_Fixed_Set with + ACE_Unbounded_Set to get around the seemingly endless problems + with HP/UX... + + * libsrc/Misc/Set: Fixed a braino in ACE_Unbounded_Set, where I'd + forgotten to define cur_size_. Thanks to Todd L. Montgomery + <tmont@cerc.wvu.edu> for reporting this. + + * libsrc/Connection/Acceptor.C: Change the #undefs of the + shorthand names PA_AC_1, PA_AC_2, and PA_AD in + libsrc/Connection/Acceptor.C to PR_AC_1, PR_AC_2, and PR_AD + (same as in Connector.C and Strategies.C). Thanks to + Dieter Quehl <quehl@erlh.siemens.de> for reporting this. + +Thu Nov 16 02:14:22 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Misc/Trace: Fixed the ACE_Trace stuff by making the + "nesting_indent_" a static data member. This will undoubtedly + break some lame C++ compilers, but it's easy enough to remove + this stuff via conditional compilation using the ACE_NTRACE + #define in ./include/ace/config.h. + + * libsrc/Threads/Thread_Specific.C (cleanup): Under no + circumstances should ACE_Thread_Specific be allowed to + called ACE_Trace. Otherwise, chaos will result! + + * apps/Name_Server/{client,server}/tests/Makefile: Switched the + order of the -lACE and -lName* so that -lACE came *afterwards* + in order for the SGI linker to pick up the symbols correctly. + + * libsrc/Reactor/Signal: I'd accidentally put the "dump" methods + in the *.i file rather than the *.C file. This was causing + problems for G++. + + * libsrc/ASX/Task: Changed all "Q_" prefixes to "ACE_" prefixes in + order to work around a bug with HP/UX... + + * Recompiled everything on SunOS 4.x with SunC++ 4.0.1. It seems + to work! + +Thu Nov 16 18:05:03 1995 Tim H. Harrison (harrison@tango.cs.wustl.edu) + + * I moved around some class declarations so that g++ can properly + instantiate templates for ACE_Token_Collection and + ACE_Token_Manager. + +Wed Nov 15 00:26:40 1995 Tim H. Harrison (harrison@lambada.cs.wustl.edu) + + * The token library should now compile on platforms which do not + support threads. All token components will be compiled into the + library, but use null mutexes and condition variables. The + remote mutex library shall run properly on single-threaded + platforms, so it compiles as usual. + +Wed Nov 15 01:05:38 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Fixed a bunch of minor problems with the SGI port. Things + should work now on IRIX 5.3! + + * man/man3: Completely regenerated all the manual pages to + reflect all the recent updates. + + * libsrc: Added ACE_TRACE macros to every single method in ACE! + This will help with debugging... + +Wed Nov 15 00:26:40 1995 Tim H. Harrison (harrison@lambada.cs.wustl.edu) + + * The token library should now compile on platforms which do not + support threads. All token components will be compiled into the + library, but use null mutexes and condition variables. The + remote mutex library shall run properly on single-threaded + platforms, so it compiles as usual. + +Tue Nov 14 01:58:47 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * tests/CORBA: Added a new test to illustrate the + ACE_MT_CORBA_Handler. + + * libsrc/ASX/Task.C (ACE_Task_Exit): Fixed a niggling problem with + ACE_Task_Exit. Originally, if a thread exited via an implicit + ACE_Thread::exit() (i.e., "falling off the end of the + ACE_Task::svc_run function) then the ACE_Thread_Control on the + thread stack would automatically unregister the thread from the + ACE_Thread_Manager. However, this did *not* occur if a thread + explicitly called ACE_Thread::exit() since in that case the + destructor for ACE_Thread_Control never got called. The + solution to this is a trivial change to ACE_Task_Exit, which now + maintains an instance of ACE_Thread_Control internally, which + will automatically be released when the thread-specific + thread-exit-hook destructor gets called to cleanup upon thread + exit. Since this happens regardless of whether the thread + terminates implicitly or explicitly the ACE_Thread_Manager will + always be able to clean up it's internal resources (unless the + process exit()s, which is a whole different issue... ;-)). + + * Changed all occurrences of ACE_CORBA_Handler to + ACE_ST_CORBA_Handler. Now we've got two types of + CORBA_Handlers: single-threaded (ST) and multi-threaded (MT). + Take a look at ./apps/Orbix-examples/Event_Comm/{Supplier,Consumer} + for an example of how to leverage this in a portable manner! + + * libsrc/CORBA/CORBA_Handler: Totally redesigned the ACE + CORBA_Handler stuff so that it now uses the Singleton pattern + explicitly, rather than using the half-baked static method + version... Changed the test code to reflect this update! + + * libsrc/CORBA/CORBA_Handler.C (activate_service): Changed the + check so that if <service_name> == 0 then we don't try to do a + putit (previously, this check used <marker_name>, which is less + useful...). + + * libsrc/CORBA/CORBA_Handler.C (activate_service): Removed the + <default_iterations> flag from the constructor so that we can + make the CORBA_Handler and the MT_CORBA_Handler equivalent. + + * include/ace/sysincludes.h: Added a new macro called + ACE_THREAD_EXIT_HOOK that enables application threads + (including the main thread) to register a Task * who's + close method will automatically be called when the thread + exits, either implicitly (by falling off the end) or explicitly + (by a thread calling ACE_Thread::exit ()). + + * libsrc/ASX/Task: Moved ACE_Task_Exit into the interface part of + ACE_Task so that Irfan can maybe use this in his stuff ;-). + + * libsrc/Misc: Incorporated the ACE_Date_Time class into the + release. This is an *interface* for a system independent + representation of date and time. Implementation will follow... + + * libsrc/CORBA: Added a new MT_CORBA_Handler, which makes it + very straightforward to integrate the ACE_Reactor with + multi-threaded (MT) Orbix. + + * libsrc/Threads/Token.C: Yow, fixed a dumb problem in Tokens.C + where I was failing to include the *.i file if we weren't + compiling with inlining on!!!! + +Mon Nov 13 01:13:37 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/ASX/Message_Block: Added several new methods to + Message_Block to allow users to access and set various flags. + Thanks to Alex V Maclinvosky <alexm@teltrunk1.tait.co.nz> for + suggesting this and providing a prototype implementation. + + * include/ace/sysincludes.h: Added a new macro called ACE_NDEBUG + that can be used to toggle support for "live object dumping". + If this macro is enabled then + + * libsrc/Misc/Dump.h: Added support for "live object dumping" into + ACE. This technique is implemented with the "External + Polymorphism" pattern described in a paper available at + http://www.cs.wustl.edu/~schmidt/EuroPLoP-96.ps.Z. + + * libsrc/Threads: Added new classes called *_Process_* and + *_Thread_* for ACE_RW_Mutex, ACE_Barrier, ACE_Condition, and + ACE_Semphaore. This will allow programmers explicitly state the + scope of their locks more explicitly and will also facilitate + portability to Windows NT... + + * libsrc/Threads: Updated the constructors of all the Synch and + Synch_T classes to take an option const char * called "name." + At the moment, this doesn't do anything, but when we port to + Window NT it will be used to ensure that we can name our + process-global synchronization objects. + + * libsrc/Threads/Synch: Added a new tryacquire method to + ACE_RW_Mutex to be consistent with acquire and release... + + * libsrc/Threads/Synch.C (ACE_Mutex): Added a new "name" parameter + to an ACE_Mutex in order to support process-semantics on NT... + + * include/ace/sysincludes.h: Added a #define for EDEADLK in case + some systems don't support it (this is needed by the new + ACE_*_Token stuff). + +Sun Nov 12 14:17:01 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * apps/Name_Server: Modified the client and server test programs + so that they can both be linked statically and/or dynamically. + If svc.conf is present then dynamic linking is used, otherwise + static linking is used. This makes it much easier to test!!! + + * apps/Name_Server/client/lib/Naming_Context.C (local): Changed + things a bit so that if our server host name is "localhost" then + we assume we are local no matter what... + + * apps/Name_Server: Moved directories around a bit so that all the + tests and libs for the client/server portions of the + ACE_Name_Server build correctly... + + * apps/Name_Server/server: Replaced the ad hoc Name_Acceptor and + Name_Handler to use the official ACE_Acceptor and + ACE_Svc_Handler... This cleans up the code considerably... + + * libsrc/Threads/Synch: Added a new wrapper for the the UNIX file + locking mechanism called ACE_File_Lock. This has the same + interface as the other locking mechanisms (e.g., ACE_Mutex and + ACE_Semaphore). Therefore, it can be used in the ACE_Guard + class! + +Sat Nov 11 13:53:48 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Shared_Malloc/Memory_Pool: Improved MMAP_Memory_Pool so + that it will be smarter about remapping the file if we aren't + trying to force a fixed addr to be used for the mapping. In + particular, if we *aren't* forcing a particular address, the new + solution will be more flexible and allow the OS to determine + where to remap the memory should we need to grow the backing + store and the mapping range... + + * libsrc/Misc/Set: Implemented a simple version of the + Unbounded_Set class and its iterator. + + * libsrc/Misc/SString: Changed all the implementations of methods + in SString classes to use new/delete rather than + strdup()/free(). + + * apps/Name_Server/client/Name_Proxy: Changed rcv_reply() to + recv_reply(). + + * apps/Name_Server/client/Name_Proxy: Modified ACE_Name_Proxy so + that the constructor and open take an ACE_Synch_Options. + + * apps/Name_Server/client/Name_Options.C (ACE_Name_Options): Added + a default for the Name_Space directory called + (ACE_DEFAULT_NAMESPACE_DIR) to the testconfig.h file... + +Sat Nov 11 00:24:37 1995 Tim H. Harrison (harrison@lambada.cs.wustl.edu) + + * tests/Tokens/test_token_manager/test_token_manager.C: The token + manager has a working deadlock detection algorithm. + ACE_Local_Mutex uses this to report deadlock situations. + Changes were made to ACE_Local_Mutex to fix a couple bugs which + were causing deadlock. Also, a new test application has been + added to test deadlock detection using the local mutex. + +Fri Nov 10 17:16:06 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Mem_Map/Mem_Map.h: Changed the type of <length_> from + long to size_t. + + * tests/Threads/test_thread_manager.C (main): Added a main() for + the case when there's + + * tests/ASX/UPIPE_Event_Server/event_server.C (main): Fixed a + typo that was causing problems on SunOS 4.x. + + * tests/Service_Configurator/IPC-tests/client/local_spipe_client_test.C: + added #include "ace/Log_Msg.h" (why was this working?!). + + * include/makeinclude/rules.lib.GNU: Changed the order of operations + in rules.lib.GNU from + + $(AR) $(ARFLAGS) $@ $? + -$(RANLIB) $@ + -chmod a+r $@ + + to + + $(AR) $(ARFLAGS) $@ $? + -chmod a+r $@ + -$(RANLIB) $@ + + to keep ranlib happy on SunOS 4.x. + + * apps/Time_Server: Added a Makefile + + * include/ace/sysincludes.h: Removed the <termios.h> include + since it was causing major problems on SunOS 4.x... + + * apps/Name_Server/Naming_Context.C: Fixed up a couple of problems + with casts. Thanks to Jack Erickson <jack@cibc.com> for + pointing this out. + +Thu Nov 9 15:49:40 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Threads/Synch_T: moved Atomic_Op from ./Misc to ./Threads + and merged it into the Synch_T files. This makes more sense as + a place to put it... + + * libsrc/Misc/SString.C (operator +=): Fixed a typo that would + have caused mistakes when memcpy() was used. Thanks to Prashant + Jain <pjain@wuerl.wustl.edu> for noticing this. + +Wed Nov 8 22:36:51 1995 Tim H. Harrison (harrison@lambada.cs.wustl.edu) + + * libsrc/Reactor/Reactor.C (TOKEN_GUARD): The reactor now uses the + TOKEN_GUARD macro. The Reactor can now be conditionally + compiled with ACE_REACTOR_HAS_DEADLOCK_DETECTION to use the new + ACE_Local_Mutex in conjunction with the ACE_Token_Manager to + detect deadlock. The deadlock detection algorithm has not yet + been implemented, but the hooks are now in place. + + * libsrc/Tokens: This subdir includes ACE's new Token library. + Check out libsrc/Tokens/README for more info. + + * tests/Tokens: There are a couple test applications for the new + Token library. See tests/Tokens/README for more info. + + * apps/Token_Server: This directory contains some new client + interfaces to the old ACE TokenServer, now Token_Server. There + are also some example use cases included in this directory. As + always, see apps/Token_Server/README for more info. + +Wed Nov 8 00:14:55 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/IPC_SAP/IO_SAP: Added the new classes for IO_SAP from + Gerhard Lenzer (lenzer@csaserv.erlh.siemens.de). This + eliminates UNIX I/O-specific features from ACE. + + * libsrc/Misc/Set: Added a new find() method to each of the + ACE_*_Set classes... + + * include/ace/sysincludes.h (ACE_ALLOC_HOOK_DECLARE): Changed + enum __Ace { __ACE } to struct __ACE {}. I think this + will cause less problems with M.I... + + * libsrc/ASX/Message_Block: Added a new "allocator" parameter to a + Message_Block. This allows the memory stored by a Message_Block + to come from someplace besides the normal heap (e.g., a shared + memory segment!). + + * libsrc/ASX/Message_Block.C (ACE_Message_Block): Yow, fixed a bug + in the destructor where ACE_BIT_ENABLED was being used in place + of ACE_BIT_DISABLED! I think this was causing a memory leak... + + * libsrc/Reactor/Reactor: added a pair of methods that allow a + thread to set/get the notion of who "owns" the event loop. Only + the owner of the loop can do a handle_events() call. Also + changed things so that the requeue_position() are available for + both threaded and non-threaded implementations (just to have a + uniform interface...). + + * libsrc/ASX/Message_Block: added a new constructor and a new + init() method that just assume ownership of a char * passed + as the parameter. Note that this does *not* set any other + fields in the Message_Block and is only used to ferry around + totally opaque data in the Message Block! + +Tue Nov 7 00:52:15 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * tests/Log_Msg/test_log_msg.C (main): Added some new tests to + make sure that op_status() and errnum() work on ace_log_msg. + Thanks to Tim Harrison for these tests. + +Mon Nov 6 12:55:46 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Threads/Thread_Specific: Changed a couple of places in + the Thread_Specific code so that key_ is initialized to 0 and + the ts_obj * is initialized to 0. If these *aren't* 0 then + weird bugs happen on Solaris... Thanks to Tim Harrison for + noticing this and suggesting the fix! + + * libsrc/Threads/Synch_T: Added an accessor method to obtain + the underlying mutex within ACE_Condition. + + * libsrc/Threads/Synch.C (ACE_Process_Mutex): Added a dummy + argument of type const char * to ACE_Process_Mutex. This is in + anticipation of the info required in Windows NT to support a + named process-wide Mutex. On UNIX, this argument is ignored... + +Fri Nov 3 19:02:54 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/IPC_SAP/SOCK_SAP: Back from C++ World... Fixed a couple + of typos in SOCK_Dgram_Bcast and SOCK_CODgram that included the + *.i files multiple times... Thanks to Alex V Maclinvosky + <alexm@teltrunk1.tait.co.nz> for reporting this. + +Tue Oct 31 02:12:13 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Reactor/Reactor: Modifed the MT_SAFE Reactor so that the + its open() method keeps track of which thread originally created + it. This thread is then considered the "owner" of the Reactor. + If a different thread tries to run the handle_events() method + then an error is returned. + + * libsrc/ASX/Task.C: Added a "group id" field to the ACE_Task. + This can be used to suspend and resume a group of tasks + atomically. Also added default suspend() and resume() methods + that do just that! + + * libsrc/Reactor/Reactor: Made the open() method + thread-safe. Thanks to Detlef Becker (beckerd@erlh.siemens.de) + for pointing out the need for this. + +Mon Oct 30 00:02:53 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Shared_Malloc/Memory_Pool.C (ACE_MMAP_Memory_Pool): + Made it possible to configure the ACE_MMAP_Memory_Pool with a + (backing_store_) file name so that it is possible for multiple + processes to share one wellknown file, as well as to have + multiple pools per process. Check out the + ./tests/Shared_Malloc/test_malloc.C file for an example of how + this works (try the -p -e -L10000 -t3 options). + + * libsrc/Reactor/Reactor: Moved handler_i into the *.C file to + avoid problems with inline functions on HP/UX. + + * libsrc/Misc/SString: Added a new class called ACE_CString. This + class is similar to ACE_WString (which has "wide character" + size), though CString has regular "char" size. Note that both + of these classes are "true" string classes, unlike ACE_SString, + which is a very simple string class that is only to be used for + very specific purposes... + + * libsrc/Shared_Malloc/Memory_Pool.C (acquire): Fixed an + "off-by-one" error in ACE_MMAP_Memory_Pool::acquire() that was + causing an extra byte to be written to the backing store file... + This was causing the ./tests/Shared_Malloc/test_malloc.C program + to fail when -p was given. After this fix the test works + again... (thank God!). + +Sun Oct 29 22:43:25 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Shared_Malloc/Malloc: Added two new classes: + ACE_Allocator and ACE_Allocator_Adapter. ACE_Allocator uses + inheritance and dynamic binding to provide extensible mechanisms + for allocating and deallocating memory. ACE_Allocator_Adapter + implements the Adapter pattern to enable ACE_Allocator to be + used with instantiations of the ACE_Malloc<> template class. + +Sat Oct 28 13:51:07 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * tests/ASX/Event_Server: Added a new directory called + UPIPE_Event_Server, which tests a version of the Event_Server + that is instantiated with ACE_UPIPE_* IPC mechanisms, + rather than by the ACE_SOCK_* mechanisms. + + * libsrc/IPC_SAP/Addr: Created a new file called UPIPE_Addr.h. + This file contains a typedef of ACE_SPIPE_Addr to + ACE_UPIPE_Addr. The purpose of doing this is to "logically" + decouple the ACE_UPIPE* classes from the ACE_SPIPE* classes + (even though they share the same *physical* representation at + this point...). + + * libsrc/IPC_SAP: Fixed a small bug in TLI_Connector.connect() and + SOCK_Connector.connect() that failed to set the + new_stream::handle_ to ACE::INVALID_HANDLE when the connection + failed. Thanks to the ever-astute Mark Patton + (mark_patton@tx72.mot.com) for noticing this. + +Thu Oct 26 15:08:22 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * tests/Threads: created a new test program called + test_thread_manager.C that tests the new semantics for managing + groups of threads. + + * libsrc/Reactor/Signal.C (ACE_Sig_Action): Added a new method + that allows me to create a Sig_Action object that contains both + the handler and the signal to register for. This handler is + register to handle the signal in the constructor of the + object... + + * libsrc/Threads/Thread_Manager: enhanced the Thread_Manager to + add support for operations (i.e., suspend, resume, kill) on a + group of threads. + + * libsrc/Threads/Thread_Manager: Added a new method that allows + the Thread_Manager to resize itself automatically when it's + internal table gets full. + + * libsrc/Threads/Thread_Manager: Updated the return value of + Thread_Manager::spawn() and Thread_Manager::spawn_n() so that + they return -1 on failure *and the group id* on success. + Originally, they returned 0 on success, but this new return + value is more useful since it can be used to control groups of + threads atomically. + +Wed Oct 25 01:03:32 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * apps/Name_Server: Began integrating the newly donated name + server into ACE. There are a number of dependencies on + RogueWave that must be removed, but things are looking good so + far. + + * libsrc/Misc/Set: Changed the name of ACE_Unordered_Set to + ACE_Fixed_Set to be consistent with the ACE Stack classes... + + * libsrc/Misc/Set: Added new ACE classes called ACE_Unbounded_Set, + ACE_Bounded_Set, ACE_Unbounded_Set_Iterator, and + ACE_Bounded_Set_Iterator to deal with ACE name service + stuff. + + * libsrc/Misc/SString: Added a new class called ACE_WString that + gives a very simple "wide-character" string representation for + ACE. This is needed for the ACE name service stuff. + + * libsrc/Misc/SString.C (operator =): Fixed this so that ::strdup + is matched up with ::free, rather than with delete... + + * libsrc/Log_Msg/Log_Msg.C (log): Updated the ACE_Log_Msg class to + store an ostream * in thread-specific storage. This can be used + in conjunction with the dump() method on each ACE class, as well + as with the ACE_ERROR and ACE_DEBUG logging macros. + +Tue Oct 24 00:19:13 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Added a definition of the dump() method to every class in ACE in + anticipation of the changes requested for Siemens. + + * Changed all occurrences of ACE_Signal_* to ACE_Sig_* to make the + ACE naming of signal handling wrappers consistent. + + * libsrc/Threads/Thread: Fixed some obscure bugs with the way that + ACE_Thread was compiling on platforms that don't support + threads. + + * include/ace/config-irix*.h: Removed all TLI support from the SGI + platform. It seems to be totally screwed up from the tests that + I've run and there's no sense in bending over backwards to + support an IPC API that is brain-damaged to begin with... + + * apps/Logger/Service_Configurator_Logger/Thr_Server_Logger: Fixed + up the code so that the Thr_Logging_Server stuff will compile + correctly even for platforms that lack threads! + + * libsrc/Connection/Strategies: Added new strategies that provide + Singleton creation and Process concurrency policies. + + * libsrc/Connection/Connector.C (handle_close): Make sure that all + pending timer objects are removed from the Reactor's timer queue + when a Connector shuts down. In addition, make sure to remove + and delete all dynamically allocated ASTs, as well. Thanks to + Karl-Heinz Dorn (kdorn@erlh.siemens.de) for suggesting this. + + * libsrc/Threads/Thread_Manager.C (wait): Modified wait() so that + it now takes an ACE_Time_Value *, which can be used to wait + until all threads terminate or a timeout occurs... + + * libsrc/Threads/Thread_Manager: Moved Thr_Descriptor from within + the ACE_Thread_Manager class to become ACE_Thr_Descriptor at + file scope. This is in anticipation of the cool new thread + manager stuff on the way... + + * libsrc: Updated every class in ACE to include a "dump" method + with the signature "void dump (void);" This method soon will be + tied into the ACE_Dump mechanism to allow all live objects in + ACE to have their state dumped automagically on-demand. This is + useful for debugging and tracing etc. + + * libsrc: Updated every class in ACE to include a "Alloc hook." + This hook will enable all ACE classes to be allocated from a + particular memory pool. + + * include/makeinclude/rules.local.GNU: fixed the clean target to + delete the *.rpo files (else gcc -frepo can get some crazy + errors) and combines all rm-commands for the target realclean + into one command (in some cases the last two lines do not have + any files to delete, in which case rm produces an usage + message). Thanks to John Huchinson (hutchiso@epi.syr.ge.com) + for the patch. + + * libsrc/IPC_SAP/Addr/INET_Addr: Fixed all the uses of gethost* + and getserv* to use the reentrant get*_r functions if + ACE_HAS_REENTRANT_FUNCTIONS is set and ACE_MT_SAFE is set. + Thanks to Bill Tang <tang@tekats.com> for suggesting this. + + * libsrc/Misc/OS: Started adding support for the POSIX *_r + functions to the OS class. + + * include/ace: Added a new #define called + ACE_HAS_REENTRANT_FUNCTIONS. This indicates that the platform + supports reentrant functions (i.e., all the POSIX *_r functions + like gethostbyname_r). + +Mon Oct 23 21:15:50 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * include/makeinclude/platform_irix5.3.GNU (LIBS): Removed the + link of the nsl lib since it seems not to be present on this + platform. Thanks to Karel Zuiderveld + <Karel.Zuiderveld@cv.ruu.nl> for noticing this. + + * libsrc/IPC_SAP/Addr/INET_Addr.i (operator ==): Enhanced the + semantics of comparison to check both the port number and IP + address. Thanks to Mark Patton (mark_patton@tx72.mot.com) for + suggesting this. + +Thu Oct 19 00:10:28 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/IPC_SAP/Addr/INET_Addr.C (set): Fixed a stupid bug that + failed to set errno appropriately if things go wrong with this + method. Thanks to Mark Patton (mark_patton@tx72.mot.com) for + noticing this! + +Sat Oct 14 12:07:16 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Threads/Thread_Manager: Modified the Thread_Manager so + that even in the case where we are compiling for non-MT systems + the Thread_Manager still has the same method interface (all of + which are no-ops). + +Wed Oct 11 00:12:57 1995 Douglas C. Schmidt (schmidt@mambo.cs.wustl.edu) + + * Finished commenting all the classes in ACE. Updated all manual + pages accordingly. + +Fri Oct 6 14:17:17 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * tests/ASX/Event_Server/Event_Server: Changed + + ACE_SOCK_Acceptor &sa = (ACE_SOCK_Acceptor &) *this->acceptor_; + + to + + ACE_SOCK_Acceptor &sa = this->acceptor_->acceptor(); + + Thanks to Dieter Quehl (quehl@erlh.siemens.de) for suggesting + this. + +Thu Oct 5 00:22:56 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/ASX/Map_Manager: Added a new find() method to the + Map_Manager. This method only checks for the existence of an + EXTERNAL_ID, and doesn't return the INTERNAL_ID. + + * Introduced the new "trait"-based *_Connector, *_Acceptor, and + *_Stream interfaces for all the IPC_SAP classes. Basically, for + each class like + {SOCK,TLI,SPIPE,etc,}_{Acceptor,Connector,Stream}, there's now a + typedef for the appropriate type of ACE_*_Addr subclass and the + appropriate type of ACE_*_Stream class. For example, here's + what's in ACE_SOCK_Acceptor (same goes for ACE_SOCK_Connector): + + class ACE_SOCK_Acceptor + { + public: + // ... + + // = Traits. + typedef ACE_INET_Addr PEER_ADDR; + typedef ACE_SOCK_Stream PEER_STREAM; + }; + + Once C++ compilers can grok template typedefs correct, this new + approach will allow much greater simplification of code, so that + template classes like + + template <class SVC_HANDLER, class PEER_ACCEPTOR, class PEER_ADDR> + class ACE_Acceptor { /* ... */ + virtual int open (const PEER_ADDR &); + }; + + that are currently used like this: + + ACE_Acceptor <My_Svc_Handler, ACE_SOCK_Acceptor, ACE_INET_Addr> acc; + + can be replaced with + + template <class SVC_HANDLER, class PEER_ACCEPTOR> + class ACE_Acceptor { /* ... */ + virtual int open (const PEER_ACCEPTOR::PEER_ADDR &); + }; + + that are used like this: + + ACE_Acceptor <My_Svc_Handler, ACE_SOCK_Acceptor> acc; + + i.e., the ACE_SOCK_Acceptor maintains a "trait" that the + ACE_Acceptor uses to determine the appropriate addr. This is + more concise and less error-prone than the current scheme that + requires you to pass into the ACE_INET_Addr separately (ugh). + + Note that the trick to making all this work is to typedef the + PEER_ADDR trait into the ACE_SOCK_Acceptor class, as follows: + + class ACE_SOCK_Acceptor { + public: + typedef ACE_INET_Addr PEER_ADDR; // Trait... + }; + + Unfortunately, none of the C++ compilers (e.g., SunC++ 4.0.1, + G++ 2.7.0) support this stuff yet... Therefore, I've added + a set of macros that that will toggle back and forth between + whichever approach works, depending on the setting of + ACE_HAS_TEMPLATE_TYPEDEFS. Hopefully, over time compilers will + support this stuff correctly and life will become easier. + + * libsrc/ASX/Message_Queue: Changed all occurrences of the S_MUTEX + and S_CONDITION macros to ACE_SYNCH_MUTEX and + ACE_SYNCH_CONDITION in order to conform to the new ACE namespace + control conventions. + + * libsrc/Connection/Acceptor: Modified the Acceptor class to split + it into two classes: ACE_Acceptor (which implements a very + simple, very concise version of the Acceptor pattern, without + all the extra strategy mechanisms, etc.). These strategies have + now been factored out into a new class called + ACE_Strategy_Acceptor. The point of these changes is to "keep + simple things simple, but enable powerful extensions when + necessary." All the test programs that utilized the earlier + strategy version of the Acceptor have been updated to the the + Strategy_Acceptor instead. + + * libsrc/Connection/Connector: added two new protected methods, + connect_svc_handler() and activate_svc_handler(). These methods + allow subclasses to override the Connector's strategies for + connection establishment and concurrency. In addition, it makes + the pattern much easier to explain via the Connector pattern and + also is more similar to the Acceptor. + +Wed Oct 4 18:45:58 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * apps/Orbix-Examples/Event_Comm: Fixed the examples in this + directory so that they compile with the new ACE. + +Tue Oct 3 17:33:46 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * include/makeinclude/rules.nested.GNU: Added support so that + ACE can now be built in parallel using the -jN option of GNU + make. To accomplish this, just type + + % make MAKEFLAGS=-j2 + + on the command line and the "-j2" flag will be passed through to + the make hierarchy. Once the SunC++ compiler supports parallel + makes correctly (Template.DB causes problems) this will allow me + to tke advantage of my new dual-CPU SPARCstation 20!!! + +Mon Oct 2 13:34:14 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Connection: Cleaned up some of the code related to + Time_Values * by adding a new method call time_value() to the + ACE_Synch_Options class. + + * libsrc/Service_Config/Service_Record: Changed things a bit so + that we don't have to include "ace/Stream.h" in + Service_Record.h, but instead use forward decls of the + appropriate types. This breaks a circular dependency that was + causing problems for GNU C++. Thanks to John Hutchinson + (hutchiso@epi.syr.ge.com) for finding this problem. + +Sat Sep 30 13:45:08 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Changed all uses of typedef PARENT to inherited, which is less + obtrusive. + +Fri Sep 29 01:33:54 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Misc: Completed the new OS class, which will be used + shortly to remove all direct UNIX system calls in ACE. + + * libsrc: Completed redocumented the header files for almost all + of ACE. The goal was to document all the methods in all the + classes. This has most been achieved (only a few minor changes + remain). The result is *much* better manual page entires in + ./man/man3, as well as much more consistent header files and + overall documentation for ACE. + + * libsrc/Reactor/Reactor: Changed all uses of get() to + handler_i(). Also changed the check_connections() method to + check_handles(). Note that all these changes are invisible to + apps... + +Thu Sep 28 01:22:36 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/IPC_SAP/Addr/SPIPE_Addr: Changed all occurrences of + {get,set}_user_id() and {get,set}_group_id() to user_id() and + group_id() in order to be more consistent with other parts of + ACE. + + * libsrc/ASX/Task.C (module): Modified the implementation of + several Task helper methods (e.g., sibling()) so that they don't + crash if there is not Module associated with the Task. + + * libsrc/ASX/Stream: Removed the sync_ data member from the + private part of Stream since it didn't seem to be used for + anything. + + * libsrc/ASX/Map_Manager.C (bind): Changed the type of the INT_ID + to bind() from INT_ID to const INT_ID &. + + * libsrc/IPC_SAP/Addr/Addr: Moved some methods around in the *.i + file to the *.C file in order to be smarter about inlining. + + * libsrc/Misc/Auto_Ptr.h: Added a new pair of classes called + "auto_ptr" and "auto_array_ptr". These implement the ANSI/ISO + C++ standard auto_ptr mechanism, which helps to write + exception-safe code. The code is based on material from Jack + Reeves (jack@fx.com) and Dr. Harald M. Mueller + (mueller@garwein.hai.siemens.co.at). + + * libsrc/Threads/Synch_T.h (ACE_Null_Condition): Changed the + behavior of Null_Condition::{signal,broadcast} so that they + return 0 rather than setting errno = ETIME and returning -1. + +Wed Sep 27 00:16:01 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Threads/Synch: Fixed a bug with class ACE_Barrier: count_ + wasn't being set properly. + + * tests/Threads/test_barrier.C (main): Fixed a stupid bug + in the ACE_Barrier -- the main function was exiting, thereby + destroying the barrier! + + * tests/IPC_SAP/{SOCK,TLI}_SAP: Added test cases to exercise the + new reuse_addr feature of SOCK_Connector and TLI_Connector. + + * libsrc/IPC_SAP/{SOCK,TLI}_SAP/{SOCK,TLI}_Connector: Implemented + the new behavior for reusing a local address. Also fixed a few + error cases that would have lead to descriptor leaks. + + * libsrc/IPC_SAP/SOCK_SAP/SOCK.C (open): Modified a few return + values and comparisons to ease the transition to WIN32. + + * libsrc/ASX/Task.C (ACE_Task): Changed the behavior of + Task::activate() so that it uses the + ACE_Service_Config::thr_mgr() Singleton if no thread manager has + been associated with a Task when it becomes an active object. + + * libsrc/Service_Configurator/Service_Config: Added a new static + method to class Service_Config called thr_mgr(). This static + method behaves as a "Singleton" and provides a convenient + default thread manager that is available to all threads + throughout a process. + + * libsrc/IPC_SAP: Changed all the IPC_SAP/*_SAP/*_Connector.[hiC] + files and the Connection/Connector.[Chi] class in order to add + "reuse_addr" behavior consistent with the Reactor. This enables + the client to specify that the "local_addr" should be reused + (e.g., via SOCKREUSEADDR), even if its "2 minute wait" time + hasn't elapsed yet. The libsrc/Connection/Connector.[Chi] files + were also changed to support this new interface. + + * libsrc/Log_Msg/Log_Msg.C (log): Fixed a mistake in Log_Record + caused by the new thread-safe storage enhancement. The data + being logged was being rounded up incorrectly. Thanks to Daniel + Proulx (daproulx@qc.bell.ca) for reporting this. + + * libsrc/Reactor/Signal.i (operator): Made a minor change to the + definition of operator struct sigaction * to work around a bug + with the HP/UX C++ compiler (lame, lame, lame)... + + * libsrc/Service_Config: Changed all occurrences of + ACE_Service_Config::reactor (which was originally a globally + accessible public method of class ACE_Service_Config) to + ACE_Service_Config::reactor () (i.e., made the reactor a + Singleton implemented by a static method). This was long + overdue and will fix all sorts of niggling problems with order + of initialization since the reactor() method can do "lazy + creation" of Reactors now, i.e., create one the first time it is + referenced. In addition, changed the + ACE_Service_Config::svc_rep to ACE_Service_Config::svc_rep () in + the same manner. + + * Changed all occurrences of the form: + + *_Stream stream; + *_Connector con (stream, remote_addr); + + if (stream.get_handle () == ACE::INVALID_HANDLE) + ... + + To + + *_Stream stream; + *_Connector con; + + if (con.connect (stream, remote_addr) == -1) + ... + + which is cleaner and less error prone with respect to + UPIPE_Stream (which doesn't have a valid handle once it's + connected). + + * Changed all occurrences of get_handle () == -1 to get_handle () + == ACE::INVALID_HANDLE to help smooth the move to WIN32... + + * libsrc: Created a new directory called Shared_Memory and moved + the Shared_Malloc_MM and Shared_Malloc_SV classes from the + ./Shared_Malloc directory to here, where they are now called + Shared_Memory_MM and Shared_Memory_SV. This is a better + name/place for them since they never really had anything to do + with malloc in the first place! What remains the Shared_Malloc + is the Malloc.* and Memory_Pool.* classes, which are typically + used for truly shared malloc/free. + + * apps/Gateway/Gateway: added new logic to the Gateway to enable + it to specify which local port to bind() to. + +Tue Sep 26 21:17:29 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Connection/Strategies.C (open): Added a return 0; at the + end of the ACE_Thread_Strategy::open method. + + * tests/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.C: + Made CLI_Stream a template so that we don't have to worry about + multiple includes of classes... + +Mon Sep 25 01:41:27 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/IPC_SAP: Revised the close() method of TLI_SAP and + SOCK_SAP so that they don't try to close down a handle that == + ACE::INVALID_HANDLE. + + * Changed all uses of ::free ((char *) ...) to ::free + (ACE_MALLOC_T (...)) to work around inconsistent prototype + problems with some compilers. + + * include/ace/sysincludes.h: Changed ACE_MALLOC_TYPE to + ACE_MALLOC_T which is a bit less verbose... + + * libsrc/Service_Configurator/Makefile (BUILD): Fixed the argument + to sed from -s (which is invalid) to -e (which is valid). + Thanks to Doug Ritter (dougr@guilder.datalytics.com) for + noticing this. Also used sed to do a more elegant fix on the + age-old problem of inconsistent prototypes for free() and + realloc()... + + * libsrc/IPC_SAP/UPIPE_SAP: Rewrote all the UPIPE_* classes to + remove any dependencies on class UPIPE. This class appears to + be unnecessary since it mimics the behavior of class SPIPE. To + simplify the behavior of the UPIPE_* classes, they now inherit + from the SPIPE_* classes where appropriate. + + * libsrc/IPC_SAP/UPIPE_SAP: Changed the semantics of the + UPIPE_Connector and UPIPE_Acceptor connection methods so that + they close down the SPIPE_Stream after a connection is + established successfully. This is important to conserve + descriptors. + + * libsrc/Misc: Created a new class called OS, which encapsulates + *all* of the UNIX system calls and library routines within a + single class. The rest of ACE will program only to the methods + in this interface, which will make it much easier to port to + other versions of UNIX (and WIN32!). + +Sun Sep 24 11:49:47 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/IPC_SAP/SOCK_SAP: Conditionally compile the LSOCK_* stuff + if the OS platform (e.g., Linux) doesn't support it. + + * Changed all occurrences of ACE_HAS_NO_... to ACE_LACKS_... in + all the config*.h files and the headers/source. This reads + better... + + * Changed all uses of (1) Acceptor::peer_acceptor_ to + Acceptor::acceptor(), (2) Svc_Handler::peer_ to + Svc_Handler::peer(), and (3) Connector::peer_connector_ to + Connector::connector() to make the code more abstract and + resilient to future changes. + + * include/ace/sysincludes.h: Added a new macro called + ACE_NEW_RETURN that provides a useful abstraction for + expressions involving operator new since we can change memory + allocation error handling policies (e.g., depending on whether + ANSI/ISO exception handling semantics are being used). + + * libsrc/Threads/Thread.C: Changed things a bit so that if + ACE_MT_SAFE == 0 then Thread::self() returns 1, regardless of + whether the platform supports threads. + + * Went through the entire library and (hopefully) made sure that + all calls to global system calls and library routines are + prefixed with "::". + + * libsrc/Misc/Get_Opt.C: Changed this class to use the Log_Msg + logging mechanism rather than stderr... + + * tests/Misc: Added a new test program to test the Profile_Timer. + + * tests/Reactor/misc: Added a new test program to test the + Handle_Set. + + * libsrc/Service_Configurator: Changed the error messages in + Svc_Conf.y and Svc_Conf.l to go to the ACE Log_Msg logging + mechanism rather than stderr... + + * libsrc/Connection/Acceptor: Modified the Acceptor and + Oneshot_Acceptor classes so that they take advantage of the new + ACE_Creation_Strategy, ACE_Accept_Strategy, and + ACE_Concurrency_Strategy components. This will make is easy to + define Acceptors that can be flexibly configured to use various + creation strategies (e.g., dynamic linking, singletons, dynamic + memory creation, etc.) for making Svc_Handlers. + + * libsrc/Connection/Svc_Handler: Added several new classes -- + ACE_Creation_Strategy, ACE_Accept_Strategy, and + ACE_Concurrency_Strategy -- that form the heart of the new + ACE_Acceptor implementation. These classes define the creation, + passive connection acceptance, and concurrency strategies + employed by the Acceptor factory when it receives a connection + from a client. + + * libsrc/Connection/Acceptor: Modified the implementation of the + Acceptor and the Oneshot_Acceptor. These classes are no longer + related by inheritance since they behave in fundamentally + different ways and sharing code was making it hard to write and + use these classes correctly. + + * libsrc/Misc/Misc: Moved the enum INVALID_HANDLE from IPC_SAP.h + to Misc.h since this is actually more general than just the + sockets stuff and we need to be portable to WIN32... Therefore, + any code that originally said ACE_IPC_SAP::INVALID_HANDLE should + now be ACE::INVALID_HANDLE. + + * Removed the ACE_OMIT_SERVICE_CONFIGURATOR flags. These are + annoying -- anyone who wants to subset ACE should be responsible + for doing this stuff. + +Fri Sep 22 22:36:33 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Threads/Thread_Spawn.C: Greatly simplified the + implementation of Thread_Spawn by leveraging the new class Task + semantics for activate(). Now, all the concurrency activation + mechanisms necessary to create active objects are associated + with a Task and all the Thread_Spawn needs to do is to define a + new make_svc_handler() Factory Method to create a SVC_HANDLER + and activate it! + + * libsrc/ASX/Task.C: Tightened up the semantics of Task::activate + (which turns a passive object into an active object, i.e., one + with its own thread). Now, if an object is activated more than + once it ignores the other requests, unless the force_active + parameter is enabled. Moreover, activate() now takes a + parameter that indicates the number of threads to allocate for + the Task. This makes it simple to have a "thread pool" + associated with a Task. + +Thu Sep 21 00:49:55 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * tests/Connection: Updated the CPP-acceptor and CPP-connector to + use the underlying Acceptor and Connector patterns more + robustly. Also added new hooks to include a Service_Config + component so that integrating this with the ACE dynamic linking + scheme will be a snap! + + * libsrc/Connection/Acceptor.C: Revised the Oneshot_Acceptor to be + robust in situations where it isn't given a Reactor *... + + * apps/Logger: Fixed a couple of minor problems with *.i files + being included when __INLINE__ is set. This should help G++ + compiler ACE better... + + * libsrc/Reactor/Reactor: Enhanced the Reactor::notify() method so + that it takes both an Event_Hander * and a Reactor_Mask, which + it passes to the Reactor's main event loop thread via the pipe. + The event loop thread uses this mask to determine which method + to invoke. This new feature is due to the insight of Karl-Heinz + Dorn (kdorn@erlh.siemens.de). + + * libsrc/Connection/Connector: Fixed a braino in + Connector::handle_output, which was using ::getpeername() to + check whether a connection has been established with a peer. + Naturally, this only works for sockets, and doesn't work at all + for TLI or SPIPEs... + + * libsrc/IPC_SAP/Addr/SPIPE_Addr.C (set): Changed the return type + of this method to "int" in order to conform to the types + expected by the Acceptor/Connector patterns. + + * Removed all uses of the global scope "::" for all variables and + methods that are not UNIX system calls or library calls in + preparation to change over to the new OS class (requested by + Siemens). + +Wed Sep 20 14:39:08 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/IPC_SAP/SPIPE_SAP: Renamed the SPIPE_IO classes to + SPIPE_Stream to be consistent with the other parts of the ACE + library. Updated all parts of the library to reflect this + change. + + * tests/Service_Configurator: Moved the current contents of this + directory into a new directory called IPC-tests. Created a new + directory called Connection-tests where the dynamic linking + examples for Siemens will go. + + * libsrc/Reactor/Signal: Made a bunch of minor changes to support + signal handling on SunOS 4.x platforms. Thanks to Aniruddha + Gokhale <gokhale@cs.wustl.edu> for help with this. + + * libsrc/Threads/Synch.h: Modified the #ifdefs a bit so that + Synch_T.h gets included regardless of whether ACE_HAS_THREADS. + + * libsrc/Threads/Synch_Options: Added a new set() method to make + it possible to initialize the Synch_Options from outside the + constructor. + + * libsrc/Connection/Svc_Handler.C: Added checks within the + ACE_Svc_Handler so that if we are given a NULL Reactor we don't + crash! + + * libsrc/Mem_Map: Tidied up this class and added comments to the + header so that the class2man has something to generate manual + pages from! + + * libsrc/Misc/Misc: Added a new method called "round_to_pagesize", + which was previously in Mem_Map. This is a better place for it + since other parts of ACE (e.g., Shared_Memory) use it. + + * libsrc/Misc/Misc: Added a new method called "get_file_size", + which was previously in Mem_Map. This is a better place for it + since other parts of ACE might want to use it. + +Tue Sep 19 00:24:41 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Released a beta version of ACE 3.3.1 for G++ testing. + + * libsrc/IPC_SAP/SOCK_SAP/SOCK_Dgram.C: Removed a stray INLINE + that was causing problems for G++. Thanks to E. Jason Scheck + <jasons@ims.com> for reporting this. + + * libsrc/IPC_SAP/Addr/INET_Addr: Improved the documentation for + this class and also added new semantics to the constructor and + set() method so that a "ip_addr:port_number" tuple can be given + as a single string (e.g., "1234:tango.cs.wustl.edu" or + "1234:128.252.166.57"). This is useful since it gives a uniform + interface for addressing for Internet domain, UNIX domain, and + SPIPE domain addresses... Updated the ./tests/Connection tests + to use this form (which is nice since now they are all very + orthogonal!) + + * tests/Connection: Created a whole new suite of tests that + exercise the connection patterns for all of the relevant IPC + mechanisms (e.g., SOCK_SAP, TLI_SAP, SPIPE_SAP, and UPIPE_SAP). + + * bin/clone.C: fixed the first #include so that it uses #include + "ace/sysincludes.h". Thanks to Alex V Maclinvosky + <alexm@teltrunk1.tait.co.nz> for noticing this. + +Mon Sep 18 01:52:07 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/ASX/Message_Queue.C (close): Fixed yet another problem + with variables being defined in for loops. G++ is good for + detecting this ;-). + + * libsrc/Threads: Moved all the template classes from Synch.* into + Synch_T.* in order to make it possible to compile templates with + G++. Thanks to E. Jason Scheck <jasons@ims.com> for suggesting + this. + + * libsrc/IPC_SAP/UPIPE_SAP: Make a number of changes to ensure + that all the UPIPE_SAP classes conform to the same interface as + all the other ACE IPC classes. + + * Changed all occurrences of THR_FUNC to ACE_THR_FUNC to protect + the global namespace better. + +Sun Sep 17 13:36:23 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * tests/ASX/Message_Queue: Fixed a typo in these test programs + that caused a segfault since a vararg parameter was omitted on a + call to the Log_Msg::log() method. Maybe iostreams isn't so bad + after all... ;-) + + * apps/Logger/Service_Configurator_Logger/Thr_Server_Logger: fixed + a stupid error that was caused by some mods I made after ECOOP + to update the threaded logging server. When I changed the + Thr_Logging_Acceptor so that it no longer inherited from the + Logging_Acceptor I forgot to redefine the init() method... + + * man: Totally regenerated the ACE manual pages using the new + versions of the OSE tools provided by Karl-Heinz Dorn + (kdorn@erlh.siemens.de). + + * Changed all occurrences of MT_SYNCH and NULL_SYNCH to + ACE_MT_SYNCH and ACE_NULL_SYNCH, respectively. This is + consistent with the ACE naming conventions and had been an + oversight when I renamed everything earlier. + + * Fully built and tested ACE with the __INLINE__ flag enabled. + This will generate code with many small methods in the library + inlined. Had to fix a bunch of minor things to allow this to + work without compilation-order dependency problems. + + * libsrc: Made a bunch of changes to the way that header files are + included internally to ACE in order to break compilation-order + dependencies. This is necessary to support GNU G++'s lame + handling of templates. None of this stuff should affect + application code. + + * tests: Added a whole new slew of tests for the remaining parts + of ACE that weren't currently included in ./tests. This stuff + exercises ACE components like the Log_Msg logger and factors all + the #if defined (DEBUGGING) code out of the ./libsrc directory + tree and puts it in the ./tests directory tree, where it + belongs. + + * Changed all uses of the error macros LM_* to ACE_* in order to + avoid name collisions with other libraries, frameworks, and + toolkits. In addition, changed all uses of the error enumerals + LOG_ to LM_ in order to avoid a conflict with system #defines in + <sys/syslog.h>. + + In order to change these automatically, I used the following + UNIX command sequence: + + % find . -type f -print | xargs perl -p -i -e 's/LM_/ACE_/g' + % find . -type f -print | xargs perl -p -i -e 's/LOG_/LM_/g' + +Sat Sep 16 11:55:18 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * tests/Threads: Added a new test for Thread_Specific storage. + + * Added a new platform/compiler configuration flag called + ACE_TEMPLATES_REQUIRE_SOURCE that must be set for compilers + (e.g., GNU G++) whose template mechanism must be able to + see the source code (i.e., the *.C files). Changed *lots* of + header files to enable this... Also had to change the + corresponding *.C files so that they wouldn't get included + twice... + + * libsrc/Connection: redid the implementation of Acceptor, + Connector, and Svc_Handler to get more control over the scope of + #defines like #define SH SVC_HANDLER, etc. + + * libsrc/Threads/Thread_Spawn: Totally redid the implementation of + Thread_Spawn to use the Acceptor class template. This greatly + reduces the amount of code to implement the Thread_Spawn! + + * libsrc/Threads/Thread_Spawn: Moved the Thread_Spawn + implementation into the ./libsrc/Threads directory rather than + in the ./libsrc/Service_Configurator directory since it deals + with threading and thus belongs in the other place. + +Fri Sep 15 00:25:51 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Threads/Token.i (tryacquire): Added a cast to fix passing + a const pointer to a function that was expecting a non-const. + Thanks to E. Jason Scheck <jasons@ims.com> for reporting this. + + * libsrc: Added a bunch of changes to enable G++ to compile ACE. + A lot of this involves moving around info in header files so + that templates can be dealt with using the relatively lame GNU + C++ repository scheme. Thanks to E. Jason Scheck + <jasons@ims.com> for all his help in this. + + * libsrc/Synch: created Synch_Options.C out of Svc_Handler.C, so + that Svc_Handler.C could be "template pure"; all the other files + were already separated. Thanks to E. Jason Scheck + <jasons@ims.com> for recommending this. + + * Makefile (clone): Added a tiny fix that solves a weird problem + that arises with symbolic links on HP/UX. Thanks to Jam Hamidi + (jh1@osi.com) for tips on how to fix this. + +Thu Sep 14 10:55:30 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * apps/Gateway/Gateway/Channel.C (route_message): Updated the main + routing code to check for whether a channel is_active() + (i.e., is actually connected) before trying to send messages + to it. This was originally done in the Set class iterator, but + I revised that to make it more reuseable and to workaround bugs + in the HP/UX compiler so I had to update the main code... + + * libsrc/Threads/Thread_Specific: Added a new method to called + ts_object () to class ACE_Thread_Specific that get the + thread-specific object for the key associated with this object. + Returns 0 if the data has never been initialized, otherwise + returns a pointer to the data. This is useful since now you can + query a thread-specific storage mechanism to see if there's ever + been a thread-specific object created *without* having to + actually create one if one hasn't been created yet! Thanks to + Detlef Becker (beckerd@erlh.siemens.de) for pointing this out. + + * include/makeinclude/platform_sunos5_sunc++_orbix.GNU (LIBS): + Changed the default compilation strategy for SunOS 5.x machines + to use -mt. This seems to be necessary to build robust + libraries that are thread-safe. Thanks to Phil Mesnier + <phil@yakko.envision.com> and Chris Cleeland + <chris@envision.com> for hounding me until I changed the + existing solution. If you *don't* want this behavior you need + to remove -mt from the platform_macros.GNU file and and remove + the ACE_HAS_THREADS and ACE_MT_SAFE flags, etc. from the + config-sunos5.*.h files. + + * libsrc/Shared_Malloc/Memory_Pool.C (ACE_MMAP_Memory_Pool): Added + a new parameter to the constructor called write_each_page that + if enabled forces a write to each page to ensure that space is + allocated from the file system (otherwise, we can end up failing + due to optimisitic resource allocation...). Thanks to Phil + Brooks <phil_brooks@mentorg.com> for detecting this issue and + implementing a solution. + + * include/ace/sysincludes.h: Added #ifdef support for HP/UX, which + fails to properly wrap <sys/mman.h> with an extern "C" block. + +Mon Sep 11 01:39:35 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Connection/Connector.C (handle_input): Changed the call + to Svc_Handler::close() to accept the default value of 0 rather + than -1... Thanks to Mark Seaborn + <mseaborn@itthp1.comm.mot.com> for noticing this. + + * libsrc/Connection: Changed all uses of ADDR to PEER_ADDR to + avoid a name clash in Linux... Thanks to James Morris + <jmorris@aurora.apana.org.au> for finding this. + +Sun Sep 10 03:56:18 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Threads/Synch: Added support for "barrier + synchronization" to ACE in the form of ACE_Barrier. Thanks to + Bruce Worden (bruce@betsy.gps.caltech.edu) for suggesting this + and pointing me in the right direction. + + * tests/Threads: Added a test for the new barrier synchronization + mechanism. + +Sat Sep 9 11:58:16 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Reactor/Reactor: Changed Reactor::max to Reactor::max3 to + avoid problems with conflicting names of macros in Sun header + files! + +Mon Sep 4 14:34:52 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Reactor/Signal: The new ACE_Signal_Handlers mechanism + appears to be working! There's a test in ./tests/Reactor/misc + called test-signal.C that illustrates how all this works. + + * libsrc/Reactor/Signal: Added several new methods to + ACE_Sig_Action to make life easier to implement the new + ACE_Signal_Handler code... + + * libsrc/Reactor/Signal.C (ACE_Sig_Action): Changed the order of + the arguments to the ACE_Sig_Action constructor. It's almost + always the case that you want to vary the SignalHandler, but + only rarely do you want to vary the mask or flags. By + reordering this, it's easier to get the correct default values + without adding extra junk... + +Mon Sep 4 01:11:29 1995 Tim Harrison (harrison@tango.cs.wustl.edu) + + * libsrc/IPC_SAP/SOCK_SAP/SOCK_Dgram_Multicast: added support to + allow a port to be reused for multicast sockets. This is useful + if you are multicasting to multiple processes, some of which are + on the same host! + + * libsrc/ASX/Map_Manager: Fixed an odd bug that must have gone + undetected for a long time somehow. Basically, the "is_free_" + field of the ACE_Search_Structure struct was never being set to + it's correct initial value of 1. I don't know how this didn't + surface before... At any rate, it is fixed now... + + * include/ace/sysincludes.h: Changed the inline methods for + SET'ing and CLR'ing bits to be macros in order to get cheap + polymorphic behavior... Also changed them to use the prefix + "ACE_" to avoid namespace pollution. Changed all dependencies + in the source code (only a few...). + + * libsrc/Reactor/Signal: Added a new class called + ACE_Signal_Handlers, which subclasses from ACE_Signal_Handler. + This new class implements the semantics required for Siemens. + For example, this class allows multiple signal handlers to be + registered for the same signal. It also makes SA_RESTART the + default mode. Note that by default, the Reactor uses the + original ACE_Signal_Handler semantics. If you want the new + semantics, simply pass the Reactor a pointer to + ACE_Signal_Handlers. + + * include/ace/sysincludes.h: Removed the automatic inclusion of + ./libsrc/Misc/Misc.h from sysincludes.h since this was causing + problems with include file ordering. + +Sun Sep 3 00:22:11 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Reactor/Signal.C (remove_handler): Moved a definition of + ACE_Sig_Action out of an inner block to avoid portability + problems. + + * libsrc/ASX/Map_Manager: Improved the documentation of this class + and fixed up a couple of problems with the scope of loop + indexes. + + * libsrc/Misc/{Stack,Set}: Added this new file that contains a set + of Stack and Unordered Set implementations. The Unordered Set + is used in various places in ACE (e.g., libsrc/Reactor/Signal + and apps/Gateway/Gateway/Routing_Entry). + + * libsrc/Log_Msg/Log_Msg: Moved the definition and declaration of + Thread_Specific<Log_Msg> ace_log_msg from this directory to + ./libsrc/Misc/Misc.h in order to cleanup the namespace and also + to help make this work on DEC platforms... + + * libsrc/Reactor/Signal: Changed ACE_Signal_Handler from a static + class to a non-static class in order to allow subclassing. This + is necessary to support the Siemens requirements. + + * libsrc/Shared_Malloc/Memory_Pool: Modified ACE_MMAP_Memory_Pool + so that it no longer stores the name of the backing store in a + static character array (which made it impossible to have more + than one of these at a time...). The new version stores the + name in each ACE_MMAP_Memory_Pool object. It also selects a + name that won't conflict with other names by using ::mktemp. + + * tests/Shared_Malloc/test_malloc.C (parse_args): Fixed two stupid + omissions of "break" when parsing command-line arguments. Isn't + C++ great?! (NOT)... + + * apps/Synch-Benchmarks: Came up with a killer solution to the + nagging problem of POSIX Pthread's lack of an integral thread id + (a la Solaris threads thr_self()). The solution leverages off + of our new ACE_Thread_Specific wrapper to provide the necessary + functionality. Thanks to Reginald S. Perry (perry@zso.dec.com) + for triggering the thoughts that lead to this solution... + +Sat Sep 2 17:00:46 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/IPC_SAP/TLI_SAP/TLI_Acceptor: Changed the implementation + of ACE_TLI_Acceptor so that ACE_TLI_Request is defined inside + the TLI_Acceptor.C file (this is the so-called "Cheshire Cat" + technique). This clean up the code and the global namespace a + bit. + +Fri Sep 1 00:53:47 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Released new version of ACE 3.3 + + * libsrc/IPC_SAP/UPIPE_SAP/UPIPE.C: Fixed a small problem with + failing to #ifdef this file correctly if we don't have + threads... Thanks to John Morey (jmorey@hitel.com) for + reporting this. + + * tests/ASX/CCM_App/svc.conf: Fixed the svc.conf file so that it + looked in the .shobj directory rather than the .obj directory. + + * Released new version of ACE 3.2.9... + + * libsrc/Log_Msg/Log_Msg: Added a new field called "restart_" to + the thread-specific storage. This will be used to control + whether system calls are restarted when interrupted. + + * Changed inheritance syntax from + + class xxx + : public yyyy + { + }; + + to + + class xxx : public yyyy + { + }; + + so that the OSE tools would work correctly. + +Thu Aug 31 00:12:40 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/IPC_SAP/UPIPE_SAP: Changed all uses of UPIPE_Addr to + SPIPE_Addr since they were the same thing. This also allows + much reuse of code... + + * libsrc/IPC_SAP/{TLI_SAP,SOCK_SAP,SPIPE_SAP}: fixed the + "complete" method for these classes so that it uses the new + ACE::handle_timed_complete() method in libsrc/Misc. This cleans + up the code by merging common logic. + + * libsrc/IPC_SAP/{DEV_SAP,FILE_SAP,SPIPE_SAP}: fixed the "connect" + method for these classes to conform to the API used by the + SOCK_SAP and TLI_SAP wrappers. In addition, cleaned up the code + so that common logic was pushed into a new method in libsrc/Misc + called ACE::handle_timed_connect(). + +Wed Aug 30 00:20:18 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Connection/Acceptor.C (open): Fixed this method so that + it returns a value on all paths through the code... + + * libsrc/IPC_SAP/TLI_SAP/TLI.C (ACE_TLI): Moved the option + allocation code from the TLI::open() method into the TLI + constructor in order to make sure it is always called! + + * libsrc/IPC_SAP/DEV_SAP/DEV_Connector: Changed the signature of + the DEV_Connector::connect method to allow users to specify + flags, permissions, and timeouts (this is now consistent with + other parts of ACE). + + * libsrc/IPC_SAP/FILE_SAP/FILE_Connector: Changed the signature of + the FILE_Connector::connect method to allow users to specify + flags, permissions, and timeouts (this is now consistent with + other parts of ACE). + + * tests/IPC_SAP/TLI_SAP: Updated the test code to check the new + timer support for connection establishment. + + * libsrc/IPC_SAP/TLI_SAP: Updated the code to make it conform to + the interfaces provided by SOCK_SAP. This primarily affected + the TLI_Acceptor and TLI_Connector classes in order to add + support for timed connects and accepts. + + * libsrc/Reactor/Signal.C: Modified Signal_Handler::dispatch so + that it saves/restores errno to prevent it from being corrupted + by the handle_signal callback. Thanks to Detlef for suggesting + this. + + * libsrc/Shared_Malloc/Memory_Pool: Changed the name of + ACE_Local_Memory_Pool to ACE_Sbrk_Memory_Pool. Then added a new + version of ACE_Local_Memory_Pool that uses the C++ operator new + to acquire chunks of memory. This enables the ACE Malloc class + to integrate with existing programs that use new/delete. Thanks + to Karlheinz for suggesting this. + + * libsrc/IPC_SAP: Added the UPIPE mechanism donated by SIEMENS. + This provides an intra-process IPC mechanism that has the same + API as the interprocess and network mechanisms. + + * Reran catman on ./man/windex. Thanks to Dieter Quehl + (quehl@csaserv.erlh.siemens.de) for reporting the need for this. + + * Released new version of ACE 3.2.9... + + * tests: Fixed a bunch of minor problems that occurred when + building on HP/UX. Thanks to John Morey + (jmorey@hitel.com) for reporting these. + + * apps/Gateway/Gateway/Peer_Message.h: Changed the default values + of the parameters to Peer_Addr so they aren't trying to assign + negative values to unsigned chars! Thanks to John Morey + (jmorey@hitel.com) for noticing this... + +Tue Aug 29 18:52:17 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Thread/Thread_Specific: Changed the constructor so + that it will take an initial TYPE *, which will be used to + initialize the thread-specific object. This is necessary to + support the changes to ACE_Task described in the following + bullet. + + * libsrc/ASX/Task: Added a new class called ACE_Task_Exit to + Task.C. This class is used in conjunction with + ACE_Thread_Specific to keep exit information for a Task in + thread-specific storage. This ensures that the Task::close() + method will get called no matter how the thread exits (e.g., via + Thread::exit() or by "falling off the end of Task::svc_run"). + +Mon Aug 28 09:54:35 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Released new version of ACE 3.2.9... + + * libsrc/Reactor/Handle_Set.C: changed the type of MSB_MASK from + u_long to ACE_UINT32 to handle problems with the Alpha's 64 bit + longs... + + * libsrc/Threads/Thread_Specific: Continued to try and get this + class to build correctly on other platforms... I think I've + just about got it working right now... + + * libsrc/IPC_SAP/IO_SAP/IO_SAP: Added installation flags that + indicate whether the platform has terminal ioctl flags like + TCGETS and TCSETS. I know that SunOS 5.x has these, but I'm not + sure about other platforms... + +Sat Aug 26 13:55:45 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Released new version of ACE 3.2.9... + +Fri Aug 25 09:05:09 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Threads/Thread_Specific.h: Fixed a typo that was causing + this file to fail on HP/UX. Thanks to Neil Cohen + (nbc@metsci.com) for finding this! + + * libsrc/IPC_SAP/DEV_SAP/DEV_IO: Added conditional support for + getmsg/putmsg calls in the DEV_IO class. This will make things + work correctly for platforms that don't support SVR4 STREAM + pipes. + + * libsrc/IPC_SAP/FILE_SAP/FILE_IO: Added the same fixes to FILE_IO + that I added to DEV_IO... + + * include/ace/sysincludes.h (MAXNAMELEN): Fixed a typo in + sysincludes.h that caused problems for the G++ compiler. + + * libsrc/Connection/Acceptor.C (handle_close): Removed a + diagnostic message that was getting printed if a + Oneshot_Acceptor had already been removed from the reactor (it's + ok for this call to fail). Thanks to Irfan Pyarali + (ip1@cec.wustl.edu) for noticing this! + + * libsrc/ASX/Task.C (ACE_Task): Fixed a bug in the constructor + that prevented a Message_Queue from being allocated + automagically. + +Thu Aug 24 16:47:14 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * include/ace/sysincludes.h: added support for 64 bit machines so + that Internet addresses are 32 bits, as they must be! + + * libsrc/Shared_Malloc/Malloc: Changed things so that MALLOC_STATS + is now *off* by default... (also changed the name to + ACE_MALLOC_STATS). + +Wed Aug 23 15:21:25 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * include/ace/config-osf1.h: Added support for thread-specific + storage. Please let me know if this breaks on OSF/1! + + * libsrc/Threads/Thread: Added support for the thread-specific + storage wrappers for both Pthreads and Solaris threads. Also, + rearranged some of the code to emphasize similarities between + Pthreads and Solaris threads. + + * libsrc/Threads/Thread_Specific: Updated this to remove "static" + from all the data members in this class since those should be + specific to an *instance* rather than to an instantiation of the + particular template class. Tim claims this works... + + * libsrc/Threads/Token.C: Fixed a couple of typos that misspelled + "assert" (jaysus...). Thanks to David Trumble + (trumble@cvg.enet.dec.com) for noticing this. + + * libsrc/Threads/Token.C (release): Fixed a very stupid bug that + was causing the Token never to become "unused"... No excuses + for this, except that Pthreads is partly responsible ;-) + +Tue Aug 22 11:36:58 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/ASX/Task: Changed the behavior of task so that it doesn't + try to delete the Message_Queue or Thread_Manager if it didn't + allocate them! Thanks to Karl-Heinz Dorn + (kdorn@erlh.siemens.de) for suggesting this fix. + + * libsrc/ASX/Message_Block: Changed the semantics for + Message_Block::end() so that it returns a pointer to 1 past the + end of the data. This is more consistent with toolkits like + STL. Also changed the behavior of Message_Block::copy() so that + it checks to make sure the data will fit in its buffer. + + * tests and apps: Revised a bunch of files to add #ifdef so that + TLI tests and apps are not compiled if the platform doesn't + support it... + + * Fixed a bunch of minor problems for HP/UX (which lacks TLI and + other common OS features). Thanks to Mark Seaborn + (mseaborn@itthp1.comm.mot.com) for noticing these. + +Mon Aug 21 00:19:29 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Misc: Changed the name of the class Argument_Vector to + ACE_ARGV. This is a bit more concise... UNIX programmer will + know precisely what argv is... + + * Updated all of ACE to use the new naming scheme, which prepends + all ACE classes with "ACE_". This is an important change since + it prevents ACE from polluting the namespace of applications + (unless they also prefix "ACE_" in front of their classes, which + is not very likely!). + + Since this change basically affects every single file in the + entire release, as well as all existing user code I've written a + perl script called "rename-ace.pl" to automate all of this. + This script is in $WRAPPER_ROOT/bin. To use it, simply type: + + % find . -type f -print | egrep '[Chi]$' | xargs rename-ace.pl + + Note that you will need to change the first line of + rename-ace.pl to point it to whereever perl is located on your + system. + + I've tested this on the entire ACE source code base and it seems + to work fine. Please be careful using it on your code, however, + since it may conflict with names that you use. When in doubt, + remove the '-pi' from the first line of the rename-ace.pl perl + script and replace it with '-p' (which is non-destructive). + Then run the commands above and check the output carefully. + When you're convinced that everything is ok, add the '-pi' back + again. Let me know immediately if you find any problems with + this scheme! + + * libsrc/Connection/Acceptor.C: Added a virtual destructor to the + Oneshot_Acceptor to make sure that descriptors are closed down + correctly. Thanks to Irfan (irfan@wuerl.wustl.edu) for + suggesting this. + + * libsrc: Change all occurrences of Shared_Memory to + SV_Shared_Memory to firmly indicate the origins of this + wrapper... + +Sun Aug 20 23:12:03 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/IPC_SAP: added the IO_SAP, DEV_SAP, and FILE_SAP + components donated by SIEMENS to the ACE release. + + * libsrc/ASX: Split the Message_Queue.* files into Message_Block.* + and Message_Queue.* in anticipation of the Windows NT port... + +Fri Aug 18 13:54:09 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Threads/Thread_Specific: Move the operator->() + method back into the *.C file in order to make HP/UX + happy... + + * apps/Gateway/Peer: Removed the Options.* files since they + weren't being used and they were causing problems on OSF/1... + + * libsrc/Misc/Profile_Timer: Factored common code together by + making a new typedef called Rusage that defaults to either + struct rusage or prusage_t, depending on installation flags. + Fixed a couple places in the code that were depending on the + prusage_t type (which is now the Profile_Timer::Rusage type...). + +Thu Aug 17 14:31:11 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Connection/Connector.h: Changed some typedefs in order to + keep the Centerline compiler from crapping out. I can't + *believe* how screwed up that compiler is when it comes to + templates... + + * Released new version of ACE 3.2.9... + + * libsrc/Threads/Synch: Fixed a bunch of typos that showed up + on OSF/1. Also tried to fix some other problems by removing + "const" from all the methods... + +Wed Aug 16 22:26:24 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Threads/Thread_Specific.h: Fixed another stupid bug + caused by a braino that failed to unconditionally include + Thread_Specific.i. Stuart Powell found this also... (thanks!). + + * libsrc/Threads/Thread_Specific.h: In Thread_Specific.h the + inlining macros were only included if threads were used. This + obviously didn't work for people without threads... I + moved the #endif for ACE_HAS_THREADS... back before the #ifdef + __INLINE__ stuff (e.g. to line 71). Thanks to Stuart Powell + (stuartp@ot.com.au) for suggesting this. + + * libsrc/Threads/Synch.h: Fixed a typo that manifested itself for + pthreads: Condition count_nonzero_ should obviously be + Condition<Mutex> count_nonzero_. Thanks to Rob Clairmont + (rclairmo@bnr.ca) for reporting this. + +Tue Aug 15 00:31:44 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Log_Msg/Log_Msg.C (log): Fixed a stupid typo (*format++ + should have been format++...). + + * libsrc/Misc/Trace.h: Move the class TSS_Int from within class + Trace to file scope and changed the name to ACE_TSS_Int to + handle problems with the HP/UX compiler. + + * include/ace/sysincludes.h: Added the word "struct" in front + of rusage to make things work on HP/UX. Thanks to Neil Cohen + (nbc@metsci.com) for reporting this fix. + + * apps/TokenServer/server/TokenMap.C: Fixed yet another problem + with scope of variables defined in for loops... + + * Released new version of ACE 3.2.9... + + * libsrc/Connector: Fixed a braino whereby I didn't use consistent + naming for my #defines (PA should have been PRC). Thanks to + Alex (alexey@ace.elektra.ru) for noticing this. + +Mon Aug 14 18:13:46 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/IPC_SAP/SPIPE_Acceptor: Modified the interface of open() + and accept() so they would conform to the SOCK_Acceptor and + TLI_Acceptor. This makes it possible to use SPIPE_Acceptor in + similar situations (e.g., Acceptor and Connector patterns). + + * libsrc/ASX/Stream: Fix a bug that occurred when trying to dump() + a linked Stream. + + * libsrc/Connection/Acceptor: Moved the body of the init() method + out of this class since it was unnecessarily dependent on the + INET_Addr domain addressing types. This required changes to the + ./apps and ./tests directory in order to add the init() method + to classes that used the default behavior. + + * libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Acceptor.C: Fixed close() so that + it will call fdetach(2) *before* closing down the descriptor. I + hope this will fix a problem noticed by people at SIEMENS. + + * tests/ASX/Event_Server/Event_Server/Options: Fixed a problem + with the default port numbers (they weren't using the values + from ./include/ace/testconfig.h). + + * include/ace/sysincludes.h (MAXNAMELEN): If MAXNAMELEN is not + defined by a platform then ACE sets it to be FILENAME_MAX, + which should be defined in stdio.h. Thanks to Todd Blanchard + (tblancha@evolving.com) for this suggestion. + +Sun Aug 13 17:02:57 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Service_Configurator/Parse_Node: Changed the name of + Function_Node::symbol (const void *) so that it won't give + those annoying warnings anymore... + + * libsrc/Reactor/Handle_Set: Moved the definition of MSB_MASK from + the header file into a static const within the .C file in order + to avoid overflow problems on certain compilers. + + * libsrc/Threads/Synch: Implemented bare-bones versions of + Semaphore and RW_Mutex for the POSIX Pthreads wrappers so that + they'll be more compatible with the Solaris threads wrappers. + The semaphore implementation uses a Condition object and a + Mutex, which should be a reasonable solution. The RW_Mutex is a + cop-out for now and just uses a Mutex (i.e., no extra + parallelism for readers...). If anyone has a good + implementation of RW_Mutex that they'd like to share please let + me know. + + * libsrc/Threads/Thread_Specific: Fixed the prototypes for copy + constructor and operator=, which were broken... Thanks to Alex + (alexey@ace.elektra.ru) for noticing this. + + * libsrc/Shared_Malloc/Memory_Pool.C: Added some casts to + MAP_FAILED to handle OSF/1. Thanks to Alex + (alexey@ace.elektra.ru) for noticing this. + + * libsrc/Threads/Token: Fixed things so that threads waiting for a + token wouldn't get screwed up by signals that occur... + + * include/ace/sysincludes.h: Changed the #ifdef + ACE_SELECT_USES_LONG to ACE_SELECT_USES_INT for HP/UX since + believe it or not, it really does use int, not long! + + * libsrc/SV_Semaphores: Fixed some weird problems that the HP/UX + compiler was having when trying to inline methods in this class. + As a consequence, I've rearranged the class to avoid inlining + non-trivial methods. Thanks to John Morey (jmorey@hitel.com) + for reporting these problems. + +Wed Aug 9 01:29:16 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Threads/Token: Added a tryacquire() method to become + interface compliant with other LOCK mechanisms. + +Sat Aug 5 09:18:29 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Connection: Fixed a couple of bugs when using + the Acceptor and Svc_Handler when ACE_OMIT_SERVICE_CONFIGURATOR + is enabled. Thanks to Stuart Powell (stuartp@ot.com.au) for + bringing this to my attention. + + * include/ace/sysincludes.h: Added a #ifdef for MAXNAMELEN to + handle systems (like HP/UX) that don't support it. + +Thu Aug 3 22:59:13 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Released new version of ACE 3.2.9... + + * libsrc/Reactor/Time_Value.i (normalize): Added new code to + perform normalization of Time_Values. Thanks to Hans Rohnert + (Hans.Rohnert@zfe.siemens.de) of SIEMENS for the suggestion. + +Tue Aug 1 00:19:00 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Changed all code that used Log_Msg::log() directly to use + LM_ERROR or LM_DEBUG. This will ensure that logging will work + with the new thread-specific storage implementation. + + * libsrc/Threads/Thread_Manager.i (open): Fixed this method so + that it is thread-safe when a Thread_Manager is resized. + + * libsrc/ASX/Map_Manager.i (open): Fixed this method so that it is + thread-safe when a Map_Manager is resized. + +Mon Jul 31 12:56:17 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Misc/Trace: Reimplemented the ACE Trace class to use the + new thread-specific storage wrapper. + + * libsrc/Log_Msg: Reimplemented the Log_Msg class to use the new + thread-specific storage wrapper. This shouldn't affect any + existing code that was careful to only use the LM* macros... + + * libsrc/Threads: Added a new class called Thread_Specific which + implements a C++ wrapper for SunOS 5.x thread-specific data + (this will also work for POSIX pthreads I believe). Thanks to + Tim Harrison (harrison@cs.wustl.edu) for coming up with the idea + for using C++ "smart pointers" to implement this. + + * libsrc/Reactor/Timer_Queue.h: Moved Timer_Node from within + Timer_Queue to outside Timer_Queue and renamed it to + ACE_Timer_Node. Unfortunately, some compilers still don't like + nested classes (ugh)... + + * Changed ACE_Synch_Options to be simply Synch_Options since it + is *not* an ACE private class... + +Sun Jul 30 00:07:28 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * include/makeinclude/README: Added a new #define called + ACE_HAS_THREAD_SPECIFIC_STORAGE, which does exactly what it + sounds like! So far, I know that Solaris defines this. I'm not + sure which other platforms do (perhaps OSF/1 does?). + +Fri Jul 28 14:53:45 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Fixed a bunch more problems with loop variables that were + uncovered with GCC 2.7. Thanks to Matt Stevens + (mstevens@ent.mrj.com) for noticing this. + + * apps/Logger/Service_Configurator_Logger: Added a new flag called + ACE_HAS_NO_STATIC_DATA_MEMBER_TEMPLATES which is necessary to + workaround bugs with GNU G++... Thanks to Matt Stevens + (mstevens@ent.mrj.com) for noticing this. + + * libsrc/Connection/Connector.C (cleanup_AST): Changed the + parameter list just a tad to try and fix a problem with + G++ (which doesn't seem to like unscoped typedefs in + argument lists or return values. + + * libsrc/Misc/Profile_Timer.i: Changed ::getrusage to be getrusage + to avoid problems with macros and scope operators... + + * include/ace/testconfig.h (ACE_DEFAULT_RENDEZVOUS): Changed the + value from /tmp/foo to /tmp/fifo.ace. Thanks to Neil B. Cohen + (nbc@metsci.com) for suggesting this. + +Thu Jul 27 12:30:06 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * apps/TokenServer/server/TokenHandler.C (abandon): Fixed a minor + bug that caused assert() to fail when a client abandoned a + Token. + + * libsrc/Reactor: Fixed a bug with the design of the Reactor's + Timer_Queue cancellation mechanism. The new mechanism is much + more robust since it ensures that timer_ids (used to cancel + pending timers) are unique up to values of greater than 2 + billion timers! As long as timers don't stay around longer than + this there should be no problems with accidentally deleting the + wrong timer. Thanks to Bill Sears (wsears@world.std.com) for + noticing this problem. + + One nice consequence to this change is that legacy code that + would have broken with the previous change is now 100% + compatible! + + * Provided a definition of ACE_Synch_Options::arg(const void *), + which I'd forgotten to define before (darn templates...). + Thanks to Tim Harrison (harrison@cs.wustl.edu) for finding this! + + * include/ace/sysincludes.h: Added a total hack to get HP/UX to + understand getrusage(). The trick is to use the following + undocumented syscall: + + #define getrusage(a, b) syscall(SYS_GETRUSAGE, a, b); + + What a hack (but it works...). + +Tue Jul 25 13:20:58 1995 Douglas C. Schmidt (schmidt@kavita.cs.wustl.edu) + + * libsrc/Misc/Profile_Timer: Fixed a typo in Profile_Timer.h + (ACE_HAS_RUSAGE_T should have been ACE_HAS_GETRUSAGE). Thanks + to George Reynolds (george@dvcorp.com) for noticing this. + + * Changed all uses of ::getopt() to use the ACE class Get_Opt + get_opt. Also changed all uses of optarg to get_opt.optarg. + Thanks to Bob Vistica (robertv@ims.com) for detecting and + reporting some inconsistencies in my previous changes... + +Mon Jul 24 19:03:03 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * include: I've added config and platform support for SGI IRIX5.3 + for use with the SGI C++ compiler. Thanks to Stuart Powell + (stuartp@ot.com.au) for these config files. + + * libsrc/Connection/Acceptor.C (handle_input): Added the + Event_Handler::DONT_CALL flag when removing the Oneshot_Acceptor + from the Reactor so that we don't set it's peer_acceptor_ to -1. + +Mon Jul 24 12:46:10 1995 Douglas C. Schmidt (schmidt@kavita.cs.wustl.edu) + + * libsrc/Misc/Profile_Timer: Fixed problems stemming from the fact + that HP/UX doesn't seem to support getrusage() (how odd). + + * tests/Connection: a new test directory to test out the Connector + and Acceptor pattern implementations. + +Sun Jul 23 12:26:37 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Connection/Acceptor.C: Fixed a minor bug with the + Oneshot_Acceptor constructor. Thanks to John Morey + (jmorey@hitel.com) for noticing this and the one below. + + * libsrc/Reactor/Timer_Queue: Moved the static method current_time + from the Timer_Queue.i file to the Timer_Queue.C file. This + avoids a bug with HP/UX C++. + +Sat Jul 22 15:54:27 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Released beta version 3.2.9. Once this compiles on all major + platforms then it's time to move to version 3.3. + + * Added a number of miscellaneous changes for OSF/1 courtesy of + David Trumble (trumble@cvg.enet.dec.com). One of these changes + involved changing all uses of Reactor::{ADD,SET,CLR,GET} to + Reactor::{ADD,SET,CLR,GET}_MASK in order to avoid a class with + some symbols in OSF/1. + +Fri Jul 21 00:21:02 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Finally was able to test ACE on the SunOS 4.x platform (using + the SunC++ 4.0.1 compiler). The entire release compiled + correctly! This is a great relief after fighting with this + stuff for months... If you are building ACE on SunOS 4.x I'd + *strongly* recommend you get SunC++ 4.0.1 since it is the only + compiler that seems to be able to grok the weirdness of SunOS + 4.x... + + * Finished updating all the ./tests and ./apps code so that it + works correctly with the new Acceptor/Connector modifications. + To see examples of these changes check out + ./tests/IPC_SAP/SOCK_SAP/CPP-{nbclient,inserver}.C. + + * libsrc/Misc/Profile_Timer: Merged in the new Profile_Timer + implementation from David Trumble (trumble@cvg.enet.dec.com). + This will work with basically the same interface as the current + scheme even if the OS platform doesn't support the prusage_t + type... + +Thu Jul 20 01:07:23 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Connection: Added a new class called ACE_Synch_Options + which is used in both the Acceptor and Connector classes to + consolidate options related to synchronous and asynchronous + behavior. + + * libsrc/Connection: Added a new class called Oneshot_Acceptor. + This class inherits from the Acceptor but it only accepts one + connection at a time (i.e., it doesn't keep itself registered + with the Reactor). Several examples in the tests/SOCK_SAP + directory have been added to illustrate how all this works. + + * libsrc/Connection/Connector: completely redid the Connector and + Acceptor class interfaces to incorporate the new changes for + asynchronous and synchronous behavior. The new scheme should be + much more general (and correct...). Thanks to Tim and Irfan for + helping out with this. + + * libsrc/Threads/Synch: Fixed the implementation of Recursive_Lock + so that it won't have race conditions when testing the thread id + and nesting level in parallel threads. + +Wed Jul 19 13:15:05 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Reactor/Timer_Queue: Added new support for cancellation + of individual Event_Handlers in the Reactor. In addition, it is + now possible to cancel all Event_Handlers with a single call to + Timer_Queue::cancel(). Note that this new scheme will break + existing code since Timer_Queue::schedule() (and + Reactor::schedule_timer()) now return ACE_Timer_Node *'s rather + than ints... + + * libsrc/Service_Configurator/Service_Config: Fixed a problem + where the "-s" option didn't work since it was parsed when + "Service_Config::open" was called + (it sets Service_Config::signum_). However, previously the + signal handler was already setup by the constructor. By moving + this registration to the open() method the problem was solved. + Thanks to Bob Vistica (robertv@ims.com) for noticing this. + + * libsrc/Service_Configurator/Service_Manager: Changed the + Service_Manager::reconfigure_services to use this->signum_ + rather than to hard code SIGHUP. Thanks to Bob Vistica + (robertv@ims.com) for this insight. + +Mon Jul 17 12:08:08 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Threads/Token.C (renew): Fixed a typo so that we compare + this->head_ == 0 rather than this->head_->next_ == 0. + + * libsrc/Reactor/Reactor.h: Changed the Reactor to use the + Reactor_Token rather than the pure Token to make sure that the + sleep_hook() is called to unblock the Reactor. + +Fri Jul 14 14:12:07 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Connection: Changed the default behavior of the Connector + and Acceptor classes such that they pass a -1 to + svc_handler_->close() when things go wrong. This is useful as a + flag to close() (e.g., if it needs to figure out what to do if + is shuts down prematurely). + + * libsrc/Connection/Svc_Handler.C: Added a default definition of + the put() method, which is defined as a pure virtual method in + class Task. + +Thu Jul 13 23:10:35 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * include/ace/sysincludes.h: Added support for the SGI IRIX 5.3 + OS. More screwy gettimeofday() hacks (what a pain...). Thanks + to Matt Stevens (mstevens@kirk.softeng.infonautics.com) for + these fixes. + + * include/makeinclude/platform_sunos5_centerline.GNU: Fixed a + vexing problem that was causing the Centerline C++ compiler to + puke when compiling ACE. Thanks to Chandra Venkatapathy + (cvenkat@develop.bsis.com) for finding a solution! + +Tue Jul 11 00:01:15 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Released version 3.2.6 for use by Karl and Detlef. + +Mon Jul 10 00:28:51 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * apps/TTCP: Added support for benchmarking the performance of + Orbix, ORBeline, ACE SOCK_SAP, and C sockets. These results are + available at URL http://www.cs.wustl.edu/~schmidt/COOTS-95.ps.Z + + * libsrc/Service_Configurator/Makefile: Added new commands to the + Service Configurator Makefile so that all automatically + generated flex and yacc symbols (i.e., the "yy" stuff) is + renamed "ace_yy". The purpose is to avoid conflicts with other + uses of flex/yacc lexers/parsers with ACE. Thanks to Steve + Ritter (ritter@titan.com) for this suggestion and code. + + * libsrc/IPC_SAP/TLI: Changed the TLI files so they are + conditionally compiled only if the platform supports TLI... + + * libsrc/Connection: Changed the inlining strategy of Connector, + Acceptor, and Svc_Handler so that very short methods are always + inlined, but anything larger is never inlined... + +Sun Jul 9 14:07:02 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * include/ace/testconfig.h: Changed all occurrences of DEFAULT_* + to ACE_DEFAULT_ to prevent namespace collision. + + * libsrc/Connection/Connector: Massively improved the Connector + class so that its connect() method supports the following + behavior (tv == "timeout value" and ur == "use Reactor"): + + Parameters | Description + | + tv | ur | + -----|----------|------------------------------- + | | + NULL | yes | infinite timeout (using Reactor) + | | + time | yes | try asynch transaction for + | | the specified time (using Reactor) + | | + 0,0 | yes | poll; try, if EWOULDBLOCK, + | | then return immediately + | | (using Reactor) + | | + NULL | no | block forever (don't use Reactor) + | | + time | no | do a blocking transaction + | | for the specified time + | | (don't use Reactor) + | | + 0,0 | no | poll; but do not initiate a + | | nonblocking transaction + | | (don't use Reactor) + + * libsrc/IPC_SAP/SOCK_SAP/SOCK_Connector: Changed the behavior of + the SOCK_Connector::connect() method so that it uses Time_Values + rather than a simple flag that indicates whether or not to use + non-blocking connectors. The new scheme is an improvement since + it allows greater control over synchronous and asynchronous + timeouts for connection establishment. This behavior parallels + that of SOCK_Acceptor, as well! If this works well then I'll + update the TLI_Connector and SPIPE_Connector to match this + interface. + + * libsrc: Continued to improve ACE's use of the global name space + by prefixing all "helper" classes with "ACE_" + + * Updated SPIPE_Acceptor so that it would have the same basic + interface as the SOCK_Acceptor and TLI_Acceptor. + + * libsrc/IPC_SAP: Consolidated the handle_timed_wait() methods + used by the TLI, socket, and STREAM pipe wrappers so that they + share the new ACE::handle_timed_accept() method, which is in + libsrc/Misc. + + * libsrc/Misc: Modified the structure of Misc.[Ch]. Originally, + this file contained a bunch of stand-alone C functions with the + prefix "ace_" to keep them from conflicting with user's code. + I've modified things now so that all the miscellaneous functions + are now static methods in class ACE. This provides better scope + control... + + * libsrc/Log_Msg/Log_Msg: Replaced the use of a Mutex in class + Log_Msg with a Recursive_Lock<Mutex>. This is necessary to + handle signals correctly... + + * libsrc/Reactor/Reactor: Modified the behavior of + Reactor::notify() so that writers will block if the pipe is + full. This solves some nasty flow-control problems. + + * libsrc/Reactor/Handle_Set: changed all uses of fd_set to + ACE_FD_SET_TYPE * so that HP_UX would work correctly... + + * include/ace/config-hpux.h: Removed the ACE_HAS_XLI flag until I + get a better idea which HP systems this is installed on. + + * libsrc/Threads/Thread: Added a new static method called + spawn_n() that spawns "n" threads all running the same function. + +Sat Jul 8 14:14:34 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Service_Configurator: Made some miscellaneous changes to + "const" methods and parameters in order to handle the new + Reactor changes (C++ can be such a pain about this + sometimes...). + + * libsrc/Threads: Added "yield" and "sigsetmask" methods to class + Thread. How did I manage to omit these before?! + + * libsrc/Reactor: Updated the Reactor to use the new Token class + described below. This greatly simplies the structure of the + multi-thread support in the Reactor code. In addition, it + should improve performance because it cuts the number of context + switches compared with the old scheme. Many thanks to + Karl-Heinz and Detlef for encouraging me to redo the Reactor + implementation. + + * libsrc/Threads: Added a new class called Token that provides a + flexible and efficient recursive mutex scheme. Thanks to + Karl-Heinz Dorn (kdorn@erlh.siemens.de) and Detlef Becker + (beckerd@erlh.siemens.de) for sharing their original code for this. + +Thu Jul 6 10:37:45 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Reactor/Event_Handler_T: Conditionally compiled this so + that it will only compile if the compiler supports template + typedefs (e.g., G++ doesn't seem to like this...). + + * Started to make changes in ACE to deal with the new ANSI C++ + semantics in the scope of variables defined within for loops. + Thanks to Aniruddha Gokhale (gokhale@cs.wustl.edu) for noticing + this in G++ 2.7... + +Wed Jul 5 21:50:39 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Connection/Svc_Handler: Fixed the behavior of the + Svc_Handler class so that it can be configured with a Reactor + other than Service_Config::reactor, just like the Acceptor and + Connector. Thanks to Karl-Heinz Dorn (kdorn@erlh.siemens.de) + for suggesting this! + +Tue Jul 4 00:21:31 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Added some new changes for Linux courtesy of Charles Rennolet + (clr@thurse.mn.org). + + * libsrc/Reactor/Reactor.C (bit_ops): Fixed a dumb error in + bit_ops that was caused by checking "else if (Reactor::SET)" + rather than "else if (ops == Reactor::SET)". Thanks to Mark + Patton (mark_patton@tx72.mot.com) for finding this bug and + reporting it along with the fix. + + * include/ace/sysincludes.h: Added new fixes for M_SYNC and + ENOTSUP on SunOS 4. + + * libsrc/Reactor: Added new support for integrating X and the + Reactor. These files are called XtReactor.* and XReactor.*. + Thanks to Eric Vaughan (evaughan@arinc.com) for providing this + stuff... + +Mon Jul 3 19:44:07 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Added support for SunOS 5.5 on i86 PC. Thanks to Bin Mu + (mubin@wfg.com) for the config files and fixes. + + * libsrc/Misc/Profile_Timer: Added new support for versions of + UNIX that don't support prusage_t. The new version of + Profile_Timer will use gettimeofday() and getrusage() of + prusage_t and /procfs isn't available... This code hasn't been + tested yet (since I don't have SunOS 4.x) so I don't know if it + works. + + * Hopefully fixed the SunOS4 prototype for gettimeofday(). Thanks + to Andrew McGowan (ajm@se09.wg2.waii.com) for the suggested fix. + + * include/makeinclude/platform_hpux.GNU (CC): Added new support + for building ACE and shared libraries on HP/UX. Thanks to Jam + Hamidi (jh1@osi.com) for this code. + + * libsrc/Reactor/Handle_Set: Fixed Handle_Set_Iterator::operator++ + to check for index to be greater or equal than NUM_WORDS instead + of just equal. This is better for sanity, although it may not be + needed. Thanks to Carlos Garcia Braschi (cgarcia@caramba.tid.es) + for suggesting this fix. + +Wed Jun 14 11:16:40 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/IPC_SAP/TLI_Acceptor: modified TLI_Acceptor so that it's + public constructor/open() and accept() methods are more similar + to the SOCK_Acceptor. In particular, added support for + "SO_REUSEADDR" in TLI_Acceptor and time values for accept(). + Thanks to John P. Hearn (jph@ccrl.nj.nec.com), TLI_SAP now does + the right thing for socket options. + + * libsrc/IPC_SAP: Fixed up the SOCK_Acceptor and TLI_Acceptor in + order to add better support for "timed accepts." The new scheme + uses Time_Values, which is more consistent with other parts of + ACE. In addition, the Time_Value was moved from the + constructor/open() to the accept() method, which allows more + fine grained control over this behavior. Thanks to Irfan + (ip1@cs.wustl.edu) for suggesting this. + + * libsrc/IPC_SAP: Cleaned up the SOCK_Acceptor::open and + TLI_Acceptor::open routine. In addition to being more compact + and robust, this routine now also let's open() determine which + local port to bind to (if you pass in Addr::sap_any as the + local_addr). Thanks to Irfan (ip1@cs.wustl.edu) for suggesting + this. + +Tue Jun 13 16:09:13 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Reactor/Timer_Queue: Fixed an odd problem with the + Timer_Queue on Solaris. Apparently the select() call will + return slightly earlier than the timeout dictates due to lack of + granularity with the system clock. This was causing problems + where the Reactor wasn't correctly dispatching the + handle_timeout() method of Event_Handlers. The fix was to add a + 10 Millisec "fudge factor" when calling the + Timer_Queue::expire() method. Please let me know if this causes + any problems. Thanks to Giang Hoang Nguyen + (yang@titan.com) to noticing this problem. + + * libsrc/Connection/Acceptor: Enhanced the Acceptor class so that + it is possible to accept a new SVC_HANDLER synchronously, rather + than always driving this acceptance out of the Reactor's event + loop. Thanks to Irfan (ip1@cs.wustl.edu) for suggesting this. + + * libsrc/IPC_SAP/Addr: Changed all occurrences of ace_sap_any to + Addr::sap_any (i.e., sap_any is now a static data member in + class Addr). This is an improvement since it helps to limit the + scope of what would otherwise be global variables... + +Wed Jun 7 17:26:31 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * apps/Logger/Reactor_Logger/Client_Acceptor.i (handle_input): + Fixed a braino that omitted an important block of code! Thanks + to Ken Konecki (kenk@wfg.com) for finding this. + +Fri Jun 2 13:59:07 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/IPC_SAP/Addr/INET_Addr.i (set): Removed the special case + for INADDR_ANY. This should just fall right out... + +Thu Jun 1 19:45:21 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/IPC_SAP/SOCK_SAP/SOCK_Connector: Added support to + SOCK_Connector so that it is possible to bind the local TCP port + number prior to establishing the connection. Also fixed the + TLI_Connector to be consistent with this approach. Thanks to + Mark Patton (mark_patton@tx72.mot.com) for this idea. + + * Fixed a problem with Mem_Map that was caused by the fact that + some versions of Unix (e.g., SunOS 4.x) don't support MS_SYNC... + Thanks to Andy McGowan (mcgowan@wg2.waii.com) for noticing this. + + * Fixed a very stupid bug in ./libsrc/Synch.h that accidentally + omitted this->lock_.acquire() from the Guard class constructor. + Thanks to Bin Mu (mubin@wfg.com) for noticing this! + +Fri May 26 13:20:38 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Connection/Acceptor: Added a new method called + make_svc_handler() that generalizes the dynamic creation of a + SVC_HANDLER by the Acceptor's Template Method handle_input(). + This scheme is completely backwardly compatible with the + original approach, but now allows transparent extension too! + + * libsrc/Connection/Acceptor: cleaned up the Template Method logic + in Acceptor::handle_input. No longer do we set the listener + socket into non-blocking mode and then rely on a -1 with + EWOULDBLOCK to indicate there are no more connections to + establish. This was causing problems for singleton Svc_Handlers + since the Acceptor was setting their peer_stream_ to -1... The + new approach should complete solve this problem. + +Mon May 22 15:10:27 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Released version 3.2.3 so that Bill Sears can test the new + #include "ace/" features. + + * Modified all the ACE source, tests, and apps so that all + #includes of its headers are refixed by ace/, e.g.: + + #include <ace/Reactor.h> + + There are two reasons for have the include files be of + this form: + + First, you can tell at a glance by looking at the caller where + the library is coming from. + + Secondly, you can build an include tree of the form: + + /include/lib1 + /include/lib2 + /include/lib3 + /include/ace + + which then links to WRAPPER_ROOT. Now, all you have to do + when you build a make file is point to the include root, and + put links in the include root. This is especially helpful + if there are multiple versions. + + This means just one less thing that has to be modified in the + Makefile. Thanks to Bill Sears (wsears@world.std.com) for + recommending this change. + +Sat May 20 17:12:35 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * config-irix5.3-sgic++.h: Added new configuration support for SGI + IRIX5.3 courtesy of Stuart Powell (stuartp@ot.com.au). + +Sat May 13 20:44:06 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Generalized the SOCK_Connector::complete method so that it takes + a Time_Value timeout. This allows applications to wait upto a + certain limit before giving up on a non-blocking connection. + Updated the tests in ./tests/IPC_SAP/SOCK_SAP/CPP-inclient.C to + illustrate how this is used. + + * Added some interesting new tests to ./tests/Mem_Map that can be + used to benchmark the performance of various strategies (e.g., + stdio, read/write, mmap, etc.) for copying files. + +Fri May 12 19:09:10 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Mem_Map/Mem_Map: Added two new overloaded methods called + sync() that are wrappers around the msync(3c) system call. Also + added a new unmap() method that gives access to the full + behavior of munmap(3c). + +Wed May 10 14:16:16 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Tried yet another fix for the gettimeofday() botch that both + Centerline and SunOS 5.4 screw up in different ways. Thanks to + Medhi Tabatabai (Mehdi.Tabatabai@ed.nce.sita.int) for the latest + fixes. + +Tue May 9 19:05:58 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Reactor/Handle_Set.C: Fixed some "off-by-one" errors that + were occurring in the Handle_Set::sync() and set_max() methods. + Thanks to Nigel Hooke (n.hooke@trl.oz.au) for finding and fixing + these. + +Mon May 8 02:01:54 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Reactor/Reactor.C: Moved the Null_Callback class from + being nested within the Reactor class to outside the Reactor + class. This fixes a problem with the SIG compiler. + + * Released version 3.2.2. + + * libsrc/Reactor/Signal.C: Made the Signal_Handler class + thread-safe as well as signal-safe. + + * libsrc/Reactor/Reactor.C: Modified the new Reactor + implementation slightly to handle signals correctly. + + * libsrc/Threads/Synch.h: Added a new conversion operator to + Recursive_Lock that returns the underlying LOCK in case we need + it for something (e.g., to initialize a Condition object). + +Sun May 7 04:17:46 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Reactor/Reactor.C: Finished what I hope will be the last + set of changes to make the Reactor robust in multi-threaded + programs in situations where separate threads are used to + register and remove handlers. The final solution is elegant in + that it does not significantly penalize the performance of + programs that do not use separate threads to register and remove + handlers. Moreover, if you compile without the ACE_MT_SAFE flag + the Reactor will not include additional state information + related to the multi-threaded implementation. + + * libsrc/Threads/Synch.h: Subclassed the Guard class to make a new + class Try_Guard that uses tryacquire() to obtain a LOCK. + +Fri May 5 18:43:50 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Released version 3.2.1 + +Thu May 4 19:43:01 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/IPC_SAP/TLI_SAP/TLI_Connector.C (connect): Fixed a + problem whereby a t_bind() was being done twice. Since I didn't + write this code I don't know if my fix will work generically on + all platforms supporting TLI. Please let me know if there are + any problems. + +Tue May 2 17:21:53 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Reactor: Added a new notification feature that allows + multiple threads of control to enqueue Event_Handler * to the + main Reactor thread via the pipe used to wake up the main + Reactor thread. The Reactor will call the handle_exception() + method on Event_Handler with a HANDLE == -1 to notify the + handler. This feature is very useful if you need to have + certain operations (such as handler termination) performed in + the main thread. + +Tue Apr 25 00:34:18 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Reactor: Fixed a stupid pair of typos in the Reactor that + failed to cast arguments to the pipe to char *. + + * libsrc/Connection: Fixed a portability problem with the + Connector: we can't use RW_Mutex for synchronization since not + all platforms support threads. The quick fix is to use + Null_Mutex, but a better long term approach is on the way! + + * Released version 3.2. + + * Added richer support for the TLI_Connector to make it work + better with protocols other than TCP/IP. Thanks to Mats + Sundvall (sundvall@perrier.embnet.se) for these enhancements. + +Mon Apr 24 02:26:04 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Changed the SOCK_Dgram_Brdcast class name to SOCK_Dgram_Bcast + and the SOCK_Mcast to SOCK_Dgram_Mcast to be more consistent. + + * Massively improved the Reactor's support for multi-threading. + There was actually a major problem in previous versions of ACE + that used poll() as the underlying event demultiplexor. Poll() + produced incorrect results when the Reactor::handle_events() + method was run in one thread, but another thread came along and + registered or removed an Event_Handler. The new version fixes + this problem so that the Reactor will now work correctly in + multi-threaded programs. + + One consequence of this change is that sysincludes.h and the + SunOS 5.x configuration files have been changed so that poll() + is no longer used as the default demultiplexor. The reason is + that poll() doesn't work as efficiently when used in + multi-threaded programs (ugh). See the Reactor code for + examples of how this all works now. Basically, the trick is to + use the select()-style implementation for most of the code, and + transform to poll()-style implementation only when necessary. + +Sat Apr 22 03:35:51 1995 Douglas C. Schmidt (schmidt@lambada.cs.wustl.edu) + + * libsrc/ASX/Message_Queue: Added a new method to the + Message_Queue class called unblock(). This method allows one + thread to release all other threads that are waiting for + messages to be enqueued or dequeued on a Message_Queue. + Modified the return value of methods like enqueue_head() and + dequeue_head() so that if a thread unblocks() then these methods + return -1 with errno == ESHUTDOWN. Also changed the name of + some of the internal methods so that they would be more + consistent. + + * libsrc/Connection/Connector: Fixed a stupid bug caused by + failing to have a destructor for Connector. Thus, there are + cases where unconnected Svc_Handlers are left around in the + handler_map_. This causes problems for dynamic linking in + conjunction with the Reactor, so now the destructor iterates + through all the unconnected Svc_Handlers and removes them from + the Reactor. + +Fri Apr 21 15:28:46 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Reactor/Signal: Changed Sig_Set::addset() and + Sig_Set::delset() to the more appropriately named sig_add() and + sig_del(). Also added '_' in the Sig_Set method names to be + more consistent... + + * Removed the ./libsrc/IPC_SAP/SOCK_SAP/misc.[hC] file and merged + the one function in that file (ace_bind_port) into + ./libsrc/Misc/Misc.[hC]. + + * Added a bunch of fixes from various people to make ACE compile + better on SGI, SunOS 4, and HP/UX. Thanks for all the fixes! + + * libsrc/IPC_SAP/Addr: Changed sap_any to ace_sap_any to avoid + problems with the namespace. + + * Added a new portability flag that only compiles the SOCK_Mcast.* + stuff if the platform supports multicast! + + * ./libsrc/Shared_Malloc: Fixed some portability bugs with + Memory_Pool.C and added new support for SunOS 4.x running SunC++ + 4.x. Thanks to Steve Warwick (swarwick@arinc.com) for this + strategic help. + +Wed Apr 19 09:05:43 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Fixed up the ./libsrc/CORBA_Handler so that it will correctly + compile on platforms that don't have Orbix... + + * libsrc/Misc: added a new "Simple String" class called SString. + This is not really meant to be used by end-user applications. + It is used by certain portions of ACE that need to have + operator== and operator!= defined on a string (e.g., the + Token_Server and the Orbix Event_Comm components that use the + Map_Manager). + +Tue Apr 18 00:09:31 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/ASX: Fixed a stupid bug in Task::activate() that didn't + spawn a thread if the Thread_Manager was NULL... + +Sat Apr 15 19:39:30 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Reactor: Added a new class to the Reactor called + Event_Handler_T.[hi]. This class makes it easy to integrate + existing classes into the Reactor framework without requiring + them to inherit from Event_Handler directly. This technique is + a superset of the DEF_TIE approach used by IONA in Orbix as one + of the ways to combine an existing class (that doesn't know + anything about CORBA) with a CORBA interface. Thanks to Greg + Lavender + (g.lavender@isode.com) for the suggestion. + +Fri Apr 14 14:41:49 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Run catman on the ./man directory so that it now has a windex + file. This facilitates "man -k". + +Thu Apr 13 23:39:22 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Reactor: Made the Reactor be a stand-alone component that + does not require any other ACE libraries. + + * Added two new methods to the Reactor so that you can now + register or remove a set of HANDLEs in a single call. Thanks to + Bill Sears + (wsears@world.std.com) for this suggestion. Basically, now you + can register or deregister a set of n HANDLEs with one operation + (rather than doing n register_handler () or n remove_handler + ()). + + * include/sysincludes.h: Changed the name of the macro MT to + ACE_MT and DB to ACE_DB to avoid polluting the namespace. + +Wed Apr 12 11:14:46 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Reactor/Reactor.C (close): Added code to close down the + pipe handles when the Reactor is shut down. Thanks to Mark + Patton (mark_patton@tx72.mot.com) for this info. + +Fri Apr 7 18:33:30 1995 Douglas C. Schmidt (schmidt@siesta.cs.wustl.edu) + + * Added a new method to CORBA_Handler so that handlers don't need + to subclass from CORBA_Handler, but rather can call the + CORBA_Handler::register_service() method (which is static). + Thanks to Chris Tarr (ctarr@objectspace.co) for this suggestion. + +Mon Apr 3 13:09:45 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Added a new static method to Service_Config.[hC] called + end_event_loop(). This can be used to stop the run_event_loop() + method of the Service_Config. In addition, all the methods in + Service_Config were changed to be static to emphasize the fact + that the Service Configurator is a singleton... + + * include/Trace.h (ACE_TRACE): Changed the macro T to ACE_TRACE. + This will prevent namespace pollution. + + * Added support for the Orbix CORBA implementation. If you don't + have Orbix, you'll need to remove this flag from the + config-sunos5-sunc++.4.x.h file if you are compiling on SunOS + 5.x. + +Sun Apr 2 01:12:19 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Added new support for C++ wrappers around the IP multicasting. + There are three new files in ./libsrc/IPC_SAP/SOCK_SAP called + SOCK_Mcast.[hiC] and a new test directory in + ./tests/Reactor/multicast and ./tests/Reactor/ntalker to + illustrate how to use this stuff. Thanks to Tim Harrison + (harrison@cs.wustl.edu) for this code. + +Sat Apr 1 18:48:40 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Added support to the libsrc/Shared_Malloc/Memory_Pool.[hC] class + for System V shared memory, as well as for mmap(2) and sbrk(2) + memory. Please note that this has not been extensively tested + yet, so use with caution... + +Thu Mar 30 21:50:00 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Misc/Atomic_Op: Added the postfix versions of the ++ and + -- operators. This stops the Sun CC compiler from griping about + the "anachronistic" usage when using a++ rather than ++a. + Thanks to Bruce Worden <bruce@betsy.gps.caltech.edu> for the + suggestion. + +Wed Mar 29 22:26:37 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Reactor/Handle_Set: Fixed a weird problem where I was + using NOFILE as the max number of descriptors rather than + FD_SETSIZE. I don't know why I was doing this. + + * Also fixed up a problem with Handle_Set that was causing the + iterator to go nuts when it got a strange initial value of + fd_set in Handle_Set. Orbix triggers this kind of nonsense in + some cases... + +Tue Mar 28 21:01:36 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/Reactor/Reactor.C: swapped the order of dispatching so + that handle_exception methods are dispatched before handle_input + methods to improve response time for exceptions (e.g., OOB + data). Thanks to Detlef Becker + (beckerd@erlh.siemens.de) for suggesting this. + + * Fixed a bug in ./ASX/Stream.i that caused problems when a Module + was popped off a Stream. Thanks to Paul Stephenson for noticing + this and sending me the fix. + + * Changed the Reactor::dispatch methods so that they dispatch the + timers *before* dispatching the I/O-based event handlers. This + is helpful for systems that are time-delay sensitive. + + * libsrc/Reactor/Time_Value: Added new += and -= operators to + Time_Value. Thanks to Alex V. Maclinovsky + (garyh@teleng1.tait.co.nz) for this suggestion. + +Thu Mar 23 15:38:23 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/IPC_SAP/Addr/SPIPE_Addr.i (set): Fixed a problem that the + HP/UX compiler had with complex arithmetic expressions. + + * libsrc/Service_Configurator: fixed up the Service_Configurator + source code so that it will compile correctly on HP/UX + platforms. + +Tue Mar 21 00:28:25 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * libsrc/IPC_SAP/SOCK_SAP/LSOCK_Connector.h: Fixed an amazingly + stupid bug with LSOCK_Connector, where I was passing in a + default argument of PF_INET instead of PF_UNIX... Arrgh! + +Mon Mar 20 20:24:29 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Fixed up the $WRAPPER_ROOT/include/makeinclude/ directory to + define a new set of platform-specific configuration files. This + should greatly improve the portability of ACE to different + OS/compiler platforms. + + * Added a bunch of changes to allow ACE to build with Lucid C++ on + SunOs 4.x. This should also fix some other problems we've been + having with SunOS 4.x. Thanks to Lee Baker (baker@ctis.af.mil) + for these changes. + +Sun Mar 19 00:34:30 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Added manual pages for all of the ./libsrc libraries. These + manual pages are all generated automagically from the libsrc + header files. + +Sat Mar 18 10:48:46 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Finally broke down and fixed the Makefile scheme so that there + is just one shared library (libACE.so) and one archive library + (libACE.a). This should massively simplify the application + development process, though it may require a bit of fixing of + Makefiles to remove all the -lReactor -lIPC_SAP stuff that was + in there before. + + * libsrc/IPC_SAP/TLI_SAP/: Fixed a stupid bug that was causing + core dumps since the TLI option pointers weren't initialized to + 0 in the TLI::TLI constructor. Thanks to Ed Brown for noticing + this (eebrown@netcom.com). + +Wed Mar 15 00:08:19 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Added some new fixes to get ACE to run on OSF1 and Linux. + +Tue Mar 14 13:36:31 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Added several changes to the source code and config-hpux.h + configuration file based on comments from Alex Ranous + (ranous@nsa.hp.com). In particular, changed ACE_HAS_NO_FDSET to + ACE_SELECT_USES_LONG. + +Mon Mar 13 09:23:58 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Improved the Makefile scheme so that the use of PTDIRS is no + longer required. The trick was to link the appropriate template + *.C files into the WRAPPER_ROOT/include directory. This enables + the compiler to find them in one single place. + +Sun Mar 12 22:35:50 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * Added a new mechanism to clean up the insane number of -D's in + the Makefile. This new mechanism requires a bit more work at + installation time, but should greatly reduce the effort during + normal software development + (once ACE is installed...). See the INSTALL file + for more details. + +Fri Mar 10 17:29:02 1995 Douglas Schmidt <douglas@gtcterminator> + + * Fixed a stupid bug in Map_Manager.i which wasn't correctly + setting default values for fields in one of the Map_Manager + constructors. + +Fri Mar 10 08:54:42 1995 Doug Schmidt <douglas@gtccipher> + + * /libsrc/Connection/Acceptor.i: Fixed a potential memory leak in + handle_input(). + +Thu Mar 9 11:59:54 1995 Doug Schmidt <douglas@gtccipher> + + * Changed the Map_Manager::find() method to use class Read_Guard + so that multiple finds may proceed in parallel on a multiple + threaded application. Likewise, changed the implementation of + bind() and unbind() to use class Write_Guard so that destructive + operations will be serialized correctly. One consequence of + this is that RW_Mutex must be used instead of Mutex... + + * Added a new overloaded Map_Manager::unbind() method with an + INT_ID parameter. This parameter that passes back a reference + to the internal id being unbound. This allows the caller to + clean up any dynamic memory associated with the INT_ID. + +Tue Mar 7 13:32:17 1995 Doug Schmidt <douglas@gtccipher> + + * Changed a bunch more things to get ACE to compile with + Centerline C++. This should also make ACE more portable to + other cfront-based compilers. + + * Had to change the ASX source in ACE to work around a stupid + problem with templates in cfront-based C++ compilers. + Fortunately, it was possible to mask most of the problems using + the C++ preprocessor. + + * There seem to be some problems with cfront-based compilers (such + as centerline). They don't like the new SYNCH::MUTEX usage in + the Message_Queue. + + * Removed several unused local variables in the INET_Addr::set() + method. + +Wed Mar 1 00:35:11 1995 Douglas C. Schmidt (schmidt@tango) + + * Added a major performance boost on high-speed networks. It + turns out that send(3) and revc(3) are slower than write(2) and + read(2) (since the latter are system calls, and the former are + library calls. Therefore, I added new overloaded methods to + SOCK_IO so that write(2) and read(2) are available to the user! + +Tue Feb 28 10:13:09 1995 Douglas C. Schmidt (schmidt@tango) + + * libsrc/Reactor/Reactor.C: Fixed the implementation of the + Reactor::open and Reactor::Reactor constructor so that it is now + possible to resize the size of the Reactor *after* the + constructor has run (by calling open()) *without* having to shut + down the Reactor first. + + * Modified the Reactor::attach() method so that it will ADD the + new bits to the bitmask rather than SET them. Thanks to Mark + Patton for recommending this + (mark_patton@tx72.mot.com). + +Sat Feb 25 15:08:04 1995 Douglas C. Schmidt (schmidt@tango) + + * Released version 3.0.5. + +Fri Feb 24 17:57:01 1995 Douglas C. Schmidt (schmidt@tango) + + * Used the OSE class2man scripts to generate UNIX manual pages for + IPC_SAP, Thread, Connection, and Reactor. Other manual pages + will be forthcoming... + + * libsrc/IPC_SAP/Addr/INET_Addr.i: Fixed a bug in one of the + INET_Addr::set() methods that caused a segmentation fault if + host_name was NULL. In addition, greatly cleaned up the code so + that all the "set" methods share a common basis of code. + +Tue Feb 21 19:32:28 1995 Douglas C. Schmidt (schmidt@tango) + + * Updated the entire release to use the new SYNCH template + interface for Task, Module, Stream, and Message_Queue. This is + *much* cleaner, though it reveals some bugs with the Sun C++ + templates facility. + +Mon Feb 20 22:46:14 1995 Douglas C. Schmidt (schmidt@tango) + + * Changed the SPIPE_SAP, SOCK_SAP, and TLI_SAP *Connector class + methods from open() to connect(). This is a more accurate name + and it also fits in nicely with the Acceptor::accept() method. + + * Started integrating new versions of various header files that + include hooks to automatically generate documentation. + +Tue Feb 14 20:52:13 1995 Douglas C. Schmidt (schmidt@tango) + + * Changed the order in which the Reactor dispatches descriptors. + Originally, it dispatched the "read" descriptors *before* the + "write" descriptors. Now, it dispatches the "write" descriptors + first. This was necessary to handle weird behavior of sockets + over TCP/IP when data is piggy-backed with the final ACK on a + non-blocking connection. + +Mon Feb 13 15:49:21 1995 Douglas C. Schmidt (schmidt@tango) + + * Changed the name of Event_Handler::get_fd() to + Event_Handler::get_handle() to be more consistent with other + usage in ACE. + +Sat Feb 4 22:47:34 1995 Douglas C. Schmidt (schmidt@tango) + + * libsrc/Service_Configurator/Service_Object: changed the + destructor to be virtual (thanks to Steffen Winther Sorensen + <sts@dad.stibo.dk> for noticing this). + +Sat Jan 28 16:29:49 1995 Douglas C. Schmidt (schmidt@tango) + + * Changed the name of class Map_Manager's Search_Structure struct + to Map_Entry. This is more specific to what that data structure + really does. + + * Began adding support for Linux, courtesy of sts@dad.stibo.dk. + +Sun Jan 22 23:15:38 1995 Douglas C. Schmidt (schmidt@tango) + + * Changed the name of the ./libsrc/Connector-Acceptor directory to + ./libsrc/Connection. Also changed the name of libConn_Acc.so to + libConnection.so to be more consistent. + +Sat Jan 21 13:59:18 1995 Douglas C. Schmidt (schmidt@tango) + + * libsrc/IPC_SAP: Fixed the *Acceptor classes for SOCK_SAP and + SPIPE_SAP so they behave just like FIFO_SAP and contain a method + called remove(). This method closes the underlying descriptor + and also unlinks the local address from the file system. + + * libsrc/ASX/Message_Queue.i (copy): Fixed this code so that it + correctly stores starting at the wr_ptr rather than the rd_ptr. + Thanks to Chris Cleeland + (chris@milo.st-louis.mo.us) for pointing this out + to me. + +Wed Jan 11 13:07:19 1995 Douglas C. Schmidt (schmidt@tango) + + * Changed all uses of class Thr_Manager to class Thread_Manager + and class Thr_Cntl to Thread_Control. This is more readable and + is now consistent with the documentation... + +Tue Jan 10 13:49:31 1995 Douglas C. Schmidt (schmidt@tango) + + * Modified the makefile scheme so that only the *.so files are + built by default. If you want to build both *.a and *.so files, + uncomment out the lines described in + $WRAPPER_ROOT/include/makeinclude/rules.lib.GNU. Note that this + will require you to run make on the ./libsrc directories twice + in order to properly build and install both the *.a and *.so + libraries. + +Mon Jan 9 22:57:29 1995 Douglas C. Schmidt (schmidt@tango) + + * libsrc/Reactor/Signal.h: Changed the name of the Signal_Block + class to the Signal_Guard class to be more consistent with the + Guard class in Synch.h. + +Sat Jan 7 19:49:46 1995 Douglas C. Schmidt (schmidt@tango) + + * tests/ASX/Event_Server/Event_Server: Revised the Event Server + test example to use the Acceptor pattern components. + +Fri Jan 6 23:38:21 1995 Douglas C. Schmidt (schmidt@tango) + + * Added a new method to class Task that turns a task into an + active object (i.e., associates a thread of control with the + task). This is useful since it replaces all the places in + application code that original said "this->thr_mgr_.spawn + (THR_FUNC + (&this->svc_run))", etc... + +Thu Jan 5 21:05:15 1995 Douglas C. Schmidt (schmidt@tango) + + * libsrc/ASX: Changed the capitalization of class STREAM to class + Stream. This seems more reasonable since I don't see any + particular reason to shout about Streams! + + * libsrc/ASX/Task: Changed name of method qreply() to reply() to + reflect the fact that the name of the class is no longer Queue! + + * libsrc/ASX: Made both Task and Message_Queue into parameterized + types. This greatly improves the ability to parameterized + synchronization into an application. + + * Changed all occurrences of timestruc_t to use Time_Value + instead. This helps to improve portability and reduce the + "impedence mismatch" caused by mixing both C and C++ types in + the ACE interfaces. Note that one drawback of this is that we + lose nano-second timing accuracy. However, I don't know of any + real OS platforms that support that degree of precision anyway! + + * libsrc/Reactor: Moved the static "zero" data member from the + Timer_Queue class to the Time_Value class. Also added a new + static data member called "zerop," which is a pointer to "zero". + + * libsrc/Threads/Synch: Changed the interface of class Condition + so that it no longer has both wait() and a timedwait() methods. + Since C++ has default values, these two methods were redundant. + Now, there is only a single method called wait(). By default, + it's argument is 0, which defaults to the original wait() + semantics. If the argument is non-zero then the timewait + semantics apply. + + * libsrc/Threads/Synch: Added a new class called Null_Condition. + This is similar to the Null_Mutex class in the sense that it has + the same interface as class Condition, but it's methods are all + no-ops + (however, wait() and signal() both set errno = ETIME + before returning...). This class is useful for + parameterizing synchronization into an application. + |