diff options
-rw-r--r-- | ChangeLog-96b | 7345 | ||||
-rw-r--r-- | README | 1 | ||||
-rw-r--r-- | ace/ACE.cpp | 140 | ||||
-rw-r--r-- | ace/ACE.h | 2 | ||||
-rw-r--r-- | ace/INET_Addr.cpp | 4 | ||||
-rw-r--r-- | ace/LSOCK_Stream.cpp | 7 | ||||
-rw-r--r-- | ace/LSOCK_Stream.h | 5 | ||||
-rw-r--r-- | ace/Local_Tokens.h | 5 | ||||
-rw-r--r-- | ace/Memory_Pool.cpp | 10 | ||||
-rw-r--r-- | ace/Memory_Pool.h | 2 | ||||
-rw-r--r-- | ace/Message_Queue.cpp | 10 | ||||
-rw-r--r-- | ace/Message_Queue.h | 5 | ||||
-rw-r--r-- | ace/Module.cpp | 3 | ||||
-rw-r--r-- | ace/OS.h | 6 | ||||
-rw-r--r-- | ace/OS.i | 18 | ||||
-rw-r--r-- | ace/Reactor.cpp | 5 | ||||
-rw-r--r-- | ace/ReactorEx.cpp | 4 | ||||
-rw-r--r-- | ace/Service_Config.cpp | 12 | ||||
-rw-r--r-- | ace/Service_Config.h | 7 | ||||
-rw-r--r-- | ace/Thread.h | 7 | ||||
-rw-r--r-- | examples/Reactor/Ntalker/ntalker.cpp | 7 | ||||
-rw-r--r-- | netsvcs/ACE-netsvcs.html | 3 | ||||
-rw-r--r-- | tests/Makefile | 482 | ||||
-rw-r--r-- | tests/Message_Queue_Test.cpp | 22 | ||||
-rw-r--r-- | tests/Service_Config_Test.cpp | 37 | ||||
-rwxr-xr-x | tests/run_tests.sh | 13 |
26 files changed, 4307 insertions, 3855 deletions
diff --git a/ChangeLog-96b b/ChangeLog-96b index e2147294ef6..62a82b4670a 100644 --- a/ChangeLog-96b +++ b/ChangeLog-96b @@ -1,3 +1,129 @@ +Tue Dec 10 00:33:08 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + + * ace/Message_Queue: Added the enqueue() method again to maintain + backwards compatibility. Thanks to Karlheinz for pointing out + the need for this. + + * ace/Service_Config.h: The svc.conf factory functions were + begin defined as extern "C", but the function pointer defined in + the ACE_Static_Svc_Descriptor struct is not declared as extern + "C", therefore, there was a mismatch. Here's how to fix this: + + In Service_Config.h, before the struct ACE_Static_Svc_Descriptor + add: + + extern "C" { + typedef ACE_Service_Object *(*ACE_SERVICE_ALLOCATOR)(void); + } + + Then in the struct alloc_ field was changed as follows: + + from: ACE_Service_Object *(*alloc_)(void); + to: ACE_SERVICE_ALLOCATOR alloc_; + + Thanks to Chuck Gehr for this. + + * ace/Memory_Pool.cpp (commit_backing_store_name): Changed uses of + "counter" from int to size_t to remove warnings. + + * ace/ACE.cpp: Reimplemented the ACE::daemonize() method to + conform to the latest version in Richard Steven's new UNP book. + + * ace/INET_Addr.cpp (set): Replaced the use of ACE_OS::inet_addr() + with ACE_OS::inet_aton(). Thanks to W. Richard Stevens for this + idea ;-). + + * ace/OS: Added a new function called inet_aton(), which is based + on a new POSIX socket addressing function that is non-ambiguous + in its return value (unlike inet_addr). + + * tests: Added a new Service_Config_Test.cpp to make sure that the + timeout features mentioned below work. + + * ace/Service_Config.cpp: Changed the implementation of + run_{reactor,proactor,reactorEx}_event_loop so that it returns + if the corresponding handle_events() method times out. + Thanks to Phil Logan <phill@in.ot.com.au> for reporting + this. + + * ace/LSOCK_Stream: Moved get_remote_addr() from the private part + of the class and implemented it using get_local_addr(). This + fixes problems that previously occurred when using the + ACE_Connector with ACE_LSOCK_Stream. Thanks to Stuart Powell + <stuartp@in.ot.com.au> for this suggestion. + +Mon Dec 9 22:03:30 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + + * examples/Threads: Updated the test.mak and test.mdp files to + reflect the new name changes. Thanks to Matthias for this. + + * ace/ACE.cpp (ldfind): Added new code that will work if the + "base" part of the filename to look for is the same on both UNIX + and NT. The library name will be made up of three parts + [ACE_DLL_PREFIX]base part[ACE_DLL_SUFFIX], where prefix is "lib" + on UNIX and nothing on NT and suffix is ".dll" on NT and ".so" + on UNIX. If either prefix or suffix are missing from the + filename you supply to ldfind they will be added + automagically. This all will work independent from the pathname, + which will be treated completely separately from the filename + and can contain either UNIX style or NT style separators. + + Examples: + Source NT UNIX + =============================================================== + netsvc netsvc.dll libnetsvc.so + (PATH will be evaluated) (LD_LIBRARY_PATH evaluated) + + libnetsvc.dll libnetsvc.dll libnetsvc.dll + warning + netsvc.so netsvc.so + warning libnetsvc.so + + ..\../libs/netsvc ..\..\libs\netsvc.dll ../../libs/libnetsvc.so + (absolute path used) (absolute path used) + + The first and the last of these 4 examples is the way the new + functionality is supposed to be used. You simple supply the + pathname and the base part of the filename and ldfind will + figure everything out. + + Thanks to Tilo Chris for this code. + + * ace/OS.h: Added a new macro called ACE_DLL_PREFIX, which is + defined to "" on Win32 and "lib" on UNIX. Thanks to Tilo for + this. + + * ace/Reactor.cpp (detach): After further thought, I + have commented out the + + eh->reactor (0); + + call since I don't think we really need it. + + * ace/Reactor.cpp (detach): There was a problem with + ACE_Reactor::detach(). + + The following lines: + + // Reinitialize the Reactor pointer to 0. + eh->reactor (0); + + should be moved before: + + eh->handle_close (handle, mask); + + This will render the reactor handle not available in the + handle_close method but at least handle_close can delete itself. + Thanks to Luca for reporting this. + + * examples/Reactor/Ntalker: Replaced the use of ACE_OS::getopt() + with the ACE_Get_Opt iterator. Thanks to Alexandre Karev + <Alexandre.Karev@cern.ch> for suggesting this. + + * ace/OS.h: Moved the #endif /* ACE_HAS_DCETHREADS || + ACE_HAS_PTHREADS */ once again in order to make sure that the + right things happen when #if defined (ACE_HAS_THREADS) is + *false*. Thanks to Robert Lyng <RLyng@msmail.hsii.ccare.com> + for reporting this. + Mon Dec 9 02:06:48 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu> * ace/SString: Made accessors return const references. @@ -98,4812 +224,4811 @@ Mon Dec 9 02:06:48 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu> ACE_OS::getenv ACE_OS::system - Sun Dec 8 19:00:45 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu> - * ace/Reactor.cpp (handle_events): Updated this method to use the - ACE_Countdown_Time::update method after the mutex has been - acquired. - - * ace/Time_Value.cpp (update): Added an ACE_Countdown_Time::update - method that calls stop and start. This is useful for methods - such as ACE_Reactor::handle_events that need to update timeout - values after acquiring locks, but before waiting on the - demultiplexing mechanism (e.g. select). - - * ace/ReactorEx.cpp (handle_events): Modularized the - implementation of handle_events. Now it uses helper functions - to significantly simplify the implementation. Also updated the - header file documentation. - - * ace/Timer_Queue: Added a timer_skew_ data member and accessor - methods to ACE_Timer_Queue. Also added an expire method that - calls gettimeofday and adds the timer_skew_ for you. These - changes will help simplify Reactor, Proactor, and ReactorEx - code. - - * ace/Reactor : Removed timer_skew_. This code now just calles - timer_queue->expire () with no parameters. Very clean. - - * ace/ReactorEx : Removed timer_skew_ code. - - * ace/Proactor : Removed timer_skew_ code. - - * examples/Proactor/test_proactor.cpp: Fixed this application so - that it exits when all the data has been sent and received. - Previously, it used a cool timeout mechanism to "guess" when all - the data had been received. Ahh, but we can't have too much - fun, or people start to get nervous. - - * ace/Service_Config.cpp (run_reactorEx_event_loop (Time_Value)): - Fixed the implementation of this method. It now handles - reactorEx events until end_reactorEx_event_loop is called, or - the specified time value expires. Also fixed the - run_proactor_event_loop (Time_Value) method. - - * examples/ReactorEx/test_timeout.cpp: Added a new example - application that shows how to use - Service_Config::run_reactorEx_event_loop with timeouts. Check - the examples/ReactorEx/README file for more details. - - * examples/Proactor/test_timeout.cpp: Added a new example - application that shows how to use - Service_Config::run_proactor_event_loop with timeouts. Yes, this - screams for common dispatcher interfaces for Reactor, Proactor, - and ReactorEx. + * ace/Reactor.cpp (handle_events): Updated this method to use the + ACE_Countdown_Time::update method after the mutex has been + acquired. + + * ace/Time_Value.cpp (update): Added an ACE_Countdown_Time::update + method that calls stop and start. This is useful for methods + such as ACE_Reactor::handle_events that need to update timeout + values after acquiring locks, but before waiting on the + demultiplexing mechanism (e.g. select). + + * ace/ReactorEx.cpp (handle_events): Modularized the + implementation of handle_events. Now it uses helper functions + to significantly simplify the implementation. Also updated the + header file documentation. + + * ace/Timer_Queue: Added a timer_skew_ data member and accessor + methods to ACE_Timer_Queue. Also added an expire method that + calls gettimeofday and adds the timer_skew_ for you. These + changes will help simplify Reactor, Proactor, and ReactorEx + code. + + * ace/Reactor : Removed timer_skew_. This code now just calles + timer_queue->expire () with no parameters. Very clean. + + * ace/ReactorEx : Removed timer_skew_ code. + + * ace/Proactor : Removed timer_skew_ code. + + * examples/Proactor/test_proactor.cpp: Fixed this application so + that it exits when all the data has been sent and received. + Previously, it used a cool timeout mechanism to "guess" when all + the data had been received. Ahh, but we can't have too much + fun, or people start to get nervous. + + * ace/Service_Config.cpp (run_reactorEx_event_loop (Time_Value)): + Fixed the implementation of this method. It now handles + reactorEx events until end_reactorEx_event_loop is called, or + the specified time value expires. Also fixed the + run_proactor_event_loop (Time_Value) method. + + * examples/ReactorEx/test_timeout.cpp: Added a new example + application that shows how to use + Service_Config::run_reactorEx_event_loop with timeouts. Check + the examples/ReactorEx/README file for more details. + + * examples/Proactor/test_timeout.cpp: Added a new example + application that shows how to use + Service_Config::run_proactor_event_loop with timeouts. Yes, this + screams for common dispatcher interfaces for Reactor, Proactor, + and ReactorEx. Sun Dec 8 10:27:19 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/Service_Manager.cpp (init): Changed all uses of "int port" - to "u_short port" to be consistent with socket types. + * ace/Service_Manager.cpp (init): Changed all uses of "int port" + to "u_short port" to be consistent with socket types. - * ace/ACE.cpp (bind_port): Changed all uses of "int port" to - "u_short port" to be consistent with socket types. + * ace/ACE.cpp (bind_port): Changed all uses of "int port" to + "u_short port" to be consistent with socket types. - * ace/Remote_Name_Space.cpp: Changed all uses of "int port" to - "u_short port" to be consistent with socket types. + * ace/Remote_Name_Space.cpp: Changed all uses of "int port" to + "u_short port" to be consistent with socket types. - * ace/SV_Semaphore_{Simple,Complex}: Changed all uses of "int n" - to "u_short n" to be consistent with the SYSV types! + * ace/SV_Semaphore_{Simple,Complex}: Changed all uses of "int n" + to "u_short n" to be consistent with the SYSV types! - * ace/OS.h: Moved the location of the ACE_HAS_USING_KEYWORD macros - until *after* we #include "ace/Time_Value.h". Thanks to - Matthias for this. + * ace/OS.h: Moved the location of the ACE_HAS_USING_KEYWORD macros + until *after* we #include "ace/Time_Value.h". Thanks to + Matthias for this. - * ace/Signal.cpp: Finished implementing the - ace_signal_handlers_dispatching logic, which wasn't done - entirely earlier. Thanks to Alexandre Karev - <Alexandre.Karev@cern.ch> for reporting this. + * ace/Signal.cpp: Finished implementing the + ace_signal_handlers_dispatching logic, which wasn't done + entirely earlier. Thanks to Alexandre Karev + <Alexandre.Karev@cern.ch> for reporting this. - * netsvcs/servers/main.cpp (main): Fixed several small bugs in the - netsvcs main test program. Thanks to Alexandre Karev - <Alexandre.Karev@cern.ch> for finding this. + * netsvcs/servers/main.cpp (main): Fixed several small bugs in the + netsvcs main test program. Thanks to Alexandre Karev + <Alexandre.Karev@cern.ch> for finding this. - * ace/Reactor: Removed the timer_skew_ data member from the - ACE_Reactor since this is now covered by the - ACE_Timer_Queue. + * ace/Reactor: Removed the timer_skew_ data member from the + ACE_Reactor since this is now covered by the + ACE_Timer_Queue. - * ace/Reactor.cpp (handle_events): Added the new version of the - ACE_Countdown_Time to simplify the code. + * ace/Reactor.cpp (handle_events): Added the new version of the + ACE_Countdown_Time to simplify the code. - * ace/Time_Value: Added a new class called ACE_Countdown_Time, - which is used by the Reactor, ReactorEx, and Proactor to keep - track of how much time elapsed. + * ace/Time_Value: Added a new class called ACE_Countdown_Time, + which is used by the Reactor, ReactorEx, and Proactor to keep + track of how much time elapsed. - * ace/config-win32-msvc4.0.h: Added a change that forces the MSVC - compiler to reference the proper Winsock - lib during linking of - ACE. This change is necessary because a) in the release version - the link to the winsock.lib was completly missing and b) only - wsock32.lib has been included (which is wrong when WinSock2 is - used). Thanks to Matthias for this. + * ace/config-win32-msvc4.0.h: Added a change that forces the MSVC + compiler to reference the proper Winsock - lib during linking of + ACE. This change is necessary because a) in the release version + the link to the winsock.lib was completly missing and b) only + wsock32.lib has been included (which is wrong when WinSock2 is + used). Thanks to Matthias for this. - * ace/Module.cpp (ACE_Module): Added code to zero-out the - q_pair_[2] pointers. Thanks to Matthias for this. + * ace/Module.cpp (ACE_Module): Added code to zero-out the + q_pair_[2] pointers. Thanks to Matthias for this. - * tests: Removed the argv name from most main() functions so that - we don't get warnings... + * tests: Removed the argv name from most main() functions so that + we don't get warnings... * examples/Threads: Fixed some errors in the threads examples - directory, most of which are ambigious overloads. Also included - a (MSVC 4.1) makefile for all tests in this directory. Thanks - to Matthias for this. + directory, most of which are ambigious overloads. Also included + a (MSVC 4.1) makefile for all tests in this directory. Thanks + to Matthias for this. * examples/Threads: Renamed all the files by removing the word - "test_" at the beginning. This is redundant! + "test_" at the beginning. This is redundant! - * tests/TSS_Test.cpp: If we are running AIX (i.e., if - ACE_TEMPLATES_REQUIRE_PRAGMA), then conditionally avoid - compiling this test program because it doesn't work unless we - split off class Errno due to AIX's rules for generating - templates. This is too much work to get right... + * tests/TSS_Test.cpp: If we are running AIX (i.e., if + ACE_TEMPLATES_REQUIRE_PRAGMA), then conditionally avoid + compiling this test program because it doesn't work unless we + split off class Errno due to AIX's rules for generating + templates. This is too much work to get right... - * ace/OS.i (thr_self): Updated the conditional compilation tests - so that we check for ACE_HAS_THREAD_SELF first. Thanks to Chris - Lahey for this. + * ace/OS.i (thr_self): Updated the conditional compilation tests + so that we check for ACE_HAS_THREAD_SELF first. Thanks to Chris + Lahey for this. - * ace/{config-osf1-3.2.h,config-aix-4.1.x.h}: Updated this file so - that is has the new ACE_HAS_THREAD_SELF macro, which indicates - that the platform uses thread_self() rather than pthread_self(). + * ace/{config-osf1-3.2.h,config-aix-4.1.x.h}: Updated this file so + that is has the new ACE_HAS_THREAD_SELF macro, which indicates + that the platform uses thread_self() rather than pthread_self(). - * ace/config-aix-4.1.x.h: According to Chris Lahey - <Chris_Lahey@cccis.com>, AIX 4.1.x should have ACE_HAS_PTHREADS - rather than ACE_HAS_DCETHREADS. + * ace/config-aix-4.1.x.h: According to Chris Lahey + <Chris_Lahey@cccis.com>, AIX 4.1.x should have ACE_HAS_PTHREADS + rather than ACE_HAS_DCETHREADS. - * ace/Thread_Manager: Removed the thread_descriptor_i() methods - and replaced them by generalizing the find() method to become - find_thread() and find_hthread(). Thanks to Hamutal Yanay - <Hamutal_Yanay@mail.icomverse.com> for suggesting this. + * ace/Thread_Manager: Removed the thread_descriptor_i() methods + and replaced them by generalizing the find() method to become + find_thread() and find_hthread(). Thanks to Hamutal Yanay + <Hamutal_Yanay@mail.icomverse.com> for suggesting this. Sun Dec 8 14:39:53 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu> - * ace/Timer_Queue: Added a timer_skew_ data member and accessor - methods to ACE_Timer_Queue. Also added an expire method - that calls gettimeofday and adds the timer_skew_ for you. These - changes will help simplify Reactor, Proactor, and ReactorEx - code. + * ace/Timer_Queue: Added a timer_skew_ data member and accessor + methods to ACE_Timer_Queue. Also added an expire method + that calls gettimeofday and adds the timer_skew_ for you. These + changes will help simplify Reactor, Proactor, and ReactorEx + code. Sat Dec 7 01:14:04 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu> - * tests/Process_Mutex_Test.cpp: Added new test which checks the - functionality of a ACE_Process_Mutex. Abandoned mutexes can be - created by selecting the correct command-line arguments. + * tests/Process_Mutex_Test.cpp: Added new test which checks the + functionality of a ACE_Process_Mutex. Abandoned mutexes can be + created by selecting the correct command-line arguments. - * examples/Reactor/ReactorEx/test_reactorEx.cpp: Reverted back to - old scheme which does not utilize traits. + * examples/Reactor/ReactorEx/test_reactorEx.cpp: Reverted back to + old scheme which does not utilize traits. - * ace/Task_T.h: Removed the synchronization trait in Task. This is - because template typedefs are only supported by a few - platforms. Sigh ;-) + * ace/Task_T.h: Removed the synchronization trait in Task. This is + because template typedefs are only supported by a few + platforms. Sigh ;-) Sat Dec 7 16:55:37 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/Thread_Manager.cpp: Because thread_descriptor_i() only returns - 0 or -1 on failure the code for - ACE_Thread_Manager::thr_self(ACE_hthread_t &) should read: + * ace/Thread_Manager.cpp: Because thread_descriptor_i() only returns + 0 or -1 on failure the code for + ACE_Thread_Manager::thr_self(ACE_hthread_t &) should read: - if (-1 == this->thread_descriptor_i (id, td)) - return -1; - handle = &td.thr_handle_; + if (-1 == this->thread_descriptor_i (id, td)) + return -1; + handle = &td.thr_handle_; - Thanks to Matthias for reporting this. + Thanks to Matthias for reporting this. - * ace/OS: Added a new static instance of ACE_thread_key_t to work - around the pthreads implementation on MVS (which doesn't store - TSS keys as ints!). Thanks to Chuck Gehr for reporting this. + * ace/OS: Added a new static instance of ACE_thread_key_t to work + around the pthreads implementation on MVS (which doesn't store + TSS keys as ints!). Thanks to Chuck Gehr for reporting this. - * ace/config-mvs.h: Added #define ACE_TEMPLATES_REQUIRE_SOURCE for - MVS C++. Thanks to Chuck Gehr for reporting this. + * ace/config-mvs.h: Added #define ACE_TEMPLATES_REQUIRE_SOURCE for + MVS C++. Thanks to Chuck Gehr for reporting this. - * ace/Signal.cpp: ace_dispatcher was being set to - ace_signal_handlers_dispatch() which calls - ACE_Sig_Handlers::dispatch (when ACE_HAS_SIC_C_FUNC is defined), - whereas it was set to ACE_SigHanlder::dispatch (no s) if not - defined. I intended to set this to ace_signal_handler_dispatch - (no s). Thanks to Chuck Gehr for reporting this. + * ace/Signal.cpp: ace_dispatcher was being set to + ace_signal_handlers_dispatch() which calls + ACE_Sig_Handlers::dispatch (when ACE_HAS_SIC_C_FUNC is defined), + whereas it was set to ACE_SigHanlder::dispatch (no s) if not + defined. I intended to set this to ace_signal_handler_dispatch + (no s). Thanks to Chuck Gehr for reporting this. - * ace/Makefile: Fixed a small typo where I wasn't matching char - *getenv in the sed regular expression. + * ace/Makefile: Fixed a small typo where I wasn't matching char + *getenv in the sed regular expression. - * ace/{OS,Synch}: Moved various classes around so that things will - compile correctly when ACE_WIN32 is defined but ACE_HAS_THREADS - is *not* defined. Thanks to Robert Lyng - <RLyng@msmail.hsii.ccare.com> for reporting this. + * ace/{OS,Synch}: Moved various classes around so that things will + compile correctly when ACE_WIN32 is defined but ACE_HAS_THREADS + is *not* defined. Thanks to Robert Lyng + <RLyng@msmail.hsii.ccare.com> for reporting this. Sat Dec 7 16:55:37 1996 Matthias Kerkhoff <make@cs.tu-berlin.de> - * ace/Module: Added some values to the enum so Module clients - can decide whether the reader, the writer or both should be - automatically deleted. + * ace/Module: Added some values to the enum so Module clients + can decide whether the reader, the writer or both should be + automatically deleted. - * ace/{Stream,Module,Task}: Changed some function arguments - from u_long to int (because enums are represented as ints). + * ace/{Stream,Module,Task}: Changed some function arguments + from u_long to int (because enums are represented as ints). - * ace/Task: Added a new virtual function to ACE_Task_Base - (module_closed), which by default calls - ACE_Task_Base::close(1). Please note the changed flags - argument. This allows clients to differ between calls - originated from a Module and/or Stream from those which - result from ~ACE_Task_Exit(). ~ACE_Task_Exit() calls - ACE_Task_Base::close(0). This may be or not be a problem to - existing applications. It may (hopefully not) - be neccessary to change ACE_Task_Base::module_close back to - calling ACE_Task_Base::close(0). + * ace/Task: Added a new virtual function to ACE_Task_Base + (module_closed), which by default calls + ACE_Task_Base::close(1). Please note the changed flags + argument. This allows clients to differ between calls + originated from a Module and/or Stream from those which + result from ~ACE_Task_Exit(). ~ACE_Task_Exit() calls + ACE_Task_Base::close(0). This may be or not be a problem to + existing applications. It may (hopefully not) + be neccessary to change ACE_Task_Base::module_close back to + calling ACE_Task_Base::close(0). Fri Dec 06 14:44:20 1996 David L. Levine <levine@cs.wustl.edu> - * ace/OS.cpp: added ::spa () function to allow command line args - to be passed to programs in VxWorks + * ace/OS.cpp: added ::spa () function to allow command line args + to be passed to programs in VxWorks - * ace/OS.i: (ACE_OS::gettimeofday): VxWorks returns nsec instead - of usec, so convert + * ace/OS.i: (ACE_OS::gettimeofday): VxWorks returns nsec instead + of usec, so convert Fri Dec 6 01:21:48 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu> - * examples/Reactor/ReactorEx/test_reactorEx.cpp: Rewrote the - example such that the test now uses the new Notification - Strategy scheme in ACE. This allows a message queue consumer to - wait in ReactorEx without spawning a new thread, or creating - extra Win32 events. This make the example smaller and much - cleaner. + * examples/Reactor/ReactorEx/test_reactorEx.cpp: Rewrote the + example such that the test now uses the new Notification + Strategy scheme in ACE. This allows a message queue consumer to + wait in ReactorEx without spawning a new thread, or creating + extra Win32 events. This make the example smaller and much + cleaner. - * ace/Task_T.h: Added synchronization trait to Task. + * ace/Task_T.h: Added synchronization trait to Task. - * ace/Task_T.i (msg_queue): Added a check to delete the old - message_queue if we had created it. + * ace/Task_T.i (msg_queue): Added a check to delete the old + message_queue if we had created it. - * ace/ReactorEx.cpp (remove_handler): Removed the call to set - reactorEx of the event handler to zero becauses the event - handler may no longer be there after the handle_close() - completes. + * ace/ReactorEx.cpp (remove_handler): Removed the call to set + reactorEx of the event handler to zero becauses the event + handler may no longer be there after the handle_close() + completes. Thu Dec 05 21:18:49 1996 David L. Levine <levine@cs.wustl.edu> - * ace/OS.cpp (thr_create): Oops, needed to add another check if - thr_id == 0 before assigning *thr_handle = *thr_id, for systems - such as Solaris 2.4 that don't have PTHREADS. + * ace/OS.cpp (thr_create): Oops, needed to add another check if + thr_id == 0 before assigning *thr_handle = *thr_id, for systems + such as Solaris 2.4 that don't have PTHREADS. Wed Dec 4 09:09:56 1996 David L. Levine <levine@cs.wustl.edu> - * ace/Log_Msg.cpp (log): added printout to stderr before call - to exit(). Silent calls to exit() are bad :-} + * ace/Log_Msg.cpp (log): added printout to stderr before call + to exit(). Silent calls to exit() are bad :-} - * performance-tests/Synch-Benchmarks/Options.cpp (print_results): - only use rusage if ACE_HAS_PRUSAGE_T is #defined + * performance-tests/Synch-Benchmarks/Options.cpp (print_results): + only use rusage if ACE_HAS_PRUSAGE_T is #defined - * examples/IPC_SAP/SOCK_SAP/CPP-in{client,server}.cpp: - use blocking connect on VxWorks + * examples/IPC_SAP/SOCK_SAP/CPP-in{client,server}.cpp: + use blocking connect on VxWorks - * ace/config-vxworks*.h: added ACE_LACKS_MPROTECT and + * ace/config-vxworks*.h: added ACE_LACKS_MPROTECT and ACE_HAS_STRERROR - * include/makeinclude/platform_vxworks*: removed INCLDIRS and - added indlib.o to GreenHills LIBS + * include/makeinclude/platform_vxworks*: removed INCLDIRS and + added indlib.o to GreenHills LIBS - * Makefile (cleanrelease and release): changed "rm -r" of - ACE.tar.gz to "rm -f", that's probably what was meant + * Makefile (cleanrelease and release): changed "rm -r" of + ACE.tar.gz to "rm -f", that's probably what was meant Wed Dec 4 00:27:07 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu> - * ace/config-win32-msvc*.0.h: Added NOMINMAX. + * ace/config-win32-msvc*.0.h: Added NOMINMAX. - * ace/Registry: Removed NOMINMAX and - VC_PLUS_PLUS_NESTED_CLASS_PROBLEM flags from the header file. - The VC_PLUS_PLUS_NESTED_CLASS_PROBLEM flag is no longer needed - and NOMINMAX is defined at the project level. Thanks to - Matthias Kerkhoff <make@cs.tu-berlin.de> for suggesting this. + * ace/Registry: Removed NOMINMAX and + VC_PLUS_PLUS_NESTED_CLASS_PROBLEM flags from the header file. + The VC_PLUS_PLUS_NESTED_CLASS_PROBLEM flag is no longer needed + and NOMINMAX is defined at the project level. Thanks to + Matthias Kerkhoff <make@cs.tu-berlin.de> for suggesting this. Mon Dec 2 14:13:44 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace: Changed all occurrences of ACE_Event_Handler - reactorex() to reactorEx() to be consistent. Thanks to - Matthias for suggesting this. + * ace: Changed all occurrences of ACE_Event_Handler + reactorex() to reactorEx() to be consistent. Thanks to + Matthias for suggesting this. - * ace/Message_Queue.cpp (close): We didn't allocate the memory for - the notification_strategy_, so we darn well can't delete it! - Thanks to Matthias for finding this. + * ace/Message_Queue.cpp (close): We didn't allocate the memory for + the notification_strategy_, so we darn well can't delete it! + Thanks to Matthias for finding this. - * ace/Log_Msg.cpp (ACE_TSS_cleanup): Made the ACE_TSS_cleanup - function extern "C" for MVS C++ and compilers like it... Thanks - to Chuck Gehr for reporting this. + * ace/Log_Msg.cpp (ACE_TSS_cleanup): Made the ACE_TSS_cleanup + function extern "C" for MVS C++ and compilers like it... Thanks + to Chuck Gehr for reporting this. - * tests/Naming_Test.cpp (main): Added delete ns_context to close - things down and free up the semaphores. Thanks to David Levine - for suggesting this. + * tests/Naming_Test.cpp (main): Added delete ns_context to close + things down and free up the semaphores. Thanks to David Levine + for suggesting this. - * examples/Reactor/Misc/test_demuxing.cpp (handle_input): Fixed a - "typo" where we were accessing mb->msg_priority() *after* - deleting it! Thanks to Matthias for finding this. + * examples/Reactor/Misc/test_demuxing.cpp (handle_input): Fixed a + "typo" where we were accessing mb->msg_priority() *after* + deleting it! Thanks to Matthias for finding this. Mon Dec 2 09:57:15 1996 David L. Levine <levine@cs.wustl.edu> - * tests/run_tests.*: updated lists of tests to be run + * tests/run_tests.*: updated lists of tests to be run - * tests/*.cpp: removed trailing .cpp from argument to - ACE_START_TEST because it would appear in the log file name + * tests/*.cpp: removed trailing .cpp from argument to + ACE_START_TEST because it would appear in the log file name Mon Dec 2 00:08:51 1996 Douglas C. Schmidt <schmidt@lambada.cs.wustl.edu> - * ace/Log_Record.cpp (dump): There was an error on line 19 of - Log_Record.cpp: + * ace/Log_Record.cpp (dump): There was an error on line 19 of + Log_Record.cpp: - ACE_DEBUG ((LM_DEBUG, "\npid_ = %s\n", this->pid_)); + ACE_DEBUG ((LM_DEBUG, "\npid_ = %s\n", this->pid_)); - should be changed to: + should be changed to: - ACE_DEBUG ((LM_DEBUG, "\npid_ = %d\n", this->pid_)); + ACE_DEBUG ((LM_DEBUG, "\npid_ = %d\n", this->pid_)); - Thanks to Sandro Doro <alex@aureus.sublink.org> for reporting - this. + Thanks to Sandro Doro <alex@aureus.sublink.org> for reporting + this. - * examples/Reactor/Misc/test_handle_set.cpp: Updated the test to - remove a warning caused by sloppy nesting of loop counters. + * examples/Reactor/Misc/test_handle_set.cpp: Updated the test to + remove a warning caused by sloppy nesting of loop counters. Mon Dec 2 00:23:23 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu> - * ace/Strategies.{h,cpp}: Update the base-class and added - documentation. + * ace/Strategies.{h,cpp}: Update the base-class and added + documentation. - * tests/test_config.h: Added ACE_INIT_LOG, ACE_APPEND_LOG and - ACE_APPEND_LOG to facilitate the appending of log messages to a - file. Also changed Pipe_Test to use this new mechanism. + * tests/test_config.h: Added ACE_INIT_LOG, ACE_APPEND_LOG and + ACE_APPEND_LOG to facilitate the appending of log messages to a + file. Also changed Pipe_Test to use this new mechanism. - * test/Naming_Test: Changed test to use "lite" implementation to - speed things up. + * test/Naming_Test: Changed test to use "lite" implementation to + speed things up. - * netsvcs/lib: Fixed multiple type mismatch warnings. - - * ace/ReactorEx: Fixed syntax errors in recently modified - ReactorEx.* files + * netsvcs/lib: Fixed multiple type mismatch warnings. + + * ace/ReactorEx: Fixed syntax errors in recently modified + ReactorEx.* files - * ace/ace.{mdp.mak}: Added Strategies.cpp to VC++ makefile. + * ace/ace.{mdp.mak}: Added Strategies.cpp to VC++ makefile. Sun Dec 1 19:19:02 1996 Douglas C. Schmidt <schmidt@lambada.cs.wustl.edu> - * ace/Service_Config: Moved the #inclusion of ace/Proactor.h and - ace/ReactorEx.h from the *.h file to the *.cpp file to avoid - problems with circular dependencies. + * ace/Service_Config: Moved the #inclusion of ace/Proactor.h and + ace/ReactorEx.h from the *.h file to the *.cpp file to avoid + problems with circular dependencies. - * ace/Reactor: Added a new parameter to the Reactor's - initialization methods so that we can install a subclass of - ACE_Timer_Queue. This is in anticipation of Tim's new - "real-time" implementation of a timer queue. + * ace/Reactor: Added a new parameter to the Reactor's + initialization methods so that we can install a subclass of + ACE_Timer_Queue. This is in anticipation of Tim's new + "real-time" implementation of a timer queue. - * ace/Reactor: Changed the internal Reactor name - ACE_Notification_Handler to ACE_Reactor_Notify to be consistent - with the ACE_ReactorEx_Notify class. + * ace/Reactor: Changed the internal Reactor name + ACE_Notification_Handler to ACE_Reactor_Notify to be consistent + with the ACE_ReactorEx_Notify class. - * examples/Reactor/Misc/test_demuxing.cpp: Revised this test so - that it now illustrates the new notification mechanism of the - ACE_Message_Queue class. + * examples/Reactor/Misc/test_demuxing.cpp: Revised this test so + that it now illustrates the new notification mechanism of the + ACE_Message_Queue class. - * examples/Reactor/Misc: Changed the name of the signal_tester.cpp - file to test_demuxing.cpp, which is really what this does. + * examples/Reactor/Misc: Changed the name of the signal_tester.cpp + file to test_demuxing.cpp, which is really what this does. - * ace/{Strategies,Message_Queue}: Created a suite of - "Notification Strategies" that are used with the new - ACE_Message_Queue notification scheme. This works as - follows: + * ace/{Strategies,Message_Queue}: Created a suite of + "Notification Strategies" that are used with the new + ACE_Message_Queue notification scheme. This works as + follows: - 1. There's a new virtual hook method on ACE_Message_Queue - called notify(). Whenever a new Message_Block is - enqueued the notify() hook is called. By default, this - does nothing. + 1. There's a new virtual hook method on ACE_Message_Queue + called notify(). Whenever a new Message_Block is + enqueued the notify() hook is called. By default, this + does nothing. - 2. If you want to do something with the notify() hook, you - have two choices: + 2. If you want to do something with the notify() hook, you + have two choices: - a. You can subclass from ACE_Message_Queue and - override this method. This is an example of the - "Template Method" pattern. - - b. You can configure an ACE_Notification_Strategy * - into an ACE_Message_Queue. An - ACE_Notification_Strategy is the vehicle for - extending the behavior of ACE_Message_Queue wrt - notification *without subclassing*. Thus, it's an - example of the Bridge/Strategy patterns. + a. You can subclass from ACE_Message_Queue and + override this method. This is an example of the + "Template Method" pattern. + + b. You can configure an ACE_Notification_Strategy * + into an ACE_Message_Queue. An + ACE_Notification_Strategy is the vehicle for + extending the behavior of ACE_Message_Queue wrt + notification *without subclassing*. Thus, it's an + example of the Bridge/Strategy patterns. - 3. ACE_Notification_Strategy is defined in - ace/Strategies.{h,cpp}. There are two pre-defined - subclasses: + 3. ACE_Notification_Strategy is defined in + ace/Strategies.{h,cpp}. There are two pre-defined + subclasses: - a. ACE_Reactor_Notification_Strategy -- integrates the - ACE_Message_Queue notification into the - ACE_Reactor::notify() method. - - b. ACE_ReactorEx_Notification_Strategy -- integrates - the ACE_Message_Queue notification into the - ACE_ReactorEx::notify() method. - - Both of these can be used almost identically in order to - seamlessly integrate multiple threads of control, inserting - ACE_Message_Blocks in one or more ACE_Message_Queues, with - the various ACE event demultiplexors (i.e., ACE_Reactor - and ACE_ReactorEx). - - * ace: Created a new pair of files called Strategies_T.cpp and - Strategies_T.h and move the template ACE_*Strategies classes - into those files. This was necessary since there are now new - non-template notification strategies in Strategies.{h,cpp}. - - * ace/Message_Queue: Created a new "notification hook" mechanism - that makes it possible for event demuxers (like ACE_Reactor and - ACE_ReactorEx) to be informed automatically when a Message_Block - is inserted into the Message_Queue. This is useful for - sitations where you'd like to integrate multiple threads (each - of which is pumping data into an ACE_Message_Queue) with an - ACE_Reactor or an ACE_ReactorEx. Thanks to Matthias Kerkhoff - <make@cs.tu-berlin.de> and Luca for suggesting this. - - * ace/Synch.h: Modified the implementation of - ACE_Null_Condition_Mutex::wait() so that it always returns -1 - and sets errno to ETIME. This reflects the fact that if you'll - never be awakened if you "sleep" on a Null_Condition... - - * ace/ReactorEx: Generalized the ACE_ReactorEx so that its - notify() method now behaves like the ACE_Reactor, i.e., it can - queue up ACE_Event_Handlers that are dispatched in the ReactorEx - thread of control. - - * tests: Renamed the Shared_Memory_MM_Test.cpp to - MM_Shared_Memory_Test.cpp and remove the - Shared_Memory_SV_Test.cpp since it was redundant to the - SV_Shared_Memory_Test.cpp. - - * tests/SV_Shared_Memory_Test.cpp (main): Revised the SVSV IPC - shared memory test to be more robust. - - * ace/SV_Semaphore_Simple.cpp (open): If the char *name == 0 then - use ACE_DEFAULT_SEM_KEY instead. - - * ace/Memory_Pool: Generalized the ACE_Shared_Memory_Pool so that - there can be more than 1 shared memory pool active at a time - (similar to what we did for ACE_MMAP_Memory_Pool). - - * ace/Memory_Pool.h: There was an unnecessary - ACE_SV_Semaphore_Complex in ACE_Shared_Memory_Pool that was left - over from earlier days. I've removed this. - - * ace/Memory_Pool.cpp (ACE_Shared_Memory_Pool): Revised - the constructor so that if we get a NULL pool_name we'll - initialize the - - * examples/Makefile: Added the System_V_IPC and Shared_Memory - directories. - - * ace/Message_Queue.h: Added a virtual destructor to - ACE_Message_Queue so that it can be destroyed appropriately, - even if subclassed. - - * ace/Message_Queue.h: Renamed enqueue() to enqueue_prio() to be - consistent with the other names (e.g., enqueue_head() and - enqueue_tail(). Updated the test programs to reflect this. + a. ACE_Reactor_Notification_Strategy -- integrates the + ACE_Message_Queue notification into the + ACE_Reactor::notify() method. + + b. ACE_ReactorEx_Notification_Strategy -- integrates + the ACE_Message_Queue notification into the + ACE_ReactorEx::notify() method. + + Both of these can be used almost identically in order to + seamlessly integrate multiple threads of control, inserting + ACE_Message_Blocks in one or more ACE_Message_Queues, with + the various ACE event demultiplexors (i.e., ACE_Reactor + and ACE_ReactorEx). + + * ace: Created a new pair of files called Strategies_T.cpp and + Strategies_T.h and move the template ACE_*Strategies classes + into those files. This was necessary since there are now new + non-template notification strategies in Strategies.{h,cpp}. + + * ace/Message_Queue: Created a new "notification hook" mechanism + that makes it possible for event demuxers (like ACE_Reactor and + ACE_ReactorEx) to be informed automatically when a Message_Block + is inserted into the Message_Queue. This is useful for + sitations where you'd like to integrate multiple threads (each + of which is pumping data into an ACE_Message_Queue) with an + ACE_Reactor or an ACE_ReactorEx. Thanks to Matthias Kerkhoff + <make@cs.tu-berlin.de> and Luca for suggesting this. + + * ace/Synch.h: Modified the implementation of + ACE_Null_Condition_Mutex::wait() so that it always returns -1 + and sets errno to ETIME. This reflects the fact that if you'll + never be awakened if you "sleep" on a Null_Condition... + + * ace/ReactorEx: Generalized the ACE_ReactorEx so that its + notify() method now behaves like the ACE_Reactor, i.e., it can + queue up ACE_Event_Handlers that are dispatched in the ReactorEx + thread of control. + + * tests: Renamed the Shared_Memory_MM_Test.cpp to + MM_Shared_Memory_Test.cpp and remove the + Shared_Memory_SV_Test.cpp since it was redundant to the + SV_Shared_Memory_Test.cpp. + + * tests/SV_Shared_Memory_Test.cpp (main): Revised the SVSV IPC + shared memory test to be more robust. + + * ace/SV_Semaphore_Simple.cpp (open): If the char *name == 0 then + use ACE_DEFAULT_SEM_KEY instead. + + * ace/Memory_Pool: Generalized the ACE_Shared_Memory_Pool so that + there can be more than 1 shared memory pool active at a time + (similar to what we did for ACE_MMAP_Memory_Pool). + + * ace/Memory_Pool.h: There was an unnecessary + ACE_SV_Semaphore_Complex in ACE_Shared_Memory_Pool that was left + over from earlier days. I've removed this. + + * ace/Memory_Pool.cpp (ACE_Shared_Memory_Pool): Revised + the constructor so that if we get a NULL pool_name we'll + initialize the + + * examples/Makefile: Added the System_V_IPC and Shared_Memory + directories. + + * ace/Message_Queue.h: Added a virtual destructor to + ACE_Message_Queue so that it can be destroyed appropriately, + even if subclassed. + + * ace/Message_Queue.h: Renamed enqueue() to enqueue_prio() to be + consistent with the other names (e.g., enqueue_head() and + enqueue_tail(). Updated the test programs to reflect this. Sun Dec 1 12:06:46 1996 David L. Levine <levine@cs.wustl.edu> - * ace/config-vxworks*.h: Removed #define ACE_HAS_STRBUF_T: - copy and paste error + * ace/config-vxworks*.h: Removed #define ACE_HAS_STRBUF_T: + copy and paste error Sun Dec 1 00:15:45 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu> - * ace/OS.h: ACE_NEW_RETURN and ACE_NEW were reverted back to the - old implementation. This is temporary till the infinite loop - problem with ACE_ERROR, ACE_DEBUG and ACE_TRACE being called - from ACE_Log_Msg::instance() is fixed. + * ace/OS.h: ACE_NEW_RETURN and ACE_NEW were reverted back to the + old implementation. This is temporary till the infinite loop + problem with ACE_ERROR, ACE_DEBUG and ACE_TRACE being called + from ACE_Log_Msg::instance() is fixed. - * ace/Synch.h: Repositioned ACE_Semaphore such that there are no - problems in compiling ACE_Process_Semaphore under Win32. + * ace/Synch.h: Repositioned ACE_Semaphore such that there are no + problems in compiling ACE_Process_Semaphore under Win32. - * ace/config-win32-msvc4.0.h: Changed ACE_HAS_STL to - ACE_HAS_STANDARD_CPP_LIBRARY which is more descriptive (and what - is expected by stdcpp.h). + * ace/config-win32-msvc4.0.h: Changed ACE_HAS_STL to + ACE_HAS_STANDARD_CPP_LIBRARY which is more descriptive (and what + is expected by stdcpp.h). - * ace/Registry.h: Added the setting of NOMINMAX and - VC_PLUS_PLUS_NESTED_CLASS_PROBLEM flags so that STL behaves - properly. + * ace/Registry.h: Added the setting of NOMINMAX and + VC_PLUS_PLUS_NESTED_CLASS_PROBLEM flags so that STL behaves + properly. - * ace/Log_Msg.cpp (open): Fixed a small bug such that msg_ostream - is only set this to cerr if it hasn't already been set. + * ace/Log_Msg.cpp (open): Fixed a small bug such that msg_ostream + is only set this to cerr if it hasn't already been set. - * STL: Updated the STL directory will latest code from - http://www.rahul.net/terris/ and also added the original - readme2.stl file. Created ACE_Changes which has the list of - changes made to the STL distribution. + * STL: Updated the STL directory will latest code from + http://www.rahul.net/terris/ and also added the original + readme2.stl file. Created ACE_Changes which has the list of + changes made to the STL distribution. Sat Nov 30 12:02:00 1996 Douglas C. Schmidt <schmidt@lambada.cs.wustl.edu> - * ace/OS.h: Added a new pragma that disables warning #4097 in - MSVC++ (typedef-name used as synonym for class-name). This - keeps Win32 clients from getting warning on Win32. Thanks to - Matthias Kerkhoff <make@cs.tu-berlin.de> for this. + * ace/OS.h: Added a new pragma that disables warning #4097 in + MSVC++ (typedef-name used as synonym for class-name). This + keeps Win32 clients from getting warning on Win32. Thanks to + Matthias Kerkhoff <make@cs.tu-berlin.de> for this. - * ace/Log_Msg.cpp: Created a new macro called ACE_NEW_RETURN_I, - which is used withing ACE_Log_Msg::instance(). We can't afford - to call ACE_LOG_MSG->instance() from within - ACE_Log_Msg::instance() or else we will recurse infinitely! - Thanks to Irfan for finding this. + * ace/Log_Msg.cpp: Created a new macro called ACE_NEW_RETURN_I, + which is used withing ACE_Log_Msg::instance(). We can't afford + to call ACE_LOG_MSG->instance() from within + ACE_Log_Msg::instance() or else we will recurse infinitely! + Thanks to Irfan for finding this. - * ace/OS.i (mprotect): Added a #if !defined (ACE_LACKS_MPROTECT) - conditional compilation directive to support the EPLX real time - OS from CDC (based on LYNX). Thanks to Alexandre Karev - <karev@cern.ch> for reporting this. + * ace/OS.i (mprotect): Added a #if !defined (ACE_LACKS_MPROTECT) + conditional compilation directive to support the EPLX real time + OS from CDC (based on LYNX). Thanks to Alexandre Karev + <karev@cern.ch> for reporting this. Sat Nov 20 12:23:45 1996 Prashant Jain <pjain@merengue.cs.wustl.edu> - * tests/Naming_Test.cpp (main): Added code that creates a unique - backing store name and removes the backing store every time - the test is run. + * tests/Naming_Test.cpp (main): Added code that creates a unique + backing store name and removes the backing store every time + the test is run. Fri Nov 29 12:54:12 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/Stream.cpp (open): Changed tail->close() and head->close() - to delete tail and delete head now that we've got our new - changes. + * ace/Stream.cpp (open): Changed tail->close() and head->close() + to delete tail and delete head now that we've got our new + changes. - * ace/Module: Moved the destructor from the private part of the - class to the public part and changed things so that close() no - longer "deletes this." This is too confusing and error-prone. - In addition, changed the Module destructor so that it will try - to call close() only if close hasn't already been called. + * ace/Module: Moved the destructor from the private part of the + class to the public part and changed things so that close() no + longer "deletes this." This is too confusing and error-prone. + In addition, changed the Module destructor so that it will try + to call close() only if close hasn't already been called. - * ace/Synch.h: Moved ACE_Process_Semaphore out of the - ACE_HAS_THREADS section since this is available on platforms - that don't have threads. + * ace/Synch.h: Moved ACE_Process_Semaphore out of the + ACE_HAS_THREADS section since this is available on platforms + that don't have threads. - * Now that Log_Msg.h is being #included in OS.h, I removed all - other #includes of Log_Msg.h throughout the rest of ACE. + * Now that Log_Msg.h is being #included in OS.h, I removed all + other #includes of Log_Msg.h throughout the rest of ACE. - * ace/OS.h: Rearranged the definition of the ACE_NEW and - ACE_NEW_RETURN macros so that they come at the end of OS.h. - This enables us to #include "ace/Log_Msg.h" here, as well, so - that we can make use of the ACE_LOG_MSG macro in the definition - of ACE_NEW and ACE_NEW_RETURN. + * ace/OS.h: Rearranged the definition of the ACE_NEW and + ACE_NEW_RETURN macros so that they come at the end of OS.h. + This enables us to #include "ace/Log_Msg.h" here, as well, so + that we can make use of the ACE_LOG_MSG macro in the definition + of ACE_NEW and ACE_NEW_RETURN. - * ace/Singleton.cpp (instance): Updated the ACE_Singleton - implementation to use the new ACE_NEW and ACE_NEW_RETURN macros. + * ace/Singleton.cpp (instance): Updated the ACE_Singleton + implementation to use the new ACE_NEW and ACE_NEW_RETURN macros. - * ace/OS.h: Revised the ACE_NEW and ACE_NEW_RETURN macros so that - they check to see if the constructor of the newly allocated - object failed (i.e., by checking the ACE_LOG_MSG->op_status() - value). + * ace/OS.h: Revised the ACE_NEW and ACE_NEW_RETURN macros so that + they check to see if the constructor of the newly allocated + object failed (i.e., by checking the ACE_LOG_MSG->op_status() + value). - * tests/Reactors_Test.cpp: Added an ACE_ASSERT() after each - Reactor we create in order to make sure it worked. + * tests/Reactors_Test.cpp: Added an ACE_ASSERT() after each + Reactor we create in order to make sure it worked. - * tests/Reactors_Test.cpp: Added an ACE_Service_Config daemon - instance within main() in order to ensure that the Reactor is - cleaned up appropriately. This avoids problems with NT 4.0, - where there seems to be a bug if you don't shut down sockets - explicitly when the process exits. + * tests/Reactors_Test.cpp: Added an ACE_Service_Config daemon + instance within main() in order to ensure that the Reactor is + cleaned up appropriately. This avoids problems with NT 4.0, + where there seems to be a bug if you don't shut down sockets + explicitly when the process exits. - * tests/Pipe_Test.cpp (main): Improved the pipe test so that it - automatically iterates multiple times in order to test whether - there are problems with rapidly opening and closing NT socket - handles... + * tests/Pipe_Test.cpp (main): Improved the pipe test so that it + automatically iterates multiple times in order to test whether + there are problems with rapidly opening and closing NT socket + handles... Thu Nov 28 03:07:48 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu> - * netsvcs: netsvcs.mak and netsvcs.mdp were changed such that - it becomes easier to find ace.lib while compiling netsvcs.lib. + * netsvcs: netsvcs.mak and netsvcs.mdp were changed such that + it becomes easier to find ace.lib while compiling netsvcs.lib. - * tests/Pipe_Test.cpp: Add more instances of ACE_Pipes to the test - and also added an option to close down the pipe. + * tests/Pipe_Test.cpp: Add more instances of ACE_Pipes to the test + and also added an option to close down the pipe. Thu Nov 28 00:53:16 1996 Douglas C. Schmidt <schmidt@lambada.cs.wustl.edu> - * ace/config-sunos4-g++.h: This config file contained two - exclusive definitions + * ace/config-sunos4-g++.h: This config file contained two + exclusive definitions - #define ACE_HAS_SVR4_SIGNAL_T + #define ACE_HAS_SVR4_SIGNAL_T - and + and - #define ACE_HAS_SUNOS4_SIGNAL_T + #define ACE_HAS_SUNOS4_SIGNAL_T - The first one was moved out. Thanks to Alexandre Karev - <akg@na47sun05.cern.ch> for reporting this. + The first one was moved out. Thanks to Alexandre Karev + <akg@na47sun05.cern.ch> for reporting this. - * ace/OS.h: + * ace/OS.h: - #elif defined (ACE_HAS_SUNOS4_SIGNAL_T) + #elif defined (ACE_HAS_SUNOS4_SIGNAL_T) - was changed from + was changed from - typedef void (*ACE_SignalHandler)(void); - typedef void (*ACE_SignalHandlerV)(void); + typedef void (*ACE_SignalHandler)(void); + typedef void (*ACE_SignalHandlerV)(void); - to + to - typedef void (*ACE_SignalHandler)(...); - typedef void (*ACE_SignalHandlerV)(...); + typedef void (*ACE_SignalHandler)(...); + typedef void (*ACE_SignalHandlerV)(...); - to make gcc happy. The first one was moved out. Thanks to - Alexandre Karev <akg@na47sun05.cern.ch> for reporting this. + to make gcc happy. The first one was moved out. Thanks to + Alexandre Karev <akg@na47sun05.cern.ch> for reporting this. - * ace/Pipe.cpp (close): Arrgh! Fixed a total braino where we - weren't using ACE_OS::closesocket() to close down the Win32 - ACE_Pipe implementation, which uses sockets... Thanks to Irfan - and Tilo for helping me figure this one out! + * ace/Pipe.cpp (close): Arrgh! Fixed a total braino where we + weren't using ACE_OS::closesocket() to close down the Win32 + ACE_Pipe implementation, which uses sockets... Thanks to Irfan + and Tilo for helping me figure this one out! - * tests/CPP_Test.cpp: Completely reworked this test so that it - should run correctly on Win32 and UNIX. + * tests/CPP_Test.cpp: Completely reworked this test so that it + should run correctly on Win32 and UNIX. Wed Nov 27 16:50:17 1996 Douglas C. Schmidt <schmidt@lambada.cs.wustl.edu> - * Put out a new beta of ACE 4.0.33. + * Put out a new beta of ACE 4.0.33. - * tests/Mutex_Test.cpp (test): Fixed the test() function so that - it doesn't use the ACE_Thread_Control unless we explicitly want - to use threads. + * tests/Mutex_Test.cpp (test): Fixed the test() function so that + it doesn't use the ACE_Thread_Control unless we explicitly want + to use threads. - * tests/test_config.h: Added addition information about the - process id and thread id of the main thread. + * tests/test_config.h: Added addition information about the + process id and thread id of the main thread. - * ace/Synch.h: Speed things up a bit by conditionally #including - "ace/SV_Semaphore_Complex.h" only if we are compiling on a - non-Win32 platform or a POSIX platform. Thanks to Matthias - Kerkhoff <make@cs.tu-berlin.de> for this. + * ace/Synch.h: Speed things up a bit by conditionally #including + "ace/SV_Semaphore_Complex.h" only if we are compiling on a + non-Win32 platform or a POSIX platform. Thanks to Matthias + Kerkhoff <make@cs.tu-berlin.de> for this. - * ace/SV_Semaphore_Complex.h: Incorporated the new ACE_USING - macro, which is useful if you have + * ace/SV_Semaphore_Complex.h: Incorporated the new ACE_USING + macro, which is useful if you have class b { - a() - }; + a() + }; class d : private b { - b::a() // still works, but depriciated - using b::a() // should be used instead - }; + b::a() // still works, but depriciated + using b::a() // should be used instead + }; - Thanks to Matthias Kerkhoff <make@cs.tu-berlin.de> for this. + Thanks to Matthias Kerkhoff <make@cs.tu-berlin.de> for this. - * ace/OS.h: Added a new macro called ACE_USING, which is used to - distinguish between platforms that support namespace "using" - semantics and those that don't. Thanks to Matthias Kerkhoff - <make@cs.tu-berlin.de> for this. + * ace/OS.h: Added a new macro called ACE_USING, which is used to + distinguish between platforms that support namespace "using" + semantics and those that don't. Thanks to Matthias Kerkhoff + <make@cs.tu-berlin.de> for this. * examples/Misc/test_XtReactor[12].cpp: Had to add the infamous - #define String XtString before including Xm/PushB.h. Also, there - were some references to XtReactor when the class is now - ACE_XtReactor. Thanks to Gonzalo Diethelm <gonzo@ing.puc.cl> - for reporting this. - - * ace/XtReactor.cpp (ACE_XtReactor): timeout_ was not being - initialized on the constructor, and that caused a core dump. - Thanks to Gonzalo Diethelm <gonzo@ing.puc.cl> for reporting - this. - - * ace/SOCK.h: Put the open() call in the protected part of the - class since we generally don't want clients to call this - directly. Thanks to Eric Newton <ecn@clark.net> for pointing - this out. - - * ace/ACE.cpp: Fixed a bug where sin.sin_family was being set - rather than sin.sin_len. Thanks to Chuck Gehr - <gehr@sweng.stortek.com> for reporting this. - - * ace/ACE.cpp: Enhanced the ACE::{send_n,recv_n} methods so that - they check to see if errno == EWOULDBLOCK when ACE_OS::send() or - ACE_OS::recv() returns -1. If that's the case, then they keep - iterating. - - Thanks to Mehdi TABATABAI <Mehdi.TABATABAI@ed.gva.sita.int> for - this suggestion. - - * ace/Log_Msg.h: Fixed ACE_RETURN so that it only has 1 parameter - if ACE_NLOGGING is enabled. Thanks to Antonio Tortorici - <antonio@rh0011.roma.tlsoft.it> for reporting this. - - * ace/config-vxworks*.h: Added ACE_NTRACE macros so that - tracing doesn't magically turn on! - - * ace/Task.cpp (activate): the &ACE_Task_Base::svc_run() argument - needs a cast to ACE_THR_FUNC, because that's what - ACE_Thread_Manager::spawn_n() requires. On VxWorks, - ACE_THR_FUNC functions return an int, while svc_run() returns - void *. Thanks to David Levine for this. - - * ace/Thread_Manager.cpp (kill_thr): I was mistakenly passing in - the thr_handle_ where I should have been passing in the thr_id_. - In addition, made sure we don't set errno to the wrong value... - Thanks to Ross Dargahi <rossd@acm.org> for reporting this. - - * ace/{Synch_T,Synch}.h: If we don't actually own the lock - anymore, don't try to do a release. Thanks to Jonathan Biggar - <jon@sems.com> for reporting this bug. - - * ace/ACE.cpp (handle_timed_complete): Added an ex_handles mask so - that non-blocking connects will work correctly on Win32. Thanks - to Antonio Tortorici <antonio@rh0011.roma.tlsoft.it> for - reporting this fix. - - * ace/Message_Queue.h: Updated the documentation to stress the - fact that the timeouts are specified in *absolute* time, rather - than in relative time. Thanks to Bob Dunmire <bobd@titan.com> - for reporting this. - - * tests/test_config.h: Modified the ACE_END_TEST macro so that the - log file is closed. This works around a problem on VxWorks - where destructors of static objects don't get closed - automatically. Thanks to David Levine for this fix. - - * ace/OS.i (rand_r): Added a fix for Digital UNIX so that rand_r - works correctly in MT settings. Thanks to Thilo Kielmann - <kielmann@informatik.uni-siegen.de> for this. - -Wed Nov 27 16:12:00 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu> - - * ace/Stream.cpp: Fixed a bug in ACE_Stream::open to - allow applications to specify a tail or a head without - having to specify both. This was needed by the ACE_Pipeline - application since it only needs a Pipeline-specific tail - (not a head). + #define String XtString before including Xm/PushB.h. Also, there + were some references to XtReactor when the class is now + ACE_XtReactor. Thanks to Gonzalo Diethelm <gonzo@ing.puc.cl> + for reporting this. + + * ace/XtReactor.cpp (ACE_XtReactor): timeout_ was not being + initialized on the constructor, and that caused a core dump. + Thanks to Gonzalo Diethelm <gonzo@ing.puc.cl> for reporting + this. -Tue Nov 26 18:00:25 1996 Douglas C. Schmidt <schmidt@lambada.cs.wustl.edu> + * ace/SOCK.h: Put the open() call in the protected part of the + class since we generally don't want clients to call this + directly. Thanks to Eric Newton <ecn@clark.net> for pointing + this out. - * ace: Functions should not be declared with ACE_INLINE in a - .cpp file. Fixed this problem in the following files: + * ace/ACE.cpp: Fixed a bug where sin.sin_family was being set + rather than sin.sin_len. Thanks to Chuck Gehr + <gehr@sweng.stortek.com> for reporting this. - SPIPE_Acceptor.cpp:116:ACE_INLINE - TLI_Acceptor.cpp:145:ACE_INLINE int - TLI_Acceptor.cpp:192:ACE_INLINE - Task.cpp:121:ACE_INLINE int - Task.cpp:130:ACE_INLINE void + * ace/ACE.cpp: Enhanced the ACE::{send_n,recv_n} methods so that + they check to see if errno == EWOULDBLOCK when ACE_OS::send() or + ACE_OS::recv() returns -1. If that's the case, then they keep + iterating. - * ace/{OS,Thread}: Added Chuck Gehr's suggested change for the - pthread_keycreate() routine, which must take extern "C" - functions on MVC C++. This fix isn't perfect, but it should - allow the ACE library to build... + Thanks to Mehdi TABATABAI <Mehdi.TABATABAI@ed.gva.sita.int> for + this suggestion. - * man: Updated all of the manual pages and HTML files. + * ace/Log_Msg.h: Fixed ACE_RETURN so that it only has 1 parameter + if ACE_NLOGGING is enabled. Thanks to Antonio Tortorici + <antonio@rh0011.roma.tlsoft.it> for reporting this. - * ace/Signal.cpp: Updated the code so that we don't try to - register a static C++ dispatch method if ACE_HAS_SIG_C_FUNC is - defined. This fixes problems with the MVS C++ compiler... - Thanks to Chuck Gehr for this suggestion. + * ace/config-vxworks*.h: Added ACE_NTRACE macros so that + tracing doesn't magically turn on! - * ace/OS.h: Added extern "C" { } wrappers around the signal - handling mechanisms if ACE_HAS_SIG_C_FUNC is defined. This - fixes problems with the MVS C++ compiler... Thanks to Chuck - Gehr for this suggestion. + * ace/Task.cpp (activate): the &ACE_Task_Base::svc_run() argument + needs a cast to ACE_THR_FUNC, because that's what + ACE_Thread_Manager::spawn_n() requires. On VxWorks, + ACE_THR_FUNC functions return an int, while svc_run() returns + void *. Thanks to David Levine for this. - * ace/Reactor.cpp (open): Moved the initialization of the - ACE_Timer_Queue field to *before* the handler_rep_.open() call. - We do this first in case the handler_rep_ call fails (which it - sometimes does on Win32 when we restart applications quickly due - to the use of sockets as a notification mechanism). At least - this way the timer_queue_ isn't 0, so we can still use the - Reactor as a timer... Thanks to Tilo Christ for motivating - me to fix this. + * ace/Thread_Manager.cpp (kill_thr): I was mistakenly passing in + the thr_handle_ where I should have been passing in the thr_id_. + In addition, made sure we don't set errno to the wrong value... + Thanks to Ross Dargahi <rossd@acm.org> for reporting this. - * ace/OS.i: Apparently, DIGITAL_UNIX gethostbyname() returns - thread-specific storage, so we can use this for - gethostbyname_r(). + * ace/{Synch_T,Synch}.h: If we don't actually own the lock + anymore, don't try to do a release. Thanks to Jonathan Biggar + <jon@sems.com> for reporting this bug. - * ace/OS.i: Need to add: + * ace/ACE.cpp (handle_timed_complete): Added an ex_handles mask so + that non-blocking connects will work correctly on Win32. Thanks + to Antonio Tortorici <antonio@rh0011.roma.tlsoft.it> for + reporting this fix. - #else + * ace/Message_Queue.h: Updated the documentation to stress the + fact that the timeouts are specified in *absolute* time, rather + than in relative time. Thanks to Bob Dunmire <bobd@titan.com> + for reporting this. - after line 3268: return (size_t) ACE_OS::sysconf (_SC_THREAD_STACK_MIN); + * tests/test_config.h: Modified the ACE_END_TEST macro so that the + log file is closed. This works around a problem on VxWorks + where destructors of static objects don't get closed + automatically. Thanks to David Levine for this fix. - otherwise we get a compile error: + * ace/OS.i (rand_r): Added a fix for Digital UNIX so that rand_r + works correctly in MT settings. Thanks to Thilo Kielmann + <kielmann@informatik.uni-siegen.de> for this. - line 3296.1: CBC1331(W) Return value of type "unsigned int" is expected +Wed Nov 27 16:12:00 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu> - This is because no code ends up getting generated. Thanks to Chuck - Gehr for this fix. + * ace/Stream.cpp: Fixed a bug in ACE_Stream::open to + allow applications to specify a tail or a head without + having to specify both. This was needed by the ACE_Pipeline + application since it only needs a Pipeline-specific tail + (not a head). - * ace/OS.i (ACE_PTHREAD_CLEANUP_PUSH): Removed an extraneous set - of parens. Thanks to Chuck Gehr for this fix. +Tue Nov 26 18:00:25 1996 Douglas C. Schmidt <schmidt@lambada.cs.wustl.edu> - * ace/OS.cpp (thr_create): Oops, needed to add a check if thr_id - == 0 before assigning *thr_handle = *thr_id! Thanks to Prashant - for finding this. + * ace: Functions should not be declared with ACE_INLINE in a + .cpp file. Fixed this problem in the following files: -Tue Nov 26 21:06:13 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu> + SPIPE_Acceptor.cpp:116:ACE_INLINE + TLI_Acceptor.cpp:145:ACE_INLINE int + TLI_Acceptor.cpp:192:ACE_INLINE + Task.cpp:121:ACE_INLINE int + Task.cpp:130:ACE_INLINE void - * ace/Pipe.cpp (open): This change relates to Win32 code only. - Removed the reuse_addr flag to acceptor.open() so that we don't - try to reuse the acceptor socket immediately. Apparently, this - causes no end of trouble on Win32 as the following connect() - call fails (randomly). Now it should be possible to create - multiple ACE_Pipes in one process and hence create multiple - Reactors also without any problems. + * ace/{OS,Thread}: Added Chuck Gehr's suggested change for the + pthread_keycreate() routine, which must take extern "C" + functions on MVC C++. This fix isn't perfect, but it should + allow the ACE library to build... - * tests/Pipe_Test.cpp: Added a ACE_Pipe test to check for the - creation of multiple pipes in a process. Also changed the - relevant makefiles and scripts. + * man: Updated all of the manual pages and HTML files. -Tue Nov 26 11:27:33 1996 David L. Levine <levine@cs.wustl.edu> + * ace/Signal.cpp: Updated the code so that we don't try to + register a static C++ dispatch method if ACE_HAS_SIG_C_FUNC is + defined. This fixes problems with the MVS C++ compiler... + Thanks to Chuck Gehr for this suggestion. - * tests/{CPP_Test,Mutex_Test,Shared_Memory_MM_Test,SPIPE_Test}.cpp: - added VXWORKS support for these tests by spawning a new thread - instead of forking a new process (the same as on Win32) + * ace/OS.h: Added extern "C" { } wrappers around the signal + handling mechanisms if ACE_HAS_SIG_C_FUNC is defined. This + fixes problems with the MVS C++ compiler... Thanks to Chuck + Gehr for this suggestion. - * netsvcs/clients/Naming/Client/Client_Test.cpp (open): Added a - return 0 for success. + * ace/Reactor.cpp (open): Moved the initialization of the + ACE_Timer_Queue field to *before* the handler_rep_.open() call. + We do this first in case the handler_rep_ call fails (which it + sometimes does on Win32 when we restart applications quickly due + to the use of sockets as a notification mechanism). At least + this way the timer_queue_ isn't 0, so we can still use the + Reactor as a timer... Thanks to Tilo Christ for motivating + me to fix this. - * ace/Singleton.h: Modified the use of the ACE_NEW_RETURN macro so - we not only check if new has failed, but also check that the - constructor has succeeded. If it hasn't, we bail out... Thanks - to Luca for this suggestion. + * ace/OS.i: Apparently, DIGITAL_UNIX gethostbyname() returns + thread-specific storage, so we can use this for + gethostbyname_r(). - * ace/Log_Msg: Added a 4th parameter to log_hexdump() in order to - print out a comment. Thanks to Luca for this. + * ace/OS.i: Need to add: - * ace/ACE.cpp (ldfind): Changed the implementation to look for - ACE_DLL_SUFFIX rather than '.' since '.' might exist in the - pathname already... + #else - * Removed all the NT-specific svc.conf files and updated the other - files to use the new "auto-dll-suffix" feature in ACE. + after line 3268: return (size_t) ACE_OS::sysconf (_SC_THREAD_STACK_MIN); - * ace/Synch_T.cpp (ts_get): Fixed a nasty bug introduced by recent - changes to ACE_TSS<>::ts_get(). The ACE_Mutex should be - ACE_Thread_Mutex. This should fix lots of nasty run-time bugs - seen with recent versions of the ACE 0.33 beta... + otherwise we get a compile error: -Tue Nov 26 14:40:00 1996 David L. Levine <levine@cs.wustl.edu> + line 3296.1: CBC1331(W) Return value of type "unsigned int" is expected - * Log_Msg.cpp: fake out TSS on VxWorks in Log_Msg::instance() - by using a spare field in the task control block + This is because no code ends up getting generated. Thanks to Chuck + Gehr for this fix. - * tests/{CPP_Test,Mutex_Test,Shared_Memory_MM_Test,SPIPE_Test}.cpp: - added VXWORKS support for these tests by spawning a new - thread instead of forking a new process (the same as on - Win32) + * ace/OS.i (ACE_PTHREAD_CLEANUP_PUSH): Removed an extraneous set + of parens. Thanks to Chuck Gehr for this fix. - * OS.h: VxWorks can't handle the ACE_THR_FUNC typedef if - it's in the extern "C" block, so I moved it back out. - Also, the horrible GreenHills hack is no longer required. + * ace/OS.cpp (thr_create): Oops, needed to add a check if thr_id + == 0 before assigning *thr_handle = *thr_id! Thanks to Prashant + for finding this. - * OS.i: there's an ACE_OS_CALL_RETURN before a ::strncpy() call, - I changed it to ACE_OS_CALL. +Tue Nov 26 21:06:13 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu> - * OS.i: Added call to VxWorks ::mkdir() + * ace/Pipe.cpp (open): This change relates to Win32 code only. + Removed the reuse_addr flag to acceptor.open() so that we don't + try to reuse the acceptor socket immediately. Apparently, this + causes no end of trouble on Win32 as the following connect() + call fails (randomly). Now it should be possible to create + multiple ACE_Pipes in one process and hence create multiple + Reactors also without any problems. - * Pipe.cpp: VxWorks doesn't know about TCP_NODELAY. + * tests/Pipe_Test.cpp: Added a ACE_Pipe test to check for the + creation of multiple pipes in a process. Also changed the + relevant makefiles and scripts. - * INET_Addr.cpp: get_host_name() is missing a return - statement, on VxWorks only +Tue Nov 26 11:27:33 1996 David L. Levine <levine@cs.wustl.edu> - * Thread_Manager.i: in ACE_Thread_Control::thr_mgr(), there - were two consecutive return statements, removed the first - one. + * tests/{CPP_Test,Mutex_Test,Shared_Memory_MM_Test,SPIPE_Test}.cpp: + added VXWORKS support for these tests by spawning a new thread + instead of forking a new process (the same as on Win32) - * Time_Request_Reply.{h,cpp}: GreenHills warns that "type - qualifiers are meaningless" for declaration of const - ACE_UINT32 time(), so I removed them. + * netsvcs/clients/Naming/Client/Client_Test.cpp (open): Added a + return 0 for success. - * UPIPE_Stream.cpp, line 95: warning: integer conversion - resulted in a change of sign, so we cast n to int. + * ace/Singleton.h: Modified the use of the ACE_NEW_RETURN macro so + we not only check if new has failed, but also check that the + constructor has succeeded. If it hasn't, we bail out... Thanks + to Luca for this suggestion. - * Map_Manager.cpp: in ACE_Map_Manager::resize_i(), variable - foo is unnecessary, so we omitted it. + * ace/Log_Msg: Added a 4th parameter to log_hexdump() in order to + print out a comment. Thanks to Luca for this. - * tests/CPP_Test.cpp (and a few others) have references to - argv[0]: + * ace/ACE.cpp (ldfind): Changed the implementation to look for + ACE_DLL_SUFFIX rather than '.' since '.' might exist in the + pathname already... -Tue Nov 26 03:15:22 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu> + * Removed all the NT-specific svc.conf files and updated the other + files to use the new "auto-dll-suffix" feature in ACE. - * tests: Added Map_Manager_Test and Message_Queue_Test to - makefiles (NT and UNIX) and one-button scripts. + * ace/Synch_T.cpp (ts_get): Fixed a nasty bug introduced by recent + changes to ACE_TSS<>::ts_get(). The ACE_Mutex should be + ACE_Thread_Mutex. This should fix lots of nasty run-time bugs + seen with recent versions of the ACE 0.33 beta... - * tests: (Barrier_Test.cpp Buffer_Stream_Test.cpp Mutex_Test.cpp - Priority_Buffer_Test.cpp Recursive_Mutex_Test.cpp - Shared_Memory_MM_Test.cpp) Fixed typos mainly and other small - changes. Also fixed logging file problems so to make logging - of tests more accurate. +Tue Nov 26 14:40:00 1996 David L. Levine <levine@cs.wustl.edu> -Mon Nov 25 00:23:40 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + * Log_Msg.cpp: fake out TSS on VxWorks in Log_Msg::instance() + by using a spare field in the task control block - * performance-tests/Synch-Benchmarks/Options.cpp (Options): - Reordered the initialization of data members to keep G++ from - complaining. + * tests/{CPP_Test,Mutex_Test,Shared_Memory_MM_Test,SPIPE_Test}.cpp: + added VXWORKS support for these tests by spawning a new + thread instead of forking a new process (the same as on + Win32) - * performance-tests/Synch-Benchmarks/pipe_thr_test.cpp: Changed - some types so that we don't get warnings. + * OS.h: VxWorks can't handle the ACE_THR_FUNC typedef if + it's in the extern "C" block, so I moved it back out. + Also, the horrible GreenHills hack is no longer required. - * tests/Mutex_Test.cpp (test): Added a "return 0". Thanks to - David Levine for reporting this. + * OS.i: there's an ACE_OS_CALL_RETURN before a ::strncpy() call, + I changed it to ACE_OS_CALL. - * ace/TTY_IO.cpp: Rearranged some definitions so that we don't get - "unused variable" warnings from g++. + * OS.i: Added call to VxWorks ::mkdir() - * ace/SOCK_Dgram.cpp (recv): Rearranged some definitions so that - we don't get "unused variable" warnings from g++. + * Pipe.cpp: VxWorks doesn't know about TCP_NODELAY. - * tests/Priority_Buffer_Test.cpp (consumer): Fixed a typo -- I was - missing a *... Thanks to David Levine for reporting this. + * INET_Addr.cpp: get_host_name() is missing a return + statement, on VxWorks only - * ace/OS.h (ACE_SVC_FACTORY_DECLARE): Changed the macro so that it - defines a function with `extern "C"' linkage in order to be - consistent. + * Thread_Manager.i: in ACE_Thread_Control::thr_mgr(), there + were two consecutive return statements, removed the first + one. - * ace/OS.cpp (thr_create): Moved the conditional compilation test - for ACE_HAS_THR_C_FUNC outside of ACE_HAS_SETKIND_NP since MVS - doesn't have this! Thanks to Chuck Gehr for this info. + * Time_Request_Reply.{h,cpp}: GreenHills warns that "type + qualifiers are meaningless" for declaration of const + ACE_UINT32 time(), so I removed them. - * ace/OS.i (thr_sigsetmask): Replaced the tests for - ACE_HAS_DCETHREADS and ACE_HAS_SETKIND_NP with - ACE_LACKS_PTHREAD_THR_SIGSETMASK, which is more appropriate. - - * ace/OS.cpp (ace_mutex_lock_cleanup_adapter): Changed the - signature so that it returns "void" rather than "void *". - Thanks to Chuck Gehr for this. - - * ace/OS.h: Removed #include <sys/param.h> to avoid problems on - MVS. Thanks to Chuck Gehr for this. - - * ace/config-sunos5.5-sunc++-4.1.h: It looks like SunC++ 4.1 still - doesn't fix their template typedefs bugs. So I've commented - this out in the config file. Thanks to Fred LaBar - <flabar@fallschurch.esys.com> for reporting this. - - * ace/ACE.cpp (ldfind): Added support for a new feature that will - append the default suffix (e.g., ".dll" or ".so") for a shared - library on the current platform to the name of the file if it - cannot find an suffix. It will also check that a provided - suffix will match the default suffix for that platform and if it - doesn't it will produce a log entry with a warning. This change - will allow unified svc.conf-files for both UNIX and WinNT. - Thanks to Tilo Christ <christ@swl.fh-heilbronn.de> for this. - - * ace/OS.cpp (thr_create): Came up with a remarkably clever scheme - that should make it possible to utilize the ACE library *without - change* on MVS, where the frigging C++ compiler requires all - functions passed to pthread_create() have an extern "C" linkage. - The trick was to generalize the thread adapter mechanism used - for Win32. - - * ace/OS: Added a new macro called ACE_PTHREAD_CLEANUP_PUSH that - selects the right mechanism (e.g., ace_spawn_adapter or not) for - passing functions to pthread_cleanup_push(). - - * ace/config-mvs.h: Added a new macro called ACE_HAS_THR_C_FUNC - which expresses the fact that the MVS C++ compiler *must* have - an extern "C" function passed to pthread_create(). + * UPIPE_Stream.cpp, line 95: warning: integer conversion + resulted in a change of sign, so we cast n to int. - * ace/OS.h: Modified all uses of ACE_OS::mutex_lock_cleanup() to - use the extern "C" ace_spawn_adapter() on platforms MVS like MVS - that can't deal with non-C functions to pthread_create. Thanks - to Chuck Gehr for reporting this. + * Map_Manager.cpp: in ACE_Map_Manager::resize_i(), variable + foo is unnecessary, so we omitted it. - * ace/OS.cpp (thr_create): Added Chuck Gehr's patches for MVS. + * tests/CPP_Test.cpp (and a few others) have references to + argv[0]: -Sun Nov 24 12:30:45 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> +Tue Nov 26 03:15:22 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu> - * ace: Added Chuck Gehr's <gehr@sweng.stortek.com> config-mvs.h - file! + * tests: Added Map_Manager_Test and Message_Queue_Test to + makefiles (NT and UNIX) and one-button scripts. - * ace: Began adding support for WinSock 2.0. Thanks to Luca for - this. + * tests: (Barrier_Test.cpp Buffer_Stream_Test.cpp Mutex_Test.cpp + Priority_Buffer_Test.cpp Recursive_Mutex_Test.cpp + Shared_Memory_MM_Test.cpp) Fixed typos mainly and other small + changes. Also fixed logging file problems so to make logging + of tests more accurate. - * ace/UPIPE_{Acceptor,Connector,Stream}: Updated the UPIPE - components so that they keep a reference count that keeps track - of the number of "owners" (which should always be 2 -- one for - the connector-side and one for the acceptor-side). By keeping - this count, we can ensure that we don't close down the - underlying ACE_Stream until both sides have called close(). - This will remove a nasty bug that was lurking in some of the - tests. +Mon Nov 25 00:23:40 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/Message_Block.h: Added a new copy() method that assumes the - buf passed in is a NUL-terminated string. + * performance-tests/Synch-Benchmarks/Options.cpp (Options): + Reordered the initialization of data members to keep G++ from + complaining. + + * performance-tests/Synch-Benchmarks/pipe_thr_test.cpp: Changed + some types so that we don't get warnings. + + * tests/Mutex_Test.cpp (test): Added a "return 0". Thanks to + David Levine for reporting this. + + * ace/TTY_IO.cpp: Rearranged some definitions so that we don't get + "unused variable" warnings from g++. + + * ace/SOCK_Dgram.cpp (recv): Rearranged some definitions so that + we don't get "unused variable" warnings from g++. + + * tests/Priority_Buffer_Test.cpp (consumer): Fixed a typo -- I was + missing a *... Thanks to David Levine for reporting this. + + * ace/OS.h (ACE_SVC_FACTORY_DECLARE): Changed the macro so that it + defines a function with `extern "C"' linkage in order to be + consistent. + + * ace/OS.cpp (thr_create): Moved the conditional compilation test + for ACE_HAS_THR_C_FUNC outside of ACE_HAS_SETKIND_NP since MVS + doesn't have this! Thanks to Chuck Gehr for this info. + + * ace/OS.i (thr_sigsetmask): Replaced the tests for + ACE_HAS_DCETHREADS and ACE_HAS_SETKIND_NP with + ACE_LACKS_PTHREAD_THR_SIGSETMASK, which is more appropriate. + + * ace/OS.cpp (ace_mutex_lock_cleanup_adapter): Changed the + signature so that it returns "void" rather than "void *". + Thanks to Chuck Gehr for this. + + * ace/OS.h: Removed #include <sys/param.h> to avoid problems on + MVS. Thanks to Chuck Gehr for this. + + * ace/config-sunos5.5-sunc++-4.1.h: It looks like SunC++ 4.1 still + doesn't fix their template typedefs bugs. So I've commented + this out in the config file. Thanks to Fred LaBar + <flabar@fallschurch.esys.com> for reporting this. + + * ace/ACE.cpp (ldfind): Added support for a new feature that will + append the default suffix (e.g., ".dll" or ".so") for a shared + library on the current platform to the name of the file if it + cannot find an suffix. It will also check that a provided + suffix will match the default suffix for that platform and if it + doesn't it will produce a log entry with a warning. This change + will allow unified svc.conf-files for both UNIX and WinNT. + Thanks to Tilo Christ <christ@swl.fh-heilbronn.de> for this. + + * ace/OS.cpp (thr_create): Came up with a remarkably clever scheme + that should make it possible to utilize the ACE library *without + change* on MVS, where the frigging C++ compiler requires all + functions passed to pthread_create() have an extern "C" linkage. + The trick was to generalize the thread adapter mechanism used + for Win32. + + * ace/OS: Added a new macro called ACE_PTHREAD_CLEANUP_PUSH that + selects the right mechanism (e.g., ace_spawn_adapter or not) for + passing functions to pthread_cleanup_push(). + + * ace/config-mvs.h: Added a new macro called ACE_HAS_THR_C_FUNC + which expresses the fact that the MVS C++ compiler *must* have + an extern "C" function passed to pthread_create(). + + * ace/OS.h: Modified all uses of ACE_OS::mutex_lock_cleanup() to + use the extern "C" ace_spawn_adapter() on platforms MVS like MVS + that can't deal with non-C functions to pthread_create. Thanks + to Chuck Gehr for reporting this. + + * ace/OS.cpp (thr_create): Added Chuck Gehr's patches for MVS. - * tests/UPIPE_SAP_Test.cpp: Modified this test so that threads - exit in a well-defined order. This should prevent problems on - Win32. +Sun Nov 24 12:30:45 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/OS.i: Changed SIGNAL_SAFE_OS_CALLS to - ACE_HAS_SIGNAL_SAFE_OS_CALLS to be consistent... + * ace: Added Chuck Gehr's <gehr@sweng.stortek.com> config-mvs.h + file! - * ace/config-vxworks*.h: Removed the SIGNAL_SAFE_OS_CALLS #define - from the VxWorks config files. There's no need to use this by - default. + * ace: Began adding support for WinSock 2.0. Thanks to Luca for + this. - * ace/Event_Handler: Moved all the default implementations of the - virtual methods in ACE_Event_Handler from the *.i file to the - *.cpp and made them no longer be inlines. This will fix some - problems with some compilers (e.g., MSVC++ 4.1) and is also more - reasonable since there's really no purpose for inlining these - virtual functions since they are rarely called. Thanks to James - Michael Dwyer <jdwyer@knox.edu> for reporting this problem. + * ace/UPIPE_{Acceptor,Connector,Stream}: Updated the UPIPE + components so that they keep a reference count that keeps track + of the number of "owners" (which should always be 2 -- one for + the connector-side and one for the acceptor-side). By keeping + this count, we can ensure that we don't close down the + underlying ACE_Stream until both sides have called close(). + This will remove a nasty bug that was lurking in some of the + tests. + + * ace/Message_Block.h: Added a new copy() method that assumes the + buf passed in is a NUL-terminated string. + + * tests/UPIPE_SAP_Test.cpp: Modified this test so that threads + exit in a well-defined order. This should prevent problems on + Win32. + + * ace/OS.i: Changed SIGNAL_SAFE_OS_CALLS to + ACE_HAS_SIGNAL_SAFE_OS_CALLS to be consistent... + + * ace/config-vxworks*.h: Removed the SIGNAL_SAFE_OS_CALLS #define + from the VxWorks config files. There's no need to use this by + default. + + * ace/Event_Handler: Moved all the default implementations of the + virtual methods in ACE_Event_Handler from the *.i file to the + *.cpp and made them no longer be inlines. This will fix some + problems with some compilers (e.g., MSVC++ 4.1) and is also more + reasonable since there's really no purpose for inlining these + virtual functions since they are rarely called. Thanks to James + Michael Dwyer <jdwyer@knox.edu> for reporting this problem. Sat Nov 23 12:39:03 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/Svc_Conf.y: Changed the parser so that it accepts DLL - pathnames that lack *.dll or *.so suffixes. This is necessary - so that we can automatically append the correct suffix depending - on the platform. Thanks to Tilo Christ - <christ@swl.fh-heilbronn.de> for suggesting this. + * ace/Svc_Conf.y: Changed the parser so that it accepts DLL + pathnames that lack *.dll or *.so suffixes. This is necessary + so that we can automatically append the correct suffix depending + on the platform. Thanks to Tilo Christ + <christ@swl.fh-heilbronn.de> for suggesting this. - * ace/Makefile: Updated the Makefile so that it will automatically - insert the appropriate so that conditions for include of - ace/OS.h can be checked correctly. + * ace/Makefile: Updated the Makefile so that it will automatically + insert the appropriate so that conditions for include of + ace/OS.h can be checked correctly. Fri Nov 22 18:12:49 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/OS.i (thr_sigsetmask): DCE threads (at least as implemented - by Digital) have no means for setting the signal mask on a - per-thread basis. Therefore, modified the code so that it - correctly returns ACE_NOTSUP_RETURN(-1) for DCEthreads. Thanks - to Thilo Kielmann <kielmann@informatik.uni-siegen.de> for - chasing this down. + * ace/OS.i (thr_sigsetmask): DCE threads (at least as implemented + by Digital) have no means for setting the signal mask on a + per-thread basis. Therefore, modified the code so that it + correctly returns ACE_NOTSUP_RETURN(-1) for DCEthreads. Thanks + to Thilo Kielmann <kielmann@informatik.uni-siegen.de> for + chasing this down. - * performance-tests/Synch-Benchmarks/synch_driver.cpp (run_test): - Fixed this implementation so that it will shut down correctly - when a signal occurs or a timeout occurs (whichever comes - first). + * performance-tests/Synch-Benchmarks/synch_driver.cpp (run_test): + Fixed this implementation so that it will shut down correctly + when a signal occurs or a timeout occurs (whichever comes + first). Fri Nov 22 08:02:39 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu> - * ace.{mdp,mak}: Changed ace.mak so that it links with the - non-debug version of Microsoft's multithreaded dll when compiled - with the release option + * ace.{mdp,mak}: Changed ace.mak so that it links with the + non-debug version of Microsoft's multithreaded dll when compiled + with the release option Thu Nov 21 10:37:40 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/Service_Config: Changed the implementation of the - Service_Config class so that it no longer inherits from - ACE_Event_Handler. This was causing problems because the new - reactor() method in the ACE_Event_Handler was conflicting with - the static reactor() method on ACE_Service_Config. + * ace/Service_Config: Changed the implementation of the + Service_Config class so that it no longer inherits from + ACE_Event_Handler. This was causing problems because the new + reactor() method in the ACE_Event_Handler was conflicting with + the static reactor() method on ACE_Service_Config. - * ace/OS.cpp (detach): Since we no longer use an - ACE_Recursive_Thread_Mutex, we can remove the line - - else if (ACE_TSS_Cleanup::lock_.get_nesting_level () > 1) - // ... + * ace/OS.cpp (detach): Since we no longer use an + ACE_Recursive_Thread_Mutex, we can remove the line + + else if (ACE_TSS_Cleanup::lock_.get_nesting_level () > 1) + // ... - Thanks to Matthias Kerkhoff <make@cs.tu-berlin.de> for - reporting this. + Thanks to Matthias Kerkhoff <make@cs.tu-berlin.de> for + reporting this. - * ace/Thread_Manager.cpp (spawn_n): Replaced int i with size_t i - to avoid warnings between signed and unsigned values. + * ace/Thread_Manager.cpp (spawn_n): Replaced int i with size_t i + to avoid warnings between signed and unsigned values. - * ace: There is an easy way to speed up the "Update dependencies" - in MSVC. Just keep the the compiler from complaining about - missing header by inserting a comment like below in the - #include-directives which are not used in Win32. + * ace: There is an easy way to speed up the "Update dependencies" + in MSVC. Just keep the the compiler from complaining about + missing header by inserting a comment like below in the + #include-directives which are not used in Win32. - Therefore, instead of + Therefore, instead of - #include <somefile.h> + #include <somefile.h> - we use + we use - #include /**/ <somefile.h> + #include /**/ <somefile.h> - Please let me know if this causes problems for any - pre-processors. Thanks to Matthias Kerkhoff - <make@cs.tu-berlin.de> for this suggestion! + Please let me know if this causes problems for any + pre-processors. Thanks to Matthias Kerkhoff + <make@cs.tu-berlin.de> for this suggestion! - * ace/OS.cpp: Added support for AfxBeginThread in - ACE_OS::thr_create() and ACE_OS::exit(). Now ACE should work - with MFC when you give the THR_USE_AFX flag to - ACE_OS::thr_create()! Thanks to Matthias Kerkhoff - <make@cs.tu-berlin.de> for this! + * ace/OS.cpp: Added support for AfxBeginThread in + ACE_OS::thr_create() and ACE_OS::exit(). Now ACE should work + with MFC when you give the THR_USE_AFX flag to + ACE_OS::thr_create()! Thanks to Matthias Kerkhoff + <make@cs.tu-berlin.de> for this! - * ace/Malloc_T.cpp (avail_chunks): Changed the return value to - ssize_t so we can return -1 if we can't get the lock. Thanks to - Tilo for reporting this. + * ace/Malloc_T.cpp (avail_chunks): Changed the return value to + ssize_t so we can return -1 if we can't get the lock. Thanks to + Tilo for reporting this. - * ace/config-sunos4-sun3.x.h: Added new #ifdefs for Sun C++ 3.0.1 - on SunOS 4.1.3. Thanks to Eric Parker <eparker@credence.com> - for these fixes. + * ace/config-sunos4-sun3.x.h: Added new #ifdefs for Sun C++ 3.0.1 + on SunOS 4.1.3. Thanks to Eric Parker <eparker@credence.com> + for these fixes. - * ace/Stack.h: Added a new method called peek() to the - ACE_Unbounded_Queue classes so that the first element can be - retrieved without removing it. Thanks to Luca for this - suggestion. + * ace/Stack.h: Added a new method called peek() to the + ACE_Unbounded_Queue classes so that the first element can be + retrieved without removing it. Thanks to Luca for this + suggestion. - * ace/SString.cpp (ACE_CString): Changed ACE_CString so that it - uses memcpy() rather than str(n)cpy() so that we can store any - structure into it. Thanks to Luca for this suggestion. + * ace/SString.cpp (ACE_CString): Changed ACE_CString so that it + uses memcpy() rather than str(n)cpy() so that we can store any + structure into it. Thanks to Luca for this suggestion. - * ace/Acceptor: Since we moved the reactor() accessors to - ACE_Event_Handler we can omit these from the Acceptor and - Svc_Handler. - - * ace: Updated the ACE_Reactor and ACE_ReactorEx so that they - automatically sets the pointers in ACE_Event_Handlers. Thanks - to Luca for this suggestion. - - * ace/Event_Handler: Added pointers to all the ACE demultiplexors - (e.g., ACE_Reactor, ACE_ReactorEx, and ACE_Proactor) to - ACE_Event_Handler, along with set/get accessor methods. This - supports a very common use-case where an event handler keeps - track of its demultiplexor. Thanks to Luca for this suggestion. - - * ace/OS.cpp: Since we do not use the recursion count from the - Recursive Mutex any more in ACE_TSS_Cleanup::exit() we can - replace the Recursive Mutex by a regular ACE_Thread_Mutex that - is recursive on NT natively and more efficient. Thanks to - Detlef for suggesting this. - - * ace/OS.cpp: Since we do not use the recursion count from the - Recursive Mutex any more in ACE_TSS_Cleanup::exit() we can - replace the Recursive Mutex by a regular ACE_Thread_Mutex that - is recursive on NT natively and more efficient. Thanks to - Detlef for suggesting this. - - * ace: Backed out all of Detlef's changes to ACE_OS and - ACE_TSS::ts_get(). It turns out that this is unnecessary since - he reimplemented ACE_TSS_Cleanup so that it no longer needs to - hold the lock when callbacks are made. Once again, Detlef - proves that he's a macho man, not a boy ;-) + * ace/Acceptor: Since we moved the reactor() accessors to + ACE_Event_Handler we can omit these from the Acceptor and + Svc_Handler. + + * ace: Updated the ACE_Reactor and ACE_ReactorEx so that they + automatically sets the pointers in ACE_Event_Handlers. Thanks + to Luca for this suggestion. + + * ace/Event_Handler: Added pointers to all the ACE demultiplexors + (e.g., ACE_Reactor, ACE_ReactorEx, and ACE_Proactor) to + ACE_Event_Handler, along with set/get accessor methods. This + supports a very common use-case where an event handler keeps + track of its demultiplexor. Thanks to Luca for this suggestion. + + * ace/OS.cpp: Since we do not use the recursion count from the + Recursive Mutex any more in ACE_TSS_Cleanup::exit() we can + replace the Recursive Mutex by a regular ACE_Thread_Mutex that + is recursive on NT natively and more efficient. Thanks to + Detlef for suggesting this. + + * ace/OS.cpp: Since we do not use the recursion count from the + Recursive Mutex any more in ACE_TSS_Cleanup::exit() we can + replace the Recursive Mutex by a regular ACE_Thread_Mutex that + is recursive on NT natively and more efficient. Thanks to + Detlef for suggesting this. + + * ace: Backed out all of Detlef's changes to ACE_OS and + ACE_TSS::ts_get(). It turns out that this is unnecessary since + he reimplemented ACE_TSS_Cleanup so that it no longer needs to + hold the lock when callbacks are made. Once again, Detlef + proves that he's a macho man, not a boy ;-) Thu Nov 21 08:12:51 1996 David L. Levine <levine@cs.wustl.edu> - * include/makeinclude/platform_sunos5_sunc++_4.1.GNU: - put back the LD definition + * include/makeinclude/platform_sunos5_sunc++_4.1.GNU: + put back the LD definition - * include/makeinclude/platform_osf1_4.0_g++.GNU: - added LD definition to work with latest wrapper_macros.GNU + * include/makeinclude/platform_osf1_4.0_g++.GNU: + added LD definition to work with latest wrapper_macros.GNU Wed Nov 20 10:32:52 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu> - * tests: Mutex_Test.cpp Priority_Buffer_Test.cpp - Reader_Writer_Test.cpp Thread_Pool_Test.cpp were changed - slightly to remove some compile time warnings. + * tests: Mutex_Test.cpp Priority_Buffer_Test.cpp + Reader_Writer_Test.cpp Thread_Pool_Test.cpp were changed + slightly to remove some compile time warnings. Wed Nov 20 21:35:28 1996 David L. Levine <levine@cs.wustl.edu> - * ace/Svc_Conf_l.cpp: added #include of ace/config.h so that - conditions for include of ace/OS.h can be checked. + * ace/Svc_Conf_l.cpp: added #include of ace/config.h so that + conditions for include of ace/OS.h can be checked. Wed Nov 20 02:38:40 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/Service_Config.cpp: Moved the definition of logger_key_ to - OS.h and changed it to a macro (ACE_LOGGER_KEY) so that it will - be portable to Win32 and UNIX. Thanks to Tilo for reporting - this. + * ace/Service_Config.cpp: Moved the definition of logger_key_ to + OS.h and changed it to a macro (ACE_LOGGER_KEY) so that it will + be portable to Win32 and UNIX. Thanks to Tilo for reporting + this. - * ace/OS: Changed the return value of ACE_OS::getgid() from uid_t - to gid_t to be POSIX compliant. + * ace/OS: Changed the return value of ACE_OS::getgid() from uid_t + to gid_t to be POSIX compliant. - * ace/OS.cpp (thr_create): Fixed a typo where we were assigning - stacksize rather than size. Thanks Thilo. + * ace/OS.cpp (thr_create): Fixed a typo where we were assigning + stacksize rather than size. Thanks Thilo. - * ace/OS.cpp (thr_create): Added a new piece of code for - ACE_NEEDS_HUGE_THREAD_STACKSIZE, which is necessary to create a - larger per-thread stack size in order to run ACE_Log_Msg::log. - Thanks to Thilo for this. + * ace/OS.cpp (thr_create): Added a new piece of code for + ACE_NEEDS_HUGE_THREAD_STACKSIZE, which is necessary to create a + larger per-thread stack size in order to run ACE_Log_Msg::log. + Thanks to Thilo for this. - * tests/TSS_Test.cpp: Changed the name of the static variable - "lock" to "cout_lock" to avoid a potential namespace clash on - Digital UNIX. Thanks to Thilo Kielmann for reporting this. + * tests/TSS_Test.cpp: Changed the name of the static variable + "lock" to "cout_lock" to avoid a potential namespace clash on + Digital UNIX. Thanks to Thilo Kielmann for reporting this. - * ace/SOCK_Dgram.cpp (recv): Added a cast (char *) - io_vec->iov_base so that this would work correctly on platforms - where iov_base is a void * (e.g., AIX and HP/UX). Thanks to - Alan Stewart for the change. + * ace/SOCK_Dgram.cpp (recv): Added a cast (char *) + io_vec->iov_base so that this would work correctly on platforms + where iov_base is a void * (e.g., AIX and HP/UX). Thanks to + Alan Stewart for the change. - * ace/OS.h: Added a few new changes for Digital UNIX 4.0a. These - should fix problems with ctime_r() and asctime_r(). Thanks to - Dave Trumble for the fixes. + * ace/OS.h: Added a few new changes for Digital UNIX 4.0a. These + should fix problems with ctime_r() and asctime_r(). Thanks to + Dave Trumble for the fixes. - * tests/UPIPE_SAP_Test.cpp: Disabled this test if we don't have - threads and (STREAM Pipes or Win32). Thanks to Thilo Kielmann's - <kielmann@informatik.uni-siegen.de> for this info. + * tests/UPIPE_SAP_Test.cpp: Disabled this test if we don't have + threads and (STREAM Pipes or Win32). Thanks to Thilo Kielmann's + <kielmann@informatik.uni-siegen.de> for this info. Tue Nov 19 23:09:08 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu> - * ace/Log_Record.cpp (print): Added a call to ACE_OS::fflush - before returning. This change was suggested by Luca in order to - help prevent messages from getting lost when applications exit. - We're unsure of the affects this will have on performance, so we - may change this back in the future. + * ace/Log_Record.cpp (print): Added a call to ACE_OS::fflush + before returning. This change was suggested by Luca in order to + help prevent messages from getting lost when applications exit. + We're unsure of the affects this will have on performance, so we + may change this back in the future. Tue Nov 19 00:06:57 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * Released a beta version of ACE 4.0.33 for testing. + * Released a beta version of ACE 4.0.33 for testing. - * ace/TTY_IO.h: Added the ACE_Export macro before the ACE_TTY_IO - class to make things work correctly for Win32 DLLs. Thanks - to William L. Gerecke <gerecke@rayva.org> for fixing this. + * ace/TTY_IO.h: Added the ACE_Export macro before the ACE_TTY_IO + class to make things work correctly for Win32 DLLs. Thanks + to William L. Gerecke <gerecke@rayva.org> for fixing this. - * ace/OS.h: Improved the support for RLIMIT_NOFILE. Thanks to - Alan Stewart <axs2@osi.com> for reporting this. + * ace/OS.h: Improved the support for RLIMIT_NOFILE. Thanks to + Alan Stewart <axs2@osi.com> for reporting this. - * ace/OS.h: Removed the following code from OS.h because - it is causing problems on some platforms: + * ace/OS.h: Removed the following code from OS.h because + it is causing problems on some platforms: - #if (!defined (timespec) && !defined (m88k)) - #define timestruc_t struct timespec - #endif /* timespec */ + #if (!defined (timespec) && !defined (m88k)) + #define timestruc_t struct timespec + #endif /* timespec */ - Thanks to Fred LeBar for reporting this. + Thanks to Fred LeBar for reporting this. - * ace/OS.cpp (thr_create): Needed to create an - ACE_OS::NULL_hthread so that we can assign the "NULL thread - handle" on POSIX platforms. Thanks to Alan Stewart - <axs2@osi.com> for reporting this. + * ace/OS.cpp (thr_create): Needed to create an + ACE_OS::NULL_hthread so that we can assign the "NULL thread + handle" on POSIX platforms. Thanks to Alan Stewart + <axs2@osi.com> for reporting this. - * ace/OS.i: The HP/UX C++ compiler is unable to grok inline - functions with multiple returns. So I recoded the - ACE_OS::event* methods to avoid this. Thanks to Alan Stewart - <axs2@osi.com> for reporting this. + * ace/OS.i: The HP/UX C++ compiler is unable to grok inline + functions with multiple returns. So I recoded the + ACE_OS::event* methods to avoid this. Thanks to Alan Stewart + <axs2@osi.com> for reporting this. - * ace/OS.h: Moved the "undef" of t_errno until after the inclusion - of mman.h and dlfcn.h to prevent problems with DU4.0a. Thanks - to David Trumble <trumble@steosf.nio.dec.com> for reporting - this. + * ace/OS.h: Moved the "undef" of t_errno until after the inclusion + of mman.h and dlfcn.h to prevent problems with DU4.0a. Thanks + to David Trumble <trumble@steosf.nio.dec.com> for reporting + this. - * ace/Pipe.cpp (open): Fixed a typo where - this->ACE_SOCK::set_option() was being used instead of - writer.set_option(). Thanks to Tilo Christ - <christ@swl.fh-heilbronn.de> for reporting this. + * ace/Pipe.cpp (open): Fixed a typo where + this->ACE_SOCK::set_option() was being used instead of + writer.set_option(). Thanks to Tilo Christ + <christ@swl.fh-heilbronn.de> for reporting this. - * ace/Message_Queue.h: Fixed a bug where - - ACE_Message_Queue <ACE_SYNCH_1> &queue_; + * ace/Message_Queue.h: Fixed a bug where + + ACE_Message_Queue <ACE_SYNCH_1> &queue_; - should be: + should be: - ACE_Message_Queue <ACE_SYNCH_2> &queue_; + ACE_Message_Queue <ACE_SYNCH_2> &queue_; - Thanks to Rick Orr <rorr@costello.den.csci.csc.com> for - reporting this. + Thanks to Rick Orr <rorr@costello.den.csci.csc.com> for + reporting this. - * apps/Makefile: Updated the Makefile so that it no longer tries - to look for Synch-Benchmarks. Thanks to Amos Shapira - <amos@dsi.co.il> for reporting this. + * apps/Makefile: Updated the Makefile so that it no longer tries + to look for Synch-Benchmarks. Thanks to Amos Shapira + <amos@dsi.co.il> for reporting this. - * ace/Activation_Queue.cpp (dequeue): Added a sanity check to make - sure that we actually deleted the first element in the queue. - Thanks to Andres Kruse <Andres.Kruse@cern.ch> for reporting - this. + * ace/Activation_Queue.cpp (dequeue): Added a sanity check to make + sure that we actually deleted the first element in the queue. + Thanks to Andres Kruse <Andres.Kruse@cern.ch> for reporting + this. - * include/makeinclude/platform_sunos5_sunc++_4.1.GNU: Added a - minor change to remove the libACE.a archive prior to creating a - new one. This works around bugs with the SunOS 4.x C++ - compiler. Thanks to Andres Kruse <Andres.Kruse@cern.ch> for - reporting this. + * include/makeinclude/platform_sunos5_sunc++_4.1.GNU: Added a + minor change to remove the libACE.a archive prior to creating a + new one. This works around bugs with the SunOS 4.x C++ + compiler. Thanks to Andres Kruse <Andres.Kruse@cern.ch> for + reporting this. - * ace/Malloc_T.cpp (avail_chunks): Added Fred LeBar's code and - comments for computing the available chunks. + * ace/Malloc_T.cpp (avail_chunks): Added Fred LeBar's code and + comments for computing the available chunks. - * tests/Mutex_Test.cpp: Rewrote the Mutex_Test so that it behaves - correctly on UNIX and Win32. Thanks to Irfan for reporting the - problem. + * tests/Mutex_Test.cpp: Rewrote the Mutex_Test so that it behaves + correctly on UNIX and Win32. Thanks to Irfan for reporting the + problem. - * ace/Log_Msg.cpp (sync): Somehow, the statement that updated the - pid_ after sync() is called following a fork() got removed, so I - put it back in. + * ace/Log_Msg.cpp (sync): Somehow, the statement that updated the + pid_ after sync() is called following a fork() got removed, so I + put it back in. - * ace/config-sunos5.*-g++.h: Added the - -D_REENTRANT flag to the config files for the G++ version of - ACE. This fixes a nasty problem that otherwise arises when - compiling on SunOS 5.x. Thanks to Hanan Herzog - <hanan@wallenda.stanford.edu> for reporting this. + * ace/config-sunos5.*-g++.h: Added the + -D_REENTRANT flag to the config files for the G++ version of + ACE. This fixes a nasty problem that otherwise arises when + compiling on SunOS 5.x. Thanks to Hanan Herzog + <hanan@wallenda.stanford.edu> for reporting this. Tue Nov 19 21:14:15 1996 David L. Levine <levine@cs.wustl.edu> - * performance-tests/Synch-Benchmarks/Benchmark.{h,cpp}: - use thread ID class for VxWorks as well as Pthreads. + * performance-tests/Synch-Benchmarks/Benchmark.{h,cpp}: + use thread ID class for VxWorks as well as Pthreads. - * OS.i, config-{osf1-4.0,sunos5.[45]}-g++.h: Moved GNU - #include <cstring> out of config files and into OS.i. + * OS.i, config-{osf1-4.0,sunos5.[45]}-g++.h: Moved GNU + #include <cstring> out of config files and into OS.i. - * ace/Svc_Conf_l.cpp: added #include of ace/OS.h for HPUX and - VxWorks. + * ace/Svc_Conf_l.cpp: added #include of ace/OS.h for HPUX and + VxWorks. - * ace/Token.cpp: reordered initializations in Ace_Queue_Entry - ctor to match declaration order. + * ace/Token.cpp: reordered initializations in Ace_Queue_Entry + ctor to match declaration order. Mon Nov 18 00:47:27 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/OS.h: Added a new #define called ACE_HAS_BROKEN_CONVERSIONS - to workaround problems with the HP/UX C++ compiler, which - doesn't seem to be able to grok foo->operator T *(). Thanks to - Alan Stewart <axs2@osi.com> for reporting this bug and the fix. - Also updated the config-hpux*.h files with this define. + * ace/OS.h: Added a new #define called ACE_HAS_BROKEN_CONVERSIONS + to workaround problems with the HP/UX C++ compiler, which + doesn't seem to be able to grok foo->operator T *(). Thanks to + Alan Stewart <axs2@osi.com> for reporting this bug and the fix. + Also updated the config-hpux*.h files with this define. - * examples/Misc: Added a new test (test_get_opt.cpp) which - exercises the ACE_Get_Opt class. + * examples/Misc: Added a new test (test_get_opt.cpp) which + exercises the ACE_Get_Opt class. Sun Nov 17 13:00:02 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/Get_Opt: Replaced the GNU-based implementation of class - ACE_Get_Opt with an implementation based on BSD UNIX. The - advantage here is that the BSD version is not encumbered by the - GNU GPL. Thus, ACE has no more dependencies on GNU GPL. Thanks - to James Hu <jxh@cs.wustl.edu> for finding the BSD code. + * ace/Get_Opt: Replaced the GNU-based implementation of class + ACE_Get_Opt with an implementation based on BSD UNIX. The + advantage here is that the BSD version is not encumbered by the + GNU GPL. Thus, ACE has no more dependencies on GNU GPL. Thanks + to James Hu <jxh@cs.wustl.edu> for finding the BSD code. Mon Nov 18 00:13:25 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu> - * ace/stdcpp.h: Added this file to ACE. This file contains the - portability ugliness for the Standard C++ Library. As - implementations of the "standard" emerge, this file will need to - be updated. Although not very useful now, we are gearing up for - a support for STL on UNIX and NT. + * ace/stdcpp.h: Added this file to ACE. This file contains the + portability ugliness for the Standard C++ Library. As + implementations of the "standard" emerge, this file will need to + be updated. Although not very useful now, we are gearing up for + a support for STL on UNIX and NT. - * ace/OS.h: Added an include "ace/stdcpp.h". + * ace/OS.h: Added an include "ace/stdcpp.h". - * ace/Log_Record.h (ACE_Log_Record): Removed the iostream include - mess that got accidentally committed to the release. + * ace/Log_Record.h (ACE_Log_Record): Removed the iostream include + mess that got accidentally committed to the release. Sun Nov 17 00:13:25 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu> - * For some totally evil reason, MSVC++ will not allow any use of - the "allocator" symbol. It's an STL thing. As a result, I've - had to change all of the following files to rename allocator to - alloc: Local_Name_Space_T.cpp, Map_Manager.cpp, Malloc_T.cpp, - Message_Block.cpp, Read_Buffer.cpp, SString.cpp. The root - of the problem can be seen by compiling the code below: - - template <class TYPE> - class foo {}; + * For some totally evil reason, MSVC++ will not allow any use of + the "allocator" symbol. It's an STL thing. As a result, I've + had to change all of the following files to rename allocator to + alloc: Local_Name_Space_T.cpp, Map_Manager.cpp, Malloc_T.cpp, + Message_Block.cpp, Read_Buffer.cpp, SString.cpp. The root + of the problem can be seen by compiling the code below: + + template <class TYPE> + class foo {}; - int foo; // compile error because of the foo<> class. + int foo; // compile error because of the foo<> class. - int main () { return 0; } - - * Service_Config.{h,cpp}: We have to change the allocator - accessors to alloc. This is probably going to break - many things. If necessary, we can conditionally compile in the - old accessors for platforms that are not using STL and MSVC++. + int main () { return 0; } + + * Service_Config.{h,cpp}: We have to change the allocator + accessors to alloc. This is probably going to break + many things. If necessary, we can conditionally compile in the + old accessors for platforms that are not using STL and MSVC++. - * ace/Task.h: Added ACE_Export macros to the class definitions. + * ace/Task.h: Added ACE_Export macros to the class definitions. Sun Nov 17 13:00:02 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace: Added Thilo Kielmann's <kielmann@informatik.uni-siegen.de> - patches for OSF/1 4.0a. + * ace: Added Thilo Kielmann's <kielmann@informatik.uni-siegen.de> + patches for OSF/1 4.0a. - * ace/OS: Revised the implementation of ACE_OS::asctime_r() and - ACE_OS::ctime_r() to simplify common cases. However, this may - have broken some code on OSF/1 4.0a. Can someone please check - this? + * ace/OS: Revised the implementation of ACE_OS::asctime_r() and + ACE_OS::ctime_r() to simplify common cases. However, this may + have broken some code on OSF/1 4.0a. Can someone please check + this? - * tests/SPIPE_Test.cpp: Conditionally compiled this file so that - we only build the SPIPE test if (1) we're running on Win32 or - (2) ACE_HAS_STREAM_PIPES. Thanks to David Levine for this - suggestion. + * tests/SPIPE_Test.cpp: Conditionally compiled this file so that + we only build the SPIPE test if (1) we're running on Win32 or + (2) ACE_HAS_STREAM_PIPES. Thanks to David Levine for this + suggestion. - * ace/OS.i (ctime_r): Fixed a typo that was caused by a misplaced - #endif. Thanks to Eshel Liran <liran@macs.biu.ac.il> for - reporting this. + * ace/OS.i (ctime_r): Fixed a typo that was caused by a misplaced + #endif. Thanks to Eshel Liran <liran@macs.biu.ac.il> for + reporting this. - * ace/Time_Value: Disabled ACE_TRACE within these method in order - to prevent infinite recursion. + * ace/Time_Value: Disabled ACE_TRACE within these method in order + to prevent infinite recursion. - * ace/Log_Record: Originally, when verbose mode was enabled you - can get the date and time down to the seconds. However, it is - useful for performance testings to have milliseconds displayed - in the log. To accomplish this, I changed ACE_Log_Msg and - ACE_Log_Record to they also keep track of and print the microsec - time, as well. Thanks to Luca for suggesting this. + * ace/Log_Record: Originally, when verbose mode was enabled you + can get the date and time down to the seconds. However, it is + useful for performance testings to have milliseconds displayed + in the log. To accomplish this, I changed ACE_Log_Msg and + ACE_Log_Record to they also keep track of and print the microsec + time, as well. Thanks to Luca for suggesting this. - * ace/Map_Manager.cpp: updated all the ACE_Map_Manager methods so - their read and write Guards use the ACE_*_GUARD macros. + * ace/Map_Manager.cpp: updated all the ACE_Map_Manager methods so + their read and write Guards use the ACE_*_GUARD macros. - * ace/Malloc_T.cpp: Updated all the ACE_Malloc methods so their - read and write Guards use the ACE_*_GUARD macros. + * ace/Malloc_T.cpp: Updated all the ACE_Malloc methods so their + read and write Guards use the ACE_*_GUARD macros. - * ace/OS.cpp (svc_run): Added an ACE_DEBUG announcing that an - exception has propagated beyond the outermost svc_run() - function. Thanks to Luca for this suggestion. + * ace/OS.cpp (svc_run): Added an ACE_DEBUG announcing that an + exception has propagated beyond the outermost svc_run() + function. Thanks to Luca for this suggestion. - * tests/test_config.h: VxWorks passes in a NULL argv (arrghhh...). - Therefore, to work around this in the ./tests directory, I changed - the ACE_START_TEST macro to take a NAME parameter, and then I - added the following local variable: + * tests/test_config.h: VxWorks passes in a NULL argv (arrghhh...). + Therefore, to work around this in the ./tests directory, I changed + the ACE_START_TEST macro to take a NAME parameter, and then I + added the following local variable: - const char *program = argv ? argv[0] : NAME; + const char *program = argv ? argv[0] : NAME; - Thanks to David Levine for this fix. + Thanks to David Levine for this fix. Sat Nov 16 12:01:08 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * examples/Threads/test_tss2.cpp: Added Detlef's new test for - ACE_TSS. + * examples/Threads/test_tss2.cpp: Added Detlef's new test for + ACE_TSS. - * ace/Synch_T.cpp (ts_get): Added Detlef's changes to fix deadlock - problems with ACE_TSS on NT. + * ace/Synch_T.cpp (ts_get): Added Detlef's changes to fix deadlock + problems with ACE_TSS on NT. Fri Nov 15 18:01:26 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/ACE_SOCK_Stream.cpp: NT will signal an abortive close - to the opposite party if a socket is closed before all of its - data has been sent out. According to the NT SDK-docs, you should - do a shutdown before the closesocket() in order to prepare a - graceful close. Thus, I've placed an - ACE_SOCK_Stream::close_writer() method just before the call to - ACE_SOCK::close() in the new close() of the ACE_SOCK_Stream - class. Thanks to Tilo Christ <christ@swl.fh-heilbronn.de> for - this suggestion. + * ace/ACE_SOCK_Stream.cpp: NT will signal an abortive close + to the opposite party if a socket is closed before all of its + data has been sent out. According to the NT SDK-docs, you should + do a shutdown before the closesocket() in order to prepare a + graceful close. Thus, I've placed an + ACE_SOCK_Stream::close_writer() method just before the call to + ACE_SOCK::close() in the new close() of the ACE_SOCK_Stream + class. Thanks to Tilo Christ <christ@swl.fh-heilbronn.de> for + this suggestion. - * ace/INET_Addr.cpp: The function ACE_INET_Addr::addr_to_string - was a virtual function that is also inline and defined in the .i - file. Some compilers have a problem with this, so I moved it - into the *.cpp file. In addition, its sister function was also - virtual and is defined as: + * ace/INET_Addr.cpp: The function ACE_INET_Addr::addr_to_string + was a virtual function that is also inline and defined in the .i + file. Some compilers have a problem with this, so I moved it + into the *.cpp file. In addition, its sister function was also + virtual and is defined as: - ACE_INLINE int - ACE_INET_Addr::string_to_addr (const char s[]) + ACE_INLINE int + ACE_INET_Addr::string_to_addr (const char s[]) - in the .cpp file. I removed the ACE_INLINE directive. Thanks - to Fred LaBar <flabar@fallschurch.esys.com> for reporting this. + in the .cpp file. I removed the ACE_INLINE directive. Thanks + to Fred LaBar <flabar@fallschurch.esys.com> for reporting this. Thu Nov 14 16:20:20 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/Malloc_T.cpp: Added a new method to ACE_Malloc that will - return the number of chunks available on the free list. Thanks - to Fred Labar <flabar@fallschurch.esys.com> for this. + * ace/Malloc_T.cpp: Added a new method to ACE_Malloc that will + return the number of chunks available on the free list. Thanks + to Fred Labar <flabar@fallschurch.esys.com> for this. Wed Nov 13 01:22:16 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/ReactorEx.cpp (handle_events): I've changed siginfo_t on - Win32 (which was previously typedef'd to int) so that it has the - following structure: + * ace/ReactorEx.cpp (handle_events): I've changed siginfo_t on + Win32 (which was previously typedef'd to int) so that it has the + following structure: - struct siginfo_t - { - siginfo_t (ACE_HANDLE handle); + struct siginfo_t + { + siginfo_t (ACE_HANDLE handle); - ACE_HANDLE si_handle_; - // Win32 HANDLE that has become signaled. - }; + ACE_HANDLE si_handle_; + // Win32 HANDLE that has become signaled. + }; - Then, I've changed the ACE_ReactorEx::handle_events() method to - look like this: + Then, I've changed the ACE_ReactorEx::handle_events() method to + look like this: - // Assign the ``signaled'' HANDLE so that callers can get - // it. - siginfo_t sig (relative_handles[relative_index]); - - if (relative_handlers[relative_index]->handle_signal - (0, &sig) == -1) + // Assign the ``signaled'' HANDLE so that callers can get + // it. + siginfo_t sig (relative_handles[relative_index]); + + if (relative_handlers[relative_index]->handle_signal + (0, &sig) == -1) Thus, you can refer to the signaled handle as - si_handle_ + si_handle_ - within the handle_signal() call back. Thanks to Matthias - Kerkhoff <make@cs.tu-berlin.de> for suggesting this. + within the handle_signal() call back. Thanks to Matthias + Kerkhoff <make@cs.tu-berlin.de> for suggesting this. - * ace/System_Time.h: Made ACE_System_Time::get_local_time() a - static member function. Thanks to Matthias Kerkhoff - <make@cs.tu-berlin.de> for suggesting this. + * ace/System_Time.h: Made ACE_System_Time::get_local_time() a + static member function. Thanks to Matthias Kerkhoff + <make@cs.tu-berlin.de> for suggesting this. - * ace/Message_Queue.h: The internal variables for counting the - bytes stored in the queue were declared as of type int (in - Message_Queue.h). But they are set (e.g. with - ACE_Message_Queue::ACE_Message_Queue) with values of size_t. + * ace/Message_Queue.h: The internal variables for counting the + bytes stored in the queue were declared as of type int (in + Message_Queue.h). But they are set (e.g. with + ACE_Message_Queue::ACE_Message_Queue) with values of size_t. - When running tests/Priority_Buffer_Test, the high_water_mark_ is - preset with the value LONG_MAX. While assigning this value from - size_t to int, this becomes -1 and the queue is always believed - to be full :-( The fix is to change the internal data structures - in Message_Queue.h from int to size_t. Thanks to Thilo Kielmann - <kielmann@informatik.uni-siegen.de> for reporting this. + When running tests/Priority_Buffer_Test, the high_water_mark_ is + preset with the value LONG_MAX. While assigning this value from + size_t to int, this becomes -1 and the queue is always believed + to be full :-( The fix is to change the internal data structures + in Message_Queue.h from int to size_t. Thanks to Thilo Kielmann + <kielmann@informatik.uni-siegen.de> for reporting this. - * tests: Fixed problems with the following three tests: + * tests: Fixed problems with the following three tests: - Priority_Buffer_Test.cpp - Reader_Writer_Test.cpp - UPIPE_SAP_Test.cpp + Priority_Buffer_Test.cpp + Reader_Writer_Test.cpp + UPIPE_SAP_Test.cpp - When these are compiled with gcc on Digital UNIX 4.0a the static - ACE_Thread_Manager thr_mgr; was never getting initialized due to - gcc compiler bugs. The fix is to replace the static thread - manager with the ACE_Service_Config::thr_mgr() singleton. - Thanks to Thilo Kielmann <kielmann@informatik.uni-siegen.de> for - pointing this out. + When these are compiled with gcc on Digital UNIX 4.0a the static + ACE_Thread_Manager thr_mgr; was never getting initialized due to + gcc compiler bugs. The fix is to replace the static thread + manager with the ACE_Service_Config::thr_mgr() singleton. + Thanks to Thilo Kielmann <kielmann@informatik.uni-siegen.de> for + pointing this out. Tue Nov 12 19:43:12 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/Thread_Manager.cpp (spawn_n): Was missing a 0 after ?. - Thanks to Thilo Kielmann <kielmann@informatik.uni-siegen.de> for - reporting this. + * ace/Thread_Manager.cpp (spawn_n): Was missing a 0 after ?. + Thanks to Thilo Kielmann <kielmann@informatik.uni-siegen.de> for + reporting this. - * ace/Log_Msg.h: Created a new macro call ACE_ERROR_BREAK(X) { - ACE_ERROR(X); break;} for use within switch and loop statements. - Thanks to Luca for this idea. + * ace/Log_Msg.h: Created a new macro call ACE_ERROR_BREAK(X) { + ACE_ERROR(X); break;} for use within switch and loop statements. + Thanks to Luca for this idea. - * ace/Pipe.cpp: Enabled the "reuse addr" flag for accepting and - connecting the Win32 version of ACE_Pipe. Thanks to Luca for - reporting this problem. + * ace/Pipe.cpp: Enabled the "reuse addr" flag for accepting and + connecting the Win32 version of ACE_Pipe. Thanks to Luca for + reporting this problem. - * ace/OS.i (thr_join): ACE_Thread::join () has a default second - parameter (the status) set to 0. This is not handled in - ACE_OS::thr_join(). To avoid getting a system error in NT we - handle this as we did with ACE_OS::thr_create() and the - thr_handle parameter. + * ace/OS.i (thr_join): ACE_Thread::join () has a default second + parameter (the status) set to 0. This is not handled in + ACE_OS::thr_join(). To avoid getting a system error in NT we + handle this as we did with ACE_OS::thr_create() and the + thr_handle parameter. - * ace/config-irix6.2-sgic++.h: Updated the set of patches required - for IRIX 6.2. Thanks to Amos Shapira for reporting this. + * ace/config-irix6.2-sgic++.h: Updated the set of patches required + for IRIX 6.2. Thanks to Amos Shapira for reporting this. Sun Nov 10 15:40:17 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu> - * ace/Token_Invariants.cpp: Moved static data - declarations out of ACE_Token_Invariant_Manager::instance and - into the header file. This is supposed to help with a g++ - problem on VxWorks. + * ace/Token_Invariants.cpp: Moved static data + declarations out of ACE_Token_Invariant_Manager::instance and + into the header file. This is supposed to help with a g++ + problem on VxWorks. Sun Nov 10 13:22:03 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/Pipe.cpp (open): Set the loopback socket into TCP_NODELAY - mode so that we don't block for 200 ms... Thanks to Luca - Priorelli <lucapri@mbox.vol.it>. + * ace/Pipe.cpp (open): Set the loopback socket into TCP_NODELAY + mode so that we don't block for 200 ms... Thanks to Luca + Priorelli <lucapri@mbox.vol.it>. - * ace/Thread_Manager: Created a new version of spawn_n() that - gives parameters for stack, stack_size, and also for the - assigned ACE_hthread_t's. Thanks to Thilo Kielmann - <kielmann@informatik.uni-siegen.de> for suggesting this. + * ace/Thread_Manager: Created a new version of spawn_n() that + gives parameters for stack, stack_size, and also for the + assigned ACE_hthread_t's. Thanks to Thilo Kielmann + <kielmann@informatik.uni-siegen.de> for suggesting this. Sun Nov 10 13:56:38 1996 Prashant Jain <pjain@merengue.cs.wustl.edu> - * tests/Reactors_Test.cpp (main): Fixed the test so that the - output of the test goes to a log file instead of STDOUT. + * tests/Reactors_Test.cpp (main): Fixed the test so that the + output of the test goes to a log file instead of STDOUT. Sat Nov 9 11:23:13 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/Synch.i: Fixed a bug in ACE_Thread_Mutex_Guard. - The call: + * ace/Synch.i: Fixed a bug in ACE_Thread_Mutex_Guard. + The call: - this->owner_ == block ? this->lock_.acquire () : this->lock_.tryacquire (); + this->owner_ == block ? this->lock_.acquire () : this->lock_.tryacquire (); - should be + should be - this->owner_ = block ? this->lock_.acquire () : this->lock_.tryacquire (); + this->owner_ = block ? this->lock_.acquire () : this->lock_.tryacquire (); - Thanks to Alexander Smundak <sasha@migration.com> for reporting - this. + Thanks to Alexander Smundak <sasha@migration.com> for reporting + this. Sat Nov 9 01:44:15 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu> - * ace/Message_Queue: Added forward and reverse iterators to - Message_Queue. Also, added typedefs to Message_Queue for - ITERATOR, and REVERSE_ITERATOR. This makes the Queue like an STL - collection and also makes it easier to use since you don't have - to define types for the iterators. Please see - test/Message_Queue_Test.cpp for an example. - - * ace/Map_Manager: Added reverse iterator to Map_Manager. Also, - added typedefs to Map_Manager for ENTRY, ITERATOR, and - REVERSE_ITERATOR. This makes the Map more like an STL collection - and also makes it easier to use since you don't have to define - types for the iterators and the entry. Please see - test/Map_Manager_Test.cpp for an example. Note that the new - typedefs does not break existing code. + * ace/Message_Queue: Added forward and reverse iterators to + Message_Queue. Also, added typedefs to Message_Queue for + ITERATOR, and REVERSE_ITERATOR. This makes the Queue like an STL + collection and also makes it easier to use since you don't have + to define types for the iterators. Please see + test/Message_Queue_Test.cpp for an example. + + * ace/Map_Manager: Added reverse iterator to Map_Manager. Also, + added typedefs to Map_Manager for ENTRY, ITERATOR, and + REVERSE_ITERATOR. This makes the Map more like an STL collection + and also makes it easier to use since you don't have to define + types for the iterators and the entry. Please see + test/Map_Manager_Test.cpp for an example. Note that the new + typedefs does not break existing code. Fri Nov 8 20:04:26 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/Malloc.h: Fixed a typo on line 176 that reads: + * ace/Malloc.h: Fixed a typo on line 176 that reads: - #include "ace/Sync_T.h" + #include "ace/Sync_T.h" - It should read: + It should read: - #include "ace/Synch_T.h" + #include "ace/Synch_T.h" - Thanks to Todd Barkalow <todd_barkalow@stortek.com> for - reporting this. + Thanks to Todd Barkalow <todd_barkalow@stortek.com> for + reporting this. Wed Nov 6 00:38:02 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/Pipe: Added the const qualifier to the following methods: - - ACE_HANDLE ACE_Pipe::read_handle (void) const; - ACE_HANDLE ACE_Pipe::write_handle (void) const; + * ace/Pipe: Added the const qualifier to the following methods: + + ACE_HANDLE ACE_Pipe::read_handle (void) const; + ACE_HANDLE ACE_Pipe::write_handle (void) const; - Thanks to Luca for reporting this. + Thanks to Luca for reporting this. - * ace/config-win32-msvc4.0.h: Redefined - ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES since it looks like - MSVC++ 4.0 still doesn't work. Maybe this is fixed in 4.2? + * ace/config-win32-msvc4.0.h: Redefined + ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES since it looks like + MSVC++ 4.0 still doesn't work. Maybe this is fixed in 4.2? Tue Nov 5 03:09:44 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/Strategies.cpp: I'd forgotten to update one of the - accept(*svc_handler) calls to use the new - accept(svc_handler->peer()) syntax. + * ace/Strategies.cpp: I'd forgotten to update one of the + accept(*svc_handler) calls to use the new + accept(svc_handler->peer()) syntax. - * netsvcs/lib/Server_Logging_Handler.cpp: Added a cast to - (COUNTER) 0 when initializing ::request_count_ to avoid problems - on Win32. Thanks to Luca for pointing this out. + * netsvcs/lib/Server_Logging_Handler.cpp: Added a cast to + (COUNTER) 0 when initializing ::request_count_ to avoid problems + on Win32. Thanks to Luca for pointing this out. - * ace/Thread_Manager: Added a new thr_self() method that return - the unique ID of the thread. This is not strictly necessary - (because a thread can always just call <ACE_Thread::thr_self>). - However, we put it here to be complete. Thanks to Hamutal Yanay - <Hamutal_Yanay@mail.icomverse.com> for suggesting this. + * ace/Thread_Manager: Added a new thr_self() method that return + the unique ID of the thread. This is not strictly necessary + (because a thread can always just call <ACE_Thread::thr_self>). + However, we put it here to be complete. Thanks to Hamutal Yanay + <Hamutal_Yanay@mail.icomverse.com> for suggesting this. - * ace/OS.cpp (thr_create): I was accidentally closing down - ::CloseHandle (thr_handle) (where thr_handle is a HANDLE *) when - I should have been doing a ::CloseHandle (handle) instead. - Thanks to Luca for finding this! + * ace/OS.cpp (thr_create): I was accidentally closing down + ::CloseHandle (thr_handle) (where thr_handle is a HANDLE *) when + I should have been doing a ::CloseHandle (handle) instead. + Thanks to Luca for finding this! Tue Nov 5 14:26:32 1996 David Levine <levine@cs.wustl.edu> - * include/makeinclude/wrapper_macros.GNU: Changed LINK.{c,cc} - commands to use LD instead of CXX. Changed all platform macros - files (except for g++ on VxWorks) to correspond. + * include/makeinclude/wrapper_macros.GNU: Changed LINK.{c,cc} + commands to use LD instead of CXX. Changed all platform macros + files (except for g++ on VxWorks) to correspond. - * tests/run_tests.sh: changed -e test to -f for portability and - reordered tests. Thanks to Michael Michael Rueger - <m_rueger@SYSCOMP.DE> for originally creating run_tests.sh, and - for maintaining it, and to Alan Stewart <axs2@osi.com> for - suggesting fixes/enhancements. + * tests/run_tests.sh: changed -e test to -f for portability and + reordered tests. Thanks to Michael Michael Rueger + <m_rueger@SYSCOMP.DE> for originally creating run_tests.sh, and + for maintaining it, and to Alan Stewart <axs2@osi.com> for + suggesting fixes/enhancements. - * tests/Time_Service_Test.cpp and Tokens_Test.cpp: changed to - return 0 on success instead of 42 + * tests/Time_Service_Test.cpp and Tokens_Test.cpp: changed to + return 0 on success instead of 42 Fri Nov 1 03:53:39 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu> - * STL: Added STL files to $WRAPPER_ROOT/STL. This code is a - modified version (changes for VC++ compiler) of the publicly - available implementation of STL from HP. Currently, - ACE_Registry uses these STL classes. + * STL: Added STL files to $WRAPPER_ROOT/STL. This code is a + modified version (changes for VC++ compiler) of the publicly + available implementation of STL from HP. Currently, + ACE_Registry uses these STL classes. Fri Nov 1 00:25:01 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/CORBA_Handler.cpp (process_events): There was a very subtle - race condition in the ACE_MT_CORBA_Handler. process_events() - accessed the singleton directly without taking the mutex. At - startup the process_event thread is kicked off from the - constructor and the instance_ is set. Hence the race. The - solution is to attempt to take the mutex before accessing the - instance. Thanks to David Artus <david.artus@sbil.co.uk> for - reporting the problem and providing the fix. + * ace/CORBA_Handler.cpp (process_events): There was a very subtle + race condition in the ACE_MT_CORBA_Handler. process_events() + accessed the singleton directly without taking the mutex. At + startup the process_event thread is kicked off from the + constructor and the instance_ is set. Hence the race. The + solution is to attempt to take the mutex before accessing the + instance. Thanks to David Artus <david.artus@sbil.co.uk> for + reporting the problem and providing the fix. - * ace/Log_Msg.cpp (log): Improved the performance of the Log_Msg - mechanism by not doing any parsing of the format string if the - user has disabled this priority. + * ace/Log_Msg.cpp (log): Improved the performance of the Log_Msg + mechanism by not doing any parsing of the format string if the + user has disabled this priority. - * ace/Reactor.cpp: Added a chance for the open() method of the - Notification_Pipe failing. Thanks to Luca for pointing this - out. + * ace/Reactor.cpp: Added a chance for the open() method of the + Notification_Pipe failing. Thanks to Luca for pointing this + out. - * ace/Reactor.cpp (handle_events): Added a change to the semantics - of the ACE_Reactor so that it doesn't fall out of the event loop - when signals arrive that it handles. Thanks to Stuart Powell - <stuartp@in.ot.com.au> for this fix. + * ace/Reactor.cpp (handle_events): Added a change to the semantics + of the ACE_Reactor so that it doesn't fall out of the event loop + when signals arrive that it handles. Thanks to Stuart Powell + <stuartp@in.ot.com.au> for this fix. - * ace/Service_Repository.cpp (remove): Fixed a bug with - Service_Record::remove() that was failing if there were only two - records and we are removing the first one. Thanks to Alex - Villazon <villazon@cui.unige.ch> for reporting this. + * ace/Service_Repository.cpp (remove): Fixed a bug with + Service_Record::remove() that was failing if there were only two + records and we are removing the first one. Thanks to Alex + Villazon <villazon@cui.unige.ch> for reporting this. - * ace: Recompiled everything on Solaris with G++ and CC and it - seems to work fine. + * ace: Recompiled everything on Solaris with G++ and CC and it + seems to work fine. - * ace/Module: Replaced the use of char * with const char * for - assigning the Module a name. + * ace/Module: Replaced the use of char * with const char * for + assigning the Module a name. - * ace: Split the Task.{cpp,i.h} file into Task_T.{cpp,i,h} in - order to factor out the new non-template ACE_Task_Base and - ACE_Task_Exit classes. This is required for GCC-based compilers - that include the *.cpp files... + * ace: Split the Task.{cpp,i.h} file into Task_T.{cpp,i,h} in + order to factor out the new non-template ACE_Task_Base and + ACE_Task_Exit classes. This is required for GCC-based compilers + that include the *.cpp files... Thu Oct 31 00:36:38 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/Malloc_T.h: Made the destructor of ACE_Allocator_Adapter - virtual. + * ace/Malloc_T.h: Made the destructor of ACE_Allocator_Adapter + virtual. - * ace/Thread: Reorganized the ACE_Thread so that the - ACE_HAS_THREADS #ifdef is no longer required... + * ace/Thread: Reorganized the ACE_Thread so that the + ACE_HAS_THREADS #ifdef is no longer required... - * ace/Strategies.h: Changed all the destructors to be virtual so - that G++ will stop complaining... + * ace/Strategies.h: Changed all the destructors to be virtual so + that G++ will stop complaining... - * ace/Thread_Manager: Reorganized the ACE_Thread_Manager so that - the ACE_HAS_THREADS #ifdef is no longer required... + * ace/Thread_Manager: Reorganized the ACE_Thread_Manager so that + the ACE_HAS_THREADS #ifdef is no longer required... - * ace/config-win32-msvc4.0.h: Added Dieter Quehl's great hack to - get ACE to compile correctly on Win32 with MFC! + * ace/config-win32-msvc4.0.h: Added Dieter Quehl's great hack to + get ACE to compile correctly on Win32 with MFC! - * ace/Task: I've rearranged the implementation of ACE_Task<> - in the following way: + * ace/Task: I've rearranged the implementation of ACE_Task<> + in the following way: - 1. Defined a non-template class ACE_Task_Base from which the - ACE_Task<...> inherits (instead of inheriting from - Ace_Service_Object, which ACE_Task_Base now inherits from. + 1. Defined a non-template class ACE_Task_Base from which the + ACE_Task<...> inherits (instead of inheriting from + Ace_Service_Object, which ACE_Task_Base now inherits from. - 2. Move all methods that don't depend on the <ACE_MT_SYNCH> or - <ACE_NULL_SYNCH> modifers from the ACE_Task template to - ACE_Task_Base. + 2. Move all methods that don't depend on the <ACE_MT_SYNCH> or + <ACE_NULL_SYNCH> modifers from the ACE_Task template to + ACE_Task_Base. - There are two motivations for making this change: + There are two motivations for making this change: - 1. It reduces ``template bloat'' by factoring out common - code that can be shared between ACE_Task<ACE_MT_SYNCH> - and ACE_Task<ACE_NULL_SYNCH>. + 1. It reduces ``template bloat'' by factoring out common + code that can be shared between ACE_Task<ACE_MT_SYNCH> + and ACE_Task<ACE_NULL_SYNCH>. - 2. It makes it possible for the Thread_Manager to use - ACE_Task_Base *'s for managing groups of ACE_Tasks - in a fully polymorphic manner. + 2. It makes it possible for the Thread_Manager to use + ACE_Task_Base *'s for managing groups of ACE_Tasks + in a fully polymorphic manner. - Note that the new changes don't break any existing code that - uses ACE_Task. Thanks to Hamutal Yanay - <Hamutal_Yanay@hub.comverse.com> and Ari Erev's - <Ari_Erev@comverse.com> for suggesting these changes. + Note that the new changes don't break any existing code that + uses ACE_Task. Thanks to Hamutal Yanay + <Hamutal_Yanay@hub.comverse.com> and Ari Erev's + <Ari_Erev@comverse.com> for suggesting these changes. - * ace/Thread_Manager: Changed the use of ACE_Task<ACE_SYNCH> to - ACE_Service_Object because this avoids nasty problems with - template type conflicts. The right solution is probably to - create a new non-template base class for ACE_Task called - ACE_Task_Base and move all the ACE_Task operations into there - that don't involve the Message_Queue directly. I'll need to - think more about this... + * ace/Thread_Manager: Changed the use of ACE_Task<ACE_SYNCH> to + ACE_Service_Object because this avoids nasty problems with + template type conflicts. The right solution is probably to + create a new non-template base class for ACE_Task called + ACE_Task_Base and move all the ACE_Task operations into there + that don't involve the Message_Queue directly. I'll need to + think more about this... - * ace/SOCK_Stream: Added new timed send_n() and recv_n() methods, - which use the underlying timed ACE::send() and ACE::recv() - calls. + * ace/SOCK_Stream: Added new timed send_n() and recv_n() methods, + which use the underlying timed ACE::send() and ACE::recv() + calls. - * ace/ACE.cpp: Added new timed send_n() and recv_n() methods, - which use the underlying timed ACE::send() and ACE::recv() - calls. + * ace/ACE.cpp: Added new timed send_n() and recv_n() methods, + which use the underlying timed ACE::send() and ACE::recv() + calls. Wed Oct 30 00:27:21 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/OS.h: Changed MAXHOSTNAMELEN on Win32 from - (MAX_COMPUTERNAME_LENGTH+1) (which is around 16 or so) to 256. - Thanks to Tilo Christ <christ@swl.fh-heilbronn.de> for this - suggestion. + * ace/OS.h: Changed MAXHOSTNAMELEN on Win32 from + (MAX_COMPUTERNAME_LENGTH+1) (which is around 16 or so) to 256. + Thanks to Tilo Christ <christ@swl.fh-heilbronn.de> for this + suggestion. - * ace: Made #define STRICT a compile time option if the - ACE_HAS_STRICT flag is enabled. This prevents ACE from breaking - existing application (i.e., non-ACE) code. Thanks to Karlheinz - for pointing this out! + * ace: Made #define STRICT a compile time option if the + ACE_HAS_STRICT flag is enabled. This prevents ACE from breaking + existing application (i.e., non-ACE) code. Thanks to Karlheinz + for pointing this out! - * ace/Synch_T.cpp: Fixed a typo in ACE_Condition<MUTEX>::wait - (void). + * ace/Synch_T.cpp: Fixed a typo in ACE_Condition<MUTEX>::wait + (void). - return ACE_OS::cond_wait (&this->cond_, this->mutex_.lock_); + return ACE_OS::cond_wait (&this->cond_, this->mutex_.lock_); - should read + should read - return ACE_OS::cond_wait (&this->cond_, &this->mutex_.lock_); + return ACE_OS::cond_wait (&this->cond_, &this->mutex_.lock_); - Thanks to Dieter Quehl <dietrich.quehl@med.siemens.de> for - reporting this! + Thanks to Dieter Quehl <dietrich.quehl@med.siemens.de> for + reporting this! - * ace/Svc_Handler.h: Removed the operator ACE_PEER_STREAM &() from - the ACE_Svc_Handler class since we don't need it anymore due to - the changes below. + * ace/Svc_Handler.h: Removed the operator ACE_PEER_STREAM &() from + the ACE_Svc_Handler class since we don't need it anymore due to + the changes below. - * ace/{Acceptor,Connector}.cpp: Removed the use of operator - ACE_PEER_STREAM &() in the Acceptor::accept() and - Connector::connect() code and replaced it with - svc_handler->peer(). This works much better and is more - intuitive. + * ace/{Acceptor,Connector}.cpp: Removed the use of operator + ACE_PEER_STREAM &() in the Acceptor::accept() and + Connector::connect() code and replaced it with + svc_handler->peer(). This works much better and is more + intuitive. Wed Oct 30 00:30:00 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu> - * Registry: Added a Name Service implementation to ACE based on - Win32 Registry. The ACE_Registry interface is inspired by the - interface specified in the CORBA Naming Service Specification. - The implementation is done through Win32 Reg*() functions. - Other than providing an OO wrapper for the Win32 Reg*() - functions, ACE_Registry provides an abstraction for iteration - over the elements of the Registry. This only works on Win32 - platforms (unless you are brave enough to reimplement the - Win32 Registry API on UNIX and link it in underneath ACE!). - - * ace/Local_Name_Space_T.cpp: Moved SEH out of methods of - Name_Space_Map to the methods of Local_Name_Space. Some of - the calls to Local_Name_Space methods used the allocator to - either malloc or find or free shared memory. Adding SEH to these - methods ensured that any exception raised due to remapping would - be caught and handled appropriately. - - Also, to fool the stupid MFC compiler, we added _i methods - so that it stopped bitching about destructors not getting called - correctly. - - * Added three new tests to /examples/Naming. Thanks to Lothar for - providing these tests. + * Registry: Added a Name Service implementation to ACE based on + Win32 Registry. The ACE_Registry interface is inspired by the + interface specified in the CORBA Naming Service Specification. + The implementation is done through Win32 Reg*() functions. + Other than providing an OO wrapper for the Win32 Reg*() + functions, ACE_Registry provides an abstraction for iteration + over the elements of the Registry. This only works on Win32 + platforms (unless you are brave enough to reimplement the + Win32 Registry API on UNIX and link it in underneath ACE!). + + * ace/Local_Name_Space_T.cpp: Moved SEH out of methods of + Name_Space_Map to the methods of Local_Name_Space. Some of + the calls to Local_Name_Space methods used the allocator to + either malloc or find or free shared memory. Adding SEH to these + methods ensured that any exception raised due to remapping would + be caught and handled appropriately. + + Also, to fool the stupid MFC compiler, we added _i methods + so that it stopped bitching about destructors not getting called + correctly. + + * Added three new tests to /examples/Naming. Thanks to Lothar for + providing these tests. Tue Oct 29 18:10:09 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/ACE.cpp (send): Integrated a new and simpler version of - timed ACE::send(). Thanks to Vital Aza <va3@cs.wustl.edu> for - coming up with this. - - * ace/XtReactor.cpp: When the ACE_Reactor is constructed it - creates the notify pipe and registers it with the attach() - method. The XtReactor overloads this method BUT because the - attach occurs when constructing the base class ACE_Reactor, the - ACE_Reactor attach() is called not the XtReactor attach(). This - means that the notify pipe is registered with the ACE_Reactor - event handling code not the XtReactor and so notfications don't - work. To get around this we simply close and re-opened the - notification handler in the constructor of the XtReactor. - Thanks to Rodney Skinner <rods@in.ot.com.au> for this fix. - - * ace/XtReactor.cpp (schedule_timer): The ACE_Reactor returns a - timer_id from it's equivalent call but the XtReactor always - returns 0. To fix this we simply replaced the "return 0;" in - the function with "return result;" Thanks to Rodney Skinner - <rods@in.ot.com.au> for reporting this. + * ace/ACE.cpp (send): Integrated a new and simpler version of + timed ACE::send(). Thanks to Vital Aza <va3@cs.wustl.edu> for + coming up with this. + + * ace/XtReactor.cpp: When the ACE_Reactor is constructed it + creates the notify pipe and registers it with the attach() + method. The XtReactor overloads this method BUT because the + attach occurs when constructing the base class ACE_Reactor, the + ACE_Reactor attach() is called not the XtReactor attach(). This + means that the notify pipe is registered with the ACE_Reactor + event handling code not the XtReactor and so notfications don't + work. To get around this we simply close and re-opened the + notification handler in the constructor of the XtReactor. + Thanks to Rodney Skinner <rods@in.ot.com.au> for this fix. + + * ace/XtReactor.cpp (schedule_timer): The ACE_Reactor returns a + timer_id from it's equivalent call but the XtReactor always + returns 0. To fix this we simply replaced the "return 0;" in + the function with "return result;" Thanks to Rodney Skinner + <rods@in.ot.com.au> for reporting this. Tue Oct 29 00:02:44 1996 Douglas C. Schmidt <schmidt@lambada.cs.wustl.edu> - * ace/config-win32-msvc4.0.h: Defined the STRICT symbol based on a - suggestion from Luca. STRICT type checking in WINDOWS.H - enhances type safety for Windows programs by using distinct - types to represent all the different HANDLES in Windows. So for - example, STRICT prevents you from mistakenly passing an HPEN to - a routine expecting an HBITMAP. Note that if you have STRICT - type checking enabled in one file, but not in another, the C++ - compiler will generate different external link symbols for a - single function. This will result in link-time errors If you are - mixing STRICT and non-STRICT code, you must be aware of linkage - inconsistencies. In general, all MFC programming and all C++ - should be done with STRICT. If you have legacy C code, then not - using STRICT is acceptable - - * ace/OS.cpp (thr_create): Added a special check for the situation - where we have both ACE_HAS_PTHREADS and ACE_HAS_STHREADS - defined. In this case, we are running on Solaris, where - ACE_thread_t and ACE_hthread_t are the same. Therefore, we can - copy the value of the *thr_id into the *thr_handle. This - ensures that the ACE_Thread_Manager behaves correctly with - respect to suspending and resuming threads and ACE_Tasks. - - * ace/Trace.cpp (ACE_Trace): Changed the use of LM_DEBUG to - LM_TRACE in the constructor and destructor. Thanks to Luca for - this! - - * ace/OS.i: Added a cast to of (HMODULE) handle so that the STRICT - macro would work correctly for Win32. Thanks to Luca for this. - - * ace/config-win32-msvc4.0.h: According to Luca, ACE compiles file - with ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES undefined on NT. So - I undefined it! If there are any problems with this, please let - me know. - - * ace/SOCK_Dgram: Added Luca Priorelli <lucapri@mbox.vol.it> - implementation of recv() for SOCK Dgrams that allows clients to - read from a socket without having to provide a buffer to read. - - * examples/Threads/test_task_four.cpp: This is a new test - program to test the new interfaces. Thanks to Hamutal Yanay - & Ari Erev for this. - - * tests/test_config.h: Added a call to the new ACE_OS::mkdir() - wrapper to create the log directory if one doesn't already - exist. This should solve some nasty problems with NT reported - by Tilo Christ <christ@swl.fh-heilbronn.de>. - - * ace/OS.h: Added a new macro ACE_DEFAULT_DIR_PERMS and changed - the spelling of the existing ACE_DEFAULT_PERMS to - ACE_DEFAULT_FILE_PERMS, which is more accurate. + * ace/config-win32-msvc4.0.h: Defined the STRICT symbol based on a + suggestion from Luca. STRICT type checking in WINDOWS.H + enhances type safety for Windows programs by using distinct + types to represent all the different HANDLES in Windows. So for + example, STRICT prevents you from mistakenly passing an HPEN to + a routine expecting an HBITMAP. Note that if you have STRICT + type checking enabled in one file, but not in another, the C++ + compiler will generate different external link symbols for a + single function. This will result in link-time errors If you are + mixing STRICT and non-STRICT code, you must be aware of linkage + inconsistencies. In general, all MFC programming and all C++ + should be done with STRICT. If you have legacy C code, then not + using STRICT is acceptable + + * ace/OS.cpp (thr_create): Added a special check for the situation + where we have both ACE_HAS_PTHREADS and ACE_HAS_STHREADS + defined. In this case, we are running on Solaris, where + ACE_thread_t and ACE_hthread_t are the same. Therefore, we can + copy the value of the *thr_id into the *thr_handle. This + ensures that the ACE_Thread_Manager behaves correctly with + respect to suspending and resuming threads and ACE_Tasks. + + * ace/Trace.cpp (ACE_Trace): Changed the use of LM_DEBUG to + LM_TRACE in the constructor and destructor. Thanks to Luca for + this! + + * ace/OS.i: Added a cast to of (HMODULE) handle so that the STRICT + macro would work correctly for Win32. Thanks to Luca for this. + + * ace/config-win32-msvc4.0.h: According to Luca, ACE compiles file + with ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES undefined on NT. So + I undefined it! If there are any problems with this, please let + me know. + + * ace/SOCK_Dgram: Added Luca Priorelli <lucapri@mbox.vol.it> + implementation of recv() for SOCK Dgrams that allows clients to + read from a socket without having to provide a buffer to read. + + * examples/Threads/test_task_four.cpp: This is a new test + program to test the new interfaces. Thanks to Hamutal Yanay + & Ari Erev for this. + + * tests/test_config.h: Added a call to the new ACE_OS::mkdir() + wrapper to create the log directory if one doesn't already + exist. This should solve some nasty problems with NT reported + by Tilo Christ <christ@swl.fh-heilbronn.de>. + + * ace/OS.h: Added a new macro ACE_DEFAULT_DIR_PERMS and changed + the spelling of the existing ACE_DEFAULT_PERMS to + ACE_DEFAULT_FILE_PERMS, which is more accurate. Mon Oct 28 21:35:12 1996 Douglas C. Schmidt <schmidt@lambada.cs.wustl.edu> - * ace/OS.h: Added a wrapper for the mkdir() system call. We need - it for some of the tests. + * ace/OS.h: Added a wrapper for the mkdir() system call. We need + it for some of the tests. - * ace/Task: Changed the name of ACE_Task_Exit<>::set_this() to - ACE_Task_Exit<>::set_task(). Thanks to Hamutal Yanay & Ari Erev - for suggesting this. + * ace/Task: Changed the name of ACE_Task_Exit<>::set_this() to + ACE_Task_Exit<>::set_task(). Thanks to Hamutal Yanay & Ari Erev + for suggesting this. - * ace/{Task,Thread_Manager}: Integrated Hamutal - <Hamutal_Yanay@hub.comverse.com> Yanay & Ari Erev's - <Ari_Erev@comverse.com> enhancements to add ACE_Task support - to the ACE_Thread_Manager. This allows the ACE_Thread_Manager to - know about ACE_Tasks directly, rather than knowing - indirectly via their lower-level thread IDs. The changes - are described below: + * ace/{Task,Thread_Manager}: Integrated Hamutal + <Hamutal_Yanay@hub.comverse.com> Yanay & Ari Erev's + <Ari_Erev@comverse.com> enhancements to add ACE_Task support + to the ACE_Thread_Manager. This allows the ACE_Thread_Manager to + know about ACE_Tasks directly, rather than knowing + indirectly via their lower-level thread IDs. The changes + are described below: - - Added a parameter to the activate() method. It is used to - pass an ACE_Task* to spawn_n(). + - Added a parameter to the activate() method. It is used to + pass an ACE_Task* to spawn_n(). - - Modified suspend() and resume() to call - thrMgr->suspend_task() and thrMgr->resume_task() instead of - thrMgr->suspend_grp() and thrMgr->resume_grp(). + - Modified suspend() and resume() to call + thrMgr->suspend_task() and thrMgr->resume_task() instead of + thrMgr->suspend_grp() and thrMgr->resume_grp(). - - Added an ACE_Task * parameter to spawn_n(). + - Added an ACE_Task * parameter to spawn_n(). - - Added an ACE_Task * parameter to append_thr(). + - Added an ACE_Task * parameter to append_thr(). - - append_thr() uses the ACE_Task * input parameter to - initialize the thread descriptor. + - append_thr() uses the ACE_Task * input parameter to + initialize the thread descriptor. - - Added the following methods: - apply_task() - suspend_task() - resume_task() - kill_task() - resume_task() - cancel_task() - find_task() + - Added the following methods: + apply_task() + suspend_task() + resume_task() + kill_task() + resume_task() + cancel_task() + find_task() - num_tasks_in_group() - num_threads_in_tasks() + num_tasks_in_group() + num_threads_in_tasks() - task_list() - thread_list() - hthread_list() + task_list() + thread_list() + hthread_list() - set_grp() Like the current set_grp() but gets an ACE_Task * - as input. - get_grp() Like the current set_grp() but outputs an - ACE_Task *. + set_grp() Like the current set_grp() but gets an ACE_Task * + as input. + get_grp() Like the current set_grp() but outputs an + ACE_Task *. - wait_task() - wait_group() + wait_task() + wait_group() Sun Oct 27 11:25:00 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/OS: modified the ACE_OSCALL_RETURN macro so that we'll - no longer have zillions of warnings about _result not - used... + * ace/OS: modified the ACE_OSCALL_RETURN macro so that we'll + no longer have zillions of warnings about _result not + used... - * ace/Synch_T: Changed the use of ACE_Mutex for ACE_TSS to - ACE_Thread_Mutex. + * ace/Synch_T: Changed the use of ACE_Mutex for ACE_TSS to + ACE_Thread_Mutex. - * ace: Added the necessary template specializations to get ACE - compiled correctly with G++. + * ace: Added the necessary template specializations to get ACE + compiled correctly with G++. - * ace/Log_Msg.h: There were some places in the ACE_{DEBUG,ERROR} - macros that should have been using __ace_error but there still - using errno (which is wrong since this might be changed due to - side-effects of calling ACE_Log_Msg::instance()). I found this - problem due to the use of -Wall with G++! As a result of this - fix, ACE now compiles much more cleanly with gcc -Wall. + * ace/Log_Msg.h: There were some places in the ACE_{DEBUG,ERROR} + macros that should have been using __ace_error but there still + using errno (which is wrong since this might be changed due to + side-effects of calling ACE_Log_Msg::instance()). I found this + problem due to the use of -Wall with G++! As a result of this + fix, ACE now compiles much more cleanly with gcc -Wall. - * ace/Strategy: Improved the scheme used to define the PEER_ADDR - type of the ACE_Accept_Strategy so that it will work correctly - on platforms whose C++ compilers aren't quite up to handling all - variants of template typedefs. In particular, many platforms - don't support the use of template typedefs in parameter names... + * ace/Strategy: Improved the scheme used to define the PEER_ADDR + type of the ACE_Accept_Strategy so that it will work correctly + on platforms whose C++ compilers aren't quite up to handling all + variants of template typedefs. In particular, many platforms + don't support the use of template typedefs in parameter names... - * ace/OS: HP/UX omitted the const in the prototype of - const_timewait(). Therefore, I added a new typedef to handle - this and updated all the HP/UX config*.h files. + * ace/OS: HP/UX omitted the const in the prototype of + const_timewait(). Therefore, I added a new typedef to handle + this and updated all the HP/UX config*.h files. - * ace: Added a new config file (config-sunos5.5-sunc++-4.1.h) - which reflects the fact that SunC++ 4.1 fixes template bugs that - prevented earlier versions from supporting template typedefs - correctly. The new config file #defines - ACE_HAS_TEMPLATE_TYPEDEFS. + * ace: Added a new config file (config-sunos5.5-sunc++-4.1.h) + which reflects the fact that SunC++ 4.1 fixes template bugs that + prevented earlier versions from supporting template typedefs + correctly. The new config file #defines + ACE_HAS_TEMPLATE_TYPEDEFS. Sat Oct 26 02:22:25 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace: On the advice of David Levine, I compiled ACE with gcc - -Wall and started to fix lots of minor warnings (e.g., - misordered data member initializations). + * ace: On the advice of David Levine, I compiled ACE with gcc + -Wall and started to fix lots of minor warnings (e.g., + misordered data member initializations). - * ace/Local_Tokens.h: Changed the destructors of ACE_Mutex_Token, - ACE_RW_Token, ACE_Token_Proxy, and ACE_RW_Token to be virtual. + * ace/Local_Tokens.h: Changed the destructors of ACE_Mutex_Token, + ACE_RW_Token, ACE_Token_Proxy, and ACE_RW_Token to be virtual. - * ace/Synch_T.h: Changed the destructor of ACE_TSS to be virtual. + * ace/Synch_T.h: Changed the destructor of ACE_TSS to be virtual. - * ace/OS: Changed the prototype of ACE_OS::select() so that it - uses const ACE_Time_Value *. + * ace/OS: Changed the prototype of ACE_OS::select() so that it + uses const ACE_Time_Value *. - * Updated all uses of ACE_Malloc to use the new ACE_*_MEMORY_POOL - #defines. This makes it possible to use the ACE_Malloc<> scheme - with lame C++ compilers. + * Updated all uses of ACE_Malloc to use the new ACE_*_MEMORY_POOL + #defines. This makes it possible to use the ACE_Malloc<> scheme + with lame C++ compilers. - * ace/ACE: Changed the interface of the new timed send/recv calls - to use ACE_Time_Value *, which makes it easier to determine - the blocking semantics at runtime. Thanks to Bill Fulton - <bill@fasttrack2.bscc.bls.com> for suggesting this. + * ace/ACE: Changed the interface of the new timed send/recv calls + to use ACE_Time_Value *, which makes it easier to determine + the blocking semantics at runtime. Thanks to Bill Fulton + <bill@fasttrack2.bscc.bls.com> for suggesting this. Sat Oct 26 15:55:02 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu> - * ace/OS.h: We determined that MSVC++ is capable of supporting - template typedefs. Therefore, we can enable the - ACE_HAS_TEMPLATE_TYPEDEFS flag, which makes life much easier for - end users! + * ace/OS.h: We determined that MSVC++ is capable of supporting + template typedefs. Therefore, we can enable the + ACE_HAS_TEMPLATE_TYPEDEFS flag, which makes life much easier for + end users! Fri Oct 25 23:16:16 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu> - * examples/Shared_Malloc/test_multiple_mallocs.cpp: Added a new - test that demonstrates the new ability of ACE_Malloc<> to to - handle multiple mallocs rooted at different base addresses. - - * ace/Memory_Pool: Fixed this stuff so that it works even when C++ - compilers can't grok template typedefs. - - * ace: Put all the macros that handle the fact that many C++ - compilers have broken template implementations into one place - (OS.h), rather than having this spread out in many files. - - * In ACE_MMAP_Memory_Pool::init_acquire (), we reset errno to 0 in - the case where the file already exists (and errno == EEXIST). - - * Added an ACE_*_Memory_Pool_Options class to each Memory Pool - class. The Options class allows detailed parameters to be passed - to the constructor of the Memory Pool class. Since a typedef'd - Options class was added to every Memory Pool class, this gave us - the ability to use traits in ACE_Malloc and - ACE_Allocator_Adapter to construct generic Memory Pools that can - be initialized uniquely for each instance of ACE_Malloc. Note - that this new feature only works for C++ compilers that support - template typedefs correctly (e.g., MSVC++ 4.x, SunC++ 4.1, - and the AIX C++ compiler). - - * Added additional constructors to ACE_Malloc and - ACE_Allocator_Adapter to allow Options to be passed in to Memory - Pool. - - * Added an extra field in ACE_Name_Options which allows - specification of the base address of the memory pool. This is - now used by ACE_Local_Name_Space::create_manager() to create an - ACE_Allocator_Adapter. This now allows us to have multiple - ACE_Naming_Context simultaneously in the same process address - space. - - * Also added error checking for constructors (in - ACE_Local_Name_Space and ACE_Malloc) by checking errno - values. This is a "hack" since we currently do not use exception - handling. + * examples/Shared_Malloc/test_multiple_mallocs.cpp: Added a new + test that demonstrates the new ability of ACE_Malloc<> to to + handle multiple mallocs rooted at different base addresses. + + * ace/Memory_Pool: Fixed this stuff so that it works even when C++ + compilers can't grok template typedefs. + + * ace: Put all the macros that handle the fact that many C++ + compilers have broken template implementations into one place + (OS.h), rather than having this spread out in many files. + + * In ACE_MMAP_Memory_Pool::init_acquire (), we reset errno to 0 in + the case where the file already exists (and errno == EEXIST). + + * Added an ACE_*_Memory_Pool_Options class to each Memory Pool + class. The Options class allows detailed parameters to be passed + to the constructor of the Memory Pool class. Since a typedef'd + Options class was added to every Memory Pool class, this gave us + the ability to use traits in ACE_Malloc and + ACE_Allocator_Adapter to construct generic Memory Pools that can + be initialized uniquely for each instance of ACE_Malloc. Note + that this new feature only works for C++ compilers that support + template typedefs correctly (e.g., MSVC++ 4.x, SunC++ 4.1, + and the AIX C++ compiler). + + * Added additional constructors to ACE_Malloc and + ACE_Allocator_Adapter to allow Options to be passed in to Memory + Pool. + + * Added an extra field in ACE_Name_Options which allows + specification of the base address of the memory pool. This is + now used by ACE_Local_Name_Space::create_manager() to create an + ACE_Allocator_Adapter. This now allows us to have multiple + ACE_Naming_Context simultaneously in the same process address + space. + + * Also added error checking for constructors (in + ACE_Local_Name_Space and ACE_Malloc) by checking errno + values. This is a "hack" since we currently do not use exception + handling. Thu Oct 24 02:43:11 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * examples/Connection/misc/Makefile: The Makefile in - ACE_wrappers/examples/Connection/misc seems to have been - truncated. I replaced it. Thanks to Alan Stewart - <axs2@osi.com> for reporting this. + * examples/Connection/misc/Makefile: The Makefile in + ACE_wrappers/examples/Connection/misc seems to have been + truncated. I replaced it. Thanks to Alan Stewart + <axs2@osi.com> for reporting this. - * examples/IPC_SAP/SOCK_SAP/CPP-{inclient,inserver}.cpp: Updated - these examples to use the new timed send()/recv() operations. + * examples/IPC_SAP/SOCK_SAP/CPP-{inclient,inserver}.cpp: Updated + these examples to use the new timed send()/recv() operations. - * ace/SOCK_IO: Added timed send()/recv() methods, using the base - level implementations in class ACE. + * ace/SOCK_IO: Added timed send()/recv() methods, using the base + level implementations in class ACE. - * ace/ACE: Added timed send()/recv() methods. + * ace/ACE: Added timed send()/recv() methods. Wed Oct 23 19:56:45 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * examples/IPC_SAP/SOCK_SAP/CPP-inclient.cpp (main): Changed the - behavior of the test program so that it doesn't take a - local_addr, but rather will use the default (this prevents a - common problem that happens when users run the test without - reading the README file). + * examples/IPC_SAP/SOCK_SAP/CPP-inclient.cpp (main): Changed the + behavior of the test program so that it doesn't take a + local_addr, but rather will use the default (this prevents a + common problem that happens when users run the test without + reading the README file). - * ace/ACE.cpp: Added a new method (get_flags) that returns the - current setting of flags associated with handle. + * ace/ACE.cpp: Added a new method (get_flags) that returns the + current setting of flags associated with handle. - * Start of a brave new world: ACE is now under CVS version - control... Thanks to David Levine and Chris Cleeland - for making this happen. + * Start of a brave new world: ACE is now under CVS version + control... Thanks to David Levine and Chris Cleeland + for making this happen. Sat Oct 19 12:33:56 1996 David L. Levine <levine@cs.wustl.edu> - * added ACE threads mappings to VxWorks 5.2 tasks in OS.*. - NOTE: this is _untested_ at this point, but only affects - VxWorks code + * added ACE threads mappings to VxWorks 5.2 tasks in OS.*. + NOTE: this is _untested_ at this point, but only affects + VxWorks code - * changed name of first argument of ACE_OS::sigprocmask() and - ACE_OS::thr_sigsetmask() from "signum" to "how" to better - represent what it really is. + * changed name of first argument of ACE_OS::sigprocmask() and + ACE_OS::thr_sigsetmask() from "signum" to "how" to better + represent what it really is. Wed Oct 16 01:59:40 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/Log_Record.cpp (print): added Luca's suggestion for checking - if host_name == 0 for the ostream version of print(), as well. + * ace/Log_Record.cpp (print): added Luca's suggestion for checking + if host_name == 0 for the ostream version of print(), as well. - * Released version of ACE 4.0.32 for testing. + * Released version of ACE 4.0.32 for testing. - * ace/Synch.h: Added many small fixes for HP/UX 10.x. Thanks to - Alan Stewart <axs2@osi.com> for providing these. + * ace/Synch.h: Added many small fixes for HP/UX 10.x. Thanks to + Alan Stewart <axs2@osi.com> for providing these. - * ace/OS.h: Added many new ACE_LACKS* and ACE_HAS* macros to - support the MVS port. Thanks to Chuck Gehr - <gehr@sweng.stortek.com> for these. + * ace/OS.h: Added many new ACE_LACKS* and ACE_HAS* macros to + support the MVS port. Thanks to Chuck Gehr + <gehr@sweng.stortek.com> for these. Tue Oct 15 11:56:59 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/OS.h: in a continuing effort to protect the ACE namespace, - I've changed ace/OS.h around lines 127-137 so that "SYNCH" and - "SYNCH_MUTEX", etc. are prefixed with "ACE_". Thanks to Alan - Stewart <axs2@osi.com> for suggesting this. + * ace/OS.h: in a continuing effort to protect the ACE namespace, + I've changed ace/OS.h around lines 127-137 so that "SYNCH" and + "SYNCH_MUTEX", etc. are prefixed with "ACE_". Thanks to Alan + Stewart <axs2@osi.com> for suggesting this. - * ace/Local_Tokens.h: Removed an unnecessary parameter name - that was unused. Thanks to Stuart Powell <stuartp@in.ot.com.au> - for reporting this. + * ace/Local_Tokens.h: Removed an unnecessary parameter name + that was unused. Thanks to Stuart Powell <stuartp@in.ot.com.au> + for reporting this. Tue Oct 15 17:03:37 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu> - * ace/ReactorEx.cpp (handle_events): Fixed a bug in handle_events - so that the correct handlers get called when multiple handles - become signaled simultaneously. Thanks to Ari Erev - <Ari_Erev@comverse.com> for pointing out this bug. I also took - this opportunity to fix a bug when handlers are removed during - handle_events. + * ace/ReactorEx.cpp (handle_events): Fixed a bug in handle_events + so that the correct handlers get called when multiple handles + become signaled simultaneously. Thanks to Ari Erev + <Ari_Erev@comverse.com> for pointing out this bug. I also took + this opportunity to fix a bug when handlers are removed during + handle_events. - * examples/Reactor/ReactorEx/test_remove_handler.cpp: Added a new - application that tests how the ReactorEx services simultaneous - events and removes handlers. This example also illustrates the - use of the new ACE_Events wrapper. Check - examples/Reactor/ReactorEx/README for more details. + * examples/Reactor/ReactorEx/test_remove_handler.cpp: Added a new + application that tests how the ReactorEx services simultaneous + events and removes handlers. This example also illustrates the + use of the new ACE_Events wrapper. Check + examples/Reactor/ReactorEx/README for more details. Mon Oct 14 11:43:18 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * tests: Added a new version of run_tests.sh, which was - contributed by Michael Rueger <mike@SYSCOMP.DE>. + * tests: Added a new version of run_tests.sh, which was + contributed by Michael Rueger <mike@SYSCOMP.DE>. - * examples/Logger/simple-server/Logging_Handler.cpp (handle_input) - and examples/Logger/Acceptor-server/server_loggerd.cpp - (handle_input): Changed from stderr to cerr to work around bugs - with the C run-time libraries on Win32. Thanks to Tilo Christ - <christ@swl.fh-heilbronn.de> for suggesting this. + * examples/Logger/simple-server/Logging_Handler.cpp (handle_input) + and examples/Logger/Acceptor-server/server_loggerd.cpp + (handle_input): Changed from stderr to cerr to work around bugs + with the C run-time libraries on Win32. Thanks to Tilo Christ + <christ@swl.fh-heilbronn.de> for suggesting this. Mon Oct 14 11:09:42 1996 Prashant Jain <pjain@merengue.cs.wustl.edu> - * ace/Local_Name_Space_T.cpp (remap): Added processor specific - stuff to remap(). The code was taken from the book "Win32 - Network Programming" by Ralph Davis (p.18) and takes care of - cases specific to the 80x86 processor. The code ensures that the - registers are set properly when we continue execution after an - exception. + * ace/Local_Name_Space_T.cpp (remap): Added processor specific + stuff to remap(). The code was taken from the book "Win32 + Network Programming" by Ralph Davis (p.18) and takes care of + cases specific to the 80x86 processor. The code ensures that the + registers are set properly when we continue execution after an + exception. Sun Oct 13 21:18:38 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/Log_Record.cpp (print): Added a test to make sure that the - value returned from ctime_r != 0 (e.g., if time_stamp_ == -1) in - order to avoid crashes. + * ace/Log_Record.cpp (print): Added a test to make sure that the + value returned from ctime_r != 0 (e.g., if time_stamp_ == -1) in + order to avoid crashes. - * examples/Logger/client/logging_app.cpp (main): Moved the - construction of the ACE_Log_Record log_record object into the - loop so that it will be recreated each time through. If this - isn't done, then we'll be continually "encoding" values into - network byte order that have already been encoded and screwing - things up on little-endian machines (such as Intel). Thanks to - Irfan and Tilo Christ <christ@swl.fh-heilbronn.de> for pointing - me in the right direction on this. + * examples/Logger/client/logging_app.cpp (main): Moved the + construction of the ACE_Log_Record log_record object into the + loop so that it will be recreated each time through. If this + isn't done, then we'll be continually "encoding" values into + network byte order that have already been encoded and screwing + things up on little-endian machines (such as Intel). Thanks to + Irfan and Tilo Christ <christ@swl.fh-heilbronn.de> for pointing + me in the right direction on this. - * ace/Log_Record.cpp: Changed the default constructor so that it - gives default initializations to the data members. + * ace/Log_Record.cpp: Changed the default constructor so that it + gives default initializations to the data members. - * examples/Logger/Acceptor-server/server_loggerd.cpp (handle_input): - Fixed a couple of typos where + * examples/Logger/Acceptor-server/server_loggerd.cpp (handle_input): + Fixed a couple of typos where - Logging_Handler::handle_input (int) + Logging_Handler::handle_input (int) - should be: + should be: - Logging_Handler::handle_input (ACE_HANDLE) + Logging_Handler::handle_input (ACE_HANDLE) - and + and - size_t len; + size_t len; - should be: + should be: - ssize_t len; + ssize_t len; - Thanks to Irfan for finding these. + Thanks to Irfan for finding these. Sat Oct 12 08:48:23 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * Released a beta version of ACE 4.0.32 for testing. + * Released a beta version of ACE 4.0.32 for testing. - * ace/Log_Record.cpp: rewrote the code a bit to try and avoid - problems on NT when host_name == 0. + * ace/Log_Record.cpp: rewrote the code a bit to try and avoid + problems on NT when host_name == 0. - * ace/Log_Record.cpp: Changed the use of ACE_OS::ctime() to - ACE_OS::ctime_r() to avoid problems that might arise when - ACE_Log_Record::print() is called from multiple threads. + * ace/Log_Record.cpp: Changed the use of ACE_OS::ctime() to + ACE_OS::ctime_r() to avoid problems that might arise when + ACE_Log_Record::print() is called from multiple threads. - * ace/Log_Record.cpp: Commented out calls to ACE_TRACE to avoid - weird problems with circular dependencies. Thanks to Luca - Priorelli <lucapri@mbox.vol.it> for suggesting this. + * ace/Log_Record.cpp: Commented out calls to ACE_TRACE to avoid + weird problems with circular dependencies. Thanks to Luca + Priorelli <lucapri@mbox.vol.it> for suggesting this. - * build/SunOS5.5/examples/Makefile: Added the Logger directory to - the list of targets that are build automatically by Make. + * build/SunOS5.5/examples/Makefile: Added the Logger directory to + the list of targets that are build automatically by Make. Fri Oct 11 17:13:03 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace: Fixed lots of small warnings revealed when using the - Greenhills compiler on VxWorks. Thanks to David Levine for - this. + * ace: Fixed lots of small warnings revealed when using the + Greenhills compiler on VxWorks. Thanks to David Levine for + this. - * ace/Pipe.h: In Pipe.h, the return value of ACE_Pipe::close() - isn't explicitly declared, so some compilers gag. Thanks to - David Levine for this. + * ace/Pipe.h: In Pipe.h, the return value of ACE_Pipe::close() + isn't explicitly declared, so some compilers gag. Thanks to + David Levine for this. Thu Oct 10 12:05:55 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/Thread.cpp: Correctly wrapped the methods in the *.cpp file - so that they are ignored if threads *aren't* supported. + * ace/Thread.cpp: Correctly wrapped the methods in the *.cpp file + so that they are ignored if threads *aren't* supported. - * ace/Service_Repository.cpp (remove): Added the ACE_MT in front - of all the ACE_GUARD* macros that utilize ACE_Thread* locks in - order to ensure that ACE compiles correctly on all non-MT - platforms. + * ace/Service_Repository.cpp (remove): Added the ACE_MT in front + of all the ACE_GUARD* macros that utilize ACE_Thread* locks in + order to ensure that ACE compiles correctly on all non-MT + platforms. - * examples/Shared_Malloc/Malloc.cpp: Removed the special purpose - class for PROCESS_MUTEX since ACE_Process_Mutex will now work - for non-MT platforms. + * examples/Shared_Malloc/Malloc.cpp: Removed the special purpose + class for PROCESS_MUTEX since ACE_Process_Mutex will now work + for non-MT platforms. - * examples/Misc/test_dump.cpp: Changed all occurrences of + * examples/Misc/test_dump.cpp: Changed all occurrences of - cerr << "string " << this << endl; + cerr << "string " << this << endl; - to + to - cerr << "string " << (u_long) this << endl; + cerr << "string " << (u_long) this << endl; - to work around problems with IRIX 5.3. Thanks to Tilo Christ - <christ@swl.fh-heilbronn.de> for reporting this. + to work around problems with IRIX 5.3. Thanks to Tilo Christ + <christ@swl.fh-heilbronn.de> for reporting this. - * ace/config-linux.h: Added a // in front of a stray comment line. - Thanks to Neil Cohen for pointing this out. + * ace/config-linux.h: Added a // in front of a stray comment line. + Thanks to Neil Cohen for pointing this out. - * ace/config-hpux-10.x-g++.h: Added a new config file for HP/UX - 10.x which should fix some problems with templates by using the - G++ compiler. Thanks to <afarahat@CCGATE.HAC.COM> for - contributing this. + * ace/config-hpux-10.x-g++.h: Added a new config file for HP/UX + 10.x which should fix some problems with templates by using the + G++ compiler. Thanks to <afarahat@CCGATE.HAC.COM> for + contributing this. Wed Oct 9 14:34:19 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/OS: Changed the logic of socket initialization, which has - been moved out of ACE_SOCK and into ACE_OS. This makes it - possible to program more fully at the ACE_OS API (if such a - crazy thing is really necessary ;-)). - - * examples/IPC_SAP/SOCK_SAP/C-in{client,server}.cpp: Fixed up the - client and server apps so they will work on NT - (i.e., replaced the use of int with ACE_HANDLE). Thanks to Joe - DeAngelis <bytor@faxint.com> for suggesting this. - - * ace/Synch.h: Now that we've got support for POSIX semaphores on - Solaris, then we'll use them (when they are supported...) as the - implementation of ACE_Process_Semaphore rather than using the - slower ACE_SV_Semaphore_Complex stuff... - - * ace/OS.{h,i}: Added David Levine's support for named POSIX - semaphores. If ACE_HAS_POSIX_SEM is defined, then ACE_Semaphore - will construct a named POSIX semaphore if passed a non-null - name, or an unamed POSIX semaphore if passed a null name. This - is a great addition because POSIX semaphores are more powerful - and useful than the Solaris UI semaphores. Unfortunately, - Solaris 2.5 doesn't support them (yet). + * ace/OS: Changed the logic of socket initialization, which has + been moved out of ACE_SOCK and into ACE_OS. This makes it + possible to program more fully at the ACE_OS API (if such a + crazy thing is really necessary ;-)). + + * examples/IPC_SAP/SOCK_SAP/C-in{client,server}.cpp: Fixed up the + client and server apps so they will work on NT + (i.e., replaced the use of int with ACE_HANDLE). Thanks to Joe + DeAngelis <bytor@faxint.com> for suggesting this. + + * ace/Synch.h: Now that we've got support for POSIX semaphores on + Solaris, then we'll use them (when they are supported...) as the + implementation of ACE_Process_Semaphore rather than using the + slower ACE_SV_Semaphore_Complex stuff... + + * ace/OS.{h,i}: Added David Levine's support for named POSIX + semaphores. If ACE_HAS_POSIX_SEM is defined, then ACE_Semaphore + will construct a named POSIX semaphore if passed a non-null + name, or an unamed POSIX semaphore if passed a null name. This + is a great addition because POSIX semaphores are more powerful + and useful than the Solaris UI semaphores. Unfortunately, + Solaris 2.5 doesn't support them (yet). Tue Oct 8 16:00:00 1996 Irfan Pyarali <irfan@flamenco.cs.wustl.edu> - * ace/OS: Integrated Irfan's encapsulation/emulation for Win32 - Events at the ACE_OS level. A new structure ACE_event_t was - created to support Events on non-WIN32 platforms. On WIN32 - platforms ACE_event_t is just a HANDLE. On non-WIN32 platforms, - ACE_event_t uses a combination of mutexes, condition variables, - and counters to emulate Events. Both auto-reset and manual-reset - events are supported. - - * ace/Synch: Integrated Irfan's encapsulation/emulation for Win32 - Events at the C++ wrappers level. There are three wrappers that - were created: ACE_Event, ACE_Auto_Event, and ACE_Manual_Event. - ACE_Event is a wrapper for the ACE_event_t structure. It - provides functionality for signal, wait, pulse, and reset on an - event. ACE_Event supports both auto-reset and manual-reset - events. However, specializations of ACE_Event were created - (ACE_Manual_Event and ACE_Auto_Event) to make it easier to use - Events. - - * examples/Threads/test_manual_event.cpp: A test for manual-reset - events. The test involves the creation and use of a barrier - which uses an ACE_Manual_Event. - - * examples/Threads/test_auto_event.cpp: A test for auto-reset - events. The test involves the use of an ACE_Auto_Event for - signaling threads. + * ace/OS: Integrated Irfan's encapsulation/emulation for Win32 + Events at the ACE_OS level. A new structure ACE_event_t was + created to support Events on non-WIN32 platforms. On WIN32 + platforms ACE_event_t is just a HANDLE. On non-WIN32 platforms, + ACE_event_t uses a combination of mutexes, condition variables, + and counters to emulate Events. Both auto-reset and manual-reset + events are supported. + + * ace/Synch: Integrated Irfan's encapsulation/emulation for Win32 + Events at the C++ wrappers level. There are three wrappers that + were created: ACE_Event, ACE_Auto_Event, and ACE_Manual_Event. + ACE_Event is a wrapper for the ACE_event_t structure. It + provides functionality for signal, wait, pulse, and reset on an + event. ACE_Event supports both auto-reset and manual-reset + events. However, specializations of ACE_Event were created + (ACE_Manual_Event and ACE_Auto_Event) to make it easier to use + Events. + + * examples/Threads/test_manual_event.cpp: A test for manual-reset + events. The test involves the creation and use of a barrier + which uses an ACE_Manual_Event. + + * examples/Threads/test_auto_event.cpp: A test for auto-reset + events. The test involves the use of an ACE_Auto_Event for + signaling threads. Tue Oct 8 15:45:01 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/DEV.cpp (ACE_DEV): Removed a stray call to - ACE_IO_SAP::dump(). Thanks to Brad Flood <BFLOOD@tcs.lmco.com> - for this fix. + * ace/DEV.cpp (ACE_DEV): Removed a stray call to + ACE_IO_SAP::dump(). Thanks to Brad Flood <BFLOOD@tcs.lmco.com> + for this fix. - * ace/OS.i: Added ACE_HAS_CHARPTR_SOCKOPT for VxWorks. Thanks to - David Levine for this. + * ace/OS.i: Added ACE_HAS_CHARPTR_SOCKOPT for VxWorks. Thanks to + David Levine for this. - * ace/Dump.cpp (instance): Added an ACE_MT() macro around the - ACE_GUARD_RETURN macro so that this will compile correctly on - non-threaded platforms. Thanks to David Levine for this. + * ace/Dump.cpp (instance): Added an ACE_MT() macro around the + ACE_GUARD_RETURN macro so that this will compile correctly on + non-threaded platforms. Thanks to David Levine for this. - * ace/OS.h: the declaration of ACE_OS::msgctl needs "struct - msqid_ds" instead of just "msqid_ds" to compile with the - Greenhills C++ compiler. Thanks to David Levine for this... + * ace/OS.h: the declaration of ACE_OS::msgctl needs "struct + msqid_ds" instead of just "msqid_ds" to compile with the + Greenhills C++ compiler. Thanks to David Levine for this... - * ace/Local_Name_Space_T.h: Added #include "ace/Local_Name_Space.h" - to avoid a problem during template generation. Thanks to - Chris Lahey for this fix. + * ace/Local_Name_Space_T.h: Added #include "ace/Local_Name_Space.h" + to avoid a problem during template generation. Thanks to + Chris Lahey for this fix. - * ace/OS.i (getprotobynumber_r): Added a pair of fixes from Chris - Lahey to get the ACE wrappers for the getprotoby*_r() methods to - compile on AIX. + * ace/OS.i (getprotobynumber_r): Added a pair of fixes from Chris + Lahey to get the ACE wrappers for the getprotoby*_r() methods to + compile on AIX. - * examples/Threads: Added two new examples (test_auto_event.cpp - and test_manual_event.cpp) that exercise the new ACE_Event - mechanisms. + * examples/Threads: Added two new examples (test_auto_event.cpp + and test_manual_event.cpp) that exercise the new ACE_Event + mechanisms. - * ace/Synch: Integrated Irfan's encapsulation/emulation for Win32 - Events at the C++ wrappers level. + * ace/Synch: Integrated Irfan's encapsulation/emulation for Win32 + Events at the C++ wrappers level. - * ace/OS: Integrated Irfan's encapsulation/emulation for Win32 - Events at the ACE_OS level. + * ace/OS: Integrated Irfan's encapsulation/emulation for Win32 + Events at the ACE_OS level. Fri Oct 4 08:32:47 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/OS.i: Added David Levine's new ACE_OS::mktemp() implementation. + * ace/OS.i: Added David Levine's new ACE_OS::mktemp() implementation. Wed Oct 2 13:26:20 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/SV_Message_Queue.i: Changed the casts of (msgbuf *) to - (void *). + * ace/SV_Message_Queue.i: Changed the casts of (msgbuf *) to + (void *). - * ace/OS.i: Added David Levine's implementation of inet_addr() for - VxWorks. + * ace/OS.i: Added David Levine's implementation of inet_addr() for + VxWorks. - * ace/OS.i: Continued to merge together various parts of Win32 and - UNIX to reduce redundancies. + * ace/OS.i: Continued to merge together various parts of Win32 and + UNIX to reduce redundancies. Tue Oct 1 15:03:42 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/OS.i: Added Chuck Gehr's new changes to ACE_OS::mutex_init() - and ACE_OS::cond_init() to handle the MVS Pthreads madness. + * ace/OS.i: Added Chuck Gehr's new changes to ACE_OS::mutex_init() + and ACE_OS::cond_init() to handle the MVS Pthreads madness. - * ace/OS.i: Added zillions of #ifdefs for VXWORKS. It's amazing - these guys call themselves POSIX compliant -- lots of stuff is - missing. Thanks to David Levine for doing this! + * ace/OS.i: Added zillions of #ifdefs for VXWORKS. It's amazing + these guys call themselves POSIX compliant -- lots of stuff is + missing. Thanks to David Levine for doing this! - * ace/OS.cpp: Added David Levine's implementation of mktemp() - for platforms that don't support it. + * ace/OS.cpp: Added David Levine's implementation of mktemp() + for platforms that don't support it. - * ace/OS.h: Added a bunch of minor changes for VXWORKS. In - addition, started to factor out common #ifdefs to make the code - easier to maintain. + * ace/OS.h: Added a bunch of minor changes for VXWORKS. In + addition, started to factor out common #ifdefs to make the code + easier to maintain. - * ace/OS.h: Added a new macro for ACE_LACKS_UTSNAME, and factored - this out for both VxWorks and Win32. + * ace/OS.h: Added a new macro for ACE_LACKS_UTSNAME, and factored + this out for both VxWorks and Win32. - * ace/Time_Value.h: Added support for 2 VXWORKSisms: (1) we need - to #include sys/times.h rather than the standard UNIX sys/time.h - and (2) we need to change const timeval & to const struct - timeval & to keep the Greenhills compiler happy. Thanks to - David Levine for this. + * ace/Time_Value.h: Added support for 2 VXWORKSisms: (1) we need + to #include sys/times.h rather than the standard UNIX sys/time.h + and (2) we need to change const timeval & to const struct + timeval & to keep the Greenhills compiler happy. Thanks to + David Levine for this. - * ace/INET_Addr.cpp: Added support for the insane VXWORKS - hostGetByName() function. Yikes! Thanks to David Levine for - this. + * ace/INET_Addr.cpp: Added support for the insane VXWORKS + hostGetByName() function. Yikes! Thanks to David Levine for + this. - * ace/Memory_Pool.cpp: Added a new #define called ACE_LACKS_SBRK - and ACE_LACKS_SYSV_SHMEM, which is enabled on Win32 and VxWorks. - Thanks to David Levine for reporting this. + * ace/Memory_Pool.cpp: Added a new #define called ACE_LACKS_SBRK + and ACE_LACKS_SYSV_SHMEM, which is enabled on Win32 and VxWorks. + Thanks to David Levine for reporting this. - * ace/OS.h: Added new macros that #define ETIME for platforms like - VxWorks that don't support it, but do support ETIMEDOUT. + * ace/OS.h: Added new macros that #define ETIME for platforms like + VxWorks that don't support it, but do support ETIMEDOUT. - * ace/OS.h: Added placeholder #defines for USYNC_PROCESS and - USYNC_THREAD when !defined (ACE_HAS_THREADS). Thanks to Neil - Cohen for reporting this. + * ace/OS.h: Added placeholder #defines for USYNC_PROCESS and + USYNC_THREAD when !defined (ACE_HAS_THREADS). Thanks to Neil + Cohen for reporting this. Tue Oct 1 00:42:35 1996 Douglas C. Schmidt <schmidt@polka.cs.wustl.edu> - * ace/Message_Block.cpp (size): Member base_ of ACE_Message_Block - was being set to the new memory pointer before the old contents - are saved in method size. So the line + * ace/Message_Block.cpp (size): Member base_ of ACE_Message_Block + was being set to the new memory pointer before the old contents + are saved in method size. So the line - this->base_ = buf; + this->base_ = buf; - was moved to a place some lines below. Thanks to Marco Sommerau - <sommerau@informatik.uni-stuttgart.de> for detecting this. + was moved to a place some lines below. Thanks to Marco Sommerau + <sommerau@informatik.uni-stuttgart.de> for detecting this. - * ace/Message_Queue.cpp: Changed the implementation of the - enqueue_i() method so that FIFO order is maintained when - messages of the same priority are inserted consecutively. - Thanks to Jay Denkberg <jay_denkberg@comverse.com> for - suggesting this. + * ace/Message_Queue.cpp: Changed the implementation of the + enqueue_i() method so that FIFO order is maintained when + messages of the same priority are inserted consecutively. + Thanks to Jay Denkberg <jay_denkberg@comverse.com> for + suggesting this. Mon Sep 30 22:59:38 1996 Douglas C. Schmidt <schmidt@polka.cs.wustl.edu> - * ace/OS.i (thr_yield): Added a new macro ACE_HAS_YIELD_VOID_PTR - to make pthread_yield work on MVS. Thanks to Chuck Gehr - <gehr@sweng.stortek.com> for this fix. + * ace/OS.i (thr_yield): Added a new macro ACE_HAS_YIELD_VOID_PTR + to make pthread_yield work on MVS. Thanks to Chuck Gehr + <gehr@sweng.stortek.com> for this fix. - * ace/OS: Added a new macro called ACE_HAS_TIMEZONE_GETTIMEOFDAY - that handles problems on MVS. Thanks to Chuck Gehr - <gehr@sweng.stortek.com> for this fix. + * ace/OS: Added a new macro called ACE_HAS_TIMEZONE_GETTIMEOFDAY + that handles problems on MVS. Thanks to Chuck Gehr + <gehr@sweng.stortek.com> for this fix. Mon Sep 30 13:45:10 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu> - * ace/Local_Tokens.h: Updated some documentation in all the Token - files. + * ace/Local_Tokens.h: Updated some documentation in all the Token + files. Mon Sep 30 18:01:12 1996 Prashant Jain <pjain@merengue.cs.wustl.edu> - * netsvcs/lib/: Renamed files Logger.{h,cpp} to - Logging_Strategy.{h,cpp} to avoid confusion with Server_Logging - and Client_Logging stuff. In addition, I modified the affected - files, including Makefile, README, and the config files in the - tests directory. + * netsvcs/lib/: Renamed files Logger.{h,cpp} to + Logging_Strategy.{h,cpp} to avoid confusion with Server_Logging + and Client_Logging stuff. In addition, I modified the affected + files, including Makefile, README, and the config files in the + tests directory. Sun Sep 29 12:47:37 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/OS.h: Added Chuck Gehr <gehr@sweng.stortek.com> fixes for - MVS to enable signals to work correctly. + * ace/OS.h: Added Chuck Gehr <gehr@sweng.stortek.com> fixes for + MVS to enable signals to work correctly. - * ace/Time_Value.h: Added an extern "C" { } block around #include - <pthreads.h> to solve a problem with Linux. Thanks to Padhu - Ramalingam <padhu@magicnet.net> for reporting this. + * ace/Time_Value.h: Added an extern "C" { } block around #include + <pthreads.h> to solve a problem with Linux. Thanks to Padhu + Ramalingam <padhu@magicnet.net> for reporting this. - * netsvcs/lib/Server_Logging_Handler.cpp: Changed the - initialization of a static template object from ::request_count_ - (0L) to ::request_count_ = 0L. Thanks to Gonzalo Diethelm - <gonzo@ing.puc.cl> for reporting this. + * netsvcs/lib/Server_Logging_Handler.cpp: Changed the + initialization of a static template object from ::request_count_ + (0L) to ::request_count_ = 0L. Thanks to Gonzalo Diethelm + <gonzo@ing.puc.cl> for reporting this. - * ace/Remote_Tokens.h: Moved the inclusion of "Singleton.h" from - Remote_Tokens.cpp to Remote_Tokens.h. This should avoid - template instantiation problems on some platforms (e.g., Irix - 6.2). + * ace/Remote_Tokens.h: Moved the inclusion of "Singleton.h" from + Remote_Tokens.cpp to Remote_Tokens.h. This should avoid + template instantiation problems on some platforms (e.g., Irix + 6.2). - * ace/config-irix6.2-sgic++.h: Changed ACE_HAS_SIGINFO to - ACE_HAS_SIGINFO_T and added ACE_HAS_UCONTEXT_T. Thanks to - Gonzalo Diethelm <gonzo@ing.puc.cl> for reporting this. + * ace/config-irix6.2-sgic++.h: Changed ACE_HAS_SIGINFO to + ACE_HAS_SIGINFO_T and added ACE_HAS_UCONTEXT_T. Thanks to + Gonzalo Diethelm <gonzo@ing.puc.cl> for reporting this. - * ace/Token_Invariants.h: The ctor/dtor were private and the - compiler would not allow a template of the class to be created. - I switched them to public, but I wish there was a better way... - Thanks to Gonzalo Diethelm <gonzo@ing.puc.cl> for reporting - this. + * ace/Token_Invariants.h: The ctor/dtor were private and the + compiler would not allow a template of the class to be created. + I switched them to public, but I wish there was a better way... + Thanks to Gonzalo Diethelm <gonzo@ing.puc.cl> for reporting + this. - * ace/Synch_T.h: #include'd "ace/Event_Handler.h". Thanks to - Gonzalo Diethelm <gonzo@ing.puc.cl> for reporting this. + * ace/Synch_T.h: #include'd "ace/Event_Handler.h". Thanks to + Gonzalo Diethelm <gonzo@ing.puc.cl> for reporting this. - * ace/Synch.h: The parameter name gives warnings when - instantiating templates. Thanks to Gonzalo Diethelm - <gonzo@ing.puc.cl> for reporting this. + * ace/Synch.h: The parameter name gives warnings when + instantiating templates. Thanks to Gonzalo Diethelm + <gonzo@ing.puc.cl> for reporting this. - * ace/Process: Changed the definition of the get_pid() method to - getpid() to avoid a conflict with Irix. Thanks to Gonzalo - Diethelm <gonzo@ing.puc.cl> for reporting this. + * ace/Process: Changed the definition of the get_pid() method to + getpid() to avoid a conflict with Irix. Thanks to Gonzalo + Diethelm <gonzo@ing.puc.cl> for reporting this. - * ace/Log_Msg.cpp (log): Added another #elif !defined (ACE_WIN32) - to handle logging for OS platforms that (1) aren't Win32 and (2) - are versions of UNIX that don't support STREAM pipes. Thanks to - Gonzalo Diethelm <gonzo@ing.puc.cl> for reporting this. + * ace/Log_Msg.cpp (log): Added another #elif !defined (ACE_WIN32) + to handle logging for OS platforms that (1) aren't Win32 and (2) + are versions of UNIX that don't support STREAM pipes. Thanks to + Gonzalo Diethelm <gonzo@ing.puc.cl> for reporting this. - * ace/Acceptor.cpp (handle_signal): Erased the signum parameter - name to avoid a nasty warning about arguments not used when - instantiating templates. Thanks to Gonzalo Diethelm - <gonzo@ing.puc.cl> for reporting this. + * ace/Acceptor.cpp (handle_signal): Erased the signum parameter + name to avoid a nasty warning about arguments not used when + instantiating templates. Thanks to Gonzalo Diethelm + <gonzo@ing.puc.cl> for reporting this. - * ace/OS.h: Added the ACE_Export symbol to the definition of - ACE_Str_Buf. This makes it compile and link on NT. Thanks to - Prashant for noticing this (our favorite Win32ism...). + * ace/OS.h: Added the ACE_Export symbol to the definition of + ACE_Str_Buf. This makes it compile and link on NT. Thanks to + Prashant for noticing this (our favorite Win32ism...). - * ace/Thread.h (ACE_Thread): Removed a default argument for one of - the ACE_Thread::join() wrappers so this won't be ambiguous with - the other join() wrapper. + * ace/Thread.h (ACE_Thread): Removed a default argument for one of + the ACE_Thread::join() wrappers so this won't be ambiguous with + the other join() wrapper. - * ace/OS: Added a new wrapper for strtok_r(). + * ace/OS: Added a new wrapper for strtok_r(). Sun Sep 29 16:12:01 1996 Prashant Jain <pjain@merengue.cs.wustl.edu> - * netsvcs/lib/: Renamed the project file for Win32 from lib.mdp to - netsvcs.mdp. Also the original project file did not include some - files such as Naming_Handler.cpp and Server_Logging_Handler.cpp - and I fixed that. Finally removed two files System_Time.{h,cpp} - which are already present in ace/. + * netsvcs/lib/: Renamed the project file for Win32 from lib.mdp to + netsvcs.mdp. Also the original project file did not include some + files such as Naming_Handler.cpp and Server_Logging_Handler.cpp + and I fixed that. Finally removed two files System_Time.{h,cpp} + which are already present in ace/. Sat Sep 28 16:34:56 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/OS: Added a new overloaded select() method that takes a - const ACE_Time_Value &. This is useful for situations where you - are passing in ACE_Time_Value::zero. + * ace/OS: Added a new overloaded select() method that takes a + const ACE_Time_Value &. This is useful for situations where you + are passing in ACE_Time_Value::zero. Fri Sep 27 16:20:46 1996 Douglas C. Schmidt <schmidt@polka.cs.wustl.edu> - * ace/ACE: Added a fix for the fact that VxWork's write() call - doesn't take a const char *. + * ace/ACE: Added a fix for the fact that VxWork's write() call + doesn't take a const char *. - * ace: Started adding support for VxWorks and GreenHills compiler, - e.g., added the config-vxwork-ghs-1.8.h file. Thanks to David - Levine <levine@cs.wustl.edu> for getting this rolling! + * ace: Started adding support for VxWorks and GreenHills compiler, + e.g., added the config-vxwork-ghs-1.8.h file. Thanks to David + Levine <levine@cs.wustl.edu> for getting this rolling! Thu Sep 26 00:15:46 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/Timer_Queue: Changed the public interface methods to be - virtual in order to make it possible to override them in - subclasses. This makes it feasible to implement different types - of Timers. + * ace/Timer_Queue: Changed the public interface methods to be + virtual in order to make it possible to override them in + subclasses. This makes it feasible to implement different types + of Timers. - * ace/OS: Added a wrapper for the strspn() string call. Thanks to - Irfan for noticing this omission. + * ace/OS: Added a wrapper for the strspn() string call. Thanks to + Irfan for noticing this omission. - * ace/Synch_T.cpp (wait): Changed the line: + * ace/Synch_T.cpp (wait): Changed the line: - return ACE_OS::cond_wait (&this->cond_, this->mutex_); + return ACE_OS::cond_wait (&this->cond_, this->mutex_); - to + to - return ACE_OS::cond_wait (&this->cond_, &this->mutex_.lock_); + return ACE_OS::cond_wait (&this->cond_, &this->mutex_.lock_); - Thanks to Dieter Quehl <dietrich.quehl@med-iss1.med.siemens.de> - for noticing this. + Thanks to Dieter Quehl <dietrich.quehl@med-iss1.med.siemens.de> + for noticing this. - * ace/config-sunos5.4-g++.h: Removed the #define for - ACE_HAS_BROKEN_RANDR and replaced the ACE_HAS_SVR4_SIGNAL_T with - ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES since it looks like the - latest gcc release (2.7.2) fixes this in their own header files. + * ace/config-sunos5.4-g++.h: Removed the #define for + ACE_HAS_BROKEN_RANDR and replaced the ACE_HAS_SVR4_SIGNAL_T with + ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES since it looks like the + latest gcc release (2.7.2) fixes this in their own header files. Sat Sep 21 10:45:43 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/OS.h: Added a new #define called ACE_HAS_BROKEN_MSG_H to the - config-osf1-3.2.h file and used it in OS.h to work around - problems with <msg.h> prototypes on that platform. + * ace/OS.h: Added a new #define called ACE_HAS_BROKEN_MSG_H to the + config-osf1-3.2.h file and used it in OS.h to work around + problems with <msg.h> prototypes on that platform. Fri Sep 20 00:15:29 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> * Released version 4.0.31 for testing. - * ace/Pipe.cpp: Initialize handles_ to ACE_INVALID_HANDLE in - default constructor. Thanks to Tim Harrison for pointing this - out. + * ace/Pipe.cpp: Initialize handles_ to ACE_INVALID_HANDLE in + default constructor. Thanks to Tim Harrison for pointing this + out. * ace: Copied in new versions of ace.{mak,mdp} for Win32. * ace: Added TTY_IO.cpp to the Makefile. - * ace/config-win32-msvc[24].0.h: Updated the config file so that - it *doesn't* #define ACE_HAS_STRBUF_T since this type clearly - isn't available on Win32! + * ace/config-win32-msvc[24].0.h: Updated the config file so that + it *doesn't* #define ACE_HAS_STRBUF_T since this type clearly + isn't available on Win32! - * ace: Modified all of OS.i and config-*.h files so that they - would be consisten with respect to handling the size_t and int - differences in socket implementations. Thanks to Chuck Gehr - <gehr@sweng.stortek.com> for helping with this for AIX. + * ace: Modified all of OS.i and config-*.h files so that they + would be consisten with respect to handling the size_t and int + differences in socket implementations. Thanks to Chuck Gehr + <gehr@sweng.stortek.com> for helping with this for AIX. - * ace/ACE.h (ACE): Added a new method called max_handles() that - returns the maximum number of open handles currently supported - by the process. + * ace/ACE.h (ACE): Added a new method called max_handles() that + returns the maximum number of open handles currently supported + by the process. - * examples/Reactor/Misc/signal_tester.cpp: Revised the test to - utilize the new idioms for programming with signals. + * examples/Reactor/Misc/signal_tester.cpp: Revised the test to + utilize the new idioms for programming with signals. - * ace/OS.h: added a new #define called ACE_DEV_NULL that defaults - to "/dev/null" on UNIX and "nul" on NT. Thanks to David Trumble - <trumble@steosf.nio.dec.com> for reporting this fix. + * ace/OS.h: added a new #define called ACE_DEV_NULL that defaults + to "/dev/null" on UNIX and "nul" on NT. Thanks to David Trumble + <trumble@steosf.nio.dec.com> for reporting this fix. - * ace/Log_Msg.cpp: Added some checks to make sure that we don't - try to strdup() if we are passed a NULL pointer. Thanks to Luca - for suggesting this. + * ace/Log_Msg.cpp: Added some checks to make sure that we don't + try to strdup() if we are passed a NULL pointer. Thanks to Luca + for suggesting this. - * ace/OS: Move ACE_Str_Buf into OS.{h,i} and remove the Str_Buf.h - file. + * ace/OS: Move ACE_Str_Buf into OS.{h,i} and remove the Str_Buf.h + file. - * Makefile: Added the "performance-tests" directory to the list of - directories we build when making ACE. + * Makefile: Added the "performance-tests" directory to the list of + directories we build when making ACE. - * ace: Moved the definition of strbuf from Str_Buf.h into OS.h. - Thanks to Irfan for recommending this. + * ace: Moved the definition of strbuf from Str_Buf.h into OS.h. + Thanks to Irfan for recommending this. - * ace/Makefile: Added some additional sed magic on the - Svc_Conf_y.cpp file in order to remove the very last warnings - from MSVC++! + * ace/Makefile: Added some additional sed magic on the + Svc_Conf_y.cpp file in order to remove the very last warnings + from MSVC++! Thu Sep 19 00:00:17 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/Service_Config.cpp (open): Only initialize the logger to use - STDERR if the user hasn't already set the ACE_Log_Msg::flags(). - Thanks to Tom Leith <trl@icon-stl.net> for suggesting this. + * ace/Service_Config.cpp (open): Only initialize the logger to use + STDERR if the user hasn't already set the ACE_Log_Msg::flags(). + Thanks to Tom Leith <trl@icon-stl.net> for suggesting this. - * ace/OS: Removed all traces of the ACE_HAS_INT_SOCKNAME and - ACE_HAS_LENPTR_SOCKOPT since Chris Lahey's new fixes for AIX - obviate the need for these. + * ace/OS: Removed all traces of the ACE_HAS_INT_SOCKNAME and + ACE_HAS_LENPTR_SOCKOPT since Chris Lahey's new fixes for AIX + obviate the need for these. - * ace/OS.i: Only #include <rpc/rpc.h> if the platform has RPC! - Thanks to Chuck Gehr <gehr@sweng.stortek.com> for suggesting - this. + * ace/OS.i: Only #include <rpc/rpc.h> if the platform has RPC! + Thanks to Chuck Gehr <gehr@sweng.stortek.com> for suggesting + this. - * ace: Removed all uses of ACE_HAS_SETOWN and replaced them with - explicit tests for F_SETOWN and FASYNC. This is more portable. - Thanks to Chuck Gehr <gehr@sweng.stortek.com> for suggesting - this. + * ace: Removed all uses of ACE_HAS_SETOWN and replaced them with + explicit tests for F_SETOWN and FASYNC. This is more portable. + Thanks to Chuck Gehr <gehr@sweng.stortek.com> for suggesting + this. - * ace/OS: Added a new #define called ACE_HAS_SIZET_SOCKET_LEN to - handle platforms where the length parameter of bind(), - connect(), accept(), etc. uses size_t rather than int. This - helps to get ACE working on MVS. Thanks to Chuck Gehr - <gehr@sweng.stortek.com> for suggesting this. + * ace/OS: Added a new #define called ACE_HAS_SIZET_SOCKET_LEN to + handle platforms where the length parameter of bind(), + connect(), accept(), etc. uses size_t rather than int. This + helps to get ACE working on MVS. Thanks to Chuck Gehr + <gehr@sweng.stortek.com> for suggesting this. - * ace/OS: Added Chris Lahey's fixes that make the - getprotoby{name,number}_r() functions work for AIX. + * ace/OS: Added Chris Lahey's fixes that make the + getprotoby{name,number}_r() functions work for AIX. - * ace: Changed the ACE_HAS_STRUCT_HOSTENT_DATA to - ACE_HAS_STRUCT_NETDB_DATA because we use a single symbol to - refer to all of the odd netdb.h stuff that AIX has... + * ace: Changed the ACE_HAS_STRUCT_HOSTENT_DATA to + ACE_HAS_STRUCT_NETDB_DATA because we use a single symbol to + refer to all of the odd netdb.h stuff that AIX has... - * ace: Changed all uses of: + * ace: Changed all uses of: - iovec *iovp = (iovec *) alloca (total_tuples * sizeof *iovp); + iovec *iovp = (iovec *) alloca (total_tuples * sizeof *iovp); - to + to - iovec *iovp = (iovec *) alloca (total_tuples * sizeof (iovec)); + iovec *iovp = (iovec *) alloca (total_tuples * sizeof (iovec)); - to keep the AIX compiler from complaining (falsely) about using - iovp before it is initialized. Thanks to Chris Lahey for - reporting this. + to keep the AIX compiler from complaining (falsely) about using + iovp before it is initialized. Thanks to Chris Lahey for + reporting this. - * ace/OS.h: Added Chris Lahey's changes that handle AIX's - _XOPEN_EXTENDED_SOURCE features without polluting all the socket - implementations! + * ace/OS.h: Added Chris Lahey's changes that handle AIX's + _XOPEN_EXTENDED_SOURCE features without polluting all the socket + implementations! - * ace/Thread.cpp (spawn_n): Removed an unreferenced local variable - so that the Win32 compiler doesn't complain. + * ace/Thread.cpp (spawn_n): Removed an unreferenced local variable + so that the Win32 compiler doesn't complain. - * ace/OS.h: Added the definition for strbuf{} for NT. + * ace/OS.h: Added the definition for strbuf{} for NT. - * ace: Removed the msg_hack.h file since it had OSF and DEC - copyright info in it. Replaced this with Antonio Tortorici's - <antonio@rh0011.roma.tlsoft.it> clever use of _KERNEL and the - new ACE_LACKS_SYSV_MSQ_PROTOS. + * ace: Removed the msg_hack.h file since it had OSF and DEC + copyright info in it. Replaced this with Antonio Tortorici's + <antonio@rh0011.roma.tlsoft.it> clever use of _KERNEL and the + new ACE_LACKS_SYSV_MSQ_PROTOS. - * ace/INET_Addr.h: Updated the documentation to indicate more - clearly the use of getservbyname(). + * ace/INET_Addr.h: Updated the documentation to indicate more + clearly the use of getservbyname(). - * ace/OS.cpp (thr_create): Added basic hooks to support the use of - AfxBeginThread on Win32. This is necessary to allow ACE to work - seemlessly with MFC applications. Added an THR_USE_AFX flag - that can be "or'd" in with the other thread flags in calls to - ACE_OS::thr_create(). If this flag is enabled *and* if we are - compiling with ACE_HAS_MFC enabled, then AfxBeginThread() is - called rather than _beginthreadex(). + * ace/OS.cpp (thr_create): Added basic hooks to support the use of + AfxBeginThread on Win32. This is necessary to allow ACE to work + seemlessly with MFC applications. Added an THR_USE_AFX flag + that can be "or'd" in with the other thread flags in calls to + ACE_OS::thr_create(). If this flag is enabled *and* if we are + compiling with ACE_HAS_MFC enabled, then AfxBeginThread() is + called rather than _beginthreadex(). - * ace/INET_Addr.h (set): Fixed a typo in the documentation for - set() (the order of "host:port" was backwards...). Thanks to - Brad Flood <BFLOOD@tcs.lmco.com> for reporting this. + * ace/INET_Addr.h (set): Fixed a typo in the documentation for + set() (the order of "host:port" was backwards...). Thanks to + Brad Flood <BFLOOD@tcs.lmco.com> for reporting this. Wed Sep 18 00:36:01 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/SOCK_IO.cpp: Added a new recv() method that allows a client - to read from a socket without having to provide a buffer to - read. This method determines how much data is in the socket, - allocates a buffer of this size, reads in the data, and returns - the number of bytes read. The caller is responsible for - deleting the memory. Thanks to Luca Priorelli - <lucapri@mbox.vol.it> for suggesting this. + * ace/SOCK_IO.cpp: Added a new recv() method that allows a client + to read from a socket without having to provide a buffer to + read. This method determines how much data is in the socket, + allocates a buffer of this size, reads in the data, and returns + the number of bytes read. The caller is responsible for + deleting the memory. Thanks to Luca Priorelli + <lucapri@mbox.vol.it> for suggesting this. - * ace/OS.h: Added a special #ifdef for IRIX 6.2 threads so that - THR_BOUND and THR_SCOPE_SYSTEM are different. Thanks to Gonzalo - Diethelm <gonzo@ing.puc.cl> for reporting this. + * ace/OS.h: Added a special #ifdef for IRIX 6.2 threads so that + THR_BOUND and THR_SCOPE_SYSTEM are different. Thanks to Gonzalo + Diethelm <gonzo@ing.puc.cl> for reporting this. - * ace/Message_Block.i (msg_class): Added a new "class" of messages - to ACE_Message_Block: MB_USER. This is useful for writing - extensible applications a la Microslush Windows MSG stuff... + * ace/Message_Block.i (msg_class): Added a new "class" of messages + to ACE_Message_Block: MB_USER. This is useful for writing + extensible applications a la Microslush Windows MSG stuff... Tue Sep 17 16:38:44 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/Message_Block: Changed the signature of the - ACE_Message_Block constructors (and init()) so that they take - const char * rather than char *. In addition, changed the - definition of one of the constructors (and init()) so that it - takes a size field in addition to the buffer. - - * ace/Message_Block.cpp (size): Fixed a bug in the - ACE_Message_Block::size() method -- we were failing to deal with - allocators and ownership correctly during a resize. Thanks to - Amos Shapira <amos_shapira@mail.icomverse.com> for reporting - this. - - * ace/Naming_Context.cpp: Removed the source of yet another - warning about "inconsistent dll linkage. dllexport assumed." - - * ace/Mem_Map.cpp (map_it): Added a cast to size_t (file_len) - because by this time we know that file_len >= 0. This avoids - yet another warning on WinNT! - - * ace/Reactor.h: Fixed the remaining warnings about - "signed/unsigned mismatch" in Win32 by changing the type of - cur_size_ from size_t to ssize_t. - - * ace/Log_Msg.cpp: Modified the code so that on NT we use - ACE_SPIPE_Msg rather than ACE_FIFO_Send_Msg. Thanks to Luca - Priorelli <lucapri@mbox.vol.it> for suggesting this. - - * ace/OS.i: Implemented the and put[p]msg() wrappers by being - smart about allocating and copying data. - - * ace/TTY_IO.cpp (control): There was one too many end parentheses - on line 192 of TTY_IO.cpp. Thanks to Dave Trumble - <trumble@steosf.nio.dec.com> for reporting this fix. - - * ace/Log_Msg.cpp (local_host): Fixed the use of program_name_ and - local_host_ so that they strdup() the values passed by the - users, rather than copying pointers. This avoids problems if - the user doesn't pass in static memory. Thanks to Luca - Priorelli <lucapri@mbox.vol.it> for reporting this. Somehow - this change got lost and I've reapplied it... - - * ace/Log_Record.cpp (round_up): Added an extra + 1 to the length - since otherwise the final '\0' gets lots if len is a multiple of - 8. Thanks to Luca Priorelli <lucapri@mbox.vol.it> for reporting - this. Somehow this change got lost and I've reapplied it. - - * ace/Memory_Pool.h: removed #if defined (ACE_HAS_SIGINFO_T) logic - from both handle_signal() definitions (ACE_Shared_Memory_Pool - and ACE_MMAP_Memory_Pool). Thanks to Chris Lahey for fixing - this. - - * ace/OS.h: Moved the define of SA_RESTART below the #include for - signal.h. Otherwise SA_RESTART will always be defined by OS.h, - since SA_RESTART is defined on AIX in signal.h. Thanks to Chris - Lahey for fixing this. - - * ace/OS.h: Added some new #pragmas to suppress harmless warnings - for the MSVC++ compiler. + * ace/Message_Block: Changed the signature of the + ACE_Message_Block constructors (and init()) so that they take + const char * rather than char *. In addition, changed the + definition of one of the constructors (and init()) so that it + takes a size field in addition to the buffer. -Tue Sep 17 13:20:53 1996 Prashant Jain <pjain@merengue.cs.wustl.edu> + * ace/Message_Block.cpp (size): Fixed a bug in the + ACE_Message_Block::size() method -- we were failing to deal with + allocators and ownership correctly during a resize. Thanks to + Amos Shapira <amos_shapira@mail.icomverse.com> for reporting + this. - * ace/Local_Name_Space_T.cpp: Modified ACE_Local_Name_Space:: - create_manager () so that all three naming scopes use the - database variable defined in Name Options. This allows us to - specify different names for databases for all three naming - contexts. However, it is imporant to note that this can lead to - potential problems where, for example, a process may use the - same name for PROC_LOCAL database as an already existing - NET_LOCAL database. + * ace/Naming_Context.cpp: Removed the source of yet another + warning about "inconsistent dll linkage. dllexport assumed." -Mon Sep 16 01:31:21 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + * ace/Mem_Map.cpp (map_it): Added a cast to size_t (file_len) + because by this time we know that file_len >= 0. This avoids + yet another warning on WinNT! - * examples/Logger/simple-server/Logging_Handler: get_handle(), - handle_input(), and handle_close() want the right types - (ACE_HANDLE instead of int). Thanks to Luca Priorelli - <lucapri@mbox.vol.it> for reporting these. + * ace/Reactor.h: Fixed the remaining warnings about + "signed/unsigned mismatch" in Win32 by changing the type of + cur_size_ from size_t to ssize_t. - * examples/Logger/simple-server/Logging_Acceptor.cpp: Fixed a typo - (Log_Mskg.h should be Log_Msg.h of course...). In addition, - changed the use of -1 to ACE_INVALID_HANDLE. Thanks to Luca - Priorelli <lucapri@mbox.vol.it> for reporting these. + * ace/Log_Msg.cpp: Modified the code so that on NT we use + ACE_SPIPE_Msg rather than ACE_FIFO_Send_Msg. Thanks to Luca + Priorelli <lucapri@mbox.vol.it> for suggesting this. + * ace/OS.i: Implemented the and put[p]msg() wrappers by being + smart about allocating and copying data. - * ace: Changed all uses of ACE_HAS_ACE_INLINED_OSCALLS to - ACE_HAS_INLINED_OSCALLS. This was a vestiage of a global - replace gone amok. Thanks to Alan Stweart <Axs2@osi.com> for - reporting this! + * ace/TTY_IO.cpp (control): There was one too many end parentheses + on line 192 of TTY_IO.cpp. Thanks to Dave Trumble + <trumble@steosf.nio.dec.com> for reporting this fix. - * ace/Log_Msg.cpp (open): Added a check for the OSTREAM flag in - the ACE logger. Thanks to Rick Orr - <rorr@costello.den.csci.csc.com> for noticing this. + * ace/Log_Msg.cpp (local_host): Fixed the use of program_name_ and + local_host_ so that they strdup() the values passed by the + users, rather than copying pointers. This avoids problems if + the user doesn't pass in static memory. Thanks to Luca + Priorelli <lucapri@mbox.vol.it> for reporting this. Somehow + this change got lost and I've reapplied it... - * Released version 4.0.30 for testing. + * ace/Log_Record.cpp (round_up): Added an extra + 1 to the length + since otherwise the final '\0' gets lots if len is a multiple of + 8. Thanks to Luca Priorelli <lucapri@mbox.vol.it> for reporting + this. Somehow this change got lost and I've reapplied it. - * netsvcs/clients/Naming/Dump_Restore/Dump_Restore.cpp - (Dump_Restore): Deleted an extra "return 0;" within a - constructor (duh...). + * ace/Memory_Pool.h: removed #if defined (ACE_HAS_SIGINFO_T) logic + from both handle_signal() definitions (ACE_Shared_Memory_Pool + and ACE_MMAP_Memory_Pool). Thanks to Chris Lahey for fixing + this. - * examples/Threads/test_process_{semaphore,mutex}.cpp (main): - Fixed some annoying G++ compiler bug related problems. We need - to use old-style C casts to prevent ambiguous parsing. + * ace/OS.h: Moved the define of SA_RESTART below the #include for + signal.h. Otherwise SA_RESTART will always be defined by OS.h, + since SA_RESTART is defined on AIX in signal.h. Thanks to Chris + Lahey for fixing this. - * examples/ASX/Event_Server/Transceiver/transceiver: Rewrote this - example to illustrate how to use the ACE_Connector and - ACE_Svc_Handler. + * ace/OS.h: Added some new #pragmas to suppress harmless warnings + for the MSVC++ compiler. - * examples/ASX/Event_Server/Transceiver/transceiver: Finally clued - in and realized that it is just not suitable to implement the - event server transceiver with separate threads for input and - output. It is simply to non-portable to get these shut down - gracefully. I think John Ousterhout was right -- threads are - evil! - - * examples/ASX/Event_Server: Merged the Consumer/Supplier - directories into a single Transceiver directory to reflect the - fact that the Consumer and Supplier were completely symmetrical! +Tue Sep 17 13:20:53 1996 Prashant Jain <pjain@merengue.cs.wustl.edu> + + * ace/Local_Name_Space_T.cpp: Modified ACE_Local_Name_Space:: + create_manager () so that all three naming scopes use the + database variable defined in Name Options. This allows us to + specify different names for databases for all three naming + contexts. However, it is imporant to note that this can lead to + potential problems where, for example, a process may use the + same name for PROC_LOCAL database as an already existing + NET_LOCAL database. + +Mon Sep 16 01:31:21 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + + * examples/Logger/simple-server/Logging_Handler: get_handle(), + handle_input(), and handle_close() want the right types + (ACE_HANDLE instead of int). Thanks to Luca Priorelli + <lucapri@mbox.vol.it> for reporting these. + + * examples/Logger/simple-server/Logging_Acceptor.cpp: Fixed a typo + (Log_Mskg.h should be Log_Msg.h of course...). In addition, + changed the use of -1 to ACE_INVALID_HANDLE. Thanks to Luca + Priorelli <lucapri@mbox.vol.it> for reporting these. - * ace/Module.cpp (close): Don't delete the Tasks in a Module if - there are still threads running in them. Otherwise we'll end up - with a big mess. + + * ace: Changed all uses of ACE_HAS_ACE_INLINED_OSCALLS to + ACE_HAS_INLINED_OSCALLS. This was a vestiage of a global + replace gone amok. Thanks to Alan Stweart <Axs2@osi.com> for + reporting this! + + * ace/Log_Msg.cpp (open): Added a check for the OSTREAM flag in + the ACE logger. Thanks to Rick Orr + <rorr@costello.den.csci.csc.com> for noticing this. + + * Released version 4.0.30 for testing. + + * netsvcs/clients/Naming/Dump_Restore/Dump_Restore.cpp + (Dump_Restore): Deleted an extra "return 0;" within a + constructor (duh...). + + * examples/Threads/test_process_{semaphore,mutex}.cpp (main): + Fixed some annoying G++ compiler bug related problems. We need + to use old-style C casts to prevent ambiguous parsing. + + * examples/ASX/Event_Server/Transceiver/transceiver: Rewrote this + example to illustrate how to use the ACE_Connector and + ACE_Svc_Handler. + + * examples/ASX/Event_Server/Transceiver/transceiver: Finally clued + in and realized that it is just not suitable to implement the + event server transceiver with separate threads for input and + output. It is simply to non-portable to get these shut down + gracefully. I think John Ousterhout was right -- threads are + evil! + + * examples/ASX/Event_Server: Merged the Consumer/Supplier + directories into a single Transceiver directory to reflect the + fact that the Consumer and Supplier were completely symmetrical! + + * ace/Module.cpp (close): Don't delete the Tasks in a Module if + there are still threads running in them. Otherwise we'll end up + with a big mess. Mon Sep 16 15:50:45 1996 Prashant Jain <pjain@merengue.cs.wustl.edu> - * performance-tests/Misc/test_naming.cpp: Added a new test to the - performance-tests directory called test_naming which simply does - performance testing on Naming Service. The test runs both the - SYNC and the NO-SYNC version of Naming Service. + * performance-tests/Misc/test_naming.cpp: Added a new test to the + performance-tests directory called test_naming which simply does + performance testing on Naming Service. The test runs both the + SYNC and the NO-SYNC version of Naming Service. Mon Sep 16 15:22:52 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu> - * ace/Proactor.cpp (initiate): Added a check for - ERROR_NETNAME_DELETED after ReadFile/WriteFile. Now the - initiating handler is immediately dispatched for EOF *and* - closed connections. Thanks to Luca Priorelli - <lucapri@mbox.vol.it> for suggesting this change. + * ace/Proactor.cpp (initiate): Added a check for + ERROR_NETNAME_DELETED after ReadFile/WriteFile. Now the + initiating handler is immediately dispatched for EOF *and* + closed connections. Thanks to Luca Priorelli + <lucapri@mbox.vol.it> for suggesting this change. Sun Sep 15 00:55:59 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * Fixed all uses of ACE_Service_Config::end_event_loop() and - ACE_Service_Config::run_event_loop() to be - ACE_Service_Config::end_reactor_event_loop() and - ACE_Service_Config::run_reactor_event_loop() since we now have - to consider the other event loops (e.g., Proactor and ReactorEx) - and it doesn't seem right to relegate those to 2nd class status. - - * ace: Finally got fed up with all the #ifdefs required to deal - with extended signals and just changed the - ACE_Event_Handler::handle_signal() method to always use the - extended signal interface. Fortunately, we can use default - values to hid this from callers (though you may need to change - your class definitions if you were assuming the - handle_signal(int) interface. - - * ace/Memory_Pool.h: Changed all the methods of the various - Memory_Pool classes to be virtual so that subclasses can - selectively override them. This shouldn't affect performance - since all existing use cases work directly with the "derived" - classes themselves, so there shouldn't be any overhead since the - compiler can use direct calls rather than virtual function - calls. - - * ace/OS.cpp (thr_create): Changed the call to CreateThread() to - _beginthreadex() and the call to ExitThread() to _endthreadex() - for Win32 in order to make ACE threads work correctly with - Win32. Thanks to James Mansion <james@wgold.demon.co.uk> for - recommending this. - - * ace/ACE: Added two new static functions: read_adapter() and - register_stdin_handler(). These are useful when writing code - that must demultiplexing ACE_STDIN on both Win32 and UNIX. This - works around Win32 limitations that don't allow us to select() - on non-sockets (such as ACE_STDIN). - - * examples/ASX/CCM_App/SC_Server.cpp: Updated this - test so that it should now work correctly on Win32, where it - isn't possible to select() on STDIN... - - * ace/Synch_T: Added a new class to ACE called "ACE_Test_and_Set." - As this name implies, this class implements an atomic ``test and - set'' abstraction. This has all sorts of useful implications, - particularly because it is a template that can be paramaterized - by the type of LOCK (e.g., ACE_Null_Mutex, ACE_Thread_Mutex, - etc.) and the type of TYPE (e.g., int, double, sig_atomic_t, - etc.). In addition, because this "is-a" ACE_Event_Handler it - instances can be registered with the Reactor and used to shut - down event hoops gracefully upon receipt of certain signals - (e.g., SIGINT). In fact, I've redone many of the example - applications (e.g., ./examples/Logger/server/server_loggerd.cpp) - to illustrate how this works. + * Fixed all uses of ACE_Service_Config::end_event_loop() and + ACE_Service_Config::run_event_loop() to be + ACE_Service_Config::end_reactor_event_loop() and + ACE_Service_Config::run_reactor_event_loop() since we now have + to consider the other event loops (e.g., Proactor and ReactorEx) + and it doesn't seem right to relegate those to 2nd class status. + + * ace: Finally got fed up with all the #ifdefs required to deal + with extended signals and just changed the + ACE_Event_Handler::handle_signal() method to always use the + extended signal interface. Fortunately, we can use default + values to hid this from callers (though you may need to change + your class definitions if you were assuming the + handle_signal(int) interface. + + * ace/Memory_Pool.h: Changed all the methods of the various + Memory_Pool classes to be virtual so that subclasses can + selectively override them. This shouldn't affect performance + since all existing use cases work directly with the "derived" + classes themselves, so there shouldn't be any overhead since the + compiler can use direct calls rather than virtual function + calls. + + * ace/OS.cpp (thr_create): Changed the call to CreateThread() to + _beginthreadex() and the call to ExitThread() to _endthreadex() + for Win32 in order to make ACE threads work correctly with + Win32. Thanks to James Mansion <james@wgold.demon.co.uk> for + recommending this. + + * ace/ACE: Added two new static functions: read_adapter() and + register_stdin_handler(). These are useful when writing code + that must demultiplexing ACE_STDIN on both Win32 and UNIX. This + works around Win32 limitations that don't allow us to select() + on non-sockets (such as ACE_STDIN). + + * examples/ASX/CCM_App/SC_Server.cpp: Updated this + test so that it should now work correctly on Win32, where it + isn't possible to select() on STDIN... + + * ace/Synch_T: Added a new class to ACE called "ACE_Test_and_Set." + As this name implies, this class implements an atomic ``test and + set'' abstraction. This has all sorts of useful implications, + particularly because it is a template that can be paramaterized + by the type of LOCK (e.g., ACE_Null_Mutex, ACE_Thread_Mutex, + etc.) and the type of TYPE (e.g., int, double, sig_atomic_t, + etc.). In addition, because this "is-a" ACE_Event_Handler it + instances can be registered with the Reactor and used to shut + down event hoops gracefully upon receipt of certain signals + (e.g., SIGINT). In fact, I've redone many of the example + applications (e.g., ./examples/Logger/server/server_loggerd.cpp) + to illustrate how this works. Sun Sep 15 20:40:17 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu> - * ace/ReactorEx.cpp (notify): I've redesigned this code. - Previously, ReactorEx was explicitly managing a handle that it - kept in handles_[0]. handles_[0] was used to implement - ReactorEx::notify, which allowed other threads to wake up the - thread waiting in ReactorEx::handle_events. Now ReactorEx has - an Event_Handler (ReactorEx_Notify) that is registered in the - constructor of ReactorEx. This allows us to treat events from - handles_[0] just like every other event (i.e. by dispatching to - handles_[0]->handle_signal). One of the results of this change - is that code in remove_handler() is simplified a bit. + * ace/ReactorEx.cpp (notify): I've redesigned this code. + Previously, ReactorEx was explicitly managing a handle that it + kept in handles_[0]. handles_[0] was used to implement + ReactorEx::notify, which allowed other threads to wake up the + thread waiting in ReactorEx::handle_events. Now ReactorEx has + an Event_Handler (ReactorEx_Notify) that is registered in the + constructor of ReactorEx. This allows us to treat events from + handles_[0] just like every other event (i.e. by dispatching to + handles_[0]->handle_signal). One of the results of this change + is that code in remove_handler() is simplified a bit. Sun Sep 15 17:56:52 1996 Prashant Jain <pjain@merengue.cs.wustl.edu> - * ace/Naming_Context.cpp: Added a new flag to the constructor and - open() method of ACE_Naming_Context that allows us to specify - which Memory_Pool to use when creating ACE_Local_Name_Space - (that is choose between ACE_MMap_Memory_Pool and - ACE_Lite_MMap_Memory_Pool). - - * ace/Memory_Pool.cpp: Added a new class called - ACE_Lite_MMap_Memory_Pool which subclasses ACE_MMap_Memory_Pool - and overrides the sync method so that it is a no-op. - - * ace/Local_Name_Space.cpp: Made some siginificant changes in - ACE_Local_Name_Space. Here is what the problem was: - ACE_Name_Space_Map (which is an ACE_Map_Manager) used an - ACE_RW_Process_Mutex for synchronization. However, since the Map - was kept in shared memory and was shared by all the processes, - it got instantiated only by the first process which came - along. Therefore, only the first process got around to creating - and initializing the lock. - - In fixing the problem, we made some other changes to - ACE_Local_Name_Space and ACE_Name_Space_Map. Both classes are - now template classes. ACE_Local_Name_Space needs to be - parameterized with a Memory_Pool (thus giving us a hook to - implement the NO-SYNC option) as well as a LOCK. - ACE_Name_Space_Map needs to be parameterized by an ALLOCATOR - which is created by ACE_Local_Name_Space. Note that the reason - we need to parameterize ACE_Name_Space_Map is so that we can - pass an ACE_Allocator_Adapter (which subclasses from - ACE_Allocator) with every method. It is not possible to pass an - ACE_Allocator since the ::remap() method relies on an - allocator() method defined on the ALLOCATOR that is passed in - (and ACE_Allocator does not define an allocator() method). - - The purpose of the class ACE_Name_Space_Map still remains the - same. It IS_A Map_Manager and provides the hook to set the - allocator to the process specific one. However, none of its - methods acquire any locks. For that reason, the Map_Manager is - parameterized with the Null_Mutex. All synchronization takes - place inside ACE_Local_Name_Space. ACE_Naming_Context - instantiates ACE_Local_Name_Space (depending upon the scope) and - by default parameterizes it with ACE_MMap_Memory_Pool and - ACE_RW_Process_Mutex. - - Also made some more fixes to ACE_Local_Name_Space. In - create_manager(), after we create the allocator, we now check to - see if the backing store was created successfully and if not, we - return -1. + * ace/Naming_Context.cpp: Added a new flag to the constructor and + open() method of ACE_Naming_Context that allows us to specify + which Memory_Pool to use when creating ACE_Local_Name_Space + (that is choose between ACE_MMap_Memory_Pool and + ACE_Lite_MMap_Memory_Pool). + + * ace/Memory_Pool.cpp: Added a new class called + ACE_Lite_MMap_Memory_Pool which subclasses ACE_MMap_Memory_Pool + and overrides the sync method so that it is a no-op. + + * ace/Local_Name_Space.cpp: Made some siginificant changes in + ACE_Local_Name_Space. Here is what the problem was: + ACE_Name_Space_Map (which is an ACE_Map_Manager) used an + ACE_RW_Process_Mutex for synchronization. However, since the Map + was kept in shared memory and was shared by all the processes, + it got instantiated only by the first process which came + along. Therefore, only the first process got around to creating + and initializing the lock. + + In fixing the problem, we made some other changes to + ACE_Local_Name_Space and ACE_Name_Space_Map. Both classes are + now template classes. ACE_Local_Name_Space needs to be + parameterized with a Memory_Pool (thus giving us a hook to + implement the NO-SYNC option) as well as a LOCK. + ACE_Name_Space_Map needs to be parameterized by an ALLOCATOR + which is created by ACE_Local_Name_Space. Note that the reason + we need to parameterize ACE_Name_Space_Map is so that we can + pass an ACE_Allocator_Adapter (which subclasses from + ACE_Allocator) with every method. It is not possible to pass an + ACE_Allocator since the ::remap() method relies on an + allocator() method defined on the ALLOCATOR that is passed in + (and ACE_Allocator does not define an allocator() method). + + The purpose of the class ACE_Name_Space_Map still remains the + same. It IS_A Map_Manager and provides the hook to set the + allocator to the process specific one. However, none of its + methods acquire any locks. For that reason, the Map_Manager is + parameterized with the Null_Mutex. All synchronization takes + place inside ACE_Local_Name_Space. ACE_Naming_Context + instantiates ACE_Local_Name_Space (depending upon the scope) and + by default parameterizes it with ACE_MMap_Memory_Pool and + ACE_RW_Process_Mutex. + + Also made some more fixes to ACE_Local_Name_Space. In + create_manager(), after we create the allocator, we now check to + see if the backing store was created successfully and if not, we + return -1. Sat Sep 14 00:00:31 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * examples/Logger: Renamed the original server directory to - "simple-server" and added a new directory called - "Acceptor-server" which implements the Logger using the - ACE_Acceptor. Note that almost all of the implementation code - disappears! - - * ace/Local_Name_Server_T.cpp: Removed the name_server_map_ array - and replaced it with the ACE_NAME_SERVER_MAP #define, which is - now contained in OS.h. - - * ace/Malloc.h: Added "virtual ... = 0" to the bind() and - trybind() methods of the ACE_Allocator since they should be pure - virtual functions... - - * ace/Synch{_T}: Separated out the wait (ACE_Time_Value *) and - wait (void) methods in order to optimize the call sequence for - the common case when there is no timeout. - - * ace/Synch: Added a new wait(ACE_Thread_Mutex &) method to - ACE_Condition_Thread_Mutex so that we are consistent with the - templated ACE_Condition_Mutex. - - * include/makeinclude: Changed uses of -pic to -PIC because ACE is - now creating more than 2082 symbols. It's probably time to - split up the library... - - * ace/DEV_IO: Moved the ACE_DEV_Addr instance from ACE_DEV_IO into - ACE_DEV so that it will be available for the ACE_DEV_Connector. - This fixes a bug that prevented us from using the ACE_Connector - in conjunction with the ACE_DEV_* classes. Thanks to Karlheinz - for clarifying what had to occur. + * examples/Logger: Renamed the original server directory to + "simple-server" and added a new directory called + "Acceptor-server" which implements the Logger using the + ACE_Acceptor. Note that almost all of the implementation code + disappears! + + * ace/Local_Name_Server_T.cpp: Removed the name_server_map_ array + and replaced it with the ACE_NAME_SERVER_MAP #define, which is + now contained in OS.h. + + * ace/Malloc.h: Added "virtual ... = 0" to the bind() and + trybind() methods of the ACE_Allocator since they should be pure + virtual functions... + + * ace/Synch{_T}: Separated out the wait (ACE_Time_Value *) and + wait (void) methods in order to optimize the call sequence for + the common case when there is no timeout. + + * ace/Synch: Added a new wait(ACE_Thread_Mutex &) method to + ACE_Condition_Thread_Mutex so that we are consistent with the + templated ACE_Condition_Mutex. + + * include/makeinclude: Changed uses of -pic to -PIC because ACE is + now creating more than 2082 symbols. It's probably time to + split up the library... + + * ace/DEV_IO: Moved the ACE_DEV_Addr instance from ACE_DEV_IO into + ACE_DEV so that it will be available for the ACE_DEV_Connector. + This fixes a bug that prevented us from using the ACE_Connector + in conjunction with the ACE_DEV_* classes. Thanks to Karlheinz + for clarifying what had to occur. Fri Sep 13 00:16:32 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/OS.h: Changed the order of #includes so that <assert.h> - comes before <sys/stat.h>. This fixes some bugs with the - Siemens SVR4 C++. Thanks to Antonio Tortorici - <antonio@rh0011.roma.tlsoft.it> for this fix + * ace/OS.h: Changed the order of #includes so that <assert.h> + comes before <sys/stat.h>. This fixes some bugs with the + Siemens SVR4 C++. Thanks to Antonio Tortorici + <antonio@rh0011.roma.tlsoft.it> for this fix - * ace/ACE.cpp (handle_timed_complete): Added yet another weird - hack to deal with the insanity that is TLI... + * ace/ACE.cpp (handle_timed_complete): Added yet another weird + hack to deal with the insanity that is TLI... - * ace/Synch.cpp: Replaced all uses of ACE_Thread_Mutex_Guard with - ACE_GUARD macros in order to avoid problems when mutexes fail. + * ace/Synch.cpp: Replaced all uses of ACE_Thread_Mutex_Guard with + ACE_GUARD macros in order to avoid problems when mutexes fail. - * ace/OS.h: Changed the definition of the ACE_*GUARD macros so - that they are always enabled, even when we turn off ACE_MT_SAFE. - This avoids a nasty semantic problem for components that use - ACE_Process_Mutex. Thanks to Avraham Nash - <Avraham_Nash@praxisint.com> for reporting this problem. + * ace/OS.h: Changed the definition of the ACE_*GUARD macros so + that they are always enabled, even when we turn off ACE_MT_SAFE. + This avoids a nasty semantic problem for components that use + ACE_Process_Mutex. Thanks to Avraham Nash + <Avraham_Nash@praxisint.com> for reporting this problem. - * ace/OS: Removed ACE_OS::fork_exec() since its functionality has - been subsumed by ACE_Process. + * ace/OS: Removed ACE_OS::fork_exec() since its functionality has + been subsumed by ACE_Process. - * ace/Thread_Manager: Added a new thread_descriptor_i() method - that *doesn't* grab the lock in order to avoid deadlocks. + * ace/Thread_Manager: Added a new thread_descriptor_i() method + that *doesn't* grab the lock in order to avoid deadlocks. - * include/makeinclude/platform_sunos5_sunc++.GNU (CXX): had to add - the -pta option so that we achieve template closure in ACE. + * include/makeinclude/platform_sunos5_sunc++.GNU (CXX): had to add + the -pta option so that we achieve template closure in ACE. - * include/makeinclude: Added -lthread to the - platform_sunos5_sunc++.GNU file. I don't know how this slipped - through the cracks! + * include/makeinclude: Added -lthread to the + platform_sunos5_sunc++.GNU file. I don't know how this slipped + through the cracks! - * ace/{DEV_IO,FILE_IO,SOCK_IO,SPIPE_Stream}: Fixed a braino with - alloca where I was failing to multiply by sizeof (iovec). Isn't - C great? ... Thanks to Chuck Gehr <gehr@sweng.stortek.com> for - reporting this. + * ace/{DEV_IO,FILE_IO,SOCK_IO,SPIPE_Stream}: Fixed a braino with + alloca where I was failing to multiply by sizeof (iovec). Isn't + C great? ... Thanks to Chuck Gehr <gehr@sweng.stortek.com> for + reporting this. - * ace/SOCK_Dgram_Mcast.cpp: Added two changes to the ACE multicast - code in order to get it to work on Win32. The first change is - to put the IP_ADD_MEMBERSHIP setsockopt() call *after* the - bind() (in shared_open()). The second is to convert the - ACE_INET_Addr::get_ip_address() from host byte order into - network byte order. Thanks to Todd L. Montgomery - <tmont@cerc.wvu.edu> and Steve Weismuller - <spweismu@rsoc.rockwell.com> for helping with this. + * ace/SOCK_Dgram_Mcast.cpp: Added two changes to the ACE multicast + code in order to get it to work on Win32. The first change is + to put the IP_ADD_MEMBERSHIP setsockopt() call *after* the + bind() (in shared_open()). The second is to convert the + ACE_INET_Addr::get_ip_address() from host byte order into + network byte order. Thanks to Todd L. Montgomery + <tmont@cerc.wvu.edu> and Steve Weismuller + <spweismu@rsoc.rockwell.com> for helping with this. - * examples/Threads/test_barrier2.cpp: Incorporated Karlheinz's - new ACE_Barrier test program. + * examples/Threads/test_barrier2.cpp: Incorporated Karlheinz's + new ACE_Barrier test program. - * ace/Synch.h: Added Karlheinz's ACE_Null_Barrier class. + * ace/Synch.h: Added Karlheinz's ACE_Null_Barrier class. Fri Sep 13 00:30:50 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu> - * tests/{Tokens_Test,Time_Service_Test}.cpp: Updated tests to use - ACE_Process instead of ACE_OS::fork_exec. + * tests/{Tokens_Test,Time_Service_Test}.cpp: Updated tests to use + ACE_Process instead of ACE_OS::fork_exec. - * ace/Process.cpp: Added a new ACE_Process abstraction that is a - Portable encapsulation for creating new processes. It allows - assignment of STDIN, STDOUT, and STDERR of the new process. On - UNIX, ACE_Process uses fork and exec. On Win32, it uses - CreateProcess. Since we can set the standard handles, we can - mimic UNIX pipes on Win32 by building chains of processes. This - class should be used instead ACE_OS::fork_exec. + * ace/Process.cpp: Added a new ACE_Process abstraction that is a + Portable encapsulation for creating new processes. It allows + assignment of STDIN, STDOUT, and STDERR of the new process. On + UNIX, ACE_Process uses fork and exec. On Win32, it uses + CreateProcess. Since we can set the standard handles, we can + mimic UNIX pipes on Win32 by building chains of processes. This + class should be used instead ACE_OS::fork_exec. - * examples/OS/Process/process.cpp (main): Added new example - application to show how to use ACE_Process. + * examples/OS/Process/process.cpp (main): Added new example + application to show how to use ACE_Process. Thu Sep 12 00:55:25 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/DEV_IO: Added methods get_local_addr() and get_remote_addr() - so that ACE_Connector will work correctly. Thanks to Brad Flood - <BFLOOD@tcs.lmco.com> for reporting this. - - * ace/Thread_Manager.cpp (thr_self): Added a fix to solve the - problem that Win32 GetCurrentThread() returns a pseudo-handle - rather than a real handle. Now, we just look things up using - the thread id rather than the thread handle. Thanks to Luca - Priorelli" <lucapri@mbox.vol.it> for clarifying this. - - * ace/Proactor.cpp (initiate): Fixed an incorrect set of return - values -- they were reversed. Thanks to Brad Flood - <BFLOOD@tcs.lmco.com> for reporting this. - - * ace/OS.i (thr_cmp): Added a check for - !defined(ACE_HAS_SETKIND_NP) to avoid a problem with OSF/1. - Thanks to Martin Schoeckle <schoeckle@ike.uni-stuttgart.de> for - reporting this. - - * examples/IPC_SAP/DEV_SAP: Updated these examples to use the new - ACE_TTY_IO classes. - - * ace: Moved the TTY_IO code from the - examples/IPC_SAP/DEV_SAP/{reader,writer} directories into the - files TTY_IO.{h,cpp} in the main part of ACE and integrated Brad - Flood's <BFLOOD@tcs.lmco.com> changes for Win32. - - * ace/DEV_IO.i: Changed the mapping of send_n() and recv_n() - methods to use write_n() and read_n() respectively so they will - work on NT. Thanks to Brad Flood <BFLOOD@tcs.lmco.com> for - reporting this. - - * ace/Thread_Manager.h: Implemented a non-synchronized version of - the lookup function for the <hthread_descriptor>. This version - assumes that the lock is help. We need this to avoid - intra-class method deadlock on systems (such as Solaris) that - lack recursive mutexes. - - * ace/Log_Msg.cpp (ACE_Log_Msg): made sure to initialize - ACE_Log_Msg::thr_handle_ to 0. I'm not sure how this got - changed... Thanks to Luca Priorelli <lucapri@mbox.vol.it> for - reporting this. - - * examples/Reactor/ReactorEx/test_reactorEx.cpp - (register_thread_exit_hook): Changed hthread_t to ACE_hthread_t. - Thanks to Luca Priorelli <lucapri@mbox.vol.it> for reporting - this. - - * apps/Gateway/Gateway/Channel.h: Due to inconsistencies between - the semantics of sockets and TLI with respect to establishing - non-blocking connections it's not a good idea to use TLI in - conjunction with select(). Therefore, I've #if 0'd out the use - of TLI in the Gateway application. + * ace/DEV_IO: Added methods get_local_addr() and get_remote_addr() + so that ACE_Connector will work correctly. Thanks to Brad Flood + <BFLOOD@tcs.lmco.com> for reporting this. + + * ace/Thread_Manager.cpp (thr_self): Added a fix to solve the + problem that Win32 GetCurrentThread() returns a pseudo-handle + rather than a real handle. Now, we just look things up using + the thread id rather than the thread handle. Thanks to Luca + Priorelli" <lucapri@mbox.vol.it> for clarifying this. + + * ace/Proactor.cpp (initiate): Fixed an incorrect set of return + values -- they were reversed. Thanks to Brad Flood + <BFLOOD@tcs.lmco.com> for reporting this. + + * ace/OS.i (thr_cmp): Added a check for + !defined(ACE_HAS_SETKIND_NP) to avoid a problem with OSF/1. + Thanks to Martin Schoeckle <schoeckle@ike.uni-stuttgart.de> for + reporting this. + + * examples/IPC_SAP/DEV_SAP: Updated these examples to use the new + ACE_TTY_IO classes. + + * ace: Moved the TTY_IO code from the + examples/IPC_SAP/DEV_SAP/{reader,writer} directories into the + files TTY_IO.{h,cpp} in the main part of ACE and integrated Brad + Flood's <BFLOOD@tcs.lmco.com> changes for Win32. + + * ace/DEV_IO.i: Changed the mapping of send_n() and recv_n() + methods to use write_n() and read_n() respectively so they will + work on NT. Thanks to Brad Flood <BFLOOD@tcs.lmco.com> for + reporting this. + + * ace/Thread_Manager.h: Implemented a non-synchronized version of + the lookup function for the <hthread_descriptor>. This version + assumes that the lock is help. We need this to avoid + intra-class method deadlock on systems (such as Solaris) that + lack recursive mutexes. + + * ace/Log_Msg.cpp (ACE_Log_Msg): made sure to initialize + ACE_Log_Msg::thr_handle_ to 0. I'm not sure how this got + changed... Thanks to Luca Priorelli <lucapri@mbox.vol.it> for + reporting this. + + * examples/Reactor/ReactorEx/test_reactorEx.cpp + (register_thread_exit_hook): Changed hthread_t to ACE_hthread_t. + Thanks to Luca Priorelli <lucapri@mbox.vol.it> for reporting + this. + + * apps/Gateway/Gateway/Channel.h: Due to inconsistencies between + the semantics of sockets and TLI with respect to establishing + non-blocking connections it's not a good idea to use TLI in + conjunction with select(). Therefore, I've #if 0'd out the use + of TLI in the Gateway application. Wed Sep 11 00:25:38 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/ACE.cpp (handle_timed_complete): Fixed a typo that was - failing to set n = ACE::recv(...). In addition, rethought how - we figure out if a connection completes for the nth time... + * ace/ACE.cpp (handle_timed_complete): Fixed a typo that was + failing to set n = ACE::recv(...). In addition, rethought how + we figure out if a connection completes for the nth time... - * ace/TLI.cpp (open): Modified the implementation of open() so - that if oflag == 0 it is given an initial value of O_RDWR. - Otherwise we'll get a "badflags" t_errno. + * ace/TLI.cpp (open): Modified the implementation of open() so + that if oflag == 0 it is given an initial value of O_RDWR. + Otherwise we'll get a "badflags" t_errno. - * ace/Connector.h (connect): Modified connect() so that the - default value of the flags parameter is O_RDWR. This is - necessary to make TLI_Connector::connect() work correctly by - default. + * ace/Connector.h (connect): Modified connect() so that the + default value of the flags parameter is O_RDWR. This is + necessary to make TLI_Connector::connect() work correctly by + default. - * examples/Logger: Updated the example logger client and server to - illustrate more clearly how things like the Singleton Reactor - and the ACE_Reactor timer mechanism work. Thanks to Joe - DeAngelis <bytor@faxint.com> for suggesting this. + * examples/Logger: Updated the example logger client and server to + illustrate more clearly how things like the Singleton Reactor + and the ACE_Reactor timer mechanism work. Thanks to Joe + DeAngelis <bytor@faxint.com> for suggesting this. - * ace/Pipe: Added a new constructor that makes it possible to - initialize the <ACE_Pipe> from the <read> and <write> handles. - Thanks to Stevan Warwick (sjw@aesthetic.com) for suggesting - this. + * ace/Pipe: Added a new constructor that makes it possible to + initialize the <ACE_Pipe> from the <read> and <write> handles. + Thanks to Stevan Warwick (sjw@aesthetic.com) for suggesting + this. - * config-irix5.3-sgic++.h: Added #define for ACE_NEEDS_SYSTIME_H. - Thanks to Stevan Warwick (sjw@aesthetic.com) for reporting this. + * config-irix5.3-sgic++.h: Added #define for ACE_NEEDS_SYSTIME_H. + Thanks to Stevan Warwick (sjw@aesthetic.com) for reporting this. - * examples/Logger/server/Client_Acceptor: Fixed some stray - mis-uses of int that should have been ACE_HANDLE. Thanks to - Luca Priorelli" <lucapri@mbox.vol.it> for reporting this. + * examples/Logger/server/Client_Acceptor: Fixed some stray + mis-uses of int that should have been ACE_HANDLE. Thanks to + Luca Priorelli" <lucapri@mbox.vol.it> for reporting this. - * ace/{ACE,Log_Msg}.cpp: Added fixes for hexdump(). Thanks to - Luca Priorelli" <lucapri@mbox.vol.it> for supplying these. + * ace/{ACE,Log_Msg}.cpp: Added fixes for hexdump(). Thanks to + Luca Priorelli" <lucapri@mbox.vol.it> for supplying these. - * ace/Reactor.cpp (ACE_Reactor): Fixed a typo: "this->max_handlep1 - ()" should be "this->handler_rep_.max_handlep1 ()". Thanks to - Scott Shupe <shupes@mitre.org> for reporting this. + * ace/Reactor.cpp (ACE_Reactor): Fixed a typo: "this->max_handlep1 + ()" should be "this->handler_rep_.max_handlep1 ()". Thanks to + Scott Shupe <shupes@mitre.org> for reporting this. - * apps/Orbix-Examples/Event_Comm: Added a bunch of changes to make - this application compile with Orbix 2.0. Thanks to Mike - O'Malley <momalley@caesun16.msd.ray.com> for the fixes. + * apps/Orbix-Examples/Event_Comm: Added a bunch of changes to make + this application compile with Orbix 2.0. Thanks to Mike + O'Malley <momalley@caesun16.msd.ray.com> for the fixes. - * ace/OS.cpp (thr_create): Added yet another fix for the IRIX 6.2 - pthreads implementation. Thanks to Gonzalo Diethelm - <gonzo@ing.puc.cl> for reporting this. + * ace/OS.cpp (thr_create): Added yet another fix for the IRIX 6.2 + pthreads implementation. Thanks to Gonzalo Diethelm + <gonzo@ing.puc.cl> for reporting this. - * ace/config-irix6.2-sgic++.h: Changed ACE_HAS_IRIX53_GETTIMEOFDAY - to ACE_HAS_IRIX_GETTIMEOFDAY because this also seems to be the - case for IRIX 6.2... Thanks to Gonzalo Diethelm - <gonzo@ing.puc.cl> for reporting this. + * ace/config-irix6.2-sgic++.h: Changed ACE_HAS_IRIX53_GETTIMEOFDAY + to ACE_HAS_IRIX_GETTIMEOFDAY because this also seems to be the + case for IRIX 6.2... Thanks to Gonzalo Diethelm + <gonzo@ing.puc.cl> for reporting this. - * ace/TLI_{Connector,Acceptor}.cpp: Added tests against NULL - pointers to avoid segmentation faults when the TLI - implementation doesn't allocate memory for the udata and opt - fields of netbuf structures. + * ace/TLI_{Connector,Acceptor}.cpp: Added tests against NULL + pointers to avoid segmentation faults when the TLI + implementation doesn't allocate memory for the udata and opt + fields of netbuf structures. - * ace/Mem_Map.i (ACE_Mem_Map): Added an accessor so that callers - can get the name of the filename that is being used as the - backing store. Thanks to the James Mansion - <james@wgold.demon.co.uk> for recommending this. + * ace/Mem_Map.i (ACE_Mem_Map): Added an accessor so that callers + can get the name of the filename that is being used as the + backing store. Thanks to the James Mansion + <james@wgold.demon.co.uk> for recommending this. Tue Sep 10 00:26:52 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/OS.cpp (thr_create): Modified the thr_create() - implementation for Win32 so that if the caller doesn't care - about this value we can avoid a HANDLE leak. Thanks to the - James Mansion <james@wgold.demon.co.uk> for recommending this. + * ace/OS.cpp (thr_create): Modified the thr_create() + implementation for Win32 so that if the caller doesn't care + about this value we can avoid a HANDLE leak. Thanks to the + James Mansion <james@wgold.demon.co.uk> for recommending this. - * ace/Thread.cpp (ACE_Thread): Moved both definitions of spawn_n() - into the Thread.cpp since they have loops and don't benefit from - being inlined. + * ace/Thread.cpp (ACE_Thread): Moved both definitions of spawn_n() + into the Thread.cpp since they have loops and don't benefit from + being inlined. - * ace/Svc_Handler.h: Moved operator delete() into the public part - of the class in order to make various compilers happy... + * ace/Svc_Handler.h: Moved operator delete() into the public part + of the class in order to make various compilers happy... - * ace/OS.i (ACE_OS): Fixed the #define that selects the (union - wait *) alternative of wait(). This original was protected by - ACE_LACKS_POSIX_PROTO, but it should be ACE_HAS_UNION_WAIT. + * ace/OS.i (ACE_OS): Fixed the #define that selects the (union + wait *) alternative of wait(). This original was protected by + ACE_LACKS_POSIX_PROTO, but it should be ACE_HAS_UNION_WAIT. - * performance-tests: Created a new directory that will contain all - of the ACE performance tests. Move the Synch-Benchmarks and the - TTCP tests from ./apps into here, and also moved the - test_mutex.cpp and test_singleton.cpp files from - ./examples/{Threads,Misc}, respectively. Thanks to Tim Harrison - for this suggestion. + * performance-tests: Created a new directory that will contain all + of the ACE performance tests. Move the Synch-Benchmarks and the + TTCP tests from ./apps into here, and also moved the + test_mutex.cpp and test_singleton.cpp files from + ./examples/{Threads,Misc}, respectively. Thanks to Tim Harrison + for this suggestion. - * ace/OS.i (ACE_OS): in WIN32 closesocket() returns 0 if call is - OK, so I changed the return value to be the other way around. - Thanks to Luca Priorelli <lucapri@mbox.vol.it> for reporting - this. + * ace/OS.i (ACE_OS): in WIN32 closesocket() returns 0 if call is + OK, so I changed the return value to be the other way around. + Thanks to Luca Priorelli <lucapri@mbox.vol.it> for reporting + this. - * ace: Changed the ACE_NO_POSIX_PROTO #define to something more - meaningful: ACE_LACKS_POSIX_PROTO. Thanks to Jonathan Biggar - <jon@sems.com> for suggesting this. + * ace: Changed the ACE_NO_POSIX_PROTO #define to something more + meaningful: ACE_LACKS_POSIX_PROTO. Thanks to Jonathan Biggar + <jon@sems.com> for suggesting this. - * ace/config-sunos4-g++.h: Added the #define ACE_NEEDS_SYSTIME_H. - Thanks to Alexandre Karev <akg@na47sun05.cern.ch> for reporting - this. + * ace/config-sunos4-g++.h: Added the #define ACE_NEEDS_SYSTIME_H. + Thanks to Alexandre Karev <akg@na47sun05.cern.ch> for reporting + this. - * ace/OS: Fixed a bunch of pthreads portability problems that - showed up on OSF/1 4.0. Also added support for asctime_r() and - ctime_r() for OSF/1 4.0. Thanks to Dave Trumble - <trumble@steosf.nio.dec.com> for reporting these fixes. + * ace/OS: Fixed a bunch of pthreads portability problems that + showed up on OSF/1 4.0. Also added support for asctime_r() and + ctime_r() for OSF/1 4.0. Thanks to Dave Trumble + <trumble@steosf.nio.dec.com> for reporting these fixes. - * ace/Synch_T.cpp (ACE_TSS_Read_Guard): Removed a stray "new" that - was causing problems for the ACE_NEW macro. Thanks to Dave - Trumble <trumble@steosf.nio.dec.com> for reporting this. + * ace/Synch_T.cpp (ACE_TSS_Read_Guard): Removed a stray "new" that + was causing problems for the ACE_NEW macro. Thanks to Dave + Trumble <trumble@steosf.nio.dec.com> for reporting this. * ace/Local_Tokens.h: Fixed a broken use of "friend", which was - missing the keyword "class." Thanks to Dave Trumble - <trumble@steosf.nio.dec.com> for reporting this. + missing the keyword "class." Thanks to Dave Trumble + <trumble@steosf.nio.dec.com> for reporting this. - * ace/config-osf1-4.0.h: Included Dave Trumble's - <trumble@steosf.nio.dec.com> config file for OSF/1 4.0. + * ace/config-osf1-4.0.h: Included Dave Trumble's + <trumble@steosf.nio.dec.com> config file for OSF/1 4.0. - * include/makeinclude/platform_osf1_4.0.GNU: Included Dave - Trumble's <trumble@steosf.nio.dec.com> platform macros file for - OSF/1 4.0. Also renamed platform_osf1.GNU to - platform_osf1_3.2.GNU to deal with the new version. + * include/makeinclude/platform_osf1_4.0.GNU: Included Dave + Trumble's <trumble@steosf.nio.dec.com> platform macros file for + OSF/1 4.0. Also renamed platform_osf1.GNU to + platform_osf1_3.2.GNU to deal with the new version. - * ace/Proactor: There wasn't a way to destroy an - ACE_Overlapped_File object without closing the ACE_HANDLE - attached to it. Therefore, I added a flag that keeps track of - whether we have to delete this or not. Thanks to Amos Shapira - <amos_shapira@mail.icomverse.com> for suggesting this. + * ace/Proactor: There wasn't a way to destroy an + ACE_Overlapped_File object without closing the ACE_HANDLE + attached to it. Therefore, I added a flag that keeps track of + whether we have to delete this or not. Thanks to Amos Shapira + <amos_shapira@mail.icomverse.com> for suggesting this. - * examples/Threads/test_future[12].cpp: Updated the tests to use - the new call() semantics in order to shut down the Scheduler's - event loop gracefully. + * examples/Threads/test_future[12].cpp: Updated the tests to use + the new call() semantics in order to shut down the Scheduler's + event loop gracefully. - * ace/Method_Object.cpp: Added a return value to the call() - routine. This can be used to indicate to the caller that it is - necessary to shut down the event loop. + * ace/Method_Object.cpp: Added a return value to the call() + routine. This can be used to indicate to the caller that it is + necessary to shut down the event loop. Mon Sep 9 02:07:08 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/Service_Config.cpp (ACE_Service_Config): #ifdef's out the - registration of signal handling to control reconfiguration on - Win32 since it doesn't really handle signals very well. Thanks - to John Morey <jmorey@tbi.com> for bringing this to my - attention. - - * ace/CORBA_Handler: Replaced CORBA_[123] with ACE_CORBA_[123]. - - * examples/CORBA: Updated the test programs to work portably - across different versions of Orbix. - - * ace/OS: Added a new wrapper for the getcwd() call. - - * examples/Threads/test_recursive_mutex.cpp: Added the use of - ACE_Guard<> to illustrate how these work with the - ACE_Recursive_Thread_Mutex. Thanks to Gonzalo Diethelm - <gonzo@ing.puc.cl> for motivating me to do this. - - * examples/Threads/test_process_{mutex,semaphore}: Added two new - tests to illustrate how the ACE_Process_Mutex and - ACE_Process_Semaphore work, respectively. - - * ace/Synch: Replaced the implementation of ACE_Process_Semaphore - to use SV_Semaphore_Complex on UNIX platforms in order to get - the same semantics for Win32 and for UNIX. Thanks to the James - Mansion <james@wgold.demon.co.uk> for recommending this. - - * ace/OS.h: Added some parens around the ACE BIT* macros so that - the precedence levels would be dealt with correctly and we don't - get any nasty surprises... - - * ace/{Synch_T,Synch}: Modified the implementation of all the - *acquire()/release() methods so they keep track of whether they - own the mutex. Thus, if a code path needs to give up the mutex - within the lifetime of the mutex, and it calls mutex_.release(), - then the destructor will not call it again. Thanks to the James - Mansion <james@wgold.demon.co.uk> for recommending this. - - * ace/{Synch_T,Synch}: Changed the name of the field result_ to - owner_ for the ACE_Thread_Muetx_Guard and ACE_Guard. This is - more representative of the true purpose of this field. - - * ace/Synch: Updated ACE_Thread_Mutex_Guard so that it has the - same interface and semantics of ACE_Guard. Thanks to the - ever-vigilant James Mansion <james@wgold.demon.co.uk> for - noticing this. - - * examples/Log_Msg/test_log_msg.cpp (main): Added a test of the - new ACE_Log_Msg::priority_mask() functionality. - - * ace/Log_Msg.cpp: Added a new method called priority_mask(), - which updates the new thread-specific priority_mask_ data member - with the new mask and returns the old mask. This is useful for - applications written using ACE_Log_Msg. Often, these have log() - calls with low priority such as LM_DEBUG that don't need to be - printed, but for which the logging code should not be removed. - The priority_mask() scheme makes it possible to selective enable - printing of certain priorities. Thanks to Rochi Febo Dommarco - <rocky@alter.it> for suggesting this. - - * netsvcs/clients/Logger/indirect_logging.cpp (main): Modified the - test program so that it randomly selects logging priorities that - are powers of two. - - * ace/Log_Priority.h: Renumbered the LM_* logging flags so that - they are all powers of two. This makes it easy to implement a - scheme for selectively printing only certain logging values. + * ace/Service_Config.cpp (ACE_Service_Config): #ifdef's out the + registration of signal handling to control reconfiguration on + Win32 since it doesn't really handle signals very well. Thanks + to John Morey <jmorey@tbi.com> for bringing this to my + attention. + + * ace/CORBA_Handler: Replaced CORBA_[123] with ACE_CORBA_[123]. + + * examples/CORBA: Updated the test programs to work portably + across different versions of Orbix. + + * ace/OS: Added a new wrapper for the getcwd() call. + + * examples/Threads/test_recursive_mutex.cpp: Added the use of + ACE_Guard<> to illustrate how these work with the + ACE_Recursive_Thread_Mutex. Thanks to Gonzalo Diethelm + <gonzo@ing.puc.cl> for motivating me to do this. + + * examples/Threads/test_process_{mutex,semaphore}: Added two new + tests to illustrate how the ACE_Process_Mutex and + ACE_Process_Semaphore work, respectively. + + * ace/Synch: Replaced the implementation of ACE_Process_Semaphore + to use SV_Semaphore_Complex on UNIX platforms in order to get + the same semantics for Win32 and for UNIX. Thanks to the James + Mansion <james@wgold.demon.co.uk> for recommending this. + + * ace/OS.h: Added some parens around the ACE BIT* macros so that + the precedence levels would be dealt with correctly and we don't + get any nasty surprises... + + * ace/{Synch_T,Synch}: Modified the implementation of all the + *acquire()/release() methods so they keep track of whether they + own the mutex. Thus, if a code path needs to give up the mutex + within the lifetime of the mutex, and it calls mutex_.release(), + then the destructor will not call it again. Thanks to the James + Mansion <james@wgold.demon.co.uk> for recommending this. + + * ace/{Synch_T,Synch}: Changed the name of the field result_ to + owner_ for the ACE_Thread_Muetx_Guard and ACE_Guard. This is + more representative of the true purpose of this field. + + * ace/Synch: Updated ACE_Thread_Mutex_Guard so that it has the + same interface and semantics of ACE_Guard. Thanks to the + ever-vigilant James Mansion <james@wgold.demon.co.uk> for + noticing this. + + * examples/Log_Msg/test_log_msg.cpp (main): Added a test of the + new ACE_Log_Msg::priority_mask() functionality. + + * ace/Log_Msg.cpp: Added a new method called priority_mask(), + which updates the new thread-specific priority_mask_ data member + with the new mask and returns the old mask. This is useful for + applications written using ACE_Log_Msg. Often, these have log() + calls with low priority such as LM_DEBUG that don't need to be + printed, but for which the logging code should not be removed. + The priority_mask() scheme makes it possible to selective enable + printing of certain priorities. Thanks to Rochi Febo Dommarco + <rocky@alter.it> for suggesting this. + + * netsvcs/clients/Logger/indirect_logging.cpp (main): Modified the + test program so that it randomly selects logging priorities that + are powers of two. + + * ace/Log_Priority.h: Renumbered the LM_* logging flags so that + they are all powers of two. This makes it easy to implement a + scheme for selectively printing only certain logging values. Sun Sep 8 10:46:40 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * ace/Proactor.cpp: Fixed up the error handling in ACE_Proactor so - that it returns an error both in case of "bad errors," as well - as when ACE_WIN32 isn't defined. Thanks to Amos Shapira - <amos_shapira@mail.icomverse.com> for reporting this. + * ace/Proactor.cpp: Fixed up the error handling in ACE_Proactor so + that it returns an error both in case of "bad errors," as well + as when ACE_WIN32 isn't defined. Thanks to Amos Shapira + <amos_shapira@mail.icomverse.com> for reporting this. Sun Sep 8 14:11:08 1996 Tim H. Harrison <harrison@lambada.cs.wustl.edu> - * examples/Reactor/Proactor/README: Updated the test_proactor.cpp - and README files to clarify the relationship between the - Proactor and ReactorEx. This example uses the Proactor as the - main event loop (not the Reactor or ReactorEx). Thus, this - application can only do overlapped I/O and timers - asynchronously. To be able to react to other Win32 events, see - the ACE_ReactorEx and the examples/Reactor/ReactorEx/ test. - Thanks to Amos Shapira <amos_shapira@mail.icomverse.com> for - pointing out the ambiguity. + * examples/Reactor/Proactor/README: Updated the test_proactor.cpp + and README files to clarify the relationship between the + Proactor and ReactorEx. This example uses the Proactor as the + main event loop (not the Reactor or ReactorEx). Thus, this + application can only do overlapped I/O and timers + asynchronously. To be able to react to other Win32 events, see + the ACE_ReactorEx and the examples/Reactor/ReactorEx/ test. + Thanks to Amos Shapira <amos_shapira@mail.icomverse.com> for + pointing out the ambiguity. Sat Sep 7 14:09:21 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * ace/Task.cpp: Enhanced the activate() method so that the caller - can set the priority and the thread group id. Thanks to - Karlheinz for this suggestion. + * ace/Task.cpp: Enhanced the activate() method so that the caller + can set the priority and the thread group id. Thanks to + Karlheinz for this suggestion. - * ace/OS.h: Added default values of 0 for the trailing arguments - for the {mutex,sema,cond}_init() methods. + * ace/OS.h: Added default values of 0 for the trailing arguments + for the {mutex,sema,cond}_init() methods. - * examples/Threads/test_mutex.cpp: Added a new test program that - illustrates the difference between implementations of thread - mutex wrappers that use inheritance and dynamic binding vs. the - ACE approach (which doesn't use inheritance and dynamic - binding). The results I got on my SPARCstation 20 model 712 is - included in the source file. Thanks to James Mansion - <james@wgold.demon.co.uk> for motivating me to write this. + * examples/Threads/test_mutex.cpp: Added a new test program that + illustrates the difference between implementations of thread + mutex wrappers that use inheritance and dynamic binding vs. the + ACE approach (which doesn't use inheritance and dynamic + binding). The results I got on my SPARCstation 20 model 712 is + included in the source file. Thanks to James Mansion + <james@wgold.demon.co.uk> for motivating me to write this. - * examples/Misc/test_singleton.cpp: Added a new test program that - illustrates the performance of using the Double-Checked Locking - pattern compared with the standard "Mutex::acquire()/release()" - approach. Thanks to Jim Coplien <cope@research.bell-labs.com> - for encouraging me to get these performance numbers. + * examples/Misc/test_singleton.cpp: Added a new test program that + illustrates the performance of using the Double-Checked Locking + pattern compared with the standard "Mutex::acquire()/release()" + approach. Thanks to Jim Coplien <cope@research.bell-labs.com> + for encouraging me to get these performance numbers. Tue Sep 3 00:38:47 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * ace/XtReactor: Added minor fixes to XtReactor to fix complaints - about "bool" not being defined and the destructor - ~ACE_XtReactor() has already having a body. Thanks to Andres - Kruse <Andres.Kruse@cern.ch> for these fixes. + * ace/XtReactor: Added minor fixes to XtReactor to fix complaints + about "bool" not being defined and the destructor + ~ACE_XtReactor() has already having a body. Thanks to Andres + Kruse <Andres.Kruse@cern.ch> for these fixes. - * ace/Mem_Map.cpp: Make sure that this->length_ is initialized to - 0 in ACE_Mem_Map::map (). Thanks to James Mansion - <james@wgold.demon.co.uk> for pointing this out. + * ace/Mem_Map.cpp: Make sure that this->length_ is initialized to + 0 in ACE_Mem_Map::map (). Thanks to James Mansion + <james@wgold.demon.co.uk> for pointing this out. - * ace/Thread.i (spawn_n): In ACE_Thread::spawn_n the sense of the - following check is wrong: + * ace/Thread.i (spawn_n): In ACE_Thread::spawn_n the sense of the + following check is wrong: - for (i = 0; i < n; i++) - // Bail out if error occurs. - if (ACE_OS::thr_create (func, arg, flags, &t_id, 0, priority, - stack == 0 ? 0 : stack[i], - stack_size == 0 ? 0 : stack_size[i]) != 0) - thread_ids[i] = t_id; - else - break; + for (i = 0; i < n; i++) + // Bail out if error occurs. + if (ACE_OS::thr_create (func, arg, flags, &t_id, 0, priority, + stack == 0 ? 0 : stack[i], + stack_size == 0 ? 0 : stack_size[i]) != 0) + thread_ids[i] = t_id; + else + break; - The '!=' should be '=='. Thanks to James Mansion - <james@wgold.demon.co.uk> for pointing this out. + The '!=' should be '=='. Thanks to James Mansion + <james@wgold.demon.co.uk> for pointing this out. - * include/makeinclude/rules.local.GNU (MAKEFILE): Changed the - $WRAPPER_ROOT/include/makeinclude/rules.local.GNU line that - says: + * include/makeinclude/rules.local.GNU (MAKEFILE): Changed the + $WRAPPER_ROOT/include/makeinclude/rules.local.GNU line that + says: - sed -e "s:$(WRAPPER_ROOT);$$(WRAPPER_ROOT);g" \ + sed -e "s:$(WRAPPER_ROOT);$$(WRAPPER_ROOT);g" \ - so that the double dollar is now "\$$" (prefixed the first - dollar sign with a backslash). If not, my shell will try to - execute WRAPPER_ROOT for some reason. With "\$$" it works as it - should. Thanks to Marius Kjeldahl <marius@funcom.no> for - reporting this. + so that the double dollar is now "\$$" (prefixed the first + dollar sign with a backslash). If not, my shell will try to + execute WRAPPER_ROOT for some reason. With "\$$" it works as it + should. Thanks to Marius Kjeldahl <marius@funcom.no> for + reporting this. - * Released version 4.0.29 for testing. + * Released version 4.0.29 for testing. - * ace/OS.i (thr_getspecific): Added a new case for OSF/1. Thanks - to Martin Schoeckle <schoeckle@ike.uni-stuttgart.de> for - reporting this. + * ace/OS.i (thr_getspecific): Added a new case for OSF/1. Thanks + to Martin Schoeckle <schoeckle@ike.uni-stuttgart.de> for + reporting this. - * ace/Thread_Manager.cpp (spawn_i): Removed an invalid - initialization of ACE_hthread_t = 0, which doesn't work on all - pthreads platforms because pthreads uses a struct in some - implementations. Thanks to Martin Schoeckle - <schoeckle@ike.uni-stuttgart.de> for reporting this. + * ace/Thread_Manager.cpp (spawn_i): Removed an invalid + initialization of ACE_hthread_t = 0, which doesn't work on all + pthreads platforms because pthreads uses a struct in some + implementations. Thanks to Martin Schoeckle + <schoeckle@ike.uni-stuttgart.de> for reporting this. - * man: Updated all the nroff and html documentation to conform to - the latest version of ACE. + * man: Updated all the nroff and html documentation to conform to + the latest version of ACE. - * netsvcs/lib/{Name_Handler,TS_Server_Handler}.cpp: Fixed - some mistakes in the ACE_TEMPLATES_REQUIRE_SPECIALIZATION - code so that all the services can be linked together without - multiply defined symbols. + * netsvcs/lib/{Name_Handler,TS_Server_Handler}.cpp: Fixed + some mistakes in the ACE_TEMPLATES_REQUIRE_SPECIALIZATION + code so that all the services can be linked together without + multiply defined symbols. - * netsvcs/lib/Name_Handler.cpp: Fixed a spot where we weren't - passing in an lvalue to send_request(). Why this wasn't showing - up earlier I don't know, but GCC caught it! + * netsvcs/lib/Name_Handler.cpp: Fixed a spot where we weren't + passing in an lvalue to send_request(). Why this wasn't showing + up earlier I don't know, but GCC caught it! Mon Sep 2 00:47:00 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * ace/Thread_Manager.cpp: Updated all comparisons of ACE_thread_t - and ACE_hthread_t so that they use the ACE_OS::thr_equal() and - ACE_OS::thr_cmp() methods, respectively. Thanks very much to - Martin Schoeckle <schoeckle@ike.uni-stuttgart.de> for identify - the need for this. - - * ace/OS: Added a new method called thr_cmp() which compares two - ACE_hthread_t values for equality. Unfortunately, we can't just - compare these directly via == because on some platforms they are - implemented as structs. Right now, I'm assuming that if - ACE_HAS_TID_T is enabled that we can compare tid_t's using ==. - If this turns out to be incorrect (e.g., if tid_t's are also - implemented as structs, please let me know). - - * ace/Future: Changed the overloaded result() method to a pair of - get()/set() methods. - - * tests/test_config.h: Fixed a bug in the reset() routine. This - was originally deleting the global static ace_file_stream. - However, this was causing segmentation faults if destructors for - objects local to main() were trying to write to the output file. - Therefore, instead of deleting the ostream, we simply flush() - it! - - In addition, also renamed the various functions in test_config.h - to make sure they don't conflict with any other names by - prefixing them with ace_test_... - - * ace: Added many small fixes for IRIX 6.2. Thanks to Gonzalo - Diethelm <gonzo@ing.puc.cl> for reporting all of these! - - * ace/OS: Added a wrapper for the UNIX syscon() system call. - - * ace/LSOCK.cpp (recv_handle): Rearranged the casts so that things - work correctly on platforms with odd definitions ot struct - iovec. Thanks to Gonzalo Diethelm <gonzo@ing.puc.cl> for - reporting this. - - * ace/Task.cpp (ACE_Task_Exit): Rearranged the order in which we - shut down a Task via the Task_Exit hook so that we first - decrement the count of the threads in the task and *then* call - its close() hook. This guards against cases where the close() - hook does something crazy like "delete this". - - * ace/XtReactor.h: Changed #include "X11/Intrinsic.h" to #include - <X11/Intrinsic.h>. Thanks to Gonzalo Diethelm - <gonzo@ing.puc.cl> for suggesting this. - - * ace/Future.cpp (ACE_Future): Added some strategic "consts" to - the assignment operator and copy constructor for ACE_Future and - ACE_Future_Rep. - - * examples/Threads/test_task_three.cpp (main): Revised the test so - that it will shut itself down automatically when all the threads - have finished. - - * examples/Threads/test_task_two.cpp (main): Revised this test so - that it doesn't run forever, but only runs either 1000 times or - as many times as the user specifies on the command line. Thanks - to Gonzalo Diethelm <gonzo@ing.puc.cl> for suggesting this. - - * ace/OS.i: Added an extra #else for thr_sigsetmask(), - thr_min_stack(), and thr_kill() for weirdo platforms that don't - conform to the other threading APIs... + * ace/Thread_Manager.cpp: Updated all comparisons of ACE_thread_t + and ACE_hthread_t so that they use the ACE_OS::thr_equal() and + ACE_OS::thr_cmp() methods, respectively. Thanks very much to + Martin Schoeckle <schoeckle@ike.uni-stuttgart.de> for identify + the need for this. + + * ace/OS: Added a new method called thr_cmp() which compares two + ACE_hthread_t values for equality. Unfortunately, we can't just + compare these directly via == because on some platforms they are + implemented as structs. Right now, I'm assuming that if + ACE_HAS_TID_T is enabled that we can compare tid_t's using ==. + If this turns out to be incorrect (e.g., if tid_t's are also + implemented as structs, please let me know). + + * ace/Future: Changed the overloaded result() method to a pair of + get()/set() methods. + + * tests/test_config.h: Fixed a bug in the reset() routine. This + was originally deleting the global static ace_file_stream. + However, this was causing segmentation faults if destructors for + objects local to main() were trying to write to the output file. + Therefore, instead of deleting the ostream, we simply flush() + it! + + In addition, also renamed the various functions in test_config.h + to make sure they don't conflict with any other names by + prefixing them with ace_test_... + + * ace: Added many small fixes for IRIX 6.2. Thanks to Gonzalo + Diethelm <gonzo@ing.puc.cl> for reporting all of these! + + * ace/OS: Added a wrapper for the UNIX syscon() system call. + + * ace/LSOCK.cpp (recv_handle): Rearranged the casts so that things + work correctly on platforms with odd definitions ot struct + iovec. Thanks to Gonzalo Diethelm <gonzo@ing.puc.cl> for + reporting this. + + * ace/Task.cpp (ACE_Task_Exit): Rearranged the order in which we + shut down a Task via the Task_Exit hook so that we first + decrement the count of the threads in the task and *then* call + its close() hook. This guards against cases where the close() + hook does something crazy like "delete this". + + * ace/XtReactor.h: Changed #include "X11/Intrinsic.h" to #include + <X11/Intrinsic.h>. Thanks to Gonzalo Diethelm + <gonzo@ing.puc.cl> for suggesting this. + + * ace/Future.cpp (ACE_Future): Added some strategic "consts" to + the assignment operator and copy constructor for ACE_Future and + ACE_Future_Rep. + + * examples/Threads/test_task_three.cpp (main): Revised the test so + that it will shut itself down automatically when all the threads + have finished. + + * examples/Threads/test_task_two.cpp (main): Revised this test so + that it doesn't run forever, but only runs either 1000 times or + as many times as the user specifies on the command line. Thanks + to Gonzalo Diethelm <gonzo@ing.puc.cl> for suggesting this. + + * ace/OS.i: Added an extra #else for thr_sigsetmask(), + thr_min_stack(), and thr_kill() for weirdo platforms that don't + conform to the other threading APIs... Sun Sep 1 20:15:28 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * examples/ASX/Message_Queue: Changed the use of read(0, ...) and - write(1, ...) to ACE_OS::read(ACE_STDIN, ...) and - ACE_OS::write(ACE_STDOUT, ...) in buffer_stream.cpp and - bounded_buffer.cpp. + * examples/ASX/Message_Queue: Changed the use of read(0, ...) and + write(1, ...) to ACE_OS::read(ACE_STDIN, ...) and + ACE_OS::write(ACE_STDOUT, ...) in buffer_stream.cpp and + bounded_buffer.cpp. - * ace/OS.i: Fixed the errno mapping of the cond_timedwait() - functions so that they set errno to ETIME rather than EBUSY when - timeouts occur. This is necessary to support Solaris and POSIX - pthreads semantics on Win32. + * ace/OS.i: Fixed the errno mapping of the cond_timedwait() + functions so that they set errno to ETIME rather than EBUSY when + timeouts occur. This is necessary to support Solaris and POSIX + pthreads semantics on Win32. - * build/SunOS5.5/examples/ASX/Message_Queue/buffer_stream.cpp: - Modified the example somewhat so that it uses the Singleton - thr_mgr() method from ACE_Service_Config. + * build/SunOS5.5/examples/ASX/Message_Queue/buffer_stream.cpp: + Modified the example somewhat so that it uses the Singleton + thr_mgr() method from ACE_Service_Config. Sun Sep 1 17:29:58 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu) - * ace/ACE.cpp (map_errno): Added a new static method to the ACE - class. This method allows us to map troublesome win32 errno - values (e.g. WSAEWOULDBLOCK) to values that standard C strerr - function understands. Thank you Microsoft. + * ace/ACE.cpp (map_errno): Added a new static method to the ACE + class. This method allows us to map troublesome win32 errno + values (e.g. WSAEWOULDBLOCK) to values that standard C strerr + function understands. Thank you Microsoft. - * ace/Log_Msg.cpp (log): Added a call to ACE::map_errno to the %p - option. Now the ACE logger can begin to map Win32 error values - into meaningful strings. + * ace/Log_Msg.cpp (log): Added a call to ACE::map_errno to the %p + option. Now the ACE logger can begin to map Win32 error values + into meaningful strings. - * netsvcs/lib/lib.mdp: Added a project file for the netsvcs - library. This builds a dll into ace/netsvcs.dll (not into the - netsvcs/lib directory). This reduces the number of paths needed - in %PATH%. + * netsvcs/lib/lib.mdp: Added a project file for the netsvcs + library. This builds a dll into ace/netsvcs.dll (not into the + netsvcs/lib directory). This reduces the number of paths needed + in %PATH%. - * examples/Tokens: Renamed this directory netsvsc/clients/Tokens. + * examples/Tokens: Renamed this directory netsvsc/clients/Tokens. - * ace/ace.mdp: Removed wsock32.lib from the ace files listing. - The problem is that we can't assume where MSDEV is installed. I - added wsock32.lib and advapi32.lib to the - build/settings/link/library_modules line. + * ace/ace.mdp: Removed wsock32.lib from the ace files listing. + The problem is that we can't assume where MSDEV is installed. I + added wsock32.lib and advapi32.lib to the + build/settings/link/library_modules line. - * ace/config-win32-msvc4.0.h: Disabled the "C4355: 'this' : used - in base member initializer list" warning. Thanks to Amos - Shapira for figuring this out for us. Although "this" is - unneeded for win32, it is required for compilers on other - platforms (e.g., AIX). + * ace/config-win32-msvc4.0.h: Disabled the "C4355: 'this' : used + in base member initializer list" warning. Thanks to Amos + Shapira for figuring this out for us. Although "this" is + unneeded for win32, it is required for compilers on other + platforms (e.g., AIX). - * ace/Message_Queue.cpp (dequeue_head_i): Andres Kruse pointed out - that we weren't doing head_->prev (0), when dequeuing! + * ace/Message_Queue.cpp (dequeue_head_i): Andres Kruse pointed out + that we weren't doing head_->prev (0), when dequeuing! Tue Aug 27 21:00:25 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * include/makeinclude/platform_sunos5_sunc++_4.1.GNU (CXX): Added - Andres Kruse's changes for SunC+ 4.1. + * include/makeinclude/platform_sunos5_sunc++_4.1.GNU (CXX): Added + Andres Kruse's changes for SunC+ 4.1. - * ace: Fixed line # 12 of ace/config-sunos4-sun4.1.4.h, - which read: + * ace: Fixed line # 12 of ace/config-sunos4-sun4.1.4.h, + which read: - "#define ACE_HAS_SVSV_IPC" (ACE_HAS_ ess vee ess vee _IPC) + "#define ACE_HAS_SVSV_IPC" (ACE_HAS_ ess vee ess vee _IPC) - to + to - "#define ACE_HAS_SYSV_IPC" (ACE_HAS_ ess wye ess vee _IPC) + "#define ACE_HAS_SYSV_IPC" (ACE_HAS_ ess wye ess vee _IPC) - Fix another problem: + Fix another problem: - #define ACE_LACKS_THREAD_STACK_ADDR (OS.cpp) + #define ACE_LACKS_THREAD_STACK_ADDR (OS.cpp) - was inconsistently defined in: + was inconsistently defined in: - #define ACE_LACKS_THREAD_STACK_ADDRESS (config-aix-4.1.x.h) + #define ACE_LACKS_THREAD_STACK_ADDRESS (config-aix-4.1.x.h) - Thanks to Alan Stweart <Axs2@osi.com> for reporting - this! + Thanks to Alan Stweart <Axs2@osi.com> for reporting + this! Mon Aug 26 00:34:05 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * Updated all of ACE such that the ACE_GUARD* macros now all take - the name of the ACE_*Guard* that they will use as the scoped - locking object. This is important for several reasons: - - 1. It make it more clear what is going on in the code, rather - than hiding behind the macros! + * Updated all of ACE such that the ACE_GUARD* macros now all take + the name of the ACE_*Guard* that they will use as the scoped + locking object. This is important for several reasons: + + 1. It make it more clear what is going on in the code, rather + than hiding behind the macros! - 2. It is now possible to have multiple ACE_GUARD* macros in the - same scope by calling each scoped locking object a different - name. This is used in the Local_Tokens.cpp file. + 2. It is now possible to have multiple ACE_GUARD* macros in the + same scope by calling each scoped locking object a different + name. This is used in the Local_Tokens.cpp file. - * ace/Synch.h (ACE_Null_Mutex_Guard): Added the locked() method so - that this signature will conform to the one expected of - ACE_Guard. + * ace/Synch.h (ACE_Null_Mutex_Guard): Added the locked() method so + that this signature will conform to the one expected of + ACE_Guard. - * tests: Added a new file Test_Future.cpp, which tests the new ACE - Futures mechanism using Active Obejcts. Thanks to Andres Kruse - <kruse@cern.ch> for contributing this test. + * tests: Added a new file Test_Future.cpp, which tests the new ACE + Futures mechanism using Active Obejcts. Thanks to Andres Kruse + <kruse@cern.ch> for contributing this test. - * ace: Added three new files: Future.{h,cpp}, - Method_Object.{h,cpp}, and Activation_Queue.{h,cpp}, which - implement Polymorphic Futures. Thanks to Andres Kruse - <kruse@cern.ch> for contributing these. + * ace: Added three new files: Future.{h,cpp}, + Method_Object.{h,cpp}, and Activation_Queue.{h,cpp}, which + implement Polymorphic Futures. Thanks to Andres Kruse + <kruse@cern.ch> for contributing these. - * ace/Stream.cpp (dump): Replaced LM_INFO with LM_DEBUG. + * ace/Stream.cpp (dump): Replaced LM_INFO with LM_DEBUG. Sun Aug 25 21:57:57 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) * ace: Rather than using operator new directly, most of ACE now - uses the ACE_NEW and ACE_NEW_RETURN macros. For instance, - rather than writing: + uses the ACE_NEW and ACE_NEW_RETURN macros. For instance, + rather than writing: - if (token_manager_ == 0) - token_manager_ = new ACE_Token_Manager; + if (token_manager_ == 0) + token_manager_ = new ACE_Token_Manager; - we should write: + we should write: - if (token_manager_ == 0) - ACE_NEW_RETURN (token_manager_, ACE_Token_Manager, 0); + if (token_manager_ == 0) + ACE_NEW_RETURN (token_manager_, ACE_Token_Manager, 0); The reason for this is that it makes it much easier to ensure - that all dynamic memory allocation errors are treated uniformly. - I've updated the entire ACE library code tonight to make this - usage consistent whenever possible. + that all dynamic memory allocation errors are treated uniformly. + I've updated the entire ACE library code tonight to make this + usage consistent whenever possible. Sat Aug 24 11:51:38 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * ace/Time_Value.h: Simplified various things so that the nasty - macros necessary to build DLLs on Win32 will be simplier. In - addition, I will only #include <sys/time.h> for those platforms - that don't already do this in <time.h> (i.e., if - ACE_NEEDS_SYSTIME_H is defined in config.h). Please let me know - if you run across any platforms like this. + * ace/Time_Value.h: Simplified various things so that the nasty + macros necessary to build DLLs on Win32 will be simplier. In + addition, I will only #include <sys/time.h> for those platforms + that don't already do this in <time.h> (i.e., if + ACE_NEEDS_SYSTIME_H is defined in config.h). Please let me know + if you run across any platforms like this. - * ace/TLI_{Connector,Acceptor}: Added two additional parameters at - the end of the connect() and accept() methods, respectively, so - that the ACE TLI wrappers can be used with X.25. Thanks to Ajit - Sagar <asagar@spdmail.spd.dsccc.com> for suggesting this fix. + * ace/TLI_{Connector,Acceptor}: Added two additional parameters at + the end of the connect() and accept() methods, respectively, so + that the ACE TLI wrappers can be used with X.25. Thanks to Ajit + Sagar <asagar@spdmail.spd.dsccc.com> for suggesting this fix. - * ace: Integrated Eric Newton's XtReactor into the Makefile. If - you want to include this into ACE, make sure to define - ACE_HAS_XT in the config.h file. + * ace: Integrated Eric Newton's XtReactor into the Makefile. If + you want to include this into ACE, make sure to define + ACE_HAS_XT in the config.h file. - * examples/Misc: Integrated the XtReactor tests. + * examples/Misc: Integrated the XtReactor tests. - * ace/OS.i (getservbyname,gethostby*): Fixed a suble omission -- - any calls to socket function should be wrapped by the - ACE_SOCKCALL_RETURN macro in order to make the errnos work - correctly on Win32. + * ace/OS.i (getservbyname,gethostby*): Fixed a suble omission -- + any calls to socket function should be wrapped by the + ACE_SOCKCALL_RETURN macro in order to make the errnos work + correctly on Win32. - * ace/OS: Added support for the getprotoby{name,number} wrappers. - Thanks to Joe DeAngelis <bytor@faxint.com> for suggesting this. + * ace/OS: Added support for the getprotoby{name,number} wrappers. + Thanks to Joe DeAngelis <bytor@faxint.com> for suggesting this. - * ace/Connector.cpp: Fixed a subtle bug in the ACE_Connector. - The problem centered around the following line in - cleanup_AST(): + * ace/Connector.cpp: Fixed a subtle bug in the ACE_Connector. + The problem centered around the following line in + cleanup_AST(): - if (this->handler_map_.find (handle, ast) == -1) + if (this->handler_map_.find (handle, ast) == -1) - This lookup always failed because the key, the handle of the - service handler, was always -1. The service handler's handle is - not set until a successful connection is made and connector - transfers ownership of the handle to the service handler. The - fix for this is to store the ACE_HANDLE in the ACE_Svc_Tuple - *separately* from the ACE_Svc_Handler. Thanks to Bill Gerecke - <gerecke@rayva.org> for being so persistent in tracking this - down. + This lookup always failed because the key, the handle of the + service handler, was always -1. The service handler's handle is + not set until a successful connection is made and connector + transfers ownership of the handle to the service handler. The + fix for this is to store the ACE_HANDLE in the ACE_Svc_Tuple + *separately* from the ACE_Svc_Handler. Thanks to Bill Gerecke + <gerecke@rayva.org> for being so persistent in tracking this + down. - * ace/ARGV.cpp (ACE_ARGV): Added a nifty new constructor that - converts argv-style vectors of strings into a single string - (this is the reverse of what the original constructor does!). + * ace/ARGV.cpp (ACE_ARGV): Added a nifty new constructor that + converts argv-style vectors of strings into a single string + (this is the reverse of what the original constructor does!). - * ace/ACE: Added a new utility method called strecpy(), which - copies <t> to <s>, returning a pointer to the end of the copied - region (rather than the beginning, a la <strcpy>. + * ace/ACE: Added a new utility method called strecpy(), which + copies <t> to <s>, returning a pointer to the end of the copied + region (rather than the beginning, a la <strcpy>. Thu Aug 22 15:43:58 1996 <harrison@samba.cs.wustl.edu> - * ace/OS.h: Changed the interface of ACE_OS::fork_exec (char - *const argv[]). (There is no longer a separate const char *path - parameter. Now, argv[0] must be the full path name to the - executable. + * ace/OS.h: Changed the interface of ACE_OS::fork_exec (char + *const argv[]). (There is no longer a separate const char *path + parameter. Now, argv[0] must be the full path name to the + executable. - * tests/Time_Service_Test.cpp: Updated the Time Service - one-button test to use the new ACE_OS::fork_exec. I didn't - event break it. + * tests/Time_Service_Test.cpp: Updated the Time Service + one-button test to use the new ACE_OS::fork_exec. I didn't + event break it. - * tests/Tokens_Test.cpp: Updated the Tokens one-button test to - use the new ACE_OS::fork_exec. It actually works now. + * tests/Tokens_Test.cpp: Updated the Tokens one-button test to + use the new ACE_OS::fork_exec. It actually works now. - * tests/test_config.h: Added some more #defines to help simplify - path differences between NT and UNIX. Perhaps these should be - moved into OS.h? + * tests/test_config.h: Added some more #defines to help simplify + path differences between NT and UNIX. Perhaps these should be + moved into OS.h? Thu Aug 22 13:46:58 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * ace/Thread_Manager.cpp (ACE_Thread_Control): The status_ member - in ACE_Thread_Control() was not being initialized! This caused - Purify to complain loudly about invalid memory accesses. I have - added an initialiser to ACE_Thread_Control::ACE_Thread_Control - to set status_ to 0. Thanks to Ross Dargahi <rossd@krinfo.com> - for reporting this. - - * ChangeLog: The ACE configuration files "config-irix*.h" defined - 'ACE_HAS_SIGINFO' to indicate that IRIX supports SVR4 extended - signals. This should be 'ACE_HAS_SIGINFO_T' instead. Thanks to - Craig Johnston <johnston@tortilla.ds.boeing.com> for reporting - this. + * ace/Thread_Manager.cpp (ACE_Thread_Control): The status_ member + in ACE_Thread_Control() was not being initialized! This caused + Purify to complain loudly about invalid memory accesses. I have + added an initialiser to ACE_Thread_Control::ACE_Thread_Control + to set status_ to 0. Thanks to Ross Dargahi <rossd@krinfo.com> + for reporting this. + + * ChangeLog: The ACE configuration files "config-irix*.h" defined + 'ACE_HAS_SIGINFO' to indicate that IRIX supports SVR4 extended + signals. This should be 'ACE_HAS_SIGINFO_T' instead. Thanks to + Craig Johnston <johnston@tortilla.ds.boeing.com> for reporting + this. Wed Aug 21 21:09:01 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - * ace/Time_Value.h: Added an extra condition, #if defined - (ACE_BUILD_DLL) so that ACE_Svc_Export evaluates to - something. Previously, it was evaluating to nothing in some - files such as Naming_Context.cpp where we were doing #define - ACE_BUILD_DLL and not #define ACE_BUILD_SVC_DLL. + * ace/Time_Value.h: Added an extra condition, #if defined + (ACE_BUILD_DLL) so that ACE_Svc_Export evaluates to + something. Previously, it was evaluating to nothing in some + files such as Naming_Context.cpp where we were doing #define + ACE_BUILD_DLL and not #define ACE_BUILD_SVC_DLL. Wed Aug 21 00:33:17 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * ace/ACE.cpp (format_hexdump): Fixed a minor bug in - format_hexdump(). If the buffer to dump is a multiple of 16 it - prints an extra blank line. ALso fixed the code to use spaces - rather than tabs and put an extra space between the first 8 HEX - bytes and the second. Thanks to Luca Priorelli - <lucapri@mbox.vol.it> for this code. - - * ace/Log_Msg.h (ACE_HEX_DUMP): Added a new logging macro: - - #define ACE_HEX_DUMP(X) \ - do { int __ace_error = errno; \ - ACE_Log_Msg *ace___ = ACE_Log_Msg::instance (); \ - ace___->set (__FILE__, __LINE__, 0, errno, ace___->restart (), - ace___->msg_ostream ()); \ ace___->log_hexdump X; \ - } while (0) - - which makes it possible to dump info in HEX. Thanks to Luca - Priorelli <lucapri@mbox.vol.it> for suggesting this. + * ace/ACE.cpp (format_hexdump): Fixed a minor bug in + format_hexdump(). If the buffer to dump is a multiple of 16 it + prints an extra blank line. ALso fixed the code to use spaces + rather than tabs and put an extra space between the first 8 HEX + bytes and the second. Thanks to Luca Priorelli + <lucapri@mbox.vol.it> for this code. + + * ace/Log_Msg.h (ACE_HEX_DUMP): Added a new logging macro: + + #define ACE_HEX_DUMP(X) \ + do { int __ace_error = errno; \ + ACE_Log_Msg *ace___ = ACE_Log_Msg::instance (); \ + ace___->set (__FILE__, __LINE__, 0, errno, ace___->restart (), + ace___->msg_ostream ()); \ ace___->log_hexdump X; \ + } while (0) + + which makes it possible to dump info in HEX. Thanks to Luca + Priorelli <lucapri@mbox.vol.it> for suggesting this. * ace/config-win32-msvc4.0.h: Added - - #define _WINSOCKAPI_ + + #define _WINSOCKAPI_ - To avoid multiple inclusions. Thanks to Luca Priorelli - <lucapri@mbox.vol.it> for suggesting this. + To avoid multiple inclusions. Thanks to Luca Priorelli + <lucapri@mbox.vol.it> for suggesting this. * ace/OS.h: enclosed the #define of WIN32_LEAN_AND_MEAN macro - definition between #ifndef ... #endif to avoid compiler - warnings. Thanks to Luca Priorelli <lucapri@mbox.vol.it> for - suggesting this. + definition between #ifndef ... #endif to avoid compiler + warnings. Thanks to Luca Priorelli <lucapri@mbox.vol.it> for + suggesting this. - * ace/SOCK.cpp (win32_fini): Fixed a potential problem in ACE - where any code of the form: + * ace/SOCK.cpp (win32_fini): Fixed a potential problem in ACE + where any code of the form: - ACE_DEBUG ((LM_DEBUG, "%d", GetLastError())); + ACE_DEBUG ((LM_DEBUG, "%d", GetLastError())); - will reset errno a couple of times before GetLastError() gets - called. So the result is always 0. The fix is to say: + will reset errno a couple of times before GetLastError() gets + called. So the result is always 0. The fix is to say: - int ret = GetLastError(); - ACE_DEBUG ((LM_DEBUG, "%d", ret)); + int ret = GetLastError(); + ACE_DEBUG ((LM_DEBUG, "%d", ret)); - Thanks to Luca Priorelli <lucapri@mbox.vol.it> for noticing + Thanks to Luca Priorelli <lucapri@mbox.vol.it> for noticing this. - * ace/Connector.cpp (create_AST): Was missing a return 0; if we - successfully register a cancellation id. Thanks to William - L. Gerecke <gerecke@rayva.org> for reporting this bug. + * ace/Connector.cpp (create_AST): Was missing a return 0; if we + successfully register a cancellation id. Thanks to William + L. Gerecke <gerecke@rayva.org> for reporting this bug. - * ace/Module.h: Added a non-existent friend class to get ACE - to stop complaining - - private: - friend class ACE_Shutup_GPlusPlus; // Turn off g++ warning - ~ACE_Module (void); - // *Must* use dynamic allocation. + * ace/Module.h: Added a non-existent friend class to get ACE + to stop complaining + + private: + friend class ACE_Shutup_GPlusPlus; // Turn off g++ warning + ~ACE_Module (void); + // *Must* use dynamic allocation. - Thanks to Eric Newton for the suggestion. + Thanks to Eric Newton for the suggestion. - * ace/Svc_Conf.y (ace_create_service_type): Removed some stray - calls to ACE_ERROR that were left over from earlier - configurations of ACE. Thanks to Gonzalo Diethelm - <gonzo@ing.puc.cl> for reporting this. + * ace/Svc_Conf.y (ace_create_service_type): Removed some stray + calls to ACE_ERROR that were left over from earlier + configurations of ACE. Thanks to Gonzalo Diethelm + <gonzo@ing.puc.cl> for reporting this. - * ace/Log_Msg.cpp (instance): Fixed the #ifdefs so that - ACE_MT_SAFE implies ACE_HAS_THREAD_SPECIFIC_STORAGE. Thanks to - Gonzalo Diethelm <gonzo@ing.puc.cl> for reporting the need for - this. + * ace/Log_Msg.cpp (instance): Fixed the #ifdefs so that + ACE_MT_SAFE implies ACE_HAS_THREAD_SPECIFIC_STORAGE. Thanks to + Gonzalo Diethelm <gonzo@ing.puc.cl> for reporting the need for + this. Tue Aug 20 13:09:55 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) * INET_Addr.cpp, line 84: Irix's C++ is not able to determine - whether to use the set(u_short,ACE_UINT32,int) or the - set(u_short,const char [],int), since on Irix, INADDR_ANY is 0. - I cast the value so that the call would read set(port, - ACE_UINT32(INADDR_ANY)) and everything went fine. Thanks to - Gonzalo Diethelm <gonzo@ing.puc.cl> for reporting this. + whether to use the set(u_short,ACE_UINT32,int) or the + set(u_short,const char [],int), since on Irix, INADDR_ANY is 0. + I cast the value so that the call would read set(port, + ACE_UINT32(INADDR_ANY)) and everything went fine. Thanks to + Gonzalo Diethelm <gonzo@ing.puc.cl> for reporting this. - * ace/Synch[_T]: Added a new wait() method that takes a first - parameter which is the mutex used to serialize access to the - condition. This is useful if you want to store the - ACE_Condition object in shared memory (in which case, the use of - a reference to mutex_t doesn't work!). Thanks to Mark Patton - <mark_patton@ftw.paging.mot.com> for recommending this approach. + * ace/Synch[_T]: Added a new wait() method that takes a first + parameter which is the mutex used to serialize access to the + condition. This is useful if you want to store the + ACE_Condition object in shared memory (in which case, the use of + a reference to mutex_t doesn't work!). Thanks to Mark Patton + <mark_patton@ftw.paging.mot.com> for recommending this approach. - * ace/Task.h: Added a forward template declaration for - ACE_Task_Exit so that it will compile on HP/UX. Thanks to Tim - Ottinger <tottinge@csci.csc.com> for pointing this out. + * ace/Task.h: Added a forward template declaration for + ACE_Task_Exit so that it will compile on HP/UX. Thanks to Tim + Ottinger <tottinge@csci.csc.com> for pointing this out. - * ace: changed line 19 of ace/Str_Buf.h from + * ace: changed line 19 of ace/Str_Buf.h from - #include "OS.h" + #include "OS.h" - to: + to: - #include "ace/OS.h" + #include "ace/OS.h" - Fixed similar problems with OS.h at line 1154 and Dump.h at line + Fixed similar problems with OS.h at line 1154 and Dump.h at line 150. Thanks to Alan Stewart <axs2@osi.com> for reporting this. Tue Aug 20 20:18:49 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - * tests/TSS_Test.cpp (main): Fixed a small typo. I was referencing - the wrong variable but didn't catch it since it was in the #if - !defined (ACE_HAS_THREADS) section. Fixed the typo and also - renamed the variable called big_count to iterations. Thanks to - Tim Ottinger <tottinge@csci.csc.com> for pointing this out. + * tests/TSS_Test.cpp (main): Fixed a small typo. I was referencing + the wrong variable but didn't catch it since it was in the #if + !defined (ACE_HAS_THREADS) section. Fixed the typo and also + renamed the variable called big_count to iterations. Thanks to + Tim Ottinger <tottinge@csci.csc.com> for pointing this out. Mon Aug 19 19:25:50 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * {examples,apps,tests}: Removed the use of zerop from these - files, as well... - - * ace/{Acceptor.cpp,Name_Proxy.cpp,Token.i}: Removed the use of - zerop from these files, as well... - - * ace/Connector.cpp (connect_svc_handler): It looks like our good - friend ACE_Time_Value::zerop isn't getting initialized correctly - on Win32. Therefore, I've replaced it with a direct use of - &ACE_Time_Value::zero. - - * ace/Time_Value.cpp: Removed the static pointer variable "zerop" - since there was no guarantee it was getting intialized before it - is used! Instead of using ACE_Time_Value::zerop, use - &ACE_Time_Value::zero. Thanks to William L. Gerecke - <gerecke@rayva.org> for reporting this problem. - - * ace/OS: Added zillions of changes to make ACE compile with OSF/1 - and its DCE threads implementation. Thanks to Martin Schoeckle - <schoeckle@ike.uni-stuttgart.de> for sending these. - - * ace/config-osf1-3.2.h: Updated this file with fixes for OSF/1 by - Martin Schoeckle <schoeckle@ike.uni-stuttgart.de>. - - * ace/ACE.cpp (handle_timed_complete): Added new logic to - ACE::handle_timed_complete() so that it sets errno to - ECONNREFUSED if the connection is refused by the server. When - you issue an asynchronous connect request, to complete it, you - will use complete() with a timeout. However, complete can fail, - and then it will deallocate any resource, (i.e. close down the - socket handle), also for timeout expiration. So, a user - interested in retrying to complete a connection while the - timeout expires will not use complete(); but rather will use - handle_timed_complete(). In fact, using handle_timed_complete() - the user could detect the reason of a failure (by examining - errno) and decide how to proceed. In the old ACE version the - problem was that, if handle_timed_complete() failed because of - the recv() returning 0, errno remained unchanged and so its - value could be quite misleading with respect to the reasons of - the failure. Thanks to Antonio Tortorici - <antonio@rh0011.roma.tlsoft.it> for this fix and the explanation - above. - - * ace/OS.h: Added support for Borland 5.0's uint64. Thanks to - Hani Yakan <hani@i-online.com> for suggesting the strategy to - accomplish this. + * {examples,apps,tests}: Removed the use of zerop from these + files, as well... + + * ace/{Acceptor.cpp,Name_Proxy.cpp,Token.i}: Removed the use of + zerop from these files, as well... + + * ace/Connector.cpp (connect_svc_handler): It looks like our good + friend ACE_Time_Value::zerop isn't getting initialized correctly + on Win32. Therefore, I've replaced it with a direct use of + &ACE_Time_Value::zero. + + * ace/Time_Value.cpp: Removed the static pointer variable "zerop" + since there was no guarantee it was getting intialized before it + is used! Instead of using ACE_Time_Value::zerop, use + &ACE_Time_Value::zero. Thanks to William L. Gerecke + <gerecke@rayva.org> for reporting this problem. + + * ace/OS: Added zillions of changes to make ACE compile with OSF/1 + and its DCE threads implementation. Thanks to Martin Schoeckle + <schoeckle@ike.uni-stuttgart.de> for sending these. + + * ace/config-osf1-3.2.h: Updated this file with fixes for OSF/1 by + Martin Schoeckle <schoeckle@ike.uni-stuttgart.de>. + + * ace/ACE.cpp (handle_timed_complete): Added new logic to + ACE::handle_timed_complete() so that it sets errno to + ECONNREFUSED if the connection is refused by the server. When + you issue an asynchronous connect request, to complete it, you + will use complete() with a timeout. However, complete can fail, + and then it will deallocate any resource, (i.e. close down the + socket handle), also for timeout expiration. So, a user + interested in retrying to complete a connection while the + timeout expires will not use complete(); but rather will use + handle_timed_complete(). In fact, using handle_timed_complete() + the user could detect the reason of a failure (by examining + errno) and decide how to proceed. In the old ACE version the + problem was that, if handle_timed_complete() failed because of + the recv() returning 0, errno remained unchanged and so its + value could be quite misleading with respect to the reasons of + the failure. Thanks to Antonio Tortorici + <antonio@rh0011.roma.tlsoft.it> for this fix and the explanation + above. + + * ace/OS.h: Added support for Borland 5.0's uint64. Thanks to + Hani Yakan <hani@i-online.com> for suggesting the strategy to + accomplish this. Mon Aug 19 15:52:07 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) * tests: Added new macros to the test_config.h file in order to - simplify the testing. + simplify the testing. Mon Aug 19 00:21:22 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * Re-released version 4.0.28 for testing (will change the version - number after Tim gives me the new Token stuff). + * Re-released version 4.0.28 for testing (will change the version + number after Tim gives me the new Token stuff). - * {netsvcs/lib,tests/test_config.h}: Removed spurious dependencies - on fstream.h and iostream.h. Thanks to Alan Stewart - <axs2@osi.com> for reporting this. + * {netsvcs/lib,tests/test_config.h}: Removed spurious dependencies + on fstream.h and iostream.h. Thanks to Alan Stewart + <axs2@osi.com> for reporting this. Sat Aug 17 17:25:49 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * ace/Reactor: Removed the use of "inline" in the Reactor.cpp - files because this was causing problems with some - compilers/linkers. Thanks to Gonzalo Diethelm - <gonzo@ing.puc.cl> for recommending this. + * ace/Reactor: Removed the use of "inline" in the Reactor.cpp + files because this was causing problems with some + compilers/linkers. Thanks to Gonzalo Diethelm + <gonzo@ing.puc.cl> for recommending this. - * examples/Misc/test_XtReactor1.cpp: Added a new test of the - XtReactor, courtesy of Eric Newton <ecn@clark.net>. + * examples/Misc/test_XtReactor1.cpp: Added a new test of the + XtReactor, courtesy of Eric Newton <ecn@clark.net>. - * ace/config-hpux-10.x.h: According to Eugene K. Plaude - <jec@r-style.msk.su>, HP-UX 10.01 supports user-level threads - based on the pthreads interface specified by POSIX in 1003.4a, - Draft 4 (which is basically DCE threads). Therefore, I've - enabled the ACE_HAS_DCETHREADS symbol in the config-hpux-10.x.h - configuration file. If this isn't correct, please let me know. + * ace/config-hpux-10.x.h: According to Eugene K. Plaude + <jec@r-style.msk.su>, HP-UX 10.01 supports user-level threads + based on the pthreads interface specified by POSIX in 1003.4a, + Draft 4 (which is basically DCE threads). Therefore, I've + enabled the ACE_HAS_DCETHREADS symbol in the config-hpux-10.x.h + configuration file. If this isn't correct, please let me know. Sat Aug 17 02:18:39 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu) - * examples/Tokens/manual/README: Added a new Token example - application. The manual test gives users a text-based - interactive interface to local or remote tokens. This is - extremely useful for manually testing the token server and - setting up deadlock scenarios. See the README file for more - details. + * examples/Tokens/manual/README: Added a new Token example + application. The manual test gives users a text-based + interactive interface to local or remote tokens. This is + extremely useful for manually testing the token server and + setting up deadlock scenarios. See the README file for more + details. - * examples/Tokens/deadlock/README: Updated the deadlock example - application to test the new deadlock detection algorithm for - readers/writer locks. I also added the use of Token Invariants - to ensure correctness of the mutexes and readers/writer locks. - See the README file for more details. + * examples/Tokens/deadlock/README: Updated the deadlock example + application to test the new deadlock detection algorithm for + readers/writer locks. I also added the use of Token Invariants + to ensure correctness of the mutexes and readers/writer locks. + See the README file for more details. Fri Aug 16 22:16:05 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu) - * ace/Token_Manager.cpp: Updated all Token code to use - ACE_OS::last_error instead of errno. + * ace/Token_Manager.cpp: Updated all Token code to use + ACE_OS::last_error instead of errno. Fri Aug 16 00:03:24 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * After a long hiatus, released version 4.0.28 for testing. + * After a long hiatus, released version 4.0.28 for testing. Thu Aug 15 21:04:35 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * man: Updated all the ACE manual pages and html pages to reflect - recent changes. + * man: Updated all the ACE manual pages and html pages to reflect + recent changes. - * netsvcs/lib/Server_Logging_Handler.cpp: Fixed an omitted - "ACE_BUILD_SVC_DLL" that was causing linker errors on NT. - Thanks to Luca Priorelli <lucapri@mbox.vol.it> for reporting - this. + * netsvcs/lib/Server_Logging_Handler.cpp: Fixed an omitted + "ACE_BUILD_SVC_DLL" that was causing linker errors on NT. + Thanks to Luca Priorelli <lucapri@mbox.vol.it> for reporting + this. - * examples/Log_Msg/test_log_msg.cpp: Added a test for the new - log_hexdump() function. + * examples/Log_Msg/test_log_msg.cpp: Added a test for the new + log_hexdump() function. - * ace/Log_Msg.cpp (log_hexdump): Integrated the log_hexdump() code - into the ACE Log_Msg abstraction. Thanks to Luca Priorelli - <lucapri@mbox.vol.it> for fixing this and for Todd Montgomery - for originally supplying the code. + * ace/Log_Msg.cpp (log_hexdump): Integrated the log_hexdump() code + into the ACE Log_Msg abstraction. Thanks to Luca Priorelli + <lucapri@mbox.vol.it> for fixing this and for Todd Montgomery + for originally supplying the code. - * ace/Signal.cpp (ACE_Sig_Handlers): Moved the #endif /* HPUX */ - down to the end of the file so that it works correctly on HPUX. - Thanks to Eric C. Newton <ecn@clark.net> for report this bug. - + * ace/Signal.cpp (ACE_Sig_Handlers): Moved the #endif /* HPUX */ + down to the end of the file so that it works correctly on HPUX. + Thanks to Eric C. Newton <ecn@clark.net> for report this bug. + - * ace/OS.i: Updated the behavior of thr_join() so that it will do - a ::CloseHandle after getting the exit status. Thanks to the - ever vigilant James Mansion - (mansionj@lonnds.ml.com) for noticing this. + * ace/OS.i: Updated the behavior of thr_join() so that it will do + a ::CloseHandle after getting the exit status. Thanks to the + ever vigilant James Mansion + (mansionj@lonnds.ml.com) for noticing this. - * examples: Finally added Tim and Prashant's examles/OS directory, - which contains a test that illustrates a "portable" means to - spawn processes on NT and UNIX. + * examples: Finally added Tim and Prashant's examles/OS directory, + which contains a test that illustrates a "portable" means to + spawn processes on NT and UNIX. - * ace/Malloc_T.cpp (next): Added an overloaded next() method that - returns the name that is bound to the pointer in the - Malloc_Iterator. This is useful in order to differentiate - entries in the pool based on their name. Thanks to Kim Gillies - <gillies@noao.edu> for suggesting this. + * ace/Malloc_T.cpp (next): Added an overloaded next() method that + returns the name that is bound to the pointer in the + Malloc_Iterator. This is useful in order to differentiate + entries in the pool based on their name. Thanks to Kim Gillies + <gillies@noao.edu> for suggesting this. - * ace: Changed all uses of thread_t, thread_key_t, mutex_t, - rwlock_t, sema_t, cond_t, etc. to ACE_* in order to avoid - polluting the name space. Also switched from using macros to - using typedefs whereever possible. Thanks to Gonzalo Diethelm - <gonzo@ing.puc.cl> for recommending this. + * ace: Changed all uses of thread_t, thread_key_t, mutex_t, + rwlock_t, sema_t, cond_t, etc. to ACE_* in order to avoid + polluting the name space. Also switched from using macros to + using typedefs whereever possible. Thanks to Gonzalo Diethelm + <gonzo@ing.puc.cl> for recommending this. - * ace/System_Time.cpp: Added template specializations for - templates used in the ACE_System_Time class. This should solve - some nasty undefined templates problems with GCC... Thanks to - Joseph DeAngelis <bytor@faxint.com> for pointing out the - problem. + * ace/System_Time.cpp: Added template specializations for + templates used in the ACE_System_Time class. This should solve + some nasty undefined templates problems with GCC... Thanks to + Joseph DeAngelis <bytor@faxint.com> for pointing out the + problem. - * ace/Name_Space.cpp: Fixed the file Name_Space.cpp as follows: + * ace/Name_Space.cpp: Fixed the file Name_Space.cpp as follows: - // Name_Space.cpp - #define ACE_BUILD_DLL - //#include "Name_Space.h" - #include "ace/Name_Space.h" + // Name_Space.cpp + #define ACE_BUILD_DLL + //#include "Name_Space.h" + #include "ace/Name_Space.h" - Thanks to Eugene K. Plaude <jec@r-style.msk.su> for fixing this! + Thanks to Eugene K. Plaude <jec@r-style.msk.su> for fixing this! - * ace/config-hpux-10.x.h: Added support for TLI since according to - Eugene K. Plaude <jec@r-style.msk.su> this should work. If not, - please let me know. + * ace/config-hpux-10.x.h: Added support for TLI since according to + Eugene K. Plaude <jec@r-style.msk.su> this should work. If not, + please let me know. Wed Aug 14 21:29:46 1996 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * examples/Reactor/Logger: rearranged the Logger directory so it - would be more clear what the client and server programs did and - how to run them. + * examples/Reactor/Logger: rearranged the Logger directory so it + would be more clear what the client and server programs did and + how to run them. - * examples: Merged the contents of the SVR4 examples directory - into the IPC_SAP/SOCK_SAP directory so that we can remove the - SVR4 directory altogether (it wasn't contributing much...). + * examples: Merged the contents of the SVR4 examples directory + into the IPC_SAP/SOCK_SAP directory so that we can remove the + SVR4 directory altogether (it wasn't contributing much...). - * examples: Removed the vestigal Win32 tests since ACE now runs on - Win32 and we don't need a separate test directory. + * examples: Removed the vestigal Win32 tests since ACE now runs on + Win32 and we don't need a separate test directory. - * netsvcs/client: Renamed the file remaining file in this - directory to logging_app.cpp since I moved the other file to the - examples/Reactor/Logger directory. + * netsvcs/client: Renamed the file remaining file in this + directory to logging_app.cpp since I moved the other file to the + examples/Reactor/Logger directory. - * ace/Reactor.cpp (check_handles): If eh->get_handle() returns -1 - the select() code will index the [-1] element of an array. To - fix this, I've added a check of the value returned from - eh->get_handle(). Thanks to Eric C. Newton <ecn@clark.net> for - reporting this. + * ace/Reactor.cpp (check_handles): If eh->get_handle() returns -1 + the select() code will index the [-1] element of an array. To + fix this, I've added a check of the value returned from + eh->get_handle(). Thanks to Eric C. Newton <ecn@clark.net> for + reporting this. - * ace/OS.i (sema_wait): Fixed a subtle bug in the Pthreads - wrappers that surfaced on the SGI IRIX 6.2 port. There was some - code that looked like this: + * ace/OS.i (sema_wait): Fixed a subtle bug in the Pthreads + wrappers that surfaced on the SGI IRIX 6.2 port. There was some + code that looked like this: - pthread_cleanup_push(); - int result = 0; - ... - pthread_cleanup_pop(); - return result; + pthread_cleanup_push(); + int result = 0; + ... + pthread_cleanup_pop(); + return result; However, on Irix 6.2, the push introduces a new scope that is - closed by the pop, so result goes out of scope before returning. - Thanks to Gonzalo Diethelm <gonzo@ing.puc.cl> for pointing this - out. + closed by the pop, so result goes out of scope before returning. + Thanks to Gonzalo Diethelm <gonzo@ing.puc.cl> for pointing this + out. - * ace/OS.h: Changed the definition of pthread_mutex_t and - pthread_cond_t to mutex_t and cond_t to be consistent with other - usage in ACE. Thanks to Gonzalo Diethelm <gonzo@ing.puc.cl> for - pointing this out. + * ace/OS.h: Changed the definition of pthread_mutex_t and + pthread_cond_t to mutex_t and cond_t to be consistent with other + usage in ACE. Thanks to Gonzalo Diethelm <gonzo@ing.puc.cl> for + pointing this out. Wed Aug 14 01:25:47 1996 <harrison@samba.cs.wustl.edu> - * ace/SPIPE_Acceptor.cpp: Added the PIPE_TYPE_MESSAGE | - PIPE_READMODE_MESSAGE flags to CreateNamedPipe pipe options so - that data is received in messages rather than as a stream. This - is consistent with the behavior of the SPIPE_Connector. When we - have time, we need to extend the interface so that stream pipes - are also supported, as well. + * ace/SPIPE_Acceptor.cpp: Added the PIPE_TYPE_MESSAGE | + PIPE_READMODE_MESSAGE flags to CreateNamedPipe pipe options so + that data is received in messages rather than as a stream. This + is consistent with the behavior of the SPIPE_Connector. When we + have time, we need to extend the interface so that stream pipes + are also supported, as well. - * SPIPE_Acceptor.cpp: Made the ACE SPIPE in and out buffer sizes - 10 k. The previous size was just 512 bytes. This larger buffer - size helps decrease flow control. + * SPIPE_Acceptor.cpp: Made the ACE SPIPE in and out buffer sizes + 10 k. The previous size was just 512 bytes. This larger buffer + size helps decrease flow control. Tue Aug 13 23:21:46 1996 <harrison@samba.cs.wustl.edu> - * examples/Connection/blocking: Updated the blocking SPIPE example - application to use a pool of threads in the proactor to handle - incoming client messages. The SPIPE-acceptor example - illustrates how named pipes are used on NT. Once the server - establishes a connection to a single client, it spawns a thread - pool to handle incoming requests via the proactor event - loop. That is, a separate thread from the pool is used to - process each message sent by a client. The size of the thread - pool can be specified by command-line arguments. This example - leverages the queueing performed by the NT kernel to trivially - implement a thread pool architecture. See - examples/Connection/blocking/README for more details. - - * Service_Config.h: Added a <thread> parameter (with a default - size of 0) to the proactor accessor method. This allows - applications to specify the size of the thread pool that can - block on Proactor::handle_events. + * examples/Connection/blocking: Updated the blocking SPIPE example + application to use a pool of threads in the proactor to handle + incoming client messages. The SPIPE-acceptor example + illustrates how named pipes are used on NT. Once the server + establishes a connection to a single client, it spawns a thread + pool to handle incoming requests via the proactor event + loop. That is, a separate thread from the pool is used to + process each message sent by a client. The size of the thread + pool can be specified by command-line arguments. This example + leverages the queueing performed by the NT kernel to trivially + implement a thread pool architecture. See + examples/Connection/blocking/README for more details. + + * Service_Config.h: Added a <thread> parameter (with a default + size of 0) to the proactor accessor method. This allows + applications to specify the size of the thread pool that can + block on Proactor::handle_events. Tue Aug 13 02:30:58 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * ace/Task: Added a new public interface called thr_count(). This - returns a count of the number of threads running within a Task. - If the value returned is 0, then the Task is a Passive Object. - If the value returns is > 0 the task is an Active Object, and - the value is a count of the number of threads running within the - object at this snapshot of time. - - * ace/OS: I implemented Karlheinz's suggested optimizations for - the ACE condition variable implementation under Win32. Here's - the deal... The original implementation used an internal_mutex - to ensure that access to the count of the number of waiters was - serialized between the waiter and signaler threads. The new - implementation is designed so that only the waiter threads - access the waiter count. Therefore, we can utilize the - external_mutex to serialize access to this, thus eliminating the - need for the internal_mutex. However, this means that code - *must* be written using the standard condition variable idiom, - i.e., - - int resources () - { - external_mutex.acquire (); - - // ... - - cond.signal (); - external_mutex.release (); - } - - Rather than like this: - - int resources () - { - external_mutex.acquire (); - - // ... - - external_mutex.release (); - cond.signal (); - } - - which is what some thread programming books recommend as an - optimization. However, you should be careful not to use this - form since it can lead to "lost wakeup" bugs caused by the fact - that the implementation of ACE_OS::cond_signal will test if the - waiter count > 0 *without holding any locks*!!! - - Fortunately, ensuring this shouldn't be a problem since most ACE - code uses the following idiom: - - int resources () - { - ACE_Guard mon (external_mutex); - - // ... - - cond.signal (); - // Destructor of mon releases external_mutex. - } - - Clearly, there are subtle tradeoffs between performance and - programmability here... - - * ace/Synch: Updated all of the ACE semaphore wrappers to take the - new "max" value as their final constructor argument. - - * ace/OS: Added a new default argument to the end of the - sema_init() method. This allows us to specify the maximum value - of the semaphore (this is only important on NT). Currently, it - is hard-coded to 0x7fffffff in uses. The new approach makes it - possible to set the max to a different value. Thanks to - Karlheinz for requesting this. - - * ace/Message_Queue.cpp: Added an implementation of the dump(). - Thanks Karlheinz. - - * ace/Synch.cpp: Added an implementation of the dump() method. - Thanks Karlheinz. - - * ace: Updated all usage of ACE_Thread_Mutex_Guard so that it now - uses the ACE_GUARD* macros correctly. Thanks to Chris Eich - <Chris_Eich@optilink.optilink.dsccc.com> for pointing out the - need for this. - - * examples/Threads: Added Karlheinz's new test_barrier2.cpp test - program that makes sure that the ACE_Message_Queues are working - correctly when accessed by multiple threads. - - * netsvcs/lib/Server_Logging_Handler.cpp (handle_logging_record): - Fixed an errant use of ACE_Guard, which wasn't properly checking - of the Guard acquired the lock. Thanks to Chris Eich - <Chris_Eich@optilink.optilink.dsccc.com> for pointing this out. - - * ace/OS.h (ACE_GUARD): Added default "ace_mon" implementations of - type ACE_Null_Mutex even in cases where there's no threading - defined so that code accessing ace_mon.release() and - ace_mon.acquire() will compile correctly. - - * apps/Gateway/Gateway/Channel.h: Fixed the code so - that we don't try to use TLI if the platform doesn't support it - (instead, we'll use sockets). Thanks to Marius Kjeldahl - <marius@funcom.no> for reporting this problem. - - * examples/ASX/Event_Server/{Supplier,Consumer}: Fixed the code so - that we don't try to use TLI if the platform doesn't support it - (instead, we'll use sockets). Thanks to Marius Kjeldahl - <marius@funcom.no> for reporting this problem. + * ace/Task: Added a new public interface called thr_count(). This + returns a count of the number of threads running within a Task. + If the value returned is 0, then the Task is a Passive Object. + If the value returns is > 0 the task is an Active Object, and + the value is a count of the number of threads running within the + object at this snapshot of time. + + * ace/OS: I implemented Karlheinz's suggested optimizations for + the ACE condition variable implementation under Win32. Here's + the deal... The original implementation used an internal_mutex + to ensure that access to the count of the number of waiters was + serialized between the waiter and signaler threads. The new + implementation is designed so that only the waiter threads + access the waiter count. Therefore, we can utilize the + external_mutex to serialize access to this, thus eliminating the + need for the internal_mutex. However, this means that code + *must* be written using the standard condition variable idiom, + i.e., + + int resources () + { + external_mutex.acquire (); + + // ... + + cond.signal (); + external_mutex.release (); + } + + Rather than like this: + + int resources () + { + external_mutex.acquire (); + + // ... + + external_mutex.release (); + cond.signal (); + } + + which is what some thread programming books recommend as an + optimization. However, you should be careful not to use this + form since it can lead to "lost wakeup" bugs caused by the fact + that the implementation of ACE_OS::cond_signal will test if the + waiter count > 0 *without holding any locks*!!! + + Fortunately, ensuring this shouldn't be a problem since most ACE + code uses the following idiom: + + int resources () + { + ACE_Guard mon (external_mutex); + + // ... + + cond.signal (); + // Destructor of mon releases external_mutex. + } + + Clearly, there are subtle tradeoffs between performance and + programmability here... + + * ace/Synch: Updated all of the ACE semaphore wrappers to take the + new "max" value as their final constructor argument. + + * ace/OS: Added a new default argument to the end of the + sema_init() method. This allows us to specify the maximum value + of the semaphore (this is only important on NT). Currently, it + is hard-coded to 0x7fffffff in uses. The new approach makes it + possible to set the max to a different value. Thanks to + Karlheinz for requesting this. + + * ace/Message_Queue.cpp: Added an implementation of the dump(). + Thanks Karlheinz. + + * ace/Synch.cpp: Added an implementation of the dump() method. + Thanks Karlheinz. + + * ace: Updated all usage of ACE_Thread_Mutex_Guard so that it now + uses the ACE_GUARD* macros correctly. Thanks to Chris Eich + <Chris_Eich@optilink.optilink.dsccc.com> for pointing out the + need for this. + + * examples/Threads: Added Karlheinz's new test_barrier2.cpp test + program that makes sure that the ACE_Message_Queues are working + correctly when accessed by multiple threads. + + * netsvcs/lib/Server_Logging_Handler.cpp (handle_logging_record): + Fixed an errant use of ACE_Guard, which wasn't properly checking + of the Guard acquired the lock. Thanks to Chris Eich + <Chris_Eich@optilink.optilink.dsccc.com> for pointing this out. + + * ace/OS.h (ACE_GUARD): Added default "ace_mon" implementations of + type ACE_Null_Mutex even in cases where there's no threading + defined so that code accessing ace_mon.release() and + ace_mon.acquire() will compile correctly. + + * apps/Gateway/Gateway/Channel.h: Fixed the code so + that we don't try to use TLI if the platform doesn't support it + (instead, we'll use sockets). Thanks to Marius Kjeldahl + <marius@funcom.no> for reporting this problem. + + * examples/ASX/Event_Server/{Supplier,Consumer}: Fixed the code so + that we don't try to use TLI if the platform doesn't support it + (instead, we'll use sockets). Thanks to Marius Kjeldahl + <marius@funcom.no> for reporting this problem. Mon Aug 12 14:50:47 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * examples/Misc: Added Eric Newton's <ecn@clark.net> test case for - his XtReactor integration. - - * ace: Included Eric Newton's <ecn@clark.net> code that integrates - ACE with the Xt event loop. This still needs a bit of work - (e.g., making it thread-safe and incorporating signal support), so - I haven't added it to the Makefile yet. If someone can take the - time to fix it up, I'll be happy to integrate it into ACE. - - * ace/Message_Queue.cpp (dequeue_head): Fixed the mother of all - bugs in the ACE_Message_Queue implementation... The problem was - that I was trying to be too clever by optimizing the number of - Condition::signal() calls by only calling signal() when the - queue changed state from empty to non-empty (or full to - non-full). It turns out that this optimization works fine for a - single producer/consumer case, but fails when there are multiple - consumers. The fix was just to call signal() every time. This - should be ok because the underlying Condition variable - implementation will perform the optimization in the correct - fashion. Thanks to the omniscient Karlheinz for detecting this - problem and reporting it. + * examples/Misc: Added Eric Newton's <ecn@clark.net> test case for + his XtReactor integration. + + * ace: Included Eric Newton's <ecn@clark.net> code that integrates + ACE with the Xt event loop. This still needs a bit of work + (e.g., making it thread-safe and incorporating signal support), so + I haven't added it to the Makefile yet. If someone can take the + time to fix it up, I'll be happy to integrate it into ACE. + + * ace/Message_Queue.cpp (dequeue_head): Fixed the mother of all + bugs in the ACE_Message_Queue implementation... The problem was + that I was trying to be too clever by optimizing the number of + Condition::signal() calls by only calling signal() when the + queue changed state from empty to non-empty (or full to + non-full). It turns out that this optimization works fine for a + single producer/consumer case, but fails when there are multiple + consumers. The fix was just to call signal() every time. This + should be ok because the underlying Condition variable + implementation will perform the optimization in the correct + fashion. Thanks to the omniscient Karlheinz for detecting this + problem and reporting it. Sun Aug 11 15:52:07 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - * tests: Made minor changes to test_config.h, SPIPE_Test.cpp, and - UPIPE_SAP_Test.cpp to accomodate the change made to SPIPE_Addr. - SPIPE_Addr now accepts a string of the form [host:]port and then - creates the rendezvous point. Originally, SPIPE_Addr would - assume that the string being passed in was the actual rendezvous - point. + * tests: Made minor changes to test_config.h, SPIPE_Test.cpp, and + UPIPE_SAP_Test.cpp to accomodate the change made to SPIPE_Addr. + SPIPE_Addr now accepts a string of the form [host:]port and then + creates the rendezvous point. Originally, SPIPE_Addr would + assume that the string being passed in was the actual rendezvous + point. Sat Aug 10 18:41:21 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - * netsvcs/lib/Logger.cpp (init): Added a new service to netsvcs - called ACE_Logger which allows us to control the output of all - the services. The ACE_Logger service can be invoked with - different flags (such as STDERR|OSTREAM) which in turn sets - ACE_Log_Msg to direct the output of all the services to the - appropriate stream(s). Note that if a service needs to stay - unaffected from ACE_Logger, it should be invoked before - ACE_Logger gets invoked. Also note that like other services in - netsvcs, ACE_Logger can also be dynamically linked in. + * netsvcs/lib/Logger.cpp (init): Added a new service to netsvcs + called ACE_Logger which allows us to control the output of all + the services. The ACE_Logger service can be invoked with + different flags (such as STDERR|OSTREAM) which in turn sets + ACE_Log_Msg to direct the output of all the services to the + appropriate stream(s). Note that if a service needs to stay + unaffected from ACE_Logger, it should be invoked before + ACE_Logger gets invoked. Also note that like other services in + netsvcs, ACE_Logger can also be dynamically linked in. Sat Aug 10 14:23:07 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * Added Steve Huston's <shuston@ultranet.com> patches to get ACE - to compile on UnixWare 2.01. This mostly involved changes to - the internal types used by the socket wrappers. Thanks Steve! + * Added Steve Huston's <shuston@ultranet.com> patches to get ACE + to compile on UnixWare 2.01. This mostly involved changes to + the internal types used by the socket wrappers. Thanks Steve! Fri Aug 9 01:34:19 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * examples/ASX/UPIPE_Event_Server/Options.cpp (print_results): - Added a typedef to avoid problems if a platform doesn't support - prusage_t. Thanks to Marius Kjeldahl <marius@funcom.com> for - reporting this. + * examples/ASX/UPIPE_Event_Server/Options.cpp (print_results): + Added a typedef to avoid problems if a platform doesn't support + prusage_t. Thanks to Marius Kjeldahl <marius@funcom.com> for + reporting this. - * include/makeinclude/platform_linux_pthread.GNU. The line that - say: + * include/makeinclude/platform_linux_pthread.GNU. The line that + say: - LIBS = -lpthreads -lstdc++ + LIBS = -lpthreads -lstdc++ - was modified to say: + was modified to say: - LIBS += -lpthreads -lstdc++ + LIBS += -lpthreads -lstdc++ - Thanks to Marius Kjeldahl <marius@funcom.com> for reporting + Thanks to Marius Kjeldahl <marius@funcom.com> for reporting this. Fri Aug 9 18:26:16 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - * ace/Local_Name_Space.cpp (reset): Fixed a subtle (yet very - annoying bug). In switching contexts a test program would hang - after a certain number of switches. Having gone through the code - thoroughly and with the aid of Purify, the bug was narrowed down - to an extraneous delete taking place in - ACE_Name_Space::reset(). Essentially, we do not need to delete - ACE_Name_Space_Map::instance() which is actually the - SHARED_MALLOC since it gets deleted in the destructor of - ACE_Local_Name_Space. + * ace/Local_Name_Space.cpp (reset): Fixed a subtle (yet very + annoying bug). In switching contexts a test program would hang + after a certain number of switches. Having gone through the code + thoroughly and with the aid of Purify, the bug was narrowed down + to an extraneous delete taking place in + ACE_Name_Space::reset(). Essentially, we do not need to delete + ACE_Name_Space_Map::instance() which is actually the + SHARED_MALLOC since it gets deleted in the destructor of + ACE_Local_Name_Space. Thu Aug 8 17:55:20 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - * ace/SPIPE_Addr.cpp (set): Implemented - ACE_SPIPE_Addr::string_to_addr(). Modified ACE_SPIPE_Addr::set() - using code provided by Brad Flood to create the rendezvous - point. Note that originally ACE_SPIPE_Addr constructor and set() - would take the actual rendezvous point but now they rely on - being passed a string which is of the format "[host]:port" - (where host is optional). The rendezvous point is then created - by extracting from the string the hostname (if any) and also - using the port number as the unique pipe name. Note that this - approach works on both UNIX and Win32. + * ace/SPIPE_Addr.cpp (set): Implemented + ACE_SPIPE_Addr::string_to_addr(). Modified ACE_SPIPE_Addr::set() + using code provided by Brad Flood to create the rendezvous + point. Note that originally ACE_SPIPE_Addr constructor and set() + would take the actual rendezvous point but now they rely on + being passed a string which is of the format "[host]:port" + (where host is optional). The rendezvous point is then created + by extracting from the string the hostname (if any) and also + using the port number as the unique pipe name. Note that this + approach works on both UNIX and Win32. Mon Aug 5 20:15:59 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - * ace/OS.i (last_error): Fixed a typo. In the set and get methods - last_error(), there should be a check for "if defined - (ACE_WIN32)" and not "if defined (ACE_HAS_WIN32)" + * ace/OS.i (last_error): Fixed a typo. In the set and get methods + last_error(), there should be a check for "if defined + (ACE_WIN32)" and not "if defined (ACE_HAS_WIN32)" Wed Aug 7 00:21:42 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * ace/Log_Msg.h: Replaced all uses of errno *following calls to - ACE_Log_Msg::instance()* so that we first cache errno in a local - variable called __ace_errno. We need to do this because - ACE_Log_Msg::instance() can reset errno == 0. Thanks to - Tim for pointing this out. + * ace/Log_Msg.h: Replaced all uses of errno *following calls to + ACE_Log_Msg::instance()* so that we first cache errno in a local + variable called __ace_errno. We need to do this because + ACE_Log_Msg::instance() can reset errno == 0. Thanks to + Tim for pointing this out. Mon Aug 5 20:15:59 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - * ace/OS.i (last_error): Fixed a typo. In the set and get methods - last_error(), there should be a check for - "if defined (ACE_WIN32)" and not "if defined (ACE_HAS_WIN32)" + * ace/OS.i (last_error): Fixed a typo. In the set and get methods + last_error(), there should be a check for + "if defined (ACE_WIN32)" and not "if defined (ACE_HAS_WIN32)" Sat Aug 3 14:52:32 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - * examples/Win32/win32_client.cpp: Changed ACE_GUARD_RETURN to - ACE_GUARD in the method Errno::flags since the return type is - void. - - * examples/Connection/non_blocking/CPP-connector.cpp: Made some - minor changes to get things compiling on Win32. The call to - handle_close now takes zero as the first argument (which is - never used). Also the arguments to ACE_SERVER_ADDRESS are now - swapped (hostname followed by port number) to be consistent with - the change made to the macro. Thanks to Brad Flood for - suggesting these changes. - - * examples/Connection/non_blocking/CPP-acceptor.cpp: Made minor - changes to some of the methods to make sure all control paths - return a value. Also changed the default port number to - ACE_DEFAULT_SERVER_PORT_STR to match what the connector tries to - connect to. Thanks to Brad Flood <BFLOOD@slc.unisysgsg.com> for - suggesting these changes. - - * ace/OS.h (ACE_SERVER_ADDRESS): Modified the macro - ACE_SERVER_ADDRESS so that it creates a string of a server - address with a "host:port" format. Previously the order was - reversed. Thanks to Brad Flood for suggesting this change. + * examples/Win32/win32_client.cpp: Changed ACE_GUARD_RETURN to + ACE_GUARD in the method Errno::flags since the return type is + void. + + * examples/Connection/non_blocking/CPP-connector.cpp: Made some + minor changes to get things compiling on Win32. The call to + handle_close now takes zero as the first argument (which is + never used). Also the arguments to ACE_SERVER_ADDRESS are now + swapped (hostname followed by port number) to be consistent with + the change made to the macro. Thanks to Brad Flood for + suggesting these changes. + + * examples/Connection/non_blocking/CPP-acceptor.cpp: Made minor + changes to some of the methods to make sure all control paths + return a value. Also changed the default port number to + ACE_DEFAULT_SERVER_PORT_STR to match what the connector tries to + connect to. Thanks to Brad Flood <BFLOOD@slc.unisysgsg.com> for + suggesting these changes. + + * ace/OS.h (ACE_SERVER_ADDRESS): Modified the macro + ACE_SERVER_ADDRESS so that it creates a string of a server + address with a "host:port" format. Previously the order was + reversed. Thanks to Brad Flood for suggesting this change. Sat Aug 3 00:07:26 1996 Douglas C. Schmidt (schmidt@lambada.cs.wustl.edu) - * ace: Fixed problems with recursive tracing of ACE_TRACE by - commenting out certain constructors in IPC_SAP.cpp, - FIFO_Send_Msg.cpp, FIFO_Send.cpp, and FIFO.cpp. Thanks to - Karlheinz for finding and reporting these fixes. + * ace: Fixed problems with recursive tracing of ACE_TRACE by + commenting out certain constructors in IPC_SAP.cpp, + FIFO_Send_Msg.cpp, FIFO_Send.cpp, and FIFO.cpp. Thanks to + Karlheinz for finding and reporting these fixes. Fri Aug 2 22:19:05 1996 Douglas C. Schmidt (schmidt@lambada.cs.wustl.edu) - * ace/ACE.cpp (format_hexdump): Fixed an infamous "off by one" bug - that was causing this to fail on Win32 (time to switch to Java? ;-)). - Thanks to lucapri@mbox.vol.it for finding this. + * ace/ACE.cpp (format_hexdump): Fixed an infamous "off by one" bug + that was causing this to fail on Win32 (time to switch to Java? ;-)). + Thanks to lucapri@mbox.vol.it for finding this. Thu Aug 1 14:08:30 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * ace/CORBA_Handler.cpp (activate_service): Fixed a typo caused by - an omitted ENDTRY. Thanks to Garrett Conaty - <gconaty@outbackinc.com> for noticing this. + * ace/CORBA_Handler.cpp (activate_service): Fixed a typo caused by + an omitted ENDTRY. Thanks to Garrett Conaty + <gconaty@outbackinc.com> for noticing this. Mon Jul 29 10:03:16 1996 Douglas C. Schmidt (schmidt@lambada.cs.wustl.edu) - * examples/Win32/win32_client.cpp: There was a typo in one of the - ACE_GUARD macros. Thanks to Tim Ottinger - <tottinge@csci.csc.com> for pointing this out. + * examples/Win32/win32_client.cpp: There was a typo in one of the + ACE_GUARD macros. Thanks to Tim Ottinger + <tottinge@csci.csc.com> for pointing this out. Mon Jul 22 12:41:22 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - * ace/Local_Name_Space.cpp (reset): Added a new method - ACE_Name_Space_Map::reset() which deletes the instance of - ACE_Name_Space_Map. This forces instance() to create a new - instance using a new context file in the case of the context - having changed. I make use of this in - ACE_Local_Name_Space::create_manager(). + * ace/Local_Name_Space.cpp (reset): Added a new method + ACE_Name_Space_Map::reset() which deletes the instance of + ACE_Name_Space_Map. This forces instance() to create a new + instance using a new context file in the case of the context + having changed. I make use of this in + ACE_Local_Name_Space::create_manager(). Fri Jul 19 12:28:07 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - * ace/System_Time.cpp (get_master_system_time): Modified - ACE_System_Time::get_master_system_time() so that if an entry - for the time is not found in shared memory (indicating that no - Clerk is running), then we should just return the local time of - the host. + * ace/System_Time.cpp (get_master_system_time): Modified + ACE_System_Time::get_master_system_time() so that if an entry + for the time is not found in shared memory (indicating that no + Clerk is running), then we should just return the local time of + the host. - * netsvcs/lib/TS_Clerk_Handler.cpp (update_time): Modified - ACE_TS_Clerk_Handler::update_time() so that if the Clerk is not - connected to any servers, is sets the delta time to zero - allowing clients to then use the local time of the host. + * netsvcs/lib/TS_Clerk_Handler.cpp (update_time): Modified + ACE_TS_Clerk_Handler::update_time() so that if the Clerk is not + connected to any servers, is sets the delta time to zero + allowing clients to then use the local time of the host. Wed Jul 17 22:19:53 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - * ace/UPIPE_Connector.cpp (connect): Added an #ifdef around the - check of ACE_OS::isastream (handle) in - ACE_UPIPE_Connector::connect() since the call is not supported - on NT. + * ace/UPIPE_Connector.cpp (connect): Added an #ifdef around the + check of ACE_OS::isastream (handle) in + ACE_UPIPE_Connector::connect() since the call is not supported + on NT. Thu Jul 11 22:22:57 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu) - * ace/OS.i (kill): Modified ACE_OS::kill so that it works on NT. - It takes a process ID, creates a handle for the associated - process, and calls TerminateProcess on the handle. This is - actually pretty dangerous according to the NT documentation. - Can majorly confuse DLLs. Does the same old thing on UNIX. + * ace/OS.i (kill): Modified ACE_OS::kill so that it works on NT. + It takes a process ID, creates a handle for the associated + process, and calls TerminateProcess on the handle. This is + actually pretty dangerous according to the NT documentation. + Can majorly confuse DLLs. Does the same old thing on UNIX. - * ace/OS.cpp (fork_exec): Added a fork_exec operation to ACE_OS. - This works on UNIX and NT. It combines the forking and exec'ing - into one call. This has to be combined since Win32 - CreateProcess only starts applications from scratch (unlike UNIX - fork). + * ace/OS.cpp (fork_exec): Added a fork_exec operation to ACE_OS. + This works on UNIX and NT. It combines the forking and exec'ing + into one call. This has to be combined since Win32 + CreateProcess only starts applications from scratch (unlike UNIX + fork). - * examples/OS/test_os.cpp: Added a new example application to test - the new ACE_OS::fork_exec and ACE_OS::kill operations. + * examples/OS/test_os.cpp: Added a new example application to test + the new ACE_OS::fork_exec and ACE_OS::kill operations. Tue Jul 9 13:04:14 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * ace/Service_Manager.cpp (reconfigure_services): To improve - portability on Win32 and UNIX I replaced the use of a signal to - trigger reconfiguration to instead make a call to the new - ACE_service_Config::reconfig_occurred() method. This should - actually perform the same as the original approach, since all - the signal handler ever did was to set this flag! Thanks to - Karlheinz for pointing out the need for this. + * ace/Service_Manager.cpp (reconfigure_services): To improve + portability on Win32 and UNIX I replaced the use of a signal to + trigger reconfiguration to instead make a call to the new + ACE_service_Config::reconfig_occurred() method. This should + actually perform the same as the original approach, since all + the signal handler ever did was to set this flag! Thanks to + Karlheinz for pointing out the need for this. - * ace/Service_Config.h: Added a new static public method called - reconfig_occurred(sig_atomic_t) to set if a reconfiguration - should take place the next time through the event loop. + * ace/Service_Config.h: Added a new static public method called + reconfig_occurred(sig_atomic_t) to set if a reconfiguration + should take place the next time through the event loop. Mon Jul 8 14:20:01 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - * ace/Time_Value.h: Added "ACE_Export" before all global operators - to allow them to be dll-exportable on NT. + * ace/Time_Value.h: Added "ACE_Export" before all global operators + to allow them to be dll-exportable on NT. Mon Jul 8 13:12:05 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * ace/{Message_Block,DEV_IO,SPIPE_Stream}.cpp: Fixed several more - cases of delete array that should have been delete [] array. - Thanks to Tom Leith for pointing out some of these. I can hear - the ghost of James Mansion coming closer... ;-) + * ace/{Message_Block,DEV_IO,SPIPE_Stream}.cpp: Fixed several more + cases of delete array that should have been delete [] array. + Thanks to Tom Leith for pointing out some of these. I can hear + the ghost of James Mansion coming closer... ;-) - * INSTALL: Added tips on how to install ACE on a Win32 platform - that lacks a network card. + * INSTALL: Added tips on how to install ACE on a Win32 platform + that lacks a network card. - * ChangeLog: Split ChangeLog-96 into two files (ChangeLog-96a and - ChangeLog-96b) since it was becoming quite large! Thanks to - Chris Lahey for pointing this out. + * ChangeLog: Split ChangeLog-96 into two files (ChangeLog-96a and + ChangeLog-96b) since it was becoming quite large! Thanks to + Chris Lahey for pointing this out. - * ace/Stream.cpp: Was missing a "return 0;" at the end of the - close() method. Thanks to Tom Leith <trl@icon-stl.net> for - finding this. + * ace/Stream.cpp: Was missing a "return 0;" at the end of the + close() method. Thanks to Tom Leith <trl@icon-stl.net> for + finding this. Mon Jul 8 14:20:01 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - * ace/Time_Value.h: Added "ACE_Export" before all global operators - to allow them to be exportable from Win32 DLLs. + * ace/Time_Value.h: Added "ACE_Export" before all global operators + to allow them to be exportable from Win32 DLLs. Sun Jul 7 10:34:48 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * Released version 4.0.27 for testing. + * Released version 4.0.27 for testing. * config-sunos5.5*.h: Removed all uses of ACE_HAS_SVR4_SIGNAL_T in - the config files since Solaris 2.5 has consistent signal and - sigaction types (at last!). + the config files since Solaris 2.5 has consistent signal and + sigaction types (at last!). * Installed and compiled ACE successfully with the new SunC++ 4.1 - compiler on Solaris 2.5. However, there seems to be major - problems with the interaction of the SunC++ exception handling - runtime system and the Solaris multi-threading mechanisms. This - is causing the ACE multi-threading tests to bomb with - segmentation faults inside of the _ex_unwind() library function. - If you read the /opt/SUNWspro_3.1/READMEs/c++ file you'll see - why this problem is occurring (apparently due to bugs in the - Solaris libC.so.5 C++ runtime library). - - There seem to be two fixes for this problem: - - 1. Add the following to *all* threads (including main): - - #include <exception.h> - - void *my_thread_entry_point (void *) { - set_terminate (abort); - set_unexpected (abort); - - // Do real work... - } - - This is the approach recommended by the README file in - SUNWspro_3.1. However, it is *clearly* a horrible hack and - very non-portable (therefore, I deem it worthy of Microsoft - ;-)). - - 2. Compile ACE (and applications?) with -noex in order to avoid - this bug. This is clearly not desirable either since it - precludes the use of exception handling with C++ and threads - on Solaris... - - Since ACE doesn't use exceptions internally on Solaris option 2 + compiler on Solaris 2.5. However, there seems to be major + problems with the interaction of the SunC++ exception handling + runtime system and the Solaris multi-threading mechanisms. This + is causing the ACE multi-threading tests to bomb with + segmentation faults inside of the _ex_unwind() library function. + If you read the /opt/SUNWspro_3.1/READMEs/c++ file you'll see + why this problem is occurring (apparently due to bugs in the + Solaris libC.so.5 C++ runtime library). + + There seem to be two fixes for this problem: + + 1. Add the following to *all* threads (including main): + + #include <exception.h> + + void *my_thread_entry_point (void *) { + set_terminate (abort); + set_unexpected (abort); + + // Do real work... + } + + This is the approach recommended by the README file in + SUNWspro_3.1. However, it is *clearly* a horrible hack and + very non-portable (therefore, I deem it worthy of Microsoft + ;-)). + + 2. Compile ACE (and applications?) with -noex in order to avoid + this bug. This is clearly not desirable either since it + precludes the use of exception handling with C++ and threads + on Solaris... + + Since ACE doesn't use exceptions internally on Solaris option 2 seems like the best approach for the time being. When Sun gets it act together and releases a bug-free library and C++ software, I'll fix ACE accordingly. * tests: Integrated the latest of Prashant's "one-button" tests - into the main ACE release. These will run on both UNIX and - Win32 now. - - * ace/UPIPE_Stream.cpp (recv): Changed the semantics of the - ACE_UPIPE_Stream::recv (char *, size_t, ACE_Time_Value *) - method. Currently, the behavior is to block until *exactly* N - bytes are read. However, this is incorrect for 2 reasons: - - 1. It makes it hard to write a server that doesn't know - precisely how big the messages are from the client. In - particular, if the receiver doesn't know how big the buffer - messages are from the client it will block indefinitely! - - 2. It is redundant with respect to the - ACE_UPIPE_Stream::recv_n(), which also blocks until all N - bytes are received. - - Therefore, I've made the new UPIPE_Stream::recv() method block - only until it's received the first block of data that allows it - to fulfill its size request, or anything that is smaller than - that size. - - * ace/OS.cpp (thr_create): Since POSIX pthreads doesn't provide an - equivalent of THR_NEW_LWP in the pthreads_attr_* functions, I've - added an emulation that should work for Solaris. Basically, if - THR_NEW_LWP is set when ACE_OS::thr_create() is called, we use - the ACE_OS::thr_{get,set}concurrency methods to increase the - number of LWPs by one. - - * ace/Message_Block: Changed the default high water mark for an - ACE_Message_Queue from 4K to 16K. This is useful since it - allows applications to buffer more information before blocking. - - * ace/Log_Msg: Added a pair of operations that allow applications - to acquire and release the synchronization lock used internally - by the ACE_Log_Msg implementation. This allows applications to - hold the lock atomically over a number of calls to ACE_Log_Msg, - which is useful for composite operations like the following: - - // Make sure the following operations are run atomically! - ACE_LOG_MSG->acquire (); - - while (c != '!') - { - if (c_stream.recv (&c, 1) == -1) - ACE_DEBUG ((LM_DEBUG, - "(%t) buffer recv from supplier failed\n")); - else - ACE_DEBUG ((LM_DEBUG, "%c", c)); + into the main ACE release. These will run on both UNIX and + Win32 now. + + * ace/UPIPE_Stream.cpp (recv): Changed the semantics of the + ACE_UPIPE_Stream::recv (char *, size_t, ACE_Time_Value *) + method. Currently, the behavior is to block until *exactly* N + bytes are read. However, this is incorrect for 2 reasons: + + 1. It makes it hard to write a server that doesn't know + precisely how big the messages are from the client. In + particular, if the receiver doesn't know how big the buffer + messages are from the client it will block indefinitely! + + 2. It is redundant with respect to the + ACE_UPIPE_Stream::recv_n(), which also blocks until all N + bytes are received. + + Therefore, I've made the new UPIPE_Stream::recv() method block + only until it's received the first block of data that allows it + to fulfill its size request, or anything that is smaller than + that size. + + * ace/OS.cpp (thr_create): Since POSIX pthreads doesn't provide an + equivalent of THR_NEW_LWP in the pthreads_attr_* functions, I've + added an emulation that should work for Solaris. Basically, if + THR_NEW_LWP is set when ACE_OS::thr_create() is called, we use + the ACE_OS::thr_{get,set}concurrency methods to increase the + number of LWPs by one. + + * ace/Message_Block: Changed the default high water mark for an + ACE_Message_Queue from 4K to 16K. This is useful since it + allows applications to buffer more information before blocking. + + * ace/Log_Msg: Added a pair of operations that allow applications + to acquire and release the synchronization lock used internally + by the ACE_Log_Msg implementation. This allows applications to + hold the lock atomically over a number of calls to ACE_Log_Msg, + which is useful for composite operations like the following: + + // Make sure the following operations are run atomically! + ACE_LOG_MSG->acquire (); + + while (c != '!') + { + if (c_stream.recv (&c, 1) == -1) + ACE_DEBUG ((LM_DEBUG, + "(%t) buffer recv from supplier failed\n")); + else + ACE_DEBUG ((LM_DEBUG, "%c", c)); } - ACE_LOG_MSG->release (); + ACE_LOG_MSG->release (); - * examples/IPC_SAP/UPIPE_SAP: Revised all of the UPIPE_Stream - tests to make them more consistent and correct with respect to - the new changes. + * examples/IPC_SAP/UPIPE_SAP: Revised all of the UPIPE_Stream + tests to make them more consistent and correct with respect to + the new changes. - * ace/Stream.cpp (link_i): There was a bug in the link_i() logic - because we weren't also linking the other stream back to our - stream. + * ace/Stream.cpp (link_i): There was a bug in the link_i() logic + because we weren't also linking the other stream back to our + stream. - * ace/UPIPE_{Acceptor,Connector}: Modified both of these classes - so that they don't + * ace/UPIPE_{Acceptor,Connector}: Modified both of these classes + so that they don't - * ace/Stream.cpp (close): Modified close() so that it now detects - "double-closes" and ignores anything but the first one. + * ace/Stream.cpp (close): Modified close() so that it now detects + "double-closes" and ignores anything but the first one. - * ace/UPIPE_Stream: Updated this class so that it no longer - inherits from ACE_Stream (previously ACE_UPIPE_Stream had - inherited from *both* ACE_Stream *and* ACE_SPIPE). There are - several reasons we shouldn't inherit from ACE_Stream: - - 1. There are operations on ACE_Stream that don't make any sense - on ACE_UPIPE_Stream (e.g., link(), unlink()). + * ace/UPIPE_Stream: Updated this class so that it no longer + inherits from ACE_Stream (previously ACE_UPIPE_Stream had + inherited from *both* ACE_Stream *and* ACE_SPIPE). There are + several reasons we shouldn't inherit from ACE_Stream: + + 1. There are operations on ACE_Stream that don't make any sense + on ACE_UPIPE_Stream (e.g., link(), unlink()). - 2. ACE_Stream isn't really designed to be subclassed (e.g., - it doesn't have virtual methods). + 2. ACE_Stream isn't really designed to be subclassed (e.g., + it doesn't have virtual methods). - 3. Not inheriting makes the interface cleaner, e.g., we now use - send() and recv() methods consistently, rather than - send_msg()/put() and recv_msg()/get(). - + 3. Not inheriting makes the interface cleaner, e.g., we now use + send() and recv() methods consistently, rather than + send_msg()/put() and recv_msg()/get(). + 4. The return values from the I/O methods are now more - consistent than they were before. + consistent than they were before. - * ace/Message_Block: The signature for the copy() method was - incorrect. It should have been copy (const char *, .....) - rather than copy (char *, ....). + * ace/Message_Block: The signature for the copy() method was + incorrect. It should have been copy (const char *, .....) + rather than copy (char *, ....). - * examples/IPC_SAP/UPIPE_SAP: Together with Prashant, fixed up the - ACE_UPIPE_Stream tests so they more cleverly - (and correctly) utilize and illustrate various ACE concurrency - features. + * examples/IPC_SAP/UPIPE_SAP: Together with Prashant, fixed up the + ACE_UPIPE_Stream tests so they more cleverly + (and correctly) utilize and illustrate various ACE concurrency + features. Sat Jul 6 18:28:55 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * ace/Stream.cpp: Fixed some obscure bugs with Stream::unlink() - and Stream::link(). These bugs were triggered by the - ACE_UPIPE_Stream tests. We need to make sure that we don't have - race conditions in the order in which ACE_UPIPE_Stream close() - down. Prashant and I fixed this problem by (1) adding a lock to - unlink() and link() and then creating unlink_i() and link_i() to - perform the work and (2) being more careful about trying to - unlink our side and the other side of a linked Stream. - - * ace/config-linux.h: According to Istvan Buki - <istvan.buki@infoboard.be>, Linux now supports the - send_msg()/recv_msg() system calls, as well as UNIX domain - sockets. Therefore, I've updated the config-linux*.h file to - remove the existing restrictions. If this turns out not to be - the case, please let me know. - - * ace/LSOCK.cpp (recv_handle): Added a change to some casts to - make ACE compile with Linux. Thanks to Istvan Buki - <istvan.buki@infoboard.be> for reporting this. - - * apps/Gateway/Gateway/File_Parser.cpp (readword): Removed - yet another use of: - - for (int x; foo(x); ) - { - } - - x = 10; - - Which is now a deprecated feature of C++. - - * include/makeinclude: added the -lw library to the GNU G++ - platform*.GNU file in order to pick up the wide-character string - functions. + * ace/Stream.cpp: Fixed some obscure bugs with Stream::unlink() + and Stream::link(). These bugs were triggered by the + ACE_UPIPE_Stream tests. We need to make sure that we don't have + race conditions in the order in which ACE_UPIPE_Stream close() + down. Prashant and I fixed this problem by (1) adding a lock to + unlink() and link() and then creating unlink_i() and link_i() to + perform the work and (2) being more careful about trying to + unlink our side and the other side of a linked Stream. + + * ace/config-linux.h: According to Istvan Buki + <istvan.buki@infoboard.be>, Linux now supports the + send_msg()/recv_msg() system calls, as well as UNIX domain + sockets. Therefore, I've updated the config-linux*.h file to + remove the existing restrictions. If this turns out not to be + the case, please let me know. + + * ace/LSOCK.cpp (recv_handle): Added a change to some casts to + make ACE compile with Linux. Thanks to Istvan Buki + <istvan.buki@infoboard.be> for reporting this. + + * apps/Gateway/Gateway/File_Parser.cpp (readword): Removed + yet another use of: + + for (int x; foo(x); ) + { + } + + x = 10; + + Which is now a deprecated feature of C++. + + * include/makeinclude: added the -lw library to the GNU G++ + platform*.GNU file in order to pick up the wide-character string + functions. Fri Jul 5 18:11:44 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * Re-released version 4.0.26 for testing. + * Re-released version 4.0.26 for testing. - * ace/CORBA_Handler.cpp (activate_service): Revised the code to - use the Orbix macros for TRY/CATCH rather than try/catch. We - need this to make legacy code work! Thanks to Irfan for - pointing this out. + * ace/CORBA_Handler.cpp (activate_service): Revised the code to + use the Orbix macros for TRY/CATCH rather than try/catch. We + need this to make legacy code work! Thanks to Irfan for + pointing this out. - * ace/Thread_Manager: Fixed a bunch of typos that grelims snuck + * ace/Thread_Manager: Fixed a bunch of typos that grelims snuck in. Thanks to Jack Erickson <jack@cibc.com> for reporting this. - * examples/IPC_SAP/TLI_SAP/ftp-server.cpp: Fixed some typos that - were causing problems on AIX. Thanks to Greg Wilson - <gvwilson@vnet.ibm.com> for reporting this. + * examples/IPC_SAP/TLI_SAP/ftp-server.cpp: Fixed some typos that + were causing problems on AIX. Thanks to Greg Wilson + <gvwilson@vnet.ibm.com> for reporting this. - * examples/Reactor/Misc/test_time_value.cpp (operator<<): Added a - "const" in front of the ACE_Time_Value & in order to make things - work correctly on AIX. Thanks to Greg Wilson - <gvwilson@vnet.ibm.com> for reporting this. + * examples/Reactor/Misc/test_time_value.cpp (operator<<): Added a + "const" in front of the ACE_Time_Value & in order to make things + work correctly on AIX. Thanks to Greg Wilson + <gvwilson@vnet.ibm.com> for reporting this. - * ace/SPIPE_Acceptor: Fixed some missing "returns" that had sprung - up in the #else arm of the SPIPE code. Thanks to Greg Wilson - <gvwilson@vnet.ibm.com> for reporting this. + * ace/SPIPE_Acceptor: Fixed some missing "returns" that had sprung + up in the #else arm of the SPIPE code. Thanks to Greg Wilson + <gvwilson@vnet.ibm.com> for reporting this. - * apps/Synch-Benchmarks/Benchmark: Fixed a typo that was causing - the application to fail to compile on AIX. Thanks to Greg - Wilson <gvwilson@vnet.ibm.com> for reporting this. + * apps/Synch-Benchmarks/Benchmark: Fixed a typo that was causing + the application to fail to compile on AIX. Thanks to Greg + Wilson <gvwilson@vnet.ibm.com> for reporting this. - * Changed all uses of virtual int init (int, char **) to virtual - int init (int, char *[]) to workaround bugs with MSVC++... + * Changed all uses of virtual int init (int, char **) to virtual + int init (int, char *[]) to workaround bugs with MSVC++... - * ace/OS.h: for POSIX pthreads, changed the definition of the - THR_SCOPE_SYSTEM macro so that it has the same value as - THR_BOUND. If this isn't done, then things don't quite work - right when we implement the ACE_OS::thr_create() wrapper. + * ace/OS.h: for POSIX pthreads, changed the definition of the + THR_SCOPE_SYSTEM macro so that it has the same value as + THR_BOUND. If this isn't done, then things don't quite work + right when we implement the ACE_OS::thr_create() wrapper. Thu Jul 4 13:17:35 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * ace/Thread_Manager: Added a new method called thr_self() that - *does* return a real handle that can be used by - WaitForMultipleObjects, etc. Note that this new approach - cleverly caches this handle in TSS in order to cut down on - search time. Thanks to Jesper for pointing this technique out. - - * ace/OS.i (thr_self): After receiving comments from Jesper, undid - the earlier change today that was returning a duplicated handle - for ACE_OS::thr_self(). It turns out this is a bad idea because - the handle most typically doesn't get released, which leads to - handle leaks. - - * ace/Thread_Manager: Added a new private method called - check_state(). This method extends existing code to be smarter - about how we check to see what "state" (e.g., suspended, - cancelled, etc.) a thread is in. The original code - (which was a macro called ACE_CHECK_STATE) didn't behave - correctly if we asked about the state of a thread that was - different from ourselves! + * ace/Thread_Manager: Added a new method called thr_self() that + *does* return a real handle that can be used by + WaitForMultipleObjects, etc. Note that this new approach + cleverly caches this handle in TSS in order to cut down on + search time. Thanks to Jesper for pointing this technique out. + + * ace/OS.i (thr_self): After receiving comments from Jesper, undid + the earlier change today that was returning a duplicated handle + for ACE_OS::thr_self(). It turns out this is a bad idea because + the handle most typically doesn't get released, which leads to + handle leaks. + + * ace/Thread_Manager: Added a new private method called + check_state(). This method extends existing code to be smarter + about how we check to see what "state" (e.g., suspended, + cancelled, etc.) a thread is in. The original code + (which was a macro called ACE_CHECK_STATE) didn't behave + correctly if we asked about the state of a thread that was + different from ourselves! * ace/Thread: Modified the public interface to - ACE_Thread::spawn_n() so that it now takes a void *stack[] and - size_t stack_size[]. If stack != 0 it is assumed to be an array - of n pointers to the base of the stacks to use for the threads - being spawned. Likewise, if stack_size != 0 it is assumed to be - an array of n values indicating how big each of the - corresponding stacks are. This is useful since now we can spawn - a group of threads each of which has its own custom stack and/or - stack size. Thanks to Ashish Singhai - <singhai@delirius.cs.uiuc.edu> for pointing out the need for - this. + ACE_Thread::spawn_n() so that it now takes a void *stack[] and + size_t stack_size[]. If stack != 0 it is assumed to be an array + of n pointers to the base of the stacks to use for the threads + being spawned. Likewise, if stack_size != 0 it is assumed to be + an array of n values indicating how big each of the + corresponding stacks are. This is useful since now we can spawn + a group of threads each of which has its own custom stack and/or + stack size. Thanks to Ashish Singhai + <singhai@delirius.cs.uiuc.edu> for pointing out the need for + this. - * apps/Synch-Benchmarks: Updated the Synch benchmarks so that most - of them work again. The trick is *not* to use ACE_OS::sleep () - (which doesn't seem to be thread-friendly...) but instead to use - ACE_OS::select() as a timer. + * apps/Synch-Benchmarks: Updated the Synch benchmarks so that most + of them work again. The trick is *not* to use ACE_OS::sleep () + (which doesn't seem to be thread-friendly...) but instead to use + ACE_OS::select() as a timer. - * man: updated the manual pages and html pages to reflect all the - recent changes. + * man: updated the manual pages and html pages to reflect all the + recent changes. - * ace/Malloc_T.cpp (open): Added a check to make sure that if - init_acquire() fails we don't let this go by undetected... - Thanks to Karlheinz for pointing out the need for this. + * ace/Malloc_T.cpp (open): Added a check to make sure that if + init_acquire() fails we don't let this go by undetected... + Thanks to Karlheinz for pointing out the need for this. - * ace/OS.i (thr_getconcurrency): Fixed a subtle bug with the - ACE_OS::thr_getconcurrency() function. I was mistakenly using - ACE_ADAPT_RETVAL for the result of ::thr_getconcurrency(), which - is clearly wrong! + * ace/OS.i (thr_getconcurrency): Fixed a subtle bug with the + ACE_OS::thr_getconcurrency() function. I was mistakenly using + ACE_ADAPT_RETVAL for the result of ::thr_getconcurrency(), which + is clearly wrong! - * ace/Service_Record.cpp (remove): Fixed a typo that was causing - the removals of Modules in a dynamically configured Stream to go - into infinite loops. + * ace/Service_Record.cpp (remove): Fixed a typo that was causing + the removals of Modules in a dynamically configured Stream to go + into infinite loops. - * ace/OS.i (thr_self): Modified the ACE_OS::thr_self (hthread_t &) - function so that it will return a *duplicate* of the current - thread's pseudo-handle returned by GetCurrentThread(). This - change is necessary because the pseudo-handle returned by - GetCurrentThread() is pretty useless (e.g., it can't be used by - any other thread to "wait" for this thread to exit). This new - behavior is used in the examples/Reactor/ReactorEx test program. + * ace/OS.i (thr_self): Modified the ACE_OS::thr_self (hthread_t &) + function so that it will return a *duplicate* of the current + thread's pseudo-handle returned by GetCurrentThread(). This + change is necessary because the pseudo-handle returned by + GetCurrentThread() is pretty useless (e.g., it can't be used by + any other thread to "wait" for this thread to exit). This new + behavior is used in the examples/Reactor/ReactorEx test program. - * ace/Service_Config.cpp: I'd forgotten to assign the - delete_svc_rep_ flag when dynamically allocating the svc_rep_. - This is fixed now. + * ace/Service_Config.cpp: I'd forgotten to assign the + delete_svc_rep_ flag when dynamically allocating the svc_rep_. + This is fixed now. Wed Jul 3 20:09:44 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * Added a new subdirectory called $WRAPPER_ROOT/tests that - contains the first phase of the ACE regression tests. + * Added a new subdirectory called $WRAPPER_ROOT/tests that + contains the first phase of the ACE regression tests. - * ace/Reactor.cpp (check_handles): Fixed an earlier fix with the - ACE_Reactor::wait_for_multiple_events() method. The earlier fix - had changed the exit condition of do/while loop to be - - while (nfound == -1 && this->handle_error () >= 0); + * ace/Reactor.cpp (check_handles): Fixed an earlier fix with the + ACE_Reactor::wait_for_multiple_events() method. The earlier fix + had changed the exit condition of do/while loop to be + + while (nfound == -1 && this->handle_error () >= 0); - However, this was causing signal handling to break... - Therefore, the right fix is to keep the exit test as: + However, this was causing signal handling to break... + Therefore, the right fix is to keep the exit test as: - while (nfound == -1 && this->handle_error () > 0); + while (nfound == -1 && this->handle_error () > 0); - and instead fix handle_errors() so that it returns 1 if we're - able to fix a bad handle... Thanks to Prashant and Irfan for - tracking this down. + and instead fix handle_errors() so that it returns 1 if we're + able to fix a bad handle... Thanks to Prashant and Irfan for + tracking this down. - * ace/OS: Finally broken down and added a new pair of ACE_OS - functions called "last_error()". These basically call - SetLastError/GetLastError on Win32 or they set/get errno on - UNIX. + * ace/OS: Finally broken down and added a new pair of ACE_OS + functions called "last_error()". These basically call + SetLastError/GetLastError on Win32 or they set/get errno on + UNIX. - * ace/config-linux.h: Fixed an annoying problem with - struct msghdr in Linux by adding + * ace/config-linux.h: Fixed an annoying problem with + struct msghdr in Linux by adding - #define msg_accrights msg_control - #define msg_accrightslen msg_controllen + #define msg_accrights msg_control + #define msg_accrightslen msg_controllen - to the config-linux*.h files. Thanks to Michael R"uger + to the config-linux*.h files. Thanks to Michael R"uger <m_rueger@syscomp.de> for suggesting this. - * ace/SOCK_IO.cpp (recv): Fixed a "bug" where - ACE_SOCK_IO::{send,recv} allocates with: + * ace/SOCK_IO.cpp (recv): Fixed a "bug" where + ACE_SOCK_IO::{send,recv} allocates with: - iovec *iovp = new iovec[total_tuples]; + iovec *iovp = new iovec[total_tuples]; - But deletes with: + But deletes with: - delete iovp; + delete iovp; - Thanks to the ever vigilant James Mansion - (mansionj@lonnds.ml.com) for noticing this. + Thanks to the ever vigilant James Mansion + (mansionj@lonnds.ml.com) for noticing this. Tue Jul 2 23:48:38 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu) - * ace/Service_Config.h: Added ReactorEx to the singleton resources - that the Service_Configurator holds. This includes accessors, - destruction hooks, and event loop methods. + * ace/Service_Config.h: Added ReactorEx to the singleton resources + that the Service_Configurator holds. This includes accessors, + destruction hooks, and event loop methods. - * examples/Reactor/ReactorEx/README: There is a new example - application for the ReactorEx. Please check out - examples/Reactor/ReactorEx/README for details. + * examples/Reactor/ReactorEx/README: There is a new example + application for the ReactorEx. Please check out + examples/Reactor/ReactorEx/README for details. Tue Jul 2 18:43:12 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * Released version 4.0.25 for testing. + * Released version 4.0.25 for testing. - * examples/ASX/Message_Queue/priority_buffer.cpp: Added a new test - program that illustrates the use of the new Message_Queue - priority scheme. + * examples/ASX/Message_Queue/priority_buffer.cpp: Added a new test + program that illustrates the use of the new Message_Queue + priority scheme. - * ace/Message_Queue: Added new support for prioritized message - enqueueing into the ACE_Message_Queue. Now, when an application - uses ACE_Message_Queue::enqueue() the new Message_Block is - inserted into the queue according to its msg_priority(). When - dequeue_head() is used the item retrieved will then be the item - of "highest priority" (priorities range from 0 to MAX_LONG). - Note that the semantics of the existing enqueue methods, - enqueue_head() and enqueue_tail(), remain unchanged. + * ace/Message_Queue: Added new support for prioritized message + enqueueing into the ACE_Message_Queue. Now, when an application + uses ACE_Message_Queue::enqueue() the new Message_Block is + inserted into the queue according to its msg_priority(). When + dequeue_head() is used the item retrieved will then be the item + of "highest priority" (priorities range from 0 to MAX_LONG). + Note that the semantics of the existing enqueue methods, + enqueue_head() and enqueue_tail(), remain unchanged. - * ace/Message_Block: Changed the type of the priority in a message - block to u_long rather than u_char. This gives us a much - greater range of priorities! + * ace/Message_Block: Changed the type of the priority in a message + block to u_long rather than u_char. This gives us a much + greater range of priorities! Mon Jul 1 01:12:08 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - * ace/Thread.h: Changed a couple of mistyped comments. Thanks - to the eagle eyes of Andres Kruse for noticing this. + * ace/Thread.h: Changed a couple of mistyped comments. Thanks + to the eagle eyes of Andres Kruse for noticing this. - * ace/OS: added more comprehensive support for UNICODE to - both the Win32 and UNIX OS adaptation layer. This new - support automagically selects the appropriate implementation - (i.e., either char * or wchar_t *) for the string comparison - routines (which are used in places like ACE_Mem_Map). + * ace/OS: added more comprehensive support for UNICODE to + both the Win32 and UNIX OS adaptation layer. This new + support automagically selects the appropriate implementation + (i.e., either char * or wchar_t *) for the string comparison + routines (which are used in places like ACE_Mem_Map). - * ace/Service_Config: Split up the ACE_Service_Config::close() - method into two parts: close_svcs() and close_singletons(). - This makes it possible to remove svc.conf services without - destroying Singletons like the Proactor, Reactor, etc. Thanks - to Karlheinz for recommending this. + * ace/Service_Config: Split up the ACE_Service_Config::close() + method into two parts: close_svcs() and close_singletons(). + This makes it possible to remove svc.conf services without + destroying Singletons like the Proactor, Reactor, etc. Thanks + to Karlheinz for recommending this. - * ace/Service_Config: Added flags for remembering who created the - Singleton Proactor, Allocator, Thread_Manager, and - Service_Repository (in addition to the Reactor, which I did last - week). If we created these Singletons, then we are responsible - for freeing them up. Thanks to Karlheinz for pointing out the - need for this. + * ace/Service_Config: Added flags for remembering who created the + Singleton Proactor, Allocator, Thread_Manager, and + Service_Repository (in addition to the Reactor, which I did last + week). If we created these Singletons, then we are responsible + for freeing them up. Thanks to Karlheinz for pointing out the + need for this. Mon Jul 1 16:26:27 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - * ace/Connector.cpp: Added two new arguments to connect () namely, - "int flags" and "int perms". The Connector can now pass these - two arguments to its template arguments (e.g., SOCK_Connector, - SPIPE_Connector, etc.) when calling their connect() method. A - consequence of doing this was that we had to modify the - signature of the connect() method on some of the IPC_SAP classes - (e.g., TLI_Connector, SOCK_Connector, and LSOCK_Connector). - Note that these changes may break some existing code, - particularly with TLI_Connector (see below), so beware... - - * ace/TLI_Connector.cpp: Changed the order of the connect() - arguments to be more consistent with the rest of the IPC_SAP - classes used with the Connector. Please note that existing - examples which use TLI_Connector may need to be modified as a - result of this change. - - * ace/OS.i (open): Modified ACE_OS::open() to use the argument - perms to turn the flag FILE_FLAG_OVERLAPPED on and off for - Win32. - - * ace/Service_Config.cpp (end_proactor_event_loop): Added new - methods run_proactor_event_loop() and end_proactor_event_loop() - which call handle_events on the Proactor. + * ace/Connector.cpp: Added two new arguments to connect () namely, + "int flags" and "int perms". The Connector can now pass these + two arguments to its template arguments (e.g., SOCK_Connector, + SPIPE_Connector, etc.) when calling their connect() method. A + consequence of doing this was that we had to modify the + signature of the connect() method on some of the IPC_SAP classes + (e.g., TLI_Connector, SOCK_Connector, and LSOCK_Connector). + Note that these changes may break some existing code, + particularly with TLI_Connector (see below), so beware... + + * ace/TLI_Connector.cpp: Changed the order of the connect() + arguments to be more consistent with the rest of the IPC_SAP + classes used with the Connector. Please note that existing + examples which use TLI_Connector may need to be modified as a + result of this change. + + * ace/OS.i (open): Modified ACE_OS::open() to use the argument + perms to turn the flag FILE_FLAG_OVERLAPPED on and off for + Win32. + + * ace/Service_Config.cpp (end_proactor_event_loop): Added new + methods run_proactor_event_loop() and end_proactor_event_loop() + which call handle_events on the Proactor. Mon Jul 1 02:15:34 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu) - * ace/Proactor.h: Made ACE_Proactor an ACE_Event_Handler so that - it can be registered with the ACE_ReactorEx. ACE_Proactor - associates the same global HANDLE with every overlapped I/O - operation. This global HANDLE can be registered with the - ACE_ReactorEx. Therefore, by using the - ACE_Proactor::handle_signal method as an adapter, we can now - dispatch overlapped I/O and other "waitable" objects from a one - ACE_ReactorEx running in a single thread of control. Thanks to - James Mansion <mansionj@lonnds.ml.com> for setting us on the - right path! - - * ace/ReactorEx.h: Added a ACE_ReactorEx to encapsulate Win32 - WaitForMultipleObjects(). The ACE_ReactorEx handle_events() - method calls ACE_Event_Handler::handle_signal when the - corresponding Win32 HANDLE becomes signaled. This gives us a - uniform abstraction for dispatching all "waitable" objects on - Win32, including events related to I/O completion ports and - events related to other forms of NT synchronization (such as - mutexes, semaphores, threads, etc.). - - * ace/Timer_Queue.h (calculate_timeout): Added a calculate_timeout - method to ACE_Timer_Queue. Also removed the same method from - ACE_Reactor. This is so Reactor, ReactorEx, and Proactor can - all reuse the calculations required by the Timer_Queue without - duplicating code. + * ace/Proactor.h: Made ACE_Proactor an ACE_Event_Handler so that + it can be registered with the ACE_ReactorEx. ACE_Proactor + associates the same global HANDLE with every overlapped I/O + operation. This global HANDLE can be registered with the + ACE_ReactorEx. Therefore, by using the + ACE_Proactor::handle_signal method as an adapter, we can now + dispatch overlapped I/O and other "waitable" objects from a one + ACE_ReactorEx running in a single thread of control. Thanks to + James Mansion <mansionj@lonnds.ml.com> for setting us on the + right path! + + * ace/ReactorEx.h: Added a ACE_ReactorEx to encapsulate Win32 + WaitForMultipleObjects(). The ACE_ReactorEx handle_events() + method calls ACE_Event_Handler::handle_signal when the + corresponding Win32 HANDLE becomes signaled. This gives us a + uniform abstraction for dispatching all "waitable" objects on + Win32, including events related to I/O completion ports and + events related to other forms of NT synchronization (such as + mutexes, semaphores, threads, etc.). + + * ace/Timer_Queue.h (calculate_timeout): Added a calculate_timeout + method to ACE_Timer_Queue. Also removed the same method from + ACE_Reactor. This is so Reactor, ReactorEx, and Proactor can + all reuse the calculations required by the Timer_Queue without + duplicating code. @@ -666,6 +666,7 @@ Arun Katkere <katkere@praja.com> Bob Dunmire <bobd@titan.com> Sandro Doro <alex@aureus.sublink.org> Robert Lyng <RLyng@msmail.hsii.ccare.com> +Phil Logan <phill@in.ot.com.au> I would particularly like to thank Paul Stephenson, who worked with me at Ericsson and is now at ObjectSpace. Paul devised the recursive diff --git a/ace/ACE.cpp b/ace/ACE.cpp index 1a99e4ef648..2c3fd9eea37 100644 --- a/ace/ACE.cpp +++ b/ace/ACE.cpp @@ -107,52 +107,116 @@ ACE::strenvdup (const char *str) return ACE_OS::strdup (str); } +/* + +Examples: +Source NT UNIX +=============================================================== +netsvc netsvc.dll libnetsvc.so + (PATH will be evaluated) (LD_LIBRARY_PATH evaluated) + +libnetsvc.dll libnetsvc.dll libnetsvc.dll + warning +netsvc.so netsvc.so + warning libnetsvc.so + +..\../libs/netsvc ..\..\libs\netsvc.dll ../../libs/libnetsvc.so + (absolute path used) (absolute path used) + +*/ + int ACE::ldfind (const char *filename, - char *pathname, + char *pathname, size_t maxlen) { ACE_TRACE ("ACE::ldfind"); + char tempcopy[MAXPATHLEN]; + char searchpathname[MAXPATHLEN]; + char tempfilename[MAXPATHLEN]; char searchfilename[MAXPATHLEN]; - // Determine, whether the default-suffix for shared libraries needs - // to be appended. + // Create a working copy of filename to mess with + if (ACE_OS::strlen (filename) + 1 > sizeof tempcopy) + { + errno = ENOMEM; + return -1; + } + else + ACE_OS::strcpy (tempcopy, filename); - if (ACE_OS::strstr (filename, ACE_DLL_SUFFIX) != 0) - // Use the filename as provided since it has a suffix. - ACE_OS::strncpy (searchfilename, filename, sizeof searchfilename); + // Insert canonical directory separators + char *separator_ptr; + + for (separator_ptr = tempcopy; *separator_ptr != '\0'; separator_ptr++) + if (*separator_ptr == '\\' + || *separator_ptr == ACE_DIRECTORY_SEPARATOR_CHAR) + *separator_ptr = '/'; + + separator_ptr = ACE_OS::strrchr (tempcopy, '/'); + // Separate filename from pathname + + if (separator_ptr != NULL) + { + ACE_OS::strcpy (tempfilename, separator_ptr + 1); + separator_ptr[1] = '\0'; + ACE_OS::strcpy (searchpathname, tempcopy); + } else { - if (ACE_OS::strlen (filename) - + ACE_OS::strlen (ACE_DLL_SUFFIX) - + 1 >= sizeof searchfilename) - { - errno = ENOMEM; - return -1; - } - else - ::sprintf (searchfilename, "%s%s", filename, ACE_DLL_SUFFIX); + searchpathname[0] = '\0'; + ACE_OS::strcpy (tempfilename, tempcopy); } - if (ACE_OS::strcmp (searchfilename - + ACE_OS::strlen (searchfilename) - ACE_OS::strlen (ACE_DLL_SUFFIX), + // Determine, how the filename needs to be decorated. + + int got_prefix = 0; + int got_suffix = 0; + + if (ACE_OS::strchr (tempfilename, '.') != NULL) + got_suffix = -1; + + if (ACE_OS::strlen(ACE_DLL_PREFIX) == 0 + || (ACE_OS::strncmp(tempfilename, ACE_DLL_PREFIX, + ACE_OS::strlen(ACE_DLL_PREFIX) == 0))) + got_prefix = -1; + + // Create the properly decorated filename + if (ACE_OS::strlen (tempfilename) + + (got_prefix) ? 0 : ACE_OS::strlen(ACE_DLL_PREFIX) + + (got_suffix) ? 0 : ACE_OS::strlen (ACE_DLL_SUFFIX) >= sizeof searchfilename) + { + errno = ENOMEM; + return -1; + } + else + ::sprintf (searchfilename, "%s%s%s", + (got_prefix) ? "" : ACE_DLL_PREFIX, + tempfilename, + (got_suffix) ? "" : ACE_DLL_SUFFIX); + + if (ACE_OS::strcmp (searchfilename + ACE_OS::strlen (searchfilename) - ACE_OS::strlen (ACE_DLL_SUFFIX), ACE_DLL_SUFFIX)) ACE_ERROR ((LM_NOTICE, "CAUTION: improper name for a shared library on this patform: %s\n", searchfilename)); - if (ACE_OS::strchr (searchfilename, ACE_DIRECTORY_SEPARATOR_CHAR) != 0) + if (ACE_OS::strlen (searchpathname) > 0) { // Use absolute pathname. - if (ACE_OS::strlen (searchfilename) >= maxlen) + if (ACE_OS::strlen (searchfilename) + ACE_OS::strlen (searchpathname) >= maxlen) { errno = ENOMEM; return -1; } else { - ACE_OS::strncpy (pathname, searchfilename, maxlen); + + // Revert to native path name separators + for (separator_ptr = searchpathname; *separator_ptr != '\0'; separator_ptr++) + if (*separator_ptr == '/') + *separator_ptr = ACE_DIRECTORY_SEPARATOR_CHAR; + + ::sprintf (pathname, "%s%s", searchpathname, searchfilename); return 0; } } @@ -171,7 +235,8 @@ ACE::ldfind (const char *filename, while (path_entry != 0) { - if (ACE_OS::strlen (path_entry) + 1 + ACE_OS::strlen (searchfilename) >= maxlen) + if (ACE_OS::strlen (path_entry) + 1 + ACE_OS::strlen + (searchfilename) >= maxlen) { errno = ENOMEM; result = -1; @@ -184,7 +249,8 @@ ACE::ldfind (const char *filename, if (ACE_OS::access (pathname, R_OK) == 0) break; - path_entry = ACE_OS::strtok (0, ACE_LD_SEARCH_PATH_SEPARATOR_STR); + path_entry = ACE_OS::strtok (0, + ACE_LD_SEARCH_PATH_SEPARATOR_STR); } ACE_OS::free ((void *) ld_path); @@ -713,23 +779,36 @@ ACE::bind_port (ACE_HANDLE handle) // code from APUE. int -ACE::daemonize (void) +ACE::daemonize (const char pathname[]) { ACE_TRACE ("ACE::daemonize"); #if !defined (ACE_WIN32) - pid_t pid; + pid_t pid = ACE_OS::fork (); - if ((pid = ACE_OS::fork ()) == -1) + if (pid == -1) return -1; else if (pid != 0) - ACE_OS::exit (0); /* parent exits */ + ACE_OS::exit (0); // Parent exits. + + // 1st child continues. + ACE_OS::setsid (); // Become session leader. + + ACE_OS::signal (SIGHUP, SIG_IGN); + + pid = ACE_OS::fork (); + + if (pid != 0) + ACE_OS::exit (0); // First child terminates. + + // Second child continues. - /* child continues */ - ACE_OS::setsid (); /* become session leader */ + ACE_OS::chdir (pathname); // change working directory. - ACE_OS::chdir ("/"); /* change working directory */ + ACE_OS::umask (0); // clear our file mode creation mask. - ACE_OS::umask (0); /* clear our file mode creation mask */ + // Close down the files. + for (int i = ACE::max_handles () - 1; i >= 0; i--) + ACE_OS::close (i); return 0; #else ACE_NOTSUP_RETURN (-1); @@ -872,6 +951,7 @@ ACE::send (ACE_HANDLE handle, const ACE_Time_Value *tv) { if (tv == 0) + // Use the blocking send. return ACE::send (handle, buf, n, flags); else { diff --git a/ace/ACE.h b/ace/ACE.h index b6d095972f6..0263b92fded 100644 --- a/ace/ACE.h +++ b/ace/ACE.h @@ -243,7 +243,7 @@ public: // 0 if unsuccessful, else returns pointer to beginning of the // "time" portion of <day_and_time>. - static int daemonize (void); + static int daemonize (const char pathname[] = "/"); // Become a daemon process. // = Methods for searching and opening shared libraries using relative naming. diff --git a/ace/INET_Addr.cpp b/ace/INET_Addr.cpp index 18d17b1dd38..9cc37738029 100644 --- a/ace/INET_Addr.cpp +++ b/ace/INET_Addr.cpp @@ -181,9 +181,7 @@ ACE_INET_Addr::set (u_short port_number, errno = EINVAL; return -1; } - else if ((addr = ACE_OS::inet_addr (host_name)) != (ACE_UINT32) -1 - // Broadcast addresses are weird... - || ACE_OS::strcmp (host_name, "255.255.255.255") == 0) + else if (ACE_OS::inet_aton (host_name, (struct in_addr *) &addr) == 1) return this->set (port_number, encode ? ntohl (addr) : addr, encode); else diff --git a/ace/LSOCK_Stream.cpp b/ace/LSOCK_Stream.cpp index e79927e3100..bcfe6a60d73 100644 --- a/ace/LSOCK_Stream.cpp +++ b/ace/LSOCK_Stream.cpp @@ -8,6 +8,13 @@ ACE_ALLOC_HOOK_DEFINE(ACE_LSOCK_Stream) +int +ACE_LSOCK_Stream::get_remote_addr (ACE_Addr &a) const +{ + ACE_TRACE ("ACE_LSOCK_Stream::get_remote_addr"); + return this->get_local_addr (a); +} + void ACE_LSOCK_Stream::dump (void) const { diff --git a/ace/LSOCK_Stream.h b/ace/LSOCK_Stream.h index be37419b15b..ac8448fc13d 100644 --- a/ace/LSOCK_Stream.h +++ b/ace/LSOCK_Stream.h @@ -37,6 +37,7 @@ public: ACE_HANDLE get_handle (void) const; // Get handle. + void set_handle (ACE_HANDLE fd); // Overrides set_handle from the base classes. @@ -46,9 +47,9 @@ public: ACE_ALLOC_HOOK_DECLARE; // Declare the dynamic allocation hooks. -private: int get_remote_addr (ACE_Addr &) const; - // Do not allow this function to percolate up to this interface... + // This method simply returns the "local" addr (since they are the + // same for UNIX domain sockets). }; #include "ace/LSOCK_Stream.i" diff --git a/ace/Local_Tokens.h b/ace/Local_Tokens.h index 177de5515fd..e4ebe99a2b6 100644 --- a/ace/Local_Tokens.h +++ b/ace/Local_Tokens.h @@ -1,7 +1,6 @@ /* -*- C++ -*- */ // $Id$ - // ============================================================================ // // = LIBRARY @@ -68,6 +67,7 @@ public: #endif /* ACE_HAS_THREADS */ }; +// Forward decl. class ACE_Token_Proxy; // 3.. @@ -337,8 +337,7 @@ public: // = Accessor methods. - typedef ACE_Unbounded_Stack<ACE_TPQ_Entry *> - OWNER_STACK; + typedef ACE_Unbounded_Stack<ACE_TPQ_Entry *> OWNER_STACK; // Stack of owners. virtual int owners (OWNER_STACK &o, const char *id) = 0; diff --git a/ace/Memory_Pool.cpp b/ace/Memory_Pool.cpp index cf28cd28656..45508fc8d21 100644 --- a/ace/Memory_Pool.cpp +++ b/ace/Memory_Pool.cpp @@ -406,7 +406,7 @@ ACE_Shared_Memory_Pool::dump (void) const int ACE_Shared_Memory_Pool::in_use (off_t &offset, - int &counter) + size_t &counter) { offset = 0; SHM_TABLE *st = (SHM_TABLE *) this->base_addr_; @@ -431,7 +431,7 @@ ACE_Shared_Memory_Pool::commit_backing_store_name (size_t rounded_bytes, off_t &offset) { ACE_TRACE ("ACE_Shared_Memory_Pool::update"); - int counter; + size_t counter; SHM_TABLE *st = (SHM_TABLE *) this->base_addr_; if (this->in_use (offset, counter) == -1) @@ -478,7 +478,7 @@ ACE_Shared_Memory_Pool::handle_signal (int , siginfo_t *siginfo, ucontext_t *) if (siginfo != 0) { // ACE_DEBUG ((LM_DEBUG, "(%P|%t) si_signo = %d, si_code = %d, addr = %u\n", siginfo->si_signo, siginfo->si_code, siginfo->si_addr)); - int counter; + size_t counter; if (this->in_use (offset, counter) == -1) ACE_ERROR ((LM_ERROR, "(%P|%t) %p\n", "in_use")); else if (!(siginfo->si_code == SEGV_MAPERR @@ -549,7 +549,7 @@ ACE_Shared_Memory_Pool::init_acquire (size_t nbytes, { ACE_TRACE ("ACE_Shared_Memory_Pool::init_acquire"); - int counter; + size_t counter; off_t shm_table_offset = ACE::round_to_pagesize (sizeof (SHM_TABLE)); rounded_bytes = this->round_up (nbytes); @@ -618,7 +618,7 @@ ACE_Shared_Memory_Pool::release (void) int result = 0; SHM_TABLE *st = (SHM_TABLE *) this->base_addr_; - for (int counter = 0; + for (size_t counter = 0; counter < this->max_segments_ && st[counter].used_ == 1; counter++) if (ACE_OS::shmctl (st[counter].shmid_, IPC_RMID, NULL) == -1) diff --git a/ace/Memory_Pool.h b/ace/Memory_Pool.h index 22f26c129cf..537afd220f7 100644 --- a/ace/Memory_Pool.h +++ b/ace/Memory_Pool.h @@ -207,7 +207,7 @@ protected: key_t base_shm_key_; // Base shared memory key for the segment. - virtual int in_use (off_t &offset, int &counter); + virtual int in_use (off_t &offset, size_t &counter); // Determine how much memory is currently in use. ACE_Sig_Handler signal_handler_; diff --git a/ace/Message_Queue.cpp b/ace/Message_Queue.cpp index 85967ce42ce..bb3980bffdb 100644 --- a/ace/Message_Queue.cpp +++ b/ace/Message_Queue.cpp @@ -419,7 +419,7 @@ template <ACE_SYNCH_1> int ACE_Message_Queue<ACE_SYNCH_2>::enqueue_prio (ACE_Message_Block *new_item, ACE_Time_Value *tv) { - ACE_TRACE ("ACE_Message_Queue<ACE_SYNCH_2>::enqueue"); + ACE_TRACE ("ACE_Message_Queue<ACE_SYNCH_2>::enqueue_prio"); int queue_count; @@ -460,6 +460,14 @@ ACE_Message_Queue<ACE_SYNCH_2>::enqueue_prio (ACE_Message_Block *new_item, } } +template <ACE_SYNCH_1> int +ACE_Message_Queue<ACE_SYNCH_2>::enqueue (ACE_Message_Block *new_item, + ACE_Time_Value *tv) +{ + ACE_TRACE ("ACE_Message_Queue<ACE_SYNCH_2>::enqueue"); + return this->enqueue_prio (new_item, tv); +} + // Block indefinitely waiting for an item to arrive, // does not ignore alerts (e.g., signals). diff --git a/ace/Message_Queue.h b/ace/Message_Queue.h index 31710fdaef8..3be9699395c 100644 --- a/ace/Message_Queue.h +++ b/ace/Message_Queue.h @@ -95,6 +95,11 @@ public: // inserted consecutively. Returns -1 on failure, else the number // of items still on the queue. + int enqueue (ACE_Message_Block *new_item, ACE_Time_Value *tv = 0); + // This is an alias for <enqueue_prio>. It's only here for + // backwards compatibility and will go away in a subsequent release. + // Please use <enqueue_prio> instead. + int enqueue_tail (ACE_Message_Block *new_item, ACE_Time_Value *tv = 0); // Enqueue an <ACE_Message_Block *> at the end of the queue. // Returns -1 on failure, else the number of items still on the diff --git a/ace/Module.cpp b/ace/Module.cpp index eefac725ae7..90fe094ce9c 100644 --- a/ace/Module.cpp +++ b/ace/Module.cpp @@ -179,9 +179,6 @@ ACE_Module<ACE_SYNCH_2>::close (int flags /* = M_DELETE_NONE */) { ACE_TRACE ("ACE_Module<ACE_SYNCH_2>::close"); - ACE_Task<ACE_SYNCH_2> *reader_q = this->reader (); - ACE_Task<ACE_SYNCH_2> *writer_q = this->writer (); - int result = 0; ACE_SET_BITS (flags_, flags); @@ -851,6 +851,7 @@ struct ACE_rwlock_t #define THR_BOUND 0 // ?? ignore in most places #define THR_NEW_LWP 0 // ?? ignore in most places #define THR_SUSPENDED CREATE_SUSPENDED +#endif /* ACE_HAS_DCETHREADS || ACE_HAS_PTHREADS */ #else /* !ACE_HAS_THREADS, i.e., the OS/platform doesn't support threading. */ // Give these things some reasonable value... #define THR_CANCEL_DISABLE 0 @@ -874,7 +875,6 @@ typedef int ACE_rwlock_t; typedef int ACE_thread_t; typedef int ACE_hthread_t; typedef int ACE_thread_key_t; -#endif /* ACE_HAS_DCETHREADS || ACE_HAS_PTHREADS */ #endif /* ACE_HAS_THREADS */ #include /**/ <sys/types.h> @@ -1062,6 +1062,7 @@ typedef void (*ACE_SignalHandlerV)(...); #define ACE_LD_SEARCH_PATH_SEPARATOR_STR ";" #define ACE_LOGGER_KEY __TEXT ("\\temp\\server_daemon") #define ACE_DLL_SUFFIX ".dll" +#define ACE_DLL_PREFIX "" // This will help until we figure out everything: #define NFDBITS 32 // only used in unused functions... @@ -1289,6 +1290,7 @@ typedef char TCHAR; #define ACE_LD_SEARCH_PATH_SEPARATOR_STR ":" #define ACE_LOGGER_KEY "/tmp/server_daemon" #define ACE_DLL_SUFFIX ".so" +#define ACE_DLL_PREFIX "lib" // Wrapper for NT events on UNIX. struct ACE_event_t @@ -2182,6 +2184,8 @@ public: *optval, int *optlen); static long inet_addr (const char *name); static char *inet_ntoa (const struct in_addr addr); + static int inet_aton (const char *strptr, struct in_addr *addr); + static int listen (ACE_HANDLE handle, int backlog); static int recv (ACE_HANDLE handle, char *buf, int len, int flags = 0); static int recvfrom (ACE_HANDLE handle, char *buf, int len, int flags, @@ -2554,7 +2554,6 @@ ACE_OS::inet_addr (const char *name) { // ACE_TRACE ("ACE_OS::inet_addr"); #if defined (VXWORKS) - u_long retval = 0; u_int segment; @@ -2573,9 +2572,7 @@ ACE_OS::inet_addr (const char *name) retval |= segment; if (*name == '.') - { - ++name; - } + ++name; } } return (long) htonl (retval); @@ -2588,6 +2585,19 @@ ACE_OS::inet_addr (const char *name) #endif /* ACE_HAS_NONCONST_GETBY */ } +ACE_INLINE int +ACE_OS::inet_aton (const char *host_name, struct in_addr *addr) +{ + long ip_addr = ACE_OS::inet_addr (host_name); + if (ip_addr == htonl (-1) + // Broadcast addresses are weird... + && ACE_OS::strcmp (host_name, "255.255.255.255") != 0) + return 0; + else if (addr != 0) + ACE_OS::memcpy ((void *) addr, (void *) &ip_addr, sizeof ip_addr); + return 1; +} + ACE_INLINE char * ACE_OS::inet_ntoa (const struct in_addr addr) { diff --git a/ace/Reactor.cpp b/ace/Reactor.cpp index 7733cb2b29a..90c31d832e0 100644 --- a/ace/Reactor.cpp +++ b/ace/Reactor.cpp @@ -1279,6 +1279,9 @@ ACE_Reactor::detach (ACE_HANDLE handle, this->ex_handle_mask_, ACE_Reactor::CLR_MASK); + // Reinitialize the Reactor pointer to 0. + // eh->reactor (0); + if (ACE_BIT_ENABLED (mask, ACE_Event_Handler::DONT_CALL) == 0) eh->handle_close (handle, mask); @@ -1287,8 +1290,6 @@ ACE_Reactor::detach (ACE_HANDLE handle, this->rd_handle_mask_, this->wr_handle_mask_, this->ex_handle_mask_); - // Reinitialize the Reactor pointer to 0. - eh->reactor (0); return 0; } diff --git a/ace/ReactorEx.cpp b/ace/ReactorEx.cpp index 0f67963cfc1..b4ef780446f 100644 --- a/ace/ReactorEx.cpp +++ b/ace/ReactorEx.cpp @@ -64,7 +64,7 @@ ACE_ReactorEx::register_handler (ACE_Event_Handler *eh, int ACE_ReactorEx::remove_handler (ACE_Event_Handler *eh, - ACE_Reactor_Mask mask) + ACE_Reactor_Mask mask) { ACE_GUARD_RETURN (ACE_ReactorEx_Token, ace_mon, this->token_, -1); @@ -79,7 +79,7 @@ ACE_ReactorEx::remove_handler (ACE_Event_Handler *eh, { if (ACE_BIT_ENABLED (mask, ACE_Event_Handler::DONT_CALL) == 0) event_handlers_[index]->handle_close (handle, - ACE_Event_Handler::NULL_MASK); + ACE_Event_Handler::NULL_MASK); // If there was only one handle, reset the pointer to 0. if (this->active_handles_ == 1) diff --git a/ace/Service_Config.cpp b/ace/Service_Config.cpp index 2e7852acef7..cbff406a9cd 100644 --- a/ace/Service_Config.cpp +++ b/ace/Service_Config.cpp @@ -665,8 +665,8 @@ ACE_Service_Config::run_reactor_event_loop (ACE_Time_Value &tv) int result = ACE_Service_Config::reactor ()->handle_events (tv); if (ACE_Service_Config::reconfig_occurred_) ACE_Service_Config::reconfigure (); - else if (result == -1) - return -1; + else if (result <= 0) + return result; } /* NOTREACHED */ @@ -799,8 +799,8 @@ ACE_Service_Config::run_proactor_event_loop (ACE_Time_Value &tv) int result = ACE_Service_Config::proactor ()->handle_events (tv); if (ACE_Service_Config::reconfig_occurred_) ACE_Service_Config::reconfigure (); - else if (result == -1) - return -1; + else if (result <= 0) + return result; } /* NOTREACHED */ @@ -857,8 +857,8 @@ ACE_Service_Config::run_reactorEx_event_loop (ACE_Time_Value &tv) int result = ACE_Service_Config::reactorEx ()->handle_events (tv); if (ACE_Service_Config::reconfig_occurred_) ACE_Service_Config::reconfigure (); - else if (result == -1) - return -1; + else if (result <= 0) + return result; } /* NOTREACHED */ diff --git a/ace/Service_Config.h b/ace/Service_Config.h index a6104b72265..ae7819f18bc 100644 --- a/ace/Service_Config.h +++ b/ace/Service_Config.h @@ -30,6 +30,11 @@ class ACE_Reactor; class ACE_Proactor; class ACE_ReactorEx; +extern "C" +{ +typedef ACE_Service_Object *(*ACE_SERVICE_ALLOCATOR)(void); +} + struct ACE_Static_Svc_Descriptor { char *name_; @@ -38,7 +43,7 @@ struct ACE_Static_Svc_Descriptor int type_; // Type of service. - ACE_Service_Object *(*alloc_)(void); + ACE_SERVICE_ALLOCATOR alloc_; // Factory function that allocates the service. u_int flags_; diff --git a/ace/Thread.h b/ace/Thread.h index 02f8f1d8e46..aab4b61f413 100644 --- a/ace/Thread.h +++ b/ace/Thread.h @@ -98,8 +98,11 @@ public: static void yield (void); // Yield the thread to another. - static void self (ACE_hthread_t &t_id); - // Return the unique kernel ID of the thread. + static void self (ACE_hthread_t &t_handle); + // Return the unique kernel handle of the thread. Note that on + // Win32 this is actually a pseudohandle, which cannot be shared + // with other processes or waited on by threads. To locate the real + // handle, please use the <ACE_Thread_Manager::thr_self> method. static ACE_thread_t self (void); // Return the unique ID of the thread. diff --git a/examples/Reactor/Ntalker/ntalker.cpp b/examples/Reactor/Ntalker/ntalker.cpp index 5c0bc4f395d..3234c201048 100644 --- a/examples/Reactor/Ntalker/ntalker.cpp +++ b/examples/Reactor/Ntalker/ntalker.cpp @@ -8,6 +8,7 @@ #include "ace/INET_Addr.h" #include "ace/SOCK_Dgram_Mcast.h" #include "ace/Reactor.h" +#include "ace/Get_Opt.h" #if defined (ACE_HAS_IP_MULTICAST) // network interface to subscribe to @@ -132,13 +133,15 @@ Handle_Events::Handle_Events (u_short udp_port, static void parse_args (int argc, char *argv[]) { + ACE_Get_Opt get_opt (argc, argv, "i:u"); + int c; - while ((c = ACE_OS::getopt (argc, argv, "i:u")) != -1) + while ((c = get_opt ()) != -1) switch (c) { case 'i': - INTERFACE = optarg; + INTERFACE = get_opt.optarg; break; case 'u': // Usage fallthrough. diff --git a/netsvcs/ACE-netsvcs.html b/netsvcs/ACE-netsvcs.html index f631d1986e4..ee0dc874af6 100644 --- a/netsvcs/ACE-netsvcs.html +++ b/netsvcs/ACE-netsvcs.html @@ -13,8 +13,7 @@ bgcolor="#ffffff"> ACE provides a <A HREF="http://www.cs.wustl.edu/~schmidt/ACE_wrappers/netsvcs/"> -standard library</A> of <A HREF="#service-overviews">network -services</A>:<P> +standard library</A> of network services:<P> <TABLE> <TD> diff --git a/tests/Makefile b/tests/Makefile index 898c70a2560..0146fa70492 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -26,6 +26,7 @@ BIN = Barrier_Test \ Reactor_Timer_Test \ Reader_Writer_Test \ Recursive_Mutex_Test \ + Service_Config_Test \ SPIPE_Test \ SString_Test \ SV_Shared_Memory_Test \ @@ -92,20 +93,12 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/Service_Config.h \ $(WRAPPER_ROOT)/ace/Service_Object.h \ $(WRAPPER_ROOT)/ace/Shared_Object.h \ - $(WRAPPER_ROOT)/ace/Set.h \ - $(WRAPPER_ROOT)/ace/Proactor.h \ - $(WRAPPER_ROOT)/ace/Message_Block.h \ - $(WRAPPER_ROOT)/ace/Malloc.h \ - $(WRAPPER_ROOT)/ace/Malloc_T.h \ - $(WRAPPER_ROOT)/ace/Memory_Pool.h \ $(WRAPPER_ROOT)/ace/Signal.h \ - $(WRAPPER_ROOT)/ace/Mem_Map.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.i \ - $(WRAPPER_ROOT)/ace/ReactorEx.h \ - $(WRAPPER_ROOT)/ace/Token.h \ + $(WRAPPER_ROOT)/ace/Set.h \ $(WRAPPER_ROOT)/ace/Reactor.h \ $(WRAPPER_ROOT)/ace/Handle_Set.h \ + $(WRAPPER_ROOT)/ace/Timer_Queue.h \ + $(WRAPPER_ROOT)/ace/Token.h \ $(WRAPPER_ROOT)/ace/Pipe.h \ $(WRAPPER_ROOT)/ace/Pipe.i \ $(WRAPPER_ROOT)/ace/SOCK_Stream.h \ @@ -119,6 +112,17 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/INET_Addr.h \ $(WRAPPER_ROOT)/ace/SOCK_Stream.i \ $(WRAPPER_ROOT)/ace/Reactor.i \ + $(WRAPPER_ROOT)/ace/Proactor.h \ + $(WRAPPER_ROOT)/ace/Message_Block.h \ + $(WRAPPER_ROOT)/ace/Malloc.h \ + $(WRAPPER_ROOT)/ace/Malloc_T.h \ + $(WRAPPER_ROOT)/ace/Memory_Pool.h \ + $(WRAPPER_ROOT)/ace/Mem_Map.h \ + $(WRAPPER_ROOT)/ace/ReactorEx.h \ + $(WRAPPER_ROOT)/ace/Message_Queue.h \ + $(WRAPPER_ROOT)/ace/IO_Cntl_Msg.h \ + $(WRAPPER_ROOT)/ace/Strategies.h \ + $(WRAPPER_ROOT)/ace/Strategies_T.h \ $(WRAPPER_ROOT)/ace/Svc_Conf_Tokens.h \ test_config.h .obj/Buffer_Stream_Test.o .shobj/Buffer_Stream_Test.so: Buffer_Stream_Test.cpp \ @@ -145,20 +149,12 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/SV_Semaphore_Simple.i \ $(WRAPPER_ROOT)/ace/SV_Semaphore_Complex.i \ $(WRAPPER_ROOT)/ace/Synch_T.h \ - $(WRAPPER_ROOT)/ace/Set.h \ - $(WRAPPER_ROOT)/ace/Proactor.h \ - $(WRAPPER_ROOT)/ace/Message_Block.h \ - $(WRAPPER_ROOT)/ace/Malloc.h \ - $(WRAPPER_ROOT)/ace/Malloc_T.h \ - $(WRAPPER_ROOT)/ace/Memory_Pool.h \ $(WRAPPER_ROOT)/ace/Signal.h \ - $(WRAPPER_ROOT)/ace/Mem_Map.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.i \ - $(WRAPPER_ROOT)/ace/ReactorEx.h \ - $(WRAPPER_ROOT)/ace/Token.h \ + $(WRAPPER_ROOT)/ace/Set.h \ $(WRAPPER_ROOT)/ace/Reactor.h \ $(WRAPPER_ROOT)/ace/Handle_Set.h \ + $(WRAPPER_ROOT)/ace/Timer_Queue.h \ + $(WRAPPER_ROOT)/ace/Token.h \ $(WRAPPER_ROOT)/ace/Pipe.h \ $(WRAPPER_ROOT)/ace/Pipe.i \ $(WRAPPER_ROOT)/ace/SOCK_Stream.h \ @@ -172,13 +168,22 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/INET_Addr.h \ $(WRAPPER_ROOT)/ace/SOCK_Stream.i \ $(WRAPPER_ROOT)/ace/Reactor.i \ + $(WRAPPER_ROOT)/ace/Proactor.h \ + $(WRAPPER_ROOT)/ace/Message_Block.h \ + $(WRAPPER_ROOT)/ace/Malloc.h \ + $(WRAPPER_ROOT)/ace/Malloc_T.h \ + $(WRAPPER_ROOT)/ace/Memory_Pool.h \ + $(WRAPPER_ROOT)/ace/Mem_Map.h \ + $(WRAPPER_ROOT)/ace/ReactorEx.h \ + $(WRAPPER_ROOT)/ace/Message_Queue.h \ + $(WRAPPER_ROOT)/ace/IO_Cntl_Msg.h \ + $(WRAPPER_ROOT)/ace/Strategies.h \ + $(WRAPPER_ROOT)/ace/Strategies_T.h \ $(WRAPPER_ROOT)/ace/Svc_Conf_Tokens.h \ $(WRAPPER_ROOT)/ace/Stream.h \ - $(WRAPPER_ROOT)/ace/IO_Cntl_Msg.h \ $(WRAPPER_ROOT)/ace/Module.h \ $(WRAPPER_ROOT)/ace/Task.h \ $(WRAPPER_ROOT)/ace/Task_T.h \ - $(WRAPPER_ROOT)/ace/Message_Queue.h \ test_config.h .obj/CPP_Test.o .shobj/CPP_Test.so: CPP_Test.cpp \ $(WRAPPER_ROOT)/ace/OS.h \ @@ -204,20 +209,12 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/SV_Semaphore_Simple.i \ $(WRAPPER_ROOT)/ace/SV_Semaphore_Complex.i \ $(WRAPPER_ROOT)/ace/Synch_T.h \ - $(WRAPPER_ROOT)/ace/Set.h \ - $(WRAPPER_ROOT)/ace/Proactor.h \ - $(WRAPPER_ROOT)/ace/Message_Block.h \ - $(WRAPPER_ROOT)/ace/Malloc.h \ - $(WRAPPER_ROOT)/ace/Malloc_T.h \ - $(WRAPPER_ROOT)/ace/Memory_Pool.h \ $(WRAPPER_ROOT)/ace/Signal.h \ - $(WRAPPER_ROOT)/ace/Mem_Map.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.i \ - $(WRAPPER_ROOT)/ace/ReactorEx.h \ - $(WRAPPER_ROOT)/ace/Token.h \ + $(WRAPPER_ROOT)/ace/Set.h \ $(WRAPPER_ROOT)/ace/Reactor.h \ $(WRAPPER_ROOT)/ace/Handle_Set.h \ + $(WRAPPER_ROOT)/ace/Timer_Queue.h \ + $(WRAPPER_ROOT)/ace/Token.h \ $(WRAPPER_ROOT)/ace/Pipe.h \ $(WRAPPER_ROOT)/ace/Pipe.i \ $(WRAPPER_ROOT)/ace/SOCK_Stream.h \ @@ -231,6 +228,17 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/INET_Addr.h \ $(WRAPPER_ROOT)/ace/SOCK_Stream.i \ $(WRAPPER_ROOT)/ace/Reactor.i \ + $(WRAPPER_ROOT)/ace/Proactor.h \ + $(WRAPPER_ROOT)/ace/Message_Block.h \ + $(WRAPPER_ROOT)/ace/Malloc.h \ + $(WRAPPER_ROOT)/ace/Malloc_T.h \ + $(WRAPPER_ROOT)/ace/Memory_Pool.h \ + $(WRAPPER_ROOT)/ace/Mem_Map.h \ + $(WRAPPER_ROOT)/ace/ReactorEx.h \ + $(WRAPPER_ROOT)/ace/Message_Queue.h \ + $(WRAPPER_ROOT)/ace/IO_Cntl_Msg.h \ + $(WRAPPER_ROOT)/ace/Strategies.h \ + $(WRAPPER_ROOT)/ace/Strategies_T.h \ $(WRAPPER_ROOT)/ace/Svc_Conf_Tokens.h \ $(WRAPPER_ROOT)/ace/SOCK_Connector.h \ $(WRAPPER_ROOT)/ace/SOCK_Connector.i \ @@ -270,6 +278,29 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/Set.h \ $(WRAPPER_ROOT)/ace/Mem_Map.h \ $(WRAPPER_ROOT)/ace/IO_Cntl_Msg.h \ + $(WRAPPER_ROOT)/ace/Strategies.h \ + $(WRAPPER_ROOT)/ace/Strategies_T.h \ + $(WRAPPER_ROOT)/ace/Service_Config.h \ + $(WRAPPER_ROOT)/ace/Reactor.h \ + $(WRAPPER_ROOT)/ace/Handle_Set.h \ + $(WRAPPER_ROOT)/ace/Timer_Queue.h \ + $(WRAPPER_ROOT)/ace/Token.h \ + $(WRAPPER_ROOT)/ace/Pipe.h \ + $(WRAPPER_ROOT)/ace/Pipe.i \ + $(WRAPPER_ROOT)/ace/SOCK_Stream.h \ + $(WRAPPER_ROOT)/ace/SOCK_IO.h \ + $(WRAPPER_ROOT)/ace/SOCK.h \ + $(WRAPPER_ROOT)/ace/Addr.h \ + $(WRAPPER_ROOT)/ace/IPC_SAP.h \ + $(WRAPPER_ROOT)/ace/IPC_SAP.i \ + $(WRAPPER_ROOT)/ace/SOCK.i \ + $(WRAPPER_ROOT)/ace/SOCK_IO.i \ + $(WRAPPER_ROOT)/ace/INET_Addr.h \ + $(WRAPPER_ROOT)/ace/SOCK_Stream.i \ + $(WRAPPER_ROOT)/ace/Reactor.i \ + $(WRAPPER_ROOT)/ace/Proactor.h \ + $(WRAPPER_ROOT)/ace/ReactorEx.h \ + $(WRAPPER_ROOT)/ace/Svc_Conf_Tokens.h \ $(WRAPPER_ROOT)/ace/Future.h \ $(WRAPPER_ROOT)/ace/Method_Object.h \ $(WRAPPER_ROOT)/ace/Activation_Queue.h \ @@ -375,6 +406,33 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/Set.h \ $(WRAPPER_ROOT)/ace/Mem_Map.h \ $(WRAPPER_ROOT)/ace/IO_Cntl_Msg.h \ + $(WRAPPER_ROOT)/ace/Strategies.h \ + $(WRAPPER_ROOT)/ace/Strategies_T.h \ + $(WRAPPER_ROOT)/ace/Service_Config.h \ + $(WRAPPER_ROOT)/ace/Service_Object.h \ + $(WRAPPER_ROOT)/ace/Shared_Object.h \ + $(WRAPPER_ROOT)/ace/Thread_Manager.h \ + $(WRAPPER_ROOT)/ace/Thread.h \ + $(WRAPPER_ROOT)/ace/Reactor.h \ + $(WRAPPER_ROOT)/ace/Handle_Set.h \ + $(WRAPPER_ROOT)/ace/Timer_Queue.h \ + $(WRAPPER_ROOT)/ace/Token.h \ + $(WRAPPER_ROOT)/ace/Pipe.h \ + $(WRAPPER_ROOT)/ace/Pipe.i \ + $(WRAPPER_ROOT)/ace/SOCK_Stream.h \ + $(WRAPPER_ROOT)/ace/SOCK_IO.h \ + $(WRAPPER_ROOT)/ace/SOCK.h \ + $(WRAPPER_ROOT)/ace/Addr.h \ + $(WRAPPER_ROOT)/ace/IPC_SAP.h \ + $(WRAPPER_ROOT)/ace/IPC_SAP.i \ + $(WRAPPER_ROOT)/ace/SOCK.i \ + $(WRAPPER_ROOT)/ace/SOCK_IO.i \ + $(WRAPPER_ROOT)/ace/INET_Addr.h \ + $(WRAPPER_ROOT)/ace/SOCK_Stream.i \ + $(WRAPPER_ROOT)/ace/Reactor.i \ + $(WRAPPER_ROOT)/ace/Proactor.h \ + $(WRAPPER_ROOT)/ace/ReactorEx.h \ + $(WRAPPER_ROOT)/ace/Svc_Conf_Tokens.h \ test_config.h .obj/Mutex_Test.o .shobj/Mutex_Test.so: Mutex_Test.cpp \ $(WRAPPER_ROOT)/ace/Service_Config.h \ @@ -400,20 +458,12 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/SV_Semaphore_Simple.i \ $(WRAPPER_ROOT)/ace/SV_Semaphore_Complex.i \ $(WRAPPER_ROOT)/ace/Synch_T.h \ - $(WRAPPER_ROOT)/ace/Set.h \ - $(WRAPPER_ROOT)/ace/Proactor.h \ - $(WRAPPER_ROOT)/ace/Message_Block.h \ - $(WRAPPER_ROOT)/ace/Malloc.h \ - $(WRAPPER_ROOT)/ace/Malloc_T.h \ - $(WRAPPER_ROOT)/ace/Memory_Pool.h \ $(WRAPPER_ROOT)/ace/Signal.h \ - $(WRAPPER_ROOT)/ace/Mem_Map.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.i \ - $(WRAPPER_ROOT)/ace/ReactorEx.h \ - $(WRAPPER_ROOT)/ace/Token.h \ + $(WRAPPER_ROOT)/ace/Set.h \ $(WRAPPER_ROOT)/ace/Reactor.h \ $(WRAPPER_ROOT)/ace/Handle_Set.h \ + $(WRAPPER_ROOT)/ace/Timer_Queue.h \ + $(WRAPPER_ROOT)/ace/Token.h \ $(WRAPPER_ROOT)/ace/Pipe.h \ $(WRAPPER_ROOT)/ace/Pipe.i \ $(WRAPPER_ROOT)/ace/SOCK_Stream.h \ @@ -427,6 +477,17 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/INET_Addr.h \ $(WRAPPER_ROOT)/ace/SOCK_Stream.i \ $(WRAPPER_ROOT)/ace/Reactor.i \ + $(WRAPPER_ROOT)/ace/Proactor.h \ + $(WRAPPER_ROOT)/ace/Message_Block.h \ + $(WRAPPER_ROOT)/ace/Malloc.h \ + $(WRAPPER_ROOT)/ace/Malloc_T.h \ + $(WRAPPER_ROOT)/ace/Memory_Pool.h \ + $(WRAPPER_ROOT)/ace/Mem_Map.h \ + $(WRAPPER_ROOT)/ace/ReactorEx.h \ + $(WRAPPER_ROOT)/ace/Message_Queue.h \ + $(WRAPPER_ROOT)/ace/IO_Cntl_Msg.h \ + $(WRAPPER_ROOT)/ace/Strategies.h \ + $(WRAPPER_ROOT)/ace/Strategies_T.h \ $(WRAPPER_ROOT)/ace/Svc_Conf_Tokens.h \ test_config.h .obj/Naming_Test.o .shobj/Naming_Test.so: Naming_Test.cpp \ @@ -469,27 +530,52 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/SV_Semaphore_Simple.i \ $(WRAPPER_ROOT)/ace/SV_Semaphore_Complex.i \ $(WRAPPER_ROOT)/ace/Synch_T.h \ + $(WRAPPER_ROOT)/ace/Signal.h \ + $(WRAPPER_ROOT)/ace/Reactor.h \ + $(WRAPPER_ROOT)/ace/Handle_Set.h \ + $(WRAPPER_ROOT)/ace/Timer_Queue.h \ + $(WRAPPER_ROOT)/ace/Token.h \ + $(WRAPPER_ROOT)/ace/Pipe.h \ + $(WRAPPER_ROOT)/ace/Pipe.i \ + $(WRAPPER_ROOT)/ace/Reactor.i \ $(WRAPPER_ROOT)/ace/Proactor.h \ $(WRAPPER_ROOT)/ace/Message_Block.h \ $(WRAPPER_ROOT)/ace/Malloc.h \ $(WRAPPER_ROOT)/ace/Malloc_T.h \ $(WRAPPER_ROOT)/ace/Memory_Pool.h \ - $(WRAPPER_ROOT)/ace/Signal.h \ $(WRAPPER_ROOT)/ace/Mem_Map.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.i \ $(WRAPPER_ROOT)/ace/ReactorEx.h \ - $(WRAPPER_ROOT)/ace/Token.h \ - $(WRAPPER_ROOT)/ace/Reactor.h \ - $(WRAPPER_ROOT)/ace/Handle_Set.h \ - $(WRAPPER_ROOT)/ace/Pipe.h \ - $(WRAPPER_ROOT)/ace/Pipe.i \ - $(WRAPPER_ROOT)/ace/Reactor.i \ + $(WRAPPER_ROOT)/ace/Message_Queue.h \ + $(WRAPPER_ROOT)/ace/IO_Cntl_Msg.h \ + $(WRAPPER_ROOT)/ace/Strategies.h \ + $(WRAPPER_ROOT)/ace/Strategies_T.h \ $(WRAPPER_ROOT)/ace/Svc_Conf_Tokens.h \ $(WRAPPER_ROOT)/ace/Synch_Options.h \ $(WRAPPER_ROOT)/ace/Name_Request_Reply.h \ $(WRAPPER_ROOT)/ace/Name_Space.h \ test_config.h +.obj/Process_Mutex_Test.o .shobj/Process_Mutex_Test.so: Process_Mutex_Test.cpp \ + $(WRAPPER_ROOT)/ace/Synch.h \ + $(WRAPPER_ROOT)/ace/ACE.h \ + $(WRAPPER_ROOT)/ace/OS.h \ + $(WRAPPER_ROOT)/ace/Time_Value.h \ + $(WRAPPER_ROOT)/ace/config.h \ + $(WRAPPER_ROOT)/ace/stdcpp.h \ + $(WRAPPER_ROOT)/ace/Trace.h \ + $(WRAPPER_ROOT)/ace/Log_Msg.h \ + $(WRAPPER_ROOT)/ace/Log_Record.h \ + $(WRAPPER_ROOT)/ace/Log_Priority.h \ + $(WRAPPER_ROOT)/ace/Log_Record.i \ + $(WRAPPER_ROOT)/ace/ACE.i \ + $(WRAPPER_ROOT)/ace/SV_Semaphore_Complex.h \ + $(WRAPPER_ROOT)/ace/SV_Semaphore_Simple.h \ + $(WRAPPER_ROOT)/ace/SV_Semaphore_Simple.i \ + $(WRAPPER_ROOT)/ace/SV_Semaphore_Complex.i \ + $(WRAPPER_ROOT)/ace/Synch_T.h \ + $(WRAPPER_ROOT)/ace/Event_Handler.h \ + $(WRAPPER_ROOT)/ace/Process.h \ + $(WRAPPER_ROOT)/ace/Get_Opt.h \ + test_config.h .obj/Priority_Buffer_Test.o .shobj/Priority_Buffer_Test.so: Priority_Buffer_Test.cpp \ $(WRAPPER_ROOT)/ace/Message_Queue.h \ $(WRAPPER_ROOT)/ace/Message_Block.h \ @@ -518,18 +604,17 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/Set.h \ $(WRAPPER_ROOT)/ace/Mem_Map.h \ $(WRAPPER_ROOT)/ace/IO_Cntl_Msg.h \ + $(WRAPPER_ROOT)/ace/Strategies.h \ + $(WRAPPER_ROOT)/ace/Strategies_T.h \ $(WRAPPER_ROOT)/ace/Service_Config.h \ $(WRAPPER_ROOT)/ace/Service_Object.h \ $(WRAPPER_ROOT)/ace/Shared_Object.h \ $(WRAPPER_ROOT)/ace/Thread_Manager.h \ $(WRAPPER_ROOT)/ace/Thread.h \ - $(WRAPPER_ROOT)/ace/Proactor.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.i \ - $(WRAPPER_ROOT)/ace/ReactorEx.h \ - $(WRAPPER_ROOT)/ace/Token.h \ $(WRAPPER_ROOT)/ace/Reactor.h \ $(WRAPPER_ROOT)/ace/Handle_Set.h \ + $(WRAPPER_ROOT)/ace/Timer_Queue.h \ + $(WRAPPER_ROOT)/ace/Token.h \ $(WRAPPER_ROOT)/ace/Pipe.h \ $(WRAPPER_ROOT)/ace/Pipe.i \ $(WRAPPER_ROOT)/ace/SOCK_Stream.h \ @@ -543,6 +628,8 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/INET_Addr.h \ $(WRAPPER_ROOT)/ace/SOCK_Stream.i \ $(WRAPPER_ROOT)/ace/Reactor.i \ + $(WRAPPER_ROOT)/ace/Proactor.h \ + $(WRAPPER_ROOT)/ace/ReactorEx.h \ $(WRAPPER_ROOT)/ace/Svc_Conf_Tokens.h \ test_config.h .obj/Pipe_Test.o .shobj/Pipe_Test.so: Pipe_Test.cpp \ @@ -560,6 +647,7 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/ACE.i \ $(WRAPPER_ROOT)/ace/Pipe.i \ $(WRAPPER_ROOT)/ace/Process.h \ + $(WRAPPER_ROOT)/ace/Get_Opt.h \ test_config.h .obj/Reactors_Test.o .shobj/Reactors_Test.so: Reactors_Test.cpp \ $(WRAPPER_ROOT)/ace/Reactor.h \ @@ -583,7 +671,6 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/SV_Semaphore_Simple.i \ $(WRAPPER_ROOT)/ace/SV_Semaphore_Complex.i \ $(WRAPPER_ROOT)/ace/Synch_T.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.i \ $(WRAPPER_ROOT)/ace/Signal.h \ $(WRAPPER_ROOT)/ace/Set.h \ $(WRAPPER_ROOT)/ace/Thread.h \ @@ -612,11 +699,13 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/Memory_Pool.h \ $(WRAPPER_ROOT)/ace/Mem_Map.h \ $(WRAPPER_ROOT)/ace/ReactorEx.h \ + $(WRAPPER_ROOT)/ace/Message_Queue.h \ + $(WRAPPER_ROOT)/ace/IO_Cntl_Msg.h \ + $(WRAPPER_ROOT)/ace/Strategies.h \ + $(WRAPPER_ROOT)/ace/Strategies_T.h \ $(WRAPPER_ROOT)/ace/Svc_Conf_Tokens.h \ $(WRAPPER_ROOT)/ace/Task.h \ $(WRAPPER_ROOT)/ace/Task_T.h \ - $(WRAPPER_ROOT)/ace/Message_Queue.h \ - $(WRAPPER_ROOT)/ace/IO_Cntl_Msg.h \ test_config.h .obj/Reactor_Timer_Test.o .shobj/Reactor_Timer_Test.so: Reactor_Timer_Test.cpp \ $(WRAPPER_ROOT)/ace/Timer_Queue.h \ @@ -638,7 +727,6 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/SV_Semaphore_Simple.i \ $(WRAPPER_ROOT)/ace/SV_Semaphore_Complex.i \ $(WRAPPER_ROOT)/ace/Synch_T.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.i \ $(WRAPPER_ROOT)/ace/Reactor.h \ $(WRAPPER_ROOT)/ace/Handle_Set.h \ $(WRAPPER_ROOT)/ace/Signal.h \ @@ -683,20 +771,12 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/Service_Object.h \ $(WRAPPER_ROOT)/ace/Shared_Object.h \ $(WRAPPER_ROOT)/ace/Thread_Manager.h \ - $(WRAPPER_ROOT)/ace/Set.h \ - $(WRAPPER_ROOT)/ace/Proactor.h \ - $(WRAPPER_ROOT)/ace/Message_Block.h \ - $(WRAPPER_ROOT)/ace/Malloc.h \ - $(WRAPPER_ROOT)/ace/Malloc_T.h \ - $(WRAPPER_ROOT)/ace/Memory_Pool.h \ $(WRAPPER_ROOT)/ace/Signal.h \ - $(WRAPPER_ROOT)/ace/Mem_Map.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.i \ - $(WRAPPER_ROOT)/ace/ReactorEx.h \ - $(WRAPPER_ROOT)/ace/Token.h \ + $(WRAPPER_ROOT)/ace/Set.h \ $(WRAPPER_ROOT)/ace/Reactor.h \ $(WRAPPER_ROOT)/ace/Handle_Set.h \ + $(WRAPPER_ROOT)/ace/Timer_Queue.h \ + $(WRAPPER_ROOT)/ace/Token.h \ $(WRAPPER_ROOT)/ace/Pipe.h \ $(WRAPPER_ROOT)/ace/Pipe.i \ $(WRAPPER_ROOT)/ace/SOCK_Stream.h \ @@ -710,6 +790,17 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/INET_Addr.h \ $(WRAPPER_ROOT)/ace/SOCK_Stream.i \ $(WRAPPER_ROOT)/ace/Reactor.i \ + $(WRAPPER_ROOT)/ace/Proactor.h \ + $(WRAPPER_ROOT)/ace/Message_Block.h \ + $(WRAPPER_ROOT)/ace/Malloc.h \ + $(WRAPPER_ROOT)/ace/Malloc_T.h \ + $(WRAPPER_ROOT)/ace/Memory_Pool.h \ + $(WRAPPER_ROOT)/ace/Mem_Map.h \ + $(WRAPPER_ROOT)/ace/ReactorEx.h \ + $(WRAPPER_ROOT)/ace/Message_Queue.h \ + $(WRAPPER_ROOT)/ace/IO_Cntl_Msg.h \ + $(WRAPPER_ROOT)/ace/Strategies.h \ + $(WRAPPER_ROOT)/ace/Strategies_T.h \ $(WRAPPER_ROOT)/ace/Svc_Conf_Tokens.h \ $(WRAPPER_ROOT)/ace/Get_Opt.h \ test_config.h @@ -737,20 +828,69 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/SV_Semaphore_Simple.i \ $(WRAPPER_ROOT)/ace/SV_Semaphore_Complex.i \ $(WRAPPER_ROOT)/ace/Synch_T.h \ + $(WRAPPER_ROOT)/ace/Signal.h \ $(WRAPPER_ROOT)/ace/Set.h \ + $(WRAPPER_ROOT)/ace/Reactor.h \ + $(WRAPPER_ROOT)/ace/Handle_Set.h \ + $(WRAPPER_ROOT)/ace/Timer_Queue.h \ + $(WRAPPER_ROOT)/ace/Token.h \ + $(WRAPPER_ROOT)/ace/Pipe.h \ + $(WRAPPER_ROOT)/ace/Pipe.i \ + $(WRAPPER_ROOT)/ace/SOCK_Stream.h \ + $(WRAPPER_ROOT)/ace/SOCK_IO.h \ + $(WRAPPER_ROOT)/ace/SOCK.h \ + $(WRAPPER_ROOT)/ace/Addr.h \ + $(WRAPPER_ROOT)/ace/IPC_SAP.h \ + $(WRAPPER_ROOT)/ace/IPC_SAP.i \ + $(WRAPPER_ROOT)/ace/SOCK.i \ + $(WRAPPER_ROOT)/ace/SOCK_IO.i \ + $(WRAPPER_ROOT)/ace/INET_Addr.h \ + $(WRAPPER_ROOT)/ace/SOCK_Stream.i \ + $(WRAPPER_ROOT)/ace/Reactor.i \ $(WRAPPER_ROOT)/ace/Proactor.h \ $(WRAPPER_ROOT)/ace/Message_Block.h \ $(WRAPPER_ROOT)/ace/Malloc.h \ $(WRAPPER_ROOT)/ace/Malloc_T.h \ $(WRAPPER_ROOT)/ace/Memory_Pool.h \ - $(WRAPPER_ROOT)/ace/Signal.h \ $(WRAPPER_ROOT)/ace/Mem_Map.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.i \ $(WRAPPER_ROOT)/ace/ReactorEx.h \ - $(WRAPPER_ROOT)/ace/Token.h \ + $(WRAPPER_ROOT)/ace/Message_Queue.h \ + $(WRAPPER_ROOT)/ace/IO_Cntl_Msg.h \ + $(WRAPPER_ROOT)/ace/Strategies.h \ + $(WRAPPER_ROOT)/ace/Strategies_T.h \ + $(WRAPPER_ROOT)/ace/Svc_Conf_Tokens.h \ + $(WRAPPER_ROOT)/ace/Get_Opt.h \ + test_config.h +.obj/Service_Config_Test.o .shobj/Service_Config_Test.so: Service_Config_Test.cpp \ + $(WRAPPER_ROOT)/ace/Service_Config.h \ + $(WRAPPER_ROOT)/ace/Service_Object.h \ + $(WRAPPER_ROOT)/ace/Shared_Object.h \ + $(WRAPPER_ROOT)/ace/ACE.h \ + $(WRAPPER_ROOT)/ace/OS.h \ + $(WRAPPER_ROOT)/ace/Time_Value.h \ + $(WRAPPER_ROOT)/ace/config.h \ + $(WRAPPER_ROOT)/ace/stdcpp.h \ + $(WRAPPER_ROOT)/ace/Trace.h \ + $(WRAPPER_ROOT)/ace/Log_Msg.h \ + $(WRAPPER_ROOT)/ace/Log_Record.h \ + $(WRAPPER_ROOT)/ace/Log_Priority.h \ + $(WRAPPER_ROOT)/ace/Log_Record.i \ + $(WRAPPER_ROOT)/ace/ACE.i \ + $(WRAPPER_ROOT)/ace/Event_Handler.h \ + $(WRAPPER_ROOT)/ace/Thread_Manager.h \ + $(WRAPPER_ROOT)/ace/Thread.h \ + $(WRAPPER_ROOT)/ace/Synch.h \ + $(WRAPPER_ROOT)/ace/SV_Semaphore_Complex.h \ + $(WRAPPER_ROOT)/ace/SV_Semaphore_Simple.h \ + $(WRAPPER_ROOT)/ace/SV_Semaphore_Simple.i \ + $(WRAPPER_ROOT)/ace/SV_Semaphore_Complex.i \ + $(WRAPPER_ROOT)/ace/Synch_T.h \ + $(WRAPPER_ROOT)/ace/Signal.h \ + $(WRAPPER_ROOT)/ace/Set.h \ $(WRAPPER_ROOT)/ace/Reactor.h \ $(WRAPPER_ROOT)/ace/Handle_Set.h \ + $(WRAPPER_ROOT)/ace/Timer_Queue.h \ + $(WRAPPER_ROOT)/ace/Token.h \ $(WRAPPER_ROOT)/ace/Pipe.h \ $(WRAPPER_ROOT)/ace/Pipe.i \ $(WRAPPER_ROOT)/ace/SOCK_Stream.h \ @@ -764,9 +904,18 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/INET_Addr.h \ $(WRAPPER_ROOT)/ace/SOCK_Stream.i \ $(WRAPPER_ROOT)/ace/Reactor.i \ - $(WRAPPER_ROOT)/ace/Svc_Conf_Tokens.h \ - $(WRAPPER_ROOT)/ace/Get_Opt.h \ - test_config.h + $(WRAPPER_ROOT)/ace/Proactor.h \ + $(WRAPPER_ROOT)/ace/Message_Block.h \ + $(WRAPPER_ROOT)/ace/Malloc.h \ + $(WRAPPER_ROOT)/ace/Malloc_T.h \ + $(WRAPPER_ROOT)/ace/Memory_Pool.h \ + $(WRAPPER_ROOT)/ace/Mem_Map.h \ + $(WRAPPER_ROOT)/ace/ReactorEx.h \ + $(WRAPPER_ROOT)/ace/Message_Queue.h \ + $(WRAPPER_ROOT)/ace/IO_Cntl_Msg.h \ + $(WRAPPER_ROOT)/ace/Strategies.h \ + $(WRAPPER_ROOT)/ace/Strategies_T.h \ + $(WRAPPER_ROOT)/ace/Svc_Conf_Tokens.h .obj/SPIPE_Test.o .shobj/SPIPE_Test.so: SPIPE_Test.cpp \ $(WRAPPER_ROOT)/ace/OS.h \ $(WRAPPER_ROOT)/ace/Time_Value.h \ @@ -814,6 +963,8 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/Log_Record.i \ $(WRAPPER_ROOT)/ace/ACE.i test_config.h .obj/SV_Shared_Memory_Test.o .shobj/SV_Shared_Memory_Test.so: SV_Shared_Memory_Test.cpp \ + $(WRAPPER_ROOT)/ace/Malloc.h \ + $(WRAPPER_ROOT)/ace/ACE.h \ $(WRAPPER_ROOT)/ace/OS.h \ $(WRAPPER_ROOT)/ace/Time_Value.h \ $(WRAPPER_ROOT)/ace/config.h \ @@ -822,10 +973,20 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/Log_Msg.h \ $(WRAPPER_ROOT)/ace/Log_Record.h \ $(WRAPPER_ROOT)/ace/Log_Priority.h \ - $(WRAPPER_ROOT)/ace/ACE.h \ - $(WRAPPER_ROOT)/ace/ACE.i \ $(WRAPPER_ROOT)/ace/Log_Record.i \ - $(WRAPPER_ROOT)/ace/SV_Shared_Memory.h \ + $(WRAPPER_ROOT)/ace/ACE.i \ + $(WRAPPER_ROOT)/ace/Malloc_T.h \ + $(WRAPPER_ROOT)/ace/Synch.h \ + $(WRAPPER_ROOT)/ace/SV_Semaphore_Complex.h \ + $(WRAPPER_ROOT)/ace/SV_Semaphore_Simple.h \ + $(WRAPPER_ROOT)/ace/SV_Semaphore_Simple.i \ + $(WRAPPER_ROOT)/ace/SV_Semaphore_Complex.i \ + $(WRAPPER_ROOT)/ace/Synch_T.h \ + $(WRAPPER_ROOT)/ace/Event_Handler.h \ + $(WRAPPER_ROOT)/ace/Memory_Pool.h \ + $(WRAPPER_ROOT)/ace/Signal.h \ + $(WRAPPER_ROOT)/ace/Set.h \ + $(WRAPPER_ROOT)/ace/Mem_Map.h \ test_config.h .obj/Task_Test.o .shobj/Task_Test.so: Task_Test.cpp \ $(WRAPPER_ROOT)/ace/Service_Config.h \ @@ -851,20 +1012,12 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/SV_Semaphore_Simple.i \ $(WRAPPER_ROOT)/ace/SV_Semaphore_Complex.i \ $(WRAPPER_ROOT)/ace/Synch_T.h \ - $(WRAPPER_ROOT)/ace/Set.h \ - $(WRAPPER_ROOT)/ace/Proactor.h \ - $(WRAPPER_ROOT)/ace/Message_Block.h \ - $(WRAPPER_ROOT)/ace/Malloc.h \ - $(WRAPPER_ROOT)/ace/Malloc_T.h \ - $(WRAPPER_ROOT)/ace/Memory_Pool.h \ $(WRAPPER_ROOT)/ace/Signal.h \ - $(WRAPPER_ROOT)/ace/Mem_Map.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.i \ - $(WRAPPER_ROOT)/ace/ReactorEx.h \ - $(WRAPPER_ROOT)/ace/Token.h \ + $(WRAPPER_ROOT)/ace/Set.h \ $(WRAPPER_ROOT)/ace/Reactor.h \ $(WRAPPER_ROOT)/ace/Handle_Set.h \ + $(WRAPPER_ROOT)/ace/Timer_Queue.h \ + $(WRAPPER_ROOT)/ace/Token.h \ $(WRAPPER_ROOT)/ace/Pipe.h \ $(WRAPPER_ROOT)/ace/Pipe.i \ $(WRAPPER_ROOT)/ace/SOCK_Stream.h \ @@ -878,11 +1031,20 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/INET_Addr.h \ $(WRAPPER_ROOT)/ace/SOCK_Stream.i \ $(WRAPPER_ROOT)/ace/Reactor.i \ + $(WRAPPER_ROOT)/ace/Proactor.h \ + $(WRAPPER_ROOT)/ace/Message_Block.h \ + $(WRAPPER_ROOT)/ace/Malloc.h \ + $(WRAPPER_ROOT)/ace/Malloc_T.h \ + $(WRAPPER_ROOT)/ace/Memory_Pool.h \ + $(WRAPPER_ROOT)/ace/Mem_Map.h \ + $(WRAPPER_ROOT)/ace/ReactorEx.h \ + $(WRAPPER_ROOT)/ace/Message_Queue.h \ + $(WRAPPER_ROOT)/ace/IO_Cntl_Msg.h \ + $(WRAPPER_ROOT)/ace/Strategies.h \ + $(WRAPPER_ROOT)/ace/Strategies_T.h \ $(WRAPPER_ROOT)/ace/Svc_Conf_Tokens.h \ $(WRAPPER_ROOT)/ace/Task.h \ $(WRAPPER_ROOT)/ace/Task_T.h \ - $(WRAPPER_ROOT)/ace/Message_Queue.h \ - $(WRAPPER_ROOT)/ace/IO_Cntl_Msg.h \ test_config.h .obj/Thread_Manager_Test.o .shobj/Thread_Manager_Test.so: Thread_Manager_Test.cpp \ $(WRAPPER_ROOT)/ace/Service_Config.h \ @@ -908,20 +1070,12 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/SV_Semaphore_Simple.i \ $(WRAPPER_ROOT)/ace/SV_Semaphore_Complex.i \ $(WRAPPER_ROOT)/ace/Synch_T.h \ - $(WRAPPER_ROOT)/ace/Set.h \ - $(WRAPPER_ROOT)/ace/Proactor.h \ - $(WRAPPER_ROOT)/ace/Message_Block.h \ - $(WRAPPER_ROOT)/ace/Malloc.h \ - $(WRAPPER_ROOT)/ace/Malloc_T.h \ - $(WRAPPER_ROOT)/ace/Memory_Pool.h \ $(WRAPPER_ROOT)/ace/Signal.h \ - $(WRAPPER_ROOT)/ace/Mem_Map.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.i \ - $(WRAPPER_ROOT)/ace/ReactorEx.h \ - $(WRAPPER_ROOT)/ace/Token.h \ + $(WRAPPER_ROOT)/ace/Set.h \ $(WRAPPER_ROOT)/ace/Reactor.h \ $(WRAPPER_ROOT)/ace/Handle_Set.h \ + $(WRAPPER_ROOT)/ace/Timer_Queue.h \ + $(WRAPPER_ROOT)/ace/Token.h \ $(WRAPPER_ROOT)/ace/Pipe.h \ $(WRAPPER_ROOT)/ace/Pipe.i \ $(WRAPPER_ROOT)/ace/SOCK_Stream.h \ @@ -935,6 +1089,17 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/INET_Addr.h \ $(WRAPPER_ROOT)/ace/SOCK_Stream.i \ $(WRAPPER_ROOT)/ace/Reactor.i \ + $(WRAPPER_ROOT)/ace/Proactor.h \ + $(WRAPPER_ROOT)/ace/Message_Block.h \ + $(WRAPPER_ROOT)/ace/Malloc.h \ + $(WRAPPER_ROOT)/ace/Malloc_T.h \ + $(WRAPPER_ROOT)/ace/Memory_Pool.h \ + $(WRAPPER_ROOT)/ace/Mem_Map.h \ + $(WRAPPER_ROOT)/ace/ReactorEx.h \ + $(WRAPPER_ROOT)/ace/Message_Queue.h \ + $(WRAPPER_ROOT)/ace/IO_Cntl_Msg.h \ + $(WRAPPER_ROOT)/ace/Strategies.h \ + $(WRAPPER_ROOT)/ace/Strategies_T.h \ $(WRAPPER_ROOT)/ace/Svc_Conf_Tokens.h \ test_config.h .obj/Thread_Pool_Test.o .shobj/Thread_Pool_Test.so: Thread_Pool_Test.cpp \ @@ -971,14 +1136,13 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/Set.h \ $(WRAPPER_ROOT)/ace/Mem_Map.h \ $(WRAPPER_ROOT)/ace/IO_Cntl_Msg.h \ + $(WRAPPER_ROOT)/ace/Strategies.h \ + $(WRAPPER_ROOT)/ace/Strategies_T.h \ $(WRAPPER_ROOT)/ace/Service_Config.h \ - $(WRAPPER_ROOT)/ace/Proactor.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.i \ - $(WRAPPER_ROOT)/ace/ReactorEx.h \ - $(WRAPPER_ROOT)/ace/Token.h \ $(WRAPPER_ROOT)/ace/Reactor.h \ $(WRAPPER_ROOT)/ace/Handle_Set.h \ + $(WRAPPER_ROOT)/ace/Timer_Queue.h \ + $(WRAPPER_ROOT)/ace/Token.h \ $(WRAPPER_ROOT)/ace/Pipe.h \ $(WRAPPER_ROOT)/ace/Pipe.i \ $(WRAPPER_ROOT)/ace/SOCK_Stream.h \ @@ -992,6 +1156,8 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/INET_Addr.h \ $(WRAPPER_ROOT)/ace/SOCK_Stream.i \ $(WRAPPER_ROOT)/ace/Reactor.i \ + $(WRAPPER_ROOT)/ace/Proactor.h \ + $(WRAPPER_ROOT)/ace/ReactorEx.h \ $(WRAPPER_ROOT)/ace/Svc_Conf_Tokens.h \ test_config.h .obj/Time_Service_Test.o .shobj/Time_Service_Test.so: Time_Service_Test.cpp \ @@ -1040,7 +1206,6 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/SV_Semaphore_Simple.i \ $(WRAPPER_ROOT)/ace/SV_Semaphore_Complex.i \ $(WRAPPER_ROOT)/ace/Synch_T.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.i \ test_config.h .obj/Tokens_Test.o .shobj/Tokens_Test.so: Tokens_Test.cpp \ $(WRAPPER_ROOT)/ace/OS.h \ @@ -1088,23 +1253,26 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/Service_Config.h \ $(WRAPPER_ROOT)/ace/Service_Object.h \ $(WRAPPER_ROOT)/ace/Shared_Object.h \ + $(WRAPPER_ROOT)/ace/Signal.h \ $(WRAPPER_ROOT)/ace/Set.h \ + $(WRAPPER_ROOT)/ace/Reactor.h \ + $(WRAPPER_ROOT)/ace/Handle_Set.h \ + $(WRAPPER_ROOT)/ace/Timer_Queue.h \ + $(WRAPPER_ROOT)/ace/Token.h \ + $(WRAPPER_ROOT)/ace/Pipe.h \ + $(WRAPPER_ROOT)/ace/Pipe.i \ + $(WRAPPER_ROOT)/ace/Reactor.i \ $(WRAPPER_ROOT)/ace/Proactor.h \ $(WRAPPER_ROOT)/ace/Message_Block.h \ $(WRAPPER_ROOT)/ace/Malloc.h \ $(WRAPPER_ROOT)/ace/Malloc_T.h \ $(WRAPPER_ROOT)/ace/Memory_Pool.h \ - $(WRAPPER_ROOT)/ace/Signal.h \ $(WRAPPER_ROOT)/ace/Mem_Map.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.i \ $(WRAPPER_ROOT)/ace/ReactorEx.h \ - $(WRAPPER_ROOT)/ace/Token.h \ - $(WRAPPER_ROOT)/ace/Reactor.h \ - $(WRAPPER_ROOT)/ace/Handle_Set.h \ - $(WRAPPER_ROOT)/ace/Pipe.h \ - $(WRAPPER_ROOT)/ace/Pipe.i \ - $(WRAPPER_ROOT)/ace/Reactor.i \ + $(WRAPPER_ROOT)/ace/Message_Queue.h \ + $(WRAPPER_ROOT)/ace/IO_Cntl_Msg.h \ + $(WRAPPER_ROOT)/ace/Strategies.h \ + $(WRAPPER_ROOT)/ace/Strategies_T.h \ $(WRAPPER_ROOT)/ace/Svc_Conf_Tokens.h \ $(WRAPPER_ROOT)/ace/Token_Invariants.h \ test_config.h @@ -1132,20 +1300,12 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/SV_Semaphore_Simple.i \ $(WRAPPER_ROOT)/ace/SV_Semaphore_Complex.i \ $(WRAPPER_ROOT)/ace/Synch_T.h \ - $(WRAPPER_ROOT)/ace/Set.h \ - $(WRAPPER_ROOT)/ace/Proactor.h \ - $(WRAPPER_ROOT)/ace/Message_Block.h \ - $(WRAPPER_ROOT)/ace/Malloc.h \ - $(WRAPPER_ROOT)/ace/Malloc_T.h \ - $(WRAPPER_ROOT)/ace/Memory_Pool.h \ $(WRAPPER_ROOT)/ace/Signal.h \ - $(WRAPPER_ROOT)/ace/Mem_Map.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.i \ - $(WRAPPER_ROOT)/ace/ReactorEx.h \ - $(WRAPPER_ROOT)/ace/Token.h \ + $(WRAPPER_ROOT)/ace/Set.h \ $(WRAPPER_ROOT)/ace/Reactor.h \ $(WRAPPER_ROOT)/ace/Handle_Set.h \ + $(WRAPPER_ROOT)/ace/Timer_Queue.h \ + $(WRAPPER_ROOT)/ace/Token.h \ $(WRAPPER_ROOT)/ace/Pipe.h \ $(WRAPPER_ROOT)/ace/Pipe.i \ $(WRAPPER_ROOT)/ace/SOCK_Stream.h \ @@ -1159,6 +1319,17 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/INET_Addr.h \ $(WRAPPER_ROOT)/ace/SOCK_Stream.i \ $(WRAPPER_ROOT)/ace/Reactor.i \ + $(WRAPPER_ROOT)/ace/Proactor.h \ + $(WRAPPER_ROOT)/ace/Message_Block.h \ + $(WRAPPER_ROOT)/ace/Malloc.h \ + $(WRAPPER_ROOT)/ace/Malloc_T.h \ + $(WRAPPER_ROOT)/ace/Memory_Pool.h \ + $(WRAPPER_ROOT)/ace/Mem_Map.h \ + $(WRAPPER_ROOT)/ace/ReactorEx.h \ + $(WRAPPER_ROOT)/ace/Message_Queue.h \ + $(WRAPPER_ROOT)/ace/IO_Cntl_Msg.h \ + $(WRAPPER_ROOT)/ace/Strategies.h \ + $(WRAPPER_ROOT)/ace/Strategies_T.h \ $(WRAPPER_ROOT)/ace/Svc_Conf_Tokens.h \ test_config.h .obj/UPIPE_SAP_Test.o .shobj/UPIPE_SAP_Test.so: UPIPE_SAP_Test.cpp \ @@ -1197,40 +1368,41 @@ include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU $(WRAPPER_ROOT)/ace/Thread.h \ $(WRAPPER_ROOT)/ace/Task_T.h \ $(WRAPPER_ROOT)/ace/Message_Queue.h \ - $(WRAPPER_ROOT)/ace/UPIPE_Acceptor.h \ - $(WRAPPER_ROOT)/ace/UPIPE_Stream.h \ - $(WRAPPER_ROOT)/ace/SPIPE.h \ - $(WRAPPER_ROOT)/ace/IPC_SAP.h \ - $(WRAPPER_ROOT)/ace/IPC_SAP.i \ - $(WRAPPER_ROOT)/ace/SPIPE_Addr.h \ - $(WRAPPER_ROOT)/ace/Addr.h \ - $(WRAPPER_ROOT)/ace/SPIPE.i \ - $(WRAPPER_ROOT)/ace/UPIPE_Addr.h \ - $(WRAPPER_ROOT)/ace/SPIPE_Acceptor.h \ - $(WRAPPER_ROOT)/ace/SPIPE_Stream.h \ - $(WRAPPER_ROOT)/ace/SPIPE_Stream.i \ - $(WRAPPER_ROOT)/ace/UPIPE_Acceptor.i \ - $(WRAPPER_ROOT)/ace/UPIPE_Connector.h \ - $(WRAPPER_ROOT)/ace/UPIPE_Connector.i \ + $(WRAPPER_ROOT)/ace/Strategies.h \ + $(WRAPPER_ROOT)/ace/Strategies_T.h \ $(WRAPPER_ROOT)/ace/Service_Config.h \ - $(WRAPPER_ROOT)/ace/Proactor.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.h \ - $(WRAPPER_ROOT)/ace/Timer_Queue.i \ - $(WRAPPER_ROOT)/ace/ReactorEx.h \ - $(WRAPPER_ROOT)/ace/Token.h \ $(WRAPPER_ROOT)/ace/Reactor.h \ $(WRAPPER_ROOT)/ace/Handle_Set.h \ + $(WRAPPER_ROOT)/ace/Timer_Queue.h \ + $(WRAPPER_ROOT)/ace/Token.h \ $(WRAPPER_ROOT)/ace/Pipe.h \ $(WRAPPER_ROOT)/ace/Pipe.i \ $(WRAPPER_ROOT)/ace/SOCK_Stream.h \ $(WRAPPER_ROOT)/ace/SOCK_IO.h \ $(WRAPPER_ROOT)/ace/SOCK.h \ + $(WRAPPER_ROOT)/ace/Addr.h \ + $(WRAPPER_ROOT)/ace/IPC_SAP.h \ + $(WRAPPER_ROOT)/ace/IPC_SAP.i \ $(WRAPPER_ROOT)/ace/SOCK.i \ $(WRAPPER_ROOT)/ace/SOCK_IO.i \ $(WRAPPER_ROOT)/ace/INET_Addr.h \ $(WRAPPER_ROOT)/ace/SOCK_Stream.i \ $(WRAPPER_ROOT)/ace/Reactor.i \ + $(WRAPPER_ROOT)/ace/Proactor.h \ + $(WRAPPER_ROOT)/ace/ReactorEx.h \ $(WRAPPER_ROOT)/ace/Svc_Conf_Tokens.h \ + $(WRAPPER_ROOT)/ace/UPIPE_Acceptor.h \ + $(WRAPPER_ROOT)/ace/UPIPE_Stream.h \ + $(WRAPPER_ROOT)/ace/SPIPE.h \ + $(WRAPPER_ROOT)/ace/SPIPE_Addr.h \ + $(WRAPPER_ROOT)/ace/SPIPE.i \ + $(WRAPPER_ROOT)/ace/UPIPE_Addr.h \ + $(WRAPPER_ROOT)/ace/SPIPE_Acceptor.h \ + $(WRAPPER_ROOT)/ace/SPIPE_Stream.h \ + $(WRAPPER_ROOT)/ace/SPIPE_Stream.i \ + $(WRAPPER_ROOT)/ace/UPIPE_Acceptor.i \ + $(WRAPPER_ROOT)/ace/UPIPE_Connector.h \ + $(WRAPPER_ROOT)/ace/UPIPE_Connector.i \ test_config.h # IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/tests/Message_Queue_Test.cpp b/tests/Message_Queue_Test.cpp index fcff279346d..3e9c51ec825 100644 --- a/tests/Message_Queue_Test.cpp +++ b/tests/Message_Queue_Test.cpp @@ -37,7 +37,7 @@ main (int, char *[]) { char *buffer; ACE_NEW_RETURN (buffer, char[BUFSIZ], -1); - sprintf (buffer, "%d", i); + ::sprintf (buffer, "%d", i); ACE_Message_Block *entry; @@ -50,45 +50,41 @@ main (int, char *[]) ACE_DEBUG ((LM_DEBUG, "\nForward Iterations\n")); { ITERATOR iterator (queue); + for (ACE_Message_Block *entry = 0; iterator.next (entry) != 0; iterator.advance ()) - { - ACE_DEBUG ((LM_DEBUG, "%s\n", entry->base ())); - } + ACE_DEBUG ((LM_DEBUG, "%s\n", entry->base ())); } ACE_DEBUG ((LM_DEBUG, "\nReverse Iterations\n")); { REVERSE_ITERATOR iterator (queue); + for (ACE_Message_Block *entry = 0; iterator.next (entry) != 0; iterator.advance ()) - { - ACE_DEBUG ((LM_DEBUG, "%s\n", entry->base ())); - } + ACE_DEBUG ((LM_DEBUG, "%s\n", entry->base ())); } ACE_DEBUG ((LM_DEBUG, "\nForward Iterations\n")); { QUEUE::ITERATOR iterator (queue); + for (ACE_Message_Block *entry = 0; iterator.next (entry) != 0; iterator.advance ()) - { - ACE_DEBUG ((LM_DEBUG, "%s\n", entry->base ())); - } + ACE_DEBUG ((LM_DEBUG, "%s\n", entry->base ())); } ACE_DEBUG ((LM_DEBUG, "\nReverse Iterations\n")); { QUEUE::REVERSE_ITERATOR iterator (queue); + for (ACE_Message_Block *entry = 0; iterator.next (entry) != 0; iterator.advance ()) - { - ACE_DEBUG ((LM_DEBUG, "%s\n", entry->base ())); - } + ACE_DEBUG ((LM_DEBUG, "%s\n", entry->base ())); } ACE_END_TEST; diff --git a/tests/Service_Config_Test.cpp b/tests/Service_Config_Test.cpp new file mode 100644 index 00000000000..6c6a36bb42a --- /dev/null +++ b/tests/Service_Config_Test.cpp @@ -0,0 +1,37 @@ +// $Id$ + +// ============================================================================ +// +// = LIBRARY +// tests +// +// = FILENAME +// Service_Config_Test.cpp +// +// = DESCRIPTION +// This is a simple test to make sure the Service_Configurator is +// working correctly. +// +// = AUTHOR +// Doug Schmidt +// +// ============================================================================ + +#include "ace/Service_Config.h" +#include "test_config.h" + +int +main (int argc, char *argv[]) +{ + ACE_START_TEST ("Service_Config_Test"); + ACE_Time_Value tv (argc > 1 ? atoi (argv[1]) : 2); + + ACE_Service_Config daemon; + + daemon.open (argc, argv); + + ACE_ASSERT (daemon.run_reactor_event_loop (tv) == 0); + + ACE_END_TEST; + return 0; +} diff --git a/tests/run_tests.sh b/tests/run_tests.sh index eb6379d5b54..8aeadc52086 100755 --- a/tests/run_tests.sh +++ b/tests/run_tests.sh @@ -69,17 +69,18 @@ run SPIPE_Test # uses SPIPE_Acceptor/Connector, Thread_Manager run UPIPE_SAP_Test # uses UPIPE, Thread, Thread_Manager run Barrier_Test # uses Service_Config, Barrier -run Buffer_Stream_Test # uses Service_Config, Module (Stream,Task, MQ) -run Priority_Buffer_Test # uses Service_Config, MQ +run Buffer_Stream_Test # uses Service_Config, Module (Stream,Task, Message_Queue) +run Priority_Buffer_Test # uses Service_Config, Message_Queue run Recursive_Mutex_Test # uses Service_Config, Recursive_Thread_Mutex run Time_Service_Test # uses libnet_svcs run Tokens_Test -run Map_Manager_Test -run Message_Queue_Test -run Pipe_Test -run Process_Mutex_Test +run Map_Manager_Test # uses Map Manager + Forward and Reverse Map Iterators. +run Message_Queue_Test # uses Message_Queue + Forward and Reverse Message Queue Iterators. +run Pipe_Test # uses Pipe +run Process_Mutex_Test # uses Process_Mutex +run Service_Config_Test # uses Service_Config echo "Tests complete..." |