Fri Jul 5 10:30:44 2002 Douglas C. Schmidt * ace/Array_Base.cpp: Swapped the order of includes so that Array_Base.h comes after Malloc_Base.h. Thanks to Al Pariante for reporting this. Thu Jul 4 11:27:05 2002 Douglas C. Schmidt * Happy 226th Birthday USA! Sat Jul 06 19:32:40 2002 Balachandran Natarajan * ace/Time_Value.h (ACE_Time_Value): Fix for [BUGID 1240]. Some of the operators were missing explicit declarations in the header file (they were anyway defined in the inlined files) which created problems in builds where inlining was diabled. Please see http://deuce.doc.wustl.edu/bugzilla/show_bug.cgi?id=1240 for more details. Thanks to Marina Spivak for reporting this. Fri Jul 5 18:44:39 2002 Steve Huston * ace/ACE.cpp: Corrected undeclared 'select_width' errors and signed/unsigned mismatch warnings. Fri Jul 5 16:14:51 2002 Steve Huston * ace/OS.{h i} (send, sendto, recv, recvfrom): Change 'len' argument from int to size_t. Removed conditional typedef of ssize_t; it's done in Basic_Types.h. * ace/ACE.h (recv): Filled in documentation for varargs variant. * ace/ACE.cpp (send, recv): Properly convert size_t 'count' arg to int iovec count for call to ACE_OS::sendv/recvv(). (handle_timed_accept, handle_timed_complete, handle_ready): Use an int select_width for ACE_OS::select() calls to get the types correct. This arg is ignored on Windows anyway. * ace/Basic_Types.h: If ACE_HAS_SSIZE_T not defined, and Win64, typedef SSIZE_T ssize_t; else use the existing int typedef. * tests/SSL/Thread_Pool_Reactor_SSL_Test.cpp: Change thread function to return ACE_THR_FUNC_RETURN, not void *. Tue Jul 02 21:43:53 2002 Nanbor Wang * ACEXML/common/XMLFilterImpl.h: One more pre/post mismatch. Tue Jul 2 16:58:55 2002 Krishnakumar B * ACEXML/common/XML_Types.h: Removed unnecessary includes and fixed a typo. Tue Jul 02 16:35:19 2002 Nanbor Wang * ACEXML/common/Attributes.h: * ACEXML/common/Locator.h: Fixed mismatched pre/post inclusions. * ACEXML/parser/parser/Parser.cpp: Fixed compilation errors. Tue Jul 2 11:53:29 2002 Steve Huston * ace/config-all.h: Changed definition of ACE_THR_FUNC to incorporate the platform's thread function return type (DWORD on Windows, void * on most others). Uses a new typedef ACE_THR_FUNC_RETURN to specify the platform's thread function return type. * ace/OS.{h i cpp} (thr_exit, thr_join): The status arg is now a ACE_THR_FUNC_RETURN *. Also moved remaining thread function definition type things to config-all.h with the rest of them. * ace/Base_Thread_Adapter.{h cpp} (invoke(), ace_thread_adapter()): * ace/OS_Thread_Adapter.{h cpp} * ace/Thread_Adapter.{h cpp} (invoke(), invoke_i()): Return type changed from void * to ACE_THR_FUNC_RETURN. * ace/Event_Handler.{cpp h} (read_adapter): Change return value from void* to ACE_THR_FUNC_RETURN. * ace/Thread_Hook.{h cpp}: ACE_Thread_Hook::start () returns ACE_THR_FUNC_RETURN, not void *. * ace/Thread.{h i} (exit, join): 'status' arg is now ACE_THR_FUNC_RETURN *, not void *. * ace/Thread_Control.{h inl cpp} (status, exit): * ace/Thread_Manager.{h cpp} (exit, join): Thread exit status type changed from void * to ACE_THR_FUNC_RETURN. * ace/Task.{h cpp} (ACE_Task_Base): Return type from svc_run now ACE_THR_FUNC_RETURN. * examples/C++NPv1/RT_Thread_Per_Connection_Logging_Server.cpp: * examples/C++NPv1/Thread_Per_Connection_Logging_Server.{cpp, h}: * examples/C++NPv2/Select_Reactor_Logging_Server.cpp: * examples/C++NPv2/Server_Shutdown.cpp: * examples/C++NPv2/TP_Reactor_Logging_Server.cpp: * examples/C++NPv2/WFMO_Reactor_Logging_Server.cpp: * examples/C++NPv2/Client_Logging_Daemon.cpp: * examples/Connection/blocking/SPIPE-acceptor.cpp: * examples/IPC_SAP/SOCK_SAP/CPP-inserver.cpp: * examples/IPC_SAP/SSL_SAP/SSL-server.cpp: * examples/Reactor/WFMO_Reactor/Abandoned.cpp: * performance-tests/TCP/tcp_test.cpp: * tests/ACE_Init_Test.cpp: * tests/MEM_Stream_Test.cpp: * tests/Service_Config_DLL.cpp: * tests/Task_Test.cpp: * tests/Thread_Pool_Reactor_Resume_Test.cpp: * tests/Thread_Pool_Reactor_Test.cpp: Change thread function to return ACE_THR_FUNC_RETURN, not void *. * examples/C++NPv2/TP_Logging_Server.cpp (handle_input, svc): * examples/C++NPv2/AC_Client_Logging_Daemon.cpp (open): * examples/C++NPv2/display_logfile.cpp (svc): Change ACE_reinterpret_cast to ACE_static_cast. Thanks to Doug Schmidt for finding this. * examples/C++NPv2/TP_Logging_Server.h: * examples/C++NPv2/Reactor_Logging_Server_Adapter.cpp: Corrected use of ACE_NEW_RETURN. Mon Jul 1 23:16:47 2002 Jeff Parsons * */Makefile: Updated dependencies. Mon Jul 1 21:59:44 2002 Krishnakumar B * ACEXML/common/Attributes.h: * ACEXML/common/AttributesImpl.h: * ACEXML/common/Attributes_Def_Builder.h: * ACEXML/common/CharStream.h: * ACEXML/common/ContentHandler.h: * ACEXML/common/DTDHandler.h: * ACEXML/common/DTD_Manager.h: * ACEXML/common/DefaultHandler.h: * ACEXML/common/Element_Def_Builder.h: * ACEXML/common/EntityResolver.h: * ACEXML/common/Env.h: * ACEXML/common/ErrorHandler.h: * ACEXML/common/Exception.h: * ACEXML/common/FileCharStream.h: * ACEXML/common/HttpCharStream.h: * ACEXML/common/InputSource.h: * ACEXML/common/Locator.h: * ACEXML/common/LocatorImpl.h: * ACEXML/common/Mem_Map_Stream.h: * ACEXML/common/NamespaceSupport.h: * ACEXML/common/SAXExceptions.h: * ACEXML/common/StrCharStream.h: * ACEXML/common/Transcode.h: * ACEXML/common/URL_Addr.h: * ACEXML/common/Validator.h: * ACEXML/common/XMLFilter.h: * ACEXML/common/XMLFilterImpl.h: * ACEXML/common/XMLReader.h: * ACEXML/common/XML_Codecs.h: * ACEXML/common/XML_Types.h: * ACEXML/parser/debug_validator/Debug_Attributes_Builder.cpp: * ACEXML/parser/debug_validator/Debug_Attributes_Builder.h: * ACEXML/parser/debug_validator/Debug_DTD_Manager.h: * ACEXML/parser/debug_validator/Debug_Element_Builder.h: * ACEXML/parser/debug_validator/Element_Tree.h: * ACEXML/parser/parser/Entity_Manager.h: * ACEXML/parser/parser/Parser.cpp: * ACEXML/parser/parser/Parser.h: ACE_LACKS_PRAGMA_ONCE fixes. Mon Jul 1 06:21:00 2002 Douglas C. Schmidt * ace/Sock_Connect.cpp (count_interfaces): Added a MacOSX-specific value for OSIOCGIFCONF. Thanks to John Zorko for this fix. Sun Jun 30 22:22:05 2002 Irfan Pyarali * ace/MEM_Addr.cpp (same_host): This method was unnecessarily creating and copying both the local and remote addresses. I changed it so that we only compare the IP addresses. * ace/MEM_Connector.cpp (connect): Changed debugging statement to provide additional information. Sun Jun 30 15:32:47 2002 Douglas C. Schmidt * ace/Based_Pointer_Repository.h: * ace/Array_Base.h: Added #include "ace/OS.h" to get the definition of size_t on MacOS. Thanks to John Zorko for this fix. * ace/Synch.cpp: Fixed the ACE_recursive_mutex_state::reset() method so that it sets m.LockCount to 0. Thanks to Davide Pasetto for reporting this. * ace/Synch.cpp: Fixed the implementation of ACE_Condition so that it works properly on Windows, where the recursive mutex count is incremented by the OS. Thanks to Davide Pasetto for reporting this. * examples/C++NPv2/AC_Client_Logging_Daemon.cpp: * examples/C++NPv2/Client_Logging_Daemon.cpp: Changed "blocks" parameter to "chunk" to be consistent with the terminology in the book. * examples/C++NPv2/TP_Logging_Server.h: * examples/C++NPv2/Reactor_Logging_Server_Adapter.cpp: Added some new code to safely allocate an array. Sun Jun 30 08:55:18 2002 Douglas C. Schmidt * tests/Enum_Interfaces_Test.cpp (ACE_TMAIN): Fixed this to use ACE_Sock_Connect::get_ip_interfaces() rather than ACE::get_ip_interfaces(). Thanks to for reporting this. Sun Jun 30 12:22:12 2002 Johnny Willemsen * etc/tao_portablegroup.doxygen: Added this file that configures the doxygen configuration of the TAO PortableGroup library. * html/index.html: * bin/generate_doxygen.pl: Updated these files so that the new PortableGroup doxygen documentation is generated and listed in the index page. Fri Jun 28 08:07:12 2002 Douglas C. Schmidt * ace/Logging_Strategy.cpp: Added the ability to toggle the LM_STARTUP and LM_SHUTDOWN messages. Thanks to Adee Ran for the patch. Fri Jun 28 07:37:12 2002 Johnny Willemsen * ACEXML/common/URL_Addr.cpp: Fixed BCB Unicode build error. Thu Jun 27 16:50:19 2002 Balachandran Natarajan * ace/TP_Reactor.cpp: * ace/TP_Reactor.h: * ace/TP_Reactor.i: Moved common code in get_socket_event_info () to a new method clear_handle_read_set () and simplified the code in get_notify_handle () so that it improves readability. Thu Jun 27 20:26:33 UTC 2002 Craig Rodrigues * tests/DLL_Test.cpp: Define retval before preprocessor checks to fix Lynx build problem. Thu Jun 27 14:32:50 2002 Nanbor Wang * bin/nightlybuilds/builds.lst: Moved Fuzz, DLL_Core, DLL_Debug builds to the new scoreboard also. Thu Jun 27 07:47:12 2002 Johnny Willemsen * ACEXML/tests/HttpCharStream_Test.cpp: Fixed BCB Unicode build errors. * ACEXML/common/URL_Addr.h: Documentation update. Wed Jun 26 09:56:38 2002 Nanbor Wang * bin/msvc_auto_compile.pl: Changed the list of XML related directory name from XML to ACEXML. Wed Jun 26 13:55:01 UTC 2002 Craig Rodrigues * examples/Reactor/Multicast/Log_Wrappers.cpp: * examples/Reactor/Ntalker/Log_Wrappers.cpp: Remove references to SOCK_Dgram_Mcast_T. Tue Jun 25 15:13:49 2002 Steve Huston * ace/Basic_Types.h: Added ACE_WIN64 versions of ACE_SSIZE_T_FORMAT_SPECIFIER and ACE_SIZE_T_FORMAT_SPECIFIER. Tue Jun 25 23:22:09 UTC 2002 Craig Rodrigues * ace/SOCK_Dgram_Mcast.cpp: * ace/SOCK_Dgram_Mcast.h: * ace/SOCK_Dgram_Mcast.i: * ace/SOCK_Dgram_Mcast_T.cpp: Removed. * ace/SOCK_Dgram_Mcast_T.h: Removed. * ace/SOCK_Dgram_Mcast_T.i: Removed. * ace/QoS/SOCK_Dgram_Mcast_QoS.cpp: * ace/QoS/SOCK_Dgram_Mcast_QoS.h: Reverted these files to before June 9. Existing code in QoS and AVStreams were broken do to the changes. Tue Jun 25 14:45:31 2002 Steve Huston * examples/C++NPv2/AC_Client_Logging_Daemon.cpp: Comment out declarations for info(), suspend(), and resume() - they're left as exercises for the reader. * examples/C++NPv2/AC_CLD.dsp: Added SSL link libraries. Tue Jun 25 12:13:39 2002 Steve Huston * examples/C++NPv2/AC_CLD.dsp: * examples/C++NPv2/examples.dsw: Added project for the Acceptor-Connector Client Logging Daemon in chapter 7. * examples/C++NPv2/AC_Client_Logging_Daemon.cpp: Use the ACE traits macros instead of relying on traits class support to help the aged MSVC 6 compiler along. Mon Jun 24 20:55:45 2002 Irfan Pyarali * ace/ACE.cpp (select): Fixed typo. Mon Jun 24 17:39:31 2002 Steve Huston * ace/ace_dll64.mak: * ace/ace_lib64.mak: NMAKE files for building ACE on 64-bit Windows XP with the Platform SDK compiler. At some point, hopefully, MSVC will allow 64-bit builds via the regular project files, but for now, must use NMAKE. * ace/config-win32-common.h: #define ACE_WIN64 if doing a 64-bit build. * ace/ACE.cpp (select): Don't sync() the handles after select() on Win64. The cast is illegitmate, and the call is a no-op on Windows. Mon Jun 24 17:55:58 2002 Krishnakumar B * include/makeinclude/wrapper_macros.GNU (ACE_BETA_VERSION): Grab the version information from Version.h rather than VERSION as VERSION is not likely to installed when doing a make install. Thanks to Bala for the suggestion. * ACEXML/parser/parser/Parser.cpp: * ACEXML/parser/parser/Parser.h: Get the prefix right in case of a default namespace being present. Previously we were using a URI a get to the prefix, which doesn't work when the URI is the same as URI for another namespace prefix. Mon Jun 24 19:54:34 UTC 2002 Craig Rodrigues * ace/config-g++-common.h: Define ACE_HAS_STD_TEMPLATE_METHOD_SPECIALIZATION for gcc 2.95 and higher. Mon Jun 24 07:26:41 2002 Douglas C. Schmidt * ace/Timer_Queue_Adapters.cpp: * ace/Timer_Queue_Adapters.h: Changed uses of ACE_Recursive_Thread_Mutex to ACE_RECURSIVE_SYNCH_MUTEX so things will work properly on single-threaded configurations. Thanks to Craig Rodrigues for reporting this. Mon Jun 24 12:07:00 UTC 2002 Craig Rodrigues * ace/RMCast/RMCast_IO_UDP.cpp: Remove ACE_SOCK_Dgram_Ex template instantiation. Mon Jun 24 03:26:10 2002 Krishnakumar B * ACEXML/common/AttributesImpl.cpp(isDuplicate): New function isDuplicate() to check duplicate attributes. Merged support for duplicate attribute checking in setAttribute(). * ACEXML/common/AttributesImpl.h: Fixed documentation for a bunch of functions which had set/get roles reversed. * ACEXML/common/AttributesImpl.i: Fixed more memory leaks. * ACEXML/common/NamespaceSupport.cpp(processName): Added support for processing attributes. * ACEXML/parser/parser/Parser.cpp: * ACEXML/parser/parser/Parser.h: Implement XML Namespace (http://www.w3.org/TR/REC-xml-names) support. ACEXML parser supports the SAX 2.0 XML API. Parser has two user tunable features available: namespaces (defaults to true) and namespace_prefixes (defaults to false). * ACEXML/examples/SAXPrint/Print_Handler.cpp: * ACEXML/examples/SAXPrint/SAXPrint_Handler.cpp: Changed to reflect more event callbacks available now due to above added support. * ACEXML/examples/SAXPrint/ns.svc.conf.xml: Changed to include a default namespace to test more code paths. Found a bug in the process :-) Will fix tomorrow. The only remaining feature in ACEXML parser needed for CCM is validator. Next target.... * ace/Message_Block.h: Fixed typo in documentation (ceases to exist and not seizes to exist). Sun Jun 23 21:06:28 UTC 2002 Craig Rodrigues Bill Fulton * ace/SOCK_Dgram_Mcast.cpp: * ace/SOCK_Dgram_Mcast.h: * ace/SOCK_Dgram_Mcast_T.cpp: * ace/SOCK_Dgram_Mcast_T.h: * ace/SOCK_Dgram_Mcast_T.i: More SOCK_Dgram fixes supplied by Bill Fulton with modifications by Craig Rodrigues. - Remove proprietary typedefs for ACE mutex classes - Make default mutex strategy for SOCK_Dgram_Mcast ACE_SYNCH_MUTEX - (subscribe_ifs) fix check when determining if subscribed address is the same as the bound address Sun Jun 23 14:51:48 2002 Douglas C. Schmidt * ace/Synch.h: Put the class ACE_recursive_mutex_state inside the section ACE_HAS_THREADS. Thanks to Craig Rodrigues for noticing the need for this. Sun Jun 23 14:05:12 2002 Johnny Willemsen * ACEXML/common/HttpCharStream.cpp: Fixed BCB Unicode compile errors. Fri Jun 21 19:18:05 UTC 2002 Craig Rodrigues * bin/nightlybuilds/builds.lst: Move to IA64_Linux_GCC_3.1 and Tru64_CXX builds to new scoreboard. Fri Jun 21 14:34:51 2002 Steve Huston * ace/config-sunos5.5.h: Enable ACE_HAS_STD_TEMPLATE_METHOD_SPECIALIZATION for Forte 6 Update 1. Fri Jun 21 14:06:33 2002 Steve Huston * ace/Timer_Queue_Adapters.cpp (ACE_Thread_Timer_Queue_Adapter): Changed ACE_GUARD_RETURN uses of command_mutex_ from ACE_Recursive_Condition_Mutex to ACE_SYNCH_MUTEX to match its definition. Fri Jun 21 06:21:33 2002 Christopher Kohlhoff * ace/config-win32-borland.h: Re-enable ACE_HAS_STD_TEMPLATE_METHOD_SPECIALIZATION for all versions of Borland C++. Thu Jun 20 20:50:51 2002 Steve Huston * ace/config-sunos5.5.h: Re-enable ACE_HAS_STD_TEMPLATE_METHOD_SPECIALIZATION for Forte 6 Update 2. * ace/Functor.i: * ace/Synch.cpp: Commented out all the uses of ACE_TEMPLATE_METHOD_SPECIALIZATION. The class specialization was already declared such, and doing it on the methods is not right. But they're only commented out for now, just in case... Thu Jun 20 20:29:31 2002 Steve Huston * ace/Codecs.h (ACE_Base64): Added "friend class ace_dewarn_gplusplus" to silence g++ warnings about private ctors and no friends. Thu Jun 20 20:21:39 2002 Steve Huston * tests/Recursive_Condition_Test.icc: Visual Age C++ configuration for this new test. * tests/tests.icp: Added Recusrive_Condition_Test.icc. Fri Jun 21 00:21:48 UTC 2002 Craig Rodrigues * examples/Timer_Queue/Thread_Timer_Queue_Test.cpp (dump): Switch from ACE_SYNCH_MUTEX to ACE_SYNCH_RECURSIVE_MUTEX. Thu Jun 20 14:32:03 2002 Douglas C. Schmidt * ace/Synch.cpp (ACE_recursive_mutex_state): Replaced the ACE_OS::mutex_lock/unlock calls with ACE_OS::thread_mutex_lock/unlock so things will work on NT. Thanks to Jeff Parsons for reporting this. * ace/Synch.{h,cpp}: Only compile the new ACE_Condition template specialization if ACE_HAS_THREADS. Thanks to Craig Rodrigues for motivating this. * include/makeinclude/platform_sunos5_sunc++.GNU (CC_VERSION): Added additional cases for SunC++ 5.2 and 5.3. Thanks to Carsten Tonsberg Nielsen for reporting this. * ace/ATM_Stream.cpp (get_peer_name): * ace/Log_Msg_UNIX_Syslog.cpp (log): * ace/Logging_Strategy.cpp: Replaced the use of ACE_OS::strtok() with ACE_OS::strtok_r(). Thanks to Eugene Alterman for motivating this. Thu Jun 20 16:02:22 2002 Steve Huston * ace/config-sunos5.5.h: Commented out the below addition for now. Thu Jun 20 15:49:39 2002 Steve Huston * ace/config-sunos5.5.h: For Forte 6, Update 2 and up, add #define ACE_HAS_STD_TEMPLATE_METHOD_SPECIALIZATION. Earlier Forte 6 versions may also support this, but I don't have one to test on. Fixes compile warning on Filecache.cpp. Thu Jun 20 13:37:55 2002 Douglas C. Schmidt * examples/C++NPv2/README: Updated the README file to map the filenames to the chapters in C++NPv2. Wed Jun 19 21:30:05 UTC 2002 Craig Rodrigues Bill Fulton * ace/SOCK_Dgram_Mcast_T.cpp: Fix Win32 wchar build problems. Thanks to Bill Fulton for supplying these fixes. Wed Jun 19 16:16:32 2002 Nanbor Wang * tests/tests.dsw: * tests/Recursive_Condition_Test.dsp: Added a new project file. Wed Jun 19 06:50:54 2002 Douglas C. Schmidt * tests/run_test.lst: * tests/Makefile.bor: * tests/Makefile: Added the new Recursive_Condition_Test. * ACE/Timer_Queue_Adapters.{h,cpp}: Enhanced ACE_Thread_Timer_Queue_Adapter so it uses the new ACE_Condition. Thanks to Stephen Howard for suggesting this. * ace/Synch_T.h: Added a new RECURSIVE_CONDITION trait in ACE_NULL_SYNCH and ACE_MT_SYNCH. * ace/Synch_T.h: Added a #define for ACE_SYNCH_RECURSIVE_CONDITION so that we can parameterize it based on threads vs. non-threads. * docs/exceptions.html: Updated document to use ACE_RE_THROW instead of the deprecated ACE_RETHROW macro. Thanks to Andy Ling for reporting this. * ace/Timer_Queue_Adapters.h: Changed the order in which the condition variable and mutex are defined to ensure the mutex is initialized before we pass it to condition_'s constructor. * ace/Filecache.cpp: * ace/Synch.cpp: * ace/Atomic_Op.i: Replaced ACE_TEMPLATE_SPECIALIZATION with ACE_TEMPLATE_METHOD_SPECIALIZATION so this will compile correctly on certain (broken) compilers, such as SunC++ 6.1. Wed Jun 19 14:25:52 2002 Balachandran Natarajan * ace/TP_Reactor.cpp (handle_socket_events): Couple of small fixes. The fixes are for 1. Bug http://deuce.doc.wustl.edu/bugzilla/show_bug.cgi?id=1231 and it is self-explanatory 2. The find () operation after dispatch was not holding the lock and chances of race are high. This is documented as #2 in bug http://deuce.doc.wustl.edu/bugzilla/show_bug.cgi?id=1233 Added some comments in the code explaining what is going on. Thanks to Carlos for identifying the problem. * ace/Event_Handler.h: Added a enum to indicate the two states returnable by the call resume_handler (). * ace/Event_Handler.cpp (resume_handler): Instead of returning 0, we return ACE_Event_Handler::ACE_REACTOR_RESUMES_HANDLER. Wed Jun 19 13:42:16 2002 Balachandran Natarajan * tests/tests.dsw (Project): Added TP_Reactor_Test.dsp to the workspace. Wed Jun 19 11:57:02 2002 Carlos O'Ryan * bin/auto_run_tests.lst: Disable TAO/tests/Nested_Upcall_Crash on minimum_corba builds. Tue Jun 18 14:29:26 2002 Douglas C. Schmidt * ace/Synch.{h,i}: Added a new template specialization of ACE_Condition<> that supports recursive mutexes used in conjunction with ACE condition variables. Thanks to Michael Lindner and Mike Vitalo for contributing this. * ace/SOCK_Dgram_Mcast.cpp: Reverted the file to the previous version since somehow things got messed up... Tue Jun 18 12:44:54 2002 Douglas C. Schmidt * ace/OS.{h,i}: Added a new method called stopped() that returns 1 if the timer has already been stopped. Thanks to Giovanni Zito for this suggestion. Tue Jun 18 12:17:58 2002 Jaiganesh Balasubramanian * ace/QoS/SOCK_Dgram_Mcast_QoS.cpp: Added the RCS ID symbol. Tue Jun 18 12:41:15 2002 Balachandran Natarajan * ace/CDR_Stream.i (adjust): Added a check for pointer overflow befor setting the write pointer. thanks to Rich Siebel and Byron Harris for pointing this out. Tue Jun 18 07:50:14 2002 Ossama Othman * ace/Env_Value_T.h: Include "ace/OS.h". It is required for some types and function calls made in this header. Thanks to Michael Kircher for pointing this out. Mon Jun 17 17:36:52 2002 Steve Huston * examples/C++NPv2/AIO_Client_Logging_Daemon.cpp: Changed call to ACE_Asynch_Connector::open() to take advantage of new defaults, made on: Sat Jun 15 20:30:41 2002 Steve Huston Mon Jun 17 17:21:38 2002 Steve Huston * ace/SUN_Proactor.cpp (handle_events): Remove the now-deleted success argument from call to application_specific_code(). Mon Jun 17 13:40:24 2002 Balachandran Natarajan * include/makeinclude/platform_osf1_4.x_cxx.GNU: Removed the hard override of LDFLAGS. Thanks to Martin Krumpolec . Mon Jun 17 06:20:55 2002 Christopher Kohlhoff * ace/Object_Manager.cpp: * ace/Service_Config.h: * ace/Service_Config.cpp: Some components registered with the framework repository have dependencies on the ACE_Log_Msg or ACE_Thread_Manager singletons. Reorganised the ACE_Object_Manager::fini function so that the framework repository is cleaned up before these objects. Thanks to Don Hinton for assistance in tracking this down. * ace/Reactor.cpp: Prevent the reactor from being erroneously registered with the framework repository a second time, as happened when the reactor instance pointer was explicitly set. Sun Jun 16 20:38:27 2002 Krishnakumar B * ace/DLL_Manager.cpp (ACE_DLL_Handle): * ace/DLL.cpp: More mismatched delete/delete[] errors. I am fixing the easier ones. There may be more. Sun Jun 16 20:22:28 2002 Krishnakumar B * ACEXML/common/AttributesImpl.i (qName): Fixed memory leaks caused by mismatched delete/delete[]. Caught by Valgrind. * ACEXML/examples/SAXPrint/main.cpp: Give useful usage messages. Sat Jun 15 20:56:29 2002 Steve Huston * tests/tests.dsw: Added Proactor_Timer_Test.dsp. Sat Jun 15 20:30:41 2002 Steve Huston * ace/Asynch_Acceptor.{h cpp}: Added a new template method, virtual int validate_connection (const ACE_Asynch_Connect::Result& result, const ACE_INET_Addr &remote, const ACE_INET_Addr& local) It replaces the old validate_new_connection() method, which is now marked deprecated. Semantics are the same (return -1 to ask framework to abort the connection before activating a service). However, more information is available, including the socket handle. * ace/Asynch_Connector.{h cpp}: Replaced validate_new_connection() method with: virtual int validate_connection (const ACE_Asynch_Connect::Result& result, const ACE_INET_Addr &remote, const ACE_INET_Addr& local) Examining the result argument is the only way to find out if the asynchronous connect attempt succeeded or not. The connect completion calls validate_connection() on either success or failure as long as the validate_new_connection flag is set on open(). The default value was changed from 0 (don't call) to 1 (call) since this is the only way to learn about connection success/failure. * ace/POSIX_Proactor.{h cpp} (application_specific_code): * ace/WIN32_Proactor.{h cpp} (application_specific_code): Removed the 'int success' argument. Success/fail is determined by the error value now (0 == success). Simplifies the code, and makes the result.success() call return 1 iff the operation succeeded. Thanks very much to Alex Libman for these ideas and for working to improve these classes for ACE and C++NPv2! Sat Jun 15 12:01:38 2002 Steve Huston * ace/Obstack_T.cpp (request): Don't lose an initial set of characters if the requested length won't fit. Thanks to Christopher W. Midgley for this report and fix. * tests/Obstack_Test.{cpp dsp icc}: New test for the above, and its MSVC and Visual Age C++ files. * tests/Makefile: * tests/Makefile.bor: * tests/run_test.lst: * tests/tests.dsw: * tests/tests.icp: Added new Obstack_Test. * THANKS: Added Christopher W. Midgley. Sat Jun 15 12:41:07 Frank Hunleth * THANKS: Added Nick Cross to the hall of fame. Fri Jun 14 14:39:33 2002 Nanbor Wang * ace/Filecache.cpp: Removed excessive ACE_DEBUG statements. Thanks to Charles F. Frasch for reporting them. Fri Jun 14 12:04:17 2002 Jaiganesh Balasubramanian * ace/QoS/SOCK_Dgram_Mcast_QoS.cpp: * ace/QoS/SOCK_Dgram_Mcast_QoS.h: Removed build errors for QoS library, due to dependencies to the old SOCK_Dgram_Mcast class. Thanks to Bill Fulton for this fix. Fri Jun 14 14:17:49 2002 Carlos O'Ryan * bin/auto_run_tests.pl: Fixed wrong application name in Usage message. * bin/auto_run_tests.lst: Add the Nested_Upcall_Crash test. Fri Jun 14 09:34:41 2002 Ossama Othman * ace/OS.i (ctime): For the ACE_HAS_WINCE, pass a statically allocated buffer to ctime_r() since ctime_r() will return that same buffer as the return value of ctime(). Fixes memory access violations. Thanks to Michael Searles for pointing out the problem. Thu Jun 13 21:26:49 2002 Steve Huston * ace/Configuration_Import_Export.cpp (squish): Replaced use of naked isspace() with ACE_OS_String::ace_isspace() to work with wide chars also. Thu Jun 13 21:09:33 2002 Steve Huston * tests/Config_Test.cpp (run_tests): Added a test for importing a previously-existing ini file and verifying its contents. * tests/Config_Test_Import_1.ini: File for the above test. Thu Jun 13 19:05:57 2002 Krishnakumar B * include/makeinclude/rules.local.GNU: Added a rule to install a symlink to libfoo.so.3 under $(ACE_ROOT)/ace. This should fix all the build errors. ld.so needs libfoo.so.3 to be in LD_LIBRARY_PATH. libfoo.so doesn't do. Thanks to Marvin Wolfthal for reporting the problem. * bin/make_release: Changes to ensure that all major releases are named ACE-[0-9]+.0.0 and all minor releases are named ACE-[0-9]+.[0-9]+.0. PLEASE TAG THE REPOSITORY AS ACE_5_3_0 and TAO_1_3_0 or ACE_6_0_0 and TAO_2_0_0 WHEN MAKING A MINOR OR A MAJOR RELEASE. Pointers to add this to somewhere more prominent are welcome. Thu Jun 13 14:45:13 2002 Douglas C. Schmidt * ace/SOCK_Dgram_Mcast_T.cpp: Added wchar support - remove warnings in MSVC when #define ACE_USES_WCHAR used in config.h. Thanks to Bill Fulton for this fix. Wed Jun 12 21:28:29 2002 Steve Huston * tests/Framework_Component_DLL.cpp (Server_T): Add template parameter name to class template arg to get aC++ to eat it. Wed Jun 12 18:29:11 2002 Krishnakumar B * include/makeinclude/rules.lib.GNU: * include/makeinclude/rules.local.GNU: * include/makeinclude/wrapper_macros.GNU: * TAO/rules.tao.GNU: * include/makeinclude/platform_g++_common.GNU: Added support for shared library versioning. Libraries built with GNU ld will be versioned by default. * include/makeinclude/platform_aix4_cset++.GNU: * include/makeinclude/platform_aix4_g++.GNU: * include/makeinclude/platform_aix_g++.GNU: * include/makeinclude/platform_aix_ibm.GNU: * include/makeinclude/platform_hpux.GNU: * include/makeinclude/platform_hpux_aCC.GNU: * include/makeinclude/platform_hpux_gcc.GNU: * include/makeinclude/platform_hpux_kcc.GNU: Added null SONAME and SOVERSION for disabling shared library versioning. * include/makeinclude/platform_dgux4_epc.GNU: * include/makeinclude/platform_freebsd.GNU: * include/makeinclude/platform_gnuwin32_common.GNU: * include/makeinclude/platform_irix5.3_g++.GNU: * include/makeinclude/platform_irix5.3_sgic++.GNU: * include/makeinclude/platform_irix6.x_g++.GNU: * include/makeinclude/platform_irix6.x_kcc.GNU: * include/makeinclude/platform_irix6.x_sgic++.GNU: * include/makeinclude/platform_linux.GNU: * include/makeinclude/platform_linux_cxx.GNU: * include/makeinclude/platform_linux_icc.GNU: * include/makeinclude/platform_linux_kcc.GNU: * include/makeinclude/platform_m88k.GNU: * include/makeinclude/platform_macosx.GNU: * include/makeinclude/platform_mvs.GNU: * include/makeinclude/platform_netbsd.GNU: * include/makeinclude/platform_osf1_3.2_cxx.GNU: * include/makeinclude/platform_osf1_4.x_cxx.GNU: * include/makeinclude/platform_osf1_4.x_g++.GNU: * include/makeinclude/platform_osf1_4.x_kcc.GNU: * include/makeinclude/platform_osf1_4.x_rcc.GNU: * include/makeinclude/platform_psosim_g++.GNU: * include/makeinclude/platform_qnx_neutrino.GNU: * include/makeinclude/platform_qnx_rtp_gcc.GNU: * include/makeinclude/platform_sco-nothread.GNU: * include/makeinclude/platform_sco5.0.0-CC-fsu-pthread.GNU: * include/makeinclude/platform_sco5.0.0-mit-pthread.GNU: * include/makeinclude/platform_sco5.0.0-nothread.GNU: * include/makeinclude/platform_sunos4_g++.GNU: * include/makeinclude/platform_sunos4_lucid.GNU: * include/makeinclude/platform_sunos4_sunc++3.x.GNU: * include/makeinclude/platform_sunos4_sunc++4.x.GNU: * include/makeinclude/platform_sunos5_centerline.GNU: * include/makeinclude/platform_sunos5_g++.GNU: * include/makeinclude/platform_sunos5_ghs.GNU: * include/makeinclude/platform_sunos5_kcc.GNU: * include/makeinclude/platform_sunos5_sunc++.GNU: * include/makeinclude/platform_tandem.GNU: * include/makeinclude/platform_unixware_g++.GNU: * include/makeinclude/platform_unixware_udk.GNU: Changed SOFLAGS = to SOFLAGS += to avoid dealing with order of includes of various Makefile rules. Wed Jun 12 11:25:22 2002 Douglas C. Schmidt * tests/Config_Test.cpp (test): Removed what appeared to be an unnecessary and unused called to const ACE_Configuration_Section_Key &root = config->root_section (); * ace/Configuration.cpp (open_section): Fixed a warning in the loop expression. Wed Jun 12 11:49:33 2002 Steve Huston * examples/C++NPv2/AC_Client_Logging_Daemon.cpp: Changed to match book. * examples/C++NPv2/Reactor_Logging_Server_Adapter.cpp (init): Use ACE_Auto_Array_Ptr to be cleaner about allocated char ptr array. Coincides with book change. Tue Jun 11 10:23:03 2002 Stephen Torri * ace/String_Base.h: Updated comments/documentation on the String_Base class. * ace/String_Base.{i,cpp}: Added brackets to if/else statements for better structure/readability. Changed "(cond) ? true : false" to better "if/else" structure. Tue Jun 11 19:05:39 2002 Douglas C. Schmidt * ace/SOCK_Dgram_Mcast.h: Added a default constructor for ACE_SOCK_Dgram_Mcast. * tests/Config_Test.cpp (test): Added tests for the following capability. Thanks to Eugene Alterman for contributing these tests. * ace/Configuration.{h,cpp}: ACE_Configuration_Heap::open_section() now accepts path separators in section name, so that it is consistent with the updated version of ACE_Configuration_Win32Registry::open_section(). Thanks to Eugene Alterman for contributing this patch. Tue Jun 11 20:02:39 2002 Steve Huston * ace/DLL_Manager.cpp (ACE_DLL_Handle::error()): Change to a different form of auto_ptr initialization that Visual Age C++ likes better. Tue Jun 11 13:17:29 2002 Douglas C. Schmidt * ace/Cache_Map_Manager_T.h: * ace/Caching_Utility_T.h: * ace/Env_Value_T.h: Added #include "ace/Global_Macros.h". Thanks to Ty Tenait for reporting this. * ace/Dirent_Selector.h: Added #include "ace/ACE_export.h". Thanks to Ty Tenait for reporting this. Tue Jun 11 09:42:06 2002 Ossama Othman * ace/SOCK_Dgram_Mcast_T.cpp (make_multicast_ifaddr): Use ACE_HTONL instead of htonl(). The latter causes the assembler to choke on some Linux installations. Mon Jun 10 14:50:46 2002 Nanbor Wang * examples/DLL/Dll.dsw: * examples/ASX/CCM_App/CCM_App.dsw: Updated project dependencies. Mon Jun 10 14:23:28 2002 Douglas C. Schmidt * ace/Reactor.h (ACE_Reactor): Added a comment explaining that the mask passed to notify() can only be READ_MASK, WRITE_MASK, or EXCEPT_MASK. Thanks to Cary Steinmetz for motivating this comment. * ace/OS_String.cpp: Make sure to check whether src == dst and avoid doing any copies in this case. Thanks to Michael Searles for reporting this. Sun Jun 9 20:01:00 2002 Douglas C. Schmidt * ace/Makefile: Something is wrong with my ACE_ROOT environment variable, which caused problems with the dependency generation. This is now fixed. Sun Jun 9 19:31:04 2002 Douglas C. Schmidt * ace/SOCK_Dgram_Mcast.h: Added ACE_Export to ACE_SOCK_Dgram_Mcast. Sun Jun 9 18:57:07 2002 Douglas C. Schmidt * examples/Reactor/Ntalker/ntalker.cpp: * examples/Reactor/Multicast/Log_Wrapper.cpp: Added template instantiations for the new ACE_SOCK_Dgram_Mcast_Ex<> template. Sun Jun 9 18:47:22 2002 Douglas C. Schmidt * tests/Config_Test.cpp (run_tests): Added code to exercise the new subkey path feature contributed by Eugene Alterman. * ace/Configuration.{h,cpp}: Added support for the path separator ('\\') in key names. Thanks to Eugene Alterman for contributing this patch. * ace/Date_Time.{h,i}: Added support for weekday. Thanks to Eyal Lubetzky for reporting this. Sun Jun 9 18:11:02 2002 Douglas C. Schmidt * ace/SOCK_Dgram_Mcast.cpp: Removed the explicit inclusion of "ace/SOCK_Dgram_Mcast_T.cpp" since this is #included appropriately by SOCK_Dgram_Mcast.h. * ace/SOCK_Dgram_Mcast.cpp: Removed the ';' from the end of the #pragma instantiates. * ace/Makefile: Added SOCK_Dgram_Mcast_T. * ace/SOCK_Dgram_Mcast_T.cpp ace/SOCK_Dgram_Mcast_T.i ace/SOCK_Dgram_Mcast_T.h: Minor changes to conform to ACE coding conventions. Sun Jun 9 17:50:37 2002 Bill Fulton * ace/SOCK_Dgram_Mcast.cpp ace/SOCK_Dgram_Mcast.h ace/SOCK_Dgram_Mcast_T.cpp ace/SOCK_Dgram_Mcast_T.i ace/SOCK_Dgram_Mcast_T.h Somewhat massive changes to the (already very useful) ACE_SOCK_Dgram_Mcast class; some fixes to existing functionality, some new functionality, and a different way of controlling optional (per-instance) functionality. The intent was to preserve existing interface and functionality (when correct), including environment- specific functionality. Fixes to Existing Functionality: - For ::unsubscribe(void); unsubscribes from all active subscriptions. Previous version unsubscribed only from the most recently subscribed group/net_if. * This could change execution behavior of existing code. - Enhanced support for a passed port# of '0'. The ephemeral port# assigned by the system when the socket is bound is used for all local ::send methods. - Validation of non-zero port# and, optionally, the address passed to the ::subscribe method, if the socket has been bound. On second and subsequent ::subscribe invocations, the previous version allowed passed parameters that were inconsistent with the bound socket parameters. This could result in a confusing condition; you would not receive messages sent to the port and/or address passed to ::subscribe. * This could change execution behavior of existing code. Added Functionality: - Support specification of the (multicast) address and interface to be used by all local ::send methods, independent of the receive address and interface. The same port# is used for all base class ::recv methods and all local class ::send methods. The send interface applies to all local and all base class ::send methods. - Enhanced ::dump method, to show the dynamic list of subscriptions, the bound address/port#, the send address/interface, and the state of optional functionality. Also did some output reformatting. Optional Functionality via Template Parameters and Ctor Args: In the previous implementation, some aspects of class functionality were transparently configured based on the OS it was compiled under. This has been changed so that all optional functionality is explicitly specified, using (a baroque set of) optional constructor arguments. In addition, new optional functionality was added and is specified with template parameters and optional constructor arguments. For backward compatibility, there is an explicit specialization called ACE_SOCK_Dgram_Mcast - this should have the same functionality, including OS-specific functionality, as the previous class implementation, and can still be used for most normal (if there is such a thing with multicast) apps. Overview of new template parameter: ACE_SDM_LOCK_* - Strategized locking (very limited MT-safety - see below). Overview of new, optional ctor arguments (enumerations): opt_bindaddr_* - Whether to bind the address as well as the port#. opt_nulliface_* - Defines semantics of passing net_if parameter of NULL; i.e. use all or only one iface. opt_dtorunsub_* - Whether destructor explicitly unsubscribes from all groups. See SOCK_Dgram_Mcast_T.h for a full description. Environment- specific default values are explicitly declared, for use by app code. Changes to Previous Class (public) Interface & Functionality: - Added a public (overloaded) ::open method. This allows explicit specification of the port# and the multicast address (if opt_bindaddr_yes is used) that is bound to this socket. This also allows specification of the address and the network interface to be used by local ::send methods (and the network interface used by super-class and sub-class ::send methods). There is only one address parameter; the same parameter is used for both the send address/port# and the bound address/port#. The port# in the address may be 0 (to use a system-assigned ephemeral port# for sending and receiving). NOTE: Use of this method is optional and, if used, must be invoked _before_ any ::subscribe method is invoked - otherwise it is _ignored_, and the (first) ::subscribe parameters will be used to bind the socket and set the send parameters (as in the previous code). Note that ::subscribe need not be invoked at all, now; if only ::open is used, you can send but not receive multicast messages, and you can specify the interface used for sending. - Validation of ::subscribe parameters is now strict. Once the port# is bound (by ::open or the first ::subscribe), the port# passed to every ::subscribe call must either be '0' or match the bound port#. Additionally; if opt_bindaddr_yes is used, the address passed must match the bound address. If these conditions are not met, an error is returned (with errno=ENXIO). Note that such subscriptions would have no (useful) effect, since messages could never be received for the given port#/address, due to IP stack filtering. This condition was ignored in the previous version; it is now an error condition. This may break some existing code - but note that it flushes out a (silent) logical error condition. The port# in ::unsubscribe(addr,...) is _not_ checked, though; this is not logically consistent, but ... a mistaken port# here seems less potentially dangerous and/or confusing. - The previous ::subscribe and ::unsubscribe methods had a special return code (1) to indicate that (previously Win32-specific) multiple-interface subscription/unsubscription had been done. This seemed to be useful only internally, but was visible to the caller. The new methods will always return '0' for success (even if opt_nulliface_all is used). - The dynamic subscription list housekeeping adds slight processing overhead, and even more overhead is added if locking is enabled. This should not be noticeable, except in MT thrashing conditions and/or if doing very frequent subscribes/unsubscribes. Known Restrictions: - Interaction/Integration with other ACE multicast-oriented classes and library code is _undefined_, i.e.: + ACE_SOCK_Dgram_Mcast_QoS: Presumably works ok, but inherits legacy class; can't specify optional functionality. + ACE_RMCast: Presumably works ok, but uses legacy class; can't specify optional functionality. + ACE_XTI_ATM_Mcast: I presume there's no integration desirable. I've re-built vers. 5.2 ACE under Solaris and Windows with the modified files, and it builds ok. Since the original functionality is (basically) unchanged, it is _assumed_ that any other ACE lib code that references the ACE_SOCK_Dgram_Mcast class signature still functions ok. But ... things like adding templated code could introduce problems! Also note that these classes use (now) deprecated interface methods; e.g. RMCast passes protocol options to ::subscribe that are now ignored. - Environment-specific notes/restrictions on use of options: + The opt_nulliface_all option should be used only in environments for which the ACE_Sock_Connect::get_ip_interfaces call is correctly implemented (currently only Windows). In other environments, using this option will _always_ return an error from ::subscribe/::unsubscribe. + The opt_dtorunsub_yes option allows finer control of multicast group "leave" effects for environments that do not automatically unsubscribe when the socket is closed, or in situations where the underlying handle has been duplicated (e.g. via fork()), but will not be used. All in all, this option is useful only under special, controlled circumstances. + The effect of using opt_bindaddr_yes is very environment- specific; it may not do what you expect (or may do what you don't expect :-) The default option values are defined with these notes in mind. - Options enumeration weaknesses. + The options enumeration list was put in the global namespace. It seems like a pain for user code to have to prefix the option values with the templated class name. + All option values use the same enumeration; this could allow option values to be used for the "wrong" option in the ctor options list. This was a trade-off; I didn't want to add too many things to the global namespace. (Note that more options might be added to the list, in the future.) All new code compares against explicit enum values (instead of 0), for safety. - The ::open parameter list may be too "dense" - it tries to do too many different things with the passed parameters. This is an artifact of its heritage. (Note that ::subscribe can also invoke ::open behavior). In particular, it would be nice to separate bound addr/iface from send addr/iface. - Does not explicitly check for duplicate active subscriptions (i.e. subscription to the same address and interface while a previous subscription is still active). (Subscription to the same address but different interface is not a duplicate and is fully supported.) Note that, for most IP stacks, a subscription attempt for a duplicate addr/iface will fail (and a duplicate entry will not be created). If it is allowed by the IP stack and you create duplicate internal subscription list entries, you must call ::unsubscribe(addr) for _each_ duplicate subscription (or ::unsubscribe(void)) - until this is done, you will continue to recv messages for this subscription. - This implementation carries forward (for backward compatibility) certain environment-specific hacks, i.e.: + A Win32 hack such that the default opt_nulliface_defopt value for Win32 is different from all other environments. + A Linux hack such that the full address is unconditionally bound. These would seem likely to lead to unexpected behavior for the "casual user", but changing the default would break existing code. - The SDM_OPT_LOCK parameter only controls locking of the dynamic subscription list; and the need/use for this is debatable. It was added as a fail-safe, in case one class instance is shared by multiple threads. Note that a given instance can _not_ (reliably) be shared by multiple threads; there are logical race conditions (e.g. calling ::open) - but the logical race conditions should cause only unpredictable operation, not corruption. However; the subscription list could be corrupted if one instance is shared by multiple threads, which could lead to undefined behavior/crashes. - The class interface is probably too "busy"; there are a _lot_ of side-effects that may not be evident. - Currently only built and tested under Solaris w/ Forte-C++ and Windows NT and 2000 w/ MSVC 6. Implementation Changes: - Now implemented as a templated class (ACE_SOCK_Dgram_Ex), via the new SOCK_Dgram_Mcast_Ex.* files. The (remaining) SOCK_Dgram_Mcast.* files are vestigial; they remain due to the build rules and documentation conventions, and because existing user code references the ace/SOCK_Dgram_Mcast.h file. Note that this differs from most other *_Ex.* template source files in ACE, where there is still at least some function implemented in the non-templated source files; here there is none. An explicit specialization is declared that matches the old class signature. - The constructor now has optional arguments (to specify per-instance optional functionality. A default ctor can still be used; the legacy default environment-specific functionality will be declared. - I've tried to generalize code that was previously overly environment-dependent and/or macro-driven. The intent was to make future enhancements easier (there's still much desirable work to be done ... speaking of which ...) Suggested Future Work: - Expose the SOCK_Dgram::send methods; i.e. allow specification of an arbitrary dest address/port# with the ::send call. (Must check for port# of '0' in the send address and set port# to the bound port#). This would allow the specification of the network interface for arbitrary multicast transmissions from one instance, and should work as expected if the address specified is unicast. This seems useful; currently, if you want to send multicast messages with interface control, you would either have to create one instance of this class for each send address, or force access to the inherited ACE_SOCK_Dgram instance (which works ... "but it would be wrong"). I'm not sure why access to these was disabled in the original design. (Is there a good reason not to do this?) - Mark the current ::subscribe and ::unsubscribe interfaces as deprecated and add new interfaces that remove all unnecessary parameters. + Remove the (optional) protocol* parameters from the ::subscribe and ::unsubscribe methods - they don't do anything. I (really) wanted to do this now, but it could break existing app code (but you can't really specify anything other than the default values, anyway!) + Remove the (optional) reuse_addr parameter from the ::subscribe method - it is only useful if ::open has not been previously invoked. Problem: This will require that the ::open method be explicitly invoked before invoking ::subscribe, which makes the interface more clumsy. Problem: Hard to get a unique signature for the new methods, especially for ::unsubscribe. - It seems that an ACE_SOCK_Dgram_Mcast_Manager class could be a useful "layered" addition, e.g.: - Trap ::subscribe invocations using different port numbers, and create separate instances/sockets for each unique port#. - Implement software loopback filtering for environments that do not implement loopback disabling in the IP stack (e.g. older Windows). Also implement per-interface filters for environments (like Win/NT) that don't do this right. - Implement multicast group "sets" to support easy and atomic joins/leaves of a user-defined list of group/interface combinations. Include enhanced failure condition handling, such as subscription "roll-back"; all-or-none of the set's members are joined. Actually; all of these could be done in the current class - but there are too many options in this class already, and the function seems (to me) more appropriate to a higher-level "manager". - Allow the send interface (and default send addr) to be changed, after initial setting. (OS-specific support needed - most stacks allow the interface to be changed once set, but I presume that not all do.) In general; might be worth splitting out the send from the ::open/::subscribe methods - e.g. ::send_parameters. Might add optional TTL and loopback parameters to this, too. - Add explicit methods to set common multicast socket options, e.g. TTL, loopback. (So you don't have to remember the macro names and to make these macros/actions more portable!). - Tighten up the parameter semantics and/or validation, e.g.: + Verify that all addresses passed are multicast addresses. For example, ::open does not check the send address. (It should still work as expected - sending unicast on the route-derived interface - but that's not the intended use.) + The reuse_addr parameter in ::open is used for both REUSEADDR and REUSEPORT (if implemented) option setting; should these be distinct parameters? (They do different things!) - Enhanced integration with other ACE multicast classes, as needed or desirable (see Restrictions section). - (?) For ::subscribe and ::unsubscribe - if successful, return the (positive) number of subscribes/unsubscribes done (instead of '0'). Possibly useful, as a way for the app to sense multi-interface subs/unsubs (e.g. code that is passed an instance and does not know what options were used when the instance was created). - (?) Add method ::unsubscribe(int n) to unsubscribe from most recent n subscription(s) (including opt_nulliface_all option support.) The implementation of group sets might obviate the usefulness of this. - (?) Enhanced MT-safety and exception handling. Don't know if any particular problems; but haven't tested extensively. Also; might be able to make it more efficient. In particular; if one instance is intended to be shared by multiple threads, there is _much_ work to be done. - (??) Track subscription list state; i.e. recognize the state when any ::unsubscribe emptys the subscription list. This state might be used to re-define some parameters (especially the network interface for sends) set with ::open and for other changes ... but utility vs. added complexity ratio seems low. (Note that closing the socket and reopening another can cause nasty side-effects, so probably can't change the bound parameters, anyway.) Sun Jun 9 16:26:00 2002 Douglas C. Schmidt * ace/ATM_Acceptor.cpp: * ace/ATM_Addr.cpp: * ace/ATM_Connector.i: * ace/ATM_QoS.cpp: * ace/ATM_Stream.cpp: * ace/CE_Screen_Output.cpp: * ace/Configuration.cpp: * ace/Handle_Set.i: * ace/IOStream.cpp: * ace/Lib_Find.cpp: * ace/Log_Msg.cpp: * ace/Log_Record.cpp: * ace/MEM_Addr.cpp: * ace/Malloc_T.i: * ace/Memory_Pool.cpp: * ace/Message_Queue.cpp: * ace/Msg_WFMO_Reactor.cpp: * ace/OS.cpp: * ace/OS.i: * ace/OS_String.cpp: * ace/Process.cpp: * ace/SOCK_Connector.i: * ace/SPIPE_Connector.cpp: * ace/Sock_Connect.cpp: * ace/Synch_T.cpp: * ace/ace_wchar.inl: Changed improper use of NULL to 0. Sun Jun 9 15:33:05 2002 Jeff Parsons * ace/Date_Time.i: Fixed some typos that caused build errors. Sat Jun 8 14:46:19 2002 Douglas C. Schmidt * ace/Array_Base.h: Replaced #include "Global_Macros.h" with #include "ace/Global_Macros.h" Thanks to Bill Fulton for reporting this. Fri Jun 7 19:00:31 2002 Steve Huston * ace/OS_String.inl (strstr): Also see: Thu May 30 16:45:10 UTC 2002 Craig Rodrigues HP-UX 11.00 doesn't supply wcsstr(), only wcswcs (), so special-case that one with #if defined (HPUX). Fri Jun 7 16:42:29 2002 Steve Huston * ace/Date_Time.i (update): Use ACE_OS::localtime_r rather than ACE_OS::localtime to avoid MT time confusion. Thanks to Kelly Hickel for reporting this. Fri Jun 7 16:29:21 2002 Steve Huston * ace/Acceptor.{h cpp}: (ACE_Strategy_Acceptor) Added an open () method with signature that matches ACE_Acceptor::open to avoid hiding the one in ACE_Acceptor, according to Forte 6. In the new open(), however, the ACE_Reactor* arg is required, to make it distinguishable from the existing open(). The new open forwards everything to the previously-existing, more full-featured open(). Constructors and full-featured open(), added optional reuse_addr arg - it's passed down to the ACE_Accept_Strategy::open method. Removed the service_port_ member - it's not used. (ACE_Acceptor::open): If the reactor registration fails, close the peer_acceptor_ object. * netsvcs/TS_Server_Handler.cpp (ACE_TS_Server_Acceptor::parse_args): * netsvcs/Name_Handler.cpp (ACE_Name_Acceptor::parse_args): * netsvcs/Server_Logging_Handler_T.cpp (ACE_Server_Logging_Acceptor_T): Use a local variable for the -p port option; server_port_ is gone. Fri Jun 7 14:30:22 2002 Steve Huston * ace/Message_Queue.{h cpp} (ACE_Message_Queue_NT): Change deactivate (int pulse) to deactive() and pulse() - forgot this one in "Thu Jun 6 18:10:45 2002 Steve Huston" set of changes. Also, corrected the way the completion routine checks state of the queue. enqueue() will always pass ACTIVATED as the queue state to be sure that blocks are seen when dequeued. Thu Jun 6 17:41:24 2002 Krishnakumar B * ACEXML/common/Mem_Map_Stream.h: * ACEXML/common/Mem_Map_Stream.cpp: * ACEXML/common/HttpCharStream.h: * ACEXML/common/HttpCharStream.cpp: * ACEXML/common/URL_Addr.cpp: Fixed the explicit template instantiation problems on Solaris. Thu Jun 6 18:35:49 2002 Steve Huston * ace/Acceptor.h (ACE_Strategy_Acceptor): Made open() virtual since its parent class (ACE_Acceptor) ope() is also virtual. Resolves warning from Forte 6 that open() hides its parent class's open(). Thu Jun 6 18:10:45 2002 Steve Huston * ace/README: Removed ACE_HAS_OPTIMIZED_MESSAGE_QUEUE. No configs use it, and it's functionality doesn't really support the message queue deactivation/pulse semantics. * ace/Message_Queue.h: * ace/Message_Queue_T.{h cpp i}: Removed the "int pulse" argument from deactivate() and add a pulse() method. States stay the same. Took out all the ACE_HAS_OPTIMIZED_MESSAGE_QUEUE stuff. It's not used any longer. * examples/C++NPv2/AC_Client_Logging_Daemon.cpp: Use the pulse() method instead of deactivate (1). * examples/C++NPv2/AIO_Client_Logging_Daemon.cpp: Removed answered questions. Removed reimplemented handle_connect() method because the needed things are now available via the framework. * ace/Asynch_Acceptor.{h cpp}: * ace/Asynch_Connector.{h cpp}: Added new hook method, int validate_connection (const ACE_Asynch_Accept::Result&result, const ACE_INET_Addr& remote_addr, const ACE_INET_Addr& local_addr) that allows access to success/fail, handle, and addresses. The validate_new_connection (const ACE_INET_Addr&) method is now deprecated. * ace/WFMO_Reactor.{h cpp} (ACE_WFMO_Reactor_Notify): Add an optional argument to ACE_WFMO_Reactor_Notify constructor. size_t max_notifies is used to specify a limit for how many notifications can be queued. The value is used to calculate new high and low watermarks to the message_queue_. Default 1024. * ace/Activation_Queue.cpp: * ace/Message_Block.cpp: * ace/Message_Queue_T.cpp: Added #include "ace/Log_Msg.h" to get the ACE_DEBUG, etc. definitions. * ace/Read_Buffer.cpp: Added #include for ace/Log_Msg.h and ace/Malloc_Base.h (for ACE_Allocator). * ace/Log_Msg.cpp (log (ACE_Log_Record&)): If there's a ACE_Log_Msg_Callback, do it before sending the log record to any other logging sinks. Allows the callback to munge the data. Thu Jun 06 10:50:37 2002 Ossama Othman * ace/Dev_Poll_Reactor.cpp (cancel_timer): Fixed race condition by adding an ACE_GUARD. Basically the same fix that Doug made to the Select_Reactor below. Thu Jun 6 12:28:20 2002 Douglas C. Schmidt * ace/Select_Reactor_T.cpp: Moved the cancel_timer() methods from the Select_Reactor_T.i file and added ACE_GUARD's around them to ensure we're serialized correctly. Thanks to Johnny Chen for motivating this. Thu Jun 6 08:24:43 2002 Jeff Parsons * ace/Malloc_T.h: Removed extra comment closer */. Thu Jun 6 07:11:15 2002 Douglas C. Schmidt * THANKS: Just added our 1,500th ACE+TAO contributor!!!!! * ace/Malloc_T.cpp: Clarify that the memory backing store must reside in a directory with the appropriate visibility and permissions. Thanks to Frank O. Flemisch for reporting this. Wed Jun 5 23:06:11 UTC 2002 Don Hinton * ace/DLL_Manager.h: Fixed compile error. Thanks to Jai Balasubramanian for pointing this out. Wed Jun 5 16:58:41 2002 Krishnakumar B * ACEXML/common/Mem_Map_Stream.cpp: Instantiate the templates needed when explicit templates are defined. Thanks to Carlos for pointing this out. * ACEXML/common/HttpCharStream.cpp: Peek means "get the next character", not "get the character after next". The previous change to the test caught this bug. Wed Jun 5 16:42:43 2002 Krishnakumar B * ACEXML/examples/SAXPrint/main.cpp (ACE_TMAIN): Modified the example to test fetching and parsing an XML URL. This actually tests most of the functions of the new stream class and is better than the lame test that I wrote the other day. Wed Jun 5 13:54:03 UTC 2002 Don Hinton * ace/DLL_Manager.{h,cpp}: * ace/Framework_Component.cpp: Made ACE_DLL_Manager a true singleton instead of using the ACE_*Singleton templates, thus avoiding a problem with multiple instantiations by broken compilers. Thanks to Chris Kohlhoff for this suggestion. Wed Jun 5 08:33:25 2002 Douglas C. Schmidt * ace/Timer_Queue_T.h (class ACE_Timer_Queue_T): Clarify that the second calculate_timeout() method doesn't use a lock. Thanks to Johnny Chen for motivating this. * ace/Process_Manager.cpp (handle_signal): Added a check for i == -1. Thanks to Dimitrije Jankovic for reporting this and providing a fix! Tue Jun 04 16:47:27 2002 Ossama Othman * ace/Service_Config.h: No need to include "ace/DLL.h". Forward declaring ACE_DLL is enough. * ace/Service_Config.cpp: Include "ace/DLL.h" to pull in ACE_DLL class declaration. Tue Jun 04 16:34:18 2002 Ossama Othman * ace/Service_Config.cpp: Removed duplicate "ace/Auto_Ptr.h" include. * ace/Svc_Conf_Lexer_Guard.cpp: Moved Svc_Conf.h include within the ACE_USES_CLASSIC_SVC_CONF preprocessor block. It isn't needed for the XML-based Service Configurator. Tue Jun 04 16:02:11 2002 Krishnakumar B * ACEXML/common/HttpCharStream.h: * ACEXML/common/HttpCharStream.cpp: * ACEXML/common/Filecharstream.h: * ACEXML/common/Filecharstream.cpp: Removed the constructor which accepted a string containing either a filename or a URL from these files. Problem was it was relying on calling open to do the work, but if open fails there was no way to report the error without throwing exceptions. So don't allow people to use this constructor and always insist on using open. * ACEXML/common/Mem_Map_Stream.cpp: * ACEXML/common/URL_Addr.h: * ACEXML/common/URL_Addr.cpp: * ACEXML/common/XML_Codecs.cpp: * tests/Codecs_Test.cpp: Other miscellaneous fixes including using ACE_Auto_Basic_Array_Ptr instead of ACE_Auto_Array_Ptr. * ACEXML/common/Makefile.bor: * ACEXML/tests/Makefile.bor: Added new files. * ACEXML/tests/HttpCharStream_Test.cpp: Cosmetic fixes. Tue Jun 04 14:18:56 2002 Nanbor Wang * ACEXML/tests/HttpCharStream_Test.dsp: * ACEXML/tests/Tests.dsw: Added a new test project. Tue Jun 04 13:45:39 2002 Nanbor Wang * ACEXML/common/Mem_Map_Stream.h: Fixed typedefs of template classes. * ACEXML/common/XML_Common.dsp: Added new files to project files. Tue Jun 4 12:35:12 2002 Jeff Parsons * ace/Message_Queue*: Moved the state_ member and the accessor method to the non-template base class to get rid of the Win32 build bustage, since ACE_Message_Queue_NT is not a template class, and does not inherit from ACE_Message_Queue<>. Tue Jun 4 10:03:19 2002 Douglas C. Schmidt * examples/C++NPv2/AC_Client_Logging_Daemon.cpp: Reverted the thr_count() stuff since we need to reactivate the queue now. * ace/Message_Queue*: Changed all the message queue implementations to use the new ACTIVATED/DEACTIVATED/PULSED implementation of deactivate()/activate(). Tue Jun 4 09:48:34 2002 Jeff Parsons * ace/Message_Queue.h: * ace/Message_Queue_T.h: Fixed the signatures of deactivate and deactivate_i to make the appearance of the default parameter 'int pulse' consistent. Tue Jun 4 06:46:27 2002 Douglas C. Schmidt * examples/C++NPv2/AC_Client_Logging_Daemon.cpp: Added the "1" parameter to the call to deactivate() method to simply "pulse" the queue. Also, changed the AC_Output_Handler::open() method to check if thr_count() == 0 when determining if to activate the service handler. * ace/Message_Queue_T.h: Added new pulse parameter to ACE_Message_Queue::deactivate() so that callers can decide whether to change the state of the queue to be "deactivated" or just to pulse waiting threads to wake up and continue their processing. This simplies one of the examples in C++NPv2. Mon Jun 3 16:11:12 2002 Krishnakumar B * ACEXML/common/FileCharStream.cpp: Fixed a memory leak. * ACEXML/common/HttpCharStream.cpp: * ACEXML/common/HttpCharStream.cpp: * ACEXML/common/HttpCharStream.h: * ACEXML/common/Makefile: * ACEXML/common/Mem_Map_Stream.cpp: * ACEXML/common/Mem_Map_Stream.h: * ACEXML/common/URL_Addr.cpp: * ACEXML/common/URL_Addr.h: Functionality needed by the parser to fetch URI's (DTDs etc) from the web. This is a simple http_get implementation and doesn't work for https URLs (which can be fixed easily provided there is interest). * ACEXML/common/Parser.cpp: Fixed a typo. * ACEXML/tests/HttpCharStream_Test.cpp: * ACEXML/tests/Makefile: New regression test to test fetching of URI's from the web by the parser. Mon Jun 3 06:21:57 2002 Douglas C. Schmidt * examples/C++NPv2/AIO_Client_Logging_Daemon.cpp: Removed unnecessary 'return;' calls. Mon Jun 3 07:23:56 UTC 2002 Don Hinton * Framework_Component_DLL.bor: Fixed typo. Sun Jun 2 22:52:23 UTC 2002 Craig Rodrigues [Bug 1208] * ace/README: Document new ACE_HAS_3_PARAM_WCSTOK macro. * ace/OS_String.inl (strtok_r): Check ACE_HAS_3_PARAM_WCSTOK macro. * ace/config-aix-4.x.h: * ace/config-linux-common.h: * ace/config-sunos5.7.h: Define ACE_HAS_3_PARAM_WCSTOK on these platforms after doing the appropriate checks. Sun Jun 2 15:34:41 UTC 2002 Don Hinton * ace/DLL.cpp: Test for null dll_name_ before calling open() in the copy ctor, since open would flag it as an error. Improved error messages. * ace/DLL_Manager.{h,cpp}: * ace/Framework_Component.cpp: Changed ACE_DLL_Manager to use ACE_Unmanaged_Singleton so that it can be explicitely closed by ACE_Framework_Repository after ACE_Service_Config is closed. Improved error messages. Thanks to Steve Huston for finding this. Sun Jun 2 09:03:06 2002 Douglas C. Schmidt * ace/Select_Reactor_Base.cpp: Delete temp buffers if enqueue_head() fails in the ACE_Select_Reactor_Notify open() and notify() methods. Thanks to Chris Uzdavinis for reporting this. Sat Jun 1 22:42:17 2002 Steve Huston * examples/C++NPv2/AC_CLD.mak: * examples/C++NPv2/TPCLS.mak: Added "ssl=1" to properly include the SSL stuff in the build; these examples use SSL. * examples/C++NPv2/AIO_Client_Logging_Daemon.cpp: * examples/C++NPv2/AIO_CLD_export.h: * examples/C++NPv2/AIO_CLD.mak: Asynch I/O example from Chapter 8. Sat Jun 1 15:38:40 2002 Steve Huston * ace/Asynch_Acceptor.cpp (open): bind_port is in ACE_Sock_Connect, not ACE. Added #include "ace/SOCK_Stream.h" that class is also used, and #include "ace/Log_Msg.h" to get the ACE_ERROR macros. * ace/Asynch_Connector.cpp (handle_connect): clr_flags() is in ACE_Flag_Manip, not ACE. Added #include "ace/Log_Msg.h" to get ACE_ERROR macros. Fri May 31 13:35:41 2002 Steve Huston * examples/C++NPv2/TPC_Logging_Server.{h cpp}: * examples/C++NPv2/AC_Client_Logging_Daemon.cpp: Primarily formatting changes to match the book. * examples/C++NPv2/SLDex.mak: Removed Logging_Acceptor_Ex from files list; it's only a header file. Fri May 31 11:07:25 2002 Douglas C. Schmidt * examples/C++NPv2/AC_Client_Logging_Daemon.cpp: Modified this so use pointers rather than references to simplify things in the book. Thu May 30 23:03:38 2002 Steve Huston * examples/C++NPv2/SR_Configurable_Logging_Server.{cpp mak}: * examples/C++NPv2/Makefile: Added new ACE_Select_Reactor-based configurable logging server. * examples/C++NPv2/AC_Client_Logging_Daemon.cpp: Code changes to match book and fix reconnect problems. Thu May 30 18:02:35 2002 Douglas C. Schmidt * ace/OS.h: Changed EACESS to EACCES to be POSIX compliant. Thanks to Eric Eide for (re)reporting this! Thu May 30 10:01:12 2002 Ossama Othman * ace/UPIPE_Stream.h (ACE_UPIPE_Stream): Added missing PEER_ADDR trait. Thu May 30 16:45:10 UTC 2002 Craig Rodrigues [Bug 1208] * ace/OS_String.inl (strstr): Remove wcswcs(), use wcsstr() instead. Thu May 30 9:15:19 2002 Douglas C. Schmidt Thanks to Edan Ayal and Alex Libman for the following fixes. * ACE_WIN32_Asynch_Read_Stream_Result::complete () ACE_WIN32_Asynch_Write_Stream_Result::complete () ACE_WIN32_Asynch_Write_Dgram_Result::complete ACE_WIN32_Asynch_Read_Dgram_Result::complete improved readability and logic * ACE_WIN32_Asynch_Read_File_Result::complete () ACE_WIN32_Asynch_Write_File_Result::complete () fixed errors,improved readability and logic * ACE_WIN32_Asynch_Read_Stream::read () ACE_WIN32_Asynch_Read_File::read () ACE_POSIX_Asynch_Read_Stream::read () ACE_POSIX_Asynch_Read_File::read () Added check for enough space in message block bytes_to_read <= mb->space() * ACE_WIN32_Asynch_Write_Stream::write () ACE_WIN32_Asynch_Write_File::write () ACE_POSIX_Asynch_Write_Stream::write () ACE_POSIX_Asynch_Write_File::write () Added check for correct length of message block bytes_to_write <= mb->length() * ACE_WIN32_Asynch_Read_Stream::readv () ACE_WIN32_Asynch_Read_File::readv () ACE_WIN32_Asynch_Read_Dgram::recv Added checks for: never read more bytes_to_read bytes; correct using of buffers - message blocks * ACE_POSIX_Asynch_Write_Stream::writev () ACE_POSIX_Asynch_Write_File::writev () ACE_WIN32_Asynch_Write_Dgram::send Added checks for: never write more bytes_to_write bytes; correct using of buffers - message blocks improved readability and logic Thu May 30 08:48:19 2002 Douglas C. Schmidt * ace/Configuration_Import_Export.cpp (squish): Replaced (*cp == ' ') || (*cp == '\t') || (*cp == '\n') || (*cp == '\r')) with isspace (*cp). Thanks to Gonzalo A. Diethelm and Dave Steele for this suggestion. Thu May 30 11:53:05 UTC 2002 Don Hinton * ace/DLL_Manager.cpp: Fixed Fuzz errors. Thanks to Johnny Willemsen for pointing this out. Thu May 30 11:40:45 UTC 2002 Don Hinton * tests/Framework_Component_DLL.bor: Fixed cut-n-paste error that caused the symbols not to be exported. Should fix the Borland builds. Thu May 30 10:18:27 UTC 2002 Don Hinton * tests/Framework_Component_Test.cpp: Modified test to use the new macro definitions and method names. * tests/Framework_Component_DLL.cpp: Added ACE_DLL_UNLOAD_POLICY declaration specifying LAZY unloading. Changed an errant ACE_LIB_TEXT macro to ACE_TEXT. * ace/config-all.h: Added the dll unloading policies mentioned below as well as an ACE_DLL_UNLOAD_POLICY macro dlls can use to set/export their own policy. If no policy is exported, the current per-process policy is used. * ace/DLL_Manager.{h,cpp}: Renamed unload_strategy to unload_policy and moved the policy definitions to config-all.h so that they can be used without including DLL_Manager.h (which includes OS.h, etc...). Refactored the unloading policies and implemented the per-dll case by probing the dll for a "_get_dll_unload_policy" function that returns the dll specific policy--if the dll chose to implement it. Added missing template instantiations. * ace/DLL.{h,cpp} (symbol): * ace/DLL_Manager.{h,cpp} (symbol): Added additional default parameter, ignore_errors, so the dll can be probed for symbols without sending error messages to the log. Thu May 30 08:53:12 2002 Johnny Willemsen * tests/Codecs_Test.cpp: Removed not needed ; after the ACE_RCSID. This will fix a warning in the Tru64 build * tests/Framework_Component_DLL.cpp: Corrected playing of ;. This will fix a warning in the Tru64 build. Thu May 30 02:27:29 2002 Steve Huston * examples/C++NPv2/AC_Client_Logging_Daemon.cpp: * examples/C++NPv2/AC_CLD_export.h: * examples/C++NPv2/AC_CLD.mak: * examples/C++NPv2/Makefile: Added remaining Chapter 7 example. Thu May 30 08:04:12 2002 Johnny Willemsen in comment to \ because the

is a commend that is recognized by doxygen. Thu May 30 07:46:12 2002 Johnny Willemsen * ace/Acceptor.h (ACE_Acceptor, ACE_Oneshot_Acceptor): * ace/Connector.h (ACE_Connector): Use ACE_TYPENAME where appropriate in newly added traits to correct build problems in g++ 2.95.x or better builds. Wed May 29 22:13:19 2002 Ossama Othman * ace/Acceptor.h (ACE_Acceptor, ACE_Oneshot_Acceptor): * ace/Connector.h (ACE_Connector): * ace/Svc_Handler.h (ACE_Svc_Handler): Added STL-style traits that may be useful when subclassing these classes. Wed May 29 21:55:49 2002 Steve Huston * examples/C++NPv2/TPC_Logging_Server.{h cpp}: * examples/C++NPv2/TPCLS_export.h: * examples/C++NPv2/TPCLS.mak: * examples/C++NPv2/Makefile: Added Chapter 7 examples. * ace/Acceptor.h (ACE_Acceptor::open): Made open() virtual. Thu May 30 01:38:51 UTC 2002 Craig Rodrigues * ace/OS_String.inl: Revert: Wed May 29 09:38:53 2002 Ossama Othman The intended fix is satisfactorily addressed by: Tue May 28 18:35:46 UTC 2002 Craig Rodrigues Wed May 29 16:36:42 2002 Ossama Othman * ace/CDR_Stream.cpp (write_wchar, read_wchar, skip_wchar): * ace/CDR_Stream.i (write_wchar_array, read_wchar_array): Take into account the actual size of the ACE_CDR::WChar type instead of assuming that it is always 16 bits long. Wed May 29 20:16:48 UTC 2002 Don Hinton * tests/Framework_Component_Test.cpp: Changed ACE_Service_Config::open() to call the ignore_default_svc_conf_file flag since all the directives are passed directly without using a config file anyway. * ACEXML/apps/svcconf/Svcconf_Handler.{h,cpp}: Removed handle_ member variable and pass the local svc_dll object instead of handle_ to ACE_Service_Config::create_service_type() in accordance with changes below to ACE_DLL. Wed May 29 12:35:21 2002 Ossama Othman * ace/OS.h: If ACE_HAS_WCHAR is defined define the ACE_OS::WChar type to be of type wchar_t. Otherwise, define it to be ACE_UINT16 (the previous default). Addresses some wide character CDR and CORBA C++ mapping issues. Thanks to David Smith for reporting this. Wed May 29 09:46:56 2002 Ossama Othman * ace/Message_Queue.h: Include "ace/Synch.h" to pull in ACE_Thread_Mutex class declaration. Thanks to Marek Maleta for reporting the problem. * THANKS: Added Marek to the Hall of Fame. Wed May 29 09:38:53 2002 Ossama Othman * ace/OS_String.inl (strstr): Only use wcswcs() if _XOPEN_SOURCE is defined. In any case, the Single UNIX Specification version 2 strongly encourages use of wcsstr(). Fixes a compile-time error on glibc 2.x platforms. (strtok_r): Glibc has the 3 argument version of wcstok(). Use it instead. Fixes a compile-time error on glibc 2.x platforms. Wed May 29 15:52:52 UTC 2002 Don Hinton * ace/DLL_Manager.{h,cpp}: Cleaned some problems with auto_ptr usage and added symbol name to the debug message if the symbol isn't found--not all systems seem to give you the name of the unfound symbol. Wed May 29 15:06:32 UTC 2002 Craig Rodrigues * bin/nightlybuilds/builds.lst: Move Debian_NoInterceptors to new scoreboard. Wed May 29 10:29:10 2002 Steve Huston * examples/C++NPv2/Client_Logging_Daemon.cpp: Use a safer scheme to clean up sent blocks; compile the INET_Addr stuff clean. Wed May 29 12:54:23 2002 Johnny Willemsen * ace/DLL_Manager.cpp: * ace/Framework_Component.cpp: Fixed msvc wchar compile errors Wed May 29 08:41:12 2002 Johnny Willemsen * ace/Codecs.h: Removed the ; after the ACE_UNIMPLEMENTED_FUNC, the BCB compiler has problems with it. * tests/Makefile.bor: Added the new Codecs_Test. Tue May 28 19:40:44 2002 Steve Huston * examples/C++NPv2/Client_Logging_Daemon.cpp: * examples/C++NPv2/CLD_export.h: * examples/C++NPv2/CLD.mak: * examples/C++NPv2/TP_Logging_Server.{h cpp}: * examples/C++NPv2/TPLS_export.h: * examples/C++NPv2/TPLS.mak: * examples/C++NPv2/Makefile: Added new client logging daemon and thread pool logging server examples from chapter 6. Wed May 29 02:09:32 UTC 2002 Craig Rodrigues * bin/nightlybuilds/builds.lst: Move RedHat_7.1_Full and RedHat_7.1_NO_AMI_Messaging builds to new scoreboard. Tue May 28 19:20:58 2002 Krishnakumar B * ace/Read_Buffer.cpp (rec_read): It seems that my changes trash the files written by test programs. I need to write a test to check out what's happening before changing the CVS head. Reverting my change of Tue May 28 17:00:21 2002 Krishnakumar B . Tue May 28 23:13:45 UTC 2002 Don Hinton * tests/Framework_Component_DLL.cpp: Added missing ";" to end of template instantiation statements. Tue May 28 22:34:03 UTC 2002 Don Hinton * ace/DLL.cpp: Added missing ACE_const_cast(). Tue May 28 17:00:21 2002 Krishnakumar B * ace/Read_Buffer.cpp (rec_read): Fixed stupid thinko when decrementing slot. Tell myself to think twice to about using ?:. My previous change also ate the character when only one character is in a file. ACE_Read_Buffer is crying for a test under $ACE_ROOT/tests which tests variable sized buffers with sizes of 1, < BUFSIZ, BUFSIZ, > BUFSIZ instead of under examples/misc/test_tead_buffer.cpp. Will try to get in one. * docs/ACE-guidelines.html: Update guidelines to be careful about using ?: in some situations. Thanks to Doug for suggesting this. Tue May 28 21:54:44 UTC 2002 Craig Rodrigues * bin/nightlybuilds/builds.lst: Move Debian_NoInline and Debian_GCC_3.0.4 builds to new scoreboard. Tue May 28 21:32:42 UTC 2002 Don Hinton * ace/DLL.cpp: * ace/DLL_Manager.cpp: * ace/Framework_Component.cpp: * ace/Framework_Component_T.cpp: Fixed Fuzz errors. Tue May 28 18:35:46 UTC 2002 Craig Rodrigues [Bug 1208] * ace/OS_String.cpp (strok_r_emulation): Call ACE_OS_String::strtok instead of ::wcstok. * ace/OS_String.inl (strtok): If ACE_HAS_XPG4_MULTIBYTE_CHAR is defined, call 3 parameter version of wcstok, else call 2 parameter version. * ace/config-linux-common.h: Only define ACE_LACKS_WCSTOK and ACE_LACKS_WCSDUP_PROTOTYPE for glibc versions less than 2. Define ACE_HAS_XPG4_MULTIBYTE_CHAR for glibc 2 and higher. * tests/OS_Test.cpp: Add test for wchar_t version of strtok. Tue May 28 15:02:01 UTC 2002 Don Hinton * tests/tests.dsw: * tests/Framework_Component_DLL.dsp: Added new dsp. Tue May 28 09:35:17 2002 Jeff Parsons * ace/ace_dll.dsp: * ace/ace_lib.dsp: Added DLL_Manager.* to these projects. Tue May 28 10:47:50 UTC 2002 Don Hinton * tests/Logging_Strategy_Test.cpp: Fixed typo, ACE_AS_* > ACE_HAS_*. * tests/Makefile.Framework_Component_DLL: * tests/Makefile: * tests/Makefile.bor: Added/modified Makefiles to add new test file, and updated dependancies. * tests/Framework_Component_Test.{h,cpp}: * tests/Framework_Component_DLL.{h,cpp}: Added. * tests/Framework_Component_DLL_export.h: Added. Modified to test to exercise the new ACE_DLL_Singleton and ACE_DLL* classed in concert with the Service Config framework and new Framework Component mechanisms. * tests/DLL_Test.{h,cpp}: Modified test to fully test all the features of the new ACE_DLL, ACE_DLL_Handle, and ACE_DLL_Manager classes. * ace/Makefile: * ace/Makefile.bor: Added DLL_Manager and updated dependancies. * bin/generate_export_file.pl: Added generation of library specific TRACE macros in terms of the new ACE_TRACE_IMPL macro below. * ace/Global_Macros.h: Added new macro, ACE_TRACE_IMPL and implemented ACE_TRACE in terms of it if tracing is enabled. This allows you to turn tracing on for a particular cpp by just undef'ing ACE_TRACE and redefining it as ACE_TRACE_IMPL. * ace/Parse_Node.{h,cpp}: Removed handle() method and added a dll() method. Also, since ACE_DLL_Handle::symbol() calls ACE::ldname() internally, changed the ACE::ldname() calls in the ctors for ACE_Object_node and ACE_Function_Node to ACE::strnew(). * ace/Svc_Conf_y.cpp: Changed call to ACE_Location_Node::handle() to ACE_Location_Node::dll() in ACE_Service_Type::ctor. * ace/Service_Object.{h,cpp,i}: Modified ACE_Service_Type to maintain an ACE_DLL member variable instead of an ACE_SHLIB_HANDLE, and changed ctor accordingly. Removed call to ACE_OS::dlclose() from dtor. Removed handle() methods. * ace/Object_Manager.cpp: * ace/Service_Config.cpp: The Object Manager is now always responsible for cleaning up the ACE_Framework_Repository, but only after the Service Config framework has been cleanup. ACE_Service_Config no longer knows anything about ACE_Framework_Repository. * ace/Service_Config.cpp: Changed create_service_type() to take an ACE_DLL& instead of an ACE_SHLIB_HANDLE. Removed unneeded call to ACE::ldname(). * ace/DLL_Manager.{h,cpp}: Added. * ace/DLL.{h,cpp}: Added new classes, ACE_DLL_Manager_Ex and ACE_DLL_Handle, and and moved all functionalility from ACE_DLL to the new classes. ACE_DLL maintains the same interface and semantics but defers all calls to the new classes. ACE_DLL_Manager is a singleton that manages the lifetimes of instances of refcounted ACE_DLL_Handle objects that represent the actual dlls. The following unloading strategies are available: per-process/dll, eager/lazy. Added copy ctor to ACE_DLL so that the get/set_handle() methods aren't needed--there use in the Service Config framework can complicate orderly destruction of singletons based on ACE_DLL_Singleton. Added call to ACE::ldname() to the symbol() method so that the caller no longer needs to do it themselves. * ace/Singleton.{h,cpp,i}: Added new singleton template, ACE_DLL_Singleton, that registers itself with the ACE_Framework_Repository so that it can be destroyed when the dll with which it is associated is unloaded. * ace/Proactor.{h,cpp}: * ace/Reactor.{h,cpp}: Added name() method as needed by changes below, and implemented dll_name() method to return "ACE". * ace/Framework_Component.{h,cpp,inl}: * ace/Framework_Component_T.{h,cpp}: Enhanced the Framework Component "framework" ;-) to allow the removal of registered components, either individually by name or as a group, based on the dll that registered them. Mon May 27 15:59:17 2002 Nanbor Wang * ACEXML/common/XML_Codecs.h: * ACEXML/common/XML_Codecs.cpp: Fixed VC warnings. * ace/ace_dll.dsp: * ace/ace_lib.dsp: Added Codecs.*. * tests/tests.dsw: * tests/Codecs_Test.dsp: Added a new test. * ACEXML/common/XML_Common.dsp: Added XML_Codecs.*. Mon May 27 15:47:44 2002 Steve Huston * ace/OS.h: Add new service-related macro, ACE_Local_Service_Export. This is intended for use in the ACE_FACTORY_DEFINE macro, for static services whose factory functions need not be exported. To use this when defining a factory function, do ACE_FACTORY_DEFINE(ACE_Local_Service, StaticSvcClass) * examples/C++NPv2/Service_Reporter.cpp: Use ACE_Local_Service in the ACE_FACTORY_DEFINE for the Service_Reporter service. Mon May 27 15:21:57 2002 Krishnakumar B * ace/Codecs.h: * ace/Codecs.cpp: New files meant to hold all encoding/decoding classes/functions. Currently implements Base 64 encoding. * ACEXML/common/XML_Codecs.h: * ACEXML/common/XML_Codecs.cpp: * ACEXML/common/Makeile: Same guy under a different hood. * ace/Basic_Types.h: Added definition of ACE_Byte. * tests/Codecs_Test.cpp: * tests/run_test.lst: Regression test which tests the encoding/decoding functionality added above. * tests/Makefile: * tests/RMCast/Makefile: * ace/Makefile: * ace/RMCast/Makefile: Updated dependencies. * ace/Read_Buffer.cpp: Decrement the extra increment of slot. This is not completely correct, as we should abstract the handling of end-of-line across Unix and Windows and then use it here and all the places which read stuff from files. See Fri May 24 10:42:25 2002 Douglas C. Schmidt for another manifestation of the same bug. * include/makeinclude/rules.local.GNU: Remove files named core.[0-9]+. Newer kernels dump a core file associated with each process separately. Mon May 27 15:04:31 2002 Steve Huston * ace/OS.h (ACE_FACTORY_DEFINE): Add the export declaration to the generated factory, removing the need to also use the ACE_FACTORY_DECLARE in simple (most common) situations. * examples/C++NPv2/SLD.cpp: * examples/C++NPv2/SLDex.cpp: * examples/C++NPv2/Server_Shutdown.cpp: Remove ACE_FACTORY_DECLARE. It's not needed in these situations. Mon May 27 07:39:41 2002 Douglas C. Schmidt * ace/Configuration_Import_Export.cpp (squish): Added a check for '\r' to ensure that empty lines are handled properly. Thanks to Vladimir Chovanec for reporting this. Mon May 27 09:20:12 2002 Johnny Willemsen * bin/generate_doxygen.pl: Added tao_costime to the list of doxygen files that must be run * etc/tao_costime.doxygen: Created doxygen config file for this TAO service * html/index.html: Added link for the TAO CosTime service doxygen documentation Mon May 27 08:18:12 2002 Johnny Willemsen * ACEXML/common/Attributes_Def_Builder.h: * ACEXML/common/DTD_Manager.h: * ACEXML/common/Element_Def_Builder.h: * ACEXML/common/Validator.h: * ACEXML/parser/debug_validator/Debug_Attributes_Builder.h: * ACEXML/parser/debug_validator/Debug_Element_Builder.h: * ACEXML/parser/debug_validator/Element_Tree.h: Corrected doxygen commands, no space between @ and the command is allowed. * ace/Active_Map_Manager.h: * ace/Arg_Shifter.h: * ace/Based_Pointer_Repository.cpp: * ace/CDR_Stream.h: * ace/Caching_Utility_T.h: * ace/Configuration.h: * ace/DEV_IO.h: * ace/Dev_Poll_Reactor.h: * ace/Dirent_Selector.h: * ace/Env_Value_T.h: * ace/FILE.h: * ace/Get_Opt.h: * ace/Hashable.h: * ace/IO_Cntl_Msg.cpp: * ace/Init_ACE.h: * ace/Local_Tokens.h: * ace/Log_Msg.cpp: * ace/Log_Msg.h: * ace/Memory_Pool.h: * ace/Message_Block.h: * ace/OS.cpp: * ace/OS.h: * ace/Object_Manager.cpp: * ace/POSIX_Asynch_IO.cpp: * ace/POSIX_Asynch_IO.h: * ace/POSIX_Proactor.cpp: * ace/POSIX_Proactor.h: * ace/Pair_T.h: * ace/Proactor.cpp: * ace/Process.h: * ace/Reactor_Impl.h: * ace/Remote_Tokens.h: * ace/SV_Message.h: * ace/Select_Reactor_T.h: * ace/Svc_Conf.h: * ace/System_Time.h: * ace/TLI_Stream.h: * ace/TP_Reactor.cpp: * ace/TP_Reactor.h: * ace/Task.h: * ace/Task_T.h: * ace/Thread.h: * ace/Timer_Wheel_T.cpp: * ace/Token.h: * ace/Token_Manager.h: * ace/WIN32_Proactor.cpp: Improved the doxygen documenation by converting old style documentation to doxygen style. Also corrected small typing errors, start sentences with capital letters and corrected incorrected doxygen commands. * ace/POSIX_Proactor.cpp: Corrected the signature of handle_events from unsigned long to u_long to match the declaration of this method. This was found using the warning file of the doxygen generation. * ace/Future.h: Corrected brief documentation. Brief documentation ends when a dot is found followed by a space of a newline. We had "i.e. " in the brief documenation and now this documentation ended after the second dot, changed it to "i.e.,". This fixed [Bug 892]. * ace/config-doxygen.h: Added ACE_HAS_TOKENS_LIBRARY to generate ACE token library documentation * bin/generate_doxygen.pl: Added tao_cosnaming to the list of doxygen files that must be run * etc/tao_cosnaming.doxygen: Created doxygen config file for this TAO service * etc/tao_cosnotification.doxygen: Corrected tagfile name and directory that is generated * html/index.html: Added link for the TAO Naming service doxygen documentation Sun May 26 21:48:49 2002 Steve Huston * examples/C++NPv2/Reactor_Logging_Server_Adapter.cpp: Added include guard. * examples/C++NPv2/SLD.dsp: Define SLD_BUILD_DLL, not ACE_BUILD_DLL, to set up the export stuff correctly. * examples/C++NPv2/SLDex.dsp: * examples/C++NPV2/examples.dsw: Add new project for second part of chap 5 example. * examples/C++NPv2/SLD.cpp: * examples/C++NPv2/SLDex.cpp: * examples/C++NPv2/Server_Shutdown.cpp: Add ACE_FACTORY_DECLARE to get correct export declaration for factory. Sun May 26 13:20:15 2002 Douglas C. Schmidt * ace/config-macosx.h: Added #define ACE_LACKS_SYSTIME_H. Thanks to Dennis C. De Mars for recommending this. Sat May 25 17:45:21 2002 Nanbor Wang * tests/Proactor_Scatter_Gather_Test.dsp: * tests/tests.dsw: Added Proactor_Scatter_Gather_Test. Sat May 25 16:42:46 2002 Douglas C. Schmidt * tests/run_test.lst, * tests/Makefile.bor, * tests/Makefile: Added Proactor_Scatter_Gather_Test. Sat May 25 16:30:00 2002 Edan Ayal * tests/Proactor_Scatter_Gather_Test.cpp: Added a new test for the asynch scatter/gather I/O functionality. It is currently supported (as the feature itself) only under Win32 - actually NT4 SP2 and above. The test runs in a single thread, and involves a single Sender, two Receivers and a single Writer. The Sender async-reads (scattered) from a file into chunks of . It async-sends (gathered) the odd chunks to the first receiver over a stream, and the even chunks to the second receiver over a different stream. The receivers async-read (scattered) from the socket streams into chunks in size of , and convey the data to the Writer. The Writer reconstructs the file using async-write (gathered). Finally, the reconstructed file is compared to the original file to determine test success. The test therefore covers both async scatter/gather stream I/O and async scatter/gather file I/O. Sat May 25 14:52:06 2002 Douglas C. Schmidt * ace/Strategies_T.cpp (make_svc_handler): Fixed a typo where dll_name_ was misspelled as shared_library_. Thanks to Nathan Krasney for reporting this. Fri May 24 10:42:25 2002 Douglas C. Schmidt * ace/Configuration_Import_Export.cpp (squish): Added a check for '\n' to ensure that empty lines are handled properly. Thanks to Vladimir Chovanec for reporting this. Sat May 25 15:09:42 2002 Steve Huston * examples/C++NPv2/SLDex.{cpp mak}: * examples/C++NPv2/Server_Shutdown.cpp: * examples/C++NPv2/SLDEX_export.h: * examples/C++NPv2/Makefile: Add new dll for second part of Chapter 5 dynamic (re)config example. Sat May 25 11:47:33 2002 Steve Huston * examples/C++NPv2/Reactor_Logging_Server_Adapter.cpp (init): Add wide->narrow char conversion to get ACE_TCHAR into a char-based method. Sat May 25 01:15:02 UTC 2002 Craig Rodrigues * bin/nightlybuilds/builds.lst: Move Debian_Minimum bulid to new scoreboard. Fri May 24 23:52:39 2002 Steve Huston * examples/C++NPv2/Configurable_Logging_Server.dsp: * examples/C++NPv2/SLD.dsp: * examples/C++NPv2/examples.dsw: Added new projects for chapter 5's configurable logging server. Fri May 24 20:51:25 2002 Christopher Kohlhoff * ace/Log_Msg_NT_Event_Log.cpp (open): Need to use logger_key, when it is supplied, to register the event source with the system. * ace/Log_Msg_NT_Event_Log.cpp (log): Replace all newlines in the message with the CR-LF character sequence so that line breaks are correctly displayed in the event viewer. Fri May 24 20:18:41 2002 Steve Huston * examples/C++NPv2/Reactor_Logging_Server.cpp: * examples/C++NPv2/Reactor_Logging_Server_T.cpp: Move all the method implementations for Reactor_Logging_Server<> into Reactor_Logging_Server_T.cpp so they're reuseable in a shared library. * examples/C++NPv2/Reactor_Logging_Server.h: Add template implementation reference plumbing for compilers. * examples/C++NPv2/Select_Reactor_Logging_Server.cpp: * examples/C++NPv2/TP_Reactor_Logging_Server.cpp: * examples/C++NPv2/WFMO_Reactor_Logging_Server.cpp: Remove the (duplicate) definitions of Reactor_Logging_Server<>; the compiler now generates this using the code in Reactor_Logging_Server_T.cpp. * examples/C++NPv2/svc.conf: * examples/C++NPv2/SLD.cpp: * examples/C++NPv2/SLD_export.h: * examples/C++NPv2/SLD.mak: Code and Makefile for the dynamic logging service in chapter 5. * examples/C++NPv2/Makefile: Added SLD.mak. * examples/C++NPv2/Logging_Acceptor.h: Added a PEER_ADDR trait. The Reactor_Logging_Server_Adapter's use of Logging_Acceptor needs the trait. * examples/C++NPv2/Service_Reporter.h: Make ctor public so the service factory can instantiate this class. Sat May 25 00:20:50 UTC 2002 Craig Rodrigues * bin/nightlybuilds/builds.lst: Move Debian_WChar to new scoreboard. Fri May 24 10:18:39 2002 Steve Huston * bin/auto_compile: Don't bail out if the only CVS conflict is in ChangeLog or THANKS. * ace/CDR_Stream.h (ACE_InputCDR): Added comments clarifying the behavior of the ctor that takes a const ACE_Message_Block *. Thanks to Alexander Maack for motivating this. * examples/C++NPv2/display_logfile.cpp (svc): Fix memory leak (thanks to Alexander Maack for reporting this) and don't lose the host name in the data if demarshaling has to be aborted to go read more data from the file. * examples/C++NPv2/Logging_Acceptor_Ex.h: * examples/C++NPv2/Logging_Event_Handler_Ex.h: Remove trailing ';' on inlined methods; Changed to match book. * examples/C++NPv2/Select_Reactor_Logging_Server.cpp: Changed to match book. * examples/C++NPv2/Reactor_Logging_Server_Adapter.{h cpp}: * examples/C++NPv2/Service_Reporter.{h cpp}: * examples/C++NPv2/Configurable_Logging_Server.{cpp mak}: Example code from Chapter 5 of C++NPv2 (Service Configurator). * examples/C++NPv2/Makefile: Added new examples. * THANKS: Added Alexander Maack to the Hall of Fame. * ace/Reactor.h: Mark run[_alertable]_event_loop, end_event_loop, event_loop_done, and reset_event_loop static methods deprecated in favor of calling the non-static methods on ACE_Reactor::instance(). Thanks to Don Hinton for motivating this. * ace/String_Base.h (rep): Added note that directs the caller to free the returned memory. Mon May 13 19:15:49 2002 Steve Huston * ace/Service_Config.h: Doxygen-ized comments for open(), and added a note on -b that files are evaluated relative to "/". * netsvcs/servers/main.cpp: Move the reactor/signal initialization to be after the service loading. If the user specifies -b (be a daemon) it closes all handles, including the reactor notification pipe. Also added ACE_TEXT decorator to the string literals. Fri May 24 13:29:05 UTC 2002 Craig Rodrigues * bin/nightlybuilds/builds.lst: Move Debian_Full and Debian_Minimum_Static builds to new scoreboard. Thu May 23 20:35:22 2002 Steve Huston * ace/RB_Tree.h: Clarified that iterator is valid after changes to container only if the iterated-over element is not removed. Thanks to Craig Ching for noticing this. * ace/Module.cpp (close): Fixed to only use the passed-in flags if the task delete policy was not set explicitly. Thanks to Doug Schmidt for this fix! * examples/C++NPv2/WFMO_Reactor_Logging_Server.cpp: Use new technique for detecting "quit" command. Unified with book content. Thu May 23 20:36:46 UTC 2002 Craig Rodrigues * bin/nightlybuilds/builds.lst: Move Lynx_PPC build to new scoreboard. Thu May 23 14:04:52 2002 Krishnakumar B * ACEXML/common/LocatorImpl.cpp: * ACEXML/common/LocatorImpl.h: * ACEXML/common/LocatorImpl.i: * ACEXML/parser/parser/Parser.cpp: * ACEXML/parser/parser/Parser.h: * ACEXML/parser/parser/Parser.i: Implemented the Locator for the XML parser. * ACEXML/common/CharStream.h: * ACEXML/common/DTDHandler.h: * ACEXML/common/Env.h: * ACEXML/common/Exception.h: * ACEXML/common/FileCharStream.h: * ACEXML/common/InputSource.cpp: * ACEXML/common/SAXExceptions.cpp: * ACEXML/common/SAXExceptions.h: * ACEXML/examples/SAXPrint/SAXPrint_Handler.cpp: * ACEXML/examples/SAXPrint/SAXPrint_Handler.h: Cosmetic fixes including some fixing some memory leaks. * ACEXML/examples/SAXPrint/Print_Handler.cpp: * ACEXML/examples/SAXPrint/Print_Handler.h: * ACEXML/examples/SAXPrint/main.cpp: Add support for printing out errors which uses the Locator. This will print out errors only if there is an error in the XML file. Thu May 23 07:53:37 2002 Douglas C. Schmidt * examples/Misc/test_read_buffer.cpp (ACE_TMAIN): Use ACE_STDIN rather than 0. Thanks to Soeren Gerlach for motivating this. Tue May 21 06:13:50 2002 Douglas C. Schmidt * ace/Hash_Map_Manager_T.h (class ACE_Hash_Map_Manager_Ex): Made shared_find() protected rather than private. Thanks to Ganesh Pai for reporting this. Wed May 22 23:18:26 2002 Priyanka * ACE version 5.2.3 released. Sat May 18 09:32:58 2002 Ossama Othman * ace/SSL/SSL_SOCK_Stream.cpp (get_remote_addr): Set errno to ENOTCONN if the SSL connection hasn't been completed yet, and errno to EBADF if the file descriptor hasn't been set yet. This emulates the getpeername() errno semantics. Sat May 18 08:19:48 2002 Ossama Othman * ace/SSL/SSL_Connector.h: * ace/SSL/SSL_Connector.cpp: Temporarily removed these files since there are still some thread-safefy issues to be addressed in the implementation. Better to wait until after the forthcoming beta to ship them. Fri May 17 07:32:49 2002 Douglas C. Schmidt * ace/Log_Msg.cpp: Replaced ACE_NEW_RETURN_I with ACE_NEW_RETURN. Thanks to Johnny Willemsen for reporting this. Thu May 16 20:15:36 2002 Douglas C. Schmidt * ace/OS.i: Added ACE_HAS_ISASTREAM_PROTO guard around the extern "C" int isastream() method. Thanks to Oleg Terletsky for reporting this. * ace/ARGV.h: Added a comment that points out the "add()" method doesn't handle memory management. Thanks to Kyle Brost and Don Hinton for clarifying this. Thu May 16 17:05:19 2002 Ossama Othman * ace/SSL/SSL_Connector.cpp (handle_input, handle_output): Qualify the AST type with its appropriate scope. g++ requires it. Thu May 16 15:28:24 2002 Ossama Othman * ace/SSL/SSL_Connector.h: * ace/SSL/SSL_Connector.cpp: New ACE_SSL-specific subclasses of the standard ACE_{Strategy_}Connector classes. The standard ACE_Connector class assumes that a connection is established once the stream handle becomes writable. However, that only holds for protocols with a single handshake, such as TCP. Protocols with multiple handshakes, such as SSL, require special handling to prevent the connection from being considered completed once the stream handle becomes writable. The subclasses simply override the handle_input() and handle_output() methods for each of base classes that were subclassed. If possible, these changes will be generalized and merged into ACE proper. When that occurs, these classes will be deprecated. As such, these classes are only intended to be an interim solution. * ace/SSL/SSL_SOCK_Connector.cpp (connect): Fixed bug where the handle in the SSL_SOCK_Stream was not set if a connection is in progress. In that case, the handle must also be set in the SSL_SOCK_Stream so that the correct handle is returned from SSL_SOCK_Stream::get_handle() when performing non-blocking connect()s via the SSL_SOCK_Connector. (complete): No need to set the handle in SSL_SOCK_Stream since it is already set in the connect() method. Only attempt to complete the TCP connection if that hasn't already been done. * ace/SSL/SSL_SOCK_Stream.h (peer): Made this method public so that it can be called by the new SSL_{Strategy_}Connector classes. * ace/SSL/SSL_SOCK_Stream.cpp (get_remote_addr): Overrode the base class implementations of this method. Some applications use get_remote_addr() as a way of determining whether or not a connection has been established. In SSL's case, the remote addr will be available once the TCP handshake has been complete. Despite that fact, the SSL connection may not have been completed. In such a case, a successful return from get_remote_addr() would be misleading. Thu May 16 13:34:19 2002 Nanbor Wang * ACEXML/examples/SAXPrint/main.cpp: Added constness to . This fixed a GCC 3.0 warning. Wed May 15 17:47:24 UTC 2002 Don Hinton * ace/DLL.cpp: Fixed compile error in an AIX ifdef'd section of code I missed before. Wed May 15 17:18:58 UTC 2002 Don Hinton * ace/DLL.cpp (open): Removed unreferenced return value. Thanks to Nanbor for noticing this. Wed May 15 16:44:27 UTC 2002 Don Hinton * ace/DLL.cpp (save_last_error): Use ACE::strnew to make a copy of the saved string. Wed May 15 15:58:07 UTC 2002 Don Hinton * tests/DLL_Test.cpp: Modified test to make calles to ACE_DLL::error () in order to test changes below. * ace/DLL.{h,cpp}: Removed the return in open() after an ACE_Lib_Find error, so that dlopen() will be called and the appropriate error stored. Added new static flag, open_called_, to keep track of whether or not a library function (specifically dlopen) has been called. This is used internally to make sure that dlerror() isn't called unless the library has been initialized with a call to dlopen first. Otherwise it seg-faults on Linux (and perhaps others). Also added a last_error_ variable and save_last_error() method and placed a call to save_last_error() after each library call. Then changed error() so it just returns last_erro_. This solves a few problems, since open() made calls to error() which returned the appropriate error but cleared the value for the next call. So for instance, when the ctor failed and tried to call error() to report the error, it didn't return anything since open() had already called it. Also, if open() failed, and the called tried to call error() to find out why, they got a blank error message since error() had already been called by open(). Tue May 14 19:40:11 2002 Priyanka Gontla * tests/Proactor_Test.cpp (initiate_write_stream): Applied the Patch Johnny Willemsen sent to fix the test for the unicode builds. Tue May 14 19:14:11 2002 Priyanka Gontla * tests/TP_Reactor_Test.cpp (Connector): Fixed the warnings by removing the check condition 'size_t index_ >= 0' which is always going to be true. * tests/Proactor_Test.cpp: Integrated the changes sent by Alex Libman to fix the test on linux and other platforms that has a weak AIO implementation. Mon May 13 16:43:34 2002 Krishnakumar B * ACEXML/parser/parser/Parser.cpp (parse_xml_prolog): I meant to change "standalong" to "standalone" not "encoding" to "encodine". Brain damage... Mon May 13 16:31:33 2002 Krishnakumar B * ACEXML/parser/parser/Parser.cpp (parse_xml_prolog): Fixed a small typo. We should parse "standalone" not "standalong". Mon May 13 10:19:48 2002 Nanbor Wang * ace/Message_Block.cpp: Fixed a fuzz warning. Mon May 13 08:36:38 2002 Alex Libman * tests/Proactor_Test.cpp: Improved flow-control in full-duplex mode by increasing the window size, total_send - total_recv to achieve max performance from TCP/IP Improved static info which includes the number of bytes sent/recv and the number of read/write operations. This allows to see distribution of I/O operations between handlers. Would be useful for Proactor's future improvements. Impoved scatter/gather branch under Win32. Instead of splitting one message into 3 small blocks we now send them as a chain. This helps to improve performance. Mon May 13 07:33:43 2002 Chad Elliott * ACEXML/examples/SAXPrint/main.cpp: Fix the Debian build by using ACEXML_Char instead of ACE_TCHAR. Sun May 12 23:20:06 2002 Alex Libman * tests/TP_Reactor_Test.{h,cpp}: Improved flow-control in full-duplex mode by increasing the window size, total_send - total_recv to achieve max performance from TCP/IP Improved static info which includes the number of bytes sent/recv and the number of read/write operations. This allows to see distribution of I/O operations between handlers. Would be useful for TP_Reactor's future improvements. Sun May 12 10:11:07 2002 Douglas C. Schmidt * ace/Message_Queue_T.cpp: Updated all the enqueue*() and dequeue*() methods so that they use the new total_size_and_length() method, which is more efficient. * ace/Message_Block.h (ACE_Message_Block): Added new total_size_and_length() method to speed up calculation of these values by putting them into one loop. Sun May 12 11:12:00 2002 Nanbor Wang * Makefile: Moved ACEXML directory up so it would be compile right after ACE. We will need them when XML-based Service Configurator becomes the default. Thank to Kitty for pointing this out. Sat May 11 13:04:49 2002 Douglas C. Schmidt * ace/Synch.h: Updated the documentation explaining what an ACE_Barrier does. Thanks to Timothy Culp for motivating this. Sun May 12 09:45:37 2002 Edan Ayal * ace/WIN32_Asynch_IO.cpp: Fixed check for ACE_IOV_MAX limitation in the following methods: - ACE_WIN32_Asynch_Read_Dgram::recv - ACE_WIN32_Asynch_Write_Dgram::send - ACE_WIN32_Asynch_Read_Stream::readv - ACE_WIN32_Asynch_Write_Stream::writev - ACE_WIN32_Asynch_Read_File::readv - ACE_WIN32_Asynch_Write_File::writev. Fri May 10 18:29:48 2002 Krishnakumar B * ace/config-icc-common.h (ACE_HAS_ANSI_CASTS): * include/makeinclude/platform_linux_icc.GNU: Fixed the config file to ensure compilation with Intel C++ Compiler version 6.0. Fri May 10 18:16:50 2002 Irfan Pyarali * ace/Connector.cpp (handle_output): Removed unnecessary debug statement. Thu May 9 20:02:10 2002 Douglas C. Schmidt * docs/ACE-bug-process.html: Fixed a typo in the hostname of the TAO FAQ. Thanks to Jeff Adams for reporting this. Thu May 9 16:26:48 2002 Nanbor Wang * ACEXML/examples/SAXPrint/main.cpp: Added missing include file. * ace/Service_Config.cpp: * ace/Service_Config.h: * ace/Svc_Conf.y: * ace/Svc_Conf_y.cpp: Consolidated ace_create_service_type into ACE_Service_Config::create_service_type_impl. Thu May 9 14:35:24 2002 Nanbor Wang * ace/XML_Svc_Conf.h: Changed to include ACE_export.h instead of config-all.h and added #pragma once macros. Thu May 09 12:12:59 2002 Nanbor Wang * ACEXML/apps/svcconf/Svcconf.h: * ACEXML/apps/svcconf/Svcconf.cpp: * ACEXML/apps/svcconf/Svcconf_Handler.h: * ACEXML/apps/svcconf/Svcconf_Handler.cpp: Commented out the code if XML-based Service Configurator is not used. * ACEXML/apps/svcconf/Makefile: * ACEXML/apps/svcconf/XML_Svc_Conf_Parser.dsp: Removed ACEXML from the list of include path to be consistent with other projects. Thu May 09 10:53:51 2002 Nanbor Wang * ACEXML/common/XML_Common.dsp: One more mis-merged project file. Thu May 09 10:39:17 2002 Nanbor Wang * ace/ace_dll.dsp: * ace/ace_lib.dsp: Fixed link error on win32. I forgot to merge these project files differently (they can not be merged.) Thu May 9 01:07:56 2002 Nanbor Wang * ACEXML/common/StrCharStream.h: * ACEXML/common/StrCharStream.cpp: Fixed Linux compilation errors. Thu May 09 00:38:22 2002 Irfan Pyarali * ace/WFMO_Reactor.cpp (event_handling): Added a fix for bug 1161. The problem was described aptly and the fix was applied exactly as suggested by Lyn Headley : Problem: "The do-while loop in this function is problematic, because active threads is incremented once prior to executing the loop, and then decremented on every iteration of the loop inside safe dispatch(). Thus on the second iteration of the loop active threads is decremented to 2^32, which causes the thread to block on waiting to change state inside update state(), which is never signaled (because there are no other active threads)." Solution: "Moving the do clause of the loop up a few statements to include the increment of active threads (and the acquisition of the lock) would probably fix the larger bug." Also, thanks to Lyn Headley and Paxton Mason at Wolverine, and Kobi Cohen Arazi , Mike Winter (mwinter@sonic.net), who have all suggested fimilar problems and fixes. Thu May 09 00:06:47 2002 Irfan Pyarali * examples/Reactor/WFMO_Reactor: Added the "Static Debug", "Static Release", and "Release" build configurations to the "Debug" configuration for all the 16 dsp files in this directory. Wed May 8 23:57:32 UTC 2002 Craig Rodrigues * bin/nightlybuilds/builds.lst: Move Redhat 7.1 Core build to new scoreboard. Wed May 8 15:15:41 2002 Nanbor Wang Merged in the XML-based Service Configurator framework. The XML-based Service Configruator is *not* enabled by default and the merge should not affect existing applications. We will make the XML-based Service Configurator the defualt one at some point in the future. So you might want to try it out before that time. :) To switch current ACE to use XML Service Configurtor, Add #define ACE_HAS_XML_SVC_CONF in your . You can use the $(ACE_ROOT)/bin/svcconf_convert.pl to convert your existing svc.conf files to svc.conf.xml. * ace/OS.h: * ace/Parse_Node.cpp: * ace/Parse_Node.h: * ace/Service_Config.cpp: * ace/Service_Config.h: * ace/Svc_Conf.h: * ace/Svc_Conf_Lexer_Guard.cpp: * ace/Svc_Conf_l.cpp: * ace/Svc_Conf_y.cpp: * tests/Service_Config_DLL.cpp: Simplified the macro check. * ace/Service_Config.h: * ACEXML/apps/svcconf/Svcconf.cpp: Fixed Linux compilation warnings. * ACEXML/apps/svcconf/Svcconf_Handler.cpp: * ace/Service_Config.cpp: Added more comprehensive error messages. * ACEXML/Makefile: * ACEXML/Makefile.bor: * ACEXML/apps/Makefile: * ACEXML/apps/Makefile.bor: * ACEXML/apps/svcconf/Makefile: * ACEXML/apps/svcconf/Makefile.bor: * ACEXML/parser/parser/Makefile: * ace/Makefile: * ace/Makefile.am: * ace/Makefile.bor: * ace/ace.icc: * examples/ASX/CCM_App/Makefile: * examples/ASX/CCM_App/Makefile.CCM_App: Added or Updated Makefiles. * bin/svcconf-convert.pl: Added more debugging info printout. Fixed incorrect mapping on initializer path/path and state/params. * ace/Service_Object.h: Added enum definition to differentiate ACE_Service_Type_Impl. The enum values are taken from "ace/Svc_Conf_Toekns.h" so that the same service can work with both classic and XML service configurator frameworks. * ace/Service_Config.h: * ace/Service_Config.cpp: Added and methods to ensure objects are allocated in consistent DLL. * ACEXML/parser/parser/Parser.cpp: Made the exception messages more comprehensive so it's easier to determine the origins of parse errors. * ACEXML/apps/svcconf/Svcconf_Handler.h: * ACEXML/apps/svcconf/Svcconf_Handler.i: * ACEXML/apps/svcconf/Svcconf_Handler.cpp: Added more implementation. * examples/ASX/CCM_App/svc.conf.xml: * netsvcs/servers/svc.conf.xml: * tests/Service_Config_Test.conf.xml: Added new XML-based svc.conf files. * tests/Service_Config_DLL.cpp: Added xml-based inline svc.conf directives. * ACEXML/apps/XML_Apps.dsw: Added new workspace for XML applications. This should contains all projects under this subdirectory. * ACEXML/apps/svcconf/README: * ACEXML/apps/svcconf/Svcconf.cpp: * ACEXML/apps/svcconf/Svcconf.h: * ACEXML/apps/svcconf/Svcconf_Handler.cpp: * ACEXML/apps/svcconf/Svcconf_Handler.h: * ACEXML/apps/svcconf/Svcconf_Handler.i: * ACEXML/apps/svcconf/XML_Svc_Conf_Parser.dsp: Added new files that implement the parser for XML-based Service Configurator. * bin/svcconf-convert.pl: Updated the help message. * ace/config-all.h: Added ACE_DEFAULT_SVC_CONF_EXT to define the default file extention name for svc.conf files. It is ".conf" when using classic Service Configurator and ".conf.xml" when using XML Service Configurator. * tests/Service_Config_Test.cpp: Changed to use different file extension with different Service Configurator. * tests/Service_Config_Test.conf.xml: Added the converted XML based svc.conf file. * ace/ace_dll.dsp: * ace/ace_lib.dsp: * ace/XML_Svc_Conf.h: * ace/XML_Svc_Conf.cpp: Added abstract interface definition for DLL based XML parser. * ace/OS.h: Defined ACE_DEFAULT_SVC_CONF_FILE to "svc.conf.xml" if ACE_USES_CLASSIC_SVC_CONF is not defined. * ace/Service_Config.cpp: Adapt Service_Config to use XML parser to process an svc.conf.xml file. * bin/generate_export_file.pl: Added code to record the flags used to generate an export file. * XML/examples/svcconf/Svcconf_Handler.h: * XML/examples/svcconf/Svcconf_Handler.i: * XML/examples/svcconf/Svcconf_Handler.cpp: Added Svcconf handling simulation. * XML/examples/test_docs/svcconf.dtd: Revised Svcconf DTD. * XML/examples/test_docs/svcconf.dtd: Updated the DTD again. The tag also needed an "id" attribute. * XML/examples/SAXPrint/main.cpp: * XML/examples/SAXPrint/svc.conf.xml: Modified the sample XML to conform to the updated svcconf.dtd. * XML/examples/svcconf/README: * XML/examples/svcconf/Svcconf.dsp: * XML/examples/svcconf/Svcconf.dsw: * XML/examples/svcconf/Svcconf_Handler.cpp: * XML/examples/svcconf/Svcconf_Handler.h: * XML/examples/svcconf/Svcconf_Handler.i: * XML/examples/svcconf/main.cpp: New example to test out svc.conf.xml parsing. Not finished. * XML/examples/test_docs/svcconf.dtd: Simplied the svc.conf.dtd by removing the tags and making it an attribute for and tags. * ace/Parse_Node.cpp: * ace/Parse_Node.h: * ace/Service_Config.cpp: * ace/Service_Config.h: * ace/Svc_Conf.h: * ace/Svc_Conf.y: * ace/Svc_Conf_Lexer_Guard.cpp: * ace/Svc_Conf_l.cpp: * ace/Svc_Conf_y.cpp: Decoupled old Service_Config parser from ACE. * XML/examples/SAXPrint/main.cpp: Added a new test to try the new StrCharStream and switch to use ACE_Get_Opt to support more robust command line arguments. * XML/common/StrCharStream.h: * XML/common/StrCharStream.cpp: Added new CharStream class that take a null-terminated ACEXML_Char string as an input source. * XML/common/FileCharStream.h: Removed unnecessary inclusion of "ace/streams.h". * XML/common/Makefile: * XML/common/Makefile.bor: * XML/common/XML_Common.dsp: Added StrCharStream.*. Wed May 8 16:29:05 2002 Krishnakumar B * bin/nightlybuilds/builds.lst (STATUS): Added more information about the build on toutatis. Wed May 8 13:57:58 2002 Chad Elliott * ace/OS_Dirent.h: * ace/OS_Dirent.cpp: Fixed the Dirent_Test under wide character builds with Visual C++ 6.0. The d_name member of the dirent struct is normally a one element ACE_TCHAR array that is used as an ACE_TCHAR pointer. This doesn't work properly under wide character builds with VC6. Note: because of this change, memcpy on a 'struct dirent' no longer works on Windows as it would on UNIX. Wed May 8 11:02:44 2002 Balachandran Natarajan * tests/TP_Reactor_Test.cpp: T