Fri Oct 24 10:00:02 1997 Nanbor Wang * ace/Thread_Manager.cpp (wait_grp): Fixed a bug. Should wait on threads with same grp_id, not task. Fri Oct 24 09:24:14 1997 David L. Levine * ace/Select_Reactor.cpp (open): cast return value of ACE_::max_handles () to size_t to avoid signed/unsigned comparison. * ace/Singleton.cpp,Object_Manager.{h,cpp}: (get_singleton_lock): dynamically allocate ACE_Thread_Mutex and ACE_RW_Thread_Mutex locks, so we end up with one lock per ACE_Singleton instantiation. Fri Oct 24 01:53:58 1997 Douglas C. Schmidt * ACE version 4.3.26, released Fri Oct 24 01:53:58 1997. Thu Oct 23 19:05:08 1997 Douglas C. Schmidt * netsvcs/clients/Naming/Client/Makefile netsvcs/clients/Naming/Dump_Restore/Makefile The lines: SHLIB = libClient_Test.so SHLIB = libDump_Restore.so need to be SHLIB = libClient_Test.$(SOEXT) SHLIB = libDump_Restore.$(SOEXT) Thanks to Stephen Coy for reporting this. * ace/Thread_Manager.cpp (find_hthread): Replaced the call if (iter.next ()->thr_handle_ == h_id) to if (ACE_OS::thr_equal (iter.next ()->thr_handle_, h_id)) since the other one isn't portable to Pthreads. Thanks to Stephen Coy for reporting this. * ace/Hash_Map_Manager.cpp: Removed the sentinel in the Hash_Map_Manager. Sentinels are evil since they require us to hold write locks, even when we're doing finds! * ace/ACE.cpp (max_handles): By default, we now try to use the getrlimit() function before sysconf() since sysconf() doesn't work "correctly" for NO _SC_OPEN_MAX (i.e., it just returns the original value, which might have been changed by setrlimit(). What a pain... * ace/ACE.cpp (max_handles): If FD_SETSIZE is enabled return this as the number of handles. This isn't perfect, but it's probably better than returning -1. * ace/Select_Reactor.cpp (open): Added a call to ACE::set_handle_limit() if the requested size for the Reactor is greater than the current max number of descriptors in the process. Also check to make sure that the user isn't ask for more than the FD_SETSIZE. Thanks to Neil Lavelle for motivating this. * ace/Thread_Manager: Changed the name THR_FUNC to ACE_THR_MEMBER_FUNC since it's now a global typedef on VxWorks and we don't have to have clashes with other names. * ace/Thread_Manager.h: There are mutually incompatible bugs with VxWorks and MVS. Therefore, we have to conditionally compile the THR_FUNC differently for these two platforms. Thanks to Chuck Gehr for reporting this. * ace/OS.cpp (thr_create): Added a fix to set the Chorus stack size correctly. Thanks to Wei Chiang for reporting this. * ace/OS.cpp: Added a new method ace_sysconf_dump() to dump the state of the configuration. Thanks to Wei Chiang for reporting this. * ace/Singleton.cpp (dump): There was a typo in the dump() method for ACE_TSS_Singleton, it should be ACE_TSS_Singleton::instance_i(). I've fixed this. Thu Oct 23 23:19:24 1997 James C Hu * ace/Filecache.cpp: Removed template method specialization of shared_find. No longer needed since Hash_Map_Manager has been changed to no longer rely on sentinel_. * ace/Thread_Manager.cpp (various): Hacked 'til it compiled. (Chased down syntax errors.) Thu Oct 23 22:52:17 1997 Sergio Flores * examples/Timer_Queue/Thread_Timer_Queue_Test.cpp (shutdown_timer): Added a line to call the cancel method on the timer queue task when we are shutting down; this is wrapped around #if's to only include this only when the platformm supports pthread_cancel(). * ace/Timer_Queue_Adapters.cpp (svc): Added some POSIX thread cancellation points to make sure the mutex that the condition variable uses is unlocked before the thread is cancelled. * examples/Timer_Queue/Thread_Timer_Queue_Test.cpp (list_timer): Deleted unnecessary cancellation points. Since we are not blocking on a condition variable, we don't need to guard the code. Thu Oct 23 22:07:03 1997 Nanbor Wang * ace/Thread_Manager.cpp (wait_task,wait_grp): We should also check for thread creation flags when collection information for threads belong to this group and don't try to join those threads created with THR_DETACHED or THR_DAEMON. Thu Oct 23 21:22:16 1997 Darrell Brunsch * ACE-INSTALL.html: Copied some documentation about makefile flags from include/makeinclude/wrapper_macros.GNU and added a section for this. Thu Oct 23 20:37:44 1997 David L. Levine * ace/Array.*: added ACE_Array_Iterator. Thu Oct 23 17:28:11 1997 Chris Cleeland * ace/Mem_Map.i (close_filemapping_handle): Moved this above its uses in the file so that g++ would de-warn. Thu Oct 23 15:30:17 1997 Steve Huston * ace/Timer_Hash_T.h, Timer_Hash.cpp, Timer_Heap_T.h, Timer_Heap.cpp, Timer_List_T.h, Timer_List.cpp, Timer_Queue_T.h, Timer_Queue.cpp, Timer_Wheel_T.h, Timer_Wheel.cpp: Replaced all occurences of ACE_HPUX_BROKEN_TEMPLATES with ACE_HAS_BROKEN_HPUX_TEMPLATES. Wed Oct 22 23:23:29 1997 Nanbor Wang * ace/ACE_Library.*, ace_lib.dsp: Made naming convention uniform for some less used ACE library. They are called: aced.dll, ace.dll, aceud.dll, aceu.dll, acesd.lib, aces.lib, aceusd.lib and aceus.lib. If you are using ACE on NT, you know what they mean. ;-) Wed Oct 22 21:22:35 1997 David L. Levine * ace/Object_Manager.{h,cpp}: Added support for ACE_RW_Thread_Mutex ACE_Singleton lock type. Thanks to Nanbor for suggesting this, because TAO needs it. Also, removed at_exit registration of dynamically allocated ACE_Static_Object_Lock because Object_Manager instance isn't available for registration when it's created. Instead, handle this lock as a special case in the Object_Manager destructor. * ace/Singleton.cpp,Object_Manager.cpp: check for shutting_down () as well as starting_up () when deciding whether to use a preallocated lock. Preallocated locks are not available at those times. * tests/Reactor_Performance_Test.cpp (client): removed declaration of loop index "i" because it shadowed a local. Also, the loop index declaration caused a signed/unsigned comparison. * ace/Singleton.cpp: temporarily disabled ACE_Guards until the lock acquistion is fixed. Wed Oct 22 17:53:26 1997 Steve Huston * ace/SOCK_Connector.cpp: In connect(), changed the (local != ACE_Addr::sap_any) to be value comparison, not pointer comparison. Works on compilers which construct temporaries when a const reference is passed (like HP aC++), and also when a user passes an ACE_Addr which they construct to look just like an ACE_Addr::sap_any. Thanks to Stephen Coy for finding this. Wed Oct 22 16:43:25 1997 Chris Cleeland * tests/Reactor_Performance_Test.cpp (client): Corrected some code that wasn't logical (but compiled!) in the connect_n() test. Wed Oct 22 13:27:47 1997 Douglas C. Schmidt * tests/Reactor_Performance_Test.cpp (client): Revised the connection portion of this test to use the newly revised connect_n() method on Connector. * ace/Connector.cpp (connect_n): Revised the connect_n() method so that it keeps track of which connections succeeded and which failed. Wed Oct 22 07:23:21 1997 David L. Levine * ace/OS.i (getpgid): fixed (commented) ACE_TRACE identifer. Thanks to Eric Newton for reporting this. * ace/Singleton.{h,cpp},Object_Manager.{h,cpp}: moved ace_singleton_lock_ to Object_Manager. ace_singleton_lock_ was a static data member: in addition to the usual troubles associated with being a static, it was a static member of a template class. g++ can't handle those, so we used a local static; initialization of that static was not thread safe. The fix relies on knowledge from the Object_Manager about whether the program is in static construction phase or not. A critical assumption is that construction of static objects does not spawn threads. With that assumption, we know that there is only one (main) thread in the program prior to the Object_Manager instance being constructed. At that time, locking is not needed. The ACE_{TSS_}Singleton::instance () methods rely on the state of the Object_Manager: if it has not been constructed yet, then they don't guard allocation of their singleton instance. The Object_Manager constructs four locks (of types ACE_Null_Mutex, ACE_Thread_Mutex, ACE_Recursive_Thread_Mutex, and ACE_RW_Thread_Mutex) for use only by ACE_Singleton classes. After the Object_Manager has been constructed, ACE_{TSS_}Singleton instantiations use one of those locks to guard their allocation of a new instance, via double-checked locking. This change has two impacts: 1) ACE_{TSS_}Singleton users are limited to the following types for their ACE_LOCK instantiation parameters: ACE_Null_Mutex, ACE_Thread_Mutex, ACE_Recursive_Thread_Mutex, and ACE_RW_Thread_Mutex. If another type is needed, it can be easily added to the ACE_Object_Manager: another overloaded get_singleton_lock () function and preallocated lock would have to be added. 2) A single lock of each of the types mentioned above is used for all ACE_{TSS_}Singleton instantiations. Previously, there was one lock per instantiation. This change could have an impacted in threaded programs (ACE_MT_SAFE) with recursively constructed ACE_{TSS_}Singletons. In that case, either ACE_Null_Mutex or ACE_Recursive_Thread_Mutex should be used for the ACE_LOCK instantiation parameter. Use of ACE_Thread_Mutex would lead to deadlock. Beyond that, I don't expect the smaller number of locks to have any negative impact because they're just used when initially allocating the singleton instances. In addition to the above change, I made these two other changes: 1) ACE_Static_Object_Lock::instance (): dynamically allocate a lock if the Object_Manager has not been constructed yet. This approach replaces the static lock that was necessary to allow the static services to be constructed. 2) Consolidated the singleton_ access in ACE_TSS_Singleton via a singleton_i () internal accessor function. Now, ACE_TSS_Singleton looks just like ACE_Singleton. * ACE-INSTALL.html: updated DEC CXX 6.0 build/test status. * examples/Service_Configurator/IPC-tests/server/Handle_Timeout.i (handle_timeout): convert arg to long if ACE_HAS_64BIT_LONGS. * examples/Shared_Malloc/test_malloc.cpp (worker): convert arg to long if ACE_HAS_64BIT_LONGS. * examples/Timer_Queue/Driver.cpp (run_test,parse_commands): added ACE_NOTREACHED. * examples/Logger/simple-server/Logging_Handler.cpp (handle_close): removed declaration of unused arg "mask". * include/makeinclude/rules.local.GNU: added show_statics and show_uninit targets. They show the statics (that have static destructor calls) and uninitialized data in the object files in the current directory. They work best (or at all) on object files compiled by g++. Wed Oct 22 05:04:07 1997 Douglas C. Schmidt * ACE version 4.3.25, released Wed Oct 22 05:04:07 1997. Tue Oct 21 22:55:36 1997 * ace/WFMO_Reactor: Removed ACE_Event_Handler::CLOSE_MASK and the explicit registration for the closing of sockets from WFMO_Reactor. This is essentially for compatibility with UNIX programs. UNIX does not have a CLOSE_MASK and the notification of the closing of a socket is implicit in the socket becoming read ready. Therefore when you register for ACE_Event_Handler::READ_MASK with WFMO_Reactor, you will register for FD_READ and FD_CLOSE. When FD_CLOSE is triggered, handle_input() will be called on the Event_Handler. As on UNIX, read() will return 0 and the programmer will be able to tell that the socket has actually closed down. Arguably, this is lame for Win32 programmers as they have the explicit close notification, but portability and existing code base wins in this case. One other change. When an event_handler returns -1 from the callback, unbind() is called with ALL_EVENTS_MASK rather than the NULL_MASK. The upcall routine still needs to threat the two masks separately. (FD_CLOSE | FD_READ) will not work as both maybe simultaneously enabled. Therefore handle_input() maybe be called twice (once for FD_READ and once for FD_CLOSE) unless the user returns -1 from the first callback. * ace/Event_Handler: Removed the CLOSE_MASK. * examples/Logger/simple-server/Logging_Handler.cpp: Minor fixes. * examples/Logger/Acceptor-server/server_loggerd.cpp: Minor changes. No need to register the acceptor with the Reactor. Acceptor::open() does that. * examples/Reactor/ReactorEx/test_network_events: Removed the use of CLOSE_MASK. * tests/Reactor_Performance_Test: Removed the use of CLOSE_MASK. Tue Oct 21 21:48:54 1997 David L. Levine * ace/OS.[hi]: moved ACE_PTHREAD_CLEANUP_PUSH/POP definitions from OS.i to OS.h. Also, added #ifdef ACE_HAS_PTHREADS protection before ! defined ACE_LACKS_PTHREAD_CLEANUP so that only PThreads platforms need add ACE_LACS_PTHREAD_CLEANUP. * tests/Notify_Performance_Test.cpp: added #include of ace/Thread_Manager.h. It's needed on OSF-1. Tue Oct 21 21:09:35 1997 Nanbor Wang * ace/Memory_Pool.cpp (ACE_MMAP_Memory_Pool): Oops. Souldn't access options when it is 0. Tue Oct 21 12:58:30 1997 Nanbor Wang * ace/Log_Msg.{h,cpp}: (thr_desc): Modified the method so it take an extra argument of type ACE_Thread_Manager* and uses it to block execution until thread manager release its lock. * ace/Thread_Manager.{h,cpp} (acquire_release): Added this new method whose only function is to grab the thread manager's lock. This function ensure that a newly spawned thread won't try to access its thread descriptor before it is fully built. * ace/OS.cpp (inherit_log_msg): Modified to cache the thread descriptor of spawned thread in TSS Log_Msg after it has been created and block the execution of new thread until thread manager releases the lock (i.e., fills in all the information.) * ace/OS.h (ACE_Thread_Adapter): Added one more argument of type ACE_Thread_Descriptor* to the constructor with default value 0. * ace/OS.cpp (invoke): If the thread descriptor ptr is not zero in thread arguemnt, then, we'll wait till the thread manger fills in the formation and cache the value in TSS Log_Meg. * ace/Thread_Manager (spawn_i): Changed to pass in the thread descriptor of the newly spawned thread to thread adapter so it can cache it in TSS Log_Msg. This must be created before spawning the thread. If all goes well, we'll need to append the thread descriptor into the double-linked list in the thread manager. (append_thr): Added a new argument of type Thread_Descriptor* with default value 0. If we pass in a thread descriptor, append_thr won't try to create on itself. Tue Oct 21 21:34:35 1997 Douglas C. Schmidt * ACE version 4.3.24, released Tue Oct 21 21:34:35 1997. Tue Oct 21 14:14:33 1997 Carlos O'Ryan * examples/Timer_Queue/Thread_Timer_Queue_Test.h: * examples/Timer_Queue/Thread_Timer_Queue_Test.cpp: Use the typedef for Upcall to define the base Timer_Queue. Input_Task inherits from ACE_Task_Base, no need for ACE_Task<> here. Tue Oct 21 13:45:53 1997 Douglas C. Schmidt * ace/config-irix6.x-sgic++-nothreads.h: Added ACE_HAS_TERM_IOCTLS for SGI. Thanks to Jeffrey Peterson for reporting htis. * TAO/tests/Thruput_test/server.cpp (main): Changed BOA_init() to POA_init(). Tue Oct 21 12:58:30 1997 * ace/OS.h (ACE_SINGLETON_DECLARATION): (ACE_SINGLETON_INSTANTIATION): (ACE_SVC_SINGLETON_DECLARATION): (ACE_SVC_SINGLETON_INSTANTIATION): Added these new macros. Each of them takes one argument which is the ACE_Singleton class. All these craps are needed because MSVCs very kindly instantiate the template codes for you. This ends up producing two ACE_Singleton objects, one in DLL and one in user program. What these macros do is to supress the template code instantiation in user program and force compilers to instantiate these codes in DLL. On other platforms, these macros simply expand to empty strings. Here is a simple use case. Say we have a class called which we want to make it a singleton using ACE_Singleton template in our own DLL. In file , add a line like this, ACE_SVC_SINGLETON_DECLARATION (ACE_Singleton); and it will be expanded to suitabe code to export the class or supress another template instantiation outside DLL depending on whether ACE_BUILD_SVC_DLL is defined or not. In file , add a line, ACE_SVC_SINGLETON_INSTANTIATION (ACE_Singleton); at the end of the file to instantiate the template object in DLL. Notice that there is a bug in MSVC 4.2 and you'll have to write up a DEF file to export the template interface explicitly. These macros should be integrated with the case when ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION but because of the VC 4.2's bug, it will cause too much trouble to export all these symbols for external access. Therefore, I'll leave them as they are now. BTW, these is no templatized singleton object within ACE that needs to be exported at this moment. Tue Oct 21 07:14:24 1997 David L. Levine * ace/Svc_Conf_l.cpp: fixed compile warnings on g++. * ace/Timer_{Heap,List,Wheel}_T.cpp: replaced NULL with 0 because some compilers, such as GHS, define NULL as (void *) 0. So, it sometimes needs to be cast to be used. Thanks to Brian Mendel for reporting this. * ace/Thread_Manager.cpp (wait): removed thr_yield () hack because it's not needed with Nanbor's Thread_Manager fix. * tests/test_config.h (ACE_END_TEST): removed sleep hack with threading because it's not needed with Nanbor's Thread_Manager fix. * include/makeinclude/platform_vxworks*.GNU: added VXWORKS=1 macro, for use by individual Makefiles to suppress VxWorks builds. * examples/System_V_IPC: suppress VxWorks builds because the builds fail, and the examples wouldn't run anyways. * netsvcs/lib/TS_Server_Handler.cpp: only instantiate ACE_Svc_Handler if ! ACE_HAS_TLI because without TLI, the instantiation is in Client_Logging_Handler.cpp. * examples/Shared_Malloc/test_persistence.cpp: added #include of iostream.h with ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION. * examples/ASX/UPIPE_Event_Server/Supplier_Router.cpp: removed instantiation of ACE_TSS because it is in ace/Thread_Manager.cpp. Tue Oct 21 02:23:26 1997 Douglas C. Schmidt * ACE version 4.3.23, released Tue Oct 21 02:23:26 1997. Tue Oct 21 02:18:56 1997 Douglas C. Schmidt * examples/Makefile: Things are happier now, so we've added back the Timer_Queue directory to the Makefile. * examples/Timer_Queue: Added lots of annoying template specializations so that the timer queue tests now work with GCC. * ace/Svc_Conf.l: Changed the regular expression for a {string} so that it maches the null string (i.e., ""). Tue Oct 21 01:07:58 1997 Sergio Flores * examples/Timer_Queue: Added documentation and fixed some warnings from the unused arguments in some member functions. Cleaned up some .h files of unnecessary template instantiations. Tue Oct 21 01:01:12 1997 Nanbor Wang * ace/Thread_Manager.h: Added more comments. * ace/Thread_Manager.{h,cpp}: Added a parameter to Thread_Manager's constructor with default value 0. This parameter is currently unused and put in for backward compatibility. (open): Putting back this method for backward compatibility. This is currently a no-op. Thanks to David for reporting this. Also modify some mis-inform comments. Mon Oct 20 22:34:46 1997 * ace/OS.i (open): Moved Win32 specific errno mappings from open() to ACE_FAIL_RETURN. Also updated the wide-character version of open(). Mon Oct 20 14:07:37 1997 Douglas C. Schmidt * ace/config-hpux-10.x.h: Added #define ACE_DEFAULT_BASE_ADDR ((char *) 0x80000000) so that the various mmap() tests will work on HP/UX. Thanks to Stephen Coy for reporting this. * ace/OS.i: Fixed the implementation of ACE_OS::cond_timedwait() so that it will work on VxWorks. Thanks to David Levine for chasing this down and doing most of the changes. * ace/OS.h: Added a new special case for _KCC so that its ACE_UNUSED_ARG will work properly. Thanks to Torbjorn Lindgren for reporting this. Mon Oct 20 22:23:42 1997 Nanbor Wang * tests/Sigset_Ops_Test.cpp (main): It is not legal too for sigismember to return 0 if we pass an invalid signal to it. Thanks to Stephen Coy for fixing this. * Thread_Manager.*: Replace the thr_table_ with a double-linked list thr_list_. With this change, we can cache the thread descriptor entries in TSS area. Then, when accessing thread descriptor from a spawned thread's context, we don't have to search thru the whole list in order to find the corresponding thread descriptor. Double-linked list and caching also make adding/removing thread descriptor entries very fast. At this moment, we need to do a linear search when we try to access the cached pointer the first time. This overhead is expected to removed shortly. The will be some memory leaks at this moment because I haven't implemented the code to clean up the list when a thread manager gets deleted. Will fix it soon. * Log_Msg.{h,cpp}: Removed thr_state methods, variable, and thr_id methods and variable and replace them with thr_desc which cache the pointer to the thread descriptor structure. * Containers.*: Added two new template classes ACE_Double_Linked_List and ACE_Double_Linked_List_Iterator. These two classes implement the very fundamental data structure of double-linked list. Although this is not actually a container class, I couldn't find a better place to put these classes. * ace/Filecache.* * ace/FIFO.* * ace/FIFO_Send.* * ace/FIFO_Recv.* * ace/FIFO_Send_Msg.* * ace/FIFO_Recv_Msg.* * ace/Memory_Pool.* (ACE_MMAP_Memory_Pool_Options, ACE_MMAP_Memory_Pool): Added one member variable to these class so users can specify the LPSECURITY_ATTRIBUTES object they want to use with them. (map_file, init_inquire): Pass the security attribute to underlying memory map object. * ace/Mem_Map.* (ACE_Mem_Map, map, open, map_it): Added a new function parameter LPSECURITY_ATTRIBUTES. It will be passed down to ACE_OS::mmap or ACE_OS::open. This is only used on Win32. Mon Oct 20 08:48:28 1997 Steve Huston * ace/OS.h, config-hpux-10.x.h: Added a new definition, ACE_HAS_TIUSER_H_BROKEN_EXTERN_C - HP-UX's tiuser.h has def for t_errno/_terrno() outside of an extern "C" block, so in this case, wrap #include in our own extern "C" block. HP support call W3711856. Mon Oct 20 07:49:54 1997 David L. Levine * Makefile (TIMESTAMP): moved chmod after cvs commit. * include/makeinclude/platform_sunos{4,5}_sunc++*.GNU: don't create Templates.DB/Modules.DB, because that should have been Module.DB, and it's not needed anyways. * ace/config-vxworks-ghs-1.8.h: removed ACE_HAS_VERBOSE_NOTSUP. * tests/run_tests.vxworks: re-enabled Buffer_Stream_Test now that ACE_OS::cond_timedwait () is supported on VxWorks. * examples/IPC_SAP/TLI_SAP/ftp-server.cpp (main): removed call to ACE_Thread_Manager::open () because it no longer is available. Mon Oct 20 02:04:19 1997 Douglas C. Schmidt * ACE version 4.3.22, released Mon Oct 20 02:04:19 1997. Mon Oct 20 02:01:43 1997 Douglas C. Schmidt * examples/Makefile: Removed the Timer_Queue directory from the Makefile until Sergio has fixed all the examples for GCC. Sun Oct 19 21:15:10 1997 Sergio Flores * examples/Timer_Queue: Added a new testing framework for various types of ACE_Time_Queue usecases, e.g., threaded, reactive, and asynchronous. The new classes are: which factors out the common code for different type of Timer queue implementations, for example the parsing, the input reading, and leaves the implementation of display_menu() for example, to subclasses. the asynchronous version of the timer queue, uses signals. implements the reactive timer queue test driver using the threaded implementation of the timer queue. this class is used to specify operations on the timer queue independently of their implementation. Thsi allows different implementations of the timer queue to have different ways of doing the operations without the base class having to know that. See the Command pattern. Added some helper functions into the class. Sun Oct 19 18:07:31 1997 Douglas C. Schmidt * ace: Added new config files for SCO OpenServer with a new initial scheme to make config files: - The config to SCO OpenServer has been changed to separate OS specific flags, threads and compiler flags. - For SCO OpenServer the base config file is config-sco-5.0.0.h - Pthreads base files are config-fsu-pthread.h and config-mit-pthread for FSU and MIT pthreads. - The compiler file has been named config-gcc-2.7.2.h, this is base config file for GNU gcc 2.7.2 To build a config file for SCO using GNU gcc 2.7.2 would be: #include "ace/config-gcc-2.7.2.h" #include "ace/config-sco-5.0.0.h" We would obtain ACE config file for SCO OpenServer with GNU gcc 2.7.2 with no threads. To build a config file for SCO using GNU gcc 2.7.2 with FSU pthread would be: #include "ace/config-gcc-2.7.2.h" #include "ace/config-sco-5.0.0.h" #include "ace/config-fsu-pthread.h" Thanks to Arturo Montes for these changes. * ace/OS.i (open): Modified ACE_OS::open() so that it sets errno to EACCES when the requested file is in use. Thanks to Edan Ayal for reporting this. Sun Oct 19 17:55:34 1997 David L. Levine * etc/purify.solaris2: the contents of my ~/.purify file for Solaris 2.x. The ACE tests purify cleanly with it. Sun Oct 19 13:49:17 1997 Carlos O'Ryan * ace/Proactor.cpp: The mutex vs lock name change strikes back, this time under NT. * tests/Conn_Test.h: * tests/Conn_Test.cpp: The Svc_Handler was cached, but it had the default handle_close() method, which destroys the object. The new version leaks a bit of memory, but it seems that it never crashes. Sat Oct 18 09:13:29 1997 Douglas C. Schmidt * ace/Synch_T.cpp (lock): Moved the frigging lock method of Atomic_Op into the *.cpp file to work around bugs with earlier versions of the horribleHP/UX C++ compiler. Thanks to Neil Cohen for reporting this. Sat Oct 18 07:43:29 1997 David L. Levine * Makefile (release): oops, removed "echo" that was used to disable CVS commit, for testing. * ace/Thread_Manager.{h,cpp},Object_Manager.{h,cpp}: moved ace_thread_exit_lock_ to Object_Manager. * include/makeinclude/rules.local.GNU: added $(TEMPLATE_REPOSITORY) to OBJDIRS, so that individual platforms can add template repository directories for creation. * include/makeinclude/platform_sunos{4,5}_sunc++*.GNU: added TEMPLATE_REPOSITORY with Templates.DB and Templates.DB/Modules.DB. We can build without any warnings with Sun C++ now. Sat Oct 18 00:17:26 1997 Douglas C. Schmidt * ACE version 4.3.21, released Sat Oct 18 00:17:26 1997. Fri Oct 17 22:51:46 1997 Carlos O'Ryan * ace/Timer_Queue_Adapters.h: * ace/Timer_Queue_Adapters.i: * ace/Timer_Queue_Adapters.cpp: * ace/Timer_Queue_T.h: * ace/Timer_Queue_T.i: * ace/Timer_Queue_T.cpp: * ace/Timer_List_T.cpp: * ace/Timer_Wheel_T.cpp: * ace/Timer_Hash_T.cpp: Changed the accessor name for the lock_ field from mutex() to lock(), we know this can cause trouble on HP-UX, but only if the function is inline; so it was moved to the .cpp file. * ace/Timer_Queue_Adapters.h: * ace/Timer_Queue_Adapters.i: Changed the method name from lock() to mutex(), this should workaround a bug in the HP/C++ compiler. * ace/Timer_Hash.cpp: * ace/Timer_Hash_T.h: * ace/Timer_Heap.cpp: * ace/Timer_Heap_T.h: * ace/Timer_List.cpp: * ace/Timer_List_T.h: * ace/Timer_Queue.cpp: * ace/Timer_Queue_T.h: * ace/Timer_Wheel.cpp: * ace/Timer_Wheel_T.h: Workaround HP/C++ compiler bug, we cannot include the .cpp file from the header file, but it must be included in the point of instantiation. Fri Oct 17 18:34:00 1997 Douglas C. Schmidt * ace/Atomic_Op.i (lock): Added an accessor to ACE_Atomic_Op to return a reference to the underlying lock. Thanks to Janusz Stopa for suggesting this. Fri Oct 17 15:36:26 1997 * ACE/config-win32-common.h: Added a directive to disable warning of using Microsoft template instantiation control extension. Fri Oct 17 06:31:20 1997 David L. Levine * ace/Atomic_Op.i (operator=): rsh.value () instead of just rhs. * Makefile (release): added ACE_VERSION string to ace/Version.h. The MS Resource-Compiler doesn't implement the preprocessor # operator, so ACE_VERSION supplies the concatenated version string. Thanks to Matthias for suggesting this. * ace/Svc_Handler.{h,cpp},Object_Manager.{h,cpp}: moved ace_svc_handler_lock_ to Object_Manager. This lock was created once per Svc_Handler instantiation. It has been replaced by a single lock for all instantiations. That shouldn't be a problem because there are so few Svc_Handler instantiations, and the lock is only used for singleton creation using double-checked locking. Fri Oct 17 01:19:35 1997 Douglas C. Schmidt * ACE version 4.3.20, released Fri Oct 17 01:19:35 1997. Fri Oct 17 00:05:55 1997 * ace/OS: Added ACE_Export to declarations to: ace_mutex_lock_cleanup_adapter, ftruncate, ace_thread_adapter * ace/OS.cpp (readv, writev): Moved ACE_Export directive from OS.cpp to OS.i. * ace/Atomic_Op (operator TYPE): operator TYPE() of Atomic_Op has been deprecated and removed. Because both user-defined conversions and user-defined operators were defined on Atomic_Op, it was possible to get ambiguities between the user-defined operators and the built-in operators. Therefore, operator TYPE() has been removed and explicit accessor value() has been added. Thanks to Stephen Coy for suggesting this. * ace/Atomic_Op (operator!=): Add new operator. * tests/Atomic_Op_Test.cpp: Previously we had foo.operator== (5). It was necessary to resolve the ambiguities between the user-defined operators and the built-in operators. Since we have removed the automagic type conversion, we can go back to writing foo == 5. * ACE: Atomic Op related minor changes: ace/Malloc.cpp (dump): tests/Future_Test.cpp (main): tests/Reactors_Test.cpp (handle_input): example/Threads/{future1.cpp future2.cpp manual_event.cpp task_two.cpp tss2.cpp}: examples/Reactor/Misc/test_reactors.cpp: * tests/Notify_Performance_Test.cpp: * tests/Reactor_Performance_Test.cpp: Moved explicit template instantiation code to ACE_HAS_THREADS part for the test. Thanks to Stephen Coy for pointing this out. Thu Oct 16 20:44:40 1997 James C Hu * ace/Message_Block.cpp: Changed how continuations are released in the Message_Block::release_i() method to use an iteration rather than recursion. This is to avoid a stack overflow problem encountered by Janusz Stopa. * ace/OS.cpp: Added ACE_Export to the declarations of ::writev and ::readv. These are emulation implementations for systems that don't support them natively. Was not being resolved correctly on NT. Hopefully this will fix it. Fix suggested by Rob Head (rhead@virtc.com). Thu Oct 16 14:21:34 1997 Nanbor Wang * ace/Proactor.cpp: Replaced #include "ace/Servie_Config.h" with #include "ace/Object_Manager.h" for declaration of ACE_Static_Object_Lock. Thu Oct 16 10:22:48 1997 Carlos O'Ryan * ace/Timer_Heap_T.h: Fixed comment on the Heap_Iterator, it said "Iterates over an "). Thu Oct 16 08:43:50 1997 David L. Levine * ace/OS.i (sema_trywait): on VxWorks only, fixed to set errno to EBUSY if the semaphore couldn't be taken. Thanks to Doug for suggesting this fix. * performance-tests/Misc/preempt.cpp (main): fixed program name. * include/makeinclude/platform_osf1_4.0.GNU: OCFLAGS instead of OFLAGS. * tests/test_config.h (VxWorks): restored the removal of the log file, because it again appears to be necessary. * tests/run_tests.vxworks: updated VxWorks tests status. * ace/OS.cpp,Token_Invariants.{h,cpp},Object_Manager.{h,cpp}: moved ace_os_monitor_lock and ACE_Token_Invariants_Creation_Lock to Object_Manager. Thu Oct 16 02:26:12 1997 Douglas C. Schmidt * ACE version 4.3.19, released Thu Oct 16 02:26:12 1997. Thu Oct 16 02:07:54 1997 Douglas C. Schmidt * tests/Priority_Reactor_Test.cpp: Added a "max_retries" flag to keep the test from hanging forever... Thanks to Stephen Coy for motivating this. * tests/Priority_Reactor_Test.h: Changed class Read_Handler : public ACE_Svc_Handler< to class Read_Handler : public ACE_Svc_Handler< and the same for the Write_Handler. Thanks to the ever vigilant Stephen Coy for reporting this. Thu Oct 16 01:18:48 1997 Nanbor Wang * ace/OS.cpp (socket_init): Changed to use ACE_UNUSED_ARG. * ace/SV_Semaphore_Simple.cpp (name_2_key): Explicitly cast the return value to (key_t). It was causing problem on Win32. Wed Oct 15 22:47:30 1997 Carlos O'Ryan * ace/ACE.h: * ace/ACE.cpp: Added an implementation of the ISO 8802-3 standard 32 bits CRC, but for strings only. The implementation was taken from the FreeBSD code. * ace/SV_Semaphore_Simple.cpp: Improved the hashing algorithm to assign a "unique" key for semaphore keys using an string. This solves a problem detected by Mark L. Boriack (Mark.L.Boriack@cpmx.saic.com): under OSF/1 the were too many collitions with the default arguments for ACE_Process_Mutex. Note that this is only a problem if no name is given to it. * ace/Log_Msg.cpp: ACE_Log_Msg_message_queue_ was not initialized in platforms without threads. * ace/Containers.h: Added a duplicate ACE_Ubounded_Stack_Iterator to the NANBOR_EXP_CHANGES block. * ace/OS.h (ACE_DES_FREE_TEMPLATE): Removed unneeded concatenation that was getting the HP/aCC compiler a bit confused. Thanks to Stephen Coy for pointing out the problem and then reminding me of actually adding the solution to ACE. Wed Oct 15 11:07:47 1997 Douglas C. Schmidt * ace/OS.i: Fixed the flock_trywrlock() and flock_tryrdlock() so that they both set errno = EBUSY if they lock is already held. * ace/OS.i (mutex_trylock): Make the VxWorks version consistent with the other versions by returning -1 and setting errno to EBUSY. Thanks to David Levine for reporting this. * ace/Synch.h: Updated the documentation to clarify what the return value is from the tryacquire() methods. * ace/OS.i (mutex_trylock): On NT, if we try to acquire a mutex that's already locked we'll return -1 and set errno to EBUSY rather than ETIME to be consistent with Pthreads. Please see the following entry to understand why this doesn't break existing code ;-). * ace/OS.h: Added a #define for EBUSY on NT. We'll make it the same as ETIME to avoid breaking existing code! * tests/Process_Strategy_Test.cpp (main): Ignore SIGCHLD in the child. Wed Oct 15 14:59:41 1997 * tests/run_tests.bat: Added Reactor_Performance_Test and Notify_Performance_Test to one button test script. * tests/tests.dsw: Added Reactor_Performance_Test.dsp and Notify_Performance_Test.dsp. Wed Oct 15 07:21:05 1997 David L. Levine * ace/ACE.{h,i},Version.h: added ACE version macros, and static functions to access them in class ACE. * Makefile (release): updates ace/Version.h based on contents of VERSION. * tests/Time_Value_Test.cpp: added test of ACE version accessors. * ace/OS.cpp,Object_Manager.cpp: changed ACE_TSS_CLEANUP_LOCK from an ACE_Thread_Mutex to an ACE_Recursive_Thread_Mutex. * ace/OS.h: define ACE_NOTREACHED as empty on DEC_CXX (and on ghs instead of VXWORKS). * tests/TSS_Test.cpp (worker): convert void *c to long if ACE_HAS_64BIT_LONGS to avoid DEC cxx compiler warning. * examples/Threads/thread_specific.cpp (worker): convert void *c to long if ACE_HAS_64BIT_LONGS. Changed name of "lock" to "printf_lock" to avoid collision with lock () in DEC cxx iostream.hxx. * examples/threads/tss1.cpp: removed unused static "lock". * examples/IPC_SAP/TLI_SAP/ftp-server.cpp (read_file): convert void *fd to long if ACE_HAS_64BIT_LONGS. And, put "n" in ACE_UNUSED_ARG. (main): put "return 0" in ACE_NOTREACHED. * include/makeinclude/platform_osf1_4.0.GNU: minor cleanup, incl. addition of -use_ld_input to SOFLAGS. * include/makeinclude/platform_osf1_4.0_g++.GNU: added "c" to ARFLAGS. * tests/Future_Test.cpp,examples/Threads/future[12].cpp (Method_Object_Name): removed extraneous ";" after function definition. * netsvcs/lib/Base_Optimizer.h: adding missing, default "public" access specifier. * apps/JAWS/Server/HTTP_Config.h: added "class" to friend HTTP_Config declaration in HTTP_Config_Info. * examples/IPC_SAP/TLI_SAP/ftp-client.cpp: removed unused variable "MAXLINE". * examples/IPC_SAP/TLI_SAP/db-server.cpp (main): wrapped "return 0" with ACE_NOTREACHED. * examples/Reactor/Misc/test_timer_queue.cpp (handle_timeout): convert void *arg to long if ACE_HAS_64BIT_LONGS. * examples/Service_Configurator/IPC-tests/client/ local_fifo_client_test.cpp: removed unused variable BUF_LEN. * examples/Shared_Malloc/test_persistence.cpp: removed unused Employee ostream << operator. * tests/Conn_Test.cpp: neutered Conn_Test on DEC_CXX. It doesn't build on DEC cxx 5.5 due to apparent template instantiation problems. Thanks to James Johnson for reporting that. And it doesn't terminate when built with DEC cxx (beta) 6.0. * ace/Thread_Manager.h: removed parens from (???) because g++ got upset about encountering a trigraph. * tests/{Notify,Reactor}_Performance_Test.cpp: added ACE_UNUSED_ARG (handle). * tests/Makefile,run_tests.sh: added Reactor_Performance_Test and Notify_Performance_Test. * tests/run_tests.vxworks: added test status of Reactor_Performance_Test (doesn't appear to do anything, but doesn't return) and Notify_Performance_Test (fcntl not supported). Wed Oct 15 01:48:36 1997 Nanbor Wang * ace/Containers.{h,i,cpp}: * ace/Thread_Manager.{h,i,cpp}: Start modifying these files. Will work on them for a day or two. You guys shouldn't worry about these changes affecting anything because I surround my changes with #ifdef (NANBOR_EXP_CHANGES) my changes #else original codes #endif. More details change log will be added once I get them all working. Tue Oct 14 23:54:21 1997 Douglas C. Schmidt * ACE version 4.3.18, released Tue Oct 14 23:54:21 1997. Tue Oct 14 20:27:28 1997 Carlos O'Ryan * tests/Priority_Reactor_Test.cpp: Added a debug message to find out who terminates the reactor thread. * tests/Priority_Reactor_Test.cpp: The children could not connect sometimes, this will cause the test to hang, waiting for those failed connections. I added a simple exponential backoff strategy to retry connections until they succeed. Tue Oct 14 17:48:28 1997 Steve Huston * ace/config-hpux-10.x-hpc++.h: Set ACE_LACKS_SIGNED_CHAR for both C++ and aC++, not just C++. Thanks to Stephen Coy and David Levine for finding this. Tue Oct 14 03:26:17 1997 Douglas C. Schmidt * ace/OS.h: Moved to earlier in the file so that u_int will be defined. Thanks to Neil B. Cohen for reporting this. * ace/OS.cpp (uname): Added a workaround for the fact that Chorus doesn't support uname(). Thanks to Wei Chiang for this fix. Tue Oct 14 08:02:20 1997 David L. Levine * ace/Managed_Object.{h,cpp} (ACE_Cleanup_Adapter): added virtual destructor, needed by some compilers for vtable placement. Thanks to Stephen Coy for this patch. * ace/Svc_Conf_y.cpp: commented out unused args and wrapped assignments in "if" conditionals to avoid g++ warnings. * ace/Object_Manager.{h,cpp},Synch.{h,cpp}: moved ACE_Static_Object_Lock from Synch.{h,cpp} to Object_Manager.{h,cpp}. This allows it to be absorbed into the ACE_Object_Manager's preallocated locks. The ACE_Static_Object_Lock interface isn't really needed any more, but has been kept for backward compatibility. * ace/Object_Manager.cpp: use a static ACE_Static_Object_Lock, temporarily, because the ACE static services needs it. * ace/Malloc.cpp,Reactor.cpp,Service_Repository.cpp: added #include "ace/Object_Manager.h" for ACE_Static_Object_Lock. * ace/Thread_Manager.h: moved ACE_Thread_Manager::THR_FUNC typedef outside the class declaration to avoid compilation problems on g++/VxWorks/i960 with -g. THR_FUNC is only used by protected ACE_Thread_Manager methods so this doesn't widen the public interface. Thanks to Aaron Valdivia for reporting this and verifying the fix. * tests/IOStream_Test.cpp (client): multiply floats by 1.0 instead of 1 to avoid bad code generation on g++/VxWorks/i960. Thanks to Aaron Valdivia for reporting this. * tests/Buffer_Stream_Test.cpp: removed unused static thread_manager. It caused core dump during destruction of static objects with ACE_HAS_NONSTATIC_OBJECT_MANAGER. * examples/Timer_Queue/Reactor_Timer_Queue_Test.cpp (handle_timeout): removed declaration of unused arg "tv". * examples/Timer_Queue/Thread_Timer_Queue_Test.cpp (main): removed declarations of unused args "argc" and "argv". And, updated template instantiations. * ace/OS.h: use "complex" ACE_UNUSED_ARG for DEC_CXX. * ace/Reactor.i (implementation): moved definition to top of file to prevent use before definition. * ace/ARGV.cpp (ACE_ARGV): removed extraneous ; function definition. * ace/config-osf1-4.0.h: removed ACE_NEEDS_DEV_IO_CONVERSION. * tests/Time_Value_Test.cpp: ACE_HAS_64BIT_LONGS instead of ACE_HAS_64BIT_LONG. Tue Oct 14 03:13:38 1997 Douglas C. Schmidt * ACE version 4.3.17, released Tue Oct 14 03:13:38 1997. Tue Oct 14 03:10:00 1997 Douglas C. Schmidt * ace/Service_Types.cpp (fini): Backed out the following change until we figure out how to keep existing code from dying... Thanks to Nanbor for reporting this. * ace/Service_Types.cpp: Changed the implementation so that we bypass the default cleanup originally done in ACE_Service_Type_Impl::fini() and instead perform the cleanup in ACE_Service_Object_Type::fini (void). Thanks to Alex Chan for reporting this. * ace/Svc_Conf.y: Make sure that the Module has the same name as the Module_Type object from the svc.conf file. We need to do this because the Stream_Type::fini() method removes each module by the name given in the configuration file (stored in the Module_Type object). But the Stream::remove() method compares this name against the name stored in the Module. So the object is deleted, but never removed from the list. Another traversal of the list causes a crash... Thanks to Eric Newton for suggesting this fix. * ace/OS.cpp (invoke): Added call to AfxEndThread insides ACE_TSS_Cleanup::exit() such that the same cleanup would not be executed again when threads exit in ace_thread_adapter() in OS.cpp. Thanks to Alex Chan for reporting this. * ace/Service_Config.cpp (process_directives): Avoid reporting lex/yacc leakage since there is nothing we could do about it. Thanks to Alex Chan for reporting this. * ace/Svc_Conf.y: Removed duplicate call to symbol() to avoid the problem that dynamic service objects are created twice. Thanks to Alex Chan for reporting this. * examples/Reactor/FIFO/client.cpp (main): Fixed the call to fifo_sender.send () so that it passes msg rather than &msg. Thanks to Sandro Doro for reporting this. Tue Oct 14 02:49:02 1997 * tests/Notify_Performance_Test.cpp: New performance test. This test is used to time the notification mechanisms of the ACE_Reactors. Both the WFMO_Reactor and Select_Reactor can be tested. The notify() mechanism can also be tested with or without data. * tests/Reactor_Performance_Test.cpp: New performance test. This test is used to time the dispatching mechanisms of the ACE_Reactors. Both the WFMO_Reactor and Select_Reactor can be tested. * ace/Svc_Handler.cpp (shutdown): Change READ_MASK | WRITE_MASK to ALL_EVENTS_MASK. * ace/Atomic_Op (value): Added an explicit value accessor. Mon Oct 13 23:07:15 1997 Douglas C. Schmidt * tests/Process_Strategy_Test.cpp (handle_signal): Removed the ACE_DEBUG calls in the child reader signal handler. This was causing all sorts of random problems due to the asynchronous nature of signals. Thanks to David Levine for pointing this out. Mon Oct 13 16:27:46 1997 Carlos O'Ryan * tests/Priority_Reactor_Test.h: * tests/Priority_Reactor_Test.cpp: Fixed wrong header file, thanks to Irfan (irfan@cs.wustl.edu) * examples/Shared_Malloc/test_persistence.cpp: * examples/Timer_Queue/Thread_Timer_Queue_Test.cpp: Added a couple of ACE_NOTREACHED, thanks to Torbjorn Lindgren for pointing out this one. * ace/Priority_Reactor.cpp: Added some more template specializations. * tests/Priority_Reactor_Test.cpp: Fixed a number of bugs: hostname not initialized when creating the server address. The Svc_Handler base class should be instantiated using the ACE_*_STREAM macros. The code for non-threaded platforms was broken. Thanks to Irfan * tests/Priority_Task_Test.cpp: We use the new ACE_Sched_Priority_Iterator. * include/makeinclude/platform_irix6.x-32_sgic++.GNU: * include/makeinclude/platform_irix6.x-n32_sgic++.GNU: Removed this old config files, they have been superseeded by platform_irix6.x_sgic++.GNU. Mon Oct 13 15:41:32 1997 Steve Huston * ace/Select_Reactor.i, Priority_Reactor.i: Moved code for the ACE_Event_Tuple struct from Priority_Reactor.i to Select_Reactor.i. * ace/Priority_Reactor.cpp: added #include Malloc_T.h to build on AIX. * ace/Synch_T.h, Timer_Queue_Adapters.h - added a template argument to the non-ACE_HAS_TEMPLATE_TYPEDEFS, multi-threaded version of the ACE_SYNCH_CONDITION macro - of the 3 possibilities for its definition, this is the only case which requires a template argument. Timer_Queue_Adapters.h is the only user of the definition, and it was changed to not supply the template argument. * tests/Conn_Test.h: * tests/Process_Strategy_Test.h: Added #include "ace/SOCK_Stream.h" Mon Oct 13 13:42:05 1997 Nanbor Wang * examples/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.cpp (svc): Added a macro to define L_cuserid on Win32. Mon Oct 13 13:44:40 1997 * ace/Priority_Reactor: Fixed a gross violation of ACE coding standard. Changed bucket to bucket_. Mon Oct 13 12:58:01 1997 David L. Levine * ace/OS.i: moved ACE_OS::strcasecmp () definition after ACE_OS::strlen () to prevent use before definition. * ace/Priority_Reactor.i: reordered initializers to match declaration order. * ace/Sched_Params.i: reordered function definitions to prevent uses before definitions. * ace/Thread_Manager.cpp (ACE_Thread_Descriptor ctor): reordered initializers to match declaration order. (spawn_i): added ACE_UNUSED_ARG (t_handle) without WTHREADS. * ace/Thread_Manager.cpp (wait): moved all of the "join" block inside the #ifndef VXWORKS so that it compiles on VxWorks. * ace/Strategies_T.cpp (ACE_NOOP_Creation_Strategy:: make_svc_handler): removed unused arg declaration to avoid compiler warning. * ace/Svc_Conf_y.cpp: commented out unused args and wrapped assignments in "if" conditionals to avoid g++ warnings. * tests/Priority_Reactor_Test.cpp (handle_input): added ACE_UNUSED_ARG (h). * examples/Connection/non_blocking/CPP-connector.cpp (handle_signal): added ACE_UNUSED_ARG (signum). Mon Oct 13 03:25:45 1997 Douglas C. Schmidt * ACE version 4.3.16, released Mon Oct 13 03:25:45 1997. Mon Oct 13 03:18:33 1997 Douglas C. Schmidt * ace/Thread_Manager.h: Removed the following code from ACE_Thread_Control: #if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0) static ACE_Thread_Mutex ace_thread_lock_; // Lock the creation of the Singleton. #endif /* defined (ACE_MT_SAFE) */ What on earth was this doing here?! Thanks to Stephen Coy for reporting this. Mon Oct 13 00:10:00 1997 * tests/Atomic_Op_Test.cpp (main): Changed "foo == 5L" to "foo.operator== (5L)" because the former was breaking some compilers (e.g., HP/UX aCC). * ace/Connector.h (open): Removed the defaults arguments since some compilers complain about the two open()s being indistinguishable. Sun Oct 12 23:51:57 1997 Douglas C. Schmidt * ace/{Synch_T,Atomic_Op}: All the relational operators should return int (really return bool) rather than TYPE. Sun Oct 12 18:41:01 1997 Carlos O'Ryan * tests/Priority_Reactor_Test.cpp: Added several missing template specializations. * ace/Priority_Reactor.cpp: Fixed typo (#pragme for #pragma). Added several missing template instantiation. * ace/Timer_Queue_Adapters.cpp: The includes were missing and there was a minor syntax error. Sun Oct 12 16:16:15 1997 Nanbor Wang * ace/ace_{dll,lib}.dsp: Added Timer_Queue_Adapters.cpp into project files. * tests: Added a new test Priority_Reactor_Test. * ace/Timer_Queue_Adapters.{h,i}: Added or moved the line that instructs edit mode to use on emace to the first line. Also added ACE_Export to classes in this file. * ace/Timer_Queue_Adapters.cpp: Added proper inclusion of the header file. Corrected a syntax error. * examples/Timer_Queue/Timer_Queue.dsw: Added a new project Thread_Timer_Queue_Test.dsp. * tests/run_tests.{bat,sh}: Added MT_SOCK_Test and Priority_Reactor_Test into one-buttoned test set. Sun Oct 12 16:53:32 1997 Douglas C. Schmidt * ace/examples/Service_Configurator/IPC-tests/server: Reformatted and recommented the code a bit. * ace/OS: Added 3 new ACE #defines: #define ACE_ONE_SECOND_IN_MSECS 1000L #define ACE_ONE_SECOND_IN_USECS 1000000L #define ACE_ONE_SECOND_IN_NSECS 1000000000L This is much easier to read than trying to keep track of the 000s! Then, replaced all uses of the original values with the new symbolic constants. * ace/Timer_List.cpp: Removed an explicit template instantiation of ACE_Async_Timer_Queue_Adapter<>. Why was it here in the first place? * ace: Created a new group of Timer_Queue_Adapters files and moved the Async and Thread adapters into this file. This reduces the amount of coupling in the ACE library and removes problems with circular includes. * ace/Timer_Queue_T: Added a new ACE_Thread_Timer_Queue_Adapter, which makes it possible to use a timer queue in a thread automagically. Thanks to Carlos O'Ryan for writing this. * examples/Timer_Queue: Began to integrate Carlo's new thread timer queue test. * examples/Timer_Queue/Async_Timer_Queue_Test.cpp: Changed the timer queue from a Timer_List to a Timer_Heap. * examples/Makefile (DIRS): Added Timer_Queue to the list of DIRS to build. Sun Oct 12 16:45:47 1997 Carlos O'Ryan * ace/Sched_Params.h: Added some comments. * examples/Timer_Queue/Thread_Timer_Queue_Test.cpp: Added some comments and template specializations. * examples/Naming/Makefile: There is no need to set LDLIBS to add local object files anymore, using FILES is enough. Sun Oct 12 03:35:37 1997 Nanbor Wang * examples/Timer_Queue: Added a new directory for testing of various usages of timer queue. * tests/Async_Timer_Queue_Test: Moved to examples/Timer_Queue. It doesn't really belong to tests/ directory. * ace/ACE.cpp (register_stdin_handler): Must register the reactor we are using to the event handler. (read_adapter): Must notify the reactor when we are done with handling stdin event. Sun Oct 12 00:26:56 1997 Carlos O'Ryan * ace/Makefile: * ace/Priority_Reactor.h: * ace/Priority_Reactor.i: * ace/Priority_Reactor.cpp: Augmentes Select_Reactor, adding priority based dispatching for the I/O Event_Handlers, the only feature supported is dispatching in the order defined by the priorities. Each Event_Handler defines its priority, if the priority is out of range the culprit is "punished" by dispatching at the lowest priority. Care has been exercised to avoid dynamic memory allocation. * tests/Makefile: * tests/Priority_Reactor_Test.h: * tests/Priority_Reactor_Test.cpp: Added small tests of the Priority_Reactor, the test runs an Acceptor on the main thread and creates several threads (or processes if the plaform does not support threads) that connect to this Acceptor. The writing threads send several short messages, the main thread receives them using one Svc_Handler per writer, dispatched at different priorities. The test itself is interesting, it shows how to write very simple Svc_Handler, Connectors and Acceptors. * ace/Select_Reactor.h: * ace/Select_Reactor.cpp: The dispatching of all the handles in a "group" (READ, WRITE or EXCEPT) was encapsulated in a single routine. * ace/Malloc_T.cpp: In the Cached_Allocator memory was allocated as an arrays of char, it must be released the same way. * ace/Sched_Params.h: * ace/Sched_Params.i: Added a new class (ACE_Sched_Priority_Iterator) to iterate over the priorities. * tests/Priority_Task_Test.cpp: Added some comments. Sat Oct 10 16:23:49 1997 Steve Huston * tests/SOCK_Connector_Test.cpp: Passes the test if the should-fail non-blocking test fails for any reason - not limited to ECONNREFUSED or ENOTCONN. Sat Oct 11 16:02:33 1997 Douglas C. Schmidt * ACE version 4.3.15, released Sat Oct 11 16:02:33 1997. Sat Oct 11 14:38:16 1997 Douglas C. Schmidt * ace/SOCK_Connector.cpp (complete): Fixed a typo with ACE_NON_BLOCKING_BUG_DELAY. Thanks to John Zeb Dhom" for reporting this. * tests/MT_SOCK_Test.cpp (client): Slightly revised the client function so that it doesn't try to use non-blocking connects if it's on a Win32 platform that has bugs with non-blocking connects. * ace/SOCK_Connector.cpp: It appears that connect() can set the ETIMEDOUT errno if the connection times out (whatever that means). Therefore, I need to check for that errno, rather than ETIME after calling connect(). * tests/SOCK_Connector_Test.cpp: Added a check for ETIMEDOUT since this appears to be set by some platforms (e.g., SGI). Sat Oct 11 02:52:10 1997 Douglas C. Schmidt * ACE version 4.3.14, released Sat Oct 11 02:52:10 1997. Sat Oct 11 02:10:29 1997 Carlos O'Ryan * examples/Logger/simple-server/Makefile: * examples/Mem_Map/IO-tests/Makefile: * examples/Reactor/Multicast/Makefile: * examples/Service_Configurator/Misc/Makefile: Fixed some more problems with the Makefiles for binaries; I took the chance and added RCS ids on the Makefiles Fri Oct 10 18:39:39 1997 Douglas C. Schmidt * tests/Service_Config_Test.cpp: Moved the static member function called cleanup() out into a stand-alone extern "C" function called test_singleton_cleanup() to workaround MVS C++ compiler bugs. Thanks to Chuck Gehr for reporting this. * ace/Task.cpp: Solved the age old MVS C++ problem where we can't register C++ static member functions as C callback functions. The solution here was to create a C wrapper to do the callback. Thanks to Chuck Gehr for reporting this. * tests/Service_Config_Test.cpp: Made the destructor of Test_Singleton public to work around bugs with the MVS C++ compiler. Thanks to Chuck Gehr for reporting this. * ace/ACE, ace/Proactor, ace/SOCK_Connector, ace/SPIPE_Connector, ace/Acceptor, tests/Conn_Test: Changed ETIMEDOUT errno to ETIME errno to be consistent throughout ACE. There should be no uses of ETIMEDOUT in ACE or the test apps and examples. * ace/ACE.cpp (handle_timed_complete): Only assume that we've timed out if the return value from select() == 0 *and* the timeout value isn't NULL... * ace/Object_Manager.h: Replaced the use of ACE_MT() in the header file with a #ifdef. This solves problems that arise when ACE_MT is defined as "nothing" when MT_SAFE is not defined. As a code which has "ACE_MT();" becomes just ";" and fail to compile. Thanks to Avraham Nash for reporting this. Fri Oct 10 19:55:50 1997 Carlos O'Ryan * examples/ASX/CCM_App/Makefile: * include/makeinclude/rules.bin.GNU: I have re-applied Steve Huston changes from Oct 01, the change was (IMHO) useful and made compilation cleaner. * examples/ASX/Event_Server/Event_Server/Makefile: Fixed problem that made compilation fail. Fri Oct 10 19:52:44 1997 * ace/OS.h: * ace/Connector.cpp: * ace/SOCK_Connector.cpp: Added new #define ACE_NON_BLOCKING_BUG_DELAY and replace their uses from some magic numbers to this constant. Fri Oct 10 19:27:28 1997 Steve Huston * include/makeinclude/rules.bin.GNU examples/ASX/CCM_App/Makefile Removed the changes to these files added Oct 01. Fri Oct 10 15:21:07 1997 * examples/Connection/non_blocking/CPP-connector.cpp (disconnecting): Remove this method. It was not being used. Also rewrote some parts of handle_close to make the code simple. * ace/Connector.cpp (create_AST): The register_handler() method now needs to explicitly be given the handle to wait on. This is because the get_handle() method of Connector has been depricated. * examples/Connection/non_blocking/test_sock_connector.cpp (main): Since this test waits on the STDIN handle to become ready, we have to make sure that the WFMO_Reactor is used on Win32. This is necessary since select() on NT does not support waiting on STDIN. * examples/Connection/non_blocking/CPP-connector.cpp (open): On Win32, the std handle must be registered directly (and not as a socket). On non-Win32, the std handle must be registered as a normal handle with the READ mask. Since on Win32, STDIN is used directly as an waitable handle, handle_signal will be called instead of handle_input. Therefore, we had to add handle_signal to the event_handler. Fri Oct 10 15:16:47 1997 Nanbor Wang * ace/WFMO_Reactor.{h,cpp}: * ace/Select_Reactor.{h,cpp}: * ace/Reactor_Impl.h: * ace/Reactor.h: Added 2 new functions in ACE_Reactor class so we can replace the signal handler and timer queue the reactor is using. Notice that you should do this before you start the reactor, otherwise, you may loose your scheduled timed events. Fri Oct 10 14:49:40 1997 Douglas C. Schmidt * bin/man2html: Added a new set rul -e 's/^$/

