summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog-96b7345
-rw-r--r--README1
-rw-r--r--ace/ACE.cpp140
-rw-r--r--ace/ACE.h2
-rw-r--r--ace/INET_Addr.cpp4
-rw-r--r--ace/LSOCK_Stream.cpp7
-rw-r--r--ace/LSOCK_Stream.h5
-rw-r--r--ace/Local_Tokens.h5
-rw-r--r--ace/Memory_Pool.cpp10
-rw-r--r--ace/Memory_Pool.h2
-rw-r--r--ace/Message_Queue.cpp10
-rw-r--r--ace/Message_Queue.h5
-rw-r--r--ace/Module.cpp3
-rw-r--r--ace/OS.h6
-rw-r--r--ace/OS.i18
-rw-r--r--ace/Reactor.cpp5
-rw-r--r--ace/ReactorEx.cpp4
-rw-r--r--ace/Service_Config.cpp12
-rw-r--r--ace/Service_Config.h7
-rw-r--r--ace/Thread.h7
-rw-r--r--examples/Reactor/Ntalker/ntalker.cpp7
-rw-r--r--netsvcs/ACE-netsvcs.html3
-rw-r--r--tests/Makefile482
-rw-r--r--tests/Message_Queue_Test.cpp22
-rw-r--r--tests/Service_Config_Test.cpp37
-rwxr-xr-xtests/run_tests.sh13
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.
diff --git a/README b/README
index 8010a4d9a1c..8c520bb96df 100644
--- a/README
+++ b/README
@@ -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);
diff --git a/ace/OS.h b/ace/OS.h
index 7af6fa9fce4..5bc093c9b13 100644
--- a/ace/OS.h
+++ b/ace/OS.h
@@ -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,
diff --git a/ace/OS.i b/ace/OS.i
index d07b1c365e3..bdc2d972bb3 100644
--- a/ace/OS.i
+++ b/ace/OS.i
@@ -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..."