/g', which correctly preserves paragraph boundaries. Regenerated all of the ACE html documentation so that it is much better formatted. Fri Oct 10 11:08:02 1997 Carlos O'Ryan * tests/run_tests.sh: We remove the log file before running a test, we also check for the log file existance before running run_test.check on it. Thanks to Dean Clamons for helping us with this. * tests/run_tests.check: IRIX egrep does not support -q, we redirect the output the /dev/null instead. Fri Oct 10 01:46:07 1997 Douglas C. Schmidt * ACE version 4.3.13, released Fri Oct 10 01:46:07 1997. Thu Oct 9 22:23:56 1997 Douglas C. Schmidt * ace/Thread_Manager.cpp: Moved the explicit template instantiations for ACE_Unbounded_Queue out of the complicated #ifdef since we also want this to compile even if we don't have threads. * tests/MT_SOCK_Test.cpp: Revised the code so that it uses processes on UNIX rather than threads. * tests/SOCK_Test.cpp (spawn): Cleaned up the code to make it correct. * ace/Get_Opt.cpp (ACE_Get_Opt): Changed the third argument to the ACE_Get_Opt constructor be changed from `char *' to `const char *'. Thanks to Eric Newton for suggesting this. Thu Oct 09 18:43:14 1997 * ace/Strategies_T.cpp (connect_svc_handler): Added synchronization to the method as the setting of the in_use bit in the service handler must be done atomically with the finding and binding of the service handler in the cache. * tests/Conn_Test.cpp (client_connections): Added multithreading to the test in order to test out the new MT features of the Connector. * ace/OS.cpp (invoke): Somehow there was a bug introduced in ACE_Thread_Adapter::invoke where the user entry point was being called twice! Thu Oct 09 17:54:31 1997 Douglas C. Schmidt * ACE version 4.3.12, released Thu Oct 09 17:54:31 1997. Thu Oct 9 17:46:59 1997 Carlos O'Ryan * ace/Thread_Manager.cpp: Added explicit instantiation of ACE_Unbounded_Queue_Iterator, it seems to be needed on Linux and other platforms; thanks to Huiying Shen for pointing out this one. * ace/OS.h: * ace/OS.i: Reverted the change that added support for pthread_setconcurrency on IRIX, the function was supposed to be undocumented, but present on the libraries, I could not find it in any of the SGI machines we have access to.; not even * ace/Thread_Manager.cpp: On IRIX/SGIC++ we need to instantiate ACE_Node too. * ace/SOCK.h: Moved the open() method to the public interface, it is used by ACE_SOCK_Connector. Wed Oct 8 20:01:35 1997 Douglas C. Schmidt * ace/SOCK_Connector: Modified the ACE_SOCK_Connector so that it doesn't maintain state and doesn't inherit from ACE_SOCK. Therefore, we can have multiple threads using the same ACE_SOCK_Connector simultaneously without any reentrancy problems. * ace/SOCK.h: Moved the open() method into the public part of the class so it can be used in ACE_SOCK_Connector::connect(). * ace/Connector.h: Removed the this->connector_ from the ACE_Connector class in order to make this pattern work correctly with multi-threaded programs. Also removed the connector() accessor (which was never useful anyway). * ace/SOCK.cpp (open): Explicitly test setsockopt() for -1 in case of failure. * tests/SOCK_Test.cpp (server): Revised this test to reflect the fact that it doesn't iterate, but only runs one client and one server. * tests: Added a new test for multi-threaded sockets called MT_SOCK_Test.cpp. Thanks to Bob Laferriere for motivating this test. Wed Oct 8 12:09:46 1997 Nanbor Wang * ace/OS.i (strcasecmp): Oops, we forgot to compare the strlen first. Thanks to Murphy Ivan for fixing the bug. * ace/OS.h: Added THR_DAEMON macro definition for Win32 (et. al.?) to avoid compilation error. Removed ACE_HAS_BROKEN_TEMPLATE_DESTRUCTOR and related macros. Wed Oct 8 09:52:20 1997 Carlos O'Ryan * ace/Parse_Node.cpp: Fixed the minor syntax error *again*. Tue Oct 7 17:10:51 1997 Carlos O'Ryan * ace/Token_Manager.cpp: Added a defined(ACE_MT_SAFE) protection around the lock creation on ACE_Token_Manager::instance(), otherwise it would not work on platforms without threads. Thanks to "Neil B. Cohen" for pointing this one out. Tue Oct 7 07:07:45 1997 Douglas C. Schmidt * ace/Parse_Node.cpp (symbol): Added an ACE_ERROR_RETURN instead of an ACE_RETURN to bail out if an error occurs. Thanks to Eric Newton for reporting this. Tue Oct 7 10:57:48 1997 Carlos O'Ryan * ace/OS.h: Added a prototype for pthread_setconcurrency when ACE_HAS_IRIX62_THREADS is defined. This function is undocumented but was needed by some users. * ace/Parse_Node.cpp: Fixed a minor syntax error. Tue Oct 07 06:58:40 1997 Douglas C. Schmidt * ACE version 4.3.11, released Tue Oct 07 06:58:40 1997. Tue Oct 7 02:51:55 1997 Nanbor Wang * tests/TSS_Test.cpp (main): * tests/Task_Test.cpp (main): * tests/Barrier_Test.cpp (main): Removed thread_handles[] since we don't need to join the thread explicitly anymore. * ace/Thread_Manager.{h,cpp}: Added an ACE_Unbounded_Quque to collect terminated threads so that we can later join the threads automatically by issuing a ACE_Thread_Manager::wait(). Some typos are also fixed. Next step will be to replace current thr_table_ with a hash table and store an index to this table in TSS. Mon Oct 6 22:16:45 1997 Douglas C. Schmidt * ace/Thread_Manager: Added a new task() method to ACE_Thread_Manager that returns a pointer to the current ACE_Task_Base we're executing in if this thread is indeed running in an ACE_Task_Base, else return 0. Thanks to Ari Erev and John Neystadt for suggesting this. * ace/Thread_Manager: Moved the task_ pointer from the public part of the ACE_Thread_Descriptor class into the private part of the class and added an inline accessor instead. * ace/{Parse_Node.{h,cpp},Svc_Conf.y}: Added support to enable dynamically allocate objects from factory functions that have been pre-registered with the Service Configurator instead of relying on dynamic loading. The new config file syntax would be (note the colons): dynamic joe Service_Object * : make_queue() active dynamic bob Service_Object * : make_queue() active Functions are found in the list of statically defined functions for static services. Thanks to Eric C. Newton for this fix. Mon Oct 6 13:00:19 1997 Carlos O'Ryan * ace/CORBA_Handler.cpp: Removed the use of reactor_ in the .cpp file too; we are using the ACE_Event_Handler reactor_ (which is a base class). Sat Oct 04 17:40:30 1997 Douglas C. Schmidt * ACE version 4.3.10, released Sat Oct 04 17:40:30 1997. Sat Oct 4 11:57:25 1997 Douglas C. Schmidt * apps/Orbix-Examples/Event_Comm/{Supplier,Consumer}/Makefile: Changed a typo where /src/ was being used instead of /libsrc/. Thanks to Jean-Marc STRAUSS for reporting this. * examples/Connection/non_blocking/CPP-connector.cpp (init): Removed the initialization of the local address. This is error-prone and confusing to use. Thanks to Huiying Shen for reporting this. * ace/SV_Semaphore_Simple: Added support for IPC_EXCL in order to determine, upon creating the semaphore, if it already exists (which means a bad key was selected), another daemon is still running or the previous daemon didn't remove its resources. I have this implemented now by first opening the semaphore and if that fails then creating it. To support this, added another enum, ACE_EXCL = IPC_EXCL, to the class header. Also, changed the ACE_SV_Semaphore_Simple::open( key_t, ... ) method to use if (ACE_BIT_ENABLED (flags, IPC_CREAT)) rather than if (flags == IPC_CREAT) Thanks to Michael McKnight for reporting this. * ace: Replaced all uses of the template param LOCK with ACE_LOCK to avoid conflicts with some systems that have a macro named LOCK. * ace/IOStream_T.h: Added ACE_LACKS_ACE_IOSTREAM to the IOStream_T.* files. Thanks to Torbjorn Lindgren for reporting this. * ace/{Proactor,Service_Config,ACE_Sig_Handler}: Removed the use of sig_atomic_t as a return type. Thanks to Torbjorn Lindgren for reporting this. Sat Oct 04 03:14:46 1997 * ace/WFMO_Reactor.cpp (add_network_events_i): While looking through all entries in the current (and suspended) handles for a matching handle, we need to skip those that have been scheduled for deletion). Also changed ACE_BIT_STRICTLY_ENABLED to ACE_BIT_ENABLED. * ace/Select_Reactor.cpp (bit_ops): Since CONNECT is no longer a logical OR of READ and WRITE, we have to explicitly make sure that enable the handle in the correct wait sets. * ace/Event_Handler.h: Changed the values of the event masks. CONNECT is no longer a logical OR of READ and WRITE. It was its own unique value. * ace/OS.h: Removed ACE_BIT_STRICTLY_ENABLED. It did not do what I thought it would do. * ace/Connector.cpp (handle_output): Added code that tries to find out if the reactor uses event associations for the handles it waits on. If so we need to reset it. This is necessary for asynchronous connects. * ace/SOCK_Connector.i (reset_new_handle): Added new method on all connectors to reset event associations of handles. Fri Oct 03 21:20:26 1997 David L. Levine * ace/Makefile: disable INSTALL in $(ACE_ROOT)/ace Makefile, because it's not needed and it creates circular symlinks when the library build fails. Fri Oct 3 11:39:45 1997 Douglas C. Schmidt * ace/Thread_Manager: Added a new flags_ field to ACE_Thread_Descriptor and changed the insert_thr() and append_thr() methods to update this flag so that we can keep track of whether the thread was created "detached" or not. * ace/Reactor.cpp (event_loop_done): Replaced the use of sig_atomic_t with int to workaround bugs with KAI C++. Thanks to Torbjorn Lindgren for reporting this. * ace/CORBA_Handler: Removed the reactor() accessors since they are subsumed by the methods in ACE_Event_Handler. Thanks to Jean-Marc STRAUSS for reporting this. Thu Oct 02 15:38:34 1997 * Reactor: Renamed reset_new_handle to uses_event_associations. * ace/FIFO_Recv.cpp (ACE_FIFO_Recv): aux_handle_ must correctly be initialized to ACE_INVALID_HANDLE. Thanks to Sandro Doro for reporting this. Thu Oct 02 11:21:37 1997 Steve Huston * include/makeinclude/platform_{aix aix4.2}.GNU: added the shared_libs_only = 0 and static_libs = 1 settings since C Set++ builds the shared libs from the static. * ace/OS.h: Removed spaces around '##' in ACE_DES_FREE_TEMPLATE macro. * ace/Strategies_T.cpp: added #include "ace/Thread_Manager.h" * ace/Managed_Object.h: Added template arg in the "unimplemented function" section. Thu Oct 02 10:46:18 1997 Steve Huston * ace/Malloc.h: added some comments on rationale and use of ACE_MALLOC_ALIGN. Wed Oct 01 19:08:26 1997 Steve Huston * include/makeinclude/rules.bin.GNU: correctly builds programs with multiple object modules. * examples/ASX/CCM_App/Makefile: needed some adjustment to work with new rules.bin.GNU, above. Wed Oct 01 14:11:03 1997 * ace/Remote_Name_Space.cpp (resolve): We need to allocate one more space than what strlen reports. Wed Oct 01 12:45:51 1997 David L. Levine * ace/ACE.cpp (count_interfaces, get_handle): changed "unix" to "__unix" because DEC CXX doesn't #define "unix". Thanks to Billy Quinn for reporting this. * ace/High_Res_Timer.h: added comment from Gabe about ACE_OS::gethrtime () drift on MP machines. * ace/OS.i (gethrtime, Solaris only): removed ACE_OSCALL_RETURN wrapper around ::gethrtime () because it was broken (the type was int) and not necessary (::gethrtime () should never fail), so we can remove its overhead. * tests/Time_Value_Test.cpp: undef ACE_NO_INLINE in the ACE_U_LongLong test hacks. * tests/SV_Shared_Memory_Test.cpp: delay construction of allocator until first needed because it needs something that the ACE_Object_Manager constructs. * tests/run_tests.vxworks: added console printout before each test. Tue Sep 30 21:42:58 1997 Douglas C. Schmidt * ACE version 4.3.9, released Tue Sep 30 21:42:58 1997. Tue Sep 30 17:15:14 1997 James C Hu * ace/Filecache.{h,cpp}: I removed the static locks in the Filecache and made them local member objects. Since Filecache is usually a singleton, no more memory is required this way. * tests/Hash_Map_Manager_Test.cpp: Added some code to test the Hash_Map_Manager_Iterator. This is to show Bob Laferriere that it works. Tue Sep 30 13:41:14 1997 Nanbor Wang * examples/Service_Configurator/IPC-tests/server/Handle_R_Stream.i (handle_input): * examples/Reactor/ReactorEx/test_network_events.cpp (handle_input): * examples/Logger/simple-server/Logging_Acceptor.cpp (handle_input): Changed to use reset_new_handle () for querying whether we need to reset handles or not. Tue Sep 30 08:35:15 1997 David L. Levine * ace/Atomic_Op.i: added CVS header. * ace/Object_Manager.{h,cpp}: removed Filecache arrays, because Filecache no longer needs them. * ace/Filecache.{h,cpp}: removed unused static Filecache::lock_. * tests/test_config.h: Added 1 second sleep to ACE_END_TEST to allow all threads to terminate gracefully. VxWorks only: removed the hack removal of the log file, because it no longer appears to be necessary. * tests/TSS_Test_Errno.h,TSS_Test.cpp: dynamically allocate Errno::lock_ to try to avoid problem with cleanup of statics on VxWorks. It doesn't solve the problem, all of the time. There are still statics in the ACE library, which could be causing it. Tue Sep 30 01:35:28 1997 Nanbor Wang * ace/Naming_Context.cpp (close, close_down): Separated these two functions calls. Close now only release the name_space_ resource and close_down release all resources. Close should be use when changing the name_space. Mon Sep 29 22:29:46 1997 Nanbor Wang * ace/Strategies_T.cpp (accept_svc_handler ): * ace/Service_Manager.cpp (handle_input): * ace/Acceptor.cpp (handle_input, accept_svc_handler): Changed to use reset_new_handle () for querying whether we need to reset handles or not. * ace/Reactor.{h,i} (reset_new_handle): * ace/Reactor_Impl.h (reset_new_handle): * ace/Select_Reactor.{h,i} (reset_new_handle): * ace/WFMO_Reactor.{h,i} (reset_new_handle): Added this new method so we can determine whether the implementation of the reactor requires us to decouple the event a handle inherit from accept. This scheme doesn't depend on the RTTI support of compilers. Thanks to Irfan for the tips. Mon Sep 29 21:28:02 1997 * ace/Synch (ACE_Recursive_Thread_Mutex): Methods were added to ACE_Recursive_Thread_Mutex so that it has a consistent interface with other locking mechanisms. Thanks to Phil Logan for submitting these changes. Mon Sep 29 13:28:05 1997 David L. Levine * ace/OS.i (thr_setconcurrency): added support on Irix 6.x, using its ::pthread_setconcurrency (). Thanks to Felix Popp for letting us know about this Irix 6.2/3 system function, and for testing it out. * ace/ACE.cpp (handle_timed_complete) force recv check on VxWorks because its read handle is always not set. Thanks to Steve for helping track down the problem. We might want to consider doing it this way on Unix platforms, as well, according to Steve. * apps/JAWS/server/HTTP_Server_T.cpp (accept): fixed typo, "remote_address" instead of "remote_adrress". * tests/Time_Value_Test.cpp (test_ace_u_longlong): replaced ACE_ASSERTs with calls to a static function that prints out why the test failed. Also, disabled test of ACE_U_LongLong if ACE_HAS_64BIT_LONG. * ace/OS.h: 1) Use u_long for ACE_hrtime_t if ACE_HAS_64BIT_LONGS. 2) Added ACE_NO_INLINE support to allow wrapper_macros.GNU to disable inlining from the command line. 3) Added ACE_HAS_VERBOSE_NOTSUP support. * include/makeinclude/wrapper_macros.GNU: added "inline" flag to allow enabling/disabling of inlining from the command line or platform_macros.GNU. * ace/config-vxworks*.h: added ACE_HAS_VERBOSE_NOTSUP. Mon Sep 29 11:15:10 1997 Nanbor Wang * ace/OS.h (ace_cleanup_destroyer): Made this an export function. Sat Sep 27 17:04:48 1997 * ace/Reactor: Added new methods to be able to set and get the implementation class being used by the reactor. The set method is protected and should be used with care, specially while changing the implementation class midway through an application. Also both the methods are virtual, and user can subclass to change their behavior. The internal code of the reactor also changed to now use these methods exclusively rather than the the raw data variables. * ace/Acceptor.cpp (handle_input): When using the WFMO_Reactor, we need to reset the event association for the newly created handle. This is because the newly created handle will inherit the properties of the listen handle, including its event associations. Therefore two changes were made: - A new directive (flag) was added to all the acceptors (LSOCK_Acceptor, SOCK_Acceptor, SPIPE_Acceptor, TLI_Acceptor, and UPIPE_Acceptor) to reset the event associations of the newly created handle. Currently only the SOCK_Acceptor pays attentions to this directive, others just ignore it. This flag had to be added to all the acceptors for interface compatibility and also to make sure that the Acceptor template code works correctly. - A dynamic_cast was necessary to determine at run-time which implementation of the Reactor we are using. But because this code is limited to Win32, there should be no problems doing the dynamic_cast. The same thing as above needed to be done to: - ACE_Accept_Strategy::accept_svc_handler (ace/Strategies_T.cpp) - ACE_Service_Manager::handle_input (ace/Service_Manager.cpp) - LOCK_SOCK_Acceptor::accept (apps/JAWS/server/HTTP_Server_T.h) - Logging_Acceptor.cpp::handle_input (examples/Logger/simple-server/Logging_Acceptor.cpp) - Network_Listener::handle_input (examples/Reactor/ReactorEx/test_network_events.cpp) - Handle_R_Stream::handle_input (examples/Service_Configurator/IPC-tests/server/Handle_R_Stream.i) Sat Sep 27 20:03:29 1997 Carlos O'Ryan * include/makeinclude/platform_sunos5_sunc++_orbix.GNU: Activated exceptions by default too, since they are used by Orbix anyway. * include/makeinclude/platform_sunos5_sunc++.GNU: Some libraries were missing and the locations were not completely accurate. * ace/config-sunos5.5-sunc++-4.x-orbix.h: I let the MT Orbix as the default, since that is the configuration here and that was implicit in the platform*.GNU files. * include/makeinclude/wrapper_macros.GNU: Added flags to the IDL compiler to emit support for both CORBA::Any (-A) and the BOAImpl (-B) approach for the server side implementations. * ace/CORBA_Handler.cpp: The full definition for Thread_Manager was missing, I added an include for it. Sat Sep 27 07:59:18 1997 David L. Levine * include/makeinclude/wrapper_macros.GNU, platform_{chorus,lynxos,vxworks*}.GNU: default to building shared libs only, except on Chorus, LynxOS, and VxWorks. While the "shared_libs_only=1" make flag is still supported, it is no longer necessary because it is the default. To revert to the prior behavior of building both shared and static libraries, add "static_libs=1" to either your make command invocation or your include/makeinclude/platform_macros.GNU. Sat Sep 27 00:45:10 1997 Nanbor Wang * examples/OS/Process/README (imore): * examples/OS/Process/Makefile: * examples/OS/Process/imore.cpp: Added a new example: imore. * ace/SOCK_Stream.cpp (close, close_reader, close_writer): Moved invalid handlers checking from close to close_reader and close_writer. Fri Sep 26 14:28:36 1997 Nanbor Wang * tests/SPIPE_Test.cpp: * tests/Process_Strategy_Test: Changed the macro "ACE_LACKS_EXEC" to "ACE_LACKS_FORK". * ace/SOCK_Stream.cpp (close): Added checking for invalid handle before shutting down the write end. Fri Sep 26 11:55:27 1997 Steve Huston * ace/Malloc.h: Use signed math in the preprocessor calculations for ACE_CONTROL_BLOCK_ALIGN_LONGS (and all of its contributing factors). * ace/ACE.cpp: Fixed the TLI/BSD checks in handle_timed_complete. * tests/SOCK_Connector_Test.cpp: Added ENOTCONN as a valid fail condition (in addition to ECONNREFUSED). Fri Sep 26 05:11:40 1997 Nanbor Wang * ace/SOCK_Acceptor.cpp (shared_accept): Made the newly added WSAEventSelect code unreachable. It caused several test program hung when performing socket recieving. Don't know why this is happening. According to the online manual, this should be the right thing to do. Some more Access Violations to be fix tomorrow. Oh, I mean, today. Fri Sep 26 01:22:28 1997 Douglas C. Schmidt * ace/OS: Made a few changes to OS.h and OS.i to stop compiler warnings. Thanks to Wei Chiang for reporting this. * ace/config-chorus.h: Added ACE_LACKS_RLIMIT and removed ACE_LACKS_SIGACTION. Thanks to Wei Chiang for reporting this. * ace/TLI_Connector.cpp (complete): Changed the call to ACE::handle_timed_complete() to use the new parameter. * ace/ACE: Added an extra parameter to the call to ACE::handle_timed_complete() to indicate (at run-time) that this is being called via a TLI interface. Thanks to the ever-vigilant Steve Huston for suggesting this. * tests/SOCK_Connector_Test.cpp: "ACEified" the new test program. Thu Sep 25 23:27:38 1997 * ace/config-win32.h: Error in directives: it should be "Define ACE_HAS_WINSOCK2 to 0 in your config.h file if you do *not* want to compile with WinSock 2.0.". The typo was a 1 instead of the 0. Thanks to Gonzalo A. Diethelm for pointing this out. Thu Sep 25 20:33:09 1997 Douglas C. Schmidt * ace/Message_Queue.h: Changed the *_i() methods to be virtual so that we can change the queueing mechanism by subclassing from ACE_Message_Queue. Thanks to Eric Newton for this suggestion. * ace/Timer_List_T.cpp (ACE_Timer_List_Iterator_T): Changed listParam to timer_list to keep programming style consistent... Thu Sep 25 17:06:42 1997 Steve Huston * ace/OS.i - ACE_OS::cond_timedwait - HP's threads return EAGAIN on timeout from pthread_cond_timedwait, so adjust that to ETIME. * tests/SOCK_Connector_Test.cpp - will now try to find another host to run the connect to. Won't try on Win32 or VxWorks though. Thu Sep 25 15:25:53 1997 David L. Levine * ace/Object_Manager.cpp,OS.cpp: moved socket_init to Object_Manager ctor and socket_fini to Object_Manager dtor, to be sure that WinSock gets initialized early and closed late. * ace/SOCK.{h,cpp}: removed dummy_ static now that the Object_Manager initializes WinSock. No, I'm not a Win32 wizard all of the sudden. Thanks to Irfan and Nanbor for directing these changes. * tests/run_tests.vxworks: commented out tests that don't run productively on VxWorks: SV_Shared_Memory_Test, Reactor_Exceptions_Test, SPIPE_Test, and UPIPE_SAP_Test. Thu Sep 25 03:50:27 1997 * ace/OS.i (thr_getspecific): Must restore errno if no errors have occured. * ace/Log_Msg.cpp (close): Must close the message queue *before* destruction since there is no destructor for the queue. * netsvcs/lib/Client_Logging_Handler.cpp (fini): fini must close and unregister the acceptor. Closing the socket is simply not enough. Thu Sep 25 01:39:47 1997 Nanbor Wang * ace/Containers.{i,cpp}: Commented out all ACE_TRACE macros in ACE_Unbounded_Queue so that they won't cause SIGSEGV when we turn the tracing on. Unbounded_Queue is used in Object_Manager which must be initialize before most of other objects. Wed Sep 24 23:37:19 1997 Nanbor Wang * ace/OS.i (thr_getspecific): On NT, added check whether ::GetLastError() is NO_ERROR when ::TlsGetValue() return 0. Wed Sep 24 13:37:02 1997 * ace/config-win32-common.h (ACE_LACKS_FORK): Added in macro to distinguish between ACE_LACKS_FORK and ACE_LACKS_EXEC. Also updated config-chorus.h, config-vxworks-ghs-1.8.h, and config-vxworks5.x-g++.h. * ace/OS.h (ACE_WIN32CALL_RETURN && ACE_WIN32CALL): Added new macros to distinguish between Win32 calls that set GetLastError and those that set errno. Also updated ACE_OSCALL_RETURN and ACE_OSCALL such that they do not set errno to GetLastError. This is because these calls automatically set errno. Updates OS.* files to reflect these changes. * ace/SOCK_Acceptor.cpp (shared_accept): Make sure to reset the event association inherited by the new handle. * ace/WFMO_Reactor.i (unbind): Added a check for invalid handles being passed in for removals. Wed Sep 24 10:34:29 1997 Carlos O'Ryan * ace/OS.h: Under HP-UX and g++ must be included for dynamic loading, not ; thanks to Warren Thompson (wthompson@altaira.com) for helping us with this one. Wed Sep 24 09:36:21 1997 David L. Levine * ace/Managed_Object.{h,i},Object_Manager.{h,cpp}: removed ACE_Managed_Object get_object () interface. It wasn't used anywhere; it was originally intended to support preallocated objects but turned out to not be necessary. I think that it would be more useful to make it possible to instantiate ACE_Managed_Object instead, and have it implicitly register with the ACE_Object_Manager. * ace/Timer_List_T.cpp (ACE_Timer_List_Iterator_T): changed name of "list" argument ot "listParam" to resolve name conflict with STL. Thanks to Brian Mendel for reporting this. * tests/run_tests.check: print out filename with error messages. Tue Sep 23 17:11:44 1997 Carlos O'Ryan * ace/config-hpux-10.x-g++.h: Added A ACE_LACKS_TIMESPEC_T, thanks to Warren Thompson (wthompson@altaira.com) for this one. * include/makeinclude/platform_hpux_gcc.GNU: Added a -D_REENTRANT define, to enable reentrant methods, thanks to Warren Thompson (wthompson@altaira.com) and Steve Huston (shuston@riverace.com) for pointing out this. * ace/config-hpux-10.x.h: Added an small comment to clarify that DCE/threads must be installed if threading is wanted, they are an optional product for HP-UX. Tue Sep 23 10:13:57 1997 David L. Levine * ace/Select_Reactor.cpp: added #include of ace/Thread.h. Thanks to Vladimir Schipunov for reporting this. * ace/Object_Manager.cpp: added #include of ace/Malloc.h. Thanks to Vladimir Schipunov for reporting this. * ace/config-aix-4.1.x.h: added ACE_HAS_PTHREAD_T and ACE_HAS_BROKEN_EXPLICIT_TEMPLATE_DESTRUCTOR #defines. Thanks to Vladimir Schipunov for reporting the build problem on AIX 4.1, and to Torbjorn Lindgren for providing these fixes. * ace/Token_Manager.{h,cpp},Object_Manager.{h,cpp}: preallocate ACE_Token_Manager creation lock. * ace/Object_Manager.cpp: use ACE_Cleanup_Adapter for preallocated arrays. Mon Sep 22 16:51:44 1997 * ace/OS.i (open): Changed code so that (_O_CREAT | _O_TRUNC) means CREATE_ALWAYS. Thanks to Dave Brackman (dbrackma@OhioEE.com) for pointing this out. Mon Sep 22 11:01:28 1997 Steve Huston * tests/SOCK_Connector_Test.cpp, Makefile, run_tests.sh - added new test to exercise ACE_SOCK_Connector focusing on fail conditions. Mon Sep 22 07:11:21 1997 David L. Levine * ace/Message_Block.cpp (clone): check this block's cont () instead of the new block's cont_ when cloning the continuation messages. Thanks to Eric Newton for tracking down this problem with failing to clone continuation blocks, and for providing the fix. * ace/OS.{h,i} (ACE_U_LongLong): added operator!=, and made args const to ctor, operator/, hi, and lo member functions. * ace/Managed_Object.[hi]: renamed ACE_Managed_Cleanup to ACE_Cleanup_Adapter because it doesn't implicitly register itself with the ACE_Object_Manager. * ace/ACE.cpp: moved ACE_Object_Manager_Destroyer to Object_Manager.cpp because the ACE_Object_Manager should always be linked into executables now, even if libACE is statically linked. * ace/Filecache.{h,cpp},Signal.{h,cpp} preallocate locks for Filecache and Signal in ACE_Object_Manager. * ace/Object_Manager.{h,cpp}: 1) renamed ACE_Managed_Cleanup to ACE_Cleanup_Adapter. 2) Moved ACE_Object_Manager_Destroyer from ACE.cpp to Object_Manager.cpp. 3) Added Filecache and Signal locks. * ace/Singleton.*: removed instance (TYPE *) member function because it wasn't being used. And, it allows us to store the contained instance_ as an object instead of a pointer, saving a dynamic memory allocation on construction. * include/makeinclude/platform_vxworks5.x_g++.GNU: added $(MUNCHED) to PRELINK, to allow applications to add libraries or object files to be munched. * ace/stdcpp.h: stdarg.h must be #included before stdio.h on LynxOS. Sat Sep 20 17:32:23 1997 David L. Levine * ace/Object_Manager.{h,cpp},Managed_Object.*, CORBA_Handler.{h,cpp},Dump.{h,cpp},Log_Msg.cpp,OS.cpp revised ACE_Object_Manager interface for preallocated objects. Also, added documentation of ACE_Object_Manager interface to Object_Manager.h and Managed_Object.h. * ace/CORBA_Handler.cpp,Dump.cpp,OS.cpp: use ACE_MT with preallocated locks. * include/makeinclude/platform_*.GNU,wrapper_macros.GNU: moved -O out of wrapper_macros.GNU and into each platform file's OC[C]FLAGS to support "optimize" make flag. I moved -O and similar compile flags out of CFLAGS and/or CCFLAGS and into OCFLAGS and/or OCCFLAGS. This allows the ACE make system to support the "optimize" flag. It operates similar to the "debug" flag, i.e., you can set "optimize=1" or "optimize=0" in your platform_macros.GNU file to enable or disable optimization. You can use the same syntax to get the same effect from the "make" command line, e.g., "make optimize=1 debug=0". I added optimize=1 to platform_*.GNU files that had -O, etc., in their C[C]FLAGS. Therefore, there should be no net effect from this change on any platform. * include/makeinclude/wrapper_macros.GNU: I _removed_ the disabling of "debug" when "optimize=1" is enabled. This _will_ have a net effect: if you were relying on "debug" to be disabled when you enabled "optimize=1", you'll be surprised. The change supports platforms that allow "debug" and "optimize" simultaneously. Because I had added the disabling of "debug" recently, and because "optimize=1" wasn't supported well, if at all, I'd be suprised if any is actually affected by this change. Sat Sep 20 11:47:14 1997 Carlos O'Ryan * ace/Timer_Queue_T.cpp: Changed the return type to , to match its declaration. The intent was to error error values, which are declared as throughout ACE. Sat Sep 20 08:07:36 1997 David L. Levine * ace/OS.i (gethrtime): on Linux only, removed "volatile" qualifier from declaration of local variable "now". I don't think that it's necessary. It causes compilation failure with g++ because the ACE_U_LongLong copy constructor won't take a volatile argument. Thanks to Sandro Doro for tracking down this problem. * tests/Time_Value_Test.cpp: reverted to test ACE_U_LongLong on all platforms except WIN32. It works properly on Linux with the removal of volatile from ACE_OS::gethrtime's "now". Thanks to Sandro Doro for figuring this one out. Fri Sep 19 18:49:50 1997 Carlos O'Ryan * ace/config-irix6.x-g++.h: * include/makeinclude/platform_irix6.x_g++.GNU: Added support for IRIX 6.x w/gcc, thanks to Celeste E. Copeland (celeste@altaira.com) for this. Thu Sep 18 19:33:02 1997 Carlos O'Ryan * Douglas added the following changes while going through the Async_Timer_Queue. * ace/Timer_Queue_T.h: Factored out the code for handling ualarm(). * ace/Timer_Queue_T.cpp (handle_signal): Cleanedup the logic for rescheduling a ualarm() after expiring a timer. * tests/Async_Timer_Queue_Test.cpp (signal_handler): Changed the use of ACE_DEBUG to ACE_ERROR to ensure that the call doesn't magically disappear if ACE_NDEBUG is enabled. Fri Sep 19 18:05:48 1997 Douglas C. Schmidt * ace/Log_Msg.cpp (log): Changed the send() to a send_n() so that all the data gets written... Fri Sep 19 14:52:53 1997 Nanbor Wang * netsvcs/lib/Client_Logging_Handler.cpp (get_handle): Can't use ACE_ERROR_RETURN here because ACE_HANDLE is a void* on NT, not int. * examples/Reactor/Misc: Added reactors.dsp signals_1.dsp signals_2.dsp. * ace/OS.cpp (thr_exit): Commented out the call to ACE_TSS_Cleanup::exit () because ACE_OS::thr_exit is actually called from ACE_TSS_Cleanup::exit (). Fri Sep 19 12:50:37 1997 David L. Levine * ACE-INSTALL*,ace/README: added more documentation of requirement for explicit main (int, char *[]) arguments and int return type with ACE_HAS_NONSTATIC_OBJECT_MANAGER (on VxWorks). Thu Sep 18 22:45:09 1997 Douglas C. Schmidt * netsvcs/lib/Client_Logging_Handler.cpp (close): Fixed a typo: it's output_ not outout_. Thanks to David for pointing this out. * netsvcs/lib/Client_Logging_Handler.cpp: Make sure to clean up all our resources (e.g., acceptor-mode and data-mode sockets) when we close down. * netsvcs/servers/main.cpp (main): Restored the entire contents of main(). * tests/Semaphore_Test.cpp: Updated the test to use a temporary ACE_Time_Value variable that is passed to ACE_Semaphore::acquire() so that we don't have problems with reference anachronisms... Thanks to David Levine for reporting this. * ace/Log_Msg.cpp: Changed over to using ACE_SPIPEs for the logging mechanism rather than ACE_FIFOs to conform to the changes to Client_Logging_Handler. * netsvcs/lib/Client_Logging_Handler.cpp: Completely rewrote the Client Logging Daemon so that it uses ACE_SPIPEs by default, rather than ACE_FIFOs. This is more portable and makes it easier to write a generic client logging daemon... If a platform doesn't support ACE_SPIPEs, then we revert to using sockets. Thu Sep 18 21:56:33 1997 Nanbor Wang * ace/OS.cpp (ACE_TSS_Cleanup::exit): Masked out codes that relate to freeing TSS keys and remove key entries from TSS cleanup table. I removed it here to avoid race condition. (ACE_TSS_Cleanup::free_all_key_left): Added this function to free all left over TSS keys and remove them from TSS cleanup table when the program exits. It is only called from ACE_OS::cleanup_tss. (ACE_OS::cleanup_tss): Added call to ACE_TSS_Cleanup::free_all_key_left when ACE_WIN32 or ACE_HAS_TSS_EMULATION are defined. Thu Sep 18 16:30:24 1997 David L. Levine * ace/Semaphore_Test: protected declarations of test_timeout_count and timeouts because they're not used on Solaris. * netsvcs/lib/Client_Logging_Handler.cpp: added template instantiations. Thu Sep 18 09:04:40 1997 * ace/Dynamic: Changed the way ACE_Dynamic worked. Instead of keeping the "this" pointer of the object in question, we are now simply keeping a flag that indicates whether the object was dynamically created. The trick to this approach is to make sure to reset the flag in the constructor. The "this" pointer approach was broken when used with multiple inheritance, because of "shearing" of the "this" pointer to get to the base Svc_Handler class. Thu Sep 18 01:12:36 1997 Douglas C. Schmidt * ACE version 4.3.8, released Thu Sep 18 01:12:36 1997. Wed Sep 17 22:47:20 1997 Douglas C. Schmidt * ace/ACE: Added two new varargs methods for send() and recv(). These are modeled after the ones that are in, e.g., ACE_SOCK_IO. * ace/Log_Msg.cpp (open): In the UNICODE version the compiler complains about mixed wchar/char usage in Log_Msg.cpp: Log_Msg.cpp(468) : error C2665: 'ACE_INET_Addr::ACE_INET_Addr' : none of the 8 overloads can convert parameter 1 from type 'const unsigned short *' I fixed it modifing the connect() call from status = con.connect (*ACE_Log_Msg_message_queue, ACE_INET_Addr (logger_key)); to status = con.connect (*ACE_Log_Msg_message_queue, ACE_INET_Addr (ACE_MULTIBYTE_STRING(logger_key))); Thanks to Dieter Quehl for reporting this. * ace/SV_Semaphore_Simple.h: By default, we want the flags to perform a SEM_UNDO. Thanks to Sandro Doro for reporting this. * tests/Makefile (BIN): Added Semaphore_Test.cpp to the Makefile. Thanks to Sandro Doro for reporting this. * tests/Async_Timer_Queue_Test.cpp: If you want to print a '\', you need to make it a \\... Thanks to David for noticing this. * apps/JAWS/clients/Blobby/Blob_Handler.h: There was a missing #include for "ace/SOCK_Stream.h". * netsvcs/lib/Client_Logging_Handler: Reimplemented this service so that it uses sockets on Win32 to receive logging messages from clients. * ace/Log_Msg.cpp: Enhanced ACE_Log_Msg::log() so that it now uses sockets on Win32 platforms to work around the lack of FIFOs. * ace/Log_Record.h: Revised the field layout of the ACE_Log_Record so that the length field comes first. This is necessary for the framing mechanisms used throughout ACE in various configurations. Wed Sep 17 15:17:38 1997 James C Hu * ace/Filecache.cpp: ACE_Filecache::finish should check to see if the file passed in is NULL before attempting to grab the associated hash lock. Reported by Samuel Melamed . Wed Sep 17 13:51:25 1997 Carlos O'Ryan * bin/auto_compile: I setup autoflush on the logfile, it makes debugging and non crontab usage a bit easier. Wed Sep 17 12:59:34 1997 * ace/Local_Name_Space_T.cpp: Fixed warnings caused by SEH macros. Wed Sep 17 01:07:40 1997 Douglas C. Schmidt * ACE version 4.3.7, released Wed Sep 17 01:07:40 1997. Tue Sep 16 23:34:36 1997 Douglas C. Schmidt * netsvcs/servers/main.cpp (main): The use of braces was incorrect so that some services were being prematurely closed... * ace: Added a new flag called ACE_LACKS_FIFO to distinguish the (lack of) features on Win32... * ace/Timer_Queue_T: Added an expire() wrapper for the Async_Timer_Queue_Adapter. * ace/OS: Added a wrapper for strpbrk() and wcspbrk(). Thanks to Bob Olson and Irfan for pointing out the need for this. Tue Sep 16 18:03:58 1997 Carlos O'Ryan * bin/auto_compile: It wouldn't report an error when run_tests.sh scream "FAILED", now it does. Tue Sep 16 08:30:28 1997 Steve Huston * ace/OS.i: Changed a couple of ACE_UNUSED(arg) to ACE_UNUSED_ARG(arg) Mon Sep 15 12:08:38 1997 * ace/Reactor (register_handler): Originally this interface was available for all platforms, but because ACE_HANDLE is an int on non-Win32 platforms, compilers are not able to tell the difference between register_handler(ACE_Event_Handler*,ACE_Reactor_Mask) and register_handler(ACE_Event_Handler*,ACE_HANDLE). Therefore, we have restricted this method to Win32 only. * ace/WFMO_Reactor.h: Removed non-Win32 version of the WFMO_Reactor. This is no longer required in the new scheme. * ace/XtReactor: Added remove_handler_i(const ACE_Handle_Set &,ACE_Reactor_Mask) to make the compiler happy. Also changed ACE_Reactor_Handle_Set to ACE_Select_Reactor_Handle_Set. * ace/Select_Reactor.cpp (ACE_Select_Reactor_Token): Added set/get select_reactor methods. * ace/OS.h (ACE_SEH_TRY): Changed ACE_SEH_TRY from nothing to "if(1)" on non-Win32 platforms. This should stop some compilers from complaining about unreachable code. Mon Sep 15 11:37:49 1997 Carlos O'Ryan * include/makeinclude/platform_hpux.GNU: Added -D_REENTRANT to enable the _r functions. Mon Sep 15 09:40:57 1997 Carlos O'Ryan * bin/auto_compile: Enabled the shared_libs_only flags to speed up compilations (and reduce disk space usage). Sun Sep 14 22:36:17 1997 * ace/Select_Reactor.h: Added a no-op constructor for ACE_Select_Reactor_Token to make the compiler happy. Sun Sep 14 21:02:31 1997 David L. Levine * all Makefiles: ran "make depend" to update all ACE Makefiles. * include/makeinclude/platform_irix6.x-32_sgic++.GNU, platform_tandem.GNU: added debug = 1, to disable ACE_NDEBUG. * ace/Acceptor.cpp: added #include of ace/Handle_Set.h so that it will compile on g++/Solaris. * ace/Managed_Object.h: added #include of ace/OS.h because ACE_Cleanup class is used. * ace/Managed_Object.cpp: only #include ace/Synch.h if ACE_TEMPLATES_REQUIRE_SOURCE is not defined. The #include appears to be necessary with Digital Unix. But, it causes inline functions warnings with g++, both with inlining enabled and disabled. Circular #includes are evil :-) * ace/Select_Reactor.h: removed "," at end of DEFAULT_SIZE enum definition. * ace/Select_Reactor.i (register_handler): added ACE_UNUSED_ARGS. * ace/Select_Reactor.i: moved ACE_Select_Reactor::size () after ACE_Select_Reactor_Handler_Repository::size () to prevent use before definition. * ace/Select_Reactor.cpp: added template instantiation. * ace/Svc_Conf_y.cpp: commented out unused args and wrapped assignments in "if" conditionals to avoid g++ warnings. * ace/Token_Manager.h: inserting missing "public" access control specifier for ACE_Cleanup. * ace/OS.{h,cpp} (gethrtime, Linux only): inlined and added Alpha support. * ace/config-linux*.h: only define ACE_HAS_PENTIUM if i386 is defined. Sun Sep 14 10:35:57 1997 * ace/Reactor: The Reactor classes (ACE_Reactor and ACE_ReactorEx) have changed. The motivation for this change was to allow users to program abstractly and use the most efficient implementation available on their platform. At the same time, we wanted to make the changes required by the users kept to a minimal. Here is a layout of the new Reactor hierarchy in ACE (an example of the GOF Bridge Pattern). Thanks to Thomas Jordan (Thomas_Jordan@deluxedata.com) for suggesting this new design. Reactor -----> Reactor_Impl ^ | -------------------- ^ ^ | | Select_Reactor WFMO_Reactor Reactor: The Reactor class now becomes an interface class that contains a pointer to an implementation class. All methods of the Reactor class forward all calls to the appropriate implementation class. Users can pass in their own implementation class. If an implementation class is not supplied at creation time, the following default rules apply: On non-Win32 platforms: An instance of the Select_Reactor class will be created and used as the implementation. On Win32 platforms: An instance of the WFMO_Reactor class will be created and used as the implementation. This default behavior can be overwritten at compile-time by setting the ACE_USE_SELECT_REACTOR_FOR_REACTOR_IMPL flag. In this case, an instance of the Select_Reactor class will be created and used as the implementation. Reactor_Impl: Reactor_Impl is an abstract class (i.e., the Bridge). Select_Reactor and WFMO_Reactor inherit from this class. Select_Reactor: Previously known as the Reactor class. This class implements the Reactor_Impl interface by using the select() system call. This implementation is available on all platforms (including Win32). WFMO_Reactor: WFMO (Wait For Multiple Objects) Reactor, previously known as the ReactorEx class. This class implements the Reactor_Impl interface by using the WaitForMultipleObjects() system call. This implementation is currently only available on Win32 platforms. Code changes for users: The higher authorities of ACE have decided that ReactorEx was a "goofy" name and made little sense in the new hierarchy. Therefore users using the old ReactorEx will have to change over to start using the Reactor class (and make sure that the implementation class being used is WFMO_Reactor). Also users that have extended Reactor or ReactorEx must now subclass from Select_Reactor or WFMO_Reactor, respectively. * ace/ReactorEx: The ReactorEx interface has been extended to be identical to the Reactor interface. Some of these new operations will not be supported in this version. However, we will have interface compatability at this point. This allows the creation of the new Reactor hierarchy in ACE. Removed all static (singleton) methods from ReactorEx. These are not necessary anymore since ReactorEx will become an implementation class. Reactor will take over this functionality. Changed methods names from resume_all to resume_handlers and suspend_all to suspend_handlers. This increases the similarity between ReactorEx and Reactor. Add a lock_adapter so that we can return an ACE_Lock form of our internal lock. Added signal handling capabilities to ReactorEx. Added handler, requeue_position, mask_ops, and ready_ops operations. However, they are not supported in this version. They are mostly here for interface compatibility with Reactor. Added a size() accessor that returns the current size of the ReactorEx's internal descriptor table. Added an initialized() accessor that returns true if ReactorEx has been successfully initialized, else false. * ace/Reactor: The Reactor interface has been extended to be identical to the ReactorEx interface. Some of these new operations will not be supported in this version. However, we will have interface compatability at this point. This allows the creation of the new Reactor hierarchy in ACE. Added resume_handler(ACE_Handle_Set &) and suspend_handler(ACE_Handle_Set &) to the Reactor. This increases the similarity between ReactorEx and Reactor. Add a lock_adapter so that we can return an ACE_Lock form of our internal lock. This changes the signature of the return type from ACE_Reactor_Lock to ACE_Lock. Added a size() accessor that returns the current size of the Reactor's internal descriptor table. Added wakeup_all_thread() operation. Currently it just does a notify. Added alertable_handle_events() operation. Currently it just calls handle_events(). Added register_handler (that take event handles) operations. However, they are not supported in this version. They are mostly here for interface compatibility with ReactorEx. * ace/XtReactor: Now inherits from Select_Reactor instead of Reactor. * ace/Timer_Queue_T.h: Removed the inclusion of Time_Value.h. This file does not exist anymore * ace/Synch_T (ACE_Lock_Adapter): Changed the implementation of the adapter such that the user is allowed to (optionally) pass in the locking mechanism. * ace/Strategies: Removed ACE_ReactorEx_Notification_Strategy. * ace/Service_Config: Updated Service_Config so that all ReactorEx and Proactor methods are removed. ReactorEx does not exist any longer and Proactor methods are available as statics methods on the Proactor class. * ace/OS.h (ACE_DEFAULT_SELECT_REACTOR_SIZE): Changed ACE_DEFAULT_REACTOR_SIZE to ACE_DEFAULT_SELECT_REACTOR_SIZE. There is no default size dictated by the Reactor class anymore. * ace/Local_Tokens,Token: Added new methods: acquire_read, acquire_write, tryacquire_read, tryacquire_write. These methods allow the Tokens to be used by the ACE_Lock_Adapter class. * ace/Handle_Set.h (MAXSIZE): Changed ACE_DEFAULT_REACTOR_SIZE to ACE_DEFAULT_SELECT_REACTOR_SIZE. There is no default size dictated by the Reactor class anymore. * ace/Event_Handler: Removed the Proactor and ReactorEx pointers from Event_Handler. The Proactor has its own event handler (ACE_Handler), and the ReactorEx does not exist anymore. * ace/Proactor: Changed Proactor to work with the new Reactor. Updated Proactor to bring it upto date with the recent changes to the Timer_Queue. * tests: Removed the ACE_NEW_THREAD macro. With the new thread adapter, the log stream for the new thread will automatically be set to the creator thread's stream. Therefore, this macro is not needed. Removed the inclusion of Service_Config.h. All tests are now accessing the singletons that are supported by the class directly. * examples/Reactor/Proactor: Updated examples to use and access the new Reactor class instead of the old ReactorEx. * examples/Reactor/ReactorEx: Updated examples to use and access the new Reactor class instead of the old ReactorEx. Sun Sep 14 09:50:22 1997 Douglas C. Schmidt * ace/Singleton.i (ACE_Singleton): Moved the definition of the ACE_Singleton default constructor into the *.i file. In general, it's not a good idea to put definitions in *.h files. * tests/test_config.h: Improved the #undef scheme for ACE_NDEBUG. Sat Sep 13 23:51:55 1997 Nanbor Wang * ace/ACE_Library.{mak,mdp}: Removed Service_Record.cpp and added Service_Type.cpp in project file. * ace/: Removed ace.{mak,mdp} and replaced them with ACE_Library.{mak,mdp}. MSVC 4.2 insists to change the release version DLL from our original setting "ace.{dll,lib}" to "ACE dynamic Library.{dll,lib}". This is so far the only known method to get around this. * netsvcs/servers/servers.{dsw,dsp}: Changed the output filenames of debug version from maind.exe to main.exe. * netsvcs/lib/netsvcs.{dsw,dsp}: Changed the output filenames of debug version from netsvcsd.{dll,lib} to netsvcs.{dll,lib}. * ace/ace.dsw: * ace/ace_{dll,lib}.dsp: Removed Service_Record.cpp and added Service_Type.cpp. * ace/Log_Msg.cpp (open): Fixed a typo. * ace/Reactor.cpp: Fixed a typo. Sat Sep 13 17:23:22 1997 Douglas C. Schmidt * ACE version 4.3.6, released Sat Sep 13 17:23:22 1997. Sat Sep 13 12:11:50 1997 Douglas C. Schmidt * tests: #include "test_config.h" before all the other files so that we always have the ACE_ASSERT enabled... Thanks to Carlos for noticing this. * ace/Reactor.cpp: Added Arturo's improvements for suspending and resuming Event_Handlers. * tests/Reactors_Test.cpp: As a result of the new changes to ACE_Thread_Manager, the Reactors_Test now seems to be working fine. * ace/Thread_Manager.cpp (append_thr): When we append a new Thr_Descriptor make sure to zero-out the cleanup_info_ fields since otherwise horrible things will happen... * ace/Reactor: Added a new ACE_Reactor_Handle_Set called suspend_set_ and updated the suspend_i() and resume_i() method to use this set to store the ready bits that are enabled when we suspend and resume and Event_Handler, respectively. Thanks to Arturo for this suggestion. * tests/TSS_Test.cpp (main): Had to move the allocation and deletion of TSS_Error into the ACE_HAS_THREADS section since otherwise this test doesn't work when threading is disabled. * tests/Thread_Manager_Test.cpp: Move the template specialization inside of the ACE_HAS_THREADS macro since otherwise this test doesn't work when threading is disabled. * ace/Thread_Manager.cpp: Arrgh! Must initialize the cleanup_info fields to 0 in the constructor for ACE_Thread_Descriptor! This should fix a nasty bug... * tests/Async_Timer_Queue_Test.cpp: Continued to improve the documentation in the test of the ACE_Async_Timer_Queue_Adapter. * ace/Timer_Queue_T.cpp (schedule): Oops, must pass &this->mask_ to ACE_Sig_Set rather than this->mask_. * ace/Object_Manager.cpp: Changed #include "ace/Service_Repository.h" to #include "ace/Service_Config.h" since we now call ACE_Service_Config::close(). * ace/Service_Types: Removed a nasty circular dependency by simply having each of the ACE_Service_Type_Impl subclasses take const void *'s rather than their specific type (i.e., ACE_Stream or ACE_Module, etc.). This turns out not to be a problem since we treated them as const void *'s internally anyhow... * ace/Strategies_T.cpp: Fixed a bug in ACE_DLL_Strategy: ACE_Service_Type_Impl stp = new ACE_Service_Object_Type (svc_handler, this->svc_name_); should be ACE_Service_Type_Impl *stp = new ACE_Service_Object_Type (svc_handler, this->svc_name_) I wonder how this ever compiled?! Fri Sep 12 13:26:50 1997 Douglas C. Schmidt * ace/Mem_Map.cpp (close): Removed the following code in the close() method that appears to be redundant with the code in unmap(): if (this->file_mapping_ != this->handle_ && this->file_mapping_ != ACE_INVALID_HANDLE) ACE_OS::close (this->file_mapping_); Also cleaned up the close() code so that it doesn't try to close the handle multiple times, even if close() is called more than once. Thanks to Beged-Dov for reporting this. * tests/Async_Timer_Queue_Test.cpp: Improved the structure of the program and finished implementing the new feature that makes it possible to avoid blocking SIGQUIT. * ace/Timer_Queue_T: Added support for an ACE_Sig_Set that can be passed into the constructor of ACE_Async_Timer_Queue_Adapter. This will enable us to selectively block only certain signals. * ace/Signal: Added a new constructor for ACE_Sig_Set that takes ACE_Sig_Set * and also improved the documentation of the constructor interfaces. Fri Sep 12 13:46:04 1997 David L. Levine * ace/OS.[hi],Log_Msg.h,config-lynxos.h, include/makeinclude/platform_lynxos.GNU: added LynxOS port, provided by Dave Mayerhoefer . Note how few files were affected. What's even more amazing is the very small number, 8, of very minor code changes to OS.[hi] and Log_Msg.h. This is a tribute to the maturity of * ace/Service_Object.h: Moved the ACE_Service_Type class into the Service_Object.h file since this is "publically" visible to applications. * ace/Service_Types.h: Improved the documentation of the ACE_Service_Type subclass implementations. * ace/Service_Types: Changed the name next_ to link_ to be consistent with the accessor name. * ace: Renamed Service_Record.{h,i,cpp} to Service_Types.{h,i,cpp} to reflect the recent change in names. * ace/Service_Object.h: Renamed ACE_Service_Type to ACE_Service_Type_Impl and ACE_Service_Record to ACE_Service_Type in order to emphasize the use of the Bridge pattern. Thanks to Eric Newton for motivating this. * ace/Svc_Conf.y: Removed the warning about Service name being different from Module name. I'm not sure why this was complaining in the first place. Thanks to Eric Newton for pointing this out. * netsvcs/lib/README: The entry point for the time service client is _make_ACE_TS_Clerk_Processor and not _make_ACE_TS_Clerk_Connector. Thanks to Ivan for pointing this out. Thu Sep 11 10:59:12 1997 * ace/Connector.cpp (handle_output): Increased the idle time before we check the status of a non-blocking connection from 1 ms to 35 ms when ACE_HAS_BROKEN_NON_BLOCKING_CONNECTS is defined (i.e., Win32.) This is very odd but wait a whole lot longer seems to solve the problem. * ace/Log_Msg.cpp (close): On Win32, ACE_Log_Msg_Manager needs to delete main thread's ACE_Log_Msg instance also. Thu Sep 11 10:37:00 1997 Carlos O'Ryan * ace/ACE.cpp: * ace/INET_Addr.cpp: * ace/Log_Msg.h: * ace/Memory_Pool.h: * ace/OS.h: * ace/OS.i: * ace/Parse_Node.cpp: * ace/Strategies_T.h: * bin/clone.cpp: * netsvcs/clients/Naming/Dump_Restore/Dump_Restore.h: I checked the use of MAXNAMELEN vs. MAXPATHLEN; all buffers intended to keep full filenames should have at least MAXPATHLEN+1 chars. Only buffers that will keep basenames (without any directories) should have MAXNAMELEN+1 bytes. I also added a new macro ACE_MAX_FULLY_QUALIFIED_NAME_LEN which is the maximum number of characters for a fully qualified internet hostname. There remain one obscure usage of these macros in ace/Malloc.h and Local_Naming_Space_T.{h,cpp}, but a quick fix broke something, I will try again soon. Thu Sep 11 08:52:36 1997 David L. Levine * ace/OS.cpp (thr_key_detach): check to see if the ACE_TSS_Cleanup lock has been constructed, and not destructed, before attempting to use it. Statics are evil. * ace/Log_Msg.cpp (~ACE_Log_Msg): release guard before calling ACE_Log_Msg_Manager::close (), because that deletes the lock. * ace/Managed_Object.{h,cpp} (get_object): changed type of "id" to int because it will often be passed an enum. Pass "id" by value to get_object (int id), for preallocated objects. * ace/Object_Manager.{h,cpp}: added ACE_LOG_MSG_INSTANCE_LOCK, and ACE_PREALLOCATE_OBJECT macro. * include/makeinclude/wrapper_macros.GNU: ignore shared_libs_only in modules that only build a static lib. Fixed shared_libs_only by removing OBJDIRS, unless BIN is undefined, and VDIR. Removed SHOBJ from both shared_libs_only and static_libs_only because they're unused. * include/makeinclude/rules.local.GNU: added lib*.*_pure* to clean.local target, to remove Purified libraries. * examples/Connection/non_blocking/Makefile, examples/Service_Configurator/IPC-tests/server/Makefile: removed -L./ from LDFLAGS because it's redundant: wrapper_macros.GNU adds it. Wed Sep 10 22:58:10 1997 Douglas C. Schmidt * ace/Thread_Manager.cpp (exit): Reordered the code so that it will keep the lock held long enough to copy out the thread exit hook but will release the lock before calling this hook. Wed Sep 10 11:04:08 1997 David L. Levine * ace/config-sunos5.5-g++.h: added ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS. * include/makeinclude/wrapper_macros.GNU: added PIC= with static_libs_only, and added list of supported make flags. * include/makeinclude/wrapper_macros.GNU: added support for debug=0, etc. Also, made debug, optimize, and profile flags independent instead of exclusive. Thanks to Per Andersson for suggesting this. * include/makeinclude/platform_*.GNU: replaced "CFLAGS += $(DCFLAGS) with debug=1 so that debugging can easily be disabled. Thanks to Per Andersson and James CE Johnson for noticing this deficiency. * include/makeinclude/platform_vxworks5.x_g++.GNU: removed "-I. -I$(ACE_ROOT)" from CFLAGS because it duplicates the INCLDIRS set in wrapper_root.GNU. Wed Sep 10 10:35:06 1997 David L. Levine * ACE version 4.3.5, released Wed Sep 10 10:35:06 1997. Wed Sep 10 10:25:41 1997 David L. Levine * ace/Thread_Manager.cpp (exit): copy the thread exit hook before releasing the guard, and call it after releasing the guard. * examples/Shared_Malloc/test_malloc.cpp (spawn): added (char *) cast of slave_name () to avoid compilation warnings on Solaris. Wed Sep 10 00:43:04 1997 Nanbor Wang * ace/Makefile: Added Managed_Object to template sources. * ace/Object_Manager.{h,cpp}: * ace/Managed_Object.{h,cpp}: Separate ACE_Managed_Object to a new set of file. Tue Sep 9 23:41:56 1997 Douglas C. Schmidt * tests/Reactors_Test.cpp (main): Check to see if wait() returns -1 and then test to see what's gone wrong! * ace/OS.h: Added a "fake" #define for SIGALRM so that programs will *compile* on platforms like Chorus. Thanks to Wei Chiang for reporting this. * examples/Shared_Malloc/test_malloc.cpp (spawn): HP/UX doesn't seem to like const char *const argv[] being given an initializer list. I've fixed this to be just plain ol' char *argv[]. Thanks to Sandro Doro for reporting this. * ace/Handle_Set.i (clr_bit): Replaced SOCKET with ACE_SOCKET so this will compile on UNIX. Tue Sep 09 17:16:21 1997 * ace/Proactor: Updated Proactor to bring it upto date with the recent changes to the Timer_Queue. * ace/Handle_Set.i (clr_bit and set_bit): These methods now change the size_ member of the class on Win32. This is necessary since the ACE_Handle_Set::operator fd_set *() accessor has been optimized for size_ == 0. Tue Sep 09 09:14:07 1997 David L. Levine * ace/OS.cpp (cleanup_tss): On WIN32 and with ACE_HAS_TSS_EMULATION, delete the ACE_TSS_Cleanup instance instead of registering it for cleanup via the ACE_Object_Manager's at_exit (). This should allow applications to use ACE_Log_Msg in their at_exit () hooks. Thanks to Wei Chiang for reporting this problem. * ace/Object_Manager.{h,cpp}: added guard of internal structures. (dtor): call at_exit hooks before calling cleanup_tss, now that the ACE_TSS_Cleanup instance is no longer registered for an at_exit call. (at_exit): set errno instead of returning different values on error. Added ACE_Managed_Object template class, intended for use in replacing static instances. * ace/Thread_Manager.cpp (exit): release guard before running the thread exit hooks. This should help avoid deadlocks, in case one of those hooks needs to operate on the Thread_Manager. * ace/CORBA_Handler.{h,cpp},Dump.{h,cpp},Object_Manager.{h,cpp}: preallocate locks for CORBA_Handler and Dump in ACE_Object_Manager. Statics are evil. * ace/Synch.{h,cpp},OS.cpp,Object_Manager.{h,cpp}: removed ACE_TSS_Cleanup_Lock and replaced it with a preallocated mutex in OS.cpp. Thanks to Nanbor for reporting problems at shutdown with the old ACE_TSS_Cleanup_Lock static instance. * include/makeinclude/platform_sunos5_sunc++.GNU: when building libraries only, don't use CC to create individual .shobj/*.so files. The .so files are not needed to build libraries, because libraries are built with -G. (They are needed to avoid upsetting the ACE make rules, so they're created as links to their corresponding .o files.) The .so files are still needed when building executables in order to get all template instantiations. * include/makeinclude/platform_sunos5_g++.GNU: removed unused SOLINK definitions. Mon Sep 8 18:38:22 1997 Douglas C. Schmidt * tests/Handle_Set_Test.cpp: It is possible for the order to get the handles (using the iterator) will not agree with insert order in ACE_Unbounded_Queue. It's best to use ACE_Unbounded_Set. Thanks to Arturo for this fix. Mon Sep 8 17:43:43 1997 Darrell Brunsch * ace/Timer_{List,Wheel,Hash,Heap}_T.cpp: The iter() method now returns a pointer to an iterator that is in a reset state instead of an unknown one. Mon Sep 8 14:05:15 1997 Nanbor Wang * ace/ACE.cpp (read_adapter): Removed ACE_Thread_Control object in this function. This is now taken care of by ACE_Thread_Manager. (register_stdin_handler): This function no longer uses ACE_Stdin_Args to pass in thread manager into read_adapter. * ace/ACE.h (ACE): Removed class ACE_Stdin_Args, because it is no longer needed. Mon Sep 08 11:49:02 1997 David L. Levine * tests/run_tests.sh: moved log file checks out to separate file, run_tests.check. * tests/run_tests.vxworks: added one-button test for VxWorks. Check it out, Darrell. * ace/Filecache.cpp: commented out unused constants [RW]COPY_FLAGS. Mon Sep 08 08:26:52 1997 David L. Levine * ACE version 4.3.4, released Mon Sep 08 08:26:52 1997. Sat Sep 6 10:41:17 1997 Carlos O'Ryan * ace/Malloc.h: sizeof() must be casted to int in ACE_CONTROL_BLOCK_ALIGN_LONGS otherwise unsigned int arithmetic is used, thus obtaining unexpected results. Sat Sep 06 09:07:02 1997 David L. Levine * OS.{h,cpp}: added ACE_Cleanup base class and ace_cleanup_destroyer adapter. * Object_Manager.*: added at_exit () interface for ACE_Cleanup objects. * Singleton.{h,cpp},Token_Invariants.{h,cpp},Token_Manager.{h,cpp}: base on ACE_Cleanup, so that simpler ACE_Object_Manager::at_exit () can be used. * performance-tests/Misc/Makefile: moved $(BIN) files from FILES to SRC so that they don't get put into libPerf. Sat Sep 6 02:36:31 1997 Nanbor Wang * tests/test_config.h (set_output): Added openning flag ios::trunc explicitly if we are not appending to the opening ofstream. This is required by standard CPP iostream libraries on NT (i.e., we can't use ios::out alone when ofstream.open a file.) Sat Sep 6 00:21:33 1997 Douglas C. Schmidt * ace/Synch_T.h: Added new constructors: ACE_Guard(ACE_LOCK& l) : lock_(&l) { this->owner_ = this->acquire(); } ACE_Read_Guard(ACE_LOCK& m) : ACE_Guard(&m) { this->owner_ = this->acquire_read(); } ACE_Write_Guard(ACE_LOCK& m) : ACE_Guard(&m) { this->owner_ = this->acquire_write(); } Remove default argument to current Guard classes. ACE_Guard(ACE_LOCK&l, int block) ACE_Read_Guard(ACE_LOCK& m, int block) ACE_Write_Guard(ACE_LOCK&m, int block) with the current semantic. This change allows OS platforms with ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION or ACE_HAS ??? PRAGMA ???, to> invoke common case constructor in a more efficient way. Thanks to Arturo for this. * ace/Synch_T.h: ACE_Guard's destructor should be: ~ACE_Guard() { this->release(); } and not ~ACE_Guard() { if (this->owner_ != -1) this->release(); } because ACE_Guard::release has this test. Thanks to Arturo for reporting this. * ace/ARGV.cpp: Declared the char* parameters for the ACE_ARGV class constructors as const. Since they are copied in the constructors, this is a safe thing to do. This makes it easier to pass the result of string::c_str() to it. Thanks to Stephen Coy for this suggestion. * ace/Thread_Manager.cpp: We were missing a Guard in the ACE_Thread_Manager::at_exit() method. * ace/config-sunos5.5-sunc++-4.x.h: It appears that we need to set ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS for Solaris 2.5 since otherwise wierd things happen randomly. This is based on the following man page entry for pthread_exit(): Do not call pthread_exit() from a cancellation cleanup handler or destructor function that will be invoked as a result of either an implicit or explicit call to pthread_exit(). * ace/Thread_Manager.cpp (run_thread_exit_hooks): Once the cleanup hook(s) are called we set the value of the cleanup hook variable to 0 to avoid false matches later on. Fri Sep 5 21:57:44 1997 Nanbor Wang * ace/Containers.i (is_empty): * ace/Malloc.cpp (instance): Commented out ACE_TRACE in these routines. They were causing recursive call if we used TRACE. Thanks to Craig Perras for solving this. * ace/Handle_Set.i (fd_set *): Added conditional compilation code for Win32 platforms. This is because we don't maintain on Win32 and, therefore, can't depend on it. Fri Sep 5 19:05:02 1997 Douglas C. Schmidt * tests/Thread_Manager_Test.cpp (main): moved delete signal_catcher into the ACE_HAS_THREADS part of the main() function. * ace/Reactor.cpp (check_handles): When handle_error was optimized with fstat we put NULL value to second argument. It requires a value to SCO OpenServer to work. Therefore, I added struct stat temp and changed ACE_OS::fstat(handle, NULL) by ACE_OS::fstat(handle, &temp); Thanks to Arturo for fixing this. * examples/Threads/process_manager.cpp (sig_handler): Fixed a bug where the thread was exiting if no more children existed. Thanks to Avraham Nash for reporting this. * ace/Handle_Set: Added the following performance enhancements: . Assignment operator to optimize size == 0. . min_handle to manage the case when the Handle_Set start in handle different of zero. . A new iterator algorithm tuned for select function calls. Thank to Arturo for these enhancements. * ace/config-aix-4.1.x.h: Added ACE_LACKS_TIMESPEC_T. Thanks to Rob Head (rhead@virtc.com) for reporting this. * ace/OS.cpp (fork_exec): Changed the logic so that we don't create a new console window on Win32. This isn't done on UNIX, so there's no point in doing it here. Thanks to Jeff Richard for pointing this out. * ace/Reactor.cpp: The call to ACE_Reactor_Handler_Repository::open() in the constructor of ACE_Reactor should check for == -1! Thanks to Brian Mendel for reporting this. * ace/Reactor.cpp (remove_handler): Fixed a braino where the conditional compile for NSIG should have been > 0 rather than == 0. Thanks to fixing this codeKaren Amestoy for reporting this fix. Fri Sep 05 16:17:50 1997 David L. Levine * performance-tests/Misc/preempt.cpp: added command line options, and explanation on how to interpret the results. Thu Sep 04 10:26:11 1997 David L. Levine * ace/OS.cpp: (tss_open): removed paren from around type in "new" statement, because GHS (and ANSI C++) compilers will choke on it. Thanks to Brian Mendel for reporting this. * ace/Thread_Manager.cpp: (ACE_Thread_Descriptor ctor): zero out cleanup_hook_ in cleanup_info_ because we read it later on. (dump): added guard because thr_table_ is accessed. (wait): hacked in thr_yield () to give waited threads a chance to clean up before continuing. * ace/OS.h (ACE_Cleanup_Info): added default ctor. * ace/Log_Msg.cpp (close): delete main thread's Log_Msg instance, on Solaris if ACE_HAS_EXCEPTIONS is not defined, because main thread TSS dtors apparently don't get called. * ace/Token_Manager.{h,cpp}: register ACE_Token_Manager singleton for deletion with ACE_Object_Manager. * ace/Token_Invariants.{h,cpp}: register ACE_Token_Invariant_Manager singleton for deletion with ACE_Object_Manager. * ace/Naming_Context.cpp (close) moved deletion of "name_options_" from dtor to close (), because when Service_Repository is closed, it calls close () instead of deleting the service. * ace/Process_Strategy.cpp (handle_signal): suppress printouts during shutdown, to prevent using ACE_Log_Msg while it's being deleted. * ace/Timer_List.cpp: replace ACE_Recursive_Thread_Mutex with ACE_SYNCH_RECURSIVE_MUTEX, for non-threaded platforms. * tests/Reactors_Test (~Test_Task): moved ASSERT after the printout, so we can see why it failed. (svc): added printout with thread ID. (main): deleted reactor at end of test to prevent leak. * tests/SPIPE_Test (client): increased sleep time to 10 sec, because a long delay is needed with Purify. * tests/UPIPE_Test (connector): added 5 second sleep to give acceptor a chance to start up. * include/makeinclude/wrapper_macros.GNU: added -max_threads=100 to Quantify options. * include/makeinclude/rules.local.GNU: added *.sym to clean target. Thu Sep 04 09:39:08 1997 David L. Levine * ACE version 4.3.3, released Thu Sep 04 09:39:08 1997. Thu Sep 04 08:48:13 1997 David L. Levine * include/makeinclude/wrapper_macros.GNU: added shared_libs_only and static_libs_only build options. Only static_libs_only has been tested successfully. * include/makeinclude/rules.lib.GNU: added INSTALL support for shared_libs_only and static_libs_only. * include/makeinclude/platform_vxworks*.GNU: use static_libs_only. * ace/OS.cpp: moved tss_open ()/tss_close () calls from invoke () to ace_thread_adapter. * examples/Threads/auto_event.cpp,manual_event.cpp, process_manager.cpp,reader_writer.cpp,tss2.cpp: cast spawn entry point to ACE_THR_FUNC. * examples/Threads/task_four.cpp (Invoker_Task): rearranged initializers to match declaration order. * examples/Threads/thread_specific.cpp (worker): use ACE_OS::printf () instead of printf (), and print out the ACE_hthread_t instead of the ACE_thread_t. * examples/IPC_SAP/SPIPE_SAP/client.cpp,consumer_msg.cpp, consumer_read.cpp,producer_msg.cpp,producer_read.cpp,server.cpp: moved #include of shared.h inside ACE_HAS_STREAM_PIPES protection to avoid compilation warnings on unsupported platforms. * examples/Reactor/Ntalker/ntalker.cpp (main): removed unused "argc". * examples/*/*.cpp,netsvcs/clients/Tokens/mutex/test_mutex.cpp: added args to main (). Wed Sep 3 21:38:18 1997 Carlos O'Ryan * ace/config-irix6.x-sgic++.h: IRIX uses pthread_sigmask to manage per-thread signal mask, thanks to Gonzalo Diethelm (gonzo@ing.puc.cl) for pointing out this one. * ace/OS.h: Removed an initial '#' for a comment line, thanks to Gonzalo Diethelm (gonzo@ing.puc.cl) for pointing out this one. * ace/Timer_Hash_T.cpp: * ace/Timer_Hash_T.h: * ace/Timer_Heap_T.cpp: * ace/Timer_Heap_T.h: * ace/Timer_List.cpp: * ace/Timer_List_T.cpp: * ace/Timer_List_T.h: * ace/Timer_Queue_T.cpp: * ace/Timer_Queue_T.h: * ace/Timer_Wheel_T.cpp: * ace/Timer_Wheel_T.h: In the word of its author: Modified the iterators kept in each of these classes so that they are constructed dynamically on the heap after the Queue has been properly initialized. Otherwise, the iterators try to iterate over a non-initialized queue, and fail miserably (usually dumping core). Once more thanks to Gonzalo Diethelm (gonzo@ing.puc.cl) for this changes. * tests/UPIPE_SAP_Test.cpp: Gonzalo improved the error message. * ace/README: Gonzalo updated the documentation for some macros. Wed Sep 03 15:21:46 1997 David L. Levine * ace/OS.h: define ACE_TSS macros with ACE_HAS_TSS_EMULATION, and renamed some ACE_TSS_Emulation methods. * ace/OS.i: allow TSS_Emulation storage to be on thread stack, instead of always dynamically allocating it. * ace/OS.cpp (ACE_Thread_Adapter::invoke): allocate TSS_Emulation storage on thread stack. (ACE_TSS_Cleanup::exit): only call a TSS destructor if the thread's value is non-zero. * ace/Thread_Manager.cpp: support TSS_Emulation. * ace/Thread_Manager.cpp (resize): zero out unused cleanup_hooks in thr_table_; (run_thread_exit_hooks): check for zero cleanup hook before calling. * ace/Synch_T.*: allow ACE_HAS_TSS_EMULATION _or_ ACE_HAS_THREAD_SPECIFIC_STORAGE. * ace/Object_Manager.{h,cpp}: allocate main thread's TSS_Emulation storage in the ACE_Object_Manager instance. * ace/Log_Msg.h: befriend ACE_OS::cleanup_tss () instead of ACE_Object_Manager, because the cleanup path is now indirect from the ACE_Object_Manager. * ace/Log_Msg.cpp: use TSS_Emulation on VxWorks, so VxWorks-specific code was removed. * ace/Task.cpp: removed unused #include of ace/Dynamic.h. (It had been used for template instantiations, but they were moved.) Also, removed unused #include of ace/Object_Manager.h. * ace/Svc_Handler.{h,cpp}: register Svc_Handler singleton for deletion with the ACE_Object_Manager. * tests/Process_Strategy_Test (Options): added a destructor so that the dynamically allocated concurrency_strategy_ can be deleted. Wed Sep 3 08:05:26 1997 Steve Huston * ace/Message_Block.h: Corrected comment on release(void) - the underlying ACE_Data_Block's refcount is decremented; the ACE_Message_Block is always deleted. Tue Sep 2 18:26:22 1997 Douglas C. Schmidt * ace/Task: Revised the ACE_Task_Base::svc_run() method to register a thread exit hook (ACE_Task_Base::cleanup()) * ace/Task: Added a static method called cleanup() that can serve as a thread exit hook to ensure that close() is always called when a task exits a thread. * ace/Thread_Manager: Added the first-cut implementation of the thread exit hooks. This one is butt-simple -- just allowing a single hook per-thread, but that should be enough to get us over the hump... * ace/OS.h: Moved the object_info_t type from Object_Manager.h and renamed it to ACE_Cleanup_Info since we will use it with the Thread_Manager and the Object_Manager. * ChangeLog-97b: Emptied out the ChangeLog-97b file until we move the ChangeLog to this file... * ace/OS.h: Moved the typedef from the ACE_Object_Manager into global scope so that it can also be used by the ACE_Thread_Manager. * ace/DEV_IO: Moved the get_remote_addr() and get_local_addr() from the DEV class to the DEV_IO class, which seems to be more consistent with how they should be used. * ace/FILE_IO: Added the get_remote_addr() and get_local_addr() methods to FILE_IO. Now we should be able to use this with the Connector pattern. Thanks to Stephen Coy for reporting this. * ace/DEV_Connector*h, ace/FILE*.h: Added "traits" for PEER_ADDR and PEER_STREAM. Now we should be able to use this with the Connector pattern. Thanks to Stephen Coy for reporting this. * tests/Async_Timer_Queue_Test.cpp (main): Replaced the use of fputs() with read() so that it will be signal-safe. Thanks to Carlos for pointing out the need for this. * ace/Task: All the complex ACE_Task_Exit logic has been moved out of the Task file and into the Thread_Manager file. This will both simplify and generalize the behavior of cleanups on thread exit. Tue Sep 2 14:42:52 1997 Nanbor Wang * ace/config-chorus.h (ACE_HAS_BROKEN_EXPLICIT_TEMPLATE_DESTRUCTOR): Added this directive for Chorus uses g++. Thanks to David Levine for pointing this out. Mon Sep 01 21:31:25 1997 David L. Levine * ChangeLog-97b,Makefile,bin/create_ace_build: ChangeLog is no longer a symbolic link, but instead is the most recent ChangeLog file. ChangeLog-97b was moved to ChangeLog. * ace/Timer_Queue_T.cpp (schedule): added ACE_UNUSED_ARGs for act and interval. * ace/OS.h: changed ACE_SEH_EXCEPT and ACE_SEH_FINALLY from null to "while (0)" on all platforms except ACE_WIN32. Thanks to Nanbor for this bit of macro wizardry. * ace/OS.i (tss_base): cast VxWorks TCB spare field to a void **& instead of a void **, because the function returns a reference to it. * ace/OS.cpp: protected definition of ACE_TSS_Emulation::tss_collection_ on VxWorks, where it's not used. * ace/OS.cpp (ACE_Thread_Adapter::invoke) don't exit the thread with TSS_EMULATION, except on WIN32. (thr_create) On VxWorks, use thread adapter as entry point instead of func (via macros). * ace/config-vxworks*.h: added ACE_HAS_TSS_EMULATION, with ACE_DEFAULT_THREAD_KEYS set to 16, and ACE_LACKS_UNIX_SIGNALS. * tests/Async_Timer_Queue_Test.cpp: added template instantiations. * tests/IOStream_Test.cpp: no longer need to dynamically allocate the ACE_SOCK_IOStreams with the recent ACE_Thread_Manager changes. That was causing occasional problems with unsafe deletion of the underlying ostreams. Thanks to James Johnson for consulting on this intermittent (nasty) problem. * tests/SPIPE_Test.cpp: (main) added ACE_UNUSED_ARG of client and server. * tests/Thread_Manager_Test (worker): added ACE_UNUSED_ARG (thr_mgr) if ACE_LACKS_UNIX_SIGNALS, and added template instantiations. * tests/Thread_Manager_Test.cpp: dynamically allocate the signal_catcher so that we can destroy it before the main thread's TSS is cleaned up. * tests/TSS_Test.cpp: dynamically allocate TSS_Error so that we can ensure its deletion before that of ACE_Object_Manager. Also, makde the code a little easier to change the number of threads. * include/makeinclude/wrapper_macros.GNU: added Purify options to ignore SIGINT and set max threads to 100. Mon Sep 1 10:53:39 1997 Douglas C. Schmidt * ace/Handle_Set: Added an assignment operator that is optimized for the case when the right-hand side is 0. * ace/OS: The ACE_THR_C_FUNC macro was confusing for Win32. We've replaced this with the original UNIX typedef and will just use LPTHREAD_START_ROUTINE for Win32. * tests/Thread_Manager_Test.cpp (main): Revised this test so that we don't have race conditions for suspend() and resume(). * tests/Tokens_Test.cpp (run_test): Removed the use of THR_SUSPENDED and resume_all() since this is broken due to race conditions and other hazards implicit in using suspend() and resume() on threads. * ace/Handle_Set.cpp: There were several ACE_INLINE methods in the Handle_Set.cpp file. I've removed the ACE_INLINE flag. * tests/SPIPE_Test.cpp: If ACE doesn't have STREAM pipes on a platform (or we aren't on NT) then don't try to run this test. Thanks to James CE Johnson for reporting this. * ace/config-sunos5.[45]-g++.h: ACE defines _REENTRANT in config.h. Application using classes of ACE can conflict by using compilation option as -D_REENTRANT. I fixed this by surrounding the define as: #if !defined (_REENTRANT) #define _REENTRANT #endif /* _REENTRANT */ Thanks to Jean-Marc Strauss for reporting this. * ace/Timer_Queue_T.h: We need to #include "ace/Signal.h" since our Async_Timer_Queue_Adapter needs it. Thanks to Neil Cohen for reporting this. * ace/Reactor.cpp (check_handles): Optimized the check for invalid handles by using fstat() rather than select() on non-Win32 platforms. Thanks to Arturo for suggesting this optimization. Mon Sep 1 17:52:10 1997 Darrell Brunsch * ace/Timer_Heap_T.cpp: Changed cancel (id ...) to check for previously expired/cancelled timers Mon Sep 01 08:43:37 1997 David L. Levine * ace/Synch.cpp: added #include of Object_Manager.h. Thanks to Edan Ayal for reporting this. Mon Sep 1 00:46:05 1997 Nanbor Wang * ace/README: Added explanation for ACE_HAS_STL_MAP_CONFILICT. * ace/OS.h: Added conditional compilation directive ACE_HAS_STL_MAP_CONFLICT. This is used when users want to compile ACE with STL library and the STL map class conflicts with map structure in . * ace/config-unixware-2.1.2-g++.h: * ace/config-unixware-2.01-g++.h: * ace/config-osf1-4.0-g++.h: * ace/config-irix5.3-g++.h: * ace/config-hpux-10.x-g++.h: * ace/config-linux-pthread.h: * ace/config-linux-lxpthreads.h: * ace/config-linux.h: * ace/config-freebsd.h: * ace/config-freebsd-pthread.h: Added ACE_HAS_BROKEN_EXPLICIT_TEMPLATE_DESTRUCTOR flag for all config files which apparently use g++. * ace/config-vxworks-g++.h: * ace/config-vxworks5.x-g++.h: * ace/config-sunos4-g++.h: * ace/config-sunos5.4-g++.h: * ace/config-sunos5.5-g++.h: Moved ACE_HAS_BROKEN_EXPLICIT_TEMPLATE_DESTRUCTOR closer to other template-related directives. Sun Aug 31 22:56:30 1997 Douglas C. Schmidt * ACE version 4.3.2, released Sun Aug 31 22:56:30 1997. Sun Aug 31 22:36:08 1997 Douglas C. Schmidt * tests/Async_Timer_Queue_Test.cpp: Need to #include "Timer_List.h" rather than "Timer_Queue.h". * ace: Added ACE_HAS_HANDLE_SET_OPTIMIZED_FOR_SELECT for all config.h files. * ace/Handle_Set.cpp (count_bits): Continued to optimize this method. Now, if ACE_HAS_HANDLE_SET_OPTIMIZED_FOR_SELECT enabled it will use a very fast loop that only runs for as many bits that are enabled in the bitset. This approach also doesn't have to access the Global Offset Table in shared libraries, which is a win. Thanks to Arturo for contributing this. * tests/Async_Timer_Queue_Test.cpp: Generalized this test to use the new ACE_Async_Timer_Queue_Adapter. * ace/Timer_Queue_T: Added the new ACE_Async_Timer_Queue_Adapter, which makes it possible to encapsulate any of the ACE Timer Queue mechanisms into a asynchronous signal-handling context. * ace/OS.i: If the platform doesn't support ualarm() (and it doesn't lack UNIX signals) then we'll use alarm() rather than ualarm(). Clearly, this isn't as good as ualarm(), but it's better than nothing. * ace/OS.i: I'd missed replacing ACE_LACKS_POSIX_PROTO_FOR_SOME_FUNCS with ACE_LACKS_POSIX_PROTOTYPES_FOR_SOME_FUNCS in OS.i. Thanks to James CE Johnson for pointing this out. Sun Aug 31 09:58:35 1997 Douglas C. Schmidt * Princess Diana was killed today in a senseless auto accident in Paris, France. This is a very tragic ending to a very promising life ahead of her. Sun Aug 31 15:08:00 1997 David L. Levine * tests/Async_Timer_Queue_Test.cpp: fixed and added some ACE_UNUSED_ARG's. * netsvcs/clients/Tokens/invariant/invariant.cpp (run_mutex, run_reader_writer), netsvcs/clients/Tokens/mutex/test_mutex.cpp (run_test), netsvcs/clients/Tokens/rw_lock/rw_locks.cpp (run_thread): removed unused argument "vp". * ace/ACE.i (log2): moved "log" declaration outside of the for loop because its used after the loop. * ace/Task.cpp (instance) only register for destruction with ACE_Object_Manager when creating a new instance_. * ace/Thread_Manager.cpp (ACE_Thread_Control::exit) with TSS emulation, don't exit the thread. Instead, ACE_Thread_Adpater::invoke () will do it after cleaning up TSS. * ace/Synch{h,cpp}: (ACE_TSS_Cleanup_Lock) register for destruction with ACE_Object_Manager. * ace/OS.*: major cleanup of ACE_TSS_Emulation, esp. how it interacts with ACE_TSS_Cleanup::exit (). Sat Aug 30 17:30:24 1997 Steve Huston * Removed these config files: config-hpux-10.x-aCC.h config-hpux-10.x-decthreads.h config-hpux-10.x-nothread.h config-hpux-10.x-hpc++.h should be used with HP compilers on HP-UX 10.x. Sat Aug 30 14:58:42 1997 Douglas C. Schmidt * ace/Signal.cpp (ACE_Sig_Action): Added a new constructor that also takes an ACE_Sig_Set & *and* registers the handler... * ace/Handle_Set.cpp (count_bits): Added a newly optimized algorithm for cases where ACE_HAS_HANDLE_SET_OPTIMIZED_FOR_SELECT. Thanks to Arturo for this suggestion. * ace/config-sco-5.0.0*.h: Added ACE_HAS_LONG_FDMASK for all the SCO files. Thanks to Arturo for suggesting this. * ace/Signal: Added a new mutator method to reassign an ACE_Sig_Set to an ACE_Sig_Action. * ace/Handle_Set.i: If the size of the fd_set is 0 then operator fd_set *() just returns 0. This will help to optimize the performance of the Reactor. Thanks to Arturo for suggesting this. * ace/Handle_Set.cpp (count_bits): Added yet another improvement to remove the "i" iterator. Thanks to Arturo for this! * ace/Log_Msg.cpp (log): Used the new ACE_Log_Record::priority() method in place of the type() method so that the priorities are handled correctly. * ace/Log_Record: Added two new methods that get/set the "priority" of an ACE_Log_Record. This value computed as the base 2 log of the value of the corresponding ACE_Log_Priority enumeral (which are all powers of two). We need this mapping function so that we can use the priorities as parameters to the putpmsg() function (which can only map between 0-255). Thanks to Per Andersson for finding this stuff! * ace/ACE: Added a new method to compute the base2 logarithm of a number. * Replaced all uses of ACE_Thread_Control since this is now handled by the ACE_Thread_Manager. * ace/Thread_Manager.cpp (spawn_i): Make sure to pass "this" to the ACE_Thread_Adapter if we're constructing it in the ACE_Thread_Manager::spawn_i() method. * ace/OS.i (cond_timedwait): Added a special check to see if timeout != 0, in which case we just call ACE_OS::cond_wait(). Therefore, VxWorks can now use ACE_OS::cond_timedwait(), as long as the timeout == 0! This simplifies certain internal ACE code. Thanks to David Levine for pointing this out. * ace/Handle_Set.cpp (count_bits): Changed the code from for (int i = 0; i < sizeof (u_long); i++) { rval += ACE_Handle_Set::nbits_[n & 0xff]; n >>= 8; } to for (int i = 0; n != 0; i++) { rval += ACE_Handle_Set::nbits_[n & 0xff]; n >>= 8; } in order to speed it up in the "best case." Thanks to Arturo Montes for reporting this. * ace/Thread.cpp (spawn_n): Added a test to make sure that the thread_ids is != 0 before we assign into this. Fri Aug 29 22:45:21 1997 Nanbor Wang * ace/config-vxworks-g++.h: * ace/config-vxworks5.x-g++.h: * ace/config-sunos4-g++.h: * ace/config-sunos5.4-g++.h: * ace/config-sunos5.5-g++.h: Added flag ACE_HAS_BROKEN_EXPLICIT_TEMPLATE_DESTRUCTOR to these config files. * ace/README: Added explanation of flag "ACE_HAS_BROKEN_EXPLICIT_TEMPLATE_DESTRUCTOR." When calling a template class'es destructor explicitly, if you must use "ptr->FOO::~FOO ();" but not "ptr->FOO::~FOO ();" then, you must add this flag to your config file. * ace/OS.h (ACE_DES_FREE_TEMPLATE): Added this new macro to cope with the fact that compilers require different syntax when calling destructor of template classes explicitly. This macro takes four arguments, POINTER, DEALLOCATOR, CLASS, and TEMPLATE_PARAMETER. To deallocate a pointer allocated by ACE_NEW_MALLOC and you need to call FOO class'es destructor, you'll write: ACE_DES_FREE_TEMPLATE (ptr, alloc->free, FOO, ); * ace/Containers.cpp: Changed to use ACE_DES_FREE_TEMPLATE to iron out differences among compilers. Fri Aug 29 15:31:50 1997 David L. Levine * ace/OS.*,Synch.{h,cpp},Object_Manager.cpp: started adding support for TSS emulation. * ace/OS.h: declare class ostream if ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION. * tests/Async_Timer_Queue_Test.cpp (parse_commands): fixed sscanf format specifiers to match argument types; (main): fixed ACE_ERROR_RETURN parens; protected bulk of code with ACE_HAS_UALARM so that the test will build cleanly on platforms without it. Fri Aug 29 00:43:27 1997 Douglas C. Schmidt * ace/Synch.cpp (wait): Simpified the call to ACE_OS::cond_timedwait() to avoid an extra test. Thanks to Arturo for pointing this out. * ace/TTY_IO: Added native support for TSETA. Thanks to Arturo for this. * ace/Strategies_T.cpp: Finished integrating the ACE_DLL_Strategy implementation, which is used in TAO. Thanks to Satheesh Kumar MG for motivating this. * ace/Synch_T.h: Clarified the constructor for ACE_TSS that takes a TYPE * as an argument. Note that this only initializes the TSS value in the *calling* thread, but not any other threads that may come along later on. Thanks to Bob Laferriere for helping to clarify this. * ace/Synch_T.h: Removed stray semi-colons from some of the ACE_SYNCH_* macros. Thanks for Wei Chiang for reporting this. Fri Aug 29 11:40:10 1997 Darrell Brunsch * ace/OS.cpp: Added cast for ace_thread_adapter. * ace/OS.h: Changed name of ACE_Thread_Adapter's constructor's fourth parameter from tm to tmgr since tm conflicted with another tm. * ace/Thread_Manager.cpp: In spawn_i, changed the last parameter given to spawn to thread_args. Also had to add a cast for ace_thread_adapter. Fri Aug 29 06:44:05 1997 Nanbor Wang * ace/OS.h (ACE_DES_FREE): Added this macro which will call designate destructor before freeing the memory. This is a matching macro that should go with ACE_NEW_MALLOC and ACE_NEW_MALLOC_RETURN which allocate memory using designate allocator then call the user specified constructor explicitly. * ace/Containers.cpp: Many memory deallocations of container's nodes were changed to use the new macro which deletes objects correctly. Thanks very, very much to Ivan Murphy for torturing various test programs and reporting those tests which fail the excruciation. Fri Aug 29 01:26:38 1997 * ace/ReactorEx.cpp: Added two new methods to ReactorEx - schedule_wakeup() and cancel_wakeup(). Also fixed some bugs related to our local copy of network_events_ not getting updated properly. Thanks to Edan Ayal for pointing out the two missing functions. Thu Aug 28 20:12:23 1997 Douglas C. Schmidt * ace/Thread_Manager.cpp: Added a new ace_thread_manager_adapter() function, which is similar to the ace_thread_adapter function used in ACE_OS::thr_create(). However, the new function ensures that threads spawned by an ACE_Thread_Manager are automatically registered and deregistered from the Thread Manager. * ace/ACE.h (inherit_log_msg): Factored out the functionality to inherit the logging features if the parent thread has an ACE_Log_Msg instance in thread-specific storage. This function is called in several places (e.g., OS.cpp and Thread_Manager.cpp), so it pays to factor it out. * ace/OS.h (ACE_Thread_Adapter): Added a new data member that keeps track of which thread entry point function we will pass to the underlying OS thread creation routine. The default value is ace_thread_adapter, but this can be overridden to do different things... * ace/OS, ace/Thread: Extended thr_create() so that if an ACE_Thread_Adapter is passed to it this is used in lieu of the func and arg parameters. This reduces the amount of dynamic allocation and indirection required with the new ACE_Thread_Manager. * ace/Task.h: Removed the ACE_Thread_Control data member from the ACE_Task_Exit class since it now belongs to the ACE_Thread_Manager instead... * ace/OS.cpp: Move the ACE_Thread_Adapter out of the OS.cpp file and made it a first-class citizen of ACE. We can put this to good use in the new ACE_Thread_Manager. * ace/OS.cpp: The ACE_Thread_Adapter is now the default behavior in ACE. If you don't want to use it for whatever reason, you'll need to set the ACE_NO_THREAD_ADAPTER macro. * ace/config-sco-5.0.0-fsu-pthread.h: Added ACE_LACKS_CONST_TIMESPEC_PTR. Thanks to Arturo for this. * ace/Synch.cpp (wait): Removed the reference assignment and just take the address of this->mutex_.lock_. Also, removed the additional check for abstime == 0 in order to speed up the common case. Thanks to Arturo for these suggestions. Thu Aug 28 20:02:03 1997 Douglas C. Schmidt * ACE version 4.3.1, released Thu Aug 28 20:02:03 1997. Thu Aug 28 00:21:09 1997 Douglas C. Schmidt * ace/Strategies_T.cpp (ACE_Thread_Strategy): Added reasonable values to the default constructor. Thanks to Stephen Coy for reporting this. * ace/config-irix6.x-sgic++-*.h: Added ACE_HAS_UALARM. Thanks to Amos Shapira for reporting this. * ace/config-aix-4.*.h: Added ACE_HAS_UALARM. Thanks to Cary Clark for reporting this. * ace/config-hpux-10.x*.h: Added ACE_HAS_UALARM. Thanks to Cary Clark for reporting this. * ace/config-osf1*.h: Added ACE_HAS_UALARM. Thanks to Thilo for reporting this. * ace/config-mvs.h: Added ACE_HAS_UALARM. Thanks to Chuck Gehr for reporting this. * tests/Async_Timer_Queue_Test.cpp: Added a new test that will illustrate how to implement an asynchronously invoked Timer_Queue using UNIX SIGALRM signals. Thu Aug 28 19:32:07 1997 * examples/Reactor/ReactorEx: Added two new applications (test_registry_changes.cpp and test_console_input.cpp) to show some more features of ReactorEx. test_registry_changes.cpp shows how to monitor the Registry using ReactorEx. test_console_input.cpp shows how to use ReactorEx to get notified when input shows up on the console. Thu Aug 28 18:07:37 1997 Darrell Brunsch * ace/Timer_{List,Heap,Wheel,Hash}_T.cpp: Changed the behavior of the iterator to automatically initialize when the iterator is constructed. Thu Aug 28 10:43:35 1997 David L. Levine * ace/Task.{h,cpp} (ACE_Task_Exit::instance) added call to ACE_Object_Manager::at_exit () to clean up the singleton at program termination. Thu Aug 28 03:25:52 1997 Nanbor Wang * tests/Task_Test.cpp (Barrier_Task): * tests/TSS_Test.cpp (main): Added an array to collect thread handles in order to clean them up. Thanks to Ivan Murphy for pointing this out. * ace/Thread_Manager.{h,cpp} (spawn_n): * ace/Task.{h,cpp} (activate): Added an extra argument ACE_hthread_t thread_handles[] with default value 0. We need this argument to collect handles of spwaned/activated threads. On NT, we have to join terminated threads explicitly to prevent handles leak. Thanks to Ivan Murphy for digging this out. Wed Aug 27 10:48:25 1997 Douglas C. Schmidt * ace: Changed all occurrences of ACE_LACKS_RLIMIT_PROTO to ACE_LACKS_RLIMIT_PROTOTYPE, ACE_LACKS_POSIX_PROTO to ACE_LACKS_POSIX_PROTOTYPES, and ACE_LACKS_SYSV_MSQ_PROTOS to ACE_LACKS_SYSV_MSQ_PROTOTYPES to be more consistent. * ace/config-sunos5.x*.h: Added ACE_HAS_UALARM to all the Solaris config files. However, also had to add ACE_LACKS_UALARM_PROTOTYPE since Solaris strangely doesn't provide this prototype. * ace/OS.h: Added an ACE_Time_Value version of ACE_OS::ualarm(). * ace/Signal: Added a new constructor for ACE_Sig_Action that takes an ACE_Sig_Set parameter. * ace/Signal: Added a sigset() accessor method. * ace/config-unixware-2.1.2-g++.h: Added ACE_HAS_UALARM. Thanks to Ganesh Pai for reporting this. * ace/OS.h: Added a default value of 0 to ACE_OS::time(). * ace/Synch.i (ACE_Thread_Mutex_Guard): Rearranged the code so that we can inline the acquire(), tryacquire(), and release() methods properly. Thanks to David Levine for pointing this out. * ace/OS.h: Added ACE_OS support for the ualarm() method. If your platform supports ualarm() please send me email so I can set the ACE_HAS_UALARM flag in your config.h file. * tests/Makefile: Added an asynchronous timer queue test. * examples/IOStream/server/iostream_server.cpp: Added a new macro to work around the fact that some C++ compiles don't grok template typedefs. Thanks to Oleg Krivosheev for pointing this out. * ace/OS, ace/Task.cpp: Installed a bunch of patches for FSU pthreads. Thanks to Arturo Montes for sending this. * Makefile: Added a line to the release script that will automatically generate an ACE-INSTALL text file from the ACE-INSTALL.html file. Thanks to Oleg Krivosheev for suggesting this. * performance-tests/Misc/Makefile: Added $(BIN) to the FILE target so that "make depend" will work. Thanks to David Levine for pointing this out. * ace/Synch.i: Eliminated unnecessary assignment to this->owner_. Thanks to Chris for pointing this out. * ace/OS.i (msgctl): Added a "struct" to the definition of msqid_ds. Thanks to Steve Hickman for reporting this. Thu Aug 28 01:07:21 1997 * examples/Reactor/ReactorEx/test_directory_changes.cpp: Added a new example application. This application tests the working of ReactorEx when users are interested in changes in the filesystem. Wed Aug 27 22:06:23 1997 Nanbor Wang * *.{mak,mdp,dsw,dsp}: Updated ACE's library names on Win32 as below. Only Microsoft's Win95 and Windows NT are effected. Version Dynamic Library Static Livrary ------------------ -------------------- ----------------- Debug aced.lib, aced.dll acesd.lib Release ace.lib, ace.dll aces.lib Debug w/ UNICODE aceud.lib, aceud.dll acesud.lib Release w/ UNICODE aceu.lib, aceu.dll acesu.lib Thanks to John Morey for suggesting this and Darrell for updating VC 5.0's makefiles. * ace/config-freebsd[-pthread].h (ACE_HAS_UALARM): FreeBSD does has ualarm. Wed Aug 27 10:52:59 1997 Chris Cleeland * ace/Synch_T.h (CTOR): Eliminated unnecessary assignment to this->owner_. Wed Aug 27 09:32:57 1997 David L. Levine * ace/Singleton.cpp (instance): removed full qualification of "instance_" in ACE_NEW_RETURN macro, because it confused the Sun C++ 4.2 preprocessor. * ace/Singleton.cpp: added support for ACE_HAS_SIG_C_FUNC platforms, e.g., on MVS. At least I tried to. The cleanup function, on ACE_HAS_SIG_C_FUNC platforms only, doesn't call the object's destructor. It just deallocates the storage. That should be good enough; I don't think it's worth trying to do more than that. * ace/Synch.cpp (close_singleton): removed call to ACE_Allocator::close_singleton (), because this method is only called if ACE_HAS_THREADS. * ace/Object_Manager.cpp (dtor): added call to ACE_Allocater::close_singleton (), and protected call to ACE_Static_Object_Lock::close_singleton () with ACE_HAS_THREADS. * tests/Time_Value_Test.cpp: disabled ACE_U_LongLong test on ACE_WIN32 platforms, because that class is never used there. Thanks to Nanbor for finding this. * performance-tests/Misc/preempt.cpp,Makefile: added preempt test, which tests for thread preemption. Tue Aug 26 13:59:01 1997 Douglas C. Schmidt * netsvcs/lib/Server_Logging_Handler_T.cpp: Changed the symbol "SS" to "SST" to avoid a namespace collision with UnixWare. Thanks to Ganesh Pai for pointing this out. * ace: Added a new config file to sco using FSU pthreads. Thanks to Arturo Montes for sending this. * include/makeinclude: Added a new platform macros file to sco using FSU pthreads. Thanks to Arturo Montes for sending this. Tue Aug 26 22:06:14 1997 * examples/Reactor/ReactorEx: Added two new applications for testing some of the new features of ReactorEx. Added documentation and renamed some of the older test files to make it easier to comprehend the examples. Tue Aug 26 11:47:29 1997 * ace/OS.i (mutex_trylock): Changed this method to make it deal correctly with abandoned mutexes. Also added a new mutex_trylock method that allows the user to know if the mutex was abandoned (through an extra out parameter). Also fixed ACE_OS::cond_timedwait(), ACE_OS::cond_wait(), ACE_OS::event_wait(), ACE_OS::event_timedwait() and ACE_OS::sema_wait() to remove extra checks for WAIT_ABANDONED, since we are not dealing with mutexes in these methods. Thanks to Ivan Murphy for pointing this out. Tue Aug 26 11:06:45 1997 David L. Levine * ace/OS.h,config-vxworks5.x-g++.h: split ACE_HAS_RENAMED_MAIN into ACE_MAIN and ACE_HAS_NONSTATIC_OBJECT_MANAGER. * ace/ACE.cpp: only create the ACE_Object_Manager_Destroyer if not ACE_HAS_NONSTATIC_OBJECT_MANAGER. * ace/Object_Manager.{h,cpp}: dynamically allocated the contained ACE_Unbounded_Queue to so that it can be deallocated before the ACE_Allocator is destroyed. * ace/Singleton.{h,cpp}: register all ACE_Singletons for cleanup with the ACE_Object_Manager. * ace/Synch.{h,cpp}: renamed ACE_Static_Object_Lock::atexit () to close_singleton (), and removed the unused atexit hook. * ace/Log_Msg.cpp (ACE_Log_Msg_Manager::close): delete the main thread's Log_Msg. * ace/config-vxworks-ghs-1.8.h: added ACE_HAS_NONSTATIC_OBJECT_MANAGER. * tests/Time_Value_Test.cpp: added tests of ACE_U_LongLong. * tests/Atomic_Op_Test.cpp (main): added arguments to main (). * tests/Barrier_Test.cpp (main): delete thread_handles array to prevent memory leak. * examples/Reactor/Misc/test_signals_2.cpp (main): changed type of second arg from "char *" to "char *[]". Mon Aug 25 14:13:57 1997 Carlos O'Ryan * ace/OS.h: Changed the return type of sendmsg_timedwait from sszie_t to ssize_t, this should only affect platforms where ACE_LACKS_TIMEDWAIT_PROTOTYPES, further it was definitely wrong before. Thanks to ARTURO MONTES for pointing out this one. Mon Aug 25 10:15:06 1997 David L. Levine * ace/Message_Queue.cpp (notify): fixed ACE_TRACE message. * examples/ASX/UPIPE_Event_Server/event_server.cpp, examples/Connection/misc/test_upipe.cpp, examples/Connection/non_blocking/test_*.cpp, examples/IPC_SAP/SOCK_SAP/CPP-inserver-poll.cpp, examples/IPC_SAP/SOCK_SAP/FD-unserver.cpp, examples/Misc/test_dump.cpp, examples/Reactor/FIFO/client.cpp, examples/Reactor/Misc/test_*.cpp, examples/Reactor/Proactor/test_multiple_loops.cpp, examples/Reactor/Proactor/test_timeout.cpp, examples/Reactor/ReactorEx/test_timeout.cpp, examples/Reactor/ReactorEx/test_exceptions.cpp, examples/Service_Configurator/IPC-tests/client/local_spipe_client_test.cpp, examples/Service_Configurator/IPC-tests/client/remote_thr_stream_client_test.cpp, examples/Shared_Malloc/test_multiple_mallocs.cpp, examples/System_V_IPC/SV_Message_Queues/*MQ_*.cpp, examples/System_V_IPC/SV_Semaphores/Semaphores_?.cpp, examples/Threads/process_mutex.cpp, examples/Threads/recursive_mutex.cpp, examples/Threads/tss1.cpp, examples/Threads/thread_specific.cpp, examples/Threads/token.cpp, examples/Threads/wfmo.cpp, tests/Simple_Message_Block_Test.cpp, tests/Hash_Map_Manager_Test.cpp: added arguments to main () to support redeclaring it on VxWorks. From now on, we should always declare main () with arguments, e.g., int main (int, char *[]) Sun Aug 24 10:27:33 1997 Douglas C. Schmidt * tests/Future_Test.cpp (Scheduler): Removed the non-existent friend class Method_ObjectWork. Thanks to Sandro Doro for reporting this problem. * ace/Message_Block.h: Clarified in the comments that the length() of a Message_Block is 0 until the wr_ptr() is explicitly set. Thanks to Amos Shapira for pointing out the need for this. Sat Aug 23 14:43:27 1997 Douglas C. Schmidt * ACE version 4.3, released Sat Aug 23 14:43:27 1997. Sat Aug 23 14:40:32 1997 Douglas C. Schmidt * Released the long-awaited ACE 4.3. Good night sweet prince: And flights of angels sing thee to thy rest. Sat Aug 23 00:44:09 1997 Douglas C. Schmidt * netsvcs/lib/Server_Logging_Handler.cpp: Make sure that we explicitly instantiate ACE_Svc_Handler whether or not we're building with threads since otherwise we get link errors. Fri Aug 22 20:58:49 1997 Nanbor Wang * ace/OS.cpp (ACE_TSS_Cleanup): Changed the lock for ACE_TSS_Cleanup from a static object to a singleton to avoid the nasty detruction order problem. This only effects Win32. * ace/Synch.{h,cpp}: Added a new singleton lock "ACE_TSS_Cleanup_Lock" for Win32 platform. This object is expect to be put under ACE_Object_Manager's control and will probably gone/changed in the near future. Fri Aug 22 18:48:17 1997 Carlos O'Ryan * ACE-install.sh: I updated the information on IRIX. Now we know for a fact it compiles on IRIX 6.x, but we are not certain on IRIX 5.X. * bin/auto_compile_wrapper: I have tried to make it clear that auto_compile_wrapper must be tailored on each site. The email address is invalid and the script should just crash the * ace/OS.i (cond_timedwait): It used to always dereference the timeout parameter, which could be 0 (heading for a Sthreads use timestruc_t instead of timespec_t, thanks to Ganesh Pai for pointing out this one and to Steve Huston for explaining to us what was going on. Fri Aug 22 08:46:39 1997 David L. Levine * include/makeinclude/platform_vxworks*.GNU: unset SHLIB to fix builds without PRELIB. * netsvcs/lib/Logging_Strategy.cpp, examples/Threads/task_three.cpp: include fstream.h and iostream.h if ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION. * examples/ASX/UPIPE_Event_Server/event_server.cpp, examples/Log_Msg/test_log_msg.cpp, examples/Reactor/Misc/test_time_value.cpp, examples/Logger/Accepter-server/server_loggerd.cpp: #include iostream.h if ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION. * examples/ASX/UPIPE_Event_Server/Peer_Router.cpp (svc): replaced an iostream printout with an ACE_DEBUG call. * examples/Misc/test_read_buffer.cpp, test_dump.cpp, Mem_Map/IO-tests/test_io.cpp: replaced bare OS calls with ACE_OS calls. * examples/Reactor/Misc/notification.cpp (Thread_Handler): added cast of svc_run to ACE_THR_FUNC. Thu Aug 21 22:38:19 1997 Carlos O'Ryan * bin/auto_compile: This tool will checkout ACE_wrapper from CVS, use bin/create_ace_build to update a clone directory, compile ace and tests in that clone directory and then run run_tests.sh. If there is any problem it will report it to email. * bin/auto_compile_wrapper: The former needs some configuration information and a proper enviroment, hence it may not be invoked directly from your crontab. This tool is used for that purpose. * apps/Gateway/Gateway/Makefile: * apps/JAWS/server/Makefile: * examples/Connection/non_blocking/Makefile: * examples/IPC_SAP/DEV_SAP/reader/Makefile: * examples/IPC_SAP/DEV_SAP/writer/Makefile: * examples/Service_Configurator/IPC-tests/server/Makefile: * netsvcs/clients/Naming/Client/Makefile: * netsvcs/clients/Naming/Dump_Restore/Makefile: * performance-tests/Synch-Benchmarks/Makefile: No need to defines LIBS=-lACE here, it is already done in wrapper_macros.GNU. Thanks to Cary Clark for pointing out this one. * bin/create_ace_build: New flag -a to create all symlinks using absolute paths, it helps when the build directory is a symlink too. * include/makeinclude/platform_irix6.x-sgic++.GNU: ACE now compiles with little or no warnings, I kept the linker warnings deactivated though. -ptall does not work any more. I added a comment on that. * ace/OS.h: * apps/Gateway/Gateway/Concrete_Proxy_Handlers.cpp: * apps/JAWS/clients/Blobby/Blob_Handler.cpp: * apps/JAWS/server/HTTP_Server.cpp: * examples/ASX/UPIPE_Event_Server/Peer_Router.cpp: * examples/IPC_SAP/SPIPE_SAP/NPServer.cpp: * examples/IPC_SAP/SPIPE_SAP/producer_read.cpp: * examples/Reactor/Dgram/CODgram.cpp: * examples/Reactor/Dgram/Dgram.cpp: * examples/Reactor/Misc/test_demuxing.cpp: * examples/Reactor/Misc/test_reactors.cpp: * examples/Reactor/Misc/test_signals_2.cpp: * examples/Threads/barrier2.cpp: * examples/Threads/process_manager.cpp: * examples/Threads/task_three.cpp: * netsvcs/clients/Naming/Dump_Restore/Dump_Restore.cpp: * netsvcs/clients/Tokens/collection/collection.cpp: * netsvcs/clients/Tokens/mutex/test_mutex.cpp: * performance-tests/Misc/childbirth_time.cpp: * tests/Reactor_Exceptions_Test.cpp: * tests/Reactors_Test.cpp: * tests/SOCK_Test.cpp: New macro ACE_NOTREACHED. Some compilers will issue warnings on unreached statements with things like: int foo() { if (bar) { return 0; } else { return 1; } return 0; // warning here } but if we remove the last return some other compiler will issue warnings on leaving the function with no return value. This macro tries to deal with that, all we have to do is to write the last line like: int foo() { if (bar) { return 0; } else { return 1; } ACE_NOTREACHED(return 0); // No warning now!!! } IMHO it also serves as a form of documentation. Thu Aug 21 21:00:35 1997 * ace/Auto_Ptr: Changed auto_ptr implementation to be as close to the C++ specification as possible. Things that are still missing are: (a) std namespace (b) member templates implementations (c) making the constructors explicit * ace/OS.h (ACE_BIT_STRICTLY_ENABLED): Added new macro to check if a bit is strictly enabled in a word. This is necessary when the bit would be a combination of bits, and therefore, just comparing against != 0 (like ACE_BIT_ENABLED does) is not enough and comparing == BIT is necessary. Thu Aug 21 19:28:28 1997 James C Hu * include/makeinclude/rules.local.GNU (depend.local): If TAO_ROOT is not set, don't try using it in sed. * bin/g++dep: Check the existence of the TAO_ROOT environment variable before adding it to the relative pathname replacement strategy. Thu Aug 21 16:29:02 1997 David L. Levine * ace/OS.h: added THR_JOINABLE and THR_SCHED_FIFO/RR/DEFAULT to STHREADS, WTHREADS, and non-threaded platforms. On VxWorks only, set NSIG to _NSIGS + 1. * ace/config-vxworks*.h: removed ACE_HAS_POSIX_SEM now that we emulate it for VxWorks. * tests/Priority_Task_Test.cpp: use THR_SCHED_FIFO unconditionally now that it's defined on all platforms. * include/makeinclude/platform_chorus.GNU, platform_hpux_gcc.GNU, platform_linux*.GNU, platform_m88k.GNU, platform_osf1_4.0_g++.GNU, platform_sco*.GNU, platform_sunos*_g++.GNU, platform_unixware_g++.GNU, g++ only: replaced PRELIB with "true" because it's not needed for template instantiation. The old PRELIB no longer worked without -lACE being added to LIBS in individual Makfiles. The only reason to leave PRELIB defined to something is so that the shared object definitions will be correct in rules.lib.GNU. That should be fixed after 4.3 is released. * include/makeinclude/platform_vxworks5.x_ghs.GNU: PRELIB no longer needed with explicit template instantiation. Thu Aug 21 12:38:26 1997 Steve Huston * ace/config-hpux-10.x.h: Removed extraneous #endif Thu Aug 21 12:21:16 1997 Nanbor Wang * ace/OS.h (THR_JOINABLE): Defined this macro for Win32 as 0. Wed Aug 20 22:36:52 1997 Douglas C. Schmidt * ACE version 4.2.44, released Wed Aug 20 22:36:52 1997. Wed Aug 20 18:28:28 1997 Steve Huston * ace/config-hpux-10.x.h: Made some definitions dependent on the HP-UX version that is compiling the code. * ace/Filecache.(cpp h): Moved the definition of ACE_Filecache_Object from .cpp to .h to help AIX xlC's template instantiator along. * apps/Gateway/Peer/Peer.(cpp h): Moved the definition of Peer_Handler from .cpp to .h to help AIX xlC's template instantiator along. * include/makeinclude/platform_(hpux hpux_aCC hpux_gcc).GNU: Added a compiler option to define HPUX_VERS with the current OS version. Used in the config-hpux-10.x.h file. Wed Aug 20 13:44:16 1997 Carlos O'Ryan * ace/config-unixware-2.1.2-g++.h: Unixware does not define timespec_t. Thanks to Ganesh Pai for pointing out this one. Wed Aug 20 11:37:44 1997 David L. Levine * include/makeinclude/rules.bin.GNU,platform_vxworks5.x_g++.GNU: added POSTLINK to build symbol table. Wed Aug 20 07:43:14 1997 Douglas C. Schmidt * ACE version 4.2.43, released Wed Aug 20 07:43:14 1997. Tue Aug 19 08:25:28 1997 Steve Huston * tests/Barrier_Test.cpp: Added THR_JOINABLE to the flags for creating threads - allows join to work on platforms that create threads detached by default (i.e. AIX). * tests/Process_Strategy_Test.cpp: If the final ACE_OS::kill() fails, don't ACE_OS::wait() for the process. * ace/config-aix-4.2.x.h: Added ACE_HAS_BROKEN_POSIX_TIME. Commented out ACE_HAS_AIX_BROKEN_SOCKET_HEADER. Added ACE_HAS_PTHREAD_T, and will now not use tid_t for any ACE types. Rearranged things to start clarifying items. * ace/config-hpux-10.x.h: Removed ACE_HAS_SETKIND_NP and adjusted other, more meaningful, threads-related definitions to match what HP 10.10 and 10.20 have for threads. This matches changes to OS.* * ace/OS.(h i cpp): Removed use of ACE_SETKIND_NP in an effort to simplify the variety of threads-capability definitions. The only platforms which used ACE_HAS_SETKIND_NP were HP-UX (see above) and OSF/1 V3.2 (which has the same threads package as HP-UX). OSF/1 V3.2 may require some adjustments per this change - it probably should be changed to match HP-UX. OSF/1 V4 (aka Digital UNIX) is not affected by this change. * ace/Log_Msg.cpp: Changed the 't' format (thread ID) to call thread_self() directly on AIX. Mon Aug 18 21:39:33 1997 Douglas C. Schmidt * ACE version 4.2.42, released Mon Aug 18 21:39:33 1997. Mon Aug 18 20:22:14 1997 Carlos O'Ryan * apps/Gateway/Peer/Makefile: No need to define LIBS=-lACE here, its already done in wrapper_macros.GNU. Thanks to Cary Clark for helping in this effort. Mon Aug 18 19:54:36 1997 Nanbor Wang * ace/OS.{h,i} (open, mutex_init, sema_init, event_init, mmap): Added an extra argument LPSECURITY_ATTRIBUTE with default value 0 to all these methods so that we can modify objects' security attributes when needed. Thanks to Ivan Murphy for pointing this out. Mon Aug 18 19:50:13 1997 Carlos O'Ryan * examples/Service_Configurator/Makefile: * examples/Service_Configurator/IPC-tests/server/Makefile: * apps/Gateway/Gateway/Makefile: * examples/Connection/non_blocking/Makefile: $(SOEXT) must be used instead of just .so, the former does not work on all platforms, notably HP-UX. Thanks to Cary Clark for helping in this effort. Mon Aug 18 19:46:27 1997 Carlos O'Ryan * ace/OS.i: Added support for the missing netdb reentrant functions, even under IRIX 6.2 with no threads. Thanks Paul Roman for reporting this. Mon Aug 18 12:53:16 1997 David Levine * tests/Barrier_Test.cpp (tester): VxWorks doesn't support thr_join(). Therefore, we need to work around it for now. Maybe Wind River will fix it at some point. Mon Aug 18 12:38:52 1997 Steve Huston * ace/config-aix-4.2.x.h: Removed ACE_HAS_SVR4_TIME, added ACE_LACKS_TIMESPEC_T. Mon Aug 18 12:00:31 1997 Carlos O'Ryan * ace/config-mvs.h: MVS does not define timespec_t either. Thanks to Chuck Gehr for reporting this. Mon Aug 18 10:41:05 1997 Carlos O'Ryan * ace/OS.h: * ace/README: On some platforms timespec_t is not defined. We added a new config macro (ACE_LACKS_TIMESPEC_T) to handle that and we do a typedef to solve the problem. * ace/config-freebsd-pthread.h: * ace/config-freebsd.h: * ace/config-linux-lxpthreads.h: * ace/config-linux-pthread.h: * ace/config-linux.h: These are *some* config files that needed changes due to the new timespec_t stuff. Mon Aug 18 09:34:11 1997 David L. Levine * ace/OS.cpp (ACE_Thread_Adapter): rearranged initializers to match declaration order. * ace/Log_Record.h: declare "class ostream" if ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION Log_Record.h. * ace/IOStream.h,Log_Msg.cpp,Log_Record.cpp, tests/test_config.h: include iostream.h instead of ace/stdcpp.h if ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION. * ace/config-vxworks*.h: added ACE_LACKS_TIMESPEC_T. Sun Aug 17 20:58:56 1997 Douglas C. Schmidt * ACE version 4.2.41, released Sun Aug 17 20:58:56 1997. Sun Aug 17 17:02:53 1997 Carlos O'Ryan * ace/config-irix6.x-sgic++-nothreads.h: * ace/config-irix6.x-sgic++.h: * include/makeinclude/platform_irix6.x-sgic++.GNU: Finally a single config.h and platform_macros.GNU file can be use for all the IRIX 6.X versions. On SGI machines we need a higher value for ACE_DEFAULT_BASE_ADDR, we used 1024*1024*1024, which works on our site, but your mileage may vary. * include/makeinclude/platform_irix6.2_sgic++.GNU: * include/makeinclude/platform_irix6.4_sgic++.GNU: * ace/config-irix6.2-sgic++-nothreads.h: * ace/config-irix6.2-sgic++.h: * ace/config-irix6.4-sgic++-nothreads.h: * ace/config-irix6.4-sgic++.h: These files are no longer needed, see above. * ace/README: * ace/ACE.cpp: * ace/OS.h: * ace/OS.i: * ace/Profile_Timer.cpp: * ace/Profile_Timer.h: We no longer use timestruct_t in ACE, it is a SYSVism; we use timespec_t instead. Hence we have no need for the config macro ACE_HAS_SVR4_TIME, but we keep it there for future reference. * tests/Reader_Writer_Test.cpp: On IRIX using ACE_Thread::yield() degraded performance for multiprocessor machines, but worse, the test will not behave as expected: instead of interleaving read/write locks over the RW_Mutex it will make all the write locks first and then the read locks. The test uses ACE_OS::sleep() for yielding the CPU, and it uses different pauses for each thread (see code for details). Further, it yields the CPU *before* taking the lock, to give other threads a chance. Sat Aug 16 18:17:10 1997 Douglas C. Schmidt * ACE version 4.2.40, released Sat Aug 16 18:17:10 1997. Sat Aug 16 18:13:22 1997 Douglas C. Schmidt * ace/ReactorEx.cpp (add_network_events_i): Revised the code to use the ACE_BIT_CMP_MASK and ACE_SET_BITS macros to simplify the code. * ace/OS.h: Added a new macro called ACE_BIT_CMP_MASK which checks if a "bit-wise" & with a word == a particular mask. * ace/OS.cpp (thr_create): If we're in the Pthreads implementation then we assume that ACE_thread_t and ACE_hthread_t are the same. If this *isn't* correct on some platform, please let us know. Thanks to Carlos O'Ryan . * ace/Auto_Ptr.cpp: Reverted the changes of ACE_Auto_Ptr to auto_ptr since we want to be Standard C++ Library compliant. However, we only define auto_ptr if ACE_HAS_STANDARD_CPP_LIBRARY is *not* enabled. * Removed the INSTALL file since this is redundant with the HTML version of this file (ACE-INSTALL.html). Thanks to David Levine for doing the legwork to merge this. Sat Aug 16 15:11:24 1997 Darrell Brunsch * ace/Auto_Ptr.h: Put in an #include (for auto_ptr) if the standard C++ library is being used. * ace/Auto_Ptr.*: Changed the checks for ACE_HAS_STANDARD_CPP_LIBRARY to also check to see if it is defined to 0 (which means the same as it not being defined). * ace/ReactorEx.cpp: Changed the use of auto_ptr to work with the one in the Standard C++ library. * ace/config-win32-common.h: Added ACE_HAS_BROKEN_NESTED_TEMPLATES and ACE_LACKS_STL_DEFAULT_TEMPLATE_PARAMETER for the MSVC versions that need them. * ace/Registry.cpp: changed some variable names from iterator to iter to prevent conflicts with another variable * ace/Registry.cpp: STL/bstring.h: Changed references of NPOS to Istring::npos Sat Aug 16 14:17:07 1997 Carlos O'Ryan * ace/Auto_Ptr.i: * ace/Auto_Ptr.cpp: Some code was only included if ACE_HAS_STANDARD_CPP_LIBRARY was defined; but the intention was exactly the opposite. Sat Aug 16 14:33:26 1997 David L. Levine * README,FAQ,Makefile: changed references from INSTALL file to ACE-INSTALL.html. Fri Aug 15 19:51:52 1997 * ace/Auto_Ptr.h: A rarely used piece of ACE code has changed names because of name conflicts with the Microsoft Standard C++ Library. The change is from auto_ptr to ACE_Auto_Ptr. A perl script ($ACE_ROOT/bin/auto_ptr.perl) is provided for users to change their code accordingly. The following files were effected: ace: ACE.cpp Auto_Ptr.cpp Auto_Ptr.h Auto_Ptr.i OS.h ReactorEx.cpp Service_Config.cpp Service_Object.h examples/Threads: future1.cpp future2.cpp test_future1.cpp test_future2.cpp tests: Future_Test.cpp Fri Aug 15 17:41:28 1997 Douglas C. Schmidt * ACE version 4.2.39, released Fri Aug 15 17:41:28 1997. Fri Aug 15 13:33:04 1997 Nanbor Wang * ace/OS.h (ACE_DEFAULT_GLOBALNAME_W): Moved pathname delimiter from ACE_DEFAULT_{LOCAL|GLOBAL}NAME_* to ACE_DEFUALT_NAMESPACE_DIR on NT. We need to append local/global name to get a unique mutex name for naming service. NT won't let us put a backslash in lock name. ;( Fri Aug 15 14:50:26 1997 Steve Huston * ace/Makefile: Moved ARGV from the TEMPLATES section to the FILES section; now builds on AIX. * ace/config-hpux-10.x.h: Don't redefine _HPUX_SOURCE. Move the ACE_HAS_REENTRANT_FUNCTIONS and ACE_CTIME_R_RETURNS_INT to the build-with-threads section. Thanks to Neil Cohen for helping to flush these problems out. * tests/Makefile: If building on AIX, wipe out the tempinc directory before each compilation to keep the driver from compiling all prior programs' template instantiations in every link step. Fri Aug 15 13:07:26 1997 Douglas C. Schmidt * ace/Signal.cpp (remove_handler): Added some additional parameters to ACE_Sig_Action usages in order to get this stuff to compile with G++ on SunOS 4.1.4. Thanks to Kumar Neelakantan for reporting this. * ACE version 4.2.38, released Thu Aug 14 23:07:26 1997. Fri Aug 15 13:33:04 1997 Nanbor Wang * ace/Naming_Context.cpp (ACE_Naming_Context): Moved the deletion of name_options_ from close to dtor of this class so that we can reconfigure the naming context. Fri Aug 15 10:28:14 1997 Darrell Brunsch * ace/OS.cpp: Changed uname() for Win32 so it returns information for Windows 95 and NT. Thu Aug 14 18:06:37 1997 Chris Cleeland * ace/OS.[hi] (strsplit_r): Added a new method which splits a string separated by tokens, similar to the way that perl's split() works. This is different from the strtok() family b/c for the string ":/foo:/bar::boo", strtok() would return "/foo", "/bar", "boo", while strsplit_r() returns "", "/foo", "/bar", "", "boo". This method is also properly re-entrant, and thus safe to use among multiple threads. * ace/ACE.cpp (ldfind): Fixed this so that it now properly deals with paths containing empty components intended to indicate 'current directory'. Thu Aug 14 17:30:36 1997 Steve Huston * ace/config-hpux-10.x.h - Add ACE_LACKS_CONST_STRBUF_PTR, remove ACE_HAS_POSIX_SEM, clarify comments regarding setting of _CMA_NOWRAPPERS_ - thanks to Cary Clark for helping in this effort. Thu Aug 14 16:14:47 1997 David L. Levine * ace/High_Res_Timer.cpp (print_ave,print_total): fixed format specification for total_secs to be lu instead of lld. Thu Aug 14 14:06:37 1997 Chris Cleeland * ace/ARGV.cpp: Completed the explicit template instantiations for this component. Thu Aug 14 11:27:03 1997 Edward Everett Anderson * ace/ARGV.* (argv): * Added another behavior to ACE_ARGV -- a user can iteratively build the parameter set with add(). Made the class more consistent so that accessors work no matter which constructor is used. Thu Aug 14 10:14:37 1997 Darrell Brunsch * Made several changes to allow ACE to work with the new standard C++ header files, such as and the built in STL. Thanks to Matthias Kerkhoff for these changes. The default is to use the old headers, unless the ACE_HAS_STANDARD_CPP_LIBRARY is defined as 1. * ace/config-win32-common.h: ace/config-win32.h: - Added ACE_USES_STD_NAMESPACE_FOR_STDCPP_LIB flag to distinguish compilers who have the standard C++ library declared in the namespace std and those who use the global namespace for it - Enabled ACE_HAS_SIG_ATOMIC_T and ACE_HAS_TYPENAME_KEYWORD for MSVC 5 - Changed the semantics of ACE_HAS_STANDARD_CPP_LIBRARY from [defined/undefined] to [(undefined or defined as 0)/defined != 0] to allow the choice between the old iostream and standard C++ library for those platforms that support both - Don't define the ACE_LACKS_IOSTREAM_FX when building with MSVC 5.0 and the standard C++ library. - If __ACE_INLINE__ is defined as 0, config-win32-common.h undefines __ACE_INLINE__ to decrease the size of libraries and executables. * ace/IOStream.cpp: Moved the #ifdef ACE_LACKS_ACE_IOSTREAM up to the proper place * ace/IOStream.h: ace/IOStream_T.h: ace/Log_Msg.cpp: ace/Log_Msg.h: ace/Log_Record.cpp: ace/Log_Record.h: examples/ASX/Message_Queue/*.dsp: examples/OS/Process/*.dsp: examples/Threads/*.dsp: examples/Threads/barrier2.cpp: examples/Threads/task_three.cpp: netsvcs/lib/Logging_Strategy.cpp: Updated to including stdcpp.h instead of , , , etc. * ace/OS.h: Updated to use stdcpp.h instead of including the normal C headers. Moved the includes into stdcpp.h to allow switching between the old and new versions * ace/Registry.h: Changed to use the standard C++ headers for STL and added a typedef Name_Component and Binding to ACE_Registry::* to help some unresolved problems. * tests/Hash_Map_Manager_Test.cpp: tests/test_config.h: Updated to #include ace/stdcpp.h instead of and * ace/stdcpp.h: Updated to include more of the new standard C++ header files, and also promote some of the iostream classes to the global namespace. * ace/ace.dsp: - Added some folders like Templates and Documentation - Added some files that were missing to the project - Enabled function level linking for debug projects - Set it to "Not using MFC" - Removed wsock32.lib from the project settings (since config-win32-common.h will tell the linker to use the correct winsock library) - Removed some other unnecessary libraries (OLE) from the project. Wed Aug 13 23:02:45 1997 Douglas C. Schmidt * ACE version 4.2.37, released Wed Aug 13 23:02:45 1997. Wed Aug 13 13:26:27 1997 Douglas C. Schmidt * tests/Barrier_Test.cpp (main): Fixed the test of the ACE_Barrier class so that it doesn't leak handles. This also illustrates the use of the ACE_Thread::join() and ACE_Thread_Manager::spawn_n() methods. Thanks to Ivan Murphy for pointing this out. * ace/Thread_Manager.cpp (spawn_n): Note that if we get a null thread_ids parameter we shouldn't try to index into it! * include/makeinclude/rules.local.GNU (OBJDIRS): Added so_locations to the list of directories cleaned up during a make clean/realclean. Thanks to Amos Shapira for reporting this. * ACE version 4.2.36, released Wed Aug 13 07:30:10 1997. * include/makeinclude/platform_irix6.[x-]32_sgic++.GNU: Added a -Wl,-woff,133 to LDFLAGS to make the linker shutup about branch instructions that might degrade performance (what does this mean?). Thanks to Amos for this. * tests/test_config.h: Fixed a typo (ourput_file() should be output_file()). How on earth did this ever work?! Thanks to Amos Shapira for reporting this. * ace/Message_Queue.cpp: Added a couple of new ACE_UNUSED_ARGs Thanks to Amos Shapira for reporting this. * ace/OS.cpp (gethrtime): ACE_OS::gethrtime should cast its return value to ACE_hrtime_t instead of (u_long long). Thanks to Amos Shapira for reporting this. Wed Aug 13 14:51:47 1997 Darrell Brunsch * ace/SString.[i,cpp]: moved some inline methods from the .i into the .cpp so the Win32 Unicode Release compiles with inlining. Wed Aug 13 01:14:08 1997 Nanbor Wang * tests/test_config.h (ACE_NEW_THREAD): Removed ACE_Log_Msg::set_flags/clr_flags from this macro because ACE_Log_Msg::flags is a static variable. We really don't need to reset them when creating new threads. Once VxWorks can also inherit ACE_Log_Msg's properties, we no longer need this macro. * ace/Log_Msg.h: Added trace_depth() functions. They are required for inheriting ACE_Log_Msg's properties. * ace/OS.cpp: Changed ACE_Thread_Adapter implementation so that newly created threads will inherit properties from their parent threads. This is the default behavior and is valid on all platform except VxWorks. If you don't want it and would like to arrange the properties propagation yourself, you must define ACE_THREADS_DONT_INHERIT_LOG_MSG in your ace/config.h file. Now, creating a new thread will go thru ace_thread_adapter on all platform except VxWorks. If ACE_THREADS_DONT_INHERIT_LOG_MSG is defined but your platform defines ACE_HAS_THR_C_FUNC or ACE_WIN32, creating new threads still need to use ace_thread_adapter. This change also fixes a previous problem which let threads access another thread's TSS. Tue Aug 12 21:57:30 1997 David L. Levine * etc/ACE-guidelines.html: added. Tue Aug 12 16:54:33 1997 Douglas C. Schmidt * Added Chuck Gehr's explanation of how to build ACE for MVS to the ACE-INSTALL.html file at http://www.cs.wustl.edu/~schmidt/. * ace/OS.i: changed the name of ACE_U_LongLong::dump() to ACE_U_LongLong::output(). Also moved some of the code that was inlined in the class definition into the *.i file. * netsvcs/lib/Server_Logging_Handler.cpp: Added a template specialization for ACE_Atomic_Op to make things link with SGI and other systems that have long different than int. Thanks to Amos Shapira for reporting this. * ace/Reactor.cpp (close): Removed the #ifdefs around notify_handler_.open () and notify_handler_.close() since this is now supposed to be available on all build configurations. Thansk to Stefan Ericsson for reporting this. * examples/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.cpp: Removed a static variable that seemed to be causing problems for SGI C++. Also, removed the now unnecessary "inherited" from Handle_Thr_Acceptor. * examples/ASX/UPIPE_Event_Server/Peer_Router.h, * netsvcs/lib/Log_Message_Receiver.h: Added an ACE_UNIMPLEMENTED_FUNC macro for the assignment operator to work around silly "features" of SGI C++... * include/makeinclude/platform_irix6.[x-]32_sgic++.GNU: Added some additional patches to suppress warning code. Thanks to Torbjorn Lindgren for this fix. * include/makeinclude/platform_mvs.GNU: Changed all occurrences of "MVSLIB" to "ACELIB". Thanks to Chuck Gehr for reporting this. Tue Aug 12 15:03:42 1997 Steve Huston * ace/Timer_Hash_T.cpp, Timer_Wheel_T.cpp: Replaced references to ACE_High_Res_Timer::gettimeofday with ACE_OS::gettimeofday. The High Res version is deprecated, and doesn't work correctly on HP-UX. Tue Aug 12 07:51:02 1997 Douglas C. Schmidt * ACE version 4.2.35, released Tue Aug 12 07:51:02 1997. Mon Aug 11 22:30:39 1997 David L. Levine * include/makeinclude/platform_vxworks5.x_ghs.GNU: disabled automatic template instantiation, because we use explicit template instantiation, via a #pragma, with Green Hills. Thanks to Brian Mendel for finding the compiler options. Mon Aug 11 17:45:44 1997 Nanbor Wang * ace/OS.cpp (ace_thread_adapter): Changed the code so that TSS ACE_Log_Msg will get created and put into cleanup stack first no matter there is other ACE_Log_Msg instances or not. This fixed the "order of destruction" problem on Win32 platform. Thanks to Irfan for digging this out and helping solving it. Mon Aug 11 07:25:29 1997 * examples/Reactor/ReactorEx/test_reactorEx.cpp: Updated this example to use the new Proactor and Asynch IO interfaces. * ace/Connector.cpp (activate_svc_handler): Fixed the "leak" of svc_handler in case of error. Thanks to Wei Chiang for reporting this. Mon Aug 11 01:11:26 1997 Douglas C. Schmidt * ACE version 4.2.34, released Mon Aug 11 01:11:26 1997. Mon Aug 11 01:06:02 1997 Douglas C. Schmidt * ace/Message_Queue.cpp (enqueue_tail_i): Inadvertantly added "signal_dequeue_waiters()" where I meant "signal_enqueue_waiters()." * include/makeinclude/wrapper_macros.GNU: Fixed a typo in the wrapper_macros.GNU file that was causing link errors. Sun Aug 10 11:35:06 1997 Douglas C. Schmidt * ace/Message_Queue.cpp: To make sure that we have correctly signaled waiters the signal_enqueue_waiters() and signal_dequeue_waiters() methods now check the return value from the semaphore release if ACE_HAS_OPTIMIZED_MESSAGE_QUEUE is enabled. * include/makeinclude/wrapper_macros.GNU (VLDLIBS): Added a new macro called ACELIB that can be used to make it easier to enable static linking for ACE, i.e.: ACELIB = -Bstatic -lACE -Bdynamic or ACELIB = $(ACE_ROOT)/ace/libACE.a Can be added to the individual platform_macros.GNU file. This allowed us to remove special code for MVS in wrapper_macros.GNU. Thanks to Chuck Gehr for this fix. * netsvcs/lib: Added some comments after the #endifs. * ace/Filecache.cpp (insert_i): Updated the code so that we use ACE_NEW_RETURN rather than operator new. This macro will protect against failed allocations. Sat Aug 9 22:08:50 1997 Douglas C. Schmidt * ace: Added two new config files: config-irix6.x-sgic++.h config-irix6.x-sgic++-nothreads.h This should hopefully consolidate the SGI platform configuration. Thanks to Torbjorn Lindgren for this fix. * include/makeinclude: Added two new platform macro files: platform_irix6.x-n32_sgic++.GNU: platform_irix6.x-32_sgic++.GNU This should hopefully consolidate the SGI platform macros. Thanks to Torbjorn Lindgren for this fix. * ace/Filecache.cpp: Fixed the syntax of the SGI pragma stuff. Thanks to Torbjorn Lindgren for reporting this. * ace/Name_Request_Reply.h: Changed MAX_NAME_LEN to MAX_NAME_LENGTH to avoid problems with Solaris 2.6. Thanks to Thanh Ma for reporting this. Sat Aug 9 12:10:35 1997 Nanbor Wang * ace/config-win32-common.h (ACE_HAS_WINSOCK2): * ace/config-win32.h (ACE_HAS_WINSOCK2): Rearranged definition of this so that users can overwrite the default setting and choose older Winsock if they want. No action needed for most NT useres. Thanks to jmorey@tbi.com (John Morey) for pointing this out. Sat Aug 09 11:28:36 1997 Steve Huston * ace/Profile_Timer.i: ACE_HAS_GETRUSAGE and !ACE_HAS_PRUSAGE platforms now use ACE_OS::gettimeofday rather than ACE_High_Res_Timer::gettimeofday in start() and stop() methods. * tests/Sigset_Ops_Test.cpp: adjusted test for sigismember() with out-of-range signum to separately test return value and errno. Also, returns non-zero from program on failed test. Fri Aug 08 17:39:43 1997 Douglas C. Schmidt * ACE version 4.2.33, released Fri Aug 08 17:39:43 1997. Fri Aug 08 02:50:31 1997 Douglas C. Schmidt * ace/Message_Queue: Factored out the code that differs depending on whether we are using the optimized ACE_Message_Queue implementation (i.e., VxWorks and NT). This change makes it easier to maintain the code. Thanks to Darrell for helping with this. * ace/Log_Msg.cpp (close): Fixed a couple of typos in this code, in particular, we need to make sure that we don't call ACE_Log_Msg_Manager::close() if we aren't multi-threaded. * ACE version 4.2.32, released Fri Aug 08 02:50:31 1997. Fri Aug 8 13:17:21 1997 Chris Cleeland * ace/OS.* (strtoul): Added the OS function strtoul() to turn strings into unsigned longs. Fri Aug 8 12:26:54 1997 Steve Huston * ace/Log_Msg.cpp: Fixed some comments and removed unused code I erroneously added August 6. * ace/config-hpux-10.x.h: Fixed to not always compile tracing code. * tests/test_config.h: ACE_END_TEST and ACE_END_LOG macros direct log output back to stderr when shutting off the file output. * tests/TSS_Test.cpp: Removed ACE_Thread_Control object from the main thread - it served no purpose and didn't work on HP-UX (due to a documented pthread_exit restriction). Also changed a 'delete ptr' to a call on operator delete (void *). Fri Aug 8 09:17:21 1997 Chris Cleeland * ace/Service_Repository.h (operations.): Improved documentation on find(). Fri Aug 8 00:01:43 1997 Nanbor Wang * ace/Log_Msg.cpp (close): Moved ACE_Log_Msg::close() out of ACE_MT_SAFE block so it always exists. This function only takes care of non-VxWorks platforms. (instance): Removed at_exit() call since the instances will be taken of by TSS_Cleanup. * ace/Object_Manager.cpp (~ACE_Object_Manager): Removed condition compilation so it always calls ACE_Log_Msg::close(). Thu Aug 7 23:36:26 1997 Douglas C. Schmidt * ace/Reactor.h: Added the renew() method and the notify_handler_ data member to all compilation cases, not just for multi-threading. * ace/Service_Config.h: Clarified the fact that argv[0] is the program name. Thanks to Chris Cleeland for pointing this out. * ace/config-mvs.h: Added the ACE_HAS_TEMPLATE_SPECIALIZATION flag thanks to Chuck Gehr. * include/makeinclude/platform_irix6.2_sgic++.GNU: Turned on exceptions and turned off implicit template instantiation. Thanks to Amos Shapira for reporting the former. * ace/config-irix6.2-sgic++.h: Also added the ACE_HAS_TEMPLATE_SPECIALIZATION flag and changed the platform_irix6.2.GNU file to not implicitly initialize templates. If this breaks something, please let me know. * ace/config-irix6.2-sgic++.h: Added the ACE_HAS_EXCEPTIONS flag. Thanks to Amos Shapira for reporting this. However, there is some question as to whether this will work. If it doesn't, please let me know. * ace/Reactor: Moved the ACE_Reactory_Notify class out from the ACE_MT_SAFE section into the main code since this should work for non-threaded builds, as well. Thanks to Stefan Ericsson for reporting this. * ace/config-chorus.h: Added the ACE_HAS_TEMPLATE_SPECIALIZATION flag. Thanks to Wei Chiang for this. Thu Aug 7 19:09:35 1997 Steve Huston * tests/Hash_Map_Manager_Test.cpp - split definition of Dumb_String class to a new header, Hash_Map_Manager_Test.h. This makes AIX C Set ++ happy. * tests/Process_Strategy_Test.cpp - split definitions of Options and Counting_Service classes to Process_Strategy_Test.h for AIX C Set ++'s benefit. Thu Aug 7 15:27:28 1997 Darrell Brunsch * ace/OS.h: Fixed typo in the definition of ACE_SYNCH_1 and ACE_SYNCH_2 for ACE_HAS_OPTIMIZED_MESSAGE_QUEUE Thu Aug 7 13:05:20 1997 Chris Cleeland * ace/Strategies_T.h: Changed the argument to ACE_DLL_Strategy from ACE_Service_Config to ACE_Service_Repository, which is more concrete. * bin/g++dep (REL): Added sed rule so that TAO's dependencies are set relative to $TAO_ROOT as well as $ACE_ROOT when the '-r' option is utilized. * include/makeinclude/platform_linux_lxpthread.GNU (CCFLAGS): The -Wall option can now be used. It only generates two warnings throughout all of ACE! * include/makeinclude/rules.local.GNU (depend.local): Modified this target so that TAO's dependencies are set relative to $TAO_ROOT as well as $ACE_ROOT. Thu Aug 7 12:03:48 1997 James C Hu * ace/Filecache.{h,cpp}: Fixed unused variable found by Amos Shapira. Fixed TEMPLATE_SPECIALIZATION dependency, sort of. Do not attempt to use Filecache if you do not support TEMPLATE_SPECIALIZATION. Thu Aug 07 00:19:12 1997 Douglas C. Schmidt * ACE version 4.2.31, released Thu Aug 07 00:19:12 1997. Wed Aug 6 22:20:54 1997 Douglas C. Schmidt * ace/Synch_T.h: Replaced all uses of ACE_Null_Condition_Mutex with ACE_Null_Condition, which is much more straightforward... * ASNMP: Added Mike MacFaden's changes for IRIX. Wed Aug 6 16:37:51 1997 James C Hu * ace/Hash_Map_Manager.cpp: Changed implementation back to use a single sentinel_ rather than an array of them. * ace/Filecache.{h,cpp}: Total re-implementations. Fewer locks acquired and released when there is a cache hit. Wed Aug 06 12:55:26 1997 Steve Huston * ace/Log_Msg.(h cpp): (ACE_Log_Msg_Manager) - Removed most of the non-VxWorks pieces - there's just a lock left; the instances_ was removed (ACE_Log_Msg) - Use ACE_Object_Manager to remove per-thread instances of ACE_Log_Msg rather than using ACE_Log_Msg_Manager. The use of an ACE_Unbounded_Set to hold the ACE_Log_Msg pointers in previous versions caused some non-tail recursion problems when tracing was enabled. Uses an instance count to know when it's safe to free the dynamically allocated class-static memory. * ace/Trace.(h cpp): Added new static member function: int is_tracing(void) - returns 1 if tracing is enabled, else 0. * ace/Object_Manager.(h cpp): Added a flag to indicate the object is being destroyed - during destruction, ACE_Object_Manager now refuses to register any new memory pointers. Also turns tracing off during destruction - ACE_Log_Msg makes use of ACE_Object_Manager, so we don't want ACE_Log_Msg instance being deleted, then created for a ACE_TRACE, then deleted, then created,... Wed Aug 06 03:35:41 1997 Douglas C. Schmidt * ACE version 4.2.30, released Wed Aug 06 03:35:41 1997. Wed Aug 6 00:13:27 1997 Nanbor Wang * netsvcs/lib/Server_Logging_Handler.cpp: We only need to instantiate ACE_Svc_Handler when ACE_HAS_THREADS. Otherwise, we'll have duplicate symbols defined on platforms that do not support threads. Tue Aug 5 19:52:36 1997 Douglas C. Schmidt * ace/Containers: Added a new reset method for ACE_Unbounded_Set. Thanks to Arturo Montes for reporting this. * ace: Changed most uses of ACE_LACKS_COND_T to ACE_HAS_OPTIMIZED_MESSAGE_QUEUE to make it possible to toggle between the emulated condition variable implementation of ACE_Message_Queue and the semaphore implementation. We need this until we fully test out the semaphore implementation of ACE_Message_Queue. * ace/Object_Manager.cpp (ACE_Object_Manager): Only call the ACE_Log_Msg::close() method if ACE_MT_SAFE is enabled! Thanks to Satoshi Ueno for reporting this. * ace/Malloc.h: Added a fix for misalignment of data in the ACE_CONTROL_BLOCK_ALIGN_LONGS macro. Thanks to Fred LaBar for this fix. * ace/ACE.cpp: (enter_recv_timedwait,enter_send_timedwait): Always give val a default value of 0 to make Purify happy. Thanks to David Levine for reporting this. * netsvcs/clients/Tokens/rw_lock/rw_locks.cpp, netsvcs/clients/Tokens/manual/manual.cpp, netsvcs/clients/Tokens/deadlock/deadlock_detection_test.cpp: Removed unreachable statements. Thanks to Cherif Sleiman for reporting this deficiency and testing the fix. Tue Aug 5 16:41:06 1997 Darrell Brunsch * ace/Synch_T.h: Added some more ACE_LACKS_COND_T changes for compilers without template typdefs. Tue Aug 5 11:50:43 1997 Nanbor Wang * ace/Message_Queue.h: Fixed typos for the case when ACE_LACKS_COND_T. Tue Aug 05 11:02:11 1997 * tests/Atomic_Op_Test.cpp (main): Made sure that on platforms without threads, we don't try to run this test. Tue Aug 05 09:15:40 1997 David L. Levine * include/makeinclude/platform_vxworks5.x_ghs.GNU: removed -no_prelink from LDFLAGS because ghs 1.8.8 doesn't support it. Thanks to Cherif Sleiman for reporting this. * ace/Service_Record.cpp: added #include "ace/Stream_Modules.h" to support template instantiation on GreenHills, at least. Thanks to Cherif Sleiman for reporting this deficiency and testing the fix. * ace/config-vxworks-ghs-1.8.h: added ACE_LACKS_LINEBUFFERED_STREAMBUF. Thanks to Cherif Sleiman for reporting this. Mon Aug 4 22:47:54 1997 Douglas C. Schmidt * ace/Message_Queue: Fixed consistency problems in naming notfull vs. not_full. Thanks to David Levine for finding this. * ace/Message_Queue: Added specialized support for cases where ACE_LACKS_COND_T (e.g., VxWorks and NT). This scheme uses ACE_Thread_Semaphores in this case, which should be more efficient). * ace/Synch_T.h: Added a new set of macros and typedefs for ACE_SYNCH_SEMAPHORE. * examples/ASX/Message_Queue: Cleaned up all the Message_Queue examples. * examples/ASX/Message_Queue/buffer_stream.cpp: Added a NUL-terminator to the program so that it won't break. Thanks to Darrell for finding this. * ace/Reactor.cpp (wait_for_multiple_events): Fixed some stylistic problems in the Reactor. * ace/Synch.cpp (ace_static_object_lock_atexit): Changed from: extern "C" static void to: extern "C" void Thanks to Chuck Gehr for this. Mon Aug 4 14:03:22 1997 Steve Huston * tests/Enum_Interfaces_Test.cpp: return non-zero if test fails. Mon Aug 4 12:03:29 1997 Darrell Brunsch * tests/Semaphore_Test: Redid to test timed waits in a more reasonably fashion. Mon Aug 4 11:43:09 1997 Douglas C. Schmidt * ace/OS: Continued to cleanup the problems with inconsistent variants of sendmsg() and writev() on VxWorks. Thanks to Cherif Sleiman for reporting this. * ace/OS.i (sema_wait): Fixed the implementation on NT so that errno = ETIME. * tests/Semaphore_Test.cpp: Cleaned up the programming style a bit. * ace/OS (writev): Removed the ACE_WRITEV_TYPE from the ACE_OS::writev() method and instead put this as a cast on the internal call to ::writev(). This is much cleaner and should fix a bug introduced last night. Thanks Cherif Sleiman for reporting this. * ace/Synch: Added a new release() method to ACE_Semaphore that enables a caller to release multiple waiters. Thanks to Darrell Brunsch for noticing this. Mon Aug 4 12:03:29 1997 Darrell Brunsch * tests/Semaphore_Test: Redid to test timed waits in a more reasonably fashion. Sun Aug 03 23:47:13 1997 Douglas C. Schmidt * ACE version 4.2.29, released Sun Aug 03 23:47:13 1997. Sun Aug 3 22:18:33 1997 Douglas C. Schmidt * tests/Atomic_Op_Test.cpp: Added template specialization so that David won't have to ;-) * ace/ACE: Added a new, complete set of send/recv operations with timeouts. These implement the following methods: read, readv, write, writev, recv, recvfrom, recvmsg, send, sendto, sendmsg. The implementation provides two flavors: MIT pthread support, an ACE portable support. To use MIT pthread support, you must to define ACE_HAS_READ_TIMEDWAIT, ACE_HAS_READV_TIMEDWAIT, ACE_HAS_WRITE_TIMEDWAIT, ACE_HAS_RECV_TIMEDWAIT, ACE_HAS_RECVFROM_TIMEDWAIT, ACE_HAS_RECVMSG_TIMEDWAIT, ACE_HAS_SEND_TIMEDWAIT, ACE_HAS_SENDTO_TIMEDWAIT and ACE_HAS_SENDMSG_TIMEDWAIT respectively. See the config.h file for SCO UNIX for an example. This new approach is not only more powerful (since it takes advantage of OS-level mechanisms when they exist), but it also greatly improves the modularity of the code and provides a wider range of supported functionality. Thanks to Arturo Montes for this new feature. * ace/ACE.cpp: Added comments to the ACE_Object_Manager_Destroyer class. * ace/OS.h: Redid all the function prototypes for class ACE_OS so that it's easier to read the arguments. * ace/config-sco-5.0.0-mit-pthread.h: Added the new macros that enable timed reads and writes. Thanks to Arturo Montes for this new feature. * ace: Added a corresponding #endif /* FOO */ for all #if defined (FOO) in ACE. * ace: Changed all uses of ACE_IOStream_T to ACE_IOStream to be more consistent with other uses of templates in ACE. Thanks to Thilo for reporting this (and thanks to David for not being offended ;-)). * ace/OS.i (operator/): Removed "const" from both the OS.h and OS.i files for ACE_U_LongLong::operator/. It is redundant, potentially confusing, and gives warnings on some compilers! Sun Aug 03 21:20:12 1997 * tests/Atomic_Op_Test.cpp: Added new test to test the Atomic Operations Class in ACE. On platforms like Win32, ACE uses template specialization to use native implementations provided by the OS to accelarate these operations. * ace/config-win32-common.h (ACE_HAS_INTERLOCKED_EXCHANGEADD): Added macro to config file. This macro is automatically set true for NT4.0 systems or greater. * ace/Atomic_Op.i: On Win32 platforms, this code will be included as template source code and will not be inlined. Therefore, we first turn off ACE_INLINE, set it to be nothing, include this code, and then turn ACE_INLINE back to its original setting. All this nonsense is necessary since the generic template code that needs to be specialized cannot be inlined, else the compiler will ignore the specialization code. Also, the specialization code *must* be inlined or the compiler will ignore the specializations. The creation of this new file is necessary for non-Win32 platforms to continue to inline the code as before. * ace/Synch_T.cpp: This file must include Atomic_Op.i if ACE_INLINE has not be turned on. If it is, this file must be included by Synch_T.h. * ace/Synch.cpp: Moved the specialization code from Synch.cpp to Atomic_Op.i. This is necessary, otherwise the compiler will ignore the specialization. Sun Aug 03 10:51:34 1997 David L. Levine * ace/config-osf1-4.0*.h: added #define ACE_HAS_LONGLONG_T. Thanks to Thilo for reporting that OSF1-4.0 does. Sat Aug 02 23:51:19 1997 Douglas C. Schmidt * ACE version 4.2.28, released Sat Aug 02 23:51:19 1997. * ace/TTY_IO.cpp (control): Fixed a bug when using 8 bits for character due to ISTRIP flag setting for device. Thanks to Arturo Montes for reporting this bug. * ACE-categories: Updated the list of ACE classes to reflect recent changes. * ASNMP: Added the new ACE+SNMP release courtesy of Mike MacFaden . This builds cleanly on Solaris, but it looks like there are a bunch of non-portable features that won't compile cleanly on all the other platforms. Therefore, until Mike or others get this stuff fully portable, it won't be build by default in the top-level ACE Makefile. * ace/OS.h (class ACE_U_LongLong): Reformatted this a bit. * ace/SV_Semaphore_Simple.i: Removed the #include of SV_Semaphore_Simple.h since it seems unnecessary and is causing problems for TAO. * ace/IOStream_T.h (ACE_IOStream_T): Removed the unneeded ';' at the end of the ACE_UNIMPLEMENTED_FUNC macros since this was causing compiler errors. Sat Aug 02 13:11:22 1997 David L. Levine * ace/Synch.cpp (ACE_Static_Object_Lock::instance): commented out call to ::atexit () because it causes shutdown problems on DEC CXX, HP/UX, and AIX. Many thanks to James Johnson for tenaciously tracking this one down, to Thilo and Steve for assisting, and to all who reported the problem. * ace/Log_Msg.cpp (ACE_Log_Msg_Manager::open,close): neutered on VxWorks, only, so that it will compile. Fri Aug 1 21:33:18 1997 Nanbor Wang * netsvcs/lib/netsvcs.mak: Added post compilation command that copies DLL to ace/ directory because netsvcs/main.exe must have this file in search path. * ace/Read_Buffer.cpp (ACE_Read_Buffer): Used ACE_OS::fdopen instead of ::fdopen because it caused compilation error on NT. Fri Aug 1 17:25:04 1997 Chris Cleeland * include/makeinclude/platform_irix6.4_sgic++.GNU (CCFLAGS): Used -ptnone and -no_prelink in order to get SGI to compile properly. * ace/config-irix6.4-sgic++.h (ACE_HAS_EXCEPTIONS): Added ACE_HAS_EXCEPTIONS to this config. * ace/IOStream_T.h (ACE_IOStream_T): Wrapped send, recv, send_n, and recv_n with the ACE_UNIMPLEMENTED_FUNC macro. Fri Aug 1 17:08:32 1997 Nanbor Wang * ace/ace.mak: Put OS.cpp back into the makefile. * ace/config-win32-common.h: Commented out checking of ACE_HAS_WINSOCK2 when we are using NT 4.0 and above. The original check prevented us from using winsock2. * ace/Thread_Manager.cpp: * ace/Service_Repository.cpp: * ace/ReactorEx.cpp: * ace/Reactor.cpp: * ace/Proactor.cpp: * ace/Malloc.cpp: * ace/Synch.{h,cpp}: Changed the lock held by ACE_Static_Object_Lock from ACE_Thread_Mutex to ACE_Recurssive_Thread_Mutex. * ace/Timer_Heap_T.cpp (ACE_Timer_Heap_T): Something was missing here..... Fri Aug 1 13:39:13 1997 Douglas C. Schmidt * ace/TTY_IO.cpp (control): Removed the special M_UNIX code for SCO_OpenServer. Thanks to Arturo Montes for reporting this. * ace/Read_Buffer.cpp (ACE_Read_Buffer): Mistakenly used int rather than ACE_HANDLE for one of the constructors in ACE_Read_Buffer. * ace/OS.cpp (readv): Fixed a braino that manifests itself on Chorus because I put the ACE_READV_TYPE in the wrong place. Thanks to Wei Chiang for reporting this. Fri Aug 1 14:31:22 1997 Darrell Brunsch * tests/Timer_Queue_Test.cpp: removed casts from pointers to ints (when a act was compared with a number) and instead used a cast on the integer values. This gets rid of warnings on platforms where the sizeof a pointer is larger than the sizeof an int. Fri Aug 01 12:10:28 1997 * ace/Synch_T: Changed parameter passing for ACE_Atomic_Op from const TYPE to const TYPE &. * ace/Synch.cpp: These specializations have been added to ACE_Atomic_Op to make the implementation faster on Win32 that has OS support for doing this quickly through methods like InterlockedIncrement and InterlockedDecrement. * ace/SV_Semaphore_Complex.cpp (open): Fixed more compiler warnings: IOStream.cpp Naming_Context.cpp Read_Buffer.cpp SV_Semaphore_Complex.cpp SV_Semaphore_Complex.i Fri Aug 1 11:57:45 1997 Chris Cleeland * ace/Containers.h (ACE_Fixed_Set): Eliminated declaration for unnecessary ACE_Fixed_Set(size_t) CTOR. * ace/OS.h: Simplified the typedef of ACE_hrtime_t so that it's an unsigned long long whenever ACE_HAS_LONG_LONG_T is defined. Fri Aug 01 10:12:26 1997 David L. Levine * ace/config-osf1-4.0.h: added ACE_HAS_TEMPLATE_SPECIALIZATION. Thanks to Thilo for verifying that this is supported with DEC CXX. * ace/config-irix6.4-sgic++*.h: added ACE_TEMPLATES_REQUIRE_SOURCE and ACE_REQUIRES_FUNC_DEFINITIONS. * ace/OS.h,README: added ACE_REQUIRES_FUNC_DEFINITIONS support. * ace/{Free_List.h,Remote_Tokens.h,Synch_T.h,Timer_*_T.h}: wrapped unimplemented template class copy constructors and assignment operators with ACE_UNIMPLEMENTED_FUNC. * tests/Service_Config_Test.cpp: removed templates to avoid problems with finicky compilers, and added check of destruction ordering. * include/makeinclude/platform_vxworks5.x_ghs.GNU: added -no_prelink to LDFLAGS. Fri Aug 01 00:14:46 1997 Douglas C. Schmidt * ACE version 4.2.27, released Fri Aug 01 00:14:46 1997. Thu Jul 31 21:51:01 1997 David L. Levine * ace/Log_Msg.cpp (open): fixed memory leak. Thu Jul 31 21:41:10 1997 Douglas C. Schmidt * tests/Service_Config_Test.cpp (run_test): You won't shout as I... * ace/Object_Manager.cpp (instance): ... fiddle about ;-) Thu Jul 31 17:39:56 1997 * ace: The following files were modified to avoid the "unreferenced formal parameter" and other warnings from the compiler: ACE.cpp Asynch_IO.cpp Asynch_IO.h INET_Addr.cpp OS.cpp OS.h OS.i Proactor.cpp Reactor.cpp ReactorEx.cpp ReactorEx.i SOCK_Dgram_Bcast.cpp Service_Config.cpp Thu Jul 31 16:46:44 1997 David L. Levine * ace/config*.h: replaced "ACE_REQUIRES_TEMPLATE_SPECIALIZATION" with "ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION". * ace/config-vxworks-ghs-1.8.h,config-irix6.4-sgic++*.h: added ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA. * all .cpp files that had "ACE_REQUIRES_TEMPLATE_SPECIALIZATION": replaced with "ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION" and added #pragma instantiate for Edision Design Group compilers, e.g., SGI and Green Hills. Thu Jul 31 16:25:33 1997 Douglas C. Schmidt * ace/Synch.i (acquire): Added the timed acquire() interface to ACE_Semaphore. Thu Jul 31 11:10:17 1997 Darrell Brunsch * tests/run_tests.bat: Redid this file completely making it much smarter about running tests. Instead of just blindly executing the tests, it checks the return values to see if an error occured and also outputs relevant errors from the log file if the test was unsuccessful. It's a remarkable example of batch programming wizardry. Thu Jul 31 10:39:04 1997 Darrell Brunsch * ace/INET_Addr.cpp: initialized error variable in gethostname to stop warnings when inlining is on. Thu Jul 31 09:46:50 1997 Darrell Brunsch * ace/Timer_Heap_T.cpp: changed cancel(id) to check the timer id to make sure it is in range (not negative and not larger than the current size of the heap) Thu Jul 31 07:32:26 1997 David L. Levine * Malloc_T.{i,cpp},Timer_Queue_T.i: replaced LOCK with ACE_LOCK. Thanks to Thilo for supplying patches. * ace/config-sunos5.5-g++.h: #define ACE_MALLOC_ALIGN to be 8. * ace/Object_Manager.*: renamed cleanup () to at_exit (). * Log_Msg.{h,cpp},Object_Manager.cpp: let ACE_Object_Manager clean up the global ACE_Log_Msg_Manager. * Service_Config_Test.cpp: added test of ACE_Object_Manager::at_exit (). Wed Jul 30 20:30:25 1997 Douglas C. Schmidt * ace/SOCK_Dgram.h: Added an = 0 to the flags parameter to recv(). Thanks to Michael MacFaden for pointing out the inconsistency. * ace/OS.cpp (thr_create): Added support for the SCHED_IO policy, which is supported by MIT Pthreads. Thanks to Arturo Montes for this fix. * ace/SOCK_Dgram.h: Added a comment to clarify how to delete the elements of the iovec array. Thanks to Mike MacFaden for clarifying this. * ace/Reactor.h: Changed the comment for schedule_timer() to use delta_timer rather than delay. * ace/Connector: Updated the timer cancellation id to be long rather than int. * examples/Reactor/Misc/notification.cpp: Timers are now working happily on Chorus, so we can revert the Chorus-specific patches. Thanks to Wei Chiang for reporting this. * ace/SOCK_Dgram.cpp (recv): The timed recv() method must return -1 on a timeout to meet its documented specification. Thanks to Joseph Cross for reporting this problem. * ace/OS.i (readv): Added a fix for Chorus, which has a different readv() prototype than normal operating systems. Thanks to Wei Chiang for reporting this. Wed Jul 30 20:02:21 1997 James C Hu * ace/Hash_Map_Manager.{h,cpp}: changed the *_i methods to use shared_find() method to ease template specialization efforts. Also, added a new shared_find() method. Added a parameter to each to allow the passing in of the calculated hash value. Wed Jul 30 16:43:34 1997 * ace/config-win32-common.h: If _DEBUG is not set (that is, we are building the Release version), we will turn on __ACE_INLINE__. Thanks to Matthias Kerkhoff for suggesting this. Wed Jul 30 06:53:30 1997 Matthias Kerkhoff * The use of the following configuration #defines in the entire ACE distribution has been changed: - ACE_HAS_WINNT4 - ACE_HAS_MFC - ACE_HAS_STRICT - ACE_MT_SAFE - ACE_HAS_DLL - ACE_HAS_SVC_DLL - ACE_HAS_WINSOCK2 - ACE_HAS_ORBIX - ACE_HAS_MT_ORBIX In previous ACE-versions, code blocks depending on one of these defines have been guarded by an #if defined(ACE_XXX_OPTION). Therefore it has been necessary to define the default configuration unconditionally in config-win32.h. The #if statements in the source files have been changed to #if defined(ACE_XXX_OPTION) && (ACE_XXX_OPTION != 0) while the default configuration in config-win32.h will only be used, if it has not been overridden from the compilers command line (i.e.) : #if !defined(ACE_XXX_OPTION) #define ACE_XXX_OPTION 1 #endif Wed Jul 30 14:46:33 1997 Nanbor Wang * ace/Malloc.cpp: * ace/Proactor.cpp: * ace/ReactorEx.cpp: * ace/Reactor.cpp: * ace/Service_Repository.cpp: * ace/Thread_Manager.cpp: * ace/Synch.{h,cpp}: Changed ACE_Static_Object_Lock::get_lock () to instance () to emphasize that it's a singleton. * ace/Containers.cpp: Fixed the problem caused by ACE_Unbounded_Stacknotkeeping its size currectly. Thanks for Matthias Kerkhoff for sending us the patch. * ace/OS.cpp (exit): Corrected a bug in ACE_TSS_Cleanup::exit (). It innocently uses default ctor to copy info_arr. And things get out of hand when info_arr[] gets destructed. Thanks very much for Matthias Kerkhoff for digging this out and sending us the patch. Wed Jul 30 13:36:55 1997 David L. Levine * ace/config-vxworks-ghs-1.8.h: added #ifdef ppc wrapper around #define of ACE_HAS_POWERPC, because GreenHills #defines that. * include/makeinclude/platform_vxworks5.x_ghs.GNU: replaced indlib.o LIBS with newer ghsbltin.o and ghsmath.o. * ace/OS.h: use the same ACE_UNUSED_ARG definition with ghs as with other compilers. * ace/Object_Manager.*: revised interface, but still in flux. cleanup () should work for process-wide registration, but is untested. Wed Jul 30 11:13:57 1997 Chris Cleeland * ace/config-linux*.h (ACE_HAS_LONGLONG_T): These configs file incorrectly had ACE_HAS_LONGLONG rather than ACE_HAS_LONGLONG_T. * ace/OS.cpp (gethrtime): Added 'volatile' keyword to insure that the automatic variables 'most' and 'least' don't get put into registers. Putting this in stopped the SIGSEGV that was occurring in Linux. Wed Jul 30 06:53:30 1997 Douglas C. Schmidt * ACE version 4.2.26, released Wed Jul 30 06:53:30 1997. Wed Jul 30 04:36:39 1997 Nanbor Wang * ace/Containers.{h,cpp}: Added back new parameterized allocation strategy version. Finally. * ace/Synch.cpp (atexit): Moved ACE_Allocator here because only here, we can be sure that no other user defined memory activities are going on. This is becoming even more interesting now.... Perhaps we should move all close_singleton's here? * ace/Service_Config.cpp (close_singletons): Removed ACE_Allocator::close_singleton () from this function because we still need ACE_Allocator to "free" static objects' memory. * ace/Synch.{h,cpp}: Added a new class ACE_Static_Object_Lock which provides a lock when instantiating static objects. * ace/Thread_Manager.cpp: Removed ace_thread_manager_lock_, * ace/Service_Repository.cpp: Removed ace_service_repository_lock_, * ace/ReactorEx.cpp: Removed ace_reactorex_lock_, * ace/Reactor.cpp: Removed ace_reactor_lock_, * ace/Proactor.cpp: Removed ace_proactor_lock_, * ace/Malloc.cpp: Removed ace_malloc_lock_, and replace them with a global single lock ACE_Static_Object_Lock::get_lock (). Tue Jul 29 16:25:48 1997 Chris Cleeland * ace/OS.cpp (thr_create): Explicitly flagged 'stack' and 'size' as unused arguments. * ace/Memory_Pool.cpp (handle_signal): Explicitly flagged siginfo as an unused argument, and moved the decl of offset into the conditional block in which it's used. * ace/OS.i (dlerror): Added explicit cast of the return value to (char*) because on Linux dlerror() returns const char*, while on Solaris it's char*. * ace/config-linux-lxpthreads.h: Created new flag ACE_LACKS_POSIX_PROTO_FOR_SOME_FUNCS that can be used when only certain functions are missing POSIX prototypes. This eliminates more warnings with -Wall * ace/ACE.cpp (max_handles): Added return statement for the RLIMIT_NOFILE case. (count_interfaces): Removed unused variables. Tue Jul 29 15:10:35 1997 Darrell Brunsch * ace/OS.i: Changed sema_wait to take in a const ACE_Time_Value Tue Jul 29 12:41:27 1997 Douglas C. Schmidt * ace/config-sco-5.0.0-mit-pthread.h: Added the ACE_LACKS_PWD_FUNCTIONS macro. Thanks to Arturo Montes for reporting this. Tue Jul 29 13:10:00 1997 Nanbor Wang * ace/Signal.h: Moved inclusion of "Containers.h" to the bottom of this file so everything is defined properly before use. Tue Jul 29 12:36:24 1997 * tests/Message_Queue_Test.cpp (main): Removed dynamic allocation of the string array. Tue Jul 29 12:15:49 1997 Darrell Brunsch * ace/Proactor.cpp * ace/Reactor.cpp: * ace/ReactorEx.cpp: Changed the default Timer Queue to Timer Heap instead of Timer List. Tue Jul 29 07:59:04 1997 David L. Levine * Makefile,TAO/Makefile: change mode of updated ChangeLog-* file to 644 after updating it, when building a release with TIMESTAMP enabled. * ace/OS.cpp (sched_params): added some more initializations to 0 to avoid Purify warnings about unitialized memory reads. * ace/Object_Manager.cpp (~ACE_Object_Manager): removed unused variable "i". Thanks to Amos Shapira for reporting this. * ace/Service_Record.{h,i} Parse_Node.{h,cpp} (handle,open_handle): removed "const" from ACE_SHLIB_HANDLE return value. Thanks to the several people who noted compiler warnings from this. * ace/Naming_Context.cpp: added delete of this->name_options_; (dtor,fini): call this->close (). * tests/IOStream_Test.cpp (client,server): use ACE_NEW_RETURN instead of new. Tue Jul 29 01:53:18 1997 Nanbor Wang * ace/OS.h: Added two new macros ACE_NEW_MALLOC_RETURN and ACE_NEW_MALLOC. Theses are similiar to ACE_ALLOCATOR_RETURN and ACE_ALLOCATOR that allow memory allocation using user defined functions. However, these two macros will call specified constructor after memory is being allocated. * ace/Containers.{h,cpp}: Decoupled memory allocation strategy for ACE_Unbounded_Stack, ACE_Unbounded_Set, ACE_Unbounded_Queue. Users can now specified their own memory allocation strategies if needed. If not specified, the default ACE_Allocator will be used. Tue Jul 29 00:56:54 1997 Douglas C. Schmidt * ACE version 4.2.25, released Tue Jul 29 00:56:54 1997. Mon Jul 28 16:23:26 1997 David L. Levine * include/makeinclude/rules.nested.GNU: added missing semicolon at end of last statement. Thanks to Amos Shapira for providing this fix. * ace/OS.h (VxWorks only): only #include before for GreenHills. Thanks to Dave Moore for reporting a problem without this fix with g++/VxWorks 5.3.1 for PowerPC target. Also, commented out g++ string.h hack. It no longer appears to be necessary. * tests/README: added VxWorks 5.3.1 test status. * tests/SPIPE_Test.cpp (main): fixed #ifdefs so that it compiles. * ace/OS.i: (strtok_r): replaced NULL with 0. NULL is #defined as (void *) 0 on VxWorks, so it causes compile warnings. Thanks to Dave Mayerhoefer for reporting this problem. * ace/Object_Manager.{h,cpp},Makefile: added this class to shutdown ACE library services, and reclaim their storage, at program termination. * ace/ACE.cpp: added hook to call ACE_Object_Manager destructor in this file. It's in this file so that it's sure to be linked in to executables that statically link libACE.a. * ace/Service_Config.{h,cpp}: (close): delete ACE_STATIC_SVCS instance, which is now saved in static_svcs_. Also, removed LM_SHUTDOWN call, because the logger apparently gets shutdown now with everything else (with ACE_Object_Manager). * ace/Object_Manager.* (delete_at_exit,delete_array_at_exit): made these (inline) static functions, with return values. * tests/IOStream_Test.cpp (client,server): explicitly destroy (and create) ACE_SOCK_IOStream instances, because they don't get destroyed on Solaris. They're on the stack of separate threads, so maybe the problem is related to not cleaning up TSS on Solaris. Thanks to James CE Johnson for some efficient debugging work, and for verifying that the original code works properly on Linux. Mon Jul 28 21:59:09 1997 Nanbor Wang * ace/ace.mak: Added file Object_Manager.cpp. * ace/OS.h: Added #define RTLD_LAZY when ACE_HAS_SVR4_DYNAMIC_LINKING and RTLD_LAZY is not defined. FreeBSD 2.2.1 "forgot" to put in this definition. Thanks to Satoshi Ueno for reporting this. Mon Jul 28 13:27:21 1997 Douglas C. Schmidt * ace/Object_Manager: Made a few minor stylistic updates. * netsvcs/servers/main.cpp (main): Updated this test program to utilize the new ACE_Service_Object_Ptr class. * ace/Service_Object.h: Added a new smart pointer call ACE_Service_Object_Ptr, which generalizes functionality that was previously in the ./netsvcs/server/main.cpp file. Thanks to Wei Chiang for this suggestion. * examples/Threads/process_manager.cpp (parse_args): Removed the unused n_processes global variable. Thanks to Amos Shapira for reporting this. * tests/SPIPE_Test.cpp (main): Cleaned up the #ifdef structure to remove compiler warnings. Thanks to Amos Shapira for this. * tests/Handle_Set_Test.cpp (test_performance): Removed an unused ACE_HANDLE handle definition. Thanks to Amos Shapira for reporting this. * ace/OS.i (sema_init): Swapped else and #endif to avoid a compile error when ACE_LACKS_NAMED_POSIX_SEM is false. Thanks to Wei Chiang for reporting this. * ace/OS.cpp (rwlock_init): Added a cast to (const void *) to keep certain compilers from complaining. Thanks to Thilo and Amos Shapira for reporting this. * ace/OS.i (sema_wait): *tv should have been &tv. Thanks to Thilo for reporting this. Mon Jul 28 13:57:21 1997 James C Hu * ace/config-irix6.4-sgic++.h: Added template specialization #def. Sun Jul 27 20:47:01 1997 David L. Levine * tests/Handle_Set_Test.cpp: Instantiate templates with ACE_HANDLE instead of int. * examples/IPC_SAP/SPIPE_SAP/NPServer.cpp (main): use ACE_OS::fprintf () instead of cerr. Sun Jul 27 20:10:26 1997 Douglas C. Schmidt * ACE version 4.2.24, released Sun Jul 27 20:10:26 1997. Sun Jul 27 16:03:30 1997 Nanbor Wang * tests/Handle_Set_Test.cpp (test_boundaries): Changed class of queue from ACE_Unbounded_Queue to ACE_Unbounded_Queue so it declares the right data type. * ace/Synch.cpp (ACE_Process_Mutex): * ace/OS.cpp (rwlock_init): * ace/ACE.cpp (unique_name): Memories for placing unique_name are now declared using ACE_UNIQUE_NAME_LEN. When calling ACE::unique_name, the length is also specified using ACE_UNIQUE_NAME_LEN because using "sizeof (buffer)" also caused problem if we are using UNICODE. * ace/OS.h: Added a new directive ACE_UNIQUE_NAME_LEN to specified the maximum length of an "unique name." Sun Jul 27 15:32:08 1997 David L. Levine * tests/Handle_Set_Test.cpp (main): uncommented test_duplicates () and test_performance () calls, and added ACE_Unbounded_Queue_Iterator specialization. Sun Jul 27 14:25:33 1997 Douglas C. Schmidt * tests/Handle_Set_Test.cpp (test_boundaries): Added a better test to ensure that the ACE_Handle_Set_Iterators are working correctly. This works by inserting the handles in a queue and then making sure that they are the same values we receive from the iterator. * ace/Handle_Set.i (operator): Fixed a subtle bug in the ACE_Handle_Set_Iterator implementation. We need to make sure that we increment the handle_index_ to the beginning of the next word whenever we've examined all the bits in the current word. Thanks to David Levine for noticing this problem. Sun Jul 27 09:06:29 1997 David L. Levine * include/makeinclude/rules.lib.GNU: replaced hard-coded ".so" with "$(SOEXT)". * include/makeinclude/rules.local.GNU: added/completed support for "$(SOEXT)", and "$(VSHDIR)" instead of always hard-coding them as ".so" and ".shobj/". * include/makeinclude/wrapper_macros.GNU: added support for override of "$(VSHDIR)" in platform_macros.GNU. * apps/JAWS/clients/{Blobby,Caching}/Makefile, apps/JAWS/stress_testing/Makefile, apps/Orbix-Examples/Event_Comm/{Consumer,Supplier}/Makefile, examples/ASX/Event_Server/Event_Server/Makefile, examples/ASX/UPIPE_Event_Server/Makefile, examples/Logger/simple-server/Makefile, examples/Mem_Map/IO-tests/Makefile, examples/Naming/Makefile, examples/Reactor/Multicast/Makefile, examples/Service_Configurator/Misc/Makefile, examples/Shared_Malloc/Makefile: replaced hard-coded ".shobj" with "$(VSHDIR)" in LDLIBS definitions. * include/makeinclude/platform_vxworks5.x_{g++,ghs}.GNU: added overrides of .so build rules to change them .o builds. The above changes allow builds of modules that specify .shobj/*.so on VxWorks, by mapping those objects to .obj/*.o. Sun Jul 27 03:07:35 1997 Nanbor Wang * ace/ACE.cpp (unique_name): Added __TEXT macro to the format string in sprintf to avoid a nasty problem when using UNICODE on NT. Sat Jul 26 21:12:07 1997 David L. Levine * ace/ReactorEx.cpp: added a couple of ACE_UNUSED_ARG's. * examples/Logger/simple-server/Logging_Handler.cpp (handle_input): replace use of cerr with stderr (by using default arg of ACE_Log_Record::print ()). * examples/Shared_Malloc/test_multiple_mallocs.cpp (main): use ACE_OS::printf () instead of cout. * examples/Shared_Malloc/test_persistence.cpp: added #include of iostream.h with ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION. Sat Jul 26 15:55:43 1997 * ace/Malloc_T.cpp (ACE_Cached_Allocator): Changed (T *) to (T*). VC++ did not like the former. * The entire ACE distribution was updated to use the new singleton methods. The old singleton methods in Service_Config have been deprecated and users are encouraged not to use these methods anymore. It may not be supported in future releases. The replacement is the instance() methods in the individual classes. For example, ACE_Service_Config::reactor() is replaced by ACE_Reactor::instance(). A perl script has been added (ACE_wrappers/bin/Service_Config.perl) to allow users to change their code over to the new methods. These changes will hopefully help in reducing the compile-time dependencies in ACE source files and allow smaller custom ACE libraries to be compiled. Thanks to Matthias Kerkhoff for making these changes. Sat Jul 26 15:44:45 1997 Douglas C. Schmidt * ace/Malloc_T.cpp (ACE_Cached_Allocator): I think we want to say "sizeof (T)" rather than "sizeof (T *)". * ace/FILE_IO.i (recv_n): There is a minor bug fix to be made in FILE_IO.i. The method ACE_FILE_IO::recv_n() should call ACE::read_n(), not ACE::recv_n(). Similarly, the method ACE_FILE_IO::send_n() should call ACE::write_n(), not ACE::send_n(). The functions ::recv() and ::send() are intended only for *socket* I/O, and return failure conditions when applied to *file* I/O. Thanks to David Brackman for reporting this. * ace: Changed all LOCK names to ACE_LOCK to avoid clashes with macros in the KAI C++ compiler. Thanks to Jeff R. Hayes for pointing this out. * ace/Malloc_T.i: Added ACE_INLINE to some methods that weren't getting inlined. * ace/OS.i: Added an implementation of timed semaphores for the POSIX threading APIs. Also cleaned up the return values from sema_wait() so that it always returns -1 if an error occurs (originally, it was returning -2, which is confusing). Also cleaned up the rd_lock() and wr_lock() methods in the same way. Sat Jul 26 16:00:05 1997 David L. Levine * Malloc_T.cpp (ACE_Cached_Allocator): fixed typo, sizeof (T*) instead of sizeof (*T). * Proactor.cpp (instance): fixed signature in non-WIN32 version. (run_event_loop): added ACE_UNUSED_ARG (tv). Fri Jul 25 12:08:47 1997 David L. Levine * ace/OS.[hi]: finished VxWorks (non-POSIX) semaphore implementation. * ace/Process.cpp (spawn): with GreenHills compiler only (for VxWorks), call ACE_NOTSUP_RETURN instead of spawning via execve. GreenHills 1.8.8 loses its lunch on the ACE_OS::execve () call. Thanks to Dave Mayerhoefer for reporting this problem. * tests/Mem_Map_Test.cpp (create_test_file): delete array "mybuf" to prevent memory leak. * tests/Message_Queue_Test.cpp (main): delete "buffer" elements at end of test to prevent memory leaks. * performance-tests/Misc/context_switch_time.cpp: use ACE_Sched_Params for platform-independent thread priority assignment. Also, modified Yield_Test so that only one thread writes the test's timer. * examples/ASX/UPIPE_Event_Server/Peer_Router.cpp (svc): replaced an iostream printout with an ACE_DEBUG call. * examples/ASX/UPIPE_Event_Server/event_server.cpp: added #include of iostream.h with ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION. * examples/IPC_SAP/FILE_SAP/client.cpp: require 2 args instead of 1; mask file mode with 0777 (octal); and use ACE_OS::printf () instead of cout. Fri Jul 25 00:46:22 1997 * ace/Synch: Added documentation for Condition variables. Thanks to Jeff for pointing out the lack of documentation. Thu Jul 24 11:48:05 1997 David L. Levine * Makefile,TAO/Makefile: added a filter to exclude backup and [.]#* files from releases. Thanks to Carlos O'Ryan for reporting this problem. * include/makeinclude/platform_*.GNU: inserted CVS/RCS keyword string. * performance-tests/Misc/basic_perf.cpp (per_iteration): added support for ACE_U_LongLong. * performance-tests/Misc/childbirth_time.cpp: (prof_fork,prof_native_thread): added ACE_UNUSED_ARGs for unsupported platforms. (prof_ace_os_thread): added (ACE_THR_FUNC) cast of first arg to ACE_OS::thr_create () call. * performance-tests/Misc/test_naming.cpp (find): replaced cerr statement with an ACE_DEBUG. * examples/Misc/test_read_buffer.cpp: replaced bare OS calls with ACE_OS calls. Thu Jul 24 11:35:37 1997 Darrell Brunsch * ace/Timer_Heap_T.cpp: Fixed a problem with reschedule() corrupting the free list in Timer Heap. Thanks to James Crawford , Silvano Peruzzi , and Stuart Powell for the fix. Wed Jul 23 23:29:15 1997 * ace/Message_Block.cpp (size): Changed the comparison from (length < this->max_size_) to (length <= this->max_size_). Thanks to Paul for suggesting this change. Wed Jul 23 21:54:23 1997 David L. Levine * examples/Shared_Malloc/test_malloc.cpp (spawn): cast argv argument to (char *const *) for call to ACE_OS::execv (). Wed Jul 23 16:40:39 1997 Nanbor Wang * ace/ACE.cpp (get_ip_interfaces): ACE'ified codes for NT. UNIX part will come later. * ace/Malloc_T.cpp (ACE_Cached_Allocator): Changed to use raw memory allocation method for memory pool. * ace/OS.h (ACE_TEXT_STRING): Added this #define macro to switch between ACE_WString and ACE_CString according to the usage of UNICODE. Wed Jul 23 14:43:11 1997 David L. Levine * tests/Timer_Queue_Test.cpp(main): delete timer_id array at the end of the test to avoid a memory leak. Wed Jul 23 13:40:39 1997 Nanbor Wang * ace/Process.cpp (ACE_Tokenizer::next): Moved checking of string termination after checking delimiter and preserve_designator so that we can use this class to tokenize multiple null terminated strings cascaded together (using \0 as delimitor.) Notice tne combined strings must be terminated with two null chars. I need to use this class in ACE::get_ip_interfaces. * ace/Malloc_T.{h,i}: Changed the implementation of ACE_Cached_Mem_Pool_Node from using union to a plain pointer. This is because some C++ compilers don't allow union member to have copy constructor. Thanks to Tim to dig this out. Wed Jul 23 12:58:04 1997 Steve Huston * ace/CORBA_Ref.cpp: Added #include "ace/Log_Msg.h" to catch the ACE_DEBUG macro.