From 23111468052a9f4ec607b9b10123f62004348216 Mon Sep 17 00:00:00 2001 From: nobody Date: Mon, 11 Oct 1999 15:10:34 +0000 Subject: This commit was manufactured by cvs2svn to create tag 'TAO-1_0_6'. --- ACE-INSTALL.html | 2048 -- ACE-configuration.txt | 148 - ACE-install.sh | 356 - ACE.DSW | 1217 - ASNMP/COPYRIGHT | 68 - ASNMP/ChangeLog | 336 - ASNMP/Makefile | 34 - ASNMP/README | 177 - ASNMP/TO-DO | 3 - ASNMP/agent/Makefile | 28 - ASNMP/agent/agent_impl.cpp | 157 - ASNMP/agent/agent_impl.h | 52 - ASNMP/agent/main.cpp | 26 - ASNMP/agent/snmp_agent.cpp | 96 - ASNMP/agent/snmp_agent.h | 48 - ASNMP/asnmp-overview.html | 133 - ASNMP/asnmp/ChangeLog | 161 - ASNMP/asnmp/Makefile | 744 - ASNMP/asnmp/TODO | 25 - ASNMP/asnmp/address.cpp | 2686 -- ASNMP/asnmp/address.h | 812 - ASNMP/asnmp/asn1.cpp | 1728 - ASNMP/asnmp/asn1.h | 342 - ASNMP/asnmp/counter.cpp | 106 - ASNMP/asnmp/counter.h | 79 - ASNMP/asnmp/ctr64.cpp | 211 - ASNMP/asnmp/ctr64.h | 110 - ASNMP/asnmp/enttraps.h | 118 - ASNMP/asnmp/gauge.cpp | 113 - ASNMP/asnmp/gauge.h | 80 - ASNMP/asnmp/integer.cpp | 227 - ASNMP/asnmp/integer.h | 140 - ASNMP/asnmp/octet.cpp | 594 - ASNMP/asnmp/octet.h | 150 - ASNMP/asnmp/oid.cpp | 800 - ASNMP/asnmp/oid.h | 170 - ASNMP/asnmp/oid_def.h | 87 - ASNMP/asnmp/pdu.cpp | 496 - ASNMP/asnmp/pdu.h | 213 - ASNMP/asnmp/sagent.cpp | 97 - ASNMP/asnmp/sagent.h | 83 - ASNMP/asnmp/smi.h | 153 - ASNMP/asnmp/smival.h | 104 - ASNMP/asnmp/snmp.cpp | 283 - ASNMP/asnmp/snmp.h | 134 - ASNMP/asnmp/snmperrs.h | 214 - ASNMP/asnmp/target.cpp | 324 - ASNMP/asnmp/target.h | 252 - ASNMP/asnmp/timetick.cpp | 142 - ASNMP/asnmp/timetick.h | 85 - ASNMP/asnmp/transaction.cpp | 202 - ASNMP/asnmp/transaction.h | 80 - ASNMP/asnmp/transaction_result.h | 29 - ASNMP/asnmp/vb.cpp | 396 - ASNMP/asnmp/vb.h | 204 - ASNMP/asnmp/wpdu.cpp | 520 - ASNMP/asnmp/wpdu.h | 85 - ASNMP/examples/Makefile | 28 - ASNMP/examples/get/Makefile | 40 - ASNMP/examples/get/get.cpp | 195 - ASNMP/examples/get/get_async.cpp | 204 - ASNMP/examples/next/Makefile | 41 - ASNMP/examples/next/next.cpp | 193 - ASNMP/examples/set/Makefile | 41 - ASNMP/examples/set/set.cpp | 263 - ASNMP/examples/trap/Makefile | 41 - ASNMP/examples/trap/purify4.1.txt | 117 - ASNMP/examples/trap/trap.cpp | 182 - ASNMP/examples/walk/Makefile | 41 - ASNMP/examples/walk/walk.cpp | 260 - ASNMP/mibs/RFC1213-MIB.my | 2618 -- ASNMP/tests/Address_Test.cpp | 557 - ASNMP/tests/Counter64_Test.cpp | 163 - ASNMP/tests/Counter_Test.cpp | 146 - ASNMP/tests/Gauge_Test.cpp | 136 - ASNMP/tests/Integer_Test.cpp | 202 - ASNMP/tests/Makefile | 581 - ASNMP/tests/Octet_Test.cpp | 164 - ASNMP/tests/Oid_Test.cpp | 189 - ASNMP/tests/Target_Test.cpp | 155 - ASNMP/tests/Varbind_Test.cpp | 203 - ASNMP/tests/run_tests.bat | 44 - ASNMP/tests/run_tests.sh | 60 - ASNMP/tests/test_config.h | 223 - AUTHORS | 7 - BIBLIOGRAPHY | 752 - COPYING | 90 - ChangeLog-93 | 52 - ChangeLog-94 | 1027 - ChangeLog-95 | 4179 --- ChangeLog-96a | 3889 --- ChangeLog-96b | 5878 ---- ChangeLog-97a | 9203 ----- ChangeLog-97b | 9182 ----- ChangeLog-98a | 6588 ---- ChangeLog-98b | 12943 ------- ChangeLog-99a | 13412 -------- ChangeLog-99b | 4139 --- FAQ | 1863 -- Makefile | 231 - Makefile.am | 117 - Makefile.bor | 26 - NEWS | 12 - PROBLEM-REPORT-FORM | 64 - README | 225 - STL/ACE_Changes | 53 - STL/readme2.stl | 272 - Static_Performance.dsw | 193 - TAO/orbsvcs/orbsvcs/AVStreams_Full.idl | 252 - TAO/tao/factories.h | 146 - THANKS | 817 - TODO | 272 - VERSION | 11 - WindozeCE/ACEApp.cpp | 17 - WindozeCE/ACEApp.h | 14 - WindozeCE/README | 35 - WindozeCE/StdAfx.cpp | 7 - WindozeCE/StdAfx.h | 26 - WindozeCE/WindozeCE.aps | Bin 34768 -> 0 bytes WindozeCE/WindozeCE.clw | 41 - WindozeCE/WindozeCE.cpp | 70 - WindozeCE/WindozeCE.dsp | 377 - WindozeCE/WindozeCE.h | 53 - WindozeCE/WindozeCE.plg | 18 - WindozeCE/WindozeCE.rc | 176 - WindozeCE/WindozeCEDlg.cpp | 155 - WindozeCE/WindozeCEDlg.h | 54 - WindozeCE/res/WindozeCE.ico | Bin 1078 -> 0 bytes WindozeCE/res/WindozeCE.rc2 | 13 - WindozeCE/resource.h | 21 - acconfig.h | 1422 - ace-config.1.in | 58 - ace-config.in | 209 - ace/ACE.cpp | 3549 -- ace/ACE.h | 732 - ace/ACE.i | 175 - ace/ACED.cpp | 193 - ace/ACER.cpp | 190 - ace/ARGV.cpp | 322 - ace/ARGV.h | 147 - ace/ARGV.i | 68 - ace/ATM_Acceptor.cpp | 32 - ace/ATM_Acceptor.h | 100 - ace/ATM_Acceptor.i | 95 - ace/ATM_Addr.cpp | 565 - ace/ATM_Addr.h | 158 - ace/ATM_Addr.i | 45 - ace/ATM_Connector.cpp | 29 - ace/ATM_Connector.h | 144 - ace/ATM_Connector.i | 144 - ace/ATM_Params.cpp | 22 - ace/ATM_Params.h | 136 - ace/ATM_Params.i | 170 - ace/ATM_QoS.cpp | 360 - ace/ATM_QoS.h | 120 - ace/ATM_QoS.i | 24 - ace/ATM_Stream.cpp | 162 - ace/ATM_Stream.h | 95 - ace/ATM_Stream.i | 108 - ace/Acceptor.cpp | 1151 - ace/Acceptor.h | 530 - ace/Acceptor.i | 4 - ace/Activation_Queue.cpp | 85 - ace/Activation_Queue.h | 84 - ace/Activation_Queue.i | 4 - ace/Active_Map_Manager.cpp | 12 - ace/Active_Map_Manager.h | 103 - ace/Active_Map_Manager.i | 87 - ace/Active_Map_Manager_T.cpp | 20 - ace/Active_Map_Manager_T.h | 194 - ace/Active_Map_Manager_T.i | 302 - ace/Addr.cpp | 65 - ace/Addr.h | 107 - ace/Addr.i | 69 - ace/Arg_Shifter.cpp | 185 - ace/Arg_Shifter.h | 164 - ace/Array.h | 42 - ace/Asynch_Acceptor.cpp | 481 - ace/Asynch_Acceptor.h | 185 - ace/Asynch_Acceptor.i | 5 - ace/Asynch_IO.cpp | 1031 - ace/Asynch_IO.h | 1111 - ace/Asynch_IO.i | 2 - ace/Asynch_IO_Impl.cpp | 70 - ace/Asynch_IO_Impl.h | 503 - ace/Asynch_IO_Impl.i | 87 - ace/Atomic_Op.i | 200 - ace/Auto_Ptr.cpp | 32 - ace/Auto_Ptr.h | 159 - ace/Auto_Ptr.i | 171 - ace/Based_Pointer_Repository.cpp | 123 - ace/Based_Pointer_Repository.h | 66 - ace/Based_Pointer_T.cpp | 98 - ace/Based_Pointer_T.h | 179 - ace/Based_Pointer_T.i | 136 - ace/Basic_Types.cpp | 26 - ace/Basic_Types.h | 539 - ace/Basic_Types.i | 476 - ace/CDR_Stream.cpp | 1050 - ace/CDR_Stream.h | 1110 - ace/CDR_Stream.i | 1464 - ace/CLASSIX/CLASSIX_Addr.cpp | 13 - ace/CLASSIX/CLASSIX_Addr.h | 97 - ace/CLASSIX/CLASSIX_Addr.i | 56 - ace/CLASSIX/CLASSIX_CLD_Connector.cpp | 116 - ace/CLASSIX/CLASSIX_CLD_Connector.h | 132 - ace/CLASSIX/CLASSIX_CLD_Connector.i | 24 - ace/CLASSIX/CLASSIX_CO_Acceptor.cpp | 199 - ace/CLASSIX/CLASSIX_CO_Acceptor.h | 144 - ace/CLASSIX/CLASSIX_CO_Acceptor.i | 31 - ace/CLASSIX/CLASSIX_CO_Connector.cpp | 118 - ace/CLASSIX/CLASSIX_CO_Connector.h | 116 - ace/CLASSIX/CLASSIX_CO_Connector.i | 36 - ace/CLASSIX/CLASSIX_Dgram_Mcast.cpp | 83 - ace/CLASSIX/CLASSIX_Dgram_Mcast.h | 92 - ace/CLASSIX/CLASSIX_Dgram_Mcast.i | 21 - ace/CLASSIX/CLASSIX_Group.cpp | 89 - ace/CLASSIX/CLASSIX_Group.h | 116 - ace/CLASSIX/CLASSIX_Group.i | 89 - ace/CLASSIX/CLASSIX_Group_Dynamic.cpp | 22 - ace/CLASSIX/CLASSIX_Group_Dynamic.h | 61 - ace/CLASSIX/CLASSIX_Group_Dynamic.i | 16 - ace/CLASSIX/CLASSIX_Group_Stamp.cpp | 52 - ace/CLASSIX/CLASSIX_Group_Stamp.h | 88 - ace/CLASSIX/CLASSIX_Group_Stamp.i | 32 - ace/CLASSIX/CLASSIX_OS.cpp | 117 - ace/CLASSIX/CLASSIX_OS.h | 132 - ace/CLASSIX/CLASSIX_OS.i | 56 - ace/CLASSIX/CLASSIX_Peer_SAP.cpp | 77 - ace/CLASSIX/CLASSIX_Peer_SAP.h | 106 - ace/CLASSIX/CLASSIX_Peer_SAP.i | 99 - ace/CLASSIX/CLASSIX_Port.cpp | 129 - ace/CLASSIX/CLASSIX_Port.h | 160 - ace/CLASSIX/CLASSIX_Port.i | 112 - ace/CLASSIX/CLASSIX_Port_Core.cpp | 70 - ace/CLASSIX/CLASSIX_Port_Core.h | 101 - ace/CLASSIX/CLASSIX_Port_Core.i | 38 - ace/CLASSIX/CLASSIX_Port_Default.cpp | 26 - ace/CLASSIX/CLASSIX_Port_Default.h | 78 - ace/CLASSIX/CLASSIX_Port_Default.i | 28 - ace/CLASSIX/CLASSIX_SAP.cpp | 153 - ace/CLASSIX/CLASSIX_SAP.h | 143 - ace/CLASSIX/CLASSIX_SAP.i | 58 - ace/CLASSIX/CLASSIX_Select_Reactor.cpp | 337 - ace/CLASSIX/CLASSIX_Select_Reactor.h | 207 - ace/CLASSIX/CLASSIX_Select_Reactor.i | 63 - ace/CLASSIX/CLASSIX_Stream.cpp | 362 - ace/CLASSIX/CLASSIX_Stream.h | 270 - ace/CLASSIX/CLASSIX_Stream.i | 182 - ace/CLASSIX/Makefile | 544 - ace/CORBA_Handler.cpp | 594 - ace/CORBA_Handler.h | 254 - ace/CORBA_Handler.i | 40 - ace/CORBA_Ref.cpp | 89 - ace/CORBA_Ref.h | 85 - ace/CORBA_Ref.i | 4 - ace/CORBA_macros.h | 411 - ace/Cache_Map_Manager_T.cpp | 422 - ace/Cache_Map_Manager_T.h | 397 - ace/Cache_Map_Manager_T.i | 273 - ace/Cached_Connect_Strategy_T.cpp | 522 - ace/Cached_Connect_Strategy_T.h | 191 - ace/Cached_Connect_Strategy_T.i | 3 - ace/Caching_Strategies_T.cpp | 56 - ace/Caching_Strategies_T.h | 527 - ace/Caching_Strategies_T.i | 448 - ace/Caching_Utility_T.cpp | 487 - ace/Caching_Utility_T.h | 311 - ace/Caching_Utility_T.i | 2 - ace/Cleanup_Strategies_T.cpp | 95 - ace/Cleanup_Strategies_T.h | 143 - ace/Cleanup_Strategies_T.i | 2 - ace/Codeset_IBM1047.cpp | 285 - ace/Codeset_IBM1047.h | 110 - ace/Connector.cpp | 924 - ace/Connector.h | 488 - ace/Connector.i | 4 - ace/Containers.cpp | 24 - ace/Containers.h | 71 - ace/Containers.i | 25 - ace/Containers_T.cpp | 2722 -- ace/Containers_T.h | 1843 - ace/Containers_T.i | 584 - ace/DEV.cpp | 38 - ace/DEV.h | 70 - ace/DEV.i | 15 - ace/DEV_Addr.cpp | 81 - ace/DEV_Addr.h | 87 - ace/DEV_Addr.i | 78 - ace/DEV_Connector.cpp | 44 - ace/DEV_Connector.h | 98 - ace/DEV_Connector.i | 32 - ace/DEV_IO.cpp | 126 - ace/DEV_IO.h | 127 - ace/DEV_IO.i | 101 - ace/DLL.cpp | 162 - ace/DLL.h | 106 - ace/Date_Time.cpp | 11 - ace/Date_Time.h | 97 - ace/Date_Time.i | 140 - ace/Dirent.cpp | 10 - ace/Dirent.h | 107 - ace/Dirent.i | 90 - ace/Dump.cpp | 135 - ace/Dump.h | 156 - ace/Dump_T.cpp | 41 - ace/Dump_T.h | 77 - ace/Dynamic.cpp | 31 - ace/Dynamic.h | 69 - ace/Dynamic.i | 32 - ace/Dynamic_Service.cpp | 52 - ace/Dynamic_Service.h | 46 - ace/Dynamic_Service.i | 4 - ace/Env_Value_T.cpp | 14 - ace/Env_Value_T.h | 156 - ace/Env_Value_T.i | 51 - ace/Event_Handler.cpp | 238 - ace/Event_Handler.h | 193 - ace/Event_Handler.i | 10 - ace/Event_Handler_T.cpp | 64 - ace/Event_Handler_T.h | 189 - ace/Event_Handler_T.i | 185 - ace/FIFO.cpp | 76 - ace/FIFO.h | 77 - ace/FIFO.i | 20 - ace/FIFO_Recv.cpp | 84 - ace/FIFO_Recv.h | 74 - ace/FIFO_Recv.i | 18 - ace/FIFO_Recv_Msg.cpp | 63 - ace/FIFO_Recv_Msg.h | 79 - ace/FIFO_Recv_Msg.i | 67 - ace/FIFO_Send.cpp | 55 - ace/FIFO_Send.h | 64 - ace/FIFO_Send.i | 18 - ace/FIFO_Send_Msg.cpp | 69 - ace/FIFO_Send_Msg.h | 78 - ace/FIFO_Send_Msg.i | 41 - ace/FILE.cpp | 152 - ace/FILE.h | 132 - ace/FILE.i | 16 - ace/FILE_Addr.cpp | 106 - ace/FILE_Addr.h | 88 - ace/FILE_Addr.i | 43 - ace/FILE_Connector.cpp | 59 - ace/FILE_Connector.h | 97 - ace/FILE_Connector.i | 33 - ace/FILE_IO.cpp | 133 - ace/FILE_IO.h | 140 - ace/FILE_IO.i | 133 - ace/Filecache.cpp | 750 - ace/Filecache.h | 350 - ace/FlReactor.cpp | 332 - ace/FlReactor.h | 113 - ace/FlReactor.i | 2 - ace/Free_List.cpp | 90 - ace/Free_List.h | 145 - ace/Free_List.i | 76 - ace/Functor.cpp | 49 - ace/Functor.h | 392 - ace/Functor.i | 249 - ace/Functor_T.cpp | 50 - ace/Functor_T.h | 143 - ace/Functor_T.i | 28 - ace/Future.cpp | 427 - ace/Future.h | 326 - ace/Future_Set.cpp | 139 - ace/Future_Set.h | 118 - ace/Get_Opt.cpp | 163 - ace/Get_Opt.h | 135 - ace/Get_Opt.i | 9 - ace/Handle_Gobbler.h | 63 - ace/Handle_Gobbler.i | 81 - ace/Handle_Set.cpp | 454 - ace/Handle_Set.h | 204 - ace/Handle_Set.i | 161 - ace/Hash_Cache_Map_Manager_T.cpp | 232 - ace/Hash_Cache_Map_Manager_T.h | 197 - ace/Hash_Cache_Map_Manager_T.i | 68 - ace/Hash_Map_Manager.cpp | 25 - ace/Hash_Map_Manager.h | 34 - ace/Hash_Map_Manager.i | 2 - ace/Hash_Map_Manager_T.cpp | 424 - ace/Hash_Map_Manager_T.h | 712 - ace/Hash_Map_Manager_T.i | 769 - ace/Hash_Map_With_Allocator_T.cpp | 32 - ace/Hash_Map_With_Allocator_T.h | 103 - ace/Hash_Map_With_Allocator_T.i | 73 - ace/High_Res_Timer.cpp | 473 - ace/High_Res_Timer.h | 228 - ace/High_Res_Timer.i | 111 - ace/INET_Addr.cpp | 529 - ace/INET_Addr.h | 204 - ace/INET_Addr.i | 53 - ace/IOStream.cpp | 660 - ace/IOStream.h | 497 - ace/IOStream_T.cpp | 212 - ace/IOStream_T.h | 279 - ace/IOStream_T.i | 160 - ace/IO_Cntl_Msg.cpp | 38 - ace/IO_Cntl_Msg.h | 85 - ace/IO_Cntl_Msg.i | 4 - ace/IO_SAP.cpp | 142 - ace/IO_SAP.h | 83 - ace/IO_SAP.i | 39 - ace/IPC_SAP.cpp | 182 - ace/IPC_SAP.h | 79 - ace/IPC_SAP.i | 37 - ace/LOCK_SOCK_Acceptor.cpp | 33 - ace/LOCK_SOCK_Acceptor.h | 61 - ace/LSOCK.cpp | 165 - ace/LSOCK.h | 75 - ace/LSOCK.i | 39 - ace/LSOCK_Acceptor.cpp | 139 - ace/LSOCK_Acceptor.h | 92 - ace/LSOCK_Acceptor.i | 4 - ace/LSOCK_CODgram.cpp | 56 - ace/LSOCK_CODgram.h | 71 - ace/LSOCK_CODgram.i | 27 - ace/LSOCK_Connector.cpp | 58 - ace/LSOCK_Connector.h | 103 - ace/LSOCK_Connector.i | 29 - ace/LSOCK_Dgram.cpp | 65 - ace/LSOCK_Dgram.h | 68 - ace/LSOCK_Dgram.i | 20 - ace/LSOCK_Stream.cpp | 132 - ace/LSOCK_Stream.h | 75 - ace/LSOCK_Stream.i | 25 - ace/Local_Name_Space.cpp | 213 - ace/Local_Name_Space.h | 120 - ace/Local_Name_Space_T.cpp | 913 - ace/Local_Name_Space_T.h | 252 - ace/Local_Tokens.cpp | 1414 - ace/Local_Tokens.h | 1035 - ace/Local_Tokens.i | 433 - ace/Log_Msg.cpp | 1693 - ace/Log_Msg.h | 518 - ace/Log_Msg.i | 6 - ace/Log_Priority.h | 77 - ace/Log_Record.cpp | 261 - ace/Log_Record.h | 192 - ace/Log_Record.i | 96 - ace/Makefile | 7772 ----- ace/Makefile.am | 856 - ace/Makefile.bor | 177 - ace/Malloc.cpp | 287 - ace/Malloc.h | 324 - ace/Malloc.i | 231 - ace/Malloc_Base.h | 134 - ace/Malloc_T.cpp | 862 - ace/Malloc_T.h | 556 - ace/Malloc_T.i | 200 - ace/Managed_Object.cpp | 25 - ace/Managed_Object.h | 158 - ace/Managed_Object.i | 18 - ace/Map.cpp | 25 - ace/Map.h | 33 - ace/Map.i | 2 - ace/Map_Manager.cpp | 615 - ace/Map_Manager.h | 551 - ace/Map_Manager.i | 532 - ace/Map_T.cpp | 18 - ace/Map_T.h | 1437 - ace/Map_T.i | 1601 - ace/Mem_Map.cpp | 323 - ace/Mem_Map.h | 207 - ace/Mem_Map.i | 251 - ace/Memory_Pool.cpp | 936 - ace/Memory_Pool.h | 514 - ace/Memory_Pool.i | 195 - ace/Message_Block.cpp | 1160 - ace/Message_Block.h | 801 - ace/Message_Block.i | 552 - ace/Message_Block_T.cpp | 48 - ace/Message_Block_T.h | 81 - ace/Message_Block_T.i | 29 - ace/Message_Queue.cpp | 446 - ace/Message_Queue.h | 466 - ace/Message_Queue.i | 204 - ace/Message_Queue_T.cpp | 1644 - ace/Message_Queue_T.h | 707 - ace/Message_Queue_T.i | 181 - ace/Method_Object.h | 35 - ace/Method_Request.cpp | 28 - ace/Method_Request.h | 61 - ace/Module.cpp | 267 - ace/Module.h | 193 - ace/Module.i | 62 - ace/Msg_WFMO_Reactor.cpp | 92 - ace/Msg_WFMO_Reactor.h | 107 - ace/Msg_WFMO_Reactor.i | 30 - ace/Multiplexor.cpp | 15 - ace/Multiplexor.h | 81 - ace/Multiplexor.i | 88 - ace/NT_Service.cpp | 507 - ace/NT_Service.h | 353 - ace/NT_Service.i | 70 - ace/Name_Proxy.cpp | 201 - ace/Name_Proxy.h | 88 - ace/Name_Request_Reply.cpp | 556 - ace/Name_Request_Reply.h | 253 - ace/Name_Space.cpp | 62 - ace/Name_Space.h | 149 - ace/Naming_Context.cpp | 666 - ace/Naming_Context.h | 333 - ace/OS.cpp | 7253 ---- ace/OS.h | 8355 ----- ace/OS.i | 12420 ------- ace/Object_Manager.cpp | 827 - ace/Object_Manager.h | 428 - ace/Object_Manager.i | 35 - ace/Obstack.cpp | 133 - ace/Obstack.h | 110 - ace/Obstack.i | 9 - ace/POSIX_Asynch_IO.cpp | 3381 -- ace/POSIX_Asynch_IO.h | 1653 - ace/POSIX_Asynch_IO.i | 2 - ace/POSIX_Proactor.cpp | 1265 - ace/POSIX_Proactor.h | 431 - ace/POSIX_Proactor.i | 2 - ace/Pair.cpp | 25 - ace/Pair.h | 33 - ace/Pair.i | 2 - ace/Pair_T.cpp | 18 - ace/Pair_T.h | 112 - ace/Pair_T.i | 64 - ace/Parse_Node.cpp | 711 - ace/Parse_Node.h | 299 - ace/Parse_Node.i | 19 - ace/Pipe.cpp | 213 - ace/Pipe.h | 81 - ace/Pipe.i | 25 - ace/Priority_Reactor.cpp | 177 - ace/Priority_Reactor.h | 93 - ace/Priority_Reactor.i | 2 - ace/Proactor.cpp | 1042 - ace/Proactor.h | 473 - ace/Proactor.i | 2 - ace/Proactor_Impl.h | 198 - ace/Process.cpp | 684 - ace/Process.h | 404 - ace/Process.i | 269 - ace/Process_Manager.cpp | 924 - ace/Process_Manager.h | 388 - ace/Process_Manager.i | 9 - ace/Profile_Timer.cpp | 410 - ace/Profile_Timer.h | 130 - ace/Profile_Timer.i | 104 - ace/RB_Tree.cpp | 932 - ace/RB_Tree.h | 694 - ace/RB_Tree.i | 1135 - ace/README | 1495 - ace/Reactor.cpp | 257 - ace/Reactor.h | 548 - ace/Reactor.i | 592 - ace/Reactor_Impl.h | 463 - ace/Read_Buffer.cpp | 164 - ace/Read_Buffer.h | 111 - ace/Read_Buffer.i | 28 - ace/Registry.cpp | 1128 - ace/Registry.h | 528 - ace/Registry_Name_Space.cpp | 256 - ace/Registry_Name_Space.h | 125 - ace/Remote_Name_Space.cpp | 332 - ace/Remote_Name_Space.h | 128 - ace/Remote_Tokens.cpp | 436 - ace/Remote_Tokens.h | 291 - ace/Remote_Tokens.i | 96 - ace/SOCK.cpp | 181 - ace/SOCK.h | 117 - ace/SOCK.i | 34 - ace/SOCK_Acceptor.cpp | 344 - ace/SOCK_Acceptor.h | 158 - ace/SOCK_Acceptor.i | 12 - ace/SOCK_CODgram.cpp | 106 - ace/SOCK_CODgram.h | 67 - ace/SOCK_CODgram.i | 18 - ace/SOCK_Connector.cpp | 317 - ace/SOCK_Connector.h | 208 - ace/SOCK_Connector.i | 36 - ace/SOCK_Dgram.cpp | 419 - ace/SOCK_Dgram.h | 186 - ace/SOCK_Dgram.i | 158 - ace/SOCK_Dgram_Bcast.cpp | 316 - ace/SOCK_Dgram_Bcast.h | 125 - ace/SOCK_Dgram_Bcast.i | 34 - ace/SOCK_Dgram_Mcast.cpp | 610 - ace/SOCK_Dgram_Mcast.h | 235 - ace/SOCK_Dgram_Mcast.i | 116 - ace/SOCK_IO.cpp | 158 - ace/SOCK_IO.h | 146 - ace/SOCK_IO.i | 141 - ace/SOCK_Stream.cpp | 36 - ace/SOCK_Stream.h | 122 - ace/SOCK_Stream.i | 137 - ace/SPIPE.cpp | 64 - ace/SPIPE.h | 67 - ace/SPIPE.i | 16 - ace/SPIPE_Acceptor.cpp | 247 - ace/SPIPE_Acceptor.h | 88 - ace/SPIPE_Acceptor.i | 4 - ace/SPIPE_Addr.cpp | 151 - ace/SPIPE_Addr.h | 121 - ace/SPIPE_Addr.i | 83 - ace/SPIPE_Connector.cpp | 76 - ace/SPIPE_Connector.h | 100 - ace/SPIPE_Connector.i | 13 - ace/SPIPE_Stream.cpp | 99 - ace/SPIPE_Stream.h | 141 - ace/SPIPE_Stream.i | 198 - ace/SString.cpp | 966 - ace/SString.h | 643 - ace/SString.i | 751 - ace/SV_Message.cpp | 20 - ace/SV_Message.h | 54 - ace/SV_Message.i | 31 - ace/SV_Message_Queue.cpp | 39 - ace/SV_Message_Queue.h | 94 - ace/SV_Message_Queue.i | 78 - ace/SV_Semaphore_Complex.cpp | 254 - ace/SV_Semaphore_Complex.h | 155 - ace/SV_Semaphore_Complex.i | 83 - ace/SV_Semaphore_Simple.cpp | 204 - ace/SV_Semaphore_Simple.h | 151 - ace/SV_Semaphore_Simple.i | 106 - ace/SV_Shared_Memory.cpp | 83 - ace/SV_Shared_Memory.h | 111 - ace/SV_Shared_Memory.i | 114 - ace/Sched_Params.cpp | 279 - ace/Sched_Params.h | 218 - ace/Sched_Params.i | 136 - ace/Select_Reactor.cpp | 46 - ace/Select_Reactor.h | 71 - ace/Select_Reactor.i | 2 - ace/Select_Reactor_Base.cpp | 942 - ace/Select_Reactor_Base.h | 434 - ace/Select_Reactor_Base.i | 83 - ace/Select_Reactor_T.cpp | 1367 - ace/Select_Reactor_T.h | 669 - ace/Select_Reactor_T.i | 239 - ace/Service_Config.cpp | 885 - ace/Service_Config.h | 410 - ace/Service_Config.i | 87 - ace/Service_Manager.cpp | 316 - ace/Service_Manager.h | 106 - ace/Service_Manager.i | 10 - ace/Service_Object.cpp | 106 - ace/Service_Object.h | 166 - ace/Service_Object.i | 101 - ace/Service_Repository.cpp | 413 - ace/Service_Repository.h | 197 - ace/Service_Repository.i | 31 - ace/Service_Types.cpp | 454 - ace/Service_Types.h | 187 - ace/Service_Types.i | 64 - ace/Shared_Memory.cpp | 11 - ace/Shared_Memory.h | 49 - ace/Shared_Memory_MM.cpp | 53 - ace/Shared_Memory_MM.h | 115 - ace/Shared_Memory_MM.i | 89 - ace/Shared_Memory_SV.cpp | 31 - ace/Shared_Memory_SV.h | 96 - ace/Shared_Memory_SV.i | 73 - ace/Shared_Object.cpp | 47 - ace/Shared_Object.h | 51 - ace/Shared_Object.i | 9 - ace/Signal.cpp | 875 - ace/Signal.h | 443 - ace/Signal.i | 302 - ace/Singleton.cpp | 385 - ace/Singleton.h | 243 - ace/Singleton.i | 27 - ace/Stats.cpp | 661 - ace/Stats.h | 244 - ace/Stats.i | 95 - ace/Strategies.cpp | 89 - ace/Strategies.h | 192 - ace/Strategies.i | 95 - ace/Strategies_T.cpp | 1149 - ace/Strategies_T.h | 910 - ace/Strategies_T.i | 447 - ace/Stream.cpp | 513 - ace/Stream.h | 211 - ace/Stream.i | 49 - ace/Stream_Modules.cpp | 374 - ace/Stream_Modules.h | 140 - ace/Stream_Modules.i | 4 - ace/Svc_Conf.h | 110 - ace/Svc_Conf.l | 98 - ace/Svc_Conf.y | 459 - ace/Svc_Conf_Tokens.h | 21 - ace/Svc_Conf_l.cpp | 1561 - ace/Svc_Conf_y.cpp | 1042 - ace/Svc_Handler.cpp | 517 - ace/Svc_Handler.h | 271 - ace/Svc_Handler.i | 5 - ace/Synch.cpp | 1042 - ace/Synch.h | 1697 - ace/Synch.i | 1107 - ace/Synch_Options.cpp | 106 - ace/Synch_Options.h | 147 - ace/Synch_Options.i | 9 - ace/Synch_T.cpp | 961 - ace/Synch_T.h | 964 - ace/Synch_T.i | 408 - ace/System_Time.cpp | 110 - ace/System_Time.h | 79 - ace/TLI.cpp | 190 - ace/TLI.h | 103 - ace/TLI.i | 41 - ace/TLI_Acceptor.cpp | 523 - ace/TLI_Acceptor.h | 118 - ace/TLI_Acceptor.i | 5 - ace/TLI_Connector.cpp | 231 - ace/TLI_Connector.h | 115 - ace/TLI_Connector.i | 44 - ace/TLI_Stream.cpp | 101 - ace/TLI_Stream.h | 101 - ace/TLI_Stream.i | 105 - ace/TP_Reactor.cpp | 251 - ace/TP_Reactor.h | 205 - ace/TP_Reactor.i | 39 - ace/TTY_IO.cpp | 286 - ace/TTY_IO.h | 73 - ace/Task.cpp | 223 - ace/Task.h | 239 - ace/Task.i | 114 - ace/Task_T.cpp | 106 - ace/Task_T.h | 165 - ace/Task_T.i | 103 - ace/Template_Instantiations.cpp | 369 - ace/Thread.cpp | 91 - ace/Thread.h | 224 - ace/Thread.i | 270 - ace/Thread_Manager.cpp | 2415 -- ace/Thread_Manager.h | 885 - ace/Thread_Manager.i | 337 - ace/Time_Request_Reply.cpp | 188 - ace/Time_Request_Reply.h | 123 - ace/Time_Value.h | 29 - ace/Timeprobe.cpp | 46 - ace/Timeprobe.h | 180 - ace/Timeprobe.i | 8 - ace/Timeprobe_T.cpp | 300 - ace/Timeprobe_T.h | 173 - ace/Timer_Hash.cpp | 125 - ace/Timer_Hash.h | 72 - ace/Timer_Hash_T.cpp | 611 - ace/Timer_Hash_T.h | 262 - ace/Timer_Heap.cpp | 45 - ace/Timer_Heap.h | 39 - ace/Timer_Heap_T.cpp | 734 - ace/Timer_Heap_T.h | 283 - ace/Timer_List.cpp | 46 - ace/Timer_List.h | 39 - ace/Timer_List_T.cpp | 343 - ace/Timer_List_T.h | 203 - ace/Timer_Queue.cpp | 60 - ace/Timer_Queue.h | 44 - ace/Timer_Queue.i | 22 - ace/Timer_Queue_Adapters.cpp | 310 - ace/Timer_Queue_Adapters.h | 214 - ace/Timer_Queue_Adapters.i | 37 - ace/Timer_Queue_T.cpp | 321 - ace/Timer_Queue_T.h | 391 - ace/Timer_Queue_T.i | 171 - ace/Timer_Wheel.cpp | 25 - ace/Timer_Wheel.h | 40 - ace/Timer_Wheel_T.cpp | 670 - ace/Timer_Wheel_T.h | 227 - ace/TkReactor.cpp | 436 - ace/TkReactor.h | 125 - ace/Token.cpp | 448 - ace/Token.h | 282 - ace/Token.i | 116 - ace/Token_Collection.cpp | 303 - ace/Token_Collection.h | 218 - ace/Token_Collection.i | 10 - ace/Token_Invariants.cpp | 370 - ace/Token_Invariants.h | 223 - ace/Token_Invariants.i | 4 - ace/Token_Manager.cpp | 278 - ace/Token_Manager.h | 125 - ace/Token_Manager.i | 19 - ace/Token_Request_Reply.cpp | 176 - ace/Token_Request_Reply.h | 233 - ace/Token_Request_Reply.i | 190 - ace/Trace.cpp | 123 - ace/Trace.h | 81 - ace/Trace.i | 7 - ace/Typed_SV_Message.cpp | 27 - ace/Typed_SV_Message.h | 92 - ace/Typed_SV_Message.i | 91 - ace/Typed_SV_Message_Queue.cpp | 53 - ace/Typed_SV_Message_Queue.h | 83 - ace/Typed_SV_Message_Queue.i | 71 - ace/UNIX_Addr.cpp | 115 - ace/UNIX_Addr.h | 95 - ace/UNIX_Addr.i | 67 - ace/UPIPE_Acceptor.cpp | 123 - ace/UPIPE_Acceptor.h | 89 - ace/UPIPE_Acceptor.i | 11 - ace/UPIPE_Addr.h | 44 - ace/UPIPE_Connector.cpp | 92 - ace/UPIPE_Connector.h | 106 - ace/UPIPE_Connector.i | 33 - ace/UPIPE_Stream.cpp | 228 - ace/UPIPE_Stream.h | 134 - ace/UPIPE_Stream.i | 12 - ace/Version.h | 7 - ace/WFMO_Reactor.cpp | 2217 -- ace/WFMO_Reactor.h | 1167 - ace/WFMO_Reactor.i | 1126 - ace/WIN32_Asynch_IO.cpp | 1701 - ace/WIN32_Asynch_IO.h | 1212 - ace/WIN32_Asynch_IO.i | 2 - ace/WIN32_Proactor.cpp | 609 - ace/WIN32_Proactor.h | 266 - ace/WIN32_Proactor.i | 2 - ace/XTI_ATM_Mcast.cpp | 67 - ace/XTI_ATM_Mcast.h | 121 - ace/XTI_ATM_Mcast.i | 62 - ace/XtReactor.cpp | 451 - ace/XtReactor.h | 131 - ace/ace-dll.icc | 444 - ace/ace-lib.icc | 272 - ace/ace.dsw | 41 - ace/ace.icc | 183 - ace/ace.rc | 30 - ace/ace_ce.dsw | 41 - ace/ace_ce_dll.cfg | 1 - ace/ace_ce_dll.dsp | 33466 ------------------- ace/ace_dll.dsp | 8365 ----- ace/ace_lib.dsp | 8291 ----- ace/config-WinCE.h | 185 - ace/config-aix-3.2.5.h | 46 - ace/config-aix-4.1.x.h | 11 - ace/config-aix-4.2.x.h | 11 - ace/config-aix-4.3.x.h | 11 - ace/config-aix-4.x.h | 243 - ace/config-chorus.h | 129 - ace/config-cray.h | 238 - ace/config-cygwin32-common.h | 171 - ace/config-cygwin32.h | 14 - ace/config-dgux-4.11-epc.h | 193 - ace/config-dgux-4.x-ghs.h | 212 - ace/config-freebsd-pthread.h | 184 - ace/config-freebsd.h | 193 - ace/config-fsu-pthread.h | 57 - ace/config-g++-common.h | 94 - ace/config-ghs-common.h | 43 - ace/config-hpux-10.x-g++.h | 26 - ace/config-hpux-10.x-hpc++.h | 119 - ace/config-hpux-10.x.h | 244 - ace/config-hpux-11.x-hpc++.h | 111 - ace/config-hpux-9.x-orbix.h | 104 - ace/config-hpux-9.x.h | 104 - ace/config-hpux11.h | 255 - ace/config-irix5.2.h | 67 - ace/config-irix5.3-g++.h | 118 - ace/config-irix5.3-sgic++.h | 121 - ace/config-irix6.x-common.h | 165 - ace/config-irix6.x-g++.h | 52 - ace/config-irix6.x-kcc.h | 57 - ace/config-irix6.x-sgic++-nothreads.h | 94 - ace/config-irix6.x-sgic++.h | 52 - ace/config-kcc-common.h | 72 - ace/config-linux-common.h | 204 - ace/config-linux-lxpthreads.h | 72 - ace/config-linux-pthread.h | 31 - ace/config-linux.h | 15 - ace/config-lynxos.h | 169 - ace/config-m88k.h | 225 - ace/config-minimal.h | 37 - ace/config-mit-pthread.h | 51 - ace/config-mklinux.h | 18 - ace/config-mvs.h | 116 - ace/config-netbsd.h | 170 - ace/config-osf1-3.2.h | 186 - ace/config-osf1-4.0.h | 226 - ace/config-pharlap.h | 59 - ace/config-psos-diab-mips.h | 244 - ace/config-psos-diab-ppc.h | 246 - ace/config-psos-diab.h | 235 - ace/config-psos-tm.h | 208 - ace/config-psosim-g++.h | 244 - ace/config-qnx-neutrino.h | 145 - ace/config-sco-4.2-nothread.h | 114 - ace/config-sco-5.0.0-fsu-pthread.h | 13 - ace/config-sco-5.0.0-mit-pthread.h | 176 - ace/config-sco-5.0.0-nothread.h | 12 - ace/config-sco-5.0.0.h | 108 - ace/config-sunos4-g++.h | 111 - ace/config-sunos4-lucid3.2.h | 103 - ace/config-sunos4-sun3.x.h | 97 - ace/config-sunos4-sun4.1.4.h | 105 - ace/config-sunos4-sun4.x-orbix.h | 106 - ace/config-sunos4-sun4.x.h | 102 - ace/config-sunos5.4-centerline-2.x.h | 173 - ace/config-sunos5.4-g++.h | 189 - ace/config-sunos5.4-sunc++-4.x-orbix.h | 197 - ace/config-sunos5.4-sunc++-4.x.h | 202 - ace/config-sunos5.5.h | 356 - ace/config-sunos5.6-sunc++-4.x.h | 23 - ace/config-sunos5.6.h | 38 - ace/config-sunos5.7.h | 65 - ace/config-sunos5.x-sunc++-4.x-orbix.h | 30 - ace/config-tandem.h | 454 - ace/config-tru64.h | 23 - ace/config-unixware-2.01-g++.h | 111 - ace/config-unixware-2.1.2-g++.h | 100 - ace/config-visualage.h | 13 - ace/config-vxworks5.x.h | 179 - ace/config-win32-borland.h | 190 - ace/config-win32-common.h | 472 - ace/config-win32-visualage.h | 58 - ace/config-win32.h | 207 - ace/gethrtime.cpp | 58 - ace/inc_user_config.h | 51 - ace/iosfwd.h | 76 - ace/makefile-light | 883 - ace/streams.h | 132 - ace/ws2tcpip.h | 88 - aceConf.sh.in | 8 - aclocal.m4 | 2994 -- apps/Gateway/Gateway/Channel.cpp | 710 - apps/Gateway/Gateway/Channel.h | 280 - apps/Gateway/Gateway/Channel_Connector.cpp | 92 - apps/Gateway/Gateway/Channel_Connector.h | 41 - .../Gateway/Concrete_Connection_Handlers.cpp | 633 - .../Gateway/Gateway/Concrete_Connection_Handlers.h | 127 - apps/Gateway/Gateway/Concurrency_Strategies.h | 74 - apps/Gateway/Gateway/Config_Files.cpp | 222 - apps/Gateway/Gateway/Config_Files.h | 98 - apps/Gateway/Gateway/Connection_Handler.cpp | 289 - apps/Gateway/Gateway/Connection_Handler.h | 157 - .../Gateway/Connection_Handler_Acceptor.cpp | 62 - apps/Gateway/Gateway/Connection_Handler_Acceptor.h | 65 - .../Gateway/Connection_Handler_Connector.cpp | 76 - .../Gateway/Gateway/Connection_Handler_Connector.h | 44 - apps/Gateway/Gateway/Consumer_Dispatch_Set.h | 32 - apps/Gateway/Gateway/Consumer_Entry.cpp | 31 - apps/Gateway/Gateway/Consumer_Entry.h | 45 - apps/Gateway/Gateway/Consumer_Map.cpp | 61 - apps/Gateway/Gateway/Consumer_Map.h | 62 - apps/Gateway/Gateway/Dispatch_Set.h | 28 - apps/Gateway/Gateway/Event.h | 223 - apps/Gateway/Gateway/Event_Channel.cpp | 548 - apps/Gateway/Gateway/Event_Channel.h | 129 - .../Gateway/Event_Forwarding_Discriminator.cpp | 61 - .../Gateway/Event_Forwarding_Discriminator.h | 65 - apps/Gateway/Gateway/File_Parser.cpp | 164 - apps/Gateway/Gateway/File_Parser.h | 93 - apps/Gateway/Gateway/Gateway.cpp | 342 - apps/Gateway/Gateway/Gateway.dsp | 96 - apps/Gateway/Gateway/Gateway.dsw | 44 - apps/Gateway/Gateway/Gateway.h | 33 - apps/Gateway/Gateway/IO_Handler.cpp | 710 - apps/Gateway/Gateway/IO_Handler.h | 224 - apps/Gateway/Gateway/IO_Handler_Connector.cpp | 92 - apps/Gateway/Gateway/IO_Handler_Connector.h | 40 - apps/Gateway/Gateway/Makefile | 1139 - apps/Gateway/Gateway/Makefile.bor | 15 - apps/Gateway/Gateway/Options.cpp | 259 - apps/Gateway/Gateway/Options.h | 193 - apps/Gateway/Gateway/Peer_Message.h | 89 - apps/Gateway/Gateway/Routing_Entry.cpp | 47 - apps/Gateway/Gateway/Routing_Entry.h | 53 - apps/Gateway/Gateway/Routing_Table.cpp | 69 - apps/Gateway/Gateway/Routing_Table.h | 67 - apps/Gateway/Gateway/Thr_Channel.cpp | 204 - apps/Gateway/Gateway/Thr_Channel.h | 65 - apps/Gateway/Gateway/Thr_IO_Handler.cpp | 204 - apps/Gateway/Gateway/Thr_IO_Handler.h | 64 - apps/Gateway/Gateway/Thr_Proxy_Handler.cpp | 211 - apps/Gateway/Gateway/Thr_Proxy_Handler.h | 66 - apps/Gateway/Gateway/cc_config | 10 - apps/Gateway/Gateway/connection_config | 55 - apps/Gateway/Gateway/consumer_config | 35 - apps/Gateway/Gateway/gatewayd.cpp | 63 - apps/Gateway/Gateway/gatewayd.dsp | 57 - apps/Gateway/Gateway/rt_config | 7 - apps/Gateway/Gateway/svc.conf | 3 - apps/Gateway/Makefile | 26 - apps/Gateway/Makefile.bor | 9 - apps/Gateway/Peer/Event.h | 125 - apps/Gateway/Peer/Gateway_Handler.cpp | 652 - apps/Gateway/Peer/Gateway_Handler.h | 154 - apps/Gateway/Peer/Makefile | 221 - apps/Gateway/Peer/Makefile.bor | 8 - apps/Gateway/Peer/Options.cpp | 192 - apps/Gateway/Peer/Options.h | 133 - apps/Gateway/Peer/Peer.cpp | 866 - apps/Gateway/Peer/Peer.dsp | 64 - apps/Gateway/Peer/Peer.dsw | 44 - apps/Gateway/Peer/Peer.h | 238 - apps/Gateway/Peer/Peer_Message.h | 44 - apps/Gateway/Peer/peerd.cpp | 62 - apps/Gateway/Peer/peerd.dsp | 57 - apps/Gateway/Peer/svc.conf | 2 - apps/Gateway/README | 140 - apps/JAWS/ChangeLog | 760 - apps/JAWS/Makefile | 25 - apps/JAWS/Makefile.bor | 9 - apps/JAWS/PROTOTYPE/1000K.html | 20000 ----------- apps/JAWS/PROTOTYPE/500K.html | 10000 ------ apps/JAWS/PROTOTYPE/50K.html | 1000 - apps/JAWS/PROTOTYPE/5K.html | 100 - apps/JAWS/PROTOTYPE/HTTPU/HTTPU.DSP | 169 - apps/JAWS/PROTOTYPE/HTTPU/HTTPU.DSW | 29 - apps/JAWS/PROTOTYPE/HTTPU/Makefile | 478 - apps/JAWS/PROTOTYPE/HTTPU/http_base.cpp | 323 - apps/JAWS/PROTOTYPE/HTTPU/http_base.h | 87 - apps/JAWS/PROTOTYPE/HTTPU/http_base.i | 53 - apps/JAWS/PROTOTYPE/HTTPU/http_export.h | 38 - apps/JAWS/PROTOTYPE/HTTPU/http_headers.cpp | 161 - apps/JAWS/PROTOTYPE/HTTPU/http_headers.h | 165 - apps/JAWS/PROTOTYPE/HTTPU/http_headers.i | 48 - apps/JAWS/PROTOTYPE/HTTPU/http_request.cpp | 86 - apps/JAWS/PROTOTYPE/HTTPU/http_request.h | 59 - apps/JAWS/PROTOTYPE/HTTPU/http_request.i | 41 - apps/JAWS/PROTOTYPE/HTTPU/http_response.cpp | 49 - apps/JAWS/PROTOTYPE/HTTPU/http_response.h | 51 - apps/JAWS/PROTOTYPE/HTTPU/http_response.i | 23 - apps/JAWS/PROTOTYPE/HTTPU/http_status.cpp | 87 - apps/JAWS/PROTOTYPE/HTTPU/http_status.h | 109 - apps/JAWS/PROTOTYPE/HTTPU/http_status.i | 19 - apps/JAWS/PROTOTYPE/HTTPU/parse_http_request.cpp | 116 - apps/JAWS/PROTOTYPE/HTTPU/parse_http_request.h | 59 - apps/JAWS/PROTOTYPE/HTTPU/parse_http_request.i | 49 - apps/JAWS/PROTOTYPE/HTTPU/parse_http_response.cpp | 72 - apps/JAWS/PROTOTYPE/HTTPU/parse_http_response.h | 56 - apps/JAWS/PROTOTYPE/HTTPU/parse_http_response.i | 43 - apps/JAWS/PROTOTYPE/HTTPU/parse_url.cpp | 320 - apps/JAWS/PROTOTYPE/HTTPU/parse_url.h | 63 - apps/JAWS/PROTOTYPE/HTTP_10.cpp | 32 - apps/JAWS/PROTOTYPE/HTTP_10.h | 68 - apps/JAWS/PROTOTYPE/HTTP_10_Parse.cpp | 82 - apps/JAWS/PROTOTYPE/HTTP_10_Read.cpp | 64 - apps/JAWS/PROTOTYPE/HTTP_10_Request.cpp | 119 - apps/JAWS/PROTOTYPE/HTTP_10_Request.h | 31 - apps/JAWS/PROTOTYPE/HTTP_10_Write.cpp | 160 - apps/JAWS/PROTOTYPE/HTTP_Policy.cpp | 17 - apps/JAWS/PROTOTYPE/HTTP_Policy.h | 22 - apps/JAWS/PROTOTYPE/JAWS/Assoc_Array.cpp | 274 - apps/JAWS/PROTOTYPE/JAWS/Assoc_Array.h | 102 - apps/JAWS/PROTOTYPE/JAWS/Cache_Hash_T.cpp | 237 - apps/JAWS/PROTOTYPE/JAWS/Cache_Hash_T.h | 61 - apps/JAWS/PROTOTYPE/JAWS/Cache_Heap_T.cpp | 282 - apps/JAWS/PROTOTYPE/JAWS/Cache_Heap_T.h | 103 - apps/JAWS/PROTOTYPE/JAWS/Cache_List_T.cpp | 222 - apps/JAWS/PROTOTYPE/JAWS/Cache_List_T.h | 111 - apps/JAWS/PROTOTYPE/JAWS/Cache_Manager.cpp | 189 - apps/JAWS/PROTOTYPE/JAWS/Cache_Manager.h | 66 - apps/JAWS/PROTOTYPE/JAWS/Cache_Manager_T.cpp | 577 - apps/JAWS/PROTOTYPE/JAWS/Cache_Manager_T.h | 185 - apps/JAWS/PROTOTYPE/JAWS/Cache_Object.cpp | 302 - apps/JAWS/PROTOTYPE/JAWS/Cache_Object.h | 149 - apps/JAWS/PROTOTYPE/JAWS/Concurrency.cpp | 349 - apps/JAWS/PROTOTYPE/JAWS/Concurrency.h | 132 - apps/JAWS/PROTOTYPE/JAWS/Data_Block.cpp | 76 - apps/JAWS/PROTOTYPE/JAWS/Data_Block.h | 50 - apps/JAWS/PROTOTYPE/JAWS/Export.h | 38 - apps/JAWS/PROTOTYPE/JAWS/FILE.cpp | 63 - apps/JAWS/PROTOTYPE/JAWS/FILE.h | 43 - apps/JAWS/PROTOTYPE/JAWS/Filecache.cpp | 106 - apps/JAWS/PROTOTYPE/JAWS/Filecache.h | 73 - apps/JAWS/PROTOTYPE/JAWS/Hash_Bucket_T.cpp | 462 - apps/JAWS/PROTOTYPE/JAWS/Hash_Bucket_T.h | 206 - apps/JAWS/PROTOTYPE/JAWS/Headers.cpp | 165 - apps/JAWS/PROTOTYPE/JAWS/Headers.h | 78 - apps/JAWS/PROTOTYPE/JAWS/IO.cpp | 569 - apps/JAWS/PROTOTYPE/JAWS/IO.h | 252 - apps/JAWS/PROTOTYPE/JAWS/IO_Acceptor.cpp | 210 - apps/JAWS/PROTOTYPE/JAWS/IO_Acceptor.h | 139 - apps/JAWS/PROTOTYPE/JAWS/IO_Handler.cpp | 509 - apps/JAWS/PROTOTYPE/JAWS/IO_Handler.h | 313 - apps/JAWS/PROTOTYPE/JAWS/JAWS.h | 14 - apps/JAWS/PROTOTYPE/JAWS/Makefile | 2296 -- apps/JAWS/PROTOTYPE/JAWS/Makefile.bor | 31 - apps/JAWS/PROTOTYPE/JAWS/Parse_Headers.cpp | 441 - apps/JAWS/PROTOTYPE/JAWS/Parse_Headers.h | 122 - apps/JAWS/PROTOTYPE/JAWS/Pipeline.cpp | 27 - apps/JAWS/PROTOTYPE/JAWS/Pipeline.h | 39 - apps/JAWS/PROTOTYPE/JAWS/Pipeline_Handler_T.cpp | 31 - apps/JAWS/PROTOTYPE/JAWS/Pipeline_Handler_T.h | 32 - apps/JAWS/PROTOTYPE/JAWS/Pipeline_Tasks.cpp | 213 - apps/JAWS/PROTOTYPE/JAWS/Pipeline_Tasks.h | 56 - apps/JAWS/PROTOTYPE/JAWS/Policy.cpp | 89 - apps/JAWS/PROTOTYPE/JAWS/Policy.h | 65 - apps/JAWS/PROTOTYPE/JAWS/Reaper.cpp | 45 - apps/JAWS/PROTOTYPE/JAWS/Reaper.h | 48 - apps/JAWS/PROTOTYPE/JAWS/Server.cpp | 190 - apps/JAWS/PROTOTYPE/JAWS/Server.h | 39 - apps/JAWS/PROTOTYPE/JAWS/Waiter.cpp | 73 - apps/JAWS/PROTOTYPE/JAWS/Waiter.h | 48 - apps/JAWS/PROTOTYPE/JAWS/jaws.dsp | 224 - apps/JAWS/PROTOTYPE/JAWS/jaws.dsw | 29 - apps/JAWS/PROTOTYPE/Makefile | 661 - apps/JAWS/PROTOTYPE/Makefile.bor | 18 - apps/JAWS/PROTOTYPE/README | 32 - apps/JAWS/PROTOTYPE/main.cpp | 47 - apps/JAWS/PROTOTYPE/server.dsp | 118 - apps/JAWS/PROTOTYPE/server.dsw | 29 - apps/JAWS/README | 15 - apps/JAWS/clients/Blobby/Blob.cpp | 94 - apps/JAWS/clients/Blobby/Blob.h | 87 - apps/JAWS/clients/Blobby/Blob_Handler.cpp | 343 - apps/JAWS/clients/Blobby/Blob_Handler.h | 115 - apps/JAWS/clients/Blobby/Makefile | 483 - apps/JAWS/clients/Blobby/Makefile.bor | 10 - apps/JAWS/clients/Blobby/Options.cpp | 81 - apps/JAWS/clients/Blobby/Options.h | 71 - apps/JAWS/clients/Blobby/README | 33 - apps/JAWS/clients/Blobby/blobby.cpp | 98 - apps/JAWS/clients/Caching/Caching.dsp | 111 - apps/JAWS/clients/Caching/Caching.dsw | 29 - apps/JAWS/clients/Caching/ID_Generator.cpp | 61 - apps/JAWS/clients/Caching/ID_Generator.h | 62 - apps/JAWS/clients/Caching/Local_Locator.cpp | 257 - apps/JAWS/clients/Caching/Local_Locator.h | 118 - apps/JAWS/clients/Caching/Local_Locator.i | 44 - .../JAWS/clients/Caching/Locator_Request_Reply.cpp | 459 - apps/JAWS/clients/Caching/Locator_Request_Reply.h | 220 - apps/JAWS/clients/Caching/Locator_Request_Reply.i | 138 - apps/JAWS/clients/Caching/Makefile | 199 - apps/JAWS/clients/Caching/Makefile.bor | 6 - apps/JAWS/clients/Caching/README | 83 - apps/JAWS/clients/Caching/URL_Array_Helper.cpp | 43 - apps/JAWS/clients/Caching/URL_Array_Helper.h | 40 - apps/JAWS/clients/Caching/URL_Locator.cpp | 56 - apps/JAWS/clients/Caching/URL_Locator.h | 116 - apps/JAWS/clients/Caching/URL_Locator.i | 4 - apps/JAWS/clients/Caching/URL_Properties.cpp | 163 - apps/JAWS/clients/Caching/URL_Properties.h | 201 - apps/JAWS/clients/Caching/URL_Properties.i | 203 - apps/JAWS/clients/Caching/http_client.cpp | 70 - apps/JAWS/clients/Caching/http_handler.cpp | 255 - apps/JAWS/clients/Caching/http_handler.h | 81 - apps/JAWS/clients/Caching/test_URL.cpp | 35 - apps/JAWS/clients/Caching/testing.dsp | 121 - apps/JAWS/clients/Makefile | 26 - apps/JAWS/clients/Makefile.bor | 9 - apps/JAWS/clients/README | 13 - apps/JAWS/clients/WebSTONE/COPYING | 348 - apps/JAWS/clients/WebSTONE/README | 245 - apps/JAWS/clients/WebSTONE/README.DynamicWorkload | 37 - apps/JAWS/clients/WebSTONE/README.FIRST | 21 - apps/JAWS/clients/WebSTONE/WEBSTONE-VERSION-2.0 | 0 apps/JAWS/clients/WebSTONE/bin/WebStone-common.pl | 61 - apps/JAWS/clients/WebSTONE/bin/WebStone-manage.pl | 31 - apps/JAWS/clients/WebSTONE/bin/WebStone-run.pl | 37 - apps/JAWS/clients/WebSTONE/bin/WebStone-setup.pl | 95 - apps/JAWS/clients/WebSTONE/bin/checkfilelist | 35 - apps/JAWS/clients/WebSTONE/bin/genfiles | 41 - .../clients/WebSTONE/bin/genfiles-from-filelist.sh | 41 - apps/JAWS/clients/WebSTONE/bin/gui-configure | 174 - apps/JAWS/clients/WebSTONE/bin/killbench | 13 - apps/JAWS/clients/WebSTONE/bin/killbench.pl | 15 - apps/JAWS/clients/WebSTONE/bin/mine-logs.pl | 88 - apps/JAWS/clients/WebSTONE/bin/move-filelist.pl | 26 - apps/JAWS/clients/WebSTONE/bin/move-runs.pl | 24 - apps/JAWS/clients/WebSTONE/bin/rebootall | 9 - apps/JAWS/clients/WebSTONE/bin/runbench | 193 - apps/JAWS/clients/WebSTONE/bin/runbench.pl | 36 - apps/JAWS/clients/WebSTONE/bin/tabs2html | 13 - apps/JAWS/clients/WebSTONE/bin/view-results.pl | 53 - apps/JAWS/clients/WebSTONE/bin/webstone-gui.pl | 316 - apps/JAWS/clients/WebSTONE/bin/write-testbed.pl | 47 - apps/JAWS/clients/WebSTONE/bin/wscollect.pl | 139 - apps/JAWS/clients/WebSTONE/conf/filelist | 6 - apps/JAWS/clients/WebSTONE/conf/filelist.cgi-heavy | 6 - .../clients/WebSTONE/conf/filelist.dynamic-heavy | 6 - .../clients/WebSTONE/conf/filelist.dynamic-light | 6 - .../clients/WebSTONE/conf/filelist.dynamic-medium | 6 - apps/JAWS/clients/WebSTONE/conf/filelist.homepage | 2 - apps/JAWS/clients/WebSTONE/conf/filelist.sample | 6 - apps/JAWS/clients/WebSTONE/conf/filelist.standard | 6 - apps/JAWS/clients/WebSTONE/conf/fileset | 32 - apps/JAWS/clients/WebSTONE/conf/paths.pl | 2 - apps/JAWS/clients/WebSTONE/conf/paths.sh | 0 apps/JAWS/clients/WebSTONE/conf/testbed | 33 - apps/JAWS/clients/WebSTONE/doc/COPYING | 348 - apps/JAWS/clients/WebSTONE/doc/FAQ-webstone.html | 402 - apps/JAWS/clients/WebSTONE/doc/LICENSE.html | 16 - apps/JAWS/clients/WebSTONE/doc/WebStone.html | 24 - apps/JAWS/clients/WebSTONE/doc/testbed.help | 21 - .../clients/WebSTONE/doc/webstone-white-paper.ps | 8974 ----- apps/JAWS/clients/WebSTONE/doc/webstone.gif | Bin 14656 -> 0 bytes apps/JAWS/clients/WebSTONE/doc/webstone2.html | 72 - apps/JAWS/clients/WebSTONE/src/Makefile | 112 - apps/JAWS/clients/WebSTONE/src/Makefile.in | 110 - apps/JAWS/clients/WebSTONE/src/README | 232 - apps/JAWS/clients/WebSTONE/src/acconfig.h | 15 - apps/JAWS/clients/WebSTONE/src/bench.c | 632 - apps/JAWS/clients/WebSTONE/src/bench.h | 273 - apps/JAWS/clients/WebSTONE/src/cgi-send | Bin 15452 -> 0 bytes apps/JAWS/clients/WebSTONE/src/cgi-send.c | 45 - .../JAWS/clients/WebSTONE/src/client/webclient.mak | 479 - apps/JAWS/clients/WebSTONE/src/config.cache | 47 - apps/JAWS/clients/WebSTONE/src/config.guess | 565 - apps/JAWS/clients/WebSTONE/src/config.h | 90 - apps/JAWS/clients/WebSTONE/src/config.h.in | 89 - apps/JAWS/clients/WebSTONE/src/config.log | 4 - apps/JAWS/clients/WebSTONE/src/config.status | 288 - apps/JAWS/clients/WebSTONE/src/config.sub | 867 - apps/JAWS/clients/WebSTONE/src/configure | 2132 -- apps/JAWS/clients/WebSTONE/src/configure.in | 99 - apps/JAWS/clients/WebSTONE/src/debug.h | 17 - apps/JAWS/clients/WebSTONE/src/errexit.c | 105 - apps/JAWS/clients/WebSTONE/src/gendata/genrand.mak | 227 - apps/JAWS/clients/WebSTONE/src/genrand.c | 59 - apps/JAWS/clients/WebSTONE/src/get.c | 317 - apps/JAWS/clients/WebSTONE/src/get.h | 16 - apps/JAWS/clients/WebSTONE/src/getopt.c | 66 - apps/JAWS/clients/WebSTONE/src/gettimeofday.c | 56 - apps/JAWS/clients/WebSTONE/src/install-sh | 238 - apps/JAWS/clients/WebSTONE/src/logfile27859 | 9 - .../JAWS/clients/WebSTONE/src/master/webmaster.mak | 476 - .../WebSTONE/src/nsapi-includes/base/buffer.h | 218 - .../WebSTONE/src/nsapi-includes/base/cinfo.h | 144 - .../WebSTONE/src/nsapi-includes/base/crit.h | 125 - .../WebSTONE/src/nsapi-includes/base/daemon.h | 118 - .../clients/WebSTONE/src/nsapi-includes/base/dll.h | 122 - .../WebSTONE/src/nsapi-includes/base/ereport.h | 119 - .../WebSTONE/src/nsapi-includes/base/eventlog.h | 58 - .../WebSTONE/src/nsapi-includes/base/file.h | 215 - .../WebSTONE/src/nsapi-includes/base/minissl.h | 25 - .../clients/WebSTONE/src/nsapi-includes/base/net.h | 178 - .../WebSTONE/src/nsapi-includes/base/nodelock.h | 45 - .../WebSTONE/src/nsapi-includes/base/nterrors.h | 736 - .../WebSTONE/src/nsapi-includes/base/objndx.h | 27 - .../WebSTONE/src/nsapi-includes/base/pblock.h | 191 - .../clients/WebSTONE/src/nsapi-includes/base/sem.h | 68 - .../WebSTONE/src/nsapi-includes/base/session.h | 83 - .../WebSTONE/src/nsapi-includes/base/shexp.h | 95 - .../WebSTONE/src/nsapi-includes/base/shmem.h | 82 - .../WebSTONE/src/nsapi-includes/base/systems.h | 220 - .../WebSTONE/src/nsapi-includes/base/systhr.h | 128 - .../WebSTONE/src/nsapi-includes/base/util.h | 203 - .../WebSTONE/src/nsapi-includes/frame/conf.h | 153 - .../WebSTONE/src/nsapi-includes/frame/dnfilter.h | 42 - .../WebSTONE/src/nsapi-includes/frame/func.h | 109 - .../WebSTONE/src/nsapi-includes/frame/http.h | 168 - .../WebSTONE/src/nsapi-includes/frame/httpact.h | 118 - .../WebSTONE/src/nsapi-includes/frame/ipfilter.h | 46 - .../WebSTONE/src/nsapi-includes/frame/log.h | 49 - .../WebSTONE/src/nsapi-includes/frame/object.h | 165 - .../WebSTONE/src/nsapi-includes/frame/objset.h | 156 - .../WebSTONE/src/nsapi-includes/frame/protocol.h | 25 - .../WebSTONE/src/nsapi-includes/frame/req.h | 214 - .../WebSTONE/src/nsapi-includes/frame/servact.h | 24 - .../clients/WebSTONE/src/nsapi-includes/netsite.h | 65 - apps/JAWS/clients/WebSTONE/src/nsapi-send.c | 90 - apps/JAWS/clients/WebSTONE/src/parse_file_list.c | 289 - apps/JAWS/clients/WebSTONE/src/parse_file_list.h | 19 - apps/JAWS/clients/WebSTONE/src/rexec.c | 372 - apps/JAWS/clients/WebSTONE/src/statistics.c | 47 - apps/JAWS/clients/WebSTONE/src/statistics.h | 11 - apps/JAWS/clients/WebSTONE/src/sysdep.c | 50 - apps/JAWS/clients/WebSTONE/src/sysdep.h | 130 - apps/JAWS/clients/WebSTONE/src/timefunc.c | 169 - apps/JAWS/clients/WebSTONE/src/timefunc.h | 30 - apps/JAWS/clients/WebSTONE/src/webclient.c | 1295 - apps/JAWS/clients/WebSTONE/src/webmaster.c | 1417 - apps/JAWS/clients/WebSTONE/webstone | 75 - apps/JAWS/remora/app/Makefile | 21 - apps/JAWS/remora/app/Remora_Export.cc | 93 - apps/JAWS/remora/app/Remora_Export.h | 85 - apps/JAWS/remora/app/Remora_Export.i | 146 - apps/JAWS/remora/app/Remora_Import.cc | 109 - apps/JAWS/remora/app/Remora_Import.h | 69 - apps/JAWS/remora/app/Remora_Import.i | 85 - apps/JAWS/remora/app/remora.idl | 100 - apps/JAWS/remora/app/stdmk | 40 - apps/JAWS/remora/app/test.cc | 76 - apps/JAWS/server/HTTP_Config.cpp | 140 - apps/JAWS/server/HTTP_Config.h | 95 - apps/JAWS/server/HTTP_Handler.cpp | 289 - apps/JAWS/server/HTTP_Handler.h | 196 - apps/JAWS/server/HTTP_Helpers.cpp | 431 - apps/JAWS/server/HTTP_Helpers.h | 108 - apps/JAWS/server/HTTP_Request.cpp | 661 - apps/JAWS/server/HTTP_Request.h | 200 - apps/JAWS/server/HTTP_Response.cpp | 366 - apps/JAWS/server/HTTP_Response.h | 80 - apps/JAWS/server/HTTP_Server.cpp | 395 - apps/JAWS/server/HTTP_Server.h | 141 - apps/JAWS/server/IO.cpp | 413 - apps/JAWS/server/IO.h | 223 - apps/JAWS/server/JAWS_Concurrency.cpp | 82 - apps/JAWS/server/JAWS_Concurrency.h | 101 - apps/JAWS/server/JAWS_Pipeline.cpp | 29 - apps/JAWS/server/JAWS_Pipeline.h | 36 - apps/JAWS/server/JAWS_Pipeline_Handler.cpp | 26 - apps/JAWS/server/JAWS_Pipeline_Handler.h | 29 - apps/JAWS/server/Makefile | 964 - apps/JAWS/server/Makefile.bor | 17 - apps/JAWS/server/Parse_Headers.cpp | 356 - apps/JAWS/server/Parse_Headers.h | 121 - apps/JAWS/server/README | 201 - apps/JAWS/server/jaws.auth | 2 - apps/JAWS/server/jaws.dsp | 176 - apps/JAWS/server/jaws.dsw | 29 - apps/JAWS/server/main.cpp | 55 - apps/JAWS/server/svc.conf | 44 - apps/JAWS/server/test.cgi | 9 - apps/JAWS/stress_testing/Makefile | 49 - apps/JAWS/stress_testing/README | 54 - apps/JAWS/stress_testing/benchd.cpp | 240 - apps/JAWS/stress_testing/client.h | 8 - apps/JAWS/stress_testing/config | 3 - apps/JAWS/stress_testing/connection.cpp | 98 - apps/JAWS/stress_testing/connection.h | 22 - apps/JAWS/stress_testing/cp.cpp | 11 - apps/JAWS/stress_testing/cp.h | 14 - apps/JAWS/stress_testing/global.h | 31 - apps/JAWS/stress_testing/http.h | 16 - apps/JAWS/stress_testing/http_tester.cpp | 171 - apps/JAWS/stress_testing/out | 2 - apps/JAWS/stress_testing/stats.cpp | 88 - apps/JAWS/stress_testing/stats.h | 31 - apps/JAWS/stress_testing/util.cpp | 60 - apps/JAWS/stress_testing/util.h | 34 - apps/Makefile | 31 - apps/Makefile.am | 33 - apps/Makefile.bor | 11 - .../Event_Comm/Consumer/Input_Handler.cpp | 147 - .../Event_Comm/Consumer/Input_Handler.h | 73 - apps/Orbix-Examples/Event_Comm/Consumer/Makefile | 163 - .../Consumer/Notification_Receiver_Handler.cpp | 127 - .../Consumer/Notification_Receiver_Handler.h | 66 - .../Event_Comm/Consumer/consumer.cpp | 124 - apps/Orbix-Examples/Event_Comm/Makefile | 26 - apps/Orbix-Examples/Event_Comm/README | 109 - .../Event_Comm/Supplier/Input_Handler.cpp | 140 - .../Event_Comm/Supplier/Input_Handler.h | 75 - apps/Orbix-Examples/Event_Comm/Supplier/Makefile | 162 - .../Event_Comm/Supplier/Notifier_Handler.cpp | 73 - .../Event_Comm/Supplier/Notifier_Handler.h | 55 - .../Event_Comm/Supplier/supplier.cpp | 132 - .../Event_Comm/include/Event_Comm.hh | 887 - .../Event_Comm/include/Event_Comm_i.h | 37 - .../Event_Comm/include/Notification_Receiver_i.h | 48 - .../Orbix-Examples/Event_Comm/include/Notifier_i.h | 87 - .../Orbix-Examples/Event_Comm/libsrc/Event_Comm.hh | 887 - .../Event_Comm/libsrc/Event_Comm.idl | 88 - .../Event_Comm/libsrc/Event_CommC.cpp | 351 - .../Event_Comm/libsrc/Event_CommS.cpp | 166 - .../Event_Comm/libsrc/Event_Comm_i.h | 36 - apps/Orbix-Examples/Event_Comm/libsrc/Makefile | 113 - .../Event_Comm/libsrc/Notification.idl | 41 - .../Event_Comm/libsrc/Notification_Receiver.idl | 40 - .../Event_Comm/libsrc/Notification_Receiver_i.cpp | 44 - .../Event_Comm/libsrc/Notification_Receiver_i.h | 49 - apps/Orbix-Examples/Event_Comm/libsrc/Notifier.idl | 47 - .../Event_Comm/libsrc/Notifier_i.cpp | 344 - apps/Orbix-Examples/Event_Comm/libsrc/Notifier_i.h | 89 - apps/Orbix-Examples/Logger/Logger.cpp | 134 - apps/Orbix-Examples/Logger/Logger.h | 61 - apps/Orbix-Examples/Logger/Makefile | 63 - apps/Orbix-Examples/Logger/Orbix.hostgroups | 1 - apps/Orbix-Examples/Logger/Orbix.hosts | 3 - apps/Orbix-Examples/Logger/README | 35 - apps/Orbix-Examples/Logger/a1.tex | 232 - apps/Orbix-Examples/Logger/client.cpp | 143 - apps/Orbix-Examples/Logger/logger.hh | 434 - apps/Orbix-Examples/Logger/logger.idl | 58 - apps/Orbix-Examples/Logger/loggerS.cpp | 141 - apps/Orbix-Examples/Logger/logger_i.cpp | 122 - apps/Orbix-Examples/Logger/logger_i.h | 80 - apps/Orbix-Examples/Logger/server.cpp | 40 - apps/Orbix-Examples/Makefile | 25 - apps/README | 27 - apps/build.bor | 15 - apps/drwho/BS_Client.cpp | 88 - apps/drwho/BS_Client.h | 46 - apps/drwho/BS_Server.cpp | 116 - apps/drwho/BS_Server.h | 47 - apps/drwho/Binary_Search.cpp | 79 - apps/drwho/Binary_Search.h | 71 - apps/drwho/CM_Client.cpp | 139 - apps/drwho/CM_Client.h | 51 - apps/drwho/CM_Server.cpp | 104 - apps/drwho/CM_Server.h | 39 - apps/drwho/ChangeLog | 250 - apps/drwho/Comm_Manager.h | 39 - apps/drwho/Drwho_Node.cpp | 99 - apps/drwho/Drwho_Node.h | 52 - apps/drwho/File_Manager.cpp | 173 - apps/drwho/File_Manager.h | 57 - apps/drwho/HT_Client.cpp | 35 - apps/drwho/HT_Client.h | 31 - apps/drwho/HT_Server.cpp | 36 - apps/drwho/HT_Server.h | 32 - apps/drwho/Hash_Table.cpp | 73 - apps/drwho/Hash_Table.h | 45 - apps/drwho/Makefile | 750 - apps/drwho/Multicast_Manager.cpp | 177 - apps/drwho/Multicast_Manager.h | 56 - apps/drwho/Options.cpp | 154 - apps/drwho/Options.h | 66 - apps/drwho/PMC_All.cpp | 96 - apps/drwho/PMC_All.h | 37 - apps/drwho/PMC_Flo.cpp | 120 - apps/drwho/PMC_Flo.h | 37 - apps/drwho/PMC_Ruser.cpp | 173 - apps/drwho/PMC_Ruser.h | 40 - apps/drwho/PMC_Usr.cpp | 112 - apps/drwho/PMC_Usr.h | 38 - apps/drwho/PMS_All.cpp | 93 - apps/drwho/PMS_All.h | 35 - apps/drwho/PMS_Flo.cpp | 71 - apps/drwho/PMS_Flo.h | 35 - apps/drwho/PMS_Ruser.cpp | 127 - apps/drwho/PMS_Ruser.h | 37 - apps/drwho/PMS_Usr.cpp | 78 - apps/drwho/PMS_Usr.h | 35 - apps/drwho/PM_Client.cpp | 136 - apps/drwho/PM_Client.h | 45 - apps/drwho/PM_Server.cpp | 81 - apps/drwho/PM_Server.h | 41 - apps/drwho/Protocol_Manager.cpp | 84 - apps/drwho/Protocol_Manager.h | 58 - apps/drwho/Protocol_Record.cpp | 96 - apps/drwho/Protocol_Record.h | 49 - apps/drwho/README | 308 - apps/drwho/Rwho_DB_Manager.cpp | 122 - apps/drwho/Rwho_DB_Manager.h | 52 - apps/drwho/SL_Client.cpp | 15 - apps/drwho/SL_Client.h | 33 - apps/drwho/SL_Server.cpp | 25 - apps/drwho/SL_Server.h | 34 - apps/drwho/SML_Client.cpp | 36 - apps/drwho/SML_Client.h | 36 - apps/drwho/SML_Server.cpp | 11 - apps/drwho/SML_Server.h | 29 - apps/drwho/SMR_Client.cpp | 21 - apps/drwho/SMR_Client.h | 29 - apps/drwho/SMR_Server.cpp | 17 - apps/drwho/SMR_Server.h | 29 - apps/drwho/SM_Client.cpp | 73 - apps/drwho/SM_Client.h | 38 - apps/drwho/SM_Server.cpp | 67 - apps/drwho/SM_Server.h | 36 - apps/drwho/Search_Struct.cpp | 22 - apps/drwho/Search_Struct.h | 41 - apps/drwho/Select_Manager.h | 30 - apps/drwho/Single_Lookup.cpp | 29 - apps/drwho/Single_Lookup.h | 39 - apps/drwho/client.cpp | 63 - apps/drwho/global.h | 52 - apps/drwho/server.cpp | 111 - apps/gperf/COPYING | 340 - apps/gperf/ChangeLog | 1847 - apps/gperf/Makefile | 28 - apps/gperf/Makefile.am | 26 - apps/gperf/Makefile.bor | 7 - apps/gperf/README | 29 - apps/gperf/gperf.1 | 23 - apps/gperf/gperf.info | 1130 - apps/gperf/gperf.texi | 1188 - apps/gperf/mdate-sh | 92 - apps/gperf/src/Bool_Array.cpp | 105 - apps/gperf/src/Bool_Array.h | 76 - apps/gperf/src/Gen_Perf.cpp | 454 - apps/gperf/src/Gen_Perf.h | 81 - apps/gperf/src/Hash_Table.cpp | 114 - apps/gperf/src/Hash_Table.h | 66 - apps/gperf/src/Iterator.cpp | 97 - apps/gperf/src/Iterator.h | 80 - apps/gperf/src/Key_List.cpp | 1929 -- apps/gperf/src/Key_List.h | 173 - apps/gperf/src/List_Node.cpp | 129 - apps/gperf/src/List_Node.h | 80 - apps/gperf/src/Makefile | 218 - apps/gperf/src/Makefile.am | 40 - apps/gperf/src/Makefile.bor | 23 - apps/gperf/src/Options.cpp | 864 - apps/gperf/src/Options.h | 190 - apps/gperf/src/Vectors.cpp | 36 - apps/gperf/src/Vectors.h | 49 - apps/gperf/src/Version.cpp | 30 - apps/gperf/src/gperf.cpp | 83 - apps/gperf/src/gperf.dsp | 219 - apps/gperf/src/gperf.dsw | 44 - apps/gperf/src/gperf_lib.dsp | 684 - apps/gperf/tests/Makefile | 250 - apps/gperf/tests/Makefile.am | 115 - apps/gperf/tests/ada-pred.exp | 54 - apps/gperf/tests/ada-res.exp | 63 - apps/gperf/tests/ada.gperf | 63 - apps/gperf/tests/adadefs.gperf | 54 - apps/gperf/tests/c++-res.exp | 73 - apps/gperf/tests/c++.gperf | 73 - apps/gperf/tests/c-parse.gperf | 56 - apps/gperf/tests/c.exp | 32 - apps/gperf/tests/c.gperf | 32 - apps/gperf/tests/corba.exp | 36 - apps/gperf/tests/corba.gperf | 36 - apps/gperf/tests/gpc.gperf | 48 - apps/gperf/tests/gplus.gperf | 76 - apps/gperf/tests/idl.exp | 9 - apps/gperf/tests/idl.gperf | 9 - apps/gperf/tests/irc.gperf | 63 - apps/gperf/tests/makeinfo.gperf | 116 - apps/gperf/tests/modula.exp | 106 - apps/gperf/tests/modula2.gperf | 40 - apps/gperf/tests/modula3.gperf | 106 - apps/gperf/tests/pascal.exp | 36 - apps/gperf/tests/pascal.gperf | 36 - apps/gperf/tests/test-1.exp | 164 - apps/gperf/tests/test-2.exp | 213 - apps/gperf/tests/test-3.exp | 195 - apps/gperf/tests/test-4.exp | 169 - apps/gperf/tests/test-5.exp | 138 - apps/gperf/tests/test-6.exp | 90 - apps/gperf/tests/test-7.exp | 32 - apps/gperf/tests/test.cpp | 34 - apps/gperf/texinfo.tex | 4977 --- apps/gperf/version.texi | 3 - bin/ACEutils.pm | 57 - bin/ADDIDL.DSM | 150 - bin/Array.pl | 31 - bin/Array_Helper | 16 - bin/GenExportH.BAT | 51 - bin/Hash_Map_Manager.pl | 146 - bin/Hash_Map_Manager_Helper | 76 - bin/Makefile | 113 - bin/Process.pm | 18 - bin/Process_Unix.pm | 73 - bin/Process_Win32.pm | 56 - bin/README.html | 171 - bin/Service_Config.perl | 31 - bin/Uniqueid.pm | 28 - bin/ace_components | 80 - bin/ace_ld | 185 - bin/auto_compile | 455 - bin/auto_compile_win32.pl | 331 - bin/auto_compile_wrapper | 56 - bin/auto_ptr.perl | 16 - bin/bootstrap | 44 - bin/check_build_logs | 115 - bin/class2hxxcxx | 80 - bin/class2hxxcxxsingle | 80 - bin/class2info | 197 - bin/class2info.awk | 1594 - bin/class2man | 78 - bin/class2mml | 79 - bin/class2src | 79 - bin/classinfo.ps | 868 - bin/clone.1 | 297 - bin/clone.cpp | 976 - bin/clone.csh | 26 - bin/corba-boolean.perl | 19 - bin/count_lines | 224 - bin/create_ace_build | 183 - bin/cvslog | 169 - bin/dsp2dsp.pl | 29 - bin/envinfo.cpp | 29 - bin/g++dep | 83 - bin/generate_man_pages | 40 - bin/hiding.fmt | 20 - bin/html-windex | 44 - bin/indent_macros.perl | 59 - bin/info2doc.awk | 2182 -- bin/info2doc.fmt | 23 - bin/info2head | 166 - bin/info2head.fmt | 23 - bin/info2headsrc | 326 - bin/info2man | 169 - bin/info2mml | 166 - bin/info2src | 133 - bin/info2src.awk | 630 - bin/libsize.pl | 192 - bin/make_release | 679 - bin/man2html | 89 - bin/man2html1.awk | 139 - bin/man2html2.awk | 18 - bin/rename-ace.pl | 184 - bin/run_all.pl | 219 - bin/run_all_list.pm | 182 - bin/run_all_win32.pl | 180 - bin/tao_env.pl | 17 - bin/tao_svcconf.pl | 15 - bin/update-ace+tao.sh | 39 - bin/vc_filter.pl | 56 - bin/vendor.fmt | 101 - config.guess | 1087 - config.sub | 1215 - configure | 32271 ------------------ configure.in | 6850 ---- docs/ACE-FMM.html | 282 - docs/ACE-SSL.html | 61 - docs/ACE-bug-process.html | 96 - docs/ACE-categories.html | 766 - docs/ACE-development-process.html | 124 - docs/ACE-guidelines.html | 1222 - docs/ACE-inheritance.pdf.gz | Bin 19666 -> 0 bytes docs/ACE-inheritance.ps.gz | Bin 18416 -> 0 bytes docs/ACE-lessons.html | 268 - docs/ACE-porting.html | 186 - docs/ACE-subsets.html | 819 - docs/ACE-tutorials.html | 56 - docs/CE-status.txt | 904 - docs/exceptions.html | 525 - docs/tutorials/001/001.dsp | 108 - docs/tutorials/001/00SetEnv | 2 - docs/tutorials/001/Makefile | 76 - docs/tutorials/001/acceptor.h | 128 - docs/tutorials/001/combine.shar | 574 - docs/tutorials/001/logger.h | 178 - docs/tutorials/001/page01.html | 103 - docs/tutorials/001/page02.html | 173 - docs/tutorials/001/page03.html | 196 - docs/tutorials/001/page04.html | 212 - docs/tutorials/001/page05.html | 55 - docs/tutorials/001/server.cpp | 79 - docs/tutorials/001/simple.fig | 57 - docs/tutorials/001/simple.gif | Bin 6040 -> 0 bytes docs/tutorials/002/002.dsp | 104 - docs/tutorials/002/00SetEnv | 2 - docs/tutorials/002/Makefile | 55 - docs/tutorials/002/combine.shar | 328 - docs/tutorials/002/handler.h | 165 - docs/tutorials/002/page01.html | 53 - docs/tutorials/002/page02.html | 158 - docs/tutorials/002/page03.html | 192 - docs/tutorials/002/page04.html | 39 - docs/tutorials/002/server.cpp | 90 - docs/tutorials/003/003.dsp | 100 - docs/tutorials/003/00SetEnv | 2 - docs/tutorials/003/Makefile | 51 - docs/tutorials/003/client.cpp | 98 - docs/tutorials/003/combine.shar | 217 - docs/tutorials/003/page01.html | 159 - docs/tutorials/004/004.dsp | 100 - docs/tutorials/004/00SetEnv | 2 - docs/tutorials/004/Makefile | 47 - docs/tutorials/004/client.cpp | 215 - docs/tutorials/004/combine.shar | 216 - docs/tutorials/004/page01.html | 275 - docs/tutorials/005/005.dsp | 112 - docs/tutorials/005/00SetEnv | 2 - docs/tutorials/005/Makefile | 118 - docs/tutorials/005/client_acceptor.h | 36 - docs/tutorials/005/client_handler.cpp | 221 - docs/tutorials/005/client_handler.h | 100 - docs/tutorials/005/combine.shar | 423 - docs/tutorials/005/page01.html | 34 - docs/tutorials/005/page02.html | 149 - docs/tutorials/005/page03.html | 72 - docs/tutorials/005/page04.html | 134 - docs/tutorials/005/page05.html | 250 - docs/tutorials/005/page06.html | 145 - docs/tutorials/005/page07.html | 96 - docs/tutorials/005/page08.html | 48 - docs/tutorials/005/server.brk | 154 - docs/tutorials/005/server.cpp | 111 - docs/tutorials/006/006.dsp | 112 - docs/tutorials/006/Makefile | 114 - docs/tutorials/006/client_acceptor.h | 74 - docs/tutorials/006/client_handler.cpp | 291 - docs/tutorials/006/client_handler.h | 118 - docs/tutorials/006/combine.shar | 508 - docs/tutorials/006/page01.html | 62 - docs/tutorials/006/page02.html | 145 - docs/tutorials/006/page03.html | 112 - docs/tutorials/006/page04.html | 153 - docs/tutorials/006/page05.html | 348 - docs/tutorials/006/page06.html | 46 - docs/tutorials/006/server.cpp | 112 - docs/tutorials/007/007.dsp | 124 - docs/tutorials/007/Makefile | 116 - docs/tutorials/007/client_acceptor.cpp | 56 - docs/tutorials/007/client_acceptor.h | 125 - docs/tutorials/007/client_handler.cpp | 229 - docs/tutorials/007/client_handler.h | 156 - docs/tutorials/007/combine.shar | 685 - docs/tutorials/007/page01.html | 83 - docs/tutorials/007/page02.html | 138 - docs/tutorials/007/page03.html | 154 - docs/tutorials/007/page04.html | 86 - docs/tutorials/007/page05.html | 187 - docs/tutorials/007/page06.html | 261 - docs/tutorials/007/page07.html | 120 - docs/tutorials/007/page08.html | 281 - docs/tutorials/007/page09.html | 78 - docs/tutorials/007/server.cpp | 110 - docs/tutorials/007/thread_pool.cpp | 252 - docs/tutorials/007/thread_pool.h | 89 - docs/tutorials/008/008-broadcast.dsp | 102 - docs/tutorials/008/008-direct.dsp | 102 - docs/tutorials/008/008-server.dsp | 102 - docs/tutorials/008/Makefile | 74 - docs/tutorials/008/broadcast_client.cpp | 80 - docs/tutorials/008/combine.shar | 465 - docs/tutorials/008/directed_client.cpp | 107 - docs/tutorials/008/page01.html | 74 - docs/tutorials/008/page02.html | 161 - docs/tutorials/008/page03.html | 146 - docs/tutorials/008/page04.html | 134 - docs/tutorials/008/page05.html | 40 - docs/tutorials/008/server.cpp | 115 - docs/tutorials/009/009-broadcast.dsp | 102 - docs/tutorials/009/009-directed.dsp | 102 - docs/tutorials/009/009-server.dsp | 102 - docs/tutorials/009/Makefile | 74 - docs/tutorials/009/broadcast_client.cpp | 46 - docs/tutorials/009/combine.shar | 394 - docs/tutorials/009/directed_client.cpp | 68 - docs/tutorials/009/page01.html | 61 - docs/tutorials/009/page02.html | 110 - docs/tutorials/009/page03.html | 101 - docs/tutorials/009/page04.html | 75 - docs/tutorials/009/page05.html | 47 - docs/tutorials/009/server.cpp | 79 - docs/tutorials/010/010.dsp | 112 - docs/tutorials/010/Makefile | 73 - docs/tutorials/010/block.h | 42 - docs/tutorials/010/combine.shar | 550 - docs/tutorials/010/message_queue.cpp | 88 - docs/tutorials/010/page01.html | 61 - docs/tutorials/010/page02.html | 126 - docs/tutorials/010/page03.html | 74 - docs/tutorials/010/page04.html | 77 - docs/tutorials/010/page05.html | 170 - docs/tutorials/010/page06.html | 57 - docs/tutorials/010/page07.html | 31 - docs/tutorials/010/task.cpp | 123 - docs/tutorials/010/task.h | 45 - docs/tutorials/011/011.dsp | 116 - docs/tutorials/011/Makefile | 73 - docs/tutorials/011/block.h | 38 - docs/tutorials/011/combine.shar | 489 - docs/tutorials/011/data.h | 73 - docs/tutorials/011/message_queue.cpp | 86 - docs/tutorials/011/page01.html | 36 - docs/tutorials/011/page02.html | 118 - docs/tutorials/011/page03.html | 188 - docs/tutorials/011/page04.html | 104 - docs/tutorials/011/page05.html | 93 - docs/tutorials/011/page06.html | 36 - docs/tutorials/011/task.cpp | 115 - docs/tutorials/011/task.h | 33 - docs/tutorials/012/012.dsp | 112 - docs/tutorials/012/Makefile | 73 - docs/tutorials/012/block.h | 65 - docs/tutorials/012/combine.shar | 466 - docs/tutorials/012/message_queue.cpp | 97 - docs/tutorials/012/page01.html | 44 - docs/tutorials/012/page02.html | 112 - docs/tutorials/012/page03.html | 106 - docs/tutorials/012/page04.html | 127 - docs/tutorials/012/page05.html | 233 - docs/tutorials/012/page06.html | 31 - docs/tutorials/012/task.cpp | 145 - docs/tutorials/012/task.h | 47 - docs/tutorials/012/work.h | 76 - docs/tutorials/013/013.dsp | 132 - docs/tutorials/013/Makefile | 74 - docs/tutorials/013/block.cpp | 81 - docs/tutorials/013/block.h | 84 - docs/tutorials/013/combine.shar | 661 - docs/tutorials/013/message_queue.cpp | 88 - docs/tutorials/013/mld.cpp | 23 - docs/tutorials/013/mld.h | 49 - docs/tutorials/013/page01.html | 64 - docs/tutorials/013/page02.html | 123 - docs/tutorials/013/page03.html | 125 - docs/tutorials/013/page04.html | 140 - docs/tutorials/013/page05.html | 108 - docs/tutorials/013/page06.html | 303 - docs/tutorials/013/page07.html | 257 - docs/tutorials/013/page08.html | 42 - docs/tutorials/013/task.cpp | 193 - docs/tutorials/013/task.h | 57 - docs/tutorials/013/work.cpp | 125 - docs/tutorials/013/work.h | 72 - docs/tutorials/014/014.dsp | 112 - docs/tutorials/014/EndTask.h | 89 - docs/tutorials/014/Makefile | 77 - docs/tutorials/014/Task.cpp | 206 - docs/tutorials/014/Task.h | 59 - docs/tutorials/014/combine.shar | 357 - docs/tutorials/014/page01.html | 72 - docs/tutorials/014/page02.html | 83 - docs/tutorials/014/page03.html | 239 - docs/tutorials/014/page04.html | 118 - docs/tutorials/014/page05.html | 208 - docs/tutorials/014/stream.cpp | 168 - docs/tutorials/015/015-client.dsp | 138 - docs/tutorials/015/015-server.dsp | 166 - docs/tutorials/015/Client_i.cpp | 60 - docs/tutorials/015/Client_i.h | 73 - docs/tutorials/015/Compressor.cpp | 93 - docs/tutorials/015/Compressor.h | 35 - docs/tutorials/015/Crypt.cpp | 77 - docs/tutorials/015/Crypt.h | 32 - docs/tutorials/015/Handler.cpp | 179 - docs/tutorials/015/Handler.h | 61 - docs/tutorials/015/Makefile | 33 - docs/tutorials/015/Makefile.client | 79 - docs/tutorials/015/Makefile.server | 81 - docs/tutorials/015/Protocol_Stream.cpp | 195 - docs/tutorials/015/Protocol_Stream.h | 86 - docs/tutorials/015/Protocol_Task.cpp | 73 - docs/tutorials/015/Protocol_Task.h | 60 - docs/tutorials/015/Recv.cpp | 93 - docs/tutorials/015/Recv.h | 58 - docs/tutorials/015/Server_i.cpp | 75 - docs/tutorials/015/Server_i.h | 50 - docs/tutorials/015/Xmit.cpp | 84 - docs/tutorials/015/Xmit.h | 46 - docs/tutorials/015/client.cpp | 70 - docs/tutorials/015/combine.shar | 1063 - docs/tutorials/015/page01.html | 105 - docs/tutorials/015/page02.html | 94 - docs/tutorials/015/page03.html | 98 - docs/tutorials/015/page04.html | 97 - docs/tutorials/015/page05.html | 94 - docs/tutorials/015/page06.html | 78 - docs/tutorials/015/page07.html | 101 - docs/tutorials/015/page08.html | 90 - docs/tutorials/015/page09.html | 226 - docs/tutorials/015/page10.html | 127 - docs/tutorials/015/page11.html | 220 - docs/tutorials/015/page12.html | 81 - docs/tutorials/015/page13.html | 98 - docs/tutorials/015/page14.html | 75 - docs/tutorials/015/page15.html | 119 - docs/tutorials/015/page16.html | 90 - docs/tutorials/015/page17.html | 117 - docs/tutorials/015/page18.html | 61 - docs/tutorials/015/page19.html | 117 - docs/tutorials/015/page20.html | 59 - docs/tutorials/015/page21.html | 100 - docs/tutorials/015/page22.html | 83 - docs/tutorials/015/server.cpp | 68 - docs/tutorials/015/stream.gif | Bin 4079 -> 0 bytes docs/tutorials/016/016.dsp | 108 - docs/tutorials/016/Condition_i.cpp | 201 - docs/tutorials/016/Condition_i.h | 154 - docs/tutorials/016/Makefile | 77 - docs/tutorials/016/combine.shar | 385 - docs/tutorials/016/condition.cpp | 252 - docs/tutorials/016/page01.html | 85 - docs/tutorials/016/page02.html | 218 - docs/tutorials/016/page03.html | 225 - docs/tutorials/016/page04.html | 277 - docs/tutorials/016/page05.html | 32 - docs/tutorials/017/017.dsp | 108 - docs/tutorials/017/Barrier_i.cpp | 160 - docs/tutorials/017/Barrier_i.h | 66 - docs/tutorials/017/Makefile | 77 - docs/tutorials/017/barrier.cpp | 166 - docs/tutorials/017/barrier2.cpp | 178 - docs/tutorials/017/combine.shar | 380 - docs/tutorials/017/page01.html | 51 - docs/tutorials/017/page02.html | 194 - docs/tutorials/017/page03.html | 98 - docs/tutorials/017/page04.html | 187 - docs/tutorials/017/page05.html | 31 - docs/tutorials/017/page06.html | 205 - docs/tutorials/018/018.dsp | 116 - docs/tutorials/018/Makefile | 77 - docs/tutorials/018/Mutex_i.h | 17 - docs/tutorials/018/Test_T.cpp | 192 - docs/tutorials/018/Test_T.h | 80 - docs/tutorials/018/Token_i.h | 20 - docs/tutorials/018/combine.shar | 440 - docs/tutorials/018/output | 33 - docs/tutorials/018/page01.html | 69 - docs/tutorials/018/page02.html | 60 - docs/tutorials/018/page03.html | 124 - docs/tutorials/018/page04.html | 224 - docs/tutorials/018/page05.html | 65 - docs/tutorials/018/page06.html | 80 - docs/tutorials/018/page07.html | 31 - docs/tutorials/018/token.cpp | 32 - docs/tutorials/019/019-client.dsp | 105 - docs/tutorials/019/019-client2.dsp | 105 - docs/tutorials/019/019-server.dsp | 105 - docs/tutorials/019/019-server2.dsp | 105 - docs/tutorials/019/Makefile | 79 - docs/tutorials/019/client.cpp | 74 - docs/tutorials/019/client2.cpp | 47 - docs/tutorials/019/combine.shar | 358 - docs/tutorials/019/page01.html | 61 - docs/tutorials/019/page02.html | 155 - docs/tutorials/019/page03.html | 97 - docs/tutorials/019/page04.html | 151 - docs/tutorials/019/page05.html | 124 - docs/tutorials/019/page06.html | 28 - docs/tutorials/019/server.cpp | 126 - docs/tutorials/019/server2.cpp | 66 - docs/tutorials/019/shmem.cpp | 52 - docs/tutorials/019/shmem.h | 45 - docs/tutorials/020/020-client.dsp | 105 - docs/tutorials/020/020-client2.dsp | 105 - docs/tutorials/020/020-server.dsp | 105 - docs/tutorials/020/020-server2.dsp | 105 - docs/tutorials/020/Makefile | 79 - docs/tutorials/020/client.cpp | 31 - docs/tutorials/020/client2.cpp | 25 - docs/tutorials/020/combine.shar | 364 - docs/tutorials/020/mmap.cpp | 34 - docs/tutorials/020/mmap.h | 38 - docs/tutorials/020/mmapfile | 8 - docs/tutorials/020/page01.html | 48 - docs/tutorials/020/page02.html | 74 - docs/tutorials/020/page03.html | 53 - docs/tutorials/020/page04.html | 88 - docs/tutorials/020/page05.html | 98 - docs/tutorials/020/page06.html | 28 - docs/tutorials/020/server.cpp | 41 - docs/tutorials/020/server2.cpp | 31 - docs/tutorials/021/021-client.dsp | 105 - docs/tutorials/021/021-server.dsp | 105 - docs/tutorials/021/Makefile | 79 - docs/tutorials/021/client.cpp | 121 - docs/tutorials/021/combine.shar | 398 - docs/tutorials/021/mpool.cpp | 66 - docs/tutorials/021/mpool.h | 67 - docs/tutorials/021/page01.html | 65 - docs/tutorials/021/page02.html | 183 - docs/tutorials/021/page03.html | 147 - docs/tutorials/021/page04.html | 110 - docs/tutorials/021/page05.html | 87 - docs/tutorials/021/page06.html | 33 - docs/tutorials/021/server.cpp | 156 - docs/tutorials/Chap_2/Chap_2.zip | Bin 6712 -> 0 bytes docs/tutorials/Chap_2/ex01.html | 106 - docs/tutorials/Chap_2/ex02.html | 95 - docs/tutorials/Chap_2/ex03.html | 81 - docs/tutorials/Chap_2/ex04.html | 87 - docs/tutorials/Chap_2/ex05.htm | 87 - docs/tutorials/Chap_2/ex05.html | 87 - docs/tutorials/Chap_2/ex06.html | 76 - docs/tutorials/Chap_3/Chap_3.zip | Bin 3004 -> 0 bytes docs/tutorials/Chap_3/Makefile | 29 - docs/tutorials/Chap_3/README | 14 - docs/tutorials/Chap_3/ex01.html | 107 - docs/tutorials/Chap_3/ex02.html | 135 - docs/tutorials/Chap_3/ex03.html | 115 - docs/tutorials/Chap_3/mm.cpp | 113 - docs/tutorials/Chap_4/Chap_4.zip | Bin 8317 -> 0 bytes docs/tutorials/Chap_4/ex01.html | 74 - docs/tutorials/Chap_4/ex02.html | 67 - docs/tutorials/Chap_4/ex03.html | 78 - docs/tutorials/Chap_4/ex04.html | 69 - docs/tutorials/Chap_4/ex05.html | 69 - docs/tutorials/Chap_4/ex06.html | 95 - docs/tutorials/Chap_4/ex07.html | 84 - docs/tutorials/Chap_4/ex08.html | 72 - docs/tutorials/Chap_5/Chap_5.zip | Bin 5843 -> 0 bytes docs/tutorials/Chap_5/ex01.html | 75 - docs/tutorials/Chap_5/ex02.html | 148 - docs/tutorials/Chap_5/ex03.html | 86 - docs/tutorials/Chap_5/ex04.html | 84 - docs/tutorials/Chap_5/ex05.html | 87 - docs/tutorials/Chap_6/Chap_6.zip | Bin 14305 -> 0 bytes docs/tutorials/Chap_6/ex01.html | 81 - docs/tutorials/Chap_6/ex02.html | 94 - docs/tutorials/Chap_6/ex03.html | 50 - docs/tutorials/Chap_6/ex04.html | 44 - docs/tutorials/Chap_6/ex05.html | 129 - docs/tutorials/Chap_6/ex06.html | 134 - docs/tutorials/Chap_6/ex07.html | 173 - docs/tutorials/Chap_6/ex08.html | 96 - docs/tutorials/Chap_6/ex09.html | 211 - docs/tutorials/Chap_6/ex10.html | 110 - docs/tutorials/Chap_7/Chap_7.zip | Bin 4520 -> 0 bytes docs/tutorials/Chap_7/ex01.html | 90 - docs/tutorials/Chap_7/ex02.html | 165 - docs/tutorials/Chap_7/ex03.html | 158 - docs/tutorials/Makefile | 9 - docs/tutorials/colorize | 20 - docs/tutorials/combine | 164 - docs/tutorials/fix.Makefile | 68 - docs/tutorials/guide-tutorials.html | 46 - docs/tutorials/linify | 54 - docs/tutorials/new-tutorials.html | 80 - docs/tutorials/online-tutorials.html | 143 - docs/tutorials/templates.html | 189 - docs/tutorials/tutorials.dsw | 412 - docs/usage-bugzilla.html | 99 - etc/DOC-way.html | 64 - etc/README | 32 - etc/Svc_Conf_l.cpp.diff | 260 - etc/Svc_Conf_y.cpp.diff | 83 - etc/create-jace-release | 9 - etc/enforce_ace_try.diff | 271 - etc/purify.solaris2 | 159 - etc/xlc_dummy.cpp | 6 - examples/ASX/CCM_App/CCM_App.cpp | 115 - examples/ASX/CCM_App/Makefile | 172 - examples/ASX/CCM_App/SC_Client.cpp | 13 - examples/ASX/CCM_App/SC_Server.cpp | 84 - examples/ASX/CCM_App/svc.conf | 21 - .../Event_Server/Event_Server/Consumer_Router.cpp | 149 - .../Event_Server/Event_Server/Consumer_Router.h | 70 - .../Event_Server/Event_Server/Event_Analyzer.cpp | 79 - .../ASX/Event_Server/Event_Server/Event_Analyzer.h | 45 - .../ASX/Event_Server/Event_Server/Event_Server.dsp | 114 - .../ASX/Event_Server/Event_Server/Event_Server.dsw | 29 - examples/ASX/Event_Server/Event_Server/Makefile | 689 - examples/ASX/Event_Server/Event_Server/Options.cpp | 194 - examples/ASX/Event_Server/Event_Server/Options.h | 124 - examples/ASX/Event_Server/Event_Server/Options.i | 137 - .../ASX/Event_Server/Event_Server/Peer_Router.cpp | 451 - .../ASX/Event_Server/Event_Server/Peer_Router.h | 156 - .../Event_Server/Event_Server/Supplier_Router.cpp | 156 - .../Event_Server/Event_Server/Supplier_Router.h | 72 - .../ASX/Event_Server/Event_Server/event_server.cpp | 252 - examples/ASX/Event_Server/Makefile | 23 - examples/ASX/Event_Server/README | 79 - examples/ASX/Event_Server/Transceiver/Makefile | 194 - .../ASX/Event_Server/Transceiver/transceiver.cpp | 254 - .../ASX/Event_Server/Transceiver/transceiver.dsp | 70 - .../ASX/Event_Server/Transceiver/transceiver.dsw | 29 - .../ASX/Event_Server/Transceiver/transceiver.h | 61 - examples/ASX/Makefile | 25 - examples/ASX/Message_Queue/Bounded_Buffer.dsp | 91 - examples/ASX/Message_Queue/Buffer_Stream.dsp | 91 - examples/ASX/Message_Queue/Makefile | 379 - .../ASX/Message_Queue/Message_Queue_Example.dsw | 53 - examples/ASX/Message_Queue/Priority_Buffer.dsp | 91 - examples/ASX/Message_Queue/bounded_buffer.cpp | 138 - examples/ASX/Message_Queue/buffer_stream.cpp | 308 - examples/ASX/Message_Queue/priority_buffer.cpp | 143 - .../ASX/UPIPE_Event_Server/Consumer_Router.cpp | 150 - examples/ASX/UPIPE_Event_Server/Consumer_Router.h | 53 - examples/ASX/UPIPE_Event_Server/Event_Analyzer.cpp | 72 - examples/ASX/UPIPE_Event_Server/Event_Analyzer.h | 38 - examples/ASX/UPIPE_Event_Server/Makefile | 690 - examples/ASX/UPIPE_Event_Server/Options.cpp | 193 - examples/ASX/UPIPE_Event_Server/Options.h | 88 - examples/ASX/UPIPE_Event_Server/Options.i | 161 - examples/ASX/UPIPE_Event_Server/Peer_Router.cpp | 274 - examples/ASX/UPIPE_Event_Server/Peer_Router.h | 126 - .../ASX/UPIPE_Event_Server/Supplier_Router.cpp | 160 - examples/ASX/UPIPE_Event_Server/Supplier_Router.h | 57 - .../ASX/UPIPE_Event_Server/UPIPE_Event_Server.dsp | 115 - .../ASX/UPIPE_Event_Server/UPIPE_Event_Server.dsw | 29 - examples/ASX/UPIPE_Event_Server/event_server.cpp | 254 - examples/Bounded_Packet_Relay/BPR_Drivers.cpp | 531 - examples/Bounded_Packet_Relay/BPR_Drivers.h | 287 - examples/Bounded_Packet_Relay/BPR_Drivers_T.cpp | 320 - examples/Bounded_Packet_Relay/BPR_Drivers_T.h | 178 - .../Bounded_Packet_Relay/Bounded_Packet_Relay.dsp | 116 - .../Bounded_Packet_Relay/Bounded_Packet_Relay.dsw | 29 - examples/Bounded_Packet_Relay/Makefile | 417 - examples/Bounded_Packet_Relay/README | 194 - .../Thread_Bounded_Packet_Relay.cpp | 812 - .../Thread_Bounded_Packet_Relay.h | 402 - examples/Bounded_Packet_Relay/bpr_thread.cpp | 117 - examples/CORBA/Makefile | 65 - examples/CORBA/Test.idl | 8 - examples/CORBA/Test_i.cpp | 12 - examples/CORBA/Test_i.h | 19 - examples/CORBA/client.cpp | 27 - examples/CORBA/server.cpp | 39 - examples/Connection/Makefile | 25 - examples/Connection/blocking/README | 36 - examples/Connection/blocking/SPIPE-acceptor.cpp | 205 - examples/Connection/blocking/SPIPE-acceptor.h | 70 - examples/Connection/blocking/SPIPE-connector.cpp | 242 - examples/Connection/blocking/SPIPE-connector.h | 80 - examples/Connection/blocking/SPIPE.dsp | 77 - examples/Connection/blocking/SPIPE.dsw | 41 - examples/Connection/blocking/acceptor.dsp | 77 - .../Connection/blocking/test_spipe_acceptor.cpp | 22 - .../Connection/blocking/test_spipe_connector.cpp | 21 - examples/Connection/misc/Connection_Handler.cpp | 243 - examples/Connection/misc/Connection_Handler.h | 45 - examples/Connection/misc/Makefile | 352 - examples/Connection/misc/test_upipe.cpp | 156 - examples/Connection/misc/test_upipe.h | 75 - examples/Connection/non_blocking/CPP-acceptor.cpp | 249 - examples/Connection/non_blocking/CPP-acceptor.h | 92 - examples/Connection/non_blocking/CPP-connector.cpp | 301 - examples/Connection/non_blocking/CPP-connector.h | 94 - examples/Connection/non_blocking/Makefile | 1504 - examples/Connection/non_blocking/README | 28 - examples/Connection/non_blocking/non_blocking.dsp | 73 - examples/Connection/non_blocking/non_blocking.dsw | 41 - examples/Connection/non_blocking/server.dsp | 73 - .../non_blocking/test_lsock_acceptor.cpp | 59 - .../non_blocking/test_lsock_connector.cpp | 69 - .../Connection/non_blocking/test_sock_acceptor.cpp | 45 - .../non_blocking/test_sock_connector.cpp | 72 - .../non_blocking/test_spipe_acceptor.cpp | 55 - .../non_blocking/test_spipe_connector.cpp | 64 - .../Connection/non_blocking/test_tli_acceptor.cpp | 53 - .../Connection/non_blocking/test_tli_connector.cpp | 64 - examples/DLL/Dll.dsw | 53 - examples/DLL/Magazine.h | 42 - examples/DLL/Main.dsp | 90 - examples/DLL/Makefile | 43 - examples/DLL/Makefile.Newsweek | 43 - examples/DLL/Makefile.Today | 47 - examples/DLL/Newsweek.cpp | 29 - examples/DLL/Newsweek.dsp | 107 - examples/DLL/Newsweek.h | 45 - examples/DLL/README | 47 - examples/DLL/Today.cpp | 29 - examples/DLL/Today.dsp | 108 - examples/DLL/Today.h | 46 - examples/DLL/test_dll.cpp | 78 - examples/IOStream/Makefile | 25 - examples/IOStream/README | 22 - examples/IOStream/client/Makefile | 77 - examples/IOStream/client/iostream_client.cpp | 75 - examples/IOStream/server/Makefile | 191 - examples/IOStream/server/iostream_server.cpp | 150 - examples/IOStream/server/iostream_server.h | 50 - examples/IPC_SAP/ATM_SAP/CPP-client.cpp | 152 - examples/IPC_SAP/ATM_SAP/CPP-server.cpp | 119 - examples/IPC_SAP/ATM_SAP/Makefile | 45 - examples/IPC_SAP/DEV_SAP/Makefile | 22 - examples/IPC_SAP/DEV_SAP/README | 23 - examples/IPC_SAP/DEV_SAP/reader/Makefile | 77 - examples/IPC_SAP/DEV_SAP/reader/reader.cpp | 65 - examples/IPC_SAP/DEV_SAP/writer/Makefile | 77 - examples/IPC_SAP/DEV_SAP/writer/writer.cpp | 71 - examples/IPC_SAP/FIFO_SAP/FIFO-Msg-client.cpp | 38 - examples/IPC_SAP/FIFO_SAP/FIFO-Msg-server.cpp | 43 - examples/IPC_SAP/FIFO_SAP/FIFO-client.cpp | 25 - examples/IPC_SAP/FIFO_SAP/FIFO-server.cpp | 26 - examples/IPC_SAP/FIFO_SAP/FIFO-test.cpp | 114 - examples/IPC_SAP/FIFO_SAP/Makefile | 152 - examples/IPC_SAP/FILE_SAP/File_sap.dsw | 29 - examples/IPC_SAP/FILE_SAP/Makefile | 70 - examples/IPC_SAP/FILE_SAP/client.cpp | 59 - examples/IPC_SAP/FILE_SAP/client.dsp | 57 - examples/IPC_SAP/FILE_SAP/testfile | 1 - examples/IPC_SAP/Makefile | 27 - examples/IPC_SAP/SOCK_SAP/C-inclient.cpp | 77 - examples/IPC_SAP/SOCK_SAP/C-inserver.cpp | 109 - examples/IPC_SAP/SOCK_SAP/CPP-inclient.cpp | 409 - examples/IPC_SAP/SOCK_SAP/CPP-inclient.h | 108 - examples/IPC_SAP/SOCK_SAP/CPP-inserver-fancy.cpp | 584 - examples/IPC_SAP/SOCK_SAP/CPP-inserver-fancy.h | 43 - examples/IPC_SAP/SOCK_SAP/CPP-inserver-poll.cpp | 201 - examples/IPC_SAP/SOCK_SAP/CPP-inserver.cpp | 388 - examples/IPC_SAP/SOCK_SAP/CPP-unclient.cpp | 68 - examples/IPC_SAP/SOCK_SAP/CPP-unserver.cpp | 158 - examples/IPC_SAP/SOCK_SAP/CPP_inclient.dsp | 70 - examples/IPC_SAP/SOCK_SAP/CPP_inserver.dsp | 70 - examples/IPC_SAP/SOCK_SAP/C_inserver.dsp | 70 - examples/IPC_SAP/SOCK_SAP/FD-unclient.cpp | 56 - examples/IPC_SAP/SOCK_SAP/FD-unserver.cpp | 94 - examples/IPC_SAP/SOCK_SAP/Makefile | 608 - examples/IPC_SAP/SOCK_SAP/README | 46 - examples/IPC_SAP/SOCK_SAP/SOCK_SAP.dsp | 70 - examples/IPC_SAP/SOCK_SAP/SOCK_SAP.dsw | 65 - examples/IPC_SAP/SOCK_SAP/local_data | 1 - examples/IPC_SAP/SOCK_SAP/run_test | 36 - examples/IPC_SAP/SOCK_SAP/summarize | 45 - examples/IPC_SAP/SPIPE_SAP/Makefile | 276 - examples/IPC_SAP/SPIPE_SAP/NPClient.cpp | 58 - examples/IPC_SAP/SPIPE_SAP/NPServer.cpp | 66 - examples/IPC_SAP/SPIPE_SAP/client.cpp | 44 - examples/IPC_SAP/SPIPE_SAP/consumer_msg.cpp | 54 - examples/IPC_SAP/SPIPE_SAP/consumer_read.cpp | 51 - examples/IPC_SAP/SPIPE_SAP/producer_msg.cpp | 59 - examples/IPC_SAP/SPIPE_SAP/producer_read.cpp | 50 - examples/IPC_SAP/SPIPE_SAP/server.cpp | 120 - examples/IPC_SAP/SPIPE_SAP/shared.h | 10 - examples/IPC_SAP/TLI_SAP/CPP-ATM-client.cpp | 161 - examples/IPC_SAP/TLI_SAP/CPP-ATM-server.cpp | 113 - examples/IPC_SAP/TLI_SAP/CPP-client.cpp | 92 - examples/IPC_SAP/TLI_SAP/CPP-server.cpp | 86 - examples/IPC_SAP/TLI_SAP/Makefile | 325 - examples/IPC_SAP/TLI_SAP/db-client.cpp | 57 - examples/IPC_SAP/TLI_SAP/db-server.cpp | 120 - examples/IPC_SAP/TLI_SAP/ftp-client.cpp | 46 - examples/IPC_SAP/TLI_SAP/ftp-server.cpp | 82 - examples/IPC_SAP/UPIPE_SAP/Makefile | 469 - examples/IPC_SAP/UPIPE_SAP/ex1.cpp | 181 - examples/IPC_SAP/UPIPE_SAP/ex2.cpp | 177 - examples/IPC_SAP/UPIPE_SAP/ex3.cpp | 157 - examples/Log_Msg/Callback.dsp | 61 - examples/Log_Msg/Log_Msg.dsp | 61 - examples/Log_Msg/Makefile | 86 - examples/Log_Msg/Ostream.dsp | 61 - examples/Log_Msg/README | 65 - examples/Log_Msg/test_callback.cpp | 159 - examples/Log_Msg/test_log_msg.cpp | 190 - examples/Log_Msg/test_ostream.cpp | 71 - examples/Logger/Acceptor-server/Makefile | 190 - examples/Logger/Acceptor-server/server_loggerd.cpp | 227 - examples/Logger/Acceptor-server/server_loggerd.dsp | 70 - examples/Logger/Acceptor-server/server_loggerd.dsw | 29 - examples/Logger/Acceptor-server/server_loggerd.h | 55 - examples/Logger/Makefile | 27 - examples/Logger/README | 32 - examples/Logger/client/Makefile | 71 - examples/Logger/client/client.dsp | 69 - examples/Logger/client/client.dsw | 29 - examples/Logger/client/logging_app.cpp | 54 - examples/Logger/simple-server/Logging_Acceptor.cpp | 84 - examples/Logger/simple-server/Logging_Acceptor.h | 59 - examples/Logger/simple-server/Logging_Handler.cpp | 154 - examples/Logger/simple-server/Logging_Handler.h | 70 - examples/Logger/simple-server/Makefile | 249 - examples/Logger/simple-server/Reactor_Singleton.h | 32 - examples/Logger/simple-server/server_loggerd.cpp | 85 - examples/Logger/simple-server/server_loggerd.dsp | 90 - examples/Logger/simple-server/server_loggerd.dsw | 29 - examples/Makefile | 44 - examples/Map_Manager/Makefile | 121 - examples/Map_Manager/test_hash_map_manager.cpp | 106 - examples/Mem_Map/IO-tests/IO_Test.cpp | 231 - examples/Mem_Map/IO-tests/IO_Test.h | 96 - examples/Mem_Map/IO-tests/Makefile | 66 - examples/Mem_Map/IO-tests/test_io.cpp | 203 - examples/Mem_Map/Makefile | 22 - examples/Mem_Map/file-reverse/Makefile | 62 - examples/Mem_Map/file-reverse/file-reverse.cpp | 57 - examples/Mem_Map/file-reverse/file_reverse.dsp | 90 - examples/Mem_Map/file-reverse/file_reverse.dsw | 29 - examples/Misc/Makefile | 389 - examples/Misc/test_XtReactor1.cpp | 175 - examples/Misc/test_XtReactor2.cpp | 104 - examples/Misc/test_dump.cpp | 42 - examples/Misc/test_dump.h | 50 - examples/Misc/test_get_opt.cpp | 52 - examples/Misc/test_profile_timer.cpp | 34 - examples/Misc/test_read_buffer.cpp | 26 - examples/Misc/test_set.cpp | 16 - examples/Misc/test_sstring.cpp | 24 - examples/Misc/test_trace.cpp | 113 - examples/NT_Service/NT_Service.dsp | 101 - examples/NT_Service/NT_Service.dsw | 29 - examples/NT_Service/README | 45 - examples/NT_Service/main.cpp | 206 - examples/NT_Service/ntsvc.cpp | 103 - examples/NT_Service/ntsvc.h | 63 - examples/Naming/Makefile | 325 - examples/Naming/Naming.dsp | 69 - examples/Naming/Naming.dsw | 53 - examples/Naming/multiple_contexts.dsp | 70 - examples/Naming/non_existent.dsp | 70 - examples/Naming/test_multiple_contexts.cpp | 81 - examples/Naming/test_non_existent.cpp | 51 - examples/Naming/test_open.cpp | 77 - examples/Naming/test_writers.cpp | 71 - examples/OS/Makefile | 21 - examples/OS/Process/Makefile | 46 - examples/OS/Process/Process.dsp | 101 - examples/OS/Process/Process.dsw | 41 - examples/OS/Process/README | 55 - examples/OS/Process/imore.cpp | 263 - examples/OS/Process/imore.dsp | 101 - examples/OS/Process/process.cpp | 552 - examples/QOS/Makefile | 92 - examples/QOS/QOS.dsw | 41 - examples/QOS/QosEvent.h | 186 - examples/QOS/README | 63 - examples/QOS/Receiver_QOS_Event_Handler.cpp | 87 - examples/QOS/Receiver_QOS_Event_Handler.h | 56 - examples/QOS/Sender_QOS_Event_Handler.cpp | 85 - examples/QOS/Sender_QOS_Event_Handler.h | 57 - examples/QOS/client.cpp | 868 - examples/QOS/client.dsp | 113 - examples/QOS/server.cpp | 860 - examples/QOS/server.dsp | 113 - examples/README | 83 - examples/Reactor/Dgram/CODgram.cpp | 250 - examples/Reactor/Dgram/CODgram.dsp | 89 - examples/Reactor/Dgram/Dgram.cpp | 254 - examples/Reactor/Dgram/Dgram.dsp | 89 - examples/Reactor/Dgram/Dgram.dsw | 41 - examples/Reactor/Dgram/Makefile | 199 - examples/Reactor/FIFO/Makefile | 144 - examples/Reactor/FIFO/client.cpp | 21 - examples/Reactor/FIFO/server.cpp | 84 - examples/Reactor/Makefile | 25 - examples/Reactor/Misc/Makefile | 729 - examples/Reactor/Misc/Misc.dsp | 70 - examples/Reactor/Misc/Misc.dsw | 101 - examples/Reactor/Misc/demuxing.dsp | 101 - examples/Reactor/Misc/early_timeouts.dsp | 57 - examples/Reactor/Misc/notification.cpp | 382 - examples/Reactor/Misc/notification.dsp | 70 - examples/Reactor/Misc/pingpong.cpp | 292 - examples/Reactor/Misc/reactors.dsp | 57 - examples/Reactor/Misc/signal_tester.cpp | 221 - examples/Reactor/Misc/signals_1.dsp | 57 - examples/Reactor/Misc/signals_2.dsp | 57 - examples/Reactor/Misc/test_demuxing.cpp | 380 - examples/Reactor/Misc/test_early_timeouts.cpp | 110 - examples/Reactor/Misc/test_event_handler_t.cpp | 54 - examples/Reactor/Misc/test_reactors.cpp | 200 - examples/Reactor/Misc/test_signals.cpp | 226 - examples/Reactor/Misc/test_signals_1.cpp | 111 - examples/Reactor/Misc/test_signals_2.cpp | 289 - examples/Reactor/Misc/test_time_value.cpp | 72 - examples/Reactor/Misc/test_timer_queue.cpp | 94 - examples/Reactor/Multicast/Log_Wrapper.cpp | 72 - examples/Reactor/Multicast/Log_Wrapper.h | 68 - examples/Reactor/Multicast/Makefile | 76 - examples/Reactor/Multicast/Multicast.dsw | 41 - examples/Reactor/Multicast/README | 15 - examples/Reactor/Multicast/client.cpp | 120 - examples/Reactor/Multicast/client.dsp | 93 - examples/Reactor/Multicast/server.cpp | 215 - examples/Reactor/Multicast/server.dsp | 93 - examples/Reactor/Ntalker/Makefile | 131 - examples/Reactor/Ntalker/README | 17 - examples/Reactor/Ntalker/ntalker.cpp | 227 - examples/Reactor/Ntalker/ntalker.dsp | 65 - examples/Reactor/Ntalker/ntalker.dsw | 29 - examples/Reactor/Proactor/Aio_Platform_Test_C.cpp | 137 - examples/Reactor/Proactor/Makefile | 37 - examples/Reactor/Proactor/README | 77 - examples/Reactor/Proactor/post_completion.dsp | 90 - examples/Reactor/Proactor/post_completions.cpp | 291 - examples/Reactor/Proactor/post_completions.dsp | 64 - examples/Reactor/Proactor/simple_test_proactor.cpp | 260 - examples/Reactor/Proactor/test_aiocb.cpp | 230 - examples/Reactor/Proactor/test_aiocb_ace.cpp | 255 - examples/Reactor/Proactor/test_aiosig.cpp | 294 - examples/Reactor/Proactor/test_aiosig_ace.cpp | 312 - examples/Reactor/Proactor/test_cancel.cpp | 274 - examples/Reactor/Proactor/test_cancel.dsp | 61 - examples/Reactor/Proactor/test_end_event_loop.cpp | 170 - examples/Reactor/Proactor/test_end_event_loop.dsp | 60 - examples/Reactor/Proactor/test_multiple_loops.cpp | 134 - examples/Reactor/Proactor/test_multiple_loops.dsp | 71 - examples/Reactor/Proactor/test_proactor.cpp | 620 - examples/Reactor/Proactor/test_proactor.dsp | 66 - examples/Reactor/Proactor/test_proactor.dsw | 89 - examples/Reactor/Proactor/test_timeout.cpp | 133 - examples/Reactor/Proactor/test_timeout.dsp | 70 - examples/Reactor/Proactor/test_timeout_st.cpp | 98 - examples/Reactor/README | 20 - examples/Reactor/WFMO_Reactor/APC.DSP | 58 - examples/Reactor/WFMO_Reactor/Abondoned.dsp | 58 - examples/Reactor/WFMO_Reactor/Console_Input.dsp | 59 - .../Reactor/WFMO_Reactor/Directory_Changes.dsp | 59 - examples/Reactor/WFMO_Reactor/Exceptions.dsp | 59 - examples/Reactor/WFMO_Reactor/Handle_Close.dsp | 58 - examples/Reactor/WFMO_Reactor/Multithreading.dsp | 59 - examples/Reactor/WFMO_Reactor/Network_Events.dsp | 59 - .../Reactor/WFMO_Reactor/Prerun_State_Changes.dsp | 60 - examples/Reactor/WFMO_Reactor/Registration.dsp | 59 - examples/Reactor/WFMO_Reactor/Registry_Changes.dsp | 59 - examples/Reactor/WFMO_Reactor/Removals.dsp | 58 - examples/Reactor/WFMO_Reactor/Talker.dsp | 58 - examples/Reactor/WFMO_Reactor/Timeouts.dsp | 58 - examples/Reactor/WFMO_Reactor/WFMO_Reactor.dsw | 197 - examples/Reactor/WFMO_Reactor/Window_Messages.dsp | 59 - examples/Reactor/WFMO_Reactor/test_abandoned.cpp | 122 - examples/Reactor/WFMO_Reactor/test_apc.cpp | 103 - .../Reactor/WFMO_Reactor/test_console_input.cpp | 84 - .../WFMO_Reactor/test_directory_changes.cpp | 115 - examples/Reactor/WFMO_Reactor/test_exceptions.cpp | 98 - .../Reactor/WFMO_Reactor/test_handle_close.cpp | 300 - .../Reactor/WFMO_Reactor/test_multithreading.cpp | 246 - .../Reactor/WFMO_Reactor/test_network_events.cpp | 191 - .../WFMO_Reactor/test_prerun_state_changes.cpp | 61 - .../Reactor/WFMO_Reactor/test_registration.cpp | 151 - .../Reactor/WFMO_Reactor/test_registry_changes.cpp | 133 - examples/Reactor/WFMO_Reactor/test_removals.cpp | 103 - examples/Reactor/WFMO_Reactor/test_talker.cpp | 558 - examples/Reactor/WFMO_Reactor/test_timeouts.cpp | 80 - .../Reactor/WFMO_Reactor/test_window_messages.cpp | 85 - examples/Registry/Registry.dsp | 69 - examples/Registry/Registry.dsw | 41 - examples/Registry/test_registry_iterator.cpp | 133 - examples/Registry/test_registry_update.cpp | 149 - examples/Registry/update.dsp | 69 - examples/Service_Configurator/IPC-tests/Makefile | 24 - examples/Service_Configurator/IPC-tests/README | 112 - .../Service_Configurator/IPC-tests/client/Makefile | 376 - .../IPC-tests/client/broadcast_client_test.cpp | 57 - .../IPC-tests/client/local_data | 22 - .../IPC-tests/client/local_dgram_client_test.cpp | 122 - .../IPC-tests/client/local_fifo_client_test.cpp | 96 - .../IPC-tests/client/local_pipe_client_test.cpp | 145 - .../IPC-tests/client/local_spipe_client_test.cpp | 103 - .../IPC-tests/client/local_stream_client_test.cpp | 109 - .../IPC-tests/client/remote_data | 22 - .../IPC-tests/client/remote_data1 | 22 - .../IPC-tests/client/remote_data2 | 22 - .../IPC-tests/client/remote_data3 | 22 - .../IPC-tests/client/remote_data4 | 22 - .../IPC-tests/client/remote_dgram_client_test.cpp | 89 - .../client/remote_service_directory_test.cpp | 83 - .../IPC-tests/client/remote_stream_client_test.cpp | 129 - .../client/remote_thr_stream_client_test.cpp | 119 - .../IPC-tests/server/Handle_Broadcast.cpp | 38 - .../IPC-tests/server/Handle_Broadcast.h | 46 - .../IPC-tests/server/Handle_Broadcast.i | 109 - .../IPC-tests/server/Handle_L_CODgram.cpp | 18 - .../IPC-tests/server/Handle_L_CODgram.h | 49 - .../IPC-tests/server/Handle_L_CODgram.i | 119 - .../IPC-tests/server/Handle_L_Dgram.cpp | 17 - .../IPC-tests/server/Handle_L_Dgram.h | 49 - .../IPC-tests/server/Handle_L_Dgram.i | 108 - .../IPC-tests/server/Handle_L_FIFO.cpp | 38 - .../IPC-tests/server/Handle_L_FIFO.h | 47 - .../IPC-tests/server/Handle_L_FIFO.i | 97 - .../IPC-tests/server/Handle_L_Pipe.cpp | 64 - .../IPC-tests/server/Handle_L_Pipe.h | 54 - .../IPC-tests/server/Handle_L_Pipe.i | 92 - .../IPC-tests/server/Handle_L_SPIPE.cpp | 18 - .../IPC-tests/server/Handle_L_SPIPE.h | 50 - .../IPC-tests/server/Handle_L_SPIPE.i | 119 - .../IPC-tests/server/Handle_L_Stream.cpp | 21 - .../IPC-tests/server/Handle_L_Stream.h | 53 - .../IPC-tests/server/Handle_L_Stream.i | 146 - .../IPC-tests/server/Handle_R_Dgram.cpp | 38 - .../IPC-tests/server/Handle_R_Dgram.h | 45 - .../IPC-tests/server/Handle_R_Dgram.i | 105 - .../IPC-tests/server/Handle_R_Stream.cpp | 41 - .../IPC-tests/server/Handle_R_Stream.h | 51 - .../IPC-tests/server/Handle_R_Stream.i | 147 - .../IPC-tests/server/Handle_Thr_Stream.cpp | 221 - .../IPC-tests/server/Handle_Thr_Stream.h | 79 - .../IPC-tests/server/Handle_Thr_Stream.i | 1 - .../IPC-tests/server/Handle_Timeout.cpp | 36 - .../IPC-tests/server/Handle_Timeout.h | 41 - .../IPC-tests/server/Handle_Timeout.i | 84 - .../Service_Configurator/IPC-tests/server/Makefile | 1201 - .../IPC-tests/server/server_test.cpp | 42 - .../Service_Configurator/IPC-tests/server/svc.conf | 19 - examples/Service_Configurator/Makefile | 22 - examples/Service_Configurator/Misc/Makefile | 193 - examples/Service_Configurator/Misc/Misc.dsw | 44 - examples/Service_Configurator/Misc/README | 23 - examples/Service_Configurator/Misc/Timer.dsp | 107 - .../Service_Configurator/Misc/Timer_Service.cpp | 128 - examples/Service_Configurator/Misc/Timer_Service.h | 65 - examples/Service_Configurator/Misc/main.cpp | 65 - examples/Service_Configurator/Misc/main.dsp | 93 - examples/Service_Configurator/Misc/svc.conf1 | 8 - examples/Service_Configurator/Misc/svc.conf2 | 8 - examples/Shared_Malloc/Makefile | 464 - examples/Shared_Malloc/Malloc.cpp | 111 - examples/Shared_Malloc/Malloc.h | 29 - examples/Shared_Malloc/Options.cpp | 192 - examples/Shared_Malloc/Options.h | 85 - examples/Shared_Malloc/Shared_Malloc.dsw | 64 - examples/Shared_Malloc/malloc.dsp | 117 - examples/Shared_Malloc/multiple_mallocs.dsp | 103 - examples/Shared_Malloc/persistence.dsp | 103 - .../Shared_Malloc/position_independent_malloc.dsp | 117 - examples/Shared_Malloc/test_malloc.cpp | 221 - examples/Shared_Malloc/test_multiple_mallocs.cpp | 134 - examples/Shared_Malloc/test_persistence.cpp | 321 - .../test_position_independent_malloc.cpp | 203 - .../test_position_independent_malloc.h | 26 - examples/Shared_Memory/Makefile | 86 - examples/Shared_Memory/test_MM.cpp | 65 - examples/Shared_Memory/test_SV.cpp | 62 - examples/System_V_IPC/Makefile | 32 - examples/System_V_IPC/README | 13 - .../System_V_IPC/SV_Message_Queues/MQ_Client.cpp | 35 - .../System_V_IPC/SV_Message_Queues/MQ_Server.cpp | 62 - examples/System_V_IPC/SV_Message_Queues/Makefile | 213 - .../System_V_IPC/SV_Message_Queues/TMQ_Client.cpp | 49 - .../System_V_IPC/SV_Message_Queues/TMQ_Server.cpp | 67 - examples/System_V_IPC/SV_Message_Queues/test.h | 58 - examples/System_V_IPC/SV_Semaphores/Makefile | 151 - .../SV_Semaphores/Semaphore_Client.cpp | 31 - .../SV_Semaphores/Semaphore_Server.cpp | 42 - .../System_V_IPC/SV_Semaphores/Semaphore_Test.h | 11 - examples/System_V_IPC/SV_Semaphores/Semaphores.cpp | 94 - .../System_V_IPC/SV_Semaphores/Semaphores_1.cpp | 102 - .../System_V_IPC/SV_Semaphores/Semaphores_2.cpp | 123 - examples/System_V_IPC/SV_Shared_Memory/Makefile | 63 - .../SV_Shared_Memory/SV_Shared_Memory_Test.cpp | 62 - .../SV_Shared_Memory/SV_Shared_Memory_Test.h | 12 - examples/Threads/Makefile | 2255 -- examples/Threads/TSS_Data.h | 38 - examples/Threads/TSS_Obj.h | 38 - examples/Threads/TSS_Task.h | 42 - examples/Threads/auto_event.cpp | 120 - examples/Threads/barrier1.cpp | 82 - examples/Threads/barrier1.dsp | 69 - examples/Threads/barrier2.cpp | 317 - examples/Threads/barrier2.dsp | 69 - examples/Threads/cancel.cpp | 74 - examples/Threads/cancel.dsp | 69 - examples/Threads/future1.cpp | 430 - examples/Threads/future1.dsp | 69 - examples/Threads/future2.cpp | 552 - examples/Threads/future2.dsp | 69 - examples/Threads/manual_event.cpp | 116 - examples/Threads/manual_event.dsp | 70 - examples/Threads/process_manager.cpp | 294 - examples/Threads/process_mutex.cpp | 71 - examples/Threads/process_mutex.dsp | 70 - examples/Threads/process_semaphore.cpp | 60 - examples/Threads/process_semaphore.dsp | 70 - examples/Threads/reader_writer.cpp | 197 - examples/Threads/reader_writer.dsp | 70 - examples/Threads/recursive_mutex.cpp | 110 - examples/Threads/recursive_mutex.dsp | 70 - examples/Threads/task_five.cpp | 175 - examples/Threads/task_five.dsp | 56 - examples/Threads/task_four.cpp | 257 - examples/Threads/task_four.dsp | 69 - examples/Threads/task_one.cpp | 100 - examples/Threads/task_one.dsp | 69 - examples/Threads/task_three.cpp | 250 - examples/Threads/task_three.dsp | 70 - examples/Threads/task_two.cpp | 153 - examples/Threads/task_two.dsp | 69 - examples/Threads/test.dsp | 70 - examples/Threads/test.dsw | 281 - examples/Threads/test_auto_event.cpp | 113 - examples/Threads/test_barrier1.cpp | 84 - examples/Threads/test_barrier2.cpp | 269 - examples/Threads/test_cancel.cpp | 72 - examples/Threads/test_future1.cpp | 420 - examples/Threads/test_future2.cpp | 524 - examples/Threads/test_manual_event.cpp | 108 - examples/Threads/test_process_mutex.cpp | 68 - examples/Threads/test_process_semaphore.cpp | 56 - examples/Threads/test_reader_writer.cpp | 187 - examples/Threads/test_recursive_mutex.cpp | 108 - examples/Threads/test_task.cpp | 104 - examples/Threads/test_task_four.cpp | 248 - examples/Threads/test_task_one.cpp | 104 - examples/Threads/test_task_three.cpp | 230 - examples/Threads/test_task_two.cpp | 156 - examples/Threads/test_thread_manager.cpp | 104 - examples/Threads/test_thread_pool.cpp | 214 - examples/Threads/test_thread_specific.cpp | 219 - examples/Threads/test_token.cpp | 76 - examples/Threads/test_tss.cpp | 235 - examples/Threads/test_tss1.cpp | 164 - examples/Threads/test_tss2.cpp | 252 - examples/Threads/thread_manager.cpp | 105 - examples/Threads/thread_manager.dsp | 70 - examples/Threads/thread_pool.cpp | 212 - examples/Threads/thread_pool.dsp | 70 - examples/Threads/thread_specific.cpp | 225 - examples/Threads/thread_specific.dsp | 70 - examples/Threads/thread_specific.h | 50 - examples/Threads/token.cpp | 76 - examples/Threads/token.dsp | 69 - examples/Threads/tss1.cpp | 162 - examples/Threads/tss1.dsp | 69 - examples/Threads/tss2.cpp | 199 - examples/Threads/tss2.dsp | 69 - examples/Threads/wfmo.cpp | 123 - examples/Timer_Queue/Async_Timer_Queue_Test.cpp | 308 - examples/Timer_Queue/Async_Timer_Queue_Test.dsp | 104 - examples/Timer_Queue/Async_Timer_Queue_Test.h | 118 - examples/Timer_Queue/Driver.cpp | 155 - examples/Timer_Queue/Driver.h | 135 - examples/Timer_Queue/Makefile | 965 - examples/Timer_Queue/README | 26 - examples/Timer_Queue/Reactor_Timer_Queue_Test.cpp | 230 - examples/Timer_Queue/Reactor_Timer_Queue_Test.dsp | 95 - examples/Timer_Queue/Reactor_Timer_Queue_Test.h | 148 - examples/Timer_Queue/Thread_Timer_Queue_Test.cpp | 312 - examples/Timer_Queue/Thread_Timer_Queue_Test.dsp | 96 - examples/Timer_Queue/Thread_Timer_Queue_Test.h | 155 - examples/Timer_Queue/Timer_Queue.dsw | 41 - examples/Timer_Queue/main_async.cpp | 53 - examples/Timer_Queue/main_reactor.cpp | 57 - examples/Timer_Queue/main_thread.cpp | 52 - examples/Web_Crawler/Command_Processor.cpp | 137 - examples/Web_Crawler/Command_Processor.h | 98 - examples/Web_Crawler/HTTP_URL.cpp | 84 - examples/Web_Crawler/HTTP_URL.h | 64 - examples/Web_Crawler/Iterators.cpp | 162 - examples/Web_Crawler/Iterators.h | 117 - examples/Web_Crawler/Makefile | 56 - examples/Web_Crawler/Mem_Map_Stream.cpp | 244 - examples/Web_Crawler/Mem_Map_Stream.h | 188 - examples/Web_Crawler/Options.cpp | 175 - examples/Web_Crawler/Options.h | 123 - examples/Web_Crawler/README | 25 - examples/Web_Crawler/URL.cpp | 39 - examples/Web_Crawler/URL.h | 78 - examples/Web_Crawler/URL_Addr.cpp | 229 - examples/Web_Crawler/URL_Addr.h | 108 - examples/Web_Crawler/URL_Status.cpp | 40 - examples/Web_Crawler/URL_Status.h | 61 - examples/Web_Crawler/URL_Visitor.cpp | 660 - examples/Web_Crawler/URL_Visitor.h | 379 - examples/Web_Crawler/URL_Visitor_Factory.cpp | 46 - examples/Web_Crawler/URL_Visitor_Factory.h | 70 - examples/Web_Crawler/Web_Crawler.cpp | 95 - examples/Web_Crawler/Web_Crawler.dsp | 216 - examples/Web_Crawler/Web_Crawler.dsw | 29 - examples/Web_Crawler/Web_Crawler.h | 62 - examples/Web_Crawler/main.cpp | 49 - include/makeinclude/ace_flags.bor | 30 - include/makeinclude/build_core_exe.bor | 9 - include/makeinclude/build_core_library.bor | 9 - include/makeinclude/build_dll.bor | 52 - include/makeinclude/build_example.bor | 12 - include/makeinclude/build_exe.bor | 54 - include/makeinclude/build_lib.bor | 39 - include/makeinclude/build_library.bor | 10 - include/makeinclude/compiler.bor | 126 - include/makeinclude/decorator.bor | 48 - include/makeinclude/macros.GNU | 22 - include/makeinclude/make_flags.bor | 17 - include/makeinclude/outputdir.bor | 58 - include/makeinclude/platform_aix.GNU | 3 - include/makeinclude/platform_aix4.2.GNU | 3 - include/makeinclude/platform_aix4_cset++.GNU | 90 - include/makeinclude/platform_aix4_g++.GNU | 63 - include/makeinclude/platform_aix_g++.GNU | 31 - include/makeinclude/platform_chorus.GNU | 110 - include/makeinclude/platform_chorus_ghs.GNU | 77 - include/makeinclude/platform_cray.GNU | 50 - include/makeinclude/platform_dgux4_epc.GNU | 23 - include/makeinclude/platform_dgux4_ghs.GNU | 27 - include/makeinclude/platform_freebsd.GNU | 33 - include/makeinclude/platform_freebsd_pthread.GNU | 8 - include/makeinclude/platform_hpux.GNU | 28 - include/makeinclude/platform_hpux_aCC.GNU | 129 - include/makeinclude/platform_hpux_gcc.GNU | 62 - include/makeinclude/platform_hpux_orbix.GNU | 30 - include/makeinclude/platform_irix5.2.GNU | 21 - include/makeinclude/platform_irix5.3_g++.GNU | 21 - include/makeinclude/platform_irix5.3_sgic++.GNU | 26 - include/makeinclude/platform_irix6.x_common.GNU | 13 - include/makeinclude/platform_irix6.x_g++.GNU | 30 - include/makeinclude/platform_irix6.x_kcc.GNU | 35 - include/makeinclude/platform_irix6.x_sgic++.GNU | 64 - include/makeinclude/platform_linux.GNU | 36 - include/makeinclude/platform_linux_kcc.GNU | 39 - include/makeinclude/platform_linux_lxpthread.GNU | 84 - include/makeinclude/platform_linux_lxpthreads.GNU | 84 - include/makeinclude/platform_linux_pthread.GNU | 31 - include/makeinclude/platform_lynxos.GNU | 95 - include/makeinclude/platform_m88k.GNU | 30 - include/makeinclude/platform_mvs.GNU | 34 - include/makeinclude/platform_netbsd.GNU | 28 - include/makeinclude/platform_osf1_3.2.GNU | 27 - include/makeinclude/platform_osf1_4.0.GNU | 73 - include/makeinclude/platform_osf1_4.0_g++.GNU | 25 - include/makeinclude/platform_osf1_4.0_kcc.GNU | 37 - include/makeinclude/platform_osf1_4.0_rcc.GNU | 25 - include/makeinclude/platform_psos_diab.GNU | 189 - include/makeinclude/platform_psos_diab_ppc.GNU | 200 - include/makeinclude/platform_psos_tm.GNU | 47 - include/makeinclude/platform_psosim_g++.GNU | 57 - include/makeinclude/platform_qnx_neutrino.GNU | 35 - include/makeinclude/platform_sco-nothread.GNU | 22 - .../platform_sco5.0.0-CC-fsu-pthread.GNU | 36 - .../makeinclude/platform_sco5.0.0-fsu-pthread.GNU | 46 - .../makeinclude/platform_sco5.0.0-mit-pthread.GNU | 35 - include/makeinclude/platform_sco5.0.0-nothread.GNU | 33 - include/makeinclude/platform_sunos4_g++.GNU | 26 - include/makeinclude/platform_sunos4_lucid.GNU | 21 - include/makeinclude/platform_sunos4_sunc++3.x.GNU | 27 - include/makeinclude/platform_sunos4_sunc++4.x.GNU | 24 - .../platform_sunos4_sunc++4.x_orbix.GNU | 25 - .../platform_sunos5.6_sparc_sunc++_4.2.GNU | 3 - include/makeinclude/platform_sunos5_centerline.GNU | 22 - .../platform_sunos5_centerline_orbix.GNU | 23 - include/makeinclude/platform_sunos5_egcs.GNU | 13 - include/makeinclude/platform_sunos5_g++.GNU | 49 - include/makeinclude/platform_sunos5_ghs.GNU | 38 - include/makeinclude/platform_sunos5_kcc.GNU | 76 - include/makeinclude/platform_sunos5_sunc++.GNU | 187 - .../makeinclude/platform_sunos5_sunc++_orbix.GNU | 7 - include/makeinclude/platform_tandem.GNU | 93 - include/makeinclude/platform_tru64_cxx.GNU | 48 - include/makeinclude/platform_tru64_g++.GNU | 30 - include/makeinclude/platform_unixware_g++.GNU | 24 - include/makeinclude/platform_vxworks5.x_diab.GNU | 146 - include/makeinclude/platform_vxworks5.x_g++.GNU | 216 - include/makeinclude/platform_vxworks5.x_ghs.GNU | 88 - include/makeinclude/rules.bin.GNU | 28 - include/makeinclude/rules.common.GNU | 17 - include/makeinclude/rules.lib.GNU | 163 - include/makeinclude/rules.local.GNU | 227 - include/makeinclude/rules.nested.GNU | 14 - include/makeinclude/rules.nolocal.GNU | 8 - include/makeinclude/rules.nonested.GNU | 8 - include/makeinclude/wrapper_macros.GNU | 508 - install-sh | 251 - java/ChangeLog | 122 - java/ImageProcessing/ImageProcessing.dsp | 253 - java/ImageProcessing/ImageProcessing.dsw | 29 - java/ImageProcessing/filters/Assert.java | 33 - java/ImageProcessing/filters/BleachFilter.java | 65 - java/ImageProcessing/filters/BlurFilter.java | 95 - java/ImageProcessing/filters/DarkenFilter.java | 48 - java/ImageProcessing/filters/DeSpeckleFilter.java | 123 - java/ImageProcessing/filters/DissolveFilter.java | 52 - java/ImageProcessing/filters/EdgeDetectFilter.java | 250 - java/ImageProcessing/filters/EmbossFilter.java | 86 - java/ImageProcessing/filters/Makefile | 36 - java/ImageProcessing/filters/MedFilter.java | 6 - java/ImageProcessing/filters/OilPaintFilter.java | 97 - java/ImageProcessing/filters/PixelizeFilter.java | 117 - java/ImageProcessing/filters/RandomizeFilter.java | 36 - java/ImageProcessing/filters/RotateFilter.java | 358 - java/ImageProcessing/filters/SharpenFilter.java | 272 - java/ImageProcessing/filters/SpatialFilter.java | 213 - java/ImageProcessing/filters/SpreadFilter.java | 130 - java/ImageProcessing/filters/Timer.java | 23 - java/ImageProcessing/framework/BaseButton.java | 234 - .../ImageProcessing/framework/BenchmarkApplet.java | 622 - java/ImageProcessing/framework/DialogManager.java | 277 - java/ImageProcessing/framework/DialogType.java | 11 - java/ImageProcessing/framework/FileBrowser.java | 173 - java/ImageProcessing/framework/FilePanel.java | 161 - java/ImageProcessing/framework/FilterTest.java | 62 - java/ImageProcessing/framework/GIFHandler.java | 75 - java/ImageProcessing/framework/GifEncoder.java | 693 - java/ImageProcessing/framework/Hierarchy.java | 347 - .../framework/HierarchyAdapter.java | 34 - java/ImageProcessing/framework/Icon.java | 70 - java/ImageProcessing/framework/ImageApp.java | 303 - .../framework/ImageByteCounter.java | 94 - java/ImageProcessing/framework/ImageCanvas.java | 166 - java/ImageProcessing/framework/ImageEncoder.java | 271 - java/ImageProcessing/framework/ImageProcessor.java | 111 - java/ImageProcessing/framework/ImageSender.java | 128 - java/ImageProcessing/framework/IntHashtable.java | 396 - java/ImageProcessing/framework/ListFiles.java | 167 - java/ImageProcessing/framework/LoadURLFrame.java | 142 - java/ImageProcessing/framework/Makefile | 45 - java/ImageProcessing/framework/MedJava.html | 15 - java/ImageProcessing/framework/Options.java | 25 - java/ImageProcessing/framework/SaveURLFrame.java | 133 - java/ImageProcessing/framework/Separator.java | 90 - java/ImageProcessing/framework/ServerHandler.java | 50 - java/ImageProcessing/framework/ServerTest.java | 67 - java/ImageProcessing/framework/StatusDisplay.java | 23 - .../ImageProcessing/framework/StatusIndicator.java | 70 - java/ImageProcessing/framework/TestHandler.java | 149 - java/ImageProcessing/framework/Tester.java | 148 - java/ImageProcessing/framework/doc01.gif | Bin 223 -> 0 bytes java/ImageProcessing/framework/file03.gif | Bin 267 -> 0 bytes java/ImageProcessing/framework/filter.conf | 15 - java/ImageProcessing/framework/help.conf | 216 - java/ImageProcessing/framework/test.html | 19 - java/ImageProcessing/framework/testFilter.conf | 15 - java/JACE/ASX/IOCntlCmds.java | 38 - java/JACE/ASX/IOCntlMsg.java | 124 - java/JACE/ASX/MessageBlock.java | 447 - java/JACE/ASX/MessageQueue.java | 633 - java/JACE/ASX/MessageType.java | 102 - java/JACE/ASX/Module.java | 246 - java/JACE/ASX/Stream.java | 436 - java/JACE/ASX/StreamHead.java | 123 - java/JACE/ASX/StreamTail.java | 114 - java/JACE/ASX/Task.java | 443 - java/JACE/ASX/TaskFlags.java | 49 - java/JACE/ASX/ThruTask.java | 44 - java/JACE/ASX/TimeValue.java | 296 - java/JACE/ASX/TimedWait.java | 157 - java/JACE/ASX/TimeoutException.java | 37 - java/JACE/ASX/package.html | 11 - java/JACE/Concurrency/AbstractLock.java | 269 - java/JACE/Concurrency/Condition.java | 124 - java/JACE/Concurrency/LockAdapter.java | 262 - java/JACE/Concurrency/LockException.java | 28 - java/JACE/Concurrency/Mutex.java | 239 - java/JACE/Concurrency/RWMutex.java | 268 - java/JACE/Concurrency/RenewObject.java | 36 - java/JACE/Concurrency/Semaphore.java | 263 - java/JACE/Concurrency/ThreadManager.java | 113 - java/JACE/Concurrency/Token.java | 301 - java/JACE/Concurrency/WaitObject.java | 39 - java/JACE/Concurrency/package.html | 15 - java/JACE/Connection/AcceptStrategy.java | 87 - java/JACE/Connection/Acceptor.java | 215 - java/JACE/Connection/ActivateStrategy.java | 40 - java/JACE/Connection/Blob.java | 114 - java/JACE/Connection/BlobHandler.java | 35 - java/JACE/Connection/BlobReader.java | 108 - java/JACE/Connection/BlobWriter.java | 224 - java/JACE/Connection/Connector.java | 148 - java/JACE/Connection/CreationStrategy.java | 57 - java/JACE/Connection/HTTPHelper.java | 182 - java/JACE/Connection/StrategyAcceptor.java | 174 - java/JACE/Connection/SvcHandler.java | 101 - java/JACE/Connection/package.html | 7 - java/JACE/Makefile | 234 - java/JACE/Misc/GetOpt.java | 171 - java/JACE/Misc/package.html | 6 - java/JACE/OS/ACE.java | 156 - java/JACE/OS/OS.java | 65 - java/JACE/OS/package.html | 6 - java/JACE/Reactor/EventHandler.java | 43 - java/JACE/Reactor/TimerQueue.java | 437 - java/JACE/Reactor/package.html | 6 - java/JACE/SOCK_SAP/INETAddr.java | 96 - java/JACE/SOCK_SAP/SOCKAcceptor.java | 113 - java/JACE/SOCK_SAP/SOCKConnector.java | 73 - java/JACE/SOCK_SAP/SOCKStream.java | 227 - java/JACE/SOCK_SAP/package.html | 8 - java/JACE/ServiceConfigurator/Service.java | 96 - java/JACE/ServiceConfigurator/ServiceConfig.java | 482 - java/JACE/ServiceConfigurator/ServiceLoader.java | 254 - java/JACE/ServiceConfigurator/ServiceObject.java | 130 - .../ServiceConfigurator/ServiceRepository.java | 274 - java/JACE/ServiceConfigurator/package.html | 10 - java/JACE/Timers/ProfileTimer.java | 46 - java/JACE/Timers/package.html | 8 - java/JACE/makebat.zip | Bin 1326 -> 0 bytes java/JACE/netsvcs/Handler.java | 185 - java/JACE/netsvcs/Logger/LogRecord.java | 290 - java/JACE/netsvcs/Logger/LoggingStrategy.java | 35 - .../JACE/netsvcs/Logger/ServerLoggingAcceptor.java | 147 - java/JACE/netsvcs/Logger/ServerLoggingHandler.java | 60 - java/JACE/netsvcs/Logger/StderrStrategy.java | 36 - java/JACE/netsvcs/Logger/c.bat | 2 - java/JACE/netsvcs/Logger/package.html | 17 - java/JACE/netsvcs/Naming/NameAcceptor.java | 313 - java/JACE/netsvcs/Naming/NameHandler.java | 473 - java/JACE/netsvcs/Naming/NameProxy.java | 405 - java/JACE/netsvcs/Naming/NameReply.java | 169 - java/JACE/netsvcs/Naming/NameRequest.java | 373 - java/JACE/netsvcs/Naming/c.bat | 2 - java/JACE/netsvcs/Naming/package.html | 11 - java/JACE/netsvcs/Server.java | 356 - java/JACE/netsvcs/Time/TSClerkHandler.java | 195 - java/JACE/netsvcs/Time/TSClerkProcessor.java | 307 - java/JACE/netsvcs/Time/TSServerAcceptor.java | 116 - java/JACE/netsvcs/Time/TSServerHandler.java | 53 - java/JACE/netsvcs/Time/TimeInfo.java | 90 - java/JACE/netsvcs/Time/TimeRequest.java | 121 - java/JACE/netsvcs/Time/c.bat | 1 - java/JACE/netsvcs/Time/package.html | 10 - java/JACE/netsvcs/Time/r.bat | 1 - java/JACE/netsvcs/Token/LockHandler.java | 38 - java/JACE/netsvcs/Token/LockHandlerAdapter.java | 380 - java/JACE/netsvcs/Token/LockOperations.java | 16 - java/JACE/netsvcs/Token/LockTypes.java | 19 - java/JACE/netsvcs/Token/MutexHandler.java | 51 - java/JACE/netsvcs/Token/RWMutexHandler.java | 54 - java/JACE/netsvcs/Token/RemoteLock.java | 543 - java/JACE/netsvcs/Token/RemoteMutex.java | 28 - java/JACE/netsvcs/Token/RemoteRWMutex.java | 29 - java/JACE/netsvcs/Token/TokenAcceptor.java | 353 - java/JACE/netsvcs/Token/TokenReply.java | 171 - java/JACE/netsvcs/Token/TokenRequest.java | 426 - java/JACE/netsvcs/Token/TokenRequestHandler.java | 180 - java/JACE/netsvcs/Token/package.html | 16 - java/JACE/netsvcs/package.html | 11 - java/JACE/overview.html | 84 - java/JACE/package.html | 32 - java/JACE/tests/ASX/BufferStreamTest.java | 189 - java/JACE/tests/ASX/MessageQueueTest.java | 54 - java/JACE/tests/ASX/PriorityBufferTest.java | 118 - java/JACE/tests/ASX/TaskTest.java | 95 - java/JACE/tests/ASX/ThreadPoolTest.java | 187 - .../JACE/tests/Concurrency/Condition/Consumer.java | 75 - .../Concurrency/Condition/JoinableThreadGroup.java | 24 - .../JACE/tests/Concurrency/Condition/Producer.java | 70 - .../tests/Concurrency/Condition/QueueTest.java | 68 - .../Concurrency/Condition/SimpleMessageQueue.java | 86 - java/JACE/tests/Concurrency/IterationTest.java | 235 - java/JACE/tests/Concurrency/RWMutexTest.java | 137 - java/JACE/tests/Concurrency/TimingTest.java | 290 - java/JACE/tests/Concurrency/TokenTest.java | 95 - java/JACE/tests/Connection/AcceptorTest.java | 83 - java/JACE/tests/Connection/ClientHandler.java | 77 - java/JACE/tests/Connection/ConnectorTest.java | 78 - java/JACE/tests/Connection/HTTPHelperTest.java | 34 - java/JACE/tests/Connection/ServerHandler.java | 68 - java/JACE/tests/Makefile | 115 - java/JACE/tests/Misc/ParseArgsTest.java | 48 - java/JACE/tests/Reactor/TimeValueTest.java | 52 - java/JACE/tests/Reactor/TimerQueueTest.java | 84 - java/JACE/tests/SOCK_SAP/SOCKAcceptorTest.java | 110 - java/JACE/tests/SOCK_SAP/SOCKConnectorTest.java | 97 - java/JACE/tests/ServiceConfigurator/Main.java | 113 - java/JACE/tests/ServiceConfigurator/svc.conf | 4 - java/JACE/tests/netsvcs/Logger/LoggerTest.java | 115 - java/JACE/tests/netsvcs/Naming/ClientTest.java | 107 - java/JACE/tests/netsvcs/Time/TSClient.java | 37 - java/JACE/tests/netsvcs/Token/ProxyClientTest.java | 200 - java/MSVJProjects.zip | Bin 35698 -> 0 bytes java/README | 40 - java/VERSION | 5 - java/apps/NexusII/README | 58 - java/apps/NexusII/classes/ClientHandler.class | Bin 7017 -> 0 bytes java/apps/NexusII/classes/FrameHandler.class | Bin 851 -> 0 bytes java/apps/NexusII/classes/ImageCanvas.class | Bin 2771 -> 0 bytes java/apps/NexusII/classes/NexusClientApplet.class | Bin 9297 -> 0 bytes java/apps/NexusII/classes/NexusIIserver.class | Bin 1566 -> 0 bytes java/apps/NexusII/classes/Room.class | Bin 2138 -> 0 bytes java/apps/NexusII/classes/RoomFactory.class | Bin 1686 -> 0 bytes java/apps/NexusII/classes/RoomFrame.class | Bin 3878 -> 0 bytes java/apps/NexusII/classes/RoomThread.class | Bin 1076 -> 0 bytes java/apps/NexusII/classes/awtCommand/CApplet.class | Bin 2239 -> 0 bytes java/apps/NexusII/classes/awtCommand/CApplet.java | 199 - java/apps/NexusII/classes/awtCommand/CButton.class | Bin 698 -> 0 bytes java/apps/NexusII/classes/awtCommand/CButton.java | 41 - java/apps/NexusII/classes/awtCommand/CCanvas.class | Bin 4128 -> 0 bytes java/apps/NexusII/classes/awtCommand/CCanvas.java | 381 - java/apps/NexusII/classes/awtCommand/CFrame.class | Bin 5174 -> 0 bytes java/apps/NexusII/classes/awtCommand/CFrame.java | 486 - java/apps/NexusII/classes/awtCommand/CList.class | Bin 1236 -> 0 bytes java/apps/NexusII/classes/awtCommand/CList.java | 96 - java/apps/NexusII/classes/awtCommand/CPanel.class | Bin 4125 -> 0 bytes java/apps/NexusII/classes/awtCommand/CPanel.java | 381 - .../NexusII/classes/awtCommand/CTextArea.class | Bin 1048 -> 0 bytes .../apps/NexusII/classes/awtCommand/CTextArea.java | 93 - .../NexusII/classes/awtCommand/CTextField.class | Bin 1225 -> 0 bytes .../NexusII/classes/awtCommand/CTextField.java | 110 - java/apps/NexusII/classes/awtCommand/Command.class | Bin 253 -> 0 bytes java/apps/NexusII/classes/awtCommand/Command.java | 25 - java/apps/NexusII/classes/commandHandler.class | Bin 1310 -> 0 bytes java/apps/NexusII/classes/commandParser.class | Bin 1974 -> 0 bytes java/apps/NexusII/classes/connectionHandler.class | Bin 4632 -> 0 bytes java/apps/NexusII/classes/joinHandler.class | Bin 3229 -> 0 bytes java/apps/NexusII/classes/roomHandler.class | Bin 2371 -> 0 bytes java/apps/NexusII/classes/textHandler.class | Bin 2227 -> 0 bytes java/apps/NexusII/src/Consumer.java | 74 - java/apps/NexusII/src/MT_Bounded_Queue.java | 226 - java/apps/NexusII/src/MT_Bounded_Queue_Group.java | 79 - java/apps/NexusII/src/NexusClientApplet.java | 494 - java/apps/NexusII/src/NexusIIserver.java | 280 - java/apps/NexusII/src/Producer.java | 87 - java/apps/NexusII/src/Room.java | 97 - java/apps/NexusII/src/RoomFrame.java | 297 - java/apps/NexusII/src/RoomSpace.java | 110 - java/apps/NexusII/src/Timed_Wait.java | 86 - java/apps/NexusII/src/Timer.java | 31 - java/apps/NexusII/src/commandHandler.java | 44 - java/apps/NexusII/src/commandParser.java | 124 - java/apps/NexusII/src/connectionHandler.java | 236 - java/apps/NexusII/src/consts.java | 40 - java/apps/NexusII/src/dataPacket.java | 124 - java/apps/NexusII/src/joinHandler.java | 181 - java/apps/NexusII/src/makefile | 15 - java/apps/NexusII/src/nexusDemuxThread.java | 97 - java/apps/NexusII/src/roomHandler.java | 125 - java/apps/NexusII/src/socketReaderThread.java | 126 - java/apps/NexusII/src/socketWriterThread.java | 119 - java/apps/NexusII/src/url_to_url.java | 33 - java/apps/NexusII/start | 27 - java/apps/NexusII/start.html | 3 - java/classes/README.TXT | 2 - java/doc/images/GridBagEx.gif | Bin 2453 -> 0 bytes java/doc/images/OpenBookIcon.gif | Bin 2241 -> 0 bytes java/doc/images/blue-ball-small.gif | Bin 255 -> 0 bytes java/doc/images/blue-ball.gif | Bin 925 -> 0 bytes java/doc/images/class-index.gif | Bin 1497 -> 0 bytes java/doc/images/constructor-index.gif | Bin 1711 -> 0 bytes java/doc/images/constructors.gif | Bin 1565 -> 0 bytes java/doc/images/cyan-ball-small.gif | Bin 255 -> 0 bytes java/doc/images/cyan-ball.gif | Bin 925 -> 0 bytes java/doc/images/error-index.gif | Bin 1438 -> 0 bytes java/doc/images/exception-index.gif | Bin 1707 -> 0 bytes java/doc/images/green-ball-small.gif | Bin 102 -> 0 bytes java/doc/images/green-ball.gif | Bin 886 -> 0 bytes java/doc/images/interface-index.gif | Bin 1648 -> 0 bytes java/doc/images/magenta-ball-small.gif | Bin 104 -> 0 bytes java/doc/images/magenta-ball.gif | Bin 896 -> 0 bytes java/doc/images/method-index.gif | Bin 1588 -> 0 bytes java/doc/images/methods.gif | Bin 1403 -> 0 bytes java/doc/images/package-index.gif | Bin 1607 -> 0 bytes java/doc/images/red-ball-small.gif | Bin 255 -> 0 bytes java/doc/images/red-ball.gif | Bin 527 -> 0 bytes java/doc/images/variable-index.gif | Bin 1576 -> 0 bytes java/doc/images/variables.gif | Bin 1380 -> 0 bytes java/doc/images/yellow-ball-small.gif | Bin 255 -> 0 bytes java/doc/images/yellow-ball.gif | Bin 925 -> 0 bytes java/examples/Logger/README | 29 - java/examples/Logger/simple-server/LogRecord.java | 145 - .../Logger/simple-server/LoggerConstants.java | 7 - .../Logger/simple-server/LoggingAcceptor.java | 33 - .../Logger/simple-server/LoggingClient.java | 108 - .../Logger/simple-server/LoggingHandler.java | 121 - java/examples/Logger/simple-server/Makefile | 34 - java/examples/Logger/simple-server/README | 25 - .../Logger/simple-server/SimpleLogger.java | 44 - java/gjt/Assert.java | 33 - java/gjt/Bargauge.java | 80 - java/gjt/Border.java | 105 - java/gjt/Box.java | 81 - java/gjt/BulletinLayout.java | 100 - java/gjt/ButtonPanel.java | 51 - java/gjt/CardPanel.java | 48 - java/gjt/ChoiceCardPanel.java | 53 - java/gjt/ColumnLayout.java | 154 - java/gjt/ComponentScroller.java | 42 - java/gjt/DialogClient.java | 20 - java/gjt/DrawingPanel.java | 72 - java/gjt/DrawnRectangle.java | 136 - java/gjt/EtchedBorder.java | 59 - java/gjt/EtchedRectangle.java | 97 - java/gjt/Etching.java | 22 - java/gjt/ExclusiveImageButtonPanel.java | 47 - java/gjt/FontDialog.java | 362 - java/gjt/GJT.DSP | 456 - java/gjt/GJT.DSW | 29 - java/gjt/GJTDialog.java | 51 - java/gjt/IconCardPanel.java | 55 - java/gjt/ImageButton.java | 209 - java/gjt/ImageButtonController.java | 79 - java/gjt/ImageButtonEvent.java | 103 - java/gjt/ImageButtonPanel.java | 106 - java/gjt/ImageButtonPanelController.java | 47 - java/gjt/ImageCanvas.java | 31 - java/gjt/ImageScroller.java | 62 - java/gjt/LabelCanvas.java | 93 - java/gjt/Makefile | 67 - java/gjt/MessageDialog.java | 77 - java/gjt/MouseController.java | 32 - java/gjt/Orientation.java | 87 - java/gjt/ProgressDialog.java | 67 - java/gjt/QuestionDialog.java | 130 - java/gjt/RadioImageButtonPanelController.java | 45 - java/gjt/RowLayout.java | 153 - java/gjt/Scroller.java | 154 - java/gjt/ScrollerLayout.java | 160 - java/gjt/SelectionEvent.java | 82 - java/gjt/Separator.java | 90 - java/gjt/SpringyImageButtonController.java | 54 - java/gjt/StateButton.java | 45 - java/gjt/StateButtonController.java | 27 - java/gjt/StickyImageButtonController.java | 87 - java/gjt/Stopwatch.java | 94 - java/gjt/StopwatchClient.java | 14 - java/gjt/ThreeDBorder.java | 53 - java/gjt/ThreeDBorderStyle.java | 24 - java/gjt/ThreeDRectangle.java | 105 - java/gjt/Toolbar.java | 58 - java/gjt/Util.java | 69 - java/gjt/YesNoDialog.java | 80 - java/gjt/animation/CollisionArena.java | 39 - java/gjt/animation/CollisionDetector.java | 24 - java/gjt/animation/EdgeCollisionDetector.java | 53 - java/gjt/animation/Playfield.java | 140 - java/gjt/animation/Sequence.java | 119 - java/gjt/animation/Sprite.java | 191 - java/gjt/animation/SpriteCollisionDetector.java | 45 - java/gjt/image/BleachImageFilter.java | 53 - java/gjt/image/DissolveFilter.java | 48 - java/gjt/image/ImageDissolver.java | 132 - java/gjt/rubberband/Rubberband.java | 100 - java/gjt/rubberband/RubberbandEllipse.java | 32 - java/gjt/rubberband/RubberbandLine.java | 25 - java/gjt/rubberband/RubberbandPanel.java | 38 - java/gjt/rubberband/RubberbandRectangle.java | 29 - java/gjt/test/AttributesPanel.java | 78 - java/gjt/test/BargaugeTest.java | 130 - java/gjt/test/BleachImageFilterTest.java | 86 - java/gjt/test/BorderTest.java | 202 - java/gjt/test/BoxTest.java | 100 - java/gjt/test/BumpAnimationTest.java | 107 - java/gjt/test/ChoiceCardPanelTest.java | 34 - java/gjt/test/ColumnLayoutTest.java | 126 - java/gjt/test/ComponentScrollerTest.java | 205 - java/gjt/test/ConnectionsPanel.java | 9 - java/gjt/test/DialogTest.java | 140 - java/gjt/test/DrawnRectangleTest.java | 119 - java/gjt/test/FontDialogTest.java | 95 - java/gjt/test/IconCardPanelTest.java | 47 - java/gjt/test/ImageButtonTest.java | 130 - java/gjt/test/ImageDissolverTest.java | 69 - java/gjt/test/ImageScrollerTest.java | 55 - java/gjt/test/LabelCanvasTest.java | 75 - java/gjt/test/MessageDialogTest.java | 50 - java/gjt/test/OccupationOracle.java | 334 - java/gjt/test/RowLayoutTest.java | 124 - java/gjt/test/RubberbandTest.java | 112 - java/gjt/test/SeparatorTest.java | 64 - java/gjt/test/SimpleAnimationTest.java | 87 - java/gjt/test/SimpleBargaugeTest.java | 61 - java/gjt/test/StateButtonTest.java | 41 - java/gjt/test/TenPixelBorder.java | 44 - java/gjt/test/TitledPanel.java | 22 - java/gjt/test/ToolbarTest.java | 111 - java/gjt/test/TwoDrinkersAnimationTest.java | 130 - java/gjt/test/UnitTest.java | 46 - java/java-ace.gif | Bin 11028 -> 0 bytes java/netsvcs/Logger/DefaultLMR.java | 36 - java/netsvcs/Logger/LogMessageReceiver.java | 33 - java/netsvcs/Logger/LogRecord.java | 188 - java/netsvcs/Logger/Makefile | 23 - java/netsvcs/Logger/ServerLoggingAcceptor.java | 171 - java/netsvcs/Logger/ServerLoggingHandler.java | 105 - java/netsvcs/Naming/Makefile | 24 - java/netsvcs/Naming/NameAcceptor.java | 306 - java/netsvcs/Naming/NameHandler.java | 521 - java/netsvcs/Naming/NameProxy.java | 351 - java/netsvcs/Naming/NameReply.java | 145 - java/netsvcs/Naming/NameRequest.java | 331 - java/netsvcs/Time/Clerk.java | 23 - java/netsvcs/Time/Makefile | 26 - java/netsvcs/Time/Server.java | 23 - java/netsvcs/Time/TSClerkHandler.java | 296 - java/netsvcs/Time/TSClerkProcessor.java | 267 - java/netsvcs/Time/TSRequestAcceptor.java | 142 - java/netsvcs/Time/TSRequestHandler.java | 106 - java/netsvcs/Time/TSServerAcceptor.java | 100 - java/netsvcs/Time/TSServerHandler.java | 99 - java/src/ACE.java | 164 - java/src/AcceptStrategy.java | 89 - java/src/Acceptor.java | 216 - java/src/ActivateStrategy.java | 43 - java/src/AddServiceObjectNode.java | 54 - java/src/Blob.java | 94 - java/src/BlobHandler.java | 35 - java/src/BlobReader.java | 104 - java/src/BlobWriter.java | 220 - java/src/ClassNameGenerator.java | 181 - java/src/ClassReader.java | 146 - java/src/Condition.java | 122 - java/src/Connector.java | 157 - java/src/CreationStrategy.java | 64 - java/src/EventHandler.java | 53 - java/src/GetOpt.java | 150 - java/src/HTTPHelper.java | 84 - java/src/INETAddr.java | 99 - java/src/IOCntlCmds.java | 34 - java/src/IOCntlMsg.java | 128 - java/src/JACE.DSP | 292 - java/src/JACE.DSW | 29 - java/src/Makefile | 153 - java/src/MessageBlock.java | 453 - java/src/MessageQueue.java | 639 - java/src/MessageType.java | 110 - java/src/Module.java | 253 - java/src/Mutex.java | 109 - java/src/OS.java | 72 - java/src/ParseNode.java | 69 - java/src/ProfileTimer.java | 48 - java/src/README | 19 - java/src/RWMutex.java | 174 - java/src/RemoveNode.java | 35 - java/src/ResumeNode.java | 34 - java/src/SOCKAcceptor.java | 115 - java/src/SOCKConnector.java | 75 - java/src/SOCKStream.java | 218 - java/src/Semaphore.java | 103 - java/src/ServiceConfig.java | 375 - java/src/ServiceLoader.java | 260 - java/src/ServiceObject.java | 80 - java/src/ServiceObjectRecord.java | 33 - java/src/ServiceRecord.java | 253 - java/src/ServiceRepository.java | 189 - java/src/StrategyAcceptor.java | 156 - java/src/Stream.java | 440 - java/src/StreamHead.java | 127 - java/src/StreamTail.java | 119 - java/src/SuspendNode.java | 34 - java/src/SvcHandler.java | 85 - java/src/Task.java | 439 - java/src/TaskFlags.java | 44 - java/src/ThreadManager.java | 109 - java/src/ThruTask.java | 48 - java/src/TimeValue.java | 285 - java/src/TimedWait.java | 150 - java/src/TimeoutException.java | 34 - java/src/TimerQueue.java | 432 - java/src/Token.java | 336 - java/tests/ASX/BufferStreamTest.dsp | 73 - java/tests/ASX/BufferStreamTest.java | 185 - java/tests/ASX/Makefile | 26 - java/tests/ASX/MessageQueueTest.dsp | 73 - java/tests/ASX/MessageQueueTest.java | 50 - java/tests/ASX/PriorityBufferTest.dsp | 73 - java/tests/ASX/PriorityBufferTest.java | 116 - java/tests/ASX/TaskTest.dsp | 72 - java/tests/ASX/TaskTest.java | 86 - java/tests/ASX/ThreadPoolTest.dsp | 73 - java/tests/ASX/ThreadPoolTest.java | 185 - java/tests/Concurrency/Condition/Condition.dsp | 88 - java/tests/Concurrency/Condition/Consumer.java | 73 - .../Concurrency/Condition/JoinableThreadGroup.java | 24 - java/tests/Concurrency/Condition/Makefile | 25 - java/tests/Concurrency/Condition/Producer.java | 67 - java/tests/Concurrency/Condition/QueueTest.java | 64 - .../Concurrency/Condition/SimpleMessageQueue.java | 86 - java/tests/Concurrency/Makefile | 23 - java/tests/Concurrency/MutexTest.dsp | 72 - java/tests/Concurrency/MutexTest.java | 154 - java/tests/Concurrency/RWMutexTest.dsp | 73 - java/tests/Concurrency/RWMutexTest.java | 93 - java/tests/Concurrency/SemaphoreTest.dsp | 73 - java/tests/Concurrency/SemaphoreTest.java | 102 - java/tests/Concurrency/TokenTest.dsp | 72 - java/tests/Concurrency/TokenTest.java | 73 - java/tests/Connection/AcceptorTest.dsp | 73 - java/tests/Connection/AcceptorTest.java | 79 - java/tests/Connection/ClientHandler.dsp | 73 - java/tests/Connection/ClientHandler.java | 77 - java/tests/Connection/ConnectorTest.dsp | 73 - java/tests/Connection/ConnectorTest.java | 76 - java/tests/Connection/HTTPHelperTest.java | 27 - java/tests/Connection/Makefile | 26 - java/tests/Connection/ServerHandler.dsp | 73 - java/tests/Connection/ServerHandler.java | 68 - java/tests/Misc/Makefile | 21 - java/tests/Misc/ParseArgsTest.dsp | 73 - java/tests/Misc/ParseArgsTest.java | 45 - java/tests/Reactor/Makefile | 22 - java/tests/Reactor/TimeValueTest.dsp | 73 - java/tests/Reactor/TimeValueTest.java | 50 - java/tests/Reactor/TimerQueueTest.dsp | 73 - java/tests/Reactor/TimerQueueTest.java | 80 - java/tests/SOCK_SAP/Makefile | 22 - java/tests/SOCK_SAP/SOCKAcceptorTest.dsp | 73 - java/tests/SOCK_SAP/SOCKAcceptorTest.java | 108 - java/tests/SOCK_SAP/SOCKConnectorTest.dsp | 73 - java/tests/SOCK_SAP/SOCKConnectorTest.java | 95 - java/tests/ServiceConfigurator/Makefile | 25 - .../ServiceConfigurator/ServiceConfigurator.dsp | 81 - java/tests/ServiceConfigurator/TestService.java | 52 - java/tests/ServiceConfigurator/reloadTest.java | 61 - java/tests/ServiceConfigurator/suspendTest.java | 80 - java/tests/ServiceConfigurator/suspendTest1.conf | 1 - java/tests/ServiceConfigurator/suspendTest2.conf | 1 - java/tests/ServiceConfigurator/suspendTest3.conf | 1 - java/tests/ServiceConfigurator/svc.conf | 1 - java/tests/Tests.dsw | 257 - java/tests/netsvcs/Logger/LoggerTest.java | 122 - java/tests/netsvcs/Logger/Makefile | 19 - java/tests/netsvcs/Naming/ClientTest.java | 117 - java/tests/netsvcs/Naming/Makefile | 21 - m4/acinclude.m4 | 502 - m4/compiler.m4 | 198 - m4/features.m4 | 586 - m4/platform.m4 | 271 - m4/subsets.m4 | 591 - m4/threads.m4 | 265 - missing | 190 - mkinstalldirs | 40 - netsvcs/ACE-netsvcs.html | 870 - netsvcs/Makefile | 26 - netsvcs/Makefile.am | 21 - netsvcs/Makefile.bor | 14 - netsvcs/README | 20 - netsvcs/build.bor | 16 - netsvcs/clients/Logger/Logger.dsw | 41 - netsvcs/clients/Logger/Makefile | 92 - netsvcs/clients/Logger/Makefile.am | 29 - netsvcs/clients/Logger/Makefile.bor | 14 - netsvcs/clients/Logger/README | 18 - netsvcs/clients/Logger/direct_logging.cpp | 40 - netsvcs/clients/Logger/direct_logging.dsp | 94 - netsvcs/clients/Logger/indirect_logging.cpp | 49 - netsvcs/clients/Logger/indirect_logging.dsp | 94 - netsvcs/clients/Makefile | 19 - netsvcs/clients/Makefile.am | 18 - netsvcs/clients/Makefile.bor | 11 - netsvcs/clients/Naming/Client/Client.dsw | 44 - netsvcs/clients/Naming/Client/Client_Test.cpp | 646 - netsvcs/clients/Naming/Client/Client_Test.dsp | 97 - netsvcs/clients/Naming/Client/Client_Test.h | 12 - netsvcs/clients/Naming/Client/Makefile | 265 - netsvcs/clients/Naming/Client/Makefile.am | 36 - netsvcs/clients/Naming/Client/Makefile.bor | 8 - netsvcs/clients/Naming/Client/README | 123 - netsvcs/clients/Naming/Client/main.cpp | 54 - netsvcs/clients/Naming/Client/main.dsp | 93 - netsvcs/clients/Naming/Client/svc.conf | 7 - netsvcs/clients/Naming/Client/svc2.conf | 9 - .../clients/Naming/Dump_Restore/Dump_Restore.cpp | 461 - netsvcs/clients/Naming/Dump_Restore/Dump_Restore.h | 84 - netsvcs/clients/Naming/Dump_Restore/Makefile | 261 - netsvcs/clients/Naming/Dump_Restore/Makefile.am | 33 - netsvcs/clients/Naming/Dump_Restore/Makefile.bor | 8 - netsvcs/clients/Naming/Dump_Restore/README | 66 - netsvcs/clients/Naming/Dump_Restore/createfile.cpp | 34 - netsvcs/clients/Naming/Dump_Restore/main.cpp | 25 - netsvcs/clients/Naming/Dump_Restore/nametest.cpp | 112 - netsvcs/clients/Naming/Dump_Restore/nametest.h | 15 - netsvcs/clients/Naming/Makefile | 25 - netsvcs/clients/Naming/Makefile.am | 19 - netsvcs/clients/Naming/Makefile.bor | 9 - netsvcs/clients/README | 8 - netsvcs/clients/Tokens/Makefile | 26 - netsvcs/clients/Tokens/Makefile.am | 22 - netsvcs/clients/Tokens/Makefile.bor | 17 - netsvcs/clients/Tokens/README | 34 - netsvcs/clients/Tokens/collection/Makefile | 154 - netsvcs/clients/Tokens/collection/Makefile.am | 23 - netsvcs/clients/Tokens/collection/Makefile.bor | 5 - netsvcs/clients/Tokens/collection/README | 25 - netsvcs/clients/Tokens/collection/collection.cpp | 211 - netsvcs/clients/Tokens/collection/collection.dsp | 109 - netsvcs/clients/Tokens/collection/collection.dsw | 29 - netsvcs/clients/Tokens/collection/rw_locks.cpp | 174 - netsvcs/clients/Tokens/deadlock/Makefile | 156 - netsvcs/clients/Tokens/deadlock/Makefile.am | 24 - netsvcs/clients/Tokens/deadlock/Makefile.bor | 5 - netsvcs/clients/Tokens/deadlock/README | 98 - netsvcs/clients/Tokens/deadlock/deadlock.dsp | 112 - netsvcs/clients/Tokens/deadlock/deadlock.dsw | 29 - .../Tokens/deadlock/deadlock_detection_test.cpp | 341 - netsvcs/clients/Tokens/invariant/Makefile | 138 - netsvcs/clients/Tokens/invariant/Makefile.am | 24 - netsvcs/clients/Tokens/invariant/Makefile.bor | 5 - netsvcs/clients/Tokens/invariant/README | 27 - netsvcs/clients/Tokens/invariant/invariant.cpp | 197 - netsvcs/clients/Tokens/invariant/invariant.dsp | 99 - netsvcs/clients/Tokens/invariant/invariant.dsw | 29 - netsvcs/clients/Tokens/manual/Makefile | 47 - netsvcs/clients/Tokens/manual/Makefile.am | 28 - netsvcs/clients/Tokens/manual/Makefile.bor | 5 - netsvcs/clients/Tokens/manual/README | 67 - netsvcs/clients/Tokens/manual/manual.cpp | 368 - netsvcs/clients/Tokens/manual/manual.dsp | 97 - netsvcs/clients/Tokens/manual/manual.dsw | 29 - netsvcs/clients/Tokens/mutex/Makefile | 152 - netsvcs/clients/Tokens/mutex/Makefile.am | 25 - netsvcs/clients/Tokens/mutex/Makefile.bor | 5 - netsvcs/clients/Tokens/mutex/README | 23 - netsvcs/clients/Tokens/mutex/mutex.dsp | 97 - netsvcs/clients/Tokens/mutex/mutex.dsw | 29 - netsvcs/clients/Tokens/mutex/test_mutex.cpp | 143 - netsvcs/clients/Tokens/rw_lock/Makefile | 154 - netsvcs/clients/Tokens/rw_lock/Makefile.am | 24 - netsvcs/clients/Tokens/rw_lock/Makefile.bor | 5 - netsvcs/clients/Tokens/rw_lock/README | 40 - netsvcs/clients/Tokens/rw_lock/rw_lock.dsp | 98 - netsvcs/clients/Tokens/rw_lock/rw_lock.dsw | 29 - netsvcs/clients/Tokens/rw_lock/rw_locks.cpp | 253 - netsvcs/lib/Base_Optimizer.cpp | 31 - netsvcs/lib/Base_Optimizer.h | 52 - netsvcs/lib/Client_Logging_Handler.cpp | 466 - netsvcs/lib/Client_Logging_Handler.h | 98 - netsvcs/lib/Client_Logging_Handler.i | 4 - netsvcs/lib/Log_Message_Receiver.cpp | 170 - netsvcs/lib/Log_Message_Receiver.h | 215 - netsvcs/lib/Logging_Strategy.cpp | 106 - netsvcs/lib/Logging_Strategy.h | 57 - netsvcs/lib/Makefile | 1193 - netsvcs/lib/Makefile.am | 59 - netsvcs/lib/Makefile.bor | 22 - netsvcs/lib/Name_Handler.cpp | 619 - netsvcs/lib/Name_Handler.h | 205 - netsvcs/lib/README | 267 - netsvcs/lib/Server_Logging_Handler.cpp | 235 - netsvcs/lib/Server_Logging_Handler.h | 95 - netsvcs/lib/Server_Logging_Handler.i | 4 - netsvcs/lib/Server_Logging_Handler_T.cpp | 355 - netsvcs/lib/Server_Logging_Handler_T.h | 202 - netsvcs/lib/TS_Clerk_Handler.cpp | 620 - netsvcs/lib/TS_Clerk_Handler.h | 246 - netsvcs/lib/TS_Server_Handler.cpp | 283 - netsvcs/lib/TS_Server_Handler.h | 110 - netsvcs/lib/Token_Handler.cpp | 656 - netsvcs/lib/Token_Handler.h | 260 - netsvcs/lib/netsvcs.dsp | 306 - netsvcs/lib/netsvcs.dsw | 29 - netsvcs/netsvcs.dsw | 167 - netsvcs/servers/Makefile | 235 - netsvcs/servers/Makefile.am | 26 - netsvcs/servers/Makefile.bor | 7 - netsvcs/servers/README | 35 - netsvcs/servers/cli.conf | 11 - netsvcs/servers/main.cpp | 151 - netsvcs/servers/ntsvc.conf | 12 - netsvcs/servers/servers.dsp | 179 - netsvcs/servers/servers.dsw | 29 - netsvcs/servers/svc.conf | 17 - os-patches/linux-patches.html | 214 - os-patches/lynxos-patches.html | 91 - os-patches/vxworks-5.1.txt | 77 - performance-tests/Makefile | 34 - performance-tests/Misc/Makefile | 577 - performance-tests/Misc/basic_func.cpp | 49 - performance-tests/Misc/basic_func.h | 77 - performance-tests/Misc/basic_perf.cpp | 643 - performance-tests/Misc/basic_perf.dsp | 164 - performance-tests/Misc/childbirth_time.cpp | 401 - performance-tests/Misc/childbirth_time.dsp | 103 - performance-tests/Misc/context_switch_time.cpp | 1320 - performance-tests/Misc/context_switch_time.dsp | 156 - performance-tests/Misc/misc.dsw | 89 - performance-tests/Misc/preempt.cpp | 455 - performance-tests/Misc/test_guard.cpp | 114 - performance-tests/Misc/test_mutex.cpp | 232 - performance-tests/Misc/test_mutex.dsp | 103 - performance-tests/Misc/test_naming.cpp | 179 - performance-tests/Misc/test_naming.dsp | 103 - performance-tests/Misc/test_singleton.cpp | 178 - performance-tests/Misc/test_singleton.dsp | 103 - performance-tests/Misc/test_singleton.h | 24 - performance-tests/README | 17 - performance-tests/RPC/Makefile | 120 - performance-tests/RPC/README | 6 - performance-tests/RPC/client.cpp | 72 - performance-tests/RPC/ping.x | 12 - performance-tests/RPC/server.c | 15 - .../Server_Concurrency/Latency_Stats.h | 208 - .../Leader_Follower/Leader_Follower.dsp | 102 - .../Leader_Follower/Leader_Follower.dsw | 28 - .../Server_Concurrency/Leader_Follower/Makefile | 33 - .../Leader_Follower/leader_follower.cpp | 327 - performance-tests/Server_Concurrency/Makefile | 20 - .../Queue_Based_Workers/Makefile | 164 - .../Queue_Based_Workers/Queue_Based_Workers.dsp | 102 - .../Queue_Based_Workers/Queue_Based_Workers.dsw | 29 - .../Queue_Based_Workers/workers.cpp | 418 - .../Server_Concurrency/Server_Concurrency.dsw | 41 - performance-tests/Server_Concurrency/run_test.sh | 13 - .../Synch-Benchmarks/Base_Test/Base_Test.dsp | 115 - .../Synch-Benchmarks/Base_Test/Baseline_Test.cpp | 225 - .../Synch-Benchmarks/Base_Test/Baseline_Test.h | 147 - .../Synch-Benchmarks/Base_Test/Baseline_Test.i | 43 - .../Synch-Benchmarks/Base_Test/Makefile | 227 - .../Synch-Benchmarks/Base_Test/base_test.cpp | 57 - .../Synch-Benchmarks/Base_Test/mutex_test.cpp | 232 - performance-tests/Synch-Benchmarks/Makefile | 52 - performance-tests/Synch-Benchmarks/Makefile.driver | 41 - .../Synch-Benchmarks/Makefile.synch_tests | 948 - .../Adaptive_Lock_Performance_Test_Base.cpp | 49 - .../Adaptive_Lock_Performance_Test_Base.h | 24 - .../Perf_Test/Benchmark_Performance.cpp | 59 - .../Perf_Test/Benchmark_Performance.h | 46 - .../Synch-Benchmarks/Perf_Test/Makefile | 1921 -- .../Synch-Benchmarks/Perf_Test/Perf_Test.dsp | 187 - .../Perf_Test/Performance_Test.cpp | 114 - .../Synch-Benchmarks/Perf_Test/Performance_Test.h | 25 - .../Perf_Test/Performance_Test_Options.cpp | 476 - .../Perf_Test/Performance_Test_Options.h | 131 - .../Perf_Test/Performance_Test_Options.i | 264 - .../Synch-Benchmarks/Perf_Test/README | 76 - .../Perf_Test/adaptive_mutex_test.cpp | 36 - .../Perf_Test/adaptive_recursive_lock_test.cpp | 36 - .../Perf_Test/adaptive_sema_test.cpp | 41 - .../Synch-Benchmarks/Perf_Test/condb_test.cpp | 70 - .../Synch-Benchmarks/Perf_Test/conds_test.cpp | 73 - .../Synch-Benchmarks/Perf_Test/context_test.cpp | 39 - .../Synch-Benchmarks/Perf_Test/guard_test.cpp | 123 - .../Synch-Benchmarks/Perf_Test/memory_test.cpp | 41 - .../Synch-Benchmarks/Perf_Test/mutex_test.cpp | 46 - .../Synch-Benchmarks/Perf_Test/pipe_proc_test.cpp | 84 - .../Synch-Benchmarks/Perf_Test/pipe_thr_test.cpp | 77 - .../Perf_Test/recursive_lock_test.cpp | 44 - .../Synch-Benchmarks/Perf_Test/rwrd_test.cpp | 45 - .../Synch-Benchmarks/Perf_Test/rwwr_test.cpp | 45 - .../Synch-Benchmarks/Perf_Test/sema_test.cpp | 45 - .../Synch-Benchmarks/Perf_Test/sysvsema_test.cpp | 67 - .../Synch-Benchmarks/Perf_Test/token_test.cpp | 46 - performance-tests/Synch-Benchmarks/README | 46 - .../Synch-Benchmarks/Synch_Lib/Benchmark_Base.cpp | 99 - .../Synch-Benchmarks/Synch_Lib/Benchmark_Base.h | 113 - .../Synch-Benchmarks/Synch_Lib/Makefile | 126 - .../Synch-Benchmarks/Synch_Lib/README | 4 - .../Synch-Benchmarks/Synch_Lib/Synch_Lib.dsp | 99 - .../Synch-Benchmarks/Synch_Lib/export_mac.h | 36 - performance-tests/Synch-Benchmarks/Synch_Tests.dsp | 196 - performance-tests/Synch-Benchmarks/Synch_Tests.dsw | 77 - performance-tests/Synch-Benchmarks/benchmarks | 19 - performance-tests/Synch-Benchmarks/context.c | 72 - performance-tests/Synch-Benchmarks/context.csh | 16 - performance-tests/Synch-Benchmarks/orig-results | 73 - .../Synch-Benchmarks/results/.no_prune | 1 - performance-tests/Synch-Benchmarks/run_tests.pl | 131 - .../Synch-Benchmarks/svcconf/base_acquire.conf | 20 - .../svcconf/base_acquire_read.conf | 20 - .../svcconf/base_acquire_write.conf | 20 - .../Synch-Benchmarks/svcconf/base_tryacquire.conf | 20 - .../svcconf/base_tryacquire_read.conf | 20 - .../svcconf/base_tryacquire_write.conf | 20 - .../Synch-Benchmarks/svcconf/perf_t1.conf | 32 - .../Synch-Benchmarks/svcconf/perf_t16.conf | 32 - .../Synch-Benchmarks/svcconf/perf_t2.conf | 32 - .../Synch-Benchmarks/svcconf/perf_t32.conf | 32 - .../Synch-Benchmarks/svcconf/perf_t4.conf | 32 - .../Synch-Benchmarks/svcconf/perf_t64.conf | 32 - .../Synch-Benchmarks/svcconf/perf_t8.conf | 32 - .../Synch-Benchmarks/svcconf/svc.conf | 29 - .../Synch-Benchmarks/synch_driver.cpp | 52 - .../Synch-Benchmarks/synch_driver.dsp | 111 - performance-tests/TCP/Makefile | 42 - performance-tests/TCP/README | 17 - performance-tests/TCP/TCP.dsp | 102 - performance-tests/TCP/TCP.dsw | 29 - performance-tests/TCP/tcp_test.cpp | 659 - performance-tests/TTCP/ACE-C++/How_to_run_tests | 29 - performance-tests/TTCP/ACE-C++/Makefile | 47 - performance-tests/TTCP/ACE-C++/run_test | 35 - .../TTCP/ACE-C++/wrapper-new-ttcp.cpp | 967 - performance-tests/TTCP/C/How_to_run_tests | 30 - performance-tests/TTCP/C/Makefile | 47 - performance-tests/TTCP/C/README | 38 - performance-tests/TTCP/C/new-ttcp.cpp | 979 - performance-tests/TTCP/C/run_test | 35 - performance-tests/TTCP/Makefile | 25 - performance-tests/UDP/Makefile | 117 - performance-tests/UDP/README | 17 - performance-tests/UDP/udp_test.cpp | 735 - psosim/Makefile | 76 - psosim/drv_conf.c | 79 - rpc++/.dependencies | 131 - rpc++/COPYING | 481 - rpc++/Makefile | 55 - rpc++/Proj.make | 68 - rpc++/README | 18 - rpc++/README.ORIG | 9 - rpc++/StdHdrs/Makefile | 13 - rpc++/StdHdrs/README | 3 - rpc++/StdHdrs/rpc/auth.h | 171 - rpc++/StdHdrs/rpc/c_types.h | 79 - rpc++/StdHdrs/rpc/clnt.h | 347 - rpc++/StdHdrs/rpc/pmap_clnt.h | 82 - rpc++/StdHdrs/rpc/svc.h | 286 - rpc++/StdHdrs/rpc/xdr.h | 275 - rpc++/callback.cc | 38 - rpc++/example/Makefile | 40 - rpc++/example/calcsvc.cc | 30 - rpc++/example/calcsvc.h | 34 - rpc++/example/client.cc | 64 - rpc++/example/server.cc | 112 - rpc++/gcc-2.2.fix | 252 - rpc++/request.cc | 165 - rpc++/rpc++.cp | 13 - rpc++/rpc++.fn | 63 - rpc++/rpc++.ky | 0 rpc++/rpc++.pg | 0 rpc++/rpc++.texi | 1519 - rpc++/rpc++.toc | 23 - rpc++/rpc++.tp | 7 - rpc++/rpc++.vr | 13 - rpc++/rpc++/callback.h | 533 - rpc++/rpc++/request.h | 121 - rpc++/rpc++/service.h | 132 - rpc++/rpc++/stub.h | 145 - rpc++/rpc++/xdr++.h | 98 - rpc++/service.cc | 316 - rpc++/stub.cc | 207 - rpc++/version.h | 4 - rpc++/xdr++.cc | 75 - tests/ACE_Init_Test.cpp | 108 - tests/ACE_Init_Test.dsp | 107 - tests/ACE_Init_Test.h | 59 - tests/ACE_Init_Test.ico | Bin 1078 -> 0 bytes tests/ACE_Init_Test.rc | 174 - tests/ACE_Init_Test.rc2 | 13 - tests/ACE_Init_Test.res | Bin 2122 -> 0 bytes tests/ACE_Init_TestDlg.cpp | 94 - tests/ACE_Init_TestDlg.h | 47 - tests/ACE_Init_Test_Resource.h | 19 - tests/ACE_Init_Test_StdAfx.h | 44 - tests/Aio_Platform_Test.cpp | 193 - tests/Aio_Platform_Test.icc | 22 - tests/Atomic_Op_Test.cpp | 80 - tests/Atomic_Op_Test.dsp | 194 - tests/Atomic_Op_Test.icc | 22 - tests/Barrier_Test.cpp | 110 - tests/Barrier_Test.dsp | 217 - tests/Barrier_Test.icc | 22 - tests/Basic_Types_Test.cpp | 179 - tests/Basic_Types_Test.dsp | 217 - tests/Basic_Types_Test.icc | 22 - tests/Buffer_Stream_Test.cpp | 237 - tests/Buffer_Stream_Test.dsp | 264 - tests/Buffer_Stream_Test.icc | 22 - tests/CDR_File_Test.cpp | 290 - tests/CDR_File_Test.dsp | 217 - tests/CDR_Test.cpp | 492 - tests/CDR_Test.dsp | 205 - tests/CDR_Test.icc | 22 - tests/CLASSIX/CLASSIX_Addr_Test.cpp | 116 - tests/CLASSIX/CLASSIX_Addr_Test.icc | 22 - tests/CLASSIX/CLASSIX_CLD_Connector_Test.cpp | 392 - tests/CLASSIX/CLASSIX_CLD_Connector_Test.icc | 22 - tests/CLASSIX/CLASSIX_Con_Acc_Test.cpp | 373 - tests/CLASSIX/CLASSIX_Con_Acc_Test.h | 82 - tests/CLASSIX/CLASSIX_Con_Acc_Test.icc | 22 - tests/CLASSIX/CLASSIX_Group_Test.cpp | 85 - tests/CLASSIX/CLASSIX_Group_Test.icc | 22 - tests/CLASSIX/CLASSIX_Notify_Test.cpp | 267 - tests/CLASSIX/CLASSIX_Notify_Test.icc | 22 - tests/CLASSIX/CLASSIX_OS_Test.cpp | 43 - tests/CLASSIX/CLASSIX_OS_Test.icc | 22 - tests/CLASSIX/CLASSIX_Reactor_Test.cpp | 149 - tests/CLASSIX/CLASSIX_Reactor_Test.h | 57 - tests/CLASSIX/CLASSIX_Reactor_Test.icc | 22 - tests/CLASSIX/CLASSIX_Select_Reactor_Test.cpp | 166 - tests/CLASSIX/CLASSIX_Select_Reactor_Test.h | 56 - tests/CLASSIX/CLASSIX_Select_Reactor_Test.icc | 22 - tests/CLASSIX/CLASSIX_Stream_Test.cpp | 111 - tests/CLASSIX/CLASSIX_Stream_Test.icc | 22 - tests/CLASSIX/CLASSIX_test_config.h | 277 - tests/CLASSIX/Imakefile | 152 - tests/CLASSIX_Addr_Test.icc | 22 - tests/CLASSIX_CLD_Connector_Test.icc | 22 - tests/CLASSIX_Con_Acc_Test.icc | 22 - tests/CLASSIX_Group_Test.icc | 22 - tests/CLASSIX_Notify_Test.icc | 22 - tests/CLASSIX_OS_Test.icc | 22 - tests/CLASSIX_Reactor_Test.icc | 22 - tests/CLASSIX_Select_Reactor_Test.icc | 22 - tests/CLASSIX_Stream_Test.icc | 22 - tests/CPP_Test.cpp | 261 - tests/Cache_Manager_Test.cpp | 159 - tests/Cache_Map_Manager_Test.cpp | 712 - tests/Cache_Map_Manager_Test.dsp | 194 - tests/Cache_Map_Manager_Test.h | 38 - tests/Cached_Accept_Conn_Test.cpp | 738 - tests/Cached_Accept_Conn_Test.dsp | 298 - tests/Cached_Accept_Conn_Test.h | 148 - tests/Cached_Conn_Test.cpp | 704 - tests/Cached_Conn_Test.dsp | 194 - tests/Cached_Conn_Test.h | 36 - tests/Collection_Test.cpp | 142 - tests/Collection_Test.dsp | 217 - tests/Collection_Test.icc | 22 - tests/Conn_Test.cpp | 867 - tests/Conn_Test.dsp | 298 - tests/Conn_Test.h | 61 - tests/Conn_Test.icc | 22 - tests/DLL_Test.cpp | 141 - tests/DLL_Test.dsp | 182 - tests/DLL_Test.h | 54 - tests/DLL_Test.icc | 22 - tests/DLList_Test.cpp | 130 - tests/DLList_Test.dsp | 217 - tests/DLList_Test.icc | 22 - tests/Dynamic_Priority_Test.cpp | 762 - tests/Dynamic_Priority_Test.dsp | 217 - tests/Dynamic_Priority_Test.icc | 22 - tests/Enum_Interfaces_Test.cpp | 78 - tests/Enum_Interfaces_Test.dsp | 188 - tests/Enum_Interfaces_Test.icc | 22 - tests/Env_Value_Test.cpp | 130 - tests/Env_Value_Test.dsp | 217 - tests/Env_Value_Test.icc | 22 - tests/FlReactor_Test.cpp | 294 - tests/Future_Set_Test.cpp | 645 - tests/Future_Set_Test.dsp | 264 - tests/Future_Test.cpp | 645 - tests/Future_Test.dsp | 264 - tests/Future_Test.icc | 22 - tests/Handle_Set_Test.cpp | 248 - tests/Handle_Set_Test.dsp | 222 - tests/Handle_Set_Test.icc | 22 - tests/Hash_Map_Bucket_Iterator_Test.cpp | 145 - tests/Hash_Map_Bucket_Iterator_Test.dsp | 230 - tests/Hash_Map_Manager_Test.cpp | 225 - tests/Hash_Map_Manager_Test.dsp | 230 - tests/Hash_Map_Manager_Test.icc | 22 - tests/High_Res_Timer_Test.cpp | 125 - tests/High_Res_Timer_Test.dsp | 217 - tests/High_Res_Timer_Test.icc | 22 - tests/IOStream_Test.cpp | 515 - tests/IOStream_Test.dsp | 289 - tests/IOStream_Test.icc | 22 - tests/Lazy_Map_Manager_Test.cpp | 372 - tests/Lazy_Map_Manager_Test.dsp | 194 - tests/Log_Msg_Test.cpp | 447 - tests/MM_Shared_Memory_Test.cpp | 191 - tests/MM_Shared_Memory_Test.dsp | 220 - tests/MM_Shared_Memory_Test.icc | 22 - tests/MT_Reactor_Timer_Test.cpp | 364 - tests/MT_Reactor_Timer_Test.dsp | 217 - tests/MT_Reactor_Timer_Test.h | 109 - tests/MT_Reactor_Timer_Test.icc | 22 - tests/MT_SOCK_Test.cpp | 340 - tests/MT_SOCK_Test.dsp | 220 - tests/MT_SOCK_Test.icc | 22 - tests/Makefile | 7375 ---- tests/Makefile.DLL | 96 - tests/Makefile.am | 329 - tests/Makefile.bor | 103 - tests/Malloc_Test.cpp | 291 - tests/Malloc_Test.dsp | 217 - tests/Malloc_Test.h | 43 - tests/Map_Manager_Test.cpp | 1004 - tests/Map_Manager_Test.dsp | 241 - tests/Map_Manager_Test.icc | 22 - tests/Map_Test.cpp | 490 - tests/Map_Test.dsp | 241 - tests/Map_Test.h | 150 - tests/Map_Test.icc | 22 - tests/Mem_Map_Test.cpp | 193 - tests/Mem_Map_Test.dsp | 186 - tests/Mem_Map_Test.icc | 22 - tests/Message_Block_Test.cpp | 352 - tests/Message_Block_Test.dsp | 265 - tests/Message_Block_Test.icc | 22 - tests/Message_Queue_Notifications_Test.cpp | 365 - tests/Message_Queue_Notifications_Test.dsp | 265 - tests/Message_Queue_Notifications_Test.icc | 22 - tests/Message_Queue_Test.cpp | 532 - tests/Message_Queue_Test.dsp | 249 - tests/Message_Queue_Test.icc | 22 - tests/Naming_Test.cpp | 263 - tests/Naming_Test.dsp | 255 - tests/Naming_Test.icc | 22 - tests/New_Fail_Test.cpp | 171 - tests/New_Fail_Test.dsp | 217 - tests/Notify_Performance_Test.cpp | 260 - tests/Notify_Performance_Test.dsp | 251 - tests/Notify_Performance_Test.icc | 22 - tests/Object_Manager_Test.cpp | 115 - tests/Object_Manager_Test.dsp | 144 - tests/OrdMultiSet_Test.cpp | 219 - tests/OrdMultiSet_Test.dsp | 217 - tests/OrdMultiSet_Test.icc | 22 - tests/Pipe_Test.cpp | 140 - tests/Pipe_Test.dsp | 190 - tests/Pipe_Test.icc | 22 - tests/Priority_Buffer_Test.cpp | 164 - tests/Priority_Buffer_Test.dsp | 249 - tests/Priority_Buffer_Test.icc | 22 - tests/Priority_Reactor_Test.cpp | 420 - tests/Priority_Reactor_Test.dsp | 288 - tests/Priority_Reactor_Test.h | 76 - tests/Priority_Reactor_Test.icc | 22 - tests/Priority_Task_Test.cpp | 243 - tests/Priority_Task_Test.dsp | 262 - tests/Priority_Task_Test.icc | 22 - tests/Process_Manager_Test.cpp | 539 - tests/Process_Mutex_Test.cpp | 183 - tests/Process_Mutex_Test.dsp | 202 - tests/Process_Mutex_Test.icc | 22 - tests/Process_Strategy_Test.cpp | 714 - tests/Process_Strategy_Test.dsp | 291 - tests/Process_Strategy_Test.h | 142 - tests/Process_Strategy_Test.icc | 22 - tests/Purgable_Map_Manager_Test.cpp | 187 - tests/Purgable_Map_Manager_Test.icc | 22 - tests/RB_Tree_Test.cpp | 342 - tests/RB_Tree_Test.dsp | 194 - tests/RB_Tree_Test.h | 105 - tests/RB_Tree_Test.icc | 22 - tests/README | 84 - tests/Reactor_Exceptions_Test.cpp | 229 - tests/Reactor_Exceptions_Test.dsp | 236 - tests/Reactor_Exceptions_Test.icc | 22 - tests/Reactor_Notify_Test.cpp | 404 - tests/Reactor_Notify_Test.dsp | 262 - tests/Reactor_Notify_Test.icc | 22 - tests/Reactor_Performance_Test.cpp | 457 - tests/Reactor_Performance_Test.dsp | 289 - tests/Reactor_Performance_Test.h | 63 - tests/Reactor_Performance_Test.icc | 22 - tests/Reactor_Timer_Test.cpp | 250 - tests/Reactor_Timer_Test.dsp | 224 - tests/Reactor_Timer_Test.icc | 22 - tests/Reactors_Test.cpp | 270 - tests/Reactors_Test.dsp | 260 - tests/Reactors_Test.icc | 22 - tests/Reader_Writer_Test.cpp | 287 - tests/Reader_Writer_Test.dsp | 219 - tests/Reader_Writer_Test.icc | 22 - tests/Recursive_Mutex_Test.cpp | 100 - tests/Recursive_Mutex_Test.dsp | 219 - tests/Recursive_Mutex_Test.icc | 22 - tests/Reverse_Lock_Test.cpp | 60 - tests/Reverse_Lock_Test.dsp | 217 - tests/SOCK_Connector_Test.cpp | 264 - tests/SOCK_Connector_Test.dsp | 217 - tests/SOCK_Connector_Test.icc | 22 - tests/SOCK_Send_Recv_Test.cpp | 311 - tests/SOCK_Send_Recv_Test.dsp | 217 - tests/SOCK_Test.cpp | 256 - tests/SOCK_Test.dsp | 236 - tests/SOCK_Test.icc | 22 - tests/SPIPE_Test.cpp | 139 - tests/SPIPE_Test.dsp | 230 - tests/SPIPE_Test.icc | 22 - tests/SString_Test.cpp | 179 - tests/SString_Test.dsp | 184 - tests/SString_Test.icc | 22 - tests/SV_Shared_Memory_Test.cpp | 200 - tests/SV_Shared_Memory_Test.dsp | 215 - tests/SV_Shared_Memory_Test.icc | 22 - tests/Semaphore_Test.cpp | 239 - tests/Semaphore_Test.dsp | 215 - tests/Semaphore_Test.icc | 22 - tests/Service_Config_Test.cpp | 151 - tests/Service_Config_Test.dsp | 231 - tests/Service_Config_Test.icc | 22 - tests/Shared_Memory_SV_Test.cpp | 83 - tests/Signal_Test.cpp | 489 - tests/Sigset_Ops_Test.cpp | 135 - tests/Sigset_Ops_Test.dsp | 184 - tests/Sigset_Ops_Test.icc | 22 - tests/Simple_Message_Block_Test.cpp | 189 - tests/Simple_Message_Block_Test.dsp | 217 - tests/Simple_Message_Block_Test.icc | 22 - tests/Svc_Handler_Test.cpp | 135 - tests/Svc_Handler_Test.dsp | 260 - tests/TSS_Test.cpp | 292 - tests/TSS_Test.dsp | 222 - tests/TSS_Test.icc | 22 - tests/TSS_Test_Errno.h | 76 - tests/Task_Test.cpp | 134 - tests/Task_Test.dsp | 260 - tests/Task_Test.icc | 22 - tests/Thread_Manager_Test.cpp | 327 - tests/Thread_Manager_Test.dsp | 217 - tests/Thread_Manager_Test.icc | 22 - tests/Thread_Mutex_Test.cpp | 89 - tests/Thread_Mutex_Test.dsp | 217 - tests/Thread_Mutex_Test.icc | 22 - tests/Thread_Pool_Reactor_Test.cpp | 356 - tests/Thread_Pool_Reactor_Test.dsp | 194 - tests/Thread_Pool_Reactor_Test.h | 50 - tests/Thread_Pool_Reactor_Test.icc | 22 - tests/Thread_Pool_Test.cpp | 281 - tests/Thread_Pool_Test.dsp | 260 - tests/Thread_Pool_Test.icc | 22 - tests/Time_Service_Test.cpp | 107 - tests/Time_Service_Test.dsp | 186 - tests/Time_Service_Test.icc | 22 - tests/Time_Value_Test.cpp | 225 - tests/Time_Value_Test.dsp | 184 - tests/Time_Value_Test.icc | 22 - tests/Timeprobe_Test.cpp | 131 - tests/Timeprobe_Test.dsp | 217 - tests/Timeprobe_Test.icc | 22 - tests/Timer_Queue_Test.cpp | 534 - tests/Timer_Queue_Test.dsp | 236 - tests/Timer_Queue_Test.icc | 22 - tests/TkReactor_Test.cpp | 350 - tests/TkReactor_Test.tcl | 15 - tests/Tokens_Test.cpp | 275 - tests/Tokens_Test.dsp | 266 - tests/Tokens_Test.icc | 22 - tests/UNIXclerk.conf | 3 - tests/UNIXserver.conf | 7 - tests/UNIXtokens.conf | 5 - tests/UPIPE_SAP_Test.cpp | 205 - tests/UPIPE_SAP_Test.dsp | 282 - tests/UPIPE_SAP_Test.icc | 22 - tests/Upgradable_RW_Test.cpp | 511 - tests/Upgradable_RW_Test.dsp | 217 - tests/Upgradable_RW_Test.h | 147 - tests/Upgradable_RW_Test.icc | 22 - tests/Win32clerk.conf | 3 - tests/Win32server.conf | 10 - tests/Win32tokens.conf | 4 - tests/WinCE/Atomic_Op_Test.dsp | 974 - tests/WinCE/Barrier_Test.dsp | 1074 - tests/WinCE/Basic_Types_Test.dsp | 1068 - tests/WinCE/Buffer_Stream_Test.dsp | 1230 - tests/WinCE/Conn_Test.dsp | 1335 - tests/WinCE/DLL_Test.dsp | 974 - tests/WinCE/Enum_Interfaces_Test.dsp | 1080 - tests/WinCE/Future_Test.dsp | 1233 - tests/WinCE/Handle_Set_Test.dsp | 1089 - tests/WinCE/Hash_Map_Manager_Test.dsp | 1125 - tests/WinCE/MT_Reactor_Timer_Test.dsp | 701 - tests/WinCE/MT_SOCK_Test.dsp | 1131 - tests/WinCE/Map_Manager_Test.dsp | 1146 - tests/WinCE/Mem_Map_Test.dsp | 1068 - tests/WinCE/Message_Block_Test.dsp | 1233 - tests/WinCE/Message_Queue_Notifications_Test.dsp | 1068 - tests/WinCE/Message_Queue_Test.dsp | 1185 - tests/WinCE/Notify_Performance_Test.dsp | 1239 - tests/WinCE/OrdMultiSet_Test.dsp | 1068 - tests/WinCE/Priority_Buffer_Test.dsp | 1185 - tests/WinCE/Priority_Task_Test.dsp | 1224 - tests/WinCE/Reactor_Exceptions_Test.dsp | 698 - tests/WinCE/Reactor_Notify_Test.dsp | 1251 - tests/WinCE/Reactor_Performance_Test.dsp | 1068 - tests/WinCE/Reactor_Timer_Test.dsp | 1095 - tests/WinCE/Reactors_Test.dsp | 1218 - tests/WinCE/Reader_Writer_Test.dsp | 1080 - tests/WinCE/Recursive_Mutex_Test.dsp | 1080 - tests/WinCE/SOCK_Connector_Test.dsp | 1113 - tests/WinCE/SOCK_Test.dsp | 1131 - tests/WinCE/SString_Test.dsp | 1068 - tests/WinCE/Semaphore_Test.dsp | 1080 - tests/WinCE/Sigset_Ops_Test.dsp | 1068 - tests/WinCE/Simple_Message_Block_Test.dsp | 1074 - tests/WinCE/TSS_Test.dsp | 1077 - tests/WinCE/Task_Test.dsp | 1218 - tests/WinCE/Thread_Manager_Test.dsp | 1077 - tests/WinCE/Thread_Mutex_Test.dsp | 1074 - tests/WinCE/Thread_Pool_Test.dsp | 1218 - tests/WinCE/Time_Value_Test.dsp | 1068 - tests/WinCE/Timer_Queue_Test.dsp | 1131 - tests/WinCE/ce_tests.dsw | 485 - tests/XtReactor_Test.cpp | 374 - tests/XtReactor_Test.icc | 22 - tests/icc.bat | 226 - tests/log/Makefile.am | 81 - tests/makeicc.pl | 44 - tests/run_pharlap_tests.bat | 130 - tests/run_tests.bat | 190 - tests/run_tests.check | 41 - tests/run_tests.ksh | 6 - tests/run_tests.lst | 79 - tests/run_tests.pl | 192 - tests/run_tests.psosim | 196 - tests/run_tests.sh | 209 - tests/run_tests.vxworks | 257 - tests/t.icc | 281 - tests/test_config.h | 381 - tests/tests.dsw | 965 - tests/tests_pharlap_msvc.lnk | 72 - tests/version_tests/ACE_Init_Test.dsp | 298 - tests/version_tests/Atomic_Op_Test.dsp | 270 - tests/version_tests/Barrier_Test.dsp | 270 - tests/version_tests/Basic_Types_Test.dsp | 254 - tests/version_tests/Buffer_Stream_Test.dsp | 270 - tests/version_tests/CDR_File_Test.dsp | 270 - tests/version_tests/CDR_Test.dsp | 270 - tests/version_tests/Cache_Map_Manager_Test.dsp | 270 - tests/version_tests/Cached_Accept_Conn_Test.dsp | 270 - tests/version_tests/Cached_Conn_Test.dsp | 270 - tests/version_tests/Collection_Test.dsp | 270 - tests/version_tests/Conn_Test.dsp | 274 - tests/version_tests/DLL_Test.dsp | 270 - tests/version_tests/DLList_Test.dsp | 270 - tests/version_tests/Dynamic_Priority_Test.dsp | 270 - tests/version_tests/Enum_Interfaces_Test.dsp | 270 - tests/version_tests/Env_Value_Test.dsp | 270 - tests/version_tests/Future_Set_Test.dsp | 270 - tests/version_tests/Future_Test.dsp | 278 - tests/version_tests/Handle_Set_Test.dsp | 270 - .../Hash_Map_Bucket_Iterator_Test.dsp | 270 - tests/version_tests/Hash_Map_Manager_Test.dsp | 274 - tests/version_tests/High_Res_Timer_Test.dsp | 270 - tests/version_tests/IOStream_Test.dsp | 270 - tests/version_tests/Lazy_Map_Manager_Test.dsp | 274 - tests/version_tests/MM_Shared_Memory_Test.dsp | 270 - tests/version_tests/MT_Reactor_Timer_Test.dsp | 270 - tests/version_tests/MT_SOCK_Test.dsp | 270 - tests/version_tests/Malloc_Test.dsp | 270 - tests/version_tests/Map_Manager_Test.dsp | 270 - tests/version_tests/Map_Test.dsp | 270 - tests/version_tests/Mem_Map_Test.dsp | 270 - tests/version_tests/Message_Block_Test.dsp | 270 - .../Message_Queue_Notifications_Test.dsp | 270 - tests/version_tests/Message_Queue_Test.dsp | 270 - tests/version_tests/Naming_Test.dsp | 270 - tests/version_tests/New_Fail_Test.dsp | 270 - tests/version_tests/Notify_Performance_Test.dsp | 270 - tests/version_tests/Object_Manager_Test.dsp | 270 - tests/version_tests/OrdMultiSet_Test.dsp | 270 - tests/version_tests/Pipe_Test.dsp | 270 - tests/version_tests/Priority_Buffer_Test.dsp | 270 - tests/version_tests/Priority_Reactor_Test.dsp | 270 - tests/version_tests/Priority_Task_Test.dsp | 270 - tests/version_tests/Process_Mutex_Test.dsp | 270 - tests/version_tests/Process_Strategy_Test.dsp | 270 - tests/version_tests/RB_Tree_Test.dsp | 270 - tests/version_tests/Reactor_Exception_Test.dsp | 270 - tests/version_tests/Reactor_Notify_Test.dsp | 270 - tests/version_tests/Reactor_Performance_Test.dsp | 274 - tests/version_tests/Reactor_Timer_Test.dsp | 270 - tests/version_tests/Reactors_Test.dsp | 270 - tests/version_tests/Reader_Writer_Test.dsp | 270 - tests/version_tests/Recursive_Mutex_Test.dsp | 270 - tests/version_tests/Reverse_Lock_Test.dsp | 270 - tests/version_tests/SOCK_Connector_Test.dsp | 270 - tests/version_tests/SOCK_Send_Recv_Test.dsp | 270 - tests/version_tests/SOCK_Test.dsp | 270 - tests/version_tests/SPIPE_Test.dsp | 270 - tests/version_tests/SString_Test.dsp | 270 - tests/version_tests/SV_Shared_Memory_Test.dsp | 270 - tests/version_tests/Semaphore_Test.dsp | 270 - tests/version_tests/Service_Config_Test.dsp | 270 - tests/version_tests/Sigset_Op_Test.dsp | 270 - tests/version_tests/Simple_Message_Block_Test.dsp | 270 - tests/version_tests/Svc_Handler_Test.dsp | 270 - tests/version_tests/TSS_Test.dsp | 274 - tests/version_tests/Task_Test.dsp | 270 - tests/version_tests/Thread_Manager_Test.dsp | 274 - tests/version_tests/Thread_Mutex_Test.dsp | 270 - tests/version_tests/Thread_Pool_Reactor_Test.dsp | 270 - tests/version_tests/Thread_Pool_Test.dsp | 270 - tests/version_tests/Time_Service_Test.dsp | 270 - tests/version_tests/Time_Value_Test.dsp | 270 - tests/version_tests/Timeprobe_Test.dsp | 270 - tests/version_tests/Timer_Queue_Test.dsp | 270 - tests/version_tests/Tokens_Test.dsp | 270 - tests/version_tests/UPIPE_SAP_Test.dsp | 270 - tests/version_tests/Upgradable_RW_Test.dsp | 274 - tests/version_tests/run_all_tests.bat | 75 - tests/version_tests/version_tests.dsw | 965 - websvcs/Makefile | 24 - websvcs/README | 11 - websvcs/lib/Makefile | 65 - websvcs/lib/URL_Addr.cpp | 949 - websvcs/lib/URL_Addr.h | 403 - websvcs/lib/URL_Addr.i | 152 - websvcs/lib/websvcs.dsp | 111 - websvcs/lib/websvcs.dsw | 29 - websvcs/lib/websvcs_export.h | 35 - websvcs/tests/Makefile | 70 - websvcs/tests/Test_URL_Addr.cpp | 216 - websvcs/tests/Test_URL_Addr.dsp | 98 - websvcs/tests/tests.dsw | 29 - websvcs/websvcs.dsw | 41 - 3990 files changed, 939020 deletions(-) delete mode 100644 ACE-INSTALL.html delete mode 100644 ACE-configuration.txt delete mode 100644 ACE-install.sh delete mode 100644 ACE.DSW delete mode 100644 ASNMP/COPYRIGHT delete mode 100644 ASNMP/ChangeLog delete mode 100644 ASNMP/Makefile delete mode 100644 ASNMP/README delete mode 100644 ASNMP/TO-DO delete mode 100644 ASNMP/agent/Makefile delete mode 100644 ASNMP/agent/agent_impl.cpp delete mode 100644 ASNMP/agent/agent_impl.h delete mode 100644 ASNMP/agent/main.cpp delete mode 100644 ASNMP/agent/snmp_agent.cpp delete mode 100644 ASNMP/agent/snmp_agent.h delete mode 100644 ASNMP/asnmp-overview.html delete mode 100644 ASNMP/asnmp/ChangeLog delete mode 100644 ASNMP/asnmp/Makefile delete mode 100644 ASNMP/asnmp/TODO delete mode 100644 ASNMP/asnmp/address.cpp delete mode 100644 ASNMP/asnmp/address.h delete mode 100644 ASNMP/asnmp/asn1.cpp delete mode 100644 ASNMP/asnmp/asn1.h delete mode 100644 ASNMP/asnmp/counter.cpp delete mode 100644 ASNMP/asnmp/counter.h delete mode 100644 ASNMP/asnmp/ctr64.cpp delete mode 100644 ASNMP/asnmp/ctr64.h delete mode 100644 ASNMP/asnmp/enttraps.h delete mode 100644 ASNMP/asnmp/gauge.cpp delete mode 100644 ASNMP/asnmp/gauge.h delete mode 100644 ASNMP/asnmp/integer.cpp delete mode 100644 ASNMP/asnmp/integer.h delete mode 100644 ASNMP/asnmp/octet.cpp delete mode 100644 ASNMP/asnmp/octet.h delete mode 100644 ASNMP/asnmp/oid.cpp delete mode 100644 ASNMP/asnmp/oid.h delete mode 100644 ASNMP/asnmp/oid_def.h delete mode 100644 ASNMP/asnmp/pdu.cpp delete mode 100644 ASNMP/asnmp/pdu.h delete mode 100644 ASNMP/asnmp/sagent.cpp delete mode 100644 ASNMP/asnmp/sagent.h delete mode 100644 ASNMP/asnmp/smi.h delete mode 100644 ASNMP/asnmp/smival.h delete mode 100644 ASNMP/asnmp/snmp.cpp delete mode 100644 ASNMP/asnmp/snmp.h delete mode 100644 ASNMP/asnmp/snmperrs.h delete mode 100644 ASNMP/asnmp/target.cpp delete mode 100644 ASNMP/asnmp/target.h delete mode 100644 ASNMP/asnmp/timetick.cpp delete mode 100644 ASNMP/asnmp/timetick.h delete mode 100644 ASNMP/asnmp/transaction.cpp delete mode 100644 ASNMP/asnmp/transaction.h delete mode 100644 ASNMP/asnmp/transaction_result.h delete mode 100644 ASNMP/asnmp/vb.cpp delete mode 100644 ASNMP/asnmp/vb.h delete mode 100644 ASNMP/asnmp/wpdu.cpp delete mode 100644 ASNMP/asnmp/wpdu.h delete mode 100644 ASNMP/examples/Makefile delete mode 100644 ASNMP/examples/get/Makefile delete mode 100644 ASNMP/examples/get/get.cpp delete mode 100644 ASNMP/examples/get/get_async.cpp delete mode 100644 ASNMP/examples/next/Makefile delete mode 100644 ASNMP/examples/next/next.cpp delete mode 100644 ASNMP/examples/set/Makefile delete mode 100644 ASNMP/examples/set/set.cpp delete mode 100644 ASNMP/examples/trap/Makefile delete mode 100644 ASNMP/examples/trap/purify4.1.txt delete mode 100644 ASNMP/examples/trap/trap.cpp delete mode 100644 ASNMP/examples/walk/Makefile delete mode 100644 ASNMP/examples/walk/walk.cpp delete mode 100644 ASNMP/mibs/RFC1213-MIB.my delete mode 100644 ASNMP/tests/Address_Test.cpp delete mode 100644 ASNMP/tests/Counter64_Test.cpp delete mode 100644 ASNMP/tests/Counter_Test.cpp delete mode 100644 ASNMP/tests/Gauge_Test.cpp delete mode 100644 ASNMP/tests/Integer_Test.cpp delete mode 100644 ASNMP/tests/Makefile delete mode 100644 ASNMP/tests/Octet_Test.cpp delete mode 100644 ASNMP/tests/Oid_Test.cpp delete mode 100644 ASNMP/tests/Target_Test.cpp delete mode 100644 ASNMP/tests/Varbind_Test.cpp delete mode 100644 ASNMP/tests/run_tests.bat delete mode 100755 ASNMP/tests/run_tests.sh delete mode 100644 ASNMP/tests/test_config.h delete mode 100644 AUTHORS delete mode 100644 BIBLIOGRAPHY delete mode 100644 COPYING delete mode 100644 ChangeLog-93 delete mode 100644 ChangeLog-94 delete mode 100644 ChangeLog-95 delete mode 100644 ChangeLog-96a delete mode 100644 ChangeLog-96b delete mode 100644 ChangeLog-97a delete mode 100644 ChangeLog-97b delete mode 100644 ChangeLog-98a delete mode 100644 ChangeLog-98b delete mode 100644 ChangeLog-99a delete mode 100644 ChangeLog-99b delete mode 100644 FAQ delete mode 100644 Makefile delete mode 100644 Makefile.am delete mode 100644 Makefile.bor delete mode 100644 NEWS delete mode 100644 PROBLEM-REPORT-FORM delete mode 100644 README delete mode 100644 STL/ACE_Changes delete mode 100644 STL/readme2.stl delete mode 100644 Static_Performance.dsw delete mode 100644 TAO/orbsvcs/orbsvcs/AVStreams_Full.idl delete mode 100644 TAO/tao/factories.h delete mode 100644 THANKS delete mode 100644 TODO delete mode 100644 VERSION delete mode 100644 WindozeCE/ACEApp.cpp delete mode 100644 WindozeCE/ACEApp.h delete mode 100644 WindozeCE/README delete mode 100644 WindozeCE/StdAfx.cpp delete mode 100644 WindozeCE/StdAfx.h delete mode 100644 WindozeCE/WindozeCE.aps delete mode 100644 WindozeCE/WindozeCE.clw delete mode 100644 WindozeCE/WindozeCE.cpp delete mode 100644 WindozeCE/WindozeCE.dsp delete mode 100644 WindozeCE/WindozeCE.h delete mode 100644 WindozeCE/WindozeCE.plg delete mode 100644 WindozeCE/WindozeCE.rc delete mode 100644 WindozeCE/WindozeCEDlg.cpp delete mode 100644 WindozeCE/WindozeCEDlg.h delete mode 100644 WindozeCE/res/WindozeCE.ico delete mode 100644 WindozeCE/res/WindozeCE.rc2 delete mode 100644 WindozeCE/resource.h delete mode 100644 acconfig.h delete mode 100644 ace-config.1.in delete mode 100644 ace-config.in delete mode 100644 ace/ACE.cpp delete mode 100644 ace/ACE.h delete mode 100644 ace/ACE.i delete mode 100644 ace/ACED.cpp delete mode 100644 ace/ACER.cpp delete mode 100644 ace/ARGV.cpp delete mode 100644 ace/ARGV.h delete mode 100644 ace/ARGV.i delete mode 100644 ace/ATM_Acceptor.cpp delete mode 100644 ace/ATM_Acceptor.h delete mode 100644 ace/ATM_Acceptor.i delete mode 100644 ace/ATM_Addr.cpp delete mode 100644 ace/ATM_Addr.h delete mode 100644 ace/ATM_Addr.i delete mode 100644 ace/ATM_Connector.cpp delete mode 100644 ace/ATM_Connector.h delete mode 100644 ace/ATM_Connector.i delete mode 100644 ace/ATM_Params.cpp delete mode 100644 ace/ATM_Params.h delete mode 100644 ace/ATM_Params.i delete mode 100644 ace/ATM_QoS.cpp delete mode 100644 ace/ATM_QoS.h delete mode 100644 ace/ATM_QoS.i delete mode 100644 ace/ATM_Stream.cpp delete mode 100644 ace/ATM_Stream.h delete mode 100644 ace/ATM_Stream.i delete mode 100644 ace/Acceptor.cpp delete mode 100644 ace/Acceptor.h delete mode 100644 ace/Acceptor.i delete mode 100644 ace/Activation_Queue.cpp delete mode 100644 ace/Activation_Queue.h delete mode 100644 ace/Activation_Queue.i delete mode 100644 ace/Active_Map_Manager.cpp delete mode 100644 ace/Active_Map_Manager.h delete mode 100644 ace/Active_Map_Manager.i delete mode 100644 ace/Active_Map_Manager_T.cpp delete mode 100644 ace/Active_Map_Manager_T.h delete mode 100644 ace/Active_Map_Manager_T.i delete mode 100644 ace/Addr.cpp delete mode 100644 ace/Addr.h delete mode 100644 ace/Addr.i delete mode 100644 ace/Arg_Shifter.cpp delete mode 100644 ace/Arg_Shifter.h delete mode 100644 ace/Array.h delete mode 100644 ace/Asynch_Acceptor.cpp delete mode 100644 ace/Asynch_Acceptor.h delete mode 100644 ace/Asynch_Acceptor.i delete mode 100644 ace/Asynch_IO.cpp delete mode 100644 ace/Asynch_IO.h delete mode 100644 ace/Asynch_IO.i delete mode 100644 ace/Asynch_IO_Impl.cpp delete mode 100644 ace/Asynch_IO_Impl.h delete mode 100644 ace/Asynch_IO_Impl.i delete mode 100644 ace/Atomic_Op.i delete mode 100644 ace/Auto_Ptr.cpp delete mode 100644 ace/Auto_Ptr.h delete mode 100644 ace/Auto_Ptr.i delete mode 100644 ace/Based_Pointer_Repository.cpp delete mode 100644 ace/Based_Pointer_Repository.h delete mode 100644 ace/Based_Pointer_T.cpp delete mode 100644 ace/Based_Pointer_T.h delete mode 100644 ace/Based_Pointer_T.i delete mode 100644 ace/Basic_Types.cpp delete mode 100644 ace/Basic_Types.h delete mode 100644 ace/Basic_Types.i delete mode 100644 ace/CDR_Stream.cpp delete mode 100644 ace/CDR_Stream.h delete mode 100644 ace/CDR_Stream.i delete mode 100644 ace/CLASSIX/CLASSIX_Addr.cpp delete mode 100644 ace/CLASSIX/CLASSIX_Addr.h delete mode 100644 ace/CLASSIX/CLASSIX_Addr.i delete mode 100644 ace/CLASSIX/CLASSIX_CLD_Connector.cpp delete mode 100644 ace/CLASSIX/CLASSIX_CLD_Connector.h delete mode 100644 ace/CLASSIX/CLASSIX_CLD_Connector.i delete mode 100644 ace/CLASSIX/CLASSIX_CO_Acceptor.cpp delete mode 100644 ace/CLASSIX/CLASSIX_CO_Acceptor.h delete mode 100644 ace/CLASSIX/CLASSIX_CO_Acceptor.i delete mode 100644 ace/CLASSIX/CLASSIX_CO_Connector.cpp delete mode 100644 ace/CLASSIX/CLASSIX_CO_Connector.h delete mode 100644 ace/CLASSIX/CLASSIX_CO_Connector.i delete mode 100644 ace/CLASSIX/CLASSIX_Dgram_Mcast.cpp delete mode 100644 ace/CLASSIX/CLASSIX_Dgram_Mcast.h delete mode 100644 ace/CLASSIX/CLASSIX_Dgram_Mcast.i delete mode 100644 ace/CLASSIX/CLASSIX_Group.cpp delete mode 100644 ace/CLASSIX/CLASSIX_Group.h delete mode 100644 ace/CLASSIX/CLASSIX_Group.i delete mode 100644 ace/CLASSIX/CLASSIX_Group_Dynamic.cpp delete mode 100644 ace/CLASSIX/CLASSIX_Group_Dynamic.h delete mode 100644 ace/CLASSIX/CLASSIX_Group_Dynamic.i delete mode 100644 ace/CLASSIX/CLASSIX_Group_Stamp.cpp delete mode 100644 ace/CLASSIX/CLASSIX_Group_Stamp.h delete mode 100644 ace/CLASSIX/CLASSIX_Group_Stamp.i delete mode 100644 ace/CLASSIX/CLASSIX_OS.cpp delete mode 100644 ace/CLASSIX/CLASSIX_OS.h delete mode 100644 ace/CLASSIX/CLASSIX_OS.i delete mode 100644 ace/CLASSIX/CLASSIX_Peer_SAP.cpp delete mode 100644 ace/CLASSIX/CLASSIX_Peer_SAP.h delete mode 100644 ace/CLASSIX/CLASSIX_Peer_SAP.i delete mode 100644 ace/CLASSIX/CLASSIX_Port.cpp delete mode 100644 ace/CLASSIX/CLASSIX_Port.h delete mode 100644 ace/CLASSIX/CLASSIX_Port.i delete mode 100644 ace/CLASSIX/CLASSIX_Port_Core.cpp delete mode 100644 ace/CLASSIX/CLASSIX_Port_Core.h delete mode 100644 ace/CLASSIX/CLASSIX_Port_Core.i delete mode 100644 ace/CLASSIX/CLASSIX_Port_Default.cpp delete mode 100644 ace/CLASSIX/CLASSIX_Port_Default.h delete mode 100644 ace/CLASSIX/CLASSIX_Port_Default.i delete mode 100644 ace/CLASSIX/CLASSIX_SAP.cpp delete mode 100644 ace/CLASSIX/CLASSIX_SAP.h delete mode 100644 ace/CLASSIX/CLASSIX_SAP.i delete mode 100644 ace/CLASSIX/CLASSIX_Select_Reactor.cpp delete mode 100644 ace/CLASSIX/CLASSIX_Select_Reactor.h delete mode 100644 ace/CLASSIX/CLASSIX_Select_Reactor.i delete mode 100644 ace/CLASSIX/CLASSIX_Stream.cpp delete mode 100644 ace/CLASSIX/CLASSIX_Stream.h delete mode 100644 ace/CLASSIX/CLASSIX_Stream.i delete mode 100644 ace/CLASSIX/Makefile delete mode 100644 ace/CORBA_Handler.cpp delete mode 100644 ace/CORBA_Handler.h delete mode 100644 ace/CORBA_Handler.i delete mode 100644 ace/CORBA_Ref.cpp delete mode 100644 ace/CORBA_Ref.h delete mode 100644 ace/CORBA_Ref.i delete mode 100644 ace/CORBA_macros.h delete mode 100644 ace/Cache_Map_Manager_T.cpp delete mode 100644 ace/Cache_Map_Manager_T.h delete mode 100644 ace/Cache_Map_Manager_T.i delete mode 100644 ace/Cached_Connect_Strategy_T.cpp delete mode 100644 ace/Cached_Connect_Strategy_T.h delete mode 100644 ace/Cached_Connect_Strategy_T.i delete mode 100644 ace/Caching_Strategies_T.cpp delete mode 100644 ace/Caching_Strategies_T.h delete mode 100644 ace/Caching_Strategies_T.i delete mode 100644 ace/Caching_Utility_T.cpp delete mode 100644 ace/Caching_Utility_T.h delete mode 100644 ace/Caching_Utility_T.i delete mode 100644 ace/Cleanup_Strategies_T.cpp delete mode 100644 ace/Cleanup_Strategies_T.h delete mode 100644 ace/Cleanup_Strategies_T.i delete mode 100644 ace/Codeset_IBM1047.cpp delete mode 100644 ace/Codeset_IBM1047.h delete mode 100644 ace/Connector.cpp delete mode 100644 ace/Connector.h delete mode 100644 ace/Connector.i delete mode 100644 ace/Containers.cpp delete mode 100644 ace/Containers.h delete mode 100644 ace/Containers.i delete mode 100644 ace/Containers_T.cpp delete mode 100644 ace/Containers_T.h delete mode 100644 ace/Containers_T.i delete mode 100644 ace/DEV.cpp delete mode 100644 ace/DEV.h delete mode 100644 ace/DEV.i delete mode 100644 ace/DEV_Addr.cpp delete mode 100644 ace/DEV_Addr.h delete mode 100644 ace/DEV_Addr.i delete mode 100644 ace/DEV_Connector.cpp delete mode 100644 ace/DEV_Connector.h delete mode 100644 ace/DEV_Connector.i delete mode 100644 ace/DEV_IO.cpp delete mode 100644 ace/DEV_IO.h delete mode 100644 ace/DEV_IO.i delete mode 100644 ace/DLL.cpp delete mode 100644 ace/DLL.h delete mode 100644 ace/Date_Time.cpp delete mode 100644 ace/Date_Time.h delete mode 100644 ace/Date_Time.i delete mode 100644 ace/Dirent.cpp delete mode 100644 ace/Dirent.h delete mode 100644 ace/Dirent.i delete mode 100644 ace/Dump.cpp delete mode 100644 ace/Dump.h delete mode 100644 ace/Dump_T.cpp delete mode 100644 ace/Dump_T.h delete mode 100644 ace/Dynamic.cpp delete mode 100644 ace/Dynamic.h delete mode 100644 ace/Dynamic.i delete mode 100644 ace/Dynamic_Service.cpp delete mode 100644 ace/Dynamic_Service.h delete mode 100644 ace/Dynamic_Service.i delete mode 100644 ace/Env_Value_T.cpp delete mode 100644 ace/Env_Value_T.h delete mode 100644 ace/Env_Value_T.i delete mode 100644 ace/Event_Handler.cpp delete mode 100644 ace/Event_Handler.h delete mode 100644 ace/Event_Handler.i delete mode 100644 ace/Event_Handler_T.cpp delete mode 100644 ace/Event_Handler_T.h delete mode 100644 ace/Event_Handler_T.i delete mode 100644 ace/FIFO.cpp delete mode 100644 ace/FIFO.h delete mode 100644 ace/FIFO.i delete mode 100644 ace/FIFO_Recv.cpp delete mode 100644 ace/FIFO_Recv.h delete mode 100644 ace/FIFO_Recv.i delete mode 100644 ace/FIFO_Recv_Msg.cpp delete mode 100644 ace/FIFO_Recv_Msg.h delete mode 100644 ace/FIFO_Recv_Msg.i delete mode 100644 ace/FIFO_Send.cpp delete mode 100644 ace/FIFO_Send.h delete mode 100644 ace/FIFO_Send.i delete mode 100644 ace/FIFO_Send_Msg.cpp delete mode 100644 ace/FIFO_Send_Msg.h delete mode 100644 ace/FIFO_Send_Msg.i delete mode 100644 ace/FILE.cpp delete mode 100644 ace/FILE.h delete mode 100644 ace/FILE.i delete mode 100644 ace/FILE_Addr.cpp delete mode 100644 ace/FILE_Addr.h delete mode 100644 ace/FILE_Addr.i delete mode 100644 ace/FILE_Connector.cpp delete mode 100644 ace/FILE_Connector.h delete mode 100644 ace/FILE_Connector.i delete mode 100644 ace/FILE_IO.cpp delete mode 100644 ace/FILE_IO.h delete mode 100644 ace/FILE_IO.i delete mode 100644 ace/Filecache.cpp delete mode 100644 ace/Filecache.h delete mode 100644 ace/FlReactor.cpp delete mode 100644 ace/FlReactor.h delete mode 100644 ace/FlReactor.i delete mode 100644 ace/Free_List.cpp delete mode 100644 ace/Free_List.h delete mode 100644 ace/Free_List.i delete mode 100644 ace/Functor.cpp delete mode 100644 ace/Functor.h delete mode 100644 ace/Functor.i delete mode 100644 ace/Functor_T.cpp delete mode 100644 ace/Functor_T.h delete mode 100644 ace/Functor_T.i delete mode 100644 ace/Future.cpp delete mode 100644 ace/Future.h delete mode 100644 ace/Future_Set.cpp delete mode 100644 ace/Future_Set.h delete mode 100644 ace/Get_Opt.cpp delete mode 100644 ace/Get_Opt.h delete mode 100644 ace/Get_Opt.i delete mode 100644 ace/Handle_Gobbler.h delete mode 100644 ace/Handle_Gobbler.i delete mode 100644 ace/Handle_Set.cpp delete mode 100644 ace/Handle_Set.h delete mode 100644 ace/Handle_Set.i delete mode 100644 ace/Hash_Cache_Map_Manager_T.cpp delete mode 100644 ace/Hash_Cache_Map_Manager_T.h delete mode 100644 ace/Hash_Cache_Map_Manager_T.i delete mode 100644 ace/Hash_Map_Manager.cpp delete mode 100644 ace/Hash_Map_Manager.h delete mode 100644 ace/Hash_Map_Manager.i delete mode 100644 ace/Hash_Map_Manager_T.cpp delete mode 100644 ace/Hash_Map_Manager_T.h delete mode 100644 ace/Hash_Map_Manager_T.i delete mode 100644 ace/Hash_Map_With_Allocator_T.cpp delete mode 100644 ace/Hash_Map_With_Allocator_T.h delete mode 100644 ace/Hash_Map_With_Allocator_T.i delete mode 100644 ace/High_Res_Timer.cpp delete mode 100644 ace/High_Res_Timer.h delete mode 100644 ace/High_Res_Timer.i delete mode 100644 ace/INET_Addr.cpp delete mode 100644 ace/INET_Addr.h delete mode 100644 ace/INET_Addr.i delete mode 100644 ace/IOStream.cpp delete mode 100644 ace/IOStream.h delete mode 100644 ace/IOStream_T.cpp delete mode 100644 ace/IOStream_T.h delete mode 100644 ace/IOStream_T.i delete mode 100644 ace/IO_Cntl_Msg.cpp delete mode 100644 ace/IO_Cntl_Msg.h delete mode 100644 ace/IO_Cntl_Msg.i delete mode 100644 ace/IO_SAP.cpp delete mode 100644 ace/IO_SAP.h delete mode 100644 ace/IO_SAP.i delete mode 100644 ace/IPC_SAP.cpp delete mode 100644 ace/IPC_SAP.h delete mode 100644 ace/IPC_SAP.i delete mode 100644 ace/LOCK_SOCK_Acceptor.cpp delete mode 100644 ace/LOCK_SOCK_Acceptor.h delete mode 100644 ace/LSOCK.cpp delete mode 100644 ace/LSOCK.h delete mode 100644 ace/LSOCK.i delete mode 100644 ace/LSOCK_Acceptor.cpp delete mode 100644 ace/LSOCK_Acceptor.h delete mode 100644 ace/LSOCK_Acceptor.i delete mode 100644 ace/LSOCK_CODgram.cpp delete mode 100644 ace/LSOCK_CODgram.h delete mode 100644 ace/LSOCK_CODgram.i delete mode 100644 ace/LSOCK_Connector.cpp delete mode 100644 ace/LSOCK_Connector.h delete mode 100644 ace/LSOCK_Connector.i delete mode 100644 ace/LSOCK_Dgram.cpp delete mode 100644 ace/LSOCK_Dgram.h delete mode 100644 ace/LSOCK_Dgram.i delete mode 100644 ace/LSOCK_Stream.cpp delete mode 100644 ace/LSOCK_Stream.h delete mode 100644 ace/LSOCK_Stream.i delete mode 100644 ace/Local_Name_Space.cpp delete mode 100644 ace/Local_Name_Space.h delete mode 100644 ace/Local_Name_Space_T.cpp delete mode 100644 ace/Local_Name_Space_T.h delete mode 100644 ace/Local_Tokens.cpp delete mode 100644 ace/Local_Tokens.h delete mode 100644 ace/Local_Tokens.i delete mode 100644 ace/Log_Msg.cpp delete mode 100644 ace/Log_Msg.h delete mode 100644 ace/Log_Msg.i delete mode 100644 ace/Log_Priority.h delete mode 100644 ace/Log_Record.cpp delete mode 100644 ace/Log_Record.h delete mode 100644 ace/Log_Record.i delete mode 100644 ace/Makefile delete mode 100644 ace/Makefile.am delete mode 100644 ace/Makefile.bor delete mode 100644 ace/Malloc.cpp delete mode 100644 ace/Malloc.h delete mode 100644 ace/Malloc.i delete mode 100644 ace/Malloc_Base.h delete mode 100644 ace/Malloc_T.cpp delete mode 100644 ace/Malloc_T.h delete mode 100644 ace/Malloc_T.i delete mode 100644 ace/Managed_Object.cpp delete mode 100644 ace/Managed_Object.h delete mode 100644 ace/Managed_Object.i delete mode 100644 ace/Map.cpp delete mode 100644 ace/Map.h delete mode 100644 ace/Map.i delete mode 100644 ace/Map_Manager.cpp delete mode 100644 ace/Map_Manager.h delete mode 100644 ace/Map_Manager.i delete mode 100644 ace/Map_T.cpp delete mode 100644 ace/Map_T.h delete mode 100644 ace/Map_T.i delete mode 100644 ace/Mem_Map.cpp delete mode 100644 ace/Mem_Map.h delete mode 100644 ace/Mem_Map.i delete mode 100644 ace/Memory_Pool.cpp delete mode 100644 ace/Memory_Pool.h delete mode 100644 ace/Memory_Pool.i delete mode 100644 ace/Message_Block.cpp delete mode 100644 ace/Message_Block.h delete mode 100644 ace/Message_Block.i delete mode 100644 ace/Message_Block_T.cpp delete mode 100644 ace/Message_Block_T.h delete mode 100644 ace/Message_Block_T.i delete mode 100644 ace/Message_Queue.cpp delete mode 100644 ace/Message_Queue.h delete mode 100644 ace/Message_Queue.i delete mode 100644 ace/Message_Queue_T.cpp delete mode 100644 ace/Message_Queue_T.h delete mode 100644 ace/Message_Queue_T.i delete mode 100644 ace/Method_Object.h delete mode 100644 ace/Method_Request.cpp delete mode 100644 ace/Method_Request.h delete mode 100644 ace/Module.cpp delete mode 100644 ace/Module.h delete mode 100644 ace/Module.i delete mode 100644 ace/Msg_WFMO_Reactor.cpp delete mode 100644 ace/Msg_WFMO_Reactor.h delete mode 100644 ace/Msg_WFMO_Reactor.i delete mode 100644 ace/Multiplexor.cpp delete mode 100644 ace/Multiplexor.h delete mode 100644 ace/Multiplexor.i delete mode 100644 ace/NT_Service.cpp delete mode 100644 ace/NT_Service.h delete mode 100644 ace/NT_Service.i delete mode 100644 ace/Name_Proxy.cpp delete mode 100644 ace/Name_Proxy.h delete mode 100644 ace/Name_Request_Reply.cpp delete mode 100644 ace/Name_Request_Reply.h delete mode 100644 ace/Name_Space.cpp delete mode 100644 ace/Name_Space.h delete mode 100644 ace/Naming_Context.cpp delete mode 100644 ace/Naming_Context.h delete mode 100644 ace/OS.cpp delete mode 100644 ace/OS.h delete mode 100644 ace/OS.i delete mode 100644 ace/Object_Manager.cpp delete mode 100644 ace/Object_Manager.h delete mode 100644 ace/Object_Manager.i delete mode 100644 ace/Obstack.cpp delete mode 100644 ace/Obstack.h delete mode 100644 ace/Obstack.i delete mode 100644 ace/POSIX_Asynch_IO.cpp delete mode 100644 ace/POSIX_Asynch_IO.h delete mode 100644 ace/POSIX_Asynch_IO.i delete mode 100644 ace/POSIX_Proactor.cpp delete mode 100644 ace/POSIX_Proactor.h delete mode 100644 ace/POSIX_Proactor.i delete mode 100644 ace/Pair.cpp delete mode 100644 ace/Pair.h delete mode 100644 ace/Pair.i delete mode 100644 ace/Pair_T.cpp delete mode 100644 ace/Pair_T.h delete mode 100644 ace/Pair_T.i delete mode 100644 ace/Parse_Node.cpp delete mode 100644 ace/Parse_Node.h delete mode 100644 ace/Parse_Node.i delete mode 100644 ace/Pipe.cpp delete mode 100644 ace/Pipe.h delete mode 100644 ace/Pipe.i delete mode 100644 ace/Priority_Reactor.cpp delete mode 100644 ace/Priority_Reactor.h delete mode 100644 ace/Priority_Reactor.i delete mode 100644 ace/Proactor.cpp delete mode 100644 ace/Proactor.h delete mode 100644 ace/Proactor.i delete mode 100644 ace/Proactor_Impl.h delete mode 100644 ace/Process.cpp delete mode 100644 ace/Process.h delete mode 100644 ace/Process.i delete mode 100644 ace/Process_Manager.cpp delete mode 100644 ace/Process_Manager.h delete mode 100644 ace/Process_Manager.i delete mode 100644 ace/Profile_Timer.cpp delete mode 100644 ace/Profile_Timer.h delete mode 100644 ace/Profile_Timer.i delete mode 100644 ace/RB_Tree.cpp delete mode 100644 ace/RB_Tree.h delete mode 100644 ace/RB_Tree.i delete mode 100644 ace/README delete mode 100644 ace/Reactor.cpp delete mode 100644 ace/Reactor.h delete mode 100644 ace/Reactor.i delete mode 100644 ace/Reactor_Impl.h delete mode 100644 ace/Read_Buffer.cpp delete mode 100644 ace/Read_Buffer.h delete mode 100644 ace/Read_Buffer.i delete mode 100644 ace/Registry.cpp delete mode 100644 ace/Registry.h delete mode 100644 ace/Registry_Name_Space.cpp delete mode 100644 ace/Registry_Name_Space.h delete mode 100644 ace/Remote_Name_Space.cpp delete mode 100644 ace/Remote_Name_Space.h delete mode 100644 ace/Remote_Tokens.cpp delete mode 100644 ace/Remote_Tokens.h delete mode 100644 ace/Remote_Tokens.i delete mode 100644 ace/SOCK.cpp delete mode 100644 ace/SOCK.h delete mode 100644 ace/SOCK.i delete mode 100644 ace/SOCK_Acceptor.cpp delete mode 100644 ace/SOCK_Acceptor.h delete mode 100644 ace/SOCK_Acceptor.i delete mode 100644 ace/SOCK_CODgram.cpp delete mode 100644 ace/SOCK_CODgram.h delete mode 100644 ace/SOCK_CODgram.i delete mode 100644 ace/SOCK_Connector.cpp delete mode 100644 ace/SOCK_Connector.h delete mode 100644 ace/SOCK_Connector.i delete mode 100644 ace/SOCK_Dgram.cpp delete mode 100644 ace/SOCK_Dgram.h delete mode 100644 ace/SOCK_Dgram.i delete mode 100644 ace/SOCK_Dgram_Bcast.cpp delete mode 100644 ace/SOCK_Dgram_Bcast.h delete mode 100644 ace/SOCK_Dgram_Bcast.i delete mode 100644 ace/SOCK_Dgram_Mcast.cpp delete mode 100644 ace/SOCK_Dgram_Mcast.h delete mode 100644 ace/SOCK_Dgram_Mcast.i delete mode 100644 ace/SOCK_IO.cpp delete mode 100644 ace/SOCK_IO.h delete mode 100644 ace/SOCK_IO.i delete mode 100644 ace/SOCK_Stream.cpp delete mode 100644 ace/SOCK_Stream.h delete mode 100644 ace/SOCK_Stream.i delete mode 100644 ace/SPIPE.cpp delete mode 100644 ace/SPIPE.h delete mode 100644 ace/SPIPE.i delete mode 100644 ace/SPIPE_Acceptor.cpp delete mode 100644 ace/SPIPE_Acceptor.h delete mode 100644 ace/SPIPE_Acceptor.i delete mode 100644 ace/SPIPE_Addr.cpp delete mode 100644 ace/SPIPE_Addr.h delete mode 100644 ace/SPIPE_Addr.i delete mode 100644 ace/SPIPE_Connector.cpp delete mode 100644 ace/SPIPE_Connector.h delete mode 100644 ace/SPIPE_Connector.i delete mode 100644 ace/SPIPE_Stream.cpp delete mode 100644 ace/SPIPE_Stream.h delete mode 100644 ace/SPIPE_Stream.i delete mode 100644 ace/SString.cpp delete mode 100644 ace/SString.h delete mode 100644 ace/SString.i delete mode 100644 ace/SV_Message.cpp delete mode 100644 ace/SV_Message.h delete mode 100644 ace/SV_Message.i delete mode 100644 ace/SV_Message_Queue.cpp delete mode 100644 ace/SV_Message_Queue.h delete mode 100644 ace/SV_Message_Queue.i delete mode 100644 ace/SV_Semaphore_Complex.cpp delete mode 100644 ace/SV_Semaphore_Complex.h delete mode 100644 ace/SV_Semaphore_Complex.i delete mode 100644 ace/SV_Semaphore_Simple.cpp delete mode 100644 ace/SV_Semaphore_Simple.h delete mode 100644 ace/SV_Semaphore_Simple.i delete mode 100644 ace/SV_Shared_Memory.cpp delete mode 100644 ace/SV_Shared_Memory.h delete mode 100644 ace/SV_Shared_Memory.i delete mode 100644 ace/Sched_Params.cpp delete mode 100644 ace/Sched_Params.h delete mode 100644 ace/Sched_Params.i delete mode 100644 ace/Select_Reactor.cpp delete mode 100644 ace/Select_Reactor.h delete mode 100644 ace/Select_Reactor.i delete mode 100644 ace/Select_Reactor_Base.cpp delete mode 100644 ace/Select_Reactor_Base.h delete mode 100644 ace/Select_Reactor_Base.i delete mode 100644 ace/Select_Reactor_T.cpp delete mode 100644 ace/Select_Reactor_T.h delete mode 100644 ace/Select_Reactor_T.i delete mode 100644 ace/Service_Config.cpp delete mode 100644 ace/Service_Config.h delete mode 100644 ace/Service_Config.i delete mode 100644 ace/Service_Manager.cpp delete mode 100644 ace/Service_Manager.h delete mode 100644 ace/Service_Manager.i delete mode 100644 ace/Service_Object.cpp delete mode 100644 ace/Service_Object.h delete mode 100644 ace/Service_Object.i delete mode 100644 ace/Service_Repository.cpp delete mode 100644 ace/Service_Repository.h delete mode 100644 ace/Service_Repository.i delete mode 100644 ace/Service_Types.cpp delete mode 100644 ace/Service_Types.h delete mode 100644 ace/Service_Types.i delete mode 100644 ace/Shared_Memory.cpp delete mode 100644 ace/Shared_Memory.h delete mode 100644 ace/Shared_Memory_MM.cpp delete mode 100644 ace/Shared_Memory_MM.h delete mode 100644 ace/Shared_Memory_MM.i delete mode 100644 ace/Shared_Memory_SV.cpp delete mode 100644 ace/Shared_Memory_SV.h delete mode 100644 ace/Shared_Memory_SV.i delete mode 100644 ace/Shared_Object.cpp delete mode 100644 ace/Shared_Object.h delete mode 100644 ace/Shared_Object.i delete mode 100644 ace/Signal.cpp delete mode 100644 ace/Signal.h delete mode 100644 ace/Signal.i delete mode 100644 ace/Singleton.cpp delete mode 100644 ace/Singleton.h delete mode 100644 ace/Singleton.i delete mode 100644 ace/Stats.cpp delete mode 100644 ace/Stats.h delete mode 100644 ace/Stats.i delete mode 100644 ace/Strategies.cpp delete mode 100644 ace/Strategies.h delete mode 100644 ace/Strategies.i delete mode 100644 ace/Strategies_T.cpp delete mode 100644 ace/Strategies_T.h delete mode 100644 ace/Strategies_T.i delete mode 100644 ace/Stream.cpp delete mode 100644 ace/Stream.h delete mode 100644 ace/Stream.i delete mode 100644 ace/Stream_Modules.cpp delete mode 100644 ace/Stream_Modules.h delete mode 100644 ace/Stream_Modules.i delete mode 100644 ace/Svc_Conf.h delete mode 100644 ace/Svc_Conf.l delete mode 100644 ace/Svc_Conf.y delete mode 100644 ace/Svc_Conf_Tokens.h delete mode 100644 ace/Svc_Conf_l.cpp delete mode 100644 ace/Svc_Conf_y.cpp delete mode 100644 ace/Svc_Handler.cpp delete mode 100644 ace/Svc_Handler.h delete mode 100644 ace/Svc_Handler.i delete mode 100644 ace/Synch.cpp delete mode 100644 ace/Synch.h delete mode 100644 ace/Synch.i delete mode 100644 ace/Synch_Options.cpp delete mode 100644 ace/Synch_Options.h delete mode 100644 ace/Synch_Options.i delete mode 100644 ace/Synch_T.cpp delete mode 100644 ace/Synch_T.h delete mode 100644 ace/Synch_T.i delete mode 100644 ace/System_Time.cpp delete mode 100644 ace/System_Time.h delete mode 100644 ace/TLI.cpp delete mode 100644 ace/TLI.h delete mode 100644 ace/TLI.i delete mode 100644 ace/TLI_Acceptor.cpp delete mode 100644 ace/TLI_Acceptor.h delete mode 100644 ace/TLI_Acceptor.i delete mode 100644 ace/TLI_Connector.cpp delete mode 100644 ace/TLI_Connector.h delete mode 100644 ace/TLI_Connector.i delete mode 100644 ace/TLI_Stream.cpp delete mode 100644 ace/TLI_Stream.h delete mode 100644 ace/TLI_Stream.i delete mode 100644 ace/TP_Reactor.cpp delete mode 100644 ace/TP_Reactor.h delete mode 100644 ace/TP_Reactor.i delete mode 100644 ace/TTY_IO.cpp delete mode 100644 ace/TTY_IO.h delete mode 100644 ace/Task.cpp delete mode 100644 ace/Task.h delete mode 100644 ace/Task.i delete mode 100644 ace/Task_T.cpp delete mode 100644 ace/Task_T.h delete mode 100644 ace/Task_T.i delete mode 100644 ace/Template_Instantiations.cpp delete mode 100644 ace/Thread.cpp delete mode 100644 ace/Thread.h delete mode 100644 ace/Thread.i delete mode 100644 ace/Thread_Manager.cpp delete mode 100644 ace/Thread_Manager.h delete mode 100644 ace/Thread_Manager.i delete mode 100644 ace/Time_Request_Reply.cpp delete mode 100644 ace/Time_Request_Reply.h delete mode 100644 ace/Time_Value.h delete mode 100644 ace/Timeprobe.cpp delete mode 100644 ace/Timeprobe.h delete mode 100644 ace/Timeprobe.i delete mode 100644 ace/Timeprobe_T.cpp delete mode 100644 ace/Timeprobe_T.h delete mode 100644 ace/Timer_Hash.cpp delete mode 100644 ace/Timer_Hash.h delete mode 100644 ace/Timer_Hash_T.cpp delete mode 100644 ace/Timer_Hash_T.h delete mode 100644 ace/Timer_Heap.cpp delete mode 100644 ace/Timer_Heap.h delete mode 100644 ace/Timer_Heap_T.cpp delete mode 100644 ace/Timer_Heap_T.h delete mode 100644 ace/Timer_List.cpp delete mode 100644 ace/Timer_List.h delete mode 100644 ace/Timer_List_T.cpp delete mode 100644 ace/Timer_List_T.h delete mode 100644 ace/Timer_Queue.cpp delete mode 100644 ace/Timer_Queue.h delete mode 100644 ace/Timer_Queue.i delete mode 100644 ace/Timer_Queue_Adapters.cpp delete mode 100644 ace/Timer_Queue_Adapters.h delete mode 100644 ace/Timer_Queue_Adapters.i delete mode 100644 ace/Timer_Queue_T.cpp delete mode 100644 ace/Timer_Queue_T.h delete mode 100644 ace/Timer_Queue_T.i delete mode 100644 ace/Timer_Wheel.cpp delete mode 100644 ace/Timer_Wheel.h delete mode 100644 ace/Timer_Wheel_T.cpp delete mode 100644 ace/Timer_Wheel_T.h delete mode 100644 ace/TkReactor.cpp delete mode 100644 ace/TkReactor.h delete mode 100644 ace/Token.cpp delete mode 100644 ace/Token.h delete mode 100644 ace/Token.i delete mode 100644 ace/Token_Collection.cpp delete mode 100644 ace/Token_Collection.h delete mode 100644 ace/Token_Collection.i delete mode 100644 ace/Token_Invariants.cpp delete mode 100644 ace/Token_Invariants.h delete mode 100644 ace/Token_Invariants.i delete mode 100644 ace/Token_Manager.cpp delete mode 100644 ace/Token_Manager.h delete mode 100644 ace/Token_Manager.i delete mode 100644 ace/Token_Request_Reply.cpp delete mode 100644 ace/Token_Request_Reply.h delete mode 100644 ace/Token_Request_Reply.i delete mode 100644 ace/Trace.cpp delete mode 100644 ace/Trace.h delete mode 100644 ace/Trace.i delete mode 100644 ace/Typed_SV_Message.cpp delete mode 100644 ace/Typed_SV_Message.h delete mode 100644 ace/Typed_SV_Message.i delete mode 100644 ace/Typed_SV_Message_Queue.cpp delete mode 100644 ace/Typed_SV_Message_Queue.h delete mode 100644 ace/Typed_SV_Message_Queue.i delete mode 100644 ace/UNIX_Addr.cpp delete mode 100644 ace/UNIX_Addr.h delete mode 100644 ace/UNIX_Addr.i delete mode 100644 ace/UPIPE_Acceptor.cpp delete mode 100644 ace/UPIPE_Acceptor.h delete mode 100644 ace/UPIPE_Acceptor.i delete mode 100644 ace/UPIPE_Addr.h delete mode 100644 ace/UPIPE_Connector.cpp delete mode 100644 ace/UPIPE_Connector.h delete mode 100644 ace/UPIPE_Connector.i delete mode 100644 ace/UPIPE_Stream.cpp delete mode 100644 ace/UPIPE_Stream.h delete mode 100644 ace/UPIPE_Stream.i delete mode 100644 ace/Version.h delete mode 100644 ace/WFMO_Reactor.cpp delete mode 100644 ace/WFMO_Reactor.h delete mode 100644 ace/WFMO_Reactor.i delete mode 100644 ace/WIN32_Asynch_IO.cpp delete mode 100644 ace/WIN32_Asynch_IO.h delete mode 100644 ace/WIN32_Asynch_IO.i delete mode 100644 ace/WIN32_Proactor.cpp delete mode 100644 ace/WIN32_Proactor.h delete mode 100644 ace/WIN32_Proactor.i delete mode 100644 ace/XTI_ATM_Mcast.cpp delete mode 100644 ace/XTI_ATM_Mcast.h delete mode 100644 ace/XTI_ATM_Mcast.i delete mode 100644 ace/XtReactor.cpp delete mode 100644 ace/XtReactor.h delete mode 100644 ace/ace-dll.icc delete mode 100644 ace/ace-lib.icc delete mode 100644 ace/ace.dsw delete mode 100755 ace/ace.icc delete mode 100644 ace/ace.rc delete mode 100644 ace/ace_ce.dsw delete mode 100644 ace/ace_ce_dll.cfg delete mode 100644 ace/ace_ce_dll.dsp delete mode 100644 ace/ace_dll.dsp delete mode 100644 ace/ace_lib.dsp delete mode 100644 ace/config-WinCE.h delete mode 100644 ace/config-aix-3.2.5.h delete mode 100644 ace/config-aix-4.1.x.h delete mode 100644 ace/config-aix-4.2.x.h delete mode 100644 ace/config-aix-4.3.x.h delete mode 100644 ace/config-aix-4.x.h delete mode 100644 ace/config-chorus.h delete mode 100644 ace/config-cray.h delete mode 100644 ace/config-cygwin32-common.h delete mode 100644 ace/config-cygwin32.h delete mode 100644 ace/config-dgux-4.11-epc.h delete mode 100644 ace/config-dgux-4.x-ghs.h delete mode 100644 ace/config-freebsd-pthread.h delete mode 100644 ace/config-freebsd.h delete mode 100644 ace/config-fsu-pthread.h delete mode 100644 ace/config-g++-common.h delete mode 100644 ace/config-ghs-common.h delete mode 100644 ace/config-hpux-10.x-g++.h delete mode 100644 ace/config-hpux-10.x-hpc++.h delete mode 100644 ace/config-hpux-10.x.h delete mode 100644 ace/config-hpux-11.x-hpc++.h delete mode 100644 ace/config-hpux-9.x-orbix.h delete mode 100644 ace/config-hpux-9.x.h delete mode 100644 ace/config-hpux11.h delete mode 100644 ace/config-irix5.2.h delete mode 100644 ace/config-irix5.3-g++.h delete mode 100644 ace/config-irix5.3-sgic++.h delete mode 100644 ace/config-irix6.x-common.h delete mode 100644 ace/config-irix6.x-g++.h delete mode 100644 ace/config-irix6.x-kcc.h delete mode 100644 ace/config-irix6.x-sgic++-nothreads.h delete mode 100644 ace/config-irix6.x-sgic++.h delete mode 100644 ace/config-kcc-common.h delete mode 100644 ace/config-linux-common.h delete mode 100644 ace/config-linux-lxpthreads.h delete mode 100644 ace/config-linux-pthread.h delete mode 100644 ace/config-linux.h delete mode 100644 ace/config-lynxos.h delete mode 100644 ace/config-m88k.h delete mode 100644 ace/config-minimal.h delete mode 100644 ace/config-mit-pthread.h delete mode 100644 ace/config-mklinux.h delete mode 100644 ace/config-mvs.h delete mode 100644 ace/config-netbsd.h delete mode 100644 ace/config-osf1-3.2.h delete mode 100644 ace/config-osf1-4.0.h delete mode 100644 ace/config-pharlap.h delete mode 100644 ace/config-psos-diab-mips.h delete mode 100644 ace/config-psos-diab-ppc.h delete mode 100644 ace/config-psos-diab.h delete mode 100644 ace/config-psos-tm.h delete mode 100644 ace/config-psosim-g++.h delete mode 100644 ace/config-qnx-neutrino.h delete mode 100644 ace/config-sco-4.2-nothread.h delete mode 100644 ace/config-sco-5.0.0-fsu-pthread.h delete mode 100644 ace/config-sco-5.0.0-mit-pthread.h delete mode 100644 ace/config-sco-5.0.0-nothread.h delete mode 100644 ace/config-sco-5.0.0.h delete mode 100644 ace/config-sunos4-g++.h delete mode 100644 ace/config-sunos4-lucid3.2.h delete mode 100644 ace/config-sunos4-sun3.x.h delete mode 100644 ace/config-sunos4-sun4.1.4.h delete mode 100644 ace/config-sunos4-sun4.x-orbix.h delete mode 100644 ace/config-sunos4-sun4.x.h delete mode 100644 ace/config-sunos5.4-centerline-2.x.h delete mode 100644 ace/config-sunos5.4-g++.h delete mode 100644 ace/config-sunos5.4-sunc++-4.x-orbix.h delete mode 100644 ace/config-sunos5.4-sunc++-4.x.h delete mode 100644 ace/config-sunos5.5.h delete mode 100644 ace/config-sunos5.6-sunc++-4.x.h delete mode 100644 ace/config-sunos5.6.h delete mode 100644 ace/config-sunos5.7.h delete mode 100644 ace/config-sunos5.x-sunc++-4.x-orbix.h delete mode 100644 ace/config-tandem.h delete mode 100644 ace/config-tru64.h delete mode 100644 ace/config-unixware-2.01-g++.h delete mode 100644 ace/config-unixware-2.1.2-g++.h delete mode 100644 ace/config-visualage.h delete mode 100644 ace/config-vxworks5.x.h delete mode 100644 ace/config-win32-borland.h delete mode 100644 ace/config-win32-common.h delete mode 100644 ace/config-win32-visualage.h delete mode 100644 ace/config-win32.h delete mode 100644 ace/gethrtime.cpp delete mode 100644 ace/inc_user_config.h delete mode 100644 ace/iosfwd.h delete mode 100644 ace/makefile-light delete mode 100644 ace/streams.h delete mode 100644 ace/ws2tcpip.h delete mode 100644 aceConf.sh.in delete mode 100644 aclocal.m4 delete mode 100644 apps/Gateway/Gateway/Channel.cpp delete mode 100644 apps/Gateway/Gateway/Channel.h delete mode 100644 apps/Gateway/Gateway/Channel_Connector.cpp delete mode 100644 apps/Gateway/Gateway/Channel_Connector.h delete mode 100644 apps/Gateway/Gateway/Concrete_Connection_Handlers.cpp delete mode 100644 apps/Gateway/Gateway/Concrete_Connection_Handlers.h delete mode 100644 apps/Gateway/Gateway/Concurrency_Strategies.h delete mode 100644 apps/Gateway/Gateway/Config_Files.cpp delete mode 100644 apps/Gateway/Gateway/Config_Files.h delete mode 100644 apps/Gateway/Gateway/Connection_Handler.cpp delete mode 100644 apps/Gateway/Gateway/Connection_Handler.h delete mode 100644 apps/Gateway/Gateway/Connection_Handler_Acceptor.cpp delete mode 100644 apps/Gateway/Gateway/Connection_Handler_Acceptor.h delete mode 100644 apps/Gateway/Gateway/Connection_Handler_Connector.cpp delete mode 100644 apps/Gateway/Gateway/Connection_Handler_Connector.h delete mode 100644 apps/Gateway/Gateway/Consumer_Dispatch_Set.h delete mode 100644 apps/Gateway/Gateway/Consumer_Entry.cpp delete mode 100644 apps/Gateway/Gateway/Consumer_Entry.h delete mode 100644 apps/Gateway/Gateway/Consumer_Map.cpp delete mode 100644 apps/Gateway/Gateway/Consumer_Map.h delete mode 100644 apps/Gateway/Gateway/Dispatch_Set.h delete mode 100644 apps/Gateway/Gateway/Event.h delete mode 100644 apps/Gateway/Gateway/Event_Channel.cpp delete mode 100644 apps/Gateway/Gateway/Event_Channel.h delete mode 100644 apps/Gateway/Gateway/Event_Forwarding_Discriminator.cpp delete mode 100644 apps/Gateway/Gateway/Event_Forwarding_Discriminator.h delete mode 100644 apps/Gateway/Gateway/File_Parser.cpp delete mode 100644 apps/Gateway/Gateway/File_Parser.h delete mode 100644 apps/Gateway/Gateway/Gateway.cpp delete mode 100644 apps/Gateway/Gateway/Gateway.dsp delete mode 100644 apps/Gateway/Gateway/Gateway.dsw delete mode 100644 apps/Gateway/Gateway/Gateway.h delete mode 100644 apps/Gateway/Gateway/IO_Handler.cpp delete mode 100644 apps/Gateway/Gateway/IO_Handler.h delete mode 100644 apps/Gateway/Gateway/IO_Handler_Connector.cpp delete mode 100644 apps/Gateway/Gateway/IO_Handler_Connector.h delete mode 100644 apps/Gateway/Gateway/Makefile delete mode 100644 apps/Gateway/Gateway/Makefile.bor delete mode 100644 apps/Gateway/Gateway/Options.cpp delete mode 100644 apps/Gateway/Gateway/Options.h delete mode 100644 apps/Gateway/Gateway/Peer_Message.h delete mode 100644 apps/Gateway/Gateway/Routing_Entry.cpp delete mode 100644 apps/Gateway/Gateway/Routing_Entry.h delete mode 100644 apps/Gateway/Gateway/Routing_Table.cpp delete mode 100644 apps/Gateway/Gateway/Routing_Table.h delete mode 100644 apps/Gateway/Gateway/Thr_Channel.cpp delete mode 100644 apps/Gateway/Gateway/Thr_Channel.h delete mode 100644 apps/Gateway/Gateway/Thr_IO_Handler.cpp delete mode 100644 apps/Gateway/Gateway/Thr_IO_Handler.h delete mode 100644 apps/Gateway/Gateway/Thr_Proxy_Handler.cpp delete mode 100644 apps/Gateway/Gateway/Thr_Proxy_Handler.h delete mode 100644 apps/Gateway/Gateway/cc_config delete mode 100644 apps/Gateway/Gateway/connection_config delete mode 100644 apps/Gateway/Gateway/consumer_config delete mode 100644 apps/Gateway/Gateway/gatewayd.cpp delete mode 100644 apps/Gateway/Gateway/gatewayd.dsp delete mode 100644 apps/Gateway/Gateway/rt_config delete mode 100644 apps/Gateway/Gateway/svc.conf delete mode 100644 apps/Gateway/Makefile delete mode 100644 apps/Gateway/Makefile.bor delete mode 100644 apps/Gateway/Peer/Event.h delete mode 100644 apps/Gateway/Peer/Gateway_Handler.cpp delete mode 100644 apps/Gateway/Peer/Gateway_Handler.h delete mode 100644 apps/Gateway/Peer/Makefile delete mode 100644 apps/Gateway/Peer/Makefile.bor delete mode 100644 apps/Gateway/Peer/Options.cpp delete mode 100644 apps/Gateway/Peer/Options.h delete mode 100644 apps/Gateway/Peer/Peer.cpp delete mode 100644 apps/Gateway/Peer/Peer.dsp delete mode 100644 apps/Gateway/Peer/Peer.dsw delete mode 100644 apps/Gateway/Peer/Peer.h delete mode 100644 apps/Gateway/Peer/Peer_Message.h delete mode 100644 apps/Gateway/Peer/peerd.cpp delete mode 100644 apps/Gateway/Peer/peerd.dsp delete mode 100644 apps/Gateway/Peer/svc.conf delete mode 100644 apps/Gateway/README delete mode 100644 apps/JAWS/ChangeLog delete mode 100644 apps/JAWS/Makefile delete mode 100644 apps/JAWS/Makefile.bor delete mode 100644 apps/JAWS/PROTOTYPE/1000K.html delete mode 100644 apps/JAWS/PROTOTYPE/500K.html delete mode 100644 apps/JAWS/PROTOTYPE/50K.html delete mode 100644 apps/JAWS/PROTOTYPE/5K.html delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/HTTPU.DSP delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/HTTPU.DSW delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/Makefile delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/http_base.cpp delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/http_base.h delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/http_base.i delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/http_export.h delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/http_headers.cpp delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/http_headers.h delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/http_headers.i delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/http_request.cpp delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/http_request.h delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/http_request.i delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/http_response.cpp delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/http_response.h delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/http_response.i delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/http_status.cpp delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/http_status.h delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/http_status.i delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/parse_http_request.cpp delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/parse_http_request.h delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/parse_http_request.i delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/parse_http_response.cpp delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/parse_http_response.h delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/parse_http_response.i delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/parse_url.cpp delete mode 100644 apps/JAWS/PROTOTYPE/HTTPU/parse_url.h delete mode 100644 apps/JAWS/PROTOTYPE/HTTP_10.cpp delete mode 100644 apps/JAWS/PROTOTYPE/HTTP_10.h delete mode 100644 apps/JAWS/PROTOTYPE/HTTP_10_Parse.cpp delete mode 100644 apps/JAWS/PROTOTYPE/HTTP_10_Read.cpp delete mode 100644 apps/JAWS/PROTOTYPE/HTTP_10_Request.cpp delete mode 100644 apps/JAWS/PROTOTYPE/HTTP_10_Request.h delete mode 100644 apps/JAWS/PROTOTYPE/HTTP_10_Write.cpp delete mode 100644 apps/JAWS/PROTOTYPE/HTTP_Policy.cpp delete mode 100644 apps/JAWS/PROTOTYPE/HTTP_Policy.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Assoc_Array.cpp delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Assoc_Array.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Cache_Hash_T.cpp delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Cache_Hash_T.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Cache_Heap_T.cpp delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Cache_Heap_T.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Cache_List_T.cpp delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Cache_List_T.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Cache_Manager.cpp delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Cache_Manager.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Cache_Manager_T.cpp delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Cache_Manager_T.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Cache_Object.cpp delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Cache_Object.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Concurrency.cpp delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Concurrency.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Data_Block.cpp delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Data_Block.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Export.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/FILE.cpp delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/FILE.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Filecache.cpp delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Filecache.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Hash_Bucket_T.cpp delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Hash_Bucket_T.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Headers.cpp delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Headers.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/IO.cpp delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/IO.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/IO_Acceptor.cpp delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/IO_Acceptor.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/IO_Handler.cpp delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/IO_Handler.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/JAWS.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Makefile delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Makefile.bor delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Parse_Headers.cpp delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Parse_Headers.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Pipeline.cpp delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Pipeline.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Pipeline_Handler_T.cpp delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Pipeline_Handler_T.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Pipeline_Tasks.cpp delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Pipeline_Tasks.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Policy.cpp delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Policy.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Reaper.cpp delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Reaper.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Server.cpp delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Server.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Waiter.cpp delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/Waiter.h delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/jaws.dsp delete mode 100644 apps/JAWS/PROTOTYPE/JAWS/jaws.dsw delete mode 100644 apps/JAWS/PROTOTYPE/Makefile delete mode 100644 apps/JAWS/PROTOTYPE/Makefile.bor delete mode 100644 apps/JAWS/PROTOTYPE/README delete mode 100644 apps/JAWS/PROTOTYPE/main.cpp delete mode 100644 apps/JAWS/PROTOTYPE/server.dsp delete mode 100644 apps/JAWS/PROTOTYPE/server.dsw delete mode 100644 apps/JAWS/README delete mode 100644 apps/JAWS/clients/Blobby/Blob.cpp delete mode 100644 apps/JAWS/clients/Blobby/Blob.h delete mode 100644 apps/JAWS/clients/Blobby/Blob_Handler.cpp delete mode 100644 apps/JAWS/clients/Blobby/Blob_Handler.h delete mode 100644 apps/JAWS/clients/Blobby/Makefile delete mode 100644 apps/JAWS/clients/Blobby/Makefile.bor delete mode 100644 apps/JAWS/clients/Blobby/Options.cpp delete mode 100644 apps/JAWS/clients/Blobby/Options.h delete mode 100644 apps/JAWS/clients/Blobby/README delete mode 100644 apps/JAWS/clients/Blobby/blobby.cpp delete mode 100644 apps/JAWS/clients/Caching/Caching.dsp delete mode 100644 apps/JAWS/clients/Caching/Caching.dsw delete mode 100644 apps/JAWS/clients/Caching/ID_Generator.cpp delete mode 100644 apps/JAWS/clients/Caching/ID_Generator.h delete mode 100644 apps/JAWS/clients/Caching/Local_Locator.cpp delete mode 100644 apps/JAWS/clients/Caching/Local_Locator.h delete mode 100644 apps/JAWS/clients/Caching/Local_Locator.i delete mode 100644 apps/JAWS/clients/Caching/Locator_Request_Reply.cpp delete mode 100644 apps/JAWS/clients/Caching/Locator_Request_Reply.h delete mode 100644 apps/JAWS/clients/Caching/Locator_Request_Reply.i delete mode 100644 apps/JAWS/clients/Caching/Makefile delete mode 100644 apps/JAWS/clients/Caching/Makefile.bor delete mode 100644 apps/JAWS/clients/Caching/README delete mode 100644 apps/JAWS/clients/Caching/URL_Array_Helper.cpp delete mode 100644 apps/JAWS/clients/Caching/URL_Array_Helper.h delete mode 100644 apps/JAWS/clients/Caching/URL_Locator.cpp delete mode 100644 apps/JAWS/clients/Caching/URL_Locator.h delete mode 100644 apps/JAWS/clients/Caching/URL_Locator.i delete mode 100644 apps/JAWS/clients/Caching/URL_Properties.cpp delete mode 100644 apps/JAWS/clients/Caching/URL_Properties.h delete mode 100644 apps/JAWS/clients/Caching/URL_Properties.i delete mode 100644 apps/JAWS/clients/Caching/http_client.cpp delete mode 100644 apps/JAWS/clients/Caching/http_handler.cpp delete mode 100644 apps/JAWS/clients/Caching/http_handler.h delete mode 100644 apps/JAWS/clients/Caching/test_URL.cpp delete mode 100644 apps/JAWS/clients/Caching/testing.dsp delete mode 100644 apps/JAWS/clients/Makefile delete mode 100644 apps/JAWS/clients/Makefile.bor delete mode 100644 apps/JAWS/clients/README delete mode 100644 apps/JAWS/clients/WebSTONE/COPYING delete mode 100644 apps/JAWS/clients/WebSTONE/README delete mode 100644 apps/JAWS/clients/WebSTONE/README.DynamicWorkload delete mode 100644 apps/JAWS/clients/WebSTONE/README.FIRST delete mode 100644 apps/JAWS/clients/WebSTONE/WEBSTONE-VERSION-2.0 delete mode 100755 apps/JAWS/clients/WebSTONE/bin/WebStone-common.pl delete mode 100755 apps/JAWS/clients/WebSTONE/bin/WebStone-manage.pl delete mode 100755 apps/JAWS/clients/WebSTONE/bin/WebStone-run.pl delete mode 100755 apps/JAWS/clients/WebSTONE/bin/WebStone-setup.pl delete mode 100755 apps/JAWS/clients/WebSTONE/bin/checkfilelist delete mode 100755 apps/JAWS/clients/WebSTONE/bin/genfiles delete mode 100755 apps/JAWS/clients/WebSTONE/bin/genfiles-from-filelist.sh delete mode 100755 apps/JAWS/clients/WebSTONE/bin/gui-configure delete mode 100755 apps/JAWS/clients/WebSTONE/bin/killbench delete mode 100755 apps/JAWS/clients/WebSTONE/bin/killbench.pl delete mode 100755 apps/JAWS/clients/WebSTONE/bin/mine-logs.pl delete mode 100755 apps/JAWS/clients/WebSTONE/bin/move-filelist.pl delete mode 100755 apps/JAWS/clients/WebSTONE/bin/move-runs.pl delete mode 100755 apps/JAWS/clients/WebSTONE/bin/rebootall delete mode 100755 apps/JAWS/clients/WebSTONE/bin/runbench delete mode 100755 apps/JAWS/clients/WebSTONE/bin/runbench.pl delete mode 100755 apps/JAWS/clients/WebSTONE/bin/tabs2html delete mode 100755 apps/JAWS/clients/WebSTONE/bin/view-results.pl delete mode 100755 apps/JAWS/clients/WebSTONE/bin/webstone-gui.pl delete mode 100755 apps/JAWS/clients/WebSTONE/bin/write-testbed.pl delete mode 100755 apps/JAWS/clients/WebSTONE/bin/wscollect.pl delete mode 100644 apps/JAWS/clients/WebSTONE/conf/filelist delete mode 100644 apps/JAWS/clients/WebSTONE/conf/filelist.cgi-heavy delete mode 100644 apps/JAWS/clients/WebSTONE/conf/filelist.dynamic-heavy delete mode 100644 apps/JAWS/clients/WebSTONE/conf/filelist.dynamic-light delete mode 100644 apps/JAWS/clients/WebSTONE/conf/filelist.dynamic-medium delete mode 100644 apps/JAWS/clients/WebSTONE/conf/filelist.homepage delete mode 100644 apps/JAWS/clients/WebSTONE/conf/filelist.sample delete mode 100644 apps/JAWS/clients/WebSTONE/conf/filelist.standard delete mode 100644 apps/JAWS/clients/WebSTONE/conf/fileset delete mode 100755 apps/JAWS/clients/WebSTONE/conf/paths.pl delete mode 100644 apps/JAWS/clients/WebSTONE/conf/paths.sh delete mode 100644 apps/JAWS/clients/WebSTONE/conf/testbed delete mode 100644 apps/JAWS/clients/WebSTONE/doc/COPYING delete mode 100644 apps/JAWS/clients/WebSTONE/doc/FAQ-webstone.html delete mode 100644 apps/JAWS/clients/WebSTONE/doc/LICENSE.html delete mode 100644 apps/JAWS/clients/WebSTONE/doc/WebStone.html delete mode 100755 apps/JAWS/clients/WebSTONE/doc/testbed.help delete mode 100644 apps/JAWS/clients/WebSTONE/doc/webstone-white-paper.ps delete mode 100644 apps/JAWS/clients/WebSTONE/doc/webstone.gif delete mode 100644 apps/JAWS/clients/WebSTONE/doc/webstone2.html delete mode 100644 apps/JAWS/clients/WebSTONE/src/Makefile delete mode 100644 apps/JAWS/clients/WebSTONE/src/Makefile.in delete mode 100755 apps/JAWS/clients/WebSTONE/src/README delete mode 100644 apps/JAWS/clients/WebSTONE/src/acconfig.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/bench.c delete mode 100644 apps/JAWS/clients/WebSTONE/src/bench.h delete mode 100755 apps/JAWS/clients/WebSTONE/src/cgi-send delete mode 100644 apps/JAWS/clients/WebSTONE/src/cgi-send.c delete mode 100755 apps/JAWS/clients/WebSTONE/src/client/webclient.mak delete mode 100644 apps/JAWS/clients/WebSTONE/src/config.cache delete mode 100755 apps/JAWS/clients/WebSTONE/src/config.guess delete mode 100644 apps/JAWS/clients/WebSTONE/src/config.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/config.h.in delete mode 100644 apps/JAWS/clients/WebSTONE/src/config.log delete mode 100755 apps/JAWS/clients/WebSTONE/src/config.status delete mode 100755 apps/JAWS/clients/WebSTONE/src/config.sub delete mode 100755 apps/JAWS/clients/WebSTONE/src/configure delete mode 100644 apps/JAWS/clients/WebSTONE/src/configure.in delete mode 100644 apps/JAWS/clients/WebSTONE/src/debug.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/errexit.c delete mode 100755 apps/JAWS/clients/WebSTONE/src/gendata/genrand.mak delete mode 100644 apps/JAWS/clients/WebSTONE/src/genrand.c delete mode 100644 apps/JAWS/clients/WebSTONE/src/get.c delete mode 100644 apps/JAWS/clients/WebSTONE/src/get.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/getopt.c delete mode 100644 apps/JAWS/clients/WebSTONE/src/gettimeofday.c delete mode 100755 apps/JAWS/clients/WebSTONE/src/install-sh delete mode 100644 apps/JAWS/clients/WebSTONE/src/logfile27859 delete mode 100755 apps/JAWS/clients/WebSTONE/src/master/webmaster.mak delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/buffer.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/cinfo.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/crit.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/daemon.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/dll.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/ereport.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/eventlog.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/file.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/minissl.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/net.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/nodelock.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/nterrors.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/objndx.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/pblock.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/sem.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/session.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/shexp.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/shmem.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/systems.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/systhr.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/util.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/conf.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/dnfilter.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/func.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/http.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/httpact.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/ipfilter.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/log.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/object.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/objset.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/protocol.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/req.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/servact.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-includes/netsite.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/nsapi-send.c delete mode 100644 apps/JAWS/clients/WebSTONE/src/parse_file_list.c delete mode 100644 apps/JAWS/clients/WebSTONE/src/parse_file_list.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/rexec.c delete mode 100644 apps/JAWS/clients/WebSTONE/src/statistics.c delete mode 100644 apps/JAWS/clients/WebSTONE/src/statistics.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/sysdep.c delete mode 100644 apps/JAWS/clients/WebSTONE/src/sysdep.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/timefunc.c delete mode 100644 apps/JAWS/clients/WebSTONE/src/timefunc.h delete mode 100644 apps/JAWS/clients/WebSTONE/src/webclient.c delete mode 100644 apps/JAWS/clients/WebSTONE/src/webmaster.c delete mode 100755 apps/JAWS/clients/WebSTONE/webstone delete mode 100755 apps/JAWS/remora/app/Makefile delete mode 100644 apps/JAWS/remora/app/Remora_Export.cc delete mode 100644 apps/JAWS/remora/app/Remora_Export.h delete mode 100644 apps/JAWS/remora/app/Remora_Export.i delete mode 100644 apps/JAWS/remora/app/Remora_Import.cc delete mode 100644 apps/JAWS/remora/app/Remora_Import.h delete mode 100644 apps/JAWS/remora/app/Remora_Import.i delete mode 100644 apps/JAWS/remora/app/remora.idl delete mode 100755 apps/JAWS/remora/app/stdmk delete mode 100644 apps/JAWS/remora/app/test.cc delete mode 100644 apps/JAWS/server/HTTP_Config.cpp delete mode 100644 apps/JAWS/server/HTTP_Config.h delete mode 100644 apps/JAWS/server/HTTP_Handler.cpp delete mode 100644 apps/JAWS/server/HTTP_Handler.h delete mode 100644 apps/JAWS/server/HTTP_Helpers.cpp delete mode 100644 apps/JAWS/server/HTTP_Helpers.h delete mode 100644 apps/JAWS/server/HTTP_Request.cpp delete mode 100644 apps/JAWS/server/HTTP_Request.h delete mode 100644 apps/JAWS/server/HTTP_Response.cpp delete mode 100644 apps/JAWS/server/HTTP_Response.h delete mode 100644 apps/JAWS/server/HTTP_Server.cpp delete mode 100644 apps/JAWS/server/HTTP_Server.h delete mode 100644 apps/JAWS/server/IO.cpp delete mode 100644 apps/JAWS/server/IO.h delete mode 100644 apps/JAWS/server/JAWS_Concurrency.cpp delete mode 100644 apps/JAWS/server/JAWS_Concurrency.h delete mode 100644 apps/JAWS/server/JAWS_Pipeline.cpp delete mode 100644 apps/JAWS/server/JAWS_Pipeline.h delete mode 100644 apps/JAWS/server/JAWS_Pipeline_Handler.cpp delete mode 100644 apps/JAWS/server/JAWS_Pipeline_Handler.h delete mode 100644 apps/JAWS/server/Makefile delete mode 100644 apps/JAWS/server/Makefile.bor delete mode 100644 apps/JAWS/server/Parse_Headers.cpp delete mode 100644 apps/JAWS/server/Parse_Headers.h delete mode 100644 apps/JAWS/server/README delete mode 100644 apps/JAWS/server/jaws.auth delete mode 100644 apps/JAWS/server/jaws.dsp delete mode 100644 apps/JAWS/server/jaws.dsw delete mode 100644 apps/JAWS/server/main.cpp delete mode 100644 apps/JAWS/server/svc.conf delete mode 100755 apps/JAWS/server/test.cgi delete mode 100644 apps/JAWS/stress_testing/Makefile delete mode 100644 apps/JAWS/stress_testing/README delete mode 100644 apps/JAWS/stress_testing/benchd.cpp delete mode 100644 apps/JAWS/stress_testing/client.h delete mode 100644 apps/JAWS/stress_testing/config delete mode 100644 apps/JAWS/stress_testing/connection.cpp delete mode 100644 apps/JAWS/stress_testing/connection.h delete mode 100644 apps/JAWS/stress_testing/cp.cpp delete mode 100644 apps/JAWS/stress_testing/cp.h delete mode 100644 apps/JAWS/stress_testing/global.h delete mode 100644 apps/JAWS/stress_testing/http.h delete mode 100644 apps/JAWS/stress_testing/http_tester.cpp delete mode 100644 apps/JAWS/stress_testing/out delete mode 100644 apps/JAWS/stress_testing/stats.cpp delete mode 100644 apps/JAWS/stress_testing/stats.h delete mode 100644 apps/JAWS/stress_testing/util.cpp delete mode 100644 apps/JAWS/stress_testing/util.h delete mode 100644 apps/Makefile delete mode 100644 apps/Makefile.am delete mode 100644 apps/Makefile.bor delete mode 100644 apps/Orbix-Examples/Event_Comm/Consumer/Input_Handler.cpp delete mode 100644 apps/Orbix-Examples/Event_Comm/Consumer/Input_Handler.h delete mode 100644 apps/Orbix-Examples/Event_Comm/Consumer/Makefile delete mode 100644 apps/Orbix-Examples/Event_Comm/Consumer/Notification_Receiver_Handler.cpp delete mode 100644 apps/Orbix-Examples/Event_Comm/Consumer/Notification_Receiver_Handler.h delete mode 100644 apps/Orbix-Examples/Event_Comm/Consumer/consumer.cpp delete mode 100644 apps/Orbix-Examples/Event_Comm/Makefile delete mode 100644 apps/Orbix-Examples/Event_Comm/README delete mode 100644 apps/Orbix-Examples/Event_Comm/Supplier/Input_Handler.cpp delete mode 100644 apps/Orbix-Examples/Event_Comm/Supplier/Input_Handler.h delete mode 100644 apps/Orbix-Examples/Event_Comm/Supplier/Makefile delete mode 100644 apps/Orbix-Examples/Event_Comm/Supplier/Notifier_Handler.cpp delete mode 100644 apps/Orbix-Examples/Event_Comm/Supplier/Notifier_Handler.h delete mode 100644 apps/Orbix-Examples/Event_Comm/Supplier/supplier.cpp delete mode 100644 apps/Orbix-Examples/Event_Comm/include/Event_Comm.hh delete mode 100644 apps/Orbix-Examples/Event_Comm/include/Event_Comm_i.h delete mode 100644 apps/Orbix-Examples/Event_Comm/include/Notification_Receiver_i.h delete mode 100644 apps/Orbix-Examples/Event_Comm/include/Notifier_i.h delete mode 100644 apps/Orbix-Examples/Event_Comm/libsrc/Event_Comm.hh delete mode 100644 apps/Orbix-Examples/Event_Comm/libsrc/Event_Comm.idl delete mode 100644 apps/Orbix-Examples/Event_Comm/libsrc/Event_CommC.cpp delete mode 100644 apps/Orbix-Examples/Event_Comm/libsrc/Event_CommS.cpp delete mode 100644 apps/Orbix-Examples/Event_Comm/libsrc/Event_Comm_i.h delete mode 100644 apps/Orbix-Examples/Event_Comm/libsrc/Makefile delete mode 100644 apps/Orbix-Examples/Event_Comm/libsrc/Notification.idl delete mode 100644 apps/Orbix-Examples/Event_Comm/libsrc/Notification_Receiver.idl delete mode 100644 apps/Orbix-Examples/Event_Comm/libsrc/Notification_Receiver_i.cpp delete mode 100644 apps/Orbix-Examples/Event_Comm/libsrc/Notification_Receiver_i.h delete mode 100644 apps/Orbix-Examples/Event_Comm/libsrc/Notifier.idl delete mode 100644 apps/Orbix-Examples/Event_Comm/libsrc/Notifier_i.cpp delete mode 100644 apps/Orbix-Examples/Event_Comm/libsrc/Notifier_i.h delete mode 100644 apps/Orbix-Examples/Logger/Logger.cpp delete mode 100644 apps/Orbix-Examples/Logger/Logger.h delete mode 100644 apps/Orbix-Examples/Logger/Makefile delete mode 100644 apps/Orbix-Examples/Logger/Orbix.hostgroups delete mode 100644 apps/Orbix-Examples/Logger/Orbix.hosts delete mode 100644 apps/Orbix-Examples/Logger/README delete mode 100644 apps/Orbix-Examples/Logger/a1.tex delete mode 100644 apps/Orbix-Examples/Logger/client.cpp delete mode 100644 apps/Orbix-Examples/Logger/logger.hh delete mode 100644 apps/Orbix-Examples/Logger/logger.idl delete mode 100644 apps/Orbix-Examples/Logger/loggerS.cpp delete mode 100644 apps/Orbix-Examples/Logger/logger_i.cpp delete mode 100644 apps/Orbix-Examples/Logger/logger_i.h delete mode 100644 apps/Orbix-Examples/Logger/server.cpp delete mode 100644 apps/Orbix-Examples/Makefile delete mode 100644 apps/README delete mode 100644 apps/build.bor delete mode 100644 apps/drwho/BS_Client.cpp delete mode 100644 apps/drwho/BS_Client.h delete mode 100644 apps/drwho/BS_Server.cpp delete mode 100644 apps/drwho/BS_Server.h delete mode 100644 apps/drwho/Binary_Search.cpp delete mode 100644 apps/drwho/Binary_Search.h delete mode 100644 apps/drwho/CM_Client.cpp delete mode 100644 apps/drwho/CM_Client.h delete mode 100644 apps/drwho/CM_Server.cpp delete mode 100644 apps/drwho/CM_Server.h delete mode 100644 apps/drwho/ChangeLog delete mode 100644 apps/drwho/Comm_Manager.h delete mode 100644 apps/drwho/Drwho_Node.cpp delete mode 100644 apps/drwho/Drwho_Node.h delete mode 100644 apps/drwho/File_Manager.cpp delete mode 100644 apps/drwho/File_Manager.h delete mode 100644 apps/drwho/HT_Client.cpp delete mode 100644 apps/drwho/HT_Client.h delete mode 100644 apps/drwho/HT_Server.cpp delete mode 100644 apps/drwho/HT_Server.h delete mode 100644 apps/drwho/Hash_Table.cpp delete mode 100644 apps/drwho/Hash_Table.h delete mode 100644 apps/drwho/Makefile delete mode 100644 apps/drwho/Multicast_Manager.cpp delete mode 100644 apps/drwho/Multicast_Manager.h delete mode 100644 apps/drwho/Options.cpp delete mode 100644 apps/drwho/Options.h delete mode 100644 apps/drwho/PMC_All.cpp delete mode 100644 apps/drwho/PMC_All.h delete mode 100644 apps/drwho/PMC_Flo.cpp delete mode 100644 apps/drwho/PMC_Flo.h delete mode 100644 apps/drwho/PMC_Ruser.cpp delete mode 100644 apps/drwho/PMC_Ruser.h delete mode 100644 apps/drwho/PMC_Usr.cpp delete mode 100644 apps/drwho/PMC_Usr.h delete mode 100644 apps/drwho/PMS_All.cpp delete mode 100644 apps/drwho/PMS_All.h delete mode 100644 apps/drwho/PMS_Flo.cpp delete mode 100644 apps/drwho/PMS_Flo.h delete mode 100644 apps/drwho/PMS_Ruser.cpp delete mode 100644 apps/drwho/PMS_Ruser.h delete mode 100644 apps/drwho/PMS_Usr.cpp delete mode 100644 apps/drwho/PMS_Usr.h delete mode 100644 apps/drwho/PM_Client.cpp delete mode 100644 apps/drwho/PM_Client.h delete mode 100644 apps/drwho/PM_Server.cpp delete mode 100644 apps/drwho/PM_Server.h delete mode 100644 apps/drwho/Protocol_Manager.cpp delete mode 100644 apps/drwho/Protocol_Manager.h delete mode 100644 apps/drwho/Protocol_Record.cpp delete mode 100644 apps/drwho/Protocol_Record.h delete mode 100644 apps/drwho/README delete mode 100644 apps/drwho/Rwho_DB_Manager.cpp delete mode 100644 apps/drwho/Rwho_DB_Manager.h delete mode 100644 apps/drwho/SL_Client.cpp delete mode 100644 apps/drwho/SL_Client.h delete mode 100644 apps/drwho/SL_Server.cpp delete mode 100644 apps/drwho/SL_Server.h delete mode 100644 apps/drwho/SML_Client.cpp delete mode 100644 apps/drwho/SML_Client.h delete mode 100644 apps/drwho/SML_Server.cpp delete mode 100644 apps/drwho/SML_Server.h delete mode 100644 apps/drwho/SMR_Client.cpp delete mode 100644 apps/drwho/SMR_Client.h delete mode 100644 apps/drwho/SMR_Server.cpp delete mode 100644 apps/drwho/SMR_Server.h delete mode 100644 apps/drwho/SM_Client.cpp delete mode 100644 apps/drwho/SM_Client.h delete mode 100644 apps/drwho/SM_Server.cpp delete mode 100644 apps/drwho/SM_Server.h delete mode 100644 apps/drwho/Search_Struct.cpp delete mode 100644 apps/drwho/Search_Struct.h delete mode 100644 apps/drwho/Select_Manager.h delete mode 100644 apps/drwho/Single_Lookup.cpp delete mode 100644 apps/drwho/Single_Lookup.h delete mode 100644 apps/drwho/client.cpp delete mode 100644 apps/drwho/global.h delete mode 100644 apps/drwho/server.cpp delete mode 100644 apps/gperf/COPYING delete mode 100644 apps/gperf/ChangeLog delete mode 100644 apps/gperf/Makefile delete mode 100644 apps/gperf/Makefile.am delete mode 100644 apps/gperf/Makefile.bor delete mode 100644 apps/gperf/README delete mode 100644 apps/gperf/gperf.1 delete mode 100644 apps/gperf/gperf.info delete mode 100644 apps/gperf/gperf.texi delete mode 100755 apps/gperf/mdate-sh delete mode 100644 apps/gperf/src/Bool_Array.cpp delete mode 100644 apps/gperf/src/Bool_Array.h delete mode 100644 apps/gperf/src/Gen_Perf.cpp delete mode 100644 apps/gperf/src/Gen_Perf.h delete mode 100644 apps/gperf/src/Hash_Table.cpp delete mode 100644 apps/gperf/src/Hash_Table.h delete mode 100644 apps/gperf/src/Iterator.cpp delete mode 100644 apps/gperf/src/Iterator.h delete mode 100644 apps/gperf/src/Key_List.cpp delete mode 100644 apps/gperf/src/Key_List.h delete mode 100644 apps/gperf/src/List_Node.cpp delete mode 100644 apps/gperf/src/List_Node.h delete mode 100644 apps/gperf/src/Makefile delete mode 100644 apps/gperf/src/Makefile.am delete mode 100644 apps/gperf/src/Makefile.bor delete mode 100644 apps/gperf/src/Options.cpp delete mode 100644 apps/gperf/src/Options.h delete mode 100644 apps/gperf/src/Vectors.cpp delete mode 100644 apps/gperf/src/Vectors.h delete mode 100644 apps/gperf/src/Version.cpp delete mode 100644 apps/gperf/src/gperf.cpp delete mode 100644 apps/gperf/src/gperf.dsp delete mode 100644 apps/gperf/src/gperf.dsw delete mode 100644 apps/gperf/src/gperf_lib.dsp delete mode 100644 apps/gperf/tests/Makefile delete mode 100644 apps/gperf/tests/Makefile.am delete mode 100644 apps/gperf/tests/ada-pred.exp delete mode 100644 apps/gperf/tests/ada-res.exp delete mode 100644 apps/gperf/tests/ada.gperf delete mode 100644 apps/gperf/tests/adadefs.gperf delete mode 100644 apps/gperf/tests/c++-res.exp delete mode 100644 apps/gperf/tests/c++.gperf delete mode 100644 apps/gperf/tests/c-parse.gperf delete mode 100644 apps/gperf/tests/c.exp delete mode 100644 apps/gperf/tests/c.gperf delete mode 100644 apps/gperf/tests/corba.exp delete mode 100644 apps/gperf/tests/corba.gperf delete mode 100644 apps/gperf/tests/gpc.gperf delete mode 100644 apps/gperf/tests/gplus.gperf delete mode 100644 apps/gperf/tests/idl.exp delete mode 100644 apps/gperf/tests/idl.gperf delete mode 100644 apps/gperf/tests/irc.gperf delete mode 100644 apps/gperf/tests/makeinfo.gperf delete mode 100644 apps/gperf/tests/modula.exp delete mode 100644 apps/gperf/tests/modula2.gperf delete mode 100644 apps/gperf/tests/modula3.gperf delete mode 100644 apps/gperf/tests/pascal.exp delete mode 100644 apps/gperf/tests/pascal.gperf delete mode 100644 apps/gperf/tests/test-1.exp delete mode 100644 apps/gperf/tests/test-2.exp delete mode 100644 apps/gperf/tests/test-3.exp delete mode 100644 apps/gperf/tests/test-4.exp delete mode 100644 apps/gperf/tests/test-5.exp delete mode 100644 apps/gperf/tests/test-6.exp delete mode 100644 apps/gperf/tests/test-7.exp delete mode 100644 apps/gperf/tests/test.cpp delete mode 100644 apps/gperf/texinfo.tex delete mode 100644 apps/gperf/version.texi delete mode 100644 bin/ACEutils.pm delete mode 100644 bin/ADDIDL.DSM delete mode 100755 bin/Array.pl delete mode 100755 bin/Array_Helper delete mode 100755 bin/GenExportH.BAT delete mode 100755 bin/Hash_Map_Manager.pl delete mode 100755 bin/Hash_Map_Manager_Helper delete mode 100644 bin/Makefile delete mode 100644 bin/Process.pm delete mode 100644 bin/Process_Unix.pm delete mode 100644 bin/Process_Win32.pm delete mode 100644 bin/README.html delete mode 100755 bin/Service_Config.perl delete mode 100644 bin/Uniqueid.pm delete mode 100755 bin/ace_components delete mode 100755 bin/ace_ld delete mode 100755 bin/auto_compile delete mode 100755 bin/auto_compile_win32.pl delete mode 100755 bin/auto_compile_wrapper delete mode 100755 bin/auto_ptr.perl delete mode 100755 bin/bootstrap delete mode 100755 bin/check_build_logs delete mode 100755 bin/class2hxxcxx delete mode 100755 bin/class2hxxcxxsingle delete mode 100755 bin/class2info delete mode 100644 bin/class2info.awk delete mode 100755 bin/class2man delete mode 100755 bin/class2mml delete mode 100755 bin/class2src delete mode 100755 bin/classinfo.ps delete mode 100644 bin/clone.1 delete mode 100644 bin/clone.cpp delete mode 100644 bin/clone.csh delete mode 100755 bin/corba-boolean.perl delete mode 100755 bin/count_lines delete mode 100755 bin/create_ace_build delete mode 100755 bin/cvslog delete mode 100755 bin/dsp2dsp.pl delete mode 100644 bin/envinfo.cpp delete mode 100755 bin/g++dep delete mode 100755 bin/generate_man_pages delete mode 100644 bin/hiding.fmt delete mode 100755 bin/html-windex delete mode 100755 bin/indent_macros.perl delete mode 100755 bin/info2doc.awk delete mode 100644 bin/info2doc.fmt delete mode 100755 bin/info2head delete mode 100644 bin/info2head.fmt delete mode 100755 bin/info2headsrc delete mode 100755 bin/info2man delete mode 100755 bin/info2mml delete mode 100755 bin/info2src delete mode 100755 bin/info2src.awk delete mode 100755 bin/libsize.pl delete mode 100755 bin/make_release delete mode 100755 bin/man2html delete mode 100644 bin/man2html1.awk delete mode 100644 bin/man2html2.awk delete mode 100755 bin/rename-ace.pl delete mode 100755 bin/run_all.pl delete mode 100644 bin/run_all_list.pm delete mode 100755 bin/run_all_win32.pl delete mode 100755 bin/tao_env.pl delete mode 100755 bin/tao_svcconf.pl delete mode 100755 bin/update-ace+tao.sh delete mode 100755 bin/vc_filter.pl delete mode 100755 bin/vendor.fmt delete mode 100755 config.guess delete mode 100755 config.sub delete mode 100755 configure delete mode 100644 configure.in delete mode 100644 docs/ACE-FMM.html delete mode 100644 docs/ACE-SSL.html delete mode 100644 docs/ACE-bug-process.html delete mode 100644 docs/ACE-categories.html delete mode 100644 docs/ACE-development-process.html delete mode 100644 docs/ACE-guidelines.html delete mode 100644 docs/ACE-inheritance.pdf.gz delete mode 100644 docs/ACE-inheritance.ps.gz delete mode 100644 docs/ACE-lessons.html delete mode 100644 docs/ACE-porting.html delete mode 100644 docs/ACE-subsets.html delete mode 100644 docs/ACE-tutorials.html delete mode 100644 docs/CE-status.txt delete mode 100644 docs/exceptions.html delete mode 100644 docs/tutorials/001/001.dsp delete mode 100644 docs/tutorials/001/00SetEnv delete mode 100644 docs/tutorials/001/Makefile delete mode 100644 docs/tutorials/001/acceptor.h delete mode 100644 docs/tutorials/001/combine.shar delete mode 100644 docs/tutorials/001/logger.h delete mode 100644 docs/tutorials/001/page01.html delete mode 100644 docs/tutorials/001/page02.html delete mode 100644 docs/tutorials/001/page03.html delete mode 100644 docs/tutorials/001/page04.html delete mode 100644 docs/tutorials/001/page05.html delete mode 100644 docs/tutorials/001/server.cpp delete mode 100644 docs/tutorials/001/simple.fig delete mode 100644 docs/tutorials/001/simple.gif delete mode 100644 docs/tutorials/002/002.dsp delete mode 100644 docs/tutorials/002/00SetEnv delete mode 100644 docs/tutorials/002/Makefile delete mode 100644 docs/tutorials/002/combine.shar delete mode 100644 docs/tutorials/002/handler.h delete mode 100644 docs/tutorials/002/page01.html delete mode 100644 docs/tutorials/002/page02.html delete mode 100644 docs/tutorials/002/page03.html delete mode 100644 docs/tutorials/002/page04.html delete mode 100644 docs/tutorials/002/server.cpp delete mode 100644 docs/tutorials/003/003.dsp delete mode 100644 docs/tutorials/003/00SetEnv delete mode 100644 docs/tutorials/003/Makefile delete mode 100644 docs/tutorials/003/client.cpp delete mode 100644 docs/tutorials/003/combine.shar delete mode 100644 docs/tutorials/003/page01.html delete mode 100644 docs/tutorials/004/004.dsp delete mode 100644 docs/tutorials/004/00SetEnv delete mode 100644 docs/tutorials/004/Makefile delete mode 100644 docs/tutorials/004/client.cpp delete mode 100644 docs/tutorials/004/combine.shar delete mode 100644 docs/tutorials/004/page01.html delete mode 100644 docs/tutorials/005/005.dsp delete mode 100644 docs/tutorials/005/00SetEnv delete mode 100644 docs/tutorials/005/Makefile delete mode 100644 docs/tutorials/005/client_acceptor.h delete mode 100644 docs/tutorials/005/client_handler.cpp delete mode 100644 docs/tutorials/005/client_handler.h delete mode 100644 docs/tutorials/005/combine.shar delete mode 100644 docs/tutorials/005/page01.html delete mode 100644 docs/tutorials/005/page02.html delete mode 100644 docs/tutorials/005/page03.html delete mode 100644 docs/tutorials/005/page04.html delete mode 100644 docs/tutorials/005/page05.html delete mode 100644 docs/tutorials/005/page06.html delete mode 100644 docs/tutorials/005/page07.html delete mode 100644 docs/tutorials/005/page08.html delete mode 100644 docs/tutorials/005/server.brk delete mode 100644 docs/tutorials/005/server.cpp delete mode 100644 docs/tutorials/006/006.dsp delete mode 100644 docs/tutorials/006/Makefile delete mode 100644 docs/tutorials/006/client_acceptor.h delete mode 100644 docs/tutorials/006/client_handler.cpp delete mode 100644 docs/tutorials/006/client_handler.h delete mode 100644 docs/tutorials/006/combine.shar delete mode 100644 docs/tutorials/006/page01.html delete mode 100644 docs/tutorials/006/page02.html delete mode 100644 docs/tutorials/006/page03.html delete mode 100644 docs/tutorials/006/page04.html delete mode 100644 docs/tutorials/006/page05.html delete mode 100644 docs/tutorials/006/page06.html delete mode 100644 docs/tutorials/006/server.cpp delete mode 100644 docs/tutorials/007/007.dsp delete mode 100644 docs/tutorials/007/Makefile delete mode 100644 docs/tutorials/007/client_acceptor.cpp delete mode 100644 docs/tutorials/007/client_acceptor.h delete mode 100644 docs/tutorials/007/client_handler.cpp delete mode 100644 docs/tutorials/007/client_handler.h delete mode 100644 docs/tutorials/007/combine.shar delete mode 100644 docs/tutorials/007/page01.html delete mode 100644 docs/tutorials/007/page02.html delete mode 100644 docs/tutorials/007/page03.html delete mode 100644 docs/tutorials/007/page04.html delete mode 100644 docs/tutorials/007/page05.html delete mode 100644 docs/tutorials/007/page06.html delete mode 100644 docs/tutorials/007/page07.html delete mode 100644 docs/tutorials/007/page08.html delete mode 100644 docs/tutorials/007/page09.html delete mode 100644 docs/tutorials/007/server.cpp delete mode 100644 docs/tutorials/007/thread_pool.cpp delete mode 100644 docs/tutorials/007/thread_pool.h delete mode 100644 docs/tutorials/008/008-broadcast.dsp delete mode 100644 docs/tutorials/008/008-direct.dsp delete mode 100644 docs/tutorials/008/008-server.dsp delete mode 100644 docs/tutorials/008/Makefile delete mode 100644 docs/tutorials/008/broadcast_client.cpp delete mode 100644 docs/tutorials/008/combine.shar delete mode 100644 docs/tutorials/008/directed_client.cpp delete mode 100644 docs/tutorials/008/page01.html delete mode 100644 docs/tutorials/008/page02.html delete mode 100644 docs/tutorials/008/page03.html delete mode 100644 docs/tutorials/008/page04.html delete mode 100644 docs/tutorials/008/page05.html delete mode 100644 docs/tutorials/008/server.cpp delete mode 100644 docs/tutorials/009/009-broadcast.dsp delete mode 100644 docs/tutorials/009/009-directed.dsp delete mode 100644 docs/tutorials/009/009-server.dsp delete mode 100644 docs/tutorials/009/Makefile delete mode 100644 docs/tutorials/009/broadcast_client.cpp delete mode 100644 docs/tutorials/009/combine.shar delete mode 100644 docs/tutorials/009/directed_client.cpp delete mode 100644 docs/tutorials/009/page01.html delete mode 100644 docs/tutorials/009/page02.html delete mode 100644 docs/tutorials/009/page03.html delete mode 100644 docs/tutorials/009/page04.html delete mode 100644 docs/tutorials/009/page05.html delete mode 100644 docs/tutorials/009/server.cpp delete mode 100644 docs/tutorials/010/010.dsp delete mode 100644 docs/tutorials/010/Makefile delete mode 100644 docs/tutorials/010/block.h delete mode 100644 docs/tutorials/010/combine.shar delete mode 100644 docs/tutorials/010/message_queue.cpp delete mode 100644 docs/tutorials/010/page01.html delete mode 100644 docs/tutorials/010/page02.html delete mode 100644 docs/tutorials/010/page03.html delete mode 100644 docs/tutorials/010/page04.html delete mode 100644 docs/tutorials/010/page05.html delete mode 100644 docs/tutorials/010/page06.html delete mode 100644 docs/tutorials/010/page07.html delete mode 100644 docs/tutorials/010/task.cpp delete mode 100644 docs/tutorials/010/task.h delete mode 100644 docs/tutorials/011/011.dsp delete mode 100644 docs/tutorials/011/Makefile delete mode 100644 docs/tutorials/011/block.h delete mode 100644 docs/tutorials/011/combine.shar delete mode 100644 docs/tutorials/011/data.h delete mode 100644 docs/tutorials/011/message_queue.cpp delete mode 100644 docs/tutorials/011/page01.html delete mode 100644 docs/tutorials/011/page02.html delete mode 100644 docs/tutorials/011/page03.html delete mode 100644 docs/tutorials/011/page04.html delete mode 100644 docs/tutorials/011/page05.html delete mode 100644 docs/tutorials/011/page06.html delete mode 100644 docs/tutorials/011/task.cpp delete mode 100644 docs/tutorials/011/task.h delete mode 100644 docs/tutorials/012/012.dsp delete mode 100644 docs/tutorials/012/Makefile delete mode 100644 docs/tutorials/012/block.h delete mode 100644 docs/tutorials/012/combine.shar delete mode 100644 docs/tutorials/012/message_queue.cpp delete mode 100644 docs/tutorials/012/page01.html delete mode 100644 docs/tutorials/012/page02.html delete mode 100644 docs/tutorials/012/page03.html delete mode 100644 docs/tutorials/012/page04.html delete mode 100644 docs/tutorials/012/page05.html delete mode 100644 docs/tutorials/012/page06.html delete mode 100644 docs/tutorials/012/task.cpp delete mode 100644 docs/tutorials/012/task.h delete mode 100644 docs/tutorials/012/work.h delete mode 100644 docs/tutorials/013/013.dsp delete mode 100644 docs/tutorials/013/Makefile delete mode 100644 docs/tutorials/013/block.cpp delete mode 100644 docs/tutorials/013/block.h delete mode 100644 docs/tutorials/013/combine.shar delete mode 100644 docs/tutorials/013/message_queue.cpp delete mode 100644 docs/tutorials/013/mld.cpp delete mode 100644 docs/tutorials/013/mld.h delete mode 100644 docs/tutorials/013/page01.html delete mode 100644 docs/tutorials/013/page02.html delete mode 100644 docs/tutorials/013/page03.html delete mode 100644 docs/tutorials/013/page04.html delete mode 100644 docs/tutorials/013/page05.html delete mode 100644 docs/tutorials/013/page06.html delete mode 100644 docs/tutorials/013/page07.html delete mode 100644 docs/tutorials/013/page08.html delete mode 100644 docs/tutorials/013/task.cpp delete mode 100644 docs/tutorials/013/task.h delete mode 100644 docs/tutorials/013/work.cpp delete mode 100644 docs/tutorials/013/work.h delete mode 100644 docs/tutorials/014/014.dsp delete mode 100644 docs/tutorials/014/EndTask.h delete mode 100644 docs/tutorials/014/Makefile delete mode 100644 docs/tutorials/014/Task.cpp delete mode 100644 docs/tutorials/014/Task.h delete mode 100644 docs/tutorials/014/combine.shar delete mode 100644 docs/tutorials/014/page01.html delete mode 100644 docs/tutorials/014/page02.html delete mode 100644 docs/tutorials/014/page03.html delete mode 100644 docs/tutorials/014/page04.html delete mode 100644 docs/tutorials/014/page05.html delete mode 100644 docs/tutorials/014/stream.cpp delete mode 100644 docs/tutorials/015/015-client.dsp delete mode 100644 docs/tutorials/015/015-server.dsp delete mode 100644 docs/tutorials/015/Client_i.cpp delete mode 100644 docs/tutorials/015/Client_i.h delete mode 100644 docs/tutorials/015/Compressor.cpp delete mode 100644 docs/tutorials/015/Compressor.h delete mode 100644 docs/tutorials/015/Crypt.cpp delete mode 100644 docs/tutorials/015/Crypt.h delete mode 100644 docs/tutorials/015/Handler.cpp delete mode 100644 docs/tutorials/015/Handler.h delete mode 100644 docs/tutorials/015/Makefile delete mode 100644 docs/tutorials/015/Makefile.client delete mode 100644 docs/tutorials/015/Makefile.server delete mode 100644 docs/tutorials/015/Protocol_Stream.cpp delete mode 100644 docs/tutorials/015/Protocol_Stream.h delete mode 100644 docs/tutorials/015/Protocol_Task.cpp delete mode 100644 docs/tutorials/015/Protocol_Task.h delete mode 100644 docs/tutorials/015/Recv.cpp delete mode 100644 docs/tutorials/015/Recv.h delete mode 100644 docs/tutorials/015/Server_i.cpp delete mode 100644 docs/tutorials/015/Server_i.h delete mode 100644 docs/tutorials/015/Xmit.cpp delete mode 100644 docs/tutorials/015/Xmit.h delete mode 100644 docs/tutorials/015/client.cpp delete mode 100644 docs/tutorials/015/combine.shar delete mode 100644 docs/tutorials/015/page01.html delete mode 100644 docs/tutorials/015/page02.html delete mode 100644 docs/tutorials/015/page03.html delete mode 100644 docs/tutorials/015/page04.html delete mode 100644 docs/tutorials/015/page05.html delete mode 100644 docs/tutorials/015/page06.html delete mode 100644 docs/tutorials/015/page07.html delete mode 100644 docs/tutorials/015/page08.html delete mode 100644 docs/tutorials/015/page09.html delete mode 100644 docs/tutorials/015/page10.html delete mode 100644 docs/tutorials/015/page11.html delete mode 100644 docs/tutorials/015/page12.html delete mode 100644 docs/tutorials/015/page13.html delete mode 100644 docs/tutorials/015/page14.html delete mode 100644 docs/tutorials/015/page15.html delete mode 100644 docs/tutorials/015/page16.html delete mode 100644 docs/tutorials/015/page17.html delete mode 100644 docs/tutorials/015/page18.html delete mode 100644 docs/tutorials/015/page19.html delete mode 100644 docs/tutorials/015/page20.html delete mode 100644 docs/tutorials/015/page21.html delete mode 100644 docs/tutorials/015/page22.html delete mode 100644 docs/tutorials/015/server.cpp delete mode 100644 docs/tutorials/015/stream.gif delete mode 100644 docs/tutorials/016/016.dsp delete mode 100644 docs/tutorials/016/Condition_i.cpp delete mode 100644 docs/tutorials/016/Condition_i.h delete mode 100644 docs/tutorials/016/Makefile delete mode 100644 docs/tutorials/016/combine.shar delete mode 100644 docs/tutorials/016/condition.cpp delete mode 100644 docs/tutorials/016/page01.html delete mode 100644 docs/tutorials/016/page02.html delete mode 100644 docs/tutorials/016/page03.html delete mode 100644 docs/tutorials/016/page04.html delete mode 100644 docs/tutorials/016/page05.html delete mode 100644 docs/tutorials/017/017.dsp delete mode 100644 docs/tutorials/017/Barrier_i.cpp delete mode 100644 docs/tutorials/017/Barrier_i.h delete mode 100644 docs/tutorials/017/Makefile delete mode 100644 docs/tutorials/017/barrier.cpp delete mode 100644 docs/tutorials/017/barrier2.cpp delete mode 100644 docs/tutorials/017/combine.shar delete mode 100644 docs/tutorials/017/page01.html delete mode 100644 docs/tutorials/017/page02.html delete mode 100644 docs/tutorials/017/page03.html delete mode 100644 docs/tutorials/017/page04.html delete mode 100644 docs/tutorials/017/page05.html delete mode 100644 docs/tutorials/017/page06.html delete mode 100644 docs/tutorials/018/018.dsp delete mode 100644 docs/tutorials/018/Makefile delete mode 100644 docs/tutorials/018/Mutex_i.h delete mode 100644 docs/tutorials/018/Test_T.cpp delete mode 100644 docs/tutorials/018/Test_T.h delete mode 100644 docs/tutorials/018/Token_i.h delete mode 100644 docs/tutorials/018/combine.shar delete mode 100644 docs/tutorials/018/output delete mode 100644 docs/tutorials/018/page01.html delete mode 100644 docs/tutorials/018/page02.html delete mode 100644 docs/tutorials/018/page03.html delete mode 100644 docs/tutorials/018/page04.html delete mode 100644 docs/tutorials/018/page05.html delete mode 100644 docs/tutorials/018/page06.html delete mode 100644 docs/tutorials/018/page07.html delete mode 100644 docs/tutorials/018/token.cpp delete mode 100644 docs/tutorials/019/019-client.dsp delete mode 100644 docs/tutorials/019/019-client2.dsp delete mode 100644 docs/tutorials/019/019-server.dsp delete mode 100644 docs/tutorials/019/019-server2.dsp delete mode 100644 docs/tutorials/019/Makefile delete mode 100644 docs/tutorials/019/client.cpp delete mode 100644 docs/tutorials/019/client2.cpp delete mode 100644 docs/tutorials/019/combine.shar delete mode 100644 docs/tutorials/019/page01.html delete mode 100644 docs/tutorials/019/page02.html delete mode 100644 docs/tutorials/019/page03.html delete mode 100644 docs/tutorials/019/page04.html delete mode 100644 docs/tutorials/019/page05.html delete mode 100644 docs/tutorials/019/page06.html delete mode 100644 docs/tutorials/019/server.cpp delete mode 100644 docs/tutorials/019/server2.cpp delete mode 100644 docs/tutorials/019/shmem.cpp delete mode 100644 docs/tutorials/019/shmem.h delete mode 100644 docs/tutorials/020/020-client.dsp delete mode 100644 docs/tutorials/020/020-client2.dsp delete mode 100644 docs/tutorials/020/020-server.dsp delete mode 100644 docs/tutorials/020/020-server2.dsp delete mode 100644 docs/tutorials/020/Makefile delete mode 100644 docs/tutorials/020/client.cpp delete mode 100644 docs/tutorials/020/client2.cpp delete mode 100644 docs/tutorials/020/combine.shar delete mode 100644 docs/tutorials/020/mmap.cpp delete mode 100644 docs/tutorials/020/mmap.h delete mode 100644 docs/tutorials/020/mmapfile delete mode 100644 docs/tutorials/020/page01.html delete mode 100644 docs/tutorials/020/page02.html delete mode 100644 docs/tutorials/020/page03.html delete mode 100644 docs/tutorials/020/page04.html delete mode 100644 docs/tutorials/020/page05.html delete mode 100644 docs/tutorials/020/page06.html delete mode 100644 docs/tutorials/020/server.cpp delete mode 100644 docs/tutorials/020/server2.cpp delete mode 100644 docs/tutorials/021/021-client.dsp delete mode 100644 docs/tutorials/021/021-server.dsp delete mode 100644 docs/tutorials/021/Makefile delete mode 100644 docs/tutorials/021/client.cpp delete mode 100644 docs/tutorials/021/combine.shar delete mode 100644 docs/tutorials/021/mpool.cpp delete mode 100644 docs/tutorials/021/mpool.h delete mode 100644 docs/tutorials/021/page01.html delete mode 100644 docs/tutorials/021/page02.html delete mode 100644 docs/tutorials/021/page03.html delete mode 100644 docs/tutorials/021/page04.html delete mode 100644 docs/tutorials/021/page05.html delete mode 100644 docs/tutorials/021/page06.html delete mode 100644 docs/tutorials/021/server.cpp delete mode 100644 docs/tutorials/Chap_2/Chap_2.zip delete mode 100644 docs/tutorials/Chap_2/ex01.html delete mode 100644 docs/tutorials/Chap_2/ex02.html delete mode 100644 docs/tutorials/Chap_2/ex03.html delete mode 100644 docs/tutorials/Chap_2/ex04.html delete mode 100644 docs/tutorials/Chap_2/ex05.htm delete mode 100644 docs/tutorials/Chap_2/ex05.html delete mode 100644 docs/tutorials/Chap_2/ex06.html delete mode 100644 docs/tutorials/Chap_3/Chap_3.zip delete mode 100644 docs/tutorials/Chap_3/Makefile delete mode 100644 docs/tutorials/Chap_3/README delete mode 100644 docs/tutorials/Chap_3/ex01.html delete mode 100644 docs/tutorials/Chap_3/ex02.html delete mode 100644 docs/tutorials/Chap_3/ex03.html delete mode 100644 docs/tutorials/Chap_3/mm.cpp delete mode 100644 docs/tutorials/Chap_4/Chap_4.zip delete mode 100644 docs/tutorials/Chap_4/ex01.html delete mode 100644 docs/tutorials/Chap_4/ex02.html delete mode 100644 docs/tutorials/Chap_4/ex03.html delete mode 100644 docs/tutorials/Chap_4/ex04.html delete mode 100644 docs/tutorials/Chap_4/ex05.html delete mode 100644 docs/tutorials/Chap_4/ex06.html delete mode 100644 docs/tutorials/Chap_4/ex07.html delete mode 100644 docs/tutorials/Chap_4/ex08.html delete mode 100644 docs/tutorials/Chap_5/Chap_5.zip delete mode 100644 docs/tutorials/Chap_5/ex01.html delete mode 100644 docs/tutorials/Chap_5/ex02.html delete mode 100644 docs/tutorials/Chap_5/ex03.html delete mode 100644 docs/tutorials/Chap_5/ex04.html delete mode 100644 docs/tutorials/Chap_5/ex05.html delete mode 100644 docs/tutorials/Chap_6/Chap_6.zip delete mode 100644 docs/tutorials/Chap_6/ex01.html delete mode 100644 docs/tutorials/Chap_6/ex02.html delete mode 100644 docs/tutorials/Chap_6/ex03.html delete mode 100644 docs/tutorials/Chap_6/ex04.html delete mode 100644 docs/tutorials/Chap_6/ex05.html delete mode 100644 docs/tutorials/Chap_6/ex06.html delete mode 100644 docs/tutorials/Chap_6/ex07.html delete mode 100644 docs/tutorials/Chap_6/ex08.html delete mode 100644 docs/tutorials/Chap_6/ex09.html delete mode 100644 docs/tutorials/Chap_6/ex10.html delete mode 100644 docs/tutorials/Chap_7/Chap_7.zip delete mode 100644 docs/tutorials/Chap_7/ex01.html delete mode 100644 docs/tutorials/Chap_7/ex02.html delete mode 100644 docs/tutorials/Chap_7/ex03.html delete mode 100644 docs/tutorials/Makefile delete mode 100755 docs/tutorials/colorize delete mode 100755 docs/tutorials/combine delete mode 100755 docs/tutorials/fix.Makefile delete mode 100644 docs/tutorials/guide-tutorials.html delete mode 100755 docs/tutorials/linify delete mode 100644 docs/tutorials/new-tutorials.html delete mode 100644 docs/tutorials/online-tutorials.html delete mode 100644 docs/tutorials/templates.html delete mode 100644 docs/tutorials/tutorials.dsw delete mode 100644 docs/usage-bugzilla.html delete mode 100644 etc/DOC-way.html delete mode 100644 etc/README delete mode 100644 etc/Svc_Conf_l.cpp.diff delete mode 100644 etc/Svc_Conf_y.cpp.diff delete mode 100755 etc/create-jace-release delete mode 100644 etc/enforce_ace_try.diff delete mode 100644 etc/purify.solaris2 delete mode 100644 etc/xlc_dummy.cpp delete mode 100644 examples/ASX/CCM_App/CCM_App.cpp delete mode 100644 examples/ASX/CCM_App/Makefile delete mode 100644 examples/ASX/CCM_App/SC_Client.cpp delete mode 100644 examples/ASX/CCM_App/SC_Server.cpp delete mode 100644 examples/ASX/CCM_App/svc.conf delete mode 100644 examples/ASX/Event_Server/Event_Server/Consumer_Router.cpp delete mode 100644 examples/ASX/Event_Server/Event_Server/Consumer_Router.h delete mode 100644 examples/ASX/Event_Server/Event_Server/Event_Analyzer.cpp delete mode 100644 examples/ASX/Event_Server/Event_Server/Event_Analyzer.h delete mode 100644 examples/ASX/Event_Server/Event_Server/Event_Server.dsp delete mode 100644 examples/ASX/Event_Server/Event_Server/Event_Server.dsw delete mode 100644 examples/ASX/Event_Server/Event_Server/Makefile delete mode 100644 examples/ASX/Event_Server/Event_Server/Options.cpp delete mode 100644 examples/ASX/Event_Server/Event_Server/Options.h delete mode 100644 examples/ASX/Event_Server/Event_Server/Options.i delete mode 100644 examples/ASX/Event_Server/Event_Server/Peer_Router.cpp delete mode 100644 examples/ASX/Event_Server/Event_Server/Peer_Router.h delete mode 100644 examples/ASX/Event_Server/Event_Server/Supplier_Router.cpp delete mode 100644 examples/ASX/Event_Server/Event_Server/Supplier_Router.h delete mode 100644 examples/ASX/Event_Server/Event_Server/event_server.cpp delete mode 100644 examples/ASX/Event_Server/Makefile delete mode 100644 examples/ASX/Event_Server/README delete mode 100644 examples/ASX/Event_Server/Transceiver/Makefile delete mode 100644 examples/ASX/Event_Server/Transceiver/transceiver.cpp delete mode 100644 examples/ASX/Event_Server/Transceiver/transceiver.dsp delete mode 100644 examples/ASX/Event_Server/Transceiver/transceiver.dsw delete mode 100644 examples/ASX/Event_Server/Transceiver/transceiver.h delete mode 100644 examples/ASX/Makefile delete mode 100644 examples/ASX/Message_Queue/Bounded_Buffer.dsp delete mode 100644 examples/ASX/Message_Queue/Buffer_Stream.dsp delete mode 100644 examples/ASX/Message_Queue/Makefile delete mode 100644 examples/ASX/Message_Queue/Message_Queue_Example.dsw delete mode 100644 examples/ASX/Message_Queue/Priority_Buffer.dsp delete mode 100644 examples/ASX/Message_Queue/bounded_buffer.cpp delete mode 100644 examples/ASX/Message_Queue/buffer_stream.cpp delete mode 100644 examples/ASX/Message_Queue/priority_buffer.cpp delete mode 100644 examples/ASX/UPIPE_Event_Server/Consumer_Router.cpp delete mode 100644 examples/ASX/UPIPE_Event_Server/Consumer_Router.h delete mode 100644 examples/ASX/UPIPE_Event_Server/Event_Analyzer.cpp delete mode 100644 examples/ASX/UPIPE_Event_Server/Event_Analyzer.h delete mode 100644 examples/ASX/UPIPE_Event_Server/Makefile delete mode 100644 examples/ASX/UPIPE_Event_Server/Options.cpp delete mode 100644 examples/ASX/UPIPE_Event_Server/Options.h delete mode 100644 examples/ASX/UPIPE_Event_Server/Options.i delete mode 100644 examples/ASX/UPIPE_Event_Server/Peer_Router.cpp delete mode 100644 examples/ASX/UPIPE_Event_Server/Peer_Router.h delete mode 100644 examples/ASX/UPIPE_Event_Server/Supplier_Router.cpp delete mode 100644 examples/ASX/UPIPE_Event_Server/Supplier_Router.h delete mode 100644 examples/ASX/UPIPE_Event_Server/UPIPE_Event_Server.dsp delete mode 100644 examples/ASX/UPIPE_Event_Server/UPIPE_Event_Server.dsw delete mode 100644 examples/ASX/UPIPE_Event_Server/event_server.cpp delete mode 100644 examples/Bounded_Packet_Relay/BPR_Drivers.cpp delete mode 100644 examples/Bounded_Packet_Relay/BPR_Drivers.h delete mode 100644 examples/Bounded_Packet_Relay/BPR_Drivers_T.cpp delete mode 100644 examples/Bounded_Packet_Relay/BPR_Drivers_T.h delete mode 100644 examples/Bounded_Packet_Relay/Bounded_Packet_Relay.dsp delete mode 100644 examples/Bounded_Packet_Relay/Bounded_Packet_Relay.dsw delete mode 100644 examples/Bounded_Packet_Relay/Makefile delete mode 100644 examples/Bounded_Packet_Relay/README delete mode 100644 examples/Bounded_Packet_Relay/Thread_Bounded_Packet_Relay.cpp delete mode 100644 examples/Bounded_Packet_Relay/Thread_Bounded_Packet_Relay.h delete mode 100644 examples/Bounded_Packet_Relay/bpr_thread.cpp delete mode 100644 examples/CORBA/Makefile delete mode 100644 examples/CORBA/Test.idl delete mode 100644 examples/CORBA/Test_i.cpp delete mode 100644 examples/CORBA/Test_i.h delete mode 100644 examples/CORBA/client.cpp delete mode 100644 examples/CORBA/server.cpp delete mode 100644 examples/Connection/Makefile delete mode 100644 examples/Connection/blocking/README delete mode 100644 examples/Connection/blocking/SPIPE-acceptor.cpp delete mode 100644 examples/Connection/blocking/SPIPE-acceptor.h delete mode 100644 examples/Connection/blocking/SPIPE-connector.cpp delete mode 100644 examples/Connection/blocking/SPIPE-connector.h delete mode 100644 examples/Connection/blocking/SPIPE.dsp delete mode 100644 examples/Connection/blocking/SPIPE.dsw delete mode 100644 examples/Connection/blocking/acceptor.dsp delete mode 100644 examples/Connection/blocking/test_spipe_acceptor.cpp delete mode 100644 examples/Connection/blocking/test_spipe_connector.cpp delete mode 100644 examples/Connection/misc/Connection_Handler.cpp delete mode 100644 examples/Connection/misc/Connection_Handler.h delete mode 100644 examples/Connection/misc/Makefile delete mode 100644 examples/Connection/misc/test_upipe.cpp delete mode 100644 examples/Connection/misc/test_upipe.h delete mode 100644 examples/Connection/non_blocking/CPP-acceptor.cpp delete mode 100644 examples/Connection/non_blocking/CPP-acceptor.h delete mode 100644 examples/Connection/non_blocking/CPP-connector.cpp delete mode 100644 examples/Connection/non_blocking/CPP-connector.h delete mode 100644 examples/Connection/non_blocking/Makefile delete mode 100644 examples/Connection/non_blocking/README delete mode 100644 examples/Connection/non_blocking/non_blocking.dsp delete mode 100644 examples/Connection/non_blocking/non_blocking.dsw delete mode 100644 examples/Connection/non_blocking/server.dsp delete mode 100644 examples/Connection/non_blocking/test_lsock_acceptor.cpp delete mode 100644 examples/Connection/non_blocking/test_lsock_connector.cpp delete mode 100644 examples/Connection/non_blocking/test_sock_acceptor.cpp delete mode 100644 examples/Connection/non_blocking/test_sock_connector.cpp delete mode 100644 examples/Connection/non_blocking/test_spipe_acceptor.cpp delete mode 100644 examples/Connection/non_blocking/test_spipe_connector.cpp delete mode 100644 examples/Connection/non_blocking/test_tli_acceptor.cpp delete mode 100644 examples/Connection/non_blocking/test_tli_connector.cpp delete mode 100644 examples/DLL/Dll.dsw delete mode 100644 examples/DLL/Magazine.h delete mode 100644 examples/DLL/Main.dsp delete mode 100644 examples/DLL/Makefile delete mode 100644 examples/DLL/Makefile.Newsweek delete mode 100644 examples/DLL/Makefile.Today delete mode 100644 examples/DLL/Newsweek.cpp delete mode 100644 examples/DLL/Newsweek.dsp delete mode 100644 examples/DLL/Newsweek.h delete mode 100644 examples/DLL/README delete mode 100644 examples/DLL/Today.cpp delete mode 100644 examples/DLL/Today.dsp delete mode 100644 examples/DLL/Today.h delete mode 100644 examples/DLL/test_dll.cpp delete mode 100644 examples/IOStream/Makefile delete mode 100644 examples/IOStream/README delete mode 100644 examples/IOStream/client/Makefile delete mode 100644 examples/IOStream/client/iostream_client.cpp delete mode 100644 examples/IOStream/server/Makefile delete mode 100644 examples/IOStream/server/iostream_server.cpp delete mode 100644 examples/IOStream/server/iostream_server.h delete mode 100644 examples/IPC_SAP/ATM_SAP/CPP-client.cpp delete mode 100644 examples/IPC_SAP/ATM_SAP/CPP-server.cpp delete mode 100644 examples/IPC_SAP/ATM_SAP/Makefile delete mode 100644 examples/IPC_SAP/DEV_SAP/Makefile delete mode 100644 examples/IPC_SAP/DEV_SAP/README delete mode 100644 examples/IPC_SAP/DEV_SAP/reader/Makefile delete mode 100644 examples/IPC_SAP/DEV_SAP/reader/reader.cpp delete mode 100644 examples/IPC_SAP/DEV_SAP/writer/Makefile delete mode 100644 examples/IPC_SAP/DEV_SAP/writer/writer.cpp delete mode 100644 examples/IPC_SAP/FIFO_SAP/FIFO-Msg-client.cpp delete mode 100644 examples/IPC_SAP/FIFO_SAP/FIFO-Msg-server.cpp delete mode 100644 examples/IPC_SAP/FIFO_SAP/FIFO-client.cpp delete mode 100644 examples/IPC_SAP/FIFO_SAP/FIFO-server.cpp delete mode 100644 examples/IPC_SAP/FIFO_SAP/FIFO-test.cpp delete mode 100644 examples/IPC_SAP/FIFO_SAP/Makefile delete mode 100644 examples/IPC_SAP/FILE_SAP/File_sap.dsw delete mode 100644 examples/IPC_SAP/FILE_SAP/Makefile delete mode 100644 examples/IPC_SAP/FILE_SAP/client.cpp delete mode 100644 examples/IPC_SAP/FILE_SAP/client.dsp delete mode 100644 examples/IPC_SAP/FILE_SAP/testfile delete mode 100644 examples/IPC_SAP/Makefile delete mode 100644 examples/IPC_SAP/SOCK_SAP/C-inclient.cpp delete mode 100644 examples/IPC_SAP/SOCK_SAP/C-inserver.cpp delete mode 100644 examples/IPC_SAP/SOCK_SAP/CPP-inclient.cpp delete mode 100644 examples/IPC_SAP/SOCK_SAP/CPP-inclient.h delete mode 100644 examples/IPC_SAP/SOCK_SAP/CPP-inserver-fancy.cpp delete mode 100644 examples/IPC_SAP/SOCK_SAP/CPP-inserver-fancy.h delete mode 100644 examples/IPC_SAP/SOCK_SAP/CPP-inserver-poll.cpp delete mode 100644 examples/IPC_SAP/SOCK_SAP/CPP-inserver.cpp delete mode 100644 examples/IPC_SAP/SOCK_SAP/CPP-unclient.cpp delete mode 100644 examples/IPC_SAP/SOCK_SAP/CPP-unserver.cpp delete mode 100644 examples/IPC_SAP/SOCK_SAP/CPP_inclient.dsp delete mode 100644 examples/IPC_SAP/SOCK_SAP/CPP_inserver.dsp delete mode 100644 examples/IPC_SAP/SOCK_SAP/C_inserver.dsp delete mode 100644 examples/IPC_SAP/SOCK_SAP/FD-unclient.cpp delete mode 100644 examples/IPC_SAP/SOCK_SAP/FD-unserver.cpp delete mode 100644 examples/IPC_SAP/SOCK_SAP/Makefile delete mode 100644 examples/IPC_SAP/SOCK_SAP/README delete mode 100644 examples/IPC_SAP/SOCK_SAP/SOCK_SAP.dsp delete mode 100644 examples/IPC_SAP/SOCK_SAP/SOCK_SAP.dsw delete mode 100644 examples/IPC_SAP/SOCK_SAP/local_data delete mode 100755 examples/IPC_SAP/SOCK_SAP/run_test delete mode 100755 examples/IPC_SAP/SOCK_SAP/summarize delete mode 100644 examples/IPC_SAP/SPIPE_SAP/Makefile delete mode 100644 examples/IPC_SAP/SPIPE_SAP/NPClient.cpp delete mode 100644 examples/IPC_SAP/SPIPE_SAP/NPServer.cpp delete mode 100644 examples/IPC_SAP/SPIPE_SAP/client.cpp delete mode 100644 examples/IPC_SAP/SPIPE_SAP/consumer_msg.cpp delete mode 100644 examples/IPC_SAP/SPIPE_SAP/consumer_read.cpp delete mode 100644 examples/IPC_SAP/SPIPE_SAP/producer_msg.cpp delete mode 100644 examples/IPC_SAP/SPIPE_SAP/producer_read.cpp delete mode 100644 examples/IPC_SAP/SPIPE_SAP/server.cpp delete mode 100644 examples/IPC_SAP/SPIPE_SAP/shared.h delete mode 100644 examples/IPC_SAP/TLI_SAP/CPP-ATM-client.cpp delete mode 100644 examples/IPC_SAP/TLI_SAP/CPP-ATM-server.cpp delete mode 100644 examples/IPC_SAP/TLI_SAP/CPP-client.cpp delete mode 100644 examples/IPC_SAP/TLI_SAP/CPP-server.cpp delete mode 100644 examples/IPC_SAP/TLI_SAP/Makefile delete mode 100644 examples/IPC_SAP/TLI_SAP/db-client.cpp delete mode 100644 examples/IPC_SAP/TLI_SAP/db-server.cpp delete mode 100644 examples/IPC_SAP/TLI_SAP/ftp-client.cpp delete mode 100644 examples/IPC_SAP/TLI_SAP/ftp-server.cpp delete mode 100644 examples/IPC_SAP/UPIPE_SAP/Makefile delete mode 100644 examples/IPC_SAP/UPIPE_SAP/ex1.cpp delete mode 100644 examples/IPC_SAP/UPIPE_SAP/ex2.cpp delete mode 100644 examples/IPC_SAP/UPIPE_SAP/ex3.cpp delete mode 100644 examples/Log_Msg/Callback.dsp delete mode 100644 examples/Log_Msg/Log_Msg.dsp delete mode 100644 examples/Log_Msg/Makefile delete mode 100644 examples/Log_Msg/Ostream.dsp delete mode 100644 examples/Log_Msg/README delete mode 100644 examples/Log_Msg/test_callback.cpp delete mode 100644 examples/Log_Msg/test_log_msg.cpp delete mode 100644 examples/Log_Msg/test_ostream.cpp delete mode 100644 examples/Logger/Acceptor-server/Makefile delete mode 100644 examples/Logger/Acceptor-server/server_loggerd.cpp delete mode 100644 examples/Logger/Acceptor-server/server_loggerd.dsp delete mode 100644 examples/Logger/Acceptor-server/server_loggerd.dsw delete mode 100644 examples/Logger/Acceptor-server/server_loggerd.h delete mode 100644 examples/Logger/Makefile delete mode 100644 examples/Logger/README delete mode 100644 examples/Logger/client/Makefile delete mode 100644 examples/Logger/client/client.dsp delete mode 100644 examples/Logger/client/client.dsw delete mode 100644 examples/Logger/client/logging_app.cpp delete mode 100644 examples/Logger/simple-server/Logging_Acceptor.cpp delete mode 100644 examples/Logger/simple-server/Logging_Acceptor.h delete mode 100644 examples/Logger/simple-server/Logging_Handler.cpp delete mode 100644 examples/Logger/simple-server/Logging_Handler.h delete mode 100644 examples/Logger/simple-server/Makefile delete mode 100644 examples/Logger/simple-server/Reactor_Singleton.h delete mode 100644 examples/Logger/simple-server/server_loggerd.cpp delete mode 100644 examples/Logger/simple-server/server_loggerd.dsp delete mode 100644 examples/Logger/simple-server/server_loggerd.dsw delete mode 100644 examples/Makefile delete mode 100644 examples/Map_Manager/Makefile delete mode 100644 examples/Map_Manager/test_hash_map_manager.cpp delete mode 100644 examples/Mem_Map/IO-tests/IO_Test.cpp delete mode 100644 examples/Mem_Map/IO-tests/IO_Test.h delete mode 100644 examples/Mem_Map/IO-tests/Makefile delete mode 100644 examples/Mem_Map/IO-tests/test_io.cpp delete mode 100644 examples/Mem_Map/Makefile delete mode 100644 examples/Mem_Map/file-reverse/Makefile delete mode 100644 examples/Mem_Map/file-reverse/file-reverse.cpp delete mode 100644 examples/Mem_Map/file-reverse/file_reverse.dsp delete mode 100644 examples/Mem_Map/file-reverse/file_reverse.dsw delete mode 100644 examples/Misc/Makefile delete mode 100644 examples/Misc/test_XtReactor1.cpp delete mode 100644 examples/Misc/test_XtReactor2.cpp delete mode 100644 examples/Misc/test_dump.cpp delete mode 100644 examples/Misc/test_dump.h delete mode 100644 examples/Misc/test_get_opt.cpp delete mode 100644 examples/Misc/test_profile_timer.cpp delete mode 100644 examples/Misc/test_read_buffer.cpp delete mode 100644 examples/Misc/test_set.cpp delete mode 100644 examples/Misc/test_sstring.cpp delete mode 100644 examples/Misc/test_trace.cpp delete mode 100644 examples/NT_Service/NT_Service.dsp delete mode 100644 examples/NT_Service/NT_Service.dsw delete mode 100644 examples/NT_Service/README delete mode 100644 examples/NT_Service/main.cpp delete mode 100644 examples/NT_Service/ntsvc.cpp delete mode 100644 examples/NT_Service/ntsvc.h delete mode 100644 examples/Naming/Makefile delete mode 100644 examples/Naming/Naming.dsp delete mode 100644 examples/Naming/Naming.dsw delete mode 100644 examples/Naming/multiple_contexts.dsp delete mode 100644 examples/Naming/non_existent.dsp delete mode 100644 examples/Naming/test_multiple_contexts.cpp delete mode 100644 examples/Naming/test_non_existent.cpp delete mode 100644 examples/Naming/test_open.cpp delete mode 100644 examples/Naming/test_writers.cpp delete mode 100644 examples/OS/Makefile delete mode 100644 examples/OS/Process/Makefile delete mode 100644 examples/OS/Process/Process.dsp delete mode 100644 examples/OS/Process/Process.dsw delete mode 100644 examples/OS/Process/README delete mode 100644 examples/OS/Process/imore.cpp delete mode 100644 examples/OS/Process/imore.dsp delete mode 100644 examples/OS/Process/process.cpp delete mode 100644 examples/QOS/Makefile delete mode 100644 examples/QOS/QOS.dsw delete mode 100644 examples/QOS/QosEvent.h delete mode 100644 examples/QOS/README delete mode 100644 examples/QOS/Receiver_QOS_Event_Handler.cpp delete mode 100644 examples/QOS/Receiver_QOS_Event_Handler.h delete mode 100644 examples/QOS/Sender_QOS_Event_Handler.cpp delete mode 100644 examples/QOS/Sender_QOS_Event_Handler.h delete mode 100644 examples/QOS/client.cpp delete mode 100644 examples/QOS/client.dsp delete mode 100644 examples/QOS/server.cpp delete mode 100644 examples/QOS/server.dsp delete mode 100644 examples/README delete mode 100644 examples/Reactor/Dgram/CODgram.cpp delete mode 100644 examples/Reactor/Dgram/CODgram.dsp delete mode 100644 examples/Reactor/Dgram/Dgram.cpp delete mode 100644 examples/Reactor/Dgram/Dgram.dsp delete mode 100644 examples/Reactor/Dgram/Dgram.dsw delete mode 100644 examples/Reactor/Dgram/Makefile delete mode 100644 examples/Reactor/FIFO/Makefile delete mode 100644 examples/Reactor/FIFO/client.cpp delete mode 100644 examples/Reactor/FIFO/server.cpp delete mode 100644 examples/Reactor/Makefile delete mode 100644 examples/Reactor/Misc/Makefile delete mode 100644 examples/Reactor/Misc/Misc.dsp delete mode 100644 examples/Reactor/Misc/Misc.dsw delete mode 100644 examples/Reactor/Misc/demuxing.dsp delete mode 100644 examples/Reactor/Misc/early_timeouts.dsp delete mode 100644 examples/Reactor/Misc/notification.cpp delete mode 100644 examples/Reactor/Misc/notification.dsp delete mode 100644 examples/Reactor/Misc/pingpong.cpp delete mode 100644 examples/Reactor/Misc/reactors.dsp delete mode 100644 examples/Reactor/Misc/signal_tester.cpp delete mode 100644 examples/Reactor/Misc/signals_1.dsp delete mode 100644 examples/Reactor/Misc/signals_2.dsp delete mode 100644 examples/Reactor/Misc/test_demuxing.cpp delete mode 100644 examples/Reactor/Misc/test_early_timeouts.cpp delete mode 100644 examples/Reactor/Misc/test_event_handler_t.cpp delete mode 100644 examples/Reactor/Misc/test_reactors.cpp delete mode 100644 examples/Reactor/Misc/test_signals.cpp delete mode 100644 examples/Reactor/Misc/test_signals_1.cpp delete mode 100644 examples/Reactor/Misc/test_signals_2.cpp delete mode 100644 examples/Reactor/Misc/test_time_value.cpp delete mode 100644 examples/Reactor/Misc/test_timer_queue.cpp delete mode 100644 examples/Reactor/Multicast/Log_Wrapper.cpp delete mode 100644 examples/Reactor/Multicast/Log_Wrapper.h delete mode 100644 examples/Reactor/Multicast/Makefile delete mode 100644 examples/Reactor/Multicast/Multicast.dsw delete mode 100644 examples/Reactor/Multicast/README delete mode 100644 examples/Reactor/Multicast/client.cpp delete mode 100644 examples/Reactor/Multicast/client.dsp delete mode 100644 examples/Reactor/Multicast/server.cpp delete mode 100644 examples/Reactor/Multicast/server.dsp delete mode 100644 examples/Reactor/Ntalker/Makefile delete mode 100644 examples/Reactor/Ntalker/README delete mode 100644 examples/Reactor/Ntalker/ntalker.cpp delete mode 100644 examples/Reactor/Ntalker/ntalker.dsp delete mode 100644 examples/Reactor/Ntalker/ntalker.dsw delete mode 100644 examples/Reactor/Proactor/Aio_Platform_Test_C.cpp delete mode 100644 examples/Reactor/Proactor/Makefile delete mode 100644 examples/Reactor/Proactor/README delete mode 100644 examples/Reactor/Proactor/post_completion.dsp delete mode 100644 examples/Reactor/Proactor/post_completions.cpp delete mode 100644 examples/Reactor/Proactor/post_completions.dsp delete mode 100644 examples/Reactor/Proactor/simple_test_proactor.cpp delete mode 100644 examples/Reactor/Proactor/test_aiocb.cpp delete mode 100644 examples/Reactor/Proactor/test_aiocb_ace.cpp delete mode 100644 examples/Reactor/Proactor/test_aiosig.cpp delete mode 100644 examples/Reactor/Proactor/test_aiosig_ace.cpp delete mode 100644 examples/Reactor/Proactor/test_cancel.cpp delete mode 100644 examples/Reactor/Proactor/test_cancel.dsp delete mode 100644 examples/Reactor/Proactor/test_end_event_loop.cpp delete mode 100644 examples/Reactor/Proactor/test_end_event_loop.dsp delete mode 100644 examples/Reactor/Proactor/test_multiple_loops.cpp delete mode 100644 examples/Reactor/Proactor/test_multiple_loops.dsp delete mode 100644 examples/Reactor/Proactor/test_proactor.cpp delete mode 100644 examples/Reactor/Proactor/test_proactor.dsp delete mode 100644 examples/Reactor/Proactor/test_proactor.dsw delete mode 100644 examples/Reactor/Proactor/test_timeout.cpp delete mode 100644 examples/Reactor/Proactor/test_timeout.dsp delete mode 100644 examples/Reactor/Proactor/test_timeout_st.cpp delete mode 100644 examples/Reactor/README delete mode 100644 examples/Reactor/WFMO_Reactor/APC.DSP delete mode 100644 examples/Reactor/WFMO_Reactor/Abondoned.dsp delete mode 100644 examples/Reactor/WFMO_Reactor/Console_Input.dsp delete mode 100644 examples/Reactor/WFMO_Reactor/Directory_Changes.dsp delete mode 100644 examples/Reactor/WFMO_Reactor/Exceptions.dsp delete mode 100644 examples/Reactor/WFMO_Reactor/Handle_Close.dsp delete mode 100644 examples/Reactor/WFMO_Reactor/Multithreading.dsp delete mode 100644 examples/Reactor/WFMO_Reactor/Network_Events.dsp delete mode 100644 examples/Reactor/WFMO_Reactor/Prerun_State_Changes.dsp delete mode 100644 examples/Reactor/WFMO_Reactor/Registration.dsp delete mode 100644 examples/Reactor/WFMO_Reactor/Registry_Changes.dsp delete mode 100644 examples/Reactor/WFMO_Reactor/Removals.dsp delete mode 100644 examples/Reactor/WFMO_Reactor/Talker.dsp delete mode 100644 examples/Reactor/WFMO_Reactor/Timeouts.dsp delete mode 100644 examples/Reactor/WFMO_Reactor/WFMO_Reactor.dsw delete mode 100644 examples/Reactor/WFMO_Reactor/Window_Messages.dsp delete mode 100644 examples/Reactor/WFMO_Reactor/test_abandoned.cpp delete mode 100644 examples/Reactor/WFMO_Reactor/test_apc.cpp delete mode 100644 examples/Reactor/WFMO_Reactor/test_console_input.cpp delete mode 100644 examples/Reactor/WFMO_Reactor/test_directory_changes.cpp delete mode 100644 examples/Reactor/WFMO_Reactor/test_exceptions.cpp delete mode 100644 examples/Reactor/WFMO_Reactor/test_handle_close.cpp delete mode 100644 examples/Reactor/WFMO_Reactor/test_multithreading.cpp delete mode 100644 examples/Reactor/WFMO_Reactor/test_network_events.cpp delete mode 100644 examples/Reactor/WFMO_Reactor/test_prerun_state_changes.cpp delete mode 100644 examples/Reactor/WFMO_Reactor/test_registration.cpp delete mode 100644 examples/Reactor/WFMO_Reactor/test_registry_changes.cpp delete mode 100644 examples/Reactor/WFMO_Reactor/test_removals.cpp delete mode 100644 examples/Reactor/WFMO_Reactor/test_talker.cpp delete mode 100644 examples/Reactor/WFMO_Reactor/test_timeouts.cpp delete mode 100644 examples/Reactor/WFMO_Reactor/test_window_messages.cpp delete mode 100644 examples/Registry/Registry.dsp delete mode 100644 examples/Registry/Registry.dsw delete mode 100644 examples/Registry/test_registry_iterator.cpp delete mode 100644 examples/Registry/test_registry_update.cpp delete mode 100644 examples/Registry/update.dsp delete mode 100644 examples/Service_Configurator/IPC-tests/Makefile delete mode 100644 examples/Service_Configurator/IPC-tests/README delete mode 100644 examples/Service_Configurator/IPC-tests/client/Makefile delete mode 100644 examples/Service_Configurator/IPC-tests/client/broadcast_client_test.cpp delete mode 100644 examples/Service_Configurator/IPC-tests/client/local_data delete mode 100644 examples/Service_Configurator/IPC-tests/client/local_dgram_client_test.cpp delete mode 100644 examples/Service_Configurator/IPC-tests/client/local_fifo_client_test.cpp delete mode 100644 examples/Service_Configurator/IPC-tests/client/local_pipe_client_test.cpp delete mode 100644 examples/Service_Configurator/IPC-tests/client/local_spipe_client_test.cpp delete mode 100644 examples/Service_Configurator/IPC-tests/client/local_stream_client_test.cpp delete mode 100644 examples/Service_Configurator/IPC-tests/client/remote_data delete mode 100644 examples/Service_Configurator/IPC-tests/client/remote_data1 delete mode 100644 examples/Service_Configurator/IPC-tests/client/remote_data2 delete mode 100644 examples/Service_Configurator/IPC-tests/client/remote_data3 delete mode 100644 examples/Service_Configurator/IPC-tests/client/remote_data4 delete mode 100644 examples/Service_Configurator/IPC-tests/client/remote_dgram_client_test.cpp delete mode 100644 examples/Service_Configurator/IPC-tests/client/remote_service_directory_test.cpp delete mode 100644 examples/Service_Configurator/IPC-tests/client/remote_stream_client_test.cpp delete mode 100644 examples/Service_Configurator/IPC-tests/client/remote_thr_stream_client_test.cpp delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_Broadcast.cpp delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_Broadcast.h delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_Broadcast.i delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_L_CODgram.cpp delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_L_CODgram.h delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_L_CODgram.i delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_L_Dgram.cpp delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_L_Dgram.h delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_L_Dgram.i delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_L_FIFO.cpp delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_L_FIFO.h delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_L_FIFO.i delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_L_Pipe.cpp delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_L_Pipe.h delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_L_Pipe.i delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_L_SPIPE.cpp delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_L_SPIPE.h delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_L_SPIPE.i delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_L_Stream.cpp delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_L_Stream.h delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_L_Stream.i delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_R_Dgram.cpp delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_R_Dgram.h delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_R_Dgram.i delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_R_Stream.cpp delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_R_Stream.h delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_R_Stream.i delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.cpp delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.h delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.i delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_Timeout.cpp delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_Timeout.h delete mode 100644 examples/Service_Configurator/IPC-tests/server/Handle_Timeout.i delete mode 100644 examples/Service_Configurator/IPC-tests/server/Makefile delete mode 100644 examples/Service_Configurator/IPC-tests/server/server_test.cpp delete mode 100644 examples/Service_Configurator/IPC-tests/server/svc.conf delete mode 100644 examples/Service_Configurator/Makefile delete mode 100644 examples/Service_Configurator/Misc/Makefile delete mode 100644 examples/Service_Configurator/Misc/Misc.dsw delete mode 100644 examples/Service_Configurator/Misc/README delete mode 100644 examples/Service_Configurator/Misc/Timer.dsp delete mode 100644 examples/Service_Configurator/Misc/Timer_Service.cpp delete mode 100644 examples/Service_Configurator/Misc/Timer_Service.h delete mode 100644 examples/Service_Configurator/Misc/main.cpp delete mode 100644 examples/Service_Configurator/Misc/main.dsp delete mode 100644 examples/Service_Configurator/Misc/svc.conf1 delete mode 100644 examples/Service_Configurator/Misc/svc.conf2 delete mode 100644 examples/Shared_Malloc/Makefile delete mode 100644 examples/Shared_Malloc/Malloc.cpp delete mode 100644 examples/Shared_Malloc/Malloc.h delete mode 100644 examples/Shared_Malloc/Options.cpp delete mode 100644 examples/Shared_Malloc/Options.h delete mode 100644 examples/Shared_Malloc/Shared_Malloc.dsw delete mode 100644 examples/Shared_Malloc/malloc.dsp delete mode 100644 examples/Shared_Malloc/multiple_mallocs.dsp delete mode 100644 examples/Shared_Malloc/persistence.dsp delete mode 100644 examples/Shared_Malloc/position_independent_malloc.dsp delete mode 100644 examples/Shared_Malloc/test_malloc.cpp delete mode 100644 examples/Shared_Malloc/test_multiple_mallocs.cpp delete mode 100644 examples/Shared_Malloc/test_persistence.cpp delete mode 100644 examples/Shared_Malloc/test_position_independent_malloc.cpp delete mode 100644 examples/Shared_Malloc/test_position_independent_malloc.h delete mode 100644 examples/Shared_Memory/Makefile delete mode 100644 examples/Shared_Memory/test_MM.cpp delete mode 100644 examples/Shared_Memory/test_SV.cpp delete mode 100644 examples/System_V_IPC/Makefile delete mode 100644 examples/System_V_IPC/README delete mode 100644 examples/System_V_IPC/SV_Message_Queues/MQ_Client.cpp delete mode 100644 examples/System_V_IPC/SV_Message_Queues/MQ_Server.cpp delete mode 100644 examples/System_V_IPC/SV_Message_Queues/Makefile delete mode 100644 examples/System_V_IPC/SV_Message_Queues/TMQ_Client.cpp delete mode 100644 examples/System_V_IPC/SV_Message_Queues/TMQ_Server.cpp delete mode 100644 examples/System_V_IPC/SV_Message_Queues/test.h delete mode 100644 examples/System_V_IPC/SV_Semaphores/Makefile delete mode 100644 examples/System_V_IPC/SV_Semaphores/Semaphore_Client.cpp delete mode 100644 examples/System_V_IPC/SV_Semaphores/Semaphore_Server.cpp delete mode 100644 examples/System_V_IPC/SV_Semaphores/Semaphore_Test.h delete mode 100644 examples/System_V_IPC/SV_Semaphores/Semaphores.cpp delete mode 100644 examples/System_V_IPC/SV_Semaphores/Semaphores_1.cpp delete mode 100644 examples/System_V_IPC/SV_Semaphores/Semaphores_2.cpp delete mode 100644 examples/System_V_IPC/SV_Shared_Memory/Makefile delete mode 100644 examples/System_V_IPC/SV_Shared_Memory/SV_Shared_Memory_Test.cpp delete mode 100644 examples/System_V_IPC/SV_Shared_Memory/SV_Shared_Memory_Test.h delete mode 100644 examples/Threads/Makefile delete mode 100644 examples/Threads/TSS_Data.h delete mode 100644 examples/Threads/TSS_Obj.h delete mode 100644 examples/Threads/TSS_Task.h delete mode 100644 examples/Threads/auto_event.cpp delete mode 100644 examples/Threads/barrier1.cpp delete mode 100644 examples/Threads/barrier1.dsp delete mode 100644 examples/Threads/barrier2.cpp delete mode 100644 examples/Threads/barrier2.dsp delete mode 100644 examples/Threads/cancel.cpp delete mode 100644 examples/Threads/cancel.dsp delete mode 100644 examples/Threads/future1.cpp delete mode 100644 examples/Threads/future1.dsp delete mode 100644 examples/Threads/future2.cpp delete mode 100644 examples/Threads/future2.dsp delete mode 100644 examples/Threads/manual_event.cpp delete mode 100644 examples/Threads/manual_event.dsp delete mode 100644 examples/Threads/process_manager.cpp delete mode 100644 examples/Threads/process_mutex.cpp delete mode 100644 examples/Threads/process_mutex.dsp delete mode 100644 examples/Threads/process_semaphore.cpp delete mode 100644 examples/Threads/process_semaphore.dsp delete mode 100644 examples/Threads/reader_writer.cpp delete mode 100644 examples/Threads/reader_writer.dsp delete mode 100644 examples/Threads/recursive_mutex.cpp delete mode 100644 examples/Threads/recursive_mutex.dsp delete mode 100644 examples/Threads/task_five.cpp delete mode 100644 examples/Threads/task_five.dsp delete mode 100644 examples/Threads/task_four.cpp delete mode 100644 examples/Threads/task_four.dsp delete mode 100644 examples/Threads/task_one.cpp delete mode 100644 examples/Threads/task_one.dsp delete mode 100644 examples/Threads/task_three.cpp delete mode 100644 examples/Threads/task_three.dsp delete mode 100644 examples/Threads/task_two.cpp delete mode 100644 examples/Threads/task_two.dsp delete mode 100644 examples/Threads/test.dsp delete mode 100644 examples/Threads/test.dsw delete mode 100644 examples/Threads/test_auto_event.cpp delete mode 100644 examples/Threads/test_barrier1.cpp delete mode 100644 examples/Threads/test_barrier2.cpp delete mode 100644 examples/Threads/test_cancel.cpp delete mode 100644 examples/Threads/test_future1.cpp delete mode 100644 examples/Threads/test_future2.cpp delete mode 100644 examples/Threads/test_manual_event.cpp delete mode 100644 examples/Threads/test_process_mutex.cpp delete mode 100644 examples/Threads/test_process_semaphore.cpp delete mode 100644 examples/Threads/test_reader_writer.cpp delete mode 100644 examples/Threads/test_recursive_mutex.cpp delete mode 100644 examples/Threads/test_task.cpp delete mode 100644 examples/Threads/test_task_four.cpp delete mode 100644 examples/Threads/test_task_one.cpp delete mode 100644 examples/Threads/test_task_three.cpp delete mode 100644 examples/Threads/test_task_two.cpp delete mode 100644 examples/Threads/test_thread_manager.cpp delete mode 100644 examples/Threads/test_thread_pool.cpp delete mode 100644 examples/Threads/test_thread_specific.cpp delete mode 100644 examples/Threads/test_token.cpp delete mode 100644 examples/Threads/test_tss.cpp delete mode 100644 examples/Threads/test_tss1.cpp delete mode 100644 examples/Threads/test_tss2.cpp delete mode 100644 examples/Threads/thread_manager.cpp delete mode 100644 examples/Threads/thread_manager.dsp delete mode 100644 examples/Threads/thread_pool.cpp delete mode 100644 examples/Threads/thread_pool.dsp delete mode 100644 examples/Threads/thread_specific.cpp delete mode 100644 examples/Threads/thread_specific.dsp delete mode 100644 examples/Threads/thread_specific.h delete mode 100644 examples/Threads/token.cpp delete mode 100644 examples/Threads/token.dsp delete mode 100644 examples/Threads/tss1.cpp delete mode 100644 examples/Threads/tss1.dsp delete mode 100644 examples/Threads/tss2.cpp delete mode 100644 examples/Threads/tss2.dsp delete mode 100644 examples/Threads/wfmo.cpp delete mode 100644 examples/Timer_Queue/Async_Timer_Queue_Test.cpp delete mode 100644 examples/Timer_Queue/Async_Timer_Queue_Test.dsp delete mode 100644 examples/Timer_Queue/Async_Timer_Queue_Test.h delete mode 100644 examples/Timer_Queue/Driver.cpp delete mode 100644 examples/Timer_Queue/Driver.h delete mode 100644 examples/Timer_Queue/Makefile delete mode 100644 examples/Timer_Queue/README delete mode 100644 examples/Timer_Queue/Reactor_Timer_Queue_Test.cpp delete mode 100644 examples/Timer_Queue/Reactor_Timer_Queue_Test.dsp delete mode 100644 examples/Timer_Queue/Reactor_Timer_Queue_Test.h delete mode 100644 examples/Timer_Queue/Thread_Timer_Queue_Test.cpp delete mode 100644 examples/Timer_Queue/Thread_Timer_Queue_Test.dsp delete mode 100644 examples/Timer_Queue/Thread_Timer_Queue_Test.h delete mode 100644 examples/Timer_Queue/Timer_Queue.dsw delete mode 100644 examples/Timer_Queue/main_async.cpp delete mode 100644 examples/Timer_Queue/main_reactor.cpp delete mode 100644 examples/Timer_Queue/main_thread.cpp delete mode 100644 examples/Web_Crawler/Command_Processor.cpp delete mode 100644 examples/Web_Crawler/Command_Processor.h delete mode 100644 examples/Web_Crawler/HTTP_URL.cpp delete mode 100644 examples/Web_Crawler/HTTP_URL.h delete mode 100644 examples/Web_Crawler/Iterators.cpp delete mode 100644 examples/Web_Crawler/Iterators.h delete mode 100644 examples/Web_Crawler/Makefile delete mode 100644 examples/Web_Crawler/Mem_Map_Stream.cpp delete mode 100644 examples/Web_Crawler/Mem_Map_Stream.h delete mode 100644 examples/Web_Crawler/Options.cpp delete mode 100644 examples/Web_Crawler/Options.h delete mode 100644 examples/Web_Crawler/README delete mode 100644 examples/Web_Crawler/URL.cpp delete mode 100644 examples/Web_Crawler/URL.h delete mode 100644 examples/Web_Crawler/URL_Addr.cpp delete mode 100644 examples/Web_Crawler/URL_Addr.h delete mode 100644 examples/Web_Crawler/URL_Status.cpp delete mode 100644 examples/Web_Crawler/URL_Status.h delete mode 100644 examples/Web_Crawler/URL_Visitor.cpp delete mode 100644 examples/Web_Crawler/URL_Visitor.h delete mode 100644 examples/Web_Crawler/URL_Visitor_Factory.cpp delete mode 100644 examples/Web_Crawler/URL_Visitor_Factory.h delete mode 100644 examples/Web_Crawler/Web_Crawler.cpp delete mode 100644 examples/Web_Crawler/Web_Crawler.dsp delete mode 100644 examples/Web_Crawler/Web_Crawler.dsw delete mode 100644 examples/Web_Crawler/Web_Crawler.h delete mode 100644 examples/Web_Crawler/main.cpp delete mode 100644 include/makeinclude/ace_flags.bor delete mode 100644 include/makeinclude/build_core_exe.bor delete mode 100644 include/makeinclude/build_core_library.bor delete mode 100644 include/makeinclude/build_dll.bor delete mode 100644 include/makeinclude/build_example.bor delete mode 100644 include/makeinclude/build_exe.bor delete mode 100644 include/makeinclude/build_lib.bor delete mode 100644 include/makeinclude/build_library.bor delete mode 100644 include/makeinclude/compiler.bor delete mode 100644 include/makeinclude/decorator.bor delete mode 100644 include/makeinclude/macros.GNU delete mode 100644 include/makeinclude/make_flags.bor delete mode 100644 include/makeinclude/outputdir.bor delete mode 100644 include/makeinclude/platform_aix.GNU delete mode 100644 include/makeinclude/platform_aix4.2.GNU delete mode 100644 include/makeinclude/platform_aix4_cset++.GNU delete mode 100644 include/makeinclude/platform_aix4_g++.GNU delete mode 100644 include/makeinclude/platform_aix_g++.GNU delete mode 100644 include/makeinclude/platform_chorus.GNU delete mode 100644 include/makeinclude/platform_chorus_ghs.GNU delete mode 100644 include/makeinclude/platform_cray.GNU delete mode 100644 include/makeinclude/platform_dgux4_epc.GNU delete mode 100644 include/makeinclude/platform_dgux4_ghs.GNU delete mode 100644 include/makeinclude/platform_freebsd.GNU delete mode 100644 include/makeinclude/platform_freebsd_pthread.GNU delete mode 100644 include/makeinclude/platform_hpux.GNU delete mode 100644 include/makeinclude/platform_hpux_aCC.GNU delete mode 100644 include/makeinclude/platform_hpux_gcc.GNU delete mode 100644 include/makeinclude/platform_hpux_orbix.GNU delete mode 100644 include/makeinclude/platform_irix5.2.GNU delete mode 100644 include/makeinclude/platform_irix5.3_g++.GNU delete mode 100644 include/makeinclude/platform_irix5.3_sgic++.GNU delete mode 100644 include/makeinclude/platform_irix6.x_common.GNU delete mode 100644 include/makeinclude/platform_irix6.x_g++.GNU delete mode 100644 include/makeinclude/platform_irix6.x_kcc.GNU delete mode 100644 include/makeinclude/platform_irix6.x_sgic++.GNU delete mode 100644 include/makeinclude/platform_linux.GNU delete mode 100644 include/makeinclude/platform_linux_kcc.GNU delete mode 100644 include/makeinclude/platform_linux_lxpthread.GNU delete mode 100644 include/makeinclude/platform_linux_lxpthreads.GNU delete mode 100644 include/makeinclude/platform_linux_pthread.GNU delete mode 100644 include/makeinclude/platform_lynxos.GNU delete mode 100644 include/makeinclude/platform_m88k.GNU delete mode 100644 include/makeinclude/platform_mvs.GNU delete mode 100644 include/makeinclude/platform_netbsd.GNU delete mode 100644 include/makeinclude/platform_osf1_3.2.GNU delete mode 100644 include/makeinclude/platform_osf1_4.0.GNU delete mode 100644 include/makeinclude/platform_osf1_4.0_g++.GNU delete mode 100644 include/makeinclude/platform_osf1_4.0_kcc.GNU delete mode 100644 include/makeinclude/platform_osf1_4.0_rcc.GNU delete mode 100644 include/makeinclude/platform_psos_diab.GNU delete mode 100644 include/makeinclude/platform_psos_diab_ppc.GNU delete mode 100644 include/makeinclude/platform_psos_tm.GNU delete mode 100644 include/makeinclude/platform_psosim_g++.GNU delete mode 100644 include/makeinclude/platform_qnx_neutrino.GNU delete mode 100644 include/makeinclude/platform_sco-nothread.GNU delete mode 100644 include/makeinclude/platform_sco5.0.0-CC-fsu-pthread.GNU delete mode 100644 include/makeinclude/platform_sco5.0.0-fsu-pthread.GNU delete mode 100644 include/makeinclude/platform_sco5.0.0-mit-pthread.GNU delete mode 100644 include/makeinclude/platform_sco5.0.0-nothread.GNU delete mode 100644 include/makeinclude/platform_sunos4_g++.GNU delete mode 100644 include/makeinclude/platform_sunos4_lucid.GNU delete mode 100644 include/makeinclude/platform_sunos4_sunc++3.x.GNU delete mode 100644 include/makeinclude/platform_sunos4_sunc++4.x.GNU delete mode 100644 include/makeinclude/platform_sunos4_sunc++4.x_orbix.GNU delete mode 100644 include/makeinclude/platform_sunos5.6_sparc_sunc++_4.2.GNU delete mode 100644 include/makeinclude/platform_sunos5_centerline.GNU delete mode 100644 include/makeinclude/platform_sunos5_centerline_orbix.GNU delete mode 100644 include/makeinclude/platform_sunos5_egcs.GNU delete mode 100644 include/makeinclude/platform_sunos5_g++.GNU delete mode 100644 include/makeinclude/platform_sunos5_ghs.GNU delete mode 100644 include/makeinclude/platform_sunos5_kcc.GNU delete mode 100644 include/makeinclude/platform_sunos5_sunc++.GNU delete mode 100644 include/makeinclude/platform_sunos5_sunc++_orbix.GNU delete mode 100644 include/makeinclude/platform_tandem.GNU delete mode 100644 include/makeinclude/platform_tru64_cxx.GNU delete mode 100644 include/makeinclude/platform_tru64_g++.GNU delete mode 100644 include/makeinclude/platform_unixware_g++.GNU delete mode 100644 include/makeinclude/platform_vxworks5.x_diab.GNU delete mode 100644 include/makeinclude/platform_vxworks5.x_g++.GNU delete mode 100644 include/makeinclude/platform_vxworks5.x_ghs.GNU delete mode 100644 include/makeinclude/rules.bin.GNU delete mode 100644 include/makeinclude/rules.common.GNU delete mode 100644 include/makeinclude/rules.lib.GNU delete mode 100644 include/makeinclude/rules.local.GNU delete mode 100644 include/makeinclude/rules.nested.GNU delete mode 100644 include/makeinclude/rules.nolocal.GNU delete mode 100644 include/makeinclude/rules.nonested.GNU delete mode 100644 include/makeinclude/wrapper_macros.GNU delete mode 100755 install-sh delete mode 100644 java/ChangeLog delete mode 100644 java/ImageProcessing/ImageProcessing.dsp delete mode 100644 java/ImageProcessing/ImageProcessing.dsw delete mode 100644 java/ImageProcessing/filters/Assert.java delete mode 100644 java/ImageProcessing/filters/BleachFilter.java delete mode 100644 java/ImageProcessing/filters/BlurFilter.java delete mode 100644 java/ImageProcessing/filters/DarkenFilter.java delete mode 100644 java/ImageProcessing/filters/DeSpeckleFilter.java delete mode 100644 java/ImageProcessing/filters/DissolveFilter.java delete mode 100644 java/ImageProcessing/filters/EdgeDetectFilter.java delete mode 100644 java/ImageProcessing/filters/EmbossFilter.java delete mode 100644 java/ImageProcessing/filters/Makefile delete mode 100644 java/ImageProcessing/filters/MedFilter.java delete mode 100644 java/ImageProcessing/filters/OilPaintFilter.java delete mode 100644 java/ImageProcessing/filters/PixelizeFilter.java delete mode 100644 java/ImageProcessing/filters/RandomizeFilter.java delete mode 100644 java/ImageProcessing/filters/RotateFilter.java delete mode 100644 java/ImageProcessing/filters/SharpenFilter.java delete mode 100644 java/ImageProcessing/filters/SpatialFilter.java delete mode 100644 java/ImageProcessing/filters/SpreadFilter.java delete mode 100644 java/ImageProcessing/filters/Timer.java delete mode 100644 java/ImageProcessing/framework/BaseButton.java delete mode 100644 java/ImageProcessing/framework/BenchmarkApplet.java delete mode 100644 java/ImageProcessing/framework/DialogManager.java delete mode 100644 java/ImageProcessing/framework/DialogType.java delete mode 100644 java/ImageProcessing/framework/FileBrowser.java delete mode 100644 java/ImageProcessing/framework/FilePanel.java delete mode 100644 java/ImageProcessing/framework/FilterTest.java delete mode 100644 java/ImageProcessing/framework/GIFHandler.java delete mode 100644 java/ImageProcessing/framework/GifEncoder.java delete mode 100644 java/ImageProcessing/framework/Hierarchy.java delete mode 100644 java/ImageProcessing/framework/HierarchyAdapter.java delete mode 100644 java/ImageProcessing/framework/Icon.java delete mode 100644 java/ImageProcessing/framework/ImageApp.java delete mode 100644 java/ImageProcessing/framework/ImageByteCounter.java delete mode 100644 java/ImageProcessing/framework/ImageCanvas.java delete mode 100644 java/ImageProcessing/framework/ImageEncoder.java delete mode 100644 java/ImageProcessing/framework/ImageProcessor.java delete mode 100644 java/ImageProcessing/framework/ImageSender.java delete mode 100644 java/ImageProcessing/framework/IntHashtable.java delete mode 100644 java/ImageProcessing/framework/ListFiles.java delete mode 100755 java/ImageProcessing/framework/LoadURLFrame.java delete mode 100644 java/ImageProcessing/framework/Makefile delete mode 100644 java/ImageProcessing/framework/MedJava.html delete mode 100644 java/ImageProcessing/framework/Options.java delete mode 100755 java/ImageProcessing/framework/SaveURLFrame.java delete mode 100644 java/ImageProcessing/framework/Separator.java delete mode 100644 java/ImageProcessing/framework/ServerHandler.java delete mode 100644 java/ImageProcessing/framework/ServerTest.java delete mode 100644 java/ImageProcessing/framework/StatusDisplay.java delete mode 100644 java/ImageProcessing/framework/StatusIndicator.java delete mode 100644 java/ImageProcessing/framework/TestHandler.java delete mode 100644 java/ImageProcessing/framework/Tester.java delete mode 100644 java/ImageProcessing/framework/doc01.gif delete mode 100644 java/ImageProcessing/framework/file03.gif delete mode 100644 java/ImageProcessing/framework/filter.conf delete mode 100644 java/ImageProcessing/framework/help.conf delete mode 100644 java/ImageProcessing/framework/test.html delete mode 100644 java/ImageProcessing/framework/testFilter.conf delete mode 100644 java/JACE/ASX/IOCntlCmds.java delete mode 100644 java/JACE/ASX/IOCntlMsg.java delete mode 100644 java/JACE/ASX/MessageBlock.java delete mode 100644 java/JACE/ASX/MessageQueue.java delete mode 100644 java/JACE/ASX/MessageType.java delete mode 100644 java/JACE/ASX/Module.java delete mode 100644 java/JACE/ASX/Stream.java delete mode 100644 java/JACE/ASX/StreamHead.java delete mode 100644 java/JACE/ASX/StreamTail.java delete mode 100644 java/JACE/ASX/Task.java delete mode 100644 java/JACE/ASX/TaskFlags.java delete mode 100644 java/JACE/ASX/ThruTask.java delete mode 100644 java/JACE/ASX/TimeValue.java delete mode 100644 java/JACE/ASX/TimedWait.java delete mode 100644 java/JACE/ASX/TimeoutException.java delete mode 100644 java/JACE/ASX/package.html delete mode 100644 java/JACE/Concurrency/AbstractLock.java delete mode 100644 java/JACE/Concurrency/Condition.java delete mode 100644 java/JACE/Concurrency/LockAdapter.java delete mode 100644 java/JACE/Concurrency/LockException.java delete mode 100644 java/JACE/Concurrency/Mutex.java delete mode 100644 java/JACE/Concurrency/RWMutex.java delete mode 100644 java/JACE/Concurrency/RenewObject.java delete mode 100644 java/JACE/Concurrency/Semaphore.java delete mode 100644 java/JACE/Concurrency/ThreadManager.java delete mode 100644 java/JACE/Concurrency/Token.java delete mode 100644 java/JACE/Concurrency/WaitObject.java delete mode 100644 java/JACE/Concurrency/package.html delete mode 100644 java/JACE/Connection/AcceptStrategy.java delete mode 100644 java/JACE/Connection/Acceptor.java delete mode 100644 java/JACE/Connection/ActivateStrategy.java delete mode 100644 java/JACE/Connection/Blob.java delete mode 100644 java/JACE/Connection/BlobHandler.java delete mode 100644 java/JACE/Connection/BlobReader.java delete mode 100644 java/JACE/Connection/BlobWriter.java delete mode 100644 java/JACE/Connection/Connector.java delete mode 100644 java/JACE/Connection/CreationStrategy.java delete mode 100644 java/JACE/Connection/HTTPHelper.java delete mode 100644 java/JACE/Connection/StrategyAcceptor.java delete mode 100644 java/JACE/Connection/SvcHandler.java delete mode 100644 java/JACE/Connection/package.html delete mode 100644 java/JACE/Makefile delete mode 100644 java/JACE/Misc/GetOpt.java delete mode 100644 java/JACE/Misc/package.html delete mode 100644 java/JACE/OS/ACE.java delete mode 100644 java/JACE/OS/OS.java delete mode 100644 java/JACE/OS/package.html delete mode 100644 java/JACE/Reactor/EventHandler.java delete mode 100644 java/JACE/Reactor/TimerQueue.java delete mode 100644 java/JACE/Reactor/package.html delete mode 100644 java/JACE/SOCK_SAP/INETAddr.java delete mode 100644 java/JACE/SOCK_SAP/SOCKAcceptor.java delete mode 100644 java/JACE/SOCK_SAP/SOCKConnector.java delete mode 100644 java/JACE/SOCK_SAP/SOCKStream.java delete mode 100644 java/JACE/SOCK_SAP/package.html delete mode 100644 java/JACE/ServiceConfigurator/Service.java delete mode 100644 java/JACE/ServiceConfigurator/ServiceConfig.java delete mode 100644 java/JACE/ServiceConfigurator/ServiceLoader.java delete mode 100644 java/JACE/ServiceConfigurator/ServiceObject.java delete mode 100644 java/JACE/ServiceConfigurator/ServiceRepository.java delete mode 100644 java/JACE/ServiceConfigurator/package.html delete mode 100644 java/JACE/Timers/ProfileTimer.java delete mode 100644 java/JACE/Timers/package.html delete mode 100644 java/JACE/makebat.zip delete mode 100644 java/JACE/netsvcs/Handler.java delete mode 100644 java/JACE/netsvcs/Logger/LogRecord.java delete mode 100644 java/JACE/netsvcs/Logger/LoggingStrategy.java delete mode 100644 java/JACE/netsvcs/Logger/ServerLoggingAcceptor.java delete mode 100644 java/JACE/netsvcs/Logger/ServerLoggingHandler.java delete mode 100644 java/JACE/netsvcs/Logger/StderrStrategy.java delete mode 100644 java/JACE/netsvcs/Logger/c.bat delete mode 100644 java/JACE/netsvcs/Logger/package.html delete mode 100644 java/JACE/netsvcs/Naming/NameAcceptor.java delete mode 100644 java/JACE/netsvcs/Naming/NameHandler.java delete mode 100644 java/JACE/netsvcs/Naming/NameProxy.java delete mode 100644 java/JACE/netsvcs/Naming/NameReply.java delete mode 100644 java/JACE/netsvcs/Naming/NameRequest.java delete mode 100644 java/JACE/netsvcs/Naming/c.bat delete mode 100644 java/JACE/netsvcs/Naming/package.html delete mode 100644 java/JACE/netsvcs/Server.java delete mode 100644 java/JACE/netsvcs/Time/TSClerkHandler.java delete mode 100644 java/JACE/netsvcs/Time/TSClerkProcessor.java delete mode 100644 java/JACE/netsvcs/Time/TSServerAcceptor.java delete mode 100644 java/JACE/netsvcs/Time/TSServerHandler.java delete mode 100644 java/JACE/netsvcs/Time/TimeInfo.java delete mode 100644 java/JACE/netsvcs/Time/TimeRequest.java delete mode 100644 java/JACE/netsvcs/Time/c.bat delete mode 100644 java/JACE/netsvcs/Time/package.html delete mode 100644 java/JACE/netsvcs/Time/r.bat delete mode 100644 java/JACE/netsvcs/Token/LockHandler.java delete mode 100644 java/JACE/netsvcs/Token/LockHandlerAdapter.java delete mode 100644 java/JACE/netsvcs/Token/LockOperations.java delete mode 100644 java/JACE/netsvcs/Token/LockTypes.java delete mode 100644 java/JACE/netsvcs/Token/MutexHandler.java delete mode 100644 java/JACE/netsvcs/Token/RWMutexHandler.java delete mode 100644 java/JACE/netsvcs/Token/RemoteLock.java delete mode 100644 java/JACE/netsvcs/Token/RemoteMutex.java delete mode 100644 java/JACE/netsvcs/Token/RemoteRWMutex.java delete mode 100644 java/JACE/netsvcs/Token/TokenAcceptor.java delete mode 100644 java/JACE/netsvcs/Token/TokenReply.java delete mode 100644 java/JACE/netsvcs/Token/TokenRequest.java delete mode 100644 java/JACE/netsvcs/Token/TokenRequestHandler.java delete mode 100644 java/JACE/netsvcs/Token/package.html delete mode 100644 java/JACE/netsvcs/package.html delete mode 100644 java/JACE/overview.html delete mode 100644 java/JACE/package.html delete mode 100644 java/JACE/tests/ASX/BufferStreamTest.java delete mode 100644 java/JACE/tests/ASX/MessageQueueTest.java delete mode 100644 java/JACE/tests/ASX/PriorityBufferTest.java delete mode 100644 java/JACE/tests/ASX/TaskTest.java delete mode 100644 java/JACE/tests/ASX/ThreadPoolTest.java delete mode 100644 java/JACE/tests/Concurrency/Condition/Consumer.java delete mode 100644 java/JACE/tests/Concurrency/Condition/JoinableThreadGroup.java delete mode 100644 java/JACE/tests/Concurrency/Condition/Producer.java delete mode 100644 java/JACE/tests/Concurrency/Condition/QueueTest.java delete mode 100644 java/JACE/tests/Concurrency/Condition/SimpleMessageQueue.java delete mode 100644 java/JACE/tests/Concurrency/IterationTest.java delete mode 100644 java/JACE/tests/Concurrency/RWMutexTest.java delete mode 100644 java/JACE/tests/Concurrency/TimingTest.java delete mode 100644 java/JACE/tests/Concurrency/TokenTest.java delete mode 100644 java/JACE/tests/Connection/AcceptorTest.java delete mode 100644 java/JACE/tests/Connection/ClientHandler.java delete mode 100644 java/JACE/tests/Connection/ConnectorTest.java delete mode 100644 java/JACE/tests/Connection/HTTPHelperTest.java delete mode 100644 java/JACE/tests/Connection/ServerHandler.java delete mode 100644 java/JACE/tests/Makefile delete mode 100644 java/JACE/tests/Misc/ParseArgsTest.java delete mode 100644 java/JACE/tests/Reactor/TimeValueTest.java delete mode 100644 java/JACE/tests/Reactor/TimerQueueTest.java delete mode 100644 java/JACE/tests/SOCK_SAP/SOCKAcceptorTest.java delete mode 100644 java/JACE/tests/SOCK_SAP/SOCKConnectorTest.java delete mode 100644 java/JACE/tests/ServiceConfigurator/Main.java delete mode 100644 java/JACE/tests/ServiceConfigurator/svc.conf delete mode 100644 java/JACE/tests/netsvcs/Logger/LoggerTest.java delete mode 100644 java/JACE/tests/netsvcs/Naming/ClientTest.java delete mode 100644 java/JACE/tests/netsvcs/Time/TSClient.java delete mode 100644 java/JACE/tests/netsvcs/Token/ProxyClientTest.java delete mode 100644 java/MSVJProjects.zip delete mode 100644 java/README delete mode 100644 java/VERSION delete mode 100644 java/apps/NexusII/README delete mode 100644 java/apps/NexusII/classes/ClientHandler.class delete mode 100644 java/apps/NexusII/classes/FrameHandler.class delete mode 100644 java/apps/NexusII/classes/ImageCanvas.class delete mode 100644 java/apps/NexusII/classes/NexusClientApplet.class delete mode 100644 java/apps/NexusII/classes/NexusIIserver.class delete mode 100644 java/apps/NexusII/classes/Room.class delete mode 100644 java/apps/NexusII/classes/RoomFactory.class delete mode 100644 java/apps/NexusII/classes/RoomFrame.class delete mode 100644 java/apps/NexusII/classes/RoomThread.class delete mode 100644 java/apps/NexusII/classes/awtCommand/CApplet.class delete mode 100644 java/apps/NexusII/classes/awtCommand/CApplet.java delete mode 100644 java/apps/NexusII/classes/awtCommand/CButton.class delete mode 100644 java/apps/NexusII/classes/awtCommand/CButton.java delete mode 100644 java/apps/NexusII/classes/awtCommand/CCanvas.class delete mode 100644 java/apps/NexusII/classes/awtCommand/CCanvas.java delete mode 100644 java/apps/NexusII/classes/awtCommand/CFrame.class delete mode 100644 java/apps/NexusII/classes/awtCommand/CFrame.java delete mode 100644 java/apps/NexusII/classes/awtCommand/CList.class delete mode 100644 java/apps/NexusII/classes/awtCommand/CList.java delete mode 100644 java/apps/NexusII/classes/awtCommand/CPanel.class delete mode 100644 java/apps/NexusII/classes/awtCommand/CPanel.java delete mode 100644 java/apps/NexusII/classes/awtCommand/CTextArea.class delete mode 100644 java/apps/NexusII/classes/awtCommand/CTextArea.java delete mode 100644 java/apps/NexusII/classes/awtCommand/CTextField.class delete mode 100644 java/apps/NexusII/classes/awtCommand/CTextField.java delete mode 100644 java/apps/NexusII/classes/awtCommand/Command.class delete mode 100644 java/apps/NexusII/classes/awtCommand/Command.java delete mode 100644 java/apps/NexusII/classes/commandHandler.class delete mode 100644 java/apps/NexusII/classes/commandParser.class delete mode 100644 java/apps/NexusII/classes/connectionHandler.class delete mode 100644 java/apps/NexusII/classes/joinHandler.class delete mode 100644 java/apps/NexusII/classes/roomHandler.class delete mode 100644 java/apps/NexusII/classes/textHandler.class delete mode 100644 java/apps/NexusII/src/Consumer.java delete mode 100644 java/apps/NexusII/src/MT_Bounded_Queue.java delete mode 100644 java/apps/NexusII/src/MT_Bounded_Queue_Group.java delete mode 100644 java/apps/NexusII/src/NexusClientApplet.java delete mode 100644 java/apps/NexusII/src/NexusIIserver.java delete mode 100644 java/apps/NexusII/src/Producer.java delete mode 100644 java/apps/NexusII/src/Room.java delete mode 100644 java/apps/NexusII/src/RoomFrame.java delete mode 100644 java/apps/NexusII/src/RoomSpace.java delete mode 100644 java/apps/NexusII/src/Timed_Wait.java delete mode 100644 java/apps/NexusII/src/Timer.java delete mode 100644 java/apps/NexusII/src/commandHandler.java delete mode 100644 java/apps/NexusII/src/commandParser.java delete mode 100644 java/apps/NexusII/src/connectionHandler.java delete mode 100644 java/apps/NexusII/src/consts.java delete mode 100644 java/apps/NexusII/src/dataPacket.java delete mode 100644 java/apps/NexusII/src/joinHandler.java delete mode 100644 java/apps/NexusII/src/makefile delete mode 100644 java/apps/NexusII/src/nexusDemuxThread.java delete mode 100644 java/apps/NexusII/src/roomHandler.java delete mode 100644 java/apps/NexusII/src/socketReaderThread.java delete mode 100644 java/apps/NexusII/src/socketWriterThread.java delete mode 100644 java/apps/NexusII/src/url_to_url.java delete mode 100755 java/apps/NexusII/start delete mode 100644 java/apps/NexusII/start.html delete mode 100644 java/classes/README.TXT delete mode 100644 java/doc/images/GridBagEx.gif delete mode 100644 java/doc/images/OpenBookIcon.gif delete mode 100644 java/doc/images/blue-ball-small.gif delete mode 100644 java/doc/images/blue-ball.gif delete mode 100644 java/doc/images/class-index.gif delete mode 100644 java/doc/images/constructor-index.gif delete mode 100644 java/doc/images/constructors.gif delete mode 100644 java/doc/images/cyan-ball-small.gif delete mode 100644 java/doc/images/cyan-ball.gif delete mode 100644 java/doc/images/error-index.gif delete mode 100644 java/doc/images/exception-index.gif delete mode 100644 java/doc/images/green-ball-small.gif delete mode 100644 java/doc/images/green-ball.gif delete mode 100644 java/doc/images/interface-index.gif delete mode 100644 java/doc/images/magenta-ball-small.gif delete mode 100644 java/doc/images/magenta-ball.gif delete mode 100644 java/doc/images/method-index.gif delete mode 100644 java/doc/images/methods.gif delete mode 100644 java/doc/images/package-index.gif delete mode 100644 java/doc/images/red-ball-small.gif delete mode 100644 java/doc/images/red-ball.gif delete mode 100644 java/doc/images/variable-index.gif delete mode 100644 java/doc/images/variables.gif delete mode 100644 java/doc/images/yellow-ball-small.gif delete mode 100644 java/doc/images/yellow-ball.gif delete mode 100644 java/examples/Logger/README delete mode 100644 java/examples/Logger/simple-server/LogRecord.java delete mode 100644 java/examples/Logger/simple-server/LoggerConstants.java delete mode 100644 java/examples/Logger/simple-server/LoggingAcceptor.java delete mode 100644 java/examples/Logger/simple-server/LoggingClient.java delete mode 100644 java/examples/Logger/simple-server/LoggingHandler.java delete mode 100644 java/examples/Logger/simple-server/Makefile delete mode 100644 java/examples/Logger/simple-server/README delete mode 100644 java/examples/Logger/simple-server/SimpleLogger.java delete mode 100644 java/gjt/Assert.java delete mode 100644 java/gjt/Bargauge.java delete mode 100644 java/gjt/Border.java delete mode 100644 java/gjt/Box.java delete mode 100644 java/gjt/BulletinLayout.java delete mode 100644 java/gjt/ButtonPanel.java delete mode 100644 java/gjt/CardPanel.java delete mode 100644 java/gjt/ChoiceCardPanel.java delete mode 100644 java/gjt/ColumnLayout.java delete mode 100644 java/gjt/ComponentScroller.java delete mode 100644 java/gjt/DialogClient.java delete mode 100644 java/gjt/DrawingPanel.java delete mode 100644 java/gjt/DrawnRectangle.java delete mode 100644 java/gjt/EtchedBorder.java delete mode 100644 java/gjt/EtchedRectangle.java delete mode 100644 java/gjt/Etching.java delete mode 100644 java/gjt/ExclusiveImageButtonPanel.java delete mode 100644 java/gjt/FontDialog.java delete mode 100644 java/gjt/GJT.DSP delete mode 100644 java/gjt/GJT.DSW delete mode 100644 java/gjt/GJTDialog.java delete mode 100644 java/gjt/IconCardPanel.java delete mode 100644 java/gjt/ImageButton.java delete mode 100644 java/gjt/ImageButtonController.java delete mode 100644 java/gjt/ImageButtonEvent.java delete mode 100644 java/gjt/ImageButtonPanel.java delete mode 100644 java/gjt/ImageButtonPanelController.java delete mode 100644 java/gjt/ImageCanvas.java delete mode 100644 java/gjt/ImageScroller.java delete mode 100644 java/gjt/LabelCanvas.java delete mode 100644 java/gjt/Makefile delete mode 100644 java/gjt/MessageDialog.java delete mode 100644 java/gjt/MouseController.java delete mode 100644 java/gjt/Orientation.java delete mode 100644 java/gjt/ProgressDialog.java delete mode 100644 java/gjt/QuestionDialog.java delete mode 100644 java/gjt/RadioImageButtonPanelController.java delete mode 100644 java/gjt/RowLayout.java delete mode 100644 java/gjt/Scroller.java delete mode 100644 java/gjt/ScrollerLayout.java delete mode 100644 java/gjt/SelectionEvent.java delete mode 100644 java/gjt/Separator.java delete mode 100644 java/gjt/SpringyImageButtonController.java delete mode 100644 java/gjt/StateButton.java delete mode 100644 java/gjt/StateButtonController.java delete mode 100644 java/gjt/StickyImageButtonController.java delete mode 100644 java/gjt/Stopwatch.java delete mode 100644 java/gjt/StopwatchClient.java delete mode 100644 java/gjt/ThreeDBorder.java delete mode 100644 java/gjt/ThreeDBorderStyle.java delete mode 100644 java/gjt/ThreeDRectangle.java delete mode 100644 java/gjt/Toolbar.java delete mode 100644 java/gjt/Util.java delete mode 100644 java/gjt/YesNoDialog.java delete mode 100644 java/gjt/animation/CollisionArena.java delete mode 100644 java/gjt/animation/CollisionDetector.java delete mode 100644 java/gjt/animation/EdgeCollisionDetector.java delete mode 100644 java/gjt/animation/Playfield.java delete mode 100644 java/gjt/animation/Sequence.java delete mode 100644 java/gjt/animation/Sprite.java delete mode 100644 java/gjt/animation/SpriteCollisionDetector.java delete mode 100644 java/gjt/image/BleachImageFilter.java delete mode 100644 java/gjt/image/DissolveFilter.java delete mode 100644 java/gjt/image/ImageDissolver.java delete mode 100644 java/gjt/rubberband/Rubberband.java delete mode 100644 java/gjt/rubberband/RubberbandEllipse.java delete mode 100644 java/gjt/rubberband/RubberbandLine.java delete mode 100644 java/gjt/rubberband/RubberbandPanel.java delete mode 100644 java/gjt/rubberband/RubberbandRectangle.java delete mode 100644 java/gjt/test/AttributesPanel.java delete mode 100644 java/gjt/test/BargaugeTest.java delete mode 100644 java/gjt/test/BleachImageFilterTest.java delete mode 100644 java/gjt/test/BorderTest.java delete mode 100644 java/gjt/test/BoxTest.java delete mode 100644 java/gjt/test/BumpAnimationTest.java delete mode 100644 java/gjt/test/ChoiceCardPanelTest.java delete mode 100644 java/gjt/test/ColumnLayoutTest.java delete mode 100644 java/gjt/test/ComponentScrollerTest.java delete mode 100644 java/gjt/test/ConnectionsPanel.java delete mode 100644 java/gjt/test/DialogTest.java delete mode 100644 java/gjt/test/DrawnRectangleTest.java delete mode 100644 java/gjt/test/FontDialogTest.java delete mode 100644 java/gjt/test/IconCardPanelTest.java delete mode 100644 java/gjt/test/ImageButtonTest.java delete mode 100644 java/gjt/test/ImageDissolverTest.java delete mode 100644 java/gjt/test/ImageScrollerTest.java delete mode 100644 java/gjt/test/LabelCanvasTest.java delete mode 100644 java/gjt/test/MessageDialogTest.java delete mode 100644 java/gjt/test/OccupationOracle.java delete mode 100644 java/gjt/test/RowLayoutTest.java delete mode 100644 java/gjt/test/RubberbandTest.java delete mode 100644 java/gjt/test/SeparatorTest.java delete mode 100644 java/gjt/test/SimpleAnimationTest.java delete mode 100644 java/gjt/test/SimpleBargaugeTest.java delete mode 100644 java/gjt/test/StateButtonTest.java delete mode 100644 java/gjt/test/TenPixelBorder.java delete mode 100644 java/gjt/test/TitledPanel.java delete mode 100644 java/gjt/test/ToolbarTest.java delete mode 100644 java/gjt/test/TwoDrinkersAnimationTest.java delete mode 100644 java/gjt/test/UnitTest.java delete mode 100644 java/java-ace.gif delete mode 100644 java/netsvcs/Logger/DefaultLMR.java delete mode 100644 java/netsvcs/Logger/LogMessageReceiver.java delete mode 100644 java/netsvcs/Logger/LogRecord.java delete mode 100644 java/netsvcs/Logger/Makefile delete mode 100644 java/netsvcs/Logger/ServerLoggingAcceptor.java delete mode 100644 java/netsvcs/Logger/ServerLoggingHandler.java delete mode 100644 java/netsvcs/Naming/Makefile delete mode 100644 java/netsvcs/Naming/NameAcceptor.java delete mode 100644 java/netsvcs/Naming/NameHandler.java delete mode 100644 java/netsvcs/Naming/NameProxy.java delete mode 100644 java/netsvcs/Naming/NameReply.java delete mode 100644 java/netsvcs/Naming/NameRequest.java delete mode 100755 java/netsvcs/Time/Clerk.java delete mode 100755 java/netsvcs/Time/Makefile delete mode 100755 java/netsvcs/Time/Server.java delete mode 100755 java/netsvcs/Time/TSClerkHandler.java delete mode 100755 java/netsvcs/Time/TSClerkProcessor.java delete mode 100755 java/netsvcs/Time/TSRequestAcceptor.java delete mode 100755 java/netsvcs/Time/TSRequestHandler.java delete mode 100755 java/netsvcs/Time/TSServerAcceptor.java delete mode 100755 java/netsvcs/Time/TSServerHandler.java delete mode 100644 java/src/ACE.java delete mode 100644 java/src/AcceptStrategy.java delete mode 100644 java/src/Acceptor.java delete mode 100644 java/src/ActivateStrategy.java delete mode 100644 java/src/AddServiceObjectNode.java delete mode 100644 java/src/Blob.java delete mode 100644 java/src/BlobHandler.java delete mode 100644 java/src/BlobReader.java delete mode 100644 java/src/BlobWriter.java delete mode 100644 java/src/ClassNameGenerator.java delete mode 100644 java/src/ClassReader.java delete mode 100644 java/src/Condition.java delete mode 100644 java/src/Connector.java delete mode 100644 java/src/CreationStrategy.java delete mode 100644 java/src/EventHandler.java delete mode 100644 java/src/GetOpt.java delete mode 100644 java/src/HTTPHelper.java delete mode 100644 java/src/INETAddr.java delete mode 100644 java/src/IOCntlCmds.java delete mode 100644 java/src/IOCntlMsg.java delete mode 100644 java/src/JACE.DSP delete mode 100644 java/src/JACE.DSW delete mode 100644 java/src/Makefile delete mode 100644 java/src/MessageBlock.java delete mode 100644 java/src/MessageQueue.java delete mode 100644 java/src/MessageType.java delete mode 100644 java/src/Module.java delete mode 100644 java/src/Mutex.java delete mode 100644 java/src/OS.java delete mode 100644 java/src/ParseNode.java delete mode 100644 java/src/ProfileTimer.java delete mode 100644 java/src/README delete mode 100644 java/src/RWMutex.java delete mode 100644 java/src/RemoveNode.java delete mode 100644 java/src/ResumeNode.java delete mode 100644 java/src/SOCKAcceptor.java delete mode 100644 java/src/SOCKConnector.java delete mode 100644 java/src/SOCKStream.java delete mode 100644 java/src/Semaphore.java delete mode 100644 java/src/ServiceConfig.java delete mode 100644 java/src/ServiceLoader.java delete mode 100644 java/src/ServiceObject.java delete mode 100644 java/src/ServiceObjectRecord.java delete mode 100644 java/src/ServiceRecord.java delete mode 100644 java/src/ServiceRepository.java delete mode 100644 java/src/StrategyAcceptor.java delete mode 100644 java/src/Stream.java delete mode 100644 java/src/StreamHead.java delete mode 100644 java/src/StreamTail.java delete mode 100644 java/src/SuspendNode.java delete mode 100644 java/src/SvcHandler.java delete mode 100644 java/src/Task.java delete mode 100644 java/src/TaskFlags.java delete mode 100644 java/src/ThreadManager.java delete mode 100644 java/src/ThruTask.java delete mode 100644 java/src/TimeValue.java delete mode 100644 java/src/TimedWait.java delete mode 100644 java/src/TimeoutException.java delete mode 100644 java/src/TimerQueue.java delete mode 100644 java/src/Token.java delete mode 100644 java/tests/ASX/BufferStreamTest.dsp delete mode 100644 java/tests/ASX/BufferStreamTest.java delete mode 100644 java/tests/ASX/Makefile delete mode 100644 java/tests/ASX/MessageQueueTest.dsp delete mode 100644 java/tests/ASX/MessageQueueTest.java delete mode 100644 java/tests/ASX/PriorityBufferTest.dsp delete mode 100644 java/tests/ASX/PriorityBufferTest.java delete mode 100644 java/tests/ASX/TaskTest.dsp delete mode 100644 java/tests/ASX/TaskTest.java delete mode 100644 java/tests/ASX/ThreadPoolTest.dsp delete mode 100644 java/tests/ASX/ThreadPoolTest.java delete mode 100644 java/tests/Concurrency/Condition/Condition.dsp delete mode 100644 java/tests/Concurrency/Condition/Consumer.java delete mode 100644 java/tests/Concurrency/Condition/JoinableThreadGroup.java delete mode 100644 java/tests/Concurrency/Condition/Makefile delete mode 100644 java/tests/Concurrency/Condition/Producer.java delete mode 100644 java/tests/Concurrency/Condition/QueueTest.java delete mode 100644 java/tests/Concurrency/Condition/SimpleMessageQueue.java delete mode 100644 java/tests/Concurrency/Makefile delete mode 100644 java/tests/Concurrency/MutexTest.dsp delete mode 100644 java/tests/Concurrency/MutexTest.java delete mode 100644 java/tests/Concurrency/RWMutexTest.dsp delete mode 100644 java/tests/Concurrency/RWMutexTest.java delete mode 100644 java/tests/Concurrency/SemaphoreTest.dsp delete mode 100644 java/tests/Concurrency/SemaphoreTest.java delete mode 100644 java/tests/Concurrency/TokenTest.dsp delete mode 100644 java/tests/Concurrency/TokenTest.java delete mode 100644 java/tests/Connection/AcceptorTest.dsp delete mode 100644 java/tests/Connection/AcceptorTest.java delete mode 100644 java/tests/Connection/ClientHandler.dsp delete mode 100644 java/tests/Connection/ClientHandler.java delete mode 100644 java/tests/Connection/ConnectorTest.dsp delete mode 100644 java/tests/Connection/ConnectorTest.java delete mode 100644 java/tests/Connection/HTTPHelperTest.java delete mode 100644 java/tests/Connection/Makefile delete mode 100644 java/tests/Connection/ServerHandler.dsp delete mode 100644 java/tests/Connection/ServerHandler.java delete mode 100644 java/tests/Misc/Makefile delete mode 100644 java/tests/Misc/ParseArgsTest.dsp delete mode 100644 java/tests/Misc/ParseArgsTest.java delete mode 100644 java/tests/Reactor/Makefile delete mode 100644 java/tests/Reactor/TimeValueTest.dsp delete mode 100644 java/tests/Reactor/TimeValueTest.java delete mode 100644 java/tests/Reactor/TimerQueueTest.dsp delete mode 100644 java/tests/Reactor/TimerQueueTest.java delete mode 100644 java/tests/SOCK_SAP/Makefile delete mode 100644 java/tests/SOCK_SAP/SOCKAcceptorTest.dsp delete mode 100644 java/tests/SOCK_SAP/SOCKAcceptorTest.java delete mode 100644 java/tests/SOCK_SAP/SOCKConnectorTest.dsp delete mode 100644 java/tests/SOCK_SAP/SOCKConnectorTest.java delete mode 100644 java/tests/ServiceConfigurator/Makefile delete mode 100644 java/tests/ServiceConfigurator/ServiceConfigurator.dsp delete mode 100644 java/tests/ServiceConfigurator/TestService.java delete mode 100644 java/tests/ServiceConfigurator/reloadTest.java delete mode 100644 java/tests/ServiceConfigurator/suspendTest.java delete mode 100644 java/tests/ServiceConfigurator/suspendTest1.conf delete mode 100644 java/tests/ServiceConfigurator/suspendTest2.conf delete mode 100644 java/tests/ServiceConfigurator/suspendTest3.conf delete mode 100644 java/tests/ServiceConfigurator/svc.conf delete mode 100644 java/tests/Tests.dsw delete mode 100644 java/tests/netsvcs/Logger/LoggerTest.java delete mode 100644 java/tests/netsvcs/Logger/Makefile delete mode 100644 java/tests/netsvcs/Naming/ClientTest.java delete mode 100644 java/tests/netsvcs/Naming/Makefile delete mode 100644 m4/acinclude.m4 delete mode 100644 m4/compiler.m4 delete mode 100644 m4/features.m4 delete mode 100644 m4/platform.m4 delete mode 100644 m4/subsets.m4 delete mode 100644 m4/threads.m4 delete mode 100755 missing delete mode 100755 mkinstalldirs delete mode 100644 netsvcs/ACE-netsvcs.html delete mode 100644 netsvcs/Makefile delete mode 100644 netsvcs/Makefile.am delete mode 100644 netsvcs/Makefile.bor delete mode 100644 netsvcs/README delete mode 100644 netsvcs/build.bor delete mode 100644 netsvcs/clients/Logger/Logger.dsw delete mode 100644 netsvcs/clients/Logger/Makefile delete mode 100644 netsvcs/clients/Logger/Makefile.am delete mode 100644 netsvcs/clients/Logger/Makefile.bor delete mode 100644 netsvcs/clients/Logger/README delete mode 100644 netsvcs/clients/Logger/direct_logging.cpp delete mode 100644 netsvcs/clients/Logger/direct_logging.dsp delete mode 100644 netsvcs/clients/Logger/indirect_logging.cpp delete mode 100644 netsvcs/clients/Logger/indirect_logging.dsp delete mode 100644 netsvcs/clients/Makefile delete mode 100644 netsvcs/clients/Makefile.am delete mode 100644 netsvcs/clients/Makefile.bor delete mode 100644 netsvcs/clients/Naming/Client/Client.dsw delete mode 100644 netsvcs/clients/Naming/Client/Client_Test.cpp delete mode 100644 netsvcs/clients/Naming/Client/Client_Test.dsp delete mode 100644 netsvcs/clients/Naming/Client/Client_Test.h delete mode 100644 netsvcs/clients/Naming/Client/Makefile delete mode 100644 netsvcs/clients/Naming/Client/Makefile.am delete mode 100644 netsvcs/clients/Naming/Client/Makefile.bor delete mode 100644 netsvcs/clients/Naming/Client/README delete mode 100644 netsvcs/clients/Naming/Client/main.cpp delete mode 100644 netsvcs/clients/Naming/Client/main.dsp delete mode 100644 netsvcs/clients/Naming/Client/svc.conf delete mode 100644 netsvcs/clients/Naming/Client/svc2.conf delete mode 100644 netsvcs/clients/Naming/Dump_Restore/Dump_Restore.cpp delete mode 100644 netsvcs/clients/Naming/Dump_Restore/Dump_Restore.h delete mode 100644 netsvcs/clients/Naming/Dump_Restore/Makefile delete mode 100644 netsvcs/clients/Naming/Dump_Restore/Makefile.am delete mode 100644 netsvcs/clients/Naming/Dump_Restore/Makefile.bor delete mode 100644 netsvcs/clients/Naming/Dump_Restore/README delete mode 100644 netsvcs/clients/Naming/Dump_Restore/createfile.cpp delete mode 100644 netsvcs/clients/Naming/Dump_Restore/main.cpp delete mode 100644 netsvcs/clients/Naming/Dump_Restore/nametest.cpp delete mode 100644 netsvcs/clients/Naming/Dump_Restore/nametest.h delete mode 100644 netsvcs/clients/Naming/Makefile delete mode 100644 netsvcs/clients/Naming/Makefile.am delete mode 100644 netsvcs/clients/Naming/Makefile.bor delete mode 100644 netsvcs/clients/README delete mode 100644 netsvcs/clients/Tokens/Makefile delete mode 100644 netsvcs/clients/Tokens/Makefile.am delete mode 100644 netsvcs/clients/Tokens/Makefile.bor delete mode 100644 netsvcs/clients/Tokens/README delete mode 100644 netsvcs/clients/Tokens/collection/Makefile delete mode 100644 netsvcs/clients/Tokens/collection/Makefile.am delete mode 100644 netsvcs/clients/Tokens/collection/Makefile.bor delete mode 100644 netsvcs/clients/Tokens/collection/README delete mode 100644 netsvcs/clients/Tokens/collection/collection.cpp delete mode 100644 netsvcs/clients/Tokens/collection/collection.dsp delete mode 100644 netsvcs/clients/Tokens/collection/collection.dsw delete mode 100644 netsvcs/clients/Tokens/collection/rw_locks.cpp delete mode 100644 netsvcs/clients/Tokens/deadlock/Makefile delete mode 100644 netsvcs/clients/Tokens/deadlock/Makefile.am delete mode 100644 netsvcs/clients/Tokens/deadlock/Makefile.bor delete mode 100644 netsvcs/clients/Tokens/deadlock/README delete mode 100644 netsvcs/clients/Tokens/deadlock/deadlock.dsp delete mode 100644 netsvcs/clients/Tokens/deadlock/deadlock.dsw delete mode 100644 netsvcs/clients/Tokens/deadlock/deadlock_detection_test.cpp delete mode 100644 netsvcs/clients/Tokens/invariant/Makefile delete mode 100644 netsvcs/clients/Tokens/invariant/Makefile.am delete mode 100644 netsvcs/clients/Tokens/invariant/Makefile.bor delete mode 100644 netsvcs/clients/Tokens/invariant/README delete mode 100644 netsvcs/clients/Tokens/invariant/invariant.cpp delete mode 100644 netsvcs/clients/Tokens/invariant/invariant.dsp delete mode 100644 netsvcs/clients/Tokens/invariant/invariant.dsw delete mode 100644 netsvcs/clients/Tokens/manual/Makefile delete mode 100644 netsvcs/clients/Tokens/manual/Makefile.am delete mode 100644 netsvcs/clients/Tokens/manual/Makefile.bor delete mode 100644 netsvcs/clients/Tokens/manual/README delete mode 100644 netsvcs/clients/Tokens/manual/manual.cpp delete mode 100644 netsvcs/clients/Tokens/manual/manual.dsp delete mode 100644 netsvcs/clients/Tokens/manual/manual.dsw delete mode 100644 netsvcs/clients/Tokens/mutex/Makefile delete mode 100644 netsvcs/clients/Tokens/mutex/Makefile.am delete mode 100644 netsvcs/clients/Tokens/mutex/Makefile.bor delete mode 100644 netsvcs/clients/Tokens/mutex/README delete mode 100644 netsvcs/clients/Tokens/mutex/mutex.dsp delete mode 100644 netsvcs/clients/Tokens/mutex/mutex.dsw delete mode 100644 netsvcs/clients/Tokens/mutex/test_mutex.cpp delete mode 100644 netsvcs/clients/Tokens/rw_lock/Makefile delete mode 100644 netsvcs/clients/Tokens/rw_lock/Makefile.am delete mode 100644 netsvcs/clients/Tokens/rw_lock/Makefile.bor delete mode 100644 netsvcs/clients/Tokens/rw_lock/README delete mode 100644 netsvcs/clients/Tokens/rw_lock/rw_lock.dsp delete mode 100644 netsvcs/clients/Tokens/rw_lock/rw_lock.dsw delete mode 100644 netsvcs/clients/Tokens/rw_lock/rw_locks.cpp delete mode 100644 netsvcs/lib/Base_Optimizer.cpp delete mode 100644 netsvcs/lib/Base_Optimizer.h delete mode 100644 netsvcs/lib/Client_Logging_Handler.cpp delete mode 100644 netsvcs/lib/Client_Logging_Handler.h delete mode 100644 netsvcs/lib/Client_Logging_Handler.i delete mode 100644 netsvcs/lib/Log_Message_Receiver.cpp delete mode 100644 netsvcs/lib/Log_Message_Receiver.h delete mode 100644 netsvcs/lib/Logging_Strategy.cpp delete mode 100644 netsvcs/lib/Logging_Strategy.h delete mode 100644 netsvcs/lib/Makefile delete mode 100644 netsvcs/lib/Makefile.am delete mode 100644 netsvcs/lib/Makefile.bor delete mode 100644 netsvcs/lib/Name_Handler.cpp delete mode 100644 netsvcs/lib/Name_Handler.h delete mode 100644 netsvcs/lib/README delete mode 100644 netsvcs/lib/Server_Logging_Handler.cpp delete mode 100644 netsvcs/lib/Server_Logging_Handler.h delete mode 100644 netsvcs/lib/Server_Logging_Handler.i delete mode 100644 netsvcs/lib/Server_Logging_Handler_T.cpp delete mode 100644 netsvcs/lib/Server_Logging_Handler_T.h delete mode 100644 netsvcs/lib/TS_Clerk_Handler.cpp delete mode 100644 netsvcs/lib/TS_Clerk_Handler.h delete mode 100644 netsvcs/lib/TS_Server_Handler.cpp delete mode 100644 netsvcs/lib/TS_Server_Handler.h delete mode 100644 netsvcs/lib/Token_Handler.cpp delete mode 100644 netsvcs/lib/Token_Handler.h delete mode 100644 netsvcs/lib/netsvcs.dsp delete mode 100644 netsvcs/lib/netsvcs.dsw delete mode 100644 netsvcs/netsvcs.dsw delete mode 100644 netsvcs/servers/Makefile delete mode 100644 netsvcs/servers/Makefile.am delete mode 100644 netsvcs/servers/Makefile.bor delete mode 100644 netsvcs/servers/README delete mode 100644 netsvcs/servers/cli.conf delete mode 100644 netsvcs/servers/main.cpp delete mode 100644 netsvcs/servers/ntsvc.conf delete mode 100644 netsvcs/servers/servers.dsp delete mode 100644 netsvcs/servers/servers.dsw delete mode 100644 netsvcs/servers/svc.conf delete mode 100644 os-patches/linux-patches.html delete mode 100644 os-patches/lynxos-patches.html delete mode 100644 os-patches/vxworks-5.1.txt delete mode 100644 performance-tests/Makefile delete mode 100644 performance-tests/Misc/Makefile delete mode 100644 performance-tests/Misc/basic_func.cpp delete mode 100644 performance-tests/Misc/basic_func.h delete mode 100644 performance-tests/Misc/basic_perf.cpp delete mode 100644 performance-tests/Misc/basic_perf.dsp delete mode 100644 performance-tests/Misc/childbirth_time.cpp delete mode 100644 performance-tests/Misc/childbirth_time.dsp delete mode 100644 performance-tests/Misc/context_switch_time.cpp delete mode 100644 performance-tests/Misc/context_switch_time.dsp delete mode 100644 performance-tests/Misc/misc.dsw delete mode 100644 performance-tests/Misc/preempt.cpp delete mode 100644 performance-tests/Misc/test_guard.cpp delete mode 100644 performance-tests/Misc/test_mutex.cpp delete mode 100644 performance-tests/Misc/test_mutex.dsp delete mode 100644 performance-tests/Misc/test_naming.cpp delete mode 100644 performance-tests/Misc/test_naming.dsp delete mode 100644 performance-tests/Misc/test_singleton.cpp delete mode 100644 performance-tests/Misc/test_singleton.dsp delete mode 100644 performance-tests/Misc/test_singleton.h delete mode 100644 performance-tests/README delete mode 100644 performance-tests/RPC/Makefile delete mode 100644 performance-tests/RPC/README delete mode 100644 performance-tests/RPC/client.cpp delete mode 100644 performance-tests/RPC/ping.x delete mode 100644 performance-tests/RPC/server.c delete mode 100644 performance-tests/Server_Concurrency/Latency_Stats.h delete mode 100644 performance-tests/Server_Concurrency/Leader_Follower/Leader_Follower.dsp delete mode 100644 performance-tests/Server_Concurrency/Leader_Follower/Leader_Follower.dsw delete mode 100644 performance-tests/Server_Concurrency/Leader_Follower/Makefile delete mode 100644 performance-tests/Server_Concurrency/Leader_Follower/leader_follower.cpp delete mode 100644 performance-tests/Server_Concurrency/Makefile delete mode 100644 performance-tests/Server_Concurrency/Queue_Based_Workers/Makefile delete mode 100644 performance-tests/Server_Concurrency/Queue_Based_Workers/Queue_Based_Workers.dsp delete mode 100644 performance-tests/Server_Concurrency/Queue_Based_Workers/Queue_Based_Workers.dsw delete mode 100644 performance-tests/Server_Concurrency/Queue_Based_Workers/workers.cpp delete mode 100644 performance-tests/Server_Concurrency/Server_Concurrency.dsw delete mode 100755 performance-tests/Server_Concurrency/run_test.sh delete mode 100644 performance-tests/Synch-Benchmarks/Base_Test/Base_Test.dsp delete mode 100644 performance-tests/Synch-Benchmarks/Base_Test/Baseline_Test.cpp delete mode 100644 performance-tests/Synch-Benchmarks/Base_Test/Baseline_Test.h delete mode 100644 performance-tests/Synch-Benchmarks/Base_Test/Baseline_Test.i delete mode 100644 performance-tests/Synch-Benchmarks/Base_Test/Makefile delete mode 100644 performance-tests/Synch-Benchmarks/Base_Test/base_test.cpp delete mode 100644 performance-tests/Synch-Benchmarks/Base_Test/mutex_test.cpp delete mode 100644 performance-tests/Synch-Benchmarks/Makefile delete mode 100644 performance-tests/Synch-Benchmarks/Makefile.driver delete mode 100644 performance-tests/Synch-Benchmarks/Makefile.synch_tests delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/Adaptive_Lock_Performance_Test_Base.cpp delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/Adaptive_Lock_Performance_Test_Base.h delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/Benchmark_Performance.cpp delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/Benchmark_Performance.h delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/Makefile delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/Perf_Test.dsp delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/Performance_Test.cpp delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/Performance_Test.h delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/Performance_Test_Options.cpp delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/Performance_Test_Options.h delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/Performance_Test_Options.i delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/README delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/adaptive_mutex_test.cpp delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/adaptive_recursive_lock_test.cpp delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/adaptive_sema_test.cpp delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/condb_test.cpp delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/conds_test.cpp delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/context_test.cpp delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/guard_test.cpp delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/memory_test.cpp delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/mutex_test.cpp delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/pipe_proc_test.cpp delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/pipe_thr_test.cpp delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/recursive_lock_test.cpp delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/rwrd_test.cpp delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/rwwr_test.cpp delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/sema_test.cpp delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/sysvsema_test.cpp delete mode 100644 performance-tests/Synch-Benchmarks/Perf_Test/token_test.cpp delete mode 100644 performance-tests/Synch-Benchmarks/README delete mode 100644 performance-tests/Synch-Benchmarks/Synch_Lib/Benchmark_Base.cpp delete mode 100644 performance-tests/Synch-Benchmarks/Synch_Lib/Benchmark_Base.h delete mode 100644 performance-tests/Synch-Benchmarks/Synch_Lib/Makefile delete mode 100644 performance-tests/Synch-Benchmarks/Synch_Lib/README delete mode 100644 performance-tests/Synch-Benchmarks/Synch_Lib/Synch_Lib.dsp delete mode 100644 performance-tests/Synch-Benchmarks/Synch_Lib/export_mac.h delete mode 100644 performance-tests/Synch-Benchmarks/Synch_Tests.dsp delete mode 100644 performance-tests/Synch-Benchmarks/Synch_Tests.dsw delete mode 100644 performance-tests/Synch-Benchmarks/benchmarks delete mode 100644 performance-tests/Synch-Benchmarks/context.c delete mode 100644 performance-tests/Synch-Benchmarks/context.csh delete mode 100644 performance-tests/Synch-Benchmarks/orig-results delete mode 100644 performance-tests/Synch-Benchmarks/results/.no_prune delete mode 100755 performance-tests/Synch-Benchmarks/run_tests.pl delete mode 100644 performance-tests/Synch-Benchmarks/svcconf/base_acquire.conf delete mode 100644 performance-tests/Synch-Benchmarks/svcconf/base_acquire_read.conf delete mode 100644 performance-tests/Synch-Benchmarks/svcconf/base_acquire_write.conf delete mode 100644 performance-tests/Synch-Benchmarks/svcconf/base_tryacquire.conf delete mode 100644 performance-tests/Synch-Benchmarks/svcconf/base_tryacquire_read.conf delete mode 100644 performance-tests/Synch-Benchmarks/svcconf/base_tryacquire_write.conf delete mode 100644 performance-tests/Synch-Benchmarks/svcconf/perf_t1.conf delete mode 100644 performance-tests/Synch-Benchmarks/svcconf/perf_t16.conf delete mode 100644 performance-tests/Synch-Benchmarks/svcconf/perf_t2.conf delete mode 100644 performance-tests/Synch-Benchmarks/svcconf/perf_t32.conf delete mode 100644 performance-tests/Synch-Benchmarks/svcconf/perf_t4.conf delete mode 100644 performance-tests/Synch-Benchmarks/svcconf/perf_t64.conf delete mode 100644 performance-tests/Synch-Benchmarks/svcconf/perf_t8.conf delete mode 100644 performance-tests/Synch-Benchmarks/svcconf/svc.conf delete mode 100644 performance-tests/Synch-Benchmarks/synch_driver.cpp delete mode 100644 performance-tests/Synch-Benchmarks/synch_driver.dsp delete mode 100644 performance-tests/TCP/Makefile delete mode 100644 performance-tests/TCP/README delete mode 100644 performance-tests/TCP/TCP.dsp delete mode 100644 performance-tests/TCP/TCP.dsw delete mode 100644 performance-tests/TCP/tcp_test.cpp delete mode 100644 performance-tests/TTCP/ACE-C++/How_to_run_tests delete mode 100644 performance-tests/TTCP/ACE-C++/Makefile delete mode 100644 performance-tests/TTCP/ACE-C++/run_test delete mode 100644 performance-tests/TTCP/ACE-C++/wrapper-new-ttcp.cpp delete mode 100644 performance-tests/TTCP/C/How_to_run_tests delete mode 100644 performance-tests/TTCP/C/Makefile delete mode 100644 performance-tests/TTCP/C/README delete mode 100644 performance-tests/TTCP/C/new-ttcp.cpp delete mode 100644 performance-tests/TTCP/C/run_test delete mode 100644 performance-tests/TTCP/Makefile delete mode 100644 performance-tests/UDP/Makefile delete mode 100644 performance-tests/UDP/README delete mode 100644 performance-tests/UDP/udp_test.cpp delete mode 100644 psosim/Makefile delete mode 100644 psosim/drv_conf.c delete mode 100644 rpc++/.dependencies delete mode 100644 rpc++/COPYING delete mode 100644 rpc++/Makefile delete mode 100644 rpc++/Proj.make delete mode 100644 rpc++/README delete mode 100644 rpc++/README.ORIG delete mode 100644 rpc++/StdHdrs/Makefile delete mode 100644 rpc++/StdHdrs/README delete mode 100644 rpc++/StdHdrs/rpc/auth.h delete mode 100644 rpc++/StdHdrs/rpc/c_types.h delete mode 100644 rpc++/StdHdrs/rpc/clnt.h delete mode 100644 rpc++/StdHdrs/rpc/pmap_clnt.h delete mode 100644 rpc++/StdHdrs/rpc/svc.h delete mode 100644 rpc++/StdHdrs/rpc/xdr.h delete mode 100644 rpc++/callback.cc delete mode 100644 rpc++/example/Makefile delete mode 100644 rpc++/example/calcsvc.cc delete mode 100644 rpc++/example/calcsvc.h delete mode 100644 rpc++/example/client.cc delete mode 100644 rpc++/example/server.cc delete mode 100644 rpc++/gcc-2.2.fix delete mode 100644 rpc++/request.cc delete mode 100644 rpc++/rpc++.cp delete mode 100644 rpc++/rpc++.fn delete mode 100644 rpc++/rpc++.ky delete mode 100644 rpc++/rpc++.pg delete mode 100644 rpc++/rpc++.texi delete mode 100644 rpc++/rpc++.toc delete mode 100644 rpc++/rpc++.tp delete mode 100644 rpc++/rpc++.vr delete mode 100644 rpc++/rpc++/callback.h delete mode 100644 rpc++/rpc++/request.h delete mode 100644 rpc++/rpc++/service.h delete mode 100644 rpc++/rpc++/stub.h delete mode 100644 rpc++/rpc++/xdr++.h delete mode 100644 rpc++/service.cc delete mode 100644 rpc++/stub.cc delete mode 100644 rpc++/version.h delete mode 100644 rpc++/xdr++.cc delete mode 100644 tests/ACE_Init_Test.cpp delete mode 100644 tests/ACE_Init_Test.dsp delete mode 100644 tests/ACE_Init_Test.h delete mode 100644 tests/ACE_Init_Test.ico delete mode 100644 tests/ACE_Init_Test.rc delete mode 100644 tests/ACE_Init_Test.rc2 delete mode 100644 tests/ACE_Init_Test.res delete mode 100644 tests/ACE_Init_TestDlg.cpp delete mode 100644 tests/ACE_Init_TestDlg.h delete mode 100644 tests/ACE_Init_Test_Resource.h delete mode 100644 tests/ACE_Init_Test_StdAfx.h delete mode 100644 tests/Aio_Platform_Test.cpp delete mode 100644 tests/Aio_Platform_Test.icc delete mode 100644 tests/Atomic_Op_Test.cpp delete mode 100644 tests/Atomic_Op_Test.dsp delete mode 100644 tests/Atomic_Op_Test.icc delete mode 100644 tests/Barrier_Test.cpp delete mode 100644 tests/Barrier_Test.dsp delete mode 100644 tests/Barrier_Test.icc delete mode 100644 tests/Basic_Types_Test.cpp delete mode 100644 tests/Basic_Types_Test.dsp delete mode 100644 tests/Basic_Types_Test.icc delete mode 100644 tests/Buffer_Stream_Test.cpp delete mode 100644 tests/Buffer_Stream_Test.dsp delete mode 100644 tests/Buffer_Stream_Test.icc delete mode 100644 tests/CDR_File_Test.cpp delete mode 100644 tests/CDR_File_Test.dsp delete mode 100644 tests/CDR_Test.cpp delete mode 100644 tests/CDR_Test.dsp delete mode 100644 tests/CDR_Test.icc delete mode 100644 tests/CLASSIX/CLASSIX_Addr_Test.cpp delete mode 100644 tests/CLASSIX/CLASSIX_Addr_Test.icc delete mode 100644 tests/CLASSIX/CLASSIX_CLD_Connector_Test.cpp delete mode 100644 tests/CLASSIX/CLASSIX_CLD_Connector_Test.icc delete mode 100644 tests/CLASSIX/CLASSIX_Con_Acc_Test.cpp delete mode 100644 tests/CLASSIX/CLASSIX_Con_Acc_Test.h delete mode 100644 tests/CLASSIX/CLASSIX_Con_Acc_Test.icc delete mode 100644 tests/CLASSIX/CLASSIX_Group_Test.cpp delete mode 100644 tests/CLASSIX/CLASSIX_Group_Test.icc delete mode 100644 tests/CLASSIX/CLASSIX_Notify_Test.cpp delete mode 100644 tests/CLASSIX/CLASSIX_Notify_Test.icc delete mode 100644 tests/CLASSIX/CLASSIX_OS_Test.cpp delete mode 100644 tests/CLASSIX/CLASSIX_OS_Test.icc delete mode 100644 tests/CLASSIX/CLASSIX_Reactor_Test.cpp delete mode 100644 tests/CLASSIX/CLASSIX_Reactor_Test.h delete mode 100644 tests/CLASSIX/CLASSIX_Reactor_Test.icc delete mode 100644 tests/CLASSIX/CLASSIX_Select_Reactor_Test.cpp delete mode 100644 tests/CLASSIX/CLASSIX_Select_Reactor_Test.h delete mode 100644 tests/CLASSIX/CLASSIX_Select_Reactor_Test.icc delete mode 100644 tests/CLASSIX/CLASSIX_Stream_Test.cpp delete mode 100644 tests/CLASSIX/CLASSIX_Stream_Test.icc delete mode 100644 tests/CLASSIX/CLASSIX_test_config.h delete mode 100644 tests/CLASSIX/Imakefile delete mode 100644 tests/CLASSIX_Addr_Test.icc delete mode 100644 tests/CLASSIX_CLD_Connector_Test.icc delete mode 100644 tests/CLASSIX_Con_Acc_Test.icc delete mode 100644 tests/CLASSIX_Group_Test.icc delete mode 100644 tests/CLASSIX_Notify_Test.icc delete mode 100644 tests/CLASSIX_OS_Test.icc delete mode 100644 tests/CLASSIX_Reactor_Test.icc delete mode 100644 tests/CLASSIX_Select_Reactor_Test.icc delete mode 100644 tests/CLASSIX_Stream_Test.icc delete mode 100644 tests/CPP_Test.cpp delete mode 100644 tests/Cache_Manager_Test.cpp delete mode 100644 tests/Cache_Map_Manager_Test.cpp delete mode 100644 tests/Cache_Map_Manager_Test.dsp delete mode 100644 tests/Cache_Map_Manager_Test.h delete mode 100644 tests/Cached_Accept_Conn_Test.cpp delete mode 100644 tests/Cached_Accept_Conn_Test.dsp delete mode 100644 tests/Cached_Accept_Conn_Test.h delete mode 100644 tests/Cached_Conn_Test.cpp delete mode 100644 tests/Cached_Conn_Test.dsp delete mode 100644 tests/Cached_Conn_Test.h delete mode 100644 tests/Collection_Test.cpp delete mode 100644 tests/Collection_Test.dsp delete mode 100644 tests/Collection_Test.icc delete mode 100644 tests/Conn_Test.cpp delete mode 100644 tests/Conn_Test.dsp delete mode 100644 tests/Conn_Test.h delete mode 100644 tests/Conn_Test.icc delete mode 100644 tests/DLL_Test.cpp delete mode 100644 tests/DLL_Test.dsp delete mode 100644 tests/DLL_Test.h delete mode 100644 tests/DLL_Test.icc delete mode 100644 tests/DLList_Test.cpp delete mode 100644 tests/DLList_Test.dsp delete mode 100644 tests/DLList_Test.icc delete mode 100644 tests/Dynamic_Priority_Test.cpp delete mode 100644 tests/Dynamic_Priority_Test.dsp delete mode 100644 tests/Dynamic_Priority_Test.icc delete mode 100644 tests/Enum_Interfaces_Test.cpp delete mode 100644 tests/Enum_Interfaces_Test.dsp delete mode 100644 tests/Enum_Interfaces_Test.icc delete mode 100644 tests/Env_Value_Test.cpp delete mode 100644 tests/Env_Value_Test.dsp delete mode 100644 tests/Env_Value_Test.icc delete mode 100644 tests/FlReactor_Test.cpp delete mode 100644 tests/Future_Set_Test.cpp delete mode 100644 tests/Future_Set_Test.dsp delete mode 100644 tests/Future_Test.cpp delete mode 100644 tests/Future_Test.dsp delete mode 100644 tests/Future_Test.icc delete mode 100644 tests/Handle_Set_Test.cpp delete mode 100644 tests/Handle_Set_Test.dsp delete mode 100644 tests/Handle_Set_Test.icc delete mode 100644 tests/Hash_Map_Bucket_Iterator_Test.cpp delete mode 100644 tests/Hash_Map_Bucket_Iterator_Test.dsp delete mode 100644 tests/Hash_Map_Manager_Test.cpp delete mode 100644 tests/Hash_Map_Manager_Test.dsp delete mode 100644 tests/Hash_Map_Manager_Test.icc delete mode 100644 tests/High_Res_Timer_Test.cpp delete mode 100644 tests/High_Res_Timer_Test.dsp delete mode 100644 tests/High_Res_Timer_Test.icc delete mode 100644 tests/IOStream_Test.cpp delete mode 100644 tests/IOStream_Test.dsp delete mode 100644 tests/IOStream_Test.icc delete mode 100644 tests/Lazy_Map_Manager_Test.cpp delete mode 100644 tests/Lazy_Map_Manager_Test.dsp delete mode 100644 tests/Log_Msg_Test.cpp delete mode 100644 tests/MM_Shared_Memory_Test.cpp delete mode 100644 tests/MM_Shared_Memory_Test.dsp delete mode 100644 tests/MM_Shared_Memory_Test.icc delete mode 100644 tests/MT_Reactor_Timer_Test.cpp delete mode 100644 tests/MT_Reactor_Timer_Test.dsp delete mode 100644 tests/MT_Reactor_Timer_Test.h delete mode 100644 tests/MT_Reactor_Timer_Test.icc delete mode 100644 tests/MT_SOCK_Test.cpp delete mode 100644 tests/MT_SOCK_Test.dsp delete mode 100644 tests/MT_SOCK_Test.icc delete mode 100644 tests/Makefile delete mode 100644 tests/Makefile.DLL delete mode 100644 tests/Makefile.am delete mode 100644 tests/Makefile.bor delete mode 100644 tests/Malloc_Test.cpp delete mode 100644 tests/Malloc_Test.dsp delete mode 100644 tests/Malloc_Test.h delete mode 100644 tests/Map_Manager_Test.cpp delete mode 100644 tests/Map_Manager_Test.dsp delete mode 100644 tests/Map_Manager_Test.icc delete mode 100644 tests/Map_Test.cpp delete mode 100644 tests/Map_Test.dsp delete mode 100644 tests/Map_Test.h delete mode 100644 tests/Map_Test.icc delete mode 100644 tests/Mem_Map_Test.cpp delete mode 100644 tests/Mem_Map_Test.dsp delete mode 100644 tests/Mem_Map_Test.icc delete mode 100644 tests/Message_Block_Test.cpp delete mode 100644 tests/Message_Block_Test.dsp delete mode 100644 tests/Message_Block_Test.icc delete mode 100644 tests/Message_Queue_Notifications_Test.cpp delete mode 100644 tests/Message_Queue_Notifications_Test.dsp delete mode 100644 tests/Message_Queue_Notifications_Test.icc delete mode 100644 tests/Message_Queue_Test.cpp delete mode 100644 tests/Message_Queue_Test.dsp delete mode 100644 tests/Message_Queue_Test.icc delete mode 100644 tests/Naming_Test.cpp delete mode 100644 tests/Naming_Test.dsp delete mode 100644 tests/Naming_Test.icc delete mode 100644 tests/New_Fail_Test.cpp delete mode 100644 tests/New_Fail_Test.dsp delete mode 100644 tests/Notify_Performance_Test.cpp delete mode 100644 tests/Notify_Performance_Test.dsp delete mode 100644 tests/Notify_Performance_Test.icc delete mode 100644 tests/Object_Manager_Test.cpp delete mode 100644 tests/Object_Manager_Test.dsp delete mode 100644 tests/OrdMultiSet_Test.cpp delete mode 100644 tests/OrdMultiSet_Test.dsp delete mode 100644 tests/OrdMultiSet_Test.icc delete mode 100644 tests/Pipe_Test.cpp delete mode 100644 tests/Pipe_Test.dsp delete mode 100644 tests/Pipe_Test.icc delete mode 100644 tests/Priority_Buffer_Test.cpp delete mode 100644 tests/Priority_Buffer_Test.dsp delete mode 100644 tests/Priority_Buffer_Test.icc delete mode 100644 tests/Priority_Reactor_Test.cpp delete mode 100644 tests/Priority_Reactor_Test.dsp delete mode 100644 tests/Priority_Reactor_Test.h delete mode 100644 tests/Priority_Reactor_Test.icc delete mode 100644 tests/Priority_Task_Test.cpp delete mode 100644 tests/Priority_Task_Test.dsp delete mode 100644 tests/Priority_Task_Test.icc delete mode 100644 tests/Process_Manager_Test.cpp delete mode 100644 tests/Process_Mutex_Test.cpp delete mode 100644 tests/Process_Mutex_Test.dsp delete mode 100644 tests/Process_Mutex_Test.icc delete mode 100644 tests/Process_Strategy_Test.cpp delete mode 100644 tests/Process_Strategy_Test.dsp delete mode 100644 tests/Process_Strategy_Test.h delete mode 100644 tests/Process_Strategy_Test.icc delete mode 100644 tests/Purgable_Map_Manager_Test.cpp delete mode 100644 tests/Purgable_Map_Manager_Test.icc delete mode 100644 tests/RB_Tree_Test.cpp delete mode 100644 tests/RB_Tree_Test.dsp delete mode 100644 tests/RB_Tree_Test.h delete mode 100644 tests/RB_Tree_Test.icc delete mode 100644 tests/README delete mode 100644 tests/Reactor_Exceptions_Test.cpp delete mode 100644 tests/Reactor_Exceptions_Test.dsp delete mode 100644 tests/Reactor_Exceptions_Test.icc delete mode 100644 tests/Reactor_Notify_Test.cpp delete mode 100644 tests/Reactor_Notify_Test.dsp delete mode 100644 tests/Reactor_Notify_Test.icc delete mode 100644 tests/Reactor_Performance_Test.cpp delete mode 100644 tests/Reactor_Performance_Test.dsp delete mode 100644 tests/Reactor_Performance_Test.h delete mode 100644 tests/Reactor_Performance_Test.icc delete mode 100644 tests/Reactor_Timer_Test.cpp delete mode 100644 tests/Reactor_Timer_Test.dsp delete mode 100644 tests/Reactor_Timer_Test.icc delete mode 100644 tests/Reactors_Test.cpp delete mode 100644 tests/Reactors_Test.dsp delete mode 100644 tests/Reactors_Test.icc delete mode 100644 tests/Reader_Writer_Test.cpp delete mode 100644 tests/Reader_Writer_Test.dsp delete mode 100644 tests/Reader_Writer_Test.icc delete mode 100644 tests/Recursive_Mutex_Test.cpp delete mode 100644 tests/Recursive_Mutex_Test.dsp delete mode 100644 tests/Recursive_Mutex_Test.icc delete mode 100644 tests/Reverse_Lock_Test.cpp delete mode 100644 tests/Reverse_Lock_Test.dsp delete mode 100644 tests/SOCK_Connector_Test.cpp delete mode 100644 tests/SOCK_Connector_Test.dsp delete mode 100644 tests/SOCK_Connector_Test.icc delete mode 100644 tests/SOCK_Send_Recv_Test.cpp delete mode 100644 tests/SOCK_Send_Recv_Test.dsp delete mode 100644 tests/SOCK_Test.cpp delete mode 100644 tests/SOCK_Test.dsp delete mode 100644 tests/SOCK_Test.icc delete mode 100644 tests/SPIPE_Test.cpp delete mode 100644 tests/SPIPE_Test.dsp delete mode 100644 tests/SPIPE_Test.icc delete mode 100644 tests/SString_Test.cpp delete mode 100644 tests/SString_Test.dsp delete mode 100644 tests/SString_Test.icc delete mode 100644 tests/SV_Shared_Memory_Test.cpp delete mode 100644 tests/SV_Shared_Memory_Test.dsp delete mode 100644 tests/SV_Shared_Memory_Test.icc delete mode 100644 tests/Semaphore_Test.cpp delete mode 100644 tests/Semaphore_Test.dsp delete mode 100644 tests/Semaphore_Test.icc delete mode 100644 tests/Service_Config_Test.cpp delete mode 100644 tests/Service_Config_Test.dsp delete mode 100644 tests/Service_Config_Test.icc delete mode 100644 tests/Shared_Memory_SV_Test.cpp delete mode 100644 tests/Signal_Test.cpp delete mode 100644 tests/Sigset_Ops_Test.cpp delete mode 100644 tests/Sigset_Ops_Test.dsp delete mode 100644 tests/Sigset_Ops_Test.icc delete mode 100644 tests/Simple_Message_Block_Test.cpp delete mode 100644 tests/Simple_Message_Block_Test.dsp delete mode 100644 tests/Simple_Message_Block_Test.icc delete mode 100644 tests/Svc_Handler_Test.cpp delete mode 100644 tests/Svc_Handler_Test.dsp delete mode 100644 tests/TSS_Test.cpp delete mode 100644 tests/TSS_Test.dsp delete mode 100644 tests/TSS_Test.icc delete mode 100644 tests/TSS_Test_Errno.h delete mode 100644 tests/Task_Test.cpp delete mode 100644 tests/Task_Test.dsp delete mode 100644 tests/Task_Test.icc delete mode 100644 tests/Thread_Manager_Test.cpp delete mode 100644 tests/Thread_Manager_Test.dsp delete mode 100644 tests/Thread_Manager_Test.icc delete mode 100644 tests/Thread_Mutex_Test.cpp delete mode 100644 tests/Thread_Mutex_Test.dsp delete mode 100644 tests/Thread_Mutex_Test.icc delete mode 100644 tests/Thread_Pool_Reactor_Test.cpp delete mode 100644 tests/Thread_Pool_Reactor_Test.dsp delete mode 100644 tests/Thread_Pool_Reactor_Test.h delete mode 100644 tests/Thread_Pool_Reactor_Test.icc delete mode 100644 tests/Thread_Pool_Test.cpp delete mode 100644 tests/Thread_Pool_Test.dsp delete mode 100644 tests/Thread_Pool_Test.icc delete mode 100644 tests/Time_Service_Test.cpp delete mode 100644 tests/Time_Service_Test.dsp delete mode 100644 tests/Time_Service_Test.icc delete mode 100644 tests/Time_Value_Test.cpp delete mode 100644 tests/Time_Value_Test.dsp delete mode 100644 tests/Time_Value_Test.icc delete mode 100644 tests/Timeprobe_Test.cpp delete mode 100644 tests/Timeprobe_Test.dsp delete mode 100644 tests/Timeprobe_Test.icc delete mode 100644 tests/Timer_Queue_Test.cpp delete mode 100644 tests/Timer_Queue_Test.dsp delete mode 100644 tests/Timer_Queue_Test.icc delete mode 100644 tests/TkReactor_Test.cpp delete mode 100644 tests/TkReactor_Test.tcl delete mode 100644 tests/Tokens_Test.cpp delete mode 100644 tests/Tokens_Test.dsp delete mode 100644 tests/Tokens_Test.icc delete mode 100644 tests/UNIXclerk.conf delete mode 100644 tests/UNIXserver.conf delete mode 100644 tests/UNIXtokens.conf delete mode 100644 tests/UPIPE_SAP_Test.cpp delete mode 100644 tests/UPIPE_SAP_Test.dsp delete mode 100644 tests/UPIPE_SAP_Test.icc delete mode 100644 tests/Upgradable_RW_Test.cpp delete mode 100644 tests/Upgradable_RW_Test.dsp delete mode 100644 tests/Upgradable_RW_Test.h delete mode 100644 tests/Upgradable_RW_Test.icc delete mode 100644 tests/Win32clerk.conf delete mode 100644 tests/Win32server.conf delete mode 100644 tests/Win32tokens.conf delete mode 100644 tests/WinCE/Atomic_Op_Test.dsp delete mode 100644 tests/WinCE/Barrier_Test.dsp delete mode 100644 tests/WinCE/Basic_Types_Test.dsp delete mode 100644 tests/WinCE/Buffer_Stream_Test.dsp delete mode 100644 tests/WinCE/Conn_Test.dsp delete mode 100644 tests/WinCE/DLL_Test.dsp delete mode 100644 tests/WinCE/Enum_Interfaces_Test.dsp delete mode 100644 tests/WinCE/Future_Test.dsp delete mode 100644 tests/WinCE/Handle_Set_Test.dsp delete mode 100644 tests/WinCE/Hash_Map_Manager_Test.dsp delete mode 100644 tests/WinCE/MT_Reactor_Timer_Test.dsp delete mode 100644 tests/WinCE/MT_SOCK_Test.dsp delete mode 100644 tests/WinCE/Map_Manager_Test.dsp delete mode 100644 tests/WinCE/Mem_Map_Test.dsp delete mode 100644 tests/WinCE/Message_Block_Test.dsp delete mode 100644 tests/WinCE/Message_Queue_Notifications_Test.dsp delete mode 100644 tests/WinCE/Message_Queue_Test.dsp delete mode 100644 tests/WinCE/Notify_Performance_Test.dsp delete mode 100644 tests/WinCE/OrdMultiSet_Test.dsp delete mode 100644 tests/WinCE/Priority_Buffer_Test.dsp delete mode 100644 tests/WinCE/Priority_Task_Test.dsp delete mode 100644 tests/WinCE/Reactor_Exceptions_Test.dsp delete mode 100644 tests/WinCE/Reactor_Notify_Test.dsp delete mode 100644 tests/WinCE/Reactor_Performance_Test.dsp delete mode 100644 tests/WinCE/Reactor_Timer_Test.dsp delete mode 100644 tests/WinCE/Reactors_Test.dsp delete mode 100644 tests/WinCE/Reader_Writer_Test.dsp delete mode 100644 tests/WinCE/Recursive_Mutex_Test.dsp delete mode 100644 tests/WinCE/SOCK_Connector_Test.dsp delete mode 100644 tests/WinCE/SOCK_Test.dsp delete mode 100644 tests/WinCE/SString_Test.dsp delete mode 100644 tests/WinCE/Semaphore_Test.dsp delete mode 100644 tests/WinCE/Sigset_Ops_Test.dsp delete mode 100644 tests/WinCE/Simple_Message_Block_Test.dsp delete mode 100644 tests/WinCE/TSS_Test.dsp delete mode 100644 tests/WinCE/Task_Test.dsp delete mode 100644 tests/WinCE/Thread_Manager_Test.dsp delete mode 100644 tests/WinCE/Thread_Mutex_Test.dsp delete mode 100644 tests/WinCE/Thread_Pool_Test.dsp delete mode 100644 tests/WinCE/Time_Value_Test.dsp delete mode 100644 tests/WinCE/Timer_Queue_Test.dsp delete mode 100644 tests/WinCE/ce_tests.dsw delete mode 100644 tests/XtReactor_Test.cpp delete mode 100644 tests/XtReactor_Test.icc delete mode 100644 tests/icc.bat delete mode 100644 tests/log/Makefile.am delete mode 100755 tests/makeicc.pl delete mode 100755 tests/run_pharlap_tests.bat delete mode 100644 tests/run_tests.bat delete mode 100755 tests/run_tests.check delete mode 100755 tests/run_tests.ksh delete mode 100644 tests/run_tests.lst delete mode 100755 tests/run_tests.pl delete mode 100755 tests/run_tests.psosim delete mode 100755 tests/run_tests.sh delete mode 100644 tests/run_tests.vxworks delete mode 100644 tests/t.icc delete mode 100644 tests/test_config.h delete mode 100644 tests/tests.dsw delete mode 100644 tests/tests_pharlap_msvc.lnk delete mode 100644 tests/version_tests/ACE_Init_Test.dsp delete mode 100644 tests/version_tests/Atomic_Op_Test.dsp delete mode 100644 tests/version_tests/Barrier_Test.dsp delete mode 100644 tests/version_tests/Basic_Types_Test.dsp delete mode 100644 tests/version_tests/Buffer_Stream_Test.dsp delete mode 100644 tests/version_tests/CDR_File_Test.dsp delete mode 100644 tests/version_tests/CDR_Test.dsp delete mode 100644 tests/version_tests/Cache_Map_Manager_Test.dsp delete mode 100644 tests/version_tests/Cached_Accept_Conn_Test.dsp delete mode 100644 tests/version_tests/Cached_Conn_Test.dsp delete mode 100644 tests/version_tests/Collection_Test.dsp delete mode 100644 tests/version_tests/Conn_Test.dsp delete mode 100644 tests/version_tests/DLL_Test.dsp delete mode 100644 tests/version_tests/DLList_Test.dsp delete mode 100644 tests/version_tests/Dynamic_Priority_Test.dsp delete mode 100644 tests/version_tests/Enum_Interfaces_Test.dsp delete mode 100644 tests/version_tests/Env_Value_Test.dsp delete mode 100644 tests/version_tests/Future_Set_Test.dsp delete mode 100644 tests/version_tests/Future_Test.dsp delete mode 100644 tests/version_tests/Handle_Set_Test.dsp delete mode 100644 tests/version_tests/Hash_Map_Bucket_Iterator_Test.dsp delete mode 100644 tests/version_tests/Hash_Map_Manager_Test.dsp delete mode 100644 tests/version_tests/High_Res_Timer_Test.dsp delete mode 100644 tests/version_tests/IOStream_Test.dsp delete mode 100644 tests/version_tests/Lazy_Map_Manager_Test.dsp delete mode 100644 tests/version_tests/MM_Shared_Memory_Test.dsp delete mode 100644 tests/version_tests/MT_Reactor_Timer_Test.dsp delete mode 100644 tests/version_tests/MT_SOCK_Test.dsp delete mode 100644 tests/version_tests/Malloc_Test.dsp delete mode 100644 tests/version_tests/Map_Manager_Test.dsp delete mode 100644 tests/version_tests/Map_Test.dsp delete mode 100644 tests/version_tests/Mem_Map_Test.dsp delete mode 100644 tests/version_tests/Message_Block_Test.dsp delete mode 100644 tests/version_tests/Message_Queue_Notifications_Test.dsp delete mode 100644 tests/version_tests/Message_Queue_Test.dsp delete mode 100644 tests/version_tests/Naming_Test.dsp delete mode 100644 tests/version_tests/New_Fail_Test.dsp delete mode 100644 tests/version_tests/Notify_Performance_Test.dsp delete mode 100644 tests/version_tests/Object_Manager_Test.dsp delete mode 100644 tests/version_tests/OrdMultiSet_Test.dsp delete mode 100644 tests/version_tests/Pipe_Test.dsp delete mode 100644 tests/version_tests/Priority_Buffer_Test.dsp delete mode 100644 tests/version_tests/Priority_Reactor_Test.dsp delete mode 100644 tests/version_tests/Priority_Task_Test.dsp delete mode 100644 tests/version_tests/Process_Mutex_Test.dsp delete mode 100644 tests/version_tests/Process_Strategy_Test.dsp delete mode 100644 tests/version_tests/RB_Tree_Test.dsp delete mode 100644 tests/version_tests/Reactor_Exception_Test.dsp delete mode 100644 tests/version_tests/Reactor_Notify_Test.dsp delete mode 100644 tests/version_tests/Reactor_Performance_Test.dsp delete mode 100644 tests/version_tests/Reactor_Timer_Test.dsp delete mode 100644 tests/version_tests/Reactors_Test.dsp delete mode 100644 tests/version_tests/Reader_Writer_Test.dsp delete mode 100644 tests/version_tests/Recursive_Mutex_Test.dsp delete mode 100644 tests/version_tests/Reverse_Lock_Test.dsp delete mode 100644 tests/version_tests/SOCK_Connector_Test.dsp delete mode 100644 tests/version_tests/SOCK_Send_Recv_Test.dsp delete mode 100644 tests/version_tests/SOCK_Test.dsp delete mode 100644 tests/version_tests/SPIPE_Test.dsp delete mode 100644 tests/version_tests/SString_Test.dsp delete mode 100644 tests/version_tests/SV_Shared_Memory_Test.dsp delete mode 100644 tests/version_tests/Semaphore_Test.dsp delete mode 100644 tests/version_tests/Service_Config_Test.dsp delete mode 100644 tests/version_tests/Sigset_Op_Test.dsp delete mode 100644 tests/version_tests/Simple_Message_Block_Test.dsp delete mode 100644 tests/version_tests/Svc_Handler_Test.dsp delete mode 100644 tests/version_tests/TSS_Test.dsp delete mode 100644 tests/version_tests/Task_Test.dsp delete mode 100644 tests/version_tests/Thread_Manager_Test.dsp delete mode 100644 tests/version_tests/Thread_Mutex_Test.dsp delete mode 100644 tests/version_tests/Thread_Pool_Reactor_Test.dsp delete mode 100644 tests/version_tests/Thread_Pool_Test.dsp delete mode 100644 tests/version_tests/Time_Service_Test.dsp delete mode 100644 tests/version_tests/Time_Value_Test.dsp delete mode 100644 tests/version_tests/Timeprobe_Test.dsp delete mode 100644 tests/version_tests/Timer_Queue_Test.dsp delete mode 100644 tests/version_tests/Tokens_Test.dsp delete mode 100644 tests/version_tests/UPIPE_SAP_Test.dsp delete mode 100644 tests/version_tests/Upgradable_RW_Test.dsp delete mode 100755 tests/version_tests/run_all_tests.bat delete mode 100644 tests/version_tests/version_tests.dsw delete mode 100644 websvcs/Makefile delete mode 100644 websvcs/README delete mode 100644 websvcs/lib/Makefile delete mode 100644 websvcs/lib/URL_Addr.cpp delete mode 100644 websvcs/lib/URL_Addr.h delete mode 100644 websvcs/lib/URL_Addr.i delete mode 100644 websvcs/lib/websvcs.dsp delete mode 100644 websvcs/lib/websvcs.dsw delete mode 100644 websvcs/lib/websvcs_export.h delete mode 100644 websvcs/tests/Makefile delete mode 100644 websvcs/tests/Test_URL_Addr.cpp delete mode 100644 websvcs/tests/Test_URL_Addr.dsp delete mode 100644 websvcs/tests/tests.dsw delete mode 100644 websvcs/websvcs.dsw diff --git a/ACE-INSTALL.html b/ACE-INSTALL.html deleted file mode 100644 index e409c709bac..00000000000 --- a/ACE-INSTALL.html +++ /dev/null @@ -1,2048 +0,0 @@ - - - - - Building and Installing ACE and Its Network Services - - - - - -
-

Building and Installing ACE and Its Network Services

- -

Synopsis

- -The file explains how to build and install ACE and its Network -Services on the various OS platforms and compilers that it has been -ported to. Please consult the ChangeLog file -to see whether any recent changes to the release will affect your -code. You also might want to read the ACE FAQ before -building and installing ACE. In addition, you might want to check out -our development -process, as well. And as you start working with ACE, you might -want to consult the ACE Frequently Made -Mistakes page. If you encounter any problems or would like to request -an enhancement, then use our -bug tracking system to submit a report.

- - -

Document Index

- - - - -


-

Supported Platforms and C++ Compilers

- - - -

The following table summarizes platforms on which ACE runs:

- - - - - - - - - - - - - - - - - - -
Fully supported, i.e., continually tested and used dailySolaris 2.5, 2.6, and 7, Windows NT 4.0 (MSVC++ 5.0, and 6.0), - Linux/Intel, Linux/Alpha, VxWorks, LynxOS, Digital UNIX 4.0 and 5.0, - HP/UX 10.x and 11.x, AIX 4.x, IRIX 6.x, and QNX Neutrino 2.0 -
Nearly fully supported, i.e., periodically testedWindows 95, MVS, DEC Alpha Windows NT (MSVC++ 5.0, 6.0), Chorus, - PharLap TNT Embedded ToolSuite 9.1 -
Partially supported, i.e., infrequently tested Windows NT (Borland C++ Builder 4.0 and IBM VisualAge C++), - Windows CE, Tandem, SCO, UnixWare, SunOS 4.x, FreeBSD, NetBSD, - Linux/PPC. -
Planned support, i.e., pending pSoS,
- -

Any UNIX/POSIX/Win32 variation is a potential target platform for -TAO. If you have porting -questions or have a problem compiling the ACE wrappers on the -platforms shown above please send email to either ACE Newsgroup or the ACE mailing list and we'll -try to help you fix the problems. - - -


-

Installation Notes for Supported Platforms

- - - - -
-

Compiling ACE with GNU g++

- -If you use the GNU GCC g++ compiler please note the following: - - - - -


-

Compiling ACE with egcs

- - - -


-

Building and Installing ACE

- -The following explains how to build the ACE on UNIX and Win32. - -

General Rules

- - -

Building and Installing ACE on UNIX

- -Building and installing ACE on UNIX is relatively simple (the process for Win32 is different). Here's what you -need to do:

- -

    -
  1. Install GNU make 3.7 or greater on your system (available via - anonymous ftp from prep.ai.mit.edu in the pub/gnu directory). - You must use GNU make or ACE won't compile.

    - -

  2. Add an environment variable called ACE_ROOT that contains the - name of the root of the directory where you keep the ACE wrapper - source tree. The ACE recursive Makefile scheme needs this information. - There are several ways to set the ACE_ROOT variable. For - instance, in my .login file I have the following entry:

    - -

    
    -      % setenv ACE_ROOT /home/cs/faculty/schmidt/ACE_wrappers
    -      

    - - However, if you're building a number of versions of ACE, e.g., for - different OS platforms or for different releases of ACE, you might use - the following approach: - -

    
    -      % setenv ACE_ROOT $cwd
    -      
    - -
  3. Edit the $ACE_ROOT/ace/OS.h file to update things like default - hostname and port numbers you'd like the programs in the - $ACE_ROOT/{apps,tests} directories to use by default. Note, - however that you can normally skip this step because the - defaults are typically fine for most systems.

    - -

  4. Create a $ACE_ROOT/ace/config.h file that includes - the appropriate platform/compiler-specific header configurations - (such as config-sunos5-sunc++-4.x.h). This file - contains the #defines that are used throughout ACE to indicate - which features your system supports (see the - $ACE_ROOT/ace/OS.h file for many examples of how - the ACE build configuration is affected by these macro - settings). Make sure you settings are placed - before the inclusion of the platform-specific - header file.

    - - There are config files for most versions of UNIX. If there - isn't a version of this file that matches your - platform/compiler, you'll need to make one. Please send me - email if you get it working so I can add it to the master ACE - release.

    - -

  5. Set the $ACE_ROOT/include/makeinclude/platform_macros.GNU file - to point to the appropriate platform/compiler-specific Makefile - configurations, e.g., platform_sunos5_sunc++.GNU. This file - contains the compiler and Makefile directives that are - platform/compiler-specific

    - -

  6. Note that because ACE builds shared libraries, you'll need to set - LD_LIBRARY_PATH to whereever you put the binary version of the - ACE library. For example, you probably want to do something - like the following

    - -

    
    -      % setenv LD_LIBRARY_PATH $ACE_ROOT/ace:$LD_LIBRARY_PATH
    -      

    - -

  7. When all this is done, hopefully all you'll need to do is type:

    - -

    
    -      % make
    -      

    - - at the root of the ACE source tree. This will build the ACE - library, tests, the examples, and the sample applications. - Building the entire ACE release can take a long time and consume - lots of disk space, however. Therefore, you might consider - cd'ing into the $ACE_ROOT/ace/ directory and - running make there to build just the ACE library. - As a sanity check, you might also want to build and run the - automated ``one-button'' tests in $ACE_ROOT/tests/. Finally, if you're also - planning on building TAO, you - should build the gperf - perfect hash function generator application in $ACE_ROOT/apps/gperf/.

    - -

  8. If you need to regenerate the Svc_Conf_y.cpp file, you'll need to - get Berkeley - YACC. However, you should rarely, if ever, need to do this.

    - -

- - -


-

Building and Installing ACE on Win32

- -First, if you are upgrading from an older release, clean up everything -and rebuild from scratch to ensure that everything is rebuilt -correctly. You might have to manually go through the ACE directories -and delete all *.obj, *.dll, *.lib, *.ilk, *.pdb, *.idb, *.ncb, *.opt, -and *.exp files in order to start over from scratch (the Clean command -in MSVC may not do this).

- -ACE contains project files for Microsoft Visual C++ 5.0 or later -(*.dsw), Borland C++ 5.x (ace.ide), IBM's VisualAge C++ compiler -(*.icc). There are also Makefile.bor files to compile ACE, the ACE -one-button tests, and TAO with Borland C++ Builder 4.0.

- -The Borland C++ Builder 4.0 port has been done by Jody Hagins and Christopher Kohlhoff. By -default, the ACE/TAO libraries built for Borland C++ Builder are -intended for use with generic console or windows applications and they -link against the corresponding C++ runtime library. Applications -created using BCB's RAD environment, such as ChatClient, must link -against the VCL-compatible (ie pascal-compatible) runtime library. To -tell the difference between these libraries the VCL-compatible ones -have a 'p' in the suffix (i.e., 'p' for pascal). To build VCL -compatible libraries try -


-make -f Makefile.bor -DPASCAL
-
- -Please see http://www.tenermerx.com/tao_bcb/index.html -for more information on building ACE+TAO with Borland C++ Builder.

- -Note concerning MSVC 5.0 and Service Pack 3: There has been -confusion regarding MSVC 5 and its Service Pack 3. Some ACE users -have, in the past, had problems with SP3 that were not present in SP2. -Thanks to the diligent efforts of Bill Fulton, the -mystery appears to be solved. The key? (Oh, this is a good one...) -It would appear that there are actually multiple versions of SP3 in -existence. The earlier ones have the bug, while later ones have it -fixed. The service pack downloadable from Microsoft's web site as of -June 16, 1998 works fine. The CD containing SP3, if it has part -number X03-50158 on the disc (the part number on the jacket is -probably different), also works fine.

- -So, if you are experiencing problems with SP3, get a newer one - it'll -probably work. Sheesh...

- -We no longer actively support MSVC 4.x. ACE might work with the -compiler but not without some work.

- -Note, however, that regardless of the version of SP3, there are some -STL bugs in SP3 which you should get corrected. Please see http://www.dinkumware.com/vc_fixes.html -for details. Thank you to Ben Eng -for the pointer to the STL fixes. - -

    -
  1. Uncompress the ACE distribution into a directory, where it will create a - ACE_wrappers directory containing the distribution. The ACE_wrappers - directory will be referred to as ACE_ROOT in the following steps -- so - ACE_ROOT\ace would be C:\ACE_wrappers\ace if you uncompressed into the - root directory.
    -
    -
  2. Create a file called config.h in the ACE_ROOT\ace - directory that contains:
    -
    - #include "ace/config-win32.h"
    -
    -
  3. Now load up the project file for ACE (ACE_ROOT\ace\ACE_Library.mdp or - ACE_ROOT\ace\ace.dsw).

    -
  4. Each project will contain 8 different configurations. These - are a mixture of Debug/Release, Unicode/non-Unicode, and - Static/Dynamic library versions for both i386 and Alpha machines. - Make sure you are building the one you'll use. All these - different configurations are provided for your convenience. You - can either adopt the scheme to build your applications with - different configurations, or use ace/config.h to - tweak with the default settings on NT. - Note: If you - use the dynamic libraries, make sure you include ACE_ROOT\bin - in your PATH whenever you run programs that use ACE.

    -
  5. If you are building for Windows NT then you can start building - now. If you are building on Windows 95, then you should add - the line
    -
    - #define ACE_HAS_WINNT4 0
    -
    - before the #include statement in ACE_ROOT\ace\config.h and it - will turn off Windows NT 4 specific code.
    -
    -
  6. If you want to use the standard C++ headers (iostream, cstdio, ... - as defined by the C++ Standard Draft 2) that comes with MSVC 5, - then add the line
    -
    - #define ACE_HAS_STANDARD_CPP_LIBRARY 1
    -
    - before the #include statement in ACE_ROOT\ace\config.h.
    -
    -
  7. To use ACE with MFC libraries, also add the following to - your config.h file. Notice that if you want to - spawn a new thread with CWinThread, make sure you spawn the - thread with THR_USE_AFX flag set.
    -
    - #define ACE_HAS_MFC 1
    -
    - By default, all ACE examples use DLL version of run-time libraries - regardless you are building DLL or static version of ACE. You - can still choose to link ACE statically or dynamically - regardless of run-time libraries. The reason of choosing to - link run-time library dynamically is almost every NT box has - these library installed and to save disk space. If - you prefer to link MFC as a static library into ACE, you can do - this by defining ACE_USES_STATIC_MFC in your - config.h file. If you insist on linking everything - statically, you'll have to modify the project file yourself.

    -

  8. Static version of ACE libraries are build with the following macros defined:
    -
    - ACE_HAS_DLL=0
    - ACE_NO_INLINE
    -
    - You should also have them defined in you application projects if you - want to use the default static ACE libraries with them.

    - -

  9. If you are building for Windows CE, you need to add the line
    -
    - #define ACE_HAS_WINCE -
    - before including <ace/config-win32.h>. Notice that CE uses a - different set of dsw/dsp files.

    - -
  10. The default project files which build ACE library have various - configurations to build dynamic/static, with or without Unicode - support. Although we recommend using the dynamic library, if, - for some reasons, you would rather work with static library, - you'll need to add the line
    -
    - #define ACE_HAS_DLL 0
    -
    - before the #include statement in ACE_ROOT\ace\config.h. - Optionally but highly recommended, you can also add the line
    -
    - #define ACE_NO_INLINE
    -
    - before the #include statement in ACE_ROOT\ace\config.h to disable - inline function and reduce the size of static libraries (and your - executables.) Notice that you need to use DLL version of - run-time libraries even you are using ACE as a static library. - That's the default behavior.

    - -
  11. Barry - Hoggard maintains a CORBA Page - which contains very helpful information on setting MSVC project - settings. You'll need to filter out stuff related to TAO if you - only use ACE.

    -
- -ACE TESTS

- -The tests are located in ACE_ROOT\tests. There are two corresponding -project files in that directory also (tests.mdp and tests.dsp).

- -Once you build all the tests (Batch Build works well for this), you -can run the batch file run_tests.bat in the -tests directory to try all the tests.

- - BUILDING ACE ON A WIN32 MACHINE THAT LACKS A NETWORK CARD

- -You may want to run ACE on a non-networked machine. To do so, you must -install TCP/IP and configure it to ignore the absence of a network -card. This is one method:

- -

    -
  1. Run Control Panel -
  2. Choose Network from Control Panel -
  3. Add Adapter: MS Loopback Adapter -
  4. Configure MS Loopback Adapter with 802.3 (default) -
  5. Add Protocol: TCP/IP Protocol -
  6. Configure TCP/IP Protocol with a valid IP address and subnet mask. - Leave everything else at the default settings. -
  7. Add Service: Workstation -
  8. Exit and Restart System -
  9. Run Control Panel again -
  10. Choose Services from Control Panel -
  11. The following services are not necessary and may - be set to Disabled Startup:
    - Alerter
    - Computer Browser
    - Net logon
    - Messanger
    -
  12. Choose Network from Control Panel -
  13. Confirm the following setup. This is all you need to run ACE:
    - Installed Software:
    - Computer Browser
    - MS Loopback Adapter Driver
    - TCP/IP Protocol
    - Workstation
    - Installed Adapter Cards:
    - MS Loopback Adapter

    -

- -NT ALPHA CONFIGURATIONS - -

Many project files already contain Alpha NT configurations, but others do -not (requiring them to be added). Also, since most of the development happens -on x86, problems building ACE on Alpha NT can often be fixed by recreating the -configurations from the x86 versions.

- -

Here are the steps to add an Alpha Configuration.

- -
    -
  1. Load the project on the Alpha machine. -
  2. Go to the Build menu and then Configurations. -
  3. Select the project that you want to convert. -
  4. Click on Add. -
  5. Select the x86 configuration to "Copy settings from" - (either Debug or Release versions). -
  6. Prepend "Alpha " to the beginning of the name under - "Configuration". -
  7. Click OK. -
  8. Close the "Configurations" window. -
  9. Now go to the Project settings. -
  10. For the General Settings, change the output directories to standard ACE - output directores. Intermediate Directories are "Debug" and - "Release" in most cases. The Output Directories are blank, - except for Release versions of executables, in which it is also - "Release". -
  11. For the C/C++ Settings, make sure that the Code Generation's runtime - library is set to "Multithreaded DLL" or "Debug Multithreaded - DLL". -
- -

Note: MSVC 6 has a bug where if a .dsp is converted from version 5 to 6 on -x86, the Alpha configuration will be partially corrupted. If this occurs, the -easiest way to fix it is as above, recreate it.

- - -
-

Building and Installing ACE on VxWorks

-For the most part, you should be able to follow the instructions above -to build ACE and applications that use it. Start with the -Unix instructions above to build ACE and the -applications that use it. Please see below for more information on -building ACE on NT hosts for VxWorks targets.

- -A few notes on VxWorks builds (thanks to -Paul von Behren -for these notes):

-

- -You'll have to let ACE know the target type at compile time. There -are several ways to do this; please see the -$ACE_ROOT/include/makeinclude/platform_vxworks5.x_g++.GNU -platform file for detailed information.

- -The VxWorks platform_vxworks*.GNU files are set up so that shared -libraries are not built on VxWorks, by default. Only static -libraries, with .a extension, are built. Therefore, it's not -necessary to set the LD_LIBRARY_PATH environment variable on your host -system when building for VxWorks targets. Please note, however, if -you use TAO on VxWorks that you will need to set your LD_LIBRARY_PATH -to find the TAO IDL compiler libraries (installed in the ace -directory) on the host.

- -With g++, $ACE_ROOT/bin/ace_ld is used to munch object files and -libraries to set up calls to static constructors and destructors. -bin/ace_ld requires perl on the host platform.

- -These non-default VxWorks kernel configuration #defines -are required with ACE:

- -

-#define INCLUDE_CPLUS           /* include C++ support */
-#define INCLUDE_CPLUS_IOSTREAMS /* include iostreams classes */
-#define INCLUDE_POSIX_ALL       /* include all available POSIX functions */
-
- -For completeness, here are the non-default #defines that -we used for VxWorks 5.3.1/g++ 2.7.2: - -
-#define INCLUDE_CPLUS           /* include C++ support */
-#define INCLUDE_CPLUS_IOSTREAMS /* include iostreams classes */
-#define INCLUDE_CONFIGURATION_5_2 /* pre-tornado tools */
-#define INCLUDE_DEBUG           /* pre-tornado debugging */
-#define INCLUDE_LOADER          /* object module loading */
-#define INCLUDE_NET_SYM_TBL     /* load symbol table from network */
-#define INCLUDE_SYM_TBL_SYNC    /* synchronize host and target symbol tables */
-#define INCLUDE_NFS             /* nfs package */
-#define INCLUDE_PING            /* ping() utility */
-#define INCLUDE_POSIX_ALL       /* include all available POSIX functions */
-#define INCLUDE_RDB             /* remote debugging package */
-#define INCLUDE_RLOGIN          /* remote login */
-#define INCLUDE_RPC             /* rpc package */
-#define INCLUDE_SECURITY        /* shell security for network access */
-#define INCLUDE_SHELL           /* interactive c-expression interpreter */
-#define INCLUDE_SHOW_ROUTINES   /* show routines for system facilities*/
-#define INCLUDE_SPY             /* spyLib for task monitoring */
-#define INCLUDE_STARTUP_SCRIPT  /* execute start-up script */
-#define INCLUDE_STAT_SYM_TBL    /* create user-readable error status */
-#define INCLUDE_SYM_TBL         /* symbol table package */
-#define INCLUDE_UNLOADER        /* object module unloading */
-#define INCLUDE_WINDVIEW        /* WindView command server */
-
- -If you use TAO, it's also a good idea to increase the -NUM_FILES parameter from its default of 50 to, -say, 1000.

- -Please note that those VxWorks kernel configuration parameters -are set in the VxWorks configAll.h file. You must rebuild your -VxWorks kernel after modifying that file.

- -If you're first getting started with ACE and/or VxWorks, I recommend -just building the ACE library and tests first. (Some of the ACE -examples, in System_V_IPC, don't build on VxWorks yet.) Then try -running the tests. Please see $ACE_ROOT/tests/README for the latest -status of the ACE tests on VxWorks.

- -Please note that the main entry point is renamed to -ace_main (configurable via ACE_MAIN) on VxWorks with g++, -to comply with its restriction against using main. -In addition, ACE_HAS_NONSTATIC_OBJECT_MANAGER is enabled by default -to cleanly support construction and destruction of static objects. -Please see the Non-static -ACE_Object_Manager discussion for the important implication -of this feature.

- -ACE threads (VxWorks tasks) can be named, for example, by supplying a -non-null argument to the Thread_Manager spawn routines. However, -names beginning with "==ace_t==" are forbidden because -that prefix is used internally by ACE.

- -You can spawn a new task to run ace_main, using either -VxWorks sp, or ACE'S spa. -spa can be used from the VxWorks shell to pass arguments -to ace_main. Its usage is: - -


-spa ace_main, "arg1" [, ...]
-
- -All arguments must be quoted, even numbers.

- -The ACE tests write their output files in a -directory named log/, below the current -(tests) directory. If you don't have NFS included in -your VxWorks kernel, you can use these steps, provided by -Clarence M. Weaver, -to run the tests and capture their output:

-

    -
  1. What I did was create a log directory on the boot NT host of my vxworks - target.

    -

  2. I copied all the test applications and the run_tests.vxworks script to - the parent of the log directory.

    -

  3. Using the target shell not the host shell, I "cd" to the directory - containing the script and test programs.

    -

  4. Invoked the script < run_tests.vxworks from this target shell.

    -

- -Kirk Davies provided this -approach for running the ACE tests on Tornado II: - - - -
Building Shared Libraries for VxWorks.
- -ACE supports shared libraries for VxWorks, but only with the g++ -compiler. To build shared libraries instead of the default static -libraries, added shared_libs=1 (not -shared_libs_only=1) to either your -ACE_wrappers/include/makeinclude/platform_macros.GNU or -your make invocation. Then, be sure to load the ACE (and -any other) shared library before loading your executable(s).

- -A shared library for VxWorks uses the same code as for a static -(non-shared) library. However, calls to static constructors/ -destructors are added. The code in the shared library must -be reentrant if you shared it between programs (tasks). The -ACE library meets this requirement.

- -Shared libraries reduce build time, executable size, and load -time of the executable. But, you must manually load the shared -library before loading your executable(s) with a command such as: -


--> ld < libACE.so
-
-Shared libraries can be unloaded the same way an executable -(module) is unloaded.

- -NOTE: Shared libraries on VxWorks aren't the same as -shared libraries on other operating systems. In particular, there is -no support for creating copies of writeable global (static) data in -the shared library. This includes the singleton ACE_Object_Manager -instance pointer. If you share global data between separate programs, -they may not work properly. See the discussion of shared code and -reentrancy in the VxWorks' Programmers Guide.

- -Instead of trying to run separate programs onto a VxWorks target, we -recommend creating just one program, and spawning a thread for each -task. The TAO IDL_Cubit test collocation -test is a good example.

- -

Linking ACE and/or TAO Libraries into the VxWorks Kernel.
- -It's easy to link your ACE and/or TAO libraries into the VxWorks kernel. -Just build shared versions, but -disable the munch step. The easiest way to do that is to set the -LD make variable to the name of your linker. For -example, to build a libACE.so for PowerPC that can be linked into -the kernel: -
-% cd $ACE_ROOT/ace
-% make LD=ldppc shared_libs=1
-
-After building the shared lib, link it into the kernel by setting -the MACH_EXTRA make variable in the kernel configuration -Makefile. Then, build the kernel using make exe.

- - -

Building ACE on Tornado/NT hosts for VxWorks targets.
-The following, very useful information was contributed by -Chris Ryan -and Paul von Behren. -Please submit corrections, additions, or clarifications to the -the ACE mailing list.

- -NOTE:The make (version 3.74) that is provided with -Tornado II cannot be used to build ACE. Use Cygnus' make (version 3.75) -instead.)

- -NOTE:Optimization is enabled be default in -platform_vxworks5.x_g++.GNU. However, the compiler that is shipped with Tornado II has -trouble compiling some files with -O2. To disable optimization -for an individual file, just add optimize=0 to your -make invocation when compiling that file.

- -Using the Cygnus tools, this approach works: -

- -A few additional Windows Notes, from Paul von Behren:

-

- -And Chris Ryan's instructions for building for VxWorks targets -on Windows NT hosts: - -
    -
  1. Path setting that seems to be working is:

    -

    -      /tornado/host/x86-win32/bin:
    -      /tornado/host/x86-win32/lib/gcc-lib/i386-wrs-vxworks/cygnus-2.7.2-960126:
    -      /tornado/host/x86-win32/i386-wrs-vxworks/bin:
    -      /ace/ace_wrappers/bin:
    -      /gnuwin32/b18/H-i386-cygwin32/bin:
    -      /gnuwin32/b18/tcl/bin:
    -      /WINNT/system32:
    -      /WINNT:
    -      /WINNT/system32/nls/ENGLISH:
    -      /bin
    -      
    - - Other environment variables:

    -

    -      WIND_BASE=/tornado
    -      SHELL=/bin/sh.exe
    -      TERM=pcbios
    -      TAO_ROOT=/ace/ACE_wrappers.vxworks/TAO
    -      CPP_LOCATION=/Program Files/DevStudio/VC/bin/CL.EXE
    -      GCC_EXEC_PREFIX=/tornado/host/x86-win32/lib/gcc-lib/
    -      WIND_HOST_TYPE=x86-win32
    -      ACE_ROOT=/ace/ACE_wrappers.vxworks
    -      
    - -
  2. /tornado is the root of the Tornado install - ($WIND_BASE). - -
  3. /gnuwin32 is the root of a Cygnus GNU download and install. - -
  4. /bin content is:

    -

    -      aced.dll
    -      cygwin.dll
    -      perl.exe
    -      rm.exe
    -      sh.exe
    -      true
    -      
    - - aced.dll is produced in an ACE NT source tree according to - documented procedure for NT VC++5.0 ACE build. - - cygwin.dll is from the Cygnus GNU software download and install. - -
  5. Basically, follow documented procedure for ACE build/install on UNIX - platform. Create a $ACE_ROOT/ace/config.h that looks - like:

    -

    -      #include "config-vxworks5.x.h"
    -      
    - - And create a - $ACE_ROOT/include/makeinclude/platform_macros.GNU - that looks like:

    -

    -      WIND_BASE = /tornado
    -      WIND_HOST_TYPE = x86-win32
    -      CPU = I80486
    -      include $(ACE_ROOT)/include/makeinclude/platform_vxworks5.x_g++.GNU
    -      
    - -
  6. When using cygnus windows GNUTools on WinNT you have to start - make with "--unix" option, otherwise WinNT shell cmd.exe is responded and - not sh.exe, i.e., -
    - make --unix static_libs=1
    - 
    -
- -
TAO on NT Tornado host, VxWorks target.
- -
    -
  1. Build ACE and TAO_IDL in the NT tree as already documented. As - mentioned above, I put aced.dll in /bin. - Be sure to build ACE's gperf on NT, in - ACE_wrappers/apps/gperf/src.

    - -

  2. Build $TAO_ROOT/tao -
    -      CPP_LOCATION=/Program Files/DevStudio/VC/bin/CL.exe
    -      cd $TAO_ROOT/tao
    -      /gnuwin32/b18/H-i386-cygwin32/bin/make
    -      
    - -
  3. Build orbsvcs. -
    -      CPP_LOCATION=/Program Files/DevStudio/VC/bin/CL.exe
    -      cd $TAO_ROOT/orbsvcs/orbsvcs
    -      /gnuwin32/b18/H-i386-cygwin32/bin/make
    -      
    - -
  4. Build $TAO_ROOT/tests

    -

- - -
-

Building and Installing ACE Network Services

- -The following explains how to build the ACE network services on UNIX and Win32. - -

Building and Installing ACE Network Services on UNIX

- -Building and installing ACE Network Services on UNIX is relatively -simple (the process for Win32 is different). -Here's what you need to do:

- -

    - -
  1. Build and install ACE on UNIX as described earlier. If ACE is built at the root of the ACE - source tree (and ACE has been ported to your platform, of course) the - netsvcs static and shared object libraries should be built - automatically. In addition, the server driver program - (main) contained in $ACE_ROOT/netsvcs/servers/main.cpp - should also be compiled and ready to run.

    - -

  2. Set your LD_LIBRARY_PATH environment variable to where the binary - version of the ACE netsvcs library. For example, you probably - want to do something like the following

    - -

    
    -      % setenv LD_LIBRARY_PATH $ACE_ROOT/ace:$LD_LIBRARY_PATH
    -      

    - -

  3. By default, if the shared object library is built, the services - are linked into the main driver program dynamically. - To specify which services should be linked in and executed, edit the - $ACE_ROOT/netsvcs/servers/svc.conf - file. During your editing, you should update information (such as the - default service port numbers) that affects the initialization of - services in this file. Refer to the - Service Configurator - documentation to learn how the configuration file is parsed and - how the services are dynamically linked and executed. In - addition, refer to the Network - Services documentation to learn more about how to configure - each network service.

    - -

  4. If you only want to link the services statically, simply remove - or rename the svc.conf file.

    -

- -

Building and Installing ACE Network Services on Win32

- -Once again, there are supplied project for MSVC 5.0 or later for -the Network Services.

- - -


-

What Do I Need to Build for TAO?

-Toshio Hori <toshi@etl.go.jp> provided these suggestions on building -just what's needed for (a subset of) TAO:

- -I usually make: -

-    $ACE_ROOT/ace,
-    $ACE_ROOT/apps/gperf,
-    $TAO_ROOT/tao,
-    $TAO_ROOT/TAO_IDL, and
-    $TAO_ROOT/orbsvcs/orbsvcs
-
-and the whole make takes less than an hour on my Solaris 7 for intel, -Pentium-III/550MHz, 256MB memory, 512MB swap machine. (Top secret: I -renice the 'make' process to the highest priority, -20... ;-) - -To save time and space, I set -
-    TAO_ORBSVCS = Naming Time Trader ImplRepo
-
-in $ACE_ROOT/include/makeinclude/platform_macros.GNU also. See -TAO's orbsvcs -library customization instructions for more information.

- - -


-

System Resource Requirements

-The amount of system resources required to build ACE and TAO varies -greatly. Platform, build options, and components built primarily -influence the required system resources. As a rough guide, the -typical peak memory requirement could be well over 256 Mb (notably, -for TAO's orbsvcs). An entire build of ACE and TAO -can use well over 1300 Mb of disk space. It's usually not necessary -to build all of ACE and TAO, though.

- -Much less disk space is required for just the libraries. For example, -see the ACE -library subset sizes.

- -If you run out of memory when building, you might consider trying -some or all of these suggestions:

-

- - -

-

Advanced Topics

- - - -

Non-static -ACE_Object_Manager

The ACE_Object_Manager can be instantiated -as a static object, can be instantiated on the stack of the main -program thread, or can be explicitly instantiated and destroyed by the -application with ACE::init () and ACE::fini -(). The comments in the header -file, ace/Object_Manager.h provide more detail.

- -NOTE: -Special requirements are imposed on applications if the -ACE_Object_Manager is instantiated, by ACE, on the stack of the main -thread. This behavior is selected by defining -ACE_HAS_NONSTATIC_OBJECT_MANAGER in -ace/config.h. Again, see the ACE Object_Manager header file, -ace/Object_Manager.h for more information. One of -these requirements is discussed here, because it is so important. -Please note that ACE_HAS_NONSTATIC_OBJECT_MANAGER is -defined in the distributed ACE config.h headers for -VxWorks and Win32.

- -The important requirement is that the program must -declare its main function with two arguments, even if -they're not used, and with int return type: - -


-int
-main (int, char *[])
-
- -If you don't declare main exactly that -way, then you'll see a link error about ace_main_i being -undefined.

- -Alternatively, this feature can be disabled by commenting out the -#define ACE_HAS_NONSTATIC_OBJECT_MANAGER in the -ace/config.h. But, that will make repeated testing more -difficult on VxWorks. And, you'd either have to call static -constructors and destructors manually or unload/load the program -between runs. On Win32, disabling the feature can possibly lead to -shutdown difficulties.

- -WARNING: -ACE_HAS_NONSTATIC_OBJECT_MANAGER assumes that your -main function is named main. Any violation -of this assumption is at your peril. If you really need to call your -entry point something other than main, you'll need to -construct and destroy the ACE_Object_Manager. The best way to do that -is to call ACE::init () and ACE::fini (). -Or, see the #define of main (int, char *[]) -in ace/OS.h to see how ACE does -that for entry points named main.

- -

Cloning the Source Tree

- -On UNIX platforms, I typically like to support multiple platform -builds using the same ACE source tree. This idiom is supported by ACE -using the $(ACE_ROOT)/bin/clone.c program. To build clone, -perform the following steps:

- -

-% cd $ACE_ROOT/bin
-% make
-% mv clone ~/bin
-% rehash
-

- -Then create a ./build subdirectory someplace, e.g., under -$ACE_ROOT, and then invoke the top-level Makefile with the -``clone'' target, e.g.:

- -

-% cd $ACE_ROOT
-% mkdir build-SunOS5
-% cd build-SunOS5
-% make -f ../Makefile clone
-% (cd ace; echo "\#include "ace/config-sunos5.5-g++.h" > config.h)
-% (cd include/makeincludes; ln -s platform_sunos5-g++.h platform_macros.GNU)
-% setenv ACE_ROOT $cwd
-% make
-

- -This will establish a complete tree of links. Note that you must -build a config.h and platform_macros.GNU in cloned directory. In -addition, make sure you set your LD_LIBRARY_PATH to -$ACE_ROOT/ace:$LD_LIBRARY_PATH on SVR4 UNIX platforms.

- -When you do a make in the $ACE_ROOT directory you will be producing -object code that is not stored in the same place as the original -source tree. This way, you can easily build another platform in a -parallel tree structure.

- - VERY IMPORTANT!

- -If you use the ``clone trick'' discussed above, make sure that the -symbolic links are correctly in place before starting the build. In -particular, if you plan to clone the tree, it is preferable to do so -before you start a build procedure on the original tree. This is -because the build procedure create object directories (.obj and -.shobj) and the cloning procedure will clone these directories also. -You would end up with links pointing to object files of another -platform. If you clone the tree after you've done a build on the -original tree, make sure to remove all ".obj", ".shobj" and (any other -files or directories) in all subdirectories before starting the build -on your cloned tree.

- -Alternatively, the perl script -ACE_wrappers/bin/create_ace_build can be used to create -build trees. It creates them below ACE_wrappers/build. -It filters out all but the necessary files, so the warning above does -not apply. See the comments at the top of the script itself for usage -information. - - -


-

Building CORBA Versions of ACE

- -Note that if you are compiling with IONA's Orbix implementation of -CORBA or Visigenix's implementation of CORBA, you'll also need to set -ORBIX_ROOT to point to the root of the Orbix source tree and -ORBELINE_ROOT to point to the root of the ORBeline source tree. Since -many platforms don't have these CORBA tools the default for ACE does -*not* incorporate them. Thus, if you are compiling with Orbix or -ORBeline, make sure that you set up -$ACE_ROOT/include/makeinclude/platform_macros.GNU and -$ACE_ROOT/ace/config.h to use the config* and platform* -files that have "-orbix" in them! - - -


-

Additional Build Tips for MVS

- -For all intents and purpose, MVS OpenEdition (OE) is another flavor of -UNIX, therefore, the instructions under Building -and Installing ACE on Unix can be used along with the following -additional tips:

- -You can get a copy of GNU make that has been ported to MVS OpenEdition from -the IBM OpenEdition web site. -ACE's make scheme generates compile commands that have options and -operands interspersed. By default, the c89/cc/c++ compiler expects all options to -precede all operands. To get around this, you must set a special -compiler environment variable (_CXX_CCMODE) to 1 which tells the compiler -to allow options and operands to be interspersed.

- -Note that the environment variable LD_LIBRARY_PATH is called LIBPATH -on MVS.

- -Shared objects are built a little different on MVS than on -other UNIX implementations. This has been accounted for in the makefiles -that come with ACE When the linker (via the cxx command) builds the -libACE.so file it will also create a file called libACE.x. This is a -side-deck file and it must be included in subsequent link edits with -application code. For more information on this see the C/C++ MVS -Programming Guide. If you want to build your application statically, -i.e., using libACE.a instead of libACE.so, you can set ACELIB to -ACELIB_STATIC in platform_mvs.GNU.

- -When the libACE.so file is built (via the MVS pre-linker and binder), you -will get a rc=4 from the pre-linker. This is ok. This is due to some -warnings about unresolved references which should get resolved during the -link step. Note, however, there shouldn't be any unresolved references -from the binder (linkage editor). You can get pre-link and link maps by -uncommenting the PMAP and LMAP lines in the platform_mvs.GNU file.

- - -


-

Makefile Flags

- -GNU make provides many options to customize its operation. See its -documentation for more information. One example is that for multi-cpu -UNIX machines you will be able to build faster if you use:

- -


-% make -j n
-

- -which allows parallel compilation. The number n should -typically be the number of CPUs. It is likely that builds will be -faster even on single-CPU UNIX machines with make -j -2.

- -ACE further supports the following flags. They can be enabled either -on the command line, e.g., "make purify=1", or added to your -platform_macros.GNU. To disable the option, set the flag to null, -e.g., "make debug=". Some flags support setting to 0 disable, e.g., -"make debug=0". debug=1 is enabled in the platform files that are -released with ACE.

- -Please note that the effects of a flag may be platform specific. -Also, combinations of certain flags may or may not be allowed on -specific platforms, e.g., debug=1 opt=1 is supported by g++ but -not all other C++ compilers.

- -If you use Purify or Quantify: purify or quantify must -be on your PATH. By default, ACE puts the Purify/Quantify -caches below /tmp. To override that, set the -PURE_CACHE_BASE_DIR variable, either in your environment -or on the make make command line, to the destination -directory for your instrumented libraries.

- -

-Flag             Description
-----             -----------
-debug            Enable debugging; see DCFLAGS and DCCFLAGS.
-exceptions       Enable exception handling (not supported by all platforms).
-fast             Enable -fast option, e.g., with Sun C++.
-inline           Enable ACE inlining.  Some platforms enable inlining by
-default, others do not.
-optimize         Enable optimization; see OCFLAGS and OCCFLAGS.
-orbix            Enable use of Orbix.
-probe            Enable ACE_Timeprobes.
-profile          Enable profiling; see PCFLAGS and PCCFLAGS.
-purify           Purify all executables.
-quantify         Quantify all executables.
-repo             Use GNU template repository (g++ with repo patches and
-                   egcs only).
-rtti             Enable run-time type identification.  On some platforms,
-                   it is enabled by default, so this is ignored.
-shared_libs      Build shared libraries. Ignored if static_libs_only is set.
-static_libs      Build shared libraries. Ignored if shared_libs_only is set.
-shared_libs_only Only build shared libraries.  Ignored if no SHLIBs are
-specified by the Makefile, as in performance-tests/Misc.
-static_libs_only Only build static libraries.
-threads          Build with thread support.
-xt_reactor       Build the XtReactor.
-
-Usually, users do not need to be concerned with make targets.
-Just enter ``make'' on the command line to build.  A few notable
-targets are listed below.
-
-Target             Description
-------             -----------
-show_statics       Lists all static objects in object files built for
-current directory.  Only supported for g++.
-show_uninit        Lists all uninitialized in object files built for
-current directory.  Only supported for g++.
-
-
-

- -Back to the ACE -home page. - - - - diff --git a/ACE-configuration.txt b/ACE-configuration.txt deleted file mode 100644 index 2ed4d444959..00000000000 --- a/ACE-configuration.txt +++ /dev/null @@ -1,148 +0,0 @@ ----------------------------------------------------------------- -Configuring ACE Using the `configure' Script ----------------------------------------------------------------- - -To help speed development, the work being done by the ACE Configuration Project -is being slowly introduced into the official ACE distribution. Some of the -functionality in the work created by the ACE Configuration Project has been -removed so that ACE may be built in the usual fashion. Once the ACE -Configuration Project work stabilizes on more platforms that removed -functionality may be added to ACE. - -Currently the configure script contains most of the tests that are necessary to -properly configure ACE on most platforms. However, there are still some -autoconf tests that are missing. As such, you may encounter and most likely -will have compilation problems. Please report any problems to the contacts -listed at the end of this document. - -The `configure' script that is currently being used has been modified from the -ACE Configuration Project's `configure' script to prevent makefiles from -being automatically generated since there are still some issues that must be -addressed before automatically generated makefiles are incorporated into the -official ACE distribution. - -A listing of available configure script options can be shown by entering - - ./configure --help - -at the command line. The output should look something like the following: - -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] -Configuration: - --cache-file=FILE cache test results in FILE - --help print this message - --no-create do not create output files - --quiet, --silent do not print `checking...' messages - --version print the version of autoconf that created configure -Directory and file names: - --prefix=PREFIX install architecture-independent files in PREFIX - [/usr/local] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [same as prefix] - --bindir=DIR user executables in DIR [EPREFIX/bin] - --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] - --libexecdir=DIR program executables in DIR [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data in DIR - [PREFIX/share] - --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data in DIR - [PREFIX/com] - --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] - --libdir=DIR object code libraries in DIR [EPREFIX/lib] - --includedir=DIR C header files in DIR [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] - --infodir=DIR info documentation in DIR [PREFIX/info] - --mandir=DIR man documentation in DIR [PREFIX/man] - --srcdir=DIR find the sources in DIR [configure dir or ..] - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM - run sed PROGRAM on installed program names -Host type: - --build=BUILD configure for building on BUILD [BUILD=HOST] - --host=HOST configure for HOST [guessed] - --target=TARGET configure for TARGET [TARGET=HOST] -Features and packages: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR ---enable and --with options recognized: - --enable-static[=PKGS] build static libraries [default=no] - --enable-shared[=PKGS] build shared libraries [default=yes] - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --disable-libtool-lock force libtool not to do file locking - --enable-debug enable debugging [default=yes] - --enable-exceptions enable C++ exception handling [default=yes] - --enable-fast enable -fast flag, e.g. Sun C++ [default=no] - --enable-inline enable code inlining [default=yes] - --enable-log-msg-prop enable threads inheriting - ACE_Log_Msg properties from parent - thread [default=yes] - --enable-logging enable ACE logging macros [default=yes] - --enable-malloc-stats enable malloc statistics - collection [default=no] - --enable-optimize enable additional optimizations [default=yes] - --enable-probe enable ACE_Timeprobes [default=no] - --enable-profile enable profiling [default=no] - --enable-purify Purify all executables [default=no] - --enable-quantify Quantify all executables [default=no] - --enable-reentrant enable reentrant functions [default=yes] - --enable-repo use GNU template repository - GNU C++ with repo patches and - EGCS only [default=no] - --enable-rtti enable run-time type - identification - *Currently only for Sun C++ [default=no] - --enable-static-obj-mgr enable static Object_Manager [default=yes] - --enable-threads enable thread support [default=yes] - --enable-verb-not-sup enable verbose ENOTSUP reports [default=no] - --enable-trace enable ACE tracing [default=no] - --enable-xt-reactor build support for the XtReactor [default=no] - --with-x use the X Window System - --with-gperf compile the gperf program [default=yes] - --with-orbix[=DIR] compile ACE with Orbix [default=no] - --with-tli-device[=DEV] device for TCP on TLI [default=/dev/tcp] - -To enable debugging and disable code inlining, for example, just enter the -following on the command line: - - ./configure --enable-debug --disable-inline - -This will generate a configuration header file `ace/config.h' to be used when -compiling ACE that will enable ACE debugging macros and disable code inlining -during compilation of ACE. - -Once the `ace/config.h' header has been created you will have to select a -platform macros file. Please read the ACE installation documents for more -information about this. - ----------------------------------------------------------------- -Caveats ----------------------------------------------------------------- -Much of the power of the `configure' script will not be useful until the -automatically generated makefiles are enabled in ACE. Configuration options -such as "--prefix" will not be useful for this reason. - -The `configure' script will check for libraries that contain certain functions. -If it finds a library that isn't listed in your platform_macros.GNU file you -will have to add that library to the list of libraries to link against. - ----------------------------------------------------------------- -Contacts ----------------------------------------------------------------- -If you do have problems please e-mail the ACE Configuration Project maintainer -at: - - Ossama Othman - -or send mail to the ACE mailing list. - -For more information take at a look at the ACE Configuration Project web page -at: - - http://www.cs.wustl.edu/~othman/aceconf - diff --git a/ACE-install.sh b/ACE-install.sh deleted file mode 100644 index 76c1e8064f7..00000000000 --- a/ACE-install.sh +++ /dev/null @@ -1,356 +0,0 @@ -#!/bin/sh -########################## Begin Install Script ########################## -# -# NAME: ACE-install.sh -# -# PURPOSE: Bourne shell script to install ACE for UNIX platforms -# -# AUTHOR: Ajit Sagar -# -# HISTORY: 5/20/96 Ajit Sagar Created -# x/xx/xx xxxxxxxxxxxxxx Modified -# x/xx/xx xxxxxxxxxxxxxx Modified -# -# DESCRIPTION: This script installs the ACE toolkit for a Unix system. -# Before using this script, you must do the following: -# -# NOTES: 1) Download the gzipped version of ACE from -# http://www.cs.wustl.edu/~schmidt/ (Select "Obtaining ACE") -# OR -# ftp from wuarchive.wustl.edu in the /languages/c++/ACE directory -# -# The local directory to which this will be downloaded is -# refered to as the "MY_ACEDIR" in this script. -# -# 2) Make sure there is only one file that matches "ACE*tar*". -# This should be the one you just downloaded. -# remove older versions of tar files downloaded earlier. -# -# 3) At the end of this script, you should have: -# -# a) A compiled toolkit in the $ACE_ROOT directory -# b) If you selected to save the existing installation, -# a file oldACE.tar.gz will be created in MY_ACEDIR -# c) The gzipped ACE source file that was initially downloaded. -# -# 4) This script may be executed without user interaction -# by using the "auto" option (see USAGE section below). -# It is advisable to execute it without the "auto" option the -# first time to make sure everything works. -# -# THE FOLLOWING NEED TO BE DONE ONLY THE FIRST TIME THIS -# SCRIPT IS RUN: -# -# 5) Read the README file in -# http://www.cs.wustl.edu/~schmidt/ACE.html directory -# -# 6) Define an environment variable ACE_ROOT the -# defines which directory your ACE toolkit is to be -# installed in. -# -# DO NOT MAKE "ACE_ROOT" THE SAME AS "MY_ACEDIR". -# -# 7) Redefine "MY_ACEDIR" in this script to default -# to the directory in which you have downloaded the ACE source. -# -# 8) This script has been tested on Solaris 2.x for the -# Sun C++4.0 compiler. To use this on some other UNIX -# platform, uncomment and redefine the following -# in this script: -# -# MY_ACE_CONFIG -# MY_ACE_GNU_MACROS -# -# Check the README file to define these variables. If -# these are not defined, the script will prompt you -# help you to change these variables. But in that case -# you cannot run with the "auto" option. -# -# -# USAGE: myacemaker [ auto ] -# -# auto automatic make (no user interaction) -# -# Under this option, the source will be -# extracted and compiled without any user interaction, -# i.e., you can kick off this script, go home, -# and check it in the morning. The following -# assumptions are made: -# -# 1) MY_ACE_DIR is properly defined in this script. -# 2) MY_ACE_CONFIG is properlly defined -# in this script. -# 3) MY_ACE_GNU_MACROS is properly defined in this -# script. -# 4) A backup of existing installation -# is to be made. -# -# COPYRIGHT INFORMATION: -# -# You are free to do anything you like with this script such as -# including it in commercial software. You may modify it and freely redistribute -# it. The author accepts no responsibility for any bugs or problems that -# arise as a consequence of using this code. -# -# -- Ajit Sagar -# -######################################################################### -# -ACE_ERRFILE=/tmp/myacemaker.err -OLD_ACE_TAR_FILE=oldACE.tar -OLD_ACE_GZIPPED_TAR_FILE=oldACE.tar.gz -USAGE=" : myacemaker [ auto ]" -# -############################################################## -# -# Platform-specific definitions -# -############################################################## - -# Directory where ACE-x.x.xx.tar.gz is located - -MY_ACEDIR=${HOME}/aceconfig - -####################################################### -# Platform specific config file in ${ACE_ROOT}/ace/ -# Uncomment and redefine this -####################################################### - -# MY_ACE_CONFIG=config-sunos5.4-sunc++-4.x.h - -####################################################### -# Platform specific GNU macros file in -# ${ACE_ROOT}/include/makeinclude/ -# Uncomment and redefine this -####################################################### - -# MY_ACE_GNU_MACROS=platform_sunos5_sunc++.GNU - - -############################################################## -# -# Main Script For Installing ACE -# -############################################################## - -AUTO="$#" - -ACE_ROOT=${ACE_ROOT:?"ERROR: Environment variable ACE_ROOT not set"} -if [ ${AUTO} -gt 1 ] -then - echo "$USAGE" - exit 1 -fi - -if [ ${AUTO} -eq 1 ] -then - if [ $1 != "auto" ] - then - if [ $1 = "nounzip" ] ; then - UNZIP=0 - AUTO=0 - else - echo "$USAGE" - exit 2 - fi - fi -fi - -echo "" -echo "ACE source in `ls ${MY_ACEDIR}/ACE*tar.gz`" -echo "ACE will be installed in ${ACE_ROOT}" -echo "" - -if [ $AUTO -eq 0 ] -then - echo "OK to continue? [Y/N] : \c" - read choice -else - choice='Y' -fi - -if [ ${choice} != 'Y' -a ${choice} != 'y' ] -then - echo "" - echo "ACE installation aborted" - echo "" - exit 11 -fi - -cd ${MY_ACEDIR} - -echo "Uncomressing ACE archive and extracting ACE files" -echo "into `pwd`/ACE_wrappers directory ..." -echo "" - -gunzip -c ACE*tar.gz | tar xvf - || \ -{ - echo "" - echo "gunzip or tar failed. Aborting script !!" - echo "" - exit 33 -} - -if [ -d ${ACE_ROOT} ] -then - - if [ $AUTO -eq 0 ] - then - echo "Save a copy of existing ACE installation? [Y/N] : \c" - read choice - echo "" - else - choice='Y' - fi - - if [ ${choice} = 'Y' -o ${choice} = 'y' ] - then - - echo "Archiving ${ACE_ROOT} to `pwd`/${OLD_ACE_TAR_FILE} using ..." - tar cvpf ${OLD_ACE_TAR_FILE} ${ACE_ROOT} - echo "" - - if [ -f ${OLD_ACE_GZIPPED_TAR_FILE} ] - then - echo "Removing ${OLD_ACE_GZIPPED_TAR_FILE} ..." - rm ${OLD_ACE_GZIPPED_TAR_FILE} - echo "" - fi - - echo "Compressing ${OLD_ACE_TAR_FILE} using ..." - gzip -9 ${OLD_ACE_TAR_FILE} - echo "" - - fi - - echo "Removing ${ACE_ROOT} ..." - rm -r ${ACE_ROOT} - echo "" -fi - -echo "Moving `pwd`/ACE_wrappers to ${ACE_ROOT} ..." -mv ./ACE_wrappers ${ACE_ROOT} -echo "" - -cd ${ACE_ROOT}/ace - -if [ ${MY_ACE_CONFIG:-undefined} = undefined ] -then - - if [ $AUTO -eq 1 ] - then - if [ ! -f ${MY_ACE_CONFIG} ] - then - echo "" - echo "${MY_ACE_CONFIG} does not exist. Aborting script ..." - echo "" - exit 44 - fi - fi - - echo "Select one of the following files for linking to config.h" - echo "" - echo "`ls config*h`" - echo "" - - echo "Type the filename for your compiler: \c" - read MY_ACE_CONFIG - echo "" - - if [ ! -f ${MY_ACE_CONFIG} ] - then - echo "" - echo "${MY_ACE_CONFIG} does not exist. Aborting script ..." - echo "" - exit 55 - fi - -fi - - -echo "Creating link config.h for ${MY_ACE_CONFIG} in directory `pwd` ..." - -rm ./config.h -ln -s ${MY_ACE_CONFIG} config.h - -echo "" - -cd ${ACE_ROOT}/include/makeinclude - -if [ ${MY_ACE_GNU_MACROS:-undefined} = undefined ] -then - - if [ $AUTO -eq 1 ] - then - if [ ! -f ${MY_ACE_GNU_MACROS} ] - then - echo "" - echo "${MY_ACE_GNU_MACROS} does not exist. Aborting script ..." - echo "" - exit 66 - fi - fi - - echo "Select one of the following files for linking to config.h" - echo "" - echo "`ls platform*GNU`" - echo "" - echo "Type the filename for your compiler: \c" - - read MY_ACE_GNU_MACROS - echo "" - - if [ ! -f ${MY_ACE_GNU_MACROS} ] - then - echo "" - echo "${MY_ACE_GNU_MACROS} does not exist. Aborting script ..." - echo "" - exit 77 - fi - -fi - -echo "Creating link platform_macros.GNU for ${MY_ACE_GNU_MACROS}" -echo "in directory `pwd` ..." - -rm ./platform_macros.GNU -ln -s ${MY_ACE_GNU_MACROS} platform_macros.GNU - -echo "" - -if [ ${AUTO} -eq 0 ] -then - echo "Make ACE now with default setup? [Y/N] : \c" - read choice - echo "" -else - choice='Y' -fi - -if [ ${choice} != 'Y' -a ${choice} != 'y' ] -then - echo "" - echo "ACE make skipped. You can use to make ACE later" - echo "" - exit 0 -fi - -echo "" -echo "Making ACE now. Examine file ${ACE_ERRFILE} for errors ..." -echo "" - -cd ${ACE_ROOT} - -echo "" -echo "Executing ..." -echo "" -gmake | tee ${ACE_ERRFILE} 2>&1 - -echo "" -echo "Examine file ${ACE_ERRFILE} for possible errors ..." -echo "" -echo "********** End of myacemaker script !!! ***********" -echo "" - -# -######################################################################### diff --git a/ACE.DSW b/ACE.DSW deleted file mode 100644 index bfdfb40ff40..00000000000 --- a/ACE.DSW +++ /dev/null @@ -1,1217 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "Atomic_Op_Test"=.\tests\Atomic_Op_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Barrier_Test"=.\tests\Barrier_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Buffer_Stream_Test"=.\tests\Buffer_Stream_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "CPP_inclient"=.\examples\IPC_SAP\SOCK_SAP\CPP_inclient.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "CPP_inserver"=.\examples\IPC_SAP\SOCK_SAP\CPP_inserver.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "C_inclient"=.\examples\IPC_SAP\SOCK_SAP\SOCK_SAP.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "C_inserver"=.\examples\IPC_SAP\SOCK_SAP\C_inserver.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Conn_Test"=.\tests\Conn_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Enum_Interfaces_Test"=.\tests\Enum_Interfaces_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Event_Server"=.\examples\ASX\Event_Server\Event_Server\Event_Server.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Exceptions"=.\examples\Reactor\ReactorEx\Exceptions.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Future_Test"=.\tests\Future_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Handle_Set_Test"=.\tests\Handle_Set_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Hash_Map_Manager_Test"=.\tests\Hash_Map_Manager_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "IOStream_Test"=.\tests\IOStream_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Log_Msg"=.\examples\Log_Msg\Log_Msg.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "MM_Shared_Memory_Test"=.\tests\MM_Shared_Memory_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Map_Manager_Test"=.\tests\Map_Manager_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Mem_Map_Test"=.\tests\Mem_Map_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Message_Block_Test"=.\tests\Message_Block_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Message_Queue_Notifications_Test"=.\tests\Message_Queue_Notifications_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Message_Queue_Test"=.\tests\Message_Queue_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Multithreading"=.\examples\Reactor\ReactorEx\Multithreading.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Mutex_Test"=.\tests\Mutex_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Naming_Test"=.\tests\Naming_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Network_Events"=.\examples\Reactor\ReactorEx\Network_Events.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Pipe_Test"=.\tests\Pipe_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Priority_Buffer_Test"=.\tests\Priority_Buffer_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Priority_Task_Test"=.\tests\Priority_Task_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Process"=.\examples\OS\Process\Process.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Process_Mutex_Test"=.\tests\Process_Mutex_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Process_Strategy_Test"=.\tests\Process_Strategy_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Reactor_Exceptions_Test"=.\tests\Reactor_Exceptions_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Reactor_Notify_Test"=.\tests\Reactor_Notify_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Reactor_Timer_Test"=.\tests\Reactor_Timer_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Reactors_Test"=.\tests\Reactors_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Reader_Writer_Test"=.\tests\Reader_Writer_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Recursive_Mutex_Test"=.\tests\Recursive_Mutex_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Registration"=.\examples\Reactor\ReactorEx\Registration.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Removals"=.\examples\Reactor\ReactorEx\Removals.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "SOCK_Test"=.\tests\SOCK_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "SPIPE_Test"=.\tests\SPIPE_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "SString_Test"=.\tests\SString_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "SV_Shared_Memory_Test"=.\tests\SV_Shared_Memory_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Semaphore_Test"=.\tests\Semaphore_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Service_Config_Test"=.\tests\Service_Config_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Sigset_Ops_Test"=.\tests\Sigset_Ops_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Simple_Message_Block_Test"=.\tests\Simple_Message_Block_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "TSS_Test"=.\tests\TSS_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Talker"=.\examples\Reactor\ReactorEx\Talker.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Task_Test"=.\tests\Task_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Thread_Manager_Test"=.\tests\Thread_Manager_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Thread_Pool_Test"=.\tests\Thread_Pool_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Time_Service_Test"=.\tests\Time_Service_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Time_Value_Test"=.\tests\Time_Value_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Timeouts"=.\examples\Reactor\ReactorEx\Timeouts.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Timer_Queue_Test"=.\tests\Timer_Queue_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Tokens_Test"=.\tests\Tokens_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "Transceiver"=.\examples\ASX\Event_Server\Transceiver\transceiver.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "UPIPE_Event_Server"=.\examples\ASX\UPIPE_Event_Server\UPIPE_Event_Server.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "UPIPE_SAP_Test"=.\tests\UPIPE_SAP_Test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "acceptor"=.\examples\Connection\blocking\acceptor.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "auto_event"=.\examples\Threads\test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "barrier1"=.\examples\Threads\barrier1.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "barrier2"=.\examples\Threads\barrier2.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "cancel"=.\examples\Threads\cancel.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "client"=.\examples\Connection\non_blocking\non_blocking.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "connector"=.\examples\Connection\blocking\SPIPE.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "future1"=.\examples\Threads\future1.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "future2"=.\examples\Threads\future2.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "iterator"=.\examples\Registry\Registry.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "manual_event"=.\examples\Threads\manual_event.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "multiple_contexts"=.\examples\Naming\multiple_contexts.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "netsvcs"=.\netsvcs\lib\netsvcs.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "non_existent"=.\examples\Naming\non_existent.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "notification"=.\examples\Reactor\Misc\notification.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "ntalker"=.\examples\Reactor\Ntalker\ntalker.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "process_mutex"=.\examples\Threads\process_mutex.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "process_semaphore"=.\examples\Threads\process_semaphore.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "reader_writer"=.\examples\Threads\reader_writer.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "recursive_mutex"=.\examples\Threads\recursive_mutex.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "server"=.\examples\Connection\non_blocking\server.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "server_loggerd"=".\examples\Logger\Acceptor-server\server_loggerd.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "servers"=.\netsvcs\servers\servers.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "task_four"=.\examples\Threads\task_four.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "task_one"=.\examples\Threads\task_one.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "task_three"=.\examples\Threads\task_three.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "task_two"=.\examples\Threads\task_two.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "test_multiple_loops"=.\examples\Reactor\Proactor\test_multiple_loops.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "test_proactor"=.\examples\Reactor\Proactor\test_proactor.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "test_timeout"=.\examples\Reactor\Proactor\test_timeout.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "thread_manager"=.\examples\Threads\thread_manager.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "thread_pool"=.\examples\Threads\thread_pool.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "thread_specific"=.\examples\Threads\thread_specific.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "timer_queue"=.\examples\Reactor\Misc\Misc.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "token"=.\examples\Threads\token.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "tss1"=.\examples\Threads\tss1.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "tss2"=.\examples\Threads\tss2.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "update"=.\examples\Registry\update.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "writers"=.\examples\Naming\Naming.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/ASNMP/COPYRIGHT b/ASNMP/COPYRIGHT deleted file mode 100644 index ad880b9cf90..00000000000 --- a/ASNMP/COPYRIGHT +++ /dev/null @@ -1,68 +0,0 @@ -Mon Jul 14 12:12:32 PDT 1997 - -These copyrights apply to the SNMP++ module shipped with the ACE library: - - -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. - -=====================================================================*/ - -/********************************************************************** - Copyright 1988, 1989, 1991, 1992 by Carnegie Mellon University - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of CMU not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -CMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. -******************************************************************/ - -Certain portions of this version of HP's SNMP++ are: - -/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -Copyright 1997 Cisco Systems, Inc. - -Permission to use, copy, modify, and distribute this software for any -purpose and without fee is hereby granted, provided that this -copyright and permission notice appear on all copies of the software and -supporting documentation, the name of Cisco Systems, Inc. not be used -in advertising or publicity pertaining to distribution of the -program without specific prior permission, and notice be given -in supporting documentation that modification, copying and distribution is by -permission of Cisco Systems, Inc. - -Cisco Systems, Inc. makes no representations about the suitability of this -software for any purpose. THIS SOFTWARE IS PROVIDED ``AS IS'' -AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT -LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGMENT AND -FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL CISCO SYSTEMS, INC. BE -LIABLE FOR ANY DAMAGES ARISING OUT OF THIS LICENSE OR YOUR USE OF THE -SOFTWARE INCLUDING WITHOUT LIMITATION, DIRECT, INDIRECT OR CONSEQUENTIAL -DAMAGES. --=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/ - diff --git a/ASNMP/ChangeLog b/ASNMP/ChangeLog deleted file mode 100644 index 61c2fe5c2dc..00000000000 --- a/ASNMP/ChangeLog +++ /dev/null @@ -1,336 +0,0 @@ -Wed Jul 14 08:26:42 1999 Brian Raven - - * asnmp/snmp.{h,cpp},wpdu.cpp: - SYNOPSIS: - 1) The agent IP address in traps originating from logical - domains on an Enterprise 10000 is that of the physical domain. - - 2) The code that gets the IP address uses gethostbyname - which is unsafe in a MT environment (according to the man page). - - DESCRIPTION: - 1) The problem seems to be caused by hostname only returning - the physical domain name. - - SAMPLE FIX/WORKAROUND: - 1) To get around this problem I added the capability to - override the local host name. - - 2) I would suggest using the GenAddress class to obtain the - IP address. - -Tue Jun 22 13:34:54 1999 David L. Levine - - * agent/Makefile: replaced rm -f with $(RM). - -Thu Apr 29 06:46:46 1999 David L. Levine - - * tests/Makefile: changed SRC to PSRC (for make depend). - Thanks to Sandeep Goyal for reporting - that the Makefile was broken. - -Mon Dec 28 22:03:57 1998 David L. Levine - - * agent/main.cpp: added #include "ace/inc_user_config.h", for - ACE_RCSID definition. Thanks to wym for - reporting that it won't compile without it. - -Tue Oct 27 08:52:05 1998 David L. Levine - - * asnmp/Makefile,tests/Makefile: added SRC definition for make depend, and updated dependencies. - -Mon Aug 3 17:50:08 1998 Gonzalo Diethelm - - * examples/get/get_async.cpp: - * examples/get/get.cpp: - Added ACE_RCSID to these files. - -Fri Jul 31 19:26:07 1998 Gonzalo Diethelm - - * examples/Makefile: - It had a missing info subdirectory. - - * agent/agent_impl.cpp: - * agent/main.cpp: - * agent/snmp_agent.cpp: - * asnmp/address.cpp: - * asnmp/asn1.cpp: - * asnmp/counter.cpp: - * asnmp/ctr64.cpp: - * asnmp/gauge.cpp: - * asnmp/integer.cpp: - * asnmp/octet.cpp: - * asnmp/oid.cpp: - * asnmp/pdu.cpp: - * asnmp/sagent.cpp: - * asnmp/snmp.cpp: - * asnmp/target.cpp: - * asnmp/timetick.cpp: - * asnmp/transaction.cpp: - * asnmp/vb.cpp: - * asnmp/wpdu.cpp: - * examples/get/get.cpp: - * examples/next/next.cpp: - * examples/set/set.cpp: - * examples/trap/trap.cpp: - * examples/walk/walk.cpp: - * tests/Address_Test.cpp: - * tests/Counter64_Test.cpp: - * tests/Counter_Test.cpp: - * tests/Gauge_Test.cpp: - * tests/Integer_Test.cpp: - * tests/Octet_Test.cpp: - * tests/Oid_Test.cpp: - * tests/Target_Test.cpp: - * tests/Varbind_Test.cpp: - Added ACE_RCSID to these files. - -Wed Jul 15 20:34:55 CDT 1998 - * general fixes for SNMPv1 trap generation code reported by - Hien Nguyen and Jeff Hall - Added Hien's fixes, plus fixed -c option - in examples/trap to properly set community string. - * release 2.0 - -Fri Jan 30 15:29:42 CST 1998 - * fix vb.cpp to handle Gauge/uInt the same way. While retrieving - ifTable found the bug. - -Wed Dec 10 12:09:36 CST 1997 - * sagent.cpp, Eric Newton fix. result not checked. v1.8 - -Mon Dec 8 14:33:59 CST 1997 - * Thanks to Eric Newton's continued patches - Version 1.7 has fixes for: agent, base library - Fix to the response type fixes the interoperability with CMU snmp on - linux. (and SNMP Research as well) - - Initialize member of Pdu: output_ - Send responses as response messages - Deallocate and reset the io_vec - - The transaction object didn't initialize the io_vec used to receive - a packet when it was used for an agent transaction. - - Cleans up a warning about using a const object from a previous - patch. - - Removes the transaction object from the Reactor. - - -Sun Nov 30 17:49:12 CST 1997 Mike MacFaden - * Thanks to Eric Newton's apply patches: - Removed G++ warnings: - Removed unused variables - Cleaned up unused args to functions - Initialized variables - Inserted casts in *printf* functions - Added int return types to function definitions - Converted some variables from int to size_t to cut down on - sign comparison warnings - Reordered constructor initializer lists - Added return statements to functions returning int - - Modified for G++ language differences: - Modified for loops for ANSI scoping rules - - Fixed Bugs: - Deleted incorrect (cut-n-pasted) header to transaction.h - Removed "assignment in if condition" error - Added missing "break;" in switch statement in wpdu - - Features: - Added async interface. - - Noise: - Modified makefiles for g++ on Linux RedHat 4.1 - - * The new async interface has a test example in examples/get/get_async.cpp - that is useful if you are extending the get application. - - * Fixed makefile to include -lasnmp when building tests/examples - - * Compile and test with ACE 4.4 on Solaris 2.5.1 using Sun CC 4.2 - no warnings/errors. get_async will sigbus however in destructors. - -Thu Sep 4 18:56:12 1997 Mike MacFaden - - * commit agent/ mibs/ and update asnmp/ with sagent.h, cpp - to implement a trivial SNMPv1 agent that hard codes support - for mib II system group only. - -Fri Aug 22 23:43:20 1997 Mike MacFaden - - * clean up two memory leaks in octet class and one umr - -Thu Aug 21 20:59:23 1997 Mike MacFaden - - * Added Netbios address support to GenAddress - and added DecNetAddress, AppleTalkAddress classes per CISCO-TC.my - (ftp://ftp.cisco.com/pub/mibs) - -Tue Aug 19 20:19:32 1997 Michael R. MacFaden - * change IpAddress::is_arpa() to is_private() and update the comments - per RFC 1597. Add new test routine to verify this function in - tests/Address_Test.cpp - - * add IpAddress::to_octet(OctetStr& val) which is useful when having to - send a network address as an Octet String as in CISCO-PING-MIB.my - -Tue Aug 5 12:12:39 1997 Mike MacFaden (mrm@mrm-ss20) - * Thanks to Amos Shapira apply patches - to support IRIX 6.3. Stated request for: - I think it would make things "righter" to make the code use C++ - strings (and maybe vectors?). - - * Begin testing on HP-UX 10.01 (missing ucontext.h) - -Sat Aug 2 12:07:43 1997 Douglas C. Schmidt - - * Started to integrate the code into a more ACE-like style, e.g., - added a the "asnmp/" prefix to all the header files so that we - don't need to play games with the -I flags and so we can always - know where we're getting the headers from. - -Fri Aug 1 19:23:52 1997 Mike MacFaden (mrm@mrm-ss20) - - * NOTES: This first version only tested on Solaris 2.5 - - * review classes for thread safety. Current thread design only - allows for one thread to safely access any ASNMP object created. - - * run purify test of get routine no -memory leaks. - - * verify both shared archive/static archive types work with - example programs - - * << Globals Changes >> - - * tested only archiver library version - - * reformat code to use one brace style. - - * changed all manifest constants defined as _XX to XX_ to stay out - of compiler namespace - - * change all OS calls to use ACE_OS:: portability layer, #include - - - * reformat code to use one consistent brace layout and redo - header using ACE - - * remove semicolons on member functions foo{}; - not necessary - - * make get() methods const member functions - - * removed unnecessary casts that looked like this: and revamped - all memory allocations via ACE_NEW macro - - new_oid = (SmiLPUINT32) new unsigned long [ smival.value.oid.len - - To - - ACE_NEW(new_oid, SmiUINT32[ smival.value.oid.len]) - - * Collapsed default constructors with constructors to constructors - with default arguments. - - * removed unused #include - - * Added ACE_TRACE() to classes - - * change get_printable() to to_string() - there will be more java - programmers in the future so this should be the first step... - - * removed ASYNC interface till it can be rebuilt using ACE patterns - - * Attempt to make interface more type strict but leaving generic - interfaces as escape hatch. Example: CTarget becomes UdpTarget - for UDP/IP based agents. - - * << Class Specific Changes >> - - * Oid class: - - remove char * routines, simplify class - - added suboid method and removed get_printable() overloads - - * CTarget class: - - renamed to UdpTarget. Stay out of Microsoft Namespace per MSJ - Article by Allen Hollub. - - * Varbind class: - - remove generic set_value for char,int, etc. Too easy to get - this wrong. Allow just types defined. - - added overload for equality operator (==) - - added new constructor to allow setting full vb state oid,value, exception - - add to_string() - - * Address class: - - change manifest constants to enums for address lengths, add IP V6 lens - - - add a netbios name class, still pretty worthless since I don't have spec - in front of me yet... - - - rewrite resolver calls to be thread safe and cleaner by moving to two - class (static) member functions: - - // thread safe routine to lookup ip address given hostname - // return <> 0 on error - static int resolve_to_addr(const char *hostname, in_addr& quad_addr); - - // thread safe routine to lookup name given ip address - // return <> 0 on error - static int resolve_to_hostname(const in_addr& quad_addr, char *hostname) - - * added some interrogation routines to class IpAddress: - is_loopback() const; - - * Ctr64 class: - - added constructor using long long datatype (needs to be made - portable to NT - - * Pdu class: add to_string() - - * Classes added wpdu class: - - a new adpater class between CMU and HP pdu, varbind data structures - - * transaction class: - - implement get/getnext timeout and retry logic using ACE - Reactor class, ACE_Time_Value - -Sat Jul 5 19:13:30 1997 Mike MacFaden (mrm@mrm-ss20) - - * unpacked snmp++.tar.Z into ACE_wrappers, remove X11 support. If - you need GUI support in a communications package, something's - wrong, very wrong.... - - * Change HP-UX Makefiles to use ACE makefile system - - * Change includes to use ACE OS Adaption Layer - - * change all OS calls to use ACE_OS:: versions - - * Add ACE_TRACE macros to all functions. - - * clean up the global namespace by puting all global functions - into C++ classes as static member functions and make public only - those that are used (uxsnmp.cpp, eventlist.cpp) - - * create README from readme.txt, COPYRIGHT files. - - * create tests/ directory rename ConsoleExamples to examples - - * cull out dead code modules and dump them into misc dir: - oidname.cpp, ipresolv.cpp - - * ipresolv.cpp had broken hostname buffer size (200), when DNS has - aways defined a max FQDN as 256...go figure. - - * add General Error handler since existing ones are not very - useful in and of themselves. - - * change all _DEF to DEF_ since _ANYTHING is reserved for compiler - writer namespace, NOT app writer - - * convert cmu code to use C++ new/delete from malloc/free so - entire library uses C++ new constructor diff --git a/ASNMP/Makefile b/ASNMP/Makefile deleted file mode 100644 index dfcb25362d9..00000000000 --- a/ASNMP/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -#---------------------------------------------------------------------------- -# @(#)Makefile 1.1 10/18/96 -# -# Makefile for the SNMP+ACE examples directory -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -INFO = README - -DIRS = asnmp \ - examples \ - tests -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nolocal.GNU - - -LDLIBS := -L$(ACE_ROOT)/ASNMP/asnmp -lasnmp $(LDLIBS:%=%$(VAR)) - -# DO NOT DELETE THIS LINE -- g++dep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. - - - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/ASNMP/README b/ASNMP/README deleted file mode 100644 index f07563c61a5..00000000000 --- a/ASNMP/README +++ /dev/null @@ -1,177 +0,0 @@ -Fri Dec 18 09:43:35 CST 1998 -==================================================================== -ASNMP = ACE+SNMP++ Version 2.1 -By Michael R. MacFaden mrm@acm.org, mrm@yagosys.com -==================================================================== - -What is ASNMP ? ==> ACE+SNMP! aka Another SNMP API - HP's SNMP++ 2.5 freely available C++ SNMP class library - has been adapted to the ACE 4.2 Framework. - -What is Simple Network Management Protocol(SNMP)? - See the FAQ: - http://www.snmp.com/FAQs/snmp-faq-part1.txt - http://www.snmp.com/FAQs/snmp-faq-part2.txt - - -What was changed from HP version? - See src/ChangeLog file. - -Is HP SNMP++ compatible with ASNMP? - It is neither source nor binary compatible. About 10% of the API has changed. - There have been API changes to make the interface more orthogonal - and to reduce implementation complexity such as consolidating constructors - with default formal values, and to remove some inconsistencies - with the HP interface as well as locking down valid() semantics, etc. - -What platforms have the test programs been verified on? - Solaris 2.4, 2.5.1 using SUN C++ 4.1,4.2 compiler. Linux/GCC - fixes are now in as well. - -Why use this version? - The SNMP++ version ships only for HP-UX and for Windows. - It is not very portable nor does it do a good job at checking - for out of memory exhaustion conditions (asn1.cpp). There is some great - code here. ACE needs an SNMP library to build NM type - communications applications. Hence ASNMP was born in my spare time. - -How does ASNMP differ from SNMP? - Current version uses ACE OS Adaption layer. All memory - allocation is now consistent, uses ACE_NEW(). - Standard ACE Debugging (ACE_TRACE) has been inserted. - ASNMP has less global namespace pollution by moving all non-class - functions into interface classes or made into static locals. - - An agent inteface has been added (asnmp/sagent.h) so both agents - and managers can use this class library. A trivial agent - exists in ASNMP/agent/ - - X11 GUI support removed from this version since this is - not the place to include GUI support in the new world of - multi-threaded apps. - - The async interface does not match the HP implementation. - -How to build this library - Set ACE_ROOT and platform_macros.GNU per ../INSTALL file. - create libasnmp.a, libasnmp.so and then run the tests - -Any Support for ASNMP? - As time permits from the mailing list. - -Where to ask questions? - Please use ace-users@cs.wustl.edu mailing list or mrm@acm.org - -NOTE: Please do not bother Eric Mellquist unless you are using - the original HP version of this library. - -Where can I get the original HP SNMP++? - From ftp://rosegarden.external.hp.com:/pub/snmp++ - -What version of SNMP is fully supported? - SNMP Version 1 (RFC 1155,1157, 1215) - -What about SNMP Version 2c? - V2c is defined in RFC 1901 - 1908 - These bits are added to v1 code in this library: GetBulk PDU, Counter64 - These bits are missing Inform (RFC 1905) - RFC 1903 defined new datatypes using existing SMI via macros. - These should be coded as if they were SMI datatypes to encapsulate - their behavior. V2c hasn't been deployed - -What about SNMP Version 3? - It is looking good for V3, but so far, we're just watching. - http://www.ietf.org/html.charters/snmpv3-charter.html - A C implemenation is now available from UC Davis. - -What copyrights/legal requirements are required when using this code? - See ./COPYRIGHT - -Does this really work? - See tests/ directory for the current test reports (purify/purecov/...). - -How does one Extend an SNMP Agent? - Extending an agent typically means updating the agent source or - using a dynamic link style API. RFC 2257 (AgentX) is the current design - for doing this in a standard way. This hasn't been well formalized yet - so extending an existing agent is still a vendor API thing. - - The agent provided here is a template. A mib compiler and agent - library typically provide better agent support. See the UC-Davis - SNMP software for an example Agent that is portable and can report - on many flavors of UNIX and Windows. - -Any Future Plans? - The ASNMP library will be improved for performance and made to use - higher level design patterns. Hopefully it will be used as a - vehicle for grad students to learn something about network mgmt - code work a related cousin of general distributed programming. - - -Regards, -Michael R. MacFaden -Member of the Technical Staff -Cabletron Systems, Inc. -215 Moffet Park Drive -Sunnyvale, CA 94089 -mrm@yagosys.com -http://www.yagosys.com - -==================================================================== -SNMP++ For UNIX Source Code and Examples: -==================================================================== -Included within this package can be found the source code and -examples for SNMP++. The following represents the directories which -are included within the compressed tar file and their contents. - -For more details on the API , please refer to the API specification. - -This library is a complete implementation of SNMP++ and does not -require other SNMP libraries to be present. - -Required Tools: ---------------------------------------------------------------------- - - -readme.txt ( this file) -| -| -|------ src ( .cpp files and Makefile for building libraries ) -| -|------ examples ( a variety of apps, .cpp and Makefile included ) -| -|------ tests - unit test routines - - -src Directory Contents: --------------------------------------------------------------------- -Makefile - make file for ACE/Solaris 2. build -target.cpp - Collection of attributes(address, timeout, etc) used - to define a command session -snmp.cpp - A logical session between NM app and agent -pdu.cpp - Pdu class source (vb list and API command) -wpdu.cpp - Adapter pattern based class between CMU and HP code -transaction.cpp - synchronous transaction clss -vb.cpp - Variable Binding class source (oid + value) - -<< SMI datatypes used to get/set values in SNMPv1 agents >> - -address.cpp - Address class source -gauge.cpp - Gauge32 class source -integer.cpp - Integer32 class source -counter.cpp - Counter32 class source -ctr64.cpp - Counter64 class source -timetick.cpp - TimeTicks class source -octet.cpp - Octet String class source -oid.cpp - Oid class source -asn1.cpp - ASN1 encoding and decoding code. CMU code. - -examples Directory Contents: ---------------------------------------------------------------------- -Makefile - make file for building console apps -get.cpp - source for SNMP get program -next.cpp - source for SNMP get Next program -set.cpp - source for SNMP set program -trap.cpp - source for SNMP trap send program -walk.cpp - source for SNMP walk program - diff --git a/ASNMP/TO-DO b/ASNMP/TO-DO deleted file mode 100644 index a05b7106f58..00000000000 --- a/ASNMP/TO-DO +++ /dev/null @@ -1,3 +0,0 @@ -TODO: - - Attempt to make all subroutines thread safe - - work on test suite - validate basic stuff doesn't leak diff --git a/ASNMP/agent/Makefile b/ASNMP/agent/Makefile deleted file mode 100644 index 18886acd2a7..00000000000 --- a/ASNMP/agent/Makefile +++ /dev/null @@ -1,28 +0,0 @@ -# Sample SNMPv1 Agent -# Makefile for Solaris 2.x -# $Id$ - -OBJS = main.o snmp_agent.o agent_impl.o -INCL = -I$(ACE_ROOT) -I$(ACE_ROOT)/ASNMP -CC=CC -SOL_FLAGS=-mt -R $(ACE_ROOT)/ASNMP/asnmp:$(ACE_ROOT)/ace -DEBUG = -g $(SOL_FLAGS) -CFLAGS =$(INCL) $(DEBUG) -RUNPATH = -LIBS = -L $(ACE_ROOT)/ASNMP/asnmp -lasnmp -L $(ACE_ROOT)/ace -lACE -ldl - -agent: $(OBJS) - $(CC) -o agent $(DEBUG) $(OBJS) $(LIBS) $(RUNPATH) - - -main.o: main.cpp - $(CC) -c $(CFLAGS) main.cpp - -snmp_agent.o: snmp_agent.cpp snmp_agent.h - $(CC) -c $(CFLAGS) snmp_agent.cpp - -agent_impl.o: agent_impl.cpp agent_impl.h - $(CC) -c $(CFLAGS) agent_impl.cpp - -clean: - -$(RM) *.o agent *~ diff --git a/ASNMP/agent/agent_impl.cpp b/ASNMP/agent/agent_impl.cpp deleted file mode 100644 index 0c3f8da4078..00000000000 --- a/ASNMP/agent/agent_impl.cpp +++ /dev/null @@ -1,157 +0,0 @@ -// $Id$ - -// implement a prototype SNMP Agent using ASNMP and ACE - -#include -#include -#include - -#include "agent_impl.h" - -ACE_RCSID(agent, agent_impl, "$Id$") - -agent_impl::agent_impl(unsigned short port, const char *rd, const char *wr) : -sagent(port) -{ - ACE_TRACE("agent_impl::agent_impl"); - tgt_.set_read_community(rd); - tgt_.set_write_community(wr); - agent_clock_.start(); -} - -agent_impl::~agent_impl() -{ - ACE_TRACE("agent_impl::~agent_impl"); -} - -// callback : have received a Pdu from the target host with given read comm str -// this is really simplistic, but gives the general idea -int agent_impl::handle_get( Pdu &pdu, UdpTarget &target) -{ - ACE_TRACE("agent_impl::handle_get"); - OctetStr mgr_rd_str, agent_rd_str; - target.get_read_community(mgr_rd_str); // requster's read community string - tgt_.get_read_community(agent_rd_str); // this agent's read community string - - // 1. verify we have a valid read string else drop pdu (no response to caller) - if (mgr_rd_str != agent_rd_str) { - ACE_DEBUG((LM_DEBUG, "agent_impl::handle_get: invalid read community recvd\n")); - return 0; - } - - // 2. iterate over each varbind in the pdu, filling providing responses - int fdone = 0; - for (int i = 0; (i < pdu.get_vb_count()) && !fdone; i++) { - Vb vb; - pdu.get_vb(vb, i); - if (get_response(vb)) { // set a value for the oid if we can else - set_error_status(&pdu, SNMP_ERROR_NO_SUCH_NAME); // these ought to be member - set_error_index(&pdu, i); // functions but are not yet... - fdone++; // trigger flag to exit loop early - } - else // failed, return noSuch error - pdu.set_vb(vb, i); - } - - // 3. lastly, return the pkt to the caller - return respond(pdu, target); -} - -// this routine makes up the brains of the agent -// it knows only the MIB II system group set of variables for a get operation -int agent_impl::get_response(Vb& vb) -{ - // these objects represent the MIB II system group per RFC 1213 - static Oid sysDescr("1.3.6.1.2.1.1.1.0"), - sysObjectID("1.3.6.1.2.1.1.2.0"), sysUpTime("1.3.6.1.2.1.1.3.0"), - sysContact("1.3.6.1.2.1.1.4.0"), sysName("1.3.6.1.2.1.1.5.0"), - sysLocation("1.3.6.1.2.1.1.6.0"), sysServices("1.3.6.1.2.1.1.7.0"); - - Oid oid; - vb.get_oid(oid); - if (oid == sysDescr) { - OctetStr desc("ASNMP Prototype Agent 1.0"); - vb.set_value(desc); - } - else if (oid == sysObjectID) { // the IANA gives assigns Enterprise Numbers - // see ftp://ftp.isi.edu/in-notes/iana/assignments/enterprise-numbers - // for the official list of enterprise numbers. Then under this tree - // assign a unique subtree to identify this agent - Oid id("1.3.6.1.4.1.2533.9.1"); - vb.set_value(id); - } - else if (oid == sysUpTime) { - ACE_Time_Value tv; - agent_clock_.elapsed_time (tv); - TimeTicks tt(tv.msec()); - vb.set_value(tt); - } - else if (oid == sysContact) { - OctetStr contact("mrm@acm.org"); - vb.set_value(contact); - } - else if (oid == sysName) { - OctetStr fqdn("foo.org"); // extract this from the gethostbyname() TODO - vb.set_value(fqdn); - } - else if (oid == sysLocation) { - OctetStr loc(""); - vb.set_value(loc); - } - else if (oid == sysServices) { - SnmpInt32 svcs(72); - vb.set_value(svcs); - } - else - return 1; // noSuchName - - return 0; -} - -int agent_impl::handle_get_next( Pdu &pdu, UdpTarget &target) -{ - ACE_TRACE("agent_impl::handle_get_next -NI"); - return 0; -} - -int agent_impl::handle_set( Pdu &pdu, UdpTarget &target) -{ - ACE_TRACE("agent_impl::handle_set -NI"); - return 0; -} - -// stuff used by process_requests - -// called when SIGINT -static sig_atomic_t finished = 0; - -extern "C" void -sig_handler (int) -{ - ACE_TRACE("::sig_handler"); - finished = 1; -} - -int agent_impl::process_requests() -{ - ACE_TRACE("agent_impl::process_requests"); - ACE_Reactor reactor; - - ACE_Sig_Action sa ((ACE_SignalHandler) sig_handler, SIGINT); - ACE_UNUSED_ARG (sa); - - // Read data from other side. - if (reactor.register_handler (this, ACE_Event_Handler::READ_MASK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "ACE_Reactor::register_handler"), -1); - - // TODO: register signal handler to shut down gracefully here - - while (!finished) - { - reactor.handle_events (); - ACE_DEBUG ((LM_DEBUG, "return from handle events\n")); - } - - ACE_DEBUG ((LM_DEBUG, "return from handle events - normal shut down\n")); - return 0; -} diff --git a/ASNMP/agent/agent_impl.h b/ASNMP/agent/agent_impl.h deleted file mode 100644 index 60ee90034a2..00000000000 --- a/ASNMP/agent/agent_impl.h +++ /dev/null @@ -1,52 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// ASNMP -// -// = FILENAME -// agent_impl.h -// -// = AUTHOR -// Michael R. MacFaden -// -// ============================================================================ - -#ifndef AGENT_IMPL_H -#define AGENT_IMPL_H - -#include -#include -#include -#include -#include -#include - -class agent_impl : public sagent -{ -public: - agent_impl(unsigned short port, const char *rd, const char *wr); - virtual ~agent_impl(); - - virtual int handle_get( Pdu &pdu, UdpTarget &target); - // retrieve data from a peer agent for a given list of oid values - - virtual int handle_get_next( Pdu &pdu, UdpTarget &target); - // retrieve data lexically adjacent to the oids specified in the pdu - // from the peer agent - - virtual int handle_set( Pdu &pdu, UdpTarget &target); - // set data in the agent from the list of oids in the pdu - - int process_requests(); - // main loop here using a reactor object - -private: - UdpTarget tgt_; // this agent's read, write community strings - int get_response(Vb& vb); // set values for a "get" cmd - ACE_High_Res_Timer agent_clock_; // agent "uptime" ticks reported in 1/100 second -}; - -#endif /* AGENT_IMPL_H */ diff --git a/ASNMP/agent/main.cpp b/ASNMP/agent/main.cpp deleted file mode 100644 index 8cb563d8abc..00000000000 --- a/ASNMP/agent/main.cpp +++ /dev/null @@ -1,26 +0,0 @@ -// $Id$ - -// This server daemon processes SNMP Version 1 get, get-next, and set -// commands. over the MIB II "System" group only. - -#include "ace/inc_user_config.h" -#include "snmp_agent.h" - -ACE_RCSID(agent, main, "$Id$") - -int main (int argc, char *argv[]) -{ - snmp_agent the_agent; - - if (the_agent.set_args(argc, argv)) { - return 1; - } - - if (!the_agent.valid()) { - return 1; - } - - the_agent.run(); // main loop - - return 0; -} diff --git a/ASNMP/agent/snmp_agent.cpp b/ASNMP/agent/snmp_agent.cpp deleted file mode 100644 index 43a5342a3ec..00000000000 --- a/ASNMP/agent/snmp_agent.cpp +++ /dev/null @@ -1,96 +0,0 @@ -// $Id$ - -// This server daemon processes SNMPv1 requests over MIB II System group - -#include "snmp_agent.h" -#include "agent_impl.h" // actual implementation -#include "ace/Get_Opt.h" -#include "ace/Reactor.h" - -ACE_RCSID(agent, snmp_agent, "$Id$") - -// module globals -#define SNMP_AGENT_PORT (161) -#define WR_COM ("private") -#define RD_COM ("public") - -snmp_agent::snmp_agent() : agent_(0) -{ - ACE_TRACE("snmp_agent::snmp_agent"); -} - -snmp_agent::~snmp_agent() -{ - ACE_TRACE("snmp_agent::~snmp_agent"); - delete agent_; -} - - -int snmp_agent::valid() const -{ - ACE_TRACE("snmp_agent::valid"); - return (agent_ != 0); -} - -int snmp_agent::set_args(int argc, char *argv[]) -{ - ACE_TRACE("snmp_agent::set_args"); - unsigned short port = SNMP_AGENT_PORT; - char *rd = RD_COM, *wr = WR_COM; - - ACE_Get_Opt get_opt (argc, argv, "p:w:r:hv"); - for (int c; (c = get_opt ()) != -1; ) { - switch (c) - { - case 'p': - port = (ACE_OS::atoi (get_opt.optarg)); - break; - case 'w': // write community string - wr = get_opt.optarg; - break; - case 'r': // read community string - rd = get_opt.optarg; - break; - - case 'h': // help & version info - case 'v': - ACE_DEBUG ((LM_DEBUG, - "(%P|%t) Example SNMP Version 1 Agent - ASNMP/ACE\n")); - return -1; - break; - - default: - return -1; // invalid arg - } - } - - - agent_ = new agent_impl(port, rd, wr); // opens OS IO port - return 0; -} - -int snmp_agent::run() -{ - ACE_TRACE("snmp_agent::run"); - ACE_ASSERT(agent_); - - // open service port -#if 0 - if (agent_->open_port()) { - ACE_DEBUG((LM_DEBUG, "(%P|%t) open port %d failed\n", agent_->get_port())); - return -1; - } -#endif - - // Run forever, processing SNMP requests. - - ACE_DEBUG ((LM_DEBUG, - "(%P|%t) starting up snmp agent (server) daemon\n")); - - agent_->process_requests(); - - ACE_DEBUG ((LM_DEBUG, - "(%P|%t) shutting down snmp agent (server) daemon\n")); - return 0; -} - diff --git a/ASNMP/agent/snmp_agent.h b/ASNMP/agent/snmp_agent.h deleted file mode 100644 index a7fc4c42de8..00000000000 --- a/ASNMP/agent/snmp_agent.h +++ /dev/null @@ -1,48 +0,0 @@ -// $Id$ - -/* -*-C++-*- */ - -#ifndef SNMP_AGENT_ -#define SNMP_AGENT_ -// ============================================================================ -// -// = LIBRARY -// ASNMP -// -// = FILENAME -// snmp_agent.h -// -// = AUTHOR -// Michael R. MacFaden (mrm@cisco.com) -// -// ============================================================================ - -class agent_impl; - -class snmp_agent { - // = TITLE - // An SNMP v1 agent class - // - // = DESCRIPTION - // Contructs agents that are capable of processing SNMPv1 requests - // over the MIB II System group - - public: - snmp_agent(); // uses port 161, public, private - ~snmp_agent(); - - int valid() const; - // did object construct ok - - int set_args(int argc, char *argv[]); - // runtime arguments such as community strings, port to use - - int run(); - // begin processing requests - - private: - snmp_agent(const snmp_agent&); - agent_impl *agent_; -}; - -#endif // SNMP_AGENT_ diff --git a/ASNMP/asnmp-overview.html b/ASNMP/asnmp-overview.html deleted file mode 100644 index 6c119ba1323..00000000000 --- a/ASNMP/asnmp-overview.html +++ /dev/null @@ -1,133 +0,0 @@ - - -ASNMP Overview - -

ASNMP Overview

- -

The Another SNMP class library is an Object Oriented programming -toolkit for using IETF standard network management protocols in the -Internet. The SNMP protocol is perhaps the most ubiquitous management -protocol running on most very device or application deployed in the -modern network today. - -

ASNMP is targeted to programmers that want to write command and -control (C&C) applications. C&C Applications communicate with -a variety of objects: - -

  • network devices such as ATM switches, Internet routers, -LAN bridges and LAN printers -
  • Routing protocols such as OSPF -
  • database servers such as ORACLE or Informix. - -

    ASNMP Version 1 implements a blocking SNMP Version 1 with some -Version 2c additions (Counter32, Counter64 SMI values). See -SNMP Version 1 as defined in the IETF Request for Comments (RFC) - -

  • 1155 -
  • 1157 -
  • 1213 -
  • 1215 - -

    Also see the RFC 1902 spec for new SMI datatypes such as Counter64. - -

    ASNMP is built using the CMU SNMP and HP SNMP++ as the base -classes then modified for use in the ACE framework. About 10% of the API -changed during code rework. See ASNMP/asnmp/ChangeLog for details. - -

    ASNMP can be used for either manager applications or agent applications. -The Snmp class contains the interface for manager applications. The -sagent class contains the interface for agent applications. A -trivial agent that implements the mib II system group per rfc1213 is -in the agents/ directory. - -

    Class Heirarchy

    - -
    -UdpTarget - Defines a collection of attributes needed to define a 
    -             communications session with an SNMP agent 
    -            This includes  network address, response timeout, etc.
    -  
    -Snmp - A logical session between NM app and agent. Provides the
    -       commands get, get_next, trap. Manages transactions between app and 
    -       server.
    -
    -Pdu  - A container object that represents an SNMP Protocol Data Unit.
    -       A Pdu contains a command (get,getnext,trap) Varbind List list, 
    -       a community string.
    -
    -Vb   - Aka Varbind or Variable Binding.  A pdu can have zero, 
    -       one or more of these. A Vb consists of an Oid to identify 
    -       the variable and a value corresponding to  one of the SMI values. 
    -       The oid/value binding is defined in a MIB file (RFC 1155)
    -       Agents hava a MIB file that defines what each variable means.
    -       Most agents implement MIB II as defined in RFC 1156.        
    -
    -

    The Structure of Managment Information (SMI) datatypes -and related types are: -

      -
    • Address->IpAddress->UdpAddress as well as MAC, IPX, IPXSOCK, Netbios -
    • Unsigned Integer -
    • Gauge32 -
    • Integer32 -
    • Counter32 -
    • Counter64 -
    • TimeTicks -
    • OctetStr -
    • Oid -
    - -
    - -

    Sample program

    -

    A sample Object to get obtain an Agent's Systems' Description -given an network address and a community string. - -class system_id { - public: - system_id(UdpAddress addr, OctetStr read_community_string) - { - UdpTarget tgt; - Snmp snmp; - Pdu pdu; - Oid oid("1.3.6.1.2.1.1.1.0"); - Vb vb(oid); - tgt.set_address(addr); - tgt.set_read_community(read_community_string); - pdu += vb; - - if (snmp.get(pdu, tgt) == 0) { - pdu.get_vb(vb, 0); - vb.get_value(desc_); - } - else - desc_ = "" - } - - int get_description(OctetStr& description) { - description = desc_; - return 0; - } - -private: - OctetStr desc_; -}; - -

    Future Directions

    -

    Here are some areas for further work - -

  • Add OO mib parser and mib code generator -
  • Collapse the CMU/HP code into one set of classes. -
  • Add full V2c support. -
  • Size/Speed improvements - - -

    References

    - - diff --git a/ASNMP/asnmp/ChangeLog b/ASNMP/asnmp/ChangeLog deleted file mode 100644 index af4c2469745..00000000000 --- a/ASNMP/asnmp/ChangeLog +++ /dev/null @@ -1,161 +0,0 @@ -Tue Mar 16 16:28:14 1999 David L. Levine - - * address.cpp, address.h, asn1.cpp, asn1.h, counter.cpp, ctr64.cpp, - gauge.cpp, integer.cpp, octet.cpp, oid.cpp, pdu.cpp, sagent.cpp, - snmp.cpp, target.cpp, timetick.cpp, transaction.cpp, vb.cpp, - wpdu.cpp: - replaced TRUE with 1, and FALSE and NULL with 0. Thanks to - Achint Sandhu for reporting that - TRUE and FALSE weren't define on his Linux platform. - - * wpdu.cpp (set_trap_info): wrapped condition with () to - avoid g++ warning about using result of an assignment as - the condition. - - * ctr64.cpp: made MAX64 unsigned, to avoid warning about it - being to big to be signed. - -Wed Jul 15 20:27:23 1998 Mike MacFaden - * asn1.cpp - Hien Nguyen fixed these bugs: - - Problem: The V1 trap agent-addr field tag value is OCTET STRING - instead of IPADDRESS, and the time stamp field tag value is INTEGER - instead of TIME TICKS. - - Fix: Change cmu_snmp::build() to pass in the correct type for agent-addr - and time stamp. - - 2. Problem: The V1 trap enterprise OID is corrupted after is was set in - wpdu constructor. - - Fix: In wpdu::set_trap_info(), the raw_pdu enterprise OID pointer was - assigned to the raw data of an enterprise Oid object on the stack. - Changed to perform an ACE_NEW_RETURN on the raw_pdu->enterprise and - perform a memcpy to copy the OID. The allocated memory is freed in - cmu_snmp::free_pdu() as currently implemented. - - 3. The V1 trap agent-addr field is currently initialized to "0.0.0.0". - I changed wpdu::set_trap_info to initialize it to the local host IP - Address. - - 4. I noticed that the memory allocation for OID in asn1.cpp using - ACE_NEW consistently use (OID length * size(oid)) as the size. - Shouldn't it be simply OID length ? Since there are numerous instances - of this usage in asn1.cpp, I have not fixed those. If you can double - check and fix these, I appreciate it. - - -Wed Aug 20 15:11:23 1997 Mike MacFaden - - * rebuilt Makefile using g++dep - - * pdu.h pdu.cpp initialization errors fixed - - * address.h address.cpp IpAddress::to_octet() added - -Fri Aug 1 19:23:52 1997 Mike MacFaden (mrm@mrm-ss20) - - * NOTES: This first version only tested on Solaris 2.5 - - * review classes for thread safety. Current thread design only - allows for one thread to safely access any ASNMP object created. - - * run purify test of get routine no -memory leaks. - - * verify both shared archive/static archive types work with - example programs - - * << Globals Changes >> - - * tested only archiver library version - - * reformat code to use one brace style. - - * changed all manifest constants defined as _XX to XX_ to stay out - of compiler namespace - - * change all OS calls to use ACE_OS:: portability layer, #include - - - * reformat code to use one consistent brace layout and redo - header using ACE - - * remove semicolons on member functions foo{}; - not necessary - - * make get() methods const member functions - - * removed unnecessary casts that looked like this: and revamped - all memory allocations via ACE_NEW macro - - new_oid = (SmiLPUINT32) new unsigned long [ smival.value.oid.len - - To - - ACE_NEW(new_oid, SmiUINT32[ smival.value.oid.len]) - - * Collapsed default constructors with constructors to constructors - with default arguments. - - * removed unused #include - - * Added ACE_TRACE() to classes - - * change get_printable() to to_string() - there will be more java - programmers in the future so this should be the first step... - - * removed ASYNC interface till it can be rebuilt using ACE patterns - - * Attempt to make interface more type strict but leaving generic - interfaces as escape hatch. Example: CTarget becomes UdpTarget - for UDP/IP based agents. - - * << Class Specific Changes >> - - * Oid class: - - remove char * routines, simplify class - - added suboid method and removed get_printable() overloads - - * CTarget class: - - renamed to UdpTarget. Stay out of Microsoft Namespace per MSJ - Article by Allen Hollub. - - * Varbind class: - - remove generic set_value for char,int, etc. Too easy to get - this wrong. Allow just types defined. - - added overload for equality operator (==) - - added new constructor to allow setting full vb state oid,value, exception - - add to_string() - - * Address class: - - change manifest constants to enums for address lengths, add IP V6 lens - - - add a netbios name class, still pretty worthless since I don't have spec - in front of me yet... - - - rewrite resolver calls to be thread safe and cleaner by moving to two - class (static) member functions: - - // thread safe routine to lookup ip address given hostname - // return <> 0 on error - static int resolve_to_addr(const char *hostname, in_addr& quad_addr); - - // thread safe routine to lookup name given ip address - // return <> 0 on error - static int resolve_to_hostname(const in_addr& quad_addr, char *hostname) - - * added some interrogation routines to class IpAddress: - is_loopback() const; - - * Ctr64 class: - - added constructor using long long datatype (needs to be made - portable to NT - - * Pdu class: add to_string() - - * Classes added wpdu class: - - a new adpater class between CMU and HP pdu, varbind data structures - - * transaction class: - - implement get/getnext timeout and retry logic using ACE - Reactor class, ACE_Time_Value - diff --git a/ASNMP/asnmp/Makefile b/ASNMP/asnmp/Makefile deleted file mode 100644 index e95cd7d2e32..00000000000 --- a/ASNMP/asnmp/Makefile +++ /dev/null @@ -1,744 +0,0 @@ -#---------------------------------------------------------------------------- -# $Id$ -# -# Makefile for the SNMP+ACE Release -#---------------------------------------------------------------------------- - -MAKEFILE = Makefile -LIB = libasnmp.a -SHLIB = libasnmp.$(SOEXT) - -FILES = address \ - asn1 \ - counter \ - ctr64 \ - gauge \ - integer \ - octet \ - oid \ - pdu \ - snmp \ - target \ - timetick \ - transaction \ - vb \ - wpdu \ - sagent - -TEMPLATE_FILES = - -DEFS = $(addsuffix .h,$(FILES)) -DEFS += $(addsuffix .i,$(FILES)) -LSRC = $(addsuffix .cpp,$(FILES)) -#LSRC2 = $(addsuffix .cpp,$(TEMPLATE_FILES)) - -#### Build the SNMP++ shared library _before_ the static library. -#### This works around an apparent problem with template -#### instantiation with Sun C++ 4.1 and 4.2 (the symptom is link -#### error due to ACE_TimeValue::normalize () not being found). -BUILD = $(VSHLIB) $(SHLIBA) $(VLIB) - -# For make depend: -SRC = -I.. - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU - -#---------------------------------------------------------------------------- -# Local targets -#---------------------------------------------------------------------------- - -CCFLAGS += -I$(ACE_ROOT)/ASNMP/ - -#---------------------------------------------------------------------------- -# Dependencies -#---------------------------------------------------------------------------- -# DO NOT DELETE THIS LINE -- g++dep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. - -.obj/address.o .obj/address.so .shobj/address.o .shobj/address.so: address.cpp ../asnmp/address.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-sunos5.6.h \ - $(ACE_ROOT)/ace/config-sunos5.5.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i ../asnmp/smival.h \ - ../asnmp/smi.h ../asnmp/octet.h -.obj/asn1.o .obj/asn1.so .shobj/asn1.o .shobj/asn1.so: asn1.cpp ../asnmp/asn1.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-sunos5.6.h \ - $(ACE_ROOT)/ace/config-sunos5.5.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i ../asnmp/snmp.h \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/SOCK_Dgram.h \ - $(ACE_ROOT)/ace/SOCK.h \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/IPC_SAP.h \ - $(ACE_ROOT)/ace/IPC_SAP.i \ - $(ACE_ROOT)/ace/SOCK.i \ - $(ACE_ROOT)/ace/SOCK_Dgram.i ../asnmp/oid.h \ - ../asnmp/smival.h ../asnmp/smi.h ../asnmp/vb.h ../asnmp/snmperrs.h \ - ../asnmp/timetick.h ../asnmp/integer.h ../asnmp/counter.h \ - ../asnmp/gauge.h ../asnmp/ctr64.h ../asnmp/octet.h ../asnmp/address.h \ - ../asnmp/target.h $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/INET_Addr.i ../asnmp/pdu.h \ - ../asnmp/transaction_result.h -.obj/counter.o .obj/counter.so .shobj/counter.o .shobj/counter.so: counter.cpp ../asnmp/counter.h ../asnmp/smival.h \ - ../asnmp/smi.h $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-sunos5.6.h \ - $(ACE_ROOT)/ace/config-sunos5.5.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - ../asnmp/integer.h -.obj/ctr64.o .obj/ctr64.so .shobj/ctr64.o .shobj/ctr64.so: ctr64.cpp ../asnmp/ctr64.h ../asnmp/smival.h ../asnmp/smi.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-sunos5.6.h \ - $(ACE_ROOT)/ace/config-sunos5.5.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i -.obj/gauge.o .obj/gauge.so .shobj/gauge.o .shobj/gauge.so: gauge.cpp ../asnmp/gauge.h ../asnmp/integer.h \ - ../asnmp/smival.h ../asnmp/smi.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-sunos5.6.h \ - $(ACE_ROOT)/ace/config-sunos5.5.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i -.obj/integer.o .obj/integer.so .shobj/integer.o .shobj/integer.so: integer.cpp ../asnmp/integer.h ../asnmp/smival.h \ - ../asnmp/smi.h $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-sunos5.6.h \ - $(ACE_ROOT)/ace/config-sunos5.5.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i -.obj/octet.o .obj/octet.so .shobj/octet.o .shobj/octet.so: octet.cpp $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-sunos5.6.h \ - $(ACE_ROOT)/ace/config-sunos5.5.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i ../asnmp/octet.h \ - ../asnmp/smival.h ../asnmp/smi.h -.obj/oid.o .obj/oid.so .shobj/oid.o .shobj/oid.so: oid.cpp ../asnmp/oid.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-sunos5.6.h \ - $(ACE_ROOT)/ace/config-sunos5.5.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i ../asnmp/smival.h \ - ../asnmp/smi.h -.obj/pdu.o .obj/pdu.so .shobj/pdu.o .shobj/pdu.so: pdu.cpp ../asnmp/snmp.h \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-sunos5.6.h \ - $(ACE_ROOT)/ace/config-sunos5.5.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/SOCK_Dgram.h \ - $(ACE_ROOT)/ace/SOCK.h \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/IPC_SAP.h \ - $(ACE_ROOT)/ace/IPC_SAP.i \ - $(ACE_ROOT)/ace/SOCK.i \ - $(ACE_ROOT)/ace/SOCK_Dgram.i ../asnmp/oid.h \ - ../asnmp/smival.h ../asnmp/smi.h ../asnmp/vb.h ../asnmp/snmperrs.h \ - ../asnmp/timetick.h ../asnmp/integer.h ../asnmp/counter.h \ - ../asnmp/gauge.h ../asnmp/ctr64.h ../asnmp/octet.h ../asnmp/address.h \ - ../asnmp/target.h $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/INET_Addr.i ../asnmp/pdu.h \ - ../asnmp/transaction_result.h -.obj/snmp.o .obj/snmp.so .shobj/snmp.o .shobj/snmp.so: snmp.cpp ../asnmp/snmp.h \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-sunos5.6.h \ - $(ACE_ROOT)/ace/config-sunos5.5.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/SOCK_Dgram.h \ - $(ACE_ROOT)/ace/SOCK.h \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/IPC_SAP.h \ - $(ACE_ROOT)/ace/IPC_SAP.i \ - $(ACE_ROOT)/ace/SOCK.i \ - $(ACE_ROOT)/ace/SOCK_Dgram.i ../asnmp/oid.h \ - ../asnmp/smival.h ../asnmp/smi.h ../asnmp/vb.h ../asnmp/snmperrs.h \ - ../asnmp/timetick.h ../asnmp/integer.h ../asnmp/counter.h \ - ../asnmp/gauge.h ../asnmp/ctr64.h ../asnmp/octet.h ../asnmp/address.h \ - ../asnmp/target.h $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/INET_Addr.i ../asnmp/pdu.h \ - ../asnmp/transaction_result.h ../asnmp/enttraps.h ../asnmp/asn1.h \ - ../asnmp/wpdu.h ../asnmp/transaction.h -.obj/target.o .obj/target.so .shobj/target.o .shobj/target.so: target.cpp ../asnmp/target.h \ - $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-sunos5.6.h \ - $(ACE_ROOT)/ace/config-sunos5.5.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/INET_Addr.i ../asnmp/address.h \ - ../asnmp/smival.h ../asnmp/smi.h ../asnmp/octet.h ../asnmp/oid.h -.obj/timetick.o .obj/timetick.so .shobj/timetick.o .shobj/timetick.so: timetick.cpp ../asnmp/timetick.h ../asnmp/integer.h \ - ../asnmp/smival.h ../asnmp/smi.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-sunos5.6.h \ - $(ACE_ROOT)/ace/config-sunos5.5.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i -.obj/transaction.o .obj/transaction.so .shobj/transaction.o .shobj/transaction.so: transaction.cpp \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-sunos5.6.h \ - $(ACE_ROOT)/ace/config-sunos5.5.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - ../asnmp/transaction.h ../asnmp/target.h \ - $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/INET_Addr.i ../asnmp/address.h \ - ../asnmp/smival.h ../asnmp/smi.h ../asnmp/octet.h ../asnmp/oid.h \ - ../asnmp/pdu.h ../asnmp/vb.h ../asnmp/snmperrs.h ../asnmp/timetick.h \ - ../asnmp/integer.h ../asnmp/counter.h ../asnmp/gauge.h \ - ../asnmp/ctr64.h ../asnmp/transaction_result.h ../asnmp/wpdu.h \ - ../asnmp/asn1.h ../asnmp/snmp.h \ - $(ACE_ROOT)/ace/SOCK_Dgram.h \ - $(ACE_ROOT)/ace/SOCK.h \ - $(ACE_ROOT)/ace/IPC_SAP.h \ - $(ACE_ROOT)/ace/IPC_SAP.i \ - $(ACE_ROOT)/ace/SOCK.i \ - $(ACE_ROOT)/ace/SOCK_Dgram.i -.obj/vb.o .obj/vb.so .shobj/vb.o .shobj/vb.so: vb.cpp ../asnmp/oid.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-sunos5.6.h \ - $(ACE_ROOT)/ace/config-sunos5.5.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i ../asnmp/smival.h \ - ../asnmp/smi.h ../asnmp/vb.h ../asnmp/snmperrs.h ../asnmp/timetick.h \ - ../asnmp/integer.h ../asnmp/counter.h ../asnmp/gauge.h \ - ../asnmp/ctr64.h ../asnmp/octet.h ../asnmp/address.h -.obj/wpdu.o .obj/wpdu.so .shobj/wpdu.o .shobj/wpdu.so: wpdu.cpp ../asnmp/wpdu.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-sunos5.6.h \ - $(ACE_ROOT)/ace/config-sunos5.5.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i ../asnmp/asn1.h \ - ../asnmp/snmp.h $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/SOCK_Dgram.h \ - $(ACE_ROOT)/ace/SOCK.h \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/IPC_SAP.h \ - $(ACE_ROOT)/ace/IPC_SAP.i \ - $(ACE_ROOT)/ace/SOCK.i \ - $(ACE_ROOT)/ace/SOCK_Dgram.i ../asnmp/oid.h \ - ../asnmp/smival.h ../asnmp/smi.h ../asnmp/vb.h ../asnmp/snmperrs.h \ - ../asnmp/timetick.h ../asnmp/integer.h ../asnmp/counter.h \ - ../asnmp/gauge.h ../asnmp/ctr64.h ../asnmp/octet.h ../asnmp/address.h \ - ../asnmp/target.h $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/INET_Addr.i ../asnmp/pdu.h \ - ../asnmp/transaction_result.h ../asnmp/enttraps.h -.obj/sagent.o .obj/sagent.so .shobj/sagent.o .shobj/sagent.so: sagent.cpp $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-sunos5.6.h \ - $(ACE_ROOT)/ace/config-sunos5.5.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/SOCK_Dgram.h \ - $(ACE_ROOT)/ace/SOCK.h \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/IPC_SAP.h \ - $(ACE_ROOT)/ace/IPC_SAP.i \ - $(ACE_ROOT)/ace/SOCK.i \ - $(ACE_ROOT)/ace/SOCK_Dgram.i ../asnmp/oid.h \ - ../asnmp/smival.h ../asnmp/smi.h ../asnmp/vb.h ../asnmp/snmperrs.h \ - ../asnmp/timetick.h ../asnmp/integer.h ../asnmp/counter.h \ - ../asnmp/gauge.h ../asnmp/ctr64.h ../asnmp/octet.h ../asnmp/address.h \ - ../asnmp/target.h $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/INET_Addr.i ../asnmp/pdu.h \ - ../asnmp/snmp.h ../asnmp/transaction_result.h ../asnmp/sagent.h \ - ../asnmp/transaction.h ../asnmp/wpdu.h ../asnmp/asn1.h - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/ASNMP/asnmp/TODO b/ASNMP/asnmp/TODO deleted file mode 100644 index 12beb91406b..00000000000 --- a/ASNMP/asnmp/TODO +++ /dev/null @@ -1,25 +0,0 @@ -This is the todo list aka wish list: feel free to add/implmement -Fri Aug 1 19:40:55 PDT 1997 - -0) collapse CMU and HP code - make this thing faster since it is really - slow and bulky... - -1) implement response time statistics collection so that timeout can vary based - on empirical response times - -2) Implement pdu fragmentation based on tooBig errors or app directed - Snmp::set_pdu_max_size() command - -3) implement async interface - -4) make templatized version to implement sync/nonsync (thread safe version) - -5) add V2c when a real agent is in the field that supports it - -6) Add DISMAN support when IETF approves the Expression Mib - -7) way too many procedural case stmts in the code... - -8) add compare_right() method to be orthogonal to oid class. - - diff --git a/ASNMP/asnmp/address.cpp b/ASNMP/asnmp/address.cpp deleted file mode 100644 index 230788e9f67..00000000000 --- a/ASNMP/asnmp/address.cpp +++ /dev/null @@ -1,2686 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// address.cpp -// -// = DESCRIPTION -// The Vb class is an encapsulation of the snmp variable binding. -// This module contains the class definition for the variable binding (VB) -// class. The VB class is an encapsulation of a SNMP VB. A VB object is -// composed of one SNMP++ Oid and one SMI value. The Vb class utilizes Oid -// objects and thus requires the Oid class. To use this class, -// set oid, value then call valid() to be sure object was constructed correctly. -// -// = AUTHOR -// Peter E Mellquist -// Michael R MacFaden mrm@cisco.com - rework & ACE port -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. - =====================================================================*/ - -#include "asnmp/address.h" - -ACE_RCSID(asnmp, address, "$Id$") - -//================================================================= -//======== Abstract Address Class Implementation ================== -//================================================================= - -// allow destruction of derived classes -Address::~Address() -{ -} - - -//----------------------------------------------------------------- -// is the address object valid? -int Address::valid() const -{ - return valid_flag; -} - -//------------[ Address::trim_white_space( char * ptr) ]------------ -// destructive trim white space -void Address::trim_white_space( char * ptr) -{ - char *tmp; - - tmp = ptr; - // skip leading white space - while (*tmp==' ')tmp++; - ACE_OS::strcpy(ptr,tmp); - - // find end of string - while ((*tmp!=' ') && (*tmp !=0)) tmp++; - if (*tmp!=0) *tmp=0; -} - -//TM: this is not used nor needed, remove? -//-----[ element access ]---------------------------------------------- -unsigned char& Address::operator[]( const int position) -{ - if ( position < MAX_ADDR_SZ) - return address_buffer[ position]; - else - return address_buffer[0]; -} - - -//----------------------------------------------------------------------- -// overloaded equivlence operator, are two addresses equal? -int operator==( const Address &lhs, const Address &rhs) -{ - if ( strcmp( (const char*) lhs, (const char*)rhs)==0) - return 1; - else - return 0; -} - -//----------------------------------------------------------------------- -// overloaded equivlence operator, are two addresses equal? -int operator!=( const Address &lhs, const Address &rhs) -{ - return (!( lhs == rhs)); -} - - -//------------------------------------------------------------------ -// overloaded > operator, is a1 > a2 -int operator>( const Address &lhs, const Address &rhs) -{ - if ( strcmp( (const char*) lhs, (const char*)rhs)>0) - return 1; - else - return 0; -} - -// overloaded >= operator, is a1 > a2 -int operator>=( const Address &lhs,const Address &rhs) -{ - if (( lhs > rhs) || ( lhs == rhs)) - return 1; - else - return 0; -} - -// overloaded < operator, is a1 <= a2 -int operator<=( const Address &lhs,const Address &rhs) -{ - if (( lhs < rhs) || ( lhs == rhs)) - return 1; - else - return 0; - -} - - -//----------------------------------------------------------------- -// overloaded < operator, is a1 < a2 -int operator<( const Address &lhs, const Address &rhs) -{ - if ( strcmp( (const char*) lhs, (const char*)rhs)<0) - return 1; - else - return 0; -} - -//------------------------------------------------------------------ -// equivlence operator overloaded, are an address and a string equal? -int operator==( const Address &lhs,const char *rhs) -{ - if (!rhs && !lhs.valid()) - return 1; - if (strcmp( (const char *) lhs, rhs)== 0) - return 1; - else - return 0; -} - -//------------------------------------------------------------------ -// not equal operator overloaded, are an address and a string not equal? -int operator!=( const Address &lhs,const char *rhs) -{ - return (!( lhs == rhs)); -} - -//------------------------------------------------------------------ -// overloaded > , is a > inaddr -int operator>( const Address &lhs,const char *rhs) -{ - if (!rhs) - return lhs.valid(); // if lhs valid then > 0, else invalid !> 0 - if (strcmp( (const char *) lhs, rhs)> 0) - return 1; - else - return 0; -} - -//------------------------------------------------------------------ -// overloaded >= , is a >= inaddr -int operator>=( const Address &lhs,const char *rhs) -{ - if (!rhs) - return 1; // always >= 0 - if (strcmp( (const char *) lhs, rhs)>= 0) - return 1; - else - return 0; -} - -//----------------------------------------------------------------- -// overloaded < , are an address and a string equal? -int operator<( const Address &lhs,const char *rhs) -{ - if (!rhs) - return 0; // always >= 0 - if (strcmp( (const char *) lhs, rhs)< 0) - return 1; - else - return 0; -} - -//----------------------------------------------------------------- -// overloaded <= , is a <= inaddr -int operator<=( const Address &lhs,const char *rhs) -{ - if (!rhs) - return !lhs.valid(); // invalid == 0, else valid > 0 - if (strcmp( (const char *) lhs, rhs)<= 0) - return 1; - else - return 0; -} - - -//===================================================================== -//============ IPAddress Implementation =============================== -//===================================================================== - -//-----------[ syntax type ]---------------------------------------------- -SmiUINT32 IpAddress::get_syntax() -{ - return sNMP_SYNTAX_IPADDR; -} - -//-----[ IP Address copy constructor ]--------------------------------- -IpAddress::IpAddress(const IpAddress &ipaddr) -{ - // always initialize what type this object is - smival.syntax = sNMP_SYNTAX_IPADDR; - smival.value.string.len =IPV4LEN; - smival.value.string.ptr = address_buffer; - - iv_friendly_name_[0] = 0; - iv_friendly_name_status_ = 0; - valid_flag = ipaddr.valid_flag; - if (valid_flag) { - ACE_OS::memcpy(address_buffer, ipaddr.address_buffer,IPV4LEN); - ACE_OS::strcpy( iv_friendly_name_, ipaddr.iv_friendly_name_); - } - - IpAddress::format_output(); -} - - -//-------[ default construct, an IP address with a string ]--------------------- -IpAddress::IpAddress( const char *inaddr): Address() -{ - // always initialize what type this object is - smival.syntax = sNMP_SYNTAX_IPADDR; - smival.value.string.len = IPV4LEN; - smival.value.string.ptr = address_buffer; - - if (ACE_OS::strlen(inaddr) == 0) { - - valid_flag = 0; - iv_friendly_name_[0] = 0; - iv_friendly_name_status_ = 0; - IpAddress::format_output(); - return; - } - - // parse_address initializes valid, address_buffer & iv_friendly_name_ - valid_flag = parse_address(inaddr); - IpAddress::format_output(); -} - - -//-----[ construct an IP address with a GenAddress ]--------------------- -IpAddress::IpAddress( const GenAddress &genaddr) -{ - // always initialize what type this object is - smival.syntax = sNMP_SYNTAX_IPADDR; - smival.value.string.len = IPV4LEN; - smival.value.string.ptr = address_buffer; - - valid_flag = 0; - iv_friendly_name_[0] = 0; - iv_friendly_name_status_ = 0; - // allow use of an ip or udp genaddress - if (genaddr.get_type() == type_ip) { - valid_flag = genaddr.valid(); - if ( valid_flag) { - // copy in the IP address data - IpAddress temp_ip( (const char *) genaddr); - *this = temp_ip; - } - } - else - if (genaddr.get_type() == type_udp) { - valid_flag = genaddr.valid(); - if ( valid_flag) { - // copy in the IP address data - UdpAddress temp_udp( (const char *) genaddr); - *this = temp_udp; - } - } - IpAddress::format_output(); -} - -//-----[ destructor ]-------------------------------------------------- -IpAddress::~IpAddress() -{ -} - -// assumes member data is word aligned to avoid sigbus -int IpAddress::is_loopback() const -{ - if (valid()) { - return (*(u_long *)&address_buffer == INADDR_LOOPBACK); - } - return 0; -} - -int IpAddress::is_multicast() const -{ - if (valid()) { - return (IN_MULTICAST(*(u_long *)&address_buffer)); - } - return 0; -} - -// Private addressess not are not assignable in the Internet, they are -// defined in RFC 1597 as: 10, 172.16, and 192.168.0 -// Some companies use them internally and apply NAT to allow translation -// instead of paying for ip networks. -// Cisco IOS devices can provide NAT aka Network Address Translation -// but don't expect SNMP based networks to handle cross-NAT address spaces. -// assumes storage in network byte order mrm@cisco.com 7/28/97 - -int IpAddress::is_private() const -{ - if (valid()) { - if (address_buffer[0] == 10) - return 1; - if (address_buffer[0] == 172 && address_buffer[1] == 16) - return 1; - if (address_buffer[0] == 192 && address_buffer[1] == 168 && - address_buffer[2] == 0) - return 1; - } - return 0; -} - - -// convert address into octet string format in network byte order -void IpAddress::to_octet(OctetStr& octet) const -{ - octet.set_data( smival.value.string.ptr, smival.value.string.len); -} - - -int IpAddress::is_broadcast() const -{ - if (valid()) { - return ( (*(u_long *)&address_buffer) & INADDR_BROADCAST); - } - return 0; -} - -//-----[ IP Address general = operator ]------------------------------- -SnmpSyntax& IpAddress::operator=( SnmpSyntax &val) -{ - // protect against assignment from itself - if ( this == &val ) - return *this; - - valid_flag = 0; // will get set 1 if really valid - iv_friendly_name_[0]=0; - - if (val.valid()) { - switch (val.get_syntax()) { - case sNMP_SYNTAX_IPADDR: - case sNMP_SYNTAX_OCTETS: - if (((IpAddress &)val).smival.value.string.len ==IPV4LEN) { - ACE_OS::memcpy(address_buffer, - ((IpAddress &)val).smival.value.string.ptr,IPV4LEN); - valid_flag = 1; - } - break; - - // NOTE: as a value add, other types could have "logical" - // mappings, i.e. integer32 and unsigned32 - } - } - IpAddress::format_output(); - return *this; -} - -//------[ assignment to another ipaddress object overloaded ]----------------- -IpAddress& IpAddress::operator=( const IpAddress &ipaddress) -{ - // protect against assignment from itself - if ( this == &ipaddress ) - return *this; - - valid_flag = ipaddress.valid_flag; - iv_friendly_name_[0]=0; - - if (valid_flag) { - ACE_OS::memcpy(address_buffer, ipaddress.address_buffer, IPV4LEN); - ACE_OS::strcpy(iv_friendly_name_, ipaddress.iv_friendly_name_); - } - IpAddress::format_output(); - return *this; -} - - -//--------[ create a new instance of this Value ]----------------------- -SnmpSyntax *IpAddress::clone() const -{ - return (SnmpSyntax *) new IpAddress(*this); -} - -//-------[ return the Fully Qualified Domain Name ]---------------------- -char *IpAddress::resolve_hostname(int &status) -{ - if ((iv_friendly_name_[0] == 0) && valid_flag) - addr_to_friendly(); - status = iv_friendly_name_status_; - return iv_friendly_name_; -} - -// parse a dotted string -int IpAddress::parse_dotted_ipstring( const char *inaddr) -{ - char *ip_token; - int token_count=0; - unsigned int value; - int error_status = 0; - char temp[MAXHOSTNAMELEN +1]; // temp buffer for destruction - int z,w; - - // check len, an ip can never be bigger than 15 - // 123456789012345 - // XXX.XXX.XXX.XXX - if ( !inaddr || (ACE_OS::strlen( inaddr) > 30)) - return 0; - ACE_OS::strcpy( temp, inaddr); - trim_white_space( temp); - if ( ACE_OS::strlen( temp) > 15) - return 0; - - // must only have three dots - // strtok will not catch this ! - char *ptr = temp; - int dot_count = 0; - while ( *ptr != 0) { - if ( *ptr == '.') dot_count++; - ptr++; - } - if ( dot_count != 3) - return 0; - - // look for dot token separator - ip_token = strtok( (char *) temp,"."); - - // while more tokens.. - while ( ip_token != 0) { - // verify that the token is all numerics - w = ACE_OS::strlen( ip_token); - if (w>3) - return 0; - for (z=0;z '9')) - return 0; - - value = ( unsigned int) strtod(ip_token,0); - if (( value > 0)&& ( value <=255)) - address_buffer[token_count] = (unsigned char) value; - else - if ( strcmp(ip_token,"0")==0) - address_buffer[token_count]= (unsigned char) 0; - else - error_status = 1; - token_count++; - ip_token = strtok( 0, "."); - } - - // gota be four in len - if ( token_count != 4) - return 0; - - // any parsing errors? - if ( error_status) - return 0; - - return 1; -} - -//-----[ IP Address parse Address ]--------------------------------- -int IpAddress::parse_address( const char *inaddr) -{ - // parse the input char array - // fill up internal buffer with four ip bytes - // set and return validity flag - - in_addr ipAddr; - char ds[MAXHOSTNAMELEN +1]; - - // intialize the friendly_name member variable - iv_friendly_name_[0] = 0; - iv_friendly_name_status_ = 0; - - // is this a dotted IP notation string or - // a friendly name - if ( parse_dotted_ipstring( inaddr)) { - - // since this is a valid dotted string - // don't do any DNS (Performance!) - return 1; - } - else { - int rc; - if ((rc = resolve_to_address(inaddr, ipAddr)) == 0) { - - // now lets check out the dotted string - ACE_OS::strncpy( ds, ACE_OS::inet_ntoa(ipAddr), MAXHOSTNAMELEN); - - if ( !parse_dotted_ipstring( ds)) - return 0; - - // save the friendly name - ACE_OS::strcpy( iv_friendly_name_, inaddr); - return 1; - - } // end if lookup result - else { - iv_friendly_name_status_ = rc; - return 0; - } - } // end else not a dotted string - return 1; -} - -// using the currently defined address, do a DNS -// and try to fill up the name -int IpAddress::addr_to_friendly() -{ - in_addr ipAddr; - long result = ACE_OS::inet_addr(to_string()); - if (result == -1) - return -1; // expected a dotted quad! - - ipAddr.s_addr = result; - - // set iv_friendly_name_ from ipAddr - if (resolve_to_hostname(ipAddr, iv_friendly_name_) == 0) { - return 0; - } - else { - iv_friendly_name_status_ = h_errno; - return iv_friendly_name_status_; - } -} - -// static aka class member function (1.2.3.4 -> foo.com) -int IpAddress::resolve_to_hostname(const in_addr& quad_addr, char *hostname) -{ - struct hostent lookupResult; - int loc_errno = 0; - ACE_HOSTENT_DATA buffer; - ACE_OS::memset(&lookupResult, 0, sizeof(struct hostent)); - ACE_OS::memset(&buffer, 0, sizeof(ACE_HOSTENT_DATA)); - - // reverse lookup (requires in-addr.arpa to be setup in DNS - if (ACE_OS::gethostbyaddr_r((const char *)&quad_addr.s_addr, IPV4LEN, - AF_INET, &lookupResult, buffer, &loc_errno)) { - - // verify right type of record - if (lookupResult.h_addrtype == AF_INET && - lookupResult.h_length == IPV4LEN) { - ACE_OS::strcpy( hostname, lookupResult.h_name); - // setup multiple entries - return 0; - } - else { - ACE_ASSERT(0); // todo add trace and debug and dump - return -1; // wrong resource record type - } - } - - return loc_errno; -} - -// static aka class member function (foo.com -> 1.2.3.4) -int IpAddress::resolve_to_address(const char *hostname, in_addr& quad_addr) -{ - struct hostent lookupResult; - ACE_HOSTENT_DATA buffer; - ACE_OS::memset(&buffer, 0, sizeof(ACE_HOSTENT_DATA)); - ACE_OS::memset(&lookupResult, 0, sizeof(struct hostent)); - int loc_errno = 0; - if (ACE_OS::gethostbyname_r( hostname, &lookupResult, buffer, &loc_errno)) { - if (lookupResult.h_length == sizeof(in_addr) && - lookupResult.h_addrtype == AF_INET) { - ACE_OS::memcpy((void *) &quad_addr, - (void *) lookupResult.h_addr_list[0], sizeof(in_addr)); - return 0; - } - else - return -1; // wrong address size - } - return loc_errno; -} - -//----[ IP address char * cast ]-------------------------------------- -IpAddress::operator const char *() const -{ - return (char *)output_buffer; -} - -//----[ IP address get char representation ]-------------------------- -char * IpAddress::to_string() -{ - return (char *)output_buffer; -} - -//----[ IP address format output ]------------------------------------ -void IpAddress::format_output() -{ - // if valid format else null it - if ( valid_flag) - ACE_OS::sprintf( (char *) output_buffer,"%d.%d.%d.%d",address_buffer[0], - address_buffer[1], address_buffer[2], address_buffer[3]); - else - output_buffer[0] = 0; -} - -//------[ return the type ]---------------------------------- -addr_type IpAddress::get_type() const -{ - return type_ip; -} - -//----------------------------------------------------------------- -// logically and two IPaddresses and -// return the new one -void IpAddress::mask( const IpAddress& ipaddr) -{ - if ( this->valid() && ipaddr.valid()) { - this->address_buffer[0] = this->address_buffer[0] & ipaddr.address_buffer[0]; - this->address_buffer[1] = this->address_buffer[1] & ipaddr.address_buffer[1]; - this->address_buffer[2] = this->address_buffer[2] & ipaddr.address_buffer[2]; - this->address_buffer[3] = this->address_buffer[3] & ipaddr.address_buffer[3]; - format_output(); - } - -} - -//======================================================================= -//========== DNS Iterator Implementation ================================ -//======================================================================= - - -Address_Iter::Address_Iter(const char *hostname): valid_(0), count_(0), - entry_(0) -{ - ACE_OS::memset(&buffer_, 0, sizeof(ACE_HOSTENT_DATA)); - ACE_OS::memset(&lookupResult_, 0, sizeof(struct hostent)); - if (ACE_OS::inet_addr(hostname) == -1) - valid_ = query_dns(hostname); - else { - ACE_ASSERT(0); // don't support dot-quad lookup yet - } - - // count number of hostnames - int n; - char **pc; - for (n = 0, pc = lookupResult_.h_addr_list; *pc != 0; ++n, ++pc); - count_ = n; // plus first one - entry_ = lookupResult_.h_addr_list; -} - -int Address_Iter::valid() const -{ - return (valid_ == 1); -} - -int Address_Iter::how_many_addresses() -{ - return count_; -} - -// return next entry, rc = 0, if entry is null return 0 -int Address_Iter::next(IpAddress& addr) -{ - if (!entry_ || *entry_ == 0) - return 1; - - IpAddress tmp(*entry_++); // return data - addr = tmp; - if (*entry_ == 0) - return 1; - return 0; -} - -// query DNS here -int Address_Iter::query_dns(const char *hostname) -{ - int loc_errno = 0; - if (ACE_OS::gethostbyname_r( hostname, &lookupResult_, buffer_, - &loc_errno)) { - if (lookupResult_.h_length == sizeof(IPV4LEN) && - lookupResult_.h_addrtype == AF_INET) { - return 0; - } - else - return -1; // wrong address size - } - return loc_errno; -} - -//======================================================================= -//========== Udp Address Implementation ================================= -//======================================================================= - -//-----------[ syntax type ]---------------------------------------------- -SmiUINT32 UdpAddress::get_syntax() -{ - return sNMP_SYNTAX_OCTETS; -} - -//-----------------[ construct an Udp address with another Udp address ]--- -UdpAddress::UdpAddress( const UdpAddress &udpaddr):IpAddress(udpaddr) -{ - // always initialize SMI info - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = UDPIPV4LEN; - smival.value.string.ptr = address_buffer; - - // Copy the port value - set_port(udpaddr.get_port()); - format_output(); -} - -// default constructor with a dotted string -UdpAddress::UdpAddress( const char *inaddr):IpAddress() -{ - if (ACE_OS::strlen(inaddr) == 0) { - // Inherits IP Address attributes - // Always initialize (override) what type this object is - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = UDPIPV4LEN; - smival.value.string.ptr = address_buffer; - set_port(0); - format_output(); - return; - } - - // always initialize SMI info - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = UDPIPV4LEN; - smival.value.string.ptr = address_buffer; - - valid_flag = parse_address( (char *)inaddr); - format_output(); -} - -//-----------------[ construct a UdpAddress from a GenAddress ]-------------- -UdpAddress::UdpAddress( const GenAddress &genaddr):IpAddress() -{ - // always initialize SMI info - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = UDPIPV4LEN; - smival.value.string.ptr = address_buffer; - - unsigned int port = 0; - valid_flag = 0; - - // allow use of an ip or udp genaddress - if (genaddr.get_type() == type_udp) - { - valid_flag = genaddr.valid(); - if ( valid_flag) - { - // copy in the IP address data - UdpAddress temp_udp( (const char *) genaddr); - *this = temp_udp; - - // port info since are making an UpAddress - port = temp_udp.get_port(); - } - } - else - if (genaddr.get_type() == type_ip) - { - valid_flag = genaddr.valid(); - if ( valid_flag) - { - // copy in the IP address data - IpAddress temp_ip( (const char *) genaddr); - *this = temp_ip; - } - } - set_port(port); - format_output(); -} - - -//--------[ construct a udp from an IpAddress ]-------------------------- -UdpAddress::UdpAddress( const IpAddress &ipaddr):IpAddress(ipaddr) -{ - // always initialize SMI info - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = UDPIPV4LEN; - smival.value.string.ptr = address_buffer; - - set_port(0); - format_output(); -} - - -//-----[ destructor ]-------------------------------------------------- -UdpAddress::~UdpAddress() -{ -} - - - // copy an instance of this Value -SnmpSyntax& UdpAddress::operator=( SnmpSyntax &val) -{ - // protect against assignment from itself - if ( this == &val ) - return *this; - - valid_flag=0; // will get set 1 if really valid - if (val.valid()){ - switch (val.get_syntax()){ - case sNMP_SYNTAX_IPADDR: - { - UdpAddress temp_udp(val.to_string()); - *this = temp_udp; // valid_flag is set by the udp assignment - } - break; - - case sNMP_SYNTAX_OCTETS: - if (((UdpAddress &)val).smival.value.string.len == UDPIPV4LEN){ - ACE_OS::memcpy(address_buffer, - ((UdpAddress &)val).smival.value.string.ptr, UDPIPV4LEN); - iv_friendly_name_[0] = 0; - valid_flag = 1; - } - break; - - // NOTE: as a value add, other types could have "logical" - // mappings, i.e. integer32 and unsigned32 - } - } - format_output(); - return *this; -} - - // assignment to another UdpAddress object overloaded -UdpAddress& UdpAddress::operator=( const UdpAddress &udpaddr) -{ - // protect against assignment from itself - if ( this == &udpaddr ) - return *this; - - (IpAddress &)*this = udpaddr; // use ancestor assignment for ipaddr value - set_port(udpaddr.get_port()); // copy to port value - format_output(); - return *this; -} - - -//-----[ IP Address parse Address ]--------------------------------- -int UdpAddress::parse_address( const char *inaddr) -{ - char buffer[MAXHOSTNAMELEN +1]; - - unsigned short port = 0; - if (inaddr && (ACE_OS::strlen( inaddr)< MAXHOSTNAMELEN +1)) - ACE_OS::strcpy( buffer, inaddr); - else { - valid_flag = 0; - return 0; - } - // look for port info @ the end of the string - // port can be delineated by a ':' or a '/' - // if neither are present then just treat it - // like a normal IpAddress - char *tmp; - tmp = ACE_OS::strstr( buffer,":"); - if (tmp==0) - tmp = ACE_OS::strstr(buffer,"/"); - - if ( tmp != 0) { - *tmp=0; // null terminator - tmp++; - port = ACE_OS::atoi( tmp); - } - - set_port(port); - return IpAddress::parse_address( buffer); -} - - -//----------[ create a new instance of this Value ]------------------------ -SnmpSyntax *UdpAddress::clone() const -{ - return (SnmpSyntax *) new UdpAddress(*this); -} - -//--------[ set the port number ]--------------------------------------- -void UdpAddress::set_port( const unsigned short p) -{ - unsigned short port_nbo = htons(p); - ACE_OS::memcpy(&address_buffer[IPV4LEN], &port_nbo, 2); - format_output(); -} - -//---------[ get the port number ]-------------------------------------- -unsigned short UdpAddress::get_port() const -{ - if (valid_flag) { - unsigned short port_nbo; - ACE_OS::memcpy(&port_nbo, &address_buffer[IPV4LEN], 2); - return ntohs(port_nbo); - } - else - return 0; // don't use uninitialized memory -} - -//------[ return the type ]-------------------------------------------- -addr_type UdpAddress::get_type() const -{ - return type_udp; -} - -//----[ UDP address char * cast ]-------------------------------------- -UdpAddress::operator const char *() const -{ - return (char *)output_buffer; -} - -//----[ UDP address get char representation ]-------------------------- -char * UdpAddress::to_string() -{ - return (char *)output_buffer; -} - -// make format same as ACE_INET_Addr class (addr:port) -void UdpAddress::format_output() -{ - IpAddress::format_output(); // allow ancestors to format their buffers - - // if valid format else null it - if ( valid_flag) - ACE_OS::sprintf( (char *) output_buffer,"%s:%d", - IpAddress::to_string(), - get_port() ); - else - output_buffer[0] = 0; -} - - -//======================================================================= -//=========== Netbios Address Implementation ============================ -//======================================================================= - -void NetbiosAddress::format_output() -{ - if ( valid_flag) - ACE_OS::memcpy(output_buffer, address_buffer, NETBIOSLEN); - else - output_buffer[0] = 0; -} - -void NetbiosAddress::InitNBAddr(const char *inaddr) -{ - if (ACE_OS::strlen(inaddr) == 0) { - // always initialize SMI info - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = NETBIOSLEN; - smival.value.string.ptr = address_buffer; - - valid_flag=0; - NetbiosAddress::format_output(); - return; - } - - // always initialize SMI info - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = IPXLEN; - smival.value.string.ptr = address_buffer; - - valid_flag = parse_address( (char *) inaddr); - NetbiosAddress::format_output(); -} - -// TODO: how to handle addresses < 15 chars (zero out or pad with ' ') -NetbiosAddress::NetbiosAddress( const char *inaddr) -{ - InitNBAddr(inaddr); - -} - -NetbiosAddress::NetbiosAddress( const char *inaddr, nb_service svc) -{ - InitNBAddr(inaddr); - address_buffer[15] = svc; -} - -// TODO: go back over ms/ibm specs and verify this -// 16 chars, 15 can be any character, 16th is service number between 0 and 20 -// names beginning with IBM are reserved, and hence invalid -// and doubt IBM would use this class anyway -int NetbiosAddress::parse_address(const char *address) -{ - if (ACE_OS::strlen(address) > NETBIOSLEN) - return 0; // invalid - - if (ACE_OS::strncmp(address, "IBM", 3) == 0) - return 0; // invalid - - // addresses are free form but this check may need to be expose to user - // - //if (address[15] < nb_workstation || address[15] > nb_server) - // return 0; //invalid service type - - ACE_OS::memset(address_buffer, 0, NETBIOSLEN); - ACE_OS::memcpy(address_buffer, address, NETBIOSLEN); - - return 1; // valid -} - -NetbiosAddress::NetbiosAddress( const NetbiosAddress& nbaddr) -{ - // always initialize SMI info - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = NETBIOSLEN; - smival.value.string.ptr = address_buffer; - - valid_flag = nbaddr.valid_flag; - if (valid_flag) - ACE_OS::memcpy(address_buffer, nbaddr.address_buffer, NETBIOSLEN); - NetbiosAddress::format_output(); -} - -NetbiosAddress::NetbiosAddress( const GenAddress& genaddr) -{ - // always initialize SMI info - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = NETBIOSLEN; - smival.value.string.ptr = address_buffer; - - valid_flag = 0; - // allow use of an ipx or ipxsock address - if ( (genaddr.get_type() == type_nb) ) { - valid_flag = genaddr.valid(); - if ( valid_flag) { - // copy in the Ipx address data - NetbiosAddress temp_nb( (const char *) genaddr); - *this = temp_nb; - } - } - NetbiosAddress::format_output(); -} - -NetbiosAddress::~NetbiosAddress() -{ -} - -char *NetbiosAddress::to_string() -{ - return (char *)output_buffer; -} - -void NetbiosAddress::to_octet(OctetStr& octet) const -{ - octet.set_data( smival.value.string.ptr, smival.value.string.len); -} - -NetbiosAddress& NetbiosAddress::operator=( const NetbiosAddress &val) -{ - // protect against assignment from itself - if ( this == &val ) - return *this; - - valid_flag = 0; // will set to 1 if really valid - if (val.valid()) { - switch (((NetbiosAddress *) &val)->get_syntax()) { - case sNMP_SYNTAX_OCTETS: - ACE_OS::memcpy(address_buffer, - ((NetbiosAddress &)val).smival.value.string.ptr, NETBIOSLEN); - valid_flag = 1; - break; - } - } - NetbiosAddress::format_output(); - return *this; -} - -nb_service NetbiosAddress::get_service_type() const -{ - return (nb_service) address_buffer[15]; -} - -void NetbiosAddress::set_service_type(nb_service nbservice) -{ - address_buffer[15] = nbservice; - NetbiosAddress::format_output(); -} - -NetbiosAddress::operator const char *() const -{ - return (char *)output_buffer; -} - -SnmpSyntax& NetbiosAddress::operator=( SnmpSyntax &val) -{ - // protect against assignment from itself - if ( this == &val ) - return *this; - - valid_flag = 0; // will set to 1 if really valid - if (val.valid()) { - switch (val.get_syntax()) { - case sNMP_SYNTAX_OCTETS: - if (((NetbiosAddress &)val).smival.value.string.len == NETBIOSLEN) { - ACE_OS::memcpy(address_buffer, - ((NetbiosAddress &)val).smival.value.string.ptr, NETBIOSLEN); - valid_flag=1; - } - break; - } - } - NetbiosAddress::format_output(); - return *this; -} - -SnmpSyntax *NetbiosAddress::clone() const -{ - return (SnmpSyntax *) new NetbiosAddress(*this); -} - -SmiUINT32 NetbiosAddress::get_syntax() -{ - return sNMP_SYNTAX_OCTETS; -} - -addr_type NetbiosAddress::get_type() const -{ - return type_nb; -} - -//======================================================================= -//=========== IPX Address Implementation ================================ -//======================================================================= - -//-----------[ syntax type ]---------------------------------------------- -SmiUINT32 IpxAddress::get_syntax() -{ - return sNMP_SYNTAX_OCTETS; -} - - -//----------[ default constructor with a string arg ]--------------------------- -IpxAddress::IpxAddress( const char *inaddr):Address( ) -{ - if (ACE_OS::strlen(inaddr) == 0) { - // always initialize SMI info - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = IPXLEN; - smival.value.string.ptr = address_buffer; - - separator = '\0'; - valid_flag=0; - IpxAddress::format_output(); - return; - } - // always initialize SMI info - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = IPXLEN; - smival.value.string.ptr = address_buffer; - - separator = '\0'; - valid_flag = parse_address( (char *) inaddr); - IpxAddress::format_output(); -} - - -//-----[ IPX Address copy constructor ]---------------------------------- -IpxAddress::IpxAddress(const IpxAddress &ipxaddr) -{ - // always initialize SMI info - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = IPXLEN; - smival.value.string.ptr = address_buffer; - - separator = '\0'; - valid_flag = ipxaddr.valid_flag; - if (valid_flag) - ACE_OS::memcpy(address_buffer, ipxaddr.address_buffer, IPXLEN); - IpxAddress::format_output(); -} - - -//----[ construct an IpxAddress from a GenAddress ]--------------------------- -IpxAddress::IpxAddress( const GenAddress &genaddr) -{ - // always initialize SMI info - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = IPXLEN; - smival.value.string.ptr = address_buffer; - - valid_flag = 0; - // allow use of an ipx or ipxsock address - if ( (genaddr.get_type() == type_ipx) ) { - valid_flag = genaddr.valid(); - if ( valid_flag) { - // copy in the Ipx address data - IpxAddress temp_ipx( (const char *) genaddr); - *this = temp_ipx; - } - } - else - if ( (genaddr.get_type() == type_ipxsock) ) { - valid_flag = genaddr.valid(); - if ( valid_flag) { - // copy in the Ipx address data - IpxSockAddress temp_ipxsock( (const char *) genaddr); - *this = temp_ipxsock; - } - } - IpxAddress::format_output(); -} - - -//-----[ destructor ]-------------------------------------------------- -IpxAddress::~IpxAddress() -{ -} - - -//-----[ IPX Address general = operator ]------------------------------- -SnmpSyntax& IpxAddress::operator=( SnmpSyntax &val) -{ - // protect against assignment from itself - if ( this == &val ) - return *this; - - valid_flag=0; // will set to 1 if really valid - if (val.valid()){ - switch (val.get_syntax()){ - case sNMP_SYNTAX_OCTETS: - if (((IpxAddress &)val).smival.value.string.len == IPXLEN){ - ACE_OS::memcpy(address_buffer, ((IpxAddress &)val).smival.value.string.ptr, IPXLEN); - valid_flag=1; - } - break; - } - } - IpxAddress::format_output(); - return *this; -} - -//--------[ assignment to another IpAddress object overloaded ]---------- -IpxAddress& IpxAddress::operator=( const IpxAddress &ipxaddress) -{ - // protect against assignment from itself - if ( this == &ipxaddress ) - return *this; - - valid_flag = ipxaddress.valid_flag; - if (valid_flag) - ACE_OS::memcpy(address_buffer, ipxaddress.address_buffer, IPXLEN); - IpxAddress::format_output(); - return *this; -} - - -// create a new instance of this Value -SnmpSyntax *IpxAddress::clone() const -{ - return (SnmpSyntax *) new IpxAddress(*this); -} - -//-----[ IPX Address parse Address ]----------------------------------- -// Convert a string to a ten byte ipx address -// On success sets validity 1 or 0 -// -// IPX address format -// -// NETWORK ID| MAC ADDRESS -// 01 02 03 04|05 06 07 08 09 10 -// XX XX XX XX|XX XX XX XX XX XX -// -// Valid input format -// -// XXXXXXXX.XXXXXXXXXXXX -// Total length must be 21 -// Must have a separator in it -// First string length must be 8 -// Second string length must be 12 -// Each char must take on value 0-F -// -// -// Input formats recognized -// -// XXXXXXXX.XXXXXXXXXXXX -// XXXXXXXX:XXXXXXXXXXXX -// XXXXXXXX-XXXXXXXXXXXX -// XXXXXXXX.XXXXXX-XXXXXX -// XXXXXXXX:XXXXXX-XXXXXX -// XXXXXXXX-XXXXXX-XXXXXX -int IpxAddress::parse_address( const char *inaddr) -{ - char unsigned *str1,*str2; - char temp[30]; // don't destroy original - char unsigned *tmp; - size_t z, tmplen; - - - // save the orginal source - if (!inaddr || (ACE_OS::strlen( inaddr) >(sizeof(temp)-1))) return 0; - ACE_OS::strcpy( temp, inaddr); - trim_white_space( temp); - tmplen = ACE_OS::strlen(temp); - - // bad total length check - // 123456789012345678901 - // XXXXXXXX-XXXXXXXXXXXX 21 len - // - // XXXXXXXX-XXXXXX-XXXXXX 22 len - // need at least 21 chars and no more than 22 - if ( (tmplen <21) || (tmplen >22)) - return 0; - - // convert the string to all lower case - // this allows hex values to be in upper or lower - for (z=0;z< tmplen;z++) - temp[z] = tolower(temp[z]); - - // check for separated nodeid - // if found remove it - if (temp[15] == '-') - { - for(z=16;z= '0') && (*tmp <= '9'))|| // good 0-9 - ((*tmp >= 'a') && (*tmp <= 'f'))) // or a-f - tmp++; - else - return 0; - - // check out the MAC address - tmp = str2; - while( *tmp != 0) - if (((*tmp >= '0') && (*tmp <= '9'))|| // good 0-9 - ((*tmp >= 'a') && (*tmp <= 'f'))) // or a-f - tmp++; - else - return 0; - - // convert to target string - tmp = str1; - while ( *tmp != 0) - { - if (( *tmp >= '0') && ( *tmp <= '9')) - *tmp = *tmp - (char unsigned )'0'; - else - *tmp = *tmp - (char unsigned) 'a' + (char unsigned) 10; - tmp++; - } - - // network id portion - address_buffer[0] = (str1[0]*16) + str1[1]; - address_buffer[1] = (str1[2]*16) + str1[3]; - address_buffer[2] = (str1[4]*16) + str1[5]; - address_buffer[3] = (str1[6]*16) + str1[7]; - - tmp = str2; - while ( *tmp != 0) - { - if (( *tmp >= '0') && ( *tmp <= '9')) - *tmp = *tmp - (char unsigned) '0'; - else - *tmp = *tmp - (char unsigned) 'a'+ (char unsigned) 10; - tmp++; - } - - address_buffer[4] = (str2[0]*16) + str2[1]; - address_buffer[5] = (str2[2]*16) + str2[3]; - address_buffer[6] = (str2[4]*16) + str2[5]; - address_buffer[7] = (str2[6]*16) + str2[7]; - address_buffer[8] = (str2[8]*16) + str2[9]; - address_buffer[9] = (str2[10]*16) + str2[11]; - - return 1; -} - -//----[ IPX address char * cast ]-------------------------------------- -IpxAddress::operator const char *() const -{ - return (char *)output_buffer; -} - -//----[ IPX address get char representation ]-------------------------- -char * IpxAddress::to_string() -{ - return (char *)output_buffer; -} - - -//----[ IPX address format output ]------------------------------------- -void IpxAddress::format_output() -{ - if ( valid_flag) - ACE_OS::sprintf((char *) output_buffer, - "%02x%02x%02x%02x%c%02x%02x%02x%02x%02x%02x", - address_buffer[0],address_buffer[1], - address_buffer[2],address_buffer[3],'-', - address_buffer[4],address_buffer[5], - address_buffer[6],address_buffer[7], - address_buffer[8],address_buffer[9]); - else - output_buffer[0] = 0; -} - - -// get the host id portion of an ipx address -int IpxAddress::get_hostid( MacAddress& mac) -{ - if ( valid_flag) - { - char buffer[18]; - ACE_OS::sprintf( buffer,"%02x:%02x:%02x:%02x:%02x:%02x", - address_buffer[4], - address_buffer[5], address_buffer[6], address_buffer[7], - address_buffer[8], address_buffer[9]); - MacAddress temp( buffer); - // mac = (SnmpSyntax&) temp; - mac = temp; - if ( mac.valid()) - return 1; - else - return 0; - } - else - return 0; -} - - -//------[ return the type ]---------------------------------- -addr_type IpxAddress::get_type() const -{ - return type_ipx; -} - -void IpxAddress::to_octet(OctetStr& octet) const -{ - octet.set_data( smival.value.string.ptr, smival.value.string.len); -} - - -//======================================================================== -//======== IpxSockAddress Implementation ================================= -//======================================================================== - -//-----------[ syntax type ]---------------------------------------------- -SmiUINT32 IpxSockAddress::get_syntax() -{ - return sNMP_SYNTAX_OCTETS; -} - -//-----------[ construct an IpxSockAddress with another IpxSockAddress]---- -IpxSockAddress::IpxSockAddress( const IpxSockAddress &ipxaddr):IpxAddress(ipxaddr) -{ - // always initialize SMI info - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = IPXSOCKLEN; - smival.value.string.ptr = address_buffer; - - // copy the socket value - set_socket(ipxaddr.get_socket()); - format_output(); -} - - -//---------------[ default construct a IpxSockAddress ]-------------- -IpxSockAddress::IpxSockAddress( const char *inaddr):IpxAddress() -{ - if (ACE_OS::strlen(inaddr) == 0) { - // always initialize SMI info - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = IPXSOCKLEN; - smival.value.string.ptr = address_buffer; - - set_socket(0); - format_output(); - return; - } - - // always initialize SMI info - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = IPXSOCKLEN; - smival.value.string.ptr = address_buffer; - - valid_flag = parse_address( (char *) inaddr); - format_output(); -} - - -//---------------[ construct a IpxSockAddress from a GenAddress ]---------- -IpxSockAddress::IpxSockAddress( const GenAddress &genaddr):IpxAddress() -{ - // always initialize SMI info - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = IPXSOCKLEN; - smival.value.string.ptr = address_buffer; - - valid_flag = 0; - unsigned short socketid = 0; - // allow use of an ipx or ipxsock address - if ( (genaddr.get_type() == type_ipx) ) - { - valid_flag = genaddr.valid(); - if ( valid_flag) - { - // copy in the Ipx address data - IpxAddress temp_ipx( (const char *) genaddr); - *this = temp_ipx; - } - } - else - if ( (genaddr.get_type() == type_ipxsock) ) - { - valid_flag = genaddr.valid(); - if ( valid_flag) - { - // copy in the Ipx address data - IpxSockAddress temp_ipxsock( (const char *) genaddr); - *this = temp_ipxsock; - // socketid info since are making an IpxSockAddress - socketid = temp_ipxsock.get_socket(); - } - } - set_socket(socketid); - format_output(); -} - - -//------------[ construct an IpxSockAddress from a IpxAddress ]-------------- -IpxSockAddress::IpxSockAddress( const IpxAddress &ipxaddr):IpxAddress(ipxaddr) -{ - // always initialize SMI info - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = IPXSOCKLEN; - smival.value.string.ptr = address_buffer; - - set_socket(0); - format_output(); -} - -//-----[ destructor ]-------------------------------------------------- -IpxSockAddress::~IpxSockAddress() -{ -} - -// copy an instance of this Value -SnmpSyntax& IpxSockAddress::operator=( SnmpSyntax &val) -{ - // protect against assignment from itself - if ( this == &val ) - return *this; - - valid_flag=0; // will set to 1 if really valid - if (val.valid()){ - switch (val.get_syntax()){ - case sNMP_SYNTAX_OCTETS: - { - // See if it is of the Ipx address family - // This handles IpxSockAddress == IpxAddress - IpxSockAddress temp_ipx(val.to_string()); - if (temp_ipx.valid()){ - *this = temp_ipx; // ipxsock = ipxsock - } - // See if it is an OctetStr of appropriate length - else if (((IpxSockAddress &)val).smival.value.string.len == IPXSOCKLEN){ - ACE_OS::memcpy(address_buffer, - ((IpxSockAddress &)val).smival.value.string.ptr, - IPXSOCKLEN); - valid_flag=1; - } - } - break; - } - } - format_output(); - return *this; -} - -// assignment to another IpAddress object overloaded -IpxSockAddress& IpxSockAddress::operator=( const IpxSockAddress &ipxaddr) -{ - // protect against assignment from itself - if ( this == &ipxaddr ) - return *this; - - (IpxAddress&)*this = ipxaddr; // use ancestor assignment for ipx addr - set_socket(ipxaddr.get_socket()); // copy socket value - format_output(); - return *this; -} - - -//----------[ create a new instance of this Value ]------------------------ -SnmpSyntax *IpxSockAddress::clone() const -{ - return (SnmpSyntax *) new IpxSockAddress(*this); -} - -//----[ IPXSock address char * cast ]-------------------------------------- -IpxSockAddress::operator const char *() const -{ - return (char *)output_buffer; -} - -//----[ IPXSock address get char representation ]-------------------------- -char * IpxSockAddress::to_string() -{ - return (char *)output_buffer; -} - -//----[ IPX address format output ]------------------------------------- -void IpxSockAddress::format_output() -{ - IpxAddress::format_output(); // allow ancestors to format their buffers - - if ( valid_flag) - ACE_OS::sprintf((char *) output_buffer,"%s/%d", - IpxAddress::to_string(), get_socket()); - else - output_buffer[0] = 0; -} - -//-----[ IP Address parse Address ]--------------------------------- -int IpxSockAddress::parse_address( const char *inaddr) -{ - char buffer[MAXHOSTNAMELEN +1]; - unsigned short socketid=0; - - if (inaddr && (ACE_OS::strlen( inaddr)< MAXHOSTNAMELEN)) - ACE_OS::strcpy( buffer, inaddr); - else - { - valid_flag = 0; - return 0; - } - // look for port info @ the end of the string - // port can be delineated by a ':' or a '/' - // if neither are present then just treat it - // like a normal IpAddress - char *tmp; - tmp = ACE_OS::strstr( buffer,"/"); - - if (tmp != 0) - { - *tmp=0; // null terminator - tmp++; - socketid = ACE_OS::atoi( tmp); - } - set_socket(socketid); - return IpxAddress::parse_address( buffer); -} - - - -//-------------[ set the socket number ]---------------------------------- -void IpxSockAddress::set_socket( const unsigned short s) -{ - unsigned short sock_nbo = htons(s); - ACE_OS::memcpy(&address_buffer[IPXLEN], &sock_nbo, 2); -} - -//--------------[ get the socket number ]--------------------------------- -unsigned short IpxSockAddress::get_socket() const -{ - if (valid_flag) - { - unsigned short sock_nbo; - ACE_OS::memcpy(&sock_nbo, &address_buffer[IPXLEN], 2); - return ntohs(sock_nbo); - } - else - return 0; // don't use uninitialized memory -} - -//------[ return the type ]---------------------------------------------- -addr_type IpxSockAddress::get_type() const -{ - return type_ipxsock; -} - - -//======================================================================== -//======== MACAddress Implementation ===================================== -//======================================================================== - -//-----------[ syntax type ]---------------------------------------------- -SmiUINT32 MacAddress::get_syntax() -{ - return sNMP_SYNTAX_OCTETS; -} - -//-----[ MAC Address copy constructor ]--------------------------------- -MacAddress::MacAddress(const MacAddress &macaddr) -{ - // always initialize SMI info - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = MACLEN; - smival.value.string.ptr = address_buffer; - - valid_flag = macaddr.valid_flag; - if (valid_flag) - ACE_OS::memcpy(address_buffer, macaddr.address_buffer, MACLEN); - format_output(); -} - -//---------[ constructor with a string argument ]------------------------- -MacAddress::MacAddress( const char *inaddr):Address( ) -{ - if (ACE_OS::strlen(inaddr) == 0) { - // always initialize SMI info - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = MACLEN; - smival.value.string.ptr = address_buffer; - - valid_flag=0; - format_output(); - return; - } - - // always initialize SMI info - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = MACLEN; - smival.value.string.ptr = address_buffer; - - valid_flag = parse_address( (char *) inaddr); - format_output(); -} - -//-----[ construct a MacAddress from a GenAddress ]------------------------ -MacAddress::MacAddress( const GenAddress &genaddr) -{ - // always initialize SMI info - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = MACLEN; - smival.value.string.ptr = address_buffer; - - valid_flag = 0; - // allow use of mac address - if (genaddr.get_type() == type_mac) - { - valid_flag = genaddr.valid(); - if ( valid_flag) - { - // copy in the Mac address data - MacAddress temp_mac( (const char *) genaddr); - *this = temp_mac; - } - } - format_output(); -} - -//-----[ destructor ]-------------------------------------------------- -MacAddress::~MacAddress() -{ -} - -//---------[ MacAddress clone ]------------------------------------------- -SnmpSyntax *MacAddress::clone() const -{ - return (SnmpSyntax *) new MacAddress(*this); -} - -//------[ assignment to another ipaddress object overloaded ]-------------- -MacAddress& MacAddress::operator=( const MacAddress &macaddress) -{ - // protect against assignment from itself - if ( this == &macaddress ) - return *this; - - valid_flag = macaddress.valid_flag; - if (valid_flag) - ACE_OS::memcpy(address_buffer, macaddress.address_buffer, MACLEN); - format_output(); - return *this; -} - - - -//-----[ MAC Address general = operator ]--------------------------------- -SnmpSyntax& MacAddress::operator=( SnmpSyntax &val) -{ - // protect against assignment from itself - if ( this == &val ) - return *this; - - valid_flag=0; // will set to 1 if really valid - if (val.valid()){ - switch (val.get_syntax()){ - case sNMP_SYNTAX_OCTETS: - if (((MacAddress &)val).smival.value.string.len == MACLEN){ - ACE_OS::memcpy(address_buffer, - ((MacAddress &)val).smival.value.string.ptr, MACLEN); - valid_flag=1; - } - break; - } - } - format_output(); - return *this; -} - -//-----[ MAC Address parse Address ]-------------------------------------- -// Convert a string to a six byte MAC address -// On success sets validity 1 or 0 -// -// MAC address format -// -// MAC ADDRESS -// 01 02 03 04 05 06 -// XX:XX:XX:XX:XX:XX -// Valid input format -// -// XXXXXXXXXXXX -// Total length must be 17 -// Each char must take on value 0-F -// -// -int MacAddress::parse_address( const char *inaddr) -{ - char temp[MAXHOSTNAMELEN +1]; // don't destroy original - char unsigned *tmp; - size_t z; - - - // save the orginal source - if ( !inaddr || (ACE_OS::strlen( inaddr) > 30)) return 0; - ACE_OS::strcpy( temp, inaddr); - trim_white_space( temp); - - // bad total length check - if ( ACE_OS::strlen(temp) != 17) - return 0; - - // check for colons - if ((temp[2] != ':')||(temp[5] != ':')||(temp[8]!=':')||(temp[11]!=':') - ||(temp[14] !=':')) - return 0; - - // strip off the colons - tmp = ( unsigned char *) temp; - int i = 0; - while ( *tmp != 0) - { - if (*tmp != ':') - { - temp[i] = *tmp; - i++; - } - tmp++; - } - temp[i] = 0; - - // convert to lower - for(z=0;z= '0') && (*tmp <= '9'))|| // good 0-9 - ((*tmp >= 'a') && (*tmp <= 'f'))) // or a-f - tmp++; - else - return 0; - - // convert to target string - tmp = (unsigned char *) temp; - while ( *tmp != 0) - { - if (( *tmp >= '0') && ( *tmp <= '9')) - *tmp = *tmp - (char unsigned )'0'; - else - *tmp = *tmp - (char unsigned) 'a' + (char unsigned) 10; - tmp++; - } - - address_buffer[0] = (temp[0]*16) + temp[1]; - address_buffer[1] = (temp[2]*16) + temp[3]; - address_buffer[2] = (temp[4]*16) + temp[5]; - address_buffer[3] = (temp[6]*16) + temp[7]; - address_buffer[4] = (temp[8]*16) + temp[9]; - address_buffer[5] = (temp[10]*16) + temp[11]; - - return 1; -} - -//----[ MAC address char * cast ]-------------------------------------- -MacAddress::operator const char *() const -{ - return (char *)output_buffer; -} -//----[ MAC address get char representation ]-------------------------- -char * MacAddress::to_string() -{ - return (char *)output_buffer; -} - -//----[ MAC address format output ]--------------------------------- -void MacAddress::format_output() -{ - if ( valid_flag) - sprintf(output_buffer,"%02x:%02x:%02x:%02x:%02x:%02x",address_buffer[0], - address_buffer[1],address_buffer[2],address_buffer[3], - address_buffer[4],address_buffer[5]); - else - output_buffer[0] = 0; -} - -//------[ return the type ]---------------------------------- -addr_type MacAddress::get_type() const -{ - return type_mac; -} - - -unsigned int MacAddress::hashFunction() const -{ - return ((((address_buffer[0] << 8) + address_buffer[1]) * HASH0) - + (((address_buffer[2] << 8) + address_buffer[3]) * HASH1) - + (((address_buffer[4] << 8) + address_buffer[5]) * HASH2)); -} - -void MacAddress::to_octet(OctetStr& octet) const -{ - octet.set_data( smival.value.string.ptr, smival.value.string.len); -} - -//======================================================================== -//========== Generic Address Implementation ============================== -//======================================================================== - -//-----------[ get the syntax]---------------------------------------------- -SmiUINT32 GenAddress::get_syntax() -{ - if (address != 0) - return address->get_syntax(); - - return sNMP_SYNTAX_NULL; -} - -void GenAddress::init_smi() -{ - smival.syntax = sNMP_SYNTAX_NULL; // to be overridden - smival.value.string.len = 0; // to be overridden - smival.value.string.ptr = address_buffer; // constant -} - -//-----------[ constructor with a string argument ]---------------------- -GenAddress::GenAddress( const char *addr): address(0) -{ - valid_flag = 0; - // initialize SMI info - // BOK: smival is generally not used for GenAddress, but - // we need this to be a replica of the real address' - // smival info so that ::operator=SnmpSyntax - // will work. - init_smi(); - - if (addr && ACE_OS::strlen(addr) == 0) { - format_output(); - return; - } - - parse_address(addr); - - // Copy real address smival info into GenAddr smival - // BOK: smival is generally not used for GenAddress, but - // we need this to be a replica of the real address' - // smival info so that ::operator=SnmpSyntax - // will work. - if ( valid_flag ) { - smival.syntax = ((GenAddress *)address)->smival.syntax; - smival.value.string.len = - ((GenAddress *)address)->smival.value.string.len; - ACE_OS::memcpy(smival.value.string.ptr, - ((GenAddress *)address)->smival.value.string.ptr, - (size_t)smival.value.string.len); - } -} - -//-----------[ constructor with an Address argument ]-------------------- -GenAddress::GenAddress( const Address &addr): address(0) -{ - valid_flag = 0; - - // initialize SMI info - // BOK: this is generally not used for GenAddress, - // but we need this to be a replica of the real address' - // smival info so that operator=SnmpSyntax will work. - init_smi(); - // make sure that the object is valid - if (!addr.valid()) { - format_output(); - return; - } - - address = (Address*)addr.clone(); - if (address) - valid_flag = address->valid(); - - // Copy real address smival info into GenAddr smival - // BOK: smival is generally not used for GenAddress, but - // we need this to be a replica of the real address' - // smival info so that ::operator=SnmpSyntax - // will work. - if ( valid_flag ) { - smival.syntax = address->get_syntax(); - smival.value.string.len = - ((GenAddress *)address)->smival.value.string.len; - ACE_OS::memcpy(smival.value.string.ptr, - ((GenAddress *)address)->smival.value.string.ptr, - (size_t)smival.value.string.len); - } - - format_output(); -} - -//-----------------[ constructor with another GenAddress object ]------------- -GenAddress::GenAddress( const GenAddress &addr): address(0) -{ - valid_flag = 0; - - // initialize SMI info - // BOK: this is generally not used for GenAddress, - // but we need this to be a replica of the real address' - // smival info so that operator=SnmpSyntax will work. - init_smi(); - - // make sure that the object is valid - if (!addr.valid_flag) { - format_output(); - return; - } - - address = (Address *)addr.address->clone(); - if (address) - valid_flag = address->valid(); - - // Copy real address smival info into GenAddr smival - // BOK: smival is generally not used for GenAddress, but - // we need this to be a replica of the real address' - // smival info so that ::operator=SnmpSyntax - // will work. - if ( valid_flag ) { - smival.syntax = ((GenAddress *)address)->smival.syntax; - smival.value.string.len = - ((GenAddress *)address)->smival.value.string.len; - ACE_OS::memcpy(smival.value.string.ptr, - ((GenAddress *)address)->smival.value.string.ptr, - (size_t)smival.value.string.len); - } - - format_output(); -} - -//----------[ destructor ] ------------------------------------------------ -GenAddress::~GenAddress() -{ - if ( address != 0) - delete address; -} - -//----------[ create a new instance of this Value ]------------------------ -SnmpSyntax *GenAddress::clone() const -{ - return (SnmpSyntax *) new GenAddress(*this); -} - -//------[ assignment GenAddress = GenAddress ]----------------------------- -GenAddress& GenAddress::operator=( const GenAddress &addr) -{ - // protect against assignment from itself - if ( this == &addr ) - return *this; - - valid_flag = 0; - if (address) { - delete address; - address = 0; - } - - if (addr.address) - address = (Address *)(addr.address)->clone(); - - if (address) - valid_flag = address->valid(); - - // Copy real address smival info into GenAddr smival - // BOK: smival is generally not used for GenAddress, but - // we need this to be a replica of the real address' - // smival info so that ::operator=SnmpSyntax - // will work. - if ( valid_flag ) { - smival.syntax = ((GenAddress *)address)->smival.syntax; - smival.value.string.len = - ((GenAddress *)address)->smival.value.string.len; - ACE_OS::memcpy(smival.value.string.ptr, - ((GenAddress *)address)->smival.value.string.ptr, - (size_t)smival.value.string.len); - } - - format_output(); - return *this; -} - - -//------[ assignment GenAddress = any SnmpSyntax ]----------------------- -SnmpSyntax& GenAddress::operator=( SnmpSyntax &val) -{ - // protect against assignment from itself - if ( this == &val ) - return *this; - - valid_flag = 0; // will get set to 1 if really valid - if ( address != 0) { - delete address; - address = 0; - } - - if (val.valid()) { - switch ( val.get_syntax() ) { - //-----[ ip address case ]------------- - // BOK: this case shouldn't be needed since there is an explicit - // GenAddr=Address assignment that will override this assignment. - // Left here for posterity. - case sNMP_SYNTAX_IPADDR: - { - address = (Address *)val.clone(); - if (address) - valid_flag = address->valid(); - } - break; - - //-----[ udp address case ]------------ - //-----[ ipx address case ]------------ - //-----[ mac address case ]------------ - // BOK: This is here only to support GenAddr = primitive OctetStr. - // The explicit GenAddr=Address assignment will handle the cases - // GenAddr = [UdpAdd|IpxAddr|IpxSock|MacAddr|DecNetAddr|NetbiosAddr|AppleTlk]. - // Note, using the heuristic of octet str len to determine type of - // address to create is not accurate when address lengths are equal - // (e.g., UDPIPV4LEN == MACLEN). It gets worse if we add AppleTalk or - // OSI which use variable length addresses! assume AppleTalk as used in IOS Mibs - // is defined in CISCO-TC.my as fixed length of 3 octets - - case sNMP_SYNTAX_OCTETS: - { - unsigned long val_len; - val_len = ((GenAddress &)val).smival.value.string.len; - - if (val_len == UDPIPV4LEN) { - ACE_NEW_RETURN(address, UdpAddress, *this); - } - else if (val_len ==IPV4LEN) { - ACE_NEW_RETURN(address, IpAddress, *this); - } - else if (val_len == IPXLEN) { - ACE_NEW_RETURN(address, IpxAddress, *this); - } - else if (val_len == IPXSOCKLEN) { - ACE_NEW_RETURN(address, IpxSockAddress, *this); - } - else if (val_len == MACLEN) { - ACE_NEW_RETURN(address, MacAddress, *this); - } - else if (val_len == APPLETKLEN) { - ACE_NEW_RETURN(address, AppleTalkAddress, *this); - } - else if (val_len == DECNETLEN) { - ACE_NEW_RETURN(address, DecNetAddress, *this); - } - else if (val_len == NETBIOSLEN) { - ACE_NEW_RETURN(address, DecNetAddress, *this); - } - - if (address) { - *address = val; - valid_flag = address->valid(); - } - } - break; - } // end switch - } - - // Copy real address smival info into GenAddr smival - // BOK: smival is generally not used for GenAddress, but - // we need this to be a replica of the real address' - // smival info so that ::operator=SnmpSyntax - // will work. - if ( valid_flag ) { - smival.syntax = ((GenAddress *)address)->smival.syntax; - smival.value.string.len = - ((GenAddress *)address)->smival.value.string.len; - ACE_OS::memcpy(smival.value.string.ptr, - ((GenAddress *)address)->smival.value.string.ptr, - (size_t)smival.value.string.len); - } - - format_output(); - return *this; -} - - -// redefined parse address for macs -// TODO: Add netbios, appletalk, and decnet addresses here -int GenAddress::parse_address( const char *addr) -{ - if ( address != 0) - delete address; - - // try to create each of the addresses until the correct one - // is found - -//BOK: Need to try IPX Sock and IPX before UDP since on Win32, -// gethostbyname() seems to think the ipx network number -// portion is a valid ipaddress string... stupid WinSOCK! - - // ipxsock address - ACE_NEW_RETURN(address, IpxSockAddress( addr), -1); - valid_flag = address->valid(); - if ( valid_flag && ((IpxSockAddress*)address)->get_socket()) { - format_output(); - return 1; // ok its an ipxsock address - } - // otherwise delete it and try another - delete address; - - // ipx address - ACE_NEW_RETURN(address, IpxAddress( addr), -1); - valid_flag = address->valid(); - if ( valid_flag) { - format_output(); - return 1; // ok its an ipx address - } - // otherwise delete it and try another - delete address; - -//TM: Must try the derived classes first...one pitfall of the -//following solution is if someone creates with a port/socket of 0 the -//class will get demoted to ip/ipx. The only proper way to do this is -//to parse the strings ourselves. - - // udp address - ACE_NEW_RETURN(address, UdpAddress( addr), -1); - valid_flag = address->valid(); - if ( valid_flag && ((UdpAddress*)address)->get_port()) { - format_output(); - return 1; // ok its a udp address - } - - // otherwise delete it and try another - delete address; - - // ip address - ACE_NEW_RETURN(address, IpAddress( addr), -1); - valid_flag = address->valid(); - if ( valid_flag) - { - format_output(); - return 1; // ok its an ip address - } - // otherwise delete it and try another - delete address; - - // mac address - ACE_NEW_RETURN(address, MacAddress( addr), -1); - valid_flag = address->valid(); - if ( valid_flag) { - format_output(); - return 1; // ok, its a mac - } - - // guess by length of argument the type of address - switch (ACE_OS::strlen(addr)) { - case NETBIOSLEN: - ACE_NEW_RETURN(address, NetbiosAddress( addr), -1); - valid_flag = address->valid(); - if ( valid_flag) { - format_output(); - return 1; // ok, its a mac - } - break; - - case APPLETKLEN: - ACE_NEW_RETURN(address, AppleTalkAddress( addr), -1); - valid_flag = address->valid(); - if ( valid_flag) { - format_output(); - return 1; // ok, its a mac - } - break; - - case DECNETLEN: - ACE_NEW_RETURN(address, DecNetAddress( addr), -1); - valid_flag = address->valid(); - if ( valid_flag) { - format_output(); - return 1; // ok, its a mac - } - break; - - } - // otherwise its invalid - delete address; - address = 0; - format_output(); - return 0; -} - -GenAddress::operator const char *() const -{ - if ( address != 0) - return (const char *)*address; // pass thru - else - return (char *)output_buffer; -} - -// to_string form of the contained address -char * GenAddress::to_string() -{ - if ( address != 0) - return address->to_string(); // pass thru - else - return (char *)output_buffer; -} - -// format output -void GenAddress::format_output() -{ - output_buffer[0] = '\0'; -} - -//------[ return the type ]---------------------------------- -addr_type GenAddress::get_type() const -{ - if (!valid()) - return type_invalid; - else - return address->get_type(); -} - -// call the particular type class here -void GenAddress::to_octet(OctetStr& octet) const -{ - if (!valid()) - return; - - address->to_octet(octet); -} - -//------------------------------------------------------------------------ -//---------[ DecNet Address Class ]--------------------------------------- -//------------------------------------------------------------------------ - -DecNetAddress::DecNetAddress( const char *inaddr): Address() -{ - if (ACE_OS::strlen(inaddr) == 0) { - // always initialize SMI info - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = DECNETLEN; - smival.value.string.ptr = address_buffer; - - valid_flag=0; - DecNetAddress::format_output(); - return; - } - - // always initialize SMI info - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = DECNETLEN; - smival.value.string.ptr = address_buffer; - - valid_flag = parse_address( (char *) inaddr); - DecNetAddress::format_output(); -} - -DecNetAddress::DecNetAddress( const DecNetAddress&) -{ -} - -DecNetAddress::DecNetAddress( const GenAddress& genaddr) -{ - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = DECNETLEN; - smival.value.string.ptr = address_buffer; - - valid_flag = 0; - // allow use of an ipx or ipxsock address - if ( (genaddr.get_type() == type_decnet) ) { - valid_flag = genaddr.valid(); - if ( valid_flag) { - // copy in the Ipx address data - DecNetAddress temp_ipx( (const char *) genaddr); - *this = temp_ipx; - } - } - DecNetAddress::format_output(); -} - -DecNetAddress::~DecNetAddress() -{ -} - -char *DecNetAddress::to_string() -{ - return (char *)output_buffer; -} - -DecNetAddress& DecNetAddress::operator=( const DecNetAddress &decaddr) -{ - // protect against assignment from itself - if ( this == &decaddr ) - return *this; - valid_flag = decaddr.valid_flag; - if (valid_flag) - ACE_OS::memcpy(address_buffer, decaddr.address_buffer, DECNETLEN); - format_output(); - return *this; -} - -void DecNetAddress::to_octet(OctetStr& octet) const -{ - octet.set_data( smival.value.string.ptr, smival.value.string.len); -} - -DecNetAddress::operator const char *() const -{ - return (char *)output_buffer; -} - -SmiUINT32 DecNetAddress::get_syntax() -{ - return sNMP_SYNTAX_OCTETS; -} - -SnmpSyntax& DecNetAddress::operator=( SnmpSyntax &val) -{ - // protect against assignment from itself - if ( this == &val ) - return *this; - - valid_flag = 0; // will get set 1 if really valid - - if (val.valid()) { - if (((DecNetAddress &)val).smival.value.string.len ==DECNETLEN) { - ACE_OS::memcpy(address_buffer, - ((DecNetAddress &)val).smival.value.string.ptr, DECNETLEN); - valid_flag = 1; - } - } - DecNetAddress::format_output(); - return *this; -} - -SnmpSyntax *DecNetAddress::clone() const -{ - return (SnmpSyntax *) new DecNetAddress(*this); -} - -addr_type DecNetAddress::get_type() const -{ - return type_decnet; -} - -void DecNetAddress::format_output() -{ - // if valid format else null it - if ( valid_flag) - ACE_OS::sprintf( (char *) output_buffer,"%d.%d",address_buffer[0], - address_buffer[1]); - else - output_buffer[0] = 0; -} - -int DecNetAddress::parse_address( const char *address) -{ - if (ACE_OS::strlen(address) > DECNETLEN) - return 0; // invalid - - ACE_OS::memset(address_buffer, 0, DECNETLEN); - ACE_OS::memcpy(address_buffer, address, DECNETLEN); - - return 1; // valid -} - - -//------------------------------------------------------------------------ -//---------[ AppleTalk Address Class ]------------------------------------ -//------------------------------------------------------------------------ - -AppleTalkAddress::AppleTalkAddress( const char *inaddr): Address() -{ - if (ACE_OS::strlen(inaddr) == 0) { - // always initialize SMI info - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = APPLETKLEN; - smival.value.string.ptr = address_buffer; - - valid_flag=0; - AppleTalkAddress::format_output(); - return; - } - - // always initialize SMI info - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = APPLETKLEN; - smival.value.string.ptr = address_buffer; - - valid_flag = parse_address( (char *) inaddr); - AppleTalkAddress::format_output(); -} -AppleTalkAddress::AppleTalkAddress( const AppleTalkAddress&) -{ -} - -AppleTalkAddress::AppleTalkAddress( const GenAddress& genaddr) -{ - smival.syntax = sNMP_SYNTAX_OCTETS; - smival.value.string.len = APPLETKLEN; - smival.value.string.ptr = address_buffer; - - valid_flag = 0; - // allow use of an ipx or ipxsock address - if ( (genaddr.get_type() == type_atk) ) { - valid_flag = genaddr.valid(); - if ( valid_flag) { - // copy in the Ipx address data - AppleTalkAddress temp_ipx( (const char *) genaddr); - *this = temp_ipx; - } - } - AppleTalkAddress::format_output(); -} - -AppleTalkAddress::~AppleTalkAddress() -{ -} - -char *AppleTalkAddress::to_string() -{ - return (char *)output_buffer; -} - -AppleTalkAddress& AppleTalkAddress::operator=( const AppleTalkAddress &ataddr) -{ - // protect against assignment from itself - if ( this == &ataddr ) - return *this; - valid_flag = ataddr.valid_flag; - if (valid_flag) - ACE_OS::memcpy(address_buffer, ataddr.address_buffer, APPLETKLEN); - format_output(); - return *this; -} - -void AppleTalkAddress::to_octet(OctetStr& octet) const -{ - octet.set_data( smival.value.string.ptr, smival.value.string.len); -} - -AppleTalkAddress::operator const char *() const -{ - return (char *)output_buffer; -} - -SmiUINT32 AppleTalkAddress::get_syntax() -{ - return sNMP_SYNTAX_OCTETS; -} - -SnmpSyntax& AppleTalkAddress::operator=( SnmpSyntax &val) -{ - // protect against assignment from itself - if ( this == &val ) - return *this; - - valid_flag = 0; // will get set 1 if really valid - - if (val.valid()) { - if (((AppleTalkAddress &)val).smival.value.string.len ==APPLETKLEN) { - ACE_OS::memcpy(address_buffer, - ((AppleTalkAddress &)val).smival.value.string.ptr,APPLETKLEN); - valid_flag = 1; - } - } - AppleTalkAddress::format_output(); - return *this; -} - -SnmpSyntax *AppleTalkAddress::clone() const -{ - return (SnmpSyntax *) new AppleTalkAddress(*this); -} - -addr_type AppleTalkAddress::get_type() const -{ - return type_atk; -} - -void AppleTalkAddress::format_output() -{ - // if valid format else null it - if ( valid_flag) - ACE_OS::sprintf( (char *) output_buffer,"%d.%d.%d", address_buffer[0], - address_buffer[1], address_buffer[3]); - else - output_buffer[0] = 0; -} - -int AppleTalkAddress::parse_address( const char *address) -{ - if (ACE_OS::strlen(address) > APPLETKLEN) - return 0; // invalid - - ACE_OS::memset(address_buffer, 0, APPLETKLEN); - ACE_OS::memcpy(address_buffer, address, APPLETKLEN); - - return 1; // valid -} - -char AppleTalkAddress::get_host_address() const -{ - return address_buffer[2]; -} - -void AppleTalkAddress::set_host_address(const char host) -{ - address_buffer[2] = host; -} - -short AppleTalkAddress::get_net_address() const -{ - short net; - ACE_OS::memcpy(&net, address_buffer, APPLETKLEN - 1); - return net; -} - -void AppleTalkAddress::set_net_address(const short atknet) -{ - ACE_OS::memcpy(address_buffer, &atknet, APPLETKLEN -1); -} diff --git a/ASNMP/asnmp/address.h b/ASNMP/asnmp/address.h deleted file mode 100644 index 5258304e109..00000000000 --- a/ASNMP/asnmp/address.h +++ /dev/null @@ -1,812 +0,0 @@ -/* -*-C++-*- */ -// $Id$ -#ifndef ADDRESS_ -#define ADDRESS_ -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// address.h -// -// = DESCRIPTION -// Address class definition. Encapsulates various network -// addresses into easy to use, safe and portable classes. -// -// = AUTHOR -// Peter E Mellquist -// -// ============================================================================ - -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -//----[ includes ]----------------------------------------------------- -// ACE OS Adaption layer -#include "ace/OS.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "asnmp/smival.h" -#include "asnmp/octet.h" - -//----[ enumerated types ] -------------------------------- -enum address_lengths { - IPV4LEN=4, - UDPIPV4LEN=6, - IPV6LEN=16, - UDPIPV6LEN=18, - IPXLEN=10, - IPXSOCKLEN=12, - NETBIOSLEN=16, - APPLETKLEN=3, - DECNETLEN=2, - MACLEN=6, - HASH0=19, - HASH1=13, - HASH2=7, - MAX_ADDR_SZ=20, - MAX_DISPLAY_SZ=MAXHOSTNAMELEN+1 -}; - -enum addr_type { - type_ip, - type_ipx, - type_udp, - type_ipxsock, - type_mac, - type_nb, - type_atk, - type_decnet, - type_e164, - type_sip, // IPv6 - type_invalid -}; - -// TODO: get rest of nb service types added here -enum nb_service { - nb_workstation = 0x0, nb_server = 0x20 -}; - -//---[ forward declarations ]----------------------------------------- -class GenAddress; -class UdpAddress; -class IpxSockAddress; -class NetbiosAddress; -class SIPAddress; // aka ipv6 - -// TODO: -// class AtmE164Address; - - -//-------------------------------------------------------------------- -//----[ Address class ]----------------------------------------------- -//-------------------------------------------------------------------- -class ACE_Export Address: public SnmpSyntax - // = TITLE - // Defines the member functions for the abstract base class - // Address. An Address is a unique network endpoint. -{ - -public: - virtual ~Address(); - // allow destruction of derived classes - - friend int operator==( const Address &lhs,const Address &rhs); - // overloaded equivlence operator, are two addresses equal? - - friend int operator!=( const Address &lhs,const Address &rhs); - // overloaded not equivlence operator, are two addresses not equal? - - friend int operator>( const Address &lhs,const Address &rhs); - // overloaded > operator, is a1 > a2 - - friend int operator>=( const Address &lhs,const Address &rhs); - // overloaded >= operator, is a1 >= a2 - - friend int operator<( const Address &lhs,const Address &rhs); - // overloaded < operator, is a1 < a2 - - friend int operator<=( const Address &lhs,const Address &rhs); - // overloaded <= operator, is a1 <= a2 - - friend int operator==( const Address &lhs,const char *rhs); - // equivlence operator overloaded, are an address and a string equal? - - friend int operator!=( const Address &lhs,const char *rhs); - // overloaded not equivlence operator, are an address and string not equal? - - friend int operator>( const Address &lhs,const char *rhs); - // overloaded < , is an address greater than a string? - - friend int operator>=( const Address &lhs,const char *rhs); - // overloaded >=, is an address greater than or equal to a string? - - friend int operator<( const Address &lhs,const char *rhs); - // overloaded < , is an address less than a string? - - friend int operator<=( const Address &lhs,const char *rhs); - // overloaded <=, is an address less than or equal to a string? - - virtual operator const char *() const = 0; - // overloaded const char * cast - - virtual int valid() const; - // verify the is the address object constructed ok - - virtual void to_octet(OctetStr& octet) const = 0; - // return a suitable buffer to contain the address - - virtual SmiUINT32 get_syntax() = 0; - // (pure virtual) syntax type - - unsigned char& operator[]( const int position); - // for non const [], allows reading and writing - - virtual char *to_string() = 0; - // get a printable ASCII value - - virtual SnmpSyntax *clone() const = 0; - // create a new instance of this Value - - virtual addr_type get_type() const = 0; - // return the type of address - - virtual SnmpSyntax& operator=( SnmpSyntax &val) = 0; - // overloaded assignment operator - - virtual unsigned int hashFunction() const { return 0;}; - // return a hash key - - -protected: - int valid_flag; - // state of constructed object (1/0) - unsigned char address_buffer[MAX_ADDR_SZ]; - // addr internal representation - - virtual int parse_address( const char * inaddr) =0; - // parse the address string - // redefined for each specific address subclass - - virtual void format_output() =0; - // format the output - // redefined for each specific address subclass - - void trim_white_space( char * ptr); - // a reused trimm white space method -}; - - -//----------------------------------------------------------------------- -//---------[ IPv4 Address Class ]---------------------------------------- -//----------------------------------------------------------------------- -class ACE_Export IpAddress : public Address - // = TITLE - // Defines the member functions for the concrete class IpAddress - // An IP Version 4 Address is 4 bytes long and consists of a - // Network, Sub Network, and host component. -{ -public: - IpAddress( const char *inaddr = ""); - // default construct an IP address with a string - - IpAddress( const IpAddress &ipaddr); - // construct an IP address with another IP address - - IpAddress( const GenAddress &genaddr); - // construct an IP address with a GenAddress - - ~IpAddress(); - // destructor (ensure that SnmpSyntax::~SnmpSyntax() is overridden) - - SnmpSyntax& operator=( SnmpSyntax &val); - // copy an instance of this Value - - IpAddress& operator=( const IpAddress &ipaddress); - // assignment to another IpAddress object overloaded - - // TODO: add ability to set addr given long - - SnmpSyntax *clone() const; - // create a new instance of this Value - - char *resolve_hostname(int& was_found); - // return the DNS Fully Qualified Domain Name (host.domain) - // on failure returns dotted_quad string - - virtual char *to_string() ; - // return string representation of object (dotted quad returned) - - virtual operator const char *() const; - // const char * operator overloaded for streaming output - - void mask( const IpAddress& ipaddr); - // logically AND two IPaddresses and - // return the new one - - virtual addr_type get_type() const; - // return the type - - virtual SmiUINT32 get_syntax(); - // syntax type - - int is_loopback() const; - // is this the loopback address? 127.0.0.1/loopback/1.0.0.127.in-addr.arpa - - int is_multicast() const; - // determine if this is a multicast address - - int is_broadcast() const; - // determine if this a broadcast address - - int is_private() const; - // per RFC 1597, private addresses are:: 10, 172.16, and 192.168.0 - - virtual void to_octet(OctetStr& octet) const; - // convert address into octet string format in network byte order - -protected: - char output_buffer[MAX_DISPLAY_SZ]; // output buffer - - char iv_friendly_name_[MAX_DISPLAY_SZ]; - // friendly name storage - - int iv_friendly_name_status_; - // did resolver call work? some addrs won't resolve - - virtual int parse_address( const char *inaddr); - // redefined parse address - // specific to IP addresses - - virtual void format_output(); - // redefined format output - // specific to IP addresses - - int parse_dotted_ipstring( const char *inaddr); - // parse a dotted string - - int addr_to_friendly(); - // using the currently defined address, do a gethostbyname() - // and try to fill up the name - - static int resolve_to_address(const char *hostname, in_addr& quad_addr); - // thread safe routine to lookup ip address given hostname - // return <> 0 on error - - static int resolve_to_hostname(const in_addr& quad_addr, char *hostname); - // thread safe routine to lookup name given ip address - // return <> 0 on error - -}; - -//------------------------------------------------------------------------ -//--------------[ DNS Iterator Class ]------------------------------------ -//------------------------------------------------------------------------ - -class ACE_Export Address_Iter - // = TITLE - // Defines routines to obtain information on a hostname/FQDN - // such as multiple addresses -{ -public: - Address_Iter(const char *hostname); // fully qualified domain name, hostname - - int valid() const; - // did hostname resolve via DNS? - - int how_many_addresses(); - // how many addresses associated with this hostname - - int next(IpAddress& addr); - // return next address - -private: - Address_Iter(const Address_Iter&); - int valid_; // ctor status - int count_; // number of addresses - char **entry_; // ptr to current address - struct hostent lookupResult_; - ACE_HOSTENT_DATA buffer_; - int query_dns(const char *hostname); -}; - -//------------------------------------------------------------------------ -//---------[ UDP/IPv4 Address Class ]------------------------------------- -//------------------------------------------------------------------------ -class ACE_Export UdpAddress : public IpAddress - // = TITLE - // Defines the member functions for the concrete class UdpAddress - // A Udp Address consists of an IP Version 4 Address (IpAddress) - // and a 2 byte unsigned port number. (see /etc/services file) - // User Datagram Protocol (UDP) is a best effort transport -{ -public: - UdpAddress( const char *inaddr = ""); - // default constructor with a dotted string in the form of addr:port - - UdpAddress( const UdpAddress &udpaddr); - // construct an Udp address with another Udp address - - UdpAddress( const GenAddress &genaddr); - // construct a Udp address with a GenAddress - - UdpAddress( const IpAddress &ipaddr); - // construct a Udp address with an IpAddress - // default port # to zero - - ~UdpAddress(); - // destructor - - SmiUINT32 get_syntax(); - // syntax type - - SnmpSyntax& operator=( SnmpSyntax &val); - // copy an instance of this Value - - UdpAddress& operator=( const UdpAddress &udpaddr); - // assignment to another IpAddress object overloaded - - SnmpSyntax *clone() const; - // create a new instance of this Value - - virtual char *to_string() ; - // output in the form of address:port - - virtual operator const char *() const; - // const char * operator overloaded for streaming output - - void set_port( const unsigned short p); - // set the port number - - unsigned short get_port() const; - // get the port number - - virtual addr_type get_type() const; - // return the type - -protected: - char output_buffer[MAX_DISPLAY_SZ]; - // output buffer - - virtual int parse_address( const char *inaddr); - // redefined parse address - // specific to IP addresses - - virtual void format_output(); - // redefined format output - // specific to IP addresses -}; - - -//------------------------------------------------------------------------- -//---------[ 802.3 MAC Address Class ]------------------------------------- -//------------------------------------------------------------------------- -class ACE_Export MacAddress : public Address - // = TITLE - // Defines the member functions for the concrete class MacAddress. - // A Media Access Control Address consists of 48 bits as defined - // in IEEE 802.3 specifications. -{ -public: - MacAddress( const char *inaddr = ""); - // constructor with a string argument - - MacAddress( const MacAddress &macaddr); - // constructor with another MAC object - - MacAddress( const GenAddress &genaddr); - // construct a MacAddress with a GenAddress - - ~MacAddress(); - // destructor - - SmiUINT32 get_syntax(); - // syntax type - - SnmpSyntax& operator=( SnmpSyntax &val); - // copy an instance of this Value - - MacAddress& operator=( const MacAddress &macaddress); - // assignment to another IpAddress object overloaded - - SnmpSyntax *clone() const; - // create a new instance of this Value - - virtual char *to_string(); - // create a string to internal class storage representing object - - virtual operator const char *() const; - // const char * operator overloaded for streaming output - - virtual addr_type get_type() const; - // return the type - - unsigned int hashFunction() const; - // return a hash key - - virtual void to_octet(OctetStr& octet) const; - // return byte array of the mac address - -protected: - char output_buffer[MAX_DISPLAY_SZ]; - // output buffer containing string representation of object - - virtual int parse_address( const char *inaddr); - // redefined parse address for macs - - virtual void format_output(); - // redefined format output for MACs -}; - -//------------------------------------------------------------------------ -//---------[ Netbios Address Class ]-------------------------------------- -//------------------------------------------------------------------------ -class ACE_Export NetbiosAddress : public Address - // = TITLE - // Defines the member functions for the concrete class NetbiosAddress. - // The IBM/Microsoft address for NETBIOS, NETBEUI protocol transport. -{ -public: - - NetbiosAddress( const char *inaddr = ""); - // default constructor with string arg - - NetbiosAddress( const char *inaddr, nb_service svc); - // set name and service type - - NetbiosAddress( const NetbiosAddress& nbaddr); - // copy constructor - - NetbiosAddress( const GenAddress& genaddr); - // construct with a GenAddress - - ~NetbiosAddress(); - - virtual char *to_string(); - - NetbiosAddress& operator=( const NetbiosAddress &nbaddr); - - nb_service get_service_type() const; - // retrieve the network service type - - void set_service_type(nb_service nbservice); - // set the service type (workstation, server, etc) - - virtual operator const char *() const; - // const char * operator overloaded for streaming output - - virtual SmiUINT32 get_syntax(); - // syntax type - - SnmpSyntax& operator=( SnmpSyntax &val); - // copy an instance of this Value - - SnmpSyntax *clone() const; - // create a new instance of this Value - - virtual void to_octet(OctetStr& octet) const; - // output byte buffer containing netbios name - -protected: - void InitNBAddr(const char *inaddr); - char output_buffer[MAX_DISPLAY_SZ]; - - virtual void format_output(); - // output buffer to hold string representation - virtual int parse_address( const char *inaddr); - virtual addr_type get_type() const; -}; - -//------------------------------------------------------------------------ -//---------[ DecNet Address Class ]--------------------------------------- -//------------------------------------------------------------------------ -class ACE_Export DecNetAddress : public Address - // = TITLE - // Defines the member functions for the concrete class DecNetAddress. - // DecNet Phase ? address consists of two octets (CISCO-TC.my) -{ - public: - DecNetAddress( const char *inaddr = ""); - // default constructor with string arg - - DecNetAddress( const DecNetAddress& decaddr); - // copy constructor - - DecNetAddress( const GenAddress& genaddr); - // construct with a GenAddress - - ~DecNetAddress(); - - virtual char *to_string(); - - DecNetAddress& operator=( const DecNetAddress &decaddr); - - virtual void to_octet(OctetStr& octet) const; - // convert address into octet string format 2 bytes of decnet address - - virtual operator const char *() const; - // const char * operator overloaded for streaming output - - virtual SmiUINT32 get_syntax(); - // syntax type - - SnmpSyntax& operator=( SnmpSyntax &val); - // copy an instance of this Value - - SnmpSyntax *clone() const; - // create a new instance of this Value - - protected: - virtual int parse_address( const char *inaddr); - virtual addr_type get_type() const; - virtual void format_output(); - char output_buffer[MAX_DISPLAY_SZ]; -}; - -//------------------------------------------------------------------------ -//---------[ AppleTalk Address Class ]------------------------------------ -//------------------------------------------------------------------------ -class ACE_Export AppleTalkAddress : public Address - // = TITLE - // Defines the member functions for the concrete class DecNetAddress. - // DecNet Phase ? address consists of two octets (CISCO-TC.my) -{ - public: - AppleTalkAddress( const char *inaddr = ""); - // default constructor with string arg - - AppleTalkAddress( const AppleTalkAddress& atkaddr); - // copy constructor - - AppleTalkAddress( const GenAddress& genaddr); - // construct with a GenAddress - - ~AppleTalkAddress(); - - virtual char *to_string(); - - AppleTalkAddress& operator=( const AppleTalkAddress &atkaddr); - - virtual void to_octet(OctetStr& octet) const; - // convert address into octet string format 3 bytes of atk address - - char get_host_address() const; - // get the host part of the address - - void set_host_address(const char); - // set the host part of the address - - short get_net_address() const; - // get the 2 byte atk network address - - void set_net_address(const short atknet); - // set the host 2 byte atk network address - - virtual operator const char *() const; - // const char * operator overloaded for streaming output - - virtual SmiUINT32 get_syntax(); - // syntax type - - SnmpSyntax& operator=( SnmpSyntax &val); - // copy an instance of this Value - - SnmpSyntax *clone() const; - // create a new instance of this Value - - private: - virtual int parse_address( const char *inaddr); - virtual addr_type get_type() const; - virtual void format_output(); - char output_buffer[MAX_DISPLAY_SZ]; -}; - -//------------------------------------------------------------------------ -//---------[ IPX Address Class ]------------------------------------------ -//------------------------------------------------------------------------ -class ACE_Export IpxAddress : public Address - // = TITLE - // Defines the member functions for the concrete class IpxAddress. - // Novell's IPX (version ?) network protocol endpoint -{ -public: - IpxAddress( const char *inaddr = ""); - // default constructor with a string arg - - IpxAddress( const IpxAddress &ipxaddr); - // constructor with another ipx object - - IpxAddress( const GenAddress &genaddr); - // construct with a GenAddress - - ~IpxAddress(); - // destructor - - virtual SmiUINT32 get_syntax(); - // syntax type - - SnmpSyntax& operator=( SnmpSyntax &val); - // copy an instance of this Value - - IpxAddress& operator=( const IpxAddress &ipxaddress); - // assignment to another IpxAddress object overloaded - - int get_hostid( MacAddress& mac); - // get the host id portion of an ipx address - - SnmpSyntax *clone() const; - // create a new instance of this Value - - virtual char *to_string(); - // create string represtation of object value - - virtual operator const char *() const; - // const char * operator overloaded for streaming output - - virtual addr_type get_type() const; - // return the type - - virtual void to_octet(OctetStr& octet) const; - // return byte sequence containing ipx address - -protected: - char separator; - // ipx format separator {:,/} - - char output_buffer[MAX_DISPLAY_SZ]; - // output buffer to hold string representation - - virtual int parse_address( const char *inaddr); - // redefined parse address for ipx strings - - virtual void format_output(); - // redefined format output for ipx strings - // uses same separator as when constructed -}; - - - -//------------------------------------------------------------------------ -//---------[ IpxSock Address Class ]-------------------------------------- -//------------------------------------------------------------------------ -class ACE_Export IpxSockAddress : public IpxAddress - // = TITLE - // Defines the member functions for the concrete class IpxAddress. - // Novell's IPX (version ?) network protocol endpoint -{ -public: - IpxSockAddress( const char *inaddr = ""); - // constructor with a dotted string - - IpxSockAddress( const IpxSockAddress &ipxaddr); - // construct an Udp address with another Udp address - - IpxSockAddress( const GenAddress &genaddr); - //constructor with a GenAddress - - IpxSockAddress( const IpxAddress &ipxaddr); - //constructor with a IpxAddress - // default socket # is 0 - - ~IpxSockAddress(); - // destructor - - virtual SmiUINT32 get_syntax(); - // syntax type - - SnmpSyntax& operator=( SnmpSyntax &val); - // copy an instance of this Value - - IpxSockAddress& operator=( const IpxSockAddress &ipxaddr); - // assignment to another IpxAddress object overloaded - - SnmpSyntax *clone() const; - // create a new instance of this Value - - void set_socket( const unsigned short s); - // set the socket number - - unsigned short get_socket() const; - // get the socket number - - virtual char *to_string(); - // create string representation of object value - - virtual operator const char *() const; - // const char * operator overloaded for streaming output - - virtual addr_type get_type() const; - // return the type - -protected: - char output_buffer[MAX_DISPLAY_SZ]; - // output buffer to hold string representation of object - - virtual int parse_address( const char *inaddr); - // redefined parse address for ipx strings - - virtual void format_output(); - // redefined format output - // specific to IP addresses -}; - -//------------------------------------------------------------------------- -//--------[ Generic Address ]---------------------------------------------- -//------------------------------------------------------------------------- -class ACE_Export GenAddress : public Address - // = TITLE - // Defines the member functions for the concrete class GenAddress. - // This class attempts to determine an address type given a char string. -{ -public: - GenAddress( const char *addr = ""); - // constructor with a string argument - - GenAddress( const Address &addr); - // constructor with an Address - - GenAddress( const GenAddress &addr); - // constructor with another GenAddress - - ~GenAddress(); - // destructor - - SmiUINT32 get_syntax(); - // get the snmp syntax of the contained address - - SnmpSyntax *clone() const; - // create a new instance of this Value - - GenAddress& operator=( const GenAddress &addr); - // assignment of a GenAddress - - SnmpSyntax& operator=( SnmpSyntax &val); - // copy an instance of this Value - - virtual char *to_string(); - // string representation of object value - - virtual operator const char *() const; - // const char * operator overloaded for streaming output - - virtual addr_type get_type() const; - // return the type - - virtual void to_octet(OctetStr& octet) const; - // return the address as a octet sequence - -protected: - Address *address; - // pointer to a a concrete address - - char output_buffer[MAX_DISPLAY_SZ]; - // output buffer of objects value - - virtual int parse_address( const char *addr); - // redefined parse address for macs - - virtual void format_output(); - // format output for a generic address - - void init_smi(); - // initialize smi data structure -}; - -#endif //_ADDRESS diff --git a/ASNMP/asnmp/asn1.cpp b/ASNMP/asnmp/asn1.cpp deleted file mode 100644 index 77dc9baa5ec..00000000000 --- a/ASNMP/asnmp/asn1.cpp +++ /dev/null @@ -1,1728 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// asn1.cpp -// -// = DESCRIPTION -// The Vb class is an encapsulation of the snmp variable binding. -// This module contains the class definition for the variable binding (VB) -// class. The VB class is an encapsulation of a SNMP VB. A VB object is -// composed of one SNMP++ Oid and one SMI value. The Vb class utilizes Oid -// objects and thus requires the Oid class. To use this class, -// set oid, value then call valid() to be sure object was constructed correctly. -// -// = AUTHOR -// S. Waldbusser (assumed) -// Michael R MacFaden mrm@cisco.com - rework & ACE port -// ============================================================================ -/********************************************************************** -// * - * Abstract Syntax Notation One, ASN.1 - * As defined in ISO/IS 8824 and ISO/IS 8825 - * This implements a subset of the above International Standards that - * is sufficient to implement SNMP. - * - * Encodes abstract data types into a machine independent stream of bytes. - * - Copyright 1988, 1989, 1991, 1992 by Carnegie Mellon University - - All Rights Reserved - - Permission to use, copy, modify, and distribute this software and its - documentation for any purpose and without fee is hereby granted, - provided that the above copyright notice appear in all copies and that - both that copyright notice and this permission notice appear in - supporting documentation, and that the name of CMU not be - used in advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING - ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL - CMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR - ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, - ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - SOFTWARE. - ******************************************************************/ - -#include "asnmp/asn1.h" -#include "asnmp/snmp.h" - -ACE_RCSID(asnmp, asn1, "$Id$") - -/* - * parse_int - pulls a long out of an ASN int type. - * On entry, datalength is input as the number of valid bytes following - * "data". On exit, it is returned as the number of valid bytes - * following the end of this object. - * - * Returns a pointer to the first byte past the end - * of this object (i.e. the start of the next object). - * Returns 0 on any error. - */ -u_char * asn1::parse_int( u_char *data, - int *datalength, - u_char *type, - long int *intp, - int intsize) -{ - ACE_TRACE("asn1::parse_int"); - /* - * ASN.1 integer ::= 0x02 asnlength byte {byte}* - */ - u_char *bufp = data; - u_long asn_length; - long value = 0; - - if (intsize != sizeof (long)){ - ASNERROR("not long"); - return 0; - } - *type = *bufp++; - bufp =asn1::parse_length(bufp, &asn_length); - if (bufp == 0){ - ASNERROR("bad length"); - return 0; - } - if ((int)(asn_length + (bufp - data)) > *datalength){ - ASNERROR("overflow of message"); - return 0; - } - if ((int)asn_length > intsize){ - ASNERROR("I don't support such large integers"); - return 0; - } - *datalength -= (int)asn_length + (bufp - data); - if (*bufp & 0x80) - value = -1; /* integer is negative */ - while(asn_length--) - value = (value << 8) | *bufp++; - *intp = value; - return bufp; -}; - - -/* - * parse_unsigned_int - pulls an u_long out of an ASN int type. - * On entry, datalength is input as the number of valid bytes following - * "data". On exit, it is returned as the number of valid bytes - * following the end of this object. - * - * Returns a pointer to the first byte past the end - * of this object (i.e. the start of the next object). - * Returns 0 on any error. - */ -u_char * asn1::parse_unsigned_int( u_char *data, - int *datalength, - u_char *type, - u_long *intp, - int intsize) -{ - ACE_TRACE("asn1::parse_unsigned_int"); - /* - * ASN.1 integer ::= 0x02 asnlength byte {byte}* - */ - u_char *bufp = data; - u_long asn_length; - u_long value = 0; - - if (intsize != sizeof (long)){ - ASNERROR("not long"); - return 0; - } - *type = *bufp++; - bufp = asn1::parse_length(bufp, &asn_length); - if (bufp == 0){ - ASNERROR("bad length"); - return 0; - } - if ((int)(asn_length + (bufp - data)) > *datalength){ - ASNERROR("overflow of message"); - return 0; - } - if (((int)asn_length > (intsize + 1)) || - (((int)asn_length == intsize + 1) && *bufp != 0x00)){ - ASNERROR("I don't support such large integers"); - return 0; - } - *datalength -= (int)asn_length + (bufp - data); - if (*bufp & 0x80) - value = (u_long) -1; - while(asn_length--) - value = (value << 8) | *bufp++; - *intp = value; - return bufp; -}; - - -/* - * build_int - builds an ASN object containing an integer. - * On entry, datalength is input as the number of valid bytes following - * "data". On exit, it is returned as the number of valid bytes - * following the end of this object. - * - * Returns a pointer to the first byte past the end - * of this object (i.e. the start of the next object). - * Returns 0 on any error. - */ -u_char * asn1::build_int( u_char *data, - int *datalength, - u_char type, - long *intp, - int intsize) -{ - ACE_TRACE("asn1::build_int"); - /* - * ASN.1 integer ::= 0x02 asnlength byte {byte}* - */ - - long integer; - u_long mask; - - if (intsize != sizeof (long)) - return 0; - integer = *intp; - /* - * Truncate "unnecessary" bytes off of the most significant end of this - * 2's complement integer. There should be no sequence of 9 - * consecutive 1's or 0's at the most significant end of the - * integer. - */ - mask = 0x1FF << ((8 * (sizeof(long) - 1)) - 1); - /* mask is 0xFF800000 on a big-endian machine */ - while((((integer & mask) == 0) || ((integer & mask) == mask)) - && intsize > 1){ - intsize--; - integer <<= 8; - } - data = asn1::build_header(data, datalength, type, intsize); - if (data == 0) - return 0; - if (*datalength < intsize) - return 0; - *datalength -= intsize; - mask = 0xFF << (8 * (sizeof(long) - 1)); - /* mask is 0xFF000000 on a big-endian machine */ - while(intsize--){ - *data++ = (u_char)((integer & mask) >> (8 * (sizeof(long) - 1))); - integer <<= 8; - } - return data; -}; - - -/* - * build_unsigned_int - builds an ASN object containing an integer. - * On entry, datalength is input as the number of valid bytes following - * "data". On exit, it is returned as the number of valid bytes - * following the end of this object. - * - * Returns a pointer to the first byte past the end - * of this object (i.e. the start of the next object). - * Returns 0 on any error. - */ -u_char * asn1::build_unsigned_int( u_char *data, - int *datalength, - u_char type, - u_long *intp, - int intsize) -{ - ACE_TRACE("asn1::build_unsigned_int"); - /* - * ASN.1 integer ::= 0x02 asnlength byte {byte}* - */ - - u_long integer; - u_long mask; - int add_null_byte = 0; - - if (intsize != sizeof (long)) - return 0; - integer = *intp; - mask = 0xFF << (8 * (sizeof(long) - 1)); - /* mask is 0xFF000000 on a big-endian machine */ - if ((u_char)((integer & mask) >> (8 * (sizeof(long) - 1))) & 0x80){ - /* if MSB is set */ - add_null_byte = 1; - intsize++; - } - /* - * Truncate "unnecessary" bytes off of the most significant end of this 2's complement integer. - * There should be no sequence of 9 consecutive 1's or 0's at the most significant end of the - * integer. - */ - mask = 0x1FF << ((8 * (sizeof(long) - 1)) - 1); - /* mask is 0xFF800000 on a big-endian machine */ - while((((integer & mask) == 0) || ((integer & mask) == mask)) && intsize > 1){ - intsize--; - integer <<= 8; - } - data = asn1::build_header(data, datalength, type, intsize); - if (data == 0) - return 0; - if (*datalength < intsize) - return 0; - *datalength -= intsize; - if (add_null_byte == 1){ - *data++ = '\0'; - intsize--; - } - mask = 0xFF << (8 * (sizeof(long) - 1)); - /* mask is 0xFF000000 on a big-endian machine */ - while(intsize--){ - *data++ = (u_char)((integer & mask) >> (8 * (sizeof(long) - 1))); - integer <<= 8; - } - return data; -}; - - -/* - * parse_string - pulls an octet string out of an ASN octet string type. - * On entry, datalength is input as the number of valid bytes following - * "data". On exit, it is returned as the number of valid bytes - * following the beginning of the next object. - * - * "string" is filled with the octet string. - * - * Returns a pointer to the first byte past the end - * of this object (i.e. the start of the next object). - * Returns 0 on any error. - */ -u_char * asn1::parse_string( u_char *data, - int *datalength, - u_char *type, - u_char *string, - int *strlength) -{ - ACE_TRACE("asn1::parse_string"); - /* - * ASN.1 octet string ::= primstring | cmpdstring - * primstring ::= 0x04 asnlength byte {byte}* - * cmpdstring ::= 0x24 asnlength string {string}* - */ - u_char *bufp = data; - u_long asn_length; - - *type = *bufp++; - bufp = asn1::parse_length(bufp, &asn_length); - if (bufp == 0) - return 0; - if ((int)(asn_length + (bufp - data)) > *datalength){ - ASNERROR("overflow of message"); - return 0; - } - if ((int)asn_length > *strlength){ - ASNERROR("I don't support such long strings"); - return 0; - } - // fixed - ACE_OS::memcpy((char *)string, (char *)bufp, (int)asn_length); - *strlength = (int)asn_length; - *datalength -= (int)asn_length + (bufp - data); - return bufp + asn_length; -}; - - -/* - * build_string - Builds an ASN octet string object containing the input string. - * On entry, datalength is input as the number of valid bytes following - * "data". On exit, it is returned as the number of valid bytes - * following the beginning of the next object. - * - * Returns a pointer to the first byte past the end - * of this object (i.e. the start of the next object). - * Returns 0 on any error. - */ -u_char * asn1::build_string( u_char *data, - int *datalength, - u_char type, - u_char *string, - int strlength) -{ - ACE_TRACE("asn1::build_string"); - /* - * ASN.1 octet string ::= primstring | cmpdstring - * primstring ::= 0x04 asnlength byte {byte}* - * cmpdstring ::= 0x24 asnlength string {string}* - * This code will never send a compound string. - */ - data = asn1::build_header(data, datalength, type, strlength); - if (data == 0) - return 0; - if (*datalength < strlength) - return 0; - // fixed - ACE_OS::memcpy((u_char *)data,(u_char *)string, strlength); - *datalength -= strlength; - return data + strlength; -}; - - -/* - * parse_header - interprets the ID and length of the current object. - * On entry, datalength is input as the number of valid bytes following - * "data". On exit, it is returned as the number of valid bytes - * in this object following the id and length. - * - * Returns a pointer to the first byte of the contents of this object. - * Returns 0 on any error. - */ -u_char *asn1::parse_header( u_char *data, - int *datalength, - u_char *type) -{ - ACE_TRACE("asn1::parse_header"); - u_char *bufp = data; - register int header_len; - u_long asn_length; - - /* this only works on data types < 30, i.e. no extension octets */ - if (IS_EXTENSION_ID(*bufp)){ - ASNERROR("can't process ID >= 30"); - return 0; - } - *type = *bufp; - bufp = asn1::parse_length(bufp + 1, &asn_length); - if (bufp == 0) - return 0; - header_len = bufp - data; - if ((int)(header_len + asn_length) > *datalength){ - ASNERROR("asn length too long"); - return 0; - } - *datalength = (int)asn_length; - return bufp; -} - -/* - * asn1::build_header - builds an ASN header for an object with the ID and - * length specified. - * On entry, datalength is input as the number of valid bytes following - * "data". On exit, it is returned as the number of valid bytes - * in this object following the id and length. - * - * This only works on data types < 30, i.e. no extension octets. - * The maximum length is 0xFFFF; - * - * Returns a pointer to the first byte of the contents of this object. - * Returns 0 on any error. - */ -u_char * asn1::build_header( u_char *data, - int *datalength, - u_char type, - int length) -{ - ACE_TRACE("asn1::build_header"); - if (*datalength < 1) - return 0; - *data++ = type; - (*datalength)--; - return asn1::build_length(data, datalength, length); - -} - -/* - * asn_build_sequence - builds an ASN header for a sequence with the ID and - * length specified. - * On entry, datalength is input as the number of valid bytes following - * "data". On exit, it is returned as the number of valid bytes - * in this object following the id and length. - * - * This only works on data types < 30, i.e. no extension octets. - * The maximum length is 0xFFFF; - * - * Returns a pointer to the first byte of the contents of this object. - * Returns 0 on any error. - */ -u_char * asn1::build_sequence( u_char *data, - int *datalength, - u_char type, - int length) -{ - ACE_TRACE("asn1::build_sequence"); - *datalength -= 4; - if (*datalength < 0){ - *datalength += 4; /* fix up before punting */ - return 0; - } - *data++ = type; - *data++ = (u_char)(0x02 | ASN_LONG_LEN); - *data++ = (u_char)((length >> 8) & 0xFF); - *data++ = (u_char)(length & 0xFF); - return data; -}; - -/* - * parse_length - interprets the length of the current object. - * On exit, length contains the value of this length field. - * - * Returns a pointer to the first byte after this length - * field (aka: the start of the data field). - * Returns 0 on any error. - */ -u_char * asn1::parse_length( u_char *data, - u_long *length) -{ - ACE_TRACE("asn1::parse_length"); - u_char lengthbyte = *data; - - if (lengthbyte & ASN_LONG_LEN){ - lengthbyte &= ~ASN_LONG_LEN; /* turn MSb off */ - if (lengthbyte == 0){ - ASNERROR("We don't support indefinite lengths"); - return 0; - } - if (lengthbyte > sizeof(long)){ - ASNERROR("we can't support data lengths that long"); - return 0; - } - // fixed - ACE_OS::memcpy((char *)length, (char *)data + 1, (int)lengthbyte); - *length = ntohl(*length); - *length >>= (8 * ((sizeof *length) - lengthbyte)); - return data + lengthbyte + 1; - } else { /* short asnlength */ - *length = (long)lengthbyte; - return data + 1; - } -}; - -u_char *asn1::build_length( u_char *data, - int *datalength, - int length) -{ - ACE_TRACE("asn1::build_length"); - u_char *start_data = data; - - /* no indefinite lengths sent */ - if (length < 0x80){ - if (*datalength < 1){ - ASNERROR("build_length"); - return 0; - } - *data++ = (u_char)length; - } else if (length <= 0xFF){ - if (*datalength < 2){ - ASNERROR("build_length"); - return 0; - } - *data++ = (u_char)(0x01 | ASN_LONG_LEN); - *data++ = (u_char)length; - } else { /* 0xFF < length <= 0xFFFF */ - if (*datalength < 3){ - ASNERROR("build_length"); - return 0; - } - *data++ = (u_char)(0x02 | ASN_LONG_LEN); - *data++ = (u_char)((length >> 8) & 0xFF); - *data++ = (u_char)(length & 0xFF); - } - *datalength -= (data - start_data); - return data; - -} - -/* - * parse_objid - pulls an object indentifier out of an ASN object identifier type. - * On entry, datalength is input as the number of valid bytes following - * "data". On exit, it is returned as the number of valid bytes - * following the beginning of the next object. - * - * "objid" is filled with the object identifier. - * - * Returns a pointer to the first byte past the end - * of this object (i.e. the start of the next object). - * Returns 0 on any error. - */ -u_char *asn1::parse_objid( u_char *data, - int *datalength, - u_char *type, - oid *objid, - int *objidlength) -{ - ACE_TRACE("asn1::parse_objid"); - /* - * ASN.1 objid ::= 0x06 asnlength subidentifier {subidentifier}* - * subidentifier ::= {leadingbyte}* lastbyte - * leadingbyte ::= 1 7bitvalue - * lastbyte ::= 0 7bitvalue - */ - u_char *bufp = data; - oid *oidp = objid + 1; - u_long subidentifier; - long length; - u_long asn_length; - - *type = *bufp++; - bufp = asn1::parse_length(bufp, &asn_length); - if (bufp == 0) - return 0; - if ((int)asn_length + (bufp - data) > *datalength){ - ASNERROR("overflow of message"); - return 0; - } - *datalength -= (int)asn_length + (bufp - data); - - /* Handle invalid object identifier encodings of the form 06 00 robustly */ - if (asn_length == 0) - objid[0] = objid[1] = 0; - - length = asn_length; - (*objidlength)--; /* account for expansion of first byte */ - while (length > 0 && (*objidlength)-- > 0){ - subidentifier = 0; - do { /* shift and add in low order 7 bits */ - subidentifier = (subidentifier << 7) + (*(u_char *)bufp & ~ASN_BIT8); - length--; - } while (*(u_char *)bufp++ & ASN_BIT8); /* last byte has high bit clear */ - if (subidentifier > (u_long)MAX_SUBID){ - ASNERROR("subidentifier too long"); - return 0; - } - *oidp++ = (oid)subidentifier; - } - - /* - * The first two subidentifiers are encoded into the first component - * with the value (X * 40) + Y, where: - * X is the value of the first subidentifier. - * Y is the value of the second subidentifier. - */ - subidentifier = (u_long)objid[1]; - if (subidentifier == 0x2B){ - objid[0] = 1; - objid[1] = 3; - } else { - objid[1] = (u_char)(subidentifier % 40); - objid[0] = (u_char)((subidentifier - objid[1]) / 40); - } - - *objidlength = (int)(oidp - objid); - return bufp; -} - -/* - * build_objid - Builds an ASN object identifier object containing the - * input string. - * On entry, datalength is input as the number of valid bytes following - * "data". On exit, it is returned as the number of valid bytes - * following the beginning of the next object. - * - * Returns a pointer to the first byte past the end - * of this object (i.e. the start of the next object). - * Returns 0 on any error. - */ -u_char *asn1::build_objid( u_char *data, - int *datalength, - u_char type, - oid *objid, - int objidlength) -{ - ACE_TRACE("asn1::build_objid"); - /* - * ASN.1 objid ::= 0x06 asnlength subidentifier {subidentifier}* - * subidentifier ::= {leadingbyte}* lastbyte - * leadingbyte ::= 1 7bitvalue - * lastbyte ::= 0 7bitvalue - */ - u_char buf[MAX_OID_LEN]; - u_char *bp = buf; - oid *op = objid; - int asnlength; - u_long subid, mask, testmask; - int bits, testbits; - - if (objidlength < 2){ - *bp++ = 0; - objidlength = 0; - } else { - *bp++ = (u_char) (op[1] + (op[0] * 40)); - objidlength -= 2; - op += 2; - } - - while(objidlength-- > 0){ - subid = *op++; - if (subid < 127){ /* off by one? */ - *bp++ = (u_char )subid; - } else { - mask = 0x7F; /* handle subid == 0 case */ - bits = 0; - /* testmask *MUST* !!!! be of an u_type */ - for(testmask = 0x7F, testbits = 0; testmask != 0; - testmask <<= 7, testbits += 7){ - if (subid & testmask){ /* if any bits set */ - mask = testmask; - bits = testbits; - } - } - /* mask can't be zero here */ - for(;mask != 0x7F; mask >>= 7, bits -= 7){ - /* fix a mask that got truncated above */ - if (mask == 0x1E00000) - mask = 0xFE00000; - *bp++ = (u_char)(((subid & mask) >> bits) | ASN_BIT8); - } - *bp++ = (u_char)(subid & mask); - } - } - asnlength = bp - buf; - data = asn1::build_header(data, datalength, type, asnlength); - if (data == 0) - return 0; - if (*datalength < asnlength) - return 0; - // fixed - ACE_OS::memcpy((char *)data, (char *)buf, asnlength); - *datalength -= asnlength; - return data + asnlength; -} - -/* - * parse_null - Interprets an ASN null type. - * On entry, datalength is input as the number of valid bytes following - * "data". On exit, it is returned as the number of valid bytes - * following the beginning of the next object. - * - * Returns a pointer to the first byte past the end - * of this object (i.e. the start of the next object). - * Returns 0 on any error. - */ -u_char *asn1::parse_null(u_char *data, - int *datalength, - u_char *type) -{ - ACE_TRACE("asn1::parse_null"); - /* - * ASN.1 null ::= 0x05 0x00 - */ - u_char *bufp = data; - u_long asn_length; - - *type = *bufp++; - bufp = asn1::parse_length(bufp, &asn_length); - if (bufp == 0) - return 0; - if (asn_length != 0){ - ASNERROR("Malformed 0"); - return 0; - } - *datalength -= (bufp - data); - return bufp + asn_length; -} - - -/* - * build_null - Builds an ASN null object. - * On entry, datalength is input as the number of valid bytes following - * "data". On exit, it is returned as the number of valid bytes - * following the beginning of the next object. - * - * Returns a pointer to the first byte past the end - * of this object (i.e. the start of the next object). - * Returns 0 on any error. - */ -u_char *asn1::build_null( u_char *data, - int *datalength, - u_char type) -{ - ACE_TRACE("asn1::build_null"); - /* - * ASN.1 null ::= 0x05 0x00 - */ - return asn1::build_header(data, datalength, type, 0); -}; - -/* - * parse_bitstring - pulls a bitstring out of an ASN bitstring type. - * On entry, datalength is input as the number of valid bytes following - * "data". On exit, it is returned as the number of valid bytes - * following the beginning of the next object. - * - * "string" is filled with the bit string. - * - * Returns a pointer to the first byte past the end - * of this object (i.e. the start of the next object). - * Returns 0 on any error. - */ -u_char *asn1::parse_bitstring( u_char *data, - int *datalength, - u_char *type, - u_char *string, - int *strlength) -{ - ACE_TRACE("asn1::parse_bitstring"); - /* - * bitstring ::= 0x03 asnlength unused {byte}* - */ - u_char *bufp = data; - u_long asn_length; - - *type = *bufp++; - bufp = asn1::parse_length(bufp, &asn_length); - if (bufp == 0) - return 0; - if ((int)(asn_length + (bufp - data)) > *datalength){ - ASNERROR("overflow of message"); - return 0; - } - if ((int) asn_length > *strlength){ - ASNERROR("I don't support such long bitstrings"); - return 0; - } - if (asn_length < 1){ - ASNERROR("Invalid bitstring"); - return 0; - } - if (*bufp > 7){ - ASNERROR("Invalid bitstring"); - return 0; - } - // fixed - ACE_OS::memcpy((char *)string,(char *)bufp, (int)asn_length); - *strlength = (int)asn_length; - *datalength -= (int)asn_length + (bufp - data); - return bufp + asn_length; -} - - -/* - * build_bitstring - Builds an ASN bit string object containing the - * input string. - * On entry, datalength is input as the number of valid bytes following - * "data". On exit, it is returned as the number of valid bytes - * following the beginning of the next object. - * - * Returns a pointer to the first byte past the end - * of this object (i.e. the start of the next object). - * Returns 0 on any error. - */ -u_char *asn1::build_bitstring( u_char *data, - int *datalength, - u_char type, - u_char *string, - int strlength) -{ - ACE_TRACE("asn1::build_bitstring"); - /* - * ASN.1 bit string ::= 0x03 asnlength unused {byte}* - */ - if (strlength < 1 || *string || *string > 7){ - ASNERROR("Building invalid bitstring"); - return 0; - } - data = asn1::build_header(data, datalength, type, strlength); - if (data == 0) - return 0; - if (*datalength < strlength) - return 0; - // fixed - ACE_OS::memcpy((char *)data,(char *)string, strlength); - *datalength -= strlength; - return data + strlength; -} - - -/* - * parse_unsigned_int64 - pulls a 64 bit u_long out of an ASN int - * type. - * On entry, datalength is input as the number of valid bytes following - * "data". On exit, it is returned as the number of valid bytes - * following the end of this object. - * - * Returns a pointer to the first byte past the end - * of this object (i.e. the start of the next object). - * Returns 0 on any error. - */ -u_char * asn1::parse_unsigned_int64(u_char *data, - int *datalength, - u_char *type, - struct counter64 *cp, - int countersize) -{ - ACE_TRACE("asn1::parse_unsigned_int64"); - /* - * ASN.1 integer ::= 0x02 asnlength byte {byte}* - */ - u_char *bufp = data; - u_long asn_length; - u_long low = 0, high = 0; - int intsize = 4; - - if (countersize != sizeof(struct counter64)){ - ASNERROR("not right size"); - return 0; - } - *type = *bufp++; - bufp = asn1::parse_length(bufp, &asn_length); - if (bufp == 0){ - ASNERROR("bad length"); - return 0; - } - if ((int)(asn_length + (bufp - data)) > *datalength){ - ASNERROR("overflow of message"); - return 0; - } - if (((int)asn_length > (intsize * 2 + 1)) || - (((int)asn_length == (intsize * 2) + 1) && *bufp != 0x00)){ - ASNERROR("I don't support such large integers"); - return 0; - } - *datalength -= (int)asn_length + (bufp - data); - if (*bufp & 0x80){ - low = (u_long) -1; // integer is negative - high = (u_long) -1; - } - while(asn_length--){ - high = (high << 8) | ((low & 0xFF000000) >> 24); - low = (low << 8) | *bufp++; - } - cp->low = low; - cp->high = high; - return bufp; -} - - -/* - * build_unsigned_int64 - builds an ASN object containing a 64 bit integer. - * On entry, datalength is input as the number of valid bytes following - * "data". On exit, it is returned as the number of valid bytes - * following the end of this object. - * - * Returns a pointer to the first byte past the end - * of this object (i.e. the start of the next object). - * Returns 0 on any error. - */ -u_char * asn1::build_unsigned_int64( u_char *data, - int *datalength, - u_char type, - struct counter64 *cp, - int countersize) -{ - ACE_TRACE("asn1::build_unsigned_int64"); - /* - * ASN.1 integer ::= 0x02 asnlength byte {byte}* - */ - - u_long low, high; - u_long mask, mask2; - int add_null_byte = 0; - int intsize; - - if (countersize != sizeof (struct counter64)) - return 0; - intsize = 8; - low = cp->low; - high = cp->high; - mask = 0xFF << (8 * (sizeof(long) - 1)); - /* mask is 0xFF000000 on a big-endian machine */ - if ((u_char)((high & mask) >> (8 * (sizeof(long) - 1))) & 0x80){ - /* if MSB is set */ - add_null_byte = 1; - intsize++; - } - /* - * Truncate "unnecessary" bytes off of the most significant end of this 2's - * complement integer. - * There should be no sequence of 9 consecutive 1's or 0's at the most - * significant end of the integer. - */ - mask2 = 0x1FF << ((8 * (sizeof(long) - 1)) - 1); - /* mask2 is 0xFF800000 on a big-endian machine */ - while((((high & mask2) == 0) || ((high & mask2) == mask2)) - && intsize > 1){ - intsize--; - high = (high << 8) - | ((low & mask) >> (8 * (sizeof(long) - 1))); - low <<= 8; - } - data = asn1::build_header(data, datalength, type, intsize); - if (data == 0) - return 0; - if (*datalength < intsize) - return 0; - *datalength -= intsize; - if (add_null_byte == 1){ - *data++ = '\0'; - intsize--; - } - while(intsize--){ - *data++ = (u_char)((high & mask) >> (8 * (sizeof(long) - 1))); - high = (high << 8) - | ((low & mask) >> (8 * (sizeof(long) - 1))); - low <<= 8; - - } - return data; -} - - -// create a pdu -struct snmp_pdu * cmu_snmp::pdu_create( int command) -{ - ACE_TRACE("cmu_snmp::snmp_pdu_create"); - struct snmp_pdu *pdu; - - ACE_NEW_RETURN(pdu, snmp_pdu, 0); - ACE_OS::memset((char *)pdu, 0,sizeof(struct snmp_pdu)); - pdu->command = command; - pdu->errstat = 0; - pdu->errindex = 0; - pdu->enterprise = 0; - pdu->enterprise_length = 0; - pdu->variables = 0; - return pdu; -} - -// release a pdu from memory -void cmu_snmp::free_pdu( struct snmp_pdu *pdu) -{ - ACE_TRACE("cmu_snmp::free_pdu"); - struct variable_list *vp, *ovp; - - vp = pdu->variables; - while(vp){ - // release the oid part - if (vp->name) - delete [] vp->name; - // if deep data, then release as well - if (vp->val.string) - delete [] vp->val.string; - ovp = vp; - // go to the next one - vp = vp->next_variable; - // release up vb itself - delete ovp; - } - // if enterprise release it up - if (pdu->enterprise) - delete [] pdu->enterprise; - // release up pdu itself - delete pdu; -} - - -// add a null var to a pdu -void cmu_snmp::add_var(struct snmp_pdu *pdu, - oid *name, - int name_length, - SmiVALUE *smival) -{ - ACE_TRACE("cmu_snmp::add_var"); - - struct variable_list *vars; - - // if we don't have a vb list ,create one - if (pdu->variables == 0) { - ACE_NEW(pdu->variables, variable_list); - vars = pdu->variables; - } - else - { // we have one, find the end - for(vars = pdu->variables; vars->next_variable; vars = vars->next_variable); - // create one - ACE_NEW(vars->next_variable, variable_list); - // bump ptr - vars = vars->next_variable; - } - - // add the oid with no data - vars->next_variable = 0; - - // hook in the Oid portion - ACE_NEW(vars->name, oid[(name_length)]); - - // fixed - ACE_OS::memcpy((char *)vars->name,(char *)name, name_length * sizeof(oid)); - vars->name_length = name_length; - - // hook in the SMI value - switch( smival->syntax) - { - // null , do nothing - case sNMP_SYNTAX_NULL: - case sNMP_SYNTAX_NOSUCHOBJECT: - case sNMP_SYNTAX_NOSUCHINSTANCE: - case sNMP_SYNTAX_ENDOFMIBVIEW: - { - vars->type = (u_char) smival->syntax; - vars->val.string = 0; - vars->val_len = 0; - } - break; - - // octects - case sNMP_SYNTAX_OCTETS: - case sNMP_SYNTAX_OPAQUE: - case sNMP_SYNTAX_IPADDR: - { - vars->type = (u_char) smival->syntax; - ACE_NEW(vars->val.string, - u_char[(unsigned)smival->value.string.len]); - vars->val_len = (int) smival->value.string.len; - ACE_OS::memcpy( (u_char *) vars->val.string, - (u_char *) smival->value.string.ptr, - (unsigned) smival->value.string.len); - } - break; - - // oid - case sNMP_SYNTAX_OID: - { - vars->type = (u_char) smival->syntax; - vars->val_len = (int) smival->value.oid.len * sizeof(oid); - ACE_NEW(vars->val.objid, oid[(unsigned)vars->val_len]); - ACE_OS::memcpy((u_long *)vars->val.objid, - (u_long *)smival->value.oid.ptr, - (unsigned) vars->val_len); - } - break; - - - - case sNMP_SYNTAX_TIMETICKS: - case sNMP_SYNTAX_CNTR32: - case sNMP_SYNTAX_GAUGE32: - case sNMP_SYNTAX_UINT32: - { - long templong; - vars->type = (u_char) smival->syntax; - ACE_NEW(vars->val.integer, long); - vars->val_len = sizeof(long); - templong = (long) smival->value.uNumber; - ACE_OS::memcpy( (long*) vars->val.integer, - (long*) &templong, - sizeof(long)); - } - break; - - case sNMP_SYNTAX_INT32: - { - long templong; - vars->type = (u_char) smival->syntax; - ACE_NEW(vars->val.integer, long); - vars->val_len = sizeof(long); - templong = (long) smival->value.sNumber; - ACE_OS::memcpy( (long*) vars->val.integer, - (long*) &templong, - sizeof(long)); - } - break; - - // 64 bit counter - case sNMP_SYNTAX_CNTR64: - { - vars->type = ( u_char) smival->syntax; - ACE_NEW(vars->val.counter64, counter64); - vars->val_len = sizeof(struct counter64); - ACE_OS::memcpy( (struct counter64*) vars->val.counter64, - (SmiLPCNTR64) &(smival->value.hNumber), - sizeof( SmiCNTR64)); - } - break; - - } // end switch - -} - -// build the authentication -// works for v1 or v2c -u_char *cmu_snmp::auth_build( u_char *data, - int *length, - long int version, - u_char *community, - int community_len, - int messagelen) -{ - ACE_TRACE("cmu_snmp::auth_build"); - u_char *params; - int plen; - - params = community; - plen = community_len; - - data = asn1::build_sequence(data, - length, - (u_char)(ASN_SEQUENCE | ASN_CONSTRUCTOR), - messagelen + plen + 5); - if (data == 0){ - ASNERROR("buildheader"); - return 0; - } - data = asn1::build_int(data, - length, - (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), - (long *)&version, - sizeof(version)); - if (data == 0){ - ASNERROR("buildint"); - return 0; - } - - data = asn1::build_string(data, - length, - (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OCTET_STR), - params, - plen ); - if (data == 0){ - ASNERROR("buildstring"); - return 0; - } - - return (u_char *)data; -}; - - -// build a variable binding -u_char * cmu_snmp::build_var_op(u_char *data, oid * var_name, - int *var_name_len, - u_char var_val_type, - int var_val_len, u_char *var_val, - int *listlength) - -{ - ACE_TRACE("cmu_snmp::build_var_op"); - int dummyLen, headerLen; - u_char *dataPtr; - - dummyLen = *listlength; - dataPtr = data; - - data += 4; - dummyLen -=4; - if (dummyLen < 0) - return 0; - - headerLen = data - dataPtr; - *listlength -= headerLen; - data = asn1::build_objid( data, listlength, - (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OBJECT_ID), - var_name, *var_name_len); - if (data == 0) { - ASNERROR(""); - return 0; - } - - // based on the type... - switch(var_val_type) { - case ASN_INTEGER: - data = asn1::build_int( data, listlength, var_val_type, (long *)var_val, - var_val_len); - break; - - case SMI_GAUGE: - case SMI_COUNTER: - case SMI_TIMETICKS: - case SMI_UINTEGER: - data = asn1::build_unsigned_int( data, - listlength, - var_val_type, - (u_long *)var_val, - var_val_len); - break; - - case SMI_COUNTER64: - data = asn1::build_unsigned_int64(data, - listlength, - var_val_type, - (struct counter64 *)var_val, - var_val_len); - break; - - case ASN_OCTET_STR: - case SMI_IPADDRESS: - case SMI_OPAQUE: - case SMI_NSAP: - data = asn1::build_string(data, listlength, var_val_type, - var_val, var_val_len); - break; - - case ASN_OBJECT_ID: - data = asn1::build_objid(data, listlength, var_val_type, - (oid *)var_val, var_val_len / sizeof(oid)); - break; - - case ASN_NULL: - data = asn1::build_null(data, listlength, var_val_type); - break; - - case ASN_BIT_STR: - data = asn1::build_bitstring(data, listlength, var_val_type, - var_val, var_val_len); - break; - - case SNMP_NOSUCHOBJECT: - case SNMP_NOSUCHINSTANCE: - case SNMP_ENDOFMIBVIEW: - data = asn1::build_null(data, listlength, var_val_type); - break; - - default: - ASNERROR("wrong type"); - return 0; - } - if (data == 0) { - ASNERROR(""); - return 0; - } - dummyLen = (data - dataPtr) - headerLen; - - asn1::build_sequence(dataPtr, &dummyLen, - (u_char)(ASN_SEQUENCE | ASN_CONSTRUCTOR), - dummyLen); - return data; -} - - -// serialize the pdu -int cmu_snmp::build( struct snmp_pdu *pdu, u_char *packet, - int *out_length, long version, - u_char* community, int community_len) -{ - ACE_TRACE("cmu_snmp::build"); - u_char buf[SNMP_MSG_LENGTH]; - u_char *cp; - struct variable_list *vp; - int length; - int totallength; - - length = *out_length; - cp = packet; - for(vp = pdu->variables; vp; vp = vp->next_variable) { - cp = cmu_snmp::build_var_op( cp, vp->name, - &vp->name_length, vp->type, - vp->val_len, (u_char *)vp->val.string, - &length); - if (cp == 0) - return -1; - } - totallength = cp - packet; - - length = SNMP_MSG_LENGTH; - - // encode the total len - cp = asn1::build_header( buf, &length, - (u_char)(ASN_SEQUENCE | ASN_CONSTRUCTOR), - totallength); - if (cp == 0) - return -1; - ACE_OS::memcpy( (char *)cp, (char *)packet,totallength); - totallength += cp - buf; - - length = *out_length; - if (pdu->command != TRP_REQ_MSG) { - - // request id - cp = asn1::build_int( packet, - &length, - (u_char )(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), - (long *)&pdu->reqid, - sizeof(pdu->reqid)); - if (cp == 0) - return -1; - - // error status - cp = asn1::build_int(cp, - &length, - (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), - (long *)&pdu->errstat, sizeof(pdu->errstat)); - if (cp == 0) - return -1; - - // error index - cp = asn1::build_int(cp, - &length, - (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), - (long *)&pdu->errindex, sizeof(pdu->errindex)); - if (cp == 0) - return -1; - } - else { // this is a trap message - - // enterprise - cp = asn1::build_objid( packet, - &length, - (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OBJECT_ID), - (oid *)pdu->enterprise, - pdu->enterprise_length); - if (cp == 0) - return -1; - - // agent-addr - cp = asn1::build_string(cp, - &length, - // HDN Fixed to use correct tag - (u_char)SMI_IPADDRESS, - //(u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OCTET_STR), - (u_char *)&pdu->agent_addr.sin_addr.s_addr, - sizeof(pdu->agent_addr.sin_addr.s_addr)); - if (cp == 0) - return -1; - - // generic trap - cp = asn1::build_int(cp, - &length, - (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), - (long *)&pdu->trap_type, - sizeof(pdu->trap_type)); - if (cp == 0) - return -1; - - // specific trap - cp = asn1::build_int( cp, - &length, - (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), - (long *)&pdu->specific_type, - sizeof(pdu->specific_type)); - if (cp == 0) - return -1; - - // timestamp - cp = asn1::build_int(cp, - &length, - // HDN Fixed to use correct tag - (u_char)SMI_TIMETICKS, - //(u_char )(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), - (long *)&pdu->time, - sizeof(pdu->time)); - if (cp == 0) - return -1; - } - - if (length < totallength) - return -1; - // fixed - ACE_OS::memcpy((char *)cp, (char *)buf, totallength); - totallength += cp - packet; - - length = SNMP_MSG_LENGTH; - cp = asn1::build_header(buf, - &length, - (u_char)pdu->command, - totallength); - if (cp == 0) - return -1; - if (length < totallength) - return -1; - // fixed - ACE_OS::memcpy((char *)cp, (char *)packet, totallength); - totallength += cp - buf; - - length = *out_length; - - cp = cmu_snmp::auth_build( packet, - &length, - version, - community, - community_len, - totallength ); - if (cp == 0) - return -1; - if ((*out_length - (cp - packet)) < totallength) - return -1; - // fixed - ACE_OS::memcpy((char *)cp, (char *)buf, totallength); - totallength += cp - packet; - *out_length = totallength; - - return 0; -} - -// parse the authentication header -u_char *cmu_snmp::auth_parse(u_char *data, - int *length, u_char *sid, - int *slen, long *version) -{ - ACE_TRACE("cmu_snmp::auth_parse"); - u_char type; - - // get the type - data = asn1::parse_header( data, length, &type); - if (data == 0){ - ASNERROR("bad header"); - return 0; - } - - if (type != (ASN_SEQUENCE | ASN_CONSTRUCTOR)) { - ASNERROR("wrong auth header type"); - return 0; - } - - // get the version - data = asn1::parse_int(data, length, &type, version, sizeof(*version)); - if (data == 0) { - ASNERROR("bad parse of version"); - return 0; - } - - // get the community name - data = asn1::parse_string(data, length, &type, sid, slen); - if (data == 0) { - ASNERROR("bad parse of community"); - return 0; - } - - return (u_char *)data; -} - -/* u_char *data, // IN - pointer to the start of object - oid *var_name, // OUT - object id of variable - int *var_name_len, // IN/OUT - length of variable name - u_char *var_val_type, // OUT - type of variable - (int or octet string) (one byte) - int *var_val_len, // OUT - length of variable - u_char **var_val, // OUT - pointer to ASN1 encoded value of variable -*/ - -u_char * -cmu_snmp::parse_var_op( u_char *data, oid *var_name, - int *var_name_len, u_char *var_val_type, - int *var_val_len, u_char **var_val, - int *listlength) -{ - ACE_TRACE("cmu_snmp::parse_var_op"); - u_char var_op_type; - int var_op_len = *listlength; - u_char *var_op_start = data; - - data = asn1::parse_header(data, &var_op_len, &var_op_type); - if (data == 0){ - ASNERROR(""); - return 0; - } - if (var_op_type != (u_char)(ASN_SEQUENCE | ASN_CONSTRUCTOR)) - return 0; - data = asn1::parse_objid(data, &var_op_len, &var_op_type, var_name, var_name_len); - if (data == 0) { - ASNERROR(""); - return 0; - } - if (var_op_type != (u_char) - (ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OBJECT_ID)) - return 0; - *var_val = data; /* save pointer to this object */ - /* find out what type of object this is */ - data = asn1::parse_header(data, &var_op_len, var_val_type); - if (data == 0) { - ASNERROR(""); - return 0; - } - *var_val_len = var_op_len; - data += var_op_len; - *listlength -= (int)(data - var_op_start); - return data; -} - - - -// build a pdu from a data and length -int cmu_snmp::parse( struct snmp_pdu *pdu, - u_char *data, - u_char *community_name, - u_long &community_len, - snmp_version &spp_version, - int length) -{ - ACE_TRACE("cmu_snmp::parse"); - u_char msg_type; - u_char type; - u_char *var_val; - long version; - int len, four; - u_char community[256]; - int community_length = 256; - struct variable_list *vp = 0; - oid objid[MAX_NAME_LEN], *op; - - // authenticates message and returns length if valid - data = cmu_snmp::auth_parse(data, - &length, - community, - &community_length, - &version); - if (data == 0) - return -1; - - // copy the returned community name - ACE_OS::memcpy( (u_char *) community_name, - (u_char *) community, - community_length); - community_len = (long) community_length; - - if( version != SNMP_VERSION_1 && version != SNMP_VERSION_2C ) { - ASNERROR("Wrong version"); - return -1; - } - - spp_version = (snmp_version) version; - - data = asn1::parse_header(data, - &length, - &msg_type); - if (data == 0) - return -1; - pdu->command = msg_type; - - if (pdu->command != TRP_REQ_MSG){ - // get the rid - data = asn1::parse_int(data, - &length, &type, - (long *)&pdu->reqid, - sizeof(pdu->reqid)); - if (data == 0) - return -1; - // get the error status - data = asn1::parse_int(data, - &length, - &type, - (long *)&pdu->errstat, - sizeof(pdu->errstat)); - if (data == 0) - return -1; - // get the error index - data = asn1::parse_int(data, - &length, - &type, - (long *)&pdu->errindex, - sizeof(pdu->errindex)); - if (data == 0) - return -1; - } - else { // is a trap - - // get the enterprise - pdu->enterprise_length = MAX_NAME_LEN; - data = asn1::parse_objid(data, - &length, - &type, - objid, - &pdu->enterprise_length); - if (data == 0) - return -1; - - ACE_NEW_RETURN(pdu->enterprise, - oid[pdu->enterprise_length*sizeof(oid)],-1); - - // fixed - ACE_OS::memcpy((char *)pdu->enterprise,(char *)objid, - pdu->enterprise_length * sizeof(oid)); - - // get source address - four = 4; - data = asn1::parse_string(data, &length, &type, - (u_char *)&pdu->agent_addr.sin_addr.s_addr, - &four); - if (data == 0) - return -1; - - // get trap type - data = asn1::parse_int(data, &length, &type, (long *)&pdu->trap_type, - sizeof(pdu->trap_type)); - if (data == 0) - return -1; - - // trap type - data = asn1::parse_int(data, &length, &type, (long *)&pdu->specific_type, - sizeof(pdu->specific_type)); - if (data == 0) - return -1; - - // timestamp - data = asn1::parse_int(data, &length, &type, (long *)&pdu->time, - sizeof(pdu->time)); - if (data == 0) - return -1; - } - - // get the vb list - data = asn1::parse_header(data, &length, &type); - if (data == 0) - return -1; - - if (type != (u_char)(ASN_SEQUENCE | ASN_CONSTRUCTOR)) - return -1; - - while((int)length > 0) { - if (pdu->variables == 0) { - ACE_NEW_RETURN(pdu->variables, variable_list, -1); - vp = pdu->variables; - } else { - ACE_NEW_RETURN(vp->next_variable, variable_list, -1); - vp = vp->next_variable; - } - vp->next_variable = 0; - vp->val.string = 0; - vp->name = 0; - vp->name_length = MAX_NAME_LEN; - data = cmu_snmp::parse_var_op( data, objid, - &vp->name_length, &vp->type, - &vp->val_len, &var_val, - (int *)&length); - if (data == 0) - return -1; - - ACE_NEW_RETURN(op, oid[(unsigned)vp->name_length * sizeof(oid)], -1); - - // fixed - ACE_OS::memcpy((char *)op, (char *)objid, vp->name_length * sizeof(oid)); - vp->name = op; - - len = SNMP_MSG_LENGTH; - switch((short)vp->type) { - case ASN_INTEGER: - case SMI_COUNTER: - case SMI_GAUGE: - case SMI_TIMETICKS: - case SMI_UINTEGER: - ACE_NEW_RETURN(vp->val.integer,long, -1); - vp->val_len = sizeof(long); - asn1::parse_int(var_val, &len, &vp->type, (long *)vp->val.integer, sizeof(vp->val.integer)); - break; - case SMI_COUNTER64: - ACE_NEW_RETURN(vp->val.counter64, counter64, -1); - vp->val_len = sizeof(struct counter64); - asn1::parse_unsigned_int64(var_val, &len, &vp->type, - (struct counter64 *)vp->val.counter64, - sizeof(*vp->val.counter64)); - break; - - case ASN_OCTET_STR: - case SMI_IPADDRESS: - case SMI_OPAQUE: - case SMI_NSAP: - ACE_NEW_RETURN(vp->val.string, u_char[(unsigned)vp->val_len + 1], -1); - asn1::parse_string(var_val, &len, &vp->type, vp->val.string, - &vp->val_len); - break; - - case ASN_OBJECT_ID: - vp->val_len = MAX_NAME_LEN; - asn1::parse_objid(var_val, &len, &vp->type, objid, &vp->val_len); - //vp->val_len *= sizeof(oid); - - ACE_NEW_RETURN(vp->val.objid, oid[(unsigned)vp->val_len*sizeof(oid)], -1); - - // fixed - ACE_OS::memcpy((char *)vp->val.objid, - (char *)objid, - vp->val_len * sizeof(oid)); - break; - - case SNMP_NOSUCHOBJECT: - case SNMP_NOSUCHINSTANCE: - case SNMP_ENDOFMIBVIEW: - case ASN_NULL: - break; - default: - ASNERROR("bad type returned "); - break; - } - } - return 0; -} diff --git a/ASNMP/asnmp/asn1.h b/ASNMP/asnmp/asn1.h deleted file mode 100644 index 82a81f4a561..00000000000 --- a/ASNMP/asnmp/asn1.h +++ /dev/null @@ -1,342 +0,0 @@ -/* -*-C++-*- */ -// $Id$ -#ifndef ASN1 -#define ASN1 -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// asn1.h -// -// = DESCRIPTION -// Abstract Syntax Notation One, ASN.1 -// As defined in ISO/IS 8824 and ISO/IS 8825 -// This implements a subset of the above International Standards that -// is sufficient to implement SNMP. -// -// = AUTHOR -// Steve Waldbusser/CMU ? -// -// ============================================================================ - -/********************************************************************** - Copyright 1988, 1989, 1991, 1992 by Carnegie Mellon University - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of CMU not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -CMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. -******************************************************************/ - -#include "ace/OS.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "asnmp/snmp.h" - -// CMU code to define "oid" typedef (old C style) -#ifndef EIGHTBIT_SUBIDS -typedef unsigned long oid; -#define MAX_SUBID 0xFFFFFFFF -#else -typedef unsigned char oid; -#define MAX_SUBID 0xFF -#endif - -#define MAX_OID_LEN 64 /* max subid's in an oid */ - - -// asn.1 values -#define ASN_BOOLEAN (0x01) -#define ASN_INTEGER (0x02) -#define ASN_BIT_STR (0x03) -#define ASN_OCTET_STR (0x04) -#define ASN_NULL (0x05) -#define ASN_OBJECT_ID (0x06) -#define ASN_SEQUENCE (0x10) -#define ASN_SET (0x11) -#define ASN_UNIVERSAL (0x00) -#define ASN_APPLICATION (0x40) -#define ASN_CONTEXT (0x80) -#define ASN_PRIVATE (0xC0) -#define ASN_PRIMITIVE (0x00) -#define ASN_CONSTRUCTOR (0x20) -#define ASN_LONG_LEN (0x80) -#define ASN_EXTENSION_ID (0x1F) -#define ASN_BIT8 (0x80) - -#define IS_CONSTRUCTOR(byte) ((byte) & ASN_CONSTRUCTOR) -#define IS_EXTENSION_ID(byte) (((byte) & ASN_EXTENSION_ID) == ASN_EXTENSION_ID) - -#define ASNERROR( string) -#define MAX_NAME_LEN 64 -#define SNMP_VERSION_1 0 -#define SNMP_VERSION_2C 1 - - -// defined types (from the SMI, RFC 1065) -#define SMI_IPADDRESS (ASN_APPLICATION | 0) -#define SMI_COUNTER (ASN_APPLICATION | 1) -#define SMI_GAUGE (ASN_APPLICATION | 2) -#define SMI_TIMETICKS (ASN_APPLICATION | 3) -#define SMI_OPAQUE (ASN_APPLICATION | 4) -#define SMI_NSAP (ASN_APPLICATION | 5) -#define SMI_COUNTER64 (ASN_APPLICATION | 6) -#define SMI_UINTEGER (ASN_APPLICATION | 7) - -#define GET_REQ_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x0) -#define GETNEXT_REQ_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x1) -#define GET_RSP_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x2) -#define SET_REQ_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x3) -#define TRP_REQ_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x4) - -#define GETBULK_REQ_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x5) -#define INFORM_REQ_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x6) -#define TRP2_REQ_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x7) -#define REPORT_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x8) - -#define SNMP_NOSUCHOBJECT (ASN_CONTEXT | ASN_PRIMITIVE | 0x0) -#define SNMP_NOSUCHINSTANCE (ASN_CONTEXT | ASN_PRIMITIVE | 0x1) -#define SNMP_ENDOFMIBVIEW (ASN_CONTEXT | ASN_PRIMITIVE | 0x2) - -#define SNMP_MSG_LENGTH 1500 - -typedef struct sockaddr_in ipaddr; - -// pdu -struct snmp_pdu { - int command; // pdu type - unsigned long reqid; // Request id - unsigned long errstat; // Error status - unsigned long errindex; // Error index - - // Trap information - oid *enterprise; // System OID - int enterprise_length; - ipaddr agent_addr; // address of object generating trap - int trap_type; // trap type - int specific_type; // specific type - unsigned long time; // Uptime - - // vb list - struct variable_list *variables; -}; - -// vb list -struct variable_list { - struct variable_list *next_variable; // 0 for last variable - oid *name; // Object identifier of variable - int name_length; // number of subid's in name - unsigned char type; // ASN type of variable - union { // value of variable - long *integer; - unsigned char *string; - oid *objid; - unsigned char *bitstring; - struct counter64 *counter64; - } val; - int val_len; -}; - -struct counter64 { - unsigned long high; - unsigned long low; -}; - -// CMU Interface class for ASN.1 routines -class ACE_Export asn1 - // = TITLE - // Defines the member functions for the asn1 concrete interface class - // CMU routines for performing ASN.1 data marshalling / representation - -{ -public: -static unsigned char *parse_int( unsigned char *data, - int *datalength, - unsigned char *type, - long int *intp, - int intsize); -static unsigned char *parse_unsigned_int( unsigned char *data, - int *datalength, - unsigned char *type, - unsigned long *intp, - int intsize); -static unsigned char *build_int( unsigned char *data, - int *datalength, - unsigned char type, - long *intp, - int intsize); - -static unsigned char *build_unsigned_int( unsigned char *data, - int *datalength, - unsigned char type, - unsigned long *intp, - int intsize); - -static unsigned char *parse_string( unsigned char *data, - int *datalength, - unsigned char *type, - unsigned char *string, - int *strlength); - -static unsigned char *build_string( unsigned char *data, - int *datalength, - unsigned char type, - unsigned char *string, - int strlength); - -static unsigned char *parse_header( unsigned char *data, - int *datalength, - unsigned char *type); - -static unsigned char * build_header( unsigned char *data, - int *datalength, - unsigned char type, - int length); - -static unsigned char * build_sequence( unsigned char *data, - int *datalength, - unsigned char type, - int length); - -static unsigned char * parse_length( unsigned char *data, - unsigned long *length); - -static unsigned char *build_length( unsigned char *data, - int *datalength, - int length); - -static unsigned char *build_objid( unsigned char *data, - int *datalength, - unsigned char type, - oid *objid, - int objidlength); - -static unsigned char *parse_objid( unsigned char *data, - int *datalength, - unsigned char *type, - oid *objid, - int *objidlength); - -static unsigned char *parse_null(unsigned char *data, - int *datalength, unsigned - char *type); - -static unsigned char *build_null( unsigned char *data, - int *datalength, - unsigned char type); - -static unsigned char *parse_bitstring( unsigned char *data, - int *datalength, - unsigned char *type, - unsigned char *string, - int *strlength); - -static unsigned char *build_bitstring( unsigned char *data, - int *datalength, - unsigned char type, - unsigned char *string, - int strlength); - -static unsigned char * parse_unsigned_int64(unsigned char *data, - int *datalength, - unsigned char *type, - struct counter64 *cp, - int countersize); - -static unsigned char * build_unsigned_int64( unsigned char *data, - int *datalength, - unsigned char type, - struct counter64 *cp, - int countersize); - -}; - - -// CMU Interface class for SNMPv1, SNMPv2c routines -class ACE_Export cmu_snmp - // = TITLE - // Defines the static functions for the cmu_snmp concrete class. - // These routine create cmu pdu's that can be sent/received on/from agents -{ - public: - static struct snmp_pdu *pdu_create( int command); - static void free_pdu( struct snmp_pdu *pdu); - static int build( struct snmp_pdu *pdu, - unsigned char *packet, - int *out_length, - long version, - unsigned char* community, - int community_len); - - static void add_var(struct snmp_pdu *pdu, - oid *name, - int name_length, - SmiVALUE *smival); - - static int parse( struct snmp_pdu *pdu, - unsigned char *data, - unsigned char *community_name, - unsigned long &community_len, - snmp_version &version, - int length); - static unsigned char *auth_build( unsigned char *data, - int *length, - long int version, - unsigned char *community, - int community_len, - int messagelen); - - static unsigned char *build_var_op(unsigned char *data, - oid * var_name, - int *var_name_len, - unsigned char var_val_type, - int var_val_len, - unsigned char *var_val, - int *listlength); - - -static unsigned char *auth_parse(unsigned char *data, - int *length, - unsigned char *sid, - int *slen, - long *version); - -/* - @params data, IN - pointer to the start of object - var_name OUT - object id of variable - var_name_len IN/OUT - length of variable name - var_val_type OUT - type of variable (int or octet string) (one byte) - var_val_len OUT - length of variable - var_val, OUT - pointer to ASN1 encoded value of variable - listlength IN/OUT - number of valid bytes left in var_op_list -*/ -static unsigned char *parse_var_op( unsigned char *data, - oid *var_name, - int *var_name_len, - unsigned char *var_val_type, - int *var_val_len, - unsigned char **var_val, - int *listlength); - -}; - -#endif // ASN1 - diff --git a/ASNMP/asnmp/counter.cpp b/ASNMP/asnmp/counter.cpp deleted file mode 100644 index 04c50dd6475..00000000000 --- a/ASNMP/asnmp/counter.cpp +++ /dev/null @@ -1,106 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// counter.cpp -// -// = DESCRIPTION -// Class implementation for SMI Counter32 class. -// -// = AUTHOR -// Peter E Mellquist -// Michael R MacFaden mrm@cisco.com - rework & ACE port -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -#include "asnmp/counter.h" - -ACE_RCSID(asnmp, counter, "$Id$") - -// constructor with a value -Counter32::Counter32( const unsigned long i):SnmpUInt32(i) -{ - smival.syntax = sNMP_SYNTAX_CNTR32; -} - -// copy constructor -Counter32::Counter32( const Counter32 &c) -{ - this->smival.value.uNumber = c.smival.value.uNumber; - smival.syntax = sNMP_SYNTAX_CNTR32; - valid_flag = 1; -} - -// syntax type -SmiUINT32 Counter32::get_syntax() -{ - return sNMP_SYNTAX_CNTR32; -} - -// general assignment from any Value -SnmpSyntax& Counter32::operator=( SnmpSyntax &in_val){ - if ( this == &in_val ) // handle assignement from itself - return *this; - - valid_flag = 0; // will get set true if really valid - if (in_val.valid()) - { - switch (in_val.get_syntax()) - { - case sNMP_SYNTAX_UINT32: - // case sNMP_SYNTAX_GAUGE32: .. indistinquishable from UINT32 - case sNMP_SYNTAX_CNTR32: - case sNMP_SYNTAX_TIMETICKS: - case sNMP_SYNTAX_INT32: // implied cast int -> uint - this->smival.value.uNumber = - ((Counter32 &)in_val).smival.value.uNumber; - valid_flag = 1; - break; - } - } - return *this; -} - -// overloaded assignment -Counter32& Counter32::operator=( const unsigned long int i) -{ - this->smival.value.uNumber=i; - return *this; -} - -// overloaded assignment -Counter32& Counter32::operator=( const Counter32 &uli) -{ - this->smival.value.uNumber = uli.smival.value.uNumber; - return *this; -} - -// otherwise, behave like an unsigned long int -Counter32::operator unsigned long() -{ - return this->smival.value.uNumber; -} - -// clone -SnmpSyntax * Counter32::clone() const -{ - return ( SnmpSyntax *) new Counter32(*this); -} diff --git a/ASNMP/asnmp/counter.h b/ASNMP/asnmp/counter.h deleted file mode 100644 index 2b0f79807f3..00000000000 --- a/ASNMP/asnmp/counter.h +++ /dev/null @@ -1,79 +0,0 @@ -/* -*-C++-*- */ -// $Id$ -#ifndef COUNTER_ -#define COUNTER_ -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// counter.h -// -// = DESCRIPTION -// Class definition for SMI Counter32 class. -// -// = AUTHOR -// Peter E Mellquist -// -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -#include "asnmp/smival.h" -#include "asnmp/integer.h" - -//------------[ Counter32 Class ]------------------------------------------ -// The counter class allows all the functionality of unsigned -// 32 bit integers but is recognized as a distinct SMI type. Counter32 -// class objects may be set or get into Vb objects. -// -// This class does not behave as defined by the abstract model -// in RFC 1155 section 3.2.3.3 - -class ACE_Export Counter32: public SnmpUInt32 - // = TITLE - // Defines the member functions for the Counter32 concrete class - // This class implements RFC 1155 Counter Object and is named - // Counter32 after the RFC1902 redefinition of V1 SMI datatypes -{ - public: - Counter32( const unsigned long i = 0); - // constructor with a value - - Counter32( const Counter32 &c); - // copy constructor - - SmiUINT32 get_syntax(); - // syntax type - - SnmpSyntax *clone() const; - // create a new instance of this Value - - SnmpSyntax& operator=( SnmpSyntax &val); - // copy an instance of this Value - - Counter32& operator=( const Counter32 &uli); - // overloaded assignment - - Counter32& operator=( const unsigned long i); - // overloaded assignment - - operator unsigned long(); - // otherwise, behave like an unsigned long int -}; - -#endif // COUNTER_ diff --git a/ASNMP/asnmp/ctr64.cpp b/ASNMP/asnmp/ctr64.cpp deleted file mode 100644 index 264c97a3ac2..00000000000 --- a/ASNMP/asnmp/ctr64.cpp +++ /dev/null @@ -1,211 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// ctr64.cpp -// -// = DESCRIPTION -// Implementation for Counter64 ( 64 bit counter class). -// -// = AUTHOR -// Peter E Mellquist -// Michael R MacFaden mrm@cisco.com - rework & ACE port -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -#include "asnmp/ctr64.h" - -ACE_RCSID(asnmp, ctr64, "$Id$") - -#define MAX32 4294967295u - -//-----------[ syntax type ]---------------------------------------------- -SmiUINT32 Counter64::get_syntax() -{ - return sNMP_SYNTAX_CNTR64; -} - -//------------------[ constructor with values ]-------------------------- -Counter64::Counter64( unsigned long hiparm, unsigned long loparm) -{ - smival.syntax = sNMP_SYNTAX_CNTR64; - smival.value.hNumber.hipart = hiparm; - smival.value.hNumber.lopart = loparm; -} - -//------------------[ constructor with low value only ]------------------ -Counter64::Counter64( unsigned long long llw ) -{ - smival.syntax = sNMP_SYNTAX_CNTR64; - smival.value.hNumber.hipart = (unsigned long) (llw >> 32); - smival.value.hNumber.lopart = (unsigned long) llw & 0xffffffff; -} - -//------------------[ copy constructor ]--------------------------------- -Counter64::Counter64( const Counter64 &ctr64 ) -{ - smival.syntax = sNMP_SYNTAX_CNTR64; - smival.value.hNumber.hipart = ctr64.high(); - smival.value.hNumber.lopart = ctr64.low(); -} - -//------------------[ destructor ]--------------------------------- -Counter64::~Counter64() -{ -} - - -//------------------[ Counter64::high() ]------------------------------ -// return the high part -unsigned long Counter64::high() const -{ - return smival.value.hNumber.hipart; -} - - -//------------------[ Counter64::low() ]------------------------------- -// return the low part -unsigned long Counter64::low() const -{ - return smival.value.hNumber.lopart; -} - -//------------------[ set_high( const unsigned long h) ]----------- -// set the high part -void Counter64::set_high( const unsigned long h) -{ - smival.value.hNumber.hipart = h; -} - -//------------------[ set_low( const unsigned long l) ]------------ -// set the low part -void Counter64::set_low( const unsigned long l) -{ - smival.value.hNumber.lopart = l; -} - - -//-----------[ to_long_double( Counter64 c64) ]----------------------------- -// convert a Counter 64 to a long double -long double Counter64::to_long_double() const -{ - long double ld = this->high(); - ld *= MAX32; - ld += this->low(); - return ld; -} - - -//-----------[ ld_to_c64( long double ld) ]---------------------------- -// convert a long double to a Counter64 -// semantics changed from prior version -Counter64& Counter64::assign( long double ld) -{ - smival.syntax = sNMP_SYNTAX_CNTR64; - unsigned long h = smival.value.hNumber.hipart = (unsigned long)(ld / MAX32); - smival.value.hNumber.lopart = (unsigned long)(ld - h); - return *this; -} - -//----------------[ general Value = operator ]--------------------- -SnmpSyntax& Counter64::operator=( SnmpSyntax &val) -{ - // protect against assignment from itself - if ( this == &val ) - return *this; - - smival.value.hNumber.lopart = 0; // pessimsitic - assume no mapping - smival.value.hNumber.hipart = 0; - - // try to make assignment valid - if (val.valid()){ - switch (val.get_syntax()){ - case sNMP_SYNTAX_CNTR64: - smival.value.hNumber.hipart = - ((Counter64 &)val).smival.value.hNumber.hipart; - smival.value.hNumber.lopart = - ((Counter64 &)val).smival.value.hNumber.lopart; - break; - - case sNMP_SYNTAX_CNTR32: - case sNMP_SYNTAX_TIMETICKS: - case sNMP_SYNTAX_GAUGE32: - // case sNMP_SYNTAX_UINT32: .. indistinguishable from GAUGE32 - case sNMP_SYNTAX_INT32: - // take advantage of union... - smival.value.hNumber.lopart = ((Counter64 &)val).smival.value.uNumber; - smival.value.hNumber.hipart = 0; - break; - } - } - return *this; -} - -// overloaded assignment -Counter64& Counter64::operator=( const unsigned long long rhs) -{ - smival.value.hNumber.hipart = (unsigned long) (rhs >> 32); - smival.value.hNumber.lopart = (unsigned long) rhs; - return *this; -} - -// overloaded assignment -Counter64& Counter64::operator=( const Counter64 &rhs) -{ - smival.value.hNumber.hipart = rhs.high(); - smival.value.hNumber.lopart = rhs.low(); - return *this; -} - -// otherwise, behave like an unsigned long int -Counter64::operator unsigned long long() -{ - unsigned long long val = smival.value.hNumber.hipart; - val = val << 32; // shift right 4 bytes - val |= smival.value.hNumber.lopart; - return val; -} - -//----------------[ Counter64::clone() ]----------------------------------- -// create a new instance of this Value -SnmpSyntax* Counter64::clone() const -{ - return ( SnmpSyntax *) new Counter64(*this); -} - -//----------------[ Counter64::valid() ]------------------------------------- -int Counter64::valid() const -{ - return 1; -} - -//----------[ return ASCII format ]------------------------- -// TODO: Fix up to do real 64bit decimal value printing... -// For now, print > 32-bit values in hex -char * Counter64::to_string() -{ - if ( high() != 0 ) - sprintf(output_buffer, "0x%X%08X", - (unsigned int)high(), (unsigned int)low()); - else - sprintf(output_buffer, "%d", (int) low()); - return output_buffer; -} diff --git a/ASNMP/asnmp/ctr64.h b/ASNMP/asnmp/ctr64.h deleted file mode 100644 index f9dc641a94a..00000000000 --- a/ASNMP/asnmp/ctr64.h +++ /dev/null @@ -1,110 +0,0 @@ -/* -*-C++-*- */ -// $Id$ -#ifndef CTR64_ -#define CTR64_ -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// ctr64.h -// -// = DESCRIPTION -// SNMP Counter64 class definition. -// -// = AUTHOR -// Peter E Mellquist -// -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -#include "asnmp/smival.h" - -#define CTR64OUTBUF 30 // maximum ascii string for a 64-bit ctr - - -//---------[ 64 bit Counter Class ]-------------------------------- -// Counter64 Class encapsulates two unsigned integers into a -// a single entity. This type has is available in SNMPv2 but -// may be used anywhere where needed. -// -class ACE_Export Counter64: public SnmpSyntax - // = TITLE - // Defines the member functions for the Counter64 concrete class - // This class implements RFC 1902 64 bit Counter Object. -{ -public: - Counter64( unsigned long long llw = 0); - // default constructor - - Counter64( unsigned long hiparm, unsigned long loparm); - // constructor with values - - Counter64( const Counter64 &ctr64); - // copy constructor - - ~Counter64(); - // destructor (ensure that SnmpSyntax::~SnmpSyntax() is overridden) - - SmiUINT32 get_syntax(); - // syntax type - - long double to_long_double() const; - // return a long double representation - - Counter64& assign( long double ld); - // assign a long double to a counter64 - - unsigned long high() const; - // return the high part - - unsigned long low() const; - // return the low part - - void set_high( const unsigned long h); - // set the high part - - void set_low( const unsigned long l); - // set the low part - - Counter64& operator=( const unsigned long long rhs); - // overloaded assignment - - Counter64& operator=( const Counter64 &rhs); - // overloaded assignment - - char *to_string(); - // get a printable ASCII representation - - SnmpSyntax *clone() const; - // create a new instance of this Value - - SnmpSyntax& operator=( SnmpSyntax &val); - // copy an instance of this Value - - int valid() const; - // general validity test, always true - - operator unsigned long long(); - // otherwise, behave like an unsigned long long - -protected: - char output_buffer[CTR64OUTBUF]; -}; - -#endif // CTR64_ diff --git a/ASNMP/asnmp/enttraps.h b/ASNMP/asnmp/enttraps.h deleted file mode 100644 index d90a593a4e4..00000000000 --- a/ASNMP/asnmp/enttraps.h +++ /dev/null @@ -1,118 +0,0 @@ -/* -*-C++-*- */ -// $Id$ -#ifndef ENTTRAPS_ -#define ENTTRAPS_ -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// enttraps.cpp -// -// = DESCRIPTION -// constants for Enterprise Traps -// -// = AUTHOR -// Peter E Mellquist -// Michael R MacFaden mrm@cisco.com - rework & ACE port -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -#include "asnmp/asn1.h" // ASN.1 header file - -//--------------[ well known trap ids ]----------------------------------- -class ACE_Export snmpTrapsOid: public Oid - // = TITLE - // Defines the member functions for the snmpTrapsOid base class - // to implement the traps defined in RFC 1215 -{ - public: - snmpTrapsOid (void):Oid("1.3.6.1.6.3.1.1.5"){} -}; - -class ACE_Export snmpTrapEnterpriseOid: public Oid - // = TITLE - // Defines the default Enterprise Oid for this software package -{ - public: - snmpTrapEnterpriseOid(void): Oid("1.3.6.1.6.3.1.1.4.3.0") { } -}; - -class ACE_Export coldStartOid: public snmpTrapsOid - // = TITLE - // Defines the RFC 1215 agent cold start generic trap (system reboot) -{ - public: - coldStartOid( void){*this+=".1";} -}; - -class ACE_Export warmStartOid: public snmpTrapsOid - // = TITLE - // Defines the RFC 1215 agent warm start generic trap (agent reboot) -{ - public: - warmStartOid( void){*this+=".2";} -}; - -class ACE_Export linkDownOid: public snmpTrapsOid - // = TITLE - // Defines the RFC 1215 interface (link) down trap -{ - public: - linkDownOid( void){*this+=".3";} -}; - - -// SMI LinkUp Oid -class ACE_Export linkUpOid: public snmpTrapsOid - // = TITLE - // Defines the RFC 1215 interface (link) up trap -{ - public: - linkUpOid( void){*this+=".4";} -}; - -class ACE_Export authenticationFailureOid: public snmpTrapsOid - // = TITLE - // Defines the RFC 1215 device/agent invalid access trap -{ - public: - authenticationFailureOid( void){*this+=".5";} -}; - -class ACE_Export egpNeighborLossOid: public snmpTrapsOid - // = TITLE - // Defines the RFC 1215 Exterior Gateway Protocol neighbor loss trap -{ - public: - egpNeighborLossOid( void){*this+=".6";} -}; - -#ifdef DEFINE_TRAP_CONSTANTS_ - -const coldStartOid coldStart; -const warmStartOid warmStart; -const linkDownOid linkDown; -const linkUpOid linkUp; -const authenticationFailureOid authenticationFailure; -const egpNeighborLossOid egpNeighborLoss; -const snmpTrapEnterpriseOid snmpTrapEnterprise; - -#endif - -#endif // ENTTRAPS_ diff --git a/ASNMP/asnmp/gauge.cpp b/ASNMP/asnmp/gauge.cpp deleted file mode 100644 index aac715f2730..00000000000 --- a/ASNMP/asnmp/gauge.cpp +++ /dev/null @@ -1,113 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// gauge.cpp -// -// = DESCRIPTION -// Class implemtation for SMI Gauge32 class. -// NOTES: This does not behave exactly as a Gauge described in RFC 1155 -// -// = AUTHOR -// Peter E Mellquist -// Michael R MacFaden mrm@cisco.com - rework & ACE port -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -#include "asnmp/gauge.h" // header file for gauge class - -ACE_RCSID(asnmp, gauge, "$Id$") - -// constructor with a value -Gauge32::Gauge32( const unsigned long i):SnmpUInt32(i) -{ - smival.syntax = sNMP_SYNTAX_GAUGE32; -} - -// copy constructor -Gauge32::Gauge32 ( const Gauge32 &g) -{ this->smival.value.uNumber = g.smival.value.uNumber; - smival.syntax = sNMP_SYNTAX_GAUGE32; - valid_flag = 1; -} - -// destructor -Gauge32::~Gauge32() -{ -} - -// syntax type -SmiUINT32 Gauge32::get_syntax() -{ - return sNMP_SYNTAX_GAUGE32; -} - -// overloaded assignment -Gauge32& Gauge32::operator=( const Gauge32 &uli) -{ - this->smival.value.uNumber = uli.smival.value.uNumber; - return *this; -} - -// overloaded assignment -Gauge32& Gauge32::operator=( const unsigned long int i) -{ - smival.value.uNumber=i; return *this; -} - -// general assignment from any Value -// TODO: this is broken if not inherited from UInt32 (see UInt32 code). -SnmpSyntax& Gauge32::operator=( SnmpSyntax &in_val) -{ - - if ( this == &in_val ) // handle assignement from itself - return *this; - - valid_flag = 0; // will get set true if really valid - if (in_val.valid()) - { - switch (in_val.get_syntax()) - { - case sNMP_SYNTAX_UINT32: - case sNMP_SYNTAX_GAUGE32: - case sNMP_SYNTAX_CNTR32: - case sNMP_SYNTAX_TIMETICKS: - case sNMP_SYNTAX_INT32: // implied cast int -> uint - this->smival.value.uNumber = - ((Gauge32 &)in_val).smival.value.uNumber; - valid_flag = 1; - break; - } - } - return *this; -} - -// otherwise, act as unsigned long -Gauge32::operator unsigned long() -{ - return smival.value.uNumber; -} - -// clone - create a new instance of this Value -SnmpSyntax* Gauge32::clone() const -{ - return ( SnmpSyntax *) new Gauge32(*this); -} diff --git a/ASNMP/asnmp/gauge.h b/ASNMP/asnmp/gauge.h deleted file mode 100644 index 765a713736c..00000000000 --- a/ASNMP/asnmp/gauge.h +++ /dev/null @@ -1,80 +0,0 @@ -/* -*-C++-*- */ -// $Id$ -#ifndef GAUGE_ -#define GAUGE_ -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// gauge32.cpp -// -// = DESCRIPTION -// Class definition for SMI Gauge32 class. -// This class currently does not behave as defined by the abstract model -// in RFC 1155 section 3.2.3.4 (ie the value doesn't latch on the max value) -// -// = AUTHOR -// Peter E Mellquist -// -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -#include "asnmp/integer.h" - -//------------[ Gauge32 Class ]------------------------------------------ -// The gauge class allows all the functionality of unsigned -// integers but is recognized as a distinct SMI type. Gauge32 -// objects may be set or get into Vb objects. -// - -class ACE_Export Gauge32: public SnmpUInt32 - // = TITLE - // Define RFC1902 Gauge datatype from RFC 1155 section 3.2.3.4 - // Note that this datatype does not behave exactly (acts like a long) -{ - public: - Gauge32( const unsigned long i = 0); - // constructor with a value - - Gauge32 ( const Gauge32 &g); - // copy constructor - - ~Gauge32(); - // destructor for a Gauge32 (ensure that Value::~Value() is overridden) - - SmiUINT32 get_syntax(); - // syntax type - - SnmpSyntax *clone() const; - // create a new instance of this Value - - Gauge32& operator=( const Gauge32 &uli); - // overloaded assignment - - Gauge32& operator=( const unsigned long i); - // overloaded assignment - - operator unsigned long(); - // otherwise, behave like an unsigned int - - SnmpSyntax& operator=( SnmpSyntax &val); - // copy an instance of this Value -}; -#endif //GAUGE_ - diff --git a/ASNMP/asnmp/integer.cpp b/ASNMP/asnmp/integer.cpp deleted file mode 100644 index e0da5b6dfab..00000000000 --- a/ASNMP/asnmp/integer.cpp +++ /dev/null @@ -1,227 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// integer.cpp -// -// = DESCRIPTION -// Class implemtation for SMI Integer classes. -// -// = AUTHOR -// Jeff Meyer -// Michael R MacFaden mrm@cisco.com - rework & ACE port -// ============================================================================ -/*=================================================================== - - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -#include "asnmp/integer.h" // header file for gauge class - -ACE_RCSID(asnmp, integer, "$Id$") - -// constructor with value -SnmpUInt32::SnmpUInt32 (const u_long i) -{ - smival.value.uNumber=i; - smival.syntax = sNMP_SYNTAX_UINT32; - valid_flag = 1; -} - -// copy constructor -SnmpUInt32::SnmpUInt32( const SnmpUInt32 &c) -{ - smival.value.uNumber=c.smival.value.uNumber; - smival.syntax = sNMP_SYNTAX_UINT32; - valid_flag = 1; -} - -// destructor (ensure that SnmpSyntax::~SnmpSyntax() is overridden) -SnmpUInt32::~SnmpUInt32() -{ -} - -// syntax type -SmiUINT32 SnmpUInt32::get_syntax() -{ - return sNMP_SYNTAX_UINT32; -} - -// object validity -int SnmpUInt32::valid( void) const -{ - return valid_flag; -} - -// overloaded assignment -SnmpUInt32& SnmpUInt32::operator=( const unsigned long int i) -{ - smival.value.uNumber=i; - valid_flag = 1; - return *this; -} - -// general assignment from any Value -SnmpSyntax& SnmpUInt32::operator=( SnmpSyntax &in_val) -{ - if ( this == &in_val ) // handle assignement from itself - return *this; - - valid_flag = 0; // will get set true if really valid - if (in_val.valid()) - { - switch (in_val.get_syntax()) - { - case sNMP_SYNTAX_UINT32: - // case sNMP_SYNTAX_GAUGE32: .. indistinquishable from UINT32 - case sNMP_SYNTAX_CNTR32: - case sNMP_SYNTAX_TIMETICKS: - case sNMP_SYNTAX_INT32: // implied cast int -> uint - this->smival.value.uNumber = - ((SnmpUInt32 &)in_val).smival.value.uNumber; - valid_flag = 1; - break; - } - } - return *this; -} - -// overloaded assignment -SnmpUInt32& SnmpUInt32::operator=( const SnmpUInt32 &uli) -{ - this->smival.value.uNumber = uli.smival.value.uNumber; return *this; -} - -// otherwise, behave like an unsigned long int -SnmpUInt32::operator unsigned long() -{ - return smival.value.uNumber; -} - -// create a new instance of this Value -SnmpSyntax* SnmpUInt32::clone() const -{ - return (SnmpSyntax *) new SnmpUInt32(*this); -} - -// ASCII format return -char * SnmpUInt32::to_string() -{ - sprintf(output_buffer, "%d", (int) (this->smival.value.uNumber)); - return output_buffer; -} - - -//==================================================================== -// INT 32 Implementation -//==================================================================== - -// default constructor -SnmpInt32::SnmpInt32 (const long i) -{ - smival.value.sNumber=i; - smival.syntax = sNMP_SYNTAX_INT32; - valid_flag = 1; -} - -// constructor with value -SnmpInt32::SnmpInt32 (const SnmpInt32 &c) -{ - smival.value.sNumber=c.smival.value.sNumber; - smival.syntax = sNMP_SYNTAX_INT32; - valid_flag = 1; -} - -// destructor -SnmpInt32::~SnmpInt32() -{ -} - -// syntax type -SmiUINT32 SnmpInt32::get_syntax() -{ - return sNMP_SYNTAX_INT32; -} - -// object validity -int SnmpInt32::valid( void) const -{ - return valid_flag; -} - -// overloaded assignment -SnmpInt32& SnmpInt32::operator=( const long i) -{ - this->smival.value.sNumber = (unsigned long) i; - valid_flag = 1; - return *this; -} - -// overloaded assignment -SnmpInt32& SnmpInt32::operator=( const SnmpInt32 &uli) -{ - this->smival.value.sNumber = uli.smival.value.sNumber; - valid_flag = 1; - return *this; -} - -// general assignment from any Value -SnmpSyntax& SnmpInt32::operator=( SnmpSyntax &in_val) -{ - if ( this == &in_val ) // handle assignement from itself - return *this; - - valid_flag = 0; // will get set true if really valid - if (in_val.valid()) - { - switch (in_val.get_syntax()) - { - case sNMP_SYNTAX_INT32: - case sNMP_SYNTAX_UINT32: // implied cast uint -> int - // case sNMP_SYNTAX_GAUGE32: .. indistinquishable from UINT32 - case sNMP_SYNTAX_CNTR32: // implied cast uint -> int - case sNMP_SYNTAX_TIMETICKS: // implied cast uint -> int - this->smival.value.sNumber = - ((SnmpInt32 &)in_val).smival.value.sNumber; - valid_flag = 1; - break; - } - } - return *this; -} - -// otherwise, behave like a long int -SnmpInt32::operator long() -{ - return (long) smival.value.sNumber; -} - -// clone - create a new instance of this Value -SnmpSyntax* SnmpInt32::clone() const -{ - return ( SnmpSyntax *) new SnmpInt32(*this); -} - -// ASCII format return - -char *SnmpInt32::to_string() -{ - sprintf(output_buffer, "%d", (int) (long) this->smival.value.sNumber); - return output_buffer; -} diff --git a/ASNMP/asnmp/integer.h b/ASNMP/asnmp/integer.h deleted file mode 100644 index d0dc2972742..00000000000 --- a/ASNMP/asnmp/integer.h +++ /dev/null @@ -1,140 +0,0 @@ -/* -*-C++-*- */ -// $Id$ -#ifndef SNMPINTEGER_ -#define SNMPINTEGER_ -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// integer.cpp -// -// = DESCRIPTION -// Class definition for Integer classes convertable to SMI. -// -// = AUTHOR -// Jeff Meyer -// -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -#include "asnmp/smival.h" - -// TODO get rid of this constant -#define INTOUTBUF 15 // largest ASCII formatted integer - -//------------[ Integer Classes ]------------------------------------------ -// The integer class allows all the functionality of the various -// integers but is contained in a Value object for consistency -// among the various types. -// class objects may be set or get into Vb objects. -// - -// 32 bit unsigned integer class -class ACE_Export SnmpUInt32: public SnmpSyntax - // = TITLE - // Implement RFC 1920 Unsigned Integer SMI datatype -{ - - public: - SnmpUInt32 (const unsigned long i = 0); - // default constructor - - SnmpUInt32( const SnmpUInt32 &c); - // copy constructor - - virtual ~SnmpUInt32(); - // destructor (ensure that SnmpSyntax::~SnmpSyntax() is overridden) - - virtual SmiUINT32 get_syntax(); - // syntax type - - SnmpUInt32& operator=( const unsigned long i); - // overloaded assignment - - SnmpUInt32& operator=( const SnmpUInt32 &uli); - // overloaded assignment - - operator unsigned long(); - // otherwise, behave like an unsigned long int - - virtual char *to_string(); - // get a printable ASCII value - - virtual SnmpSyntax *clone() const; - // create a new instance of this Value - - SnmpSyntax& operator=( SnmpSyntax &val); - // copy an instance of this Value - - int valid() const; - // did object construct properly - - protected: - int valid_flag; - char output_buffer[INTOUTBUF]; - // contain string representation of object -}; - - -// 32 bit signed integer class -class ACE_Export SnmpInt32: public SnmpSyntax -{ - // = TITLE - // Implement RFC 1902 32 bit Integer SMI data object - public: - SnmpInt32 (const long i = 0); - // constructor with value - - SnmpInt32 (const SnmpInt32 &c); - // constructor with value - - virtual ~SnmpInt32(); - // destructor (ensure that SnmpSyntax::~SnmpSyntax() is overridden) - - virtual SmiUINT32 get_syntax(); - // syntax type - - SnmpInt32& operator=( const long i); - // overloaded assignment - - SnmpInt32& operator=( const SnmpInt32 &li); - // overloaded assignment - - operator long(); - // otherwise, behave like a long int - - SnmpSyntax *clone() const; - // create a new instance of this Value - - SnmpSyntax& operator=( SnmpSyntax &val); - // copy an instance of this Value - - char *to_string(); - // get a printable ASCII value - - int valid() const; - // logical state of object - - protected: - int valid_flag; - char output_buffer[INTOUTBUF]; - // contain string representation of object -}; - -#endif diff --git a/ASNMP/asnmp/octet.cpp b/ASNMP/asnmp/octet.cpp deleted file mode 100644 index 2a422a5fe88..00000000000 --- a/ASNMP/asnmp/octet.cpp +++ /dev/null @@ -1,594 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// octet.cpp -// -// = DESCRIPTION -// Implements the SMI Octet datatype (RFC 1155) -// This class is fully contained and does not rely on or any other -// SNMP libraries. Ported to ACE by Michael MacFaden mrm@cisco.com -// -// = AUTHOR -// Peter E Mellquist -// -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -#include "ace/OS.h" -#include "asnmp/octet.h" // include definition for octet class - -ACE_RCSID(asnmp, octet, "$Id$") - -//============[ syntax type ]========================================= -SmiUINT32 OctetStr::get_syntax() -{ - return sNMP_SYNTAX_OCTETS; -} - -inline -void init_octet_smi(SmiVALUE& smi) -{ - smi.syntax = sNMP_SYNTAX_OCTETS; - smi.value.string.ptr = 0; - smi.value.string.len = 0; -} - -inline -void reset_octet_smi(SmiVALUE& smi) -{ - delete [] smi.value.string.ptr; - smi.value.string.ptr = 0; - smi.value.string.len = 0; -} - -inline -int copy_octet_smi(SmiVALUE& smi, int size, const char *src, int& valid_flag) -{ - valid_flag = 0; - - if (smi.value.string.ptr) - delete [] smi.value.string.ptr; - - ACE_NEW_RETURN(smi.value.string.ptr, SmiBYTE[size], 1); - ACE_OS::memcpy( smi.value.string.ptr, src, size); - smi.value.string.len = size; - valid_flag = 1; - return 0; -} - -//============[ default constructor ]========================= -OctetStr::OctetStr( const char * string, long size): - output_buffer(0), validity(0) -{ - - size_t z; - init_octet_smi(smival); - - // check for null string - if ( !string) - return; - - if (size == -1) // calc if no length given - assume c style string - size = z = ACE_OS::strlen( string); - - copy_octet_smi(smival, size, string, validity); -} - - -//============[ set the data on an already constructed Octet ]============ -// TODO: should return status since it can fail in so many places -void OctetStr::set_data( const SmiBYTE* string, long size) -{ - size_t z; - - // invalid args, set octetStr to not valid - if ( !string || !size) { - validity = 0; - return; - } - - // assume non-zero terminated string - if (size == -1) // calc if no length given - assume c style string - size = z = ACE_OS::strlen( (char *)string); - - // free up already used space - if ( smival.value.string.ptr ) { - reset_octet_smi(smival); - } - smival.value.string.len = 0; - - - copy_octet_smi(smival, size, (const char *)string, validity); -} - -//============[ constructor using another octet object ]============== -OctetStr::OctetStr ( const OctetStr &octet): - output_buffer(0), validity(1) -{ - init_octet_smi(smival); - // check for zero len case - if ( octet.smival.value.string.len == 0) { - return; - } - - // must be a valid object - if ( octet.validity == 0) { - validity = 0; - return; - } - - // get the mem needed - copy_octet_smi(smival, octet.smival.value.string.len, - (const char *)octet.smival.value.string.ptr, validity); -} - -//=============[ destructor ]========================================= -OctetStr::~OctetStr() -{ - reset_octet_smi(smival); - delete [] output_buffer; -} - - -//=============[ assignment to a string operator overloaded ]========= -OctetStr& OctetStr::operator=( const char *string) -{ - // get the string size - size_t nz; - - // free up previous memory if needed - if ( smival.value.string.ptr ) { - reset_octet_smi(smival); - } - - // if empty then we are done - if (!string || !(nz = ACE_OS::strlen( string))) { - validity = 1; - return *this; - } - - // get memory needed - copy_octet_smi(smival, nz, string, validity); - return *this; -} - -//=============[ assignment to another oid object overloaded ]======== -OctetStr& OctetStr::operator=( const OctetStr &octet) -{ - // protect against assignment from self - if ( this == &octet ) - return *this; - - // don't assign from invalid objs - if (!octet.validity) { - return *this; - } - - // free up previous memory if needed - if ( smival.value.string.len ) { - reset_octet_smi(smival); - } - - if (!octet.smival.value.string.len) { - validity = 1; - return *this; - } - - // get some memory - copy_octet_smi(smival, octet.smival.value.string.len, - (const char*) octet.smival.value.string.ptr, validity); - return *this; // return self reference -} - -//==============[ equivlence operator overloaded ]==================== -int operator==( const OctetStr &lhs, const OctetStr &rhs) -{ - if( lhs.left_comparison( rhs.smival.value.string.len, rhs)==0) - return 1; - else - return 0; -} - -//==============[ not equivlence operator overloaded ]================ -int operator!=( const OctetStr &lhs, const OctetStr &rhs) -{ - if( lhs.left_comparison( rhs.smival.value.string.len, rhs)!=0) - return 1; - else - return 0; -} - -//==============[ less than < overloaded ]============================ -int operator<( const OctetStr &lhs, const OctetStr &rhs) -{ - if( lhs.left_comparison( rhs.smival.value.string.len, rhs)<0) - return 1; - else - return 0; -} - -//==============[ less than <= overloaded ]=========================== -int operator<=( const OctetStr &lhs, const OctetStr &rhs) -{ - if(( lhs.left_comparison( rhs.smival.value.string.len, rhs)<0) || - ( lhs.left_comparison( rhs.smival.value.string.len, rhs)==0)) - return 1; - else - return 0; -} - -//===============[ greater than > overloaded ]======================== -int operator>( const OctetStr &lhs, const OctetStr &rhs) -{ - if( lhs.left_comparison( rhs.smival.value.string.len, rhs)>0) - return 1; - else - return 0; -} - -//===============[ greater than >= overloaded ]======================= -int operator>=( const OctetStr &lhs, const OctetStr &rhs) -{ - if(( lhs.left_comparison( rhs.smival.value.string.len, rhs)>0) || - ( lhs.left_comparison( rhs.smival.value.string.len, rhs)==0)) - return 1; - else - return 0; -} - -//===============[ equivlence operator overloaded ]=================== -int operator==( const OctetStr &lhs,const char *rhs) -{ - OctetStr to( rhs); - if( lhs.left_comparison( to.smival.value.string.len,to)==0) - return 1; - else - return 0; -} - -//===============[ not equivlence operator overloaded ]=============== -int operator!=( const OctetStr &lhs,const char *rhs) -{ - OctetStr to( rhs); - if ( lhs.left_comparison( to.smival.value.string.len,to)!=0) - return 1; - else - return 0; -} - -//===============[ less than < operator overloaded ]================== -int operator<( const OctetStr &lhs,const char *rhs) -{ - OctetStr to( rhs); - if ( lhs.left_comparison( to.smival.value.string.len,to)<0) - return 1; - else - return 0; -} - -//===============[ less than <= operator overloaded ]================= -int operator<=( const OctetStr &lhs,char *rhs) -{ - OctetStr to( rhs); - if (( lhs.left_comparison( to.smival.value.string.len,to)<0) || - ( lhs.left_comparison( to.smival.value.string.len,to)==0)) - return 1; - else - return 0; -} - -//===============[ greater than > operator overloaded ]=============== -int operator>( const OctetStr &lhs,const char *rhs) -{ - OctetStr to( rhs); - if ( lhs.left_comparison( to.smival.value.string.len,to)>0) - return 1; - else - return 0; -} - -//===============[ greater than >= operator overloaded ]============== -int operator>=( const OctetStr &lhs,const char *rhs) -{ - OctetStr to( rhs); - if (( lhs.left_comparison( to.smival.value.string.len,to)>0) || - ( lhs.left_comparison( to.smival.value.string.len,to)==0)) - return 1; - else - return 0; -} - -//===============[ append operator, appends a string ]================ -OctetStr& OctetStr::operator+=( const char *a) -{ - SmiBYTE *tmp; // temp pointer - size_t slen,nlen; - - // get len of string - if ( !a || ((slen = ACE_OS::strlen( a)) == 0)) - return *this; - - // total len of octet - nlen = slen + (size_t) smival.value.string.len; - ACE_NEW_RETURN(tmp, SmiBYTE [ nlen], *this); - ACE_OS::memcpy ( tmp, smival.value.string.ptr, - (size_t) smival.value.string.len); - ACE_OS::memcpy( tmp + smival.value.string.len, a, (size_t) slen); - // delete the original - if ( smival.value.string.ptr ) - reset_octet_smi(smival); - smival.value.string.ptr = tmp; - smival.value.string.len = nlen; - return *this; -} - -//================[ append one OctetStr to another ]================== -OctetStr& OctetStr::operator+=( const OctetStr& octetstr) -{ - SmiBYTE *tmp; // temp pointer - size_t slen,nlen; - - if (!octetstr.validity || - !(slen = (size_t)octetstr.length())) - return *this; - - // total len of octet - nlen = slen + (size_t) smival.value.string.len; - // get mem needed - ACE_NEW_RETURN(tmp, SmiBYTE[ nlen], *this); - ACE_OS::memcpy ( tmp, smival.value.string.ptr, - (size_t) smival.value.string.len); - ACE_OS::memcpy( tmp + smival.value.string.len, octetstr.data(), - (size_t) slen); - if ( smival.value.string.ptr ) - reset_octet_smi(smival); - smival.value.string.ptr = tmp; - smival.value.string.len = nlen; - return *this; -} - -//================[ appends an int ]================================== -OctetStr& OctetStr::operator+=( const char c) -{ - SmiBYTE *tmp; - // get the memory needed plus one extra byte - ACE_NEW_RETURN(tmp, SmiBYTE[ smival.value.string.len + 1], *this); - ACE_OS::memcpy ( tmp, smival.value.string.ptr, - (size_t) smival.value.string.len); // len of original - tmp[ smival.value.string.len ] = c; // assign in byte - if ( smival.value.string.ptr ) // delete the original - reset_octet_smi(smival); - - smival.value.string.ptr = tmp; // point to one - smival.value.string.len++; // up the len - return *this; -} - - -//================[ compare n elements of an Octet ]================== -int OctetStr::left_comparison( const long n, const OctetStr &o) const -{ - long z, w; - - // both are empty, they are equal - if (( smival.value.string.len == 0) && - ( o.smival.value.string.len == 0)) - return 0; // equal - - // self is empty and param has something - if (( smival.value.string.len == 0) && - ( o.smival.value.string.len >0) && - (n>0)) - return -1; - - // self has something and param has nothing - if (( smival.value.string.len > 0) && - ( o.smival.value.string.len ==0) && - (n>0)) - return 1; - - // special case - if (( smival.value.string.len == 0) && - ( o.smival.value.string.len > 0) && - ( n == 0)) - return 0; - - // pick the Min of n, this and the param len - // this is the maximum # to iterate a search - w = smival.value.string.len < o.smival.value.string.len - ? smival.value.string.len : o.smival.value.string.len; - if (n o.smival.value.string.ptr[z]) - return 1; // greater than - z++; - } - - if (( z == 0) && - ( smival.value.string.len == 0) && - ( o.smival.value.string.len > 0)) - return -1; - - if (( z == 0) && - ( o.smival.value.string.len == 0) && - ( smival.value.string.len > 0)) - return 1; - - return 0; -} - -//================[ return the length of the oid ]======================= -size_t OctetStr::length() const -{ - return (size_t) smival.value.string.len; -} - -//================[ operator[]: access as if array ]================== -SmiBYTE& OctetStr::operator[]( int position) -{ - return smival.value.string.ptr[position]; -} - -//===============[ reuturns pointer to internal data ]=============== -SmiBYTE * OctetStr::data() const -{ - return smival.value.string.ptr; -} - -//================[ returns validity ]================================ -int OctetStr::valid() const -{ - return validity; -} - -//================[ clone() ]========================================= -SnmpSyntax * OctetStr::clone() const -{ - OctetStr *tmp = new OctetStr(*this); - return ( SnmpSyntax *) tmp; -} - -//================[ ASCII format return ]============================= -char * OctetStr::to_string() -{ - for ( unsigned long i=0; i < smival.value.string.len; i++) { - if (( smival.value.string.ptr[i] != '\r')&& - ( smival.value.string.ptr[i] != '\n')&& - (isprint((int) (smival.value.string.ptr[i]))==0)) - return(to_string_hex()); - } - - if ( output_buffer != 0) - delete [] output_buffer; - - ACE_NEW_RETURN(output_buffer, char[smival.value.string.len + 1], ""); - if (smival.value.string.len) - ACE_OS::memcpy(output_buffer, smival.value.string.ptr, - (int) smival.value.string.len); - output_buffer[smival.value.string.len] = '\0'; - return output_buffer; -} - - -//================[ general Value = operator ]======================== -SnmpSyntax& OctetStr::operator=( SnmpSyntax &val) -{ - // protect against assignment from self - if ( this == &val ) - return *this; - - // blow away the old value - validity=0; - if (smival.value.string.ptr) { - reset_octet_smi(smival); - } - smival.value.string.len = 0; - if (val.valid()){ - switch (val.get_syntax()) { - case sNMP_SYNTAX_OCTETS: - case sNMP_SYNTAX_IPADDR: - set_data( ((OctetStr &)val).smival.value.string.ptr, - ((OctetStr &)val).smival.value.string.len); - break; - } - } - return *this; -} - -//================[ format the output into hex ]======================== -char *OctetStr::to_string_hex() -{ - int cnt; - char char_buf[80]; // holds ASCII representation of data - char *buf_ptr; // pointer into ASCII listing - char *line_ptr; // pointer into Hex listing - int storageNeeded; // how much space do we need ? - int local_len = (int) smival.value.string.len; - SmiBYTE *bytes = smival.value.string.ptr; - - - storageNeeded = (int) ((smival.value.string.len/16)+1) * 72 + 1; - - if ( output_buffer != 0) - delete [] output_buffer; - - ACE_NEW_RETURN(output_buffer, char[storageNeeded], ""); - - line_ptr = output_buffer; - - /*----------------------------------------*/ - /* processing loop for entire data buffer */ - /*----------------------------------------*/ - while (local_len > 0) { - cnt = 16; /* print 16 bytes per line */ - buf_ptr = char_buf; - sprintf(line_ptr, " "); - line_ptr += 2; /* indent */ - - /*-----------------------*/ - /* process a single line */ - /*-----------------------*/ - while (cnt-- > 0 && local_len-- > 0) { - sprintf(line_ptr, "%2.2X ", *bytes); - - line_ptr +=3; /* the display of a byte always 3 chars long */ - if (isprint(*bytes)) - sprintf(buf_ptr, "%c", *bytes); - else - sprintf(buf_ptr, "."); - bytes++; - buf_ptr++; - } - cnt++; - - /*----------------------------------------------------------*/ - /* this is to make sure that the ASCII displays line up for */ - /* incomplete lines of hex */ - /*----------------------------------------------------------*/ - while (cnt-- > 0) { - sprintf(line_ptr," "); - line_ptr += 3; - } - - /*------------------------------------------*/ - /* append the ASCII display to the Hex line */ - /*------------------------------------------*/ - -// TODO: verify ACE_OS:: on NT works like this or not -#if defined(__unix) - char *fmt = " %s\n"; -#endif // __unix - -#if defined(_WIN32) - char *fmt = " %s\r\n"; -#endif // _WIN32 - - ACE_OS::sprintf(line_ptr, fmt, char_buf); - line_ptr += 3 + strlen(char_buf); - } - - return output_buffer; -} diff --git a/ASNMP/asnmp/octet.h b/ASNMP/asnmp/octet.h deleted file mode 100644 index 28b3d9fda21..00000000000 --- a/ASNMP/asnmp/octet.h +++ /dev/null @@ -1,150 +0,0 @@ -/* -*-C++-*- */ -// $Id$ -#ifndef OCTET_CLS_ -#define OCTET_CLS_ -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// octet.h -// -// = DESCRIPTION -// This class is fully contained and does not rely on or any other -// SNMP libraries. This class is portable across any platform -// which supports C++. -// -// = AUTHOR -// Peter E Mellquist / design/original code -// Michael R. MacFaden / modified for ACE, added suboid(),collapse ctor's -// -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -//------------------------------------------------------------------------ -#include "asnmp/smival.h" - -class ACE_Export OctetStr: public SnmpSyntax - // = TITLE - // Implement RFC1155 Octet SMI data object - -{ -public: - OctetStr( const char *string = "", long size = -1); - // construct octet from byte buffer, assume c style string if size == -1 - - OctetStr ( const OctetStr &octet); - // constructor using another octet object - - ~OctetStr(); - // destructor - - SmiUINT32 get_syntax(); - // syntax type - - void set_data( const SmiBYTE* string, long int size = -1); - // set octet from byte buffer, assume c style string if size == -1 - - OctetStr& operator=( const char *string); - // assignment to a string operator overloaded - - OctetStr& operator=( const OctetStr &octet); - // assignment to another oid object overloaded - - friend int operator==( const OctetStr &lhs, const OctetStr &rhs); - // equivlence operator overloaded - - friend int operator!=( const OctetStr &lhs, const OctetStr &rhs); - // not equivlence operator overloaded - - friend int operator<( const OctetStr &lhs, const OctetStr &rhs); - // less than < overloaded - - friend int operator<=( const OctetStr &lhs,const OctetStr &rhs); - // less than <= overloaded - - friend int operator>( const OctetStr &lhs, const OctetStr &rhs); - // greater than > overloaded - - friend int operator>=( const OctetStr &lhs, const OctetStr &rhs); - // greater than >= overloaded - - friend int operator==( const OctetStr &lhs,const char *rhs); - // equivlence operator overloaded - - friend int operator!=( const OctetStr &lhs,const char *rhs); - // not equivlence operator overloaded - - friend int operator<( const OctetStr &lhs,const char *rhs); - // less than < operator overloaded - - friend int operator<=( const OctetStr &lhs,char *rhs); - // less than <= operator overloaded - - friend int operator>( const OctetStr &lhs,const char *rhs); - // greater than > operator overloaded - - friend int operator>=( const OctetStr &lhs,const char *rhs); - // greater than >= operator overloaded - - OctetStr& operator+=( const char *a); - // append operator, appends a string - - OctetStr& operator+=( const char c); - // appends an int - - OctetStr& operator+=( const OctetStr& octetstr); - // append one octetStr to another - - SmiBYTE& operator[]( int position); - // for non const [], allows reading and writing - - int left_comparison( const long n, const OctetStr &o) const; - // compare the n leftmost bytes (left-to-right) - // returns 0, equal - // returns -1, < - // returns 1 , > - - size_t length() const ; - // return the len of the oid - - int valid() const; - // returns validity - - SmiBYTE *data() const; - // returns pointer to internal data - - char *to_string(); - // get a printable ASCII value - - char *to_string_hex(); - // get an ASCII formattted hex dump of the contents - - SnmpSyntax *clone() const; - // create a new instance of this Value - - SnmpSyntax& operator=( SnmpSyntax &val); - // copy an instance of this Value - -protected: - //----[ instance variables ] - char *output_buffer; // formatted Octet value - int validity; // validity boolean -}; - -#endif // OCTET_CLS_ diff --git a/ASNMP/asnmp/oid.cpp b/ASNMP/asnmp/oid.cpp deleted file mode 100644 index d0bbcd3c4aa..00000000000 --- a/ASNMP/asnmp/oid.cpp +++ /dev/null @@ -1,800 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// oid.cpp -// -// = DESCRIPTION -// This module contains the implementation of the oid class. This -// includes all protected and public member functions. The oid class -// may be compiled stand alone without the use of any other library. -// -// = AUTHOR -// Peter E Mellquist -// Michael R MacFaden mrm@cisco.com - rework & ACE port -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS" without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -//---------[ external C libaries used ]-------------------------------- - -#include "asnmp/oid.h" // include def for oid class - -ACE_RCSID(asnmp, oid, "$Id$") - -enum Defs {SNMPBUFFSIZE=300, - SNMPCHARSIZE=15}; // max oid value (4294967295UL) - -#define NO_MEM_STR "ERROR: Oid::to_string: memory allocation failure" - -//=============[Oid::get_syntax(void)]==================================== -SmiUINT32 Oid::get_syntax() -{ - return sNMP_SYNTAX_OID; -} - - -//=============[Oid::Oid( const char *dotted_string ]===================== -// constructor using a dotted string -// -// do a string to oid using the string passed in -Oid::Oid( const char * dotted_oid_string, size_t size) -{ - // can't init enum SmiValue so just memset it clean - set_null(); - - size_t z; - if ((z = ACE_OS::strlen(dotted_oid_string)) == 0) { - set_invalid(); - return; - } - - if (size == (unsigned int)-1) - size = z; - if (size > z) - size = z; - - char *ptr = (char *)dotted_oid_string;; - if (size < z) { - // create new buffer if needed - ACE_NEW(ptr, char [size]); - - // sz should be in StrToOid? - ACE_OS::memcpy( (void *)ptr, dotted_oid_string, size); - } - - size_t byte_counter; - if (StrToOid( (char *) ptr, &smival.value.oid, byte_counter) < 0) - set_invalid(); - if (ptr != dotted_oid_string) - delete [] ptr; -} - - -//=============[Oid::Oid( const Oid &oid) ]================================ -// constructor using another oid object -// -// do an oid copy using the oid object passed in -Oid::Oid ( const Oid &oid) -{ - set_null(); - - // allocate some memory for the oid - // in this case the size to allocate is the same - // size as the source oid - if (oid.smival.value.oid.len) { - ACE_NEW(smival.value.oid.ptr, SmiUINT32[ oid.smival.value.oid.len]); - size_t byte_counter; - OidCopy( (SmiLPOID) &(oid.smival.value.oid),(SmiLPOID) - &smival.value.oid, byte_counter); - } -} - - -//=============[Oid::Oid( const unsigned long *raw_oid, int oid_len) ]==== -// constructor using raw numeric form -// -// copy the integer values into the private member -Oid::Oid(const unsigned long *raw_oid, size_t oid_len) -{ - set_null(); - - smival.syntax = sNMP_SYNTAX_OID; - set_invalid(); - - if (raw_oid && oid_len > 0) { - ACE_NEW(smival.value.oid.ptr, SmiUINT32[ oid_len]); - smival.value.oid.len = oid_len; - for (size_t i=0; i < oid_len; i++) - smival.value.oid.ptr[i] = raw_oid[i]; - } -} - -//=============[Oid::~Oid]============================================== -// destructor -// -// free up the descriptor space -Oid::~Oid() -{ - // free up the octet deep memory - if ( smival.value.oid.ptr ) { - set_invalid(); - } - - // free up the output string - if ( iv_str != 0) - delete [] iv_str; -} - - -//=============[Oid::operator = const char * dotted_string ]============== -// assignment to a string operator overloaded -// -// free the existing oid -// create the new oid from the string -// return this object -void Oid::set_data( const char *dotted_oid_string) -{ - // delete the old value - if ( smival.value.oid.ptr ) { - set_invalid(); - } - - // assign the new value - size_t byte_counter; - if (StrToOid( (char *) dotted_oid_string, &smival.value.oid, byte_counter) <0) - set_invalid(); -} - - -//=============[Oid:: operator = const Oid &oid ]========================== -// assignment to another oid object overloaded -// -// free the existing oid -// create a new one from the object passed in -// TODO: measure perf vs memory of no realloc in case where len >= oid.len -Oid& Oid::operator=( const Oid &oid) -{ - // protect against assignment from self - if ( this == &oid) - return *this; - - set_invalid(); - - // check for zero len on source - if ( oid.smival.value.oid.len == 0) - return *this; - - init_value((const SmiLPOID) &(oid.smival.value.oid), - oid.smival.value.oid.len); - return *this; -} - -// assign this object the oid, set to invalid if copy fails -void Oid::init_value(const SmiLPOID srcOid, size_t len) -{ - // allocate some memory for the oid - ACE_NEW(smival.value.oid.ptr, SmiUINT32[ len]); - size_t byte_counter; - OidCopy( srcOid, (SmiLPOID) &smival.value.oid, byte_counter); -} - -void Oid::init_value(const unsigned long *raw_oid, size_t oid_len) -{ - if (smival.value.oid.ptr) - delete [] smival.value.oid.ptr; - - ACE_NEW(smival.value.oid.ptr, SmiUINT32[ oid_len]); - ACE_OS::memcpy((SmiLPBYTE) smival.value.oid.ptr, - (SmiLPBYTE) raw_oid, - (size_t) (oid_len * sizeof(SmiUINT32))); - smival.value.oid.len = oid_len; -} - -//==============[Oid:: operator += const char *a ]========================= -// append operator, appends a string -// -// allocate some space for a max oid string -// extract current string into space -// concat new string -// free up existing oid -// make a new oid from string -// delete allocated space -Oid& Oid::operator+=( const char *a) -{ - unsigned long n; - - if (!a) - return *this; - - if ( *a=='.') - a++; - size_t sz = ACE_OS::strlen(a); - - if (valid()) { - n = (smival.value.oid.len *SNMPCHARSIZE) + smival.value.oid.len + 1 + sz; - char *ptr; - ACE_NEW_RETURN(ptr, char[ n], *this); - size_t byte_counter; - if (OidToStr(&smival.value.oid, n,ptr, byte_counter) > 0) { - delete [] ptr; - set_invalid(); - return *this; - } - - if (ACE_OS::strlen(ptr)) - ACE_OS::strcat(ptr,"."); - ACE_OS::strcat(ptr,a); - if ( smival.value.oid.len !=0) { - set_invalid(); - delete [] smival.value.oid.ptr; - smival.value.oid.len = 0; - } - - if (StrToOid( (char *) ptr, &smival.value.oid, byte_counter) < 0) { - set_invalid(); - } - delete [] ptr; - } - else { - size_t byte_counter; - if (StrToOid( (char *) a, &smival.value.oid, byte_counter) < 0) { - set_invalid(); - } - } - - return *this; -} - -//=============[ int operator == oid,oid ]================================= -// equivlence operator overloaded -int operator==( const Oid &lhs, const Oid &rhs) -{ - // ensure same len, then use left_comparison - if (rhs.length() != lhs.length()) - return 0; - if( lhs.left_comparison( rhs.length(), rhs) == 0) - return 1; - else - return 0; -} - -//==============[ operator!=( Oid &x,Oid &y) ]============================= -//not equivlence operator overloaded -int operator!=( const Oid &lhs,const Oid &rhs) -{ - return (!(lhs == rhs)); -} - -//==============[ operator<( Oid &x,Oid &y) ]============================= -// less than < overloaded -int operator<( const Oid &lhs,const Oid &rhs) -{ - int result; - - // call left_comparison with the current - // Oidx, Oidy and len of Oidx - if ((result = lhs.left_comparison( rhs.length(), rhs)) < 0) - return 1; - else if (result > 0) - return 0; - - else{ - // if here, equivalent substrings, call the shorter one < - if (lhs.length() < rhs.length()) - return 1; - else - return 0; - } -} - -//==============[ operator<=( Oid &x,Oid &y) ]============================= -// less than <= overloaded -int operator<=( const Oid &x,const Oid &y) -{ - if ( (x < y) || (x == y) ) - return 1; - else - return 0; -} - -//==============[ operator>( Oid &x,Oid &y) ]============================= -// greater than > overloaded -int operator>( const Oid &x,const Oid &y) -{ - // just invert existing <= - if (!(x<=y)) - return 1; - else - return 0; -} - -//==============[ operator>=( Oid &x,Oid &y) ]============================= -// greater than >= overloaded -int operator>=( const Oid &x,const Oid &y) -{ - // just invert existing < - if (!(x0)) { - smival.value.oid.len -= n; - - if (smival.value.oid.len == 0) { - set_invalid(); - } - } -} - -//===============[Oid::set_invalid() ]==================== -// make this object invalid by resetting all values -void Oid::set_invalid() { - delete [] smival.value.oid.ptr; - smival.value.oid.ptr = 0; - smival.value.oid.len = 0; - delete [] iv_str; - iv_str = 0; -} - -//===============[Oid::set_null() ]==================== -void Oid::set_null() { - smival.syntax = sNMP_SYNTAX_OID; - smival.value.oid.ptr = 0; - smival.value.oid.len = 0; - iv_str = 0; -} - -//===============[Oid::operator += const unsigned int) ]==================== -// append operator, appends an int -// -// allocate some space for a max oid string -// extract current string into space -// concat new string -// free up existing oid -// make a new oid from string -// delete allocated space -Oid& Oid::operator+=( const unsigned long i) -{ - unsigned long n = (smival.value.oid.len * SNMPCHARSIZE) - + ( smival.value.oid.len -1) + 1 + 4; - char buffer[SNMPBUFFSIZE]; - - // two cases: null oid, existing oid - if (valid()) { - // allocate some temporary space - char *ptr; - ACE_NEW_RETURN(ptr, char[ n], *this); - size_t byte_counter; - if (OidToStr(&smival.value.oid, n, ptr, byte_counter) < 0) { - set_invalid(); - delete [] ptr; - return *this; - } - - if (ACE_OS::strlen(ptr)) - ACE_OS::strcat(ptr,"."); - - if (ACE_OS::sprintf( buffer,"%u",i) != -1) { - ACE_OS::strcat(ptr, buffer); - if ( smival.value.oid.ptr ) { - set_invalid(); - } - if (StrToOid( (char *) ptr, &smival.value.oid, byte_counter) < 0) { - set_invalid(); - } - delete [] ptr; - } - } - else { - init_value((const unsigned long *)&i, (size_t)1); - } - - return *this; -} - -//===============[Oid::operator += const Oid) ]======================== -// append operator, appends an Oid -// -// allocate some space for a max oid string -// extract current string into space -// concat new string -// free up existing oid -// make a new oid from string -// delete allocated space -Oid& Oid::operator+=( const Oid &o) -{ - SmiLPUINT32 new_oid; - - if (o.smival.value.oid.len == 0) - return *this; - - ACE_NEW_RETURN(new_oid, - SmiUINT32[ smival.value.oid.len + o.smival.value.oid.len], *this); - if (smival.value.oid.ptr) { - ACE_OS::memcpy((SmiLPBYTE) new_oid, - (SmiLPBYTE) smival.value.oid.ptr, - (size_t) (smival.value.oid.len*sizeof(SmiUINT32))); - - delete [] smival.value.oid.ptr; - } - - // out with the old, in with the new... - smival.value.oid.ptr = new_oid; - - ACE_OS::memcpy((SmiLPBYTE) &new_oid[smival.value.oid.len], - (SmiLPBYTE) o.smival.value.oid.ptr, - (size_t) (o.smival.value.oid.len*sizeof(SmiUINT32))); - - smival.value.oid.len += o.smival.value.oid.len; - return *this; -} - -// return string portion of the oid -// -char * Oid::to_string() -{ - unsigned long n; - if (!valid()) - return ""; // be consistent with other classes - - // the worst case char len of an oid can be.. - // oid.len*3 + dots in between if each oid is XXXX - // so.. size = (len*4) + (len-1) + 1 , extra for a null - - n = (smival.value.oid.len *SNMPCHARSIZE) + ( smival.value.oid.len -1) + 1 ; - if (n == 0) - n = 1; // need at least 1 byte for a null string - - // adjust the len of output array in case size was adjusted - if ( iv_str != 0) - delete [] iv_str; - // allocate some space for the output string - ACE_NEW_RETURN(iv_str, char[ n], ""); - - // convert to an output string - size_t how_many; - if ( valid() && iv_str != 0) - if (OidToStr(&smival.value.oid,n,iv_str, how_many) < 0) - return "ERROR: Oid::OidToStr failed"; - return iv_str; -} - -//==============[Oid::suboid( unsigned int start, n) ]============= -int Oid::suboid(Oid& new_oid, size_t start, size_t how_many) -{ - if (how_many == 0) - return 0; - else - if (how_many == (size_t)-1) - how_many = length(); - else - if (how_many > length()) - how_many = length(); - - // reset new_oid - new_oid.set_invalid(); - - size_t new_size = how_many - start; - if (new_size == 0) - new_size++; - new_oid.smival.value.oid.len = new_size; - ACE_NEW_RETURN(new_oid.smival.value.oid.ptr, - SmiUINT32 [ new_oid.smival.value.oid.len], -1); - // copy source to destination - ACE_OS::memcpy( (SmiLPBYTE) new_oid.smival.value.oid.ptr, - (SmiLPBYTE) (smival.value.oid.ptr + start), - new_size * sizeof(SmiLPBYTE)); - return 0; -} - - -//=============[Oid::StrToOid( char *string, SmiLPOID dst) ]============== -// convert a string to an oid -int Oid::StrToOid( const char *string, SmiLPOID dstOid, size_t& how_many) -{ - size_t index = 0; - size_t number = 0; - - // make a temp buffer to copy the data into first - SmiLPUINT32 temp; - unsigned long nz; - - if (string && *string) { - nz = ACE_OS::strlen( string); - } - else { - dstOid->len = 0; - dstOid->ptr = 0; - return -1; - } - - ACE_NEW_RETURN(temp, SmiUINT32[ nz], -1); - while (*string!=0 && indexptr, SmiUINT32[ index], -1); - // TODO: make tmp autoptr type delete [] temp to prevent leak - - // copy in the temp data - ACE_OS::memcpy((SmiLPBYTE) dstOid->ptr, (SmiLPBYTE) temp, - (size_t) (index*sizeof(SmiUINT32))); - - // set the len of the oid - dstOid->len = index; - - // free up temp data - delete [] temp; - - how_many = index; - return 0; -} - - -//===============[Oid::OidCopy( source, destination) ]==================== -// Copy an oid, return bytes copied -int Oid::OidCopy( SmiLPOID srcOid, SmiLPOID dstOid, size_t& how_many_bytes) -{ - // check source len ! zero - if (srcOid->len == 0) - return -1; - - // copy source to destination - ACE_OS::memcpy((SmiLPBYTE) dstOid->ptr, - (SmiLPBYTE) srcOid->ptr, - (size_t) (srcOid->len * sizeof(SmiUINT32))); - - //set the new len - dstOid->len = srcOid->len; - how_many_bytes = srcOid->len; - - return 0; -} - - -//===============[Oid::left_comparison( n, Oid) ]================================= -// compare the n leftmost values of two oids ( left-to_right ) -// -// self == Oid then return 0, they are equal -// self < Oid then return -1, < -// self > Oid then return 1, > -int Oid::left_comparison( const unsigned long n, const Oid &o) const -{ - unsigned long z; - unsigned long len = n; - int reduced_len = 0; - - // 1st case they both are null - if (( len==0)&&( this->smival.value.oid.len==0)) - return 0; // equal - - // verify that n is valid, must be >= 0 - if ( len <=0) - return 1; // ! equal - - // only compare for the minimal length - if (len > this->smival.value.oid.len) { - len = this->smival.value.oid.len; - reduced_len = 1; - } - if (len > o.smival.value.oid.len) { - len = o.smival.value.oid.len; - reduced_len = 1; - } - - z = 0; - while(z < len) { - if ( this->smival.value.oid.ptr[z] < o.smival.value.oid.ptr[z]) - return -1; // less than - if ( this->smival.value.oid.ptr[z] > o.smival.value.oid.ptr[z]) - return 1; // greater than - z++; - } - - // if we truncated the len then these may not be equal - if (reduced_len) { - if (this->smival.value.oid.len < o.smival.value.oid.len) - return -1; - if (this->smival.value.oid.len > o.smival.value.oid.len) - return 1; - } - return 0; // equal - -} - - -//===============[Oid::left_comparison( n, Oid) ]================================= -// compare the n rightmost bytes (right-to-left) -// returns 0, equal -// returns -1, < -// returns 1 , > -int Oid::right_comparison( const unsigned long n, const Oid &o) const -{ - // oid to compare must have at least the same number - // of sub-ids to comparison else the argument Oid is - // less than THIS - if ( o.length() < n) - return -1; - - // also can't compare argument oid for sub-ids which - // THIS does not have - if ( this->length() < n) - return -1; - - int start = (int) this->length(); - int end = (int) start - (int) n; - for ( int z=start;z< end;z--) - { - if ( o.smival.value.oid.ptr[z] < this->smival.value.oid.ptr[z]) - return -1; - if ( o.smival.value.oid.ptr[z] > this->smival.value.oid.ptr[z]) - return 1; - } - - return 0; // they are equal - -} - - -//================[ Oid::valid() ]======================================== -// is the Oid object valid -// returns validity -int Oid::valid() const -{ - return ( smival.value.oid.ptr ? 1 : 0 ); -} - -//================[Oid::OidToStr ]========================================= -// convert an oid to a string -int Oid::OidToStr( SmiLPOID srcOid, unsigned long size, - char *string, size_t& how_many_bytes) -{ - unsigned long index = 0; - unsigned totLen = 0; - char szNumber[SNMPBUFFSIZE]; - - // init the string - string[totLen] = 0; - - // verify there is something to copy - if (srcOid->len == 0) - return -1; - - // loop through and build up a string - for (index=0; index < srcOid->len; index++) { - - // convert data element to a string - if (ACE_OS::sprintf( szNumber,"%u", srcOid->ptr[index]) == -1) - return -1; - - // verify len is not over - if (totLen + ACE_OS::strlen(szNumber) + 1 >= size) - return -2; - - // if not at end, pad with a dot - if (totLen!=0) - string[totLen++] = '.'; - - // copy the string token into the main string - ACE_OS::strcpy(string + totLen, szNumber); - - // adjust the total len - totLen += ACE_OS::strlen(szNumber); - } - - how_many_bytes = totLen + 1; - return 0; -} - - -//================[ general Value = operator ]======================== -SnmpSyntax& Oid::operator=( SnmpSyntax &val) -{ - // protect against assignment from self - if ( this == &val ) - return *this; - - // blow away old value - smival.value.oid.len = 0; - if (smival.value.oid.ptr) { - set_invalid(); - } - - // assign new value - if (val.valid()) { - switch (val.get_syntax()) { - case sNMP_SYNTAX_OID: - set_data( ((Oid &)val).smival.value.oid.ptr, - (unsigned int)((Oid &)val).smival.value.oid.len); - break; - } - } - return *this; -} - -//================[ [] operator ]===================================== -unsigned long& Oid::operator[](size_t position) -{ - return smival.value.oid.ptr[position]; -} - -//================[ clone ]=========================================== -SnmpSyntax *Oid::clone() const -{ - return (SnmpSyntax *) new Oid(*this); -} diff --git a/ASNMP/asnmp/oid.h b/ASNMP/asnmp/oid.h deleted file mode 100644 index 16020e374c0..00000000000 --- a/ASNMP/asnmp/oid.h +++ /dev/null @@ -1,170 +0,0 @@ -/* -*-C++-*- */ -// $Id$ -#ifndef OID_CLS_ -#define OID_CLS_ -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// oid.h -// -// = DESCRIPTION -// This class is fully contained and does not rely on or any other -// SNMP libraries. This class is portable across any platform -// which supports C++. Ported to ACE by Mike MacFaden mrm@cisco.com -// and modified for MT. Some API cleanup: collapse constructors, -// add suboid() method remove unnecessary overload, and update a few -// names and types to improve clarity. -// -// = AUTHOR -// Peter E Mellquist -// -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -//----------[ extern C libraries Needed ]--------------------------------- -#include "ace/OS.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "asnmp/smival.h" // derived class for all values - -class ACE_Export Oid: public SnmpSyntax - // = TITLE - // Implement RFC 1155 Object Identifier (OID) datatype -{ -public: - Oid( const char * dotted_oid_string = "", size_t size = unsigned(-1) ); - // constructor using a dotted string - - Oid ( const Oid &oid); - // constructor using another oid object - - Oid(const unsigned long *raw_oid, size_t oid_len); - // constructor from raw form - - ~Oid(); - // destructor - - SmiUINT32 get_syntax(); - // syntax type - - Oid& operator=( const Oid &oid); - // assignment to another oid object overloaded - - friend int operator==( const Oid &lhs,const Oid &rhs); - // equal operator overloaded - - friend int operator!=( const Oid &lhs,const Oid &rhs); - // not equal operator overloaded - - friend int operator<( const Oid &lhs,const Oid &rhs); - // less than < overloaded - - friend int operator<=( const Oid &lhs,const Oid &rhs); - // less than <= overloaded - - friend int operator>( const Oid &lhs,const Oid &rhs); - // greater than > overloaded - - friend int operator>=( const Oid &lhs,const Oid &rhs); - // greater than >= overloaded - - Oid& operator+=( const char *a); - // append operator, appends a string - - Oid& operator+=( const unsigned long i); - // appends an int - - Oid& operator+=( const Oid &o); - // appends an Oid - - unsigned long & operator[]( size_t position); - // allows element access - - SmiLPOID oidval(); - // return the WinSnmp oid part - - void set_data( const char *dotted_oid_string); - // reset the data from raw 1 byte format - - void set_data( const unsigned long *raw_oid, const size_t oid_len); - // reset the data from raw 4byte integer format - - size_t length() const; - // return the len of the oid - - void trim( const size_t how_many = 1); - // trim off the n rightmost values of an oid - - int suboid(Oid& oid, size_t start = 0, size_t how_many = -1); - // the equivalent of a substr(new_str, 0, 1) - - int left_comparison( const unsigned long n, const Oid &o) const; - // compare the n leftmost bytes (left-to-right) - // returns 0, equal - // returns -1, < - // returns 1 , > - - - int right_comparison( const unsigned long n, const Oid &o) const; - // compare the n rightmost bytes (right-to-left) - // returns 0, equal - // returns -1, < - // returns 1 , > - - int valid() const; - // is the Oid object valid - - char *to_string(); - // return dotted string value from the right - // where the user specifies how many positions to print - - SnmpSyntax *clone() const; - // create a new instance of this Value - - SnmpSyntax& operator=( SnmpSyntax &val); - // copy an instance of this Value - -protected: - char *iv_str; - // used for returning oid string - - int StrToOid( const char *string, SmiLPOID dstOid, size_t& how_many_bytes); - // convert a string to an smi oid - - int OidCopy( SmiLPOID srcOid, SmiLPOID dstOid, size_t& how_many_bytes); - // clone an smi oid - - int OidToStr(SmiLPOID srcOid, SmiUINT32 size, char *string, size_t& how_many_bytes); - // convert an smi oid to its string representation - - private: - void set_invalid(); - // release memory, re-init data members - - void set_null(); - // initialize object data members - void init_value( const SmiLPOID srcOid, size_t len); - void init_value(const unsigned long *raw_oid, size_t oid_len); -}; - -#endif //OID_CLS_ diff --git a/ASNMP/asnmp/oid_def.h b/ASNMP/asnmp/oid_def.h deleted file mode 100644 index bdf46ec4f88..00000000000 --- a/ASNMP/asnmp/oid_def.h +++ /dev/null @@ -1,87 +0,0 @@ -/* -*-C++-*- */ -// $Id$ -#ifndef OID_DEF -#define OID_DEF -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// address.cpp -// -// = DESCRIPTION -// Well known Oids defined in RFC 1215 -// -// = AUTHOR -// Peter E Mellquist -// -// ============================================================================ -/*=================================================================== - - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -// SMI trap oid def -class snmpTrapsOid: public Oid { - public: - snmpTrapsOid (void):Oid("1.3.6.1.6.3.1.1.5"){}; -}; - -// SMI Enterprose Oid -class snmpTrapEnterpriseOid: public Oid { - public: - snmpTrapEnterpriseOid(void):Oid("1.3.6.1.6.3.1.1.4.3.0"){}; -}; - -// SMI Cold Start Oid -class coldStartOid: public snmpTrapsOid { - public: - coldStartOid( void){*this+=".1";}; -}; - -// SMI WarmStart Oid -class warmStartOid: public snmpTrapsOid { - public: - warmStartOid( void){*this+=".2";}; -}; - -// SMI LinkDown Oid -class linkDownOid: public snmpTrapsOid { - public: - linkDownOid( void){*this+=".3";}; -}; - - -// SMI LinkUp Oid -class linkUpOid: public snmpTrapsOid { - public: - linkUpOid( void){*this+=".4";}; -}; - -// SMI Authentication Failure Oid -class authenticationFailureOid: public snmpTrapsOid { - public: - authenticationFailureOid( void){*this+=".5";}; -}; - -// SMI egpneighborloss Oid -class egpNeighborLossOid: public snmpTrapsOid { - public: - egpNeighborLossOid( void){*this+=".6";}; -}; - - -#endif // OID_DEF diff --git a/ASNMP/asnmp/pdu.cpp b/ASNMP/asnmp/pdu.cpp deleted file mode 100644 index 6ac3acc04d5..00000000000 --- a/ASNMP/asnmp/pdu.cpp +++ /dev/null @@ -1,496 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// pdu.cpp -// -// = DESCRIPTION -// Pdu class implementation. Encapsulation of an SMI Protocol -// Data Unit (PDU) in C++. -// -// = AUTHOR -// Peter E Mellquist -// Michael R MacFaden mrm@cisco.com - rework & ACE port -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -#include "asnmp/snmp.h" -#include "asnmp/pdu.h" // include Pdu class definition - -ACE_RCSID(asnmp, pdu, "$Id$") - -//=====================[ constructor no args ]========================= -Pdu::Pdu( void): vb_count_(0), error_status_(0), error_index_(0), -validity_(0), request_id_(0), pdu_type_(0), notify_timestamp_(0), -output_(0) -{ -} - -//=====================[ constructor with vbs_ and count ]============== -Pdu::Pdu( Vb* pvbs, const int pvb_count): vb_count_(0), error_index_(0), -validity_(0), request_id_(0), pdu_type_(0), notify_timestamp_(0), -output_(0) -{ - int z; // looping variable - - // zero is ok - if ( pvb_count == 0) { - validity_ = 1; - return; - } - - // check for over then max - if ( pvb_count > MAX_VBS) { - validity_ = 0; - return; - } - - // loop through and assign internal vbs_ - for (z = 0;z < pvb_count; z++) { - validity_ = 0; - ACE_NEW(vbs_[z], Vb( pvbs[z])); - validity_ = 1; - } - - // assign the vb count - vb_count_ = pvb_count; - - validity_ = 1; -} - -//=====================[ constructor with another Pdu instance ]======== -Pdu::Pdu( const Pdu &pdu): vb_count_(0), -error_index_(0), validity_(0), request_id_(0), pdu_type_(0), -notify_timestamp_(0), output_(0) -{ - *this = pdu; - return; -} - -//=====================[ destructor ]==================================== -Pdu::~Pdu() -{ - delete_all_vbs(); - delete [] output_; -} - - -//=====================[ assignment to another Pdu object overloaded ]=== -Pdu& Pdu::operator=( const Pdu &pdu) -{ - int z; // looping variable - - // Initialize all mv's - error_status_ = pdu.error_status_; - error_index_ = pdu.error_index_; - request_id_ = pdu.request_id_; - pdu_type_ = pdu.pdu_type_; - notify_id_ = pdu.notify_id_; - notify_timestamp_ = pdu.notify_timestamp_; - notify_enterprise_ = pdu.notify_enterprise_; - validity_ = 1; - - // free up old vbs_ - for ( z = 0;z < vb_count_; z++) - delete vbs_[z]; - vb_count_ = 0; - - // check for zero case - if ( pdu.vb_count_ == 0) { - return *this; - } - - // loop through and fill em up - for (z = 0; z < pdu.vb_count_; z++) { - validity_ = 0; - ACE_NEW_RETURN(vbs_[z], Vb ( *(pdu.vbs_[z])), *this); - validity_ = 1; - } - - vb_count_ = pdu.vb_count_; - return *this; -} - -// append operator, appends a string -Pdu& Pdu::operator+=( Vb &vb) -{ - - // do we have room? - if ( vb_count_ + 1 > MAX_VBS) - return *this; - - // add the new one - validity_ = 0; - ACE_NEW_RETURN(vbs_[vb_count_], Vb (vb), *this); - // set up validity_ - validity_ = 1; - - // up the vb count - vb_count_++; - - // return self reference - return *this; - -} - -// return fomatted version of this object -char * Pdu::to_string() -{ - // determine how big a buffer and allocate it - const int HEADER_STR = 100; - unsigned size = HEADER_STR; // header takes up this much room - int z; - - for ( z = 0; z < vb_count_; z++) - size += ACE_OS::strlen(vbs_[z]->to_string()); - - ACE_NEW_RETURN(output_, char[size], ""); - - // print pdu header info - sprintf(output_, "pdu: valid: %d type:%d, req:%d, cnt: %d, err stat: %d \ - err idx: %d\n", validity_, pdu_type_, (int) request_id_, - vb_count_, error_status_, error_index_ ); - - // now append vb pairs in this object - for ( z = 0; z < vb_count_; z++) { - ACE_OS::strcat(output_, vbs_[z]->to_string()); - ACE_OS::strcat(output_, "\n\t"); - } - - return output_; -} - - -//=====================[ extract Vbs from Pdu ]========================== -// how do you know that the caler has enough memory??? -// should I self allocate this in here and require the -// caller then to free it up at soem later time -int Pdu::get_vblist( Vb* pvbs, const int pvb_count) -{ - if ((!pvbs) || ( pvb_count < 0) || ( pvb_count > vb_count_)) - return 0; - - // loop through all vbs_ and assign to params - int z; - for (z = 0; z < pvb_count; z++) - pvbs[z] = *vbs_[z]; - - return 1; - -} - -//=====================[ deposit Vbs ]=================================== -int Pdu::set_vblist( Vb* pvbs, const int pvb_count) -{ - - // if invalid then don't destroy - if ((!pvbs) || ( pvb_count < 0) || ( pvb_count > MAX_VBS)) - return 0; - - // free up current vbs_ - int z; - for ( z = 0; z < vb_count_; z++) - delete vbs_[z]; - vb_count_ = 0; - - // check for zero case - if ( pvb_count == 0) { - validity_ = 1; - error_status_ = 0; - error_index_ = 0; - request_id_ = 0; - return 0; - } - - - // loop through all vbs_ and reassign them - for ( z = 0; z < pvb_count; z++) { - validity_ = 0; - ACE_NEW_RETURN(vbs_[z], Vb (pvbs[z]), 0); - validity_ = 1; - } - - vb_count_ = pvb_count; - - // clear error status and index since no longer valid - // request id may still apply so don't reassign it - error_status_ = 0; - error_index_ = 0; - validity_ = 1; - - return 1; -} - -//===================[ get a particular vb ]============================= -// here the caller has already instantiated a vb object -// index is zero based -int Pdu::get_vb( Vb &vb, const int index) const -{ - // can't have an index less than 0 - if ( index < 0) - return 0; - - // can't ask for something not there - if ( index > (vb_count_ - 1)) - return 0; - - // asssign it - vb = *vbs_[index]; - - return 1; -} - -//===================[ set a particular vb ]============================= -int Pdu::set_vb( Vb &vb, const int index) -{ - // can't set a vb at index less than 0 - if ( index < 0) - return 0; - - // can't ask for something not there - if ( index > (vb_count_ - 1)) - return 0; - - // delete what is there - delete vbs_[index]; - - // assign it - validity_ = 0; - ACE_NEW_RETURN(vbs_[index], Vb (vb), 0); - validity_ = 1; - - return 1; - -} - -//=====================[ return number of vbs_ ]========================== -int Pdu::get_vb_count() const -{ - return vb_count_; -} - -//=====================[ return the error status ]======================= -int Pdu::get_error_status() const -{ - return error_status_; -} - -char *Pdu::agent_error_reason() -{ - int pdu_err = get_error_status(); - if (pdu_err == 0) // any real error? - return "not in error state"; - - int n_vbs = get_vb_count(); - Vb bad; - get_vb(bad, get_error_index() -1); // not zero based?? - char *pmsg = Snmp::error_string(get_error_status()); - char *id = bad.to_string_oid(); - char *val = bad.to_string_value(); - const int HDR_SZ = 100; - - if (!output_) { - int size = ACE_OS::strlen(pmsg) + ACE_OS::strlen(id) + - ACE_OS::strlen(val); - ACE_NEW_RETURN(output_, char[size + HDR_SZ], ""); - } - - ACE_OS::sprintf(output_, -"FAIL PDU REPORT: pdu id: %d vb cnt: %d vb idx: %d \n\ -msg: %s vb oid: %s value: %s", - get_request_id(), n_vbs, get_error_index(), pmsg, id, val); - - return output_; -} - -//=====================[ set the error status ]========================== -// friend -void set_error_status( Pdu *pdu, const int status) -{ - if (pdu) - pdu->error_status_ = status; -} - -//=====================[ return the error index ]======================== -int Pdu::get_error_index() const -{ - return error_index_; -} - -//=====================[ set the error index ]=========================== -// friend -void set_error_index( Pdu *pdu, const int index) -{ - if (pdu) - pdu->error_index_ = index; -} - -//=====================[ clear error status ]============================= -void clear_error_status( Pdu *pdu) -{ - if (pdu) - pdu->error_status_ = 0; -} - -//=====================[ clear error index ]============================== -void clear_error_index( Pdu *pdu) -{ - if (pdu) - pdu->error_index_ = 0; -} - -//=====================[ return the request id ]========================== -unsigned long Pdu::get_request_id() const -{ - return request_id_; -} - -//=====================[ set the request id ]============================= -// friend function -void set_request_id( Pdu *pdu, const unsigned long rid) -{ - if (pdu) - pdu->request_id_ = rid; -} - -//=====================[ returns validity_ of Pdu instance ]=============== -int Pdu::valid() const -{ - return validity_; -} - -//=====================[ get the pdu type ]=============================== -unsigned short Pdu::get_type()const -{ - return pdu_type_; -} - -// set the pdu type -void Pdu::set_type( unsigned short type) -{ - pdu_type_ = type; -} - - -// trim off the last vb -int Pdu::trim(const int p) -{ - int lp = p; - - // verify that lp is legal - if ( lp < 0 || lp > vb_count_) - return 0; - - while ( lp != 0) { - if ( vb_count_ > 0) { - delete vbs_[vb_count_ - 1]; - vb_count_--; - } - lp--; - } - return 1; -} - - - -// delete a Vb anywhere within the Pdu -int Pdu::delete_vb( const int p) -{ - // position has to be in range - if (( p < 0) || ( p > (vb_count_ - 1))) - return 0; - - // safe to remove it - delete vbs_[ p]; - - for ( int z=p;z < (vb_count_-1);z++) { - vbs_[z] = vbs_[z+1]; - } - vb_count_--; - - return 1; -} - -void Pdu::delete_all_vbs() -{ - for ( int z = 0; z < vb_count_; z++) - delete vbs_[z]; - vb_count_ = 0; -} - - -// set notify timestamp -void Pdu::set_notify_timestamp( const TimeTicks & timestamp) -{ - notify_timestamp_ = timestamp; -} - - -// get notify timestamp -void Pdu::get_notify_timestamp( TimeTicks & timestamp) const -{ - timestamp = notify_timestamp_; -} - -// set the notify id -void Pdu::set_notify_id( const Oid id) -{ - notify_id_ = id; -} - -// get the notify id -void Pdu::get_notify_id( Oid &id) const -{ - id = notify_id_; -} - -// set the notify enterprise -void Pdu::set_notify_enterprise( const Oid &enterprise) -{ - notify_enterprise_ = enterprise; -} - -// get the notify enterprise -void Pdu::get_notify_enterprise( Oid & enterprise) const -{ - enterprise = notify_enterprise_; -} - -// ------ class VbIter ------------------- -VbIter::VbIter(Pdu& pdu): idx_(-1), pdu_(&pdu) -{ -} - -// returns 1 if ok, else 0 if none left -int VbIter::next(Vb& vb) -{ - if (idx_ == -1) { - idx_ = 0; - pdu_->get_vb(vb, idx_++); - return 1; - } - else - if (idx_ < pdu_->get_vb_count()) { - pdu_->get_vb(vb, idx_++); - return 1; - } - return 0; // non left -} diff --git a/ASNMP/asnmp/pdu.h b/ASNMP/asnmp/pdu.h deleted file mode 100644 index e748ac5b528..00000000000 --- a/ASNMP/asnmp/pdu.h +++ /dev/null @@ -1,213 +0,0 @@ -/* -*-C++-*- */ -// $Id$ -#ifndef PDU_CLS_ -#define PDU_CLS_ -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// pdu.h -// -// = DESCRIPTION -// Pdu class definition. Encapsulation of an SMI Protocol -// Data Unit (PDU) aka Packet in C++. -// -// = AUTHOR -// Peter E Mellquist original code -// Michael MacFaden mrm@cisco.com ACE port, add iterator class for pdus -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -// TODO: this needs to be moved into the CLASS and modifyable at runtime -// TODO: define an iterator object to traverse the vbs in a pdu - -#define MAX_VBS 25 -#include "asnmp/vb.h" // include Vb class definition - -class ACE_Export Pdu - // = TITLE - // Protocol Data Unit (PDU) concrete class. An abstraction of the - // data packet used to by two SNMP sessions to communicate. -{ -public: - Pdu( void); - // constructor no args - - Pdu( Vb* pvbs, const int pvb_count); - // constructor with vbs and count - - Pdu( const Pdu &pdu); - // constructor with another Pdu instance - - ~Pdu(); - // destructor - - Pdu& operator=( const Pdu &pdu); - // assignment to another Pdu object overloaded - - Pdu& operator+=( Vb &vb); - // append a vb to the pdu - - // TODO: add Pdu& operator-=(const Vb &vb); - - int get_vblist( Vb* pvbs, const int pvb_count); - // extract all Vbs from Pdu - - int set_vblist( Vb* pvbs, const int pvb_count); - // deposit all Vbs to Pdu - - int get_vb( Vb &vb, const int index = 0) const; - // get a particular vb - // where 0 is the first vb - - int set_vb( Vb &vb, const int index); - // set a particular vb - // where 0 is the first vb - - int get_vb_count() const; - // return number of vbs - - int get_error_status() const; - // return the error status - - char *agent_error_reason(); - // return the complete error info from this pdu - - friend void set_error_status( Pdu *pdu, const int status); - // set the error status - - int get_error_index() const; - // return the error index - - friend void set_error_index( Pdu *pdu, const int index); - // set the error index - - friend void clear_error_status( Pdu *pdu); - // clear error status - - friend void clear_error_index( Pdu *pdu); - // clear error index - - unsigned long get_request_id() const; - // return the request id - - friend void set_request_id( Pdu *pdu, const unsigned long rid); - // set the request id - - unsigned short get_type() const; - // get the pdu type - - void set_type( unsigned short type); - // set the pdu type - - int valid() const; - // returns validity of Pdu instance - - int trim(const int count=1); - // trim off count vbs from the end of the vb list - - int delete_vb( const int position); - // delete a Vb anywhere within the Pdu - - void delete_all_vbs(); - // delete_all vbs in pdu - - void set_notify_timestamp( const TimeTicks & timestamp); - // set notify timestamp - - void get_notify_timestamp( TimeTicks & timestamp) const; - // get notify timestamp - - void set_notify_id( const Oid id); - // set the notify id - - void get_notify_id( Oid &id) const; - // get the notify id - - void set_notify_enterprise( const Oid &enterprise); - // set the notify enterprise - - void get_notify_enterprise( Oid & enterprise) const; - // get the notify enterprise - - char *to_string(); - // return fomatted version of this object - - - protected: - Vb *vbs_[MAX_VBS]; - // pointer to array of Vbs - - int vb_count_; - // count of Vbs - - int error_status_; - // SMI error status - - int error_index_; - // SMI error index - - int validity_; - // valid boolean status of object construction - unsigned long request_id_; - // SMI request id - - unsigned short pdu_type_; - // derived at run time based on request type - - TimeTicks notify_timestamp_; - // a timestamp associated with an infor - // for notify Pdu objects only - // traps & notifies - - Oid notify_id_; - // an id - - Oid notify_enterprise_; - - private: - char *output_; - // buffer for to_string() -}; - - -class VbIter - // = TITLE - // Utility class to iterate once through a PDU varbind list -{ - public: - VbIter(Pdu& pdu); - // default constructor - - int next(Vb& vb); - // returns 1 if ok, else 0 if none left - - private: - VbIter(const VbIter&); - // disallow copy constructor use - - int idx_; - // current object in list - - Pdu *pdu_; - // ptr to pdu being interated over -}; - -#endif //PDU_CLS_ - diff --git a/ASNMP/asnmp/sagent.cpp b/ASNMP/asnmp/sagent.cpp deleted file mode 100644 index fc56a2c728f..00000000000 --- a/ASNMP/asnmp/sagent.cpp +++ /dev/null @@ -1,97 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// sagent.cpp -// -// = DESCRIPTION -// SNMP agent class definition. The sagent class provides an object oriented -// approach for creating SNMP Agents. The sagent class is an encapsulation -// of SNMP sessions, gets, sets, etc. -// -// = AUTHOR -// Michael R. MacFaden -// -// ============================================================================ -#include "ace/Reactor.h" -#include "ace/SOCK_Dgram.h" - -#include "asnmp/oid.h" // snmp++ oid class -#include "asnmp/vb.h" // snbmp++ vb class -#include "asnmp/target.h" // snmp++ target class -#include "asnmp/pdu.h" // snmp++ pdu class -#include "asnmp/snmperrs.h" // error macros and strings -#include "asnmp/address.h" // snmp++ address class defs -#include "asnmp/snmp.h" // manager snmp interface -#include "asnmp/sagent.h" // agent interface -#include "asnmp/transaction.h" // convert from wire to API - -ACE_RCSID(asnmp, sagent, "$Id$") - -sagent::sagent(unsigned short port): Snmp(port) -{ - ACE_TRACE("sagent::sagent(short)"); -} - -sagent::~sagent() -{ - ACE_TRACE("sagent::~sagent"); -} - -int sagent::handle_input(ACE_HANDLE fd) -{ - ACE_TRACE("sagent::handle_input"); - - transaction tr(iv_snmp_session_); // this section needs a better design - tr.handle_input(fd); - char rcv_com_str[MAX_COMM_STR_LEN]; - if (tr.result(pdu_, rcv_com_str) < 0) - return 0; - OctetStr community(rcv_com_str); - const ACE_INET_Addr &ta = tr.get_from_addr(); - char buf_tmp[MAXHOSTNAMELEN + 1]; - ta.addr_to_string (buf_tmp, MAXHOSTNAMELEN); - UdpAddress ra(buf_tmp); - tgt_.set_address(ra); - - - // process msg here by calling subclass's implementation - switch (pdu_.get_type()){ - case sNMP_PDU_GET: - tgt_.set_read_community(community); - this->handle_get(pdu_, tgt_); - break; - - case sNMP_PDU_GETNEXT: - tgt_.set_read_community(community); - this->handle_get_next(pdu_, tgt_); - break; - - case sNMP_PDU_SET: - tgt_.set_write_community(community); - this->handle_set(pdu_, tgt_); - break; - - default: - ACE_ASSERT(0); - } - return 0; -} - -ACE_HANDLE sagent::get_handle() const -{ - ACE_TRACE("sagent::get_handle"); - return iv_snmp_session_.get_handle(); -} - -int sagent::respond(Pdu& pdu,UdpTarget& tgt) -{ - pdu.set_type(sNMP_PDU_RESPONSE); - transaction tr(pdu, tgt, iv_snmp_session_); - tr.send(); - return 0; -} diff --git a/ASNMP/asnmp/sagent.h b/ASNMP/asnmp/sagent.h deleted file mode 100644 index e97d7839be5..00000000000 --- a/ASNMP/asnmp/sagent.h +++ /dev/null @@ -1,83 +0,0 @@ -/* -*-C++-*- */ -// $Id$ -#ifndef SAGENT_CLS_ -#define SAGENT_CLS_ -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// sagent.h -// -// = DESCRIPTION -// SNMP agent class defintion. The sagent class provides an object oriented -// approach for creating SNMP Agents. The sagent class is an encapsulation of SNMP -// sessions, gets, sets, etc. -// -// = AUTHOR -// Michael R. MacFaden -// -// ============================================================================ -#include "ace/Reactor.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "ace/SOCK_Dgram.h" - -#include "asnmp/oid.h" // snmp++ oid class -#include "asnmp/vb.h" // snbmp++ vb class -#include "asnmp/target.h" // snmp++ target class -#include "asnmp/pdu.h" // snmp++ pdu class -#include "asnmp/snmperrs.h" // error macros and strings -#include "asnmp/address.h" // snmp++ address class defs -#include "asnmp/snmp.h" // snmp interface - -// sagent - supports Version 1 operations in blocking mode - -#define DEF_AGENT_PORT (161) - -class ACE_Export sagent : public ACE_Event_Handler, Snmp - // = TITLE - // Concrete class sagent defines the session and interface to - // communicate with another SNMP Version 1 manager -{ - public: - - - // override the next three methods (callbacks) to implment your agent - // - - virtual int handle_get( Pdu &pdu, UdpTarget &target) = 0; - // retrieve data from a peer agent for a given list of oid values - - virtual int handle_get_next( Pdu &pdu, UdpTarget &target) = 0; - // retrieve data lexically adjacent to the oids specified in the pdu - // from the peer agent - - virtual int handle_set( Pdu &pdu, UdpTarget &target) = 0; - // set data in the agent from the list of oids in the pdu - - virtual int handle_input(ACE_HANDLE); - // new pdu received from mgr (reactor calls this) - - virtual ACE_HANDLE get_handle() const; - // retrieve io descriptor (reactor uses this) - - int respond(Pdu& pdu, UdpTarget& tgt); - // send a response pdu to the mgr - - protected: - sagent(unsigned short port = DEF_AGENT_PORT); - virtual ~sagent(); - -private: - sagent(const sagent&); - Pdu pdu_; // current input pdu - UdpTarget tgt_; // addr & com strs -}; - -#endif //SAGENT_CLS_ - diff --git a/ASNMP/asnmp/smi.h b/ASNMP/asnmp/smi.h deleted file mode 100644 index 09b3927b220..00000000000 --- a/ASNMP/asnmp/smi.h +++ /dev/null @@ -1,153 +0,0 @@ -/* -*-C++-*- */ -// $Id$ -#ifndef SMIDEF_ -#define SMIDEF_ -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// smi.h -// -// = DESCRIPTION -// Address class definition. Encapsulates various network -// addresses into easy to use, safe and portable classes. -// -// = AUTHOR -// ?? -// -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. - -=====================================================================*/ - -#include "ace/OS.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -//----------[ ASN/BER Base Types ]----------------------------------------- -// Basic Encoding Rules (BER) -// (used in forming SYNTAXes and certain SNMP types/values) -#define aSN_UNIVERSAL (0x00) -#define aSN_APPLICATION (0x40) -#define aSN_CONTEXT (0x80) -#define aSN_PRIVATE (0xC0) -#define aSN_PRIMITIVE (0x00) -#define aSN_CONSTRUCTOR (0x20) - -//------[ SNMP ObjectSyntax Values ]--------------------------------------- -#define sNMP_SYNTAX_SEQUENCE (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x10) - - -//------------------------------------------------------------------------- -// These values are used in the "syntax" member -// of the smiVALUE structure which follows. -// Note: UInt32 is indistinguishable from Gauge32 per SNMPv2 Draft Standard -// NsapAddr is obsoleted as unique SMI type per SNMPv2 Draft Standard -#define sNMP_SYNTAX_INT (aSN_UNIVERSAL | aSN_PRIMITIVE | 0x02) -#define sNMP_SYNTAX_BITS (aSN_UNIVERSAL | aSN_PRIMITIVE | 0x03) -#define sNMP_SYNTAX_OCTETS (aSN_UNIVERSAL | aSN_PRIMITIVE | 0x04) -#define sNMP_SYNTAX_NULL (aSN_UNIVERSAL | aSN_PRIMITIVE | 0x05) -#define sNMP_SYNTAX_OID (aSN_UNIVERSAL | aSN_PRIMITIVE | 0x06) -#define sNMP_SYNTAX_INT32 sNMP_SYNTAX_INT -#define sNMP_SYNTAX_IPADDR (aSN_APPLICATION | aSN_PRIMITIVE | 0x00) -#define sNMP_SYNTAX_CNTR32 (aSN_APPLICATION | aSN_PRIMITIVE | 0x01) -#define sNMP_SYNTAX_GAUGE32 (aSN_APPLICATION | aSN_PRIMITIVE | 0x02) -#define sNMP_SYNTAX_TIMETICKS (aSN_APPLICATION | aSN_PRIMITIVE | 0x03) -#define sNMP_SYNTAX_OPAQUE (aSN_APPLICATION | aSN_PRIMITIVE | 0x04) -#define sNMP_SYNTAX_CNTR64 (aSN_APPLICATION | aSN_PRIMITIVE | 0x06) -#define sNMP_SYNTAX_UINT32 (aSN_APPLICATION | aSN_PRIMITIVE | 0x07) - -//------------------------------------------------------------------------- - -//---------------[ Exception conditions for SNMPv2 ]----------------------- -// support SNMP v2 -#define sNMP_SYNTAX_NOSUCHOBJECT (aSN_CONTEXT | aSN_PRIMITIVE | 0x00) -#define sNMP_SYNTAX_NOSUCHINSTANCE (aSN_CONTEXT | aSN_PRIMITIVE | 0x01) -#define sNMP_SYNTAX_ENDOFMIBVIEW (aSN_CONTEXT | aSN_PRIMITIVE | 0x02) - - -//--------------[ different types of PDU's ]------------------------------- -#define sNMP_PDU_GET (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x0) -#define sNMP_PDU_GETNEXT (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x1) -#define sNMP_PDU_RESPONSE (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x2) -#define sNMP_PDU_SET (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x3) -#define sNMP_PDU_V1TRAP (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x4) -#define sNMP_PDU_GETBULK (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x5) -#define sNMP_PDU_INFORM (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x6) -#define sNMP_PDU_TRAP (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x7) - - -//------[ smi typedefs ]--------------------------------------------------- -// SNMP-related types from RFC1442 (SMI) - -typedef unsigned char SmiBYTE, *SmiLPBYTE; - -//------------------------------------------------------------------------- -// SNMP-related types from RFC1442 (SMI) - -// int -typedef long SmiINT, *SmiLPINT; - -// int 32 -typedef SmiINT SmiINT32, *SmiLPINT32; - -// unit32 -typedef unsigned long SmiUINT32, *SmiLPUINT32; - -// octet struct -typedef struct { - SmiUINT32 len; - SmiLPBYTE ptr;} SmiOCTETS, *SmiLPOCTETS; - -// bits -typedef SmiOCTETS SmiBITS, *SmiLPBITS; - -// SMI oid struct -typedef struct { - SmiUINT32 len; - SmiLPUINT32 ptr;} SmiOID, *SmiLPOID; - -// ipaddr -typedef SmiOCTETS SmiIPADDR, *SmiLPIPADDR; - -// 32bit counter -typedef SmiUINT32 SmiCNTR32, *SmiLPCNTR32; - -// gauge -typedef SmiUINT32 SmiGAUGE32, *SmiLPGAUGE32; - -// timeticks -typedef SmiUINT32 SmiTIMETICKS, *SmiLPTIMETICKS; - -// opaque -typedef SmiOCTETS SmiOPAQUE, *SmiLPOPAQUE; - -// nsapaddr -typedef SmiOCTETS SmiNSAPADDR, *SmiLPNSAPADDR; - -// 64 bit counter -typedef struct { - SmiUINT32 hipart; - SmiUINT32 lopart; -} SmiCNTR64, *SmiLPCNTR64; - -#endif // SMIDEF_ - - diff --git a/ASNMP/asnmp/smival.h b/ASNMP/asnmp/smival.h deleted file mode 100644 index 6e7c8c4c1b9..00000000000 --- a/ASNMP/asnmp/smival.h +++ /dev/null @@ -1,104 +0,0 @@ -/* -*-C++-*- */ -// $Id$ -#ifndef SMIVALUE_ -#define SMIVALUE_ -// ============================================================================ -// -// = LIBRARY -// tests -// -// = FILENAME -// smival.h -// -// = DESCRIPTION -// SMIValue class definition. Superclass for the various types -// of SNMP values (Address, Oid, Octet, etc.). Provides -// only a few functions, most info is in subclass. -// -// = AUTHOR -// Jeff Meyer -// -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -//----[ includes ]----------------------------------------------------- -#include "asnmp/smi.h" - -//----[ macros ]------------------------------------------------------- - -//====================================================================== -// SMI value structure conforming with SMI RFC -// -typedef struct { /* smiVALUE portion of VarBind */ - SmiUINT32 syntax; /* Insert SNMP_SYNTAX_ */ - union { - SmiINT sNumber; /* SNMP_SYNTAX_INT - SNMP_SYNTAX_INT32 */ - SmiUINT32 uNumber; /* SNMP_SYNTAX_UINT32 - SNMP_SYNTAX_CNTR32 - SNMP_SYNTAX_GAUGE32 - SNMP_SYNTAX_TIMETICKS */ - SmiCNTR64 hNumber; /* SNMP_SYNTAX_CNTR64 */ - SmiOCTETS string; /* SNMP_SYNTAX_OCTETS - SNMP_SYNTAX_BITS - SNMP_SYNTAX_OPAQUE - SNMP_SYNTAX_IPADDR - SNMP_SYNTAX_NSAPADDR */ - SmiOID oid; /* SNMP_SYNTAX_OID */ - SmiBYTE empty; /* SNMP_SYNTAX_NULL - SNMP_SYNTAX_NOSUCHOBJECT - SNMP_SYNTAX_NOSUCHINSTANCE - SNMP_SYNTAX_ENDOFMIBVIEW */ - } value; -} SmiVALUE, *SmiLPVALUE; - -// An "abstract" (pure virtual) class that serves as the base class -// for all specific SNMP syntax types. -// -class ACE_Export SnmpSyntax { - -public: - virtual char * to_string() = 0; - // virtual function for getting a printable ASCII value for any SNMP Value - - virtual SmiUINT32 get_syntax() = 0; - // return the current syntax - - virtual SnmpSyntax * clone() const = 0; - // virtual clone operation for creating a new Value from an existing - // value. The caller MUST use the delete operation on the return - // value when done. - - virtual ~SnmpSyntax() {}; - // virtual destructor to ensure deletion of derived classes... - - virtual SnmpSyntax& operator=( SnmpSyntax &/*val*/) - { - return *this; - } - // overloaded assignment operator - // This should be pure virtual, but WinNT compiler - // complains about unresolved reference at link time. - - virtual int valid() const = 0; - // return validity of value object. - -protected: - SmiVALUE smival; -}; - -#endif // SMIVALUE_ diff --git a/ASNMP/asnmp/snmp.cpp b/ASNMP/asnmp/snmp.cpp deleted file mode 100644 index f6ad69fb25a..00000000000 --- a/ASNMP/asnmp/snmp.cpp +++ /dev/null @@ -1,283 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// snmp.cpp -// -// = DESCRIPTION -// The basic SNMPv1 API - blocking version using UDP/IPv4 transport -// and addressing. -// -// = AUTHOR -// Peter E Mellquist class design/orig code -// Michael R MacFaden mrm@cisco.com / rework API, use ACE facilities -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - - -#define INCLUDE_SNMP_ERR_STRINGS_ - -//----[ snmp++ includes ]---------------------------------------------- -#include "asnmp/snmp.h" // class def for this module -#include "asnmp/oid.h" // class def for oids -#include "asnmp/enttraps.h" // class def for well known trap oids -#include "asnmp/vb.h" // class def for vbs -#include "asnmp/address.h" // class def for addresses -#include "asnmp/wpdu.h" // adapter to cmu_library / wire protocol -#include "asnmp/transaction.h" // synchronous transaction processor - -ACE_RCSID(asnmp, snmp, "$Id$") - -const coldStartOid coldStart; -const warmStartOid warmStart; -const linkDownOid linkDown; -const linkUpOid linkUp; -const authenticationFailureOid authenticationFailure; -const egpNeighborLossOid egpNeighborLoss; -const snmpTrapEnterpriseOid snmpTrapEnterprise; - -char Snmp::host_name_[MAXHOSTNAMELEN] = ""; - -Snmp::Snmp(unsigned short port): result_(0), construct_status_(SNMP_CLASS_ERROR), last_transaction_status_(0) -{ - ACE_TRACE("Snmp::Snmp"); - - ACE_INET_Addr addr(port); // any port,address is ok - if (iv_snmp_session_.open(addr) < 0) { - last_transaction_status_ = errno; // open udp/ipv4 socket - ACE_DEBUG((LM_DEBUG, "Snmp::snmp::open port %d failed", port)); - return; - } - - // initial request id randomly generated then monotonically incremented - req_id_ = (unsigned) ACE_OS::time(0); - - construct_status_ = SNMP_CLASS_SUCCESS; - return; -} - -Snmp::~Snmp() -{ - ACE_TRACE("Snmp::~Snmp"); - iv_snmp_session_.close(); -} - -int Snmp::valid() const -{ - return construct_status_; -} - -// given error code, return string definition -// class version -// static -char * Snmp::error_string(int last_transaction_status_) -{ - ACE_TRACE("Snmp::error_string"); - - return ((last_transaction_status_ < 0) ? - ((last_transaction_status_ < MAX_NEG_ERROR)? - nErrs[ abs(MAX_NEG_ERROR) + 1] : nErrs[abs(last_transaction_status_)]): - ((last_transaction_status_ > MAX_POS_ERROR)? - pErrs[MAX_POS_ERROR+1] : pErrs[last_transaction_status_])); -} - -// instance version -char * Snmp::error_string() -{ - return Snmp::error_string(last_transaction_status_); -} - -void Snmp::check_default_port(UdpTarget& target, unsigned short port) -{ - UdpAddress tmp; - target.get_address(tmp); - if (tmp.get_port() == 0) { - tmp.set_port(port); - target.set_address(tmp); - } -} - -int Snmp::run_transaction(Pdu& pdu, UdpTarget& target) -{ - int rc, done = 0; - - // 1. set unique id to match this packet on return - size_t hold_req_id = req_id_++; - set_request_id(&pdu, hold_req_id); - - // 2. write request to agent - transaction trans(pdu, target, iv_snmp_session_); - - // this call blocks while it attempts to retrieve agent response - while (!done) { - if ((rc = trans.run()) < 0) { - last_transaction_status_ = rc; - return rc; - } - else { - trans.result(pdu); - // verify this is the pdu we are after - if (pdu.get_request_id() == hold_req_id) - done = 1 ; - } - } - return 0; -} - -int Snmp::run_transaction(Pdu& pdu, UdpTarget& target, Snmp_Result * cb) -{ - if (!cb) - return run_transaction(pdu, target); - - // 1. set unique id to match this packet on return - hold_req_id_ = req_id_++; - set_request_id(&pdu, hold_req_id_); - pdu_ = &pdu; - result_ = cb; - - // 2. write request to agent - transaction * trans = new transaction(pdu, target, iv_snmp_session_); - return trans->run(this); -} - -void Snmp::result(transaction *t, int rc) -{ - t->result(*pdu_); - // verify this is the pdu we are after - if (pdu_->get_request_id() == hold_req_id_) - { - last_transaction_status_ = rc; - delete t; - result_->result(this, rc); - } - else - { - rc = t->run(this); - if (rc < 0) - { - delete t; - result_->result(this, rc); - } - } -} - -int Snmp::validate_args(const Pdu& pdu, const UdpTarget& target) const -{ - // 0. check object status - if (construct_status_ != SNMP_CLASS_SUCCESS) - return construct_status_; - - // 1. check args passed - if ( !pdu.valid() || !target.valid() ) - return SNMP_INVALID_ARGS; - return 0; -} - -// SYNC API: write request to wire then wait for reply or timeout -int Snmp::get( Pdu &pdu, UdpTarget &target, Snmp_Result * cb) -{ - ACE_TRACE("Snmp::get"); - int rc; - if ((rc = validate_args(pdu, target)) != 0) - return rc; - - pdu.set_type( sNMP_PDU_GET); - check_default_port(target); - return run_transaction(pdu, target, cb); -} - -int Snmp::get_next( Pdu &pdu, UdpTarget &target, Snmp_Result * cb) -{ - ACE_TRACE("Snmp::get_next"); - int rc; - if ((rc = validate_args(pdu, target)) != 0) - return rc; - - pdu.set_type( sNMP_PDU_GETNEXT); - check_default_port(target); - return run_transaction(pdu, target, cb); -} - -int Snmp::set( Pdu &pdu, UdpTarget &target, Snmp_Result * cb) -{ - ACE_TRACE("Snmp::set"); - int rc; - if ((rc = validate_args(pdu, target)) != 0) - return rc; - - pdu.set_type( sNMP_PDU_SET); - check_default_port(target); - return run_transaction(pdu, target, cb); -} - -// one way, best of luck, non-confirmed alert -int Snmp::trap( Pdu &pdu, UdpTarget &target) -{ - ACE_TRACE("Snmp::trap"); - int rc; - if ((rc = validate_args(pdu, target)) != 0) - return rc; - - pdu.set_type( sNMP_PDU_V1TRAP); - check_default_port(target, DEF_TRAP_PORT); - - // 2. write request to agent - transaction trans(pdu, target, iv_snmp_session_); - if (trans.send() > 0) // expect number of bytes sent on - return 0; - - last_transaction_status_ = SNMP_CLASS_INTERNAL_ERROR; - return -1; -} - -// Allow host name to be overriden. Supplying a null pointer or zero -// length string removes the override. -void Snmp::override_host_name(const char* name) -{ - if (name) - { - ACE_OS::strncpy(host_name_, name, MAXHOSTNAMELEN); - host_name_[MAXHOSTNAMELEN-1] = 0; - } - else { - host_name_[0] = 0; - } -} - -// Returns the current host name in the supplied string. -void Snmp::get_host_name(char* name, int len) -{ - if (name) - { - if (ACE_OS::strlen(host_name_) > 0) - { - ACE_OS::strncpy(name, host_name_, len); - name[len-1] = 0; - } - else - { - if (ACE_OS::hostname(name, len-1) == -1) - name[0] = 0; - } - } -} - -Snmp_Result::~Snmp_Result() {} diff --git a/ASNMP/asnmp/snmp.h b/ASNMP/asnmp/snmp.h deleted file mode 100644 index d57a9711324..00000000000 --- a/ASNMP/asnmp/snmp.h +++ /dev/null @@ -1,134 +0,0 @@ -/* -*-C++-*- */ -// $Id$ -#ifndef SNMP_CLS_ -#define SNMP_CLS_ -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// snmp.h -// -// = DESCRIPTION -// SNMP class defintion. The Snmp class provides an object oriented -// approach to SNMP. The SNMP class is an encapsulation of SNMP -// sessions, gets, sets, etc. The class manages all SNMP -// resources and provides complete retry and timeout capability. -// -// = AUTHOR -// Peter E Mellquist design, first implementation -// Michael R. MacFaden port to ACE / use Reactor pattern -// -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -#include "ace/Reactor.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "ace/SOCK_Dgram.h" - -#include "asnmp/oid.h" // snmp++ oid class -#include "asnmp/vb.h" // snbmp++ vb class -#include "asnmp/target.h" // snmp++ target class -#include "asnmp/pdu.h" // snmp++ pdu class -#include "asnmp/snmperrs.h" // error macros and strings -#include "asnmp/address.h" // snmp++ address class defs -#include "asnmp/transaction_result.h" - -class Snmp; -class ACE_Export Snmp_Result -{ - public: - virtual ~Snmp_Result(); - virtual void result(Snmp *snmp, int result) = 0; -}; - -// Snmp session class - supports Version 1 operations in blocking mode -class ACE_Export Snmp : public transaction_result - // = TITLE - // Concrete class Snmp defined the session and interface to - // communicate with another SNMP Version 1 agent -{ - Snmp_Result * result_; - Pdu * pdu_; - unsigned hold_req_id_; - public: - Snmp(unsigned short port = INADDR_ANY); - virtual ~Snmp(); - - int get( Pdu &pdu, UdpTarget &target, Snmp_Result * cb = 0); - // retrieve data from a peer agent for a given list of oid values - // default port 161 - - int get_next( Pdu &pdu, UdpTarget &target, Snmp_Result * cb = 0); - // retrieve data lexically adjacent to the oids specified in the pdu - // from the peer agent - // default port 161 - - int set( Pdu &pdu, UdpTarget &target, Snmp_Result * cb = 0); - // set data in the agent from the list of oids in the pdu - // default port 161 - - int trap( Pdu &pdu, UdpTarget &target); - // send an SNMPv1 trap (unreliable) to a remote system (def port 162) - - int valid() const; - // status of object after construction - - static char * error_string(int code); - // given error code, return string reason - - char * error_string(); - // retrieve a reason string if any of the above commands fail - - void result(transaction * t, int rc); - // for async transaction results - - static void override_host_name(const char* name); - // allow the host name to be overriden - - static void get_host_name(char* name, int len); - // returns the overriden host name - - protected: - void check_default_port(UdpTarget& target,unsigned short port=DEF_AGENT_PORT); - int run_transaction(Pdu& pdu, UdpTarget& target); - int run_transaction(Pdu& pdu, UdpTarget& target, Snmp_Result * cb); - int validate_args(const Pdu& pdu, const UdpTarget& target) const; - - Snmp(const Snmp&); - - ACE_SOCK_Dgram iv_snmp_session_; - // io object - - int construct_status_; - // status of construction - - int last_transaction_status_; - // result code from last transaction - - unsigned req_id_; - // transaction request id - - static char host_name_[MAXHOSTNAMELEN]; -}; - -#endif //SNMP_CLS_ diff --git a/ASNMP/asnmp/snmperrs.h b/ASNMP/asnmp/snmperrs.h deleted file mode 100644 index bd7a5e9df56..00000000000 --- a/ASNMP/asnmp/snmperrs.h +++ /dev/null @@ -1,214 +0,0 @@ -/* -*-C++-*- */ -// $Id$ -#ifndef SNMPERRS_H_ -#define SNMPERRS_H_ -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// snmperrs.h -// -// = DESCRIPTION -// Definition of error macros and error strings -// -// = AUTHOR -// Jeff Meyer -// -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -============================================================================*/ - - -//-------[ Positive ASNMP Error Return Codes ]------------------------------ -// These values are error status values from RFC 1905 -// -// The values can be returned via Pdu::get_error_status() -// -#define SNMP_ERROR_SUCCESS 0 // Success Status -#define SNMP_ERROR_TOO_BIG 1 // Pdu encoding too big -#define SNMP_ERROR_NO_SUCH_NAME 2 // No such VB name, see error index -#define SNMP_ERROR_BAD_VALUE 3 // Bad Vb -#define SNMP_ERROR_READ_ONLY 4 // VB is read only, see error index -#define SNMP_ERROR_GENERAL_VB_ERR 5 // General VB error, see error index -#define SNMP_ERROR_NO_ACCESS 6 // No access to MIBs data -#define SNMP_ERROR_WRONG_TYPE 7 // Requested type was incorrect -#define SNMP_ERROR_WRONG_LENGTH 8 // Request Pdu has inccorect length -#define SNMP_ERROR_WRONG_ENCODING 9 // Request Pdu has wrong encoding -#define SNMP_ERROR_WRONG_VALUE 10 // Request Pdu has wrong value -#define SNMP_ERROR_NO_CREATION 11 // Unable to create object specified -#define SNMP_ERROR_INCONSIST_VAL 12 // Inconsistent value in request -#define SNMP_ERROR_RESOURCE_UNAVAIL 13 // Resources unavailable -#define SNMP_ERROR_COMITFAIL 14 // Unable to comit -#define SNMP_ERROR_UNDO_FAIL 15 // Unable to undo -#define SNMP_ERROR_AUTH_ERR 16 // Authentication failure -#define SNMP_ERROR_NOT_WRITEABLE 17 // Mib Object not writeable -#define SNMP_ERROR_INCONSIS_NAME 18 // Inconsistent naming used - - -//-------[ Negative ASNMP Result/Error Return Codes ]------------------- - -// General -#define SNMP_CLASS_SUCCESS 0 // success -#define SNMP_CLASS_ERROR -1 // general error -#define SNMP_CLASS_RESOURCE_UNAVAIL -2 // e.g., malloc failed -#define SNMP_CLASS_INTERNAL_ERROR -3 // unexpected / internal error -#define SNMP_CLASS_UNSUPPORTED -4 // unsupported function - -// Callback reasons: -#define SNMP_CLASS_TIMEOUT -5 // outstanding request timed out -#define SNMP_CLASS_ASYNC_RESPONSE -6 // received response for outstd request -#define SNMP_CLASS_NOTIFICATION -7 // received notification (trap/inform) -#define SNMP_CLASS_SESSION_DESTROYED -8 // snmp::destroyed with oustanding reqs pending - -// Snmp Class: -#define SNMP_CLASS_INVALID -10 // snmp::mf called on invalid instance -#define SNMP_CLASS_INVALID_PDU -11 // invalid pdu passed to mf -#define SNMP_CLASS_INVALID_TARGET -12 // invalid target passed to mf -#define SNMP_CLASS_INVALID_CALLBACK -13 // invalid callback to mf -#define SNMP_CLASS_INVALID_REQID -14 // invalid request id to cancel -#define SNMP_CLASS_INVALID_NOTIFYID -15 // missing trap/inform oid -#define SNMP_CLASS_INVALID_OPERATION -16 // snmp operation not allowed for specified target -#define SNMP_CLASS_INVALID_OID -17 // invalid oid passed to mf -#define SNMP_CLASS_INVALID_ADDRESS -18 // invalid address passed to mf -#define SNMP_CLASS_ERR_STATUS_SET -19 // agent returned response pdu with error_status set - -// Transport Errors: -#define SNMP_CLASS_TL_UNSUPPORTED -20 // transport unsupported -#define SNMP_CLASS_TL_IN_USE -21 // transport in use -#define SNMP_CLASS_TL_FAILED -22 // transport operation failed - -// extras -#define SNMP_CLASS_SHUTDOWN -23 // used for back door shutdown -#define SNMP_INVALID_ARGS -24 // invalid args passed - -#ifdef INCLUDE_SNMP_ERR_STRINGS_ - -// ASCII strings returned through Snmp::error() function. NOTE: altering -// the strings in this header file will not affect the return values of -// Snmp::error(), unless you rebuild the ASNMP library from source. - -#define MAX_POS_ERROR SNMP_ERROR_INCONSIS_NAME -#define MAX_NEG_ERROR SNMP_CLASS_SHUTDOWN - -static char * pErrs[] = { - "Success", // 0 - "SNMP: Response PDU Too Big", // 1 - "SNMP: Variable does not exist", // 2 - "SNMP: Cannot modify variable: Bad Value", // 3 - "SNMP: Cannot modify object, Read Only", // 4 - "SNMP: Cannot perform operation, General Error", // 5 - "SNMP: Cannot access variable, No Access", // 6 - "SNMP: Cannot create/modify variable, Wrong Type", // 7 - "SNMP: Cannot create/set variable, Wrong Length", // 8 - "SNMP: Cannot create/set variable, Wrong Encoding", // 9 - "SNMP: Cannot create/set variable, Wrong Value", // 10 - "SNMP: Cannot create variable, Creation Not Allowed", // 11 - "SNMP: Cannot create/set variable, Inconsistent Value", // 12 - "SNMP: Cannot create/set variable, Resource Unavailable", // 13 - "SNMP: Cannot create/set variable, Commit Failed", // 14 - "SNMP: Cannot create/set variable, Undo Failed", // 15 - "SNMP: Cannot perform operation, Authorization Error", // 16 - "SNMP: Cannot create/set variable, Not Writable", // 17 - "SNMP: Cannot create variable, Inconsistent Name", // 18 -}; - - -static char * nErrs[] = { - // General: - // 0 SNMP_CLASS_SUCCESS - "ASNMP: Success", - - // 1 SNMP_CLASS_ERROR - "ASNMP: Operation failed", - - // 2 SNMP_CLASS_RESOURCE_UNAVAIL - "ASNMP: Resource unavailable", - - // 3 SNMP_CLASS_INTERNAL_ERROR - "ASNMP: Internal error", - - // 4 SNMP_CLASS_UNSUPPORTED - "ASNMP: Unsupported function", - - // Callback reasons: - // 5 SNMP_CLASS_TIMEOUT - "ASNMP: SNMP request timed out", - - // 6 SNMP_CLASS_ASYNC_RESPONSE - "ASNMP: Received SNMP Response", - - // 7 SNMP_CLASS_NOTIFICATION - "ASNMP: Received SNMP Notification (trap or inform)", - - // 8 SNMP_CLASS_SESSION_DESTROYED - "ASNMP: Closing session with outstanding requests", - - // 9 reserved for future - "Unknown error code", - - // Snmp Class errors: - // 10 SNMP_CLASS_INVALID - "ASNMP: Class not valid", - - // 11 SNMP_CLASS_INVALID_PDU - "ASNMP: Invalid Pdu", - - // 12 SNMP_CLASS_INVALID_TARGET - "ASNMP: Invalid Target", - - // 13 SNMP_CLASS_INVALID_CALLBACK - "ASNMP: Invalid (null) Callback Function", - - // 14 SNMP_CLASS_INVALID_REQID - "ASNMP: Invalid Request Id", - - // 15 SNMP_CLASS_INVALID_NOTIFYID - "ASNMP: Invalid Notification Id", - - // 16 SNMP_CLASS_INVALID_OPERATION - "ASNMP: SNMP Operation not supported on specified Target", - - // 17 SNMP_CLASS_INVALID_OID - "ASNMP: Invalid Object Identifier", - - // 18 SNMP_CLASS_INVALID_ADDRESS - "ASNMP: Invalid Address", - - // 19 SNMP_CLASS_ERR_STATUS_SET - "ASNMP: Agent indicates error in SNMP request", - - // Transport Errors: - // 20 SNMP_CLASS_TL_UNSUPPORTED - "ASNMP: Transport is not supported", - - // 21 SNMP_CLASS_TL_IN_USE - "ASNMP: Transport is in use", - - // 22 SNMP_CLASS_TL_FAILED - "ASNMP: Transport operation failed", - - // 23 SNMP_CLASS_SHUTDOWN - "ASNMP: Blocked Mode Shutdown", - - // unknown error code - "Unknown error code", -}; - -#endif //INCLUDE_SNMP_ERR_STRINGS_ - -#endif //SNMPERRS_H_ diff --git a/ASNMP/asnmp/target.cpp b/ASNMP/asnmp/target.cpp deleted file mode 100644 index c9e27865f31..00000000000 --- a/ASNMP/asnmp/target.cpp +++ /dev/null @@ -1,324 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// target.cpp -// -// = DESCRIPTION -// Target class defines target SNMP agents. -// -// = AUTHOR -// Peter E Mellquist -// Michael R MacFaden mrm@cisco.com - rework & ACE port -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. - =====================================================================*/ - -#include "asnmp/target.h" - -ACE_RCSID(asnmp, target, "$Id$") - -//---------------------------------------------------------------------- -//--------[ Class default values ]---------------------- -//---------------------------------------------------------------------- -u_long SnmpTarget::default_timeout_ = DEF_TIMEOUT; -int SnmpTarget::default_retries_ = DEF_RETRIES; -u_long SnmpTarget::default_max_pdu_size_ = DEF_MAX_SNMP_PACKET; -snmp_version SnmpTarget::default_version_ = version1; - -OctetStr UdpTarget::default_rd_community_(READ_COMM_STR); -OctetStr UdpTarget::default_wr_community_(WRITE_COMM_STR); - -//---------------------------------------------------------------------- -//--------[ Abstract SnmpTarget Member Functions ]---------------------- -//---------------------------------------------------------------------- -SnmpTarget::SnmpTarget(): - validity_(0), timeout_(default_timeout_), retries_(default_retries_), - max_pdu_size_(default_max_pdu_size_), version_(default_version_) -{ -} - -// return validity of target -int SnmpTarget::valid() const -{ - return validity_; -} - -// allow destruction of derived classes -SnmpTarget::~SnmpTarget() -{ -} - -// set the timeout -void SnmpTarget::set_timeout( const u_long t) -{ - timeout_ = t; -} - -// change the default timeout -void SnmpTarget::set_default_timeout( const u_long t) -{ - default_timeout_ = t; -} - -// set the retry value -void SnmpTarget::set_retry( const int r) -{ - retries_ = r; -} - -// change the default retries -void SnmpTarget::set_default_retry( const int r) -{ - default_retries_ = r; -} - -void SnmpTarget:: set_max_pdu_size(const u_long max_pdu_sz) -{ - max_pdu_size_ = max_pdu_sz; -} - - -void SnmpTarget::set_default_max_pdu_size(const u_long max_pdu_sz) -{ - default_max_pdu_size_ = max_pdu_sz; -} - -void SnmpTarget::set_version( const snmp_version v) -{ - version_ = v; -} - -void SnmpTarget::set_default_version( const snmp_version v) -{ - default_version_ = v; -} - -snmp_version SnmpTarget::get_version() const -{ - return version_; -} - -snmp_version SnmpTarget::get_default_version() const -{ - return default_version_; -} - -u_long SnmpTarget::get_max_pdu_size() const -{ - return max_pdu_size_; -} - -// get the retry value -int SnmpTarget::get_retry() const -{ - return retries_; -} - -// get the retry value -int SnmpTarget::get_default_retry() const -{ - return default_retries_; -} - -// get the timeout -u_long SnmpTarget::get_timeout() const -{ - return timeout_; -} - -SnmpTarget& SnmpTarget::operator=(const SnmpTarget& lhs) -{ - if (this == &lhs) - return *this; - - validity_ = lhs.validity_; - timeout_ = lhs.timeout_; - retries_ = lhs.retries_; - max_pdu_size_ =lhs.max_pdu_size_; - version_ = lhs.version_; - return *this; -} - -int operator==(const SnmpTarget& lhs, const SnmpTarget& rhs) -{ - if (lhs == rhs) - return 1; - - if (lhs.timeout_ != rhs.timeout_) - return 0; - - if (lhs.retries_ != rhs.retries_) - return 0; - - if (lhs.max_pdu_size_ != rhs.max_pdu_size_) - return 0; - - if (lhs.version_ != rhs.version_) - return 0; - - return 1; -} - - -//---------------------------------------------------------------------- -//--------[ IpTarget Member Functions ]---------------------------------- -//---------------------------------------------------------------------- - - -//---------[ UdpTarget::UdpTarget( void) ]---------------------------------- - -UdpTarget::UdpTarget() -{ - validity_ = 0; - read_community_ = default_rd_community_; // assign by init fails - write_community_ = default_wr_community_; -} - -UdpTarget::UdpTarget(const UdpAddress& udp) : udp_address_(udp) -{ - if (udp_address_.valid()) - validity_ = 1; - read_community_ = default_rd_community_; - write_community_ = default_wr_community_; -} - -// - copy constructor can be synthesised by compiler - -//-----------[ UdpTarget::~UdpTarget() ]-------------------------------- -UdpTarget::~UdpTarget() -{ -} - -//-----------[ UdpTarget::clone() ]-------------------------------- -SnmpTarget * UdpTarget::clone() const -{ - return (SnmpTarget *) new UdpTarget(*this); -} - - -void UdpTarget::set_default_read_community(const OctetStr& rd_community) -{ - default_rd_community_ = rd_community; -} - -void UdpTarget::set_default_write_community(const OctetStr& wr_community) -{ - default_wr_community_ = wr_community; -} - - -// get the read community name as an u_char and len -void UdpTarget::get_read_community( OctetStr& read_community_oct) const -{ - read_community_oct = read_community_; -} - -//---------[ UdpTarget::set_getcommunity ]--------------------------------- -// set the read community name -void UdpTarget::set_read_community( const OctetStr& new_read_community) -{ - read_community_ = new_read_community; -} - -//---------[ UdpTarget::get_writecommunity ]---------------------------- -// get the write community -void UdpTarget::get_write_community( OctetStr &write_community_oct) const -{ - write_community_oct = write_community_; -} - -//-----------[ UdpTarget::set_writecommunity ]--------------------------- -// set the write community -void UdpTarget::set_write_community( const OctetStr& write_community_oct) -{ - write_community_ = write_community_oct; -} - -//------------[ Address& UdpTarget::get_address() ]--------------------- -// get the address -void UdpTarget::get_address( UdpAddress &address) const -{ - address = udp_address_; - return; -} - -//-------------[ UdpTarget::set_address ]-------------------------------- -// set the address -int UdpTarget::set_address( UdpAddress &udp_address) -{ - udp_address_ = udp_address; - if ( udp_address_.valid()) - validity_ = 1; - else - validity_ = 0; - - return validity_; -} - -// overloaded assignment -UdpTarget& UdpTarget::operator=( const UdpTarget& lhs) -{ - if (this == &lhs) - return *this; - - // assign base part - *((SnmpTarget *) this) = *((SnmpTarget *)&lhs); - - udp_address_ = lhs.udp_address_; - read_community_ = lhs.read_community_; - write_community_ = lhs.write_community_; - validity_ = lhs.validity_; - - return *this; -} - -char *UdpTarget::to_string() -{ - sprintf(output_buffer_,"UdpTarget: [ valid: %d addr: %s rd: %s wr: %s \ -ver: %d, timeout: %d, retries: %d max_pdu_size: %d]", - valid(), udp_address_.to_string(), read_community_.to_string(), - write_community_.to_string(), version_, (int) timeout_, - retries_, max_pdu_size_); - return output_buffer_; -} - -//=============[ int operator == UdpTarget, UdpTarget ]=============== -// equivlence operator overloaded -int operator==( const UdpTarget &lhs,const UdpTarget &rhs) -{ - // need to compare all the members of a UdpTarget - if ( lhs.read_community_ != rhs.read_community_) - return 0; // != - - if ( lhs.write_community_ != rhs.write_community_) - return 0; // != - - if ( lhs.udp_address_ != rhs.udp_address_) - return 0; - - if ( lhs.timeout_ != rhs.timeout_) - return 0; - - if ( lhs.retries_ != rhs.retries_) - return 0; - - return 1; // they are equal -} diff --git a/ASNMP/asnmp/target.h b/ASNMP/asnmp/target.h deleted file mode 100644 index 7dfc14ab5d8..00000000000 --- a/ASNMP/asnmp/target.h +++ /dev/null @@ -1,252 +0,0 @@ -/* -*-C++-*- */ -// $Id$ -#ifndef TARGET_ -#define TARGET_ -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// target.h -// -// = DESCRIPTION -// -// = AUTHOR -// Peter E Mellquist -// Michael R. MacFaden (ported to ACE) -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS" without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -//----[ includes ]------------------------------------------------ -#include "ace/INET_Addr.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "asnmp/address.h" -#include "asnmp/oid.h" -#include "asnmp/octet.h" - -//----[ enumerated types for SNMP versions ]------------------------- -enum snmp_version { - version1, // 0 - version2c, // 1 (Cisco IOS does not have IOS v2c agent available yet) - version3 // 2 (IETF working on this version) -}; - -// targets contain the following default properties -enum ASNMP_Defs { - DEF_TIMEOUT = 1, // unit: seconds - DEF_RETRIES = 1, // no retry default - DEF_MAX_SNMP_PACKET = 1430, // maximum pdu len on the wire (eth mtu-ip hdr) - // split bigger pdus (not implemented yet) - DEF_AGENT_PORT = 161, // port # for SNMP agent - DEF_TRAP_PORT = 162, // port # for SNMP trap receiver - DEF_VERSION = version1, // default SNMP version - MAX_COMM_STR_LEN = 255, // max value this impl will accept from client - MAX_TARGET_STRING_REP = 2048 // max value this impl will accept from client -}; - -#define READ_COMM_STR "public" -#define WRITE_COMM_STR "private" - -// Abstract class used to provide a virtual interface into Targets -// -class ACE_Export SnmpTarget - // = TITLE - // Abstract Base class SnmpTarget is used to Collect all transmission - // details to communicate with an SNMP -{ - public: - - virtual ~SnmpTarget(); - // allow destruction of derived classes - - int valid() const; - // return validity of target - - void set_retry( const int r); - // set the retry value - - void set_timeout( const unsigned long t); - // set the object's timeout (in seconds) - - void set_version( const snmp_version v); - // set the instance version - - void set_max_pdu_size(const unsigned long max_pdu_sz); - // all classes constructed will have this write community string - - void set_default_timeout( const unsigned long t); - // change the "class" default default timeout (in seconds) - - void set_default_retry( const int r); - // change the default send retries - - void set_default_max_pdu_size(const unsigned long max_pdu_sz); - // all classes constructed will have this write community string - - void set_default_version( const snmp_version v); - // change class default - - // *** get methods *** - - int get_default_retry() const; - // get the retry value - - unsigned long get_timeout() const; - // get the timeout (seconds) - - unsigned long get_max_pdu_size() const; - // get instance max buffer size - - void get_default_max_pdu_size(const unsigned long max_pdu_sz); - // all classes constructed will have this write community string - - snmp_version get_version() const; - // get the version - - snmp_version get_default_version() const; - - int get_retry() const; - // return send retry number for this instancd - - virtual SnmpTarget *clone() const = 0; - // virtual clone operation for creating a new SnmpTarget from an existing - // SnmpTarget. The caller MUST use the delete operation on the return - // value when done. - - friend int operator==(const SnmpTarget& lhs, const SnmpTarget& rhs); - // manipulate the base part - - SnmpTarget& operator=(const SnmpTarget& lhs); - - protected: - SnmpTarget(); - // SnmpTarget(const SnmpTarget &); - - int validity_; - // used by derived class instances - - unsigned long timeout_; - // instance value xmit timeout in milli secs - - int retries_; - // instance value number of retries - - unsigned max_pdu_size_; - // size of pdu - - snmp_version version_; - // instance value the snmp version - - // class wide default values - static unsigned long default_timeout_; - // xmit timeout in secs - - static int default_retries_; - // number of retries - - static unsigned long default_max_pdu_size_; - static snmp_version default_version_; - // snmp protocol version -}; - -//----[ UdpTarget class ]---------------------------------------------- -// UDP/IP transport using "community string" based agents (targets) -// -class ACE_Export UdpTarget: public SnmpTarget - // = TITLE - // Concrete class UdpTarget contains all Details for communicating - // with a SNMPv1 agent over UDP/IPv4 transport -{ - public: - UdpTarget(); - - UdpTarget( const UdpAddress& udp); - // constructor with only address - // assumes default as public, public - // can be constructed with IP address object - - UdpTarget( ACE_INET_Addr& ace_inet_addr); - // can be constructed with Udp address object TODO: merge addresses - - ~UdpTarget(); - // destructor - - // ** set *** - - void set_read_community( const OctetStr& new_read_community); - // set the read community using an OctetStr - - void set_write_community( const OctetStr& write_community); - // set the write community using an OctetStr - - int set_address( UdpAddress &udp_address); - // set the address - - // ** get *** - - void get_read_community( OctetStr& read_community_oct) const; - // get the read community as an Octet Str object - - void get_write_community( OctetStr &write_community_oct) const; - // get the write community as an OctetStr - - void get_address( UdpAddress& address) const; - // get the address - - void set_default_read_community(const OctetStr& rd_community); - // all classes constructed will have this read community string - - void set_default_write_community(const OctetStr& wr_community); - // all classes constructed will have this write community string - - void get_default_read_community(OctetStr& rd_community) const; - // all classes constructed will have this read community string - - void get_default_write_community(OctetStr& wr_community) const; - // all classes constructed will have this write community string - - UdpTarget& operator=( const UdpTarget& target); - // overloaded assignment - - friend int operator==( const UdpTarget &lhs, const UdpTarget &rhs); - // compare two C targets - - char *to_string(); - // string representation of object - - SnmpTarget *clone() const; - // clone from existing UdpTarget - - protected: - static OctetStr default_rd_community_; - static OctetStr default_wr_community_; - OctetStr read_community_; - OctetStr write_community_; - UdpAddress udp_address_; - snmp_version version_; - - char output_buffer_[MAX_TARGET_STRING_REP]; - // to_string() rep of data -}; - - -#endif //TARGET_ diff --git a/ASNMP/asnmp/timetick.cpp b/ASNMP/asnmp/timetick.cpp deleted file mode 100644 index 06fd025797f..00000000000 --- a/ASNMP/asnmp/timetick.cpp +++ /dev/null @@ -1,142 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// timetick.cpp -// -// = DESCRIPTION -// Class implentation for SMI Timeticks class. -// -// = AUTHOR -// Peter E Mellquist -// Michael R MacFaden mrm@cisco.com - rework & ACE port -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -#include "asnmp/timetick.h" // include header file for timetick class - -ACE_RCSID(asnmp, timetick, "$Id$") - -// constructor with a value -TimeTicks::TimeTicks( const unsigned long i):SnmpUInt32(i) -{ - smival.syntax = sNMP_SYNTAX_TIMETICKS; -} - -// copy constructor -TimeTicks::TimeTicks( const TimeTicks &t) -{ - smival.value.uNumber = t.smival.value.uNumber; - smival.syntax = sNMP_SYNTAX_TIMETICKS; -} - -// destructor -TimeTicks::~TimeTicks() -{ -} - -// syntax type -SmiUINT32 TimeTicks::get_syntax() -{ - return sNMP_SYNTAX_TIMETICKS; -} - -// create a new instance of this Value -SnmpSyntax *TimeTicks::clone() const -{ - return (SnmpSyntax *) new TimeTicks(*this); -} - -// overloaded assignement from ulong -TimeTicks& TimeTicks::operator=( const unsigned long int i) -{ - smival.value.uNumber =i; return *this; -} - -// overloaded assignment from TimeTicks -TimeTicks& TimeTicks::operator=( const TimeTicks &uli) -{ - this->smival.value.uNumber = uli.smival.value.uNumber; return *this; -} - -// general assignment from any Value -SnmpSyntax& TimeTicks::operator=( SnmpSyntax &in_val) -{ - if ( this == &in_val ) // handle assignement from itself - return *this; - - valid_flag = 0; // will get set true if really valid - if (in_val.valid()) { - switch (in_val.get_syntax()) { - case sNMP_SYNTAX_UINT32: - // case sNMP_SYNTAX_GAUGE32: .. indistinquishable from UINT32 - case sNMP_SYNTAX_CNTR32: - case sNMP_SYNTAX_TIMETICKS: - case sNMP_SYNTAX_INT32: // implied cast int -> uint - this->smival.value.uNumber = - ((TimeTicks &)in_val).smival.value.uNumber; - valid_flag = 1; - break; - } - } - return *this; -} - -// otherwise, behave like an unsigned long -TimeTicks::operator unsigned long() -{ - return smival.value.uNumber; -} - - -// ASCII format return -char * TimeTicks::to_string() - /* Should do something nicer like days:hours:minutes... */ -{ - unsigned long tt, hseconds, seconds, minutes, hours, days; - tt = this->smival.value.uNumber; - - // days - days = tt / 8640000; - tt %= 8640000; - - // hours - hours = tt / 360000; - tt %= 360000; - - // minutes - minutes = tt / 6000; - tt %= 6000; - - seconds = tt / 100; - tt %= 100; - - hseconds = tt; - - if ( days ==0) - sprintf( output_buffer,"%ld:%02ld:%02ld.%02ld", hours, minutes,seconds,hseconds); - else if ( days==1) - sprintf( output_buffer,"1 day %ld:%02ld:%02ld.%02ld", hours, minutes,seconds,hseconds); - else - sprintf( output_buffer,"%ld days, %ld:%02ld:%02ld.%02ld", days,hours, minutes,seconds,hseconds); - - return output_buffer; -} diff --git a/ASNMP/asnmp/timetick.h b/ASNMP/asnmp/timetick.h deleted file mode 100644 index 8e4609c124b..00000000000 --- a/ASNMP/asnmp/timetick.h +++ /dev/null @@ -1,85 +0,0 @@ -/* -*-C++-*- */ -// $Id$ -#ifndef TIMETICKS_ -#define TIMETICKS_ -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// timetick.h -// -// = DESCRIPTION -// Class definition for SMI Timeticks class. -// -// = AUTHOR -// Michael R. MacFaden -// -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -#include "asnmp/integer.h" - -#define TICKOUTBUF 30 // max formatted time string - -//------------[ TimeTicks Class ]----------------------------------- -// The timeticks class allows all the functionality of unsigned -// integers but is recognized as a distinct SMI type. TimeTicks -// objects may be get or set into Vb objects. -// -class ACE_Export TimeTicks: public SnmpUInt32 - // = TITLE - // Define RFC1155 TimeTicks Data object - -{ - - public: - TimeTicks( const unsigned long i = 0); - - TimeTicks( const TimeTicks &t); - // copy constructor - - ~TimeTicks(); - // destructor - - SmiUINT32 get_syntax(); - // syntax type - - char *to_string(); - // get a printable ASCII value - - SnmpSyntax *clone() const; - // create a new instance of this Value - - SnmpSyntax& operator=(SnmpSyntax &val); - // copy an instance of this Value - - TimeTicks& operator=( const TimeTicks &uli); - // overloaded assignment - - TimeTicks& operator=( const unsigned long int i); - // overloaded assignment - - operator unsigned long(); - // otherwise, behave like an unsigned long - - protected: - char output_buffer[TICKOUTBUF]; - // for storing printed form -}; -#endif // TIMETICKS_ diff --git a/ASNMP/asnmp/transaction.cpp b/ASNMP/asnmp/transaction.cpp deleted file mode 100644 index 4c22b0f51e4..00000000000 --- a/ASNMP/asnmp/transaction.cpp +++ /dev/null @@ -1,202 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// transaction.cpp -// -// = DESCRIPTION -// implements blocking SNMPv1 API using a simple state machine -// transactions over UDP/IP networks -// -// = AUTHOR -// Michael R MacFaden mrm@cisco.com - remove v2c, async, rework for ACE -// ============================================================================ - -#include "ace/Reactor.h" -#include "asnmp/transaction.h" - -ACE_RCSID(asnmp, transaction, "$Id$") - -// pre: pdu, target report valid() == 1 -// post: pdu sent out over the wire -inline void reset_receive_buffer(iovec& io) -{ - io.iov_base = 0; - io.iov_len = 0; -} - -transaction::transaction(const Pdu& pdu, const UdpTarget& target, - ACE_SOCK_Dgram& io): - result_(0), - wp_(pdu,target), params_(target), session_(io) -{ - // last step, convert address (get ride of this once we have merged address - UdpAddress udp; - target.get_address(udp); - // via string conversion "dotted-quad:port" - ACE_INET_Addr tmp(udp); - addr_ = tmp; - reset_receive_buffer(receive_iovec_); -} - -transaction::~transaction() -{ - ACE_Reactor::instance()->remove_handler(this, READ_MASK | DONT_CALL); - ACE_Reactor::instance()->cancel_timer(this); - - delete [] receive_iovec_.iov_base; -} - -// implement state machine, send, wait (timeout/results) return -int transaction::run() -{ - int rc, done = 0; - int retry_counter = 0; - ACE_Time_Value to(params_.get_timeout(), 0); // seconds - ACE_Reactor reactor; - - // 1. register io port for read access - if (reactor.register_handler(session_.get_handle(), this, - ACE_Event_Handler::READ_MASK) == -1) - return SNMP_CLASS_INTERNAL_ERROR; - - // register a time handler and a socket with this - - while (!done) { - - if ((rc = send()) < 0) // send pkt to agent - return rc; - else { - if (retry_counter++ > params_.get_retry()) - return SNMP_CLASS_TIMEOUT; - } - - // 2. wait for events (timeout, returned msg) - if (( rc = reactor.handle_events (to)) == 1) // one handler registered - return 0; - else { - if (rc == 0) { - to.set(params_.get_timeout(), 0); - } - else - return SNMP_CLASS_INTERNAL_ERROR; - } - } - return SNMP_CLASS_INTERNAL_ERROR; -} - -// implement state machine, send, wait (timeout/results) return -int transaction::run(transaction_result * r) -{ - result_ = r; - int rc; - - // 1. register io port for read access - ACE_Reactor * reactor = ACE_Reactor::instance(); - if (reactor->register_handler(session_.get_handle(), - this, - READ_MASK) == -1) - return SNMP_CLASS_INTERNAL_ERROR; - - retry_counter_ = 0; - - // register a time handler and a socket with this - ACE_Time_Value to = params_.get_timeout(); - if (reactor->schedule_timer(this, 0, to, to) < 0) - return SNMP_CLASS_INTERNAL_ERROR; - - if ((rc = send()) < 0) // send pkt to agent - return rc; - return 0; -} - -// got back response from SNMPv1 agent - process it -int transaction::handle_input (ACE_HANDLE) -{ - // OS allocates iovec_.iov_base ptr and len - delete [] receive_iovec_.iov_base; - reset_receive_buffer(receive_iovec_); - int rc = session_.recv(&receive_iovec_, receive_addr_, 0); - if (rc == -1) { - delete [] receive_iovec_.iov_base; - reset_receive_buffer(receive_iovec_); - if (result_) - result_->result(this, SNMP_CLASS_RESOURCE_UNAVAIL); - return SNMP_CLASS_RESOURCE_UNAVAIL; - } - if (result_) - { - result_->result(this, rc); - return 0; - } - return rc; -} - -int transaction::handle_timeout(const ACE_Time_Value &, - const void *) -{ - int rc; - if ((rc = send()) < 0) // send pkt to agent - result_->result(this, 0); - else - if (retry_counter_++ > params_.get_retry()) - result_->result(this, SNMP_CLASS_TIMEOUT); - - return 0; -} - - -const ACE_INET_Addr& transaction::get_from_addr() const -{ - return receive_addr_; -} - - -// return pdu to caller -int transaction::result(Pdu& pdu, char *comm_str, ACE_INET_Addr *from) -{ - // TODO: check to see the sender matches the receiver address.. - - // remove any vbs existing in this pdu - pdu.delete_all_vbs(); - - // any data to return? - if (receive_iovec_.iov_len == 0) - return -1; - - wpdu tmp(receive_iovec_); - - snmp_version ver; - - // return comm str and from address of incomming pdu if requested - int rc = tmp.get_pdu(pdu, ver); - if (comm_str) - ACE_OS::strcpy(comm_str, (char *)tmp.get_community()); - if (from) - *from = receive_addr_; - return rc; -} - -transaction::transaction(ACE_SOCK_Dgram& io) -: result_(0), session_(io) -{ - reset_receive_buffer(receive_iovec_); -} - - -int transaction::send() -{ - iovec io = wp_.get_buffer(); - if (io.iov_len == 0) { - // NO DATA ? - return -1; - } - ssize_t rc = session_.send (io.iov_base, io.iov_len, addr_ , 0); - return rc; -} - -transaction_result::~transaction_result() {} diff --git a/ASNMP/asnmp/transaction.h b/ASNMP/asnmp/transaction.h deleted file mode 100644 index 4ded5f34e1b..00000000000 --- a/ASNMP/asnmp/transaction.h +++ /dev/null @@ -1,80 +0,0 @@ -/* -*-C++-*- */ -// $Id$ -#ifndef TRANSACTION_ -#define TRANSACTION_ -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// transaction.h -// -// = DESCRIPTION -// -// = AUTHOR -// Michael R. MacFaden port to ACE / use Reactor pattern -// -// ============================================================================ - -#include "ace/Event_Handler.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "asnmp/target.h" -#include "asnmp/pdu.h" -#include "asnmp/transaction_result.h" -#include "asnmp/wpdu.h" // cmu adapter class -#include "ace/SOCK_Dgram.h" - -class ACE_Export transaction : public ACE_Event_Handler - // = TITLE - // Used to manage the details of a particular transaction betwen - // two SNMP agents. Uses SnmpTarget class to implement retry/timeout - -{ - int retry_counter_; - transaction_result * result_; - - public: - transaction(const Pdu& pdu, const UdpTarget& target, ACE_SOCK_Dgram& io); - transaction(ACE_SOCK_Dgram& io); - // constructor - ~transaction(); - // destructor - - int run(); - int run(transaction_result *r); // Async interface, with callback object - // begin polling for values - - int result(Pdu& pdu, char *comm_str = 0, ACE_INET_Addr *from_addr = 0); - // return pdu with result from agent after run() is completed rc = 0 - // optionally get community str - - virtual int handle_input (ACE_HANDLE fd); - // called by reactor when data is ready to be read in from OS memory - virtual int handle_timeout (const ACE_Time_Value &, const void *); - // used for resend in asynchronous run() - - int send(); - // transmit buffer command to network... - - const ACE_INET_Addr& get_from_addr() const; - // pre: handle_input called - // retrieve the sender's from address from the last pkt - - private: - transaction(const transaction&); - // disallow copy construction - - wpdu wp_; // wire pdu - UdpTarget params_; // params - ACE_INET_Addr addr_; // to address - ACE_SOCK_Dgram session_; // io object - iovec receive_iovec_; // receive buffer - ACE_INET_Addr receive_addr_; // from address -}; - -#endif // TRANSACTION_ diff --git a/ASNMP/asnmp/transaction_result.h b/ASNMP/asnmp/transaction_result.h deleted file mode 100644 index 1c0472675ea..00000000000 --- a/ASNMP/asnmp/transaction_result.h +++ /dev/null @@ -1,29 +0,0 @@ -/* -*-C++-*- */ -// $Id$ -#ifndef TRANSACTION_RESULT_H_ -#define TRANSACTION_RESULT_H_ -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// transaction_result.h -// -// = DESCRIPTION -// An object respresenting a request/reply operation between mgr/agent -// -// = AUTHOR -// Michael R. MacFaden -// -// ============================================================================ - -class transaction; -class ACE_Export transaction_result -{ - public: - virtual ~transaction_result(); - virtual void result(transaction * trans, int) = 0; -}; - -#endif diff --git a/ASNMP/asnmp/vb.cpp b/ASNMP/asnmp/vb.cpp deleted file mode 100644 index ff9c22bb773..00000000000 --- a/ASNMP/asnmp/vb.cpp +++ /dev/null @@ -1,396 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// vb.h -// -// = DESCRIPTION -// The Vb class is an encapsulation of the snmp variable binding. -// This module contains the class definition for the variable binding (VB) -// class. The VB class is an encapsulation of a SNMP VB. A VB object is -// composed of one SNMP++ Oid and one SMI value. The Vb class utilizes Oid -// objects and thus requires the Oid class. To use this class, -// set oid, value then call valid() to be sure object was constructed correctly. -// -// = AUTHOR -// Peter E Mellquist -// Michael R MacFaden mrm@cisco.com - rework & ACE port -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -#include "asnmp/oid.h" // include oid class defs -#include "asnmp/vb.h" // include vb class defs -#include "asnmp/snmperrs.h" // error codes - -ACE_RCSID(asnmp, vb, "$Id$") - -//---------------[ Vb::Vb( void) ]-------------------------------------- -// constructor with no arguments -// makes an vb, unitialized -Vb::Vb( void): output_(0), iv_vb_value_(0), - exception_status_(SNMP_CLASS_SUCCESS) -{ -} - -//---------------[ Vb::Vb( const Oid &oid) ]----------------------------- -// constructor to initialize the oid -// makes a vb with oid portion initialized -Vb::Vb( const Oid &oid): output_(0), iv_vb_oid_(oid), iv_vb_value_(0), - exception_status_(SNMP_CLASS_SUCCESS) -{ -} - -//---------------[ Vb::Vb( const Oid &oid, const SmiSyntax &val) ]------- -Vb::Vb( const Oid &oid, const SnmpSyntax &val, const SmiUINT32 status): - output_(0), iv_vb_oid_(oid), iv_vb_value_(0), exception_status_(status) -{ - // iv_vb_value_ = recast_smi_object(val); // allocate and construct object - iv_vb_value_ = val.clone(); -} - -//---------------[ Vb::Vb( const Vb &vb) ]----------------------------- -// copy constructor -Vb::Vb( const Vb &vb): output_(0), iv_vb_value_(0) -{ - *this = vb; -} - -//---------------[ Vb::~Vb() ]------------------------------------------ -// destructor -// if the vb has a oid or an octect string then -// the associated memory needs to be freed -Vb::~Vb() -{ - free_vb(); - delete [] output_; // formatting buffer if it exists -} - - -//--------------[ Vb::valid() ]----------------------------------------- -// returns validity of a Vb object -// must have a valid oid and value -int Vb::valid() const -{ - if ( iv_vb_oid_.valid() && (iv_vb_value_ && iv_vb_value_->valid()) ) - return 1; - else - return 0; -} - - -//---------------[ Vb& Vb::operator=( const Vb &vb) ]-------------------- -// overloaded assignment allows assigning one Vb to another -// this involves deep memory thus target vb needs to be freed -// before assigning source -Vb& Vb::operator=( const Vb &vb) -{ - free_vb(); // free up target to begin with - - //-----[ reassign the Oid portion 1st ] - vb.get_oid( iv_vb_oid_); - - //-----[ next set the vb value portion ] - if (vb.iv_vb_value_ == 0) { - iv_vb_value_ = 0; - } - else { - iv_vb_value_ = vb.iv_vb_value_->clone(); - } - exception_status_ = vb.exception_status_; - - return *this; // return self reference -} - - // set a Vb null, if its not already -void Vb::set_null() -{ - free_vb(); -} - -//---------------[ Vb::set_oid( const Oid oid ) ]----------------------- -// set value oid only with another oid -void Vb::set_oid( const Oid& oid) -{ - iv_vb_oid_ = oid; -} - -//---------------[ Vb::get_oid( Oid &oid) ]----------------------------- -// get oid portion -void Vb::get_oid( Oid &oid) const -{ - oid = iv_vb_oid_; -} - -//----------------[ void Vb::free_vb() ]-------------------------------- -// protected method to free memory -// this methos is used to free memory when assigning new vbs -// or destructing -// in the case of oids and octets, we need to do a deep free -void Vb::free_vb() -{ - if (iv_vb_value_) - delete iv_vb_value_; - exception_status_ = SNMP_CLASS_SUCCESS; - iv_vb_value_ = 0; -} - -void Vb::set_value( const SnmpInt32& i) -{ - free_vb(); - iv_vb_value_ = (SnmpSyntax *)new SnmpInt32(i); -} - -void Vb::set_value( const SnmpUInt32& u) -{ - free_vb(); - iv_vb_value_ = (SnmpSyntax *)new SnmpUInt32(u); -} - -void Vb::set_value( const Gauge32& g) -{ - free_vb(); - iv_vb_value_ = (SnmpSyntax *)new Gauge32(g); -} - -void Vb::set_value( const Counter32& c) -{ - free_vb(); - iv_vb_value_ = (SnmpSyntax *)new Counter32(c); -} - -void Vb::set_value( const Counter64& c) -{ - free_vb(); - iv_vb_value_ = (SnmpSyntax *)new Counter64(c); -} - -void Vb::set_value( const TimeTicks& t) -{ - free_vb(); - iv_vb_value_ = (SnmpSyntax *)new TimeTicks(t); -} - -void Vb::set_value( const OctetStr& s) -{ - free_vb(); - iv_vb_value_ = (SnmpSyntax *)new OctetStr(s); -} - -void Vb::set_value( const Oid& o) -{ - free_vb(); - iv_vb_value_ = (SnmpSyntax *)new Oid(o); -} - -void Vb::set_value ( const SnmpSyntax &val) -{ - free_vb(); - iv_vb_value_ = val.clone(); -} - -int Vb::get_value( SnmpInt32 &i) -{ - if (iv_vb_value_ && - iv_vb_value_->valid() && - (iv_vb_value_->get_syntax() == sNMP_SYNTAX_INT32 )) { - i = *((SnmpInt32 *) iv_vb_value_); - return SNMP_CLASS_SUCCESS; - } - else - return SNMP_CLASS_INVALID; -} - -int Vb::get_value( SnmpUInt32 &u) -{ - if (iv_vb_value_ && iv_vb_value_->valid()) - { - SmiUINT32 syntax = iv_vb_value_->get_syntax(); - if (syntax == sNMP_SYNTAX_GAUGE32 || - syntax == sNMP_SYNTAX_CNTR32 || - syntax == sNMP_SYNTAX_TIMETICKS || - syntax == sNMP_SYNTAX_UINT32) - { - u = *((SnmpUInt32 *) iv_vb_value_); - return SNMP_CLASS_SUCCESS; - } - } - return SNMP_CLASS_INVALID; -} - -/* return a uint or a gauge. this is casting, but no semantic difference - * at this level - */ -int Vb::get_value( Gauge32 &g) -{ - if (iv_vb_value_ && - iv_vb_value_->valid() && - ((iv_vb_value_->get_syntax() == sNMP_SYNTAX_GAUGE32) || - iv_vb_value_->get_syntax() == sNMP_SYNTAX_UINT32) ) { - g = *((Gauge32 *) iv_vb_value_); - return SNMP_CLASS_SUCCESS; - } - else - return SNMP_CLASS_INVALID; -} - -int Vb::get_value( Counter32 &c) -{ - if (iv_vb_value_ && - iv_vb_value_->valid() && - (iv_vb_value_->get_syntax() == sNMP_SYNTAX_CNTR32 )) { - c = *((Counter32 *) iv_vb_value_); - return SNMP_CLASS_SUCCESS; - } - else - return SNMP_CLASS_INVALID; -} - -int Vb::get_value( Counter64 &c) -{ - if (iv_vb_value_ && - iv_vb_value_->valid() && - (iv_vb_value_->get_syntax() == sNMP_SYNTAX_CNTR64 )) { - c = *((Counter32 *) iv_vb_value_); - return SNMP_CLASS_SUCCESS; - } - else - return SNMP_CLASS_INVALID; -} - -int Vb::get_value( TimeTicks &t) -{ - if (iv_vb_value_ && - iv_vb_value_->valid() && - (iv_vb_value_->get_syntax() == sNMP_SYNTAX_TIMETICKS )) { - t = *((TimeTicks *) iv_vb_value_); - return SNMP_CLASS_SUCCESS; - } - else - return SNMP_CLASS_INVALID; -} - -int Vb::get_value( OctetStr &s) -{ - if (iv_vb_value_ && - iv_vb_value_->valid() && - (iv_vb_value_->get_syntax() == sNMP_SYNTAX_OCTETS )) { - s = *((OctetStr *) iv_vb_value_); - return SNMP_CLASS_SUCCESS; - } - else - return SNMP_CLASS_INVALID; -} - -int Vb::get_value( Oid &s) -{ - if (iv_vb_value_ && - iv_vb_value_->valid() && - (iv_vb_value_->get_syntax() == sNMP_SYNTAX_OID )) { - s = *((Oid *) iv_vb_value_); - return SNMP_CLASS_SUCCESS; - } - else - return SNMP_CLASS_INVALID; -} - - -//---------------[ Vb::get_value( Value &val) ]-------- -int Vb::get_value( SnmpSyntax &val) -{ - if (iv_vb_value_) { - val = *iv_vb_value_; - if (val.valid()) - return SNMP_CLASS_SUCCESS; - else - return SNMP_CLASS_INVALID; - } - else - { -//TM: should set val to be invalid - return SNMP_CLASS_INVALID; - } -} - - - -//-----[ misc]-------------------------------------------------------- - -// return the current syntax -// This method violates Object Orientation but may be useful if -// the caller has a vb object and does not know what it is. -// This would be useful in the implementation of a browser. -SmiUINT32 Vb::get_syntax() -{ - if ( exception_status_ != SNMP_CLASS_SUCCESS) - return exception_status_; - else - return ( iv_vb_value_ ? iv_vb_value_->get_syntax() : sNMP_SYNTAX_NULL); -} - -// return the printabel value -char *Vb::to_string_value() -{ - if (iv_vb_value_) - return iv_vb_value_->to_string(); - else - return ""; -} - -// return the printable oid -char *Vb::to_string_oid() -{ - return iv_vb_oid_.to_string(); -} - -// generate string with name/ value format -char *Vb::to_string() -{ - int len = ACE_OS::strlen(iv_vb_oid_.to_string()); - char *ptr = ""; - if (iv_vb_value_) - ptr = iv_vb_value_->to_string(); - len += ACE_OS::strlen(ptr) + 3 + 1; // " / " + null - ACE_NEW_RETURN(output_, char[len], ""); - ACE_OS::sprintf(output_, "%s / %s", iv_vb_oid_.to_string(), ptr); - return output_; -} - -// friend function to set exception status -void set_exception_status( Vb *vb, const SmiUINT32 status) -{ - vb->exception_status_ = status; -} - -// equivlence operator overloaded -// hack, by side effect, compare based on string formatting output_ -int operator==( const Vb &lhs, const Vb &rhs) -{ - if ( lhs.iv_vb_oid_ != rhs.iv_vb_oid_) - return 0; - - if (lhs.iv_vb_value_ != 0 && rhs.iv_vb_value_ != 0) { - int val = strcmp(lhs.iv_vb_value_->to_string(), - rhs.iv_vb_value_->to_string()); - return !val; - } - else - return 0; -} diff --git a/ASNMP/asnmp/vb.h b/ASNMP/asnmp/vb.h deleted file mode 100644 index dca6e7ae985..00000000000 --- a/ASNMP/asnmp/vb.h +++ /dev/null @@ -1,204 +0,0 @@ -/* -*-C++-*- */ -// $Id$ -#ifndef VB_CLS_ -#define VB_CLS_ -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// vb.h -// -// = DESCRIPTION -// This module contains the class definition for the variable binding (VB) -// class. The VB class is an encapsulation of a SNMP VB. A VB object is -// composed of one SNMP++ Oid and one SMI value. The Vb class utilizes Oid -// objects and thus requires the Oid class. To use this class, -// set oid, value then call valid() to be sure object was constructed correctly. -// -// = AUTHOR -// Peter E Mellquist -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -//----[ external calls ]---------------------------------------------- -#include "ace/OS.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "asnmp/smival.h" -#include "asnmp/snmperrs.h" // V2c error def -#include "asnmp/oid.h" // oid class def -#include "asnmp/timetick.h" // time ticks -#include "asnmp/counter.h" // counter -#include "asnmp/gauge.h" // gauge class -#include "asnmp/ctr64.h" // 64 bit counters -#include "asnmp/octet.h" // octet class -#include "asnmp/address.h" // address class def -#include "asnmp/integer.h" // integer class - - -//------------[ VB Class Def ]------------------------------------- -// The Vb class is the encapsulation of the SNMP variable binding. -// Variable binding lists in SNMP++ are represented as arrays of -// Vb objects. Vb objects are passed to and from SNMP objects to -// provide getting or setting MIB values. -// The vb class keeps its own memory for objects and does not -// utilize pointers to external data structures. -// -class ACE_Export Vb - // = TITLE - // Implement the concrete Variable Bindings aka Varbind - // composite type. Varbinds hold 1 Oid and 1 Value (Any SMI value) -{ -public: - Vb( void); - // constructor with no arguments - // makes an vb, unitialized (does not make object valid) - - Vb( const Oid &oid); - // constructor to initialize the oid - // makes a vb with oid portion initialized (does not make object valid) - - Vb( const Oid& vb, const SnmpSyntax &val, const SmiUINT32=SNMP_CLASS_SUCCESS); - // constructor to initialize the oid - // makes a vb with oid portion and value portion initialized, (valid) - - Vb( const Vb &vb); - // copy constructor - - ~Vb(); - // destructor - // if the vb has a oid or an octect string then - // the associated memory needs to be freed - - int valid() const; - // return validity of Vb object (both oid and value set return 1 else 0) - - Vb& operator=( const Vb &vb); - // assignment to another Vb object overloaded - - friend int operator==( const Vb &lhs, const Vb &rhs); - // equivlence operator overloaded - - //-----[ set oid / get oid part]------------------------------------------ - - void set_oid( const Oid& oid); - // set value oid only with another oid - - void get_oid( Oid &oid) const; - // get oid portion - - //-----[ set value part]-------------------------------------------------- - - void set_null(); - // set a Vb null, if its not already - - void set_value( const TimeTicks& ticks); - // returns 0 on success and a value - - void set_value( const Oid& oid); - // returns 0 on success and a value - - void set_value( const Counter32& ctr); - // returns 0 on success and a value - - void set_value( const Counter64& ctr); - // returns 0 on success and a value - - void set_value( const Gauge32& ctr); - // returns 0 on success and a value - - void set_value( const SnmpUInt32& ctr); - // returns 0 on success and a value - - void set_value( const SnmpInt32& ctr); - // returns 0 on success and a value - - void set_value( const OctetStr& oct_str); - // get an octet string object - - //----[ get value ]------------------------------------------------ - - int get_value( TimeTicks& ticks); - // returns 0 on success and a value - - int get_value( Oid& oid); - // returns 0 on success and a value - - int get_value( Counter32& ctr); - // returns 0 on success and a value - - int get_value( Counter64& ctr); - // returns 0 on success and a value - - int get_value( Gauge32& ctr); - // returns 0 on success and a value - - int get_value( SnmpUInt32& ctr); - // returns 0 on success and a value - - int get_value( SnmpInt32& ctr); - // returns 0 on success and a value - - int get_value( OctetStr& oct_str); - // get an octet string object - - // escape hatch - void set_value( const SnmpSyntax &val); - // for other derived types that can be casted - - int get_value( SnmpSyntax &val); - // gets a general value - - SmiUINT32 get_syntax(); - // return the current syntax - // Or.. if a V2 VB exception is present then return the exception value - - friend void set_exception_status( Vb *vb, const SmiUINT32 status); - // set the exception status - - char *to_string(); - // return fomatted version of this object - - char *to_string_value(); - // returns a formatted version of the value - - char *to_string_oid(); - // returns a formatted version of the value - -protected: - char *output_; - // display vb as [ oid / value ] - - Oid iv_vb_oid_; - // a vb is made up of a oid - - SnmpSyntax *iv_vb_value_; - // and a value... - - SmiUINT32 exception_status_; - // are there any vb exceptions?? - - void free_vb(); -}; - -#endif // VB_CLS_ - diff --git a/ASNMP/asnmp/wpdu.cpp b/ASNMP/asnmp/wpdu.cpp deleted file mode 100644 index 43c38d9a5e6..00000000000 --- a/ASNMP/asnmp/wpdu.cpp +++ /dev/null @@ -1,520 +0,0 @@ -// $Id$ - -// ============================================================================ -// = LIBRARY -// asnmp -// -// = FILENAME -// wpdu.cpp -// -// = DESCRIPTION -// Adapter class. Converts between raw wire format and Pdu objects -// that can be stuffed out a I/O port or reconstructed -// -// = AUTHOR -// Michael R. MacFaden rework the class api and impl using ACE -// Peter E Mellquist implementation/code from snmp++ snmpmsg class -// -// ============================================================================ - -#include "asnmp/wpdu.h" -#include - -#define DEFINE_TRAP_CONSTANTS_ -#include "asnmp/enttraps.h" - -ACE_RCSID(asnmp, wpdu, "$Id$") - -#define MAX_COMM_STR_LEN 255 -#define V1_COLD_START 0 -#define V1_WARM_START 1 -#define V1_LINK_DOWN 2 -#define V1_LINK_UP 3 -#define V1_AUTH_FAILURE 4 -#define V1_EGP_NEIGHBOR_LOSS 5 -#define V1_ENT_SPECIFIC 6 - -inline -void reset_iov(iovec& iov) -{ - iov.iov_base = 0; - iov.iov_len = 0; -} - -wpdu::wpdu(const Pdu& pdu, const UdpTarget& target): - valid_flag_(SNMP_CLASS_INVALID ), comm_len(MAX_COMM_STR_LEN) -{ - reset_iov(iovec_); - version_ = target.get_version(); - int status; - OctetStr comm_str; - - community_name[0] = 0; - - snmp_pdu *raw_pdu; // create a raw pdu - raw_pdu = cmu_snmp::pdu_create( (int) pdu.get_type()); - if (!raw_pdu) { - valid_flag_ = SNMP_CLASS_RESOURCE_UNAVAIL; - return; - } - - raw_pdu->reqid = pdu.get_request_id(); - raw_pdu->errstat= (unsigned long) pdu.get_error_status(); - raw_pdu->errindex= (unsigned long) pdu.get_error_index(); - - switch (raw_pdu->command) { - case sNMP_PDU_GET: - case sNMP_PDU_GETNEXT: - target.get_read_community(comm_str); - break; - - case sNMP_PDU_SET: - target.get_write_community(comm_str); - break; - - case sNMP_PDU_V1TRAP: - target.get_read_community(comm_str); - if (set_trap_info(raw_pdu, pdu)) // will free raw_pdu - return; - break; - case sNMP_PDU_RESPONSE: - break; - - default: - ACE_ASSERT(0); - return; - } - - if (load_vbs(raw_pdu, pdu)) { - cmu_snmp::free_pdu( raw_pdu); - valid_flag_ = SNMP_CLASS_RESOURCE_UNAVAIL; - return; - } - - // TODO: determine how big raw_pdu serializes out to - iovec_.iov_len = target.get_max_pdu_size(); - ACE_NEW(iovec_.iov_base, char [iovec_.iov_len]); - - // create raw byte stream - status = cmu_snmp::build( raw_pdu, - (unsigned char *)iovec_.iov_base, - (int *) &iovec_.iov_len, - target.get_version(), - comm_str.data(), comm_str.length()); - if ( status != 0) { - valid_flag_ = SNMP_ERROR_WRONG_ENCODING; - cmu_snmp::free_pdu( raw_pdu); - return; - } - - cmu_snmp::free_pdu( raw_pdu); - valid_flag_ = SNMP_CLASS_SUCCESS; -} - -int wpdu::set_trap_info(snmp_pdu *raw_pdu, const Pdu& pdu) const -{ - Oid enterprise; - Oid trapid; // validate caller has set this correctly - pdu.get_notify_id( trapid); - if ( !trapid.valid() || trapid.length() < 2 ) { - cmu_snmp::free_pdu( raw_pdu); - return SNMP_CLASS_INVALID_NOTIFYID; - } - - - raw_pdu->specific_type=0; - - // TODO: object should emit numeric instead of this kind of mess... - if ( trapid == coldStart) - raw_pdu->trap_type = V1_COLD_START; // cold start - else if ( trapid == warmStart) - raw_pdu->trap_type = V1_WARM_START; // warm start - else if( trapid == linkDown) - raw_pdu->trap_type = V1_LINK_DOWN; // link down - else if ( trapid == linkUp) - raw_pdu->trap_type = V1_LINK_UP; // link up - else if ( trapid == authenticationFailure ) - raw_pdu->trap_type = V1_AUTH_FAILURE; // authentication failure - else if ( trapid == egpNeighborLoss) - raw_pdu->trap_type = V1_EGP_NEIGHBOR_LOSS; // egp neighbor loss - else { - raw_pdu->trap_type = V1_ENT_SPECIFIC; // enterprise specific - // last oid subid is the specific value - // if 2nd to last subid is "0", remove it - // enterprise is always the notify oid prefix - raw_pdu->specific_type = (int) trapid[(int) (trapid.length() - 1)]; - trapid.trim(1); - if ( trapid[(int)(trapid.length() - 1)] == 0 ) - trapid.trim(1); - enterprise = trapid; - } - - if ( raw_pdu->trap_type != V1_ENT_SPECIFIC) - pdu.get_notify_enterprise( enterprise); - if ( enterprise.length() > 0) { - // note!! To the contrary, enterprise OID val is - // copied here and raw_pdu->enterprise is freed in free_pdu - // as it should be (HDN) - // these are hooks into an SNMP++ oid - // and therefor the raw_pdu enterprise - // should not free them. null them out!! - SmiLPOID rawOid; - rawOid = enterprise.oidval(); - // HDN - enterprise is a local object, cannot simply assign pointer - //raw_pdu->enterprise = rawOid->ptr; - raw_pdu->enterprise_length = (int) rawOid->len; - ACE_NEW_RETURN(raw_pdu->enterprise, - oid[raw_pdu->enterprise_length],-1); - ACE_OS::memcpy((char *)raw_pdu->enterprise,(char *)rawOid->ptr, - raw_pdu->enterprise_length * sizeof(oid)); - } - - TimeTicks timestamp; - pdu.get_notify_timestamp( timestamp); - raw_pdu->time = ( unsigned long) timestamp; - - // HDN - set agent addr using the local hostname if possible - char localHostName[MAXHOSTNAMELEN]; - Snmp::get_host_name(localHostName, MAXHOSTNAMELEN); - if (ACE_OS::strlen(localHostName) > 0) { - GenAddress addr(localHostName); - OctetStr octet; - addr.to_octet(octet); - ACE_OS::memcpy(&(raw_pdu->agent_addr.sin_addr), - octet.data(), - octet.length()); - } - - return 0; -} - -wpdu::wpdu(const iovec& iov): valid_flag_(0),comm_len(MAX_COMM_STR_LEN) -{ - community_name[0] = 0; - reset_iov(iovec_); - version_ = version1; // TODO: figure where this should come from - ACE_NEW(iovec_.iov_base, char[iov.iov_len]); - if (!iovec_.iov_base) { - valid_flag_ = SNMP_CLASS_RESOURCE_UNAVAIL; - return; - } - - copy_iovec(iovec_, iov); - valid_flag_ = SNMP_CLASS_SUCCESS; -} - -wpdu::wpdu(): valid_flag_(0), comm_len(MAX_COMM_STR_LEN) -{ - community_name[0] = 0; - reset_iov(iovec_); - version_ = version1; // TODO: figure where this should come from -} - -int wpdu::valid() const -{ - return (valid_flag_ == SNMP_CLASS_SUCCESS); -} - -int wpdu::load_vbs(snmp_pdu *raw_pdu, const Pdu& pdu) -{ - int status = 0; - - // load up the payload - // for all Vbs in list, add them to the pdu - int vb_count; - Vb tempvb; - Oid tempoid; - SmiLPOID smioid; - SmiVALUE smival; - - vb_count = pdu.get_vb_count(); - - for (int z = 0; z < vb_count; z++) { - pdu.get_vb( tempvb, z); - tempvb.get_oid( tempoid); - smioid = tempoid.oidval(); - // what are we trying to convert here (vb oid part or value part) - status = convert_vb_to_smival( tempvb, &smival ); - if ( status != SNMP_CLASS_SUCCESS) - return status; - - // add the var to the raw pdu - cmu_snmp::add_var(raw_pdu, smioid->ptr, (int) smioid->len, &smival); - free_smival_descriptor( &smival); - } - - return status; -} - -// supports overlapped copies -// static -void wpdu::copy_iovec(iovec& dest, const iovec& src) -{ - if (&dest == &src) - return; - - ACE_OS:: memmove( dest.iov_base, src.iov_base, src.iov_len); - dest.iov_len = src.iov_len; -} - -int wpdu::convert_vb_to_smival( Vb &tempvb, SmiVALUE *smival ) -{ - smival->syntax = tempvb.get_syntax(); - - switch ( smival->syntax ) { - - case sNMP_SYNTAX_NULL: - break; - - // case sNMP_SYNTAX_INT32: - case sNMP_SYNTAX_INT: - { - SnmpInt32 tmp; - tempvb.get_value(tmp); - smival->value.sNumber = tmp; - } - break; - - // case sNMP_SYNTAX_UINT32: - case sNMP_SYNTAX_GAUGE32: - case sNMP_SYNTAX_CNTR32: - case sNMP_SYNTAX_TIMETICKS: - { - SnmpUInt32 tmp; - tempvb.get_value(tmp); - smival->value.uNumber = tmp; - } - break; - - // case Counter64 - case sNMP_SYNTAX_CNTR64: - { - Counter64 c64; - tempvb.get_value(c64); - smival->value.hNumber.hipart = c64.high(); - smival->value.hNumber.lopart = c64.low(); - } - break; - - // OID syntax - case sNMP_SYNTAX_OID: - { - Oid tmpoid; - tmpoid.oidval(); - tempvb.get_value(tmpoid); - SmiLPOID smi = tmpoid.oidval(); - smival->value.oid.len = tmpoid.length(); - ACE_NEW_RETURN(smival->value.oid.ptr, - SmiUINT32 [smival->value.oid.len], 1); - ACE_OS::memcpy(smival->value.oid.ptr, smi->ptr, - smival->value.oid.len *sizeof(SmiUINT32)); - } - break; - - case sNMP_SYNTAX_BITS: - case sNMP_SYNTAX_OCTETS: - case sNMP_SYNTAX_IPADDR: - { - OctetStr os; - tempvb.get_value(os); - smival->value.string.ptr = 0; - smival->value.string.len = os.length(); - if ( smival->value.string.len > 0 ) { - ACE_NEW_RETURN(smival->value.string.ptr, - SmiBYTE [smival->value.string.len], 1); - if ( smival->value.string.ptr ) { - for (int i=0; i<(int) smival->value.string.len ; i++) - smival->value.string.ptr[i] = os[i]; - } - else { - smival->syntax = sNMP_SYNTAX_NULL; // invalidate the smival - return SNMP_CLASS_RESOURCE_UNAVAIL; - } - } - } - break; - - default: - ACE_DEBUG((LM_DEBUG, "wpdu::convert_vb_to_smival did not convert vb\n")); - // ACE_ASSERT(0); - } // switch - - return 0; -} - -// free a SMI value -void wpdu::free_smival_descriptor( SmiVALUE *smival ) -{ - switch ( smival->syntax ) { - case sNMP_SYNTAX_OCTETS: - case sNMP_SYNTAX_OPAQUE: - case sNMP_SYNTAX_IPADDR: - case sNMP_SYNTAX_BITS: // obsoleted in SNMPv2 Draft Std - delete [] smival->value.string.ptr; - break; - - case sNMP_SYNTAX_OID: - delete [] smival->value.oid.ptr; - break; - } - smival->syntax = sNMP_SYNTAX_NULL; -} - - -wpdu::~wpdu() -{ - delete [] iovec_.iov_base; -} - -const iovec& wpdu::get_buffer() const -{ - return iovec_; -} - -// return a pdu from a buffer -int wpdu::get_pdu(Pdu& pdu, snmp_version& version) -{ - if (iovec_.iov_len == 0) - return -1; // NO DATA - - snmp_pdu *raw_pdu; - raw_pdu = cmu_snmp::pdu_create(0); - if (!raw_pdu) { - return SNMP_CLASS_RESOURCE_UNAVAIL; - } - - // max value a client can send us - TODO: replace this with an - // api to get actual string length - int status = cmu_snmp::parse( raw_pdu, (unsigned char *)iovec_.iov_base, - community_name, comm_len, - version, iovec_.iov_len); - if (status != 0) - return SNMP_CLASS_INTERNAL_ERROR; - - community_name[comm_len] = 0; // set null based on returned length - set_request_id( &pdu, raw_pdu->reqid); - set_error_status( &pdu, (int) raw_pdu->errstat); - set_error_index( &pdu, (int) raw_pdu->errindex); - pdu.set_type( raw_pdu->command); - - if (restore_vbs(pdu, raw_pdu)) { - cmu_snmp::free_pdu(raw_pdu); - return SNMP_CLASS_INTERNAL_ERROR; - } - - cmu_snmp::free_pdu(raw_pdu); - return 0; -} - -int wpdu::restore_vbs(Pdu& pdu, const snmp_pdu *raw_pdu) const -{ - Vb tempvb; - Oid tempoid; - struct variable_list *vp; - - for(vp = raw_pdu->variables; vp; vp = vp->next_variable) { - - // extract the oid portion - tempoid.set_data( (unsigned long *)vp->name, - ( unsigned int) vp->name_length); - tempvb.set_oid( tempoid); - - // extract the value portion - switch(vp->type) { - - // octet string - case sNMP_SYNTAX_OCTETS: - case sNMP_SYNTAX_OPAQUE: - { - OctetStr octets( (char *) vp->val.string, - (long) vp->val_len); - tempvb.set_value( octets); - } - break; - - // object id - case sNMP_SYNTAX_OID: - { - Oid oid( (unsigned long*) vp->val.objid, - (int) vp->val_len); - tempvb.set_value( oid); - } - break; - - // timeticks - case sNMP_SYNTAX_TIMETICKS: - { - TimeTicks timeticks( (unsigned long) *(vp->val.integer)); - tempvb.set_value( timeticks); - } - break; - - // 32 bit counter - case sNMP_SYNTAX_CNTR32: - { - Counter32 counter32( (unsigned long) *(vp->val.integer)); - tempvb.set_value( counter32); - } - break; - - // ip address - case sNMP_SYNTAX_IPADDR: - { - char buffer[20]; - sprintf( buffer,"%d.%d.%d.%d", - vp->val.string[0], - vp->val.string[1], - vp->val.string[2], - vp->val.string[3]); - IpAddress ipaddress( buffer); - tempvb.set_value( ipaddress); - } - break; - - // 32 bit integer - case sNMP_SYNTAX_INT: - { - SnmpInt32 int32( (long) *(vp->val.integer)); - tempvb.set_value( int32); - } - break; - - // 32 bit unsigned integer - case sNMP_SYNTAX_UINT32: - { - SnmpUInt32 uint32( (unsigned long) *(vp->val.integer)); - tempvb.set_value( uint32); - } - break; - - // v2 counter 64's - case sNMP_SYNTAX_CNTR64: - break; - - case sNMP_SYNTAX_NULL: - tempvb.set_null(); - break; - - // v2 vb exceptions - case sNMP_SYNTAX_NOSUCHOBJECT: - case sNMP_SYNTAX_NOSUCHINSTANCE: - case sNMP_SYNTAX_ENDOFMIBVIEW: - set_exception_status( &tempvb, vp->type); - break; - - default: - tempvb.set_null(); - - } // end switch - - // append the vb to the pdu - pdu += tempvb; - } - - return 0; -} - -const unsigned char *wpdu::get_community() const -{ - return community_name; -} diff --git a/ASNMP/asnmp/wpdu.h b/ASNMP/asnmp/wpdu.h deleted file mode 100644 index a4d4bb1d0c1..00000000000 --- a/ASNMP/asnmp/wpdu.h +++ /dev/null @@ -1,85 +0,0 @@ -/* -*-C++-*- */ -// $Id$ -#ifndef WPDU_H_ -#define WPDU_H_ -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// wpdu.h -// -// = DESCRIPTION -// Adapter class. Converts a Pdu and GenTarget into a format -// that can be stuffed out a I/O port -// -// = AUTHOR -// Michael R. MacFaden re-worked api, use ACE API -// Peter E Mellquist wrote original class snmpmsg -// -// ============================================================================ - -#include "ace/OS.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "asnmp/asn1.h" -#include "asnmp/pdu.h" -#include "asnmp/target.h" - -// this is an adapter class, it peforms the following transformations -// PDU / Target -> iovec buffer -// iovec buffer -> PDU / Target -struct snmp_pdu; -class ACE_Export wpdu - // = TITLE - // Implement an Adapter pattern between CMU SNMP and HP SNMP++ - // -{ -public: - - wpdu(const Pdu& pdu, const UdpTarget& target); - // construct CMU data from HP SNMP++ objects - wpdu(const iovec& buffer); - // construct HP SNMP++ objects from raw buffer via CMU SNMP datatypes - wpdu(); // same as using iovec? - - ~wpdu(); - - int valid() const; - // constructor completed ok? rc = 1 else 0 - - const iovec& get_buffer() const; - // return raw data stream via CMU code - - int get_pdu(Pdu& pdu, snmp_version& version); - // return HP SNMP++ pdu - - const unsigned char *get_community() const; - // return community strptr - -private: - int convert_vb_to_smival( Vb &tempvb, SmiVALUE *smival ); - int load_vbs(snmp_pdu *raw_pdu, const Pdu& pdu); - int restore_vbs(Pdu& pdu, const snmp_pdu *raw_pdu) const; - void free_smival_descriptor( SmiVALUE *smival ); - static void copy_iovec(iovec& dest, const iovec& src); - int set_trap_info(snmp_pdu *raw_pdu, const Pdu& pdu) const; - - iovec iovec_; - // raw format - - int valid_flag_; - // object construction state - - snmp_version version_; - // snmp version - - unsigned char community_name[MAX_COMM_STR_LEN]; - unsigned long comm_len; // = MAX_COMM_STR_LEN; -}; - -#endif // WPDU_H_ diff --git a/ASNMP/examples/Makefile b/ASNMP/examples/Makefile deleted file mode 100644 index 64ca08c687c..00000000000 --- a/ASNMP/examples/Makefile +++ /dev/null @@ -1,28 +0,0 @@ -#---------------------------------------------------------------------------- -# -# $Id$ -# -# @(#)Makefile 1.1 10/18/96 -# -# Makefile for the ACE+SNMP examples directory -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -DIRS = get \ - next \ - set \ - trap \ - walk - -#---------------------------------------------------------------------------- -# macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nolocal.GNU diff --git a/ASNMP/examples/get/Makefile b/ASNMP/examples/get/Makefile deleted file mode 100644 index 6849f0d6fd8..00000000000 --- a/ASNMP/examples/get/Makefile +++ /dev/null @@ -1,40 +0,0 @@ -#---------------------------------------------------------------------------- -# @(#)Makefile 1.1 10/18/96 -# -# Makefile for get application -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - - -# ACE+SNMP -BIN = get get_async -CCFLAGS = -I$(ACE_ROOT)/ASNMP/ -LSRC = $(addsuffix .cpp,$(BIN)) -LDLIBS := -L$(ACE_ROOT)/ASNMP/asnmp -lasnmp $(LDLIBS:%=%$(VAR)) - -BUILD = $(VBIN) - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU - -#---------------------------------------------------------------------------- -# Local targets -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Dependencies -#---------------------------------------------------------------------------- - -# DO NOT DELETE THIS LINE -- g++dep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. diff --git a/ASNMP/examples/get/get.cpp b/ASNMP/examples/get/get.cpp deleted file mode 100644 index 5c05bd5eac5..00000000000 --- a/ASNMP/examples/get/get.cpp +++ /dev/null @@ -1,195 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// get.cpp -// -// = DESCRIPTION -// Sample application demonstrating synchronous Snmp::get API -// to access an SNMP Version 1 agent. -// -// = AUTHOR -// Peter E. Mellquist original code -// Michael R MacFaden mrm@cisco.com rework API/ACE integration -// -// ============================================================================ - -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -#include "asnmp/snmp.h" -#include "ace/Get_Opt.h" - -ACE_RCSID(get, get, "$Id$") - -// -// SNMPv1 Get Application -// -class getapp { - public: - getapp(int argc, char **argv); // process command line args - int valid() const; // verify transaction can proceed - int run(); // issue transaction - static void usage(); // operator help message - - private: - getapp(const getapp&); - - UdpAddress address_; - Pdu pdu_; // construct a request Pdu - Oid oid_; - OctetStr community_; - Snmp snmp_; - UdpTarget target_; - int valid_; -}; - - -// main entry point -int main( int argc, char *argv[]) -{ - getapp get(argc, argv); - if (get.valid()) - return get.run(); - else - getapp::usage(); - return 1; -} - -int getapp::valid() const -{ - return valid_; -} -getapp::getapp(int argc, char *argv[]): valid_(0) -{ - Oid req, def_oid("1.3.6.1.2.1.1.1.0"); // default is sysDescr - if ( argc < 2) - return; - - address_ = argv[argc - 1]; - if ( !address_.valid()) { - cout << "ERROR: Invalid IPv4 address or DNS hostname: " \ - << argv[argc] << "\n"; - return; - } - - ACE_Get_Opt get_opt (argc, argv, "o:c:r:t:p:"); - for (int c; (c = get_opt ()) != -1; ) - switch (c) - { - case 'o': - req = get_opt.optarg; - if (req.valid() == 0) - cout << "ERROR: oid value: " <run_event_loop(); - } - return 0; -} - -void getapp::result(Snmp *, int rc) -{ - Vb vb; - if (rc < 0) - { - char *ptr = snmp_.error_string(); - cout << "ASNMP:ERROR: get command failed reason: " << ptr << endl; - } else { - // check to see if there are any errors - if (pdu_.get_error_status()) { - cout << "ERROR: agent replied as follows\n"; - cout << pdu_.agent_error_reason() << endl; - } - else { - VbIter iter(pdu_); - while (iter.next(vb)) { - cout << "\tOid = " << vb.to_string_oid() << "\n"; - cout << "\tValue = " << vb.to_string_value() << "\n"; - } - } - } - cout << "\nASNMP:INFO: command completed normally.\n"<< endl; - ACE_Reactor::instance()->end_event_loop(); -} diff --git a/ASNMP/examples/next/Makefile b/ASNMP/examples/next/Makefile deleted file mode 100644 index a015faac242..00000000000 --- a/ASNMP/examples/next/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -#---------------------------------------------------------------------------- -# @(#)Makefile 1.1 10/18/96 -# -# Makefile for next sample application -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - - -# ACE+SNMP -BIN = next -CCFLAGS = -I$(ACE_ROOT)/ASNMP/ -LSRC = $(addsuffix .cpp,$(BIN)) - -LDLIBS := -L$(ACE_ROOT)/ASNMP/asnmp -lasnmp $(LDLIBS:%=%$(VAR)) - -BUILD = $(VBIN) - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU - -#---------------------------------------------------------------------------- -# Local targets -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Dependencies -#---------------------------------------------------------------------------- - -# DO NOT DELETE THIS LINE -- g++dep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. diff --git a/ASNMP/examples/next/next.cpp b/ASNMP/examples/next/next.cpp deleted file mode 100644 index be550a567a9..00000000000 --- a/ASNMP/examples/next/next.cpp +++ /dev/null @@ -1,193 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// next.cpp -// -// = DESCRIPTION -// Sample application demonstrating synchronous Snmp::get_next API -// to access an SNMP Version 1 agent. -// -// = AUTHOR -// Peter E. Mellquist original code -// Michael R MacFaden mrm@cisco.com rework API/ACE integration -// -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -#include "asnmp/snmp.h" -#include "ace/Get_Opt.h" - -ACE_RCSID(next, next, "$Id$") - -// -// SNMPv1 Get Next Application -// -class nextapp { - public: - nextapp(int argc, char **argv); // process command line args - int valid() const; // verify transaction can proceed - int run(); // issue transaction - static void usage(); // operator help message - - private: - nextapp(const nextapp&); - - UdpAddress address_; - Pdu pdu_; // construct a request Pdu - Oid oid_; - OctetStr community_; - Snmp snmp_; - UdpTarget target_; - int valid_; -}; - - -// main entry point -int main( int argc, char *argv[]) -{ - nextapp get(argc, argv); - if (get.valid()) - return get.run(); - else - nextapp::usage(); - return 1; -} - -nextapp::valid() const -{ - return valid_; -} -nextapp::nextapp(int argc, char *argv[]): valid_(0) -{ - Oid req, def_oid("1.3.6.1.2.1.1.1.0"); // default is sysDescr - if ( argc < 2) - return; - - address_ = argv[argc - 1]; - if ( !address_.valid()) { - cout << "ERROR: Invalid IPv4 address or DNS hostname: " \ - << argv[argc] << "\n"; - return; - } - - ACE_Get_Opt get_opt (argc, argv, "o:c:r:t:"); - for (int c; (c = get_opt ()) != -1; ) - switch (c) - { - case 'o': - req = get_opt.optarg; - if (req.valid() == 0) - cout << "ERROR: oid value: " < - FIU: file descriptor 1: - FIU: file descriptor 2: - FIU: file descriptor 4: "/etc/.name_service_door", O_RDONLY - File info: ?r--r--r-- 1 root root 0 May 20 1997 - This file descriptor was allocated from: - _libc_open [libc.so.1] - _nsc_trydoorcall [libc.so.1] - _door_gethostbyname_r [gethostby_door.c] - _get_hostserv_inetnetdir_byname [netdir_inet.c] - gethostbyname_r [gethostbyname_r.c] - static ACE_OS::gethostbyname_r(const char*, hostent*, char*, int*) [OS.i:4634] - FIU: file descriptor 5: , O_RDWR - This file descriptor was allocated from: - pipe [rtlib.o] - static ACE_OS::pipe(int*) [OS.i:603] - ACE_Pipe::open(void) [Pipe.cpp:68] - ACE_Select_Reactor_Notify::open(ACE_Select_Reactor*) [Select_Reactor.cpp:648] - ACE_Select_Reactor::open(unsigned int, int, ACE_Sig_Handler*, ACE_Timer_Queue_T, ACE_Recursive_Thread_Mutex>*) [Select_Reactor.cpp:978] - ACE_Select_Reactor::ACE_Select_Reactor(ACE_Sig_Handler*, ACE_Timer_Queue_T, ACE_Recursive_Thread_Mutex>*) [Select_Reactor.cpp:1028] - FIU: file descriptor 6: , O_RDWR - This file descriptor was allocated from: - pipe [rtlib.o] - static ACE_OS::pipe(int*) [OS.i:603] - ACE_Pipe::open(void) [Pipe.cpp:68] - ACE_Select_Reactor_Notify::open(ACE_Select_Reactor*) [Select_Reactor.cpp:648] - ACE_Select_Reactor::open(unsigned int, int, ACE_Sig_Handler*, ACE_Timer_Queue_T, ACE_Recursive_Thread_Mutex>*) [Select_Reactor.cpp:978] - ACE_Select_Reactor::ACE_Select_Reactor(ACE_Sig_Handler*, ACE_Timer_Queue_T, ACE_Recursive_Thread_Mutex>*) [Select_Reactor.cpp:1028] - FIU: file descriptor 26: - FIU: file descriptor 27: - Memory leaked: 0 bytes (0%); potentially leaked: 0 bytes (0%) - Purify Heap Analysis (combining suppressed and unsuppressed blocks) - Blocks Bytes - Leaked 2 12 - Potentially Leaked 0 0 - In-Use 44 2237 - ---------------------------------------- - Total Allocated 46 2249 - Thread Summary : 4 threads in existence - Thread 0 [main thread] - Stack: (0xefe00000 0xf0000000), size = 0x200000 - Thread 1 - Stack: (0xee80fc70 0xee80fde4), size = 0x174 - Thread 2 - Stack: (0xef231a70 0xef231b14), size = 0xa4 - Thread 3 - Stack: (0xee70dba8 0xee70dde4), size = 0x23c - Program exited with status code 0. - * Basic memory usage (including Purify overhead): - 317744 code - 78528 data/bss - 66056 heap (peak use) - 2088 stack - * Shared library memory usage (including Purify overhead): - 356936 libasnmp.so_pure_p3_c0_410_551 (shared code) - 11488 libasnmp.so_pure_p3_c0_410_551 (private data) - 2632304 libACE.so_pure_p3_c0_410_551 (shared code) - 95524 libACE.so_pure_p3_c0_410_551 (private data) - 75058 libsocket.so.1_pure_p3_c0_410_551 (shared code) - 4092 libsocket.so.1_pure_p3_c0_410_551 (private data) - 1216 libdl.so.1_pure_p3_c0_410_551 (shared code) - 0 libdl.so.1_pure_p3_c0_410_551 (private data) - 611922 libnsl.so.1_pure_p3_c0_410_551 (shared code) - 115852 libnsl.so.1_pure_p3_c0_410_551 (private data) - 7628 libposix4.so.1_pure_p3_c0_410_551 (shared code) - 432 libposix4.so.1_pure_p3_c0_410_551 (private data) - 135301 libm.so.1_pure_p3_c0_410_551 (shared code) - 1332 libm.so.1_pure_p3_c0_410_551 (private data) - 278709 libC.so.5_pure_p3_c0_410_551 (shared code) - 59252 libC.so.5_pure_p3_c0_410_551 (private data) - 37893 libw.so.1_pure_p3_c0_410_551 (shared code) - 1628 libw.so.1_pure_p3_c0_410_551 (private data) - 2196 solaris2_threads.so_pure_p3_c0_410_551 (shared code) - 8556 solaris2_threads.so_pure_p3_c0_410_551 (private data) - 124186 libthread.so.1_pure_p3_c0_410_551 (shared code) - 100012 libthread.so.1_pure_p3_c0_410_551 (private data) - 799773 libc.so.1_pure_p3_c0_410_551 (shared code) - 34744 libc.so.1_pure_p3_c0_410_551 (private data) - 9576 libinternal_stubs.so.1 (shared code) - 324 libinternal_stubs.so.1 (private data) - 15117 libintl.so.1_pure_p3_c0_410_551 (shared code) - 1304 libintl.so.1_pure_p3_c0_410_551 (private data) - 16092 libmp.so.1_pure_p3_c0_410_551 (shared code) - 828 libmp.so.1_pure_p3_c0_410_551 (private data) - 14008 libc_psr.so.1_pure_p3_c0_410_551 (shared code) - 72 libc_psr.so.1_pure_p3_c0_410_551 (private data) - * Memory mapped usage: - 1048576 mmap'd at 0xee002000 - 1048576 mmap'd at 0xee104000 - 1048576 mmap'd at 0xee206000 - 1048576 mmap'd at 0xee308000 - 1048576 mmap'd at 0xee40a000 - 1048576 mmap'd at 0xee50c000 - 1048576 mmap'd at 0xee60e000 - 1048576 mmap'd at 0xee710000 - 8192 mmap'd PROT_NONE at 0xee000000 - 8192 mmap'd PROT_NONE at 0xee70e000 - 8192 mmap'd PROT_NONE at 0xee60c000 - 8192 mmap'd PROT_NONE at 0xee50a000 - 8192 mmap'd PROT_NONE at 0xee408000 - 8192 mmap'd PROT_NONE at 0xee306000 - 8192 mmap'd PROT_NONE at 0xee204000 - 8192 mmap'd PROT_NONE at 0xee102000 - diff --git a/ASNMP/examples/trap/trap.cpp b/ASNMP/examples/trap/trap.cpp deleted file mode 100644 index 13add3d4ea6..00000000000 --- a/ASNMP/examples/trap/trap.cpp +++ /dev/null @@ -1,182 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// trap.cpp -// -// = DESCRIPTION -// Sample application demonstrating synchronous Snmp::trap API -// to send to an SNMP Version 1 trap listener app. -// -// = AUTHOR -// Peter E. Mellquist original code -// Michael R MacFaden mrm@cisco.com rework OO, API/ACE integration -// -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -#include "asnmp/snmp.h" -#define DEFINE_TRAP_CONSTANTS_ -#include "asnmp/enttraps.h" // enterprise standard traps -#include "ace/Get_Opt.h" - -ACE_RCSID(trap, trap, "$Id$") - -// -// SNMPv1 Trap Application -// -class trapapp { - public: - trapapp(int argc, char **argv); // process command line args - int valid() const; // verify transaction can proceed - int run(); // issue transaction - static void usage(); // operator help message - - private: - trapapp(const trapapp&); - - UdpAddress address_; - Pdu pdu_; // construct a request Pdu - Oid oid_; - OctetStr community_; - Snmp snmp_; - UdpTarget target_; - int valid_; -}; - - -// main entry point -int main( int argc, char *argv[]) -{ - trapapp get(argc, argv); - if (get.valid()) - return get.run(); - else - trapapp::usage(); - return 1; -} - -trapapp::valid() const -{ - return valid_; -} -trapapp::trapapp(int argc, char *argv[]): valid_(0) -{ - Oid def_ent_oid("1.3.6.1.2.1.1.1.2.0.1"); // def enterprise oid - Oid ent, trap; // user specified values - - if ( argc < 2) // hostname mandatory - return; - - address_ = argv[argc - 1]; - if ( !address_.valid()) { - cout << "ERROR: Invalid IPv4 address or DNS hostname: " \ - << argv[argc] << "\n"; - return; - } - - ACE_Get_Opt get_opt (argc, argv, "c:e:t:"); - for (int c; (c = get_opt ()) != -1; ) - switch (c) - { - case 'c': // community string - community_ = get_opt.optarg; - target_.set_read_community(community_); - break; - - case 'e': // trap oid to send - ent = get_opt.optarg; - break; - - case 't': // trap oid - trap = get_opt.optarg; - break;; - - default: - break; - } - - if (ent.valid()) - pdu_.set_notify_enterprise( ent); // set up the enterprise of the trap - else - pdu_.set_notify_enterprise( def_ent_oid); - - if (trap.valid()) - pdu_.set_notify_id( trap); // set the id of the trap - else - pdu_.set_notify_id( coldStart); // set the id of the trap - - Oid detail_oid("1.3.6.1.4.1.11.2.16.2"); - OctetStr detail_value("SNMP++ Trap Send Test"); - Vb vb(detail_oid, detail_value); - pdu_ += vb; - - pdu_.get_notify_id(oid_); // store for later use - valid_ = 1; -} - -void trapapp::usage() -{ - cout << "Usage:\n"; - cout << "trap [options] dotted-quad | DNSName[:port]\n"; - cout << " -c Community_name, default is 'public' \n"; - cout << " -r N retries default is N = 1 retry\n"; - cout << " -t N timeout in seconds default is 1 second" << endl; - cout << " -e oid enterprise oid default is 1.3.6.1.2.1.1.1.2.0.1\n"; - cout << " -O oid trap id default is coldStart 1.3.6.1.6.3.1.1.5.1\n"; -} - -int trapapp::run() -{ - if ( snmp_.valid() != SNMP_CLASS_SUCCESS) { - cout << "\nASNMP:ERROR:Create session failed: "<< - snmp_.error_string()<< "\n"; - return 1; - } - - if (address_.get_port() == 0) - address_.set_port(DEF_TRAP_PORT); - target_.set_address( address_); // make a target using the address - - //-------[ issue the request, blocked mode ]----------------------------- - cout << "\nASNMP:INFO:SNMP Version " << (target_.get_version()+ 1) << \ - " TRAP GENERATOR SAMPLE PROGRAM \nOID: " << oid_.to_string() << "\n"; - target_.get_address(address_); // target updates port used - int rc; - char *name = address_.resolve_hostname(rc); - if (rc) - name = "<< did not resolve via gethostbyname() >>"; - - cout << "Device: " << address_ << " " << name << "\n"; - cout << "[ Community=" << community_.to_string() << " ]"<< endl; - - if (snmp_.trap( pdu_, target_) == SNMP_CLASS_SUCCESS) { - cout << "Trap was written to network...\n"; - } - else { - char *ptr = snmp_.error_string(); - cout << "ASNMP:ERROR: trap command failed reason: " << ptr << endl; - } - - cout << "ASNMP:INFO:command completed normally.\n"<< endl; - return 0; -} - diff --git a/ASNMP/examples/walk/Makefile b/ASNMP/examples/walk/Makefile deleted file mode 100644 index 833fa1311f3..00000000000 --- a/ASNMP/examples/walk/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -#---------------------------------------------------------------------------- -# @(#)Makefile 1.1 10/18/96 -# -# Makefile for walk sample application -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - - -# ACE+SNMP -BIN = walk -CCFLAGS = -I$(ACE_ROOT)/ASNMP/ -LSRC = $(addsuffix .cpp,$(BIN)) - -LDLIBS := -L$(ACE_ROOT)/ASNMP/asnmp -lasnmp $(LDLIBS:%=%$(VAR)) - -BUILD = $(VBIN) - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU - -#---------------------------------------------------------------------------- -# Local targets -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Dependencies -#---------------------------------------------------------------------------- - -# DO NOT DELETE THIS LINE -- g++dep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. diff --git a/ASNMP/examples/walk/walk.cpp b/ASNMP/examples/walk/walk.cpp deleted file mode 100644 index 0fa63f7f6ab..00000000000 --- a/ASNMP/examples/walk/walk.cpp +++ /dev/null @@ -1,260 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// walk.cpp -// -// = DESCRIPTION -// Sample application demonstrating synchronous Snmp::get, get_next API -// to access an SNMP Version 1 agent. -// -// = AUTHOR -// Peter E. Mellquist original code -// Michael R MacFaden mrm@cisco.com rework API/ACE integration -// -// ============================================================================ -/*=================================================================== - Copyright (c) 1996 - Hewlett-Packard Company - - ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. - Permission to use, copy, modify, distribute and/or sell this software - and/or its documentation is hereby granted without fee. User agrees - to display the above copyright notice and this license notice in all - copies of the software and any documentation of the software. User - agrees to assume all liability for the use of the software; Hewlett-Packard - makes no representations about the suitability of this software for any - purpose. It is provided "AS-IS without warranty of any kind,either express - or implied. User hereby grants a royalty-free license to any and all - derivatives based upon this software code base. -=====================================================================*/ - -#include "asnmp/snmp.h" -#include "ace/Get_Opt.h" - -ACE_RCSID(walk, walk, "$Id$") - -// -// SNMPv1 Walk Mib Application -// -class walkapp { - public: - walkapp(int argc, char **argv); // process command line args - int valid() const; // verify transaction can proceed - int run(); // issue transaction - static void usage(); // operator help message - - private: - walkapp(const walkapp&); - - UdpAddress address_; - Pdu pdu_; // construct a request Pdu - Oid oid_; - OctetStr community_; - Snmp snmp_; - UdpTarget target_; - int valid_; -}; - - -// main entry point -int main( int argc, char *argv[]) -{ - walkapp get(argc, argv); - if (get.valid()) - return get.run(); - else - walkapp::usage(); - return 1; -} - -walkapp::valid() const -{ - return valid_; -} - -walkapp::walkapp(int argc, char *argv[]): valid_(0) -{ - Oid req, def_oid("1.3.6.1.2.1.1.1.0"); // default begin walk with MIBII - if ( argc < 2) - return; - - address_ = argv[argc - 1]; - if ( !address_.valid()) { - cout << "ERROR: Invalid IPv4 address or DNS hostname: " \ - << argv[argc] << "\n"; - return; - } - - ACE_Get_Opt get_opt (argc, argv, "o:c:r:t:"); - for (int c; (c = get_opt ()) != -1; ) - switch (c) - { - case 'o': - req = get_opt.optarg; - if (req.valid() == 0) - cout << "ERROR: oid value: " <get( pdu_, *target_); - first_++; - } - else { - rc = snmp_->get_next( pdu_, *target_); - } - - if (rc != SNMP_CLASS_SUCCESS) { - reason = snmp_->error_string(); - return 0; - } - - // 2. check for problems - if (pdu_.get_error_status()) { - reason = pdu_.agent_error_reason(); - return 0; - } - - // 3. return vb to caller - pdu_.get_vb(vb, 0); - Oid nextoid; - vb.get_oid(nextoid); // and setup next oid to get - Vb nextvb(nextoid); - pdu_.delete_all_vbs(); - pdu_ += nextvb; // can't do set_vb as there are no entries to replace - - return 1; // ok -} - -int walkapp::run() -{ - - //----------[ create a ASNMP session ]----------------------------------- - if ( snmp_.valid() != SNMP_CLASS_SUCCESS) { - cout << "\nASNMP:ERROR:Create session failed: "<< - snmp_.error_string()<< "\n"; - return 1; - } - - //--------[ build up ASNMP object needed ]------------------------------- - if (address_.get_port() == 0) - address_.set_port(DEF_AGENT_PORT); - target_.set_address( address_); // make a target using the address - - //-------[ issue the request, blocked mode ]----------------------------- - cout << "\nASNMP:INFO:SNMP Version " << (target_.get_version()+ 1) << \ - " WALK SAMPLE PROGRAM \nOID: " << oid_.to_string() << "\n"; - target_.get_address(address_); // target updates port used - int rc; - char *name = address_.resolve_hostname(rc); - if (rc) - name = "<< did not resolve via gethostbyname() >>"; - - cout << "Device: " << address_ << " " << name << "\n"; - cout << "[ Retries=" << target_.get_retry() << " \ - Timeout=" << target_.get_timeout() <<" ms " << "Community=" << \ - community_.to_string() << " ]"<< endl; - - MibIter iter(&snmp_, pdu_, &target_); - char *err_str = 0; - Vb vb; - unsigned ctr = 0; - while (iter.next(vb, err_str)) { - cout << "\tOid = " << vb.to_string_oid() << "\n"; - cout << "\tValue = " << vb.to_string_value() << "\n"; - ctr++; - } - - if (!err_str) { - cout << "ERROR: walk: " << err_str << endl; - return 0; - } - - cout << "ASNMP:INFO:command completed normally. ACE Rocks...\n"<< endl; - return 0; -} - diff --git a/ASNMP/mibs/RFC1213-MIB.my b/ASNMP/mibs/RFC1213-MIB.my deleted file mode 100644 index f89f8bf125e..00000000000 --- a/ASNMP/mibs/RFC1213-MIB.my +++ /dev/null @@ -1,2618 +0,0 @@ --- ***************************************************************** --- RFC1213-MIB.my: MIB-II MIB file --- --- April 1994, Jeffrey T. Johnson --- --- Copyright (c) 1994-1996 by cisco Systems, Inc. --- All rights reserved. --- --- ***************************************************************** --- --- This mib was extracted from RFC 1213 --- The following changes have been applied: --- The enumerations unknown(4) and dormant(5) have been added to --- ifOperStatus to reflect a change to the ifTable introduced in --- RFC 1573 --- --- The SYNTAX of ifType has been changed to IANAifType, to reflect the --- change to the ifTable introduced in RFC1573. - - RFC1213-MIB DEFINITIONS ::= BEGIN - - IMPORTS - mgmt, NetworkAddress, IpAddress, Counter, Gauge, - TimeTicks - FROM RFC1155-SMI - OBJECT-TYPE - FROM RFC-1212 - TEXTUAL-CONVENTION - FROM SNMPv2-TC - IANAifType - FROM IANAifType-MIB; - - -- This MIB module uses the extended OBJECT-TYPE macro as - -- defined in [14]; - - - -- MIB-II (same prefix as MIB-I) - - mib-2 OBJECT IDENTIFIER ::= { mgmt 1 } - - -- textual conventions - - DisplayString ::= - OCTET STRING - -- This data type is used to model textual information taken - -- from the NVT ASCII character set. By convention, objects - -- with this syntax are declared as having - -- - -- SIZE (0..255) - - PhysAddress ::= - OCTET STRING - -- This data type is used to model media addresses. For many - -- types of media, this will be in a binary representation. - -- For example, an ethernet address would be represented as - -- a string of 6 octets. - - - -- groups in MIB-II - - system OBJECT IDENTIFIER ::= { mib-2 1 } - - interfaces OBJECT IDENTIFIER ::= { mib-2 2 } - - at OBJECT IDENTIFIER ::= { mib-2 3 } - - ip OBJECT IDENTIFIER ::= { mib-2 4 } - - icmp OBJECT IDENTIFIER ::= { mib-2 5 } - - tcp OBJECT IDENTIFIER ::= { mib-2 6 } - - udp OBJECT IDENTIFIER ::= { mib-2 7 } - - egp OBJECT IDENTIFIER ::= { mib-2 8 } - - -- historical (some say hysterical) - -- cmot OBJECT IDENTIFIER ::= { mib-2 9 } - - transmission OBJECT IDENTIFIER ::= { mib-2 10 } - - snmp OBJECT IDENTIFIER ::= { mib-2 11 } - - - -- the System group - - -- Implementation of the System group is mandatory for all - -- systems. If an agent is not configured to have a value - -- for any of these variables, a string of length 0 is - -- returned. - - sysDescr OBJECT-TYPE - SYNTAX DisplayString (SIZE (0..255)) - ACCESS read-only - STATUS mandatory - DESCRIPTION - "A textual description of the entity. This value - should include the full name and version - identification of the system's hardware type, - software operating-system, and networking - software. It is mandatory that this only contain - printable ASCII characters." - ::= { system 1 } - - sysObjectID OBJECT-TYPE - SYNTAX OBJECT IDENTIFIER - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The vendor's authoritative identification of the - network management subsystem contained in the - entity. This value is allocated within the SMI - enterprises subtree (1.3.6.1.4.1) and provides an - easy and unambiguous means for determining `what - kind of box' is being managed. For example, if - vendor `Flintstones, Inc.' was assigned the - subtree 1.3.6.1.4.1.4242, it could assign the - identifier 1.3.6.1.4.1.4242.1.1 to its `Fred - Router'." - ::= { system 2 } - - sysUpTime OBJECT-TYPE - SYNTAX TimeTicks - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The time (in hundredths of a second) since the - network management portion of the system was last - re-initialized." - ::= { system 3 } - - sysContact OBJECT-TYPE - SYNTAX DisplayString (SIZE (0..255)) - ACCESS read-write - STATUS mandatory - DESCRIPTION - "The textual identification of the contact person - for this managed node, together with information - on how to contact this person." - ::= { system 4 } - - sysName OBJECT-TYPE - SYNTAX DisplayString (SIZE (0..255)) - ACCESS read-write - STATUS mandatory - DESCRIPTION - "An administratively-assigned name for this - managed node. By convention, this is the node's - fully-qualified domain name." - ::= { system 5 } - - sysLocation OBJECT-TYPE - SYNTAX DisplayString (SIZE (0..255)) - ACCESS read-write - STATUS mandatory - DESCRIPTION - "The physical location of this node (e.g., - `telephone closet, 3rd floor')." - ::= { system 6 } - - sysServices OBJECT-TYPE - SYNTAX INTEGER (0..127) - ACCESS read-only - STATUS mandatory - DESCRIPTION - "A value which indicates the set of services that - this entity primarily offers. - - The value is a sum. This sum initially takes the - value zero, Then, for each layer, L, in the range - 1 through 7, that this node performs transactions - for, 2 raised to (L - 1) is added to the sum. For - example, a node which performs primarily routing - functions would have a value of 4 (2^(3-1)). In - contrast, a node which is a host offering - application services would have a value of 72 - (2^(4-1) + 2^(7-1)). Note that in the context of - the Internet suite of protocols, values should be - calculated accordingly: - - layer functionality - 1 physical (e.g., repeaters) - 2 datalink/subnetwork (e.g., bridges) - 3 internet (e.g., IP gateways) - 4 end-to-end (e.g., IP hosts) - 7 applications (e.g., mail relays) - - For systems including OSI protocols, layers 5 and - 6 may also be counted." - ::= { system 7 } - - -- the Interfaces group - - -- Implementation of the Interfaces group is mandatory for - -- all systems. - - ifNumber OBJECT-TYPE - SYNTAX INTEGER - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of network interfaces (regardless of - their current state) present on this system." - ::= { interfaces 1 } - - - -- the Interfaces table - - -- The Interfaces table contains information on the entity's - -- interfaces. Each interface is thought of as being - -- attached to a `subnetwork'. Note that this term should - -- not be confused with `subnet' which refers to an - -- addressing partitioning scheme used in the Internet suite - -- of protocols. - - ifTable OBJECT-TYPE - SYNTAX SEQUENCE OF IfEntry - ACCESS not-accessible - STATUS mandatory - DESCRIPTION - "A list of interface entries. The number of - entries is given by the value of ifNumber." - ::= { interfaces 2 } - - ifEntry OBJECT-TYPE - SYNTAX IfEntry - ACCESS not-accessible - STATUS mandatory - DESCRIPTION - "An interface entry containing objects at the - subnetwork layer and below for a particular - interface." - INDEX { ifIndex } - ::= { ifTable 1 } - - IfEntry ::= - SEQUENCE { - ifIndex - INTEGER, - ifDescr - DisplayString, - ifType - IANAifType, - ifMtu - INTEGER, - ifSpeed - Gauge, - ifPhysAddress - PhysAddress, - ifAdminStatus - INTEGER, - ifOperStatus - INTEGER, - ifLastChange - TimeTicks, - ifInOctets - Counter, - ifInUcastPkts - Counter, - ifInNUcastPkts - Counter, - ifInDiscards - Counter, - ifInErrors - Counter, - ifInUnknownProtos - Counter, - ifOutOctets - Counter, - ifOutUcastPkts - Counter, - ifOutNUcastPkts - Counter, - ifOutDiscards - Counter, - ifOutErrors - Counter, - ifOutQLen - Gauge, - ifSpecific - OBJECT IDENTIFIER - } - - ifIndex OBJECT-TYPE - SYNTAX INTEGER - ACCESS read-only - STATUS mandatory - DESCRIPTION - "A unique value for each interface. Its value - ranges between 1 and the value of ifNumber. The - value for each interface must remain constant at - least from one re-initialization of the entity's - network management system to the next re- - initialization." - ::= { ifEntry 1 } - - ifDescr OBJECT-TYPE - SYNTAX DisplayString (SIZE (0..255)) - ACCESS read-only - STATUS mandatory - DESCRIPTION - "A textual string containing information about the - interface. This string should include the name of - the manufacturer, the product name and the version - of the hardware interface." - ::= { ifEntry 2 } - - ifType OBJECT-TYPE - SYNTAX IANAifType - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The type of interface. Additional values for ifType - are assigned by the Internet Assigned Numbers - Authority (IANA), through updating the syntax of the - IANAifType textual convention." - ::= { ifEntry 3 } - - - ifMtu OBJECT-TYPE - SYNTAX INTEGER - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The size of the largest datagram which can be - sent/received on the interface, specified in - octets. For interfaces that are used for - transmitting network datagrams, this is the size - of the largest network datagram that can be sent - on the interface." - ::= { ifEntry 4 } - - ifSpeed OBJECT-TYPE - SYNTAX Gauge - ACCESS read-only - STATUS mandatory - DESCRIPTION - "An estimate of the interface's current bandwidth - in bits per second. For interfaces which do not - vary in bandwidth or for those where no accurate - estimation can be made, this object should contain - the nominal bandwidth." - ::= { ifEntry 5 } - - ifPhysAddress OBJECT-TYPE - SYNTAX PhysAddress - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The interface's address at the protocol layer - immediately `below' the network layer in the - protocol stack. For interfaces which do not have - such an address (e.g., a serial line), this object - should contain an octet string of zero length." - ::= { ifEntry 6 } - - ifAdminStatus OBJECT-TYPE - SYNTAX INTEGER { - up(1), -- ready to pass packets - down(2), - testing(3) -- in some test mode - } - ACCESS read-write - STATUS mandatory - DESCRIPTION - "The desired state of the interface. The - testing(3) state indicates that no operational - packets can be passed." - ::= { ifEntry 7 } - - ifOperStatus OBJECT-TYPE - SYNTAX INTEGER { - up(1), -- ready to pass packets - down(2), - testing(3), -- in some test mode - unknown(4), - dormant(5) - } - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The current operational state of the interface. - The testing(3) state indicates that no operational - packets can be passed." - ::= { ifEntry 8 } - - ifLastChange OBJECT-TYPE - SYNTAX TimeTicks - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The value of sysUpTime at the time the interface - entered its current operational state. If the - current state was entered prior to the last re- - initialization of the local network management - subsystem, then this object contains a zero - value." - ::= { ifEntry 9 } - - ifInOctets OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of octets received on the - interface, including framing characters." - ::= { ifEntry 10 } - - ifInUcastPkts OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of subnetwork-unicast packets - delivered to a higher-layer protocol." - ::= { ifEntry 11 } - - ifInNUcastPkts OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of non-unicast (i.e., subnetwork- - broadcast or subnetwork-multicast) packets - delivered to a higher-layer protocol." - ::= { ifEntry 12 } - - ifInDiscards OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of inbound packets which were chosen - to be discarded even though no errors had been - detected to prevent their being deliverable to a - higher-layer protocol. One possible reason for - discarding such a packet could be to free up - buffer space." - ::= { ifEntry 13 } - - ifInErrors OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of inbound packets that contained - errors preventing them from being deliverable to a - higher-layer protocol." - ::= { ifEntry 14 } - - ifInUnknownProtos OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of packets received via the interface - which were discarded because of an unknown or - unsupported protocol." - ::= { ifEntry 15 } - - ifOutOctets OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of octets transmitted out of the - interface, including framing characters." - ::= { ifEntry 16 } - - ifOutUcastPkts OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of packets that higher-level - protocols requested be transmitted to a - subnetwork-unicast address, including those that - were discarded or not sent." - ::= { ifEntry 17 } - - ifOutNUcastPkts OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of packets that higher-level - protocols requested be transmitted to a non- - unicast (i.e., a subnetwork-broadcast or - subnetwork-multicast) address, including those - that were discarded or not sent." - ::= { ifEntry 18 } - - ifOutDiscards OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of outbound packets which were chosen - to be discarded even though no errors had been - detected to prevent their being transmitted. One - possible reason for discarding such a packet could - be to free up buffer space." - ::= { ifEntry 19 } - - ifOutErrors OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of outbound packets that could not be - transmitted because of errors." - ::= { ifEntry 20 } - - ifOutQLen OBJECT-TYPE - SYNTAX Gauge - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The length of the output packet queue (in - packets)." - ::= { ifEntry 21 } - - ifSpecific OBJECT-TYPE - SYNTAX OBJECT IDENTIFIER - ACCESS read-only - STATUS mandatory - DESCRIPTION - "A reference to MIB definitions specific to the - particular media being used to realize the - interface. For example, if the interface is - realized by an ethernet, then the value of this - object refers to a document defining objects - specific to ethernet. If this information is not - present, its value should be set to the OBJECT - IDENTIFIER { 0 0 }, which is a syntactically valid - object identifier, and any conformant - implementation of ASN.1 and BER must be able to - generate and recognize this value." - ::= { ifEntry 22 } - - - -- the Address Translation group - - -- Implementation of the Address Translation group is - -- mandatory for all systems. Note however that this group - -- is deprecated by MIB-II. That is, it is being included - -- solely for compatibility with MIB-I nodes, and will most - -- likely be excluded from MIB-III nodes. From MIB-II and - -- onwards, each network protocol group contains its own - -- address translation tables. - - -- The Address Translation group contains one table which is - -- the union across all interfaces of the translation tables - -- for converting a NetworkAddress (e.g., an IP address) into - -- a subnetwork-specific address. For lack of a better term, - -- this document refers to such a subnetwork-specific address - -- as a `physical' address. - - -- Examples of such translation tables are: for broadcast - -- media where ARP is in use, the translation table is - -- equivalent to the ARP cache; or, on an X.25 network where - -- non-algorithmic translation to X.121 addresses is - -- required, the translation table contains the - -- NetworkAddress to X.121 address equivalences. - - atTable OBJECT-TYPE - SYNTAX SEQUENCE OF AtEntry - ACCESS not-accessible - STATUS deprecated - DESCRIPTION - "The Address Translation tables contain the - NetworkAddress to `physical' address equivalences. - Some interfaces do not use translation tables for - determining address equivalences (e.g., DDN-X.25 - has an algorithmic method); if all interfaces are - of this type, then the Address Translation table - is empty, i.e., has zero entries." - ::= { at 1 } - - atEntry OBJECT-TYPE - SYNTAX AtEntry - ACCESS not-accessible - STATUS deprecated - DESCRIPTION - "Each entry contains one NetworkAddress to - `physical' address equivalence." - INDEX { atIfIndex, - atNetAddress } - ::= { atTable 1 } - - AtEntry ::= - SEQUENCE { - atIfIndex - INTEGER, - atPhysAddress - PhysAddress, - atNetAddress - NetworkAddress - } - - atIfIndex OBJECT-TYPE - SYNTAX INTEGER - ACCESS read-write - STATUS deprecated - DESCRIPTION - "The interface on which this entry's equivalence - is effective. The interface identified by a - particular value of this index is the same - interface as identified by the same value of - ifIndex." - ::= { atEntry 1 } - - atPhysAddress OBJECT-TYPE - SYNTAX PhysAddress - ACCESS read-write - STATUS deprecated - DESCRIPTION - "The media-dependent `physical' address. - - Setting this object to a null string (one of zero - length) has the effect of invaliding the - corresponding entry in the atTable object. That - is, it effectively disassociates the interface - identified with said entry from the mapping - identified with said entry. It is an - implementation-specific matter as to whether the - agent removes an invalidated entry from the table. - Accordingly, management stations must be prepared - to receive tabular information from agents that - corresponds to entries not currently in use. - Proper interpretation of such entries requires - examination of the relevant atPhysAddress object." - ::= { atEntry 2 } - - atNetAddress OBJECT-TYPE - SYNTAX NetworkAddress - ACCESS read-write - STATUS deprecated - DESCRIPTION - "The NetworkAddress (e.g., the IP address) - corresponding to the media-dependent `physical' - address." - ::= { atEntry 3 } - - - -- the IP group - - -- Implementation of the IP group is mandatory for all - -- systems. - - ipForwarding OBJECT-TYPE - SYNTAX INTEGER { - forwarding(1), -- acting as a gateway - not-forwarding(2) -- NOT acting as a gateway - } - ACCESS read-write - STATUS mandatory - DESCRIPTION - "The indication of whether this entity is acting - as an IP gateway in respect to the forwarding of - datagrams received by, but not addressed to, this - entity. IP gateways forward datagrams. IP hosts - do not (except those source-routed via the host). - - Note that for some managed nodes, this object may - take on only a subset of the values possible. - Accordingly, it is appropriate for an agent to - return a `badValue' response if a management - station attempts to change this object to an - inappropriate value." - ::= { ip 1 } - - ipDefaultTTL OBJECT-TYPE - SYNTAX INTEGER - ACCESS read-write - STATUS mandatory - DESCRIPTION - "The default value inserted into the Time-To-Live - field of the IP header of datagrams originated at - this entity, whenever a TTL value is not supplied - by the transport layer protocol." - ::= { ip 2 } - - ipInReceives OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of input datagrams received from - interfaces, including those received in error." - ::= { ip 3 } - - ipInHdrErrors OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of input datagrams discarded due to - errors in their IP headers, including bad - checksums, version number mismatch, other format - errors, time-to-live exceeded, errors discovered - in processing their IP options, etc." - ::= { ip 4 } - - ipInAddrErrors OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of input datagrams discarded because - the IP address in their IP header's destination - field was not a valid address to be received at - this entity. This count includes invalid - addresses (e.g., 0.0.0.0) and addresses of - unsupported Classes (e.g., Class E). For entities - which are not IP Gateways and therefore do not - forward datagrams, this counter includes datagrams - discarded because the destination address was not - a local address." - ::= { ip 5 } - - ipForwDatagrams OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of input datagrams for which this - entity was not their final IP destination, as a - result of which an attempt was made to find a - route to forward them to that final destination. - In entities which do not act as IP Gateways, this - counter will include only those packets which were - Source-Routed via this entity, and the Source- - Route option processing was successful." - ::= { ip 6 } - - ipInUnknownProtos OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of locally-addressed datagrams - received successfully but discarded because of an - unknown or unsupported protocol." - ::= { ip 7 } - - ipInDiscards OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of input IP datagrams for which no - problems were encountered to prevent their - continued processing, but which were discarded - (e.g., for lack of buffer space). Note that this - counter does not include any datagrams discarded - while awaiting re-assembly." - ::= { ip 8 } - - ipInDelivers OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of input datagrams successfully - delivered to IP user-protocols (including ICMP)." - ::= { ip 9 } - - ipOutRequests OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of IP datagrams which local IP - user-protocols (including ICMP) supplied to IP in - requests for transmission. Note that this counter - does not include any datagrams counted in - ipForwDatagrams." - ::= { ip 10 } - - ipOutDiscards OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of output IP datagrams for which no - problem was encountered to prevent their - transmission to their destination, but which were - discarded (e.g., for lack of buffer space). Note - that this counter would include datagrams counted - in ipForwDatagrams if any such packets met this - (discretionary) discard criterion." - ::= { ip 11 } - - ipOutNoRoutes OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of IP datagrams discarded because no - route could be found to transmit them to their - destination. Note that this counter includes any - packets counted in ipForwDatagrams which meet this - `no-route' criterion. Note that this includes any - datagrams which a host cannot route because all of - its default gateways are down." - ::= { ip 12 } - - ipReasmTimeout OBJECT-TYPE - SYNTAX INTEGER - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The maximum number of seconds which received - fragments are held while they are awaiting - reassembly at this entity." - ::= { ip 13 } - - ipReasmReqds OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of IP fragments received which needed - to be reassembled at this entity." - ::= { ip 14 } - - ipReasmOKs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of IP datagrams successfully re- - assembled." - ::= { ip 15 } - - ipReasmFails OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of failures detected by the IP re- - assembly algorithm (for whatever reason: timed - out, errors, etc). Note that this is not - necessarily a count of discarded IP fragments - since some algorithms (notably the algorithm in - RFC 815) can lose track of the number of fragments - by combining them as they are received." - ::= { ip 16 } - - ipFragOKs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of IP datagrams that have been - successfully fragmented at this entity." - ::= { ip 17 } - - ipFragFails OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of IP datagrams that have been - discarded because they needed to be fragmented at - this entity but could not be, e.g., because their - Don't Fragment flag was set." - ::= { ip 18 } - - ipFragCreates OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of IP datagram fragments that have - been generated as a result of fragmentation at - this entity." - ::= { ip 19 } - - - - -- the IP address table - - -- The IP address table contains this entity's IP addressing - -- information. - - ipAddrTable OBJECT-TYPE - SYNTAX SEQUENCE OF IpAddrEntry - ACCESS not-accessible - STATUS mandatory - DESCRIPTION - "The table of addressing information relevant to - this entity's IP addresses." - ::= { ip 20 } - - ipAddrEntry OBJECT-TYPE - SYNTAX IpAddrEntry - ACCESS not-accessible - STATUS mandatory - DESCRIPTION - "The addressing information for one of this - entity's IP addresses." - INDEX { ipAdEntAddr } - ::= { ipAddrTable 1 } - - IpAddrEntry ::= - SEQUENCE { - ipAdEntAddr - IpAddress, - ipAdEntIfIndex - INTEGER, - ipAdEntNetMask - IpAddress, - ipAdEntBcastAddr - INTEGER, - ipAdEntReasmMaxSize - INTEGER (0..65535) - } - - ipAdEntAddr OBJECT-TYPE - SYNTAX IpAddress - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The IP address to which this entry's addressing - information pertains." - ::= { ipAddrEntry 1 } - - - ipAdEntIfIndex OBJECT-TYPE - SYNTAX INTEGER - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The index value which uniquely identifies the - interface to which this entry is applicable. The - interface identified by a particular value of this - index is the same interface as identified by the - same value of ifIndex." - ::= { ipAddrEntry 2 } - - ipAdEntNetMask OBJECT-TYPE - SYNTAX IpAddress - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The subnet mask associated with the IP address of - this entry. The value of the mask is an IP - address with all the network bits set to 1 and all - the hosts bits set to 0." - ::= { ipAddrEntry 3 } - - ipAdEntBcastAddr OBJECT-TYPE - SYNTAX INTEGER - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The value of the least-significant bit in the IP - broadcast address used for sending datagrams on - the (logical) interface associated with the IP - address of this entry. For example, when the - Internet standard all-ones broadcast address is - used, the value will be 1. This value applies to - both the subnet and network broadcasts addresses - used by the entity on this (logical) interface." - ::= { ipAddrEntry 4 } - - ipAdEntReasmMaxSize OBJECT-TYPE - SYNTAX INTEGER (0..65535) - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The size of the largest IP datagram which this - entity can re-assemble from incoming IP fragmented - datagrams received on this interface." - ::= { ipAddrEntry 5 } - - -- the IP routing table - - -- The IP routing table contains an entry for each route - -- presently known to this entity. - - ipRouteTable OBJECT-TYPE - SYNTAX SEQUENCE OF IpRouteEntry - ACCESS not-accessible - STATUS mandatory - DESCRIPTION - "This entity's IP Routing table." - ::= { ip 21 } - - ipRouteEntry OBJECT-TYPE - SYNTAX IpRouteEntry - ACCESS not-accessible - STATUS mandatory - DESCRIPTION - "A route to a particular destination." - INDEX { ipRouteDest } - ::= { ipRouteTable 1 } - - IpRouteEntry ::= - SEQUENCE { - ipRouteDest - IpAddress, - ipRouteIfIndex - INTEGER, - ipRouteMetric1 - INTEGER, - ipRouteMetric2 - INTEGER, - ipRouteMetric3 - INTEGER, - ipRouteMetric4 - INTEGER, - ipRouteNextHop - IpAddress, - ipRouteType - INTEGER, - ipRouteProto - INTEGER, - ipRouteAge - INTEGER, - ipRouteMask - IpAddress, - ipRouteMetric5 - INTEGER, - ipRouteInfo - OBJECT IDENTIFIER - } - - ipRouteDest OBJECT-TYPE - SYNTAX IpAddress - ACCESS read-write - STATUS mandatory - DESCRIPTION - "The destination IP address of this route. An - entry with a value of 0.0.0.0 is considered a - default route. Multiple routes to a single - destination can appear in the table, but access to - such multiple entries is dependent on the table- - access mechanisms defined by the network - management protocol in use." - ::= { ipRouteEntry 1 } - - ipRouteIfIndex OBJECT-TYPE - SYNTAX INTEGER - ACCESS read-write - STATUS mandatory - DESCRIPTION - "The index value which uniquely identifies the - local interface through which the next hop of this - route should be reached. The interface identified - by a particular value of this index is the same - interface as identified by the same value of - ifIndex." - ::= { ipRouteEntry 2 } - - ipRouteMetric1 OBJECT-TYPE - SYNTAX INTEGER - ACCESS read-write - STATUS mandatory - DESCRIPTION - "The primary routing metric for this route. The - semantics of this metric are determined by the - routing-protocol specified in the route's - ipRouteProto value. If this metric is not used, - its value should be set to -1." - ::= { ipRouteEntry 3 } - - ipRouteMetric2 OBJECT-TYPE - SYNTAX INTEGER - ACCESS read-write - STATUS mandatory - DESCRIPTION - "An alternate routing metric for this route. The - semantics of this metric are determined by the - routing-protocol specified in the route's - ipRouteProto value. If this metric is not used, - its value should be set to -1." - ::= { ipRouteEntry 4 } - - ipRouteMetric3 OBJECT-TYPE - SYNTAX INTEGER - ACCESS read-write - STATUS mandatory - DESCRIPTION - "An alternate routing metric for this route. The - semantics of this metric are determined by the - routing-protocol specified in the route's - ipRouteProto value. If this metric is not used, - its value should be set to -1." - ::= { ipRouteEntry 5 } - - ipRouteMetric4 OBJECT-TYPE - SYNTAX INTEGER - ACCESS read-write - STATUS mandatory - DESCRIPTION - "An alternate routing metric for this route. The - semantics of this metric are determined by the - routing-protocol specified in the route's - ipRouteProto value. If this metric is not used, - its value should be set to -1." - ::= { ipRouteEntry 6 } - - ipRouteNextHop OBJECT-TYPE - SYNTAX IpAddress - ACCESS read-write - STATUS mandatory - DESCRIPTION - "The IP address of the next hop of this route. - (In the case of a route bound to an interface - which is realized via a broadcast media, the value - of this field is the agent's IP address on that - interface.)" - ::= { ipRouteEntry 7 } - - ipRouteType OBJECT-TYPE - SYNTAX INTEGER { - other(1), -- none of the following - - invalid(2), -- an invalidated route - -- route to directly - direct(3), -- connected (sub-)network - - -- route to a non-local - indirect(4) -- host/network/sub-network - } - ACCESS read-write - STATUS mandatory - DESCRIPTION - "The type of route. Note that the values - direct(3) and indirect(4) refer to the notion of - direct and indirect routing in the IP - architecture. - - Setting this object to the value invalid(2) has - the effect of invalidating the corresponding entry - in the ipRouteTable object. That is, it - effectively disassociates the destination - identified with said entry from the route - identified with said entry. It is an - implementation-specific matter as to whether the - agent removes an invalidated entry from the table. - Accordingly, management stations must be prepared - to receive tabular information from agents that - corresponds to entries not currently in use. - Proper interpretation of such entries requires - examination of the relevant ipRouteType object." - ::= { ipRouteEntry 8 } - - ipRouteProto OBJECT-TYPE - SYNTAX INTEGER { - other(1), -- none of the following - - -- non-protocol information, - -- e.g., manually configured - local(2), -- entries - - -- set via a network - netmgmt(3), -- management protocol - - -- obtained via ICMP, - icmp(4), -- e.g., Redirect - - -- the remaining values are - -- all gateway routing - -- protocols - egp(5), - ggp(6), - hello(7), - rip(8), - is-is(9), - es-is(10), - ciscoIgrp(11), - bbnSpfIgp(12), - ospf(13), - bgp(14) - } - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The routing mechanism via which this route was - learned. Inclusion of values for gateway routing - protocols is not intended to imply that hosts - should support those protocols." - ::= { ipRouteEntry 9 } - - ipRouteAge OBJECT-TYPE - SYNTAX INTEGER - ACCESS read-write - STATUS mandatory - DESCRIPTION - "The number of seconds since this route was last - updated or otherwise determined to be correct. - Note that no semantics of `too old' can be implied - except through knowledge of the routing protocol - by which the route was learned." - ::= { ipRouteEntry 10 } - - ipRouteMask OBJECT-TYPE - SYNTAX IpAddress - ACCESS read-write - STATUS mandatory - DESCRIPTION - "Indicate the mask to be logical-ANDed with the - destination address before being compared to the - value in the ipRouteDest field. For those systems - that do not support arbitrary subnet masks, an - agent constructs the value of the ipRouteMask by - determining whether the value of the correspondent - ipRouteDest field belong to a class-A, B, or C - network, and then using one of: - - mask network - 255.0.0.0 class-A - 255.255.0.0 class-B - 255.255.255.0 class-C - - If the value of the ipRouteDest is 0.0.0.0 (a - default route), then the mask value is also - 0.0.0.0. It should be noted that all IP routing - subsystems implicitly use this mechanism." - ::= { ipRouteEntry 11 } - - ipRouteMetric5 OBJECT-TYPE - SYNTAX INTEGER - ACCESS read-write - STATUS mandatory - DESCRIPTION - "An alternate routing metric for this route. The - semantics of this metric are determined by the - routing-protocol specified in the route's - ipRouteProto value. If this metric is not used, - its value should be set to -1." - ::= { ipRouteEntry 12 } - - ipRouteInfo OBJECT-TYPE - SYNTAX OBJECT IDENTIFIER - ACCESS read-only - STATUS mandatory - DESCRIPTION - "A reference to MIB definitions specific to the - particular routing protocol which is responsible - for this route, as determined by the value - specified in the route's ipRouteProto value. If - this information is not present, its value should - be set to the OBJECT IDENTIFIER { 0 0 }, which is - a syntactically valid object identifier, and any - conformant implementation of ASN.1 and BER must be - able to generate and recognize this value." - ::= { ipRouteEntry 13 } - - - -- the IP Address Translation table - - -- The IP address translation table contain the IpAddress to - -- `physical' address equivalences. Some interfaces do not - -- use translation tables for determining address - -- equivalences (e.g., DDN-X.25 has an algorithmic method); - -- if all interfaces are of this type, then the Address - -- Translation table is empty, i.e., has zero entries. - - ipNetToMediaTable OBJECT-TYPE - SYNTAX SEQUENCE OF IpNetToMediaEntry - ACCESS not-accessible - STATUS mandatory - DESCRIPTION - "The IP Address Translation table used for mapping - from IP addresses to physical addresses." - ::= { ip 22 } - - ipNetToMediaEntry OBJECT-TYPE - SYNTAX IpNetToMediaEntry - ACCESS not-accessible - STATUS mandatory - DESCRIPTION - "Each entry contains one IpAddress to `physical' - address equivalence." - INDEX { ipNetToMediaIfIndex, - ipNetToMediaNetAddress } - ::= { ipNetToMediaTable 1 } - - IpNetToMediaEntry ::= - SEQUENCE { - ipNetToMediaIfIndex - INTEGER, - ipNetToMediaPhysAddress - PhysAddress, - ipNetToMediaNetAddress - IpAddress, - ipNetToMediaType - INTEGER - } - - ipNetToMediaIfIndex OBJECT-TYPE - SYNTAX INTEGER - ACCESS read-write - STATUS mandatory - DESCRIPTION - "The interface on which this entry's equivalence - is effective. The interface identified by a - particular value of this index is the same - interface as identified by the same value of - ifIndex." - ::= { ipNetToMediaEntry 1 } - - ipNetToMediaPhysAddress OBJECT-TYPE - SYNTAX PhysAddress - ACCESS read-write - STATUS mandatory - DESCRIPTION - "The media-dependent `physical' address." - ::= { ipNetToMediaEntry 2 } - - ipNetToMediaNetAddress OBJECT-TYPE - SYNTAX IpAddress - ACCESS read-write - STATUS mandatory - DESCRIPTION - "The IpAddress corresponding to the media- - dependent `physical' address." - ::= { ipNetToMediaEntry 3 } - - ipNetToMediaType OBJECT-TYPE - SYNTAX INTEGER { - other(1), -- none of the following - invalid(2), -- an invalidated mapping - dynamic(3), - static(4) - } - ACCESS read-write - STATUS mandatory - DESCRIPTION - "The type of mapping. - - Setting this object to the value invalid(2) has - the effect of invalidating the corresponding entry - in the ipNetToMediaTable. That is, it effectively - disassociates the interface identified with said - entry from the mapping identified with said entry. - It is an implementation-specific matter as to - whether the agent removes an invalidated entry - from the table. Accordingly, management stations - must be prepared to receive tabular information - from agents that corresponds to entries not - currently in use. Proper interpretation of such - entries requires examination of the relevant - ipNetToMediaType object." - ::= { ipNetToMediaEntry 4 } - - - -- additional IP objects - - ipRoutingDiscards OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of routing entries which were chosen - to be discarded even though they are valid. One - possible reason for discarding such an entry could - be to free-up buffer space for other routing - entries." - ::= { ip 23 } - - - -- the ICMP group - - -- Implementation of the ICMP group is mandatory for all - -- systems. - - icmpInMsgs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of ICMP messages which the - entity received. Note that this counter includes - all those counted by icmpInErrors." - ::= { icmp 1 } - - icmpInErrors OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of ICMP messages which the entity - received but determined as having ICMP-specific - errors (bad ICMP checksums, bad length, etc.)." - ::= { icmp 2 } - - icmpInDestUnreachs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of ICMP Destination Unreachable - messages received." - ::= { icmp 3 } - - icmpInTimeExcds OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of ICMP Time Exceeded messages - received." - ::= { icmp 4 } - - - icmpInParmProbs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of ICMP Parameter Problem messages - received." - ::= { icmp 5 } - - icmpInSrcQuenchs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of ICMP Source Quench messages - received." - ::= { icmp 6 } - - icmpInRedirects OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of ICMP Redirect messages received." - ::= { icmp 7 } - - icmpInEchos OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of ICMP Echo (request) messages - received." - ::= { icmp 8 } - - icmpInEchoReps OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of ICMP Echo Reply messages received." - ::= { icmp 9 } - - icmpInTimestamps OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of ICMP Timestamp (request) messages - received." - ::= { icmp 10 } - - icmpInTimestampReps OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of ICMP Timestamp Reply messages - received." - ::= { icmp 11 } - - icmpInAddrMasks OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of ICMP Address Mask Request messages - received." - ::= { icmp 12 } - - icmpInAddrMaskReps OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of ICMP Address Mask Reply messages - received." - ::= { icmp 13 } - - icmpOutMsgs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of ICMP messages which this - entity attempted to send. Note that this counter - includes all those counted by icmpOutErrors." - ::= { icmp 14 } - - icmpOutErrors OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of ICMP messages which this entity did - not send due to problems discovered within ICMP - such as a lack of buffers. This value should not - include errors discovered outside the ICMP layer - such as the inability of IP to route the resultant - datagram. In some implementations there may be no - types of error which contribute to this counter's - value." - ::= { icmp 15 } - - icmpOutDestUnreachs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of ICMP Destination Unreachable - messages sent." - ::= { icmp 16 } - - icmpOutTimeExcds OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of ICMP Time Exceeded messages sent." - ::= { icmp 17 } - - icmpOutParmProbs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of ICMP Parameter Problem messages - sent." - ::= { icmp 18 } - - icmpOutSrcQuenchs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of ICMP Source Quench messages sent." - ::= { icmp 19 } - - icmpOutRedirects OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of ICMP Redirect messages sent. For a - host, this object will always be zero, since hosts - do not send redirects." - ::= { icmp 20 } - - icmpOutEchos OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of ICMP Echo (request) messages sent." - ::= { icmp 21 } - - icmpOutEchoReps OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of ICMP Echo Reply messages sent." - ::= { icmp 22 } - - icmpOutTimestamps OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of ICMP Timestamp (request) messages - sent." - ::= { icmp 23 } - - icmpOutTimestampReps OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of ICMP Timestamp Reply messages - sent." - ::= { icmp 24 } - - icmpOutAddrMasks OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of ICMP Address Mask Request messages - sent." - ::= { icmp 25 } - - - icmpOutAddrMaskReps OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of ICMP Address Mask Reply messages - sent." - ::= { icmp 26 } - - - -- the TCP group - - -- Implementation of the TCP group is mandatory for all - -- systems that implement the TCP. - - -- Note that instances of object types that represent - -- information about a particular TCP connection are - -- transient; they persist only as long as the connection - -- in question. - - tcpRtoAlgorithm OBJECT-TYPE - SYNTAX INTEGER { - other(1), -- none of the following - - constant(2), -- a constant rto - rsre(3), -- MIL-STD-1778, Appendix B - vanj(4) -- Van Jacobson's algorithm [10] - } - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The algorithm used to determine the timeout value - used for retransmitting unacknowledged octets." - ::= { tcp 1 } - - tcpRtoMin OBJECT-TYPE - SYNTAX INTEGER - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The minimum value permitted by a TCP - implementation for the retransmission timeout, - measured in milliseconds. More refined semantics - for objects of this type depend upon the algorithm - used to determine the retransmission timeout. In - particular, when the timeout algorithm is rsre(3), - an object of this type has the semantics of the - LBOUND quantity described in RFC 793." - ::= { tcp 2 } - - - tcpRtoMax OBJECT-TYPE - SYNTAX INTEGER - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The maximum value permitted by a TCP - implementation for the retransmission timeout, - measured in milliseconds. More refined semantics - for objects of this type depend upon the algorithm - used to determine the retransmission timeout. In - particular, when the timeout algorithm is rsre(3), - an object of this type has the semantics of the - UBOUND quantity described in RFC 793." - ::= { tcp 3 } - - tcpMaxConn OBJECT-TYPE - SYNTAX INTEGER - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The limit on the total number of TCP connections - the entity can support. In entities where the - maximum number of connections is dynamic, this - object should contain the value -1." - ::= { tcp 4 } - - tcpActiveOpens OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of times TCP connections have made a - direct transition to the SYN-SENT state from the - CLOSED state." - ::= { tcp 5 } - - tcpPassiveOpens OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of times TCP connections have made a - direct transition to the SYN-RCVD state from the - LISTEN state." - ::= { tcp 6 } - - tcpAttemptFails OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of times TCP connections have made a - direct transition to the CLOSED state from either - the SYN-SENT state or the SYN-RCVD state, plus the - number of times TCP connections have made a direct - transition to the LISTEN state from the SYN-RCVD - state." - ::= { tcp 7 } - - tcpEstabResets OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of times TCP connections have made a - direct transition to the CLOSED state from either - the ESTABLISHED state or the CLOSE-WAIT state." - ::= { tcp 8 } - - tcpCurrEstab OBJECT-TYPE - SYNTAX Gauge - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of TCP connections for which the - current state is either ESTABLISHED or CLOSE- - WAIT." - ::= { tcp 9 } - - tcpInSegs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of segments received, including - those received in error. This count includes - segments received on currently established - connections." - ::= { tcp 10 } - - tcpOutSegs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of segments sent, including - those on current connections but excluding those - containing only retransmitted octets." - ::= { tcp 11 } - - tcpRetransSegs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of segments retransmitted - that - is, the number of TCP segments transmitted - containing one or more previously transmitted - octets." - ::= { tcp 12 } - - - -- the TCP Connection table - - -- The TCP connection table contains information about this - -- entity's existing TCP connections. - - tcpConnTable OBJECT-TYPE - SYNTAX SEQUENCE OF TcpConnEntry - ACCESS not-accessible - STATUS mandatory - DESCRIPTION - "A table containing TCP connection-specific - information." - ::= { tcp 13 } - - tcpConnEntry OBJECT-TYPE - SYNTAX TcpConnEntry - ACCESS not-accessible - STATUS mandatory - DESCRIPTION - "Information about a particular current TCP - connection. An object of this type is transient, - in that it ceases to exist when (or soon after) - the connection makes the transition to the CLOSED - state." - INDEX { tcpConnLocalAddress, - tcpConnLocalPort, - tcpConnRemAddress, - tcpConnRemPort } - ::= { tcpConnTable 1 } - - TcpConnEntry ::= - SEQUENCE { - tcpConnState - INTEGER, - tcpConnLocalAddress - IpAddress, - tcpConnLocalPort - INTEGER (0..65535), - tcpConnRemAddress - IpAddress, - tcpConnRemPort - INTEGER (0..65535) - } - - tcpConnState OBJECT-TYPE - SYNTAX INTEGER { - closed(1), - listen(2), - synSent(3), - synReceived(4), - established(5), - finWait1(6), - finWait2(7), - closeWait(8), - lastAck(9), - closing(10), - timeWait(11), - deleteTCB(12) - } - ACCESS read-write - STATUS mandatory - DESCRIPTION - "The state of this TCP connection. - - The only value which may be set by a management - station is deleteTCB(12). Accordingly, it is - appropriate for an agent to return a `badValue' - response if a management station attempts to set - this object to any other value. - - If a management station sets this object to the - value deleteTCB(12), then this has the effect of - deleting the TCB (as defined in RFC 793) of the - corresponding connection on the managed node, - resulting in immediate termination of the - connection. - - As an implementation-specific option, a RST - segment may be sent from the managed node to the - other TCP endpoint (note however that RST segments - are not sent reliably)." - ::= { tcpConnEntry 1 } - - tcpConnLocalAddress OBJECT-TYPE - SYNTAX IpAddress - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The local IP address for this TCP connection. In - the case of a connection in the listen state which - is willing to accept connections for any IP - interface associated with the node, the value - 0.0.0.0 is used." - ::= { tcpConnEntry 2 } - - tcpConnLocalPort OBJECT-TYPE - SYNTAX INTEGER (0..65535) - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The local port number for this TCP connection." - ::= { tcpConnEntry 3 } - - tcpConnRemAddress OBJECT-TYPE - SYNTAX IpAddress - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The remote IP address for this TCP connection." - ::= { tcpConnEntry 4 } - - tcpConnRemPort OBJECT-TYPE - SYNTAX INTEGER (0..65535) - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The remote port number for this TCP connection." - ::= { tcpConnEntry 5 } - - - -- additional TCP objects - - tcpInErrs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of segments received in error - (e.g., bad TCP checksums)." - ::= { tcp 14 } - - tcpOutRsts OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of TCP segments sent containing the - RST flag." - ::= { tcp 15 } - - - -- the UDP group - - -- Implementation of the UDP group is mandatory for all - -- systems which implement the UDP. - - udpInDatagrams OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of UDP datagrams delivered to - UDP users." - ::= { udp 1 } - - udpNoPorts OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of received UDP datagrams for - which there was no application at the destination - port." - ::= { udp 2 } - - udpInErrors OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of received UDP datagrams that could - not be delivered for reasons other than the lack - of an application at the destination port." - ::= { udp 3 } - - udpOutDatagrams OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of UDP datagrams sent from this - entity." - ::= { udp 4 } - - - -- the UDP Listener table - - -- The UDP listener table contains information about this - -- entity's UDP end-points on which a local application is - -- currently accepting datagrams. - - udpTable OBJECT-TYPE - SYNTAX SEQUENCE OF UdpEntry - ACCESS not-accessible - STATUS mandatory - DESCRIPTION - "A table containing UDP listener information." - ::= { udp 5 } - - udpEntry OBJECT-TYPE - SYNTAX UdpEntry - ACCESS not-accessible - STATUS mandatory - DESCRIPTION - "Information about a particular current UDP - listener." - INDEX { udpLocalAddress, udpLocalPort } - ::= { udpTable 1 } - - UdpEntry ::= - SEQUENCE { - udpLocalAddress - IpAddress, - udpLocalPort - INTEGER (0..65535) - } - - udpLocalAddress OBJECT-TYPE - SYNTAX IpAddress - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The local IP address for this UDP listener. In - the case of a UDP listener which is willing to - accept datagrams for any IP interface associated - with the node, the value 0.0.0.0 is used." - ::= { udpEntry 1 } - - udpLocalPort OBJECT-TYPE - SYNTAX INTEGER (0..65535) - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The local port number for this UDP listener." - ::= { udpEntry 2 } - - - -- the EGP group - - -- Implementation of the EGP group is mandatory for all - -- systems which implement the EGP. - - egpInMsgs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of EGP messages received without - error." - ::= { egp 1 } - - egpInErrors OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of EGP messages received that proved - to be in error." - ::= { egp 2 } - - egpOutMsgs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of locally generated EGP - messages." - ::= { egp 3 } - - egpOutErrors OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of locally generated EGP messages not - sent due to resource limitations within an EGP - entity." - ::= { egp 4 } - - - -- the EGP Neighbor table - - -- The EGP neighbor table contains information about this - -- entity's EGP neighbors. - - egpNeighTable OBJECT-TYPE - SYNTAX SEQUENCE OF EgpNeighEntry - ACCESS not-accessible - STATUS mandatory - DESCRIPTION - "The EGP neighbor table." - ::= { egp 5 } - - egpNeighEntry OBJECT-TYPE - SYNTAX EgpNeighEntry - ACCESS not-accessible - STATUS mandatory - DESCRIPTION - "Information about this entity's relationship with - a particular EGP neighbor." - INDEX { egpNeighAddr } - ::= { egpNeighTable 1 } - - EgpNeighEntry ::= - SEQUENCE { - egpNeighState - INTEGER, - egpNeighAddr - IpAddress, - egpNeighAs - INTEGER, - egpNeighInMsgs - Counter, - egpNeighInErrs - Counter, - egpNeighOutMsgs - Counter, - egpNeighOutErrs - Counter, - egpNeighInErrMsgs - Counter, - egpNeighOutErrMsgs - Counter, - egpNeighStateUps - Counter, - egpNeighStateDowns - Counter, - egpNeighIntervalHello - INTEGER, - egpNeighIntervalPoll - INTEGER, - egpNeighMode - INTEGER, - egpNeighEventTrigger - INTEGER - } - - egpNeighState OBJECT-TYPE - SYNTAX INTEGER { - idle(1), - acquisition(2), - down(3), - up(4), - cease(5) - } - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The EGP state of the local system with respect to - this entry's EGP neighbor. Each EGP state is - represented by a value that is one greater than - the numerical value associated with said state in - RFC 904." - ::= { egpNeighEntry 1 } - - egpNeighAddr OBJECT-TYPE - SYNTAX IpAddress - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The IP address of this entry's EGP neighbor." - ::= { egpNeighEntry 2 } - - egpNeighAs OBJECT-TYPE - SYNTAX INTEGER - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The autonomous system of this EGP peer. Zero - should be specified if the autonomous system - number of the neighbor is not yet known." - ::= { egpNeighEntry 3 } - - egpNeighInMsgs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of EGP messages received without error - from this EGP peer." - ::= { egpNeighEntry 4 } - - egpNeighInErrs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of EGP messages received from this EGP - peer that proved to be in error (e.g., bad EGP - checksum)." - ::= { egpNeighEntry 5 } - - egpNeighOutMsgs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of locally generated EGP messages to - this EGP peer." - ::= { egpNeighEntry 6 } - - egpNeighOutErrs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of locally generated EGP messages not - sent to this EGP peer due to resource limitations - within an EGP entity." - ::= { egpNeighEntry 7 } - - egpNeighInErrMsgs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of EGP-defined error messages received - from this EGP peer." - ::= { egpNeighEntry 8 } - - egpNeighOutErrMsgs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of EGP-defined error messages sent to - this EGP peer." - ::= { egpNeighEntry 9 } - - egpNeighStateUps OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of EGP state transitions to the UP - state with this EGP peer." - ::= { egpNeighEntry 10 } - - egpNeighStateDowns OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The number of EGP state transitions from the UP - state to any other state with this EGP peer." - ::= { egpNeighEntry 11 } - - egpNeighIntervalHello OBJECT-TYPE - SYNTAX INTEGER - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The interval between EGP Hello command - retransmissions (in hundredths of a second). This - represents the t1 timer as defined in RFC 904." - ::= { egpNeighEntry 12 } - - egpNeighIntervalPoll OBJECT-TYPE - SYNTAX INTEGER - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The interval between EGP poll command - retransmissions (in hundredths of a second). This - represents the t3 timer as defined in RFC 904." - ::= { egpNeighEntry 13 } - - egpNeighMode OBJECT-TYPE - SYNTAX INTEGER { active(1), passive(2) } - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The polling mode of this EGP entity, either - passive or active." - ::= { egpNeighEntry 14 } - - egpNeighEventTrigger OBJECT-TYPE - SYNTAX INTEGER { start(1), stop(2) } - ACCESS read-write - STATUS mandatory - DESCRIPTION - "A control variable used to trigger operator- - initiated Start and Stop events. When read, this - variable always returns the most recent value that - egpNeighEventTrigger was set to. If it has not - been set since the last initialization of the - network management subsystem on the node, it - returns a value of `stop'. - - When set, this variable causes a Start or Stop - event on the specified neighbor, as specified on - pages 8-10 of RFC 904. Briefly, a Start event - causes an Idle peer to begin neighbor acquisition - and a non-Idle peer to reinitiate neighbor - acquisition. A stop event causes a non-Idle peer - to return to the Idle state until a Start event - occurs, either via egpNeighEventTrigger or - otherwise." - ::= { egpNeighEntry 15 } - - - -- additional EGP objects - - egpAs OBJECT-TYPE - SYNTAX INTEGER - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The autonomous system number of this EGP entity." - ::= { egp 6 } - - -- the Transmission group - - -- Based on the transmission media underlying each interface - -- on a system, the corresponding portion of the Transmission - -- group is mandatory for that system. - - -- When Internet-standard definitions for managing - -- transmission media are defined, the transmission group is - -- used to provide a prefix for the names of those objects. - - -- Typically, such definitions reside in the experimental - -- portion of the MIB until they are "proven", then as a - -- part of the Internet standardization process, the - -- definitions are accordingly elevated and a new object - -- identifier, under the transmission group is defined. By - -- convention, the name assigned is: - -- - -- type OBJECT IDENTIFIER ::= { transmission number } - -- - -- where "type" is the symbolic value used for the media in - -- the ifType column of the ifTable object, and "number" is - -- the actual integer value corresponding to the symbol. - - - -- the SNMP group - - -- Implementation of the SNMP group is mandatory for all - -- systems which support an SNMP protocol entity. Some of - -- the objects defined below will be zero-valued in those - -- SNMP implementations that are optimized to support only - -- those functions specific to either a management agent or - -- a management station. In particular, it should be - -- observed that the objects below refer to an SNMP entity, - -- and there may be several SNMP entities residing on a - -- managed node (e.g., if the node is hosting acting as - -- a management station). - - snmpInPkts OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of Messages delivered to the - SNMP entity from the transport service." - ::= { snmp 1 } - - snmpOutPkts OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of SNMP Messages which were - passed from the SNMP protocol entity to the - transport service." - ::= { snmp 2 } - - snmpInBadVersions OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of SNMP Messages which were - delivered to the SNMP protocol entity and were for - an unsupported SNMP version." - ::= { snmp 3 } - - snmpInBadCommunityNames OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of SNMP Messages delivered to - the SNMP protocol entity which used a SNMP - community name not known to said entity." - ::= { snmp 4 } - - snmpInBadCommunityUses OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of SNMP Messages delivered to - the SNMP protocol entity which represented an SNMP - operation which was not allowed by the SNMP - community named in the Message." - ::= { snmp 5 } - - snmpInASNParseErrs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of ASN.1 or BER errors - encountered by the SNMP protocol entity when - decoding received SNMP Messages." - ::= { snmp 6 } - - -- { snmp 7 } is not used - - snmpInTooBigs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of SNMP PDUs which were - delivered to the SNMP protocol entity and for - which the value of the error-status field is - `tooBig'." - ::= { snmp 8 } - - snmpInNoSuchNames OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of SNMP PDUs which were - delivered to the SNMP protocol entity and for - which the value of the error-status field is - `noSuchName'." - ::= { snmp 9 } - - snmpInBadValues OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of SNMP PDUs which were - delivered to the SNMP protocol entity and for - which the value of the error-status field is - `badValue'." - ::= { snmp 10 } - - snmpInReadOnlys OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number valid SNMP PDUs which were - delivered to the SNMP protocol entity and for - which the value of the error-status field is - `readOnly'. It should be noted that it is a - protocol error to generate an SNMP PDU which - contains the value `readOnly' in the error-status - field, as such this object is provided as a means - of detecting incorrect implementations of the - SNMP." - ::= { snmp 11 } - - snmpInGenErrs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of SNMP PDUs which were - delivered to the SNMP protocol entity and for - which the value of the error-status field is - `genErr'." - ::= { snmp 12 } - - snmpInTotalReqVars OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of MIB objects which have been - retrieved successfully by the SNMP protocol entity - as the result of receiving valid SNMP Get-Request - and Get-Next PDUs." - ::= { snmp 13 } - - snmpInTotalSetVars OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of MIB objects which have been - altered successfully by the SNMP protocol entity - as the result of receiving valid SNMP Set-Request - PDUs." - ::= { snmp 14 } - - snmpInGetRequests OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of SNMP Get-Request PDUs which - have been accepted and processed by the SNMP - protocol entity." - ::= { snmp 15 } - - snmpInGetNexts OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of SNMP Get-Next PDUs which have - been accepted and processed by the SNMP protocol - entity." - ::= { snmp 16 } - - snmpInSetRequests OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of SNMP Set-Request PDUs which - have been accepted and processed by the SNMP - protocol entity." - ::= { snmp 17 } - - snmpInGetResponses OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of SNMP Get-Response PDUs which - have been accepted and processed by the SNMP - protocol entity." - ::= { snmp 18 } - - snmpInTraps OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of SNMP Trap PDUs which have - been accepted and processed by the SNMP protocol - entity." - ::= { snmp 19 } - - snmpOutTooBigs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of SNMP PDUs which were - generated by the SNMP protocol entity and for - which the value of the error-status field is - `tooBig.'" - ::= { snmp 20 } - - snmpOutNoSuchNames OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of SNMP PDUs which were - generated by the SNMP protocol entity and for - which the value of the error-status is - `noSuchName'." - ::= { snmp 21 } - - snmpOutBadValues OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of SNMP PDUs which were - generated by the SNMP protocol entity and for - which the value of the error-status field is - `badValue'." - ::= { snmp 22 } - - -- { snmp 23 } is not used - - snmpOutGenErrs OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of SNMP PDUs which were - generated by the SNMP protocol entity and for - which the value of the error-status field is - `genErr'." - ::= { snmp 24 } - - snmpOutGetRequests OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of SNMP Get-Request PDUs which - have been generated by the SNMP protocol entity." - ::= { snmp 25 } - - snmpOutGetNexts OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of SNMP Get-Next PDUs which have - been generated by the SNMP protocol entity." - ::= { snmp 26 } - - snmpOutSetRequests OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of SNMP Set-Request PDUs which - have been generated by the SNMP protocol entity." - ::= { snmp 27 } - - snmpOutGetResponses OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of SNMP Get-Response PDUs which - have been generated by the SNMP protocol entity." - ::= { snmp 28 } - - snmpOutTraps OBJECT-TYPE - SYNTAX Counter - ACCESS read-only - STATUS mandatory - DESCRIPTION - "The total number of SNMP Trap PDUs which have - been generated by the SNMP protocol entity." - ::= { snmp 29 } - - snmpEnableAuthenTraps OBJECT-TYPE - SYNTAX INTEGER { enabled(1), disabled(2) } - ACCESS read-write - STATUS mandatory - DESCRIPTION - "Indicates whether the SNMP agent process is - permitted to generate authentication-failure - traps. The value of this object overrides any - configuration information; as such, it provides a - means whereby all authentication-failure traps may - be disabled. - - Note that it is strongly recommended that this - object be stored in non-volatile memory so that it - remains constant between re-initializations of the - network management system." - ::= { snmp 30 } - -END diff --git a/ASNMP/tests/Address_Test.cpp b/ASNMP/tests/Address_Test.cpp deleted file mode 100644 index 01347ae30e1..00000000000 --- a/ASNMP/tests/Address_Test.cpp +++ /dev/null @@ -1,557 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// tests -// -// = FILENAME -// Address_Test.cpp -// -// = DESCRIPTION -// Test all the member functions of the Address family: -// GenAddress, MacAddress, IpxAddress, IpAddress, UdpAddress -// all which derive from abstract base class Address. -// -// = AUTHOR -// Michael R. MacFaden -// -// ============================================================================ -/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -Copyright 1997 Cisco Systems, Inc. - -Permission to use, copy, modify, and distribute this software for any -purpose and without fee is hereby granted, provided that this -copyright and permission notice appear on all copies of the software and -supporting documentation, the name of Cisco Systems, Inc. not be used -in advertising or publicity pertaining to distribution of the -program without specific prior permission, and notice be given -in supporting documentation that modification, copying and distribution is by -permission of Cisco Systems, Inc. - -Cisco Systems, Inc. makes no representations about the suitability of this -software for any purpose. THIS SOFTWARE IS PROVIDED ``AS IS'' -AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT -LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGMENT AND -FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL CISCO SYSTEMS, INC. BE -LIABLE FOR ANY DAMAGES ARISING OUT OF THIS LICENSE OR YOUR USE OF THE -SOFTWARE INCLUDING WITHOUT LIMITATION, DIRECT, INDIRECT OR CONSEQUENTIAL -DAMAGES. --=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/ - -#include "asnmp/address.h" -#include "test_config.h" - -ACE_RCSID(tests, Address_Test, "$Id$") - -// hack: do this so when linking SUNC 4.x compiler will instantiate template -#include "ace/Containers.h" -ACE_Unbounded_Set x; - -// test the GenAddress interface -/* - */ -static void TestGenAddr() -{ - ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress: Tests: var(expected) [actual]\n")); - - // the constructors and destructors - GenAddress *ga1 = new GenAddress("1.2.3.4"); // use ipv4 address - ACE_ASSERT(ga1->valid() == 1); - GenAddress ga2(*ga1); // copy constructor; - ACE_ASSERT(ga2.valid() == 1); - GenAddress ga3("localhost"); - ACE_ASSERT(ga3.valid() == 1); - GenAddress ga4; // default constructor - ACE_ASSERT(ga4.valid() == 0); - GenAddress ga5; // default constructor - ACE_ASSERT(ga5.valid() == 0); - GenAddress ga6("127.0.0.1:7"); // udp address - ACE_ASSERT(ga6.valid() == 1); - GenAddress ga7("01234567.89ABcDeF0123"); // ipx address - ACE_ASSERT(ga7.valid() == 1); - IpAddress ip("1.2.3.4"); - ACE_ASSERT(ip.valid() == 1); - GenAddress ga8(ip); // Address conversion - ACE_ASSERT(ga8.valid() == 1); - - const char *ptr = (const char *)ga8; - - ACE_ASSERT(ga1 != 0); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress:ga1(\"1.2.3.4\") [%s]\n", - ga1->to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress:ga2(ga1) [%s]\n", - ga2.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress:ga3(\"localhost\") [%s]\n", - ga3.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress:ga4(\"\") [%s]\n", - ga4.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress:ga6(\"127.0.0.1:7\") [%s]\n", - ga6.to_string())); - - ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress:ga7(\"01234567.89ABcDeF0123\") [%s]\n", - ga7.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress:ga8(\"1.2.3.4\") [%s]\n", - ga8.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress:ga8(\"1.2.3.4\") [%s]\n", - ptr)); - - // Test Assignment x = y, y = x - ga5 = ga3; // regular assignment - ga3 = ga3; // self assignment - ACE_ASSERT(ga5 == ga3); - - ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress:ga5=ga3(\"localhost\") [%s]\n", - ga5.to_string())); - - addr_type a = ga2.get_type(); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress:ga2.get_type(\"0\") [%d]\n", - a)); - // udp address string - a = ga6.get_type(); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress:ga2.get_type(\"2\") [%d]\n", - a)); - - // udp address string - a = ga7.get_type(); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress:ga2.get_type(\"1\") [%d]\n", - a)); - - delete ga1, ga1 = 0; -} - -/* public methods - IpAddress( const char *inaddr = ""); - IpAddress( const IpAddress &ipaddr); - IpAddress( const GenAddress &genaddr); - ~IpAddress(); - SnmpSyntax& operator=( SnmpSyntax &val); - IpAddress& operator=( const IpAddress &ipaddress); - SnmpSyntax *clone() const; - char *resolve_hostname(int &status); - virtual char *to_string() ; - virtual operator const char *() const; - void mask( const IpAddress& ipaddr); - virtual addr_type get_type() const; - virtual SmiUINT32 get_syntax(); - int is_loopback() const; - int is_multicast() const; - int is_broadcast() const; - int is_arpanet() const; - */ -static void TestIpAddress() -{ - ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpAddress: Tests\n")); - - // constructors - GenAddress ga("255.255.255.255"); - IpAddress ia1; - IpAddress ia2("224.2.3.4"); - ACE_ASSERT(ia2.is_multicast()); - ACE_ASSERT(!ia2.is_loopback()); - IpAddress ia3("localhost"); - ACE_ASSERT(ia3.is_loopback()); - ACE_ASSERT(!ia3.is_multicast()); - IpAddress ia4(ia3); - ACE_ASSERT(ia4.is_loopback()); - ACE_ASSERT(!ia4.is_multicast()); - IpAddress ia5(ga); - ACE_ASSERT(ia5.is_broadcast()); - IpAddress ia6 = IpAddress("10.0.0.2"); - ACE_ASSERT(ia6.is_private()); - ACE_ASSERT(!ia6.is_multicast()); - ACE_ASSERT(!ia6.is_loopback()); - - IpAddress ia7("172.16.0.1"); - ACE_ASSERT(ia7.is_private()); - - IpAddress ia8("192.168.0.1"); - ACE_ASSERT(ia8.is_private()); - - ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpAddress:ia1(\"\") [%s]\n", - ia1.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpAddress:ia2(\"1.2.3.4\") [%s]\n", - ia2.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpAddress:ia3(\"127.0.0.1\") [%s]\n", - ia3.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpAddress:ia4(\"ia3\") [%s]\n", - ia4.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpAddress:ia5(\"255.255.255.255\") [%s]\n", - ia5.to_string())); - - // other routines - int status = 1; - const char *ptr = ia5.resolve_hostname(status); - ACE_ASSERT(status == 0); - ACE_ASSERT(ptr != 0); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpAddress:ia5.resolve_hostname():(\"\") [%s]\n", - ptr)); - - // now lets try one we setup with a hostname - ptr = ia3.resolve_hostname(status); - ACE_ASSERT(status == 0); - ACE_ASSERT(ptr != 0); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpAddress:ia3.resolve_hostname()(\"localhost\") [%s]\n", - ptr)); - - ptr = (const char *)ia5; - ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpAddress:(const char *)(\"255.255.255.255\") [%s]\n", - ptr)); - - ia2 = ia3; - ACE_ASSERT(ia2 == ia3); - - ia4.mask(ia3); // mask with equal value should return same - ACE_ASSERT(ia2 == ia3); - - ACE_ASSERT(ia1.get_type() == type_ip); - ACE_ASSERT(ia1.valid() == 0); - ACE_ASSERT(ia2.get_type() == type_ip); - ACE_ASSERT(ia2.valid() == 1); - ACE_ASSERT(ia3.get_type() == type_ip); - ACE_ASSERT(ia3.valid() == 1); - ACE_ASSERT(ia4.get_type() == type_ip); - ACE_ASSERT(ia4.valid() == 1); - ACE_ASSERT(ia5.get_type() == type_ip); - ACE_ASSERT(ia5.valid() == 1); -} - - -// --------------- Netbios --------------- -/* - NetbiosAddress( const char *inaddr = ""); - NetbiosAddress( const NetbiosAddress& nbaddr); - NetbiosAddress( const GenAddress& genaddr); - ~NetbiosAddress(); - virtual char *to_string(); - NetbiosAddress& operator=( const NetbiosAddress &nbaddr); - nb_service get_service_type() const; - void set_service_type(nb_service nbservice); - virtual operator const char *() const; - virtual SmiUINT32 get_syntax(); - SnmpSyntax& operator=( SnmpSyntax &val); - SnmpSyntax *clone() const; - */ -static void TestNetbiosAddress() -{ - NetbiosAddress n1; - ACE_ASSERT(n1.valid() == 0); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) NetbiosAddress:n1(\"\") [%s]\n", - n1.to_string())); - - NetbiosAddress n2(n1); - ACE_ASSERT(n2.valid() == 0); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) NetbiosAddress:n2(n1) [%s]\n", - n2.to_string())); - - NetbiosAddress n3("pcname"); - ACE_ASSERT(n3.valid() == 1); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) NetbiosAddress:n3(\"pcname\") [%s]\n", - n3.to_string())); - - NetbiosAddress n4("abcdefghigjklmn"); - n4.set_service_type(nb_workstation); - ACE_ASSERT(n4.valid() == 1); - ACE_ASSERT(n4.get_service_type() == nb_workstation); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) NetbiosAddress:n4(\"abcdefghigjklmn\") [%s]\n", - n4.to_string())); - - NetbiosAddress n5("abcdefghigjklmno0xx"); - ACE_ASSERT(n5.valid() == 0); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) NetbiosAddress:n4(\"abcdefghigjklmno0xx\") [%s]\n", - n5.to_string())); - - n1 = n4; - ACE_ASSERT(n1 == n4); - ACE_ASSERT(strcmp((const char *)n1, (const char *)n4) == 0); - - n1.set_service_type(nb_server); - nb_service x = n1.get_service_type(); - ACE_ASSERT(x == nb_server); -} - -// --------------- IPX --------------- -/* - IpxAddress( void); - IpxAddress( const char *inaddr); - IpxAddress( const IpxAddress &ipxaddr); - IpxAddress( const GenAddress &genaddr); - ~IpxAddress(); - virtual SmiUINT32 get_syntax(); - SnmpSyntax& operator=( SnmpSyntax &val); - IpxAddress& operator=( const IpxAddress &ipxaddress); - int get_hostid( MacAddress& mac); - SnmpSyntax *clone() const; - virtual operator const char *() const; - virtual addr_type get_type() const; - -Ipx Address semantics: Total length must be 21 -// Must have a separator in it -// First string length must be 8 -// Second string length must be 12 -// Each char must take on value 0-F -// -// -// Input formats recognized -// -// XXXXXXXX.XXXXXXXXXXXX -// XXXXXXXX:XXXXXXXXXXXX -// XXXXXXXX-XXXXXXXXXXXX -// XXXXXXXX.XXXXXX-XXXXXX -// XXXXXXXX:XXXXXX-XXXXXX -// XXXXXXXX-XXXXXX-XXXXXX - - */ - -static void TestIpxAddress() -{ - ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpxAddress: Tests\n")); - IpxAddress xa1; - ACE_ASSERT(xa1.valid() == 0); - ACE_ASSERT(xa1.get_type() == type_ipx); - GenAddress gen("01234567.0123456789AB"); - ACE_ASSERT(gen.valid() == 1); - IpxAddress xa2("01234567.0123456789AB"); - ACE_ASSERT(xa2.get_type() == type_ipx); - ACE_ASSERT(xa2.valid() == 1); - IpxAddress xa3("01234567:0123456789AB"); - ACE_ASSERT(xa3.get_type() == type_ipx); - ACE_ASSERT(xa3.valid() == 1); - IpxAddress xa4("01234567-0123456789AB"); - ACE_ASSERT(xa4.get_type() == type_ipx); - ACE_ASSERT(xa4.valid() == 1); - IpxAddress xa5("01234567.012345-6789AB"); - ACE_ASSERT(xa5.get_type() == type_ipx); - ACE_ASSERT(xa5.valid() == 1); - IpxAddress xa6("01234567:012345-6789AB"); - ACE_ASSERT(xa6.get_type() == type_ipx); - ACE_ASSERT(xa6.valid() == 1); - IpxAddress xa7("01234567-012345-6789AB"); - ACE_ASSERT(xa7.get_type() == type_ipx); - ACE_ASSERT(xa7.valid() == 1); - IpxAddress xa8("01234567."); - ACE_ASSERT(xa8.get_type() == type_ipx); - ACE_ASSERT(xa8.valid() == 0); - IpxAddress xa9(gen); - ACE_ASSERT(xa9.valid() == 1); - IpxAddress *xa10 = new IpxAddress(xa9); - ACE_ASSERT(xa10->get_type() == type_ipx); - ACE_ASSERT(xa10->valid() == 1); - delete xa10; - - ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpxAddress:xa1(\"\") [%s]\n", - xa1.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpxAddress:xa2(\"01234567.0123456789AB\") [%s]\n", - xa2.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpxAddress:xa3(\"01234567:0123456789A\") [%s]\n", - xa3.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpxAddress:xa4(\"01234567-0123456789AB\") [%s]\n", - xa4.to_string())); - - ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpxAddress:xa5(\"01234567.012345-6789AB\") [%s]\n", - xa5.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpxAddress:xa6(\"01234567:012345-6789AB\") [%s]\n", - xa6.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpxAddress:xa7(\"01234567-012345-6789AB\") [%s]\n", - xa7.to_string())); - - // assignment - xa1 = xa3; - ACE_ASSERT(xa1 == xa3); - MacAddress mac; - ACE_ASSERT(xa4.get_hostid(mac) == 1); - ACE_ASSERT(mac.valid() == 1); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpxAddress:xa4:get_hostid(\"01:23:45:67:89:ab\") [%s]\n", mac.to_string())); - - const char *ptr = (const char *)xa7; - ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpxAddress:xa7-ptr(\"01234567-012345-6789AB\") [%s]\n", ptr)); - -} - -/* - MacAddress( void); - - MacAddress( const char *inaddr); - MacAddress( const MacAddress &macaddr); - MacAddress( const GenAddress &genaddr); - ~MacAddress(); -* SmiUINT32 get_syntax(); -* SnmpSyntax& operator=( SnmpSyntax &val); - MacAddress& operator=( const MacAddress &macaddress); -* SnmpSyntax *clone() const; - virtual char *to_string(); - virtual operator const char *() const; - virtual addr_type get_type() const; - unsigned int hashFunction() const; - -// MAC address format -// -// MAC ADDRESS -// 01 02 03 04 05 06 -// XX:XX:XX:XX:XX:XX -// Valid input format -// -// XXXXXXXXXXXX -// Total length must be 17 -// Each char must take on value 0-F -// - -*/ - -static void TestMacAddress() -{ - - ACE_DEBUG ((LM_DEBUG, "(%P|%t) MacAddress: Tests\n")); - - MacAddress ma1; - ACE_ASSERT(ma1.valid() == 0); - ACE_ASSERT(ma1.get_type() == type_mac); - MacAddress ma2("01:23:45:67:89:AB"); - ACE_ASSERT(ma2.valid() == 1); - ACE_ASSERT(ma2.get_type() == type_mac); - MacAddress ma3("0123456789ABCEFGHI"); // invalid string - ACE_ASSERT(ma3.valid() == 0); - ACE_ASSERT(ma3.get_type() == type_mac); - GenAddress ga("01:23:45:67:89:AB"); // mac address - MacAddress ma4(ma2); - ACE_ASSERT(ma4.valid() == 1); - ACE_ASSERT(ma4.get_type() == type_mac); - MacAddress ma5(ga); - ACE_ASSERT(ma5.valid() == 0); - ACE_ASSERT(ma5.get_type() == type_mac); - - ma1 = ma2; - - ACE_DEBUG ((LM_DEBUG, "(%P|%t) MacAddress:ma1(\"01:23:45:67:89:AB\") [%s]\n", - ma1.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) MacAddress:ma2(\"01:23:45:67:89:AB\") [%s]\n", - ma2.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) MacAddress:ma3(\"\") [%s]\n", - ma3.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) MacAddress:ma4(\"01:23:45:67:89:AB\") [%s]\n", - ma4.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) MacAddress:ma5(\"\") [%s]\n", - ma5.to_string())); - const char * ptr = (const char *)ma5; - ACE_DEBUG ((LM_DEBUG, "(%P|%t) MacAddress:ma5(\"\") [%s]\n", - ptr)); - - // hashFunction crashes if not usedwith valid fn - int x = ma2.hashFunction(); - - ACE_DEBUG ((LM_DEBUG, "(%P|%t) MacAddress:ma2.hashFunction(\"483201\") [%d]\n", - x)); -} - -/* - UdpAddress( void); - UdpAddress( const char *inaddr); - UdpAddress( const UdpAddress &udpaddr); - UdpAddress( const GenAddress &genaddr); - UdpAddress( const IpAddress &ipaddr); - ~UdpAddress(); - SmiUINT32 get_syntax(); - SnmpSyntax& operator=( SnmpSyntax &val); - UdpAddress& operator=( const UdpAddress &udpaddr); - SnmpSyntax *clone() const; - virtual char *to_string() ; - virtual operator const char *() const; - void set_port( const unsigned short p); - unsigned short get_port() const; - virtual addr_type get_type() const; - - // look for port info @ the end of the string - // port can be delineated by a ':' or a '/' - // if neither are present then just treat it - // like a normal IpAddress - - */ - -static void TestUdpAddress() -{ - ACE_DEBUG ((LM_DEBUG, "(%P|%t) UdpAddress: Tests\n")); - - UdpAddress ua1; - ACE_ASSERT(ua1.valid() == 0); - ACE_ASSERT(ua1.get_type() == type_udp); - - // semantics of not setting the port here are bizzare? - UdpAddress ua2("127.0.0.1:161"); - ACE_ASSERT(ua2.valid() == 1); - ACE_ASSERT(ua2.get_type() == type_udp); - - UdpAddress ua3(ua2); - ACE_ASSERT(ua3.valid() == 1); - ACE_ASSERT(ua3.get_type() == type_udp); - - GenAddress ga("localhost"); - UdpAddress ua4(ga); - ACE_ASSERT(ua4.valid() == 1); - ACE_ASSERT(ua4.get_type() == type_udp); - - IpAddress ia("localhost"); - UdpAddress ua5(ga); - ACE_ASSERT(ua5.valid() == 1); - ACE_ASSERT(ua5.get_type() == type_udp); - - UdpAddress *ua6 = new UdpAddress("localhost:161"); - ACE_ASSERT(ua6->valid() == 1); - ACE_ASSERT(ua6->get_type() == type_udp); - - UdpAddress ua7 = UdpAddress("localhost/162"); - ACE_ASSERT(ua7.valid() == 1); - ACE_ASSERT(ua7.get_type() == type_udp); - - - ACE_DEBUG ((LM_DEBUG, "(%P|%t) UdpAddress:ua1(\"\") [%s]\n", - ua1.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) UdpAddress:ua2(\"127.0.0.1:161\") [%s]\n", - ua2.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) UdpAddress:ua3(ua2)(\"127.0.0.1:161\") [%s]\n", - ua3.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) UdpAddress:ua4(GenAddress)(\"127.0.0.1\") [%s]\n", - ua4.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) UdpAddress:ua5(IpAddress)(\"127.0.0.1\") [%s]\n", - ua5.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) UdpAddress:ua6()(\"localhost:161\") [%s]\n", - ua6->to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) UdpAddress:ua7()(\"localhost/162\") [%s]\n", - ua7.to_string())); - - delete ua6; // destructor - - // assignement tests. - ua1 = ua2; - ACE_ASSERT(ua1 == ua2); - ACE_ASSERT(ua1.valid() == 1); - ua1 = ua1; - ACE_ASSERT(ua1 == ua1); - ACE_ASSERT(ua1.valid() == 1); - - // set/get port - ua1.set_port(333); - ACE_ASSERT(ua1.get_port() == 333); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) UdpAddress:ua1.set_port()(\"333\") [%s]\n", - (const char *)ua1)); - -} - -int -main (int, char *[]) -{ - ACE_START_TEST ("Address_Test"); - - TestGenAddr(); - TestIpAddress(); - TestUdpAddress(); - TestMacAddress(); - TestNetbiosAddress(); - TestIpxAddress(); - - ACE_END_TEST; - return 0; -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Unbounded_Set; -#endif diff --git a/ASNMP/tests/Counter64_Test.cpp b/ASNMP/tests/Counter64_Test.cpp deleted file mode 100644 index 835bf193517..00000000000 --- a/ASNMP/tests/Counter64_Test.cpp +++ /dev/null @@ -1,163 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// tests -// -// = FILENAME -// Counter64_Test.cpp -// -// = DESCRIPTION -// Test all the member functions of the Counter64 class. An Object -// representing an ASN.1 Counter64 SMI 64 bit Integer SYNTAX. -// (SNMPv2c) -// = AUTHOR -// Michael R. MacFaden -// -// ============================================================================ -/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -Copyright 1997 Cisco Systems, Inc. - -Permission to use, copy, modify, and distribute this software for any -purpose and without fee is hereby granted, provided that this -copyright and permission notice appear on all copies of the software and -supporting documentation, the name of Cisco Systems, Inc. not be used -in advertising or publicity pertaining to distribution of the -program without specific prior permission, and notice be given -in supporting documentation that modification, copying and distribution is by -permission of Cisco Systems, Inc. - -Cisco Systems, Inc. makes no representations about the suitability of this -software for any purpose. THIS SOFTWARE IS PROVIDED ``AS IS'' -AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT -LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGMENT AND -FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL CISCO SYSTEMS, INC. BE -LIABLE FOR ANY DAMAGES ARISING OUT OF THIS LICENSE OR YOUR USE OF THE -SOFTWARE INCLUDING WITHOUT LIMITATION, DIRECT, INDIRECT OR CONSEQUENTIAL -DAMAGES. --=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/ - - -#include "ace/OS.h" -#include "asnmp/ctr64.h" -#include "test_config.h" - -ACE_RCSID(tests, Counter64_Test, "$Id$") - -// hack: do this so when linking SUNC 4.x compiler will instantiate template -#include "ace/Containers.h" -ACE_Unbounded_Set x; - -// TODO: verify this with ACE folks -#if defined(_WIN32) -#define LLONG __int64 -#else -#define LLONG long long -#define ULLONG unsigned long long -#endif - -/* - Counter64( unsigned long long llw = 0); - Counter64( unsigned long hiparm, unsigned long loparm); - Counter64( const Counter64 &ctr64); - ~Counter64(); - SmiUINT32 get_syntax(); - long double to_long_double() const; - Counter64& assign( long double ld); - unsigned long high() const; - unsigned long low() const; - void set_high( const unsigned long h); - void set_low( const unsigned long l); - Counter64& operator=( const unsigned long long rhs); - Counter64& operator=( const Counter64 &rhs); - char *to_string(); - SnmpSyntax *clone() const; - SnmpSyntax& operator=( SnmpSyntax &val); - int valid() const; - operator unsigned long long(); - */ - -static void TestCounter64() -{ - static unsigned long ul = ULONG_MAX; - LLONG ll = (LLONG) 0x7fffffffffffffff; - LLONG mll = (LLONG) ((-ll) - 1); - ULLONG ull = (ULLONG) 0xffffffffffffffff; - long double ld = (LLONG) ll; - - cerr << "max unsigned long long is " << ull << endl; - cerr << "max long long is " << ll << endl; - cerr << "min long long is " << mll << endl; - - Counter64 c1; - ACE_ASSERT(c1.valid() == 1); - Counter64 c2(ul, ul); - ACE_ASSERT(c2.valid() == 1); - ACE_ASSERT(c2.high() == ul); - ACE_ASSERT(c2.low() == ul); - - Counter64 c3(ul); - ACE_ASSERT(c3.valid() == 1); - ACE_ASSERT(c3.low() == ul); - - Counter64 c4(c2); - ACE_ASSERT(c4.valid() == 1); - ACE_ASSERT(c4.high() == ul); - ACE_ASSERT(c4.low() == ul); - - Counter64 c5(0); - ACE_ASSERT(c5.valid() == 1); - - Counter64 c6; - c6.assign(ld); - ACE_ASSERT(c6.to_long_double() == ld); - - Counter64 c7(ull); - ACE_ASSERT(c7 == ull); - - - ACE_DEBUG ((LM_DEBUG, "(%P|%t) c1(\"\") [%s]\n", - c1.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) c2(LONG_MAX,LONG_MAX) [%s]\n", - c2.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) c3(LONG_MAX) [%s]\n", - c3.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) c4(c2) [%s]\n", - c4.to_string())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) c5(0) [%s]\n", - c5.to_string())); - - // misc routines - c1.set_low(1); - c1.set_high(2); - ACE_ASSERT(c1.low() == 1); - ACE_ASSERT(c1.high() == 2); - // assignment - c5 = c4; - ACE_ASSERT(c5 == c4); - c4 = c4; - ACE_ASSERT(c5 == c4); - c5 = ll; - ACE_ASSERT(c5 == ll); - // try simple arithmetic (needs more test cases) - c5 = mll; - c5 = c5 + (ULLONG) 10; - ACE_ASSERT(c5 == (mll + 10)); -} - -int -main (int, char *[]) -{ - ACE_START_TEST ("Counter64_Test"); - - TestCounter64(); - - ACE_END_TEST; - return 0; -} - - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Unbounded_Set; -#endif diff --git a/ASNMP/tests/Counter_Test.cpp b/ASNMP/tests/Counter_Test.cpp deleted file mode 100644 index d7be4862ea7..00000000000 --- a/ASNMP/tests/Counter_Test.cpp +++ /dev/null @@ -1,146 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// tests -// -// = FILENAME -// Counter_Test.cpp -// -// = DESCRIPTION -// Test all the member functions of the Counter class. An Object -// representing an ASN.1 Counter SMI COUNTER SYNTAX. -// = AUTHOR -// Michael R. MacFaden -// -// ============================================================================ -/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -Copyright 1997 Cisco Systems, Inc. - -Permission to use, copy, modify, and distribute this software for any -purpose and without fee is hereby granted, provided that this -copyright and permission notice appear on all copies of the software and -supporting documentation, the name of Cisco Systems, Inc. not be used -in advertising or publicity pertaining to distribution of the -program without specific prior permission, and notice be given -in supporting documentation that modification, copying and distribution is by -permission of Cisco Systems, Inc. - -Cisco Systems, Inc. makes no representations about the suitability of this -software for any purpose. THIS SOFTWARE IS PROVIDED ``AS IS'' -AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT -LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGMENT AND -FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL CISCO SYSTEMS, INC. BE -LIABLE FOR ANY DAMAGES ARISING OUT OF THIS LICENSE OR YOUR USE OF THE -SOFTWARE INCLUDING WITHOUT LIMITATION, DIRECT, INDIRECT OR CONSEQUENTIAL -DAMAGES. --=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/ - - -#include "ace/OS.h" -#include "asnmp/counter.h" -#include "test_config.h" - -ACE_RCSID(tests, Counter_Test, "$Id$") - -// hack: do this so when linking SUNC 4.x compiler will instantiate template -#include "ace/Containers.h" -ACE_Unbounded_Set x; - - -/* - Counter32( void); - Counter32( const unsigned long i); - Counter32( const Counter32 &c); -* SmiUINT32 get_syntax(); -* SnmpSyntax *clone() const; -* SnmpSyntax& operator=( SnmpSyntax &val); - Counter32& operator=( const Counter32 &uli); - Counter32& operator=( const unsigned long i); - operator unsigned long(); - - -- comments tyis type appears to be a wrapper class and not - a true SNMP counter. Practical for nms side,yet may lead to - some confusion if implementing an agent with this class. - - Per RFC 1155 sec 3.2.3.3 - This application-wide type represents a non-negative integer which - monotonically increases until it reaches a maximum value, when it - wraps around and starts increasing again from zero. This memo - specifies a maximum value of 2^32-1 for counters -*/ - -static void TestCounter() -{ - long l = LONG_MAX, nl = LONG_MIN; // limits.h - unsigned long ul = ULONG_MAX, def = 0; - int i = INT_MAX, ni = INT_MIN; - unsigned int ui = UINT_MAX; - unsigned short us = 10; - short si = 65535; - - // constructors - Counter32 c1; - ACE_ASSERT(c1 == def); - Counter32 c2(l); - ACE_ASSERT(c2 == l); - Counter32 c3(nl); - ACE_ASSERT(c3 == nl); - Counter32 c4(ul); - ACE_ASSERT(c4 == ul); - Counter32 c5(i); - ACE_ASSERT(c5 == i); - Counter32 c6(ni); - ACE_ASSERT(c6 == ni); - Counter32 c7(ui); - ACE_ASSERT(c7 == ui); - Counter32 *c8 = new Counter32(c5); - ACE_ASSERT(c8 != 0); - delete c8; - - ACE_DEBUG ((LM_DEBUG, "(%P|%t) c1(\"\") [%u]\n", - (unsigned long)c1)); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) c2(\"%u\") [%u]\n", - l, (unsigned long)c2)); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) c3(\"%u\") [%u]\n", - nl, (unsigned long)c3)); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) c4(\"%u\") [%u]\n", - ul, (unsigned long)c4)); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) c5(\"%u\") [%u]\n", - i, (unsigned long)c5)); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) c6(\"%u\") [%u]\n", - ni, (unsigned long)c6)); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) c7(\"%u\") [%u]\n", - ui, (unsigned long)c7)); - - // assignent - c1 = c2; // obj - ACE_ASSERT(c1 == c2); - c1 = c1; // self - ACE_ASSERT(c1 == c1); - c1 = def; // unsigned long - ACE_ASSERT(c1 == def); - c1 = us; // unsigned short - ACE_ASSERT(c1 == us); - c1 = si; // unsigned short - ACE_ASSERT(c1 == si); - -} - - -int -main (int, char *[]) -{ - ACE_START_TEST ("Counter_Test"); - - TestCounter(); - - ACE_END_TEST; - return 0; -} - - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Unbounded_Set; -#endif diff --git a/ASNMP/tests/Gauge_Test.cpp b/ASNMP/tests/Gauge_Test.cpp deleted file mode 100644 index 7c2faa436e2..00000000000 --- a/ASNMP/tests/Gauge_Test.cpp +++ /dev/null @@ -1,136 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// tests -// -// = FILENAME -// Guage_Test.cpp -// -// = DESCRIPTION -// Test all the member functions of the Guage class. An Object -// representing an ASN.1 Counter SMI GUAGE SYNTAX. -// = AUTHOR -// Michael R. MacFaden -// -// ============================================================================ -/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -Copyright 1997 Cisco Systems, Inc. - -Permission to use, copy, modify, and distribute this software for any -purpose and without fee is hereby granted, provided that this -copyright and permission notice appear on all copies of the software and -supporting documentation, the name of Cisco Systems, Inc. not be used -in advertising or publicity pertaining to distribution of the -program without specific prior permission, and notice be given -in supporting documentation that modification, copying and distribution is by -permission of Cisco Systems, Inc. - -Cisco Systems, Inc. makes no representations about the suitability of this -software for any purpose. THIS SOFTWARE IS PROVIDED ``AS IS'' -AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT -LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGMENT AND -FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL CISCO SYSTEMS, INC. BE -LIABLE FOR ANY DAMAGES ARISING OUT OF THIS LICENSE OR YOUR USE OF THE -SOFTWARE INCLUDING WITHOUT LIMITATION, DIRECT, INDIRECT OR CONSEQUENTIAL -DAMAGES. --=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/ - -#include "ace/OS.h" -#include "asnmp/gauge.h" -#include "test_config.h" - -ACE_RCSID(tests, Gauge_Test, "$Id$") - -// hack: do this so when linking SUNC 4.x compiler will instantiate template -#include "ace/Containers.h" -ACE_Unbounded_Set x; - -/* - Gauge32( void); - Gauge32( const unsigned long i); - Gauge32 ( const Gauge32 &g); - ~Gauge32(); - SmiUINT32 get_syntax(); - SnmpSyntax *clone() const; - Gauge32& operator=( const Gauge32 &uli); - Gauge32& operator=( const unsigned long i); - operator unsigned long(); - SnmpSyntax& operator=( SnmpSyntax &val); - --- What is a Gauge? According to RFC 1155 section: 3.2.3.4 - This application-wide type represents a non-negative integer - which may increase or decreae, but which latches at a maximum - value of 2^32-1 (4294967295 dec) for gauges. - */ -static void TestGuage() -{ - long l = LONG_MAX, nl = LONG_MIN; // limits.h - unsigned long ul = ULONG_MAX, def = 0; - int i = INT_MAX, ni = INT_MIN; - unsigned int ui = UINT_MAX; - unsigned short us = 10; - short si = 65535; - - // constructors - Gauge32 g1; - ACE_ASSERT(g1 == def); - Gauge32 g2(l); - ACE_ASSERT(g2 == l); - Gauge32 g3(nl); - ACE_ASSERT(g3 == nl); - Gauge32 g4(ul); - ACE_ASSERT(g4 == ul); - Gauge32 g5(i); - ACE_ASSERT(g5 == i); - Gauge32 g6(ni); - ACE_ASSERT(g6 == ni); - Gauge32 g7(ui); - ACE_ASSERT(g7 == ui); - Gauge32 *g8 = new Gauge32(g5); - ACE_ASSERT(g8 != 0); - delete g8; - - ACE_DEBUG ((LM_DEBUG, "(%P|%t) g1(\"\") [%u]\n", - (unsigned long)g1)); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) g2(\"%u\") [%u]\n", - l, (unsigned long)g2)); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) g3(\"%u\") [%u]\n", - nl, (unsigned long)g3)); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) g4(\"%u\") [%u]\n", - ul, (unsigned long)g4)); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) g5(\"%u\") [%u]\n", - i, (unsigned long)g5)); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) g6(\"%u\") [%u]\n", - ni, (unsigned long)g6)); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) g7(\"%u\") [%u]\n", - ui, (unsigned long)g7)); - - // assignent - g1 = g2; // obj - ACE_ASSERT(g1 == g2); - g1 = g1; // self - ACE_ASSERT(g1 == g1); - g1 = def; // unsigned long - ACE_ASSERT(g1 == def); - g1 = us; // unsigned short - ACE_ASSERT(g1 == us); - g1 = si; // unsigned short - ACE_ASSERT(g1 == si); -} - -int -main (int, char *[]) -{ - ACE_START_TEST ("Guage_Test"); - - TestGuage(); - - ACE_END_TEST; - return 0; -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Unbounded_Set; -#endif diff --git a/ASNMP/tests/Integer_Test.cpp b/ASNMP/tests/Integer_Test.cpp deleted file mode 100644 index 264bcef5529..00000000000 --- a/ASNMP/tests/Integer_Test.cpp +++ /dev/null @@ -1,202 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// tests -// -// = FILENAME -// Integer_Test.cpp -// -// = DESCRIPTION -// Test all the member functions of the Integer class. An Object -// representing an ASN.1 Integer64 SMI 32 bit Integer SYNTAX. -// -// = AUTHOR -// Michael R. MacFaden -// -// ============================================================================ -/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -Copyright 1997 Cisco Systems, Inc. - -Permission to use, copy, modify, and distribute this software for any -purpose and without fee is hereby granted, provided that this -copyright and permission notice appear on all copies of the software and -supporting documentation, the name of Cisco Systems, Inc. not be used -in advertising or publicity pertaining to distribution of the -program without specific prior permission, and notice be given -in supporting documentation that modification, copying and distribution is by -permission of Cisco Systems, Inc. - -Cisco Systems, Inc. makes no representations about the suitability of this -software for any purpose. THIS SOFTWARE IS PROVIDED ``AS IS'' -AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT -LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGMENT AND -FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL CISCO SYSTEMS, INC. BE -LIABLE FOR ANY DAMAGES ARISING OUT OF THIS LICENSE OR YOUR USE OF THE -SOFTWARE INCLUDING WITHOUT LIMITATION, DIRECT, INDIRECT OR CONSEQUENTIAL -DAMAGES. --=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/ - - -#include "ace/OS.h" -#include "asnmp/integer.h" -#include "test_config.h" - -ACE_RCSID(tests, Integer_Test, "$Id$") - -static long l = LONG_MAX, nl = LONG_MIN; // limits.h -static unsigned long ul = ULONG_MAX, def = 0; -static int i = INT_MAX, ni = INT_MIN; -static unsigned int ui = UINT_MAX; -static unsigned short us = 10; -static short si = 65535; - -// hack: do this so when linking SUNC 4.x compiler will instantiate template -#include "ace/Containers.h" -ACE_Unbounded_Set x; - -/* - SnmpInt32( void); - SnmpInt32 (const long i); - SnmpInt32 (const SnmpInt32 &c); - virtual ~SnmpInt32(); - virtual SmiUINT32 get_syntax(); - SnmpInt32& operator=( const long i); - SnmpInt32& operator=( const SnmpInt32 &li); - operator long(); - char *to_string(); - SnmpSyntax *clone() const; - SnmpSyntax& operator=( SnmpSyntax &val); - int valid() const; - */ - -static void TestInteger32() -{ - - // constructors - SnmpInt32 i1; - ACE_ASSERT(i1 == def); - SnmpInt32 i2(l); - ACE_ASSERT(i2 == l); - SnmpInt32 i3(nl); - ACE_ASSERT(i3 == nl); - SnmpInt32 i4(ul); - ACE_ASSERT(i4 == ul); - SnmpInt32 i5(i); - ACE_ASSERT(i5 == i); - SnmpInt32 i6(ni); - ACE_ASSERT(i6 == ni); - SnmpInt32 i7(ui); - ACE_ASSERT(i7 == ui); - SnmpInt32 *i8 = new SnmpInt32(i5); - ACE_ASSERT(i8 != 0); - delete i8; - - ACE_DEBUG ((LM_DEBUG, "(%P|%t) i1(\"\") [%u]\n", - (unsigned long)i1)); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) i2(\"%u\") [%u]\n", - l, (unsigned long)i2)); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) i3(\"%u\") [%u]\n", - nl, (unsigned long)i3)); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) i4(\"%u\") [%u]\n", - ul, (unsigned long)i4)); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) i5(\"%u\") [%u]\n", - i, (unsigned long)i5)); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) i6(\"%u\") [%u]\n", - ni, (unsigned long)i6)); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) i7(\"%u\") [%u]\n", - ui, (unsigned long)i7)); - - // assignent - i1 = i2; // obj - ACE_ASSERT(i1 == i2); - i1 = i1; // self - ACE_ASSERT(i1 == i1); - i1 = def; // unsigned long - ACE_ASSERT(i1 == def); - i1 = us; // unsigned short - ACE_ASSERT(i1 == us); - i1 = si; // unsigned short - ACE_ASSERT(i1 == si); -} - -/* - SnmpUInt32( void); - SnmpUInt32 (const unsigned long i); - SnmpUInt32( const SnmpUInt32 &c); - virtual ~SnmpUInt32(); - virtual SmiUINT32 get_syntax(); - SnmpUInt32& operator=( const unsigned long i); - SnmpUInt32& operator=( const SnmpUInt32 &uli); - operator unsigned long(); - virtual char *to_string(); - virtual SnmpSyntax *clone() const; - SnmpSyntax& operator=( SnmpSyntax &val); - int valid() const; - */ -static void TestUnsignedInteger32() -{ - // constructors - SnmpUInt32 u1; - ACE_ASSERT(u1 == def); - SnmpUInt32 u2(l); - ACE_ASSERT(u2 == l); - SnmpUInt32 u3(nl); - ACE_ASSERT(u3 == nl); - SnmpUInt32 u4(ul); - ACE_ASSERT(u4 == ul); - SnmpUInt32 u5(i); - ACE_ASSERT(u5 == i); - SnmpUInt32 u6(ni); - ACE_ASSERT(u6 == ni); - SnmpUInt32 u7(ui); - ACE_ASSERT(u7 == ui); - SnmpUInt32 *u8 = new SnmpUInt32(u5); - ACE_ASSERT(u8 != 0); - delete u8; - - ACE_DEBUG ((LM_DEBUG, "(%P|%t) u1(\"\") [%u]\n", - (unsigned long)u1)); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) u2(\"%u\") [%u]\n", - l, (unsigned long)u2)); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) u3(\"%u\") [%u]\n", - nl, (unsigned long)u3)); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) u4(\"%u\") [%u]\n", - ul, (unsigned long)u4)); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) u5(\"%u\") [%u]\n", - i, (unsigned long)u5)); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) u6(\"%u\") [%u]\n", - ni, (unsigned long)u6)); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) u7(\"%u\") [%u]\n", - ui, (unsigned long)u7)); - - // assignent - u1 = u2; // obj - ACE_ASSERT(u1 == u2); - u1 = u1; // self - ACE_ASSERT(u1 == u1); - u1 = def; // unsigned long - ACE_ASSERT(u1 == def); - u1 = us; // unsigned short - ACE_ASSERT(u1 == us); - u1 = si; // unsigned short - ACE_ASSERT(u1 == si); -} - -int -main (int, char *[]) -{ - ACE_START_TEST ("Integer_Test"); - - TestInteger32(); - - TestUnsignedInteger32(); - - ACE_END_TEST; - return 0; -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Unbounded_Set; -#endif diff --git a/ASNMP/tests/Makefile b/ASNMP/tests/Makefile deleted file mode 100644 index cb166b88012..00000000000 --- a/ASNMP/tests/Makefile +++ /dev/null @@ -1,581 +0,0 @@ -#---------------------------------------------------------------------------- -# $Id$ -# -# Makefile for all the ACE+SNMP ``one-button' tests -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -# ACE+SNMP before -lACE - -BIN = Oid_Test \ - Counter_Test \ - Counter64_Test \ - Integer_Test \ - Octet_Test \ - Gauge_Test \ - Address_Test \ - Target_Test \ - Varbind_Test -CCFLAGS = -I$(ACE_ROOT)/ASNMP/ - -LSRC = $(addsuffix .cpp,$(BIN)) -LDLIBS := -L$(ACE_ROOT)/ASNMP/asnmp -lasnmp $(LDLIBS:%=%$(VAR)) - -# For make depend: -PSRC = -I.. - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU - -#---------------------------------------------------------------------------- -# Local targets -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Dependencies -#---------------------------------------------------------------------------- -# DO NOT DELETE THIS LINE -- g++dep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. - -.obj/Oid_Test.o .obj/Oid_Test.so .shobj/Oid_Test.o .shobj/Oid_Test.so: Oid_Test.cpp $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-sunos5.6.h \ - $(ACE_ROOT)/ace/config-sunos5.5.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i ../asnmp/oid.h \ - ../asnmp/smival.h ../asnmp/smi.h test_config.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i -.obj/Counter_Test.o .obj/Counter_Test.so .shobj/Counter_Test.o .shobj/Counter_Test.so: Counter_Test.cpp \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-sunos5.6.h \ - $(ACE_ROOT)/ace/config-sunos5.5.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - ../asnmp/counter.h ../asnmp/smival.h ../asnmp/smi.h \ - ../asnmp/integer.h test_config.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i -.obj/Counter64_Test.o .obj/Counter64_Test.so .shobj/Counter64_Test.o .shobj/Counter64_Test.so: Counter64_Test.cpp \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-sunos5.6.h \ - $(ACE_ROOT)/ace/config-sunos5.5.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i ../asnmp/ctr64.h \ - ../asnmp/smival.h ../asnmp/smi.h test_config.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i -.obj/Integer_Test.o .obj/Integer_Test.so .shobj/Integer_Test.o .shobj/Integer_Test.so: Integer_Test.cpp \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-sunos5.6.h \ - $(ACE_ROOT)/ace/config-sunos5.5.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - ../asnmp/integer.h ../asnmp/smival.h ../asnmp/smi.h test_config.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i -.obj/Octet_Test.o .obj/Octet_Test.so .shobj/Octet_Test.o .shobj/Octet_Test.so: Octet_Test.cpp \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-sunos5.6.h \ - $(ACE_ROOT)/ace/config-sunos5.5.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i ../asnmp/octet.h \ - ../asnmp/smival.h ../asnmp/smi.h test_config.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i -.obj/Gauge_Test.o .obj/Gauge_Test.so .shobj/Gauge_Test.o .shobj/Gauge_Test.so: Gauge_Test.cpp \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-sunos5.6.h \ - $(ACE_ROOT)/ace/config-sunos5.5.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i ../asnmp/gauge.h \ - ../asnmp/integer.h ../asnmp/smival.h ../asnmp/smi.h test_config.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i -.obj/Address_Test.o .obj/Address_Test.so .shobj/Address_Test.o .shobj/Address_Test.so: Address_Test.cpp ../asnmp/address.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-sunos5.6.h \ - $(ACE_ROOT)/ace/config-sunos5.5.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i ../asnmp/smival.h \ - ../asnmp/smi.h ../asnmp/octet.h test_config.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i -.obj/Target_Test.o .obj/Target_Test.so .shobj/Target_Test.o .shobj/Target_Test.so: Target_Test.cpp \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-sunos5.6.h \ - $(ACE_ROOT)/ace/config-sunos5.5.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i ../asnmp/octet.h \ - ../asnmp/smival.h ../asnmp/smi.h ../asnmp/target.h \ - $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/INET_Addr.i ../asnmp/address.h \ - ../asnmp/oid.h test_config.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i -.obj/Varbind_Test.o .obj/Varbind_Test.so .shobj/Varbind_Test.o .shobj/Varbind_Test.so: Varbind_Test.cpp \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-sunos5.6.h \ - $(ACE_ROOT)/ace/config-sunos5.5.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i ../asnmp/oid.h \ - ../asnmp/smival.h ../asnmp/smi.h ../asnmp/vb.h ../asnmp/snmperrs.h \ - ../asnmp/timetick.h ../asnmp/integer.h ../asnmp/counter.h \ - ../asnmp/gauge.h ../asnmp/ctr64.h ../asnmp/octet.h ../asnmp/address.h \ - test_config.h $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/ASNMP/tests/Octet_Test.cpp b/ASNMP/tests/Octet_Test.cpp deleted file mode 100644 index 1eb0c391763..00000000000 --- a/ASNMP/tests/Octet_Test.cpp +++ /dev/null @@ -1,164 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// tests -// -// = FILENAME -// Octet_Test.cpp -// -// = DESCRIPTION -// Test all the member functions of the OCTET class. An Object -// representing an ASN.1 Integer64 SMI OCTET STRING SYNTAX. -// -// = AUTHOR -// Michael R. MacFaden -// -// ============================================================================ - -/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -Copyright 1997 Cisco Systems, Inc. - -Permission to use, copy, modify, and distribute this software for any -purpose and without fee is hereby granted, provided that this -copyright and permission notice appear on all copies of the software and -supporting documentation, the name of Cisco Systems, Inc. not be used -in advertising or publicity pertaining to distribution of the -program without specific prior permission, and notice be given -in supporting documentation that modification, copying and distribution is by -permission of Cisco Systems, Inc. - -Cisco Systems, Inc. makes no representations about the suitability of this -software for any purpose. THIS SOFTWARE IS PROVIDED ``AS IS'' -AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT -LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGMENT AND -FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL CISCO SYSTEMS, INC. BE -LIABLE FOR ANY DAMAGES ARISING OUT OF THIS LICENSE OR YOUR USE OF THE -SOFTWARE INCLUDING WITHOUT LIMITATION, DIRECT, INDIRECT OR CONSEQUENTIAL -DAMAGES. --=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/ - - -#include "ace/OS.h" -#include "asnmp/octet.h" -#include "test_config.h" - -ACE_RCSID(tests, Octet_Test, "$Id$") - -// hack: do this so when linking SUNC 4.x compiler will instantiate template -#include "ace/Containers.h" -ACE_Unbounded_Set x; - -/* - OctetStr( const char *string, long size = -1); - OctetStr ( const OctetStr &octet); - ~OctetStr(); - - SmiUINT32 get_syntax(); - void set_data( const SmiBYTE* string, long int size = -1); - OctetStr& operator=( const char *string); - OctetStr& operator=( const OctetStr &octet); - - int operator==( const OctetStr &lhs, const OctetStr &rhs); - int operator!=( const OctetStr &lhs, const OctetStr &rhs); - int operator<( const OctetStr &lhs, const OctetStr &rhs); - int operator<=( const OctetStr &lhs,const OctetStr &rhs); - int operator>( const OctetStr &lhs, const OctetStr &rhs); - int operator>=( const OctetStr &lhs, const OctetStr &rhs); - int operator==( const OctetStr &lhs,const char *rhs); - int operator!=( const OctetStr &lhs,const char *rhs); - int operator<( const OctetStr &lhs,const char *rhs); - int operator<=( const OctetStr &lhs,char *rhs); - int operator>( const OctetStr &lhs,const char *rhs); - int operator>=( const OctetStr &lhs,const char *rhs); - OctetStr& operator+=( const SmiBYTE *a); - OctetStr& operator+=( const char c); - OctetStr& operator+=( const OctetStr& octetstr); - SmiBYTE& operator[]( int position); - int nCompare( const long n, const OctetStr &o) const; - size_t length() const ; - int valid() const; - SmiBYTE *data() const; - char *to_string(); - char *to_string_hex(); - SnmpSyntax *clone() const; - SnmpSyntax& operator=( SnmpSyntax &val); - */ - -static void TestOctet() -{ - char *str = "A test of octet strings...!@@#$%^&*()_+|~{}:,./<>?"; - OctetStr o1; - ACE_ASSERT(o1.valid() == 1); - ACE_ASSERT(o1.length() == 0); - ACE_ASSERT(o1.data() != (unsigned char *)0); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) Octet:o1(\"\") [%s]\n", - o1.to_string())); - o1.set_data((SmiBYTE *)str); - ACE_ASSERT(!ACE_OS::strcmp(str, (char *)o1.data())); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) Octet:o1(\"str\") [%s]\n", - o1.to_string())); - - OctetStr o2(str); - ACE_ASSERT(o2.valid() == 1); - ACE_ASSERT(o2.data() != (unsigned char *)0); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) Octet:o2(\"str\") [%s]\n", - o2.to_string())); - - OctetStr o3(str, 4); // test setting less than full string length - ACE_ASSERT(o3.valid() == 1); - ACE_ASSERT(o3.length() == 4); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) Octet:o3(\"A te\") [%s]\n", - o3.to_string())); - - OctetStr o4(o3); // test setting less than full string length - ACE_DEBUG ((LM_DEBUG, "(%P|%t) Octet:o4(\"A te\") [%s]\n", - o4.to_string())); - ACE_ASSERT(o4.valid() == 1); - ACE_ASSERT(o4.length() == 4); - - OctetStr o5; - o5 = str; - ACE_ASSERT(o5.valid() == 1); - ACE_ASSERT(o5.length() == ACE_OS::strlen(str)); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) Octet:o5(\"str\") [%s]\n", - o5.to_string())); - - OctetStr o6; - o6 = o5; - ACE_ASSERT(o6.valid() == 1); - ACE_ASSERT(o5.length() == o6.length()); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) Octet:o6(\"str\") [%s]\n", - o6.to_string())); - - o6 += o3; - o6 = ""; - o6 += str; - o6 += '#'; - ACE_ASSERT(o6[0] == (SmiBYTE) 'A'); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) Octet:o6(\"str\") [%s]\n", - o6.to_string())); - - ACE_ASSERT(!(o3 < o3)); - ACE_ASSERT(!(o3 > o3)); - ACE_ASSERT(o3 >= o3); - ACE_ASSERT(o3 <= o3); - ACE_ASSERT(o3 == o3); - ACE_ASSERT(!(o3 != o3)); - -} - -int -main (int, char *[]) -{ - ACE_START_TEST ("Octet_Test"); - - TestOctet(); - ACE_END_TEST; - return 0; -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Unbounded_Set; -#endif diff --git a/ASNMP/tests/Oid_Test.cpp b/ASNMP/tests/Oid_Test.cpp deleted file mode 100644 index 41c03a89585..00000000000 --- a/ASNMP/tests/Oid_Test.cpp +++ /dev/null @@ -1,189 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// Oid_Test.cpp -// -// = DESCRIPTION -// Test all the member functions of the Oid class. An Object -// representing an ASN.1 Integer64 SMI OID SYNTAX. -// -// = AUTHOR -// Michael R. MacFaden -// -// ============================================================================ -/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -Copyright 1997 Cisco Systems, Inc. - -Permission to use, copy, modify, and distribute this software for any -purpose and without fee is hereby granted, provided that this -copyright and permission notice appear on all copies of the software and -supporting documentation, the name of Cisco Systems, Inc. not be used -in advertising or publicity pertaining to distribution of the -program without specific prior permission, and notice be given -in supporting documentation that modification, copying and distribution is by -permission of Cisco Systems, Inc. - -Cisco Systems, Inc. makes no representations about the suitability of this -software for any purpose. THIS SOFTWARE IS PROVIDED ``AS IS'' -AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT -LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGMENT AND -FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL CISCO SYSTEMS, INC. BE -LIABLE FOR ANY DAMAGES ARISING OUT OF THIS LICENSE OR YOUR USE OF THE -SOFTWARE INCLUDING WITHOUT LIMITATION, DIRECT, INDIRECT OR CONSEQUENTIAL -DAMAGES. --=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/ - -#include "ace/OS.h" -#include "asnmp/oid.h" -#include "test_config.h" - -ACE_RCSID(tests, Oid_Test, "$Id$") - -// hack: do this so when linking SUNC 4.x compiler will instantiate template -#include "ace/Containers.h" -ACE_Unbounded_Set x; - -/* - Oid( const char * dotted_oid_string = "", size_t size = -1); - Oid ( const Oid &oid); - Oid(const unsigned long *raw_oid, size_t oid_len); - ~Oid(); - - SmiUINT32 get_syntax(); - Oid& operator=( const Oid &oid); - int operator==( const Oid &lhs,const Oid &rhs); - int operator!=( const Oid &lhs,const Oid &rhs); - int operator<( const Oid &lhs,const Oid &rhs); - int operator<=( const Oid &lhs,const Oid &rhs); - int operator>( const Oid &lhs,const Oid &rhs); - int operator>=( const Oid &lhs,const Oid &rhs); - Oid& operator+=( const char *a); - Oid& operator+=( const unsigned long i); - Oid& operator+=( const Oid &o); - unsigned long & operator[]( size_t position); - SmiLPOID oidval(); - void set_data( const char *dotted_oid_string); - void set_data( const unsigned long *raw_oid, const size_t oid_len); - size_t length() const; - void trim( const size_t how_many = 1); - int suboid( const size_t start, const size_t end, Oid& new_oid); - int left_comparison( const unsigned long n, const Oid &o) const; - int right_comparison( const unsigned long n, const Oid &o) const; - int valid() const; - char *to_string(); - SnmpSyntax *clone() const; - SnmpSyntax& operator=( SnmpSyntax &val); - */ - -static void OidTest() -{ - Oid d1; - ACE_ASSERT(d1.valid() == 0); - ACE_ASSERT(d1.length() == 0); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) Oid:d1(\"\") [%s]\n", - d1.to_string())); - - Oid d2("1.2.3"); - ACE_ASSERT(d2.valid() == 1); - ACE_ASSERT(d2.length() == 3); - ACE_ASSERT(d2[0] == (unsigned long) 1); - ACE_ASSERT(d2[1] == (unsigned long) 2); - ACE_ASSERT(d2[2] == (unsigned long) 3); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) Oid:d2(\"1.2.3\") [%s]\n", - d2.to_string())); - - Oid d3(d2); - ACE_ASSERT(d3.valid() == 1); - ACE_ASSERT(d3.length() == 3); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) Oid:d3(\"d2\") [%s]\n", - d3.to_string())); - - unsigned long t[3] = {2,3,4}; - Oid d4((unsigned long *)&t, sizeof(t)/sizeof(long)); - ACE_ASSERT(d4.valid() == 1); - ACE_ASSERT(d4.length() == 3); - ACE_ASSERT(d4[0] == (unsigned long) 2); - ACE_ASSERT(d4[1] == (unsigned long) 3); - ACE_ASSERT(d4[2] == (unsigned long) 4); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) Oid:d4(\"long(2.3.4)\") [%s]\n", - d4.to_string())); - - // suboid - Oid d5; - ACE_ASSERT(d4.suboid(d5, 1,1) == 0); // 2,3,4, 1,1 == 3 - ACE_ASSERT(d5.length() == 1); - ACE_ASSERT(d5.valid() == 1); - ACE_ASSERT(d5[0] == 3); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) Oid:d6::suboid(d5,1,1) [%s]\n", - d5.to_string())); - - // trim - Oid d7(d4); - ACE_ASSERT(d7.valid() == 1); - d7.trim(); - ACE_ASSERT(d7.length() == d4.length() -1); - - // compare methods - ACE_ASSERT(d7.left_comparison( d7.length(), d7) == 0); - ACE_ASSERT(d4.right_comparison( d4.length(), d4) == 0); - - // assignment - d1 = d4; - ACE_ASSERT(d1.valid() == 1); - ACE_ASSERT(d1 == d4); - d2 = "5.6.7"; - ACE_ASSERT(d2.valid() == 1); - ACE_ASSERT(d2[2] == (unsigned long) 7); - d1 = "8.9.10"; - ACE_ASSERT(d1.valid() == 1); - - // concat - unsigned long ll = ULONG_MAX; - d1 = ""; - d1 += (unsigned long)0; - d1 += ll; - d1 += ll; - d1 += "0"; - ACE_ASSERT(d1.valid() == 1); - ACE_ASSERT(d1.length() == 4); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) Oid:d1(0,max,max,0) [%s]\n", - d1.to_string())); - ACE_ASSERT(d1[0] == (unsigned long)0); - ACE_ASSERT(d1[1] == ll); - ACE_ASSERT(d1[2] == ll); - ACE_ASSERT(d1[3] == (unsigned long)0); - - d2 += d1; - ACE_ASSERT(d2.valid() == 1); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) Oid:(5.6.7.8.9.10) [%s]\n", - d2.to_string())); - - // test out max Oid string... - - // relational operators oid,oid - ACE_ASSERT(d2 == d2); - ACE_ASSERT(!(d2 != d2)); - ACE_ASSERT(!(d2 < d2)); - ACE_ASSERT(!(d2 > d2)); - ACE_ASSERT(d2 >= d2); - ACE_ASSERT(d2 <= d2); - -} - -int -main (int, char *[]) -{ - ACE_START_TEST ("Oid_Test"); - OidTest(); - ACE_END_TEST; - return 0; -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Unbounded_Set; -#endif diff --git a/ASNMP/tests/Target_Test.cpp b/ASNMP/tests/Target_Test.cpp deleted file mode 100644 index a1ff8e1fb51..00000000000 --- a/ASNMP/tests/Target_Test.cpp +++ /dev/null @@ -1,155 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// tests -// -// = FILENAME -// Target_Test.cpp -// -// = DESCRIPTION -// Test all the member functions of the Target class. -// Not sure if this object is really required or not in the new framework -// -// = AUTHOR -// Michael R. MacFaden -// -// ============================================================================ - -/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -Copyright 1997 Cisco Systems, Inc. - -Permission to use, copy, modify, and distribute this software for any -purpose and without fee is hereby granted, provided that this -copyright and permission notice appear on all copies of the software and -supporting documentation, the name of Cisco Systems, Inc. not be used -in advertising or publicity pertaining to distribution of the -program without specific prior permission, and notice be given -in supporting documentation that modification, copying and distribution is by -permission of Cisco Systems, Inc. - -Cisco Systems, Inc. makes no representations about the suitability of this -software for any purpose. THIS SOFTWARE IS PROVIDED ``AS IS'' -AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT -LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGMENT AND -FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL CISCO SYSTEMS, INC. BE -LIABLE FOR ANY DAMAGES ARISING OUT OF THIS LICENSE OR YOUR USE OF THE -SOFTWARE INCLUDING WITHOUT LIMITATION, DIRECT, INDIRECT OR CONSEQUENTIAL -DAMAGES. --=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/ - - -#include "ace/OS.h" -#include "asnmp/octet.h" -#include "asnmp/target.h" -#include "test_config.h" - -ACE_RCSID(tests, Target_Test, "$Id$") - -// hack: do this so when linking SUNC 4.x compiler will instantiate template -#include "ace/Containers.h" -ACE_Unbounded_Set x; - -/* - Percieved Problems with this CTarget aka UdpTarget Interface: - - 1) can't set snmp version during constructor (default value?) - 2) doesn't use ANSI C++ String class (still uses char *) - 3) Makes it easy to mix up read and write comm strs (could be diff types) - 3) so many get/set's, leads one to rethink the design/use of UdpTarget - 4) Use of resolve_to_C smells like a HACK... - 5) No valid() member function returns 1 even if no address given.. - 6) No to_string()?! (Fixed) - 7) can't access retry, timeout parameters... - 8) can't assign or equate two UdpTargets - - UdpTarget( void); - UdpTarget( const Address &address); - UdpTarget( const UdpTarget &target); - UdpTarget( const Address &address, // address - const char *read_community_name, // read community name - const char *write_community_name); // write community name - UdpTarget( const Address &address, // address - const OctetStr &read_community_name, // read community - const OctetStr &write_community_name); // write community - ~UdpTarget(); - - SnmpTarget *clone() const; - void get_readcommunity( OctetStr& read_community_oct); - void set_readcommunity( const OctetStr& read_community); - void get_writecommunity( OctetStr &write_community_oct); - void set_writecommunity( const OctetStr& write_community); - void get_address( UdpAddress & address); - int set_address( Address &address); - snmp_version get_version(); - void set_version( const snmp_version v); - - UdpTarget& operator=( const UdpTarget& target); - friend int operator==( const UdpTarget &lhs, const UdpTarget &rhs); - - */ - -static void TestSnmpTarget() -{ - OctetStr rd("rd_comm"), wr("wr_comm"); - ACE_ASSERT(rd.valid() == 1); - ACE_ASSERT(wr.valid() == 1); - char *crd = "rd_comm", *cwr = "wr_comm"; - - // constructor and get tests - UdpAddress ga; - ACE_ASSERT(ga.valid() == 0); - - UdpTarget c1; - ACE_ASSERT(c1.valid() == 0); - OctetStr a, b("public"), c("private"); - c1.get_read_community(a); - ACE_ASSERT(a == b); - c1.get_write_community(a); - ACE_ASSERT(a == c); - c1.get_address (ga); - ACE_ASSERT(c1.get_version() == version1); - - ACE_DEBUG ((LM_DEBUG, "(%P|%t) UdpTarget:c1(\"\") [%s]\n", - c1.to_string())); - - IpAddress ip("127.0.0.1"); - UdpTarget c2(ip); - ACE_ASSERT(c2.valid() == 1); - c2.get_address (ga); - ACE_ASSERT(ga.valid() == 1); - ACE_ASSERT(c2.get_version() == version1); - ACE_ASSERT(ga.valid() == 1); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) UdpTarget:c2(\"\") [%s]\n", - c2.to_string())); - - UdpTarget *c5 = new UdpTarget(c2); - ACE_ASSERT(c5 != 0); - ACE_ASSERT(c5->valid() == 1); - c5->get_address (ga); - ACE_ASSERT(ga.valid() == 1); - ACE_ASSERT(c5->get_version() == version1); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) UdpTarget:c5(\"\") [%s]\n", - c5->to_string())); - delete c5; - -// these are not supported yet -// ACE_ASSERT(c5 == c5); -// c5 = c2; -// ACE_ASSERT(c5 == c2); -} - -int -main (int, char *[]) -{ - ACE_START_TEST ("Target_Test"); - TestSnmpTarget(); - - ACE_END_TEST; - return 0; -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Unbounded_Set; -#endif diff --git a/ASNMP/tests/Varbind_Test.cpp b/ASNMP/tests/Varbind_Test.cpp deleted file mode 100644 index 46b38fd219d..00000000000 --- a/ASNMP/tests/Varbind_Test.cpp +++ /dev/null @@ -1,203 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// asnmp -// -// = FILENAME -// Varbind_Test.cpp -// -// = DESCRIPTION -// Test all the member functions of the Varbind class. -// A varbind is a list of { oids and associated values } -// -// = AUTHOR -// Michael R. MacFaden -// -// ============================================================================ - -/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -Copyright 1997 Cisco Systems, Inc. - -Permission to use, copy, modify, and distribute this software for any -purpose and without fee is hereby granted, provided that this -copyright and permission notice appear on all copies of the software and -supporting documentation, the name of Cisco Systems, Inc. not be used -in advertising or publicity pertaining to distribution of the -program without specific prior permission, and notice be given -in supporting documentation that modification, copying and distribution is by -permission of Cisco Systems, Inc. - -Cisco Systems, Inc. makes no representations about the suitability of this -software for any purpose. THIS SOFTWARE IS PROVIDED ``AS IS'' -AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT -LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGMENT AND -FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL CISCO SYSTEMS, INC. BE -LIABLE FOR ANY DAMAGES ARISING OUT OF THIS LICENSE OR YOUR USE OF THE -SOFTWARE INCLUDING WITHOUT LIMITATION, DIRECT, INDIRECT OR CONSEQUENTIAL -DAMAGES. --=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/ - - -#include "ace/OS.h" -#include "asnmp/oid.h" -#include "asnmp/vb.h" -#include "test_config.h" - -ACE_RCSID(tests, Varbind_Test, "$Id$") - -// hack: do this so when linking SUNC 4.x compiler will instantiate template -#include "ace/Containers.h" -ACE_Unbounded_Set x; - -/* - Vb( void); - Vb( const Oid &oid); - Vb( const Vb &vb); - Vb( const Oid& vb, const SnmpSyntax &val, const SmiUINT32=SNMP_CLASS_SUCCESS); - ~Vb(); - int valid() const; - Vb& operator=( const Vb &vb); - void set_oid( const Oid& oid); - void get_oid( Oid &oid) const; - void set_null(); - void set_value( const TimeTicks& ticks); - void set_value( const Oid& oid); - void set_value( const Counter32& ctr); - void set_value( const Counter64& ctr); - void set_value( const Gauge32& ctr); - void set_value( const SnmpUInt32& ctr); - void set_value( const SnmpInt32& ctr); - void set_value( const OctetStr& oct_str); - int get_value( TimeTicks& ticks); - int get_value( Oid& oid); - int get_value( Counter32& ctr); - int get_value( Counter64& ctr); - int get_value( Gauge32& ctr); - int get_value( SnmpUInt32& ctr); - int get_value( SnmpInt32& ctr); - int get_value( OctetStr& oct_str); - int get_value( SnmpSyntax &val); - void set_value( const SnmpSyntax &val); - int get_value( const SnmpSyntax &val); - SmiUINT32 get_syntax(); - friend void set_exception_status( Vb *vb, const SmiUINT32 status); - char *to_string(); - char *to_string_value(); - char *to_string_oid(); - */ - -static void VbTest() -{ - Vb v1; - ACE_ASSERT(v1.valid() == 0); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) VarBinad:v1(\"/\") [%s]\n", - v1.to_string())); - - // purpose of this routine?? - set_exception_status( &v1, 10); - - Vb v2(v1); - ACE_ASSERT(v2.valid() == 0); - Oid o1("1.2.3"), o2; - v2.set_oid(o1); - ACE_DEBUG ((LM_DEBUG, "(%P|%t) VarBinad:v2(\"1.2.3/\") [%s]\n", - v2.to_string())); - - v2.get_oid(o2); - ACE_ASSERT(o2 == o1); - ACE_ASSERT(v2.valid() == 0); - v2.set_null(); - ACE_ASSERT(v2.valid() == 0); - v2.get_oid(o2); - - Vb v3; - TimeTicks t(0), t1; - v3.set_oid(o1); - v3.set_value(t); - ACE_ASSERT(v3.valid() == 1); - v3.get_value(t1); - ACE_ASSERT(t == t1); - - Vb v4; - v4.set_oid(o1); - v4.set_value(o1); - ACE_ASSERT(v4.valid() == 1); - v4.get_value(o2); - ACE_ASSERT(o1 == o2); - - Vb v5; - Counter32 c1(12), c2; - v5.set_oid(o1); - v5.set_value(c1); - ACE_ASSERT(v5.valid() == 1); - v5.get_value(c2); - ACE_ASSERT(c1 == c2); - - Vb v6; - Counter64 c3(12345678901234), c4; - v6.set_oid(o1); - v6.set_value(c3); - ACE_ASSERT(v6.valid() == 1); - v6.get_value(c4); - ACE_ASSERT(c3 == c4); - - Vb v7; - Gauge32 g1(0123456), g2; - v7.set_oid(o1); - v7.set_value(g1); - ACE_ASSERT(v7.valid() == 1); - v7.get_value(g2); - ACE_ASSERT(g1 == g2); - - Vb v8; - SnmpInt32 i1(0123456), i2; - v8.set_oid(o1); - v8.set_value(i1); - ACE_ASSERT(v8.valid() == 1); - v8.get_value(i2); - ACE_ASSERT(i1 == i2); - - Vb v9; - SnmpUInt32 u1(0123456), u2; - v9.set_oid(o1); - v9.set_value(u1); - ACE_ASSERT(v9.valid() == 1); - v9.get_value(u2); - ACE_ASSERT(u1 == u2); - - Vb v10; - OctetStr s1(" abcdefghighlmnopqrstuvwxyz!@#$%^&*()"), s2; - v10.set_oid(o1); - v10.set_value(s1); - ACE_ASSERT(v10.valid() == 1); - v10.get_value(s2); - ACE_ASSERT(s1 == s2); - ACE_ASSERT(s1.length() == s2.length()); - - // test assignment over all datatypes - v10 = v5; - ACE_ASSERT(v10 == v5); - - - Vb v11(o1, s1, SNMP_CLASS_SUCCESS); - ACE_ASSERT(v11.valid() == 1); - v11.get_oid(o2); - ACE_ASSERT(o1 == o2); - v11.get_value(s2); - ACE_ASSERT(s1 == s2); -} - -int -main (int, char *[]) -{ - ACE_START_TEST ("VbTest"); - VbTest(); - ACE_END_TEST; - return 0; -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Unbounded_Set; -#endif diff --git a/ASNMP/tests/run_tests.bat b/ASNMP/tests/run_tests.bat deleted file mode 100644 index 985f88b51db..00000000000 --- a/ASNMP/tests/run_tests.bat +++ /dev/null @@ -1,44 +0,0 @@ -@echo off -rem To use this either give it no arguments to run all the tests or -rem pass it the test name (without the extention) to run only one -rem test - -if not "%1" == "" goto runtest - -call run_tests - -call run_tests Address_Test -call run_tests Counter64_Test -call run_tests Counter_Test -call run_tests Gauge_Test -call run_tests Integer_Test -call run_tests Octet_Test -call run_tests Oid_Test -call run_tests Target_Test -call run_tests Varbind_Test - -goto done - -:runtest - -echo Running %1 -%1.exe -if errorlevel 0 goto fine -echo. -echo %1 has FAILED!!! -echo. -type %temp%\log\%1.log | find /I "assertion failed" -type %temp%\log\%1.log | find /I "not supported" -type %temp%\log\%1.log | find /I "no such file or directory" -type %temp%\log\%1.log | find /I "invalid argument" -type %temp%\log\%1.log | find /I "timeout" -type %temp%\log\%1.log | find /I "bad file number" -echo. - -goto done -:fine - -rem We should check the log files here to make sure the test ended correctly -rem type %temp%\log\%1.log | find "Ending" - -:done diff --git a/ASNMP/tests/run_tests.sh b/ASNMP/tests/run_tests.sh deleted file mode 100755 index f8ebb06fdd4..00000000000 --- a/ASNMP/tests/run_tests.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/sh -f -# This is the UNIX version of the one-button ACE tests. -# Contributed by Michael Rueger -# mrm@cisco.com - Change to for loop script could be more generic if we put -# this in the bin dir and fed it a file to read from - -IFS="|" -tmp=/tmp - -# these patterns should not be included in log file -ERROR_MSGS="assertion failed|not supported|No such file or directory|Invalid argument|timeout|Bad file number" - -# these patterns must be included in log file -SUCCESS_MSGS="starting|Ending" - -run() -{ - echo running $1 - /bin/rm -f core - - ./$1 - status=$? - - if [ $status -ne 0 ]; then - echo \"$1\" FAILED with exit status $status!!!! - fi - - if [ -f core ]; then - echo \"$1\" dumped core!!!! - fi - - for i in $SUCCESS_MSGS; do - grep $i log/$1.log >/dev/null - if [ $? -eq 1 ]; then - echo Error in log file no line with $i - fi - done - - for i in $ERROR_MSGS; do - grep $i log/$1.log - done -} - -echo "Starting tests..." -FILES=`ls *_Test 2>/dev/null` -if [ "$FILES" = "" ]; then - echo "ERROR: no test programs generated matching pattern *_Test." - echo "ERROR: Try compiling the test programs first." - exit 1 -fi - -for i in *_Test -do - run $i -done - -echo "Tests complete..." - - -# EOF diff --git a/ASNMP/tests/test_config.h b/ASNMP/tests/test_config.h deleted file mode 100644 index b548ae88c22..00000000000 --- a/ASNMP/tests/test_config.h +++ /dev/null @@ -1,223 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// = FILENAME -// test_config.h -// -// = AUTHOR -// Prashant Jain , Tim Harrison -// , and David Levine -// -// ============================================================================ - -#ifndef ACE_TEST_CONFIG_H -#define ACE_TEST_CONFIG_H - -#include -#include - -#if !defined (ACE_HAS_TEMPLATE_SPECIALIZATION) -class KEY -// ============================================================================ -// = TITLE -// Define a key for use with the Map_Manager_Test. -// -// = DESCRIPTION -// This class is put into the test_config.h header file to work -// around AIX C++ compiler "features" related to template -// instantiation... It is only used by Map_Manager_Test.cpp -// ============================================================================ -{ -public: - KEY (size_t v = 0): value_ (v) - { } - - size_t hash (void) const { return this->value_; } - operator size_t () const { return this->value_; } - -private: - size_t value_; -}; -#else -typedef size_t KEY; -#endif /* ACE_HAS_TEMPLATE_SPECIALIZATION */ - -#if defined (ACE_WIN32) - -#define ACE_DEFAULT_TEST_FILE_A "C:\\temp\\ace_test_file" -#define ACE_TEMP_FILE_NAME_A "C:\\temp\\ace_temp_file" -#define ACE_LOG_DIRECTORY_A "C:\\temp\\log\\" -#define MAKE_PIPE_NAME_A(X) "\\\\.\\pipe\\"#X - -#define ACE_DEFAULT_TEST_FILE_W L"C:\\temp\\ace_test_file" -#define ACE_TEMP_FILE_NAME_W L"C:\\temp\\ace_temp_file" -#define ACE_LOG_DIRECTORY_W L"C:\\temp\\log\\" -#define MAKE_PIPE_NAME_W(X) L"\\\\.\\pipe\\"#X - -#else - -#define ACE_DEFAULT_TEST_FILE_A "/tmp/ace_test_file" -#define ACE_TEMP_FILE_NAME_A "/tmp/ace_temp_file" -#define ACE_LOG_DIRECTORY_A "log/" -#define MAKE_PIPE_NAME_A(X) X - -#if defined (ACE_HAS_UNICODE) -#define ACE_DEFAULT_TEST_FILE_W L"/tmp/ace_test_file" -#define ACE_TEMP_FILE_NAME_W L"/tmp/ace_temp_file" -#define ACE_LOG_DIRECTORY_W L"log/" -#define MAKE_PIPE_NAME_W(X) L##X -#else -#define ACE_DEFAULT_TEST_FILE_W "/tmp/ace_test_file" -#define ACE_TEMP_FILE_NAME_W "/tmp/ace_temp_file" -#define ACE_LOG_DIRECTORY_W "log/" -#define MAKE_PIPE_NAME_W(X) X -#endif /* ACE_HAS_UNICODE */ - -#endif /* ACE_WIN32 */ - -#if defined (UNICODE) -#define ACE_DEFAULT_TEST_FILE ACE_DEFAULT_TEST_FILE_W -#define ACE_TEMP_FILE_NAME ACE_TEMP_FILE_NAME_W -#define ACE_LOG_DIRECTORY ACE_LOG_DIRECTORY_W -#define MAKE_PIPE_NAME MAKE_PIPE_NAME_W -#else -#define ACE_DEFAULT_TEST_FILE ACE_DEFAULT_TEST_FILE_A -#define ACE_TEMP_FILE_NAME ACE_TEMP_FILE_NAME_A -#define ACE_LOG_DIRECTORY ACE_LOG_DIRECTORY_A -#define MAKE_PIPE_NAME MAKE_PIPE_NAME_A -#endif /* UNICODE */ - -#define ACE_START_TEST(NAME) \ - const char *program = NAME; \ - ACE_LOG_MSG->open (program, ACE_Log_Msg::OSTREAM); \ - if (ace_file_stream.set_output (program) != 0) \ - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "set_output failed"), -1); \ - ACE_DEBUG ((LM_DEBUG, "(%P|%t) starting %s test at %T\n", program)); - -#define ACE_END_TEST \ - ACE_DEBUG ((LM_DEBUG, "(%P|%t) Ending %s test at %T\n", program)); \ - ace_file_stream.close (); - -#define ACE_NEW_THREAD \ -do {\ - ACE_LOG_MSG->msg_ostream (ace_file_stream.output_file ()); \ - ACE_LOG_MSG->clr_flags (ACE_Log_Msg::STDERR | ACE_Log_Msg::LOGGER ); \ - ACE_LOG_MSG->set_flags (ACE_Log_Msg::OSTREAM); \ -} while (0) - -#define ACE_APPEND_LOG(NAME) \ - const char *program = NAME; \ - ACE_LOG_MSG->open (program, ACE_Log_Msg::OSTREAM); \ - if (ace_file_stream.set_output (program, 1) != 0) \ - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "set_output failed"), -1); \ - ACE_DEBUG ((LM_DEBUG, "(%P|%t) Starting %s test at %T\n", program)); - -#define ACE_END_LOG \ - ACE_DEBUG ((LM_DEBUG, "(%P|%t) Ending %s test at %T\n\n", program)); \ - ace_file_stream.close (); - -#define ACE_INIT_LOG(NAME) \ - char temp[BUFSIZ]; \ - ACE_OS::sprintf (temp, "%s%s%s", \ - ACE_LOG_DIRECTORY_A, \ - ACE::basename (NAME, ACE_DIRECTORY_SEPARATOR_CHAR_A), \ - ".log"); \ - ACE_DEBUG ((LM_DEBUG, "Deleting old log file %s (if any)\n\n", temp)); \ - ACE_OS::unlink (temp); - - -const int ACE_NS_MAX_ENTRIES = 1000; -const int ACE_MAX_TIMERS = 4; -const int ACE_MAX_THREADS = 4; -const int ACE_MAX_DELAY = 10; -const int ACE_MAX_INTERVAL = 0; -const int ACE_MAX_ITERATIONS = 10; -const int ACE_MAX_PROCESSES = 10; - -char ACE_ALPHABET[] = "abcdefghijklmnopqrstuvwxyz"; - -class ACE_Test_Output -{ -public: - ACE_Test_Output (void); - ~ACE_Test_Output (void); - int set_output (const char *filename, int append = 0); - ofstream *output_file (void); - void close (void); - -private: - ofstream output_file_; -}; - -static ACE_Test_Output ace_file_stream; - -ACE_Test_Output::ACE_Test_Output (void) -{ -} - -ACE_Test_Output::~ACE_Test_Output (void) -{ -} - -int -ACE_Test_Output::set_output (const char *filename, int append) -{ - char temp[BUFSIZ]; - // Ignore the error value since the directory may already exist. - ACE_OS::mkdir (ACE_LOG_DIRECTORY_A); - ACE_OS::sprintf (temp, "%s%s%s", - ACE_LOG_DIRECTORY_A, - ACE::basename (filename, ACE_DIRECTORY_SEPARATOR_CHAR_A), - ".log"); - - int flags = ios::out; - if (append) - flags |= ios::app; - - this->output_file_.open (temp, flags); - if (this->output_file_.bad ()) - return -1; - - ACE_LOG_MSG->msg_ostream (ace_file_stream.output_file ()); - ACE_LOG_MSG->clr_flags (ACE_Log_Msg::STDERR | ACE_Log_Msg::LOGGER ); - ACE_LOG_MSG->set_flags (ACE_Log_Msg::OSTREAM); - - return 0; -} - -ofstream * -ACE_Test_Output::output_file (void) -{ - return &this->output_file_; -} - -void -ACE_Test_Output::close (void) -{ - this->output_file_.flush (); - this->output_file_.close (); -} - -void -randomize (int array[], size_t size) -{ - size_t i; - - for (i = 0; i < size; i++) - array [i] = i; - - ACE_OS::srand (ACE_OS::time (0L)); - - // Generate an array of random numbers from 0 .. size - 1. - - for (i = 0; i < size; i++) - { - int index = ACE_OS::rand() % size--; - int temp = array [index]; - array [index] = array [size]; - array [size] = temp; - } -} - -#endif /* ACE_TEST_CONFIG_H */ diff --git a/AUTHORS b/AUTHORS deleted file mode 100644 index 67d624b93aa..00000000000 --- a/AUTHORS +++ /dev/null @@ -1,7 +0,0 @@ -Douglas C. Schmidt -Director of the Center for Distributed Object Computing - -The Center for Distributed Object Computing -One Brookings Drive -St. Louis, Missouri 63130-4899 -http://www.cs.wustl.edu/~schmidt/doc-center.html diff --git a/BIBLIOGRAPHY b/BIBLIOGRAPHY deleted file mode 100644 index 6ee6da4dd94..00000000000 --- a/BIBLIOGRAPHY +++ /dev/null @@ -1,752 +0,0 @@ -The following articles document and describe various aspects of the -object-oriented network programming components and the underlying -design patterns included in ACE, TAO, and JAWS. A complete list of -publications is available at - -http://www.cs.wustl.edu/~schmidt/resume.html - -======================================== - -@article{Schmidt:97r, - AUTHOR = {Douglas C. Schmidt and Chris Cleeland}, - TITLE = "{Applying Patterns to Develop Extensible and Maintainable ORB Middleware}", - JOURNAL = "Communications of the ACM (Special Issue on - Software Maintenance)", - EDITORS={W. Tsai}, - VOLUME = 40, - NUMBER = 12, - YEAR = 1997, - MONTH = "December" -} - -@article{Schmidt:97q, - AUTHOR = {Douglas C. Schmidt and David L. Levine and Sumedh Mungee}, - TITLE = "{The Design and Performance of Real-Time Object Request Brokers}", - JOURNAL = "Computer Communications", - YEAR = 1997, -} - -@incollection{Schmidt:97n, - AUTHOR = "Douglas C. Schmidt", - TITLE = "{Applying Design Patterns and Frameworks to Develop - Object-Oriented Communication Software}", - BOOKTITLE = "Handbook of Programming Languages", - EDITOR="Peter Salus", - PUBLISHER = "MacMillan Computer Publishing", - YEAR = 1997 -} - -@inproceedings{Schmidt:97m, - AUTHOR = "Douglas C. Schmidt and Tim Harrison and Nat Pryce", - TITLE = "{Thread-Specific Storage -- An Object Behavioral - Pattern for Accessing per-Thread State Efficiently}", - BOOKTITLE = "Submitted to the $4^{th}$ Pattern - Languages of Programming Conference", - LOCATION="Allerton Park, IL", - YEAR = 1997, - MONTH = "September", -} - -@inproceedings{Schmidt:97l, - AUTHOR = "Tim Harrison and Irfan Pyrarli and Douglas C. Schmidt and Thomas Jordan", - TITLE = "{Proactor -- An Object Behavioral Pattern for - Dispatching Asynchronous Event Handlers}", - BOOKTITLE="The $4^{th}$ Pattern Languages of Programming Conference", - YEAR = 1997, - MONTH = "September", - ABSTRACT = "" -} - -@inproceedings{Schmidt:97k, - AUTHOR = "James Hu and Irfan Pyrarli and Douglas C. Schmidt", - TITLE = "{Measuring the Impact of Event Dispatching and Concurrency Models on Web - Server Performance Over High-speed Networks}", - BOOKTITLE="Proceedings of the $2^{nd}$ Global Internet Conference", - ORGANIZATION={IEEE}, - YEAR = 1997, - MONTH = "November", - ABSTRACT = "", -} - -@inproceedings{Schmidt:97j, - AUTHOR = "Aniruddha Gokhale and Douglas C. Schmidt", - TITLE = "{Evaluating the Performance of Demultiplexing Strategies for Real-time CORBA}", - BOOKTITLE="Proceedings of GLOBECOM '97", - ADDRESS={Phoenix, AZ}, - ORGANIZATION="IEEE", - YEAR = 1997, - MONTH = "November", - ABSTRACT = "" -} - -@inproceedings{Schmidt:97i, - AUTHOR = "Timothy H. Harrison and David L. Levine and Douglas C. Schmidt", - TITLE = "{The Design and Performance of a Real-time CORBA Event Service}", - BOOKTITLE="Proceedings of OOPSLA '97", - ADDRESS={Atlanta, GA}, - ORGANIZATION="ACM", - YEAR = 1997, - MONTH = "October", - ABSTRACT = "", -} - -@inproceedings{Schmidt:97g, - AUTHOR = "James Hu and Sumedh Mungee and Douglas C. Schmidt", - TITLE = "{Principles for Developing and Measuring - High-performance Web Servers over ATM}", - BOOKTITLE="Submitted to INFOCOM '97 (Washington University Technical Report \#WUCS-97-10)", - YEAR = 1997, - MONTH = "February", - ABSTRACT = "" -} - -@inproceedings{Schmidt:97f, - AUTHOR = "Aniruddha Gokhale and Douglas C. Schmidt", - TITLE = "{Principles for Optimizing CORBA Internet - Inter-ORB Protocol Performance}", - BOOKTITLE="Submitted to the Hawaiian International Conference on System Sciences (Washington University Technical Report \#WUCS-97-10)", - YEAR = 1998, - MONTH = "January", - ABSTRACT = "" -} - -@incollection{Schmidt:97e, - AUTHOR = "Chris Cleeland and Tim Harrison and Douglas C. Schmidt", - TITLE = "{External Polymorphism -- An - Object Structural Pattern for Transparently Extending Concrete - Data Types}", - BOOKTITLE = "Pattern Languages of Program Design", - EDITOR="Robert Martin and Frank Buschmann and Dirk Riehle", - PUBLISHER = "Addison-Wesley", - ADDRESS={Reading, MA}, - YEAR = 1997, -} - -@incollection{Schmidt:97d, - AUTHOR = "Douglas C. Schmidt and Tim Harrison", - TITLE = "{Double-Checked Locking -- An Object Behavioral - Pattern for Initializing and Accessing Thread-safe Objects - Efficiently}", - BOOKTITLE = "Pattern Languages of Program Design", - EDITOR="Robert Martin and Frank Buschmann and Dirk Riehle", - PUBLISHER = "Addison-Wesley", - ADDRESS={Reading, MA}, - YEAR = 1997, -} - -@incollection{Schmidt:97c, - AUTHOR = "Douglas C. Schmidt", - TITLE = "{Acceptor and Connector: - Design Patterns for Initializing Communication Services}", - BOOKTITLE = "Pattern Languages of Program Design", - EDITOR="Robert Martin and Frank Buschmann and Dirk Riehle", - PUBLISHER = "Addison-Wesley", - ADDRESS={Reading, MA}, - YEAR = 1997, - ANNOTE = http://www.cs.wustl.edu/~schmidt/, -} - -@inproceedings{Schmidt:97b, - AUTHOR = "Prashant Jain and Douglas C. Schmidt", - TITLE = "{Service Configurator: - A Pattern for Dynamic Configuration of Services}", - BOOKTITLE="Proceedings of the $3^{rd}$ Conference on - Object-Oriented Technologies and Systems", - PUBLISHER = "USENIX", - LOCATION="Portland, OR", - YEAR = 1997, - MONTH = "June", -} - -@incollection{Schmidt:97a, - AUTHOR = "Irfan Pyarali and Timothy H. Harrison and Douglas C. Schmidt", - TITLE = "{Asynchronous Completion Token: an Object Behavioral Pattern for - Efficient Asynchronous Event Handling}", - BOOKTITLE = "Pattern Languages of Program Design", - EDITOR="Robert Martin and Frank Buschmann and Dirk Riehle", - PUBLISHER = "Addison-Wesley", - ADDRESS={Reading, MA}, - YEAR = 1997, -} - -@article{Schmidt:96v, - AUTHOR = "Prashant Jain and Douglas Schmidt", - TITLE = "{Experiences Converting a C++ Communication Software - Framework to Java}", - JOURNAL = "C++ Report", - YEAR = 1997, - VOLUME = 9, - NUMBER = 1, - MONTH = "January", - ABSTRACT = "" -} - -@incollection{Schmidt:96n, - AUTHOR = "Irfan Pyarali and Timothy H. Harrison and Douglas C. Schmidt", - TITLE="{Design and Performance of an Object-Oriented Framework - for High-Performance Electronic Medical Imaging}", - BOOKTITLE="USENIX Computing Systems", - PUBLISHER="MIT Press", - YEAR = 1996, - MONTH = "November/December", - EDITOR={Douglas C. Schmidt}, - ABSTRACT = "" -} - -@inproceedings{Schmidt:96g, - AUTHOR = "Aniruddha Gokhale and Douglas C. Schmidt", - TITLE = "{Performance of the CORBA Dynamic Invocation Interface and - Internet Inter-ORB Protocol over High-Speed ATM Networks}", - BOOKTITLE="Proceedings of GLOBECOM '96", - ADDRESS={London, England}, - ORGANIZATION="IEEE", - YEAR = 1996, - MONTH = "November", - ABSTRACT = "" -} - -@inproceedings{Schmidt:96f, - AUTHOR = "Aniruddha Gokhale and Douglas C. Schmidt", - TITLE = "{Measuring the Performance of Communication Middleware on - High-Speed Networks}", - BOOKTITLE="Proceedings of SIGCOMM '96", - ADDRESS={Stanford, CA}, - ORGANIZATION="ACM", - YEAR = 1996, - MONTH = "August", - ABSTRACT = "" -} - -@inproceedings{Schmidt:96e, - AUTHOR = "Irfan Pyarali and Timothy H. Harrison and Douglas C. Schmidt", - TITLE="{Design and Performance of an Object-Oriented Framework - for High-Performance Electronic Medical Imaging}", - BOOKTITLE="Proceedings of the $2^{nd}$ Conference on - Object-Oriented Technologies and Systems", - ADDRESS={Toronto, Canada}, - ORGANIZATION="USENIX", - YEAR = 1996, - MONTH = "June", - ABSTRACT = "" -} - -@inproceedings{Schmidt:96d, - AUTHOR = "Douglas C. Schmidt", - TITLE = "{A Family of Design Patterns For Flexibly - Configuring Network Services in Distributed Systems}", - BOOKTITLE = "International Conference on Configurable - Distributed Systems", - LOCATION="Annapolis, Maryland", - YEAR = 1996, - MONTH = "May 6--8", -} - -@inproceedings{Schmidt:96c, - AUTHOR = "Tim Harrison and Douglas C. Schmidt", - TITLE = "{Thread-Specific Storage -- An Object Behavioral - Pattern for Accessing per-Thread State Efficiently}", - BOOKTITLE = "Submitted to the $3^{rd}$ Pattern Languages of Programming - Conference", - LOCATION="Allerton Park, Illinois", - YEAR = 1996, - MONTH = "September", - ABSTRACT = "http://www.cs.wustl.edu/~schmidt/TSS-pattern.ps.gz" -} - -@inproceedings{Schmidt:96b, - AUTHOR = "R. Greg Lavender and Douglas C. Schmidt", - TITLE = "{Active Object: an Object Behavioral Pattern for - Concurrent Programming}", - BOOKTITLE = "Pattern Languages of Program Design", - EDITOR="James O. Coplien and John Vlissides and Norm Kerth", - PUBLISHER = "Addison-Wesley", - ADDRESS={Reading, MA}, - YEAR = 1996, -} - -@inproceedings{Schmidt:96a, - AUTHOR = "Douglas C. Schmidt and Charles D. Cranor", - TITLE = "{Half-Sync/Half-Async: an Architectural Pattern for - Efficient and Well-structured Concurrent I/O}", - BOOKTITLE = "Pattern Languages of Program Design", - EDITOR="James O. Coplien and John Vlissides and Norm Kerth", - PUBLISHER = "Addison-Wesley", - ADDRESS={Reading, MA}, - YEAR = 1996, -} - -@article{Schmidt:95p, - AUTHOR = "Douglas C. Schmidt", - TITLE = "{Connector: a Design Pattern for Actively - Initializing Network Services}", - JOURNAL = "C++ Report", - YEAR = 1996, - VOLUME = 8, - NUMBER = 1, - MONTH = "January" -} - -@inproceedings{Schmidt:95o, - AUTHOR = "Douglas C. Schmidt and Timothy H. Harrison and Irfan Pyarali", - TITLE = "{Experience Developing an Object-Oriented Framework - for High-Performance Electronic Medical Imaging using CORBA - and C++}", - BOOKTITLE = "Proceedings of the ``Software Technology Applied to Imaging and Multimedia - Applications mini-conference'' at the Symposium on Electronic - Imaging in the International Symposia Photonics West", - ORGANIZATION={SPIE}, - LOCATION="San Jose, CA", - YEAR = 1996, - MONTH = "January" -} - -@article{Schmidt:95m, - AUTHOR = "Douglas C. Schmidt", - TITLE = "{Design Patterns for Initializing Network Services: - Introducing the Acceptor and Connector Patterns}", - JOURNAL = "C++ Report", - YEAR = 1995, - VOLUME = 7, - NUMBER = 9, - MONTH = "November/December" -} - -@inproceedings{Schmidt:95k, - AUTHOR = "Tim Harrison and Douglas C. Schmidt", - TITLE = "{Thread-Specific Storage: A Pattern for Reducing Locking Overhead in Concurrent Programs}", - BOOKTITLE = "OOPSLA Workshop on Design Patterns for Concurrent, Parallel, and Distributed Systems", - ORGANIZATION={ACM}, - LOCATION="Austin, TX", - YEAR = 1995, - MONTH = "October" -} - -@article{Schmidt:95j, - AUTHOR = "Douglas C. Schmidt", - TITLE = "{Experience Using Design Patterns to Develop - Reuseable Object-Oriented Communication Software}", - BOOKTITLE = "Communications of the ACM (Special Issue on - Object-Oriented Experiences)", - VOLUME = 38, - NUMBER = 10, - YEAR = 1995, - MONTH = "October" -} - -@inproceedings{Schmidt:95h, - AUTHOR = "Douglas C. Schmidt and Charles D. Cranor", - TITLE = "{Half-Sync/Half-Async: an Architectural Pattern for - Efficient and Well-structured Concurrent I/O}", - BOOKTITLE = "Proceedings of the $2^{nd}$ Annual Conference on - the Pattern Languages of Programs", - ADDRESS={Monticello, Illinois}, - PAGES="1--10", - YEAR = 1995, - MONTH = "September" -} - -@inproceedings{Schmidt:95i, - AUTHOR = "R. Greg Lavender and Douglas C. Schmidt", - TITLE = "{Active Object: an Object Behavioral Pattern for - Concurrent Programming}", - BOOKTITLE = "Proceedings of the $2^{nd}$ - Annual Conference on the Pattern Languages of Programs", - ADDRESS={Monticello, Illinois}, - PAGES="1--7", - YEAR = 1995, - MONTH = "September" -} - -@article{Schmidt:95g, - AUTHOR = "Douglas C. Schmidt", - TITLE="{A Family of Design Patterns for - Application-level Gateways}", - JOURNAL="The Theory and Practice of - Object Systems (Special Issue on Patterns and Pattern Languages)", - EDITOR={Stephen P. Berczuk}, - PUBLISHER="Wiley and Sons", - YEAR = 1996, - VOLUME = 2, - NUMBER = 1, - ABSTRACT = "" -} - -@book{Schmidt:95f, - TITLE = "{Pattern Languages of Program Design}", - EDITOR="James O. Coplien and Douglas C. Schmidt", - PUBLISHER = "Addison-Wesley", - ADDRESS={Reading, MA}, - YEAR = 1995, -} - -@inproceedings{Schmidt:95e, - AUTHOR = "Douglas C. Schmidt and Tim Harrison and Ehab Al-Shaer", - TITLE="{Object-Oriented Components for High-speed Network Programming}", - BOOKTITLE="Proceedings of the Conference on Object-Oriented Technologies", - ADDRESS={Monterey, CA}, - ORGANIZATION="USENIX", - YEAR = 1995, - MONTH = "June", -} - -@inproceedings{Schmidt:95d, - AUTHOR = "Douglas C. Schmidt", - TITLE="{Acceptor and Connector: Design Patterns for Active and Passive Establishment - of Network Connections}", - BOOKTITLE=" Workshop on Pattern Languages of Object-Oriented - Programs at ECOOP '95", - MONTH={August}, - YEAR=1995, - ADDRESS={Aarhus, Denmark}, - ABSTRACT = "" -} - -@article{Schmidt:95c, - AUTHOR = "Douglas C. Schmidt and Paul Stephenson", - TITLE="{Using Design Patterns to Evolve System Software from - UNIX to Windows NT}", - JOURNAL = "C++ Report", - YEAR = 1995, - VOLUME = 7, - NUMBER = 3, - MONTH = "March/April", - ABSTRACT = "This is a different version of the ECOOP paper that - goes into a lot more gory details about how the - Reactor and Acceptor patterns were implemented - on Windows NT and UNIX." -} - -@inproceedings{Schmidt:95b, - AUTHOR = "Douglas C. Schmidt and Paul Stephenson", - TITLE="{Experiences Using Design Patterns to - Evolve System Software Across Diverse OS Platforms}", - BOOKTITLE="Proceedings of the $9^{th}$ European Conference on - Object-Oriented Programming", - ADDRESS={Aarhus, Denmark}, - MONTH={August}, - YEAR=1995 -} - -@incollection{Schmidt:95a, - AUTHOR = "Douglas C. Schmidt", - TITLE = "{Reactor: An Object Behavioral Pattern for Concurrent - Event Demultiplexing and Event Handler Dispatching}", - BOOKTITLE = "Pattern Languages of Program Design", - EDITOR="James O. Coplien and Douglas C. Schmidt", - PUBLISHER = "Addison-Wesley", - ADDRESS={Reading, MA}, - YEAR = 1995, - MONTH = "June" - ABSTRACT = "This is a polished up version of the PLoP paper" -} - -@inproceedings{Schmidt:94l, - AUTHOR = "Douglas C. Schmidt and Paul Stephenson", - TITLE="{Achieving Reuse Through Design Patterns}", - BOOKTITLE="Proceedings of the Third C++ World Conference", - ORGANIZATION="SIGS", - ADDRESS={Austin, Texas}, - MONTH=Nov, - YEAR=1994 -} - -@inproceedings{Schmidt:94i, - AUTHOR = "Douglas C. Schmidt", - TITLE = "{Reactor: An Object Behavioral Pattern for Concurrent - Event Demultiplexing and Dispatching}", - BOOKTITLE = "Proceedings of the $1^{st}$ Annual Conference on the - Pattern Languages of Programs (PLoP)", - ADDRESS={Monticello, Illinois}, - YEAR = 1994, - MONTH = "August" -} - -@inproceedings{Schmidt:94j, - AUTHOR = "Douglas C. Schmidt", - TITLE="{The ADAPTIVE Communication Environment: - An Object-Oriented Network Programming Toolkit for Developing - Communication Software}", - BOOKTITLE="Proceedings of the $12^{th}$ Annual Sun Users Group - Conference", - ORGANIZATION="SUG", - ADDRESS={San Francisco, CA}, - PAGES="214-225", - MONTH={June}, - YEAR=1994, -} - -@article{Schmidt:94g, - AUTHOR = "Douglas C. Schmidt", - TITLE = "{Transparently Parameterizing Synchronization into a - Concurrent Distributed Application}", - JOURNAL = "C++ Report", - YEAR = 1994, - VOLUME = July/August, - NUMBER = 6, - MONTH = "March/April", -} - -@article{Schmidt:94d, - AUTHOR = "Douglas C. Schmidt", - TITLE = "{A Domain Analysis of Network Daemon Design Dimensions}", - JOURNAL = "C++ Report", - YEAR = 1994, - VOLUME = 6, - NUMBER = 3, - MONTH = "March/April", -} - -@inproceedings{Schmidt:94a, - AUTHOR = "Douglas C. Schmidt", - TITLE = "{ASX: an Object-Oriented Framework for Developing - Distributed Applications}", - BOOKTITLE = "Proceedings of the $6^{th}$ USENIX C++ Technical Conference", - ORGANIZATION="USENIX", - ADDRESS={Cambridge, Massachusetts}, - MONTH = "April", - YEAR = {1994} -} - -@inproceedings{Schmidt:93i, - AUTHOR = "Douglas C. Schmidt and Tatsuya Suda", - TITLE="{The Service Configurator Framework: An Extensible - Architecture for Dynamically Configuring Concurrent, Multi-Service - Network Daemons}", - BOOKTITLE="The Proceedings of the Second International Workshop on - Configurable Distributed Systems", - ORGANIZATION="IEEE", - ADDRESS={Pittsburgh, PA}, - MONTH=mar, - YEAR=1994, -} - -@inproceedings{Schmidt:93k, - AUTHOR = "Douglas C. Schmidt", - TITLE="{The ADAPTIVE Communication Environment: - Object-Oriented Network Programming Components for Developing - Client/Server Applications}", - BOOKTITLE="Proceedings of the $11^{th}$ Annual Sun Users Group Conference", - ORGANIZATION="SUG", - ADDRESS={San Jose, CA}, - MONTH=Dec, - YEAR=1993, -} - -@inproceedings{Schmidt:93j, - AUTHOR = "Douglas C. Schmidt", - TITLE="{Object-Oriented Techniques for Developing Extensible - Network Servers}", - BOOKTITLE="Proceedings of the Second C++ World Conference", - ORGANIZATION="SIGS", - ADDRESS={Dallas, Texas}, - MONTH=Oct, - YEAR=1993, -} - -@inproceedings{Schmidt:93h, - AUTHOR = "Douglas C. Schmidt and Paul Stephenson", - TITLE="{An Object-Oriented Framework for Developing - Network Server Daemons}", - BOOKTITLE="Proceedings of the Second C++ World Conference", - ORGANIZATION="SIGS", - ADDRESS={Dallas, Texas}, - MONTH=Oct, - YEAR=1993, -} - -@article{Schmidt:93c, - AUTHOR = "Douglas C. Schmidt", - TITLE = "{The Object-Oriented Design and Implementation of the - Reactor: A C++ Wrapper for UNIX I/O Multiplexing (Part 2 of 2)}", - JOURNAL = "C++ Report", - YEAR = 1993, - MONTH = "September/October", - ABSTRACT = "" -} - -@article{Schmidt:93b, - AUTHOR = "Douglas C. Schmidt", - TITLE = "{The Reactor: An Object-Oriented Interface for - Event-Driven UNIX I/O Multiplexing (Part 1 of 2)}", - JOURNAL = "C++ Report", - YEAR = 1993, - MONTH = "February", - ABSTRACT = "" -} - -@article{Schmidt:92e, - AUTHOR = "Douglas C. Schmidt", - TITLE = "{IPC_SAP: An Object-Oriented Interface to - Interprocess Communication Services}", - JOURNAL = "C++ Report", - YEAR = 1992, - MONTH = "November/December", - ABSTRACT = "" -} - -@article{Schmidt:92d, - AUTHOR = "Douglas C. Schmidt", - TITLE = "{Systems Programming with C++ Wrappers: Encapsulating - Interprocess Communication Services with Object-Oriented Interfaces}", - JOURNAL = "C++ Report", - YEAR = 1992, - MONTH = "September/October", - ABSTRACT = "" -} - ----------------------------------------- -In addition, here are some articles that discuss various aspects of -the ADAPTIVE project. - -@inproceedings{Schmidt:94r, - AUTHOR = {Douglas C. Schmidt}, - TITLE = "{High-Performance Event Filtering for Dynamic Multi-point Applications}", - BOOKTITLE= "$1^{st}$ Workshop on High Performance Protocol - Architectures (HIPPARCH)", - MONTH={December}, - YEAR = {1994}, - ADDRESS={Sophia Antipolis, France}, - ORGANIZATION = {INRIA} -} - -@inproceedings{Schmidt:94p, - AUTHOR = "Douglas C. Schmidt and Tatsuya Suda", - TITLE = "Measuring the Performance of Parallel Message-based - Process Architectures," - BOOKTITLE = "{\em Proceedings of the INFOCOM Conference on Computer Communications}", - ORGANIZATION= "IEEE", - ADDRESS="Boston, MA", - MONTH = "April", - YEAR = {1995} -} - -@article{Schmidt:94k, - AUTHOR = "Douglas C. Schmidt and Tatsuya Suda", - TITLE = "{An Object-Oriented Framework for Dynamically - Configuring Extensible Distributed Communication Systems}", - JOURNAL = "IEE Distributed Systems Engineering Journal - (Special Issue on Configurable Distributed Systems)", - YEAR = 1994, - MONTH = "December" -} - -@inproceedings{Schmidt:94e, - AUTHOR = "Douglas C. Schmidt", - TITLE = "{Experiences with an Object-Oriented Architecture for - Developing Extensible Network Management Software}", - BOOKTITLE = "Globecom Conference", - ORGANIZATION="IEEE", - ADDRESS={San Francisco, CA}, - MONTH = "November", - YEAR = {1994} -} - -@inproceedings{Schmidt:94h, - AUTHOR = "Douglas C. Schmidt and Tatsuya Suda", - TITLE = "{Measuring the Impact of Alternative Parallel Process - Architectures on Communication Subsystem Performance}", - BOOKTITLE = "Proceedings of the $4^{th}$ International Workshop - on Protocols for High-Speed Networks", - ORGANIZATION="IFIP", - ADDRESS={Vancouver, British Columbia}, - YEAR = 1994, - MONTH = "August" -} - -@inproceedings{Schmidt:94b, - AUTHOR = "Douglas C. Schmidt and Tatsuya Suda", - TITLE = "{The ADAPTIVE Service eXecutive: an Object-Oriented - Architecture for Configuring Concurrent Distributed Applications}", - BOOKTITLE = "The proceedings of the $8^{th}$ International Working - Conference on Upper Layer Protocols, Architectures, and - Applications", - ORGANIZATION="IFIP", - ADDRESS={Barcelona, Spain}, - MONTH = "June", - YEAR = {1994} -} - -@inproceedings{Schmidt:93g, - AUTHOR = "Douglas C. Schmidt and Tatsuya Suda", - TITLE="{A Framework for Developing and Experimenting with - Parallel Process Architectures to Support High-Performance - Transport Systems}", - ORGANIZATION="IEEE", - BOOKTITLE="Proceedings of the Second Workshop on the - Architecture and Implementation of High Performance - Communication Subsystems", - ADDRESS={Williamsburg, Virgina}, - MONTH={September}, - YEAR=1993, -} - -@inproceedings{Schmidt:93f, - AUTHOR = "Douglas C. Schmidt and Tatsuya Suda", - TITLE = "{ADAPTIVE: A Framework for Experimenting with - High-Performance Transport System Process Architectures}", - BOOKTITLE="{Proceedings of the $2^{\rm nd}$ International - Conference on Computer Communication Networks}", - ORGANIZATION="ISCA", - ADDRESS={San Diego, California}, - YEAR=1993, - MONTH=jun, - PAGES="", - ABSTRACT="" -} - -@article{Schmidt:93a, - AUTHOR = "Douglas C. Schmidt and Donald F. Box and Tatsuya Suda", - TITLE = "{ADAPTIVE: A Dynamically Assembled Protocol - Transformation, Integration, and eValuation Environment}", - JOURNAL="Journal of Concurrency: Practice and - Experience", - YEAR = 1993, - MONTH=jun, - ABSTRACT = "" -} - -@inproceedings{Box:93a, - AUTHOR="Donald F. Box and Douglas C. Schmidt and Tatsuya Suda", - TITLE="{ADAPTIVE: An Object-Oriented Framework for Flexible - and Adaptive Communication Protocols}", - BOOKTITLE="{Proceedings of the 4$^{th}$ IFIP Conference on High - Performance Networking}", - ORGANIZATION="IFIP", - ADDRESS="Liege, Belgium", - YEAR=1993, - ABSTRACT = "" -} - -@inproceedings{Schmidt:92f, - AUTHOR = "Douglas C. Schmidt", - TITLE = "{Hosting the ADAPTIVE System in the {\em - x}-Kernel and System V STREAMS}", - BOOKTITLE = "Proceedings of the {\em x}-kernel Workshop", - MONTH = {November}, - ADDRESS = {Tucson, Arizona}, - YEAR = 1992, -} - -@inproceedings{Schmidt:92c, - AUTHOR = "Douglas C. Schmidt and Donald F. Box and Tatsuya - Suda", - TITLE = "{ADAPTIVE: A Flexible and Adaptive Transport System - Architecture to Support Lightweight Protocols for Multimedia - Applications on High-Speed Networks}", - BOOKTITLE = "Proceedings of the First Symposium on High Performance - Distributed Computing", - MONTH = {September}, - ORGANIZATION = {IEEE}, - ADDRESS = {Syracuse, New York}, - YEAR = 1992, -} - -@article{Schmidt:92a, - AUTHOR = "Douglas C. Schmidt and Tatsuya Suda", - TITLE = "{Transport System Architecture Services for - High-Speed Communications Systems}", - JOURNAL="IEEE Journal on Selected Areas in Communication", - MONTH=may, - YEAR = 1993, -} - diff --git a/COPYING b/COPYING deleted file mode 100644 index a8f89534e82..00000000000 --- a/COPYING +++ /dev/null @@ -1,90 +0,0 @@ - - _________________________________________________________________ - - Copyright and Licensing Information for ACE(TM) and TAO(TM) - - [1]ACE(TM) and [2]TAO(TM) are copyrighted by [3]Douglas C. Schmidt and - his [4]research group at [5]Washington University, Copyright (c) - 1993-1999, all rights reserved. Since ACE and TAO are [6]open source, - [7]free software, you are free to use, modify, and distribute the ACE - and TAO source code and object code produced from the source, as long - as you include this copyright statement along with code built using - ACE and TAO. - - In particular, you can use ACE and TAO in proprietary software and are - under no obligation to redistribute any of your source code that is - built using ACE and TAO. Note, however, that you may not do anything - to the ACE and TAO code, such as copyrighting it yourself or claiming - authorship of the ACE and TAO code, that will prevent ACE and TAO from - being distributed freely using an open source development model. - - ACE and TAO are provided as is with no warranties of any kind, - including the warranties of design, merchantibility and fitness for a - particular purpose, noninfringement, or arising from a course of - dealing, usage or trade practice. Moreover, ACE and TAO are provided - with no support and without any obligation on the part of Washington - University, its employees, or students to assist in its use, - correction, modification, or enhancement. However, commercial support - for ACE and TAO are available from [8]Riverace and [9]OCI, - respectively. Moreover, both ACE and TAO are Y2K-compliant, as long as - the underlying OS platform is Y2K-compliant. - - Washington University, its employees, and students shall have no - liability with respect to the infringement of copyrights, trade - secrets or any patents by ACE and TAO or any part thereof. Moreover, - in no event will Washington University, its employees, or students be - liable for any lost revenue or profits or other special, indirect and - consequential damages. - - The [10]ACE and [11]TAO web sites are maintained by the [12]Center for - Distributed Object Computing of Washington University for the - development of open source software as part of the [13]open source - software community. By submitting comments, suggestions, code, code - snippets, techniques (including that of usage), and algorithms, - submitters acknowledge that they have the right to do so, that any - such submissions are given freely and unreservedly, and that they - waive any claims to copyright or ownership. In addition, submitters - acknowledge that any such submission might become part of the - copyright maintained on the overall body of code, which comprises the - [14]ACE and [15]TAO software. By making a submission, submitter agree - to these terms. Furthermore, submitters acknowledge that the - incorporation or modification of such submissions is entirely at the - discretion of the moderators of the open source ACE and TAO projects - or their designees. - - The names ACE - (TM), TAO(TM), and Washington University may not be used to endorse or - promote products or services derived from this source without express - written permission from Washington University. Further, products or - services derived from this source may not be called ACE(TM) or - TAO(TM), nor may the name Washington University appear in their names, - without express written permission from Washington University. - - If you have any suggestions, additions, comments, or questions, please - let [16]me know. - - [17]Douglas C. Schmidt - _________________________________________________________________ - - Back to the [18]ACE home page. - -References - - 1. http://www.cs.wustl.edu/~schmidt/ACE.html - 2. http://www.cs.wustl.edu/~schmidt/TAO.html - 3. http://www.cs.wustl.edu/~schmidt/ - 4. http://www.cs.wustl.edu/~schmidt/ACE-members.html - 5. http://www.wustl.edu/ - 6. http://www.opensource.org/ - 7. http://www.gnu.org/ - 8. http://www.riverace.com/ - 9. file://localhost/home/cs/faculty/schmidt/.www-docs/www.ociweb.com - 10. http://www.cs.wustl.edu/~schmidt/ACE.html - 11. http://www.cs.wustl.edu/~schmidt/TAO.html - 12. http://www.cs.wustl.edu/~schmidt/doc-center.html - 13. http://www.opensource.org/ - 14. http://www.cs.wustl.edu/~schmidt/ACE-obtain.html - 15. http://www.cs.wustl.edu/~schmidt/TAO-obtain.html - 16. mailto:schmidt@cs.wustl.edu - 17. http://www.cs.wustl.edu/~schmidt/ - 18. file://localhost/home/cs/faculty/schmidt/.www-docs/ACE.html diff --git a/ChangeLog-93 b/ChangeLog-93 deleted file mode 100644 index 0beb8e6321f..00000000000 --- a/ChangeLog-93 +++ /dev/null @@ -1,52 +0,0 @@ -Wed Dec 15 16:47:19 1993 Douglas C. Schmidt (schmidt@net4.ics.uci.edu) - - * Added a new parameter to the constructor and open() member - functions in the SOCK_Listener and LSOCK_Listener classes. This - parameter indicates that the SO_REUSEADDR option needs to be - applied before attempting to bind an address. - -Sun Nov 21 14:46:18 1993 Douglas C. Schmidt (schmidt@net4.ics.uci.edu) - - * Added a new file called "testconfig.h" in the include directory. - This file gives defaults for the hostname and server port - numbers used in the ./tests directory. - -Wed Nov 3 18:41:14 1993 Douglas C. Schmidt (schmidt@cupid.ics.uci.edu) - - * Released version 2.12. - - * Included Olaf Kruger's fix for templates/shared libs on Sun OS - 4. This solves a bunch of weird problems. Now, most of the - tests compile and run correctly on Sun OS 4! - -Mon Nov 1 17:47:30 1993 Douglas C. Schmidt (schmidt@cupid.ics.uci.edu) - - * Split the release into two parts: (1) the documentation and - papers and (2) the library source code and test examples. - - * Renamed and lightly redesigned the IPC_SAP* hierarchy. Now the - overall C++ wrapper abstraction for local and remote IPC is - called IPC_SAP. The specific wrappers for sockets, TLI, named - pipes, and STREAM pipes are called SOCK_SAP, TLI_SAP, FIFO_SAP, - and SPIPE_SAP, respectively. This cleans up the interfaces, - shares more code, and is much easier to explain. - - In addition, the Server_Daemon framework has been renamed the - Service Configurator framework, and the Server_Daemon class has - been renamed Service_Config. The documentation is being updated - to reflect these changes, as well. - - Note, the easiest way to upgrade existing apps is simply to use - perl as follows: - - % perl -p -i -e 's/Local_IPC/LSOCK/g;' *.[Chi] % perl -p -i -e - 's/IPC_SAP_FIFO/FIFO/g;' *.[Chi] % perl -p -i -e - 's/IPC_SAP_SPIPE/SPIPE/g;' *.[Chi] % perl -p -i -e - 's/IPC_SAP/SOCK_SAP/g;' *.[Chi] % perl -p -i -e 's/SAP_//g;' - *.[Chi] % perl -p -i -e 's/Server_Daemon/Service_Config/g;' - *.[Chi] - - etc. Note that the order in which you do this is important! In - addition, you need to check out your Makefiles, to be sure that - -lIPC_SAP linker lines are changed to include the appropriate - components. diff --git a/ChangeLog-94 b/ChangeLog-94 deleted file mode 100644 index 09465ce823f..00000000000 --- a/ChangeLog-94 +++ /dev/null @@ -1,1027 +0,0 @@ -Fri Dec 23 01:50:50 1994 Douglas C. Schmidt (schmidt@tango) - - * libsrc/ASX: Changed the behavior of Map_Manager::Map_Manager() - to allocate a default-sized buffer. - - * libsrc/Reactor/Reactor.C (dispatch): Made the poll-based Reactor - smarter about detecting POLLERR error conditions. When POLLERR - is detected, the Reactor now shutdown down that fd... - -Wed Dec 21 18:29:15 1994 Douglas C. Schmidt (schmidt@tango) - - * libsrc/IPC_SAP/SPIPE_SAP: Changed the name of class SPIPE_Msg to - SPIPE_IO to reflect the fact that I/O over named pipes need not - be message-oriented... - - * Changed all occurrences of {SOCK,TLI,SPIPE}_Listener to - {SOCK,TLI,SPIPE}_Acceptor. This is a more accurate name for the - function these classes perform. In addition, it is easier to - explain in the context of the Acceptor and Connector patterns. - Note that the *.h files are also changed, as well. - - * Changed the implementation of {SOCK,TLI,SPIPE}_SAP so that there - is now a *_Connector class to go along with the *_Acceptor - class. The *_Connector is a factory that produces *_Stream - objects *actively*, in a similar way to how the *_Acceptor is a - factory that produces *_Stream objects *passively*. This makes - everything much more orthogonal, though it will break existing - code... The easiest way to fix existing code is to do the - following: - - 1. Find places in the code that define objects of - type SOCK_Stream, LSOCK_Stream, TLI_Stream, - or SPIPE_Msg (now called SPIPE_IO). - - 2. Replace #include "SOCK_Stream.h" with - #include "SOCK_Connector.h" (or whatever - C++ wrapper you have). - - 3. Replace definitions of the form: - - INET_Addr addr (port, host); - SOCK_Stream foo (addr); - - with - - INET_Addr addr (port, host); - SOCK_Stream foo; - SOCK_Connector con (foo, addr); - - If you don't want to have an extra variable named "con", - you can replace this with: - - INET_Addr addr (port, host); - SOCK_Stream foo; - SOCK_Connector (foo, addr); // Calls the constructor. - -Tue Dec 20 21:34:10 1994 Douglas C. Schmidt (schmidt@tango) - - * Renamed the ./{libsrc,tests}/{Semaphores,Message_Queues} - directories to SV_Semaphores and SV_Message_Queues to better - reflect their true behavior and in order to prevent clashes with - the new ASX names. - - * libsrc/ASX: Renamed Queue to Task to better reflect its true - functionality. In addition, renamed Message_List to - Message_Queue. - -Mon Dec 19 23:04:52 1994 Douglas C. Schmidt (schmidt@tango) - - * Changed "private" to "protected" in ASX/Message_List.h at the - request of Troy Warner (tnw1@core01.osi.com). - -Mon Dec 12 23:47:01 1994 Douglas C. Schmidt (schmidt@tango) - - * libsrc/IPC_SAP/SOCK_SAP: changed the name of the global utility - function "bind_port()" to ace_bind_port() to avoid polluting the - global symbol namespace. - - * Fixed a descriptor leak in SOCK_Dgram::shared_open() and - SOCK_CODgram::shared_open(). The original version didn't - automatically close down the socket descriptor if bind failed. - The new version does close the descriptor down. - -Sat Dec 10 00:53:20 1994 Douglas C. Schmidt (schmidt@tango) - - * libsrc/Reactor/Reactor.C (mask_ops): Fixed a stupid bug... The - test should have been - - if (this->invalid_handle (handle) || - this->poll_handles_[handle].fd == -1) - - rather than: - - if (this->invalid_handle (handle) || - this->poll_handles_[handle].fd != -1) - - * libsrc/Reactor/Reactor: Modified the semantics of - Reactor::remove_handler() such that calling it with a value of - Event_Handler::DONT_CALL or'd into the Reactor_Mask instructs - the Reactor to remove the handler *without* calling the object's - handle_close() method! - -Fri Dec 9 12:53:31 1994 Douglas C. Schmidt (schmidt@tango) - - * include/Synch: some C++ compilers (e.g., Centerline) barf when - the see the following in an inline function: - - if (foo == bar) - { - errno = result; - return -1; - } - result result; - - I fixed this by doing the following: - - if (foo == bar) - { - errno = result; - result = -1; - } - result result; - -Wed Dec 7 22:23:47 1994 Douglas C. Schmidt (schmidt@tango) - - * include/Synch.h: Added additional methods in the Null_Mutex - class in order to be consistent with the RW_Mutex interfaces... - - * libsrc/ASX/Message_List: Added new a set of methods called - "try_enqueue_head" and "try_enqueue_tail" that will only insert - a message into the queue if it is not already full. If it is - full, return EWOULDBLOCK. - -Tue Dec 6 13:58:28 1994 Douglas C. Schmidt (schmidt@tango) - - * libsrc/Reactor/Event_Handler: added default values of -1 to the - handle_input(), handle_output(), and handle_exception() methods. - -Mon Dec 5 23:30:28 1994 Douglas C. Schmidt (schmidt@tango) - - * libsrc/ASX/Message_List: Added a new method called set_length to - Message_Block. This method sets the length of the "active" - portion of the message. This is defined as the offset from - RD_PTR to WR_PTR. - -Sat Dec 3 20:40:53 1994 Douglas C. Schmidt (schmidt@tango) - - * libsrc/Threads/Synch: Added two new class called Write_Guard and - Read_Guard, which provide functionality a la the Guard class, - only that they acquire and release readers/writer locks. - - * libsrc/Threads/Synch: For interface uniformity with other - synchronization wrappers I added an acquire() method. This is - implemented as a write-lock to be on the safe-side... - -Fri Dec 2 13:33:39 1994 Douglas C. Schmidt (schmidt@tango) - - * include/Synch.i (Mutex::tryacquire): Modified the behavior of - Mutex::tryacquire so that it will return -1 and set errno to the - appropriate return value of tryacquire(3T) if various types of - "problems" occur (such as the Mutex already being held). - - * include/Message_List.i: Rearranged the order of the - Message_Block::get_rd_ptr and Message_Block::set_wr_ptr methods - to deal with inlining problems that some cfront-based C++ - compilers have... - - * libsrc/Reactor/Signal.[hi]: Changed set_handler/get_handler to - "handler" to avoid a collision with Rogue Wave libraries. This - new version is more consistent with other usage in ACE anyhow... - - * Modified the behavior of Service_Config::Service_Config() so - that it makes the initialize size of the Reactor be the same - size as the Service_Repository. This was done at the suggestion - of Bob Sayle and Steve Warwick at ARINC Research. - -Sun Nov 20 00:59:06 1994 Douglas C. Schmidt (schmidt@tango) - - * libsrc/ASX/Message_List: Added two new methods - (is_full() and is_empty()) to the public interface - of Message_List. These methods check whether the queue is full - or empty *while holding the lock*. - - * libsrc/ASX/Queue.h: Made the svc() method a pure virtual - function. This is much cleaner than not doing it, particularly - when we've already got to define open(), close(), and put()... - - * Added a new method to the IPC_SAP/Addr inheritance hierarchy. - The method is called addr_to_string() and it converts the - address of a subclass (e.g., either UNIX domain or Internet - domain) into a string. This functionality is particularly - useful in parameterized types (such as Acceptor), which should - be oblivious of the type of communication domain they are - using... - - * Reorganized the ./apps/Logger/Service_Configurator_Logger - directory in order to reuse more code. Now, all the Acceptor - pattern classes have been moved to a new subdirectory called - ./libsrc/Acceptor. In addition, this code has been generalized - to work with the ASX framework! - -Sat Nov 19 15:19:19 1994 Douglas C. Schmidt (schmidt@tango) - - * Released version 2.15.5 (added a couple of minor fixes and some - additional software to the release. In particular, I've added - the RPC++ C++ wrappers for Sun RPC. See the README file for - more info on this. - - * apps/Synch-Benchmarks: Reorganized all the synchronization tests - so that they would be easier to understand and extend. - - * include/sysincludes.h (ACE_NONBLOCK): Fixed a stupid typo in the - ./include/makeinclude/wrapper_macros.GNU file that accidentally - used ACE_NONBLOCKING instead of ACE_NONBLOCK... Jaysus - - * Fixed up the Service_Config.[Chi] source so that it no longer - allocates statically linked services via static variables. - Stacy Mahlon (mcs@contour.mayo.edu) recommended this change to - workaround bugs in compilers that fail to initialize static - objects appropriately. - -Tue Nov 15 11:55:03 1994 Douglas C. Schmidt (schmidt@tango) - - * Fixed a portability problem in the ./libsrc/Service_Configurator - that was caused by certain compilers failing to initialize - global variables correctly. In particular, the Obstack object - ace_obstack is now a pointer that is allocated dynamically by - Service_Config.process_directive(). Thanks to Stacy Mahlon - (mcs@contour.mayo.edu) for noticing this! - -Mon Nov 14 12:16:14 1994 Douglas C. Schmidt (schmidt@tango) - - * libsrc/Threads/Thread.h: added C++ wrappers for - thr_getconcurrency() and thr_setconcurrency(). - - * Fixed a dumb typo in ./tests/IPC_SAP/SOCK_SAP/CPP-nbclient.C - that failed to conditionally compile for different variants of - siginfo... - - * Added some test programs that benchmark the performance of - Solaris synchronization mechanisms. See ./apps/Synch-Benchmarks - for details... - - * Extended the methods of the Queue class to take advantage of the - new Message_List methods that perform timed waits! This - involves changing many of the existing methods in this class to - add an extra parameter of type timestruc_t *, which defaults to - 0. - - * Added some new comments in the - ./include/makeinclude/wrapper_macros.GNU file that indicate what - the various macros defined by the Makefile scheme actually mean. - This should help people who are porting to a new system... - - * Fixed a dumb bug in ./tests/Shared_Memory that directly included - system header files. Everything in ACE should include - "sysincludes.h" instead... Thanks to Stacy Mahlon - (mcs@contour.mayo.edu) for noticing this! - - * include/Memory_Pool.i (round_up): Fixed a typo where PAGESIZE - should have been ACE_PAGE_SIZE. - -Sat Nov 12 01:32:52 1994 Douglas C. Schmidt (schmidt@tango) - - * Generalized the Shared_Memory_Pool class for Malloc so that it - doesn't require the base addresses for multiple processes to all - start at the same location. - - * libsrc/Service_Configurator/Thread_Spawn.i (Thread_Spawn): - - Fixed a stupid bug in the constructor. Note that we should - be checking if this->tm_ == 0, rather than != 0... - -Fri Nov 11 00:11:41 1994 Douglas C. Schmidt (schmidt@tango) - - * Released version 2.15.4 (added a couple of minor fixes). - - * Added a new test program in the ./tests/ASX/Message_List - directory. This program illustrates how thread-safe - Message_Lists work using ASX. - - * libsrc/Threads/Thr_Manager.i: Added a new method called - insert_thr() to Thr_Manager that is used in conjunction with - Thr_Cntl::Thr_Cntl to make sure that a thread is added to the - Thr_Manager's table correctly. - -Thu Nov 10 20:14:11 1994 Douglas C. Schmidt (schmidt@tango) - - * libsrc/Log_Msg/Log_Record.C (print): Fixed the following very - subtle (and very stupid) bug: - - return ::fprintf (fp, this->msg_data_); - - if this->msg_data_ contains '%', then this call will - fail since fprintf tries to treat the percent sign as - a format code. The obvious fix is: - - return ::fprintf (fp, "%s", this->msg_data_); - - * libsrc/ASX/Message_List.i (is_empty): Fixed a braino that failed - to check if there was a 0-sized buffer in the list. It is now - possible to enqueue a 0-sized buffer, which is helpful for - things like signaling end of transmission by a producer. - - * libsrc/ASX/Message_List.C: Improved the robustness of the - Message_List abstraction by detecting the case where the newly - inserted Message_Block is a NULL pointer. Before, this would - crash the program, where now it returns -1 from the - enqueue_head() or enqueue_tail() methods. - - * libsrc/Threads/Synch.h: added timedwait_signal() and timedwait() - methods to class Condition. These are wrappers around the - cond_t cond_timedwait() function. - - * Improved the documentation of the class interfaces in the - Synch.h C++ wrapper for Solaris 2.x threads mechanisms. - - * Changed the name of class Condition methods wait_signal() and - timedwait_signal() to wait_alert() and timedwait_alert() to - remove confusion with UNIX signals and the regular condition - variable signal. - -Wed Nov 9 23:49:24 1994 Douglas C. Schmidt (schmidt@tango) - - * libsrc/IPC_SAP/Addr/UNIX_Addr.i (UNIX_Addr): Fixed another - couple brainos in UNIX_Addr.i (thanks for Irfan - (ip1@cs.wustl.edu) for noticing this). - - * libsrc/IPC_SAP/SOCK_SAP/SOCK.i (get_local_addr): Fixed a braino - that didn't reset the Addr size after a call to getsockname(). - -Tue Nov 8 00:25:02 1994 Douglas C. Schmidt (schmidt@tango) - - * libsrc/Service_Configurator/Svc_Conf.y (create_service_type): - Fixed a bug on lines 323 and 324, and 330 and 331. The "#if - defined" needs to be INSIDE the "case" statements. Thanks to - mcs@contour.mayo.edu for finding this! - - * Improved the interfaces for all the synchronization wrappers so - that they can be given all the parameters for the underlying - SunOS 5.x *_init calls. Default values are given to keep the - normal usage concise... - -Mon Nov 7 21:41:13 1994 Douglas C. Schmidt (schmidt@tango) - - * Changed all occurrences of Mutex_Rec to Recursive_Lock. This is - much more descriptive since by using templates, the recursive - logic applies to a number of synchronization mechanisms (e.g., - Semaphores, RW_Mutex, Mutex, Null_Mutex, etc.) rather than just - the Mutex class. - - * Changed all occurrences of Mutex_Block to Guard. This is more - standard terminology and reflects Booch's terms more closely, as - well. - -Sun Nov 6 14:31:44 1994 Douglas C. Schmidt (schmidt@tango) - - * Majorly improved the modularity and structure of the Reactor - class. Much duplicate code has been coalesced and several new - features have been added. - - * Changed the name of the Reactor method set_ready() to - ready_ops(). Added a new method called mask_ops(). These - methods make it possible to manipulate the "dispatch masks" and - the "ready masks" (e.g., READ_MASK, WRITE_MASK, etc.) at a much - finer level of granularity without loss of efficiency or - correctness. - -Sat Nov 5 16:48:55 1994 Douglas C. Schmidt (schmidt@tango) - - * Changed the name of three methods in the Semaphore class to - mirror the terms used for Mutex and RW_Mutex. This will help - support the use of semaphores along with templates (e.g., - Rec_Lock) much better... The old names were "wait", "trywait", - and "signal". The new names are "acquire", "tryacquire", and - "release." - - * Added a new class called Signal_Block in Signal.[hiC] This class - operates similar to Mutex_Block, in that it holds a set of - signals over the duration of a C++ statement block. The - constructor masks out the signals and the destructor restores - the signals. - - * Changed the name of files Signal_Handler.[hiC] to Signal.[hiC] - to reflect a broadening of the functionality of the ACE wrappers - for Signals. For example, the new C++ classes wrap the sigset_t - API, as well as the struct sigaction structure. - -Fri Nov 4 00:41:48 1994 Douglas C. Schmidt (schmidt@tango) - - * Yow, got the new Shared_Malloc/Malloc class to work correctly on - SunOS 4.x, as well as SunOS 5.x. It's a bit more clunky on - SunOS 4.x since we have to use System V semaphores rather than - Solaris synchronization mechanisms. However, it now seems to - function correctly! - - * Added a new method called "tryacquire" to Semaphore_Complex and - Semaphore_Simple. This method provides the same "non-blocking" - semantics as it does in the Mutex, Semaphore, and RW_Mutex - classes. - - * Added a new method called "remove()" to all the C++ wrappers in - the Synch.[hi] file. This improves the symmetry with the System - V semaphore wrappers, and also gets around a nasty bug with - cfront 3.x and its handling of templates and explicitly called - destructors... - - * Added a new C++ wrapper class for Threads (Thread.h). The - eventual purpose of this class is to hide the differences - between POSIX pthreads and Solaris threads. - - * Added new parameters to Thr_Manager::spawn to enable the stack - and stack_size to be passed in. - - * Modified the Synch.h file so that the Null_Mutex and Mutex_Block - classes will both be compiled, even if we are building ACE on a - platform that doesn't support threads! - - * Added a timed event-loop method to the public interface of the - Service_Config class. This basically forwards the request to - the underlying Reactor->handle_events method. Thanks to Brad - Needham (bneedham@arinc.com) of ARINC research for the - suggestion! - -Wed Nov 2 14:47:25 1994 Douglas C. Schmidt (schmidt@tango) - - * Changed the interface for one of the Reactor's - {register,remove}_handler methods. These methods - had previously taken a sigset_t &, but for some reason the Sun - C++ 3.0 compiler can't seem to recognize that this is different - from an int! Therefore, I changed the interface to take a - sigset_t *. - - * Fixed some portability bugs that crept into the SunOS 4 version - of ACE, particularly with the siginfo_t extended signal handler - stuff. - -Tue Nov 1 21:46:07 1994 Douglas C. Schmidt (schmidt@tango) - - * libsrc/Log_Msg/Log_Msg.C (log): Fixed a braino on line 175. - "int sig" was undefined outside the conditional (duhhh ;-)). - -Thu Oct 27 17:23:37 1994 Douglas C. Schmidt (schmidt@tango) - - * Fixed up some problems with Semaphore_Complex and - Semaphore_Simple. The new design should be more functional, - particularly for Semaphore_Complex, which now generalizes to - arrays of semaphores. - -Wed Oct 26 16:38:42 1994 Douglas C. Schmidt (schmidt@tango) - - * libsrc/Shared_Malloc/: Created a .i file for Malloc and - Memory_Pool to handle inlines. - - * Fixed a fence-post error in Mem_Map::map_it(). The new version - should correctly set the length of the file *and* also do the - appropriate memory mapping. - - * bin/clone.C: Fixed the clone program so that it now compiles - with the C++ compiler rather than the C compiler. - -Tue Oct 11 20:01:16 1994 Douglas C. Schmidt (schmidt@tango) - - * libsrc/Reactor/Reactor.h (Reactor): Changed the order of the - arguments to the Reactor's register_handler() method used to - register signal handler objects. The new order puts both "new" - components first, and any - (optional) old components following this. This is - a more natural set of default values... - - * libsrc/Shared_Malloc: split out the Local and Shared memory - pools for class Malloc into the Memory_Pool.[hC] files. - -Mon Oct 10 22:54:53 1994 Douglas C. Schmidt (schmidt@tango) - - * libsrc/Threads/Synch.i: Reworked the Thread_Mutex and - Process_Mutex classes to inherit their interface and - implementation code from Mutex... Thanks to Irfan Payrali for - the suggestion! - -Wed Sep 28 11:26:34 1994 Douglas C. Schmidt (schmidt@tango) - - * Moved some of the tests directories around to better reflect - precisely which ACE components are being tested. In particular, - the {client,server} directories that were originally under the - ./tests/Reactor subtree are now located in the - ./tests/Service_Configurator subtree. - -Tue Sep 27 23:05:32 1994 Douglas C. Schmidt (schmidt@tango) - - * Added a bunch of constructors/destructors for - ./tests/Reactor/server to make g++ happy. - - * libsrc/Service_Configurator/Service_Object.[ih] - (Service_Object): Added a constructor and destructor to - Service_Object to make g++ happy. Also, removed the #if for - broken versions of g++ 2.5.8. - - * include/Reactor: Added a constructor and destructor for - Null_Callback to make G++ happy... - - * libsrc/Message_Queues/: Added support for G++ templates. - - * Changed the handling of _sys_siglist in the sysincludes.h file - to try and handle the weird SunOS 4 header file problems... - - * libsrc/IPC_SAP/SOCK_SAP/SOCK_Dgram_Brdcast.C (mk_broadcast): - Removed the "struct" from new struct ifnode in order to - compile... - -Tue Sep 20 11:17:23 1994 Douglas C. Schmidt (schmidt@tango) - - * Fixed a couple of minor typos in the Windows NT C++ wrappers for - sockets. - - * Released version 2.15.2 so that Mark Frutig could have access to - the latest source in order to write man pages! - -Thu Sep 15 20:47:36 1994 Douglas C. Schmidt (schmidt@tango) - - * Extended the Event_Handler interface to support the additional - siginfo_t-style parameters for extended SVR4 signal handling. - Note that for backwards compatibility, this new interface only - enabled if the -DACE_HAS_SIGINFO flag is set in the - wrapper_macros.GNU config file. Making this change affected - several of the existing ACE classes such as Service_Config and - Signal_Handler. - -Mon Sep 12 17:07:10 1994 Douglas C. Schmidt (schmidt@tango) - - * Improved the modularity of the Reactor by creating a new class - called Signal_Handler. This new class basically encapsulates - the signal handling mechanism provided by UNIX within a nice OO - abstraction. The new arrangement is particularly useful since - the Signal_Handler class may be used in applications - (e.g., the Malloc class abstraction) that do not require the - other features of the Reactor. - -Sun Sep 11 14:40:06 1994 Douglas C. Schmidt (schmidt@tango) - - * Changed the default value for Semaphore_Simple and - Semaphore_Complex from OPEN to CREATE. This is more closely - related to how SunOS thread synchronization variables work. - - * Changed the methods of the Semaphore_Simple class to be - syntactically equivalent to the Process_Mutex and Thread_Mutex - classes. This makes it easier to write code that uses - parameterized types to instantiate the appropriate type of - synchronization primitive. - - * include/makeinclude/rules.local.GNU (OBJDIRS): Fixed the - "depend" target so that it generates the correct dependencies - for remaking .so files after they are changed. - - * Added a new pair of methods to the Reactor so that it is now - possible to register/remove a sigset_t of signals in one - operation. - -Sat Sep 10 03:11:34 1994 Douglas C. Schmidt (schmidt@tango) - - * libsrc/Mem_Map/Mem_Map.i (map_it): Fixed a few minor bugs with - how the Mem_Map::map() method handles lseek()'s. - - * Changed the name of the Mem_Map::open() methods to - Mem_Map::map(). This seems like a more reasonable name! Also, - removed the close() method. This is trivial to implement via - ::close (mmap.get_fd ()); - -Fri Sep 9 22:04:25 1994 Douglas C. Schmidt (schmidt@tango) - - * Provided a new implementation of a flexible memory allocation - scheme (Shared_Malloc/Malloc.[HiC]). This memory allocation can - be parameterized by the following: - - 1. The pool from which memory is allocated (e.g., - local memory vs. shared memory). - - 2. The type of synchronization used when allocating - the memory (e.g., no synchronization, thread-based - synchronization, process-based synchronization). - - * libsrc/Threads/Synch.i (Proc_Mutex): Added new classes to the - Synchronization library. These classes are wrappers around the - USYNC_PROCESS and USYNC_THREAD flags to mutex_init(). - -Wed Sep 7 20:29:00 1994 Douglas C. Schmidt (schmidt@tango) - - * include/sysincludes.h (MT): Added check to see if _REENTRANT was - already defined, and if so, avoid redefining it! - -Sun Sep 4 16:23:17 1994 Douglas C. Schmidt (schmidt@tango) - - * Released version 2.15.1 to the world... - - * Added support for the Windows NT version of SOCK_SAP. - - * Fixed a few minor bugs involved with the order of linking - libraries. - - * Fixed an oversight in ./testsReactor/server/server_test.C where - I was still including the "Server_Test.h" file (ugh). - -Wed Aug 31 13:27:10 1994 Douglas C. Schmidt (schmidt@tango) - - * libsrc/IPC_SAP/SOCK_SAP/SOCK_Stream.C (open): Fixed a bug - whereby the I/O descriptor wasn't being closed if connect() - failed. Thanks to Charles Eads - (eads@synoptics.com) for reporting this. - - - * Recompiled everything on SunOS 4.x using SunC++ 3.x and SunOS - 5.x using SunC++ 3.x and 4.x. Everything seems to compile fine - now. - - * Released version 2.15 - -Mon Aug 29 00:14:04 1994 Douglas C. Schmidt (schmidt@tango) - - * Finished up a preliminary set of tests for ASX. See the - $WRAPPER_ROOT/tests/ASX/Event_Server directory for more details. - - * wrapper_macros.GNU (CC): Removed the ARCHFLAG from the CCFLAGS - macro in the Makefile system. Henceforth, all conditional - compilation should be performed on a "per-feature" basis, rather - than a "per-platform" basis... - - * libsrc/IPC_SAP/SOCK_SAP/SOCK_Dgram_Brdcast.C (send): - Automatically convert the port number to htons format before - using it to initialize the sin_port field of the addressing - structure. This is consistent with the behavior of other parts - of IPC_SAP (particularly INET_Addr::set()). - -Sun Aug 28 00:02:53 1994 Douglas C. Schmidt (schmidt@tango) - - * Changed version number of 2.15 to reflect all the major - modifications to the structure of ACE. - - * include/sysincludes.h: Started to fix up the conditional - compilation scheme to be much smarter about the features that - are available from both the compiler and the OS environment. - - * Added a fix suggested by Leslee Xu (lxu@ics.uci.edu) to better - handle the normalization of Timer_Values. - - * Continued to make ACE coding conventions more consistent by - removing get_/set_ prefix from all the accessor/manipulator - methods. Also, added an underbar at the end of all class and - object instance variables. - -Sat Aug 27 20:28:13 1994 Douglas C. Schmidt (schmidt@tango) - - * Continued to improve error handling by replacing all uses of - perror with the Log_Msg macros. - - * include/sysincludes.h: Continued to improve the namespace - utilization in ACE by prefixing stand-along Misc functions with - ace_. - - * include/FD_Set.h: Changed the name FD_Set_Iter to - FD_Set_Iterator. - - * typedef'd int to HANDLE in Event_Handler.h in preparation for - merging in the Windows NT support along with the regular ACE - package. I need to update all the other code in the entire - release to be consist with this! - -Thu Aug 25 19:49:57 1994 Douglas C. Schmidt (schmidt@tango) - - * Fixed a bug with Thr_Manager.i that occurred if a thread created - by ::thr_create() exits prior to the acquisition of the lock and - the subsequent bookkeeping. - -Wed Aug 24 17:34:49 1994 Douglas C. Schmidt (schmidt@tango) - - * Updated SOCK_Dgram_Brdcast to return the average number of bytes - sent. This isn't necessarily the most useful info, but it - doesn't hurt either. Thanks to Mark Frutig (mfrutig@fnbc.com) - for the suggestion. - -Mon Aug 22 01:18:14 1994 Douglas C. Schmidt (schmidt@tango) - - * Added a new test for the Service Configurator framework. This - test illustrates the dynamic configuration of an entire stream - of Modules. - -Sun Aug 21 03:16:00 1994 Douglas C. Schmidt (schmidt@tango) - - * Cleaned up the ./tests/Reactor/server example to be more robust. - In particular, it doesn't really make sense to have the same - object be configured both statically and dynamically *at the - same time*! This was causing problems since each constructor - was getting called twice for the same object -- once when it was - created statically, and again when it was linked in - dynamically... Things work much better now. - -Sat Aug 20 01:07:24 1994 Douglas C. Schmidt (schmidt@tango) - - * Heavily revised the structure of the ./apps/Logger - subdirectories to test out the new Makefile scheme. Everything - is working fine on Solaris! - - * Updated all the ./apps/Logger subdirectories to use the Acceptor - name rather than the Client_Listener name. This is consistent - with recent papers... - - * Fixed all the Makefiles to utilize the new simplified build - strategy. The Makefiles are *far* more automated now! - - * Added support to all the libsrc Makefiles to produce both shared - libraries (*.so) and traditional archives - (*.a). - -Fri Aug 19 16:13:42 1994 Douglas C. Schmidt (schmidt@tango) - - * Majorly improved the Makefile support for building shared - objects that will be dynamically linked explicitly. No longer - will we have to do the horrible hack of compiling all the source - code using -pic. Instead, only that code that will be linked - dynamically must be compiled with -pic! Note that this only - works if the shared object is entirely self contained (i.e., it - does *not* reference any statically linked symbols that are not - defined in itself)! - - * Started to add changes to the source code to make its - configation driven by features rather than by OS. This should - make everything much more portable soon! - - * Fixed IPC_SAP.h so that the constructor is protected (prevents - accidental definition of an instance of this class). - -Thu Aug 11 08:31:33 1994 Douglas C. Schmidt (schmidt at valentine.ics.uci.edu) - - * Fixed Reactor::schedule_timer() so that it will unblock the - Reactor if it is currently blocked. This is necessary so that - the Reactor will recompute the amount of time that it needs to - wait before dispatching timer-based events. Thanks to Todd Hoff - for noticing this... - - * Fixed a stupid bug in the handle_input() method of - Client_Listener in both the Reactor and Service_Configurator - version of the Server Logging Daemon. This routine was not - explicitly returning 0 when it worked..., which might cause the - Reactor to deregister the listener handler! - - * Added casts to the ::select() call in the Reactor to ensure that - the FD_Set * -> fd_set * conversion operators are properly - involved. Thanks to Todd Hoff for this fix (thm@ictv.com). - Todd noticed that the DCE pthreads implementation on AIX was - confusing the compiler... - -Mon Aug 8 18:11:03 1994 Douglas C. Schmidt (schmidt at tango.ics.uci.edu) - - * Added a new constructor for the FD_Set class that will convert - an fd_set into an FD_Set. - - * Removed the default value for the Service_Repository constructor - since this was ambiguous with the default constructor. - -Tue Aug 2 18:25:28 1994 Douglas C. Schmidt (schmidt at tango.ics.uci.edu) - - * Fixed a bunch of minor "warning-causing" nits that were caused - by #endif __INLINE__ in certain header files... - - * Added a new set of interfaces to the Reactor to retrieve a - registered handler. These interfaces are also useful for - checking whether a handler is registered at a particular fd. - -Sun Jul 10 17:43:19 1994 Douglas C. Schmidt (schmidt at tango.ics.uci.edu) - - * Improved the implementation of the Profile_Timer and - High_Res_Timer classes. In particular, the High_Res_Timer class - now works quite nicely using SunC++ 4.0. - -Mon Jul 4 12:49:14 1994 Douglas C. Schmidt (schmidt at tango.ics.uci.edu) - - * Changed the order of the base class inheritance list for the - Service_Object class as a workaround for a bug in SunC++ 4.0's - handling of pointers to member functions (ugh). - -Sun Jul 3 18:07:16 1994 Douglas C. Schmidt (schmidt at tango.ics.uci.edu) - - * Added a bunch of changes (courtesy of - george@truffula.fp.trw.com). These changes fix minor - portability problems with the new SunC++ 4.0 compiler. - -Fri Jun 24 08:59:02 1994 Douglas C. Schmidt (schmidt at tango.ics.uci.edu) - - * Removed operator() from all the IPC_SAP listener classes. - Defining this operator was causing more trouble than it is worth - since C++ doesn't allow operator() to have default arguments - (ugh). The "right" thing to do is to simply use the accept() - method in those classes instead of operator(). - -Wed Jun 22 16:54:05 1994 Douglas C. Schmidt (schmidt at tango.ics.uci.edu) - - * Fixed some problems with TLI_Listener that involved lax scoping - of nested classes with cfront 3.x-based C++ compilers. - -Tue Jun 14 11:56:56 1994 Douglas C. Schmidt (schmidt at tango.ics.uci.edu) - - * Added a bunch of changes to get portions of ACE up and running - on SCO UNIX, on HP-UX, and on OSF/1. - -Tue Jun 7 14:32:50 1994 Douglas C. Schmidt (schmidt at tango.ics.uci.edu) - - * Added support for FLEX's <> symbol to properly cleanup when - a configuration file has been parsed by the Service - Configurator's lexer/parser. - -Sun May 22 10:37:14 1994 Douglas C. Schmidt (schmidt at valentine.ics.uci.edu) - - * Modified the semantics of explicit dynamic linking on SunOS 4.x. - Now, if there is no _init or _fini function defined in a shared - library, it isn't an error (we simply don't call the function!). - -Mon May 9 07:58:35 1994 Douglas C. Schmidt (schmidt at tango.ics.uci.edu) - - * Included more fixes for GNU G++ courtesy of Aniruddha Gokhale - . - -Thu May 5 16:47:25 1994 Douglas C. Schmidt (schmidt at tango.ics.uci.edu) - - * Reimplemented the ./apps/Logger/Reactor_Logger to provide an - illustration of how the Reactor works. - - * Added finishing touches to the new version of the Service - Configurator framework. This framework now permits completely - automated configuration and reconfiguration of Service_Objects - and Streams. The next step is to add some more complete - examples that illustrate how these features are used... - -Tue May 3 10:17:12 1994 Douglas C. Schmidt (schmidt at tango.ics.uci.edu) - - * Fixed a bug in the Service Repository that would cause an - extraneous dlclose on a shared library handle under some - circumstances... - -Mon May 2 11:07:52 1994 Douglas C. Schmidt (schmidt at tango.ics.uci.edu) - - * Modified the semantics of Service_Object_Type in the Service - Configurator framework so that it does not automagically - register the service object with the instance of the Reactor. - The original behavior involved too much "over-specification" of - the behavior of Service Objects. Moreover, I can finally omit - the crazy semantics of DONT_REGISTER_SVC and REGISTER_SVC! - - * Fixed some subtle bugs involved with pop'ing a remove'ing a - Module from a Stream. Note that we need to use Module::link - rather than Module::set_next in order to ensure that all the - necessary pointers get rearranged.... - - * Fixed a couple of minor problems with deleting const objects in - the Service_Repository.i file. These were caught by G++, but - not caught by SunC++! - -Sun May 1 11:43:52 1994 Douglas C. Schmidt (schmidt at tango.ics.uci.edu) - - * Fixed subtle bug in Server_Config::run_event_loop(). This bug - prevented reconfiguration from occurring under certain - circumstances. - - * Added a new feature to the Service_Manager class in the Service - Configurator framework. This new feature enables the Service - Configurator to be reconfigured remotely by clients. - - * Fixed a bug in Service_Manager that caused the Service - Configurator to crash if SIGPIPE occurred if a client closed - down ungracefully while retrieving information on active - services. - - * Added a new argument to the Reactor::register_handler() method - that is used to register signal handling Event_Handlers. This - new argument returns the current Event_Handler (if any) that is - registered for this signal. - - * Fixed a potential bug in Service_Config::process_directives that - behaved improperly when there was no svc.conf file present in a - directory. - -Wed Apr 27 12:55:46 1994 Douglas C. Schmidt (schmidt at mabillon.ics.uci.edu) - - * Changed the name of Service_Directory to Service_Manager to - reflect its intended functionality - -Mon Apr 25 10:53:01 1994 Douglas C. Schmidt (schmidt at tango.ics.uci.edu) - - * Updated the Service Configurator framework to use the new signal - handling facilities provided by the Reactor. This cleans up a - lot of the code in Service_Config.i and removes the need for - ugly non-reentrant static class variables. - - * Released version 2.14 - -Sat Apr 23 14:29:11 1994 Douglas C. Schmidt (schmidt at tango.ics.uci.edu) - - * Changed the representation of the select()-based Reactor to be - more similar with the poll()-based Reactor. In particular, - there is only one array of Event_Handlers rather than three... - -Sun Mar 13 16:49:59 1994 Douglas C. Schmidt (schmidt at tango.ics.uci.edu) - - * Fixed a bug with the select-based version of the Reactor. This - bug caused problems when dispatching the handle_output() member - function. - - * Fixed a bug with the select-based version of the Reactor. This - bug resulted in a failure to call the handle_close() member - function on the write_fds and except_fds. - - * Changed the interface for Event_Handler::handle_close() so that - the second parameter is a Reactor_Mask. This allows the - call-back routine to determine which side of a connection (i.e., - read-side vs. write-side or both) to close down. Be careful - since this change may break existing code that used the original - 1 argument handle_close() member function. - - * Changed the location of the Reactor_Mask. It was originally an - enum in Reactor.h. It is now a typedef in Event_Handler. This - change will break existing code but it easily spotted since the - compiler will give an error! - -Sat Mar 12 15:16:59 1994 Douglas C. Schmidt (schmidt at tango.ics.uci.edu) - - * Continued to modify the grammar of the svc.conf file language. - The latest version (illustrated in configuration files in the - ./tests/Reactor/server and - ./apps/Logger/Service_Configurator_Logger file) is both easier - to read and to parse automatically. - -Tue Mar 8 10:19:40 1994 Douglas C. Schmidt (schmidt at tango.ics.uci.edu) - - * Changed the behavior of the Get_Opt class so that it will - perform option processing starting from argv[0] rather than - argv[1] if the SKIP argument to the constructor is set to 0. - Note that the default value is 1, so the behavior is the same - for backwards compatibility. Incidentally, this new change is - necessary to support the Service Configurator stuff... - - * Changed the names of some of the Service_Record member functions - to conform to the new idiom for naming get/set-style of member - function accessors... - -Sun Mar 6 12:47:03 1994 Douglas C. Schmidt (schmidt at tango.ics.uci.edu) - - * Removed libGet_Opt.a and merged it in with libMisc.a - -Sat Mar 5 18:37:43 1994 Douglas C. Schmidt (schmidt at tango.ics.uci.edu) - - * Updated the Service_Config class to use a flex/yacc based parser - rather than an ad hoc parser and lexer. This is useful since - the new syntax for configuring a complete Stream into a Service - Configurator-based application is more complicated... - - * Made a small change to the syntax of a svc.conf file. Now any - parameters that are passed to the Service_Object::init() member - function of a dynamically linked service must be enclosed inside - of double quotes. In other words, service config entries such - as - - dynamic ./dev_adapter.so:_alloc () Device_Adapter -p 3000 - - now become - - dynamic ./dev_adapter.so:_alloc () Device_Adapter "-p 3000" - - This change makes it easier to parse the input using flex/yacc. - -Sat Feb 12 18:53:14 1994 Douglas C. Schmidt (schmidt@net4.ics.uci.edu) - - * Modified the Reactor so that it now also demultiplexes signals, - as well as timer events and I/O events. This required making a - few sections of the Reactor code signal-safe, as well as - thread-safe. - - * Changing the Reactor to handle signals also required a slight - change to its interface. For example, it is now mandatory to - give the Event_Handler::{READ_MASK,WRITE_MASK,EXCEPT_MASK} when - registering a handler... - -Sat Feb 5 12:10:53 1994 Douglas C. Schmidt (schmidt@net4.ics.uci.edu) - - * Changed the Condition and Monitor classes to use templates that - parameterize them with the appropriate type of Mutex (i.e., - either Mutex or Mutex_Rec). This greatly cleans up the code... - Made a number of changes in other files - (such as the Reactor) to account for the changes. - - * Added a new class called Mutex_Rec which implements a recursive - Mutex abstraction on SunOS 5.x. Recursive Mutexes may be - acquired multiple times from a single thread. Basically, this - supports an efficient and clean way of handling nested locking - conditions. - -Thu Feb 3 12:37:34 1994 Douglas C. Schmidt (schmidt@net4.ics.uci.edu) - - * Fixed a bug in Service_Config.i that was causing SIGHUP-driven - reconfiguration not to work correctly. - - * Added a set of new member functions to the Reactor class to - suspend() and resume() an event handler. Also added suspend() - and resume() member functions to the Server_Object class to take - advantage of these new facilities automagically... - -Mon Jan 31 09:47:06 1994 Douglas C. Schmidt (schmidt@net4.ics.uci.edu) - - * Modified the no-args constructor for the Reactor to initialize - it to the DEFAULT_SIZE. The prior behavior was *not* to - initialize it at all, which seems rather dumb in retrospect... - - * Improved the Reactor's support for multi-threading by adding a - pipe() call that is used to force the Reactor to reconfigure - itself everytime a new handler is registered or removed. - Previously, any new changes wouldn't take place until the - Reactor was triggered by some external event. This old behavior - was too non-deterministic... - -Sun Jan 2 12:35:39 1994 Douglas C. Schmidt (schmidt@net4.ics.uci.edu) - - * Modified the inheritance hierarchy for Service_Object so that it - derives from both Shared_Object and Event_Handler. - Shared_Object is a new abstract base class the provides an - interface for dynamic linking of objects. When RTTI is widely - available for C++ the Service Configurator will be much more - functional since we can automatically figure out whether an - object is a Service_Object or just a Shared_Object and do the - right thing with it! - diff --git a/ChangeLog-95 b/ChangeLog-95 deleted file mode 100644 index 429e5681fdc..00000000000 --- a/ChangeLog-95 +++ /dev/null @@ -1,4179 +0,0 @@ -Sun Dec 31 01:02:01 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/OS (mmap): Added a new parameter to the argument list for - mmap(). This parameter is an ACE_HANDLE * and is used in the - Win32 implementation, which requires CreateFileMapping to open a - new HANDLE. This handle is passed back to the caller, which is - then responsible for freeing it... I'll probably need to modify - the ACE_Mem_Map class to manage this new handle for the WIN32 - version. - - * ace: Updated all the SPIPE files in preparation to porting them - to Windows NT, where they will be implemented using Win32 Named - Pipes! - - * ace/Typed_SV_Message: Fixed a mysterious braino where the method - definitions for Typed_SV_Message were actually within - Typed_SV_Message_Queue.cpp. I'm not sure why this happened, but - it's clearly been this way for eons... Also, changed the name - of the method "max" to "max_size" to avoid conflicts with macros - on Windows NT... - - * ace: Added a new config symbol: ACE_HAS_SYSV_IPC. If this is - *not* set (e.g., Win32) then don't try to compile any of the - System V IPC mechanisms (e.g., shared memory, message queues, - semaphores). - - * ace/Malloc: Reimplemented the Malloc-family to factor out common - code. Also added a new method called "trybind" which atomically - tries to bind a new void *pointer to a char *name. If there is - no name with the same value, the bind succeeds. Otherwise, the - bind "fails", but returns the existing pointer. - - * ace/Map_Manager: Reimplemented the Map_Manager to factor out - common code. Also added a new method called "trybind" which - atomically tries to bind a new int_id to an ext_id. If there is - no ext_id with the same name, the bind succeeds. Otherwise, the - bind "fails", but returns the existing int_id. - - * ace/Memory_Pool.cpp: Commented out all the diagnostic messages - in the various ACE_*_Memory_Pools. Now that we're actually - using this within ACE, they were distracting. - - * ace/CORBA_Handler.cpp (ACE_ST_CORBA_Handler): Gave iterations_ - an initial value of "5" for backwards compatibility. Thanks to - Irfan for doing this. - - * ace/Map_Manager.cpp (ACE_Map_Manager): Fixed some more braino in - the constructors of Map_Manager. During the recent changes I'd - forgotten to initialize the Map_Manager's instance variables to - 0. Thanks to Irfan for finding this out the hard way... ;-) - - * ace/OS.i (gettimeofday): Added a WIN32 implementation of - gettimeofday. This is pretty nasty, but it should centralize - all of this processing in one place in ACE! - -Sat Dec 30 00:50:20 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Timer_Queue: Removed the current_time() method from the - Timer_Queue class. All uses will be replaced with calls to - ACE_OS::gettimeofday(). Not only does this factor out more - code, but it is also reentrant! - - * ace/ACE.cpp (handle_timed_accept): Consolidated code so that - select() is always used, rather than poll(). - - * ace: Generalized the ACE file locking wrappers (both at the - Synch-level and the ACE_OS class level) to enable them to lock - arbitrary regions (aka "records") of a file. Before, they could - only lock the entire file (which remains the default behavior). - This new behavior works for both NT and UNIX. - - * ace/Synch: Removed the definition and use of the - ACE_SYNCH_ERROR_RETURN macro from all the ACE Synch* methods. - This behavior has been integrated into the ACE_OS class instead - since it cleans up lots of code that would otherwise have been - hard to write. - - * ace/INET_Addr.cpp (get_host_name): Fixed a bug that arose by - trying to use the reentrant version of gethostbyaddr all the - time. In order to fix this, I've added a new get_host_name() - method that allows the caller to supply a buffer for the - hostname. - - * ace: Cleaned up all the POSIX_TIMER junk that permeated ACE. - Now all platforms will have the POSIX timer structures (e.g., - timestruc_t and timespec), though only those that actually - support nano-second timing will be able to do anything useful - with this... As part of this cleanup, the poll, select, and - cond_timedwait method in ACE_OS now take ACE_Time_Value * rather - than int, timeval *, and timestruc_t, respectively. This - *greatly* cleans up the clutter throughout the rest of ACE. - - * ace/ACE: Added two new methods called tv2msec and msec2tv that - converts ACE_Time_Value format into millisecond format and vice - versa. This will make it easier to port code between NT and - UNIX. - - * ace/Reactor: Removed the code in the Reactor that previously - allowed it to be resized after it had been initialized. This - code no longer was used due to the recent enhancements that - ensure the Reactor is only initialized once per-process. - - * ace/Reactor: Modified the Reactor so that it now compiles on NT. - It doesn't work yet, but at least it compiles! - - * ace/Reactor: Moved the "max3" method from the Reactor to OS.h, - where it has become a template function usable throughout ACE. - - * ace/OS.cpp: Added extern "C" before the NT implementations of - readv() and writev(). - - * ace/OS.i: Fixed the declaration of ::readv() and ::writev() for - cases where the OS doesn't provide them natively. - - * ace/Event_Handler: Modified handle_signal() to take an int - rather than an ACE_HANDLE. The old way broke under NT... - - * ace: Made lots of minor changes to resolve signed int - vs. unsigned int mismatches. Thanks to the MSVC++ 4.0 compiler - for pointing these out. At least it's good for - something... ;-). - -Fri Dec 29 15:01:10 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/ACE.cpp (handle_timed_accept): Reimplemented the core - select() loop to make the code portable to Win32. - - * ace/Map_Manager.cpp (ACE_Map_Manager): Fixed a minor bug caused - by recent changes (forgot to initialize max_size_ in the - constructor...). - - * Updated all the manual pages to reflect the latest changes. - - * ace/ACE.cpp: Fixed up the ACE class so that all of the methods - should compile on both Windows NT and UNIX! - - * ace/OS: Moved the get_file_size() method from class ACE and put - it into class ACE_OS, where it's been renamed to filesize(). - This is really more of an "OS" function, e.g., it's supported on - Win32 directly. - - * ace/OS.cpp: added readv() and writev() implementations for those - platforms (e.g., Windows NT) that require them. - - * ace/Makefile: Added a new regex to the Svc_Conf_l.cpp target - that will substitute for . This should solve a - portability problem with Windows NT... - - * ace/Malloc: Modified the sync() and protect() methods to use - void * rather than char *. This is now consistent with the OS - classes. - - * ace/OS: Changed things so that all the mmap() related OS - wrappers use void * in their external interface. Any - discrepancies between platforms are now dealt with internally, - in the implementation of the methods. Thanks to Chris Lahey - (clahey@ix.netcom.com) for suggesting this. - - * ace/Local_Name_Space: Modified how ACE_NS_String is used to - instantiate ACE_Map_Manager in order to work around problems - with AIX C++. Thanks to Chris Lahey (clahey@ix.netcom.com) for - reporting this. - - * ace/Synch.i: Added a definition for ACE_RW_Mutex::acquire(). - -Fri Dec 29 00:34:16 1995 Chris Lahey (clahey@ix.netcom.com) - - * ace/OS.h: Changed the #ifdef for ACE_HAS_COMPLEX_LOCKS to - ACE_HAS_COMPLEX_LOCK. - - Changed prototypes for ACE_OS:mprotect(), msync(), and munmap() - to accept ACE_MMAP_TYPE for their first arg. The AIX versions - of these calls all expect void * for their pointer variable. - Note that madvise() takes a caddr_t for its 1st arg and - therefore does not need to be altered. (See related changes in - OS.i and Mem_Map.i) - - Changed prototype for ACE_OS::getsockname(), arg3 to int * (See - related change in OS.i) - - Changed prototype for ACE_OS::setsockopt(), arg4 to const char * - and arg 5 to int (See related change in OS.i) - - * ace/OS.i: Changed function definition for ACE_OS::mprotect(), - msync(), and munmap() to accept ACE_MMAP_TYPE as their 1st arg. - - The following changes relate to the inconsistencies in the - sockets calls on AIX. I thought it would make more sense to - leave the public interfaces alone and then handle the - differences internally. That way it won't break any exisiting - code. - - Changed function definition for ACE_OS::getsockname() to accept - arg3 as int *. Made similar changes in ACE_OS::setsockopt() - - change definition to accept const char * for arg4 and int for - arg5. Add the following code at the start of the function: - Also made changes to ACE_OS::recvfrom() - change arg 6 back so it is - int *. - - * ace/Mem_Map.i: In ACE_Mem_Map::advise(), cast 1st arg to - ACE_OS:madvise() to (caddr_t). - - * ace/Memory_Pool.cpp: In ACE_MMAP_Memory_Pool::acquire(), make - cast to char * in the return statement. In - ACE_MMAP_Memory_Pool::handle_signal(), also make same cast in - the ACE_DEBUG statement near the top of the function. - - * ace/Reactor.cpp and ace/Reactor.h: ACE_Reactor::handler_i() - doesn't return properly if *eh != 0. Remove last "else" so - function always returns 0 if handler != 0. - - In ACE_Reactor::owner(), we need to change signature since - thread_t is not an integer. This has been changed to int - ACE_Reactor::owner(thread_t *t_id); The last two lines have been - changed to: *t_id = this->owner_; return 0; - - * ace/Synch.cpp: In ACE_Condition_Mutex::wait(), the call to - cond_timedwait() does not exist, but ACE_OS::cond_timedwait() - does exist. It takes the same arguments. - - * ace/Synch.h and ace/Synch_T.h: At the end of both files, before - the #define INLINE check for this define's existence to avoid - causing compilers to choke. - - * ace/Mem_Map.i: In ACE_Mem_Map::operator(), the return statement - looked very odd. In the assignment to addr, why is the ", 0" in - the statement? - -Fri Dec 29 00:34:16 1995 Douglas C. Schmidt (schmidt@lambada.cs.wustl.edu) - - * ace: Fixed up many minor problems with the various types of - Shared_Memory wrappers. This mostly entailed changing from char - * to void * to be more consistent with the other parts of ACE. - In addition, I now only include the *.i files if __INLINE__ is - enabled. - - * ace/Memory_Pool.cpp (map_file): Fixed a minor bug by enabling - MAP_FIXED if we're trying to map a file using a fixed address. - -Thu Dec 28 18:39:16 1995 Douglas C. Schmidt (schmidt@merengue.cs.wustl.edu) - - * ace/Local_Name_Space.cpp: Finished implementing changes to the - ACE_Malloc stuff and the Local_Name_Space that Irfan had begun - last semester. - - * ace/SString.cpp: Added new optimizations to the assignment - operators of the ACE_[WCS]String classes to avoid - freeing/allocating memory if the current size is large enough. - - * ace/SString: Added copy constructors... - - * ace/Local_Name_Space.cpp: Modified the implementation of bind() - to avoid a race condition. - - * ace/Map_Manager.cpp (bind): Changed the semantics of bind() so - that callers can control whether or not INT_IDs are reassigned. - Also changed things so that callers can get back the existing - value if they choose not to reassign. - - * ace/SString.cpp: Removed the "P" (persistent) versions of all - these classes and merged them into the default versions. The - persistence is now determined by the type of allocator passed in - as a parameter to the constructor (or by using the "default" - allocator that is accessible via - ACE_Service_Config::allocator()). - - * ace/Map_Manager.cpp: Removed the "P" (persistent) versions of - all these classes and merged them into the default versions. - The persistence is now determined by the type of allocator - passed in as a parameter to the constructor (or by using the - "default" allocator that is accessible via - ACE_Service_Config::allocator()). - - * ace/Malloc_T: Modified the bind() algorithm so that it will - allow the caller to determine whether duplicates are allowed or - not... Also changed things so that callers can get back the - existing value if they choose not to allow duplicates. Irfan - questions the sanity of this... ;-) - - * ace/Synch: To be consistent, added acquire_write and - acquire_read methods to ACE_Mutex. These are useful for cases - where we are going to be parameterizing classes like ACE_Malloc - with some type of mutex wrapper (e.g., ACE_RW_Mutex, ACE_Mutex). - - * ace/Malloc_T.cpp (calloc): Added a new method called "calloc" - that will not only allocate the memory dynamically, but will - also give it an initial value (e.g., '\0'). - -Thu Dec 28 01:10:43 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/OS.i: Modified the implementation of the TLI methods so that - they are conditionally compiled away if the platform doesn't - support TLI... Thanks to Neil Cohen for pointing out the need - for this... - - * ace/OS.i: Modified the implementation of dlopen() and dlsym() to - account for limitations with SunOS 4.x... - - * ace/Service_Repository.cpp: Modified this class to use the - ACE_OS::dlclose method. - - * ace/Parse_Node.cpp: Modified this class to use the - ACE_OS::dlopen and ACE_OS::dlsym methods. - -Wed Dec 27 23:25:03 1995 Jesper S. M|ller (stophph@diku.dk) - - * Added appropriate flags in OS.h for successful inclusion of - several header files, such as Malloc.h and friends. Also added - mprotect to ACE_OS for Win32 to avoid linker errors. - - * Added a return value (from map_file) to - ACE_MMAP_Memory_Pool::handle_signal. The compiler was - complaining. Likewise on - ACE_MMAP_Memory_Pool::commit_backing_store (there 0 seemed like - the correct off-the-end return value). - - * Removed include of some SV semaphore file, if not needed in - Malloc.h. Worse for Memory_Pool.h, since the SV_Semaphore - wrappers consistently differ completely from the other - synchronization routines. I guess we'll need some variant of - ACE_Process_Semaphore that takes an integer as a key instead of - a string, and does not perform automatic init/destroy. - - * Also upgraded fd's from int to ACE_HANDLEs and changes -1 to - ACE_INVALID_HANDLE where appropriate. - - * By help of aggresive preprocessor conditionals, made Handle_Set - work with Win32. There is a fd_set abstraction with appropriate - FD_xxx macros for WinSock, and it requires no sync'ing. The - Handle_Set_Iterator should also work. The good looks of - Handle_Set was impaired, though. Right now, the trigger is the - ACE_WIN32 flag, although it should be something like - ACE_FD_SET_USES_BITS for the unix approach, or like - ACE_FD_SET_USES_VECTOR for the WinSock approach. - - * Reactor almost compiles now, but not quite: Handlers are - addressed by fd, this is no longer possible - what a mess - we - need to step through the handle indices somehow. This will - likely get into some nasty quadratic complexities when iterating - the handles to find the event_handler for each file - handle. Mabye we can circumvent this with a hash table lookup - for those opaque handles. - - * There was a problem with the Svc_Conf.l.cpp and the - Svc_Conf.y.cpp and the extremely lame MSVC++ 2.0. I had to - rename them to Svc_Conf_y.cpp, etc. Awful! - - * Added code to inquire the 'host' name for Win32 in the ACE_Client_Id - class. Another candidate for ACE_OS. - - * About 60 or so ACE .cpp files compile now, which reminds me that - I'll be working on some precompiled header scheme soon, since it - takes for ever and ever, even on my 32meg system with pretty - good SCSI drives. Mabye it's because I'm only running a 66MHz - i486 DX2 (yawn). - - * Dozens of other changes have been made to various files, all - pertaining to int vs. ACE_HANDLE. In Service_Manager.h, a signal - number was an ACE_HANDLE, but just close by, some fd's were - ints. Fixed that, too. - -Sat Dec 23 14:15:16 1995 Jesper S. M|ller (stophph@diku.dk) - - * I've also grouped the .i and .cpp functions by class, - and #if'ed the sbrk and SysV pools out, since - Win32 cannot support those. - - * Added 'inline' to day accessor functions in Date_Time. - - * Two things that missed me in Trace.cpp: - 1) The inclusion order was so that I couldn't - build Trace.o, since it didn't know the MALLOC_HOOK thing. - I moved the #include of Trace.h down below that of ACE.h. - 2) The declaration and definition of the ACE_Trace constructor - differed by a const, which I added. - 3) When linking, multiple symbols were found for some - OS calls like mutex_init, corresponding to the larger - OS Win32 functions. I has ACE_INLINED_OS_CALLS off, - so sometimes the OS functions were inlined, sometimes - not. - I disabled the inline hack in Trace.cpp for WIN32 for now. - This seemed to resolve matters. - - * There was a major problem in OS.i, where Synch.h was needed for - mutex support (in conjunction with TSS info linked list). I - chose to make thr_keycreate and some others non-inlined. - - * More 'is-it-a-handle-or-success' confusion in SOCK*.* Changed - ACE_SOCK_Dgram to use int status. Changed ACE_SOCK_CODgram to - use int status. Changed ACE_LSOCK to use int status. Also - changed a few derived classes - -Fri Dec 22 14:03:15 1995 Douglas C. Schmidt (schmidt@lambada.cs.wustl.edu) - - * ace/OS.h: Added a new type for rwlock_t for platforms that don't - support threading... Thanks to Neil Cohen for reporting this. - - * ace: Merged in all of Jesper's changes for NT and Chris Lahey's - changes for AIX. - - * ace: Merged tli.h into OS.h to avoid name conflicts on Win32. - - * Fixed duplicated names where case is the only difference. - ace/thread.cpp - ace/Thread.cpp - ace/TLI.h - ace/tli.h - apps/Token_Server/mutex_example/simple_token_client.cpp - apps/Token_Server/mutex_example/Simple_Token_Client.cpp - apps/Token_Server/script_example/scripting_token_client.cpp - apps/Token_Server/script_example/Scripting_Token_Client.cpp - tests/IPC_SAP/SOCK_SAP/FD-client.cpp - tests/IPC_SAP/SOCK_SAP/fd-client.cpp - tests/IPC_SAP/SOCK_SAP/FD-server.cpp - tests/IPC_SAP/SOCK_SAP/fd-server.cpp - -Wed Dec 20 22:26:24 1995 Jesper S. M|ller (stophph@diku.dk) - - * FIFO.cpp: One last comparison of 'open' return status where and - ACE_INVALID_HANDLE should be changed to -1. - - * One more last wrong comparison in FIFO_Recv_Msg.cpp. - (Never say never again!) - - * Put an appropriate conditional around the inclusion of - Handle_Set.h for ACE_WIN32 (for now). - - * Introduced a few backslashes in the macros of Dump.h that were - somehow left out... Had to add a really stupid constructor for - struct Tuple. I haven't a clue why MSVC++ wants this! Replaced - 'return ACE_ODB;' with 'return ACE_ODB::instance_;' in the - Singleton access function. - - * Added a constructor for ACE_ODB. It may be private, but it still - needs to be defined... - - * Stack and Set compiles fine for Win32 (not surprisingly) - - * If'ed out the guts of ACE_IPC_SAP enable/disable calls for - Win32, since async IO doesn't work that way on there. - - * Event_Handler now uses ACE_INVALID_HANDLE for default args. - - * SOCK compiles except for the ACE_SOCKET <> ACE_HANDLE - problem. Refer to issue #3 above. - - * We're swamping the ace directory with .mak files. I used the - winntace.mak file, which is compilable and linkable. - -Thu Dec 21 15:37:42 1995 Douglas C. Schmidt (schmidt@merengue.cs.wustl.edu) - - * ace: Greatly simplified the include files so that (1) compilers - are faster and (2) the ACE_Trace mechanism works correctly. - - * ace/Trace: Modified the ACE_Trace_TSS class so that it is no - longer a template. This was overkill since we know the type - head of time (i.e., ACE_Trace_State). - - * ace: Added a number of new changes to ACE to make things work on - AIX. Thanks to Chris Lahey for these - changes. - - * ace/Thread_Manager.cpp: Removed the get_max_thr_id() method - since it was not portable to NT or POSIX pthreads. Nothing in - ACE depended on it anyway... - - * ace/OS: Added a new static data member called NULL_thread that - is a "zero'd" out thread id. This is necessary to deal with the - POSIX pthread implementation of a thread id, which is not always - implemented as a number... By using this new approach, all the - special-case code in Synch.cpp disappears... - - * ace/OS: Added a new method to class ACE_OS called thr_equal() - that masks the differences between comparing thread ids using - the threading libraries. This simplifies the code in Synch.cpp - and Reactor.cpp. - - * ace: Updated all uses of mmap() to use the new ACE_MMAP_TYPE - typedef. This deals with the fact that different versions of - UNIX define mmap() inconsistently (e.g., some use void * and - some use char *...). - - * ace: Removed testconfig.h and merged all of those #defines into - OS.h. This centralizes changes in one place and also eliminates - the need for ./apps and ./tests to include extraneous files... - - * ace/testconfig.h: Changed all uses of 0666 to ACE_DEFAULT_PERMS. - Also, removed all PERMS enums and substituted ACE_DEFAULT_PERMS - instead. - -Wed Dec 20 17:29:55 1995 Tim H. Harrison (harrison@merengue.cs.wustl.edu) - - * Rewrote the Token deadlock detection algorithm. It now performs - "best-effort" detection of deadlock for remote acquires and - complete deadlock detection for local acquires. - -Wed Dec 20 02:37:39 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/OS.h: The select() system call has its own include file on - AIX: . We can wrap the #include with a variable - #if defined (ACE_HAS_SELECT_H). - - * include/makeinclude/platform_aix.GNU: Added new support for AIX. - Thanks to Chris Lahey for these changes. - Added a number of other minor changes, as well. - - * ace: Made a bunch of minor changes to get ACE to compile on - SunOS4.x, Linux, and SGI. - - * ace/config-linux.h: added ACE_HAS_MSG (thanks to Neil Cohen - for this). - - * ace/OS.h: Conditionally compile for ACE_HAS_UTIME for - . - - * Released an alpha version of ACE containing the new Windows NT - port. - - * Integrated and tested all the new Windows NT changes in class - ACE_OS, as well as the Synch* and Threads* classes. We're now - able to build Jesper's win32_test.cpp file in ./ace! A complete - NT port should be just around the corner... - -Tue Dec 19 17:59:04 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace: Move the remaining contents of sysincludes.h into ACE.h. - There is no more sysincludes.h (at long last!). - - * ace: Rearranged things so that the OS.[hi] files contain all the - OS-specific #defines and #includes that were previously in - sysincludes.h. - - * ace: Renamed the ACE_Misc class to class ACE, which is more - representative of what it does. - - * INSTALL: updated the installation instructions to explain how - the new directory structure works. Thanks to Neil Cohen for - pointing out the discrepancy beteen the source and the - documentation ;-). - - * Reorganized (by flattening) the ACE library directory structure - to make it work for both Windows NT and UNIX. Note that Windows - NT does not have symbolic links, so the old way of doing things - didn't port... The consequences of these changes is there is - now a single directory called $WRAPPER_ROOT/ace that contains - the *.[hi] and *.cpp source files. This is also where the - libACE.a and libACE.so libraries are built by default. Also, - note that the suffix used by ACE has been changed from *.C to - *.cpp to deal with the lame Visual C++ compiler... - -Tue Dec 19 01:26:54 1995 Douglas C. Schmidt (schmidt@merengue.cs.wustl.edu) - - * tests/ASX/Event_Server/Event_Server/Supplier_Router.cpp (put): - Fixed up a problem with the Event_Server. Somewhere along the - way it stopped being concurrent! The new version fixes this. - Thanks to Alex V Maclinvosky for - noticing this... - - * Added a billion new changes to class OS to integrate the Windows - NT port with the rest of ACE. We are getting very close... - -Mon Dec 18 12:45:13 1995 Jesper S. Møller (stophph@diku.dk) - - * Major problems in the IPC_SAP. First, I detected that some open - calls returned handles, some returned -1 or 0. For instance - ACE_SOCK has a constructor, that calls this->open and expects a - handle (which it even sets as the current handle - value!). Unfortunately, the return from open is either 0 or -1, - depending on how well the open went. ACE_HANDLE being - typedef'ed to a void* really reveals some problems! I have - solved the problem for the FIFO*.* family and for SOCK.* - -Mon Dec 18 12:43:46 1995 Douglas C. Schmidt (schmidt@merengue.cs.wustl.edu) - - * tests/Reactor/CODgram/CODgram.C (main): Fixed a bug in main() - caused by initializing the Reactor twice. Thanks to Aurelio - Nocerino for reporting - this. - - * libsrc/Service_Configurator/Service_Config.C Added a new - constructor to ACE_Service_Config that can be used to initialize - internal variables without performing a full configuration. - -Mon Dec 18 01:22:22 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Service_Config: renamed tokens.h to sc_tokens.h to avoid - file name collision on Win32. Thanks to Jesper S. M|ller - for reporting this. - - * tests/Mem_Map/IO_Test: renamed io_test.C to test_io.C to avoid - file name collision on Win32. Thanks to Jesper S. M|ller - for reporting this. - - * libsrc/Misc/OS: Implemented condition variables for Windows NT. - -Sun Dec 17 21:23:32 1995 Douglas C. Schmidt (schmidt@merengue.cs.wustl.edu) - - * libsrc/Misc/Trace: Fixed up the ACE_Trace class so that it - doesn't include any calls that will improperly trigger infinite - recursion! This allows the ACE library to be traced completely. - -Sat Dec 16 19:12:37 1995 Jesper S. Møller (stophph@diku.dk) - - * Changes to OS.*: - * Added conditionals to the OS.h for Win32, for the special ACE/Win32 - thr_destroy_tss(), which is automatic for Solaris. - * Changed declarations of thr_create, thr_suspend, thr_continue, - thr_join and thr_[gs]etprio to use hthread_t instead of thread_t. - * Changed return type of OS::open from int to ACE_HANDLE. - * Provided non-obtrusive handling of thr_handle in OS::thr_create - for non-Win32. - * Copied ACE::writev to OS::writev for Win32. Something similar - should happen for other systems... - - * Changes to Thread.*: - * Changed join, suspend and continue to take handles. - * Added thread handle return address to spawn. - - * Changes to Thread_Manager.*: - * Added thread handles to the Thread_Descriptor structure. - * Modified insert_thr and append_thr functions to also take - handles. - * Made ACE_Thread_Descriptor::Thread_State (a enum) public - so Thread_Manager::append_thr could use it as a formal - parameter (I suspect this is a bug in MSVC++). - * Changes the various flavours of suspend, continue, etc. to - use handles instead of id's. Keep in mind that none of this - is destructive for Unix, but vital for Win32. - * There is still a problem with ACE_Thread_Control registering - itself with the Thread_Manager - the thread does not have means - of finding it's own handle. In this particular case, we could - have the thread duplicate it's pseudohandle into a real one, - and pass that one along. I'd really, really, really rather not - have to maintain a thread id->handle mapping myself; It would - slow down thread manipulation and give some troublesome memory - overhead. - - * Changes to Log_Msg.*: - * OS::getpid instead of ::getpid. - - * Changes to Misc.*: - * Sections inappropriate for Win32 #if'd out... - * Provided naive timestamp function (No date) for Win32. - - * Changes to IPC_SAP.*: - * Uses OS::ioctl instead of ::ioctl - * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE - - * Changes to FIFO.*, : - * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE - - * Changes to FIFO_Send.*: - * open now returns an int insted of an ACE_HANDLE. - * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE - - * Changes to FIFO_Send_Msg.*: - * open now returns an int insted of an ACE_HANDLE. - * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE - * Uses OS::writev instead of ::writev - - * Changes to FIFO_Recv.*: - * open now returns an int insted of an ACE_HANDLE. - * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE - - * Changes to FIFO_Recv_Msg.*: - * open now returns an int insted of an ACE_HANDLE. - * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE - - * Changes to sysincludes.h: - * Uses ACE_INVALID_HANDLE instead of ACE::INVALID_HANDLE - -Sat Dec 16 12:29:06 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/IPC_SAP/Addr/INET_Addr.C: Changed the implementation so - that the reentrant versions of the library calls are always used - (class OS sorts this all out). This reduces the amount of - clutter in the code. - - * libsrc/Threads/Synch: Added a new implementation of - "readers/writer" locks for both Windows NT and POSIX pthreads. - By default, these threads packages don't have this feature. - - * libsrc/Threads/Synch: Added a new macro called - ACE_SYNCH_ERROR_RETURN that greatly simplifies the definition of - the synchronization wrappers. - - * include/ace/sysincludes.h: Removed the pthreads_map.h file and - integrated this into sysincludes.h. - -Fri Dec 15 02:39:25 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Misc/OS.i: Finished updating class OS so that it will - compile correctly for OS platforms that don't support threads, - as well as platforms that support POSIX Pthreads vs. Solaris - threads, etc. - - * libsrc/Misc/OS: integrated Jesper S. M|ller - support for POSIX regular expressions (e.g., compile() and - step()) and sysinfo() into ACE. - - * Integrated and tested all of Irfan's changes to ACE to support - the new persistence Name_Server. This added some new classes in - various places that use the ACE_Allocator. - -Thu Dec 14 00:23:43 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * tests/ASX/Event_Server/Event_Server: Fixed an "off by 1" bug in - the declaration of char *argv[3] in the open() methods of - Supplier_Router.C and Consumer_Router.C. Thanks to the "ever - dissatisfied" Alex V Maclinvosky - for reporting this. - - * libsrc/Service_Configurator/Service_Config: Added a new - "Singleton" access point for the global ACE_Allocator. - - * libsrc/Naming/Name_Options.C (parse_args): Made it possible to - change the name of the process on the command line via the -P - option. The default is still to use argv[0] as the process - name. - - * include/ace/testconfig.h (ACE_DEFAULT_GLOBALNAME): Changed the - value from "/localnames" to "/globalnames" to avoid a conflict. - - * libsrc/Misc/SString.C: Added Irfan's new "persistent" string - mechanisms that use the ACE_Allocator_Manager. We may - eventually update the existing SS* stuff to use this. - - * Merged in Jesper S. M|ller updates for Windows - NT. - - * include/ace/Malloc.h: Added a forward declaration for - ACE_Malloc_Iterator right before ACE_Malloc. Thanks to Antonio - Tortorici for reporting it. - - * libsrc/Threads/Synch_T.h: Fixed a small typo in - ACE_Null_Condition. Thanks to Antonio Tortorici - for reporting it. - - * include: Added new config-linux.h and platform_macros.GNU config - files for Linux. Thanks to Timothy Newell - <910430n@dragon.acadiau.ca> for this stuff. - -Wed Dec 13 23:08:11 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/IPC_SAP/Addr/INET_Addr.C (set): Fixed a small typo in the - ACE_INET_Addr::set (const char port_name[], ACE_UINT32 - inet_address) method where the test should be != rather than == - 0. Thanks to Bill Lear (rael@anarchy.cybercom.net) for - reporting this. - -Sun Dec 10 12:23:54 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Service_Configurator/Service_Record.C (init): Fixed a - small problem where a NULL pointer was being returned if a user - passes a non-existent config file (using the -f option) to - ACE_Service_Config::open(). Thanks to Dieter Quehl - (quehl@erlh.siemens.de) for noticing this. - - * libsrc/Log_Msg/Log_Msg.C (log): added a new option (%T) that - causes the current timestamp to be inserted into the log msg. - Thanks to Dieter Quehl (quehl@erlh.siemens.de) for suggesting - this. - - * libsrc/Misc/Misc: Added a new timestamp() method that returns - the current timestamp in the form - "hour:minute:second:microsecond." The month, day, and year are - also stored in the beginning of the date_and_time array. - - * tests/Shared_Malloc: Added Irfan Pyarali new - test program that exercises the new features of ACE_Malloc that - are described in the following bullet. - - * libsrc/Shared_Malloc: Added Irfan Pyarali - cool new versions of ACE_Malloc and ACE_MMAP_Memory_Pool. These - new versions provide the following enhancements: - - 1. Persistence -- via the sync() method - 2. Protection -- via the prot() method - 3. Named malloc chunks -- via bind(), find(), unbind(). - 4. Named iteration -- via ACE_Malloc_Iterator - -Thu Dec 7 00:31:26 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Reactor/Signal.C: Replaced ACE_Guard with ACE_TSS_Guard - to ensure that locks are correctly released even if - Event_Handler::handle_signal() callbacks invoke - ACE_Thread::exit(). Thanks to Detlef Becker - (beckerd@erlh.siemens.de) for suggesting this. - - * libsrc/Threads/Synch_T: Used inheritance to factor out the - shared code between ACE_Guard, ACE_Read_Guard, and - ACE_Write_Guard in order to reduce unnecessary duplication. - - * libsrc/Threads/Synch_T: Changed the implementation of ACE_Guard - to keep a pointer to the LOCK rather than a reference. This - makes the code more flexible and aids in factorization. - - * libsrc/Threads/Synch_T: Changed the implementation of ACE_Guard - to incorporate ACE_Try_Guard semantics. This reduces the amount - of classes and duplicate code in ACE. - -Wed Dec 6 21:36:02 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * include/ace/Trace: Changed the type of the string passed into - ACE_Trace from char * to const char *. - - * libsrc/Reactor/Reactor.C: Had forgotten to initialize the - initialized_ and requeue_position_ members appropriately in the - constructor of the ACE_Reactor if ACE_MT_SAFE is *disabled*. - Thanks to Mark Zusman for pointing - this out. - - * libsrc/Threads/Synch_T.C: changed the order of some methods so - they would be properly defined if ACE_HAS_THREADS and - ACE_HAS_THREAD_SPECIFIC are *not* enabled. This should fix - remaining problems with ACE on SunOS 4 and SGI. Thanks to - Aniruddha Gokhale for noticing this. - -Tue Dec 5 01:06:14 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Changed things around so that the Name_Server and Token_Server - client interfaces are include in libACE. - - * libsrc/Shared_Malloc: added a const char *pool_name to - ACE_Malloc::ACE_Malloc. This is passed into the constructor of - the MEMORY_POOL to make it easier to dynamically name memory - pools. - -Mon Dec 4 21:20:28 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Threads/Synch_T: Modified the place that the - ACE_Thread_Specific methods are defined so that they will be - compiled correctly for platforms without threads or - thread-specific storage. - -Sun Dec 3 23:04:41 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/ASX/Message_Block: Modified clone() so that it takes an - extra parameter that specifies which flags SHOULD NOT BE - TRANSFERED to the clone. This defaults to - ACE_Message_Block::DONT_DELETE. Thanks to Alex V Maclinvosky - for suggesting this. - -Sun Dec 3 17:43:11 1995 Tim H. Harrison (harrison@lambada.cs.wustl.edu) - - * The number of files in the Token library has been reduced. As a - result, many of the files have been renamed. Also, the .i files - have been purged of relatively large methods (these have been - moved to the .C files.) Lastly, most uses of dynamic memory - allocation have been removed from the library. This was - important to reduce the amount of serialization in threaded - applications caused by the dynamic allocation. - -Sun Dec 3 17:29:54 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Threads/Synch: Modified all the synchronization classes - so that they disallow assignment and initialization! - - * libsrc/Threads/Synch: Moved the ACE_Thread_Specific class from - its own files into the Threads/Synch.[Chi] files. This should - eliminate a set of horrible interdependencies among files. - -Sat Dec 2 16:07:40 1995 Douglas C. Schmidt (schmidt@mambo.cs.wustl.edu) - - * libsrc/Misc/SString.C (ACE_CString): Added a destructor to - CString. Thanks to Tim for noticing this... - -Tue Nov 28 17:25:02 1995 Prashant Jain (pjain@tango.cs.wustl.edu) - - * apps/Name_Server/client/lib/Name_Proxy: Changed Name_Proxy to - inherit from ACE_Service_Object rather than ACE_Event_Handler. - This will allow a Name_Proxy to be dynamically linked into an - application via the svc.conf file. - - * apps/Name_Server/client/lib/Name_Proxy: Added new methods - init, fini, and info. - -Tue Nov 28 00:56:52 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * tests/Threads/test_thread_specific.C: Added code to test the new - ACE_TSS_Guard class... - - * libsrc/Threads/Synch_T: Added the new ACE_TSS_Guard class. This - class is similar to the existing ACE_Guard, except that it uses - thread-specific storage to ensure locks are released even if a - thread exits via thr_exit()! - -Mon Nov 27 20:39:58 1995 Prashant Jain (pjain@tango.cs.wustl.edu) - - * apps/Name_Server/{client,server}/tests: Added new tests to - exercise the key features of the name server. - - * apps/Name_Server/client/lib: Simplified access to the nameserver - database. For example, all the network-byte ordering code was - moved out of the Local and Remote Name_Spaces. This code is no - longer necessary since we'll be providing a different means to - get portable name service repositories via a tool that extracts - the "key/value/type" tuples and stores them in a - machine-independent format. The result of this change is that - the Name_Server code is much easier to understand and modify. - - * apps/Name_Server/client/lib: Split local and remote name spaces - into two classes to simplify usage. This approach uses the - Bridge pattern to have a baseclass called Binding and then have - subclasses called Local_Name_Space and Remote_Name_Space. The - constructor of Naming_Context then allocates the right one - (i.e., it serves as a factory). This approach remove all the - switch statements in the code and makes it much easier to use - and extend. - - * apps/Name_Server: updated all the Name_Server components to - use ACE naming conventions. - - * apps/Name_Server/client/lib: Changed ACE_Name_Options to use the - Singleton pattern rather than the global variable... - -Mon Nov 27 00:47:32 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Shared_Malloc/Malloc.h: Named the previously anonymous - struct inside of ACE_Malloc_Header to be - ACE_Malloc_Control_Block in order to keep the OSE tools working. - Thanks to Karlheinz for reporting this. - - * libsrc/Threads/Synch: Fixed a major bug in the ACE_Semaphore - wrappers. Apparently, these had slipped between the cracks and - were not correctly mapping onto the ACE return value scheme - where -1 corresponds to an error with errno set to indicate the - type of error. - - * tests: Cleaned up some files that mistakenly were defining - LSOCK* objects even for platforms (i.e., Linux) that don't - support them. Thanks to Timothy Newell - <910430n@dragon.acadiau.ca> for noticing this. - -Sun Nov 26 12:42:51 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Shared_Malloc/Malloc: Added a new accessor method - (memory_pool) that returns a reference to the MEMORY_POOL object - used to configure ACE_Malloc. - - * libsrc/Shared_Malloc/Malloc: Changed the constructor of - ACE_Malloc to take advantage of the new init_release method on - all the ACE_*_Memory_Pools. - - * libsrc/Shared_Malloc/Memory_Pool: Added a new method to all the - ACE_*_Memory_Pool classes called "init_release". This is called - when ACE_Malloc finishes initializing the dynamic memory - manager. This method is necessary in order to initialize the - ACE_MMAP_Memory_Pool correctly if there are multiple processes - that try to initialize ACE_Malloc simultaneously. In addition, - also added an ACE_SV_Semaphore_Complex to the - ACE_MMAP_Memory_Pool in order to serialize initialization - correctly. - - * libsrc/Shared_Malloc/Memory_Pool: Added sync() and protect() - methods to all of the ACE_*_Memory_Pool classes in order to - support a uniform interface for use with the "robust memory" - mechanism we're building. - - * libsrc/Mem_Map/Mem_Map: Added two new "protect" methods to - ACE_Map_Manager in order to allow clients to change the - protection of memory-mapped regions. - - * libsrc/ASX/Map_Manager: Changed Map_Manager methods to use - "const" for EXT_ID and INT_ID at request of Prashant Jain - (pjain@cs.wustl.edu). - - * libsrc/Shared_Malloc/Memory_Pool: Revised the - ACE_Shared_Memory_Pool so that it would actually work - correctly... This code hadn't been reviewed carefully before - and there were some bugs... - - * libsrc/Shared_Malloc/Malloc: added "INLINE" to the - ACE_Allocator_Adapter components. - - * libsrc/Shared_Malloc/Memory_Pool: Greatly simplified and - consolidated the mmap(2) code for ACE_MMAP_Memory_Pool. - - * libsrc/Shared_Malloc/Memory_Pool.i (release): Removed the - vestigal this->mmap_.remove() call in release(), but added the - appropriate code to close the fd and unmap the region. Thanks - to Irfan Pyarali for noticing this. - -Sat Nov 25 18:12:55 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/CORBA/CORBA_Handler.C (activate_service): - Modified activate_service so that - - if (service_name != 0 - && this->register_service (service_name, marker_name, - service_location) == -1) - return -1; - - is changed to - - if (service_name != 0 && service_location != 0 - && this->register_service (service_name, marker_name, - service_location) == -1) - return -1; - - Irfan Pyarali requested this. - -Sat Nov 25 16:41:15 1995 Douglas C. Schmidt (schmidt@lambada.cs.wustl.edu) - - * libsrc/Misc/Set: Changed all the find() and size() methods to - be const member functions. Thanks to Irfan Pyarali - (ip1@cec.wustl.edu) for requesting this. - -Fri Nov 24 02:51:59 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Reactor/Reactor.C: Fixed the Reactor so that if we're - compiling with DEADLOCK_DETECTION enabled it will create a - uniquely named mutex by stringifying "this". - -Thu Nov 23 21:45:43 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/IPC_SAP: Changed - - * libsrc/Service_Configurator/Service_Config: Added three new - methods to allow programmers to set the process-wide Singletons - for Reactor, Service_Repository, and Thread_Manager. - -Tue Nov 21 01:59:06 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Mem_Map/Mem_Map.C: Fixed a stupid typo in map_it() that - was causing problems due to unsigned arithmetic semantics... - This should make the file_reverse.C Mem_Map tests work correctly - now... Thanks to Bill Lear for - noticing the problem. - - * tests/Mem_Map/IO-tests/io_test.C (parse_args): Fixed a - classic C/C++ braino in io_test.C: - - The for loop in parse_args() - - for (int c; (c = get_opt () != -1); ) - - should be - - for (int c; ((c = get_opt ()) != -1); ) - - How embarrassing. Maybe Bertrand Meyer is right -- C++ is too - dangerous for its own good... ;-). Thanks to Bill Lear - for finding this! - - * Removed all traces of ACE_Condition from the library. - This should make life much easier for compilers (like G++) that - can't grok templates very well... - - * libsrc/Threads/Thread_Specific.C (ts_object): Added a new method - that allows you to simultaneously "test and set" thread-specific - data! This is used to support a neat new trick that ensures - locks are released even if a thr_exit() is called! - - * libsrc/Service_Configurator/Service_Repository: Removed the - Recursive_Mutex from Service_Repository and replaced it with a - regular (non-recursive) mutex. Had to rewrite the code a bit so - that it wouldn't try to call internal methods that acquired the - mutex (this leads to instant deadlock!) - -Mon Nov 20 01:05:47 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Threads/Synch: Finally gave in and accepted the fact that - GNU G++ is a horrible, horrible blight on mankind... Changed - the internals of Synch.[Chi] to completely remove any - dependencies on templates. I hope this fixes some portability - problems deep in the libraries... Added several new classes to - reflect this change: ACE_Mutex_Guard, ACE_Mutex_Condition, and - ACE_Recursive_Mutex. - - * libsrc/IPC_SAP/UPIPE_SAP/UPIPE_Acceptor.C (ACE_UPIPE_Acceptor): - Fixed a stupid typo that was causing the constructor of - UPIPE_Acceptor to become inlined!!! - - * apps/Gateway/Gateway: Fixed up the Makefile so that the gatewayd - executable would compile with G++. - - * include/ace/config-irix5.3-sgic++.h: Changed the SGI config.h - file so that it uses select() rather than poll() by default. - The select() version of the Reactor is implemented more - efficiently in ACE... - - * include: Added config files for AIX courtesy of Byron Walton - . - - * libsrc/Reactor/Signal.C: #ifdef'd out some code in Signal.[hC] - that was causing problems for the HPUX C++ compiler. What a - *horrible* compiler! - - * libsrc/Reactor/Event_Handler.h: Added two new methods to - ACE_Event_Handler: get_priority() and set_priority(). These - will be used to control the behavior of the ACE_Reactor's - dispatching. This also required added a new data member to - ACE_Event_Handler that stores the priority (which defaults to - MIN_PRIORITY). - - * libsrc/Misc/Stack.C (enqueue): Added a new class called - ACE_Unbounded_Queue. This is required for Tim's Token_Server - connection repository stuff... - - * libsrc/CORBA/CORBA_Handler.C: Added new support to both the - single-threaded and multi-threaded versions of CORBA_Handler so - that it will now suspend/resume the services associated with a - CORBA_Handler. - - * libsrc/CORBA/CORBA_Handler.C (ACE_MT_CORBA_Handler): Updated the - constructor to use the associated Thread_Manager to spawn a new - thread. This will allow the suspend() and resume() methods to - atomically resume and suspend the daemon thread and its event - handler. - - * libsrc/Threads/Synch.h: Fixed up the order of #includes to solve - problems with circular header dependencies! - - * Had to add zillions of little changes to avoid problems with - circular includes for G++... - - * tests/ASX/Event_Server/Event_Server/Peer_Router.C (bind_peer): - Fixed a typo that had been dormant for ages due to C++'s very - late binding of templates... G++ picked this right up! - -Sun Nov 19 11:55:02 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Reactor/Signal: Replaced the static HANDLER_SET stuff - withing ACE_Sig_Handlers with a different implementation using - ACE_Fixed_Set. This should fix nasty problems with static - variables on HP/UX... - - * Fixed the entire library so that all occurrences of ace_log_msg - are changed to use the ACE_LOG_MSG macro. This macro has magic - properties that should greatly simplify the effort required to - compile ACE robustly on platforms with lame C++ compilers... - - * libsrc/Log_Msg/Log_Msg: Finally got my act together with respect - to thread-specific data and the ACE_Log_Msg class. The new - version can be conditionally compiled such that it won't use the - ACE_Thread_Specific smart-pointer wrapper mechanism unless the - platform supports thread-specific storage and threads. This - will make life much easier for lame C++ compilers that can't - handle static data member templates correctly... - - * apps/Name_Server/{client,server}/lib/Makefile (LIBS): Added a - reference to -lACE in the Makefiles of the ./lib directories in - order to get GCC to work correctly... - - * Added a bunch of fixes courtesy of Bill Lear - to make ACE compile more cleanly - with GNU GCC 2.7.x. - -Sat Nov 18 11:27:40 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Misc/Trace.C: Fixed up the ACE_Trace class so that it - will compile better on platforms that don't support - thread-specific storage. The trick was to make a new Singleton - called ACE_Nest_Depth and then conditionally compile it - according to whether the platform supports thread-specific data - or not! - - * include/makeinclude/platform_sunos5_g++.GNU: Added the new - config file that should allow ACE to build correctly with GCC - 2.7.x. Todd L. Montgomery deserves a big - round of applause for getting this stuff to work! If I had a - budget, I'd give him a raise ;-) - - * libsrc/Misc/Set.C (remove): Tightened up the semantics of all - the *Set::remove() methods so that they return 1 if they - succeed, 0 if the item isn't in the set, and -1 if they fail. - Thanks to Tim Harrison for noticing the inconsistencies. - -Fri Nov 17 01:34:51 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * apps/Logger/Reactor_Logger: Fixed up this example app so that it - would compile with GNU G++ correctly. There was a problem with - the order of include files! Thanks to Todd L. Montgomery - for reporting this. - - * libsrc/ASX/Module.C (writer): Fixed ACE_READER so that it is - properly qualified with ACE_Task_Flags::ACE_READER. Thanks to - Neil Cohen (nbc@metsci.com) for finding this! - - * apps/Gateway/Gateway/Routing_Entry: Replaced ACE_Fixed_Set with - ACE_Unbounded_Set to get around the seemingly endless problems - with HP/UX... - - * libsrc/Misc/Set: Fixed a braino in ACE_Unbounded_Set, where I'd - forgotten to define cur_size_. Thanks to Todd L. Montgomery - for reporting this. - - * libsrc/Connection/Acceptor.C: Change the #undefs of the - shorthand names PA_AC_1, PA_AC_2, and PA_AD in - libsrc/Connection/Acceptor.C to PR_AC_1, PR_AC_2, and PR_AD - (same as in Connector.C and Strategies.C). Thanks to - Dieter Quehl for reporting this. - -Thu Nov 16 02:14:22 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Misc/Trace: Fixed the ACE_Trace stuff by making the - "nesting_indent_" a static data member. This will undoubtedly - break some lame C++ compilers, but it's easy enough to remove - this stuff via conditional compilation using the ACE_NTRACE - #define in ./include/ace/config.h. - - * libsrc/Threads/Thread_Specific.C (cleanup): Under no - circumstances should ACE_Thread_Specific be allowed to - called ACE_Trace. Otherwise, chaos will result! - - * apps/Name_Server/{client,server}/tests/Makefile: Switched the - order of the -lACE and -lName* so that -lACE came *afterwards* - in order for the SGI linker to pick up the symbols correctly. - - * libsrc/Reactor/Signal: I'd accidentally put the "dump" methods - in the *.i file rather than the *.C file. This was causing - problems for G++. - - * libsrc/ASX/Task: Changed all "Q_" prefixes to "ACE_" prefixes in - order to work around a bug with HP/UX... - - * Recompiled everything on SunOS 4.x with SunC++ 4.0.1. It seems - to work! - -Thu Nov 16 18:05:03 1995 Tim H. Harrison (harrison@tango.cs.wustl.edu) - - * I moved around some class declarations so that g++ can properly - instantiate templates for ACE_Token_Collection and - ACE_Token_Manager. - -Wed Nov 15 00:26:40 1995 Tim H. Harrison (harrison@lambada.cs.wustl.edu) - - * The token library should now compile on platforms which do not - support threads. All token components will be compiled into the - library, but use null mutexes and condition variables. The - remote mutex library shall run properly on single-threaded - platforms, so it compiles as usual. - -Wed Nov 15 01:05:38 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Fixed a bunch of minor problems with the SGI port. Things - should work now on IRIX 5.3! - - * man/man3: Completely regenerated all the manual pages to - reflect all the recent updates. - - * libsrc: Added ACE_TRACE macros to every single method in ACE! - This will help with debugging... - -Wed Nov 15 00:26:40 1995 Tim H. Harrison (harrison@lambada.cs.wustl.edu) - - * The token library should now compile on platforms which do not - support threads. All token components will be compiled into the - library, but use null mutexes and condition variables. The - remote mutex library shall run properly on single-threaded - platforms, so it compiles as usual. - -Tue Nov 14 01:58:47 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * tests/CORBA: Added a new test to illustrate the - ACE_MT_CORBA_Handler. - - * libsrc/ASX/Task.C (ACE_Task_Exit): Fixed a niggling problem with - ACE_Task_Exit. Originally, if a thread exited via an implicit - ACE_Thread::exit() (i.e., "falling off the end of the - ACE_Task::svc_run function) then the ACE_Thread_Control on the - thread stack would automatically unregister the thread from the - ACE_Thread_Manager. However, this did *not* occur if a thread - explicitly called ACE_Thread::exit() since in that case the - destructor for ACE_Thread_Control never got called. The - solution to this is a trivial change to ACE_Task_Exit, which now - maintains an instance of ACE_Thread_Control internally, which - will automatically be released when the thread-specific - thread-exit-hook destructor gets called to cleanup upon thread - exit. Since this happens regardless of whether the thread - terminates implicitly or explicitly the ACE_Thread_Manager will - always be able to clean up it's internal resources (unless the - process exit()s, which is a whole different issue... ;-)). - - * Changed all occurrences of ACE_CORBA_Handler to - ACE_ST_CORBA_Handler. Now we've got two types of - CORBA_Handlers: single-threaded (ST) and multi-threaded (MT). - Take a look at ./apps/Orbix-examples/Event_Comm/{Supplier,Consumer} - for an example of how to leverage this in a portable manner! - - * libsrc/CORBA/CORBA_Handler: Totally redesigned the ACE - CORBA_Handler stuff so that it now uses the Singleton pattern - explicitly, rather than using the half-baked static method - version... Changed the test code to reflect this update! - - * libsrc/CORBA/CORBA_Handler.C (activate_service): Changed the - check so that if == 0 then we don't try to do a - putit (previously, this check used , which is less - useful...). - - * libsrc/CORBA/CORBA_Handler.C (activate_service): Removed the - flag from the constructor so that we can - make the CORBA_Handler and the MT_CORBA_Handler equivalent. - - * include/ace/sysincludes.h: Added a new macro called - ACE_THREAD_EXIT_HOOK that enables application threads - (including the main thread) to register a Task * who's - close method will automatically be called when the thread - exits, either implicitly (by falling off the end) or explicitly - (by a thread calling ACE_Thread::exit ()). - - * libsrc/ASX/Task: Moved ACE_Task_Exit into the interface part of - ACE_Task so that Irfan can maybe use this in his stuff ;-). - - * libsrc/Misc: Incorporated the ACE_Date_Time class into the - release. This is an *interface* for a system independent - representation of date and time. Implementation will follow... - - * libsrc/CORBA: Added a new MT_CORBA_Handler, which makes it - very straightforward to integrate the ACE_Reactor with - multi-threaded (MT) Orbix. - - * libsrc/Threads/Token.C: Yow, fixed a dumb problem in Tokens.C - where I was failing to include the *.i file if we weren't - compiling with inlining on!!!! - -Mon Nov 13 01:13:37 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/ASX/Message_Block: Added several new methods to - Message_Block to allow users to access and set various flags. - Thanks to Alex V Maclinvosky for - suggesting this and providing a prototype implementation. - - * include/ace/sysincludes.h: Added a new macro called ACE_NDEBUG - that can be used to toggle support for "live object dumping". - If this macro is enabled then - - * libsrc/Misc/Dump.h: Added support for "live object dumping" into - ACE. This technique is implemented with the "External - Polymorphism" pattern described in a paper available at - http://www.cs.wustl.edu/~schmidt/EuroPLoP-96.ps.Z. - - * libsrc/Threads: Added new classes called *_Process_* and - *_Thread_* for ACE_RW_Mutex, ACE_Barrier, ACE_Condition, and - ACE_Semphaore. This will allow programmers explicitly state the - scope of their locks more explicitly and will also facilitate - portability to Windows NT... - - * libsrc/Threads: Updated the constructors of all the Synch and - Synch_T classes to take an option const char * called "name." - At the moment, this doesn't do anything, but when we port to - Window NT it will be used to ensure that we can name our - process-global synchronization objects. - - * libsrc/Threads/Synch: Added a new tryacquire method to - ACE_RW_Mutex to be consistent with acquire and release... - - * libsrc/Threads/Synch.C (ACE_Mutex): Added a new "name" parameter - to an ACE_Mutex in order to support process-semantics on NT... - - * include/ace/sysincludes.h: Added a #define for EDEADLK in case - some systems don't support it (this is needed by the new - ACE_*_Token stuff). - -Sun Nov 12 14:17:01 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * apps/Name_Server: Modified the client and server test programs - so that they can both be linked statically and/or dynamically. - If svc.conf is present then dynamic linking is used, otherwise - static linking is used. This makes it much easier to test!!! - - * apps/Name_Server/client/lib/Naming_Context.C (local): Changed - things a bit so that if our server host name is "localhost" then - we assume we are local no matter what... - - * apps/Name_Server: Moved directories around a bit so that all the - tests and libs for the client/server portions of the - ACE_Name_Server build correctly... - - * apps/Name_Server/server: Replaced the ad hoc Name_Acceptor and - Name_Handler to use the official ACE_Acceptor and - ACE_Svc_Handler... This cleans up the code considerably... - - * libsrc/Threads/Synch: Added a new wrapper for the the UNIX file - locking mechanism called ACE_File_Lock. This has the same - interface as the other locking mechanisms (e.g., ACE_Mutex and - ACE_Semaphore). Therefore, it can be used in the ACE_Guard - class! - -Sat Nov 11 13:53:48 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Shared_Malloc/Memory_Pool: Improved MMAP_Memory_Pool so - that it will be smarter about remapping the file if we aren't - trying to force a fixed addr to be used for the mapping. In - particular, if we *aren't* forcing a particular address, the new - solution will be more flexible and allow the OS to determine - where to remap the memory should we need to grow the backing - store and the mapping range... - - * libsrc/Misc/Set: Implemented a simple version of the - Unbounded_Set class and its iterator. - - * libsrc/Misc/SString: Changed all the implementations of methods - in SString classes to use new/delete rather than - strdup()/free(). - - * apps/Name_Server/client/Name_Proxy: Changed rcv_reply() to - recv_reply(). - - * apps/Name_Server/client/Name_Proxy: Modified ACE_Name_Proxy so - that the constructor and open take an ACE_Synch_Options. - - * apps/Name_Server/client/Name_Options.C (ACE_Name_Options): Added - a default for the Name_Space directory called - (ACE_DEFAULT_NAMESPACE_DIR) to the testconfig.h file... - -Sat Nov 11 00:24:37 1995 Tim H. Harrison (harrison@lambada.cs.wustl.edu) - - * tests/Tokens/test_token_manager/test_token_manager.C: The token - manager has a working deadlock detection algorithm. - ACE_Local_Mutex uses this to report deadlock situations. - Changes were made to ACE_Local_Mutex to fix a couple bugs which - were causing deadlock. Also, a new test application has been - added to test deadlock detection using the local mutex. - -Fri Nov 10 17:16:06 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Mem_Map/Mem_Map.h: Changed the type of from - long to size_t. - - * tests/Threads/test_thread_manager.C (main): Added a main() for - the case when there's - - * tests/ASX/UPIPE_Event_Server/event_server.C (main): Fixed a - typo that was causing problems on SunOS 4.x. - - * tests/Service_Configurator/IPC-tests/client/local_spipe_client_test.C: - added #include "ace/Log_Msg.h" (why was this working?!). - - * include/makeinclude/rules.lib.GNU: Changed the order of operations - in rules.lib.GNU from - - $(AR) $(ARFLAGS) $@ $? - -$(RANLIB) $@ - -chmod a+r $@ - - to - - $(AR) $(ARFLAGS) $@ $? - -chmod a+r $@ - -$(RANLIB) $@ - - to keep ranlib happy on SunOS 4.x. - - * apps/Time_Server: Added a Makefile - - * include/ace/sysincludes.h: Removed the include - since it was causing major problems on SunOS 4.x... - - * apps/Name_Server/Naming_Context.C: Fixed up a couple of problems - with casts. Thanks to Jack Erickson for - pointing this out. - -Thu Nov 9 15:49:40 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Threads/Synch_T: moved Atomic_Op from ./Misc to ./Threads - and merged it into the Synch_T files. This makes more sense as - a place to put it... - - * libsrc/Misc/SString.C (operator +=): Fixed a typo that would - have caused mistakes when memcpy() was used. Thanks to Prashant - Jain for noticing this. - -Wed Nov 8 22:36:51 1995 Tim H. Harrison (harrison@lambada.cs.wustl.edu) - - * libsrc/Reactor/Reactor.C (TOKEN_GUARD): The reactor now uses the - TOKEN_GUARD macro. The Reactor can now be conditionally - compiled with ACE_REACTOR_HAS_DEADLOCK_DETECTION to use the new - ACE_Local_Mutex in conjunction with the ACE_Token_Manager to - detect deadlock. The deadlock detection algorithm has not yet - been implemented, but the hooks are now in place. - - * libsrc/Tokens: This subdir includes ACE's new Token library. - Check out libsrc/Tokens/README for more info. - - * tests/Tokens: There are a couple test applications for the new - Token library. See tests/Tokens/README for more info. - - * apps/Token_Server: This directory contains some new client - interfaces to the old ACE TokenServer, now Token_Server. There - are also some example use cases included in this directory. As - always, see apps/Token_Server/README for more info. - -Wed Nov 8 00:14:55 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/IPC_SAP/IO_SAP: Added the new classes for IO_SAP from - Gerhard Lenzer (lenzer@csaserv.erlh.siemens.de). This - eliminates UNIX I/O-specific features from ACE. - - * libsrc/Misc/Set: Added a new find() method to each of the - ACE_*_Set classes... - - * include/ace/sysincludes.h (ACE_ALLOC_HOOK_DECLARE): Changed - enum __Ace { __ACE } to struct __ACE {}. I think this - will cause less problems with M.I... - - * libsrc/ASX/Message_Block: Added a new "allocator" parameter to a - Message_Block. This allows the memory stored by a Message_Block - to come from someplace besides the normal heap (e.g., a shared - memory segment!). - - * libsrc/ASX/Message_Block.C (ACE_Message_Block): Yow, fixed a bug - in the destructor where ACE_BIT_ENABLED was being used in place - of ACE_BIT_DISABLED! I think this was causing a memory leak... - - * libsrc/Reactor/Reactor: added a pair of methods that allow a - thread to set/get the notion of who "owns" the event loop. Only - the owner of the loop can do a handle_events() call. Also - changed things so that the requeue_position() are available for - both threaded and non-threaded implementations (just to have a - uniform interface...). - - * libsrc/ASX/Message_Block: added a new constructor and a new - init() method that just assume ownership of a char * passed - as the parameter. Note that this does *not* set any other - fields in the Message_Block and is only used to ferry around - totally opaque data in the Message Block! - -Tue Nov 7 00:52:15 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * tests/Log_Msg/test_log_msg.C (main): Added some new tests to - make sure that op_status() and errnum() work on ace_log_msg. - Thanks to Tim Harrison for these tests. - -Mon Nov 6 12:55:46 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Threads/Thread_Specific: Changed a couple of places in - the Thread_Specific code so that key_ is initialized to 0 and - the ts_obj * is initialized to 0. If these *aren't* 0 then - weird bugs happen on Solaris... Thanks to Tim Harrison for - noticing this and suggesting the fix! - - * libsrc/Threads/Synch_T: Added an accessor method to obtain - the underlying mutex within ACE_Condition. - - * libsrc/Threads/Synch.C (ACE_Process_Mutex): Added a dummy - argument of type const char * to ACE_Process_Mutex. This is in - anticipation of the info required in Windows NT to support a - named process-wide Mutex. On UNIX, this argument is ignored... - -Fri Nov 3 19:02:54 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/IPC_SAP/SOCK_SAP: Back from C++ World... Fixed a couple - of typos in SOCK_Dgram_Bcast and SOCK_CODgram that included the - *.i files multiple times... Thanks to Alex V Maclinvosky - for reporting this. - -Tue Oct 31 02:12:13 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Reactor/Reactor: Modifed the MT_SAFE Reactor so that the - its open() method keeps track of which thread originally created - it. This thread is then considered the "owner" of the Reactor. - If a different thread tries to run the handle_events() method - then an error is returned. - - * libsrc/ASX/Task.C: Added a "group id" field to the ACE_Task. - This can be used to suspend and resume a group of tasks - atomically. Also added default suspend() and resume() methods - that do just that! - - * libsrc/Reactor/Reactor: Made the open() method - thread-safe. Thanks to Detlef Becker (beckerd@erlh.siemens.de) - for pointing out the need for this. - -Mon Oct 30 00:02:53 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Shared_Malloc/Memory_Pool.C (ACE_MMAP_Memory_Pool): - Made it possible to configure the ACE_MMAP_Memory_Pool with a - (backing_store_) file name so that it is possible for multiple - processes to share one wellknown file, as well as to have - multiple pools per process. Check out the - ./tests/Shared_Malloc/test_malloc.C file for an example of how - this works (try the -p -e -L10000 -t3 options). - - * libsrc/Reactor/Reactor: Moved handler_i into the *.C file to - avoid problems with inline functions on HP/UX. - - * libsrc/Misc/SString: Added a new class called ACE_CString. This - class is similar to ACE_WString (which has "wide character" - size), though CString has regular "char" size. Note that both - of these classes are "true" string classes, unlike ACE_SString, - which is a very simple string class that is only to be used for - very specific purposes... - - * libsrc/Shared_Malloc/Memory_Pool.C (acquire): Fixed an - "off-by-one" error in ACE_MMAP_Memory_Pool::acquire() that was - causing an extra byte to be written to the backing store file... - This was causing the ./tests/Shared_Malloc/test_malloc.C program - to fail when -p was given. After this fix the test works - again... (thank God!). - -Sun Oct 29 22:43:25 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Shared_Malloc/Malloc: Added two new classes: - ACE_Allocator and ACE_Allocator_Adapter. ACE_Allocator uses - inheritance and dynamic binding to provide extensible mechanisms - for allocating and deallocating memory. ACE_Allocator_Adapter - implements the Adapter pattern to enable ACE_Allocator to be - used with instantiations of the ACE_Malloc<> template class. - -Sat Oct 28 13:51:07 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * tests/ASX/Event_Server: Added a new directory called - UPIPE_Event_Server, which tests a version of the Event_Server - that is instantiated with ACE_UPIPE_* IPC mechanisms, - rather than by the ACE_SOCK_* mechanisms. - - * libsrc/IPC_SAP/Addr: Created a new file called UPIPE_Addr.h. - This file contains a typedef of ACE_SPIPE_Addr to - ACE_UPIPE_Addr. The purpose of doing this is to "logically" - decouple the ACE_UPIPE* classes from the ACE_SPIPE* classes - (even though they share the same *physical* representation at - this point...). - - * libsrc/IPC_SAP: Fixed a small bug in TLI_Connector.connect() and - SOCK_Connector.connect() that failed to set the - new_stream::handle_ to ACE::INVALID_HANDLE when the connection - failed. Thanks to the ever-astute Mark Patton - (mark_patton@tx72.mot.com) for noticing this. - -Thu Oct 26 15:08:22 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * tests/Threads: created a new test program called - test_thread_manager.C that tests the new semantics for managing - groups of threads. - - * libsrc/Reactor/Signal.C (ACE_Sig_Action): Added a new method - that allows me to create a Sig_Action object that contains both - the handler and the signal to register for. This handler is - register to handle the signal in the constructor of the - object... - - * libsrc/Threads/Thread_Manager: enhanced the Thread_Manager to - add support for operations (i.e., suspend, resume, kill) on a - group of threads. - - * libsrc/Threads/Thread_Manager: Added a new method that allows - the Thread_Manager to resize itself automatically when it's - internal table gets full. - - * libsrc/Threads/Thread_Manager: Updated the return value of - Thread_Manager::spawn() and Thread_Manager::spawn_n() so that - they return -1 on failure *and the group id* on success. - Originally, they returned 0 on success, but this new return - value is more useful since it can be used to control groups of - threads atomically. - -Wed Oct 25 01:03:32 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * apps/Name_Server: Began integrating the newly donated name - server into ACE. There are a number of dependencies on - RogueWave that must be removed, but things are looking good so - far. - - * libsrc/Misc/Set: Changed the name of ACE_Unordered_Set to - ACE_Fixed_Set to be consistent with the ACE Stack classes... - - * libsrc/Misc/Set: Added new ACE classes called ACE_Unbounded_Set, - ACE_Bounded_Set, ACE_Unbounded_Set_Iterator, and - ACE_Bounded_Set_Iterator to deal with ACE name service - stuff. - - * libsrc/Misc/SString: Added a new class called ACE_WString that - gives a very simple "wide-character" string representation for - ACE. This is needed for the ACE name service stuff. - - * libsrc/Misc/SString.C (operator =): Fixed this so that ::strdup - is matched up with ::free, rather than with delete... - - * libsrc/Log_Msg/Log_Msg.C (log): Updated the ACE_Log_Msg class to - store an ostream * in thread-specific storage. This can be used - in conjunction with the dump() method on each ACE class, as well - as with the ACE_ERROR and ACE_DEBUG logging macros. - -Tue Oct 24 00:19:13 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Added a definition of the dump() method to every class in ACE in - anticipation of the changes requested for Siemens. - - * Changed all occurrences of ACE_Signal_* to ACE_Sig_* to make the - ACE naming of signal handling wrappers consistent. - - * libsrc/Threads/Thread: Fixed some obscure bugs with the way that - ACE_Thread was compiling on platforms that don't support - threads. - - * include/ace/config-irix*.h: Removed all TLI support from the SGI - platform. It seems to be totally screwed up from the tests that - I've run and there's no sense in bending over backwards to - support an IPC API that is brain-damaged to begin with... - - * apps/Logger/Service_Configurator_Logger/Thr_Server_Logger: Fixed - up the code so that the Thr_Logging_Server stuff will compile - correctly even for platforms that lack threads! - - * libsrc/Connection/Strategies: Added new strategies that provide - Singleton creation and Process concurrency policies. - - * libsrc/Connection/Connector.C (handle_close): Make sure that all - pending timer objects are removed from the Reactor's timer queue - when a Connector shuts down. In addition, make sure to remove - and delete all dynamically allocated ASTs, as well. Thanks to - Karl-Heinz Dorn (kdorn@erlh.siemens.de) for suggesting this. - - * libsrc/Threads/Thread_Manager.C (wait): Modified wait() so that - it now takes an ACE_Time_Value *, which can be used to wait - until all threads terminate or a timeout occurs... - - * libsrc/Threads/Thread_Manager: Moved Thr_Descriptor from within - the ACE_Thread_Manager class to become ACE_Thr_Descriptor at - file scope. This is in anticipation of the cool new thread - manager stuff on the way... - - * libsrc: Updated every class in ACE to include a "dump" method - with the signature "void dump (void);" This method soon will be - tied into the ACE_Dump mechanism to allow all live objects in - ACE to have their state dumped automagically on-demand. This is - useful for debugging and tracing etc. - - * libsrc: Updated every class in ACE to include a "Alloc hook." - This hook will enable all ACE classes to be allocated from a - particular memory pool. - - * include/makeinclude/rules.local.GNU: fixed the clean target to - delete the *.rpo files (else gcc -frepo can get some crazy - errors) and combines all rm-commands for the target realclean - into one command (in some cases the last two lines do not have - any files to delete, in which case rm produces an usage - message). Thanks to John Huchinson (hutchiso@epi.syr.ge.com) - for the patch. - - * libsrc/IPC_SAP/Addr/INET_Addr: Fixed all the uses of gethost* - and getserv* to use the reentrant get*_r functions if - ACE_HAS_REENTRANT_FUNCTIONS is set and ACE_MT_SAFE is set. - Thanks to Bill Tang for suggesting this. - - * libsrc/Misc/OS: Started adding support for the POSIX *_r - functions to the OS class. - - * include/ace: Added a new #define called - ACE_HAS_REENTRANT_FUNCTIONS. This indicates that the platform - supports reentrant functions (i.e., all the POSIX *_r functions - like gethostbyname_r). - -Mon Oct 23 21:15:50 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * include/makeinclude/platform_irix5.3.GNU (LIBS): Removed the - link of the nsl lib since it seems not to be present on this - platform. Thanks to Karel Zuiderveld - for noticing this. - - * libsrc/IPC_SAP/Addr/INET_Addr.i (operator ==): Enhanced the - semantics of comparison to check both the port number and IP - address. Thanks to Mark Patton (mark_patton@tx72.mot.com) for - suggesting this. - -Thu Oct 19 00:10:28 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/IPC_SAP/Addr/INET_Addr.C (set): Fixed a stupid bug that - failed to set errno appropriately if things go wrong with this - method. Thanks to Mark Patton (mark_patton@tx72.mot.com) for - noticing this! - -Sat Oct 14 12:07:16 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Threads/Thread_Manager: Modified the Thread_Manager so - that even in the case where we are compiling for non-MT systems - the Thread_Manager still has the same method interface (all of - which are no-ops). - -Wed Oct 11 00:12:57 1995 Douglas C. Schmidt (schmidt@mambo.cs.wustl.edu) - - * Finished commenting all the classes in ACE. Updated all manual - pages accordingly. - -Fri Oct 6 14:17:17 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * tests/ASX/Event_Server/Event_Server: Changed - - ACE_SOCK_Acceptor &sa = (ACE_SOCK_Acceptor &) *this->acceptor_; - - to - - ACE_SOCK_Acceptor &sa = this->acceptor_->acceptor(); - - Thanks to Dieter Quehl (quehl@erlh.siemens.de) for suggesting - this. - -Thu Oct 5 00:22:56 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/ASX/Map_Manager: Added a new find() method to the - Map_Manager. This method only checks for the existence of an - EXTERNAL_ID, and doesn't return the INTERNAL_ID. - - * Introduced the new "trait"-based *_Connector, *_Acceptor, and - *_Stream interfaces for all the IPC_SAP classes. Basically, for - each class like - {SOCK,TLI,SPIPE,etc,}_{Acceptor,Connector,Stream}, there's now a - typedef for the appropriate type of ACE_*_Addr subclass and the - appropriate type of ACE_*_Stream class. For example, here's - what's in ACE_SOCK_Acceptor (same goes for ACE_SOCK_Connector): - - class ACE_SOCK_Acceptor - { - public: - // ... - - // = Traits. - typedef ACE_INET_Addr PEER_ADDR; - typedef ACE_SOCK_Stream PEER_STREAM; - }; - - Once C++ compilers can grok template typedefs correct, this new - approach will allow much greater simplification of code, so that - template classes like - - template - class ACE_Acceptor { /* ... */ - virtual int open (const PEER_ADDR &); - }; - - that are currently used like this: - - ACE_Acceptor acc; - - can be replaced with - - template - class ACE_Acceptor { /* ... */ - virtual int open (const PEER_ACCEPTOR::PEER_ADDR &); - }; - - that are used like this: - - ACE_Acceptor acc; - - i.e., the ACE_SOCK_Acceptor maintains a "trait" that the - ACE_Acceptor uses to determine the appropriate addr. This is - more concise and less error-prone than the current scheme that - requires you to pass into the ACE_INET_Addr separately (ugh). - - Note that the trick to making all this work is to typedef the - PEER_ADDR trait into the ACE_SOCK_Acceptor class, as follows: - - class ACE_SOCK_Acceptor { - public: - typedef ACE_INET_Addr PEER_ADDR; // Trait... - }; - - Unfortunately, none of the C++ compilers (e.g., SunC++ 4.0.1, - G++ 2.7.0) support this stuff yet... Therefore, I've added - a set of macros that that will toggle back and forth between - whichever approach works, depending on the setting of - ACE_HAS_TEMPLATE_TYPEDEFS. Hopefully, over time compilers will - support this stuff correctly and life will become easier. - - * libsrc/ASX/Message_Queue: Changed all occurrences of the S_MUTEX - and S_CONDITION macros to ACE_SYNCH_MUTEX and - ACE_SYNCH_CONDITION in order to conform to the new ACE namespace - control conventions. - - * libsrc/Connection/Acceptor: Modified the Acceptor class to split - it into two classes: ACE_Acceptor (which implements a very - simple, very concise version of the Acceptor pattern, without - all the extra strategy mechanisms, etc.). These strategies have - now been factored out into a new class called - ACE_Strategy_Acceptor. The point of these changes is to "keep - simple things simple, but enable powerful extensions when - necessary." All the test programs that utilized the earlier - strategy version of the Acceptor have been updated to the the - Strategy_Acceptor instead. - - * libsrc/Connection/Connector: added two new protected methods, - connect_svc_handler() and activate_svc_handler(). These methods - allow subclasses to override the Connector's strategies for - connection establishment and concurrency. In addition, it makes - the pattern much easier to explain via the Connector pattern and - also is more similar to the Acceptor. - -Wed Oct 4 18:45:58 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * apps/Orbix-Examples/Event_Comm: Fixed the examples in this - directory so that they compile with the new ACE. - -Tue Oct 3 17:33:46 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * include/makeinclude/rules.nested.GNU: Added support so that - ACE can now be built in parallel using the -jN option of GNU - make. To accomplish this, just type - - % make MAKEFLAGS=-j2 - - on the command line and the "-j2" flag will be passed through to - the make hierarchy. Once the SunC++ compiler supports parallel - makes correctly (Template.DB causes problems) this will allow me - to tke advantage of my new dual-CPU SPARCstation 20!!! - -Mon Oct 2 13:34:14 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Connection: Cleaned up some of the code related to - Time_Values * by adding a new method call time_value() to the - ACE_Synch_Options class. - - * libsrc/Service_Config/Service_Record: Changed things a bit so - that we don't have to include "ace/Stream.h" in - Service_Record.h, but instead use forward decls of the - appropriate types. This breaks a circular dependency that was - causing problems for GNU C++. Thanks to John Hutchinson - (hutchiso@epi.syr.ge.com) for finding this problem. - -Sat Sep 30 13:45:08 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Changed all uses of typedef PARENT to inherited, which is less - obtrusive. - -Fri Sep 29 01:33:54 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Misc: Completed the new OS class, which will be used - shortly to remove all direct UNIX system calls in ACE. - - * libsrc: Completed redocumented the header files for almost all - of ACE. The goal was to document all the methods in all the - classes. This has most been achieved (only a few minor changes - remain). The result is *much* better manual page entires in - ./man/man3, as well as much more consistent header files and - overall documentation for ACE. - - * libsrc/Reactor/Reactor: Changed all uses of get() to - handler_i(). Also changed the check_connections() method to - check_handles(). Note that all these changes are invisible to - apps... - -Thu Sep 28 01:22:36 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/IPC_SAP/Addr/SPIPE_Addr: Changed all occurrences of - {get,set}_user_id() and {get,set}_group_id() to user_id() and - group_id() in order to be more consistent with other parts of - ACE. - - * libsrc/ASX/Task.C (module): Modified the implementation of - several Task helper methods (e.g., sibling()) so that they don't - crash if there is not Module associated with the Task. - - * libsrc/ASX/Stream: Removed the sync_ data member from the - private part of Stream since it didn't seem to be used for - anything. - - * libsrc/ASX/Map_Manager.C (bind): Changed the type of the INT_ID - to bind() from INT_ID to const INT_ID &. - - * libsrc/IPC_SAP/Addr/Addr: Moved some methods around in the *.i - file to the *.C file in order to be smarter about inlining. - - * libsrc/Misc/Auto_Ptr.h: Added a new pair of classes called - "auto_ptr" and "auto_array_ptr". These implement the ANSI/ISO - C++ standard auto_ptr mechanism, which helps to write - exception-safe code. The code is based on material from Jack - Reeves (jack@fx.com) and Dr. Harald M. Mueller - (mueller@garwein.hai.siemens.co.at). - - * libsrc/Threads/Synch_T.h (ACE_Null_Condition): Changed the - behavior of Null_Condition::{signal,broadcast} so that they - return 0 rather than setting errno = ETIME and returning -1. - -Wed Sep 27 00:16:01 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Threads/Synch: Fixed a bug with class ACE_Barrier: count_ - wasn't being set properly. - - * tests/Threads/test_barrier.C (main): Fixed a stupid bug - in the ACE_Barrier -- the main function was exiting, thereby - destroying the barrier! - - * tests/IPC_SAP/{SOCK,TLI}_SAP: Added test cases to exercise the - new reuse_addr feature of SOCK_Connector and TLI_Connector. - - * libsrc/IPC_SAP/{SOCK,TLI}_SAP/{SOCK,TLI}_Connector: Implemented - the new behavior for reusing a local address. Also fixed a few - error cases that would have lead to descriptor leaks. - - * libsrc/IPC_SAP/SOCK_SAP/SOCK.C (open): Modified a few return - values and comparisons to ease the transition to WIN32. - - * libsrc/ASX/Task.C (ACE_Task): Changed the behavior of - Task::activate() so that it uses the - ACE_Service_Config::thr_mgr() Singleton if no thread manager has - been associated with a Task when it becomes an active object. - - * libsrc/Service_Configurator/Service_Config: Added a new static - method to class Service_Config called thr_mgr(). This static - method behaves as a "Singleton" and provides a convenient - default thread manager that is available to all threads - throughout a process. - - * libsrc/IPC_SAP: Changed all the IPC_SAP/*_SAP/*_Connector.[hiC] - files and the Connection/Connector.[Chi] class in order to add - "reuse_addr" behavior consistent with the Reactor. This enables - the client to specify that the "local_addr" should be reused - (e.g., via SOCKREUSEADDR), even if its "2 minute wait" time - hasn't elapsed yet. The libsrc/Connection/Connector.[Chi] files - were also changed to support this new interface. - - * libsrc/Log_Msg/Log_Msg.C (log): Fixed a mistake in Log_Record - caused by the new thread-safe storage enhancement. The data - being logged was being rounded up incorrectly. Thanks to Daniel - Proulx (daproulx@qc.bell.ca) for reporting this. - - * libsrc/Reactor/Signal.i (operator): Made a minor change to the - definition of operator struct sigaction * to work around a bug - with the HP/UX C++ compiler (lame, lame, lame)... - - * libsrc/Service_Config: Changed all occurrences of - ACE_Service_Config::reactor (which was originally a globally - accessible public method of class ACE_Service_Config) to - ACE_Service_Config::reactor () (i.e., made the reactor a - Singleton implemented by a static method). This was long - overdue and will fix all sorts of niggling problems with order - of initialization since the reactor() method can do "lazy - creation" of Reactors now, i.e., create one the first time it is - referenced. In addition, changed the - ACE_Service_Config::svc_rep to ACE_Service_Config::svc_rep () in - the same manner. - - * Changed all occurrences of the form: - - *_Stream stream; - *_Connector con (stream, remote_addr); - - if (stream.get_handle () == ACE::INVALID_HANDLE) - ... - - To - - *_Stream stream; - *_Connector con; - - if (con.connect (stream, remote_addr) == -1) - ... - - which is cleaner and less error prone with respect to - UPIPE_Stream (which doesn't have a valid handle once it's - connected). - - * Changed all occurrences of get_handle () == -1 to get_handle () - == ACE::INVALID_HANDLE to help smooth the move to WIN32... - - * libsrc: Created a new directory called Shared_Memory and moved - the Shared_Malloc_MM and Shared_Malloc_SV classes from the - ./Shared_Malloc directory to here, where they are now called - Shared_Memory_MM and Shared_Memory_SV. This is a better - name/place for them since they never really had anything to do - with malloc in the first place! What remains the Shared_Malloc - is the Malloc.* and Memory_Pool.* classes, which are typically - used for truly shared malloc/free. - - * apps/Gateway/Gateway: added new logic to the Gateway to enable - it to specify which local port to bind() to. - -Tue Sep 26 21:17:29 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Connection/Strategies.C (open): Added a return 0; at the - end of the ACE_Thread_Strategy::open method. - - * tests/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.C: - Made CLI_Stream a template so that we don't have to worry about - multiple includes of classes... - -Mon Sep 25 01:41:27 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/IPC_SAP: Revised the close() method of TLI_SAP and - SOCK_SAP so that they don't try to close down a handle that == - ACE::INVALID_HANDLE. - - * Changed all uses of ::free ((char *) ...) to ::free - (ACE_MALLOC_T (...)) to work around inconsistent prototype - problems with some compilers. - - * include/ace/sysincludes.h: Changed ACE_MALLOC_TYPE to - ACE_MALLOC_T which is a bit less verbose... - - * libsrc/Service_Configurator/Makefile (BUILD): Fixed the argument - to sed from -s (which is invalid) to -e (which is valid). - Thanks to Doug Ritter (dougr@guilder.datalytics.com) for - noticing this. Also used sed to do a more elegant fix on the - age-old problem of inconsistent prototypes for free() and - realloc()... - - * libsrc/IPC_SAP/UPIPE_SAP: Rewrote all the UPIPE_* classes to - remove any dependencies on class UPIPE. This class appears to - be unnecessary since it mimics the behavior of class SPIPE. To - simplify the behavior of the UPIPE_* classes, they now inherit - from the SPIPE_* classes where appropriate. - - * libsrc/IPC_SAP/UPIPE_SAP: Changed the semantics of the - UPIPE_Connector and UPIPE_Acceptor connection methods so that - they close down the SPIPE_Stream after a connection is - established successfully. This is important to conserve - descriptors. - - * libsrc/Misc: Created a new class called OS, which encapsulates - *all* of the UNIX system calls and library routines within a - single class. The rest of ACE will program only to the methods - in this interface, which will make it much easier to port to - other versions of UNIX (and WIN32!). - -Sun Sep 24 11:49:47 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/IPC_SAP/SOCK_SAP: Conditionally compile the LSOCK_* stuff - if the OS platform (e.g., Linux) doesn't support it. - - * Changed all occurrences of ACE_HAS_NO_... to ACE_LACKS_... in - all the config*.h files and the headers/source. This reads - better... - - * Changed all uses of (1) Acceptor::peer_acceptor_ to - Acceptor::acceptor(), (2) Svc_Handler::peer_ to - Svc_Handler::peer(), and (3) Connector::peer_connector_ to - Connector::connector() to make the code more abstract and - resilient to future changes. - - * include/ace/sysincludes.h: Added a new macro called - ACE_NEW_RETURN that provides a useful abstraction for - expressions involving operator new since we can change memory - allocation error handling policies (e.g., depending on whether - ANSI/ISO exception handling semantics are being used). - - * libsrc/Threads/Thread.C: Changed things a bit so that if - ACE_MT_SAFE == 0 then Thread::self() returns 1, regardless of - whether the platform supports threads. - - * Went through the entire library and (hopefully) made sure that - all calls to global system calls and library routines are - prefixed with "::". - - * libsrc/Misc/Get_Opt.C: Changed this class to use the Log_Msg - logging mechanism rather than stderr... - - * tests/Misc: Added a new test program to test the Profile_Timer. - - * tests/Reactor/misc: Added a new test program to test the - Handle_Set. - - * libsrc/Service_Configurator: Changed the error messages in - Svc_Conf.y and Svc_Conf.l to go to the ACE Log_Msg logging - mechanism rather than stderr... - - * libsrc/Connection/Acceptor: Modified the Acceptor and - Oneshot_Acceptor classes so that they take advantage of the new - ACE_Creation_Strategy, ACE_Accept_Strategy, and - ACE_Concurrency_Strategy components. This will make is easy to - define Acceptors that can be flexibly configured to use various - creation strategies (e.g., dynamic linking, singletons, dynamic - memory creation, etc.) for making Svc_Handlers. - - * libsrc/Connection/Svc_Handler: Added several new classes -- - ACE_Creation_Strategy, ACE_Accept_Strategy, and - ACE_Concurrency_Strategy -- that form the heart of the new - ACE_Acceptor implementation. These classes define the creation, - passive connection acceptance, and concurrency strategies - employed by the Acceptor factory when it receives a connection - from a client. - - * libsrc/Connection/Acceptor: Modified the implementation of the - Acceptor and the Oneshot_Acceptor. These classes are no longer - related by inheritance since they behave in fundamentally - different ways and sharing code was making it hard to write and - use these classes correctly. - - * libsrc/Misc/Misc: Moved the enum INVALID_HANDLE from IPC_SAP.h - to Misc.h since this is actually more general than just the - sockets stuff and we need to be portable to WIN32... Therefore, - any code that originally said ACE_IPC_SAP::INVALID_HANDLE should - now be ACE::INVALID_HANDLE. - - * Removed the ACE_OMIT_SERVICE_CONFIGURATOR flags. These are - annoying -- anyone who wants to subset ACE should be responsible - for doing this stuff. - -Fri Sep 22 22:36:33 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Threads/Thread_Spawn.C: Greatly simplified the - implementation of Thread_Spawn by leveraging the new class Task - semantics for activate(). Now, all the concurrency activation - mechanisms necessary to create active objects are associated - with a Task and all the Thread_Spawn needs to do is to define a - new make_svc_handler() Factory Method to create a SVC_HANDLER - and activate it! - - * libsrc/ASX/Task.C: Tightened up the semantics of Task::activate - (which turns a passive object into an active object, i.e., one - with its own thread). Now, if an object is activated more than - once it ignores the other requests, unless the force_active - parameter is enabled. Moreover, activate() now takes a - parameter that indicates the number of threads to allocate for - the Task. This makes it simple to have a "thread pool" - associated with a Task. - -Thu Sep 21 00:49:55 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * tests/Connection: Updated the CPP-acceptor and CPP-connector to - use the underlying Acceptor and Connector patterns more - robustly. Also added new hooks to include a Service_Config - component so that integrating this with the ACE dynamic linking - scheme will be a snap! - - * libsrc/Connection/Acceptor.C: Revised the Oneshot_Acceptor to be - robust in situations where it isn't given a Reactor *... - - * apps/Logger: Fixed a couple of minor problems with *.i files - being included when __INLINE__ is set. This should help G++ - compiler ACE better... - - * libsrc/Reactor/Reactor: Enhanced the Reactor::notify() method so - that it takes both an Event_Hander * and a Reactor_Mask, which - it passes to the Reactor's main event loop thread via the pipe. - The event loop thread uses this mask to determine which method - to invoke. This new feature is due to the insight of Karl-Heinz - Dorn (kdorn@erlh.siemens.de). - - * libsrc/Connection/Connector: Fixed a braino in - Connector::handle_output, which was using ::getpeername() to - check whether a connection has been established with a peer. - Naturally, this only works for sockets, and doesn't work at all - for TLI or SPIPEs... - - * libsrc/IPC_SAP/Addr/SPIPE_Addr.C (set): Changed the return type - of this method to "int" in order to conform to the types - expected by the Acceptor/Connector patterns. - - * Removed all uses of the global scope "::" for all variables and - methods that are not UNIX system calls or library calls in - preparation to change over to the new OS class (requested by - Siemens). - -Wed Sep 20 14:39:08 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/IPC_SAP/SPIPE_SAP: Renamed the SPIPE_IO classes to - SPIPE_Stream to be consistent with the other parts of the ACE - library. Updated all parts of the library to reflect this - change. - - * tests/Service_Configurator: Moved the current contents of this - directory into a new directory called IPC-tests. Created a new - directory called Connection-tests where the dynamic linking - examples for Siemens will go. - - * libsrc/Reactor/Signal: Made a bunch of minor changes to support - signal handling on SunOS 4.x platforms. Thanks to Aniruddha - Gokhale for help with this. - - * libsrc/Threads/Synch.h: Modified the #ifdefs a bit so that - Synch_T.h gets included regardless of whether ACE_HAS_THREADS. - - * libsrc/Threads/Synch_Options: Added a new set() method to make - it possible to initialize the Synch_Options from outside the - constructor. - - * libsrc/Connection/Svc_Handler.C: Added checks within the - ACE_Svc_Handler so that if we are given a NULL Reactor we don't - crash! - - * libsrc/Mem_Map: Tidied up this class and added comments to the - header so that the class2man has something to generate manual - pages from! - - * libsrc/Misc/Misc: Added a new method called "round_to_pagesize", - which was previously in Mem_Map. This is a better place for it - since other parts of ACE (e.g., Shared_Memory) use it. - - * libsrc/Misc/Misc: Added a new method called "get_file_size", - which was previously in Mem_Map. This is a better place for it - since other parts of ACE might want to use it. - -Tue Sep 19 00:24:41 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Released a beta version of ACE 3.3.1 for G++ testing. - - * libsrc/IPC_SAP/SOCK_SAP/SOCK_Dgram.C: Removed a stray INLINE - that was causing problems for G++. Thanks to E. Jason Scheck - for reporting this. - - * libsrc/IPC_SAP/Addr/INET_Addr: Improved the documentation for - this class and also added new semantics to the constructor and - set() method so that a "ip_addr:port_number" tuple can be given - as a single string (e.g., "1234:tango.cs.wustl.edu" or - "1234:128.252.166.57"). This is useful since it gives a uniform - interface for addressing for Internet domain, UNIX domain, and - SPIPE domain addresses... Updated the ./tests/Connection tests - to use this form (which is nice since now they are all very - orthogonal!) - - * tests/Connection: Created a whole new suite of tests that - exercise the connection patterns for all of the relevant IPC - mechanisms (e.g., SOCK_SAP, TLI_SAP, SPIPE_SAP, and UPIPE_SAP). - - * bin/clone.C: fixed the first #include so that it uses #include - "ace/sysincludes.h". Thanks to Alex V Maclinvosky - for noticing this. - -Mon Sep 18 01:52:07 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/ASX/Message_Queue.C (close): Fixed yet another problem - with variables being defined in for loops. G++ is good for - detecting this ;-). - - * libsrc/Threads: Moved all the template classes from Synch.* into - Synch_T.* in order to make it possible to compile templates with - G++. Thanks to E. Jason Scheck for suggesting - this. - - * libsrc/IPC_SAP/UPIPE_SAP: Make a number of changes to ensure - that all the UPIPE_SAP classes conform to the same interface as - all the other ACE IPC classes. - - * Changed all occurrences of THR_FUNC to ACE_THR_FUNC to protect - the global namespace better. - -Sun Sep 17 13:36:23 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * tests/ASX/Message_Queue: Fixed a typo in these test programs - that caused a segfault since a vararg parameter was omitted on a - call to the Log_Msg::log() method. Maybe iostreams isn't so bad - after all... ;-) - - * apps/Logger/Service_Configurator_Logger/Thr_Server_Logger: fixed - a stupid error that was caused by some mods I made after ECOOP - to update the threaded logging server. When I changed the - Thr_Logging_Acceptor so that it no longer inherited from the - Logging_Acceptor I forgot to redefine the init() method... - - * man: Totally regenerated the ACE manual pages using the new - versions of the OSE tools provided by Karl-Heinz Dorn - (kdorn@erlh.siemens.de). - - * Changed all occurrences of MT_SYNCH and NULL_SYNCH to - ACE_MT_SYNCH and ACE_NULL_SYNCH, respectively. This is - consistent with the ACE naming conventions and had been an - oversight when I renamed everything earlier. - - * Fully built and tested ACE with the __INLINE__ flag enabled. - This will generate code with many small methods in the library - inlined. Had to fix a bunch of minor things to allow this to - work without compilation-order dependency problems. - - * libsrc: Made a bunch of changes to the way that header files are - included internally to ACE in order to break compilation-order - dependencies. This is necessary to support GNU G++'s lame - handling of templates. None of this stuff should affect - application code. - - * tests: Added a whole new slew of tests for the remaining parts - of ACE that weren't currently included in ./tests. This stuff - exercises ACE components like the Log_Msg logger and factors all - the #if defined (DEBUGGING) code out of the ./libsrc directory - tree and puts it in the ./tests directory tree, where it - belongs. - - * Changed all uses of the error macros LM_* to ACE_* in order to - avoid name collisions with other libraries, frameworks, and - toolkits. In addition, changed all uses of the error enumerals - LOG_ to LM_ in order to avoid a conflict with system #defines in - . - - In order to change these automatically, I used the following - UNIX command sequence: - - % find . -type f -print | xargs perl -p -i -e 's/LM_/ACE_/g' - % find . -type f -print | xargs perl -p -i -e 's/LOG_/LM_/g' - -Sat Sep 16 11:55:18 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * tests/Threads: Added a new test for Thread_Specific storage. - - * Added a new platform/compiler configuration flag called - ACE_TEMPLATES_REQUIRE_SOURCE that must be set for compilers - (e.g., GNU G++) whose template mechanism must be able to - see the source code (i.e., the *.C files). Changed *lots* of - header files to enable this... Also had to change the - corresponding *.C files so that they wouldn't get included - twice... - - * libsrc/Connection: redid the implementation of Acceptor, - Connector, and Svc_Handler to get more control over the scope of - #defines like #define SH SVC_HANDLER, etc. - - * libsrc/Threads/Thread_Spawn: Totally redid the implementation of - Thread_Spawn to use the Acceptor class template. This greatly - reduces the amount of code to implement the Thread_Spawn! - - * libsrc/Threads/Thread_Spawn: Moved the Thread_Spawn - implementation into the ./libsrc/Threads directory rather than - in the ./libsrc/Service_Configurator directory since it deals - with threading and thus belongs in the other place. - -Fri Sep 15 00:25:51 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Threads/Token.i (tryacquire): Added a cast to fix passing - a const pointer to a function that was expecting a non-const. - Thanks to E. Jason Scheck for reporting this. - - * libsrc: Added a bunch of changes to enable G++ to compile ACE. - A lot of this involves moving around info in header files so - that templates can be dealt with using the relatively lame GNU - C++ repository scheme. Thanks to E. Jason Scheck - for all his help in this. - - * libsrc/Synch: created Synch_Options.C out of Svc_Handler.C, so - that Svc_Handler.C could be "template pure"; all the other files - were already separated. Thanks to E. Jason Scheck - for recommending this. - - * Makefile (clone): Added a tiny fix that solves a weird problem - that arises with symbolic links on HP/UX. Thanks to Jam Hamidi - (jh1@osi.com) for tips on how to fix this. - -Thu Sep 14 10:55:30 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * apps/Gateway/Gateway/Channel.C (route_message): Updated the main - routing code to check for whether a channel is_active() - (i.e., is actually connected) before trying to send messages - to it. This was originally done in the Set class iterator, but - I revised that to make it more reuseable and to workaround bugs - in the HP/UX compiler so I had to update the main code... - - * libsrc/Threads/Thread_Specific: Added a new method to called - ts_object () to class ACE_Thread_Specific that get the - thread-specific object for the key associated with this object. - Returns 0 if the data has never been initialized, otherwise - returns a pointer to the data. This is useful since now you can - query a thread-specific storage mechanism to see if there's ever - been a thread-specific object created *without* having to - actually create one if one hasn't been created yet! Thanks to - Detlef Becker (beckerd@erlh.siemens.de) for pointing this out. - - * include/makeinclude/platform_sunos5_sunc++_orbix.GNU (LIBS): - Changed the default compilation strategy for SunOS 5.x machines - to use -mt. This seems to be necessary to build robust - libraries that are thread-safe. Thanks to Phil Mesnier - and Chris Cleeland - for hounding me until I changed the - existing solution. If you *don't* want this behavior you need - to remove -mt from the platform_macros.GNU file and and remove - the ACE_HAS_THREADS and ACE_MT_SAFE flags, etc. from the - config-sunos5.*.h files. - - * libsrc/Shared_Malloc/Memory_Pool.C (ACE_MMAP_Memory_Pool): Added - a new parameter to the constructor called write_each_page that - if enabled forces a write to each page to ensure that space is - allocated from the file system (otherwise, we can end up failing - due to optimisitic resource allocation...). Thanks to Phil - Brooks for detecting this issue and - implementing a solution. - - * include/ace/sysincludes.h: Added #ifdef support for HP/UX, which - fails to properly wrap with an extern "C" block. - -Mon Sep 11 01:39:35 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Connection/Connector.C (handle_input): Changed the call - to Svc_Handler::close() to accept the default value of 0 rather - than -1... Thanks to Mark Seaborn - for noticing this. - - * libsrc/Connection: Changed all uses of ADDR to PEER_ADDR to - avoid a name clash in Linux... Thanks to James Morris - for finding this. - -Sun Sep 10 03:56:18 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Threads/Synch: Added support for "barrier - synchronization" to ACE in the form of ACE_Barrier. Thanks to - Bruce Worden (bruce@betsy.gps.caltech.edu) for suggesting this - and pointing me in the right direction. - - * tests/Threads: Added a test for the new barrier synchronization - mechanism. - -Sat Sep 9 11:58:16 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Reactor/Reactor: Changed Reactor::max to Reactor::max3 to - avoid problems with conflicting names of macros in Sun header - files! - -Mon Sep 4 14:34:52 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Reactor/Signal: The new ACE_Signal_Handlers mechanism - appears to be working! There's a test in ./tests/Reactor/misc - called test-signal.C that illustrates how all this works. - - * libsrc/Reactor/Signal: Added several new methods to - ACE_Sig_Action to make life easier to implement the new - ACE_Signal_Handler code... - - * libsrc/Reactor/Signal.C (ACE_Sig_Action): Changed the order of - the arguments to the ACE_Sig_Action constructor. It's almost - always the case that you want to vary the SignalHandler, but - only rarely do you want to vary the mask or flags. By - reordering this, it's easier to get the correct default values - without adding extra junk... - -Mon Sep 4 01:11:29 1995 Tim Harrison (harrison@tango.cs.wustl.edu) - - * libsrc/IPC_SAP/SOCK_SAP/SOCK_Dgram_Multicast: added support to - allow a port to be reused for multicast sockets. This is useful - if you are multicasting to multiple processes, some of which are - on the same host! - - * libsrc/ASX/Map_Manager: Fixed an odd bug that must have gone - undetected for a long time somehow. Basically, the "is_free_" - field of the ACE_Search_Structure struct was never being set to - it's correct initial value of 1. I don't know how this didn't - surface before... At any rate, it is fixed now... - - * include/ace/sysincludes.h: Changed the inline methods for - SET'ing and CLR'ing bits to be macros in order to get cheap - polymorphic behavior... Also changed them to use the prefix - "ACE_" to avoid namespace pollution. Changed all dependencies - in the source code (only a few...). - - * libsrc/Reactor/Signal: Added a new class called - ACE_Signal_Handlers, which subclasses from ACE_Signal_Handler. - This new class implements the semantics required for Siemens. - For example, this class allows multiple signal handlers to be - registered for the same signal. It also makes SA_RESTART the - default mode. Note that by default, the Reactor uses the - original ACE_Signal_Handler semantics. If you want the new - semantics, simply pass the Reactor a pointer to - ACE_Signal_Handlers. - - * include/ace/sysincludes.h: Removed the automatic inclusion of - ./libsrc/Misc/Misc.h from sysincludes.h since this was causing - problems with include file ordering. - -Sun Sep 3 00:22:11 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Reactor/Signal.C (remove_handler): Moved a definition of - ACE_Sig_Action out of an inner block to avoid portability - problems. - - * libsrc/ASX/Map_Manager: Improved the documentation of this class - and fixed up a couple of problems with the scope of loop - indexes. - - * libsrc/Misc/{Stack,Set}: Added this new file that contains a set - of Stack and Unordered Set implementations. The Unordered Set - is used in various places in ACE (e.g., libsrc/Reactor/Signal - and apps/Gateway/Gateway/Routing_Entry). - - * libsrc/Log_Msg/Log_Msg: Moved the definition and declaration of - Thread_Specific ace_log_msg from this directory to - ./libsrc/Misc/Misc.h in order to cleanup the namespace and also - to help make this work on DEC platforms... - - * libsrc/Reactor/Signal: Changed ACE_Signal_Handler from a static - class to a non-static class in order to allow subclassing. This - is necessary to support the Siemens requirements. - - * libsrc/Shared_Malloc/Memory_Pool: Modified ACE_MMAP_Memory_Pool - so that it no longer stores the name of the backing store in a - static character array (which made it impossible to have more - than one of these at a time...). The new version stores the - name in each ACE_MMAP_Memory_Pool object. It also selects a - name that won't conflict with other names by using ::mktemp. - - * tests/Shared_Malloc/test_malloc.C (parse_args): Fixed two stupid - omissions of "break" when parsing command-line arguments. Isn't - C++ great?! (NOT)... - - * apps/Synch-Benchmarks: Came up with a killer solution to the - nagging problem of POSIX Pthread's lack of an integral thread id - (a la Solaris threads thr_self()). The solution leverages off - of our new ACE_Thread_Specific wrapper to provide the necessary - functionality. Thanks to Reginald S. Perry (perry@zso.dec.com) - for triggering the thoughts that lead to this solution... - -Sat Sep 2 17:00:46 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/IPC_SAP/TLI_SAP/TLI_Acceptor: Changed the implementation - of ACE_TLI_Acceptor so that ACE_TLI_Request is defined inside - the TLI_Acceptor.C file (this is the so-called "Cheshire Cat" - technique). This clean up the code and the global namespace a - bit. - -Fri Sep 1 00:53:47 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Released new version of ACE 3.3 - - * libsrc/IPC_SAP/UPIPE_SAP/UPIPE.C: Fixed a small problem with - failing to #ifdef this file correctly if we don't have - threads... Thanks to John Morey (jmorey@hitel.com) for - reporting this. - - * tests/ASX/CCM_App/svc.conf: Fixed the svc.conf file so that it - looked in the .shobj directory rather than the .obj directory. - - * Released new version of ACE 3.2.9... - - * libsrc/Log_Msg/Log_Msg: Added a new field called "restart_" to - the thread-specific storage. This will be used to control - whether system calls are restarted when interrupted. - - * Changed inheritance syntax from - - class xxx - : public yyyy - { - }; - - to - - class xxx : public yyyy - { - }; - - so that the OSE tools would work correctly. - -Thu Aug 31 00:12:40 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/IPC_SAP/UPIPE_SAP: Changed all uses of UPIPE_Addr to - SPIPE_Addr since they were the same thing. This also allows - much reuse of code... - - * libsrc/IPC_SAP/{TLI_SAP,SOCK_SAP,SPIPE_SAP}: fixed the - "complete" method for these classes so that it uses the new - ACE::handle_timed_complete() method in libsrc/Misc. This cleans - up the code by merging common logic. - - * libsrc/IPC_SAP/{DEV_SAP,FILE_SAP,SPIPE_SAP}: fixed the "connect" - method for these classes to conform to the API used by the - SOCK_SAP and TLI_SAP wrappers. In addition, cleaned up the code - so that common logic was pushed into a new method in libsrc/Misc - called ACE::handle_timed_connect(). - -Wed Aug 30 00:20:18 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Connection/Acceptor.C (open): Fixed this method so that - it returns a value on all paths through the code... - - * libsrc/IPC_SAP/TLI_SAP/TLI.C (ACE_TLI): Moved the option - allocation code from the TLI::open() method into the TLI - constructor in order to make sure it is always called! - - * libsrc/IPC_SAP/DEV_SAP/DEV_Connector: Changed the signature of - the DEV_Connector::connect method to allow users to specify - flags, permissions, and timeouts (this is now consistent with - other parts of ACE). - - * libsrc/IPC_SAP/FILE_SAP/FILE_Connector: Changed the signature of - the FILE_Connector::connect method to allow users to specify - flags, permissions, and timeouts (this is now consistent with - other parts of ACE). - - * tests/IPC_SAP/TLI_SAP: Updated the test code to check the new - timer support for connection establishment. - - * libsrc/IPC_SAP/TLI_SAP: Updated the code to make it conform to - the interfaces provided by SOCK_SAP. This primarily affected - the TLI_Acceptor and TLI_Connector classes in order to add - support for timed connects and accepts. - - * libsrc/Reactor/Signal.C: Modified Signal_Handler::dispatch so - that it saves/restores errno to prevent it from being corrupted - by the handle_signal callback. Thanks to Detlef for suggesting - this. - - * libsrc/Shared_Malloc/Memory_Pool: Changed the name of - ACE_Local_Memory_Pool to ACE_Sbrk_Memory_Pool. Then added a new - version of ACE_Local_Memory_Pool that uses the C++ operator new - to acquire chunks of memory. This enables the ACE Malloc class - to integrate with existing programs that use new/delete. Thanks - to Karlheinz for suggesting this. - - * libsrc/IPC_SAP: Added the UPIPE mechanism donated by SIEMENS. - This provides an intra-process IPC mechanism that has the same - API as the interprocess and network mechanisms. - - * Reran catman on ./man/windex. Thanks to Dieter Quehl - (quehl@csaserv.erlh.siemens.de) for reporting the need for this. - - * Released new version of ACE 3.2.9... - - * tests: Fixed a bunch of minor problems that occurred when - building on HP/UX. Thanks to John Morey - (jmorey@hitel.com) for reporting these. - - * apps/Gateway/Gateway/Peer_Message.h: Changed the default values - of the parameters to Peer_Addr so they aren't trying to assign - negative values to unsigned chars! Thanks to John Morey - (jmorey@hitel.com) for noticing this... - -Tue Aug 29 18:52:17 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Thread/Thread_Specific: Changed the constructor so - that it will take an initial TYPE *, which will be used to - initialize the thread-specific object. This is necessary to - support the changes to ACE_Task described in the following - bullet. - - * libsrc/ASX/Task: Added a new class called ACE_Task_Exit to - Task.C. This class is used in conjunction with - ACE_Thread_Specific to keep exit information for a Task in - thread-specific storage. This ensures that the Task::close() - method will get called no matter how the thread exits (e.g., via - Thread::exit() or by "falling off the end of Task::svc_run"). - -Mon Aug 28 09:54:35 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Released new version of ACE 3.2.9... - - * libsrc/Reactor/Handle_Set.C: changed the type of MSB_MASK from - u_long to ACE_UINT32 to handle problems with the Alpha's 64 bit - longs... - - * libsrc/Threads/Thread_Specific: Continued to try and get this - class to build correctly on other platforms... I think I've - just about got it working right now... - - * libsrc/IPC_SAP/IO_SAP/IO_SAP: Added installation flags that - indicate whether the platform has terminal ioctl flags like - TCGETS and TCSETS. I know that SunOS 5.x has these, but I'm not - sure about other platforms... - -Sat Aug 26 13:55:45 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Released new version of ACE 3.2.9... - -Fri Aug 25 09:05:09 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Threads/Thread_Specific.h: Fixed a typo that was causing - this file to fail on HP/UX. Thanks to Neil Cohen - (nbc@metsci.com) for finding this! - - * libsrc/IPC_SAP/DEV_SAP/DEV_IO: Added conditional support for - getmsg/putmsg calls in the DEV_IO class. This will make things - work correctly for platforms that don't support SVR4 STREAM - pipes. - - * libsrc/IPC_SAP/FILE_SAP/FILE_IO: Added the same fixes to FILE_IO - that I added to DEV_IO... - - * include/ace/sysincludes.h (MAXNAMELEN): Fixed a typo in - sysincludes.h that caused problems for the G++ compiler. - - * libsrc/Connection/Acceptor.C (handle_close): Removed a - diagnostic message that was getting printed if a - Oneshot_Acceptor had already been removed from the reactor (it's - ok for this call to fail). Thanks to Irfan Pyarali - (ip1@cec.wustl.edu) for noticing this! - - * libsrc/ASX/Task.C (ACE_Task): Fixed a bug in the constructor - that prevented a Message_Queue from being allocated - automagically. - -Thu Aug 24 16:47:14 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * include/ace/sysincludes.h: added support for 64 bit machines so - that Internet addresses are 32 bits, as they must be! - - * libsrc/Shared_Malloc/Malloc: Changed things so that MALLOC_STATS - is now *off* by default... (also changed the name to - ACE_MALLOC_STATS). - -Wed Aug 23 15:21:25 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * include/ace/config-osf1.h: Added support for thread-specific - storage. Please let me know if this breaks on OSF/1! - - * libsrc/Threads/Thread: Added support for the thread-specific - storage wrappers for both Pthreads and Solaris threads. Also, - rearranged some of the code to emphasize similarities between - Pthreads and Solaris threads. - - * libsrc/Threads/Thread_Specific: Updated this to remove "static" - from all the data members in this class since those should be - specific to an *instance* rather than to an instantiation of the - particular template class. Tim claims this works... - - * libsrc/Threads/Token.C: Fixed a couple of typos that misspelled - "assert" (jaysus...). Thanks to David Trumble - (trumble@cvg.enet.dec.com) for noticing this. - - * libsrc/Threads/Token.C (release): Fixed a very stupid bug that - was causing the Token never to become "unused"... No excuses - for this, except that Pthreads is partly responsible ;-) - -Tue Aug 22 11:36:58 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/ASX/Task: Changed the behavior of task so that it doesn't - try to delete the Message_Queue or Thread_Manager if it didn't - allocate them! Thanks to Karl-Heinz Dorn - (kdorn@erlh.siemens.de) for suggesting this fix. - - * libsrc/ASX/Message_Block: Changed the semantics for - Message_Block::end() so that it returns a pointer to 1 past the - end of the data. This is more consistent with toolkits like - STL. Also changed the behavior of Message_Block::copy() so that - it checks to make sure the data will fit in its buffer. - - * tests and apps: Revised a bunch of files to add #ifdef so that - TLI tests and apps are not compiled if the platform doesn't - support it... - - * Fixed a bunch of minor problems for HP/UX (which lacks TLI and - other common OS features). Thanks to Mark Seaborn - (mseaborn@itthp1.comm.mot.com) for noticing these. - -Mon Aug 21 00:19:29 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Misc: Changed the name of the class Argument_Vector to - ACE_ARGV. This is a bit more concise... UNIX programmer will - know precisely what argv is... - - * Updated all of ACE to use the new naming scheme, which prepends - all ACE classes with "ACE_". This is an important change since - it prevents ACE from polluting the namespace of applications - (unless they also prefix "ACE_" in front of their classes, which - is not very likely!). - - Since this change basically affects every single file in the - entire release, as well as all existing user code I've written a - perl script called "rename-ace.pl" to automate all of this. - This script is in $WRAPPER_ROOT/bin. To use it, simply type: - - % find . -type f -print | egrep '[Chi]$' | xargs rename-ace.pl - - Note that you will need to change the first line of - rename-ace.pl to point it to whereever perl is located on your - system. - - I've tested this on the entire ACE source code base and it seems - to work fine. Please be careful using it on your code, however, - since it may conflict with names that you use. When in doubt, - remove the '-pi' from the first line of the rename-ace.pl perl - script and replace it with '-p' (which is non-destructive). - Then run the commands above and check the output carefully. - When you're convinced that everything is ok, add the '-pi' back - again. Let me know immediately if you find any problems with - this scheme! - - * libsrc/Connection/Acceptor.C: Added a virtual destructor to the - Oneshot_Acceptor to make sure that descriptors are closed down - correctly. Thanks to Irfan (irfan@wuerl.wustl.edu) for - suggesting this. - - * libsrc: Change all occurrences of Shared_Memory to - SV_Shared_Memory to firmly indicate the origins of this - wrapper... - -Sun Aug 20 23:12:03 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/IPC_SAP: added the IO_SAP, DEV_SAP, and FILE_SAP - components donated by SIEMENS to the ACE release. - - * libsrc/ASX: Split the Message_Queue.* files into Message_Block.* - and Message_Queue.* in anticipation of the Windows NT port... - -Fri Aug 18 13:54:09 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Threads/Thread_Specific: Move the operator->() - method back into the *.C file in order to make HP/UX - happy... - - * apps/Gateway/Peer: Removed the Options.* files since they - weren't being used and they were causing problems on OSF/1... - - * libsrc/Misc/Profile_Timer: Factored common code together by - making a new typedef called Rusage that defaults to either - struct rusage or prusage_t, depending on installation flags. - Fixed a couple places in the code that were depending on the - prusage_t type (which is now the Profile_Timer::Rusage type...). - -Thu Aug 17 14:31:11 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Connection/Connector.h: Changed some typedefs in order to - keep the Centerline compiler from crapping out. I can't - *believe* how screwed up that compiler is when it comes to - templates... - - * Released new version of ACE 3.2.9... - - * libsrc/Threads/Synch: Fixed a bunch of typos that showed up - on OSF/1. Also tried to fix some other problems by removing - "const" from all the methods... - -Wed Aug 16 22:26:24 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Threads/Thread_Specific.h: Fixed another stupid bug - caused by a braino that failed to unconditionally include - Thread_Specific.i. Stuart Powell found this also... (thanks!). - - * libsrc/Threads/Thread_Specific.h: In Thread_Specific.h the - inlining macros were only included if threads were used. This - obviously didn't work for people without threads... I - moved the #endif for ACE_HAS_THREADS... back before the #ifdef - __INLINE__ stuff (e.g. to line 71). Thanks to Stuart Powell - (stuartp@ot.com.au) for suggesting this. - - * libsrc/Threads/Synch.h: Fixed a typo that manifested itself for - pthreads: Condition count_nonzero_ should obviously be - Condition count_nonzero_. Thanks to Rob Clairmont - (rclairmo@bnr.ca) for reporting this. - -Tue Aug 15 00:31:44 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Log_Msg/Log_Msg.C (log): Fixed a stupid typo (*format++ - should have been format++...). - - * libsrc/Misc/Trace.h: Move the class TSS_Int from within class - Trace to file scope and changed the name to ACE_TSS_Int to - handle problems with the HP/UX compiler. - - * include/ace/sysincludes.h: Added the word "struct" in front - of rusage to make things work on HP/UX. Thanks to Neil Cohen - (nbc@metsci.com) for reporting this fix. - - * apps/TokenServer/server/TokenMap.C: Fixed yet another problem - with scope of variables defined in for loops... - - * Released new version of ACE 3.2.9... - - * libsrc/Connector: Fixed a braino whereby I didn't use consistent - naming for my #defines (PA should have been PRC). Thanks to - Alex (alexey@ace.elektra.ru) for noticing this. - -Mon Aug 14 18:13:46 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/IPC_SAP/SPIPE_Acceptor: Modified the interface of open() - and accept() so they would conform to the SOCK_Acceptor and - TLI_Acceptor. This makes it possible to use SPIPE_Acceptor in - similar situations (e.g., Acceptor and Connector patterns). - - * libsrc/ASX/Stream: Fix a bug that occurred when trying to dump() - a linked Stream. - - * libsrc/Connection/Acceptor: Moved the body of the init() method - out of this class since it was unnecessarily dependent on the - INET_Addr domain addressing types. This required changes to the - ./apps and ./tests directory in order to add the init() method - to classes that used the default behavior. - - * libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Acceptor.C: Fixed close() so that - it will call fdetach(2) *before* closing down the descriptor. I - hope this will fix a problem noticed by people at SIEMENS. - - * tests/ASX/Event_Server/Event_Server/Options: Fixed a problem - with the default port numbers (they weren't using the values - from ./include/ace/testconfig.h). - - * include/ace/sysincludes.h (MAXNAMELEN): If MAXNAMELEN is not - defined by a platform then ACE sets it to be FILENAME_MAX, - which should be defined in stdio.h. Thanks to Todd Blanchard - (tblancha@evolving.com) for this suggestion. - -Sun Aug 13 17:02:57 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Service_Configurator/Parse_Node: Changed the name of - Function_Node::symbol (const void *) so that it won't give - those annoying warnings anymore... - - * libsrc/Reactor/Handle_Set: Moved the definition of MSB_MASK from - the header file into a static const within the .C file in order - to avoid overflow problems on certain compilers. - - * libsrc/Threads/Synch: Implemented bare-bones versions of - Semaphore and RW_Mutex for the POSIX Pthreads wrappers so that - they'll be more compatible with the Solaris threads wrappers. - The semaphore implementation uses a Condition object and a - Mutex, which should be a reasonable solution. The RW_Mutex is a - cop-out for now and just uses a Mutex (i.e., no extra - parallelism for readers...). If anyone has a good - implementation of RW_Mutex that they'd like to share please let - me know. - - * libsrc/Threads/Thread_Specific: Fixed the prototypes for copy - constructor and operator=, which were broken... Thanks to Alex - (alexey@ace.elektra.ru) for noticing this. - - * libsrc/Shared_Malloc/Memory_Pool.C: Added some casts to - MAP_FAILED to handle OSF/1. Thanks to Alex - (alexey@ace.elektra.ru) for noticing this. - - * libsrc/Threads/Token: Fixed things so that threads waiting for a - token wouldn't get screwed up by signals that occur... - - * include/ace/sysincludes.h: Changed the #ifdef - ACE_SELECT_USES_LONG to ACE_SELECT_USES_INT for HP/UX since - believe it or not, it really does use int, not long! - - * libsrc/SV_Semaphores: Fixed some weird problems that the HP/UX - compiler was having when trying to inline methods in this class. - As a consequence, I've rearranged the class to avoid inlining - non-trivial methods. Thanks to John Morey (jmorey@hitel.com) - for reporting these problems. - -Wed Aug 9 01:29:16 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Threads/Token: Added a tryacquire() method to become - interface compliant with other LOCK mechanisms. - -Sat Aug 5 09:18:29 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Connection: Fixed a couple of bugs when using - the Acceptor and Svc_Handler when ACE_OMIT_SERVICE_CONFIGURATOR - is enabled. Thanks to Stuart Powell (stuartp@ot.com.au) for - bringing this to my attention. - - * include/ace/sysincludes.h: Added a #ifdef for MAXNAMELEN to - handle systems (like HP/UX) that don't support it. - -Thu Aug 3 22:59:13 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Released new version of ACE 3.2.9... - - * libsrc/Reactor/Time_Value.i (normalize): Added new code to - perform normalization of Time_Values. Thanks to Hans Rohnert - (Hans.Rohnert@zfe.siemens.de) of SIEMENS for the suggestion. - -Tue Aug 1 00:19:00 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Changed all code that used Log_Msg::log() directly to use - LM_ERROR or LM_DEBUG. This will ensure that logging will work - with the new thread-specific storage implementation. - - * libsrc/Threads/Thread_Manager.i (open): Fixed this method so - that it is thread-safe when a Thread_Manager is resized. - - * libsrc/ASX/Map_Manager.i (open): Fixed this method so that it is - thread-safe when a Map_Manager is resized. - -Mon Jul 31 12:56:17 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Misc/Trace: Reimplemented the ACE Trace class to use the - new thread-specific storage wrapper. - - * libsrc/Log_Msg: Reimplemented the Log_Msg class to use the new - thread-specific storage wrapper. This shouldn't affect any - existing code that was careful to only use the LM* macros... - - * libsrc/Threads: Added a new class called Thread_Specific which - implements a C++ wrapper for SunOS 5.x thread-specific data - (this will also work for POSIX pthreads I believe). Thanks to - Tim Harrison (harrison@cs.wustl.edu) for coming up with the idea - for using C++ "smart pointers" to implement this. - - * libsrc/Reactor/Timer_Queue.h: Moved Timer_Node from within - Timer_Queue to outside Timer_Queue and renamed it to - ACE_Timer_Node. Unfortunately, some compilers still don't like - nested classes (ugh)... - - * Changed ACE_Synch_Options to be simply Synch_Options since it - is *not* an ACE private class... - -Sun Jul 30 00:07:28 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * include/makeinclude/README: Added a new #define called - ACE_HAS_THREAD_SPECIFIC_STORAGE, which does exactly what it - sounds like! So far, I know that Solaris defines this. I'm not - sure which other platforms do (perhaps OSF/1 does?). - -Fri Jul 28 14:53:45 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Fixed a bunch more problems with loop variables that were - uncovered with GCC 2.7. Thanks to Matt Stevens - (mstevens@ent.mrj.com) for noticing this. - - * apps/Logger/Service_Configurator_Logger: Added a new flag called - ACE_HAS_NO_STATIC_DATA_MEMBER_TEMPLATES which is necessary to - workaround bugs with GNU G++... Thanks to Matt Stevens - (mstevens@ent.mrj.com) for noticing this. - - * libsrc/Connection/Connector.C (cleanup_AST): Changed the - parameter list just a tad to try and fix a problem with - G++ (which doesn't seem to like unscoped typedefs in - argument lists or return values. - - * libsrc/Misc/Profile_Timer.i: Changed ::getrusage to be getrusage - to avoid problems with macros and scope operators... - - * include/ace/testconfig.h (ACE_DEFAULT_RENDEZVOUS): Changed the - value from /tmp/foo to /tmp/fifo.ace. Thanks to Neil B. Cohen - (nbc@metsci.com) for suggesting this. - -Thu Jul 27 12:30:06 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * apps/TokenServer/server/TokenHandler.C (abandon): Fixed a minor - bug that caused assert() to fail when a client abandoned a - Token. - - * libsrc/Reactor: Fixed a bug with the design of the Reactor's - Timer_Queue cancellation mechanism. The new mechanism is much - more robust since it ensures that timer_ids (used to cancel - pending timers) are unique up to values of greater than 2 - billion timers! As long as timers don't stay around longer than - this there should be no problems with accidentally deleting the - wrong timer. Thanks to Bill Sears (wsears@world.std.com) for - noticing this problem. - - One nice consequence to this change is that legacy code that - would have broken with the previous change is now 100% - compatible! - - * Provided a definition of ACE_Synch_Options::arg(const void *), - which I'd forgotten to define before (darn templates...). - Thanks to Tim Harrison (harrison@cs.wustl.edu) for finding this! - - * include/ace/sysincludes.h: Added a total hack to get HP/UX to - understand getrusage(). The trick is to use the following - undocumented syscall: - - #define getrusage(a, b) syscall(SYS_GETRUSAGE, a, b); - - What a hack (but it works...). - -Tue Jul 25 13:20:58 1995 Douglas C. Schmidt (schmidt@kavita.cs.wustl.edu) - - * libsrc/Misc/Profile_Timer: Fixed a typo in Profile_Timer.h - (ACE_HAS_RUSAGE_T should have been ACE_HAS_GETRUSAGE). Thanks - to George Reynolds (george@dvcorp.com) for noticing this. - - * Changed all uses of ::getopt() to use the ACE class Get_Opt - get_opt. Also changed all uses of optarg to get_opt.optarg. - Thanks to Bob Vistica (robertv@ims.com) for detecting and - reporting some inconsistencies in my previous changes... - -Mon Jul 24 19:03:03 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * include: I've added config and platform support for SGI IRIX5.3 - for use with the SGI C++ compiler. Thanks to Stuart Powell - (stuartp@ot.com.au) for these config files. - - * libsrc/Connection/Acceptor.C (handle_input): Added the - Event_Handler::DONT_CALL flag when removing the Oneshot_Acceptor - from the Reactor so that we don't set it's peer_acceptor_ to -1. - -Mon Jul 24 12:46:10 1995 Douglas C. Schmidt (schmidt@kavita.cs.wustl.edu) - - * libsrc/Misc/Profile_Timer: Fixed problems stemming from the fact - that HP/UX doesn't seem to support getrusage() (how odd). - - * tests/Connection: a new test directory to test out the Connector - and Acceptor pattern implementations. - -Sun Jul 23 12:26:37 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Connection/Acceptor.C: Fixed a minor bug with the - Oneshot_Acceptor constructor. Thanks to John Morey - (jmorey@hitel.com) for noticing this and the one below. - - * libsrc/Reactor/Timer_Queue: Moved the static method current_time - from the Timer_Queue.i file to the Timer_Queue.C file. This - avoids a bug with HP/UX C++. - -Sat Jul 22 15:54:27 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Released beta version 3.2.9. Once this compiles on all major - platforms then it's time to move to version 3.3. - - * Added a number of miscellaneous changes for OSF/1 courtesy of - David Trumble (trumble@cvg.enet.dec.com). One of these changes - involved changing all uses of Reactor::{ADD,SET,CLR,GET} to - Reactor::{ADD,SET,CLR,GET}_MASK in order to avoid a class with - some symbols in OSF/1. - -Fri Jul 21 00:21:02 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Finally was able to test ACE on the SunOS 4.x platform (using - the SunC++ 4.0.1 compiler). The entire release compiled - correctly! This is a great relief after fighting with this - stuff for months... If you are building ACE on SunOS 4.x I'd - *strongly* recommend you get SunC++ 4.0.1 since it is the only - compiler that seems to be able to grok the weirdness of SunOS - 4.x... - - * Finished updating all the ./tests and ./apps code so that it - works correctly with the new Acceptor/Connector modifications. - To see examples of these changes check out - ./tests/IPC_SAP/SOCK_SAP/CPP-{nbclient,inserver}.C. - - * libsrc/Misc/Profile_Timer: Merged in the new Profile_Timer - implementation from David Trumble (trumble@cvg.enet.dec.com). - This will work with basically the same interface as the current - scheme even if the OS platform doesn't support the prusage_t - type... - -Thu Jul 20 01:07:23 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Connection: Added a new class called ACE_Synch_Options - which is used in both the Acceptor and Connector classes to - consolidate options related to synchronous and asynchronous - behavior. - - * libsrc/Connection: Added a new class called Oneshot_Acceptor. - This class inherits from the Acceptor but it only accepts one - connection at a time (i.e., it doesn't keep itself registered - with the Reactor). Several examples in the tests/SOCK_SAP - directory have been added to illustrate how all this works. - - * libsrc/Connection/Connector: completely redid the Connector and - Acceptor class interfaces to incorporate the new changes for - asynchronous and synchronous behavior. The new scheme should be - much more general (and correct...). Thanks to Tim and Irfan for - helping out with this. - - * libsrc/Threads/Synch: Fixed the implementation of Recursive_Lock - so that it won't have race conditions when testing the thread id - and nesting level in parallel threads. - -Wed Jul 19 13:15:05 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Reactor/Timer_Queue: Added new support for cancellation - of individual Event_Handlers in the Reactor. In addition, it is - now possible to cancel all Event_Handlers with a single call to - Timer_Queue::cancel(). Note that this new scheme will break - existing code since Timer_Queue::schedule() (and - Reactor::schedule_timer()) now return ACE_Timer_Node *'s rather - than ints... - - * libsrc/Service_Configurator/Service_Config: Fixed a problem - where the "-s" option didn't work since it was parsed when - "Service_Config::open" was called - (it sets Service_Config::signum_). However, previously the - signal handler was already setup by the constructor. By moving - this registration to the open() method the problem was solved. - Thanks to Bob Vistica (robertv@ims.com) for noticing this. - - * libsrc/Service_Configurator/Service_Manager: Changed the - Service_Manager::reconfigure_services to use this->signum_ - rather than to hard code SIGHUP. Thanks to Bob Vistica - (robertv@ims.com) for this insight. - -Mon Jul 17 12:08:08 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Threads/Token.C (renew): Fixed a typo so that we compare - this->head_ == 0 rather than this->head_->next_ == 0. - - * libsrc/Reactor/Reactor.h: Changed the Reactor to use the - Reactor_Token rather than the pure Token to make sure that the - sleep_hook() is called to unblock the Reactor. - -Fri Jul 14 14:12:07 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Connection: Changed the default behavior of the Connector - and Acceptor classes such that they pass a -1 to - svc_handler_->close() when things go wrong. This is useful as a - flag to close() (e.g., if it needs to figure out what to do if - is shuts down prematurely). - - * libsrc/Connection/Svc_Handler.C: Added a default definition of - the put() method, which is defined as a pure virtual method in - class Task. - -Thu Jul 13 23:10:35 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * include/ace/sysincludes.h: Added support for the SGI IRIX 5.3 - OS. More screwy gettimeofday() hacks (what a pain...). Thanks - to Matt Stevens (mstevens@kirk.softeng.infonautics.com) for - these fixes. - - * include/makeinclude/platform_sunos5_centerline.GNU: Fixed a - vexing problem that was causing the Centerline C++ compiler to - puke when compiling ACE. Thanks to Chandra Venkatapathy - (cvenkat@develop.bsis.com) for finding a solution! - -Tue Jul 11 00:01:15 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Released version 3.2.6 for use by Karl and Detlef. - -Mon Jul 10 00:28:51 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * apps/TTCP: Added support for benchmarking the performance of - Orbix, ORBeline, ACE SOCK_SAP, and C sockets. These results are - available at URL http://www.cs.wustl.edu/~schmidt/COOTS-95.ps.Z - - * libsrc/Service_Configurator/Makefile: Added new commands to the - Service Configurator Makefile so that all automatically - generated flex and yacc symbols (i.e., the "yy" stuff) is - renamed "ace_yy". The purpose is to avoid conflicts with other - uses of flex/yacc lexers/parsers with ACE. Thanks to Steve - Ritter (ritter@titan.com) for this suggestion and code. - - * libsrc/IPC_SAP/TLI: Changed the TLI files so they are - conditionally compiled only if the platform supports TLI... - - * libsrc/Connection: Changed the inlining strategy of Connector, - Acceptor, and Svc_Handler so that very short methods are always - inlined, but anything larger is never inlined... - -Sun Jul 9 14:07:02 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * include/ace/testconfig.h: Changed all occurrences of DEFAULT_* - to ACE_DEFAULT_ to prevent namespace collision. - - * libsrc/Connection/Connector: Massively improved the Connector - class so that its connect() method supports the following - behavior (tv == "timeout value" and ur == "use Reactor"): - - Parameters | Description - | - tv | ur | - -----|----------|------------------------------- - | | - NULL | yes | infinite timeout (using Reactor) - | | - time | yes | try asynch transaction for - | | the specified time (using Reactor) - | | - 0,0 | yes | poll; try, if EWOULDBLOCK, - | | then return immediately - | | (using Reactor) - | | - NULL | no | block forever (don't use Reactor) - | | - time | no | do a blocking transaction - | | for the specified time - | | (don't use Reactor) - | | - 0,0 | no | poll; but do not initiate a - | | nonblocking transaction - | | (don't use Reactor) - - * libsrc/IPC_SAP/SOCK_SAP/SOCK_Connector: Changed the behavior of - the SOCK_Connector::connect() method so that it uses Time_Values - rather than a simple flag that indicates whether or not to use - non-blocking connectors. The new scheme is an improvement since - it allows greater control over synchronous and asynchronous - timeouts for connection establishment. This behavior parallels - that of SOCK_Acceptor, as well! If this works well then I'll - update the TLI_Connector and SPIPE_Connector to match this - interface. - - * libsrc: Continued to improve ACE's use of the global name space - by prefixing all "helper" classes with "ACE_" - - * Updated SPIPE_Acceptor so that it would have the same basic - interface as the SOCK_Acceptor and TLI_Acceptor. - - * libsrc/IPC_SAP: Consolidated the handle_timed_wait() methods - used by the TLI, socket, and STREAM pipe wrappers so that they - share the new ACE::handle_timed_accept() method, which is in - libsrc/Misc. - - * libsrc/Misc: Modified the structure of Misc.[Ch]. Originally, - this file contained a bunch of stand-alone C functions with the - prefix "ace_" to keep them from conflicting with user's code. - I've modified things now so that all the miscellaneous functions - are now static methods in class ACE. This provides better scope - control... - - * libsrc/Log_Msg/Log_Msg: Replaced the use of a Mutex in class - Log_Msg with a Recursive_Lock. This is necessary to - handle signals correctly... - - * libsrc/Reactor/Reactor: Modified the behavior of - Reactor::notify() so that writers will block if the pipe is - full. This solves some nasty flow-control problems. - - * libsrc/Reactor/Handle_Set: changed all uses of fd_set to - ACE_FD_SET_TYPE * so that HP_UX would work correctly... - - * include/ace/config-hpux.h: Removed the ACE_HAS_XLI flag until I - get a better idea which HP systems this is installed on. - - * libsrc/Threads/Thread: Added a new static method called - spawn_n() that spawns "n" threads all running the same function. - -Sat Jul 8 14:14:34 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Service_Configurator: Made some miscellaneous changes to - "const" methods and parameters in order to handle the new - Reactor changes (C++ can be such a pain about this - sometimes...). - - * libsrc/Threads: Added "yield" and "sigsetmask" methods to class - Thread. How did I manage to omit these before?! - - * libsrc/Reactor: Updated the Reactor to use the new Token class - described below. This greatly simplies the structure of the - multi-thread support in the Reactor code. In addition, it - should improve performance because it cuts the number of context - switches compared with the old scheme. Many thanks to - Karl-Heinz and Detlef for encouraging me to redo the Reactor - implementation. - - * libsrc/Threads: Added a new class called Token that provides a - flexible and efficient recursive mutex scheme. Thanks to - Karl-Heinz Dorn (kdorn@erlh.siemens.de) and Detlef Becker - (beckerd@erlh.siemens.de) for sharing their original code for this. - -Thu Jul 6 10:37:45 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Reactor/Event_Handler_T: Conditionally compiled this so - that it will only compile if the compiler supports template - typedefs (e.g., G++ doesn't seem to like this...). - - * Started to make changes in ACE to deal with the new ANSI C++ - semantics in the scope of variables defined within for loops. - Thanks to Aniruddha Gokhale (gokhale@cs.wustl.edu) for noticing - this in G++ 2.7... - -Wed Jul 5 21:50:39 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Connection/Svc_Handler: Fixed the behavior of the - Svc_Handler class so that it can be configured with a Reactor - other than Service_Config::reactor, just like the Acceptor and - Connector. Thanks to Karl-Heinz Dorn (kdorn@erlh.siemens.de) - for suggesting this! - -Tue Jul 4 00:21:31 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Added some new changes for Linux courtesy of Charles Rennolet - (clr@thurse.mn.org). - - * libsrc/Reactor/Reactor.C (bit_ops): Fixed a dumb error in - bit_ops that was caused by checking "else if (Reactor::SET)" - rather than "else if (ops == Reactor::SET)". Thanks to Mark - Patton (mark_patton@tx72.mot.com) for finding this bug and - reporting it along with the fix. - - * include/ace/sysincludes.h: Added new fixes for M_SYNC and - ENOTSUP on SunOS 4. - - * libsrc/Reactor: Added new support for integrating X and the - Reactor. These files are called XtReactor.* and XReactor.*. - Thanks to Eric Vaughan (evaughan@arinc.com) for providing this - stuff... - -Mon Jul 3 19:44:07 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Added support for SunOS 5.5 on i86 PC. Thanks to Bin Mu - (mubin@wfg.com) for the config files and fixes. - - * libsrc/Misc/Profile_Timer: Added new support for versions of - UNIX that don't support prusage_t. The new version of - Profile_Timer will use gettimeofday() and getrusage() of - prusage_t and /procfs isn't available... This code hasn't been - tested yet (since I don't have SunOS 4.x) so I don't know if it - works. - - * Hopefully fixed the SunOS4 prototype for gettimeofday(). Thanks - to Andrew McGowan (ajm@se09.wg2.waii.com) for the suggested fix. - - * include/makeinclude/platform_hpux.GNU (CC): Added new support - for building ACE and shared libraries on HP/UX. Thanks to Jam - Hamidi (jh1@osi.com) for this code. - - * libsrc/Reactor/Handle_Set: Fixed Handle_Set_Iterator::operator++ - to check for index to be greater or equal than NUM_WORDS instead - of just equal. This is better for sanity, although it may not be - needed. Thanks to Carlos Garcia Braschi (cgarcia@caramba.tid.es) - for suggesting this fix. - -Wed Jun 14 11:16:40 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/IPC_SAP/TLI_Acceptor: modified TLI_Acceptor so that it's - public constructor/open() and accept() methods are more similar - to the SOCK_Acceptor. In particular, added support for - "SO_REUSEADDR" in TLI_Acceptor and time values for accept(). - Thanks to John P. Hearn (jph@ccrl.nj.nec.com), TLI_SAP now does - the right thing for socket options. - - * libsrc/IPC_SAP: Fixed up the SOCK_Acceptor and TLI_Acceptor in - order to add better support for "timed accepts." The new scheme - uses Time_Values, which is more consistent with other parts of - ACE. In addition, the Time_Value was moved from the - constructor/open() to the accept() method, which allows more - fine grained control over this behavior. Thanks to Irfan - (ip1@cs.wustl.edu) for suggesting this. - - * libsrc/IPC_SAP: Cleaned up the SOCK_Acceptor::open and - TLI_Acceptor::open routine. In addition to being more compact - and robust, this routine now also let's open() determine which - local port to bind to (if you pass in Addr::sap_any as the - local_addr). Thanks to Irfan (ip1@cs.wustl.edu) for suggesting - this. - -Tue Jun 13 16:09:13 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Reactor/Timer_Queue: Fixed an odd problem with the - Timer_Queue on Solaris. Apparently the select() call will - return slightly earlier than the timeout dictates due to lack of - granularity with the system clock. This was causing problems - where the Reactor wasn't correctly dispatching the - handle_timeout() method of Event_Handlers. The fix was to add a - 10 Millisec "fudge factor" when calling the - Timer_Queue::expire() method. Please let me know if this causes - any problems. Thanks to Giang Hoang Nguyen - (yang@titan.com) to noticing this problem. - - * libsrc/Connection/Acceptor: Enhanced the Acceptor class so that - it is possible to accept a new SVC_HANDLER synchronously, rather - than always driving this acceptance out of the Reactor's event - loop. Thanks to Irfan (ip1@cs.wustl.edu) for suggesting this. - - * libsrc/IPC_SAP/Addr: Changed all occurrences of ace_sap_any to - Addr::sap_any (i.e., sap_any is now a static data member in - class Addr). This is an improvement since it helps to limit the - scope of what would otherwise be global variables... - -Wed Jun 7 17:26:31 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * apps/Logger/Reactor_Logger/Client_Acceptor.i (handle_input): - Fixed a braino that omitted an important block of code! Thanks - to Ken Konecki (kenk@wfg.com) for finding this. - -Fri Jun 2 13:59:07 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/IPC_SAP/Addr/INET_Addr.i (set): Removed the special case - for INADDR_ANY. This should just fall right out... - -Thu Jun 1 19:45:21 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/IPC_SAP/SOCK_SAP/SOCK_Connector: Added support to - SOCK_Connector so that it is possible to bind the local TCP port - number prior to establishing the connection. Also fixed the - TLI_Connector to be consistent with this approach. Thanks to - Mark Patton (mark_patton@tx72.mot.com) for this idea. - - * Fixed a problem with Mem_Map that was caused by the fact that - some versions of Unix (e.g., SunOS 4.x) don't support MS_SYNC... - Thanks to Andy McGowan (mcgowan@wg2.waii.com) for noticing this. - - * Fixed a very stupid bug in ./libsrc/Synch.h that accidentally - omitted this->lock_.acquire() from the Guard class constructor. - Thanks to Bin Mu (mubin@wfg.com) for noticing this! - -Fri May 26 13:20:38 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Connection/Acceptor: Added a new method called - make_svc_handler() that generalizes the dynamic creation of a - SVC_HANDLER by the Acceptor's Template Method handle_input(). - This scheme is completely backwardly compatible with the - original approach, but now allows transparent extension too! - - * libsrc/Connection/Acceptor: cleaned up the Template Method logic - in Acceptor::handle_input. No longer do we set the listener - socket into non-blocking mode and then rely on a -1 with - EWOULDBLOCK to indicate there are no more connections to - establish. This was causing problems for singleton Svc_Handlers - since the Acceptor was setting their peer_stream_ to -1... The - new approach should complete solve this problem. - -Mon May 22 15:10:27 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Released version 3.2.3 so that Bill Sears can test the new - #include "ace/" features. - - * Modified all the ACE source, tests, and apps so that all - #includes of its headers are refixed by ace/, e.g.: - - #include - - There are two reasons for have the include files be of - this form: - - First, you can tell at a glance by looking at the caller where - the library is coming from. - - Secondly, you can build an include tree of the form: - - /include/lib1 - /include/lib2 - /include/lib3 - /include/ace - - which then links to WRAPPER_ROOT. Now, all you have to do - when you build a make file is point to the include root, and - put links in the include root. This is especially helpful - if there are multiple versions. - - This means just one less thing that has to be modified in the - Makefile. Thanks to Bill Sears (wsears@world.std.com) for - recommending this change. - -Sat May 20 17:12:35 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * config-irix5.3-sgic++.h: Added new configuration support for SGI - IRIX5.3 courtesy of Stuart Powell (stuartp@ot.com.au). - -Sat May 13 20:44:06 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Generalized the SOCK_Connector::complete method so that it takes - a Time_Value timeout. This allows applications to wait upto a - certain limit before giving up on a non-blocking connection. - Updated the tests in ./tests/IPC_SAP/SOCK_SAP/CPP-inclient.C to - illustrate how this is used. - - * Added some interesting new tests to ./tests/Mem_Map that can be - used to benchmark the performance of various strategies (e.g., - stdio, read/write, mmap, etc.) for copying files. - -Fri May 12 19:09:10 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Mem_Map/Mem_Map: Added two new overloaded methods called - sync() that are wrappers around the msync(3c) system call. Also - added a new unmap() method that gives access to the full - behavior of munmap(3c). - -Wed May 10 14:16:16 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Tried yet another fix for the gettimeofday() botch that both - Centerline and SunOS 5.4 screw up in different ways. Thanks to - Medhi Tabatabai (Mehdi.Tabatabai@ed.nce.sita.int) for the latest - fixes. - -Tue May 9 19:05:58 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Reactor/Handle_Set.C: Fixed some "off-by-one" errors that - were occurring in the Handle_Set::sync() and set_max() methods. - Thanks to Nigel Hooke (n.hooke@trl.oz.au) for finding and fixing - these. - -Mon May 8 02:01:54 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Reactor/Reactor.C: Moved the Null_Callback class from - being nested within the Reactor class to outside the Reactor - class. This fixes a problem with the SIG compiler. - - * Released version 3.2.2. - - * libsrc/Reactor/Signal.C: Made the Signal_Handler class - thread-safe as well as signal-safe. - - * libsrc/Reactor/Reactor.C: Modified the new Reactor - implementation slightly to handle signals correctly. - - * libsrc/Threads/Synch.h: Added a new conversion operator to - Recursive_Lock that returns the underlying LOCK in case we need - it for something (e.g., to initialize a Condition object). - -Sun May 7 04:17:46 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Reactor/Reactor.C: Finished what I hope will be the last - set of changes to make the Reactor robust in multi-threaded - programs in situations where separate threads are used to - register and remove handlers. The final solution is elegant in - that it does not significantly penalize the performance of - programs that do not use separate threads to register and remove - handlers. Moreover, if you compile without the ACE_MT_SAFE flag - the Reactor will not include additional state information - related to the multi-threaded implementation. - - * libsrc/Threads/Synch.h: Subclassed the Guard class to make a new - class Try_Guard that uses tryacquire() to obtain a LOCK. - -Fri May 5 18:43:50 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Released version 3.2.1 - -Thu May 4 19:43:01 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/IPC_SAP/TLI_SAP/TLI_Connector.C (connect): Fixed a - problem whereby a t_bind() was being done twice. Since I didn't - write this code I don't know if my fix will work generically on - all platforms supporting TLI. Please let me know if there are - any problems. - -Tue May 2 17:21:53 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Reactor: Added a new notification feature that allows - multiple threads of control to enqueue Event_Handler * to the - main Reactor thread via the pipe used to wake up the main - Reactor thread. The Reactor will call the handle_exception() - method on Event_Handler with a HANDLE == -1 to notify the - handler. This feature is very useful if you need to have - certain operations (such as handler termination) performed in - the main thread. - -Tue Apr 25 00:34:18 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Reactor: Fixed a stupid pair of typos in the Reactor that - failed to cast arguments to the pipe to char *. - - * libsrc/Connection: Fixed a portability problem with the - Connector: we can't use RW_Mutex for synchronization since not - all platforms support threads. The quick fix is to use - Null_Mutex, but a better long term approach is on the way! - - * Released version 3.2. - - * Added richer support for the TLI_Connector to make it work - better with protocols other than TCP/IP. Thanks to Mats - Sundvall (sundvall@perrier.embnet.se) for these enhancements. - -Mon Apr 24 02:26:04 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Changed the SOCK_Dgram_Brdcast class name to SOCK_Dgram_Bcast - and the SOCK_Mcast to SOCK_Dgram_Mcast to be more consistent. - - * Massively improved the Reactor's support for multi-threading. - There was actually a major problem in previous versions of ACE - that used poll() as the underlying event demultiplexor. Poll() - produced incorrect results when the Reactor::handle_events() - method was run in one thread, but another thread came along and - registered or removed an Event_Handler. The new version fixes - this problem so that the Reactor will now work correctly in - multi-threaded programs. - - One consequence of this change is that sysincludes.h and the - SunOS 5.x configuration files have been changed so that poll() - is no longer used as the default demultiplexor. The reason is - that poll() doesn't work as efficiently when used in - multi-threaded programs (ugh). See the Reactor code for - examples of how this all works now. Basically, the trick is to - use the select()-style implementation for most of the code, and - transform to poll()-style implementation only when necessary. - -Sat Apr 22 03:35:51 1995 Douglas C. Schmidt (schmidt@lambada.cs.wustl.edu) - - * libsrc/ASX/Message_Queue: Added a new method to the - Message_Queue class called unblock(). This method allows one - thread to release all other threads that are waiting for - messages to be enqueued or dequeued on a Message_Queue. - Modified the return value of methods like enqueue_head() and - dequeue_head() so that if a thread unblocks() then these methods - return -1 with errno == ESHUTDOWN. Also changed the name of - some of the internal methods so that they would be more - consistent. - - * libsrc/Connection/Connector: Fixed a stupid bug caused by - failing to have a destructor for Connector. Thus, there are - cases where unconnected Svc_Handlers are left around in the - handler_map_. This causes problems for dynamic linking in - conjunction with the Reactor, so now the destructor iterates - through all the unconnected Svc_Handlers and removes them from - the Reactor. - -Fri Apr 21 15:28:46 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Reactor/Signal: Changed Sig_Set::addset() and - Sig_Set::delset() to the more appropriately named sig_add() and - sig_del(). Also added '_' in the Sig_Set method names to be - more consistent... - - * Removed the ./libsrc/IPC_SAP/SOCK_SAP/misc.[hC] file and merged - the one function in that file (ace_bind_port) into - ./libsrc/Misc/Misc.[hC]. - - * Added a bunch of fixes from various people to make ACE compile - better on SGI, SunOS 4, and HP/UX. Thanks for all the fixes! - - * libsrc/IPC_SAP/Addr: Changed sap_any to ace_sap_any to avoid - problems with the namespace. - - * Added a new portability flag that only compiles the SOCK_Mcast.* - stuff if the platform supports multicast! - - * ./libsrc/Shared_Malloc: Fixed some portability bugs with - Memory_Pool.C and added new support for SunOS 4.x running SunC++ - 4.x. Thanks to Steve Warwick (swarwick@arinc.com) for this - strategic help. - -Wed Apr 19 09:05:43 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Fixed up the ./libsrc/CORBA_Handler so that it will correctly - compile on platforms that don't have Orbix... - - * libsrc/Misc: added a new "Simple String" class called SString. - This is not really meant to be used by end-user applications. - It is used by certain portions of ACE that need to have - operator== and operator!= defined on a string (e.g., the - Token_Server and the Orbix Event_Comm components that use the - Map_Manager). - -Tue Apr 18 00:09:31 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/ASX: Fixed a stupid bug in Task::activate() that didn't - spawn a thread if the Thread_Manager was NULL... - -Sat Apr 15 19:39:30 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Reactor: Added a new class to the Reactor called - Event_Handler_T.[hi]. This class makes it easy to integrate - existing classes into the Reactor framework without requiring - them to inherit from Event_Handler directly. This technique is - a superset of the DEF_TIE approach used by IONA in Orbix as one - of the ways to combine an existing class (that doesn't know - anything about CORBA) with a CORBA interface. Thanks to Greg - Lavender - (g.lavender@isode.com) for the suggestion. - -Fri Apr 14 14:41:49 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Run catman on the ./man directory so that it now has a windex - file. This facilitates "man -k". - -Thu Apr 13 23:39:22 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Reactor: Made the Reactor be a stand-alone component that - does not require any other ACE libraries. - - * Added two new methods to the Reactor so that you can now - register or remove a set of HANDLEs in a single call. Thanks to - Bill Sears - (wsears@world.std.com) for this suggestion. Basically, now you - can register or deregister a set of n HANDLEs with one operation - (rather than doing n register_handler () or n remove_handler - ()). - - * include/sysincludes.h: Changed the name of the macro MT to - ACE_MT and DB to ACE_DB to avoid polluting the namespace. - -Wed Apr 12 11:14:46 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Reactor/Reactor.C (close): Added code to close down the - pipe handles when the Reactor is shut down. Thanks to Mark - Patton (mark_patton@tx72.mot.com) for this info. - -Fri Apr 7 18:33:30 1995 Douglas C. Schmidt (schmidt@siesta.cs.wustl.edu) - - * Added a new method to CORBA_Handler so that handlers don't need - to subclass from CORBA_Handler, but rather can call the - CORBA_Handler::register_service() method (which is static). - Thanks to Chris Tarr (ctarr@objectspace.co) for this suggestion. - -Mon Apr 3 13:09:45 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Added a new static method to Service_Config.[hC] called - end_event_loop(). This can be used to stop the run_event_loop() - method of the Service_Config. In addition, all the methods in - Service_Config were changed to be static to emphasize the fact - that the Service Configurator is a singleton... - - * include/Trace.h (ACE_TRACE): Changed the macro T to ACE_TRACE. - This will prevent namespace pollution. - - * Added support for the Orbix CORBA implementation. If you don't - have Orbix, you'll need to remove this flag from the - config-sunos5-sunc++.4.x.h file if you are compiling on SunOS - 5.x. - -Sun Apr 2 01:12:19 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Added new support for C++ wrappers around the IP multicasting. - There are three new files in ./libsrc/IPC_SAP/SOCK_SAP called - SOCK_Mcast.[hiC] and a new test directory in - ./tests/Reactor/multicast and ./tests/Reactor/ntalker to - illustrate how to use this stuff. Thanks to Tim Harrison - (harrison@cs.wustl.edu) for this code. - -Sat Apr 1 18:48:40 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Added support to the libsrc/Shared_Malloc/Memory_Pool.[hC] class - for System V shared memory, as well as for mmap(2) and sbrk(2) - memory. Please note that this has not been extensively tested - yet, so use with caution... - -Thu Mar 30 21:50:00 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Misc/Atomic_Op: Added the postfix versions of the ++ and - -- operators. This stops the Sun CC compiler from griping about - the "anachronistic" usage when using a++ rather than ++a. - Thanks to Bruce Worden for the - suggestion. - -Wed Mar 29 22:26:37 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Reactor/Handle_Set: Fixed a weird problem where I was - using NOFILE as the max number of descriptors rather than - FD_SETSIZE. I don't know why I was doing this. - - * Also fixed up a problem with Handle_Set that was causing the - iterator to go nuts when it got a strange initial value of - fd_set in Handle_Set. Orbix triggers this kind of nonsense in - some cases... - -Tue Mar 28 21:01:36 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/Reactor/Reactor.C: swapped the order of dispatching so - that handle_exception methods are dispatched before handle_input - methods to improve response time for exceptions (e.g., OOB - data). Thanks to Detlef Becker - (beckerd@erlh.siemens.de) for suggesting this. - - * Fixed a bug in ./ASX/Stream.i that caused problems when a Module - was popped off a Stream. Thanks to Paul Stephenson for noticing - this and sending me the fix. - - * Changed the Reactor::dispatch methods so that they dispatch the - timers *before* dispatching the I/O-based event handlers. This - is helpful for systems that are time-delay sensitive. - - * libsrc/Reactor/Time_Value: Added new += and -= operators to - Time_Value. Thanks to Alex V. Maclinovsky - (garyh@teleng1.tait.co.nz) for this suggestion. - -Thu Mar 23 15:38:23 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/IPC_SAP/Addr/SPIPE_Addr.i (set): Fixed a problem that the - HP/UX compiler had with complex arithmetic expressions. - - * libsrc/Service_Configurator: fixed up the Service_Configurator - source code so that it will compile correctly on HP/UX - platforms. - -Tue Mar 21 00:28:25 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * libsrc/IPC_SAP/SOCK_SAP/LSOCK_Connector.h: Fixed an amazingly - stupid bug with LSOCK_Connector, where I was passing in a - default argument of PF_INET instead of PF_UNIX... Arrgh! - -Mon Mar 20 20:24:29 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Fixed up the $WRAPPER_ROOT/include/makeinclude/ directory to - define a new set of platform-specific configuration files. This - should greatly improve the portability of ACE to different - OS/compiler platforms. - - * Added a bunch of changes to allow ACE to build with Lucid C++ on - SunOs 4.x. This should also fix some other problems we've been - having with SunOS 4.x. Thanks to Lee Baker (baker@ctis.af.mil) - for these changes. - -Sun Mar 19 00:34:30 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Added manual pages for all of the ./libsrc libraries. These - manual pages are all generated automagically from the libsrc - header files. - -Sat Mar 18 10:48:46 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Finally broke down and fixed the Makefile scheme so that there - is just one shared library (libACE.so) and one archive library - (libACE.a). This should massively simplify the application - development process, though it may require a bit of fixing of - Makefiles to remove all the -lReactor -lIPC_SAP stuff that was - in there before. - - * libsrc/IPC_SAP/TLI_SAP/: Fixed a stupid bug that was causing - core dumps since the TLI option pointers weren't initialized to - 0 in the TLI::TLI constructor. Thanks to Ed Brown for noticing - this (eebrown@netcom.com). - -Wed Mar 15 00:08:19 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Added some new fixes to get ACE to run on OSF1 and Linux. - -Tue Mar 14 13:36:31 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Added several changes to the source code and config-hpux.h - configuration file based on comments from Alex Ranous - (ranous@nsa.hp.com). In particular, changed ACE_HAS_NO_FDSET to - ACE_SELECT_USES_LONG. - -Mon Mar 13 09:23:58 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Improved the Makefile scheme so that the use of PTDIRS is no - longer required. The trick was to link the appropriate template - *.C files into the WRAPPER_ROOT/include directory. This enables - the compiler to find them in one single place. - -Sun Mar 12 22:35:50 1995 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Added a new mechanism to clean up the insane number of -D's in - the Makefile. This new mechanism requires a bit more work at - installation time, but should greatly reduce the effort during - normal software development - (once ACE is installed...). See the INSTALL file - for more details. - -Fri Mar 10 17:29:02 1995 Douglas Schmidt - - * Fixed a stupid bug in Map_Manager.i which wasn't correctly - setting default values for fields in one of the Map_Manager - constructors. - -Fri Mar 10 08:54:42 1995 Doug Schmidt - - * /libsrc/Connection/Acceptor.i: Fixed a potential memory leak in - handle_input(). - -Thu Mar 9 11:59:54 1995 Doug Schmidt - - * Changed the Map_Manager::find() method to use class Read_Guard - so that multiple finds may proceed in parallel on a multiple - threaded application. Likewise, changed the implementation of - bind() and unbind() to use class Write_Guard so that destructive - operations will be serialized correctly. One consequence of - this is that RW_Mutex must be used instead of Mutex... - - * Added a new overloaded Map_Manager::unbind() method with an - INT_ID parameter. This parameter that passes back a reference - to the internal id being unbound. This allows the caller to - clean up any dynamic memory associated with the INT_ID. - -Tue Mar 7 13:32:17 1995 Doug Schmidt - - * Changed a bunch more things to get ACE to compile with - Centerline C++. This should also make ACE more portable to - other cfront-based compilers. - - * Had to change the ASX source in ACE to work around a stupid - problem with templates in cfront-based C++ compilers. - Fortunately, it was possible to mask most of the problems using - the C++ preprocessor. - - * There seem to be some problems with cfront-based compilers (such - as centerline). They don't like the new SYNCH::MUTEX usage in - the Message_Queue. - - * Removed several unused local variables in the INET_Addr::set() - method. - -Wed Mar 1 00:35:11 1995 Douglas C. Schmidt (schmidt@tango) - - * Added a major performance boost on high-speed networks. It - turns out that send(3) and revc(3) are slower than write(2) and - read(2) (since the latter are system calls, and the former are - library calls. Therefore, I added new overloaded methods to - SOCK_IO so that write(2) and read(2) are available to the user! - -Tue Feb 28 10:13:09 1995 Douglas C. Schmidt (schmidt@tango) - - * libsrc/Reactor/Reactor.C: Fixed the implementation of the - Reactor::open and Reactor::Reactor constructor so that it is now - possible to resize the size of the Reactor *after* the - constructor has run (by calling open()) *without* having to shut - down the Reactor first. - - * Modified the Reactor::attach() method so that it will ADD the - new bits to the bitmask rather than SET them. Thanks to Mark - Patton for recommending this - (mark_patton@tx72.mot.com). - -Sat Feb 25 15:08:04 1995 Douglas C. Schmidt (schmidt@tango) - - * Released version 3.0.5. - -Fri Feb 24 17:57:01 1995 Douglas C. Schmidt (schmidt@tango) - - * Used the OSE class2man scripts to generate UNIX manual pages for - IPC_SAP, Thread, Connection, and Reactor. Other manual pages - will be forthcoming... - - * libsrc/IPC_SAP/Addr/INET_Addr.i: Fixed a bug in one of the - INET_Addr::set() methods that caused a segmentation fault if - host_name was NULL. In addition, greatly cleaned up the code so - that all the "set" methods share a common basis of code. - -Tue Feb 21 19:32:28 1995 Douglas C. Schmidt (schmidt@tango) - - * Updated the entire release to use the new SYNCH template - interface for Task, Module, Stream, and Message_Queue. This is - *much* cleaner, though it reveals some bugs with the Sun C++ - templates facility. - -Mon Feb 20 22:46:14 1995 Douglas C. Schmidt (schmidt@tango) - - * Changed the SPIPE_SAP, SOCK_SAP, and TLI_SAP *Connector class - methods from open() to connect(). This is a more accurate name - and it also fits in nicely with the Acceptor::accept() method. - - * Started integrating new versions of various header files that - include hooks to automatically generate documentation. - -Tue Feb 14 20:52:13 1995 Douglas C. Schmidt (schmidt@tango) - - * Changed the order in which the Reactor dispatches descriptors. - Originally, it dispatched the "read" descriptors *before* the - "write" descriptors. Now, it dispatches the "write" descriptors - first. This was necessary to handle weird behavior of sockets - over TCP/IP when data is piggy-backed with the final ACK on a - non-blocking connection. - -Mon Feb 13 15:49:21 1995 Douglas C. Schmidt (schmidt@tango) - - * Changed the name of Event_Handler::get_fd() to - Event_Handler::get_handle() to be more consistent with other - usage in ACE. - -Sat Feb 4 22:47:34 1995 Douglas C. Schmidt (schmidt@tango) - - * libsrc/Service_Configurator/Service_Object: changed the - destructor to be virtual (thanks to Steffen Winther Sorensen - for noticing this). - -Sat Jan 28 16:29:49 1995 Douglas C. Schmidt (schmidt@tango) - - * Changed the name of class Map_Manager's Search_Structure struct - to Map_Entry. This is more specific to what that data structure - really does. - - * Began adding support for Linux, courtesy of sts@dad.stibo.dk. - -Sun Jan 22 23:15:38 1995 Douglas C. Schmidt (schmidt@tango) - - * Changed the name of the ./libsrc/Connector-Acceptor directory to - ./libsrc/Connection. Also changed the name of libConn_Acc.so to - libConnection.so to be more consistent. - -Sat Jan 21 13:59:18 1995 Douglas C. Schmidt (schmidt@tango) - - * libsrc/IPC_SAP: Fixed the *Acceptor classes for SOCK_SAP and - SPIPE_SAP so they behave just like FIFO_SAP and contain a method - called remove(). This method closes the underlying descriptor - and also unlinks the local address from the file system. - - * libsrc/ASX/Message_Queue.i (copy): Fixed this code so that it - correctly stores starting at the wr_ptr rather than the rd_ptr. - Thanks to Chris Cleeland - (chris@milo.st-louis.mo.us) for pointing this out - to me. - -Wed Jan 11 13:07:19 1995 Douglas C. Schmidt (schmidt@tango) - - * Changed all uses of class Thr_Manager to class Thread_Manager - and class Thr_Cntl to Thread_Control. This is more readable and - is now consistent with the documentation... - -Tue Jan 10 13:49:31 1995 Douglas C. Schmidt (schmidt@tango) - - * Modified the makefile scheme so that only the *.so files are - built by default. If you want to build both *.a and *.so files, - uncomment out the lines described in - $WRAPPER_ROOT/include/makeinclude/rules.lib.GNU. Note that this - will require you to run make on the ./libsrc directories twice - in order to properly build and install both the *.a and *.so - libraries. - -Mon Jan 9 22:57:29 1995 Douglas C. Schmidt (schmidt@tango) - - * libsrc/Reactor/Signal.h: Changed the name of the Signal_Block - class to the Signal_Guard class to be more consistent with the - Guard class in Synch.h. - -Sat Jan 7 19:49:46 1995 Douglas C. Schmidt (schmidt@tango) - - * tests/ASX/Event_Server/Event_Server: Revised the Event Server - test example to use the Acceptor pattern components. - -Fri Jan 6 23:38:21 1995 Douglas C. Schmidt (schmidt@tango) - - * Added a new method to class Task that turns a task into an - active object (i.e., associates a thread of control with the - task). This is useful since it replaces all the places in - application code that original said "this->thr_mgr_.spawn - (THR_FUNC - (&this->svc_run))", etc... - -Thu Jan 5 21:05:15 1995 Douglas C. Schmidt (schmidt@tango) - - * libsrc/ASX: Changed the capitalization of class STREAM to class - Stream. This seems more reasonable since I don't see any - particular reason to shout about Streams! - - * libsrc/ASX/Task: Changed name of method qreply() to reply() to - reflect the fact that the name of the class is no longer Queue! - - * libsrc/ASX: Made both Task and Message_Queue into parameterized - types. This greatly improves the ability to parameterized - synchronization into an application. - - * Changed all occurrences of timestruc_t to use Time_Value - instead. This helps to improve portability and reduce the - "impedence mismatch" caused by mixing both C and C++ types in - the ACE interfaces. Note that one drawback of this is that we - lose nano-second timing accuracy. However, I don't know of any - real OS platforms that support that degree of precision anyway! - - * libsrc/Reactor: Moved the static "zero" data member from the - Timer_Queue class to the Time_Value class. Also added a new - static data member called "zerop," which is a pointer to "zero". - - * libsrc/Threads/Synch: Changed the interface of class Condition - so that it no longer has both wait() and a timedwait() methods. - Since C++ has default values, these two methods were redundant. - Now, there is only a single method called wait(). By default, - it's argument is 0, which defaults to the original wait() - semantics. If the argument is non-zero then the timewait - semantics apply. - - * libsrc/Threads/Synch: Added a new class called Null_Condition. - This is similar to the Null_Mutex class in the sense that it has - the same interface as class Condition, but it's methods are all - no-ops - (however, wait() and signal() both set errno = ETIME - before returning...). This class is useful for - parameterizing synchronization into an application. - diff --git a/ChangeLog-96a b/ChangeLog-96a deleted file mode 100644 index 5aa3c9b69fc..00000000000 --- a/ChangeLog-96a +++ /dev/null @@ -1,3889 +0,0 @@ -Sun Jun 30 15:28:43 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/OS.i (cond_timedwait): Fixed the implementation of the - ACE_OS::cond_timedwait() wrapper such that if the - caller-specified timeout elapses without the condition variable - being signaled that errno is always set to ETIME. This fixes - some inconsistencies that occurred with POSIX pthreads and Win32 - threads. Thanks to Ross Dargahi for pointing - this out. - - * ace/SOCK.cpp: Changed SOCK::close() to use the new - ACE_OS::closesocket() call. This should fix some weird bugs - that have been lurking in the code for some time now! - - * ace/OS: Added a new method to ACE_OS called closesocket(). This - handles the differences between Win32 and UNIX in their - treatment of sockets (e.g., NT requires the use of - closesocket(), whereas UNIX requires the use of close(). Thanks - to Irfan, Prashant, and Tim for figuring this one out! - -Sat Jun 29 21:23:04 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/SPIPE_Acceptor.cpp (create_new_instance): Added the flag - (FILE_FLAG_OVERLAPPED) in call to CreateNamedPipe. - -Fri Jun 28 01:31:24 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Svc_Handler.cpp (open): Fixed a small typo that caused a - compile error if the DEBUGGING macro was enabled. Thanks to - Irfan for finding this. - -Wed Jun 26 03:19:27 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Synch_T.cpp (ts_get): The tss object allocated off the heap - should be released if setspecific fails. Thanks to John Lu - for reporting this. - - * ace/CORBA_Handler.cpp (handle_input): changed ACE_OS::send and - ACE_OS::recv to ACE::send and ACE::recv respectively in - CORBA_Handler.cpp. Thanks to Irfan for pointing this out. - - * ace/Service_Config: slightly modified the Service_Config.[h,cpp] - in order to make it possible to create an ACE_Service_Config - with an external ACE_Reactor as a parameter. On creation I was - handling this partly correct (i.e., not creating a new reactor). - However, there was no flag for remembering this for a later - deletion. Thus, on deletion I was doing a delete on the Reactor - regardless of who created it. This is now fixed. Thanks to - Karlheinz for pointing this out. - - * examples/ASX/CCM_App/CCM_App.cpp: Changed all uses of init (int, - char **) to init (int, char *[]) to work around a "feature" with - MSVC++ 4.x... Thanks to Karlheinz for pointing this out. - - * ace/OS.h: Added a new typedef of TCHAR to be compatible with - Win32 UNICODE type names... - - * ace/{Mem_Map,DEV_Addr,SPIPE_Addr,FILE_Addr}: Added UNICODE - support for Win32 to all interfaces that require filenames. - - * ace/{SPIPE_Stream,SOCK_IO,FILE_IO,DEV_IO}: Added a new pair of - send()/recv() methods that take ACE_OVERLAPPED pointers in order - to make it possible to integrate seamlessly with Win32 - overlapped I/O. Naturally, these methods are simply - "callthroughs" to the ACE_OS versions... - - * ace/OS: Added a new pair of send()/recv() methods that take - ACE_OVERLAPPED pointers in order to make it possible to - integrate seamlessly with Win32 overlapped I/O. - - * ace/SPIPE_Acceptor: Factored out common code in the Win32 - implementation of ACE SPIPES (which uses Win32 Named Pipes, of - course ;-)). - - * ace/SPIPE_Acceptor.h: Removed a vestige of the past -- - ACE_SPIPE_LISTENER_H should be ACE_SPIPE_ACCEPTOR_H... - -Wed Jun 19 19:35:12 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/SPIPE_{Acceptor,Connector}: Modified SPIPE_Acceptor and - SPIPE_Connector to implement Named Pipes on NT. The public - interface remains the same. - -Sun Jun 16 00:45:41 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Service_Config: Provided public accessor methods for the - following data memebers of the ACE_Service_Config: - - reconfig_occurred_ - end_event_loop_ - - Thanks to Steve Warwick for suggesting this. - - * ace/Synch*: Added UNICODE support for the ACE synchronization - classes (e.g., ACE_Mutex, ACE_RW_Mutex, ACE_Semaphore, etc.). - - * ace/OS: Added UNICODE support for the ACE_OS::dl_open() - function, as well as the ACE_OS synchronization functions. - - * ace/CORBA_Handler: Added Seth's changes for Orbix 2.0. - -Sat Jun 1 13:30:55 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/Memory_Pool.cpp (remap): Fixed a bug in - ACE_MMAP_Memory_Pool::remap (). The test for whether or not the - addr falls within the range had a '!' (not) missing, that is, it - was failing when it should be succeeding and vice versa. - -Sun Jun 9 00:01:44 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Released version 4.0.24 for testing. - - * ace: Changed all uses of ACE_Guard m (lock_) to ACE_GUARD - (LOCK, lock_), which is a macro that is defined as follows: - - ACE_Guard ace_mon (LOCK); \ - if (m.locked () == 0) return; - - The reason we need this is (1) detect locking failures, rather - than have things fail silently and (2) to automatically detect - deadlock in the Reactor. In addition, I also added - ACE_GUARD_RETURN, which is similar to ACE_GUARD, except that it - returns a "failure" status when the lock is not acquired. - Thanks to Karlheinz for suggesting this. - - * ace/Log_Msg: Added the new thr_state() accessors to Log_Msg. - - * ace/Thread_Manager.cpp: factored out some common code by having - the public interfaces (like resume() and suspend()) utilize the - protected interfaces (like resume_thr() and suspend_thr()). - - * ace/Thread_Manager.cpp: Added sanity checks for suspend(), - resume(), cancel(), etc. so that we don't blow up if someone - tries to perform an operation on an invalid thread id. - - * ace/Thread_Manager: Added a suite of new methods for - (1) cooperatively "canceling" threads and (2) testing if threads - are cancelled (also added similar checks to test if threads are - suspended or resumed). The cooperative cancellation mechanism - is based on a design fleshed out with Detlef and Karlheinz. - It's essentially a compromise between the powerful mechanisms - available via POSIX pthreads vs. the totally lame mechanisms - available in Win32. - - Here's how it all works: - - 1. Added several new methods to ACE_Thread_Manager: - - cancel(thr_id); -- cancels thr_id - cancel_all(); -- cancels all the threads in a Thread_Manager - cancel_grp(grp_id); -- cancels a group of threads in a Thread_Manager - testcancel(thr_id); -- returns "true" if thr_id has been cancelled - - 2. Updated ACE_Log_Msg to maintain the current state of a thread - in thread-specific-storage (TSS). Actually, it's more clever - than that since I really keep a *pointer* to the state of a - thread in TSS. This pointer actually points *back* to the - ACE_Thread_State field in the ACE_Thread_Manager! I use it - as a cache as follows: - - ACE_Thread_Manager::testcancel (thread_t t_id) - { - ACE_MT (ACE_Thread_Mutex_Guard m (this->lock_)); - - // Try to get the cached value out of TSS to avoid lookup. - ACE_Thread_State *thr_state = ACE_LOG_MSG->thr_state (); - - if (thr_state == 0) - { // We need to init the cache. - int i = this->find (t_id); - if (i == -1) return -1; - // Update the TSS cache. - ACE_LOG_MSG->thr_state (thr_state = &this->thr_table_[i].thr_state_); - } - return *thr_state == ACE_THR_CANCELLED; - } - - Note that this allows me to avoid searching the - Thread_Manager on every Thread_Manager::cancel() access - except the first one! - - 3. I've updated the examples/Threads/test_thread_manager.cpp - test file to exercise the new cooperative thread cancellation - scheme. It basically spawns a bunch of threads that go into - their own event loops doing - - if (thr_mgr ()->testcancel (ACE_Thread::self ()) != 0) - break; - - every so often. Naturally, the main thread cancels them by saying - - thr_mgr ()->cancel_grp (grp_id); - - when it wants to inform them to shut down. - - * ace/Thread_Manager: Moved the Thread_State enum from the - ACE_Thread_Descriptor class to OS.h and renamed it to be - ACE_Thread_State. This will make it easier to integrate the - state of a thread in thread-specific storage... - -Sat Jun 8 13:35:17 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/OS.i (sema_post): revised the implementation of the POSIX - Pthreads semaphore implementation just a bit in order to make it - slightly more efficient (it now releases the mutex before - signaling the condition variable). - - * ace/OS.i and config-aix.4.1.h: added a fix that separates the - decision about whether optlen is a pointer from the decision of - the type of optlen. This fixes a problem on AIX. Thanks to Bob - Olson for this fix. - - * ace/Proactor.h: Fixed a small glitch that was causing some - compilers to break due to the fact that they can't grok fully - qualified destructor syntax in the class definition. Thanks to - Alfred Keller for reporting this. - - * ace/OS.h: Added some Win32 macros (e.g., GENERIC_READ) to the - UNIX side of the house in order to compile the Proactor on Win32 - and UNIX. - -Fri Jun 7 19:36:27 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Added a new Bourne shell script called ACE-install.sh that will - automatically download and install on UNIX machines. Thanks to - Ajit Sagar for contributing this. - -Thu Jun 6 00:37:02 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Released version 4.0.23 for testing. - - * ace/Local_Tokens: Updated the *.cpp and *.i files to remove - warnings and generally improve the conformance to the ACE coding - guidelines. - - * examples: Moved the Proactor directory into the Reactor - directory since the Proactor and Reactor are really two - implementations of the same basic pattern. - - * ace/Memory_Pool.cpp: Fixed an inconsistency caused by not - updating __INLINE__ to __ACE_INLINE__. Thanks to Neil Cohen for - finding this. - - * ace: Added support for the Florida State PTHREADS package. - Thanks to Gary Salsbery and - Eric Beser for helping with this. - - * ace: Added support for the m88k OS. Thanks to Gary Salsbery - and Eric Beser - for helping with this. - - * ace/OS.h: Added a default value of NULL to the sigwait() OS - wrapper method to simplify the usecase in certain cases. - - * ace/Memory_Pool.cpp (commit_backing_store): Fixed what is - hopefully the last typo related to the ACE_DEFAULT_BASE_ADDR - macro. Thanks to Neil B. Cohen for reporting - this. - -Thu Jun 6 15:31:40 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu) - - * ace/CORBA_Handler.h: This version of the CORBA_Handler works - with Orbix 2.0. Most of the changes involve the use of C++ - Exception Handling (the removal of IT_X), and the location of - some CORBA system exception classes. - - * ace/Event_Handler.h: Added handle_*_complete methods for the - Proactor. The Proactor now takes Event_Handlers and calls back - the **_complete methods when overlapped I/O operations have - completed. - - * ace/Service_Config.h: Added static accessors for the Proactor to - the Service_Config object. Similar to the Reactor accessors, - applications can now use the Service_Config object as the global - access point to the Proactor event demultiplexor. - -Wed Jun 5 22:40:28 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/OS.i (t_free): Added a check to avoid deleting a NULL ptr. - This was causing problems for the TLI_Acceptor. Thanks to Ajit - Sagar for reporting this. - - * ace/Makefile: Changed things back so that both static and - dynamic libs are built by default... Thanks to Brad Brown - for pointing this out... - -Sat Jun 1 13:49:51 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Released version 4.0.22 for testing. - - * Added Tim Harrison's latest tests for Proactor. - -Sat Jun 1 13:30:55 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/Memory_Pool.cpp (remap): Fixed a bug in - ACE_MMAP_Memory_Pool::remap (). The test for whether or not the - addr falls within the range had a '!' (not) missing, that is, it - was failing when it should be succeeding and vice versa. - -Fri May 31 16:31:13 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Rereleased version 4.0.21 for testing. - - * Copied over new versions of the Proactor -- there was a small - problem with the UNIX version that caused it not to compile... - -Fri May 31 00:03:41 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu) - - * examples/Proactor/test_proactor.cpp: Added a test program for - the Proactor. Check examples/Proactor/README for more details - on this test example. - - * ace/Proactor.cpp: Added first pass at the Proactor for win32. - The Proactor is a Reactor-like abstraction that uses - asynchronous I/O, rather than synchronous I/O. On Windows NT we - implement the Proactor using overlapped I/O. We'll soon be - porting the Proactor to Solaris using POSIX 4.x aio_* API for - real-time programming. - - Unfortunately, the Proactor has not yet been integrated with - Windows NT WaitForMultipleObjects since it appears that I/O - Completion ports are not "waitable" objects on Windows NT. Does - anyone know if this has been fixed in release 4.0? - -Thu May 30 05:51:23 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Synch.i: Reordered the definitions of several methods in - Synch.i to avoid warnings from G++. Thanks to Marco Sommerau - for noticing - this. - - * ace/Log_Msg.cpp: There was a problem having to do with the order - in which static objects by G++. In particular, G++ was calling - the constructor of the lock_ mutex in Log_Msg.cpp *after* it was - being used for the first time. The right solution is to make - lock_ be a pointer and allocate it once in the instance() - method. Thanks to Marco Sommerau - for finding this - problem. - - * ace/TLI_Acceptor.cpp (close): Make sure to only close down the - TLI_Request_Queue if queue_ is non-NULL! Thanks to Ajit Sagar - for spotting this. - - * ace: Changed all the enums in the various SysV wrappers from - things like CREATE and OPEN to ACE_CREATE and ACE_OPEN to avoid - name clashes with other systems. In addition, also changed - NONBLOCK to ACE_NOWAIT to avoid clashes with the existing - ACE_NONBLOCK macro! Thanks to Steve Warwick - for suggesting this. - - * ChangeLog: Changed all usages of the INLINE macro to ACE_INLINE. - This avoids name clashes with other systems. Thanks to - Chris Eich for - suggesting this. - -Mon May 27 13:03:58 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Map_Manager.cpp (trybind): The function trybind() doesn't - return a value as it should. A return was missing from the last - line of the function. Thanks to Stuart Powell - for finding this problem. - - * ace/Acceptor.cpp (dump): The debug print referred to - "scheduling_strategy_" which doesn't exist in the relevant - class. Replacing it with "concurrency_strategy_" fixes the - problem. Thanks to Stuart Powell for - finding this problem. - - * ace/Mem_Map.i: Make sure to close down the file mapping - correctly when we upmap the view! - - * ace/OS.h: Changed the default shared memory address from 16 M to - 64 M in order to work around problems with AIX. - - * ace/Memory_Pool: Moved and renamed the enums in - ACE_Shared_Memory_Pool so that they'd be in OS.h. This makes it - easier to remember to change them if they are incorrect. Thanks - to Lionel Mommeja for suggesting this. - - * ace/Stream.cpp: Removed #if defined (ACE_HAS_THREADS) - - * ace/OS.cpp (svc_run): Added a Win32 try/except block to - Spawn_Args::svc_run so that we catch all Win32 structured - exceptions in order to make sure that we clean up correctly when - the thread exits. - -Sun May 26 11:37:08 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/Local_Name_Space.cpp: Used the new Win32 exception - integration in order to ensure that the Name Server will - transparently work correctly when the backing store is extended - by other processes on the same machine. - - * ace/Memory_Pool.cpp: Revised the ACE_MMAP_Memory_Pool to export - the mechanism for extending the virtual memory mapping. This - can now be called by other programs (e.g., in order to integrate - with Win32 Structure Exception Handling). - - * ace/Memory_Pool.cpp: Changed the use of ACE_OS::lseek() to - ACE_OS::filesize() in order to determine the current offset when - we're remapping the address space. - -Wed May 22 13:08:44 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/OS.h (ACE_DEFAULT_TIME_SERVER_STR): Added a new entry for - ACE_DEFAULT_TIME_SERVER_STR. - - * ace/Malloc_T.cpp (advance): Fixed two small bugs. In - ACE_Malloc::try_bind(), if we have a match we need to set - pointer to node->pointer_ and not node->name_. - Ina ACE_Malloc_Iterator::advance(), the continue in the for loop - should be for strcmp != 0 instead of == 0. - -Sun May 19 12:03:11 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Released version 4.0.20 for testing. - - * ace/Service_Record.cpp (remove): Fixed a very mysterious bug - that was caused by deleteing an object and then trying to access - it's next_ pointer. This worked on UNIX, but fortunately the - MSVC++ compiler does special things to deleted memory and the - bug was revealed! At long last, MSVC++ does something right - ;-). - - * ace/Module.cpp: Revised the code a bit to use the ACE_SET_BITS - and ACE_CLR_BITS macros to improve readability. - - * ace/SV_Semaphore_Complex.cpp (open): Fixed a race condition - where we weren't correctly checking for EIDRM. Thanks to - Michael Fortinsky for reporting this. - -Sat May 18 10:49:04 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace: Added a new ace.mak and ace.mdp file for Win32. - - * ace/Service_Record.cpp: Rewrote some code to work around a bug - with MSVC++. This bug was causing problems since the - ACE_Shared_Object methods were getting called, rather than the - Test_Task methods used in the examples/ASX/CCM_App.cpp file. - Thanks to Tom Leith for pointing out this problem! - - * ace/OS.h: Added a new #define for ACE_DEFAULT_SVC_CONF to deal - with differences between NT and UNIX pathnames. - - * ace/Time_Value.h: Moved the definition of the INLINE macro from - OS.h to Time_Value.h so that it will be in scope for - Time_Value.i. Thanks to Neil Cohen for reporting this. - - * examples/Reactor/Misc/signal_tester.cpp: There was a typo in - signal_test.cpp. It had mean to use handle_input() rather than - handle_output() to exercise the asynchronous signal handling - capabilities. This is fixed now. - - * apps/Synch-Benchmarks/Benchmark.cpp (thr_id): Added a new #if - define (ACE_HAS_DCETHREADS) to make this work on AIX. Thanks to - Greg Wilson for reporting this. - - * ace/Local_Name_Space: Moved ACE_NS_String and ACE_NS_Internal - from the *.cpp file to the *.h file to work around a "feature" - of the AIX C++ compiler. Thanks to Greg Wilson - for reporting this. - - * ace/Reactor.h (ACE_Handler_Repository): Changed the type of - cur_size_ from size_t to ssize_t to avoid type mismatches. - - * ace/Name_Request_Reply.cpp (decode): Fixed some inconsistencies - between signed and unsigned loop counters... - - * ace/OS.h: Changed the typedef of pid_t on Win32 from - DWORD to long to be consistent with UNIX. - -Thu May 16 18:49:14 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Released version 4.0.19 for testing. - - * build/SunOS5.4/ace/ACE.cpp (ldfind): Fixed a bug in ldfind() - that caused a segfault if we didn't resolve the filename in the - LD_SEARCH_PATH. - - * ace/Reactor and Timer_Queue: Changed the interface of cancel() - to include a const void **arg. If arg is non-NULL then it will - be set to point to the ``magic cookie'' argument passed in when - the Event_Handler was registered. This makes it possible to - free up the memory and avoid memory leaks. - - * ace/Service_Record: Removed the #ifdefs that checked if - ACE_HAS_THREADS because we ought to be able to build all of this - stuff now that we've got the ACE_OS wrappers. - - * ace/Svc_Conf.y: Removed the #ifdefs that checked if - ACE_HAS_THREADS because we ought to be able to build all of this - stuff now that we've got the ACE_OS wrappers. - - * ace/OS.h (ACE_DEFAULT_BACKING_STORE): Made a different - ACE_DEFAULT_BACKING_STORE for NT and for UNIX to handle the - differences in directory separator characters... - -Wed May 15 18:45:48 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * examples/ASX/CCM_App/CCM_App.cpp: Fixed up the test application - so that it should support dynamic linking on Win32. Thanks to - Tom Leith for reporting this. - - * ace: Added the ACE_Export macro to class ACE and the various - "helper" classes related to ACE_Malloc in order to have this - work properly when use with ACE_Malloc outside of the ACE DLL. - - * ace/Svc_Conf.l: Added support for '\' and ':' in the regular - expression for an ACE pathname in order to support Win32 - filenames (e.g., "C:\foobar\"). Thanks to Tom Leith - for reporting this. - - * ace/Malloc_T.cpp (ACE_Allocator_Adapter): Moved the constructor - from the *.i file to the *.cpp file and added a new constructor - that takes both a pool_name *and* a lock_name. This is - necessary because the ACE Malloc now has this API, as well. - - * examples/Threads/test_barrier.cpp (main): Fixed a bug that was - caused by the main() thread exiting before all the other worker - threads had finished "waiting" on their Barrier. The fix is to - use ACE_Thread_Manager to control the thread exits... - -Mon May 13 00:03:09 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * examples/Connection/non_blocking/CPP-acceptor.cpp: Modified the - implementation of the Svc_Handler::open() method so that it will - truly behave as an iterative server (as advertised...). - Currently, it behaves as a half-iterative server (i.e., the - Oneshot_Acceptor is iterative, but the Svc_Handler is - "concurrently"), which is causing problems because we're wiping - out the values of Svc_Handler each time through the main event - loop. Thanks to Gerolf Wendland for noticing this problem. - - * ace/Log_Msg: Added an alternative logging mechanism that makes - it possible to integrate variable argument lists from other - logging mechanisms into the ACE mechanism. Thanks to Chris - Lahey for proposing this. - - * ace/Synch.h: Moved ACE_Process_Mutex so that it appears *after* - ACE_Mutex (since it depends on ACE_Mutex). Thanks to Dieter - Quehl for finding this. - - * Released version 4.0.18 for testing. - - * ace/Name_Space.cpp: Added the ACE_BUILD_DLL macro at the - beginning of this file so that it will build as a DLL on NT - correctly. - - * ace/Name_Space.cpp: Added a default constructor for - ACE_Name_Binding so that it will compile when used as a template - argument for ACE_Unbounded_Set. - -Sun May 12 14:23:44 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Map_Manager: Totally reworked the Map Manager so that it can - be more flexible with respect to where the allocator comes from. - This is necessary for certain parts of ACE (e.g., - Local_Name_Space) that must be very careful about which - allocator is used to manage memory. - - * ace/Synch: Moved ACE_Process_Mutex and ACE_RW_Process_Mutex - *outside* of the ACE_HAS_THREADS #ifdef since these are now - always defined on all platforms (because the Process_Mutex stuff - uses SV Semaphores, which are portable even if we don't have - threads!). - - * ace/Naming_Context.cpp (parse_args): Removed an unnecessary call - to strdup(). This was detected by Purify! - -Sun May 12 14:26:20 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/Local_Name_Space.cpp (shared_bind): Fixed a small bug. In - computing type_len in shared_bind(), we needed to add 1 to - account for the NUL character. - - * ace/Local_Name_Space.cpp: (list_types): Fixed some potential - memory leaks. In list_types() as well as list_type_entries() - calling pattern.char_rep() was allocating memory which was never - getting deleted. Similarly, in list_names() and list_values, - call to char_rep was also allocating memory that was not getting - deleted. - -Sat May 11 16:19:51 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Log_Msg.cpp (local_host): added a static member to - ACE_Log_Msg that maintains the local host name. Now, instead of - always displaying "", we can insert the actual local - name into the object and then it will be automatically printed - when VERBOSE mode is enabled. Thanks to Chris Lahey for - suggesting this. - - * ace/Local_Name_Space.cpp: Used the new ACE_Name_Binding class to - simplify the implementation of all the list_* methods in - ACE_Local_Name_Space. - - * ace/Name_Space.cpp: Made a number of changes to the - ACE_Name_Binding class in order to make it work more efficiently - and concisely (e.g., reduce the amount of copying and eliminate - the need for converting the type field back and forth to/from - ACE_WStrings). - - * examples/Service_Configurator/IPC-tests/server/Handle_L_Dgram.cpp: - Fixed a typo where #if !defined (ACE_LACKS_UNIX_DOMAIN_SOCKETS) - was *before* the #include of the header file that defines this - macro! Thanks to Nigel for pointing this out, as well. - - * ace: Added a number of fixes to make ACE compile on SCO UNIX - 3.2.4 using gcc 2.7.2. Thanks to Nigel Lowe for - helping with this. - - * netsvcs/lib/Name_Handler.cpp: operation_ needs to be declared as - just LIST_OP and not ACE_Name_Handler::LIST_OP. For some strange - reason NT complains otherwise. Thanks to Prashant for finding - this. - -Fri May 10 01:09:17 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace: Added new versions of ace.mak and ace.mdp to fix a couple - of minor typos. - - * ace/Malloc_T.cpp (ACE_Malloc): Added a new constructor that - takes both the pool_name and the lock_name explicitly. This is - more flexible. Thanks to Ramesh Nagabushnam - for suggesting this. - - * ace/Malloc_T: Modified the constructor of ACE_Malloc so that by - default the name of the memory pool (which is also used as the - name of the lock...) is ACE_DEFAULT_MUTEX. - - * Released version 4.0.17 for testing. - - * ace/Connector.cpp (create_AST): Must reset errno = EWOULDBLOCK - to avoid making caller's think that something else has gone - awry... Thanks to Steve Warwick for chasing - this down! - - * ace/ACE.cpp (handle_timed_complete): If you issue a non-blocking - connect on a socket, you will have back a failure with errno = - EINPROGRESS. Then, if for some reason, the connection could not - be established, the select (which you have to issue to know - about the completion of connection) will return you the fd set - both in the read mask and in the write mask (infact select - returns 2 in this case). The behaviour above affects the method - ACE::handle_time_complete, so I changed the last part of the - above method, this way: - - if (n <= 0) - { - ... - ... - } - else if (rd_handles.is_set(h)) - { - char dummy; - // The following recv() won't block provided that the - // ACE_NONBLOCK flag has not been turned off . - - if (ACE::recv (h, &dummy, 1, MSG_PEEK) <= 0) - return ACE_INVALID_HANDLE; - } - - // 1. The HANDLE is ready for writing or 2. recv() returned that - // there are data to be read thus the connection was successfully - // established. - return h; - - That is, I reversed the sense of the tests so that the - rd_handles() is checked first for failure along with the recv(). - Thanks to Antonio Tortorici for - suggesting this. - - * examples/Threads/test_thread_manager.cpp (main): Changed argv[1] - to argv[2]. Thanks to Andres Kruse for finding - this problem. - - * examples/Connection/non-blocking: Fixed some nasty bugs that - caused the non-blocking connector and acceptor test programs to - crash and burn. Thanks to Steve Warwick and Gerolf Wendland for - finding this problem. - - * ace/SV_Semaphore_Simple.cpp (open): Check for - ACE_INVALID_SEM_KEY and return -1 in this case. - - * ace/Synch.h: Removed the default value of 0 for the name of the - ACE_Process_Mutex and the ACE_RW_Process_Mutex and replaced it - with a new macro called ACE_DEFAULT_MUTEX. Using 0 didn't make - any sense on either NT or UNIX because process-wide Mutexes - should be named! - - * ace/SV_Semaphore_Simple.cpp (name_2_key): Added a check for name - == 0 and bail out of that's the case rather than crash! - - * ace/Reactor.cpp (wait_for_multiple_events): In the Reactor's - wait_for_multiple_events method, the do {} while () around the - select/poll system call is trying to wait until some "good" - event occurs, with handle_error() taking care of unexpected - problems. In the case of a bad file descriptor, however, - handle_error() returns 0. This was exiting the loop because the - loop exit condition was: - - do { /* ... */ } while (nfound == -1 && this->handle_error () > 0); - - which eventually causes ACE_Service_Config::run_event_loop() to - exit. Since the offending file descriptor is handled by - handle_error(), the loop should continue. Therefore, I've - changed the while to read: - - while (nfound == -1 && this->handle_error () >= 0); - - Thanks to Eric C. Newton for providing this fix. - - * ace/INET_Addr.cpp (string_to_addr): Changed the order of the - parameters so that the form is now "ip-address:port". This - should (finally) be consistent for both string_to_addr() and - addr_to_string()... - - * ace/Log_Msg: Changed the char * parameter of the log() method to - const char *. Thanks to Chris for suggesting this! - - * ace/Synch_T.cpp: Moved the #if defined (ACE_HAS_THREADS) down to - the right part of the file... Thanks to Alex Karev - for finding this. - - * ace/Malloc.h: Added a very important #else... Thanks to Alex - Karev for finding this. - - * ace/Signal.i (ACE_Sig_Guard): Changed the sense of the #ifdef - tests in the ACE_Sig_Guard constructor and destructor from #if - !defined (ACE_MT_SAFE) to #if 0 // !defined (ACE_MT_SAFE) in - order to get the right semantics for signals (which should be - blocked "process wide"). - - * ace/Synch_T.h: put the frigging copy constructor in the public - section of ACE_Atomic_Op because it was causing trouble for - NT... - -Mon May 6 00:11:37 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Released version 4.0.16 for testing. - - * ace/Log_Msg.cpp: Was defining ACE_Recursive_Thread_Mutex in the - wrong place (i.e., outside of the #if defined (ACE_MT_SAFE). - This was screwing up HP/UX. Thanks to Neil Cohen for pointing - this out! - - * Incorported new versions of ace.mdp and ace.mak for Win32. - -Sun May 5 16:18:43 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * netsvcs/lib/Server_Logging_Handler.cpp (handle_input): Fixed a - bug whereby handle_input() was returning the number of bytes - read by handle_logging_record() rather than 0 or -1. This was - causing problems for the logger since it was hanging in read()! - - * ace/Synch_T.cpp: Fixed some minor problems with the use of const - in ACE_Atomic_Op that was causing warnings. - -Sat May 4 16:31:46 1996 Douglas C. Schmidt (schmidt@mambo.cs.wustl.edu) - - * ace/SOCK_Dgram_Bcast: Reimplemented most of the ACE socket - broadcast mechanism to (1) clean up the code and have it use - other parts of ACE and (2) make it work for Windows NT. Thanks - to Steve Weismuller for the basic - ideas here. - - * ace/INET_Addr: Added a new method to set the port number without - changing the host address. This is useful in the broadcast - class. - - * ace/Log_Record.cpp (print): Changed the hack of replacing the - newline with a call to flush() instead. This seems like a - better fix. Thanks to Alex for suggesting it. - - * ace/Log_Msg.cpp (log): Moved the order of the print operations - so that the ostream one goes last. This avoids a nasty problem - due to the fact that it replaces the newline (if any). Thanks - to Alex for pointing this out too! - - * ace/Log_Msg.cpp (log): Don't auto-increment bp at the end of - the log() method, instead just terminate it: - - *bp = '\0'; // Terminate bp. - - This makes the length computation correct... Thanks to the - ever-vigilent Alexandre Karev for - reporting this. - - * examples/Shared_Malloc/test_malloc.cpp: Fixed a bug where a void - * that was really an int was being cast incorrectly. Thanks to - Raj for pointing this out. - -Sat May 4 12:51:25 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Reactor.cpp (find): Modified the ACE_Handler_Repository so - that it doesn't crash when it isn't initialized properly. - Thanks to Darrin for pointing this out. - - * ace/Synch_T.cpp (wait): Changed the call wait(ACE_Time_Value *) - to wait(const ACE_Time_Value *) since wait() will not change the - time value object. - - * ace/Thread_Manager.cpp (wait): Changed the call - wait(ACE_Time_Value *) to wait(const ACE_Time_Value *) since - wait() will not change the time value object. Thanks to Chris - Lahey for suggesting this. - - * ace/Synch.h: Added a (const char * = 0) argument to - ACE_Null_Mutex so that it would work correctly with - ACE_Thread_Mutex and ACE_Process_Mutex... - -Fri May 3 17:26:07 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * netsvcs/lib/Name_Handler.cpp (lists_entries): Used '_' with - name/value/type in ACE_Name_Binding to be consistent with the - notation. - -Fri May 3 02:24:19 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Synch: Updated ACE_Process_Mutex to use SV_Semaphore_Complex - as the UNIX implementation. This seems like the only portable - and robust way to get the same semantics on UNIX and on NT! - - * ace/Malloc_T: It turned out there was a subtle bug with - ACE_Malloc on NT when used with the ACE_Process_Mutex - concurrency policy. On NT, we were storing the *HANDLE* of a - mutex in shared memory. Naturally, this didn't make any sense - since each HANDLE is relative to only one process!!! (duh ;-)). - This worked fine on UNIX because mutex_t's created with - USYNC_PROC mode can be stored in shared memory and accessed - directly... - - We fixed this by changing ACE_Malloc so that the - LOCK is allocated in non-shared memory. We then - fixed ACE_Process_Mutex so that on UNIX it is - implemented with SV_Semaphore_Complex. This is - (a) portable and (b) it gives the right semantics. - - As a result, we were able to totally eliminate the storage of - the lock in shared memory. Therefore, it doesn't matter of the - host crashes anymore! In addition, we were able to totally - remove the ugly "init_finished" lock that was previously stored - in shared memory by ACE_MMAP_Memory_Pool. This is *much* - cleaner!! - - Thanks to Karlheinz et al for pointing this problem out in the - first place! - - * ace: Removed a stray file called Svc_Conf_tokens.h. This was - causing problems on Win32 due to name clashes... Thanks to Adam - Miller for pointing this out. - - * ace/SString.cpp (strstr): there were some for (size_t j; ...) {} - if (j == x) constructs in the code that have as of recently - become non-standard. Thanks to Darrin - for reporting this. - -Tue Apr 30 00:18:46 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Thread.i (self): Commented out the ACE_Trace call in the - ACE_Thread::self() methods to avoid infinite recursion problems - on Win32. - - * ace/Token.cpp (ACE_Token): Commented out the ACE_Trace call in - the constructor of ACE_Token to avoid infinite recursion - problems on Win32. - - * ace/Log_Msg.cpp (instance): Moved the definition of the static - variable keylock_ into the static instance() method in order to - avoid "order of initialization" problems on Win32. Thanks - to Tim for figuring this out! - -Sun Apr 28 17:07:58 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * netsvcs: Rearranged and renamed the subdirectories so that they - are now called ./netsvcs/{lib,clients,servers}. In addition, - moved the Logger, Naming, and Tokens examples from ./examples - into the ./netsvcs/clients directory in order to make the - relationships more clear. - -Sat Apr 27 14:23:43 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/Name_Space.cpp (operator ==): Created a new file - Name_Space.cpp and moved the definitions for - ACE_Name_Binding::operator== and ~ACE_Name_Space in it. Also - modified code to use '_' at the end of name/value/type in - ACE_Name_Binding. - -Sat Apr 27 16:00:03 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/INET_Addr.i (get_host_addr): There was an error where - sprintf(s,"%d:%s" ...) should have been %s:%d. Thanks to - Raj for pointing this out. - -Mon Apr 22 01:24:45 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Dump_T.h: #included "ace/Dump.h" so that this file will - compile on HP/UX. Thanks to Neil Cohen for reporting this - problem. - - * Released version 4.0.15 for testing. - - * ace/Synch_T: Added the appropriate "const" qualifiers to certain - operators in ACE_Atomic_Op. - -Sun Apr 21 12:54:18 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace: Fixed a problem that Dieter was having with the Name Server - when toggling between Naming_Contexts. Basically, what I've - done is - - 1. Moved the unmap() call into the ACE_Mem_Map::close() method - (this ensures that the region is correctly unmapped when the - Mem_Map is deleted). - - 2. I've removed the call to this->allocator_->remove () within - ~ACE_Local_Name_Space. This ensures that we don't remove the - backing store file. - - * ace/Mem_Map.cpp: Modified the ACE_Mem_Map::remove method to call - ACE_Mem_Map::close() in order to share code. - - * ace/Mem_Map.cpp: Modified the ACE_Mem_Map::close() method so - that it unmaps the mapped region before closing down the backing - store. This prevents "dangling mapping." - - * ace/Local_Name_Space.cpp (ACE_Local_Name_Space): Initialized all - the pointers to NULL. - - * ace/Synch_T.cpp (ACE_Atomic_Op): Enhanced the Atomic_Op - implementation by adding an assignment operator and disallowing - the copy constructor (forcing objects of ACE_Atomic_Op to be - passed by reference). - - * examples/Naming/Client/Client_Test: Reorganized the code for - Client_Test so that it will run correctly as a Win32 netsvc - (e.g., added the ACE_Svc_Export macro). - -Sun Apr 21 20:23:40 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/Naming_Context.cpp (close): Added a new method to - Naming_Context called close() that deletes the instance of - name_space_. - - * ace/Local_Name_Space.cpp (ACE_Local_Name_Space): Added stuff to - the destructor of Local_Name_Space so that it calls remove on - the allocator_ to ensure we unmap the file. Also, we delete the - allocator_. - - * examples/Naming/Client/Client_Test.cpp (set_proc_local): Changed - set_proc_local (), set_node_local() and set_host() so that - before we change name space, we do a close() on - Naming_Context. The close ensures that we unmap the file as well - as delete the instance of the name space. - -Sat Apr 20 12:39:20 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace: Removed the Name_Options.* files and merged the - ACE_Name_Options class into Naming_Context.*. This simplifies - some order of include problems... - - * ace/Naming_Context.cpp (init): Switched the code so that rather - than always opening with ACE_Naming_Context::PROC_LOCAL, we use - ACE_Name_Options::context(), which can be overridden by using - the new -c command-line option (e.g., -c NODE_LOCAL). Thanks to - Dieter for suggesting this. - - * ace/OS.i: Modified the Win32 implementation of all the - ACE_OS::flock_*lock() methods so that they'd have the same - behavior as the UNIX ones with respect to a length of 0 meaning - "lock the entire length of the file." This works, of course, by - having each method check if len == 0, and if so, calling - GetFileSize() to set the size of the file. - - * ace/Synch.h: Changed the default len value for all the - File_Lock::*acquire* methods to 1 rather than 0 to work around a - problem with Win32. Thanks to Detlef for reporting this. - - * ace/ACE.cpp (ldfind): Added a strdup() of the LD_SEARCH_PATH - returned by getenv() so that we don't overwrite the environment - variable by using strtok(). Thanks very much to Prashant for - figuring this out! - -Thu Apr 18 22:13:43 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * examples/Naming/Client/Client_Test.cpp (list_value_entries): - Added check in list_name_entries and list_value_entries to see - if type actually exists before trying to print it out. - -Wed Apr 17 16:40:42 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Released version 4.0.14 for testing. - - * Added Tim Harrison's new instructions for building and using ACE - as a DLL and SLL on Win32. - - * ace/Svc_Conf.h: Due to the new changes to the yacc code, I had - to move the definition of YYSTYPE into the Svc_Conf.h file - rather than have it in the Svc_Conf.y file. This solves a - variety of multiple-inclusion problems... - - * ace: Modified all the yacc token symbols so that they will be - prefixed with ACE_. This avoids namespace pollution problems. - - * Added the ACE_STATIC_SVC* macro support to a number of files so - that the static versions of all the ACE services will be - registered with the ACE Service Repository correctly. Thanks to - Jesper for pointing this out! - - * ace/OS.h: the first occurence of - - typedef thread_t tid_t; - - in the OS.h file should read - - typedef pthread_t tid_t; - - Thanks to Jan Rychter for reporting this. - - * ace/Read_Buffer.cpp: Fixed rec_read() so that it will fail - correctly when new fails! - -Wed Apr 17 19:05:42 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * netsvcs/lib/Name_Handler.cpp (type_request): Here is a brief - description of the changes made to ACE_Name_Handler to simplify - the dispatch method and make it more elegant: - - 1) I created a table called op_table_. It contains pointers to - member functions of ACE_Name_Handler. This table can be - indexed using the msg_type. However, I went one step further - to have all the list methods be grouped under two - methods. That is, requests for list_names, list_values, and - list_types are handled by one method called lists() and - similarly, requests for list_name_entries, - list_value_entries, and list_type_entries are handled by - another method called lists_entries(). A MASK is used to have - the op_table_ index to the same method for these requests. - - 2) I also created another table called list_table_. This is - primarily used by lists() to keep track of a couple of things: - + pointers to member functions of Name_Handler that - handle the actual request. - + pointers to member functions of Name_Handler that act - as factories to create the appropriate request to - send back. - + description of the message type. - - A different MASK is used to index into the list_table_ to - invoke the appropriate method or get the appropriate description. - - 3) Within the method lists_entries(), I once again make use of - the pointers to member functions technique. This time, - however, I use pointers to member functions of Naming_Context - which I assign in the switch statement. - -Tue Apr 16 13:03:49 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Released version 4.0.13 for testing. - - * ace/INET_Addr.i: moved the get_port_number routine up to the top - of the file so it gets defined before it is used. Linux did not - like it where it was... Thanks to Neil Cohen for reporting - this. - - * ace: Split the Dump.* files into Dump_T.* files. This is - necessary to support the template policies of various C++ - compilers. - - * ace/Malloc_T.cpp (dump): Fixed an erroneous use of -> since - guard_ is a non-pointer... Thanks to Neil Cohen for reporting - this. - - * ace/Log_Record.cpp (print): Finally figured out how to do - extensible ostream logging so that it will seamlessly work with - ACE_Log_Msg. This required one change to ACE_Log_Record, - however. In Log_Record.cpp: - - In ACE_Log_Record::print(char *, int, ostream, size_t len), added - - char *t = this->msg_data_[len - 1]; - - if (t == '\n') - *t = '\0'; - - s << this->msg_data_ << endl; - - This is required because the virtual function overflow() in - streambuf does not get called until endl is called to flush the - buffer. Note that (at least on AIX), '\n' is treated separately - from endl and will not cause the overflow() function to be - called. Thanks to Chris Lahey for this idea. - - * ace/OS: Added a new wrapper for strrchr(). - - * ace/Token_Collection.cpp (renew): Added a cast of - (const char *) to token_name so that the conversion operator - will get called correctly. Thanks to Gonzalo Diethelm - for reporting this. - -Tue Apr 16 13:29:32 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/Name_Request_Reply.cpp (decode): Fixed a small bug in encode() - and decode() of ACE_Name_Request. When doing ntohs and htons, we - only ought to do it for the name and value part of data. type - needed to be left alone since it is not a short. - -Mon Apr 15 02:31:00 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * include/makeinclude/platform_hpux_orbix.GNU: Added - David.L.Sames.1@gsfc.nasa.gov (David Sames) config*.h file and - platform_*.GNU file for HP/UX 9.x using Orbix. - - * ace/OS.i: Fixed all uses of pthread_cleanup_{pop,push} so that - they will work correctly if (1) the OS implements the as macros - and (2) if these macros must obey strict nesting rules... - Thanks to Reginald S. Perry for pointing out - how to do this effectively. - - * ace/Thread_Manager.h: Fixed a typo where the typedef - - typedef (ACE_Thread_Manager::*THR_FUNC)(int, int); - - was lacking a return value. Thanks to Reginald S. Perry - for reporting this. - - * netsvcs/bin/main.cpp (main): Fixed the main program so that it - passes the options correctly for the statically linked service - invocations. Thanks to Jesper for reporting this. - - * examples/Naming/Client/Client_Test: Updated the client test - program so that it will work on Window NT, where it's not valid - to select() on non-socket HANDLEs (ugh). Thanks to Jesper for - pointing this out... - - * Released version 4.0.11 for testing. - -Mon Apr 15 00:20:02 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/Local_Name_Space.cpp (strstr): Fixed ACE_NS_String::strstr - to function properly. It was assuming that length of the pattern - as well as the string was in units of ACE_USHORT16 when in - reality the length is number of bytes. - - * ace/Local_Name_Space.cpp (value_): Modified ACE_NS_Internal so - that instead of taking an ACE_NS_String for type, it now take a - char*. It therefore keeps type around as a char*. This should - help solve some problems we were encountering with byte ordering - when sending data between NT machines and Sun. - - * netsvcs/lib/Name_Handler.cpp: Cleaned up lists_entries by making - use of pointer to member functions. A single call to the - appropriate list method takes care of everything. - -Sun Apr 14 16:21:32 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/INET_Addr.i (addr_to_string): Swapped the order that the - hostname and port number are printed to make this consistent - with the way that ACE_INET_Addr::string_to_addr works. Thanks - to Ashish Singhai for pointing - this out. - - * ace/TLI_Acceptor: Changed the methods to take an ACE_Addr rather - than an ACE_INET_Addr. This allows other address families (such - as DECnet) to be used with the TLI wrappers. Thanks to Ajit - Sagar for suggesting this. - - * ace/Local_Name_Space.cpp (list_types): Removed the use of - regular expression matching for the name and value types of the - name server and replaced these with substring matching instead. - This is necessary since we're working with wide characters here, - and it doesn't make any sense to perform regular expressions on - these puppies... - - * ace/Local_Name_Space.cpp: Added a new strstr() method on all the - ACE_NS_String class so that we can compare substrings for wide - character types. - - * ace/SString: Added a new strstr() method on all the - ACE_[WSC]String classes so that we can compare substrings, - even for wide character types! - - * apps/gperf: Incorporated the GNU gperf program from the FSF. - We're going to make some improvements to this for a subsequent - paper. - -Sun Apr 14 15:30:05 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/Name_Request_Reply.h: Changed the enum values for the - Constants such as BIND, REBIND, etc. The new values allow us to - do bitwise operations using MASK to be able to dispatch the same - method for all the list operations. For use case of this, please - see Name_Handler::dispatch(). - - * netsvcs/lib/Name_Handler.cpp (dispatch): Completely changed - dispatch() so that now it uses a table of pointer to member - functions to call the appropriate method when a request - arrives. In addition, requests for LIST_NAMES, LIST_VALUES, and - LIST_ENTRIES are now handled by one method called lists() in which - I factored out a lot of common code. Similarly, requests for - LIST_NAME_ENTRIES, LIST_VALUE_ENTRIES, and LIST_TYPE_ENTRIES are - handled by lists_entries(). This has really cleaned up the code. - -Sat Apr 13 15:26:51 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/Name_Request_Reply.cpp: Made changes so that all - byte-ordering computations take place in encode and decode - methods of ACE_Name_Request_Reply and ACE_Name_Reply - only. Previously some of these computations were taking place in - Get/Set methods such as name_len() which was highly error prone. - (init): Added new methods called init() to both ACE_Name_Request - and ACE_Name_Reply that initialize length to size of transfer_. This - is needed since the length gets set only once in the constructor - and after that each call to encode() switches the byte ordering - causing problems. - -Sat Apr 13 11:44:16 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Released version 4.0.10 for testing. - - * ace: Removed the ACE_HAS_THREAD_T macro from various places. - This was unnecessary given the new scheme for dealing with - threading. - - * ace/config-linux-pthread.h: Fixed a typo that was preventing - compilation from working. Thanks to Jan Rychter - for finding this. - -Fri Apr 12 13:17:47 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * apps/Gateway/Gateway: The gateway application appears to - be working again! - - * ace/OS.cpp (thr_create): Based on conversations with Chris - Lahey, modified the pthreads ACE_OS::thr_create implementation - so that it doesn't try to assign the hthread_t thr_handle since - this is meaningless in pthreads... - - * apps/Gateway/Gateway/Gateway.cpp: Fixed a typo that was causing - the system to go into an infinite loop when the config file was - empty! - - * apps/Gateway/Gateway/Gateway.cpp: I was forgetting to set the - line_number to 0 before calling read_entry()... - - * ace/Parse_Node.cpp: Fixed a dumb error that arose because I - forgot that you can't call dlerror() twice and get the same - result (it returns NULL the second time). As usual, RTFM. - - * ace: Removed ACE_HAS_TLI from all the SunOS 4.x config*.h files - and platform_*.GNU files. There are just too many bugs with TLI - on SunOS 4.x to support it by default... - - * examples: Made some minor fixes to make the examples all compile - with GCC. - - * apps/Gateway/Gateway/Gateway: Reimplemented the Gateway - application as to be an ACE network service. This should make - life much easier on platforms with broken C++ templates... - - * apps/Gateway/Gateway: Revised the Config_Parser.* files so that - templates would be split from the non-templates. This avoids - bugs with some C++ compilers... - - * ChangeLog: added the ACE_TEMPLATES_REQUIRE_SPECIALIZATION flag - to the config-linux-pthreads.h file. Thanks to - Jean-Francois.Ripouteau@netsurf.org for reporting this, and also - for archiving the ACE mailing list. - -Thu Apr 11 01:37:25 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Released version 4.0.9 for testing. - - * ace: regenerated all the manual pages and html pages. - - * Built ACE successfully on SGI IRIX 5.3 using GNU G++ 2.7.2. - - * ace/Thread_Manager: renamed the descriptor() accessor methods to - hthread_descriptor() and thread_descriptor() to avoid - ambiguities due to the fact that hthread_t and thread_t can now - be the same type. - - * ace/Thread_Manager: revised the hthread_t so that it is always - large enough to hold valid thread ids. - - * ace: Moved the config-osf1.h file to be named config-osf1-3.2.h - in anticipation of OSF/1 4.0... - - * ace: Changed all occurrences of wchar_t to ACE_USHORT16, which - is a more portable way of representing wchar_t's so that we can - pass them across the network... Unfortunately, wchar_t tends to - be different sizes on different machines, so we can't use the - binary form!!! - - * ace: Added many, many small changes to get ACE to compile on - OSF/1 3.2D using DEC C++ 5.3. Thanks to Tom Marrs - <0002104588@mcimail.com> for slogging through all of this stuff! - - * ace/Thread_Manager.h: Fixed a stupid oversight where I forgot to - add a -1 to the trailing argument of spawn*. Thanks to Neil - Cohen for spotting this. - - * ace: Added a new ACE config file for AIX 3.2.5 courtesy of Bob - Olson . In addition, I changed the name of the - config-aix.h file to be config-aix-4.1.x.h and called the new - file config-aix-3.2.5.h. - - * apps/Synch-Benchmarks/Benchmark.cpp: Added template - specializations for ACE_TSS and ACE_Atomic_Op. Thanks to Matt - Stevens for pointing out the need for this. - - * ace/CORBA_Handler: Added a number of fixes to get the ACE - CORBA_Handler to compile on Win32 with Orbix 2.0. Thanks to - Rich Ryan for these fixes. - - * ace/OS.cpp (thr_create): Fixed a small bug in the pthreads - thr_create() code by dereferencing p_thr before casting it - to hthread_t and assigning it to *thr_handle. - - * ace/OS.i: Backed out the previous changes of pthread_cleanup*. - It turns out that on SunOS 5.5 these macros force a certain - style of programming this is hard to integrate with the existing - implementations of other ACE wrapper methods. Fortunately, none - of this affects existing ACE code since we just use the default - solaris threads API in this case... - - * ace/OS.i: Modified the order of #ifdefs in various ACE_OS::thr_* - methods to take advantage of the pthreads features on Solaris - 2.5. - - * ace: Removed the last few typos that prevented ACE from building - on SunOS 4.x with G++... - - * ace/Thread_Manager: Changed spawn() and spawn_n() so that - they optionally take a group parameter and automatically add - this to an existing thread group. That way we don't need to - spawn the thread(s) and then reassign them after the fact. - The new API automatically assigns the thread(s) to the group - you specify. Thanks to Chris Lahey for this idea. - - * ace: Fully integrated POSIX pthreads into the ACE build for - Solaris 2.5. - - * netsvcs/lib/Server_Logging_Handler.cpp: Rearranged the Server - Logging files so that things will compile and link correctly - using stock GNU G++. - - * ace/Log_Msg.cpp (ACE_Log_Msg): Forgot to initialize the ostream - * to 0. This was causing problems for Win32... - - * ace: *Finally* got the static and dynamic ACE libraries to - compile on SunOS 4.x using stock G++! - - * ace/Synch_T.h: Added a new macro called ACE_SYNCH that will - be ACE_NULL_SYNCH if !ACE_HAS_THREADS and ACE_MT_SYNCH if - ACE_HAS_THREADS. - - * ace/Service_Record.cpp: Changed this to use ACE_SYNCH. This - will fix template problems with G++ on SunOS 4.x. - - * build/SunOS5.5/ace/OS.i (sema_wait): Changed all uses of - ::pthread_cleanup_{push,pop} to pthread_cleanup_{push,pop} since - these are implemented as macros on Solaris.... - -Thu Apr 11 19:43:33 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * examples/Naming/Dump_Restore/Dump_Restore.cpp (init): Modified - Dump_Restore in order to work correctly without having - Name_Options around as a Singleton. - - * examples/Naming/Client/Client_Test.cpp (set_host): Modified - Client_Test in order to work correctly without having - Name_Options around as a Singleton. It simply uses the accessor - provided by Naming_Context to get to Name_Options. - - * ace/Name_Options.cpp: Changed Name_Options so that it is no - longer a Singleton. As a result, now there is an instance of - Name_Options per Naming_Context. Note that for an application to - change Name_Options, it can use the accessor function provided - in Naming_Context. As a consequence of all these changes, we can - now have multiple Naming_Contexts per application. - -Wed Apr 10 20:19:50 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/OS.h: Incorporated a mapping for Solaris 2.5 pthreads so - that it fits in nicely with the earlier ACE pthreads support. - From now on, the pthreads API will be the default threading - scheme for ACE on Solaris 2.5... - - * ace: Added the file name to every *.cpp and *.i file in ACE. - This makes it easier to figure out what's what when looking at - the source code. Thanks to Chris Lahey for suggesting this. - - * ace/CORBA_Handler.cpp (ACE_CORBA_Handler): Added bodies for - the copy constructor and assignment operator of ACE_CORBA_Handler - (which are private) since some compilers generate link errors - for these! Thanks to Rich Ryan for - pointing this out. - - * ace/Synch_T.cpp (ts_get): at line 270 (within - ACE_TSS::ts_get (void) const) there was a keycreate() call - that did not have an instance pointer pass in with it. The - symptom has been that if the last active task has been finished - all active tasks being created afterwards won't get the close() - hook invoked. I've fixed this in order to solve a mysterious - bug with ACE_TSS. Thanks to the ever-vigilant Detlef for - reporting this bug and fix. - -Wed Apr 10 01:56:52 1996 Douglas C. Schmidt (schmidt@mambo.cs.wustl.edu) - - * ace: Added the ACE_TEMPLATES_REQUIRE_SPECIALIZATION to - config-sunos5.5-g++.h file. This should allow ACE to build - correctly. Thanks to Adam Miller for - pointing this out. - - * ace: Installed SunOS 5.5, so now we can finally test pthreads! - - * ace/OS: Modified the implementation of mutex_t for Win32 so that - it automatically selects the CRITICAL_SECTION or the HANDLE form - of Mutex depending on whether the type argument is USYNC_THREAD - or USYNC_PROCESS, respectively. This now means that all the - existing ACE code that used ACE_Condition will - continue to work correctly on Win32 and UNIX! - -Tue Apr 9 23:04:30 1996 Douglas C. Schmidt (schmidt@mambo.cs.wustl.edu) - - * ace/Synch: Somehow, the definitions for ACE_Thread_Semaphore and - ACE_Process_Semaphore were MIA. I've added the implementations. - Thanks to Bruce Worden for - noticing this... - -Tue Apr 9 02:16:02 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Service_Config.cpp: reordered the #includes in this file so - that it works correctly on Win32. Thanks to Rich Ryan - for help with this. - - * ace/Auto_Ptr.cpp (remove): added the implementations of the - auto_ptr::remove() and auto_array_ptr::remove() static methods. - Thanks to Chris Lahey for noticing their absence... - - * ace/Auto_Ptr: Added the #pragma implementation ("Auto_Ptr.cpp") - statement if defined ACE_TEMPLATES_REQUIRE_PRAGMA to work on - AIX. Thanks to Chris Lahey for this. - - * ace/Makefile: Moved Auto_Ptr from FILES to TEMPLATE_FILES to - work on AIX. Thanks to Chris Lahey for pointing this out. - - * Modified a bunch of the apps and example Makefiles so that - things will build better using G++. - - * ace/Name_Options.cpp (parse_args): Made the "database" name the - same as the process name by default... - - * ace/Reactor.h: Changed the type of current_ in - ACE_Handler_Repository_Iterator from size_t to ssize_t so that - this can handle negative numbers. Thanks to Mark Zusman - for reporting this. - -Mon Apr 8 23:33:15 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * netsvcs/lib/Name_Handler.cpp (recv_request): Fixed a small - bug. In recv_request() ntohl was being called again on length - which was causing problems since the length was already in host - byte order. The ACE Name Server should now be working on NT. - -Mon Apr 8 02:14:30 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace: Fixed a number of minor problems that caused duplicate - symbols when linking ACE with G++ (no-repo) on SunOS 5.x and - SunOS 4.x. Thanks to Andy Gokhale for help with this. - - * ace: Added Jan Rychter very nice contribution - of pthreads and DCE threads to ACE. This should make life - easier for Linux users and users of other pthreads packages. - - * ace/Service_Config.cpp (process_directives): Changed the code to - use an auto_ptr to make sure that we always release the - ace_obstack memory, regardless of how we exit. - - * ace/OS.i (strerror): Changed sys_errlist to _sys_errlist to work - around bugs with SunOS 4.x. This will undoubted break some - other twisted UNIX system. - - * ace/Local_Tokens.cpp (acquire): Added a return 0 at the very - end... Thanks to Chris Lahey for reporting this (yet - again... ;-)). - - * ace/Parse_Node: Made a bunch of small changes to deal with the - fact that there's no dlerror() equivalent on NT... - - * ace/Task.h: The static function instance() should return - ACE_Task_Exit* (or ), not - ACE_Task_Exit *. Thanks to Chris Lahey for spotting this. - - * ace/Thread_Manager.cpp: added an argument to the exit() method - that allows applications to exit without calling thr_exit. This - would allow the method to be called from within a pthread - cancellation cleanup routine, without calling thr_exit a 2nd - time. Thanks to Chris Lahey for suggesting this. - - * ace/Log_Record.cpp (operator <<): Changed the verbose option so - that it is an attribute, this will allow the ostream to print - verbose information if necessary. Thanks to Chris Lahey for - suggesting this change. - - * ace/config-win32-msvc*.h: Added the - ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES flag since it appears - that this causes problem with some versions of MSVC++ 4.0... - - * Released version 4.0.6 for testing. - - * netsvcs/lib/Server_Logging_Handler.h: #included the - Svc_Handler.h file, that absence of which was causing problems - for HP/UX. Thanks to Richard Orr - for reporting this. - - * Made a few minor changes to the source to make sure that it - compiles correctly on SunOS 5.x with G++. - - * ace/Thread_Manager.h: Added the insert() method for the non-MT - version of Thread_Manager. Thanks to Alexandre Karev - for reporting this. - - * ace/Task: Renamed the static double-check lock_ to - ace_task_lock_ to avoid a name conflict with the existing - this->lock_ instance in each class. Thanks to Prashant for - tracking this down... - -Sun Apr 7 14:40:05 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * examples/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.cpp: - Rolled back a change that replaced #defines with typedefs. It - turned out the #defines were there for a reason... Thanks Neil - B. Cohen for pointing this out... - - * ace/OS.h: Added a new check to deal with the fact that many - versions of Pthreads don't support tid_t (which seems to be an - AIXism...). - -Thu Apr 4 01:19:19 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Officially released version 4.0.5... - - * ace/OS.h (ACE_TSS_TYPE): Somehow the ACE_TSS_TYPE macros ended - up *before* the inclusion of Time_Value.h, which meant that - these macros weren't being expanded properly. This may help - explain odd behavior with ACE TSS. - - * ace/Thread_Manager.cpp (insert): Added a new method that allows - us to insert a thread into an ACE_Thread_Control after it's been - constructed. - - * ace/Message_Block: Fixed a typo in the init() method. Thanks to - Ross Dargahi for noticing this. - - * ChangeLog: Finally got all of ACE built on SunOS 5.x and SunOS - 4.x using only the stock GNU GCC compiler (i.e., no template - repository...). This should make it easier to port to other - versions of G++. - - * ace/Task: Modified the ACE_Task and ACE_Task_Exit implemenation - so that it only uses 1 TSS key per ACE_Task template - instantation, rather than 1 TSS key per ACE_Task instance. This - works around horrible limitations with Win32... - - * ace/Thread_Manager: Added new methods to set and get the - Thread_Manager used in a Thread_Control. - - * ace/Pipe.cpp (open): Fixed a bug in where ACE_Pipe::open did not - set this->handles_, thus a garbage handle gets registered. - Inserted the following two lines at line 53 of Pipe.cpp: - - this->handles_[0] = reader.get_handle (); - this->handles_[1] = writer.get_handle (); - - Thanks to Kirk Sinnard for this fix. - - * ace/OS.h: Added a couple of fixes for the SCO port. Thanks - again to Matt Newhook - - * ace/OS.cpp: Integrated Detlef's clever scheme for freeing up - thread-specific storage correctly on Win32... - - * ace/Task.cpp (ACE_Task): Made sure to initialize the - next_-pointer of ACE_TASK and Message_Queue point to NULL. - This fixes a problem on NT. Thanks to Karlheinz for - noticing this... - - * include/makeinclude/rules.lib.GNU (VLIB): Fixed up the ACE - makefiles so that we can now build on SunOS 4.x correctly - without using the template repositories... - - * ace/Service_Config.cpp: Added a bunch of template - specializations so that GNU G++ can be used to compile ACE on - SunOS 4.x *without* requiring the template repository hacks... - Thanks to Mark Zusman for helping with this. - -Wed Apr 3 00:55:12 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * examples/Reactor/Misc/test_reactors.cpp: Added a new torture - test of the ACE_Reactor and ACE_Task. Thanks to Detlef for - contributing this... - - * netsvcs/bin/Makefile: Removed a stray -lACE_svcs from the - Makefile. Thanks to Matt Stevens for reporting this. - - * ace/Synch.cpp: Fixed two mistakes related to keeping INLINE on - the get_thread_id() and get_nesting_level() when I moved them - into the *.cpp file... Thanks to Matt Stevens for finding this. - - * ace/Reactor.cpp (owner): modified owner() so that it returns - the original owner when setting a new owner. This makes it - possible to write code like this: - - thread_t t; - - reactor->owner (ACE_Thread::self (), &t); - reactor->handle_events (); - reactor->owner (t); - - * ace/SOCK_Connector.cpp (connect): Added an additional check for - errno == EWOULDBLOCK for non-blocking connects due to screwy - semantics of Win32 non-blocking sockets... - - * netsvcs/lib/Client_Logging_Handler: Fixed a very obscure bug - that arose due to the way that UNIX select() interacts with - SVR4 MSG_BAND data. It turns out that you must use the - ACE_Event_Handler::EXCEPT_MASK to get this to work properly - (gag). This stuff is much easier with SVR4 poll(). - -Tue Apr 2 13:57:05 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/OS.i: Fixed an error compiling the new Log_Msg.cpp because - when it inlined OS.i, there were references to - ACE_OS::thread_mutex_*() before the functions were declared - inline. The references were assumed to be external, and then - when the linkage was actually declared as inline, the compiler - choked. To fix this, in OS.i, all the thread_mutex_* calls - where moved above the first reference, which was in - ACE_OS::cond_broadcast(). Also moved the mutex*() calls since - they are referenced by the thread_mutex calls. So the order is - mutex*(), then thread_mutex*(), and then cond*(). Thanks to - Chris Lahey for reporting this. - - * netsvcs/lib/Client_Logging_Handler.cpp: Added missing return - values in some of the methods. Thanks to Tim Harrison for - spotting this... - - * ace/Map_Manager.cpp (shared_unbind): It was possible that INT_ID - could be assigned a value from a previously unbound map entry. - The shared_unbind matches the ext_id, but does not see if the - entry had previously been unbound. This causes a problem if the - INT_ID type is a pointer type, and the user of the map deletes - objects as a result of the unbind returning a 0. The correct - solution is to include a test for is_free in the shared_unbind - before checking the equality of the ext_id. Thanks to Phil - Mesnier for reporting this. - - * ace/Reactor.cpp (next): Fixed a bug that prevented the - iterator's next() method from detecting the end of the - iteration. Thanks to Mark Zusman - for reporting this. - - * ace/Reactor.cpp (advance): Fixed a bug that prevented the - iterator from advancing. Thanks to Mark Zusman - for reporting this. - - * ace/Log_Msg.cpp (open): Added a check for logger_key being NULL, - in which case we log to STDERR rather than segfault... - - * netsvcs/lib/Server_Logging_Handler.h: Fixed a typo in - the declaration of - - ACE_SVC_FACTORY_DECLARE (ACE_Server_Logging_Acceptor) - - Thanks to Neil Cohen for finding this. - -Mon Apr 1 00:17:21 1996 Douglas C. Schmidt (schmidt@mambo.cs.wustl.edu) - - * ace/Time_Value.i: Fixed two stupid bugs in the Time_Value - relational operators. Thanks to Mathew Newhook - for pointing this out. - - * ace/OS.h: Added an extern "C" block around the netdb, net/if.h, - netinet/in.h, arpa/inet.h to work around problems with SCO. - Thanks to Mathew Newhook for this. - - * ace/Reactor: Merged the ACE_Pipe into the Reactor - implementation. This cleans up some nasty OS-specific code in a - clean way. - - * ace/CORBA_Handler.cpp (ACE_MT_CORBA_Handler): Fixed some typos - that arose during the transition to the ACE_Pipe. - - * ace/Pipe: Added a new open() method that doesn't return the - handles, it just stashes them away for safe keeping. This is - useful for places like the Reactor. - - * ace/Local_Name_Space.h: Added ACE_Export to the front of - ACE_NS_String. Thanks to Detlef for suggesting this. - - * From now on, I'll be numbering each new release of ACE with a - different minor number. However, the latest version of ACE will - also always be available at - - http://www.cs.wustl.edu/~schmidt/ACE.tar.gz - - This is useful if you just want to get the latest one without - having to bother with keeping track of minor numbers. For - instance, that way you can still keep that reference in my - bookmark list and you don't have to remodify it with every - release. Thanks to the ever-vigilant Chris Lahey for suggesting - this. - - * ace: added new a ACE project file (ace.mdp) and Makefile - (ace.mak) to create ACE as a DLL on Win32. This should greatly - simplify the Win32 build process... - - * INSTALL: Added new INSTALL file explaining how to build for - Win32. - - * ace/Thread_Manager.cpp: Fixed a horrible bug with Win32. On - reasonable systems ACE_Thread::exit() should not return. - However, due to horrible semantics with Win32 thread-specific - storage this call can return (don't ask...). Therefore, we need - to reacquire the mutex so that we don't get burned when the - Guard automatically releases it when this method returns. Thanks - to Tim for helping me figure this out. - - * ace: Fixed some problems with errno in Remote_Tokens and - Local_Tokens. - - * ace/Reactor.cpp: Fixed an annoying preponderance of useless - ACE_MT_SAFE #ifdefs in the Reactor implementation. Thanks to - Gerolf Wendland for pointing this - out! - -Sun Mar 31 13:09:27 1996 Douglas C. Schmidt (schmidt@mambo.cs.wustl.edu) - - * ace/OS: Changed the implementation of cond_t and rwlock_t for - Win32 to use thread_mutex_t (i.e., CRITICAL_SECTIONS) rather - than mutex_t (i.e., Win32 Mutexes). This should improve - performance without sacrificing generality (of which there is - none at the moment since we don't have process-wide condition - variables or readers/writer locks on Win32 anyway.. - - * ace/Thread_Manager.cpp (remove_thr): Fixed bugs in the - ACE_Thread_Manager class. The wait() member grabbed the - Thread_Mutex lock_, then (if the current_count is not zero) - grabs the Condition lock zero_cond_. Doing so, however - implicitly released lock_, which meant that another thread could - get into wait(), and wait on zero_cond_. zero_cond_ was only - signaled from ACE_Thread_Manager::remove_thr() when the - current_count_ is zero, but it signaled with - ACE_Condition_Thread_Mutex::signal(), which only releases one - thread that is waiting on the Mutex. Thus, any other threads - waiting on zero_cond_ would never be resumed. The fix was to - use ACE_Condition_Thread_Mutex::broadcast() rather than - ACE_Condition_Thread_Mutex::signal() in - ACE_Thread_Manager::remove_thr(). This fix is only reliable - since remove_thr() is called only when ACE_Thread_Manager::lock_ - is held by the calling thread. Thank to Bruce Worden - for reporting problem and - suggesting this fix. - - * ace/Token: Modified this class so that it only works with - ACE_Thread_Mutex (which is more precise than what was going on - before...). - - * ace/Synch.h: Modified ACE_RW_Process_Mutex so that on Win32 it - uses ACE_Process_Mutex until we've got a working - RW_Process_Mutex for Win32... - - * ace/Synch: Removed the ACE_Process_Barrier until we get a - working implementation... - - * ace/Synch: Changed the ACE_Barrier so that it only tries to work - within a single process. - - * ace: Changed all uses of ACE_Condition_Mutex to - ACE_Condition_Thread_Mutex to reflect what's really going on - here... - - * Changed all uses of ACE_Mutex to ACE_Thread_Mutex throughout - ACE. This is *much* more meaningful and makes it possible to do - some great optimizations on Win32! - - * ace: Changed all uses of ACE_Mutex_Guard to - ACE_Thread_Mutex_Guard. This is a more accurate name for how - this is used in ACE. - - * netsvcs/lib/Client_Logging_Server: Reengineered the ACE - Client_Logging service so that fits into the ACE network service - format. This version is particularly interesting since it - illustrates a "Connector-driven" service. In contrast, all the - other ACE network services are "Acceptor-driven" services. - - * netsvcs: Merged the implementation of all the ACE network - services into a single ./netsvcs/lib directory. Each of these - is now a fully dynamically linkable service. Created a single - main.cpp program in the ./netsvcs/bin directory. This main - illustrates how to dynamically link an or all of the ACE network - services to form complete applications. Thanks to Prashant for - help with this. - - * ace/OS.cpp: Changed readv() and writev() so that they will once - again compile for Win32. Note, however, that if you try to - readv() and writev() on the same descriptor you will lose since - they are not atomic! However, this stuff is stuff useful if - you're *not* reading/writing to a common descriptor... - - * ace/Synch_T.cpp: Removed the ACE_Null_Condition<> template. - This didn't really make any sense... - - * ace/OS: Changed the test of lock_.get_nesting_level() in - ACE_TSS_Cleanup::exit () to account for the fact that a - ACE_Recursive_Thread_Mutex now starts out with a nesting level - of 1 when it is first acquired. - - * ace/Synch_T: Removed the implementation of ACE_Recursive_Lock. - It just doesn't generalize correctly to other types of - synchronization mechanisms... - - * ace/Synch: Reimplemented ACE_Recursive_Thread_Mutex using Dave - Butenhof's strategy. This fixes some - latent race conditions in the original implementation. - - * ace: Changed the name of ACE_Recursive_Mutex to - ACE_Recursive_Thread_Mutex since the current implementation - really only works for Thread_Mutexes or Thread_RW_Mutexes... - - * ace: Removed the "Assert.h" file and moved its functionality - into Log_Msg.h. This is more consistent with the rest of the - error reporting and logging in ACE and also avoids some nasty - circular include problems. - - * ace/Local_Tokens.cpp: Changed the use of ACE_RETURN so that it - passes in errno. - - * ace/Log_Msg: Changed the arguments to the ACE_RETURN macro so - that errno can be returned explicitly. - -Sun Mar 31 15:52:58 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/Local_Name_Space.cpp (create_manager): Added three new - methods -- list_name_entries, list_name_values, and - list_name_types. They work similar to list_names, list_values, - and list_types (respectively) except they return the entire - tuple associated with a name binding. - -Sat Mar 30 16:46:32 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/SPIPE_Stream.i (send_handle): There was a typo -- the - parameter shouldn't be "const ACE_HANDLE handle", it should - just be ACE_HANDLE handle. - -Sat Mar 30 16:09:25 1996 Douglas C. Schmidt (schmidt@mambo.cs.wustl.edu) - - * INSTALL: Added new Win32 installation instructions to build - ACE as a DLL. - -Sat Mar 30 14:42:02 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Carefully tested ACE on SGI and SunOS 5.x using G++ and CC. - Everything seems to work now... Released version 4.0.2. - - * ace/Acceptor.cpp (ACE_Strategy_Acceptor): Added default - initializations of NULL for service_name_ and - service_description_ in the ACE_Strategy_Acceptor's default - constructor. - - * ace: Fixed a slew of warnings for HP/UX. Thanks to John Morey - for reporting these. - - * ace/FILE.h (ACE_FILE_Info): Changed the type of field size_ from - size_t to off_t to avoid warnings from C++ compilers... - - * ace/OS.cpp (ftruncate): Added a new function for platforms like - SCO that lack ftruncate(). Thanks to Matthew Newhook - for contributing this. - -Sat Mar 30 12:41:16 1996 Douglas C. Schmidt - - * ace: Removed the ACE_svcs library for the time being and merged - everything back into libACE. There were two reasons for this - change: - - 1. There is a subtle dependency between the ACE_Reactor and the - ACE_Local_Tokens* stuff when deadlock detection is enabled. - This was causing problems. - - 2. This was driving GNU G++ nuts because of the need to - do the "prelink." - - Sooo, for the time being, there's just one ACE library. If - anyone wants to take the time to split everything up so that it - works for all different platforms and send me the fixes I'll be - glad to include this in ACE. - - * ace/Thread.i: Made the ACE_Thread::thr_self() methods call - down to the ACE_OS::thr_self() methods for the case where - the platform doesn't support threads. This means that we - only have to set the default thread id in one place... - -Sat Mar 30 11:53:31 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * bin/class2info.awk: Modified the handleClass() AWK function so - that it can correctly deal with the new ACE_Export and - ACE_Svc_Export tags needed to build ACE DLLs... Here's the - trick: - - sub( "^[\t ]*class[\t ]+(ACE_[.]*Export[\t ]+)?", "", $0 ) - - completely intuitive, eh? ;-) - - * apps/Gateway: Reimplemented the Gateway prototype so that it - uses the new Reactor cancel_wakeup() and schedule_wakeup() - methods instead of mask_ops(). - - * ace/Reactor: Added new high-level "scheduling" - operations called schedule_wakeup() and cancel_wakeup(). These - methods utilize the lower-level Reactor mask_ops() methods to - schedule and cancel Event_Handlers for subsequent dispatching by - the Reactor. I added these new interfaces because they are more - intuitive than calling mask_ops(), which is a non-descriptive - name unless you understand the Reactor implementation... - - * ace/config-irix5.*.h: It turns out that on IRIX 5.x the - bi-directional SVR4 pipe semantics are *disabled* by default. - Therefore, I've changed the config-irix4.*.h files to comment - out ACE_HAS_STREAM_PIPES. - -Fri Mar 29 08:25:33 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/ACE.cpp (ldfind): Changed the character given to strtok() to - account for the differences in UNIX and Win32 described in the - follow bullet. - - * ace/OS.h: UNIX and Win32 use different characters to separate - pathnames in their runtime LD search path (':' and ';' - respectively). Therefore, I've added new macros to ACE OS to - account for this stuff portably. - - * ace/OS.i: Changed the behavior of the ACE_OS::thr_self() methods - so that they always return 1 if ACE_HAS_THREADS is *not* - enabled. This makes application code work correctly across - threaded and non-threaded platforms. - - * ace/OS.i: Changed the return value of the Win32 arm of the - ACE_OS::dlopen() and ACE_OS::dlsym() functions so that they are - now identical to the way that UNIX behaves. - - * ace/Svc_Conf.y: added a #define for ACE_BUILD_DLL to make Win32 - happy... - - * ace/Synch.i: Fixed a number of bugs in the ACE_Mutex and - ACE_Thread_Mutex tryacquire_read() and tryacquire_write() - methods. I was calling mutex_lock() rather than - mutex_trylock()! Thanks to Prashant for finding this. - - * ace/OS.cpp (exit): Fixed a bug caused by the fact that the test - for the nesting level of the recursive mutex should have been - for > 0 rather than > 1. Thanks to Kirk Sinnard - <1764@mn.lawson.lawson.com> for tracking this down! - - * ace/Log_Msg: Enhanced ACE_Log_Msg so that it automatically - caches the process id. This makes it more robust even if users - don't call open()! - - * examples/Connection/non_blocking/CPP-connector.cpp Fixed a bunch - of typos that caused templates to fail on HP/UX. Thanks to Neil - Cohen for spotting this. - - * ace/Shared_Memory_SV: Change all uses of "int id" to "key_t id" - to reflect the new use of key_t in the Memory_Pool. - - * ace/Memory_Pool.cpp (ACE_MMAP_Memory_Pool): Fixed a potential - but in the construction of an MMAP memory pool. Because NT uses - strings rather than integers to name its semaphores we were - passing in junk to the NT Process_Mutex initializer. Arrgh! I - fixed this problem by typedef'ing key_t to be char * on Win32 - and then updating the ACE_DEFAULT_SEM_KEY to be - "C:\\temp\ace.sem" rather than 1234.... Also added a new macro - called ACE_INVALID_SEM_KEY, which is NULL on NT and -1 on UNIX. - - * ace/Log_Msg.cpp (instance): Fixed a typo for HP/UX and - other non-threaded platforms! - - * ace/Synch_T.cpp (ACE_TSS_Guard): Added another small fix - to ACE_TSS_Guard to make sure we free up the key when we - go away. - -Thu Mar 28 15:28:44 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/OS.h: changed the names of macros ACE_DYNAMIC_SVC* to new - names that reflect their new, more general nature now that we've - got the ACE_Static_Svcs stuff... - - * ace/Service_Config.cpp (load_defaults): Added a very nice - mechanism that generalizes the configuration of statically - linked services. This makes it possible to insert statically - linked services into a program without changing any of the - existing ACE_Service_Config code. These static services can - then be enabled via the svc.conf file using the "static" - directive. Thanks to Matthew Newhook for - suggesting this and for doing the bulk of the implementation. - - * ace: Commented out the ACE_TRACE calls in ACE_Unbounded_Set, - ACE_OS, and all the ACE synchronization wrappers to work around - some horrible dependencies with Win32 and thread-specific - storage... The moral here is that you have to be careful what - you trace because circualar dependencies abound... My new - policy is that low-level routines are not automatically traced - because they can cause infinite recursion. - - * ace/Synch_T.cpp: Fixed a nasty bug with ACE_TSS_Guard. This was - causing programs that uses ACE_TSS_Guard to segfault... Thanks - to Kirk Sinnard for reporting this. - - * ace/Synch: Added "lock()" methods to all the ACE synchronization - wrappers to return the underlying C level object... This is - necessary at some points in ACE. - - * ace/Synch: Fixed a horrible bug in ACE_Recursive_Mutex and - ACE_Recursive_Lock that was causing instant deadlock because the - non-recursive Solaris/Pthread mutex was being acquired too - eagerly... - -Thu Mar 28 12:14:57 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/Map_Manager.cpp (rebind): Added a new method called resize() - which increases the size of the map. Both open() and - shared_bind() make use of this method to dynamically increase - the size of the map. - - * ace/Local_Name_Space.cpp (shared_bind): Modified shared_bind() - in accordance to the changes to Map_Manager. shared_bind() no - longer has to check if the map runs out of room since - Map_Manager dynamically grows the map. - - * ace/Map_Manager.cpp (shared_bind): Changed shared_bind() so that - when the map reaches max_size_, we grow the map by DEFAULT_SIZE - by making a call to open(). - -Wed Mar 27 20:00:47 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/Local_Name_Space.cpp (shared_bind): Fixed a bug which was - allocating memory for a name binding which would fail on a bind - since there already existed a binding. This was causing the - mapped-file to grow even when binds would fail. - -Tue Mar 26 13:49:24 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/INET_Addr.i (addr_to_string): Moved the order of - get_host_addr() so that it comes before addr_to_string(). - Thanks to Neil Cohen for finding this. - - * ace/Synch: Added a new implementation of ACE_Thread_Mutex that - takes advantage of the new ACE_OS::thread_mutex_* mechanisms. - - * ace/OS: Added a new set of ACE_OS::thread_mutex_* mechanisms - that map efficiently to either Win32 CRITICAL_SECTIONs or UNIX - mutex_t's with type set to USYNC_THREAD. This allows ACE to - take advantage of the lightweight Win32 synchronization - mechanisms. When Windows NT 4.0 comes out, we'll at last have a - perfect mapping since WinNT 4.0 supports - TryEnterCriticalSection! - -Tue Mar 26 17:35:31 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/Map_Manager.cpp: Added two new methods -- total_size() and - current_size() which return the max_size and current_size of the - map respectively. - -Mon Mar 25 20:22:25 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Service_Config.cpp (initialize): Updated the use of ACE_ARGV - to use the new method names. - - * ace/ARGV.cpp (ACE_ARGV): Changed the name of the two main - methods of ACE_ARGC from count() and operator&() to argc() and - argv(). This seems much more consistent with UNIX and C/C++ - naming conventions. - - * ace/ARGV.cpp (ACE_ARGV): Added environment variable substitution - to the ACE_ARGV class using the new ACE::strenvdup() method. - This is transparently available to the ACE Service Configurator - now, which enables the svc.conf file to include things like - this: - - dynamic Name_Service Service_Object * - name_svc.so:make_Name_Service() "-p $PORT -h $HOST" - - * ace/ACE: Added a new function called strenvdup() that returns a - dynamically allocated duplicate of its argument, - substituting the environment variable if str[0] == '$'. - - * ace/Naming_Context: Modified this class so that it now inherits - from ACE_Service_Config. This enables application programmers - to dynamically link instances of ACE_Naming_Context into their - applications via the svc.conf file. - - * ace/OS.i (access): Added a new wrapper for the access() method. - - * ace/Local_Name_Space.cpp: Fixed an error in each list_xxx - methods. If there's an error in the for-loop we must still call - ACE_OS::free() to release resources. Thanks to the - ever-vigilant Karlheinz Dorn for spotting this. - - * ace/Strategies: added virtual methods with name dump() to - ACE_Scheduling_Strategy, ACE_Schedule_All_Reactive_Strategy, and - ACE_Schedule_All_Threaded_Strategy. These methods are - referenced in ACE_Strategy_Acceptor::dump() method - (Acceptor.cpp). Thanks to Alexandre Karev for reporting this. - - * include/makeinclude: Added a number of changes to allow ACE to - build shared libraries correctly on AIX. Thanks to Chris Lahey - for these fixes. - - * ace/Makefile: added tempinc to the list of directories to delete - for "clean". Also, between the call to the two sub make files, - added a $(RM) -rf tempinc. Since we make both libs from the - same directory, we need to delete the tempinc directory to be - sure we don't get the templates generated for libACE included in - libACE_svcs. - - * ace/OS.i: Improved the mapping between ACE Win32 GetLastError() - values and POSIX-like errnos. This is now centralized in the - ACE_FAIL_RETURN macro. - - * examples/Threads/test_thread_specific.cpp: Added many new tests - to exercise the ACE thread-specific storage mechanisms on Win32 - and UNIX. - -Mon Mar 25 4:00:01 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/Name_Options.cpp (parse_args): Added a new data variable - called database_ that keeps the name of the name server - database. Also added accessor methods for this. - - * ace/Local_Name_Space.cpp (create_manager): Changed - create_manager() to use ACE_Name_Options::instance ()->database - () instead of ACE_Name_Options::instance ()->process_name(). - - * ace/ACE.cpp (ldopen): Added a new method called ldopen that - finds a file either using absolute path or using - LD_LIBRARY_PATH. If the file is found, it opens the file and - returns a pointer to the file. - - * ace/Parse_Node.cpp: used the new ACE::ldfind() method to locate - the shared object file. This makes it possible to put - "relative" names into svc.conf files and then allow ACE to - locate the appropriate shared object DLL. - - * ace/ACE: added new methods called ldopen() and ldfind() that - find the file either using absolute path or using - LD_LIBRARY_PATH. If found, ldopen() opens the file and returns - a pointer to the file. - -Sun Mar 24 10:41:12 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Compiled ACE successfully on Windows '95. - - * ace/OS: Totally redid the ACE thread-specific storage cleanup - mechanism in OS.cpp to avoid bugs with the previous - implementation. - - * ace/Synch_T: Modified ACE_TSS_Guard so that it will call - ACE_OS::thr_keyfree () when it's finished. This should help to - eliminate the unbounded use of thread-specific storage slots - within a thread. - - * ace/Thread: added a new method keyfree() that calls down to the - ACE_OS::thr_keyfree (). - - * ace/Thread_Manager.cpp: Modified the semantics of - ACE_Thread_Manager::exit () so that it "always" calls - ACE_Thread::exit () even if the user hasn't registered this - thread with the thread manager. This avoids some subtle - problems that arise typically when I forget to put an - ACE_Thread_Control around the main() function. - - * examples/Threads/test_thread_specific.cpp: Added new tests to - ensure that the Win32 TSS cleanup logic is working correctly! - - * ace/Log_Msg: Moved the definition of the ACE_FIFO_Send_Msg queue - from the Log_Msg.h file to the Log_Msg.cpp file. The MSVC++ - compiler was having problems with this when building a DLL. - Besides, this needs to be replaced with Sockets for Win32 - anyway... - - * ace/OS.cpp: Put a safe guard in the readv() and writev() - emulations so that they return ACE_NOTSUP_RETURN if - ACE_HAS_THREADS is enabled. This is necessary because the - readv() and writev() emulations are *not* atomic if multiple - threads are used. If someone can provide an atomic - implementation I'll enhance the code to remove the existing - restrictions. - - * ace/OS: Created a new macro called ACE_SYSCALL_FAILED, which is - mapped to 0xFFFFFFFF on Win32 and -1 on UNIX. - - * ace/Synch and Synch_T: cleaned up the implementation of the - Recursive_Lock and Recursive_Mutex to use the ACE_Guard classes. - This simplifies the code. - -Sat Mar 23 16:53:14 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace: Updated all ACE classes to use the new ACE_Export macro. - This will enable them to transparently be used to create a Win32 - DLL. Also added ACE_BUILD_DLL to all the *.cpp files. - - * tests/CPP-inserver.cpp (main): Modified CPP-inclient.cpp and - CPP-inserver.cpp to use non-blocking I/O. In particular, - CPP-inserver times out on select and then checks to see if any - connections have arrived. Both applications are also working on - NT. - -Sat Mar 23 15:02:47 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Local_Tokens.cpp (proxy_): Modified the print statement for - local tokens to account for the fact that thread ids can be - unsigned on some platforms. - - * ace/Log_Msg.cpp (log): Modified the output format of the %t - directive to ACE_Log_Msg::log() so that it prints values in - unsigned form rather than signed form. This fixes a bug with - Win32 on Windows '95. - - * ace/ACE: Added two new methods ACE::read_n() and ACE::write_n(). - These are now necessary since Win32 distinguishes between - operations on SOCKETs and operations on other forms of HANDLEs. - - * ace/ACE: Changed all uses of ACE::set_fl() and ACE::clr_fl() to - ACE::set_flags() and ACE::clr_flags(). - - * ace/ACE: Changed the name of ACE function handle_timed_connect() - to handle_timed_open() since this is reall what it does... - -Fri Mar 22 00:11:19 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Stack: Added a "Node of last resort" to the - ACE_Unbounded_Stack. This ensures we are graceful in the face - of memory failures. - - * ace/OS.i (sleep): Fixed a bug with the Win32 ACE_OS::sleep - mapping. This should have had an "ACE_OSCALL_RETURN" in it... - - * ace/ACE.h: Had forgotten to put "static" in front of "basename". - Thanks to Neil Cohen for reporting this... - - * ace/Name_Options.cpp (process_name): Changed char * to const - char * to avoid compile error. Thanks to Neil Cohen for this... - - * ace/IPC_SAP: Implemented the enable()/disable() methods to work - with non-blocking I/O for SOCKETs on Windows NT. - - * ace/OS.i: Modified ioctl() to support the ioctlsocket() call on - Windows NT. - - * ace/Log_Msg.cpp (log): Fixed a bug that was caused by not - NUL-terminating the logging string properly when a %a is given. - Thanks to Tim Harrison for finding this. - - * ace/OS: Added a new overloaded "ACE_OS::sleep" method that takes - an ACE_Time_Value rather than a u_int. This is much more useful - for fine-grained timers than the horrible UNIX sleep() call. - - * ace/OS.h: #included "sys\timeb.h" in the Win32 version of ACE. - -Thu Mar 21 22:18:50 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * apps: Fixed all incorrect usages of ACE_HANDLE = -1 to use - ACE_HANDLE = ACE_INVALID_HANDLE in order to work with Win32... - - * ace/OS.i (gettimeofday): Replaced the existing implementation of - gettimeofday with a new version that is shorter, more efficient, - and most importantly, correct... Thanks to Todd Montgomery. and - Mike Flinn for this stuff. - - * ace/ACE: added a new method called basename() that returns the - filename portion of a pathname. - -Thu Mar 21 21:51:48 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/OS.h (ACE_DEFAULT_GLOBALNAME): Added some new #defines for - NT: ACE_DEFAULT_NAMESPACE_DIR, ACE_DEFAULT_LOCALNAME, and - ACE_DEFAULT_GLOBALNAME. - - * ace/Local_Name_Space.cpp (ACE_Local_Name_Space): Fixed a subtle - bug. Instead of doing a new char [xxx], I was doing a new char - (xxx). Also, added some #if defined (ACE_WIN32) to support - special cases for NT (for example determining the context file - name). - -Wed Mar 20 02:03:39 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Log_Msg.cpp (log): If we're writing to stdout or to an - iostream make sure the lock is help to avoid race conditions and - scrambled output. - -Tue Mar 19 00:12:25 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Thread_Manager.h: Added new default values to spawn() and - spawn_n(). - - * ace/OS.i (sigaction): Added support for signals to the ACE NT - mapping. - - * ace/ACE: Added 4 new methods to class ACE: send(), send(), - recv(), recv(). These calls mask some differences between UNIX - and Win32 IPC mechanisms. Then, reimplemented the Reactor's - notification mechanism to use this. - - * ace/OS.i (ACE_OSCALL_RETURN): fixed zillions of warnings on - HP/UX by making a small change to line 151 of the OS.i file. - Thanks to Neil Cohen for reporting this. - - * ace/Reactor.cpp: Rewrote the Reactor::notify() mechanism to - avoid using readv() and writev(). These work fine on UNIX, but - don't work correctly on Windows NT due to race conditions. - Basically, we need to reimplement this stuff on Win32 to avoid - the problem. - - * ace/OS.h: Added SIGQUIT, SIG_BLOCK, SIG_UNBLOCK, and SIG_SETMASK - definitions to NT. - - * ace/Time_Value: added a new set() method to be consistent with - the ACE_Time_Value (long, long) constructor. - - * ace/Service_Config.cpp (open): Fixed a bug where the - ACE_Service_Repository and ACE_Reactor weren't being initialized - correctly if the ACE_Service_Config::ACE_Service_Config (const - char *) method was called. - - * ace/Service_Config.cpp: Changed the constructor for - Service_Config so that it doesn't barf if the svc.conf file - isn't found. - -Mon Mar 18 00:34:45 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Reactor.h: Hid the inclusion of the Local_Tokens.h file in - the Reactor so that by default there will be no dependency - between libACE and libACE_svcs. This should prevent compilation - problems on some platforms. - - * bin: Included the html-windex shell script from Vincent Pommier - . - - * man: Included a shell script to automatically generate an - acewindex.html file. This file is useful just after running - man2html. Thanks to Vincent Pommier - for contributing this. - - * man/html: I've just used the man2html programs to generate the - html documentation from the man3 directory. It seems to work - pretty well. - - * ace/Assert.h: Added a forward declaration for class ACE_Log_Msg - to fix problems NuMega preprocessing. Thanks to Mike Flinn - for finding this. - - * ace: Implemented about 1/3rd of the "dump" methods for the - various ACE classes. - - * ace/Acceptor.cpp (info): Fixed a bug -- should use PR_AD rather - than ACE_INET_Addr since this is used for SPIPEs as well... - - * ace/Synch_T.cpp (ACE_TSS): If ACE_Thread::keycreate () fails - then we do an fprintf() and return at the moment. It doesn't do - any good to do an ACE_Log_Msg operation since those all require - thread-specific storage and this will just cause a recursive - problem... - - * ace/OS.cpp: Removed a memory leak in ACE_OS::thr_destory_tss() - that was caused by forgetting to delete each ACE_TSS_Key_Info - object when we no longer needed it. Thanks to Mike Flinn - for finding this. - - * ace/OS.cpp: Added a new method to class ACE_OS called - thr_keyfree(). This enables us to free up a thread-specific - storage key on Win32 (it isn't implemented on the UNIX - platforms). - - * ace/ACE.cpp (timestamp): In order to get ACE_OS::timestamp to - work on Win32, the wMonth, wDay, wYear structure members were - added to the sprintf statement. Thanks to Mike Flinn - for this fix. - - * examples: Changed all uses of ACE::send_n (1, ...) to - ACE_OS::write (ACE_STDOUT, ...) to avoid problems with NT's - hacked support for sockets and HANDLEs. Thanks to Bernd Hofner - for noticing this. - -Sun Mar 17 00:43:14 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/CORBA_Handler.cpp (handle_input): Fixed the CORBA_Handler to - use send()/recv() rather than read()/write(). - - * ace/Process_Manager: put the hooks in for the forthcoming ACE - Process Manager, which will provide a service similar to the - ACE_Thread_Manager, except that it will work for processes, not - threads. - - * netsvcs: all the ACE network services appear to be working - again... - - * man: Completely regenerated all the manual pages to reflect all - the most recent changes. - - * ace/OS.h: Created a new macro called ACE_DEFAULT_REACTOR_SIZE. - This is useful for two reasons (1) it centralizes this value in - one place in ACE and (2) removes a horrible circular dependency - between the Service_Config.h and Reactor.h... - - * ace/Strategies: Added new strategies to handle "scheduling" of - Svc_Handlers launched by a Strategy_Acceptor. In this context, - scheduling refers to "suspending" and "resuming" Svc_Handlers. - There are several alternative strategies ranging from (1) - suspending/resuming a single handler, (2) suspending/resuming - all the handlers in a Reactor, and (3) suspending/resuming all - handlers controlled by a Thread_Manager. This very powerful - feature makes it simple to write ACE_Network_Services that can - control all their handlers in one fell swoop... - - * ace/Task: Added new accessors/mutators to get/set the - Thread_Manager and the Message_Queue associated with a Task. - This makes life easier and more abstract in subclasses and - elsewhere. - - * ace/Reactor: added an iterator to the ACE_Handler_Repository. - This makes it possible to implement the suspend_handlers() and - resume_handlers() very efficiently on both UNIX and Windows NT. - - * ace/Reactor: Added two new methods called suspend_handlers() and - resume_handlers(). These methods suspend and resume all the - active Event_Handlers in the Reactor in one fell swoop. - - * ace/Reactor.i (suspend_handler): Fixed a bug in the Reactor - where we were not factoring out the code for suspend_handler() - appropriately with respect to locking. - - * netsvcs/Logging/Server_Daemon/Thr_Logging_Handler: Enhanced the - threaded logging service so that all active threads can be - automatically suspended and resumed via the ACE_Service_Config - svc.conf file. - - * netsvcs/Logging/Server_Daemon/Logging_Handler.cpp: Rewrote the - ACE Logging service to use the new ACE_Strategy_Acceptor - implementation. This greatly reduced duplicate code. There's - almost nothing left in this directory save the actual service - itself! - - * netsvcs/Tokens: Rewrote the ACE Token service to use the new - ACE_Strategy_Acceptor implementation. This greatly reduced - duplicate code. There's almost nothing left in this directory - save the actual service itself! - - * netsvcs/Naming: Rewrote the ACE Naming service to use the new - ACE_Strategy_Acceptor implementation. This greatly reduced - duplicate code. There's almost nothing left in this directory - save the actual service itself! - -Sat Mar 16 20:02:08 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * netsvcs: Created a new subdirectory off of $WRAPPER_ROOT and put - all the ACE network services (e.g., Time, Logging, Naming, and - Tokens) into that directory. These services all instantiate the - new ACE_Strategy_Acceptor implementation, which greatly - simplifies their behavior and code. - - * ace/Acceptor: Made some enhancements to the - ACE_Strategy_Acceptor in order to make it more suitable for use - as a generic "Service" launcher. This class now defines common - behavior for all the ACE network services (e.g., Time, Logging, - Naming, and Tokens). - - * apps/Token_Server: Made the main Token_Server application be - dynamically linked if there's a valid svc.conf file. - - * apps/Name_Server/Name_Server: Made the Server_Test a - "well-behaved" service. Previously, it block in a private event - loop within Name_Server::run(), which was called by - Server_Test::init() when the service was linked dynamically. - This obviously doesn't work correctly since it means that we - can't dynamically link any other services after this one! The - new version is "event-loop" friendly since it uses the main - Service_Config::run_event_loop() method. - - * ACE-categories: Added a new emacs "outline" file that - illustrates how the filenames in $WRAPPER_ROOT/ace cluster into - class categories. Thanks to Chris Eich - and Alex V. Maclinovsky - for helping create this. - - * ace: Split ACE into two libraries: libACE and libACE_svcs. - libACE contains the "core" ACE components. libACE_svcs contains - the client-side layered services (e.g., naming service, token - service, etc.). There are two reasons for doing this: - - 1. It reduces the size of ACE for many common usecases (i.e., - most people aren't using the naming service or the token - service). Any future layered services in ACE will be placed - into the libACE_svcs library rather than libACE. - - 2. It works around annoying compiler bugs with lame compilers - like HP/UX C++. Now, if those compiles can't compile the - token service (which is very template intensive) it won't - affect the core ACE library components. This improves the - portability of ACE. - - * Added -lACE_svcs to the ./apps/{Token_Server,Name_Server} and - ./examples/{Tokens,Naming} Makefiles to account for the new - libraries. Note that no source code changes are required... - -Fri Mar 15 00:03:48 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * apps/Name_Server/server/Name_Handler.cpp (recv_request): Fixed - the same problem as occurred in Token_Handler (these both come - from the same source...). - - * apps/Token_Server/Token_Handler.cpp (recv_request): There was a - subtle bug in the Token_Handler that stems from my old code. - The line - - n = this->peer_.recv ((void *) (((char *) &this->token_request_) - + sizeof (ACE_UINT32)), - length); - - This should actually be: - - n = this->peer_.recv ((void *) (((char *) &this->token_request_) - + sizeof (ACE_UINT32)), - length - sizeof (ACE_UINT32)); - - since length was read already. The old way tried to read 4 - bytes too much. Thanks to Jesper for noticing this. - - * ace/Connector.cpp (connect_svc_handler): Modified the connector - so that it automatically calls the close () method of the - Svc_Handler when the connection fails abortively. This makes - the semantics the same for synchronous and asynchronous - connection invocation modes. Thanks to Irfan for insisting on - this! - - * apps/Token_Server/Token_Acceptor.cpp (handle_input): Changed - return type from int to ACE_HANDLE for NT compatibility. Thanks - to Jesper for this insight. - - * ace/OS.h: The defines for ACE_LACKS_MODE_MASKS (OS.h) were only defined - when !ACE_WIN32. This has been fixed. Thanks to Irfan for - spotting this too. - - * ace/OS.i (mmap): made a small change to ACE_OS::mmap to fix NT - portability problem (new variable added:nt_flags). Thanks to - Irfan for spotting this. - - * ace/Local_Tokens.h: Added #include "ace/Map_Manager.h" after - line 41 in Local_Tokens.h to allow ACE to compile correctly with - the horrid HP/UX compiler. Thanks to Neil Cohen for figuring - this out (what a trooper!). - - * ace/Local_Tokens.cpp (ACE_TPQ_Entry *): Replace - - return ACE_TSS::operator ACE_TPQ_Entry *(); - - with - - return (ACE_TPQ_Entry *) (*((ACE_TSS *) this)); - - to work around problems with MSVC++ 4.0 when the browse option - is enabled. Thanks to Kirk Sinnard <1764@mn.lawson.lawson.com> - for this fix. - - * ace/config-sunx86-sunc++-4.x.h: Swapped the lines - - // Compiler/platform supports SVR4 signal typedef. - //#define ACE_HAS_SVR4_SIGNAL_T - #define ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES - - to - - // Compiler/platform supports SVR4 signal typedef. - #define ACE_HAS_SVR4_SIGNAL_T - //#define ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES - - to avoid an error using ProWorks C++ 4.0.1 (w/ patches) which - blow up in the Signal.x stuff with a prototyping error. Thanks - to John P. Hearn for this recommendation. - - * ace/Shared_Memory.h: The conditional compilation wrapper was out - of date, so I renamed it. Thanks to Alex V Maclinovsky - for reporting this. - -Thu Mar 14 23:18:59 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Thread.h: There was a bug in the ACE_Thread class. I - attempted to make the class uninstantiable by making the - constructor private. However, the statement was: - - private: - Thread (void); - - which is not the definition of the ctor! The code compiled - since it thinks Thread is a member function. As a result, you - could instantiate a object of ACE_Thread class, but no longer... - Also added this to the !defined (ACE_HAS_THREADS) arm of the - conditional compilation. Thank to Sandeep Joshi - for noticing this. - - * ace/Log_Record.i (decode): Fixed a stupid typo where htonl - (this->length_) should have been htohl (this->length_)... - Thanks to Audun Tornquist for - noticing this. - -Tue Mar 12 14:51:39 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/Name_Request_Reply.cpp (decode): Added ntohl and htonl calls - wherever data was being exchanged. - -Sat Mar 9 17:49:51 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu) - - * ace/OS.i (cond_wait): Updated the Win32 implementation to - correspond precisely with the UNIX semantics where the mutex is - always reacquired even when errors occur. - -Mon Mar 4 23:03:37 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu) - - * INSTALL: updated the win32 to describe building test - applications. - -Mon Mar 4 16:17:05 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/Local_Name_Space.cpp (resolve): Fixed a small bug. The type - field in resolve was copying extraneous stuff (because of being - kept around as a wchar_t). So I added a new method to the class - ACE_NS_String called len() which simply returns len_. Using this - I can now do a strncpy of len bytes for type (instead of a - simple strcpy) and then null-terminate the string to remove the - garbage. - -Thu Feb 29 23:41:04 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu) - - * ace/Token_Request_Reply.cpp: Fixed a byte-order bug which was - showing up on intel platforms. - - * ace/Remote_Tokens.cpp: Fixed a race condition in - ACE_TSS_Connection which was munging mt token server clients. - - * examples/Tokens/mutex/*: The Token Server example applications - now use ACE_Thread_Manager, which should make them portable to - Win32. - - * apps/Token_Server/Token_Server.cpp: The Token Server is now a - Service_Object which can be dynamically linked. - - * ace/OS.i: Win32 ACE_OS:: signal methods now return 0 instead of - -1. So, calls to signal code succeed, but do nothing useful. - -Thu Feb 29 20:38:32 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * apps/Logger/Server_Daemon/Server_Logger.cpp - (handle_logging_record): There was a typo where - ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES was incorrectly spelled. - This caused problems on HP/UX. Thanks to Neil Cohen for - finding this. - -Wed Feb 28 11:41:49 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Mem_Map.cpp: Fixed a nasty bug with Win32 memory mapping... - It turns out we need to be very careful when remapping a - previously mapped region if the MapViewOfFile we're trying to - establish *grows* beyond what was originally mapped with - CreateFileMapping(). The new scheme seems to work correctly - with both UNIX and Win32. - - * ace/OS.h: apparently when using MFC library functions it - is not possible to include windows.h. Instead, users - must include AFX.h. Therefore, I've modified OS.h to - include the following: - - #if !defined (__AFX_H__) - #include - #endif /* __AFX_H__ */ - - Thanks to Patty Genualdi (genualdp@agcs.com) for pointing this - out. - - * ace/Memory_Pool.cpp: Modified init_acquire() so that it calls - ACE_Mem_Map::open() rather than ACE_Mem_Map::map() the first - time. This ensures that the file is mapped correctly. - - * ace/Mem_Map: Added a new method called open() that creates/opens - a file without actually mapping it. - - * ace/SOCK_Dgram_Mcast.cpp (make_multicast_address): Added - new support for Windows NT. - - * ace/Memory_Pool: reimplemented ACE_MMAP_Memory_Pool so that uses - ACE_Mem_Map. This ensures that we can leverage all the work - that went into making ACE_Mem_Map work on Win32. - - * ace/Memory_Pool.cpp (map_file): Modified the code so that we - always unmap the file before trying to remap it. This avoids - problems with Win32... - - * ace/Mem_Map: Modified the implementation of ACE_Mem_Map so that - it takes advantage of the improved features in ACE_OS::mmap. - Also added new a method that returns the memory-mapped addr more - easily. - - * ace/OS: Modified the ACE_OS::mmap() method so that it is more - efficient for remapping files on Win32. - - * ace/OS.h: renamed the type QWORD to ACE_QWORD to avoid namespace - pollution. Thanks to Patty Genualdi (genualdp@agcs.com) for - pointing this out. - - * ace/OS.h: Changed the value of the SIGPIPE emulation for Win32 - to match the UNIX value in order to avoid problems. Thanks to - Jesper for noticing this. - - * apps/Token_Server: Fixed misuse of int for ACE_HANDLE in various - places. Thanks to Jesper for noticing this. - - * Renamed the ./tests directory to ./examples to make way for the - new ACE regression tests. These tests will go into the new - ./tests directory. - - * ace/Mem_Map.cpp: Added a destructor and a close() method that - closes down the file HANDLE if we allocated it. This is useful - to prevent descriptor leaks. Thanks to Irfan for suggesting - this. - - * ace: Made a number of changes to remove unreferenced parameters - from ACE methods. This eliminates zillions of warning from the - HP/UX compiler. Thanks to Neil Cohen for reporting this. - - * ace/Local_Name_Space.cpp (resolve): revised some code to work - around bugs with the HP/UX compiler... Thanks to Neil Cohen for - this workaround. - -Tue Feb 27 21:06:09 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/OS.i: The Win32 CreateFile does not handle the return you - would expect when the file exists. You would expect EEXISTS (17 - in UNIX) but the GetLastError is set to 80 - (ERROR_FILE_EXISTS). Therefore, I changed ACE_OS::open to map - ERROR_FILE_EXISTS onto EEXIST. This is only a partial solution, - however. There must be a better way to handle this! - - * ace/Mem_Map.cpp (ACE_Mem_Map): Fixed a bug with one of the - ACE_Mem_Map destructors that was causing problems due to the - fact that base_addr_ wasn't being initialized to 0. Thanks to - Karlheinz for noticing this. - - * ace/Signal.i: signals on AIX cannot use sigprocmask() in any - multithreaded programs. Instead, the call - ACE_OS::thr_sigsetmask() should be used since it is used to - update the thread signal mask. This comes up only in the - Sig_Guard constructor and destructor. Therefore, I #ifdef the - call under the ACE_MT_SAFE macro, using sigprocmask() in the - #else case. Thanks to Chris Lahey for reporting this. - - * tests: removed all uses of ACE_OS::join (0, ....) in ACE and - replaced them with ACE_Thread_Manager::wait() calls. This - ensures that the ACE code is portable to Win32 and POSIX - pthreads! - - * ace/Dynamic_Service.cpp: Added a #include of - "ace/Service_Config.h" to work around problems with HP/UX. - Thanks to John Morey for reporting this. - -Sun Feb 25 12:10:38 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * apps/Token_Server: changed the name token_server.cpp to main.cpp - to avoid a name clash on Win32... - - * man/man3: updated all the ACE manual pages to reflect the - most recent changes. - - * ace/OS.i: Implemented the cond_timedwait() method correctly in - ACE_OS. This method should now do the right thing with respect - to blocking, polling, and timewaits for Win32. - - * ace/OS.i: Modified the Win32 implementation of all the - socket-related wrappers in ACE_OS. The new implementation very - cleverly sets errno to the result of WSAGetLastError() if a - socket-related call fails. Since all of the WinSock errors are - mapped into their equivalent UNIX errno values this enables - socket applications to work portably for UNIX and Win32. - - * ace/Malloc_T.cpp (ACE_Malloc): Improved error reporting for - cases where the Memory_Pool::init_acquire() fails (e.g., if the - backing store was already created by another user and we don't - have permission to access it...). - - * ace/Task: modified Task.h so that it is no longer necessary to - write #include "ace/Synch_T.h" in order to use ACE_MT_SYNCH, - etc. - - * ace/SOCK.cpp (DllMain): Added a clever "Schwartz counter" to - make sure that the WinSock library is correctly initialized, - even if we're not using ACE as a DLL!!! - - * tests/Mem_Map/file-reverse: got the file reverse test program - working. The ACE_Mem_Map class should now be ported to Win32... - - * ace/OS.i (open): Changed how the O_CREAT flag was handled - to give it UNIX semantics... - -Sat Feb 24 12:55:27 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/UPIPE_Stream.cpp (recv): Fixed a signed/unsigned mismatch. - There should be no more mismatches in ACE... - - * ace/Name_Proxy.cpp (recv_reply): Fixed a signed/unsigned - mismatch. - - * ace/Message_Block.cpp (copy): Fixed a signed/unsigned mismatch. - - * ace/INET_Addr.cpp (get_host_name): Changed the type of the - hostnamelen parameter from int to size_t to be more "abstract." - This will also prevent a warning from the MSVC++ compiler. - - * apps/Logger/Client_Daemon/Client_Logger.i: Fixed a braino with - network byteoder that was causing Client_Logger::send() to fail - on INTEL boxes. Thanks to Bryon G. Rigg - for finding this. - -Fri Feb 23 01:59:34 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/OS.i: Enhanced mmap() to give the same semantics as UNIX - mmap() by using MapViewOfFileEx(). Also greatly improved the - UNIX emulation capabilities so that mmap() now has the same API - for UNIX and Win32. - - * ace/Time_Value: Added functions to constructor and conversion - from/to Win32 FILETIME. This enables us to reuse those 100ns - conversions in ACE_Profile_Timer. - - * ace/Time_Value: Fixed a problem with these: - - // True if tv1 < tv2. - - INLINE int - operator < (const ACE_Time_Value &tv1, - const ACE_Time_Value &tv2) - { - ACE_TRACE ("operator <"); - return tv2 > tv1; - } - - This should be "tv2 >= tv1". Same problem was fixed with - operator <=. - - * ace/Profile_Timer.i, fixed the following: - - this->end_time_ = ACE_OS::gettimeofday (); - this->last_time_ = this->end_time_; - this->last_usage_ = this->end_usage_; - ACE_OS::getrusage (RUSAGE_SELF, &this->end_usage_); - - This will overwrite end_time before it is saved to - last_time... - - * tests/Threads: Added Jesper's test for readers/writers locks. - The test adds a number of reader and writer threads. When - active, writers modify a shared variable and verify that only - one writer and no readers are active. When active, readers - check that no writers are active and that the shared data is - never changed. The test passes for different ratios of - readers/writers, and debug output shows that several readers are - allowed simultaneously. Or, in other words, we have an - indication that it should work. - - * ace/OS.i: Added Win32 implementations of getpid(), fork(), - lseek(), dup(), cond_timedwait (), getrusage () - - * ace/OS.i: Modified all the ACE_OS::str* routines so that they no - longer do an ACE_OSCALL_RETURN. This can lead to weird bugs... - Thanks to Jesper for noticing this. - - * ace/config-sunos4-sun4.1.4.h: Added a new config file that - should work with SunOS 4.x... Also added support for SunOS - 4.1.4. Thanks to Mick Adams (eeimas@eei.ericsson.se) for help - with this. - -Thu Feb 22 18:58:36 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * tests/Naming/Client/Name_Service.h (ACE_Service_Object): - Modified test application to make use of ACE_Dynamic_Service. - - * ace/Dynamic_Service.h: Added a new class called Dynamic_Service - which provides a general interface to add and retrieve arbitrary - things into the ACE service repository. - - * apps/Name_Server/README: Rearranged files so that Name_Server - and Name_Handler are now contained in the server directory under - apps and are no longer under /ace. Also, the Dump_Restore - directory has been moved under /tests/Naming. - -Thu Feb 22 01:56:46 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/INET_Addr.cpp (set): Fixed a byteorder bug in ACE_INET_Addr - that was causing problems when ACE was used on Win32 running on - Intel platforms... - - * ace/Mem_Map.cpp (map_it): Fixed ACE_Mem_Map so that it will work - correctly on Win32. - - * ace/SOCK_Stream.i: Changed the implementation of the Win32 - versions of send() and recv() so that they will never use the - read() and write() calls. This works around limitations with - Win32, which can't do a ReadFile() or WriteFile() - *synchronously* with a SOCKET. - - * Changed all occurrences of read (0, ...) to read (ACE_STDIN, - ...) and all occurrences of write (1, ...) to write - (ACE_STDOUT, ...) in order to be compatible across UNIX and - Win32. - - * tests/ASX/Event_Server: Fixed up all the socket I/O calls so - that they use the WinSock send()/recv() methods rather than - ReadFile and WriteFile... - - * ace/OS.i: Updated open() to correctly emulated UNIX open() - semantics on Win32. - - * ace/OS.cpp (thr_exit): Added support to the NT port so that - thr_exit() doesn't endup doing multiple deletions of the same - object. Thanks to Karlheinz for this fix. - - * ace/OS.h: Moved the location of ACE_MAXCLIENTIDLEN so that - MAXHOSTNAMELEN would be correctly visible for NT. - - * ace/Reactor.cpp: Added a temporary fix for the fact that - writev() and readv() don't work correctly yet on NT. The - solution is to replace write() with two writes() and readv() - with two reads() for the Reactor's notification scheme. A - better solution should be forthcoming. - - * ace/Reactor.cpp: Made sure to initialize the timer_queue_ to 0 - in the constructors so that the Reactor's destructor can avoid - crashing horribly if the constructor fails. Thanks to Karlheinz - for pointing out the need for this. - - * ace/SOCK.cpp: Added support for WSAStartup for using WinSock - within the ACE_SOCK class. - -Wed Feb 21 21:05:55 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/ACE.cpp (bind_port): Made a quick fix to work around the - fact that NT doesn't set errno... - - * ace/OS.i (mmap): Fixed a bug in mmap for the NT port. It should - return MAP_FAILED on error rather than 0 to be equivalent to the - UNIX version. Thanks to Irfan for spotting this. - -Mon Feb 19 00:31:42 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Typed_SV_Message.i (ACE_Typed_SV_Message): Modified the - constructor calls so that length_ and max_size_ are correctly - set when created. Thanks to Alexandre Karev - for reporting this. - - * ace/SV_Message_Queue.i (remove): fixed bug in - ACE_SV_Message_Queue::remove method where `internal_id_' member - was modified *BEFORE* it was used the last time in - ACE_SV_Message_Queue::control. Thanks to Alexandre Karev - for reporting this. - - * ace/Typed_SV_Message.i (length): Fixed a minor typo that caused - a bigger bug ;-). Thanks to Alexandre Karev - for reporting this. - - * ace/OS.h: Added new macros that allow programs to portably - access stdin, stdout, and stderr HANDLEs on Win32 and UNIX as - follows: - - #if defined (ACE_WIN32) - #define ACE_STDIN GetStdHandle (STD_INPUT_HANDLE) - #define ACE_STDOUT GetStdHandle (STD_OUTPUT_HANDLE) - #define ACE_STDERR GetStdHandle (STD_ERROR_HANDLE) - #else - #define ACE_STDIN 0 - #define ACE_STDOUT 1 - #define ACE_STDERR 2 - #endif /* ACE_WIN32 */ - - * ace/INET_Addr.i: modified the return value of get_port_number so - that it returns the value in host byte order. This has actually - been a latent bug in ACE for years, but it only surfaced - recently after porting to NT on the Intel instruction set (which - is "little-endian"). - - * tests/ASX/Event_Server: Merged in the latest changes to the - Event_Server tests, which enable it to compile on Windows NT. - Now, I just need to get it working on NT... - - * Updated all of ACE to use the new ACE_ASSERT rather than assert. - - * ace/Assert.h: Added a new file and a new macro called - ACE_ASSERT. This uses the ACE_Log_Msg Singleton to provide a - more consistent means to do assertions. Thanks to Alexandre - Karev for suggesting this. - - * ace/Log_Msg.cpp (log): added for method ACE_Log_Msg::log lines - to skip the `sprintf' part for %N - file name and %l - line - number format specifiers. Thanks to Alexandre Karev - for reporting this. - - * Remote_Name_Space: Removed an initalizer to ACE_WString that was - driving the HP/UX compiler nuts. - -Sun Feb 18 18:11:22 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Synch.h (ACE_Null_Condition_Mutex): Added a missing body to - the wait() method. Thanks to Byron Riggs for noticing this. - -Sat Feb 17 19:10:06 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * tests/Naming/README (client): Added description for new - features, including support for list_values and list_types. Also - added a small description about test programs using DLL. - - * ace/Name_Request_Reply.cpp (decode): Fixed a small bug in - ACE_Name_Request::decode. type_ was not null terminated causing - some garbage to be returned. - -Thu Feb 15 14:57:06 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/Remote_Name_Space.cpp: Changed names of some parameters to - comply with ACE syntax. - -Wed Feb 14 13:36:31 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/Local_Name_Space.cpp (resolve): Type support has been added - to Name_Server. A new class called ACE_NS_Internal was created to - keep value and type information. - -Fri Feb 9 17:12:00 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * "Officially" released ACE 4.0 - - * ace/OS.i (sema_post): Fixed a bug in the NT port. - - #elif defined (ACE_HAS_WTHREADS) - return ::ReleaseSemaphore (*s, 1, 0); - #endif /* ACE_HAS_STHREADS */ - - This returns 1 for success, and disturbs cond_broadcast... - This was replaced by: - - #elif defined (ACE_HAS_WTHREADS) - return ::ReleaseSemaphore (*s, 1, 0) ? 0 : -1; - #endif /* ACE_HAS_STHREADS */ - - Thanks to Jesper S. M|ller (stophph@diku.dk) for this. - - * ace/OS.i (cond_init): Fixed a bug in the NT condition synch - code, as the initial count of the semaphore was 1. This gives an - inconsistent condition: The first waiter went straight through... - Change in ACE_OS::cond_init: - - if (ACE_OS::sema_init (&cv->sema_, 0, type, name, arg) != 0) - return -1; - - Thanks to Jesper S. M|ller (stophph@diku.dk) for this. - - * ace/Singleton.cpp: Fixed a stupid bug that was caused by failure - to #include "ace/Synch_T.h"... Thanks to Neil Cohen and Byron - Riggs for giving me insights on what the problem was. ACE now - compiles on HP/UX. - -Fri Feb 9 11:07:04 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * tests/Naming/server/Server_Test.cpp (init): Modified server - tests to dynamically link Naming Services. Both client and - server tests now make use of the ACE dynamic linking mechanisms. - - * ace/Local_Name_Space.cpp: Added list_values() to Name - Server. The functionality is very similar to list_names (returns - list of values that match a pattern). - - * tests/Naming/client/Client_Test.cpp (bind): Replaced all uses of - cerr and cout with ACE_ERROR, ACE_ERROR_RETURN, and ACE_DEBUG. - Split the file Client_Test.cpp into two files -- Client_Test.cpp - and Name_Service.cpp (similarly .h file) each containing the - corresponding class. Modified svc.conf to work with the changes. - -Thu Feb 8 02:05:26 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Log_Msg.cpp (log): Enhanced the Log_Msg class so that it - supports "nested" calls via %r. If SILENT mode enabled, nested - outputs will enclosed in {..} brackets in thread-specific - storage. Thanks to Alexandre Karev for - suggesting this. - - * ace/Synch: Added a new class called ACE_Null_Condition_Mutex. - This is necessary to fix bugs with stupid compilers... Thanks - to Zusman Mark for reporting this. - - * tests/Naming/client: made a first pass implementation of a - client application that dynamically links in a Naming_Context - based on information provided by the svc.conf file. - - * ace/Name_Options: Fixed yet more problems with dynamic memory - management. The old version didn't make a copy of the strings - it was passed and this caused major problems. - - * ace: Fixed a whole slew of problems with the ACE Name Server - stuff that arose from inconsistent use of const char * vs. char - *... - -Wed Feb 7 00:58:45 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/CORBA_Handler.cpp (ACE_MT_CORBA_Handler): Added new - enhancements to ACE_MT_CORBA_Handler to make it work correctly - with Windows NT. Thanks to Irfan for making these changes. - - * ace/Connector.cpp (fini): Make another workaround for bugs with - MSVC++ 2.0... - - * ace/SPIPE_Connector.cpp (connect): Added a call to ACE_CLR_BITS - (flags, O_CREAT) to make darn sure that the O_CREAT flag is not - set. Thanks to Chris Cleeland for suggesting this. - -Tue Feb 6 01:40:29 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/OS.h: added a new prototype to OS.h that should help with - portability to nasty platforms with broken rand_r() definitions. - Thanks to Aurelio Nocerino - for suggesting this. - - * Local_Tokens: Changed all uses of enumerals MAXTOKENNAMELEN and - MAXCLIENTIDLEN to symbol #defines ACE_MAXTOKENNAMELEN and - ACE_MAXCLIENTIDLEN. This works around bugs with HP/UX. - Thanks to Neil Cohen for reporting this problem. - - * ChangeLog: split the ChangeLog files into 4 separate files -- - one for '96, '95, '94', and '93. Hard to believe I've been - working on this stuff for so long! - - * ace/OS: Fixed the use of ::memset to replace sizeof buffer with - sizeof (ACE_SERVENT_DATA) and sizeof (ACE_HOSTENT_DATA). This - fixes bugs that surfaced on AIX. Thanks to Chris Lahey for - finding these. - - * ace/SPIPE_Addr.cpp (ACE_SPIPE_Addr): Fixed a bug in - SPIPE_Addr::SPIPE_Addr(const SPIPE_Addr&). What happens is that - when the size is calculated it does not take into account the - required zero byte at the end of the rendezvous_ member. Thanks - to Chris Cleeland for reporting this. - - * ace/Local_Tokens: Had to move all ACE_Token_Proxy methods from - Local_Tokens.i to Local_Tokens.cpp and remove INLINE - otherwise - gcc reported them as undefined methods during linkage stage. - Thanks to Zusman Mark for - reporting this. - - * ace: Changed ACE_Name_Request_Reply::LAST to - ACE_Name_Request_Reply::MAX_ENUM to avoid problems with name - conflicts on OSF/1. Thanks to Eshel Liran - for suggesting this. - - * ace/Synch_T: Fix all definitions of ACE_Atomic_Ops so that they - compile correctly on platforms that lack threads! Thanks to - Alexandre Karev for noticing this. - - * include/makeinclude: Added a new config file from Bryon G. Rigg - , which should allow ACE to build on - Linux. - - * ace/Remote_Tokens.cpp: Moved ACE_TSS_Connection to - Remote_Tokens.h to avoid problems with AIX. Thanks to the - ever-vigilant Chris Lahey for reporting this. - -Mon Feb 5 23:34:42 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu) - - * Added CORBA_Ref.h which contains the new class ACE_CORBA_Ref. - This class provides a nice wrapper for making the use of Orbix - object references more transparent. This is done by automating - the release and duplicate calls. - -Mon Feb 5 15:43:17 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace: added Prashant's latest changes to the Name_Handler*, - Naming_Context*, and Remote_Name_Space*. These changes make it - possible to retrieve lists of values based on a pattern, which - can be a regular expression. - - * Moved the apps/Name_Server/Client-Server tests into tests/Naming - and most of the apps/Token_Server/* tests into tests/Tokens to - conform to Karlheinz's testing style. - - * ace: Modified a number of files in ACE to make it compile - correctly with MSVC++ 2.0. - -Sun Feb 4 23:58:43 1996 Douglas C. Schmidt (schmidt@mambo.cs.wustl.edu) - - * ace/Reactor: Generalized ACE_Null_Callback to work correctly - with Windows NT (which lacks pipes). The new design uses the - ACE socket wrappers for NT. It requires very few changes to the - code to handle NT now! Also changed the name to - ACE_Notification_Handler, which is more descriptive. - -Sun Feb 4 14:47:50 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Remote_Tokens.cpp: Reworked ACE_Singleton to avoid - portability problems on compilers like GCC. - -Thu Feb 1 12:47:46 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Remote_Tokens.cpp: Generalized the parameters passed into - ACE_Singleton so they would compile on HP/UX and other platforms - that lack threads. Thanks to Neil Cohen for noticing the - problem. - -Wed Jan 31 22:49:13 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace: Modified a number of minor things in ACE to get it to - compile successfully with Windows NT MSVC++ 4.0. Updated the - INSTALL file to explain this process better... - -Tue Jan 30 01:12:07 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/CORBA_Handler.cpp: changed things so that no diagonistic - messages are printed. - - * Regenerated all the ACE manual pages to bring them up to date - with the recent changes. - - * ace/Malloc.h: Modified the ACE_Malloc header file so that it - works correctly when ACE_MALLOC_STATS is enabled. Thanks to - Alexandre Karev for reporting this. - - * ace/OS.cpp (mutex_lock_cleanup): removed the leading & before - p_lock. Thanks to Chris Lahey for noticing this. - - * ace: Added the new ACE_Singleton class. This class uses the - Adapter pattern to turn ordinary classes into Singletons - optimized with the Double-Check pattern. - - * Added Tim's latest Token Server changes (which include support - for local and remote mutexes and readers/writer locks) and - Prashant's latest Name Server changes (which allows the contents - of a Name Server to be dumped and restored to/from an ASCII - file). - -Mon Jan 29 02:22:23 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Handle_Set: Changed MAX_SIZE and WORD_SIZE to MAXSIZE and - WORDSIZE to avoid name collisions with HP/UX. Thanks to Byron - Rigg for suggesting this. - - * ace/Time_Value.h: Added a new config symbol ACE_HAS_SVR4_TIME to - differentiate between UNIX platforms that support "POSIX_TIME" - (i.e., timespec_t) and those that support "SVR4_TIME" (i.e., - timestruc_t). This is necessary to work around HP/UX... Thanks - to Byron Rigg for suggesting - this. - - * ace/config-hpux-10.x.h: config-hpux.h has now been renamed to - config-hpux-10.x.h and config-hpux-9.x.h. Thanks to Byron Rigg - for suggesting this. - - * ace/Synch_T: Added a new method called ts_get() and made both - the operator-> and operator TYPE * call this. I hope this will - fix a bug with HP/UX reported by Neil Cohen... - - * ace/OS.i (dlclose): Added Win32 support for dlclose(). Thanks - to Todd L. Montgomery for pointing the way - here... - - * ace: Split off the old class ACE_Dynamically_Allocated, renamed - it ACE_Dynamic, put it in a separate file called Dynamic.*. - This is necessary to solve nasty multiple definition problems - with compilers that require the source of template. - - * ace/Synch_T: moved - - template TYPE * - ACE_TSS::make_TSS_TYPE (void) const - { - return new TYPE; - } - - out from condition compilation block - - #if (defined (ACE_HAS_THREADS) && defined(ACE_HAS_THREAD_SPECIFIC_STORAGE)) - - in file Synch_T.cpp. This class member called in many other - places regardless ACE_HAS_THREADS and - ACE_HAS_THREAD_SPECIFIC_STORAGE defined or not... - - * ace/Name_Handler.cpp: Changed the use of the "inherited" typedef - to fully expand to ACE_Svc_Handler. This is necessary to workaround bugs with AIX. - Thanks to Chris Lahey for reporting this. - - * tests and apps: Fixed an odd problem that only surfaced recently - with GNU G++. Apparently, it doesn't like function-style casts - of the form ACE_SignalHandler (foo), but will accept - (ACE_SignalHandler) foo. Since both approaches are equally good - for what I'm doing, I've updated all the code in ACE to be more - portable. - -Sun Jan 28 12:24:58 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * tests/Shared_Malloc/test_malloc.cpp (spawn): when forming - argv[] for execv, moved - - argv[ ... ] = Options::instance ()->debug () ? "-d" : ""; - - to the end of the vector just before terminator. This will - allow to pass rest of arguments to exec if -d switch not - specified. Thanks to Alexandre Karev - for reporting this. - - * tests/Shared_Malloc/Malloc.cpp: To avoid conflict with - ACE_DEFAULT_SEM_KEY in OS.h changed SEMA_KEY value in - tests/Shared_Malloc/Malloc.cpp to ACE_DEFAULT_SEM_KEY + 1. - Thanks to Alexandre Karev for reporting - this. - - * ace/SV_Semaphore_Complex.i: Changed all arguments in calls like - - this->acquire( n+2 ) - and - this->tryacquire( n+2 ) - to - this->acquire( n ) - and - this->tryacquire( n ) - . - Since the semaphore number is incremented by 2 in - SV_Semaphore_Complex::acquire - and - SV_Semaphore_Complex::tryacquire - - when SV_Semaphore_Simple::(acquire/tryacquire) is called. - Thanks to Alexandre Karev for pointing - this out. - -Sat Jan 27 16:14:27 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Read_Buffer: Added a new component that efficiently reads in - an artibrarily large buffer from a file up to an including a - termination character. Also performs search/replace on single - occurrences a character in the buffer using the priniciples of - Integrated Layer Processing. - -Fri Jan 26 12:01:06 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Thread_Manager: Made a small change to workaround the use of - a struct type for thread_t and hthread_t in HP/UX. Thanks to - Bryon Rigg for noticing this. - -Thu Jan 25 19:54:01 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Svc_Handler: Added some minor changes to account for - limitations with GNU G++. I think the new implementation will - be portable across all C++ platforms. - - * ace/SV_Semaphore_*: Widened the interface of SV_Semaphore* - classes to include a flags parameter. This can be used to pass - in SEM_UNDO, which is important in many applications. Thanks to - Andrew Gilbert for suggesting this. - - * ace/Synch_T.cpp: We are forced to "cast away const" inside of of - the ACE_TSS const methods in order to make the ACE_Guard work. - The right thing to do would be to make the lock "mutable" but - that's hopelessly non-portable. - -Thu Jan 25 14:34:12 1996 Douglas C. Schmidt (schmidt@merengue.cs.wustl.edu) - - * ace/Log_Msg: Fixed a minor bug in ACE_Log_Msg that kept - resetting the restart and iostream value no matter what we'd set - it to before. Thanks to Prashant for finding this. - - * bin: Fixed up the Makefile process for the clone program. Now - it builds without having to depend on ACE. Thanks to Brad Brown - (bbrown@rdxsunhost.aud.alcatel.com) for suggesting this. - - * ace/Synch: Modified ACE_Condition*.remove so that cond_destroy() - is called in a loop if the condition variable is BUSY. This - avoids a condition where a condition is signaled and because of - some timing problem, the thread that is to be signaled has - called the cond_wait routine after the signal call. Since the - condition signal is not queued in any way, deadlock occurs - unless this loop is used. Thanks to Chris Lahey for pointing - this out. - - * ace/CORBA_Handler: Made all the methods in ACE_CORBA_Handler - private to make sure that users don't inherit from this class! - Instead, the ACE_MT_CORBA_HAndler and ACE_ST_CORBA_Handler - should be used as Singletons. - - * ace/CORBA_Handler: Added new support for Orbix on Windows - NT. This requires clever use of macros in order to handle - inherent differences between generated code. - - * ace/Svc_Handler: Added a clever idiom that transparently checks - if we were allocated dynamically. This information is used by - the method to decide if we need to delete ... - The idiom is based on a paper by Michael van Rooyen - (mrooyen@cellnet.co.uk) that appeared in the April '96 issue of - the C++ Report. We've spruced it up to work correctly in - multi-threaded programs by using our ACE_TSS class. - - * ace/config-win32-msvc4.0.h (ACE_LACKS_RECVMSG): Fixed a typo - in the MSVC++ config files. - -Thu Jan 25 02:59:22 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Finally got the frigging library built on SGI. This was a chore - due to compiler bugs, but at least it's another datapoint for - successful cross-platform building... - -Wed Jan 24 00:10:29 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Time_Value.cpp (operator-=): Changed operator += and - operator -= to use const ACE_Time_Value & rather than - ACE_Time_Value &. Thanks to Alex V Maclinvosky for noticing - this. In addition, also changed *all* ACE_Time_Value parameters - to be const ACE_Time_Value &. This should reduce the number of - excess constructors called... - - * ace/OS: Added Chris Lahey's latest changes that introduce POSIX - pthread cancellation cleanup handlers. Also added an herror() - function that is comparable to perror(). - - * ace/OS: (thr_join): Added a new version of thr_join() which - works for Windows NT. Windows NT requires a HANDLE, which is - fundamentally incompatible with other things... - - * ace/Thread_Manager: added two new methods that return the - ACE_Thread_Descriptor corresponding to either a thr_id or a - thr_handle. - - * ace/Thread_Manager: Made the spawn() interface compatible with - the other spawn() interfaces in ACE_OS and ACE_Thread by adding - the hthread_t type. - - * ace/Log_Msg.cpp (log): Fixed things up so that we can now print - out the thread id for all versions of threads! - - * ace/OS: Added a new overloaded version of ACE_OS::thr_self() - that returns the "kernel" thread id. This is necessary on - systems like NT and AIX, which separate kernel thread ids from - user thread ids. Thanks to Chris Lahey for suggesting this. - -Tue Jan 23 01:17:23 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/OS.i (sigwait): Changed the parameter of sigwait() from - const sigset * to sigset *. Thanks to Neil Cohen for chasing - this down on SunOS 5.5.... - - * ace/Malloc_T.cpp: Fixed a typo in bind() whereby - the test if (duplicates == 0 || this->shared_find (name) != 0) - should be if (duplicates == 0 && this->shared_find (name) != 0). - Thanks to the ever vigilant Alexandre Karev - for reporting this. - - * tests: Fixed all test programs that previously used the "execl" - family of system calls to use the "execv" family instead. - - * ace/OS: Added support for the "execv" family of exec() system - calls. Unlike the "execl" family, these calls are easy to - support since they don't require variadic arguments. I've added - the hooks for the "execl" family, as well, but haven't actually - implemented them yet. - - * ace/Memory_Pool.cpp (ACE_Shared_Memory_Pool): Fixed a bug that - was tickled when pool_name == 0. Thanks to Alexandre Karev - for reporting this. - - * ace/OS.h: removed FD_SETSIZE from the ACE_WIN32 stuff since this - is defined in winsock.h. - - * ace/OS.cpp (ACE_Spawn_Args): Added "f" to the parameter list. - - * ace/CORBA_Handler: Added a new macro called CORBA_T that masks - the incompatibilities between the version of Orbix on NT and on - Solaris. - - * ace/OS.h: Added support for compilers (like NT) that don't - support "mode masks" (these are used to give symbolic names for - file creation modes passed to open() and creat(). - - * ace/SString.cpp: Added Tim's new copy constructor code for - SString.cpp. This doesn't appear to be strictly necessary , but - it is more explicit and therefore it useful. - - * ace/Map_Manager.cpp: Fixed a bug in Map_Manager that was failing - to call the placement new operator for every element in the map - that was dynamically created by the allocator(). - - * ace/Synch_T: Added Tim's new ACE_TSS implementation. This - version is more flexible than the old one. - -Mon Jan 22 00:03:24 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Time_Value.h: changed a few minor things to get this - compiling again on NT. Thanks to Irfan for helping with this. - - * ace/Synch_Options: Changed all the "accessor" methods to be - const member functions at the request of Irfan. I just know - this is going to cause const cancer... ;-) - - * ace/Acceptor and Connector: Changed all parameters that take - ACE_Synch_Options & to take const ACE_Synch_Options & at the - request of Irfan. - - * ace/OS.i (uname): Added rudimentary support for the uname() - function for Windows NT. If anyone has suggestions on how to - fill in all these fields portably please let me know! - - * ace/Connector.h: Changed a stray -1 to ACE_INVALID_HANDLE. - Thanks to Irfan for noticing this. - - * ace/Profile_Timer.h: Added the keyword "public" to handle one - arm of the conditional compilation that is only exercised on - NT... Thanks to Irfan for noticing this. - - * ace/OS.i (mutex_init): Removed the call to - pthread_mutexattr_setkind_np() it isn't in the final POSIX - standard. - - * ace/Reactor.cpp (unbind): Removed the ACE_MAX3 template function - from OS.h and inlined its only use in the Reactor. This was - causing problems with some C++ compilers. Thanks to Mark Zusman - for reporting this. - - * ace/OS.i: Fixed a number of omitted return results in - gettimeofday() and ctime_r() that were masked by the - ACE_OSCALL_RETURN macros. Thanks to Mark Zusman - for reporting these. - - * ace/config-linux.h: Added new symbolic constants to handle the - fact that Linux seems to lack recvmsg(), sendmsg(), msync(), and - madvise(). Thanks to Neil Cohen for noticing this. - - * include/makeinclude: Fixed all the *-orbix.GNU files to use - $(ORBIX_ROOT)/lib rather than $(ORBIX_ROOT)/ace. Thanks to - Pramod Kumar Singh for reporting - this. - - * ace/config*.h: Changed all typos of the form ACE_HAS_SVSV_IPC to - ACE_HAS_SYSV_IPC. Thanks to Alexandre Karev - for reporting this! - - * ace/OS: Changed the order of parameters passed to thr_create() - to be consistent with all the spawn() and spawn_n() usages in - ACE. Thanks to Chris Lahey for pointing this out. - -Sun Jan 21 15:06:15 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace: Added a new "priority" parameter to the spawn() and - spawn_n() methods in ACE_Thread and ACE_Thread_Manager. This - allows us to pass the priority on down to thr_create(). Thanks - to Chris Lahey for pointing this out. Note that this change - required reordering the parameters so that the stack and - stack_size parameters now come last for these methods. Since - those are not likely to change much this is a good place to put - them (i.e., at the end). - - * ace/Thread.i (spawn_n): Added a new overloaded spawn_n() method - that accepts an array of thread_t's to be filled in. This is - useful if you want to know the thread IDs of any threads - created. - - * Changed ACE_OS::signal() to ACE_Sig_Action across all of ACE to - be portable to pthreads implementations. Thanks to Chris Lahey - for pointing this out. - - * ace/OS: Added a new set of OS C++ wrappers for POSIX pthread - cancellation routines. Thanks to Chris Lahey for these. - - * ace/Thread: Added a new set of ACE C++ wrappers for POSIX - pthread cancellation routines. Thanks to Chris Lahey for - these. - - * ace/Map_Manager: Revised the Map_Manager::bind method. This has - now been split into bind() and rebind() methods. The bind() - method is very simple -- if you try to bind() to something that - already exists you fail. The rebind() method allows you to - atomically update existing values in a map. It also gives you - back the existing values so that you can delete them if - necessary. The Local_Name_Space::bind() and rebind() methods - have been updated to use this new interface. - - * ace/Malloc_T.cpp (find): Fixed a typo -- find() should have set - its pointer parameter to node->pointer_, rather than - node->name_! This bug was revealed during testing of the ACE - Name Server. - - * ace/Local_Name_Space.cpp: Fixed bugs with computation of the - size of ACE_NS_Strings -- they needed to count the wchar_t's - correctly, along with several other minor fixes. These were - revealed during testing of the ACE Name Server. - - * ace/SString.cpp: Fixed several bugs that prevented the - assignment operators from working correctly. These were - revealed during testing of the ACE Name Server. - -Sat Jan 20 08:33:54 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Local_Name_Space.cpp (shared_bind): The args to to the - NS_String constructors were not in the correct order: - - wchar_t *value_rep = (wchar_t *) (ptr); - wchar_t *name_rep = (wchar_t *) (ptr + name_len); - ACE_NS_String ext_id (name.fast_rep (), name_rep, name_len); - ACE_NS_String int_id (value.fast_rep (), value_rep, value_len); - - They should be: - - ACE_NS_String ext_id (name_rep, name.fast_rep (), name_len); - ACE_NS_String int_id (value_rep, value.fast_rep (), value_len); - - Thanks to Irfan for noticing this. - - * ace/OS.h: defined the following in ACE_OS: - - #define MS_ASYNC 0 - #define MS_SYNC 0 - #define MS_INVALIDATE 0 - - under NT so that calls to mmap will port transparently. Thanks - to Irfan for suggesting this. - -Thu Jan 18 16:25:16 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace: Added a new symbol that indicates if the platform supports - the new BSD sin_len field of inet_addr. - - * ace/OS: added new support for AIX gethostbyaddr_r(), - gethostbyname_r(), and getservbyname_r(). This fixes some - problems caused by improper choice of buffer size. Also changed - the INET_Addr.cpp file to use these new changes. Thanks to - Chris Lahey for recommending these changes. - -Wed Jan 17 01:10:48 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/OS.i (printf): the ACE_OS::printf() function did not work. - Needed to call vprintf() internally, not printf. Thanks to - Chris Lahey for pointing this out. - - * Released version 4.0. - - * include/makeinclude: added the -lgen library to all the - platform_sunos5.*.GNU files. - - * ace/Memory_Pool.cpp: removed the INLINE macros in Memory_Pool.cpp. - Thanks to Alexandre Karev (karev@vxcern.cern.ch) for noticing - this! - - * ace/Malloc_T.cpp: moved the comment "Ce n'est pas une catst" - outside of the macro ACE_NEW_RETURN. The prepocessor truncates - the macro expansion when it encounters the comment. Thanks to - Greg Baker for pointing - this out. - - * ace/Reactor.cpp (close): added "return 0" at the end of the - close member function. The function is prototyped to return an - int and the compiler expects a return outside of the if clause. - Thanks to Greg Baker for - pointing this out. - - * ace/Stack.cpp (free_all_nodes): Removed a spurious ACE_OS that - was stuck on the front of ::delete. Thanks to Greg Baker - for pointing this out. - - * ace/OS.i: Added extern "C" to the prototype for syscall in OS.i. - Without it, you get unresolved symbols at link time. Thanks to - Greg Baker for pointing - this out. - - * ace/Message_Queue.cpp: Changed the return values for - enqueue_head(), enqueue_tail(), dequeue_head(), and - peek_dequeue_head() to return the number of messages that are - still on the queue. This helps some algorithms perform better - and avoid blocking unnecessarily. Thanks to Alex V Maclinvosky - for suggesting this... - - * ace/Synch_T.cpp (ACE_Condition): Fixed a bug in - ~ACE_Recursive_Lock and ~ACE_Recursive_Mutex that was causing - the destructor to be called twice (once implicitly and once - explicitly). Thanks to Chris Lahey for pointing this out. - -Mon Jan 15 12:44:29 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace: Created a new config symbol called ACE_HAS_ALLOCA_H. This - is required to differentiate between AIX and other versions of - UNIX. Thanks to Chris Lahey for pointing this out. - - * ace: moved config-hpux.h to config-hpux-9.x.h in anticipation of - the changes required to handle HP/UX 10.0! - -Sun Jan 14 23:38:23 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/OS.h (ACE_MAX3): Fixed the definition of ACE_MAX3 (it needed - a return value of template type T). Thanks to Mark Zusman - for noticing this. - - * ace: Added a new section to all the template files called - ACE_TEMPLATES_REQUIRE_SPECIALIZATION to deal with the screwy GNU - G++ semantics that are required if you *don't* have the template - repository patches. Thanks to Mark Zusman - for this. - -Fri Jan 12 00:47:57 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Time_Value.h: #included to the Time_Value.h - class so that it would be the first file included. This fixes a - problem with AIX. Thanks to Chris Lahey for reporting this and - suggesting the fix. - - * ace: Fixed a braino with the #ifdefs in SPIPE_Stream and - SPIPE_Acceptor. These were checking for ACE_WIN32 rather than - ACE_HAS_STREAM_PIPES. Naturally, that failed on versions of - UNIX (e.g., Linux) that lack STREAM pipes! Thanks to Neil Cohen - for taking time out of fighting blizzards to report this! - - * ace/Svc_Handler: Added a new method for handle_timeout, which - shuts things down by default. Thanks to Irfan for suggesting - this. - - * Fixed a minor problem caused when Tim added the Double-Check - pattern to ACE_ODB... - -Thu Jan 11 01:48:02 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Integrated AIX fixes from Chris Lahey . - These should allow ACE to build correctly using the AIX compiler - and it's screwy template mechanisms! - - * ace: Fixed some minor bugs that caused problems when compiling - with G++. - -Wed Jan 10 00:17:05 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Trace.cpp: Fixed a typo that was causing problems when using - ACE_TRACE (we were ending up with recursive tracing in the - ACE_Trace class!). Thanks to Detlef for noticing this. - - * ace/ACE.cpp: Moved methods from ACE.i to ACE.cpp and removed the - INLINE macro to deal with order of include problems with GNU - G++. - -Tue Jan 9 19:00:41 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Task.i (flush): Added a check to make sure that msg_queue_ - != 0 before trying to close() the queue. This solves a problem - if the queue has already been closed. Thanks to Alex V - Maclinvosky for reporting this... - - * tests/ASX/Event_Server/Event_Server: Fixed minor bugs in - Supplier_Router.cpp and Consumer_Router.cpp -- I was checking - for this->getq (mb) > 0 rather than this->getq (mb) >= 0. - Thanks to Alex V Maclinvosky for - noticing this... - - * ace/Synch_T.h: Commented out the ACE_ALLOC_HOOK stuff. This is - causing order-of-include problems on HP/UX. Also moved the - ACE_Null_Condition::wait() method to Synch_T.i to avoid the same - problem. Thanks to Greg Baker - for pointing this out. - -Sun Jan 7 18:57:49 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Makefile: Added the Dump file to ACE. Thanks to Tim for - fixing this up to make it ready for prime time. - - * Thanks to Craig Rodrigues for sending - me a new version of psnup that *finally* fixes the nasty - problems with "4-up" printing of postscript! This makes it much - easier to distribute ACE documentation... - -Sun Jan 7 18:31:07 1996 Tim H. Harrison (harrison@merengue.cs.wustl.edu) - - * ace: Used the "Double-Check" pattern to eliminate potential race - conditions when using Singletons in multi-threaded programs. - Classes affected included ACE_[MS]T_CORBA_Handler, Name_Options, - Trace, and ACE_ODB. - -Fri Jan 5 00:03:29 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/OS.i: Added the following to OS.i: - - #if defined (ACE_LACKS_SYSCALL) - int syscall (int, ACE_HANDLE, struct rusage *); - #endif /* ACE_LACKS_SYSCALL */ - - This should fix some problems with HP/UX. Thanks to Walt Akers - (akers@cebaf.gov) for pointing out the problem. - - * ace/Handle_Set: Fixed the Handle_Set conversion operator so that - it returns fd_set * rather than ACE_FD_SET_TYPE *. Thanks to - Walt Akers (akers@cebaf.gov) for pointing out the problem. - - * ace/Time_Value.h: I think I've fixed the problem with the order - of #includes with respect to POSIX and SVR4 time. The trick was - to put this test in ace/Time_Value.h and then to make sure that - the ace/config.h file was included at this point! Also changed - the symbol from ACE_HAS_POSIX_TIMERS to ACE_HAS_POSIX_TIME to be - more accurate. - -Thu Jan 4 23:16:59 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/OS.i (gettimeofday): Changed the implementation of - gettimeofday() to use the ::_ftime call rather than the more - complex ::GetSystemTime(), ::SystemTimeToFileTime() duo. - -Thu Jan 4 9:32:38 1996 Chris Lahey (clahey@ix.netcom.com) - - * ace/config-aix.h: added #define ACE_TEMPLATES_REQUIRE_SOURCE - to make ACE work with AIX C++ compiler. - - * include/makeinclude/platform_aix.GNU: - - Added -qtempinc to the CPPFLAGS - Removed the PIC= definition completely - - * ace/Task.h: ACE_Task::svc() should not be declared as a pure - virtual, removed = 0. - - * ace/Map_Manager.cpp: in trybind() member function, the line - int_id = ss.int_id_; - should be: - int_id = search_structure[index].int_id_; - -Thu Jan 4 01:23:38 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Map_Manager.cpp: Fixed a braino in Map_Manager -- didn't - need the parameter to shared_bind(). Thanks to Tim for - finding this! - - * ace/Log_Msg.cpp (instance): Tim Harrison did a noble service to - humanity by fixing a potential race condition in the instance() - Singleton of ACE_Log_Msg. - -Wed Jan 3 00:49:57 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace: Made some minor changes to fix portability problems with - SGI. Fortunately, this should also fix some other problems with - HP/UX another other non-thread platforms. - - * ace/ACE.cpp (format_hexdump): Added Todd Montgomery's amazing - "format_hexdump" method to class ACE. - -Tue Jan 2 20:47:57 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/SV_Semaphore*: updated the interface of the _Simple and - _Complex System V semaphore wrappers to include the _read() and - _write() forms of acquire() and tryacquire(). Note that I've - implemented these as calls to acquire() and tryacquire(), so - they don't add any extra behavior. This is needed for interface - conformance with other forms of ACE synchronization mechanisms. - - * ace/Time_Value.h: Changed the header to #include - in order to work around nasty "order of include" problems. - - * tests: Created a new directory called Win32. This contains test - programs that This directory contains test programs that have - been compiled and tested successfully under Windows NT. As we - get further along, we'll move this stuff into the general ACE - $WRAPPER_ROOT/tests directory (since of course all ACE programs - will run without any problems under Win32, right? ;-)). See - the ./tests/Win32/README file for instructions on how to build - these tests. - - * ace/Reactor.h: Moved the ACE_Handler_Repository out of the - ACE_MT_SAFE section of the code. This was a "typo." Thanks to - Walt Akers for reporting this. - -Mon Jan 1 01:18:12 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/ACE.i: Moved the recv_n() and send_n() methods from ACE.cpp - into ACE.i and set things so that if __INLINE__ is set then - we'll inline those too! - - * ace: Irfan and I got the first major part of the Win32 to work - finally! We made two socket programs (client and server) that - talked to each other and to UNIX. Things are really starting to - take shape! diff --git a/ChangeLog-96b b/ChangeLog-96b deleted file mode 100644 index 5dd7b809a42..00000000000 --- a/ChangeLog-96b +++ /dev/null @@ -1,5878 +0,0 @@ -Tue Dec 31 18:27:50 1996 Douglas C. Schmidt - - * ace/Log_Msg.cpp (log): Added a test so that if we're - (1) not printing to stderr and (2) aborting the program we still - print a message to stderr. - - * ace/Message_Block: Added synchronization support to - ACE_Message_Block. This is necessary now that we've got - reference counting to ensure that we don't have race conditions - when incrementing and decrementing the reference count in - separate threads. The approach is very clean and uses the new - ACE_Lock mechanism to conditionally acquire()/release() the - locking strategy if concurrency control is necessary. - - * ace/Synch_T: Created a new set of ACE_Lock and - ACE_Lock_Adapter<> classes which are similar in spirit to the - ACE_Allocator and ACE_Allocator_Adapter<> classes. These make - it possible to treat polymorphically synchronization mechanisms - in ACE polymorphically, *without* creating an entire new - parallel hierarchy of locking mechanisms. - - * ace/Synch: Added the full suite of acquire_{read|write}() and - tryacquire_{read|write}() methods to ACE_Semaphore and - ACE_Process_Semaphore so they will be consist with the other - synchronization APIs. - -Tue Dec 31 00:11:56 1996 Douglas C. Schmidt - - * Changed all uses of ACE_Event_Handler::RWE_MASK to - ACE_Event_Handler::ALL_EVENTS_MASK to reflect the fact that - we will soon have more than READ, WRITE, and EXCEPT events. - However, I've kept RWE_MASK around for backwards - compatibility. - - * examples/ASX/Message_Queue: Changed the tests so that they use - the new ACE_Message_Block::release() method rather than calling - delete explicitly. - - * apps/Gateway: Revised the implementation of the Gateway and Peer - applications to take advantage of the new ACE_Message_Block - reference counting scheme. - -Tue Dec 31 15:06:51 1996 David L. Levine - - * ace/Task.cpp: added comments that try to explain interaction - between ACE_Task_Base::svc_run () and ACE_Task_Exit instance - - * ace/Hi_Res_Timer.h: added comment to print_total () saying it - should only be used for incremental timings; added defaults to - a few print_ave/print_total args - - * ace/Hi_Res_Timer.{i,cpp}: inlined the constructor; trimmed output - if count is 1; rounded instead of truncated usecs portion of time - -Mon Dec 30 15:24:59 1996 Douglas C. Schmidt - - * ace/Message_Block: Added reference counting to ACE_Message_Block - so that we no longer have to clone() messages when we want to - pass them around "by reference." - - * apps/Gateway/Peer/Peer.cpp (init): The Peer_Acceptor had gotten - out of date wrt newer ACE features, so I updated it. - -Mon Dec 30 15:24:59 1996 Douglas C. Schmidt - - * ace/OS.h: Added a special case for ACE_UNUSED_ARG that works - with G++. Thanks to David Levine for this. - -Mon Dec 30 16:05:11 1996 David L. Levine - - * ace/OS.cpp (ace_thread_adapter): Updated ACE_TRACE arg - names (even though they're currently commented out). - - * ace/Task.cpp (svc_run): If TSS isn't supported, and on - Linux, for now, create the ACE_Task_Exit exit_hook instance - on the stack so that it's destructor will be called when - svc_run () completes. - -Sun Dec 29 18:38:03 1996 Douglas C. Schmidt - - * apps/Gateway/Gateway/File_Parser.h: Removed the endofline() - method declaration -- it doesn't seem to be defined anywhere. - - * ace/OS.h: Added an ACE_INT32 to complement the ACE_UINT32. - - * netsvcs/lib: Cleaned up all the ACE network services by removing - their SIGINT signal handler. This was interferring with the - main event loop's ability to shutdown... - - * apps/Gateway/Gateway: Once again changed the name of - *IO_Handler* to *Proxy_Handler* since these things are really - proxies, in the COS sense! - - * ace/Service_Record.cpp: Tidied up the implementation of - ACE_Module_Type::fini() so that it doesn't try to call fini() on - NULL pointers. Also, rather than explicitly deleting the reader - and writer Tasks, we call ACE_Module<>::close(), which knows how - to take care of all this stuff. - - * ace/Module.cpp: Added an extra parameter to close_i() so that we - can correctly pass the value of "flags" from close() in order to - prevent deleting tasks when we don't want to do this. - - * ace/Module.cpp: There was a bug in the open() method - since we were potentially deleting reader_q and writer_q twice - if memory allocation failed. - -Sat Dec 28 19:02:13 1996 Douglas C. Schmidt - - * ace/ACE.cpp: Changed the implementation of ldfind() so that it - doesn't try to add the DLL prefix (e.g., "lib") unless it - doesn't match filename. This is necessary to keep lots - of existing svc.conf files from breaking. - - * ace/Event_Handler.h: Added a new ACCEPT_MASK for use with the - new asynchronous accept() operation support for Win32. - - * ace: Added a new config file for WinNT 4.0 called - config-winnt-4.0-msvc4.x.h. This file contains #defines for new - features in WinNT 4.0 such as non-blocking acquire for - CRITICALSECTIONs (TryEnterCriticalSection()), - SignalObjectAndWait(), and CancelIO(). Oddly enough, these - functions seem to be missing from the MSVC++ 4.2 #include files, - so I added them to the config file. - - * ace: Changed the name of config-win32-msvc4.0.h to - config-win32-msvc4.x.h since this config file works for MSVC++ - 4.0, 4.1, and 4.2. - - * ace/Proactor: Added a new "cancel_io" method on the Proactor. - This makes it possible to cancel all I/O that is outstanding on - a thread. Thanks to Tim for help with this. - -Sat Dec 28 23:49:09 1996 Tim H. Harrison - - * ace/ReactorEx.h: Fixed some bugs with ACE_ReactorEx::dispatch. - For instance, the index should only be incremented when handlers - are dispatched. - - * ace/OS.i: Fixed some typos regarding the ACE_cond_t for NT. - - * examples/Reactor/Proactor/test_proactor.cpp: Dr. Schmidt and I - hacked this to be way cool. In particular, we no longer - have to know the size of the files to be transferred in - advance. This scheme uses a clever protocol that shuts down - the Peer Handler when (1) all input from the file has arrived, - (2) all output to the remote peer handler has been sent, and (3) - all input from the remote peer handler has been received. - The Peer Handler now uses calls close_writer on the stream - to notify the remote peer when its done writing. The Input - File Handler sends an mb==0 to tell the Peer Handler when - it's done reading from the file. The Peer Handle uses a - state variable to OR in all the different conditions for - exiting. It works. - -Fri Dec 27 23:39:19 1996 Douglas C. Schmidt - - * ace/Stream.cpp (pop): Modified the code so that we don't delete - the Module we are popping unless the flags request this. - - * ace/Service_Record.cpp (fini): Always make sure to first fini() - each Module, then remove() (and delete) them. - - * ace/Stream.cpp (remove): Updated the code so that we don't - delete the Module unless the flags request this. - -Thu Dec 26 18:51:22 1996 David L. Levine - - * ace/config-linux-lxpthreads.h: Has James CE Johnson's - latest adjustments to this config file. - -Tue Dec 24 10:55:20 1996 Douglas C. Schmidt - - * ace/OS.cpp (ace_thread_adapter): Changed the message that is - printed if we exit the thread. Thanks to Luca for this - suggestion. - -Tue Dec 24 15:38:43 1996 David L. Levine - - * ace/OS.i (cond_destroy): added call to event_destroy () - for waiters_done_ on WTHREADS platforms - - * ace/Future.cpp: added specialization of - template class ACE_Atomic_Op; - so that libACE is self-contained with respect to template - instantiations (with g++, for example) - - * ace/Malloc.cpp: added specialization of - template class ACE_Atomic_Op; - so that libACE is self-contained with respect to template - instantiations (with g++, for example) - - * examples/Reactor/Misc/test_reactors.cpp, - examples/Threads/future1.cpp, examples/Threads/future2.cpp, - examples/Threads/manual_event.cpp, examples/Threads/task_two.cpp, - performance-tests/Synch-Benchmarks/Benchmark.cpp, - tests/Future_Test.cpp, tests/Reactors_Test.cpp: instantiate - ACE_Atomic_Op with int instead of u_long so that it can use - the specialization in libACE - -Tue Dec 24 12:49:21 1996 David L. Levine - - * ace/OS.h (struct siginfo_t): added declaration of - siginfo_t (ACE_HANDLE *handles) to match definition in - OS.cpp. Thanks to James Johnson for pointing this out. - - * ace/OS.cpp (thr_create): fixed position of - #endif /* !ACE_LACKS_THREAD_STACK_SIZE */ directive, it - needed to be before the closing '}' of the block. Thanks to - James Johnson for pointing this out, also. - - * ace/OS.cpp: don't include ace/ARGV.h except on WIN32 because - it's only needed there, and don't compile ACE_Thread_Adapter on - VxWorks to save space - - * apps/Gateway/Peer/Gateway_Handler.h: changed #include "Event.h" - to be #include "Peer_Message.h" so that Peer_Header::ROUTING_ID - can be referenced in the class declaration. This subproject - still doesn't build, though; I think that Event.h is needed. - - * ace/OS.h (struct ACE_cond_t): declare waiters_done_ as - ACE_sema_t on VxWorks only, to avoid recursive struct - definition with ACE_event_t - - * ace/OS.i (ACE_OS::cond_*): on VxWorks only, use sema - operations on ACE_cond_t::waiters_done_ instead of event ops - -Tue Dec 24 10:55:20 1996 Douglas C. Schmidt - - * examples/Threads/task_three.cpp (main): Changed the use of - new-style C++ casts for ACE_Sig_Action to old-style C casts so - that more picky compilers like GCC won't complain. Thanks to - Sandro Doro for reporting this. - - * examples/Threads/task_two.cpp: Fixed a typo where int should be - used as the type for ACE_Atomic_Op rather than u_long. Thanks - to David Levine for noticing this. - - * ace/OS.i: Generalized the implementation of ACE_OS::cond_wait() - so that it will work with Win32 and VxWorks. Thanks to David - Levine for pointing this out. - - * ace/Synch_T.cpp: Removed ACE_Process_Condition since it isn't - really feasible to implement this as a template. At some point, - it should be reimplemnted as a non-template that is only - guaranteed to work on Solaris and some POSIX pthreads platforms. - -Sun Dec 22 21:23:57 1996 David L. Levine - - * ace/Acceptor.cpp: replaced two statements that looked like this: - "ptr && ptr->foo ()" with "if (ptr) ptr-> foo()" to prevent - compiler warnings about computed values that aren't used - - * netsvcs/clients/Tokens/manual/manual.cpp: added explicit "int" - return type to declaration of handle_exception (ACE_HANDLE) so - that compilers don't complain about no type - - * ASX/Event_Server/Event_Server/Options.cpp, - ASX/UPIPE_Event_Server/Options.cpp: rearranged initializers - in Options ctor to match declaration order - -Sun Dec 22 21:16:23 1996 Douglas C. Schmidt - - * ace/OS.cpp (thr_create): added a new ACE_HAS_PTHREADS_XAVIER to - deal with the sparam.sched_priority features of the Linux - pthreads implementation. Thanks to James Johnson for this. - - * ace/OS.i (thr_setprio): I forgot to define int policy = 0; - - * ace/SV_Semaphore_Simple.i: Removed the frigging LUSED macro and - updated the ACE_SV_Semaphore_Simple::name_2_key() method to - consider *all* the characters in the name. This will help avoid - nasty bugs when different lock names have a common prefix. - - * ace/Local_Name_Space_T.cpp (ACE_Local_Name_Space): Added a call - to "delete this->lock_" since we now allocate it dynamically. - - * apps/Gateway/Gateway/gatewayd.cpp: Changed call to - ACE_SVC_INVOKE from ACE_Gateway to Gateway. - - * ace/OS.i: In function thr_sigsetmask changed the line: - - #if defined (ACE_HAS_IRIX62_THREADS) - - to - - #if defined (ACE_HAS_IRIX62_THREADS) || defined (ACE_HAS_PTHREADS_XAVIER) - - Thanks to James CE Johnson for this. - - * ace/config-linux-[lx]pthreads.h: Added a #define for the - ACE_HAS_THREAD_SPECIFIC_STORAGE symbol. Thanks to James CE - Johnson for this. - - * ace: created a new config file called config-linux-lxpthreads.h. - This contains the ACE #defines necessary to use L. Xavier's - threading package on Linux. Thanks to James CE Johnson - for this. - - * build/gcc/ace/Synch: Moved the definition of the ACE_*Event - classes *outside* of ACE_HAS_THREADS so that the Proactor will - compile correctly even when there's no threading defined. - - * ace/config-linux-pthread.h: Added #define ACE_MT_SAFE, which - seems to have been missing. Thanks to James Johnson for - suggesting this. - - * tests/TSS_Test.cpp: Now that we've got Chris Lahey's fixes for - AIX we can run this test on AIX. - - * ace/OS.cpp (thr_create): Added a #ifdef for - pthread_attr_setstacksize() for Linux pthreads, which doesn't - seem to support this. Thanks to James CE Johnson - for this fix. - - * ace/OS.i: Added DCE pthreads fixes for OSF/1 3.2. Thanks to - Harry Gunnarsson for these. - -Sat Dec 21 13:54:45 1996 Douglas C. Schmidt - - * ace/Synch_T: Integrated a solution that will allow MVS to use - ACE_TSS. The problem is that the MVS C++ compiler requires an - extern "C" destructor function for pthread_key_delete and the - ACE_TSS stuff uses a paramatized C++ destructor function - (ACE_TSS::cleanup). To solve this, a new class - (ACE_TSS_Adapter) was created that encapsulates a thread - specific object and it's associated C++ destructor. The ACE_TSS - methods were then modified so that they provide access to the - thread specific object through the ACE_TSS_Adapter. Also added - a generic extern "C" cleanup routine that takes an - ACE_TSS_Adapter as an argument. It then calls the adapters - cleanup method passing it the saved address of the thread - specific object. Thanks to Chuck Gehr - for all of this. - - * ace/OS: Updated the code so that it will work with MFC and - AfxBeginThread(). Thanks to Detlef for these changes. - - * ace/README: Added two new #defines for ACE_LACKS_COND_T and - ACE_LACKS_RWLOCK_T to make it possible to define these in a - fine-grained manner for various platforms. - - * ace/OS.h: Restructured the ACE_HAS_THREADS section so that we - factor out the code for ACE_cond_t and ACE_rwlock_t so that it - is only defined if we don't support these features natively. - - * ace/ReactorEx: Added a new "alertable" parameter to the - handle_events() method. If alertable is true, then - WaitForMultipleObjectsEx is used as the demultiplexing call, - otherwise WaitForMultipleObjects is used. - - * ace/Signal.cpp: Had to move a few things around so that the code - would compile for HP/UX. Thanks to Neil B. Cohen - for reporting this. - - * ace/Acceptor.cpp: Updated the handle_close() method so that the - Acceptor shuts down the listen socket and prevents handle leaks. - Thanks to Irfan for reporting this. - -Thu Dec 19th 03:48:26 1996 Irfan Pyarali - - * ace/Local_Name_Space_T.cpp: Made sure that the mutexes are - getting named properly (both the mutex owned by the - Local_Name_space and the lock owned by the backing - store). For the time being I named these two to be the - extensions of the backing store file name. - - * ace/Local_Name_Space_T.cpp: Replaced the create_manager code - such that we use the double check pattern. This is simpiler - and easy to understand compared to the current code. - - * ace/Naming_Context.cpp: Gave the database name a default value. - - * ace/Malloc_T.cpp: The lock_name should never be 0. This will - cause all instances of the same pool to get different - mutexes. - -Sat Dec 21 09:43:35 1996 David L. Levine - - * ace/OS.{h,i}: fixes for VxWorks introduced in 4.1, and for - inlining: moved #include of OS.i after #defines but before - other ace #includes - -Thu Dec 19 15:58:09 1996 David L. Levine - - * ace/config-vxworks*.h, include/makeinclude/platform_vxworks*.GNU: - enable inlining on VxWorks by default - -Wed Dec 18 16:44:47 1996 Tim H. Harrison - - * ace/Proactor.cpp (dispatch): Changed this method to take an - int error parameter to set errno just before dispatching. - This allows us to better propagate overlapped I/O errors to the - handlers. - -Wed Dec 18 16:21:36 1996 David L. Levine - - * ace/OS.{h,i} and ace/INET_Addr.cpp: more VxWorks - gethostbyname () tweaks - -Wed Dec 18 15:24:13 1996 Tim H. Harrison - - * ace/Proactor.cpp (ACE_Proactor): Initialize completion_port_ to - 0. This is the only way that CreateIoCompletionPort works - first time in. ACE_INVALID_HANDLE makes it break. - - * (ACE_Proactor): Added a call to CreateIoCompletionPort in the - constructor so that GetQueuedCompletionStatus can be called - before ACE_Proactor::initiate is called. This is necessary if - an application is using the Proactor as a timer mechanism only. - -Tue Dec 18 7:58:07 1996 Tim H. Harrison - - * ace/Proactor.i (get_handle): Changed this to return - ACE_INVALID_HANDLE on non Win32 platforms. Also changed - shared_event_ from an ACE_Manual_Event to an ACE_Auto_Event. - This allows us to remove the call to reset from handle_signal. - - * examples/Reactor/Proactor/test_timeout.cpp: Added a new example - application to the Proactor example suite. Check the README for - more details. - - * examples/Reactor/ReactorEx/test_timeout.cpp: Added a new example - application to the ReactorEx example suite. Check the README for - more details. - - * ace/Service_Config.cpp: Fixed a bug in run_reactorEx_event_loop - (ACE_Time_Value &) so that it doesn't return on timeout. - -Tue Dec 18 7:06:32 1996 - - * ace/Proactor.cpp (handle_events): Once again removed the - timer_skew_ code. Changed the ACE_HANDLE global_handle_ to - ACE_Manual_Event shared_event_. Added a constructor that takes - an ACE_Timer_Queue *. Changed the implementation to use an - ACE_OS::sleep if only timers are registered. We need to figure - out a better approach than the sleep. - - * ace/Service_Config.cpp (run_proactor_event_loop): Changed this - to only return when an error occurs. If handle_events returns a - 0, then a timeout occurred, and we can continue to dispatch - events. We only return when all of the time has expired. - - * ace/Registry_Name_Space.h (ACE_Registry_Name_Space): Moved the - include statements below the ACE_WIN32 and UNICODE directives. - - * ace/OS.h (siginfo_t): Added siginfo_t (ACE_HANDLE *handle) - constructor prototype. - -Wed Dec 18 06:37:22 1996 Douglas C. Schmidt - - * ace/OS.i (cond_wait): Added the new algorithm for condition - variable emulation on Win32. (and VxWorks). This should fix the - nasty problems we had with earlier version (which weren't - "fair"). Thanks to James Mansion, Karlheinz, Detlef, and Irfan - for helping with this. - - * ace/Registry.h: Removed the "ACE_TURN_NOMINMAX_OFF" stuff - in order to simplify the code. Thanks to Irfan for this. - - * ace/OS.i (sema_post): Added a new overloaded version of - ACE_OS::sema_post(), which takes a "release count." This is the - number of times to release the semaphore. Note that Win32 - supports this natively, whereas on POSIX we need to loop... - - * ace/Proactor.cpp (handle_events): Changed the Proactor logic so - that it will correctly propagate any errors that occur to the - handle_{input,output}_complete callback. - -Tue Dec 17 20:56:56 1996 David L. Levine - - * ace/OS.{h,i}: on VxWorks: implemented ACE_OS::gethostbyname (), - and fixed inet_ntoa () to return -1 on failure - - * ace/OS.cpp: in ::spa () for VxWorks, zero out unused argv[] - slots to overwrite args from previous invocations OS.cpp - -Tue Dec 17 04:27:07 1996 Douglas C. Schmidt - - * ace/ReactorEx: Added a new feature to the ReactorEx. If we - enable the wait_all flag when calling - ACE_ReactorEx::handle_events() *and* we give an - ACE_Event_Handler (this is a new final param to the call) then - the handle_signal() call will be invoked on this - "wait_all_callback" object when all the handles become signaled. - Moreover, we pass in the array of signaled handled to through - the siginfo_t parameter (see the following ChangeLog entry for - details). If there is no wait_all_callback param, then all the - handle_signal() methods are invoked on all the handles. - - * ace/OS.h (siginfo_t): Augmented the siginfo_t interface so that - we can pass an array of signaled Win32 HANDLEs, in addition to - just a single HANDLE. This is used in the ReactorEx. - - * examples/Reactor/ReactorEx/test_reactorEx.cpp: Added a number of - enhancements to this test program based on discussions with - Irfan, Karlheinz, Dieter, and Detlef. - - * ace/Task_T.i (msg_queue): If we override the existing definition - of the Message_Queue in an ACE_Task then we need to delete the - existing Message_queue (if necessary and mark the Message_Queue - as no longer being a candidate for deletion (since we have - supplied our own definition). Irfan had added this earlier, but - it seemed to get lost... - - * examples/Reactor/Proactor/test_proactor.cpp: The class called - STDIN_HANDLEr is misnamed since we don't read from stdin, we - read from a file. Therefore, I've changed this to be - Input_File_Handler. - - * examples/Reactor/ReactorEx/test_{proactor,reactorEx}.cpp: - Changed misspellings of transfered to transferred. - - * ace/Memory_Pool.cpp (ACE_MMAP_Memory_Pool): Since NT doesn't support - SIGSEGV thre's no point in even trying to register for this - signal! - - * ace/OS.i: Reverted some lost UNICODE fixes -- thanks to Irfan - for finding these. - - * ace/Local_Name_Space_T.cpp (create_manager_i): Removed a - debug statement since it may be causing problems with printing - UNICODE. - -Mon Dec 16 11:25:55 1996 Douglas C. Schmidt - - * ace/OS.i (cuserid): Fixed the definition to ACE_OS::cuserid() so - that it uses LPTSTR. Thanks to Irfan for this fix. - - * ace/Task.cpp (activate): In ACE_Task::activate() there is a possibility to actually - "reactivate" the task using the flag. The following - illustrates that ability: - - if (this->thr_count_ > 0 && force_active == 0) - return 1; // Already active. - else - this->thr_count_ = n_threads; - - The thing is that, when the task is running and we reactivate it - (actually we add threads) the command should be: - - this->thr_count_ += n_threads; - - rather than - - this->thr_count_ = n_threads; - - That way thr_count_> holds the new number of threads currently - associated with the task. Thanks to Hamual for this fix. - - * ace/OS.i (inet_aton): Placed the return 1 within the curly - braces to make the HP/UX compiler happy. Thanks to Kenny Want - for reporting this. - -Mon Dec 16 12:56:43 1996 David L. Levine - - * ace/OS.i: removed spurious "*/" after an #endif. Thanks to - Harry Gunnarsson for reporting this. - - * ace/Svc_Conf_l.cpp: #ifdef'ed out ace_yyunput () and - ace_yy_{push,pop,top}_state () because they're not used, - and commented out a few "break"s after "return"s in switch - statements to prevent compiler warnings. - - * ace/Typed_SV_Message.i: reordered initializations in ctor to - match declaration order. - - * examples/Threads/Makefile, performance-tests/Misc/Makefile, - tests/Makefile: - Removed "LIBS += -lm" from these Makefiles because it doesn't - appear to be necessary, and not all platforms have a libm. - - * include/makeinclude/platform_sunos4_g++.GNU, platform_sunos5_g++.GNU, - platform_sunos5_x86_g++.GNU, platform_unixware_g++.GNU: - added -lm to LIBS because it was removed from the Makefiles, and - it's needed with g++. - - * netsvcs/lib/Makefile: removed /pkg/gnu/lib dependencies. Thanks - to Per Andersson for pointing - this out. - - * netsvcs/servers/svc.conf: changed _make_ACE_Logger() to - _make_ACE_Logging_Strategy() svc.conf. Thanks to Per Andersson - for reporting this. - -Sun Dec 15 13:01:17 1996 David L. Levine - - * ace/Naming_Context.cpp: reordered initializations in default ctor - to match declaration order. - - * ace/Svc_Conf_y.cpp: added parens to a couple of combined - assignments/conditionals to avoid compiler warnings. - - * include/makeinclude/platform_sunos5_sunc++*.GNU: reverted - SOLINK step back to creating real .so files, because it - seems to be necessary, sometimes, for template instantiation. - - * netsvcs/lib/Server_Logging_Handler.cpp: removed ACE_INLINE's. - - * tests/MM_Shared_Memory_Test.cpp: declare shm_key as char[] - instead of char *, so that the string gets put into the data - segment rather than the text segment. The string gets modified, - which causes a core dump with the g++/SunOS5.5 build if the string - is in the text segment. - -Sun Dec 15 10:29:20 1996 Douglas C. Schmidt - - * netsvcs/servers/svc.conf: Removed the "lib" prefix for the - netsvcs DLL. This is now added automatically by the - ACE::ldfind() operation. - - * ace/SString.cpp (ACE_CString): Removed the #pragmas for Win32. - They aren't necessary since we should replace the ACE_USHORT16 - cast with a char cast. Thanks to Amos Shapira - for reporting this. - -Sat Dec 14 14:25:38 1996 Douglas C. Schmidt - - * build/SunOS5.5/tests/UPIPE_SAP_Test.cpp (main): Fixed several - minor bugs with UPIPE_SAP_Test.cpp. - - * ace/OS.i (thr_join): Added implementations for Solaris threads - and most versions of POSIX pthreads where ACE_hthread_t and - ACE_thread_t are the same type! - - * ace/OS: Began adding hooks so that we can eventually move away - from the current split between ACE_thread_t and ACE_hthread_t - and unify them via ACE_Thread_ID. - - * ace/{OS,Thread}.h: Changed the interface of thr_getprio() so - that it takes an int & rather than an int *. - - * ace/OS.i (thr_getprio): Fixed a minor bug for Win32 where we - weren't depositing the thread priority into the return value! - - * Makefile: Changed the order in which things are built so that - netsvcs are built right after libACE, followed by the tests. - -Sat Dec 14 11:54:22 1996 Douglas C. Schmidt - - * apps/Gateway/Gateway/Consumer_Map: Change the Consumer_Map class - so that it was no longer templatized. There isn't any point in - doing this since we aren't going to be changing these types for - this application. - - * apps/Gateway/Gateway: Factored out the code for selecting the - concurrency strategy into a separate *.h file called - Concurrency_Strategy.h. - - * apps/Gateway/Gateway: Began revising the Gateway application to - use the new ACE Event Channel. - - * ace/Svc_Handler: Now that we've got put() and svc() with no-op - defaults in class ACE_Task_Base, we don't need them in - ACE_Svc_Handler anymore, so I removed them! - - * ace/Task: Finally got sick of having to provide no-op - open()/put()/close() routines in all ACE_Task subclasses, so I - changed these methods from pure virtual to virtual with default - no-op behavior. Updated all the tests, as well. - -Sat Dec 14 11:39:15 1996 David L. Levine - - * ace/{Module,Stream,Svc_Handler,Synch_T,Task_T}.cpp and Synch_T.i: - removed ACE_INLINE qualifier from functions in .cpp files; in - the case of Synch_T, moved ACE_INLINE functions from .cpp to .i file - - * apps/Gateway/Gateway/Routing_Table.cpp, - examples/ASX/Event_Server/Event_Server/Peer_Router.cpp, - examples/ASX/UPIPE_Event_Server/Peer_Router.cpp: - removed ACE_INLINEs from .cpp files - - * ace/CORBA_Handler.h and ace/Token_Collection.{h,cpp}: - changed __INLINE__ to __ACE_INLINE__ - - * ace/Svc_Conf_y.cpp: commented out unused arguments to - suppress compiler complaints - -Fri Dec 13 22:07:11 1996 David L. Levine - - * include/makeinclude/platform_sunos5_sunc++*.GNU: replaced - SOLINK step in build of shared objects for SunOS5 with SunC++ - with symlink from .so to .o file. - - * ace/config-vxworks*.h: added ACE_NEEDS_SYSTIME_H to VxWorks - configs because it's needed with inlining - - * include/makeinclude/platform_vxworks*.GNU: cleaned up VxWorks - config files - -Fri Dec 13 00:53:34 1996 Douglas C. Schmidt - - * ace: Replaced all uses of - - #if defined (.....) // .... - - with - - #if defined (.....) /* ... */ - - so that broken C++ compilers won't complain. Thanks to - John Cosby for reporting this. - - * ace/Thread.i: Updated the signature of getprio() and setprio() - so that they take ACE_hthread_t. Thanks to Wayne Vucenic - for finding this. - - * Reran all the tests on NT and Solaris. Everything seems to - work. Therefore, incremented the version number to 4.1 and put - it out for ftp and http. - -Thu Dec 12 18:51:04 1996 Douglas C. Schmidt - - * tests/Priority_Task_Test.cpp (svc): Added a new test to exercise - the new "priority" feature of ACE_OS::thr_create() - (which is also available to ACE_Task). - - * ace/Thread: Added getprio() and setprio() methods to ACE_Thread. - -Fri Dec 13 13:44:12 1996 David L. Levine - - * ace/config-vxworks*.h: added ACE_NEEDS_SYSTIME_H to VxWorks - configs because it's needed with inlining - - * include/makeinclude/platform_vxworks*.GNU: cleaned up VxWorks - config files - -Thu Dec 12 18:51:04 1996 Douglas C. Schmidt - - * ace: Added a new macro called ACE_UNUSED_ARG() to keep - the compiler from outputting warnings about unused - arguments. So far, this is mostly done for Win32, but it - should be easy to do it for other compilers. Thanks - to Matthias for these changes. - - * ace/OS.cpp: Added support so that thread priorities will - automatically be set when we spawn threads using - ACE_OS::thr_create(). - - * ace/OS.cpp: Simplified the logic for handling NULL thr_handles - and thr_ids. Now, we set all this stuff in one place at the - beginning of the function, rather than recomputing it all over - the place. - - * ace/config-aix-{3.2.5,4.1.x}.h: Added the - ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS flag. - - * ace/Thread_Manager.cpp (ACE_Thread_Control): Conditionally - compiled the logic for calling this->exit() in the destructor - for ACE_Thread_Control so that we only make this call if - ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS is *not* set. This will - prevent infinite recursion on platforms like AIX. Thanks to - Chris Lahey for reporting this. - - * apps/Gateway/Gateway/Channel.cpp (recv_peer): Added the logic - that makes sure we don't get screwed up by partial headers. - Thanks to Chris Cleeland for this. - -Thu Dec 12 20:55:02 1996 David L. Levine - - * include/makeinclude/platform_sunos5_sunc++*.GNU: removed - SOLINK step in build of shared objects for SunOS5 with SunC++: - it's not necessary. - -Thu Dec 12 03:48:26 1996 Irfan Pyarali - - * ace/Naming_Context: Modified ACE_Naming such that on Win32, you - can use ACE_Registry_Name_Space. - - * ace/Registry_Name_Space: ACE_Registry_Name_Space is a Name_Space - which uses ACE_Registry as the persistence mechanism. Win32 - clients of ACE_Naming can now start using (the more robust and - reliable) Registry persistence without any major code changes. - - * tests/Naming_Test.cpp: Added the use of Registry_Name_Space to - the test if we are on Win32 and UNICODE is turned on. - - * examples/Registry: Fixed UNICODE behavior of the tests - -Wed Dec 11 20:33:28 1996 Douglas C. Schmidt - - * ace/Synch_T.h: Added a warning that indicates why it isn't - possible to use ACE_Process_Condition on - Win32... - - * tests/TSS_Test.cpp: Moved the Errno class to a file - TSS_Test_Errno.h and replaced the Errno class with the #include - "TSS_Test_Errno.h" to work around "features" with AIX C++'s - template instantiation scheme. - - * ace/OS.i (inet_aton): Replaced the use of ((ACE_UINT32) -1) with - ((ACE_UINT32) ~0). I expect this is more portable... - - * tests/run_tests.bat: Added "Service_Config_Test" to the - run_tests.bat file. - -Tue Dec 10 22:59:26 1996 Irfan Pyarali - - * tests: Added Service_Config_Test to Win32 makefiles. - - * ace/OS.i (inet_aton): We need to cast htonl to (long) - - * tests: Added/Fixed UNICODE behavior of the following: - - MM_Shared_Memory_Test.cpp - Mem_Map_Test.cpp - Mutex_Test.cpp - Naming_Test.cpp - Process_Mutex_Test.cpp - SPIPE_Test.cpp - Time_Service_Test.cpp - Tokens_Test.cpp - UPIPE_SAP_Test.cpp - - * netsvcs/lib: Added/Fixed UNICODE behavior of the following: - ACE_TS_Clerk_Processor::poolname_ - -Tue Dec 10 00:33:08 1996 Douglas C. Schmidt - - * tests/Service_Config_Test.cpp (main): Added a new method called - run_test() to ensure that ACE_Service_Config daemon is destroyed - before we try to end the test. - - * ace/OS.i (inet_aton): We need to cast -1 to (ACE_UINT32). - - * tests/Process_Mutex_Test.cpp (main): Added a minor change to - make gcc happy by moving the definition of int i *outside* the - loop. Thanks to Thilo Kielmann - for reporting this. - - * ace/OS.h: gcc complains about memcmp, memcpy, strcmp, and strcpy - (from ACE_OS::) being used before defined inline. This is due - to the include of SString.h at the end of OS.h. So I reordered - things in accordance to the changes from Thilo Kielmann - . - - * build/SunOS5.5/examples/Shared_Malloc/test_multiple_mallocs.cpp: - Changed the definition of char *base_addr to void *base_addr. - - * ace/Memory_Pool.cpp (ACE_MMAP_Memory_Pool_Options): Changed the - definition of char *base_addr to void *base_addr. - - * Put out what is hopefully the final beta release of 4.0.33. - - * ace/Message_Queue: Added the enqueue() method again to maintain - backwards compatibility. Thanks to Karlheinz for pointing out - the need for this. - - * ace/Service_Config.h: The svc.conf factory functions were - begin defined as extern "C", but the function pointer defined in - the ACE_Static_Svc_Descriptor struct is not declared as extern - "C", therefore, there was a mismatch. Here's how to fix this: - - In Service_Config.h, before the struct ACE_Static_Svc_Descriptor - add: - - extern "C" { - typedef ACE_Service_Object *(*ACE_SERVICE_ALLOCATOR)(void); - } - - Then in the struct alloc_ field was changed as follows: - - from: ACE_Service_Object *(*alloc_)(void); - to: ACE_SERVICE_ALLOCATOR alloc_; - - Thanks to Chuck Gehr for this. - - * ace/Memory_Pool.cpp (commit_backing_store_name): Changed uses of - "counter" from int to size_t to remove warnings. - - * ace/ACE.cpp: Reimplemented the ACE::daemonize() method to - conform to the latest version in Richard Steven's new UNP book. - - * ace/INET_Addr.cpp (set): Replaced the use of ACE_OS::inet_addr() - with ACE_OS::inet_aton(). Thanks to W. Richard Stevens for this - idea ;-). - - * ace/OS: Added a new function called inet_aton(), which is based - on a new POSIX socket addressing function that is non-ambiguous - in its return value (unlike inet_addr). - - * tests: Added a new Service_Config_Test.cpp to make sure that the - timeout features mentioned below work. - - * ace/Service_Config.cpp: Changed the implementation of - run_{reactor,proactor,reactorEx}_event_loop so that it returns - if the corresponding handle_events() method times out. - Thanks to Phil Logan for reporting - this. - - * ace/LSOCK_Stream: Moved get_remote_addr() from the private part - of the class and implemented it using get_local_addr(). This - fixes problems that previously occurred when using the - ACE_Connector with ACE_LSOCK_Stream. Thanks to Stuart Powell - for this suggestion. - -Mon Dec 9 22:03:30 1996 Douglas C. Schmidt - - * examples/Threads: Updated the test.mak and test.mdp files to - reflect the new name changes. Thanks to Matthias for this. - - * ace/ACE.cpp (ldfind): Added new code that will work if the - "base" part of the filename to look for is the same on both UNIX - and NT. The library name will be made up of three parts - [ACE_DLL_PREFIX]base part[ACE_DLL_SUFFIX], where prefix is "lib" - on UNIX and nothing on NT and suffix is ".dll" on NT and ".so" - on UNIX. If either prefix or suffix are missing from the - filename you supply to ldfind they will be added - automagically. This all will work independent from the pathname, - which will be treated completely separately from the filename - and can contain either UNIX style or NT style separators. - - Examples: - Source NT UNIX - =============================================================== - netsvc netsvc.dll libnetsvc.so - (PATH will be evaluated) (LD_LIBRARY_PATH evaluated) - - libnetsvc.dll libnetsvc.dll libnetsvc.dll + warning - netsvc.so netsvc.so + warning libnetsvc.so - - ..\../libs/netsvc ..\..\libs\netsvc.dll ../../libs/libnetsvc.so - (absolute path used) (absolute path used) - - The first and the last of these 4 examples is the way the new - functionality is supposed to be used. You simple supply the - pathname and the base part of the filename and ldfind will - figure everything out. - - Thanks to Tilo Chris for this code. - - * ace/OS.h: Added a new macro called ACE_DLL_PREFIX, which is - defined to "" on Win32 and "lib" on UNIX. Thanks to Tilo for - this. - - * ace/Reactor.cpp (detach): After further thought, I - have commented out the - - eh->reactor (0); - - call since I don't think we really need it. - - * ace/Reactor.cpp (detach): There was a problem with - ACE_Reactor::detach(). - - The following lines: - - // Reinitialize the Reactor pointer to 0. - eh->reactor (0); - - should be moved before: - - eh->handle_close (handle, mask); - - This will render the reactor handle not available in the - handle_close method but at least handle_close can delete itself. - Thanks to Luca for reporting this. - - * examples/Reactor/Ntalker: Replaced the use of ACE_OS::getopt() - with the ACE_Get_Opt iterator. Thanks to Alexandre Karev - for suggesting this. - - * ace/OS.h: Moved the #endif /* ACE_HAS_DCETHREADS || - ACE_HAS_PTHREADS */ once again in order to make sure that the - right things happen when #if defined (ACE_HAS_THREADS) is - *false*. Thanks to Robert Lyng - for reporting this. - -Mon Dec 9 02:06:48 1996 Irfan Pyarali - - * ace/SString: Made accessors return const references. - - * ace/OS.h: Added macro ACE_WIDE_STRING which allows the - conversion of char* to wchar_t* when UNICODE is turned on. - - * ace: Added/Fixed UNICODE behavior of the following: - - /* Local_Name_Space */ - ACE_Local_Name_Space_T::context_file_ - - /* ACE */ - ACE::basename - - /* Token */ - ACE_Token::ACE_Token - - /* Synch */ - ACE_File_Lock::ACE_File_Lock - - /* SPIPE_Addr */ - ACE_SPIPE_Addr::addr_to_string - ACE_SPIPE_Addr::set - - /* FILE_Addr */ - ACE_FILE_Addr::addr_to_string - - /* DEV_Addr */ - ACE_DEV_Addr::addr_to_string - - /* Addr */ - ACE_Addr::addr_to_string - ACE_Addr::string_to_addr - Note: These two were removed from the base class since they are - not common to all Address classes. - - /* Malloc */ - ACE_Allocator_Adapter::ACE_Allocator_Adapter - ACE_Malloc::ACE_Malloc - - /* Process */ - ACE_Process::start - - /* Shared_Memory_MM */ - ACE_Shared_Memory_MM::ACE_Shared_Memory_MM - ACE_Shared_Memory_MM::open - - /* Proactor */ - ACE_Overlapped_File::ACE_Overlapped_File - ACE_Overlapped_File::open - - /* Log_msg */ - ACE_Log_Msg::open - - /* Naming_Context */ - ACE_Name_Options::namespace_dir - ACE_Name_Options::process_dir - ACE_Name_Options::database - - /* Registry */ - ACE_Predefined_Naming_Contexts::connect - ACE_Predefined_Naming_Contexts::is_local_host - - /* SString */ - ACE_CString::ACE_CString - - /* Mem_Map */ - ACE_Mem_Map::ACE_Mem_Map - ACE_Mem_Map::map - - /* Service_Config */ - ACE_Service_Config::logger_key_ - - /* System_Time */ - ACE_System_Time::ACE_System_Time - - /* Memory_Pool */ - ACE_Sbrk_Memory_Pool::ACE_Sbrk_Memory_Pool - ACE_Shared_Memory_Pool::ACE_Shared_Memory_Pool - ACE_Local_Memory_Pool::ACE_Local_Memory_Pool - ACE_MMAP_Memory_Pool::ACE_MMAP_Memory_Pool - ACE_Lite_MMAP_Memory_Pool::ACE_Lite_MMAP_Memory_Pool - - /* OS */ - ACE_OS::strstr - ACE_OS::strdup - ACE_OS::hostname - ACE_OS::open - ACE_OS::unlink - ACE_OS::dlopen - ACE_OS::dlsym - ACE_OS::cuserid - ACE_OS::fork_exec - ACE_OS::sprintf - ACE_OS::access - ACE_OS::fopen - ACE_OS::getenv - ACE_OS::system - ACE_OS::mkdir - ACE_OS::mktemp - -Sun Dec 8 19:00:45 1996 Tim H. Harrison - - * ace/Reactor.cpp (handle_events): Updated this method to use the - ACE_Countdown_Time::update method after the mutex has been - acquired. - - * ace/Time_Value.cpp (update): Added an ACE_Countdown_Time::update - method that calls stop and start. This is useful for methods - such as ACE_Reactor::handle_events that need to update timeout - values after acquiring locks, but before waiting on the - demultiplexing mechanism (e.g. select). - - * ace/ReactorEx.cpp (handle_events): Modularized the - implementation of handle_events. Now it uses helper functions - to significantly simplify the implementation. Also updated the - header file documentation. - - * ace/Timer_Queue: Added a timer_skew_ data member and accessor - methods to ACE_Timer_Queue. Also added an expire method that - calls gettimeofday and adds the timer_skew_ for you. These - changes will help simplify Reactor, Proactor, and ReactorEx - code. - - * ace/Reactor : Removed timer_skew_. This code now just calles - timer_queue->expire () with no parameters. Very clean. - - * ace/ReactorEx : Removed timer_skew_ code. - - * ace/Proactor : Removed timer_skew_ code. - - * examples/Proactor/test_proactor.cpp: Fixed this application so - that it exits when all the data has been sent and received. - Previously, it used a cool timeout mechanism to "guess" when all - the data had been received. Ahh, but we can't have too much - fun, or people start to get nervous. - - * ace/Service_Config.cpp (run_reactorEx_event_loop (Time_Value)): - Fixed the implementation of this method. It now handles - reactorEx events until end_reactorEx_event_loop is called, or - the specified time value expires. Also fixed the - run_proactor_event_loop (Time_Value) method. - - * examples/ReactorEx/test_timeout.cpp: Added a new example - application that shows how to use - Service_Config::run_reactorEx_event_loop with timeouts. Check - the examples/ReactorEx/README file for more details. - - * examples/Proactor/test_timeout.cpp: Added a new example - application that shows how to use - Service_Config::run_proactor_event_loop with timeouts. Yes, this - screams for common dispatcher interfaces for Reactor, Proactor, - and ReactorEx. - -Sun Dec 8 10:27:19 1996 Douglas C. Schmidt - - * ace/Service_Manager.cpp (init): Changed all uses of "int port" - to "u_short port" to be consistent with socket types. - - * ace/ACE.cpp (bind_port): Changed all uses of "int port" to - "u_short port" to be consistent with socket types. - - * ace/Remote_Name_Space.cpp: Changed all uses of "int port" to - "u_short port" to be consistent with socket types. - - * ace/SV_Semaphore_{Simple,Complex}: Changed all uses of "int n" - to "u_short n" to be consistent with the SYSV types! - - * ace/OS.h: Moved the location of the ACE_HAS_USING_KEYWORD macros - until *after* we #include "ace/Time_Value.h". Thanks to - Matthias for this. - - * ace/Signal.cpp: Finished implementing the - ace_signal_handlers_dispatching logic, which wasn't done - entirely earlier. Thanks to Alexandre Karev - for reporting this. - - * netsvcs/servers/main.cpp (main): Fixed several small bugs in the - netsvcs main test program. Thanks to Alexandre Karev - for finding this. - - * ace/Reactor: Removed the timer_skew_ data member from the - ACE_Reactor since this is now covered by the - ACE_Timer_Queue. - - * ace/Reactor.cpp (handle_events): Added the new version of the - ACE_Countdown_Time to simplify the code. - - * ace/Time_Value: Added a new class called ACE_Countdown_Time, - which is used by the Reactor, ReactorEx, and Proactor to keep - track of how much time elapsed. - - * ace/config-win32-msvc4.0.h: Added a change that forces the MSVC - compiler to reference the proper Winsock - lib during linking of - ACE. This change is necessary because a) in the release version - the link to the winsock.lib was completly missing and b) only - wsock32.lib has been included (which is wrong when WinSock2 is - used). Thanks to Matthias for this. - - * ace/Module.cpp (ACE_Module): Added code to zero-out the - q_pair_[2] pointers. Thanks to Matthias for this. - - * tests: Removed the argv name from most main() functions so that - we don't get warnings... - - * examples/Threads: Fixed some errors in the threads examples - directory, most of which are ambigious overloads. Also included - a (MSVC 4.1) makefile for all tests in this directory. Thanks - to Matthias for this. - - * examples/Threads: Renamed all the files by removing the word - "test_" at the beginning. This is redundant! - - * tests/TSS_Test.cpp: If we are running AIX (i.e., if - ACE_TEMPLATES_REQUIRE_PRAGMA), then conditionally avoid - compiling this test program because it doesn't work unless we - split off class Errno due to AIX's rules for generating - templates. This is too much work to get right... - - * ace/OS.i (thr_self): Updated the conditional compilation tests - so that we check for ACE_HAS_THREAD_SELF first. Thanks to Chris - Lahey for this. - - * ace/{config-osf1-3.2.h,config-aix-4.1.x.h}: Updated this file so - that is has the new ACE_HAS_THREAD_SELF macro, which indicates - that the platform uses thread_self() rather than pthread_self(). - - * ace/config-aix-4.1.x.h: According to Chris Lahey - , AIX 4.1.x should have ACE_HAS_PTHREADS - rather than ACE_HAS_DCETHREADS. - - * ace/Thread_Manager: Removed the thread_descriptor_i() methods - and replaced them by generalizing the find() method to become - find_thread() and find_hthread(). Thanks to Hamutal Yanay - for suggesting this. - -Sun Dec 8 14:39:53 1996 Tim H. Harrison - - * ace/Timer_Queue: Added a timer_skew_ data member and accessor - methods to ACE_Timer_Queue. Also added an expire method - that calls gettimeofday and adds the timer_skew_ for you. These - changes will help simplify Reactor, Proactor, and ReactorEx - code. - -Sat Dec 7 01:14:04 1996 Irfan Pyarali - - * tests/Process_Mutex_Test.cpp: Added new test which checks the - functionality of a ACE_Process_Mutex. Abandoned mutexes can be - created by selecting the correct command-line arguments. - - * examples/Reactor/ReactorEx/test_reactorEx.cpp: Reverted back to - old scheme which does not utilize traits. - - * ace/Task_T.h: Removed the synchronization trait in Task. This is - because template typedefs are only supported by a few - platforms. Sigh ;-) - -Sat Dec 7 16:55:37 1996 Douglas C. Schmidt - - * ace/Thread_Manager.cpp: Because thread_descriptor_i() only returns - 0 or -1 on failure the code for - ACE_Thread_Manager::thr_self(ACE_hthread_t &) should read: - - if (-1 == this->thread_descriptor_i (id, td)) - return -1; - handle = &td.thr_handle_; - - Thanks to Matthias for reporting this. - - * ace/OS: Added a new static instance of ACE_thread_key_t to work - around the pthreads implementation on MVS (which doesn't store - TSS keys as ints!). Thanks to Chuck Gehr for reporting this. - - * ace/config-mvs.h: Added #define ACE_TEMPLATES_REQUIRE_SOURCE for - MVS C++. Thanks to Chuck Gehr for reporting this. - - * ace/Signal.cpp: ace_dispatcher was being set to - ace_signal_handlers_dispatch() which calls - ACE_Sig_Handlers::dispatch (when ACE_HAS_SIC_C_FUNC is defined), - whereas it was set to ACE_SigHanlder::dispatch (no s) if not - defined. I intended to set this to ace_signal_handler_dispatch - (no s). Thanks to Chuck Gehr for reporting this. - - * ace/Makefile: Fixed a small typo where I wasn't matching char - *getenv in the sed regular expression. - - * ace/{OS,Synch}: Moved various classes around so that things will - compile correctly when ACE_WIN32 is defined but ACE_HAS_THREADS - is *not* defined. Thanks to Robert Lyng - for reporting this. - -Sat Dec 7 16:55:37 1996 Matthias Kerkhoff - - * ace/Module: Added some values to the enum so Module clients - can decide whether the reader, the writer or both should be - automatically deleted. - - * ace/{Stream,Module,Task}: Changed some function arguments - from u_long to int (because enums are represented as ints). - - * ace/Task: Added a new virtual function to ACE_Task_Base - (module_closed), which by default calls - ACE_Task_Base::close(1). Please note the changed flags - argument. This allows clients to differ between calls - originated from a Module and/or Stream from those which - result from ~ACE_Task_Exit(). ~ACE_Task_Exit() calls - ACE_Task_Base::close(0). This may be or not be a problem to - existing applications. It may (hopefully not) - be neccessary to change ACE_Task_Base::module_close back to - calling ACE_Task_Base::close(0). - -Fri Dec 06 14:44:20 1996 David L. Levine - - * ace/OS.cpp: added ::spa () function to allow command line args - to be passed to programs in VxWorks - - * ace/OS.i: (ACE_OS::gettimeofday): VxWorks returns nsec instead - of usec, so convert - -Fri Dec 6 01:21:48 1996 Irfan Pyarali - - * examples/Reactor/ReactorEx/test_reactorEx.cpp: Rewrote the - example such that the test now uses the new Notification - Strategy scheme in ACE. This allows a message queue consumer to - wait in ReactorEx without spawning a new thread, or creating - extra Win32 events. This make the example smaller and much - cleaner. - - * ace/Task_T.h: Added synchronization trait to Task. - - * ace/Task_T.i (msg_queue): Added a check to delete the old - message_queue if we had created it. - - * ace/ReactorEx.cpp (remove_handler): Removed the call to set - reactorEx of the event handler to zero becauses the event - handler may no longer be there after the handle_close() - completes. - -Thu Dec 05 21:18:49 1996 David L. Levine - - * ace/OS.cpp (thr_create): Oops, needed to add another check if - thr_id == 0 before assigning *thr_handle = *thr_id, for systems - such as Solaris 2.4 that don't have PTHREADS. - -Wed Dec 4 09:09:56 1996 David L. Levine - - * ace/Log_Msg.cpp (log): added printout to stderr before call - to exit(). Silent calls to exit() are bad :-} - - * performance-tests/Synch-Benchmarks/Options.cpp (print_results): - only use rusage if ACE_HAS_PRUSAGE_T is #defined - - * examples/IPC_SAP/SOCK_SAP/CPP-in{client,server}.cpp: - use blocking connect on VxWorks - - * ace/config-vxworks*.h: added ACE_LACKS_MPROTECT and - ACE_HAS_STRERROR - - * include/makeinclude/platform_vxworks*: removed INCLDIRS and - added indlib.o to GreenHills LIBS - - * Makefile (cleanrelease and release): changed "rm -r" of - ACE.tar.gz to "rm -f", that's probably what was meant - -Wed Dec 4 00:27:07 1996 Irfan Pyarali - - * ace/config-win32-msvc*.0.h: Added NOMINMAX. - - * ace/Registry: Removed NOMINMAX and - VC_PLUS_PLUS_NESTED_CLASS_PROBLEM flags from the header file. - The VC_PLUS_PLUS_NESTED_CLASS_PROBLEM flag is no longer needed - and NOMINMAX is defined at the project level. Thanks to - Matthias Kerkhoff for suggesting this. - -Mon Dec 2 14:13:44 1996 Douglas C. Schmidt - - * ace: Changed all occurrences of ACE_Event_Handler - reactorex() to reactorEx() to be consistent. Thanks to - Matthias for suggesting this. - - * ace/Message_Queue.cpp (close): We didn't allocate the memory for - the notification_strategy_, so we darn well can't delete it! - Thanks to Matthias for finding this. - - * ace/Log_Msg.cpp (ACE_TSS_cleanup): Made the ACE_TSS_cleanup - function extern "C" for MVS C++ and compilers like it... Thanks - to Chuck Gehr for reporting this. - - * tests/Naming_Test.cpp (main): Added delete ns_context to close - things down and free up the semaphores. Thanks to David Levine - for suggesting this. - - * examples/Reactor/Misc/test_demuxing.cpp (handle_input): Fixed a - "typo" where we were accessing mb->msg_priority() *after* - deleting it! Thanks to Matthias for finding this. - -Mon Dec 2 09:57:15 1996 David L. Levine - - * tests/run_tests.*: updated lists of tests to be run - - * tests/*.cpp: removed trailing .cpp from argument to - ACE_START_TEST because it would appear in the log file name - -Mon Dec 2 00:08:51 1996 Douglas C. Schmidt - - * ace/Log_Record.cpp (dump): There was an error on line 19 of - Log_Record.cpp: - - ACE_DEBUG ((LM_DEBUG, "\npid_ = %s\n", this->pid_)); - - should be changed to: - - ACE_DEBUG ((LM_DEBUG, "\npid_ = %d\n", this->pid_)); - - Thanks to Sandro Doro for reporting - this. - - * examples/Reactor/Misc/test_handle_set.cpp: Updated the test to - remove a warning caused by sloppy nesting of loop counters. - -Mon Dec 2 00:23:23 1996 Irfan Pyarali - - * ace/Strategies.{h,cpp}: Update the base-class and added - documentation. - - * tests/test_config.h: Added ACE_INIT_LOG, ACE_APPEND_LOG and - ACE_APPEND_LOG to facilitate the appending of log messages to a - file. Also changed Pipe_Test to use this new mechanism. - - * test/Naming_Test: Changed test to use "lite" implementation to - speed things up. - - * netsvcs/lib: Fixed multiple type mismatch warnings. - - * ace/ReactorEx: Fixed syntax errors in recently modified - ReactorEx.* files - - * ace/ace.{mdp.mak}: Added Strategies.cpp to VC++ makefile. - -Sun Dec 1 19:19:02 1996 Douglas C. Schmidt - - * ace/Service_Config: Moved the #inclusion of ace/Proactor.h and - ace/ReactorEx.h from the *.h file to the *.cpp file to avoid - problems with circular dependencies. - - * ace/Reactor: Added a new parameter to the Reactor's - initialization methods so that we can install a subclass of - ACE_Timer_Queue. This is in anticipation of Tim's new - "real-time" implementation of a timer queue. - - * ace/Reactor: Changed the internal Reactor name - ACE_Notification_Handler to ACE_Reactor_Notify to be consistent - with the ACE_ReactorEx_Notify class. - - * examples/Reactor/Misc/test_demuxing.cpp: Revised this test so - that it now illustrates the new notification mechanism of the - ACE_Message_Queue class. - - * examples/Reactor/Misc: Changed the name of the signal_tester.cpp - file to test_demuxing.cpp, which is really what this does. - - * ace/{Strategies,Message_Queue}: Created a suite of - "Notification Strategies" that are used with the new - ACE_Message_Queue notification scheme. This works as - follows: - - 1. There's a new virtual hook method on ACE_Message_Queue - called notify(). Whenever a new Message_Block is - enqueued the notify() hook is called. By default, this - does nothing. - - 2. If you want to do something with the notify() hook, you - have two choices: - - a. You can subclass from ACE_Message_Queue and - override this method. This is an example of the - "Template Method" pattern. - - b. You can configure an ACE_Notification_Strategy * - into an ACE_Message_Queue. An - ACE_Notification_Strategy is the vehicle for - extending the behavior of ACE_Message_Queue wrt - notification *without subclassing*. Thus, it's an - example of the Bridge/Strategy patterns. - - 3. ACE_Notification_Strategy is defined in - ace/Strategies.{h,cpp}. There are two pre-defined - subclasses: - - a. ACE_Reactor_Notification_Strategy -- integrates the - ACE_Message_Queue notification into the - ACE_Reactor::notify() method. - - b. ACE_ReactorEx_Notification_Strategy -- integrates - the ACE_Message_Queue notification into the - ACE_ReactorEx::notify() method. - - Both of these can be used almost identically in order to - seamlessly integrate multiple threads of control, inserting - ACE_Message_Blocks in one or more ACE_Message_Queues, with - the various ACE event demultiplexors (i.e., ACE_Reactor - and ACE_ReactorEx). - - * ace: Created a new pair of files called Strategies_T.cpp and - Strategies_T.h and move the template ACE_*Strategies classes - into those files. This was necessary since there are now new - non-template notification strategies in Strategies.{h,cpp}. - - * ace/Message_Queue: Created a new "notification hook" mechanism - that makes it possible for event demuxers (like ACE_Reactor and - ACE_ReactorEx) to be informed automatically when a Message_Block - is inserted into the Message_Queue. This is useful for - sitations where you'd like to integrate multiple threads (each - of which is pumping data into an ACE_Message_Queue) with an - ACE_Reactor or an ACE_ReactorEx. Thanks to Matthias Kerkhoff - and Luca for suggesting this. - - * ace/Synch.h: Modified the implementation of - ACE_Null_Condition_Mutex::wait() so that it always returns -1 - and sets errno to ETIME. This reflects the fact that if you'll - never be awakened if you "sleep" on a Null_Condition... - - * ace/ReactorEx: Generalized the ACE_ReactorEx so that its - notify() method now behaves like the ACE_Reactor, i.e., it can - queue up ACE_Event_Handlers that are dispatched in the ReactorEx - thread of control. - - * tests: Renamed the Shared_Memory_MM_Test.cpp to - MM_Shared_Memory_Test.cpp and remove the - Shared_Memory_SV_Test.cpp since it was redundant to the - SV_Shared_Memory_Test.cpp. - - * tests/SV_Shared_Memory_Test.cpp (main): Revised the SVSV IPC - shared memory test to be more robust. - - * ace/SV_Semaphore_Simple.cpp (open): If the char *name == 0 then - use ACE_DEFAULT_SEM_KEY instead. - - * ace/Memory_Pool: Generalized the ACE_Shared_Memory_Pool so that - there can be more than 1 shared memory pool active at a time - (similar to what we did for ACE_MMAP_Memory_Pool). - - * ace/Memory_Pool.h: There was an unnecessary - ACE_SV_Semaphore_Complex in ACE_Shared_Memory_Pool that was left - over from earlier days. I've removed this. - - * ace/Memory_Pool.cpp (ACE_Shared_Memory_Pool): Revised - the constructor so that if we get a NULL pool_name we'll - initialize the - - * examples/Makefile: Added the System_V_IPC and Shared_Memory - directories. - - * ace/Message_Queue.h: Added a virtual destructor to - ACE_Message_Queue so that it can be destroyed appropriately, - even if subclassed. - - * ace/Message_Queue.h: Renamed enqueue() to enqueue_prio() to be - consistent with the other names (e.g., enqueue_head() and - enqueue_tail(). Updated the test programs to reflect this. - -Sun Dec 1 12:06:46 1996 David L. Levine - - * ace/config-vxworks*.h: Removed #define ACE_HAS_STRBUF_T: - copy and paste error - -Sun Dec 1 00:15:45 1996 Irfan Pyarali - - * ace/OS.h: ACE_NEW_RETURN and ACE_NEW were reverted back to the - old implementation. This is temporary till the infinite loop - problem with ACE_ERROR, ACE_DEBUG and ACE_TRACE being called - from ACE_Log_Msg::instance() is fixed. - - * ace/Synch.h: Repositioned ACE_Semaphore such that there are no - problems in compiling ACE_Process_Semaphore under Win32. - - * ace/config-win32-msvc4.0.h: Changed ACE_HAS_STL to - ACE_HAS_STANDARD_CPP_LIBRARY which is more descriptive (and what - is expected by stdcpp.h). - - * ace/Registry.h: Added the setting of NOMINMAX and - VC_PLUS_PLUS_NESTED_CLASS_PROBLEM flags so that STL behaves - properly. - - * ace/Log_Msg.cpp (open): Fixed a small bug such that msg_ostream - is only set this to cerr if it hasn't already been set. - - * STL: Updated the STL directory will latest code from - http://www.rahul.net/terris/ and also added the original - readme2.stl file. Created ACE_Changes which has the list of - changes made to the STL distribution. - -Sat Nov 30 12:02:00 1996 Douglas C. Schmidt - - * ace/OS.h: Added a new pragma that disables warning #4097 in - MSVC++ (typedef-name used as synonym for class-name). This - keeps Win32 clients from getting warning on Win32. Thanks to - Matthias Kerkhoff for this. - - * ace/Log_Msg.cpp: Created a new macro called ACE_NEW_RETURN_I, - which is used withing ACE_Log_Msg::instance(). We can't afford - to call ACE_LOG_MSG->instance() from within - ACE_Log_Msg::instance() or else we will recurse infinitely! - Thanks to Irfan for finding this. - - * ace/OS.i (mprotect): Added a #if !defined (ACE_LACKS_MPROTECT) - conditional compilation directive to support the EPLX real time - OS from CDC (based on LYNX). Thanks to Alexandre Karev - for reporting this. - -Sat Nov 20 12:23:45 1996 Prashant Jain - - * tests/Naming_Test.cpp (main): Added code that creates a unique - backing store name and removes the backing store every time - the test is run. - -Fri Nov 29 12:54:12 1996 Douglas C. Schmidt - - * ace/Stream.cpp (open): Changed tail->close() and head->close() - to delete tail and delete head now that we've got our new - changes. - - * ace/Module: Moved the destructor from the private part of the - class to the public part and changed things so that close() no - longer "deletes this." This is too confusing and error-prone. - In addition, changed the Module destructor so that it will try - to call close() only if close hasn't already been called. - - * ace/Synch.h: Moved ACE_Process_Semaphore out of the - ACE_HAS_THREADS section since this is available on platforms - that don't have threads. - - * Now that Log_Msg.h is being #included in OS.h, I removed all - other #includes of Log_Msg.h throughout the rest of ACE. - - * ace/OS.h: Rearranged the definition of the ACE_NEW and - ACE_NEW_RETURN macros so that they come at the end of OS.h. - This enables us to #include "ace/Log_Msg.h" here, as well, so - that we can make use of the ACE_LOG_MSG macro in the definition - of ACE_NEW and ACE_NEW_RETURN. - - * ace/Singleton.cpp (instance): Updated the ACE_Singleton - implementation to use the new ACE_NEW and ACE_NEW_RETURN macros. - - * ace/OS.h: Revised the ACE_NEW and ACE_NEW_RETURN macros so that - they check to see if the constructor of the newly allocated - object failed (i.e., by checking the ACE_LOG_MSG->op_status() - value). - - * tests/Reactors_Test.cpp: Added an ACE_ASSERT() after each - Reactor we create in order to make sure it worked. - - * tests/Reactors_Test.cpp: Added an ACE_Service_Config daemon - instance within main() in order to ensure that the Reactor is - cleaned up appropriately. This avoids problems with NT 4.0, - where there seems to be a bug if you don't shut down sockets - explicitly when the process exits. - - * tests/Pipe_Test.cpp (main): Improved the pipe test so that it - automatically iterates multiple times in order to test whether - there are problems with rapidly opening and closing NT socket - handles... - -Thu Nov 28 03:07:48 1996 Irfan Pyarali - - * netsvcs: netsvcs.mak and netsvcs.mdp were changed such that - it becomes easier to find ace.lib while compiling netsvcs.lib. - - * tests/Pipe_Test.cpp: Add more instances of ACE_Pipes to the test - and also added an option to close down the pipe. - -Thu Nov 28 00:53:16 1996 Douglas C. Schmidt - - * ace/config-sunos4-g++.h: This config file contained two - exclusive definitions - - #define ACE_HAS_SVR4_SIGNAL_T - - and - - #define ACE_HAS_SUNOS4_SIGNAL_T - - The first one was moved out. Thanks to Alexandre Karev - for reporting this. - - * ace/OS.h: - - #elif defined (ACE_HAS_SUNOS4_SIGNAL_T) - - was changed from - - typedef void (*ACE_SignalHandler)(void); - typedef void (*ACE_SignalHandlerV)(void); - - to - - typedef void (*ACE_SignalHandler)(...); - typedef void (*ACE_SignalHandlerV)(...); - - to make gcc happy. The first one was moved out. Thanks to - Alexandre Karev for reporting this. - - * ace/Pipe.cpp (close): Arrgh! Fixed a total braino where we - weren't using ACE_OS::closesocket() to close down the Win32 - ACE_Pipe implementation, which uses sockets... Thanks to Irfan - and Tilo for helping me figure this one out! - - * tests/CPP_Test.cpp: Completely reworked this test so that it - should run correctly on Win32 and UNIX. - -Wed Nov 27 16:50:17 1996 Douglas C. Schmidt - - * Put out a new beta of ACE 4.0.33. - - * tests/Mutex_Test.cpp (test): Fixed the test() function so that - it doesn't use the ACE_Thread_Control unless we explicitly want - to use threads. - - * tests/test_config.h: Added addition information about the - process id and thread id of the main thread. - - * ace/Synch.h: Speed things up a bit by conditionally #including - "ace/SV_Semaphore_Complex.h" only if we are compiling on a - non-Win32 platform or a POSIX platform. Thanks to Matthias - Kerkhoff for this. - - * ace/SV_Semaphore_Complex.h: Incorporated the new ACE_USING - macro, which is useful if you have - - class b { - a() - }; - - class d : private b { - b::a() // still works, but depriciated - using b::a() // should be used instead - }; - - Thanks to Matthias Kerkhoff for this. - - * ace/OS.h: Added a new macro called ACE_USING, which is used to - distinguish between platforms that support namespace "using" - semantics and those that don't. Thanks to Matthias Kerkhoff - for this. - - * examples/Misc/test_XtReactor[12].cpp: Had to add the infamous - #define String XtString before including Xm/PushB.h. Also, there - were some references to XtReactor when the class is now - ACE_XtReactor. Thanks to Gonzalo Diethelm - for reporting this. - - * ace/XtReactor.cpp (ACE_XtReactor): timeout_ was not being - initialized on the constructor, and that caused a core dump. - Thanks to Gonzalo Diethelm for reporting - this. - - * ace/SOCK.h: Put the open() call in the protected part of the - class since we generally don't want clients to call this - directly. Thanks to Eric Newton for pointing - this out. - - * ace/ACE.cpp: Fixed a bug where sin.sin_family was being set - rather than sin.sin_len. Thanks to Chuck Gehr - for reporting this. - - * ace/ACE.cpp: Enhanced the ACE::{send_n,recv_n} methods so that - they check to see if errno == EWOULDBLOCK when ACE_OS::send() or - ACE_OS::recv() returns -1. If that's the case, then they keep - iterating. - - Thanks to Mehdi TABATABAI for - this suggestion. - - * ace/Log_Msg.h: Fixed ACE_RETURN so that it only has 1 parameter - if ACE_NLOGGING is enabled. Thanks to Antonio Tortorici - for reporting this. - - * ace/config-vxworks*.h: Added ACE_NTRACE macros so that - tracing doesn't magically turn on! - - * ace/Task.cpp (activate): the &ACE_Task_Base::svc_run() argument - needs a cast to ACE_THR_FUNC, because that's what - ACE_Thread_Manager::spawn_n() requires. On VxWorks, - ACE_THR_FUNC functions return an int, while svc_run() returns - void *. Thanks to David Levine for this. - - * ace/Thread_Manager.cpp (kill_thr): I was mistakenly passing in - the thr_handle_ where I should have been passing in the thr_id_. - In addition, made sure we don't set errno to the wrong value... - Thanks to Ross Dargahi for reporting this. - - * ace/{Synch_T,Synch}.h: If we don't actually own the lock - anymore, don't try to do a release. Thanks to Jonathan Biggar - for reporting this bug. - - * ace/ACE.cpp (handle_timed_complete): Added an ex_handles mask so - that non-blocking connects will work correctly on Win32. Thanks - to Antonio Tortorici for - reporting this fix. - - * ace/Message_Queue.h: Updated the documentation to stress the - fact that the timeouts are specified in *absolute* time, rather - than in relative time. Thanks to Bob Dunmire - for reporting this. - - * tests/test_config.h: Modified the ACE_END_TEST macro so that the - log file is closed. This works around a problem on VxWorks - where destructors of static objects don't get closed - automatically. Thanks to David Levine for this fix. - - * ace/OS.i (rand_r): Added a fix for Digital UNIX so that rand_r - works correctly in MT settings. Thanks to Thilo Kielmann - for this. - -Wed Nov 27 16:12:00 1996 Tim H. Harrison - - * ace/Stream.cpp: Fixed a bug in ACE_Stream::open to - allow applications to specify a tail or a head without - having to specify both. This was needed by the ACE_Pipeline - application since it only needs a Pipeline-specific tail - (not a head). - -Tue Nov 26 18:00:25 1996 Douglas C. Schmidt - - * ace: Functions should not be declared with ACE_INLINE in a - .cpp file. Fixed this problem in the following files: - - SPIPE_Acceptor.cpp:116:ACE_INLINE - TLI_Acceptor.cpp:145:ACE_INLINE int - TLI_Acceptor.cpp:192:ACE_INLINE - Task.cpp:121:ACE_INLINE int - Task.cpp:130:ACE_INLINE void - - * ace/{OS,Thread}: Added Chuck Gehr's suggested change for the - pthread_keycreate() routine, which must take extern "C" - functions on MVC C++. This fix isn't perfect, but it should - allow the ACE library to build... - - * man: Updated all of the manual pages and HTML files. - - * ace/Signal.cpp: Updated the code so that we don't try to - register a static C++ dispatch method if ACE_HAS_SIG_C_FUNC is - defined. This fixes problems with the MVS C++ compiler... - Thanks to Chuck Gehr for this suggestion. - - * ace/OS.h: Added extern "C" { } wrappers around the signal - handling mechanisms if ACE_HAS_SIG_C_FUNC is defined. This - fixes problems with the MVS C++ compiler... Thanks to Chuck - Gehr for this suggestion. - - * ace/Reactor.cpp (open): Moved the initialization of the - ACE_Timer_Queue field to *before* the handler_rep_.open() call. - We do this first in case the handler_rep_ call fails (which it - sometimes does on Win32 when we restart applications quickly due - to the use of sockets as a notification mechanism). At least - this way the timer_queue_ isn't 0, so we can still use the - Reactor as a timer... Thanks to Tilo Christ for motivating - me to fix this. - - * ace/OS.i: Apparently, DIGITAL_UNIX gethostbyname() returns - thread-specific storage, so we can use this for - gethostbyname_r(). - - * ace/OS.i: Need to add: - - #else - - after line 3268: return (size_t) ACE_OS::sysconf (_SC_THREAD_STACK_MIN); - - otherwise we get a compile error: - - line 3296.1: CBC1331(W) Return value of type "unsigned int" is expected - - This is because no code ends up getting generated. Thanks to Chuck - Gehr for this fix. - - * ace/OS.i (ACE_PTHREAD_CLEANUP_PUSH): Removed an extraneous set - of parens. Thanks to Chuck Gehr for this fix. - - * ace/OS.cpp (thr_create): Oops, needed to add a check if thr_id - == 0 before assigning *thr_handle = *thr_id! Thanks to Prashant - for finding this. - -Tue Nov 26 21:06:13 1996 Irfan Pyarali - - * ace/Pipe.cpp (open): This change relates to Win32 code only. - Removed the reuse_addr flag to acceptor.open() so that we don't - try to reuse the acceptor socket immediately. Apparently, this - causes no end of trouble on Win32 as the following connect() - call fails (randomly). Now it should be possible to create - multiple ACE_Pipes in one process and hence create multiple - Reactors also without any problems. - - * tests/Pipe_Test.cpp: Added a ACE_Pipe test to check for the - creation of multiple pipes in a process. Also changed the - relevant makefiles and scripts. - -Tue Nov 26 11:27:33 1996 David L. Levine - - * tests/{CPP_Test,Mutex_Test,Shared_Memory_MM_Test,SPIPE_Test}.cpp: - added VXWORKS support for these tests by spawning a new thread - instead of forking a new process (the same as on Win32) - - * netsvcs/clients/Naming/Client/Client_Test.cpp (open): Added a - return 0 for success. - - * ace/Singleton.h: Modified the use of the ACE_NEW_RETURN macro so - we not only check if new has failed, but also check that the - constructor has succeeded. If it hasn't, we bail out... Thanks - to Luca for this suggestion. - - * ace/Log_Msg: Added a 4th parameter to log_hexdump() in order to - print out a comment. Thanks to Luca for this. - - * ace/ACE.cpp (ldfind): Changed the implementation to look for - ACE_DLL_SUFFIX rather than '.' since '.' might exist in the - pathname already... - - * Removed all the NT-specific svc.conf files and updated the other - files to use the new "auto-dll-suffix" feature in ACE. - - * ace/Synch_T.cpp (ts_get): Fixed a nasty bug introduced by recent - changes to ACE_TSS<>::ts_get(). The ACE_Mutex should be - ACE_Thread_Mutex. This should fix lots of nasty run-time bugs - seen with recent versions of the ACE 0.33 beta... - -Tue Nov 26 14:40:00 1996 David L. Levine - - * Log_Msg.cpp: fake out TSS on VxWorks in Log_Msg::instance() - by using a spare field in the task control block - - * tests/{CPP_Test,Mutex_Test,Shared_Memory_MM_Test,SPIPE_Test}.cpp: - added VXWORKS support for these tests by spawning a new - thread instead of forking a new process (the same as on - Win32) - - * OS.h: VxWorks can't handle the ACE_THR_FUNC typedef if - it's in the extern "C" block, so I moved it back out. - Also, the horrible GreenHills hack is no longer required. - - * OS.i: there's an ACE_OS_CALL_RETURN before a ::strncpy() call, - I changed it to ACE_OS_CALL. - - * OS.i: Added call to VxWorks ::mkdir() - - * Pipe.cpp: VxWorks doesn't know about TCP_NODELAY. - - * INET_Addr.cpp: get_host_name() is missing a return - statement, on VxWorks only - - * Thread_Manager.i: in ACE_Thread_Control::thr_mgr(), there - were two consecutive return statements, removed the first - one. - - * Time_Request_Reply.{h,cpp}: GreenHills warns that "type - qualifiers are meaningless" for declaration of const - ACE_UINT32 time(), so I removed them. - - * UPIPE_Stream.cpp, line 95: warning: integer conversion - resulted in a change of sign, so we cast n to int. - - * Map_Manager.cpp: in ACE_Map_Manager::resize_i(), variable - foo is unnecessary, so we omitted it. - - * tests/CPP_Test.cpp (and a few others) have references to - argv[0]: - -Tue Nov 26 03:15:22 1996 Irfan Pyarali - - * tests: Added Map_Manager_Test and Message_Queue_Test to - makefiles (NT and UNIX) and one-button scripts. - - * tests: (Barrier_Test.cpp Buffer_Stream_Test.cpp Mutex_Test.cpp - Priority_Buffer_Test.cpp Recursive_Mutex_Test.cpp - Shared_Memory_MM_Test.cpp) Fixed typos mainly and other small - changes. Also fixed logging file problems so to make logging - of tests more accurate. - -Mon Nov 25 00:23:40 1996 Douglas C. Schmidt - - * performance-tests/Synch-Benchmarks/Options.cpp (Options): - Reordered the initialization of data members to keep G++ from - complaining. - - * performance-tests/Synch-Benchmarks/pipe_thr_test.cpp: Changed - some types so that we don't get warnings. - - * tests/Mutex_Test.cpp (test): Added a "return 0". Thanks to - David Levine for reporting this. - - * ace/TTY_IO.cpp: Rearranged some definitions so that we don't get - "unused variable" warnings from g++. - - * ace/SOCK_Dgram.cpp (recv): Rearranged some definitions so that - we don't get "unused variable" warnings from g++. - - * tests/Priority_Buffer_Test.cpp (consumer): Fixed a typo -- I was - missing a *... Thanks to David Levine for reporting this. - - * ace/OS.h (ACE_SVC_FACTORY_DECLARE): Changed the macro so that it - defines a function with `extern "C"' linkage in order to be - consistent. - - * ace/OS.cpp (thr_create): Moved the conditional compilation test - for ACE_HAS_THR_C_FUNC outside of ACE_HAS_SETKIND_NP since MVS - doesn't have this! Thanks to Chuck Gehr for this info. - - * ace/OS.i (thr_sigsetmask): Replaced the tests for - ACE_HAS_DCETHREADS and ACE_HAS_SETKIND_NP with - ACE_LACKS_PTHREAD_THR_SIGSETMASK, which is more appropriate. - - * ace/OS.cpp (ace_mutex_lock_cleanup_adapter): Changed the - signature so that it returns "void" rather than "void *". - Thanks to Chuck Gehr for this. - - * ace/OS.h: Removed #include to avoid problems on - MVS. Thanks to Chuck Gehr for this. - - * ace/config-sunos5.5-sunc++-4.1.h: It looks like SunC++ 4.1 still - doesn't fix their template typedefs bugs. So I've commented - this out in the config file. Thanks to Fred LaBar - for reporting this. - - * ace/ACE.cpp (ldfind): Added support for a new feature that will - append the default suffix (e.g., ".dll" or ".so") for a shared - library on the current platform to the name of the file if it - cannot find an suffix. It will also check that a provided - suffix will match the default suffix for that platform and if it - doesn't it will produce a log entry with a warning. This change - will allow unified svc.conf-files for both UNIX and WinNT. - Thanks to Tilo Christ for this. - - * ace/OS.cpp (thr_create): Came up with a remarkably clever scheme - that should make it possible to utilize the ACE library *without - change* on MVS, where the frigging C++ compiler requires all - functions passed to pthread_create() have an extern "C" linkage. - The trick was to generalize the thread adapter mechanism used - for Win32. - - * ace/OS: Added a new macro called ACE_PTHREAD_CLEANUP_PUSH that - selects the right mechanism (e.g., ace_spawn_adapter or not) for - passing functions to pthread_cleanup_push(). - - * ace/config-mvs.h: Added a new macro called ACE_HAS_THR_C_FUNC - which expresses the fact that the MVS C++ compiler *must* have - an extern "C" function passed to pthread_create(). - - * ace/OS.h: Modified all uses of ACE_OS::mutex_lock_cleanup() to - use the extern "C" ace_spawn_adapter() on platforms MVS like MVS - that can't deal with non-C functions to pthread_create. Thanks - to Chuck Gehr for reporting this. - - * ace/OS.cpp (thr_create): Added Chuck Gehr's patches for MVS. - -Sun Nov 24 12:30:45 1996 Douglas C. Schmidt - - * ace: Added Chuck Gehr's config-mvs.h - file! - - * ace: Began adding support for WinSock 2.0. Thanks to Luca for - this. - - * ace/UPIPE_{Acceptor,Connector,Stream}: Updated the UPIPE - components so that they keep a reference count that keeps track - of the number of "owners" (which should always be 2 -- one for - the connector-side and one for the acceptor-side). By keeping - this count, we can ensure that we don't close down the - underlying ACE_Stream until both sides have called close(). - This will remove a nasty bug that was lurking in some of the - tests. - - * ace/Message_Block.h: Added a new copy() method that assumes the - buf passed in is a NUL-terminated string. - - * tests/UPIPE_SAP_Test.cpp: Modified this test so that threads - exit in a well-defined order. This should prevent problems on - Win32. - - * ace/OS.i: Changed SIGNAL_SAFE_OS_CALLS to - ACE_HAS_SIGNAL_SAFE_OS_CALLS to be consistent... - - * ace/config-vxworks*.h: Removed the SIGNAL_SAFE_OS_CALLS #define - from the VxWorks config files. There's no need to use this by - default. - - * ace/Event_Handler: Moved all the default implementations of the - virtual methods in ACE_Event_Handler from the *.i file to the - *.cpp and made them no longer be inlines. This will fix some - problems with some compilers (e.g., MSVC++ 4.1) and is also more - reasonable since there's really no purpose for inlining these - virtual functions since they are rarely called. Thanks to James - Michael Dwyer for reporting this problem. - -Sat Nov 23 12:39:03 1996 Douglas C. Schmidt - - * ace/Svc_Conf.y: Changed the parser so that it accepts DLL - pathnames that lack *.dll or *.so suffixes. This is necessary - so that we can automatically append the correct suffix depending - on the platform. Thanks to Tilo Christ - for suggesting this. - - * ace/Makefile: Updated the Makefile so that it will automatically - insert the appropriate so that conditions for include of - ace/OS.h can be checked correctly. - -Fri Nov 22 18:12:49 1996 Douglas C. Schmidt - - * ace/OS.i (thr_sigsetmask): DCE threads (at least as implemented - by Digital) have no means for setting the signal mask on a - per-thread basis. Therefore, modified the code so that it - correctly returns ACE_NOTSUP_RETURN(-1) for DCEthreads. Thanks - to Thilo Kielmann for - chasing this down. - - * performance-tests/Synch-Benchmarks/synch_driver.cpp (run_test): - Fixed this implementation so that it will shut down correctly - when a signal occurs or a timeout occurs (whichever comes - first). - -Fri Nov 22 08:02:39 1996 Irfan Pyarali - - * ace.{mdp,mak}: Changed ace.mak so that it links with the - non-debug version of Microsoft's multithreaded dll when compiled - with the release option - -Thu Nov 21 10:37:40 1996 Douglas C. Schmidt - - * ace/Service_Config: Changed the implementation of the - Service_Config class so that it no longer inherits from - ACE_Event_Handler. This was causing problems because the new - reactor() method in the ACE_Event_Handler was conflicting with - the static reactor() method on ACE_Service_Config. - - * ace/OS.cpp (detach): Since we no longer use an - ACE_Recursive_Thread_Mutex, we can remove the line - - else if (ACE_TSS_Cleanup::lock_.get_nesting_level () > 1) - // ... - - Thanks to Matthias Kerkhoff for - reporting this. - - * ace/Thread_Manager.cpp (spawn_n): Replaced int i with size_t i - to avoid warnings between signed and unsigned values. - - * ace: There is an easy way to speed up the "Update dependencies" - in MSVC. Just keep the the compiler from complaining about - missing header by inserting a comment like below in the - #include-directives which are not used in Win32. - - Therefore, instead of - - #include - - we use - - #include /**/ - - Please let me know if this causes problems for any - pre-processors. Thanks to Matthias Kerkhoff - for this suggestion! - - * ace/OS.cpp: Added support for AfxBeginThread in - ACE_OS::thr_create() and ACE_OS::exit(). Now ACE should work - with MFC when you give the THR_USE_AFX flag to - ACE_OS::thr_create()! Thanks to Matthias Kerkhoff - for this! - - * ace/Malloc_T.cpp (avail_chunks): Changed the return value to - ssize_t so we can return -1 if we can't get the lock. Thanks to - Tilo for reporting this. - - * ace/config-sunos4-sun3.x.h: Added new #ifdefs for Sun C++ 3.0.1 - on SunOS 4.1.3. Thanks to Eric Parker - for these fixes. - - * ace/Stack.h: Added a new method called peek() to the - ACE_Unbounded_Queue classes so that the first element can be - retrieved without removing it. Thanks to Luca for this - suggestion. - - * ace/SString.cpp (ACE_CString): Changed ACE_CString so that it - uses memcpy() rather than str(n)cpy() so that we can store any - structure into it. Thanks to Luca for this suggestion. - - * ace/Acceptor: Since we moved the reactor() accessors to - ACE_Event_Handler we can omit these from the Acceptor and - Svc_Handler. - - * ace: Updated the ACE_Reactor and ACE_ReactorEx so that they - automatically sets the pointers in ACE_Event_Handlers. Thanks - to Luca for this suggestion. - - * ace/Event_Handler: Added pointers to all the ACE demultiplexors - (e.g., ACE_Reactor, ACE_ReactorEx, and ACE_Proactor) to - ACE_Event_Handler, along with set/get accessor methods. This - supports a very common use-case where an event handler keeps - track of its demultiplexor. Thanks to Luca for this suggestion. - - * ace/OS.cpp: Since we do not use the recursion count from the - Recursive Mutex any more in ACE_TSS_Cleanup::exit() we can - replace the Recursive Mutex by a regular ACE_Thread_Mutex that - is recursive on NT natively and more efficient. Thanks to - Detlef for suggesting this. - - * ace/OS.cpp: Since we do not use the recursion count from the - Recursive Mutex any more in ACE_TSS_Cleanup::exit() we can - replace the Recursive Mutex by a regular ACE_Thread_Mutex that - is recursive on NT natively and more efficient. Thanks to - Detlef for suggesting this. - - * ace: Backed out all of Detlef's changes to ACE_OS and - ACE_TSS::ts_get(). It turns out that this is unnecessary since - he reimplemented ACE_TSS_Cleanup so that it no longer needs to - hold the lock when callbacks are made. Once again, Detlef - proves that he's a macho man, not a boy ;-) - -Thu Nov 21 08:12:51 1996 David L. Levine - - * include/makeinclude/platform_sunos5_sunc++_4.1.GNU: - put back the LD definition - - * include/makeinclude/platform_osf1_4.0_g++.GNU: - added LD definition to work with latest wrapper_macros.GNU - -Wed Nov 20 10:32:52 1996 Irfan Pyarali - - * tests: Mutex_Test.cpp Priority_Buffer_Test.cpp - Reader_Writer_Test.cpp Thread_Pool_Test.cpp were changed - slightly to remove some compile time warnings. - -Wed Nov 20 21:35:28 1996 David L. Levine - - * ace/Svc_Conf_l.cpp: added #include of ace/config.h so that - conditions for include of ace/OS.h can be checked. - -Wed Nov 20 02:38:40 1996 Douglas C. Schmidt - - * ace/Service_Config.cpp: Moved the definition of logger_key_ to - OS.h and changed it to a macro (ACE_LOGGER_KEY) so that it will - be portable to Win32 and UNIX. Thanks to Tilo for reporting - this. - - * ace/OS: Changed the return value of ACE_OS::getgid() from uid_t - to gid_t to be POSIX compliant. - - * ace/OS.cpp (thr_create): Fixed a typo where we were assigning - stacksize rather than size. Thanks Thilo. - - * ace/OS.cpp (thr_create): Added a new piece of code for - ACE_NEEDS_HUGE_THREAD_STACKSIZE, which is necessary to create a - larger per-thread stack size in order to run ACE_Log_Msg::log. - Thanks to Thilo for this. - - * tests/TSS_Test.cpp: Changed the name of the static variable - "lock" to "cout_lock" to avoid a potential namespace clash on - Digital UNIX. Thanks to Thilo Kielmann for reporting this. - - * ace/SOCK_Dgram.cpp (recv): Added a cast (char *) - io_vec->iov_base so that this would work correctly on platforms - where iov_base is a void * (e.g., AIX and HP/UX). Thanks to - Alan Stewart for the change. - - * ace/OS.h: Added a few new changes for Digital UNIX 4.0a. These - should fix problems with ctime_r() and asctime_r(). Thanks to - Dave Trumble for the fixes. - - * tests/UPIPE_SAP_Test.cpp: Disabled this test if we don't have - threads and (STREAM Pipes or Win32). Thanks to Thilo Kielmann's - for this info. - -Tue Nov 19 23:09:08 1996 Tim H. Harrison - - * ace/Log_Record.cpp (print): Added a call to ACE_OS::fflush - before returning. This change was suggested by Luca in order to - help prevent messages from getting lost when applications exit. - We're unsure of the affects this will have on performance, so we - may change this back in the future. - -Tue Nov 19 00:06:57 1996 Douglas C. Schmidt - - * Released a beta version of ACE 4.0.33 for testing. - - * ace/TTY_IO.h: Added the ACE_Export macro before the ACE_TTY_IO - class to make things work correctly for Win32 DLLs. Thanks - to William L. Gerecke for fixing this. - - * ace/OS.h: Improved the support for RLIMIT_NOFILE. Thanks to - Alan Stewart for reporting this. - - * ace/OS.h: Removed the following code from OS.h because - it is causing problems on some platforms: - - #if (!defined (timespec) && !defined (m88k)) - #define timestruc_t struct timespec - #endif /* timespec */ - - Thanks to Fred LeBar for reporting this. - - * ace/OS.cpp (thr_create): Needed to create an - ACE_OS::NULL_hthread so that we can assign the "NULL thread - handle" on POSIX platforms. Thanks to Alan Stewart - for reporting this. - - * ace/OS.i: The HP/UX C++ compiler is unable to grok inline - functions with multiple returns. So I recoded the - ACE_OS::event* methods to avoid this. Thanks to Alan Stewart - for reporting this. - - * ace/OS.h: Moved the "undef" of t_errno until after the inclusion - of mman.h and dlfcn.h to prevent problems with DU4.0a. Thanks - to David Trumble for reporting - this. - - * ace/Pipe.cpp (open): Fixed a typo where - this->ACE_SOCK::set_option() was being used instead of - writer.set_option(). Thanks to Tilo Christ - for reporting this. - - * ace/Message_Queue.h: Fixed a bug where - - ACE_Message_Queue &queue_; - - should be: - - ACE_Message_Queue &queue_; - - Thanks to Rick Orr for - reporting this. - - * apps/Makefile: Updated the Makefile so that it no longer tries - to look for Synch-Benchmarks. Thanks to Amos Shapira - for reporting this. - - * ace/Activation_Queue.cpp (dequeue): Added a sanity check to make - sure that we actually deleted the first element in the queue. - Thanks to Andres Kruse for reporting - this. - - * include/makeinclude/platform_sunos5_sunc++_4.1.GNU: Added a - minor change to remove the libACE.a archive prior to creating a - new one. This works around bugs with the SunOS 4.x C++ - compiler. Thanks to Andres Kruse for - reporting this. - - * ace/Malloc_T.cpp (avail_chunks): Added Fred LeBar's code and - comments for computing the available chunks. - - * tests/Mutex_Test.cpp: Rewrote the Mutex_Test so that it behaves - correctly on UNIX and Win32. Thanks to Irfan for reporting the - problem. - - * ace/Log_Msg.cpp (sync): Somehow, the statement that updated the - pid_ after sync() is called following a fork() got removed, so I - put it back in. - - * ace/config-sunos5.*-g++.h: Added the - -D_REENTRANT flag to the config files for the G++ version of - ACE. This fixes a nasty problem that otherwise arises when - compiling on SunOS 5.x. Thanks to Hanan Herzog - for reporting this. - -Tue Nov 19 21:14:15 1996 David L. Levine - - * performance-tests/Synch-Benchmarks/Benchmark.{h,cpp}: - use thread ID class for VxWorks as well as Pthreads. - - * OS.i, config-{osf1-4.0,sunos5.[45]}-g++.h: Moved GNU - #include out of config files and into OS.i. - - * ace/Svc_Conf_l.cpp: added #include of ace/OS.h for HPUX and - VxWorks. - - * ace/Token.cpp: reordered initializations in Ace_Queue_Entry - ctor to match declaration order. - -Mon Nov 18 00:47:27 1996 Douglas C. Schmidt - - * ace/OS.h: Added a new #define called ACE_HAS_BROKEN_CONVERSIONS - to workaround problems with the HP/UX C++ compiler, which - doesn't seem to be able to grok foo->operator T *(). Thanks to - Alan Stewart for reporting this bug and the fix. - Also updated the config-hpux*.h files with this define. - - * examples/Misc: Added a new test (test_get_opt.cpp) which - exercises the ACE_Get_Opt class. - -Sun Nov 17 13:00:02 1996 Douglas C. Schmidt - - * ace/Get_Opt: Replaced the GNU-based implementation of class - ACE_Get_Opt with an implementation based on BSD UNIX. The - advantage here is that the BSD version is not encumbered by the - GNU GPL. Thus, ACE has no more dependencies on GNU GPL. Thanks - to James Hu for finding the BSD code. - -Mon Nov 18 00:13:25 1996 Tim H. Harrison - - * ace/stdcpp.h: Added this file to ACE. This file contains the - portability ugliness for the Standard C++ Library. As - implementations of the "standard" emerge, this file will need to - be updated. Although not very useful now, we are gearing up for - a support for STL on UNIX and NT. - - * ace/OS.h: Added an include "ace/stdcpp.h". - - * ace/Log_Record.h (ACE_Log_Record): Removed the iostream include - mess that got accidentally committed to the release. - -Sun Nov 17 00:13:25 1996 Tim H. Harrison - - * For some totally evil reason, MSVC++ will not allow any use of - the "allocator" symbol. It's an STL thing. As a result, I've - had to change all of the following files to rename allocator to - alloc: Local_Name_Space_T.cpp, Map_Manager.cpp, Malloc_T.cpp, - Message_Block.cpp, Read_Buffer.cpp, SString.cpp. The root - of the problem can be seen by compiling the code below: - - template - class foo {}; - - int foo; // compile error because of the foo<> class. - - int main () { return 0; } - - * Service_Config.{h,cpp}: We have to change the allocator - accessors to alloc. This is probably going to break - many things. If necessary, we can conditionally compile in the - old accessors for platforms that are not using STL and MSVC++. - - * ace/Task.h: Added ACE_Export macros to the class definitions. - -Sun Nov 17 13:00:02 1996 Douglas C. Schmidt - - * ace: Added Thilo Kielmann's - patches for OSF/1 4.0a. - - * ace/OS: Revised the implementation of ACE_OS::asctime_r() and - ACE_OS::ctime_r() to simplify common cases. However, this may - have broken some code on OSF/1 4.0a. Can someone please check - this? - - * tests/SPIPE_Test.cpp: Conditionally compiled this file so that - we only build the SPIPE test if (1) we're running on Win32 or - (2) ACE_HAS_STREAM_PIPES. Thanks to David Levine for this - suggestion. - - * ace/OS.i (ctime_r): Fixed a typo that was caused by a misplaced - #endif. Thanks to Eshel Liran for - reporting this. - - * ace/Time_Value: Disabled ACE_TRACE within these method in order - to prevent infinite recursion. - - * ace/Log_Record: Originally, when verbose mode was enabled you - can get the date and time down to the seconds. However, it is - useful for performance testings to have milliseconds displayed - in the log. To accomplish this, I changed ACE_Log_Msg and - ACE_Log_Record to they also keep track of and print the microsec - time, as well. Thanks to Luca for suggesting this. - - * ace/Map_Manager.cpp: updated all the ACE_Map_Manager methods so - their read and write Guards use the ACE_*_GUARD macros. - - * ace/Malloc_T.cpp: Updated all the ACE_Malloc methods so their - read and write Guards use the ACE_*_GUARD macros. - - * ace/OS.cpp (svc_run): Added an ACE_DEBUG announcing that an - exception has propagated beyond the outermost svc_run() - function. Thanks to Luca for this suggestion. - - * tests/test_config.h: VxWorks passes in a NULL argv (arrghhh...). - Therefore, to work around this in the ./tests directory, I changed - the ACE_START_TEST macro to take a NAME parameter, and then I - added the following local variable: - - const char *program = argv ? argv[0] : NAME; - - Thanks to David Levine for this fix. - -Sat Nov 16 12:01:08 1996 Douglas C. Schmidt - - * examples/Threads/test_tss2.cpp: Added Detlef's new test for - ACE_TSS. - - * ace/Synch_T.cpp (ts_get): Added Detlef's changes to fix deadlock - problems with ACE_TSS on NT. - -Fri Nov 15 18:01:26 1996 Douglas C. Schmidt - - * ace/ACE_SOCK_Stream.cpp: NT will signal an abortive close - to the opposite party if a socket is closed before all of its - data has been sent out. According to the NT SDK-docs, you should - do a shutdown before the closesocket() in order to prepare a - graceful close. Thus, I've placed an - ACE_SOCK_Stream::close_writer() method just before the call to - ACE_SOCK::close() in the new close() of the ACE_SOCK_Stream - class. Thanks to Tilo Christ for - this suggestion. - - * ace/INET_Addr.cpp: The function ACE_INET_Addr::addr_to_string - was a virtual function that is also inline and defined in the .i - file. Some compilers have a problem with this, so I moved it - into the *.cpp file. In addition, its sister function was also - virtual and is defined as: - - ACE_INLINE int - ACE_INET_Addr::string_to_addr (const char s[]) - - in the .cpp file. I removed the ACE_INLINE directive. Thanks - to Fred LaBar for reporting this. - -Thu Nov 14 16:20:20 1996 Douglas C. Schmidt - - * ace/Malloc_T.cpp: Added a new method to ACE_Malloc that will - return the number of chunks available on the free list. Thanks - to Fred Labar for this. - -Wed Nov 13 01:22:16 1996 Douglas C. Schmidt - - * ace/ReactorEx.cpp (handle_events): I've changed siginfo_t on - Win32 (which was previously typedef'd to int) so that it has the - following structure: - - struct siginfo_t - { - siginfo_t (ACE_HANDLE handle); - - ACE_HANDLE si_handle_; - // Win32 HANDLE that has become signaled. - }; - - Then, I've changed the ACE_ReactorEx::handle_events() method to - look like this: - - // Assign the ``signaled'' HANDLE so that callers can get - // it. - siginfo_t sig (relative_handles[relative_index]); - - if (relative_handlers[relative_index]->handle_signal - (0, &sig) == -1) - - Thus, you can refer to the signaled handle as - - si_handle_ - - within the handle_signal() call back. Thanks to Matthias - Kerkhoff for suggesting this. - - * ace/System_Time.h: Made ACE_System_Time::get_local_time() a - static member function. Thanks to Matthias Kerkhoff - for suggesting this. - - * ace/Message_Queue.h: The internal variables for counting the - bytes stored in the queue were declared as of type int (in - Message_Queue.h). But they are set (e.g. with - ACE_Message_Queue::ACE_Message_Queue) with values of size_t. - - When running tests/Priority_Buffer_Test, the high_water_mark_ is - preset with the value LONG_MAX. While assigning this value from - size_t to int, this becomes -1 and the queue is always believed - to be full :-( The fix is to change the internal data structures - in Message_Queue.h from int to size_t. Thanks to Thilo Kielmann - for reporting this. - - * tests: Fixed problems with the following three tests: - - Priority_Buffer_Test.cpp - Reader_Writer_Test.cpp - UPIPE_SAP_Test.cpp - - When these are compiled with gcc on Digital UNIX 4.0a the static - ACE_Thread_Manager thr_mgr; was never getting initialized due to - gcc compiler bugs. The fix is to replace the static thread - manager with the ACE_Service_Config::thr_mgr() singleton. - Thanks to Thilo Kielmann for - reporting this. - -Tue Nov 12 19:43:12 1996 Douglas C. Schmidt - - * ace/Thread_Manager.cpp (spawn_n): Was missing a 0 after ?. - Thanks to Thilo Kielmann for - reporting this. - - * ace/Log_Msg.h: Created a new macro call ACE_ERROR_BREAK(X) { - ACE_ERROR(X); break;} for use within switch and loop statements. - Thanks to Luca for this idea. - - * ace/Pipe.cpp: Enabled the "reuse addr" flag for accepting and - connecting the Win32 version of ACE_Pipe. Thanks to Luca for - reporting this problem. - - * ace/OS.i (thr_join): ACE_Thread::join () has a default second - parameter (the status) set to 0. This is not handled in - ACE_OS::thr_join(). To avoid getting a system error in NT we - handle this as we did with ACE_OS::thr_create() and the - thr_handle parameter. - - * ace/config-irix6.2-sgic++.h: Updated the set of patches required - for IRIX 6.2. Thanks to Amos Shapira for reporting this. - -Sun Nov 10 15:40:17 1996 Tim H. Harrison - - * ace/Token_Invariants.cpp: Moved static data - declarations out of ACE_Token_Invariant_Manager::instance and - into the header file. This is supposed to help with a g++ - problem on VxWorks. - -Sun Nov 10 13:22:03 1996 Douglas C. Schmidt - - * ace/Pipe.cpp (open): Set the loopback socket into TCP_NODELAY - mode so that we don't block for 200 ms... Thanks to Luca - Priorelli . - - * ace/Thread_Manager: Created a new version of spawn_n() that - gives parameters for stack, stack_size, and also for the - assigned ACE_hthread_t's. Thanks to Thilo Kielmann - for suggesting this. - -Sun Nov 10 13:56:38 1996 Prashant Jain - - * tests/Reactors_Test.cpp (main): Fixed the test so that the - output of the test goes to a log file instead of STDOUT. - -Sat Nov 9 11:23:13 1996 Douglas C. Schmidt - - * ace/Synch.i: Fixed a bug in ACE_Thread_Mutex_Guard. - The call: - - this->owner_ == block ? this->lock_.acquire () : this->lock_.tryacquire (); - - should be - - this->owner_ = block ? this->lock_.acquire () : this->lock_.tryacquire (); - - Thanks to Alexander Smundak for reporting - this. - -Sat Nov 9 01:44:15 1996 Irfan Pyarali - - * ace/Message_Queue: Added forward and reverse iterators to - Message_Queue. Also, added typedefs to Message_Queue for - ITERATOR, and REVERSE_ITERATOR. This makes the Queue like an STL - collection and also makes it easier to use since you don't have - to define types for the iterators. Please see - test/Message_Queue_Test.cpp for an example. - - * ace/Map_Manager: Added reverse iterator to Map_Manager. Also, - added typedefs to Map_Manager for ENTRY, ITERATOR, and - REVERSE_ITERATOR. This makes the Map more like an STL collection - and also makes it easier to use since you don't have to define - types for the iterators and the entry. Please see - test/Map_Manager_Test.cpp for an example. Note that the new - typedefs does not break existing code. - -Fri Nov 8 20:04:26 1996 Douglas C. Schmidt - - * ace/Malloc.h: Fixed a typo on line 176 that reads: - - #include "ace/Sync_T.h" - - It should read: - - #include "ace/Synch_T.h" - - Thanks to Todd Barkalow for - reporting this. - -Wed Nov 6 00:38:02 1996 Douglas C. Schmidt - - * ace/Pipe: Added the const qualifier to the following methods: - - ACE_HANDLE ACE_Pipe::read_handle (void) const; - ACE_HANDLE ACE_Pipe::write_handle (void) const; - - Thanks to Luca for reporting this. - - * ace/config-win32-msvc4.0.h: Redefined - ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES since it looks like - MSVC++ 4.0 still doesn't work. Maybe this is fixed in 4.2? - -Tue Nov 5 03:09:44 1996 Douglas C. Schmidt - - * ace/Strategies.cpp: I'd forgotten to update one of the - accept(*svc_handler) calls to use the new - accept(svc_handler->peer()) syntax. - - * netsvcs/lib/Server_Logging_Handler.cpp: Added a cast to - (COUNTER) 0 when initializing ::request_count_ to avoid problems - on Win32. Thanks to Luca for pointing this out. - - * ace/Thread_Manager: Added a new thr_self() method that return - the unique ID of the thread. This is not strictly necessary - (because a thread can always just call ). - However, we put it here to be complete. Thanks to Hamutal Yanay - for suggesting this. - - * ace/OS.cpp (thr_create): I was accidentally closing down - ::CloseHandle (thr_handle) (where thr_handle is a HANDLE *) when - I should have been doing a ::CloseHandle (handle) instead. - Thanks to Luca for finding this! - -Tue Nov 5 14:26:32 1996 David Levine - - * include/makeinclude/wrapper_macros.GNU: Changed LINK.{c,cc} - commands to use LD instead of CXX. Changed all platform macros - files (except for g++ on VxWorks) to correspond. - - * tests/run_tests.sh: changed -e test to -f for portability and - reordered tests. Thanks to Michael Michael Rueger - for originally creating run_tests.sh, and - for maintaining it, and to Alan Stewart for - suggesting fixes/enhancements. - - * tests/Time_Service_Test.cpp and Tokens_Test.cpp: changed to - return 0 on success instead of 42 - -Fri Nov 1 03:53:39 1996 Irfan Pyarali - - * STL: Added STL files to $WRAPPER_ROOT/STL. This code is a - modified version (changes for VC++ compiler) of the publicly - available implementation of STL from HP. Currently, - ACE_Registry uses these STL classes. - -Fri Nov 1 00:25:01 1996 Douglas C. Schmidt - - * ace/CORBA_Handler.cpp (process_events): There was a very subtle - race condition in the ACE_MT_CORBA_Handler. process_events() - accessed the singleton directly without taking the mutex. At - startup the process_event thread is kicked off from the - constructor and the instance_ is set. Hence the race. The - solution is to attempt to take the mutex before accessing the - instance. Thanks to David Artus for - reporting the problem and providing the fix. - - * ace/Log_Msg.cpp (log): Improved the performance of the Log_Msg - mechanism by not doing any parsing of the format string if the - user has disabled this priority. - - * ace/Reactor.cpp: Added a chance for the open() method of the - Notification_Pipe failing. Thanks to Luca for pointing this - out. - - * ace/Reactor.cpp (handle_events): Added a change to the semantics - of the ACE_Reactor so that it doesn't fall out of the event loop - when signals arrive that it handles. Thanks to Stuart Powell - for this fix. - - * ace/Service_Repository.cpp (remove): Fixed a bug with - Service_Record::remove() that was failing if there were only two - records and we are removing the first one. Thanks to Alex - Villazon for reporting this. - - * ace: Recompiled everything on Solaris with G++ and CC and it - seems to work fine. - - * ace/Module: Replaced the use of char * with const char * for - assigning the Module a name. - - * ace: Split the Task.{cpp,i.h} file into Task_T.{cpp,i,h} in - order to factor out the new non-template ACE_Task_Base and - ACE_Task_Exit classes. This is required for GCC-based compilers - that include the *.cpp files... - -Thu Oct 31 00:36:38 1996 Douglas C. Schmidt - - * ace/Malloc_T.h: Made the destructor of ACE_Allocator_Adapter - virtual. - - * ace/Thread: Reorganized the ACE_Thread so that the - ACE_HAS_THREADS #ifdef is no longer required... - - * ace/Strategies.h: Changed all the destructors to be virtual so - that G++ will stop complaining... - - * ace/Thread_Manager: Reorganized the ACE_Thread_Manager so that - the ACE_HAS_THREADS #ifdef is no longer required... - - * ace/config-win32-msvc4.0.h: Added Dieter Quehl's great hack to - get ACE to compile correctly on Win32 with MFC! - - * ace/Task: I've rearranged the implementation of ACE_Task<> - in the following way: - - 1. Defined a non-template class ACE_Task_Base from which the - ACE_Task<...> inherits (instead of inheriting from - Ace_Service_Object, which ACE_Task_Base now inherits from. - - 2. Move all methods that don't depend on the or - modifers from the ACE_Task template to - ACE_Task_Base. - - There are two motivations for making this change: - - 1. It reduces ``template bloat'' by factoring out common - code that can be shared between ACE_Task - and ACE_Task. - - 2. It makes it possible for the Thread_Manager to use - ACE_Task_Base *'s for managing groups of ACE_Tasks - in a fully polymorphic manner. - - Note that the new changes don't break any existing code that - uses ACE_Task. Thanks to Hamutal Yanay - and Ari Erev's - for suggesting these changes. - - * ace/Thread_Manager: Changed the use of ACE_Task to - ACE_Service_Object because this avoids nasty problems with - template type conflicts. The right solution is probably to - create a new non-template base class for ACE_Task called - ACE_Task_Base and move all the ACE_Task operations into there - that don't involve the Message_Queue directly. I'll need to - think more about this... - - * ace/SOCK_Stream: Added new timed send_n() and recv_n() methods, - which use the underlying timed ACE::send() and ACE::recv() - calls. - - * ace/ACE.cpp: Added new timed send_n() and recv_n() methods, - which use the underlying timed ACE::send() and ACE::recv() - calls. - -Wed Oct 30 00:27:21 1996 Douglas C. Schmidt - - * ace/OS.h: Changed MAXHOSTNAMELEN on Win32 from - (MAX_COMPUTERNAME_LENGTH+1) (which is around 16 or so) to 256. - Thanks to Tilo Christ for this - suggestion. - - * ace: Made #define STRICT a compile time option if the - ACE_HAS_STRICT flag is enabled. This prevents ACE from breaking - existing application (i.e., non-ACE) code. Thanks to Karlheinz - for pointing this out! - - * ace/Synch_T.cpp: Fixed a typo in ACE_Condition::wait - (void). - - return ACE_OS::cond_wait (&this->cond_, this->mutex_.lock_); - - should read - - return ACE_OS::cond_wait (&this->cond_, &this->mutex_.lock_); - - Thanks to Dieter Quehl for - reporting this! - - * ace/Svc_Handler.h: Removed the operator ACE_PEER_STREAM &() from - the ACE_Svc_Handler class since we don't need it anymore due to - the changes below. - - * ace/{Acceptor,Connector}.cpp: Removed the use of operator - ACE_PEER_STREAM &() in the Acceptor::accept() and - Connector::connect() code and replaced it with - svc_handler->peer(). This works much better and is more - intuitive. - -Wed Oct 30 00:30:00 1996 Irfan Pyarali - - * Registry: Added a Name Service implementation to ACE based on - Win32 Registry. The ACE_Registry interface is inspired by the - interface specified in the CORBA Naming Service Specification. - The implementation is done through Win32 Reg*() functions. - Other than providing an OO wrapper for the Win32 Reg*() - functions, ACE_Registry provides an abstraction for iteration - over the elements of the Registry. This only works on Win32 - platforms (unless you are brave enough to reimplement the - Win32 Registry API on UNIX and link it in underneath ACE!). - - * ace/Local_Name_Space_T.cpp: Moved SEH out of methods of - Name_Space_Map to the methods of Local_Name_Space. Some of - the calls to Local_Name_Space methods used the allocator to - either malloc or find or free shared memory. Adding SEH to these - methods ensured that any exception raised due to remapping would - be caught and handled appropriately. - - Also, to fool the stupid MFC compiler, we added _i methods - so that it stopped bitching about destructors not getting called - correctly. - - * Added three new tests to /examples/Naming. Thanks to Lothar for - providing these tests. - -Tue Oct 29 18:10:09 1996 Douglas C. Schmidt - - * ace/ACE.cpp (send): Integrated a new and simpler version of - timed ACE::send(). Thanks to Vital Aza for - coming up with this. - - * ace/XtReactor.cpp: When the ACE_Reactor is constructed it - creates the notify pipe and registers it with the attach() - method. The XtReactor overloads this method BUT because the - attach occurs when constructing the base class ACE_Reactor, the - ACE_Reactor attach() is called not the XtReactor attach(). This - means that the notify pipe is registered with the ACE_Reactor - event handling code not the XtReactor and so notfications don't - work. To get around this we simply close and re-opened the - notification handler in the constructor of the XtReactor. - Thanks to Rodney Skinner for this fix. - - * ace/XtReactor.cpp (schedule_timer): The ACE_Reactor returns a - timer_id from it's equivalent call but the XtReactor always - returns 0. To fix this we simply replaced the "return 0;" in - the function with "return result;" Thanks to Rodney Skinner - for reporting this. - -Tue Oct 29 00:02:44 1996 Douglas C. Schmidt - - * ace/config-win32-msvc4.0.h: Defined the STRICT symbol based on a - suggestion from Luca. STRICT type checking in WINDOWS.H - enhances type safety for Windows programs by using distinct - types to represent all the different HANDLES in Windows. So for - example, STRICT prevents you from mistakenly passing an HPEN to - a routine expecting an HBITMAP. Note that if you have STRICT - type checking enabled in one file, but not in another, the C++ - compiler will generate different external link symbols for a - single function. This will result in link-time errors If you are - mixing STRICT and non-STRICT code, you must be aware of linkage - inconsistencies. In general, all MFC programming and all C++ - should be done with STRICT. If you have legacy C code, then not - using STRICT is acceptable - - * ace/OS.cpp (thr_create): Added a special check for the situation - where we have both ACE_HAS_PTHREADS and ACE_HAS_STHREADS - defined. In this case, we are running on Solaris, where - ACE_thread_t and ACE_hthread_t are the same. Therefore, we can - copy the value of the *thr_id into the *thr_handle. This - ensures that the ACE_Thread_Manager behaves correctly with - respect to suspending and resuming threads and ACE_Tasks. - - * ace/Trace.cpp (ACE_Trace): Changed the use of LM_DEBUG to - LM_TRACE in the constructor and destructor. Thanks to Luca for - this! - - * ace/OS.i: Added a cast to of (HMODULE) handle so that the STRICT - macro would work correctly for Win32. Thanks to Luca for this. - - * ace/config-win32-msvc4.0.h: According to Luca, ACE compiles file - with ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES undefined on NT. So - I undefined it! If there are any problems with this, please let - me know. - - * ace/SOCK_Dgram: Added Luca Priorelli - implementation of recv() for SOCK Dgrams that allows clients to - read from a socket without having to provide a buffer to read. - - * examples/Threads/test_task_four.cpp: This is a new test - program to test the new interfaces. Thanks to Hamutal Yanay - & Ari Erev for this. - - * tests/test_config.h: Added a call to the new ACE_OS::mkdir() - wrapper to create the log directory if one doesn't already - exist. This should solve some nasty problems with NT reported - by Tilo Christ . - - * ace/OS.h: Added a new macro ACE_DEFAULT_DIR_PERMS and changed - the spelling of the existing ACE_DEFAULT_PERMS to - ACE_DEFAULT_FILE_PERMS, which is more accurate. - -Mon Oct 28 21:35:12 1996 Douglas C. Schmidt - - * ace/OS.h: Added a wrapper for the mkdir() system call. We need - it for some of the tests. - - * ace/Task: Changed the name of ACE_Task_Exit<>::set_this() to - ACE_Task_Exit<>::set_task(). Thanks to Hamutal Yanay & Ari Erev - for suggesting this. - - * ace/{Task,Thread_Manager}: Integrated Hamutal - Yanay & Ari Erev's - enhancements to add ACE_Task support - to the ACE_Thread_Manager. This allows the ACE_Thread_Manager to - know about ACE_Tasks directly, rather than knowing - indirectly via their lower-level thread IDs. The changes - are described below: - - - Added a parameter to the activate() method. It is used to - pass an ACE_Task* to spawn_n(). - - - Modified suspend() and resume() to call - thrMgr->suspend_task() and thrMgr->resume_task() instead of - thrMgr->suspend_grp() and thrMgr->resume_grp(). - - - Added an ACE_Task * parameter to spawn_n(). - - - Added an ACE_Task * parameter to append_thr(). - - - append_thr() uses the ACE_Task * input parameter to - initialize the thread descriptor. - - - Added the following methods: - apply_task() - suspend_task() - resume_task() - kill_task() - resume_task() - cancel_task() - find_task() - - num_tasks_in_group() - num_threads_in_tasks() - - task_list() - thread_list() - hthread_list() - - set_grp() Like the current set_grp() but gets an ACE_Task * - as input. - get_grp() Like the current set_grp() but outputs an - ACE_Task *. - - wait_task() - wait_group() - -Sun Oct 27 11:25:00 1996 Douglas C. Schmidt - - * ace/OS: modified the ACE_OSCALL_RETURN macro so that we'll - no longer have zillions of warnings about _result not - used... - - * ace/Synch_T: Changed the use of ACE_Mutex for ACE_TSS to - ACE_Thread_Mutex. - - * ace: Added the necessary template specializations to get ACE - compiled correctly with G++. - - * ace/Log_Msg.h: There were some places in the ACE_{DEBUG,ERROR} - macros that should have been using __ace_error but there still - using errno (which is wrong since this might be changed due to - side-effects of calling ACE_Log_Msg::instance()). I found this - problem due to the use of -Wall with G++! As a result of this - fix, ACE now compiles much more cleanly with gcc -Wall. - - * ace/Strategy: Improved the scheme used to define the PEER_ADDR - type of the ACE_Accept_Strategy so that it will work correctly - on platforms whose C++ compilers aren't quite up to handling all - variants of template typedefs. In particular, many platforms - don't support the use of template typedefs in parameter names... - - * ace/OS: HP/UX omitted the const in the prototype of - const_timewait(). Therefore, I added a new typedef to handle - this and updated all the HP/UX config*.h files. - - * ace: Added a new config file (config-sunos5.5-sunc++-4.1.h) - which reflects the fact that SunC++ 4.1 fixes template bugs that - prevented earlier versions from supporting template typedefs - correctly. The new config file #defines - ACE_HAS_TEMPLATE_TYPEDEFS. - -Sat Oct 26 02:22:25 1996 Douglas C. Schmidt - - * ace: On the advice of David Levine, I compiled ACE with gcc - -Wall and started to fix lots of minor warnings (e.g., - misordered data member initializations). - - * ace/Local_Tokens.h: Changed the destructors of ACE_Mutex_Token, - ACE_RW_Token, ACE_Token_Proxy, and ACE_RW_Token to be virtual. - - * ace/Synch_T.h: Changed the destructor of ACE_TSS to be virtual. - - * ace/OS: Changed the prototype of ACE_OS::select() so that it - uses const ACE_Time_Value *. - - * Updated all uses of ACE_Malloc to use the new ACE_*_MEMORY_POOL - #defines. This makes it possible to use the ACE_Malloc<> scheme - with lame C++ compilers. - - * ace/ACE: Changed the interface of the new timed send/recv calls - to use ACE_Time_Value *, which makes it easier to determine - the blocking semantics at runtime. Thanks to Bill Fulton - for suggesting this. - -Sat Oct 26 15:55:02 1996 Irfan Pyarali - - * ace/OS.h: We determined that MSVC++ is capable of supporting - template typedefs. Therefore, we can enable the - ACE_HAS_TEMPLATE_TYPEDEFS flag, which makes life much easier for - end users! - -Fri Oct 25 23:16:16 1996 Irfan Pyarali - - * examples/Shared_Malloc/test_multiple_mallocs.cpp: Added a new - test that demonstrates the new ability of ACE_Malloc<> to to - handle multiple mallocs rooted at different base addresses. - - * ace/Memory_Pool: Fixed this stuff so that it works even when C++ - compilers can't grok template typedefs. - - * ace: Put all the macros that handle the fact that many C++ - compilers have broken template implementations into one place - (OS.h), rather than having this spread out in many files. - - * In ACE_MMAP_Memory_Pool::init_acquire (), we reset errno to 0 in - the case where the file already exists (and errno == EEXIST). - - * Added an ACE_*_Memory_Pool_Options class to each Memory Pool - class. The Options class allows detailed parameters to be passed - to the constructor of the Memory Pool class. Since a typedef'd - Options class was added to every Memory Pool class, this gave us - the ability to use traits in ACE_Malloc and - ACE_Allocator_Adapter to construct generic Memory Pools that can - be initialized uniquely for each instance of ACE_Malloc. Note - that this new feature only works for C++ compilers that support - template typedefs correctly (e.g., MSVC++ 4.x, SunC++ 4.1, - and the AIX C++ compiler). - - * Added additional constructors to ACE_Malloc and - ACE_Allocator_Adapter to allow Options to be passed in to Memory - Pool. - - * Added an extra field in ACE_Name_Options which allows - specification of the base address of the memory pool. This is - now used by ACE_Local_Name_Space::create_manager() to create an - ACE_Allocator_Adapter. This now allows us to have multiple - ACE_Naming_Context simultaneously in the same process address - space. - - * Also added error checking for constructors (in - ACE_Local_Name_Space and ACE_Malloc) by checking errno - values. This is a "hack" since we currently do not use exception - handling. - -Thu Oct 24 02:43:11 1996 Douglas C. Schmidt - - * examples/Connection/misc/Makefile: The Makefile in - ACE_wrappers/examples/Connection/misc seems to have been - truncated. I replaced it. Thanks to Alan Stewart - for reporting this. - - * examples/IPC_SAP/SOCK_SAP/CPP-{inclient,inserver}.cpp: Updated - these examples to use the new timed send()/recv() operations. - - * ace/SOCK_IO: Added timed send()/recv() methods, using the base - level implementations in class ACE. - - * ace/ACE: Added timed send()/recv() methods. - -Wed Oct 23 19:56:45 1996 Douglas C. Schmidt - - * examples/IPC_SAP/SOCK_SAP/CPP-inclient.cpp (main): Changed the - behavior of the test program so that it doesn't take a - local_addr, but rather will use the default (this prevents a - common problem that happens when users run the test without - reading the README file). - - * ace/ACE.cpp: Added a new method (get_flags) that returns the - current setting of flags associated with handle. - - * Start of a brave new world: ACE is now under CVS version - control... Thanks to David Levine and Chris Cleeland - for making this happen. - -Sat Oct 19 12:33:56 1996 David L. Levine - - * added ACE threads mappings to VxWorks 5.2 tasks in OS.*. - NOTE: this is _untested_ at this point, but only affects - VxWorks code - - * changed name of first argument of ACE_OS::sigprocmask() and - ACE_OS::thr_sigsetmask() from "signum" to "how" to better - represent what it really is. - -Wed Oct 16 01:59:40 1996 Douglas C. Schmidt - - * ace/Log_Record.cpp (print): added Luca's suggestion for checking - if host_name == 0 for the ostream version of print(), as well. - - * Released version of ACE 4.0.32 for testing. - - * ace/Synch.h: Added many small fixes for HP/UX 10.x. Thanks to - Alan Stewart for providing these. - - * ace/OS.h: Added many new ACE_LACKS* and ACE_HAS* macros to - support the MVS port. Thanks to Chuck Gehr - for these. - -Tue Oct 15 11:56:59 1996 Douglas C. Schmidt - - * ace/OS.h: in a continuing effort to protect the ACE namespace, - I've changed ace/OS.h around lines 127-137 so that "SYNCH" and - "SYNCH_MUTEX", etc. are prefixed with "ACE_". Thanks to Alan - Stewart for suggesting this. - - * ace/Local_Tokens.h: Removed an unnecessary parameter name - that was unused. Thanks to Stuart Powell - for reporting this. - -Tue Oct 15 17:03:37 1996 Tim H. Harrison - - * ace/ReactorEx.cpp (handle_events): Fixed a bug in handle_events - so that the correct handlers get called when multiple handles - become signaled simultaneously. Thanks to Ari Erev - for pointing out this bug. I also took - this opportunity to fix a bug when handlers are removed during - handle_events. - - * examples/Reactor/ReactorEx/test_remove_handler.cpp: Added a new - application that tests how the ReactorEx services simultaneous - events and removes handlers. This example also illustrates the - use of the new ACE_Events wrapper. Check - examples/Reactor/ReactorEx/README for more details. - -Mon Oct 14 11:43:18 1996 Douglas C. Schmidt - - * tests: Added a new version of run_tests.sh, which was - contributed by Michael Rueger . - - * examples/Logger/simple-server/Logging_Handler.cpp (handle_input) - and examples/Logger/Acceptor-server/server_loggerd.cpp - (handle_input): Changed from stderr to cerr to work around bugs - with the C run-time libraries on Win32. Thanks to Tilo Christ - for suggesting this. - -Mon Oct 14 11:09:42 1996 Prashant Jain - - * ace/Local_Name_Space_T.cpp (remap): Added processor specific - stuff to remap(). The code was taken from the book "Win32 - Network Programming" by Ralph Davis (p.18) and takes care of - cases specific to the 80x86 processor. The code ensures that the - registers are set properly when we continue execution after an - exception. - -Sun Oct 13 21:18:38 1996 Douglas C. Schmidt - - * ace/Log_Record.cpp (print): Added a test to make sure that the - value returned from ctime_r != 0 (e.g., if time_stamp_ == -1) in - order to avoid crashes. - - * examples/Logger/client/logging_app.cpp (main): Moved the - construction of the ACE_Log_Record log_record object into the - loop so that it will be recreated each time through. If this - isn't done, then we'll be continually "encoding" values into - network byte order that have already been encoded and screwing - things up on little-endian machines (such as Intel). Thanks to - Irfan and Tilo Christ for pointing - me in the right direction on this. - - * ace/Log_Record.cpp: Changed the default constructor so that it - gives default initializations to the data members. - - * examples/Logger/Acceptor-server/server_loggerd.cpp (handle_input): - Fixed a couple of typos where - - Logging_Handler::handle_input (int) - - should be: - - Logging_Handler::handle_input (ACE_HANDLE) - - and - - size_t len; - - should be: - - ssize_t len; - - Thanks to Irfan for finding these. - -Sat Oct 12 08:48:23 1996 Douglas C. Schmidt - - * Released a beta version of ACE 4.0.32 for testing. - - * ace/Log_Record.cpp: rewrote the code a bit to try and avoid - problems on NT when host_name == 0. - - * ace/Log_Record.cpp: Changed the use of ACE_OS::ctime() to - ACE_OS::ctime_r() to avoid problems that might arise when - ACE_Log_Record::print() is called from multiple threads. - - * ace/Log_Record.cpp: Commented out calls to ACE_TRACE to avoid - weird problems with circular dependencies. Thanks to Luca - Priorelli for suggesting this. - - * build/SunOS5.5/examples/Makefile: Added the Logger directory to - the list of targets that are build automatically by Make. - -Fri Oct 11 17:13:03 1996 Douglas C. Schmidt - - * ace: Fixed lots of small warnings revealed when using the - Greenhills compiler on VxWorks. Thanks to David Levine for - this. - - * ace/Pipe.h: In Pipe.h, the return value of ACE_Pipe::close() - isn't explicitly declared, so some compilers gag. Thanks to - David Levine for this. - -Thu Oct 10 12:05:55 1996 Douglas C. Schmidt - - * ace/Thread.cpp: Correctly wrapped the methods in the *.cpp file - so that they are ignored if threads *aren't* supported. - - * ace/Service_Repository.cpp (remove): Added the ACE_MT in front - of all the ACE_GUARD* macros that utilize ACE_Thread* locks in - order to ensure that ACE compiles correctly on all non-MT - platforms. - - * examples/Shared_Malloc/Malloc.cpp: Removed the special purpose - class for PROCESS_MUTEX since ACE_Process_Mutex will now work - for non-MT platforms. - - * examples/Misc/test_dump.cpp: Changed all occurrences of - - cerr << "string " << this << endl; - - to - - cerr << "string " << (u_long) this << endl; - - to work around problems with IRIX 5.3. Thanks to Tilo Christ - for reporting this. - - * ace/config-linux.h: Added a // in front of a stray comment line. - Thanks to Neil Cohen for pointing this out. - - * ace/config-hpux-10.x-g++.h: Added a new config file for HP/UX - 10.x which should fix some problems with templates by using the - G++ compiler. Thanks to for - contributing this. - -Wed Oct 9 14:34:19 1996 Douglas C. Schmidt - - * ace/OS: Changed the logic of socket initialization, which has - been moved out of ACE_SOCK and into ACE_OS. This makes it - possible to program more fully at the ACE_OS API (if such a - crazy thing is really necessary ;-)). - - * examples/IPC_SAP/SOCK_SAP/C-in{client,server}.cpp: Fixed up the - client and server apps so they will work on NT - (i.e., replaced the use of int with ACE_HANDLE). Thanks to Joe - DeAngelis for suggesting this. - - * ace/Synch.h: Now that we've got support for POSIX semaphores on - Solaris, then we'll use them (when they are supported...) as the - implementation of ACE_Process_Semaphore rather than using the - slower ACE_SV_Semaphore_Complex stuff... - - * ace/OS.{h,i}: Added David Levine's support for named POSIX - semaphores. If ACE_HAS_POSIX_SEM is defined, then ACE_Semaphore - will construct a named POSIX semaphore if passed a non-null - name, or an unamed POSIX semaphore if passed a null name. This - is a great addition because POSIX semaphores are more powerful - and useful than the Solaris UI semaphores. Unfortunately, - Solaris 2.5 doesn't support them (yet). - -Tue Oct 8 16:00:00 1996 Irfan Pyarali - - * ace/OS: Integrated Irfan's encapsulation/emulation for Win32 - Events at the ACE_OS level. A new structure ACE_event_t was - created to support Events on non-WIN32 platforms. On WIN32 - platforms ACE_event_t is just a HANDLE. On non-WIN32 platforms, - ACE_event_t uses a combination of mutexes, condition variables, - and counters to emulate Events. Both auto-reset and manual-reset - events are supported. - - * ace/Synch: Integrated Irfan's encapsulation/emulation for Win32 - Events at the C++ wrappers level. There are three wrappers that - were created: ACE_Event, ACE_Auto_Event, and ACE_Manual_Event. - ACE_Event is a wrapper for the ACE_event_t structure. It - provides functionality for signal, wait, pulse, and reset on an - event. ACE_Event supports both auto-reset and manual-reset - events. However, specializations of ACE_Event were created - (ACE_Manual_Event and ACE_Auto_Event) to make it easier to use - Events. - - * examples/Threads/test_manual_event.cpp: A test for manual-reset - events. The test involves the creation and use of a barrier - which uses an ACE_Manual_Event. - - * examples/Threads/test_auto_event.cpp: A test for auto-reset - events. The test involves the use of an ACE_Auto_Event for - signaling threads. - -Tue Oct 8 15:45:01 1996 Douglas C. Schmidt - - * ace/DEV.cpp (ACE_DEV): Removed a stray call to - ACE_IO_SAP::dump(). Thanks to Brad Flood - for this fix. - - * ace/OS.i: Added ACE_HAS_CHARPTR_SOCKOPT for VxWorks. Thanks to - David Levine for this. - - * ace/Dump.cpp (instance): Added an ACE_MT() macro around the - ACE_GUARD_RETURN macro so that this will compile correctly on - non-threaded platforms. Thanks to David Levine for this. - - * ace/OS.h: the declaration of ACE_OS::msgctl needs "struct - msqid_ds" instead of just "msqid_ds" to compile with the - Greenhills C++ compiler. Thanks to David Levine for this... - - * ace/Local_Name_Space_T.h: Added #include "ace/Local_Name_Space.h" - to avoid a problem during template generation. Thanks to - Chris Lahey for this fix. - - * ace/OS.i (getprotobynumber_r): Added a pair of fixes from Chris - Lahey to get the ACE wrappers for the getprotoby*_r() methods to - compile on AIX. - - * examples/Threads: Added two new examples (test_auto_event.cpp - and test_manual_event.cpp) that exercise the new ACE_Event - mechanisms. - - * ace/Synch: Integrated Irfan's encapsulation/emulation for Win32 - Events at the C++ wrappers level. - - * ace/OS: Integrated Irfan's encapsulation/emulation for Win32 - Events at the ACE_OS level. - -Fri Oct 4 08:32:47 1996 Douglas C. Schmidt - - * ace/OS.i: Added David Levine's new ACE_OS::mktemp() implementation. - -Wed Oct 2 13:26:20 1996 Douglas C. Schmidt - - * ace/SV_Message_Queue.i: Changed the casts of (msgbuf *) to - (void *). - - * ace/OS.i: Added David Levine's implementation of inet_addr() for - VxWorks. - - * ace/OS.i: Continued to merge together various parts of Win32 and - UNIX to reduce redundancies. - -Tue Oct 1 15:03:42 1996 Douglas C. Schmidt - - * ace/OS.i: Added Chuck Gehr's new changes to ACE_OS::mutex_init() - and ACE_OS::cond_init() to handle the MVS Pthreads madness. - - * ace/OS.i: Added zillions of #ifdefs for VXWORKS. It's amazing - these guys call themselves POSIX compliant -- lots of stuff is - missing. Thanks to David Levine for doing this! - - * ace/OS.cpp: Added David Levine's implementation of mktemp() - for platforms that don't support it. - - * ace/OS.h: Added a bunch of minor changes for VXWORKS. In - addition, started to factor out common #ifdefs to make the code - easier to maintain. - - * ace/OS.h: Added a new macro for ACE_LACKS_UTSNAME, and factored - this out for both VxWorks and Win32. - - * ace/Time_Value.h: Added support for 2 VXWORKSisms: (1) we need - to #include sys/times.h rather than the standard UNIX sys/time.h - and (2) we need to change const timeval & to const struct - timeval & to keep the Greenhills compiler happy. Thanks to - David Levine for this. - - * ace/INET_Addr.cpp: Added support for the insane VXWORKS - hostGetByName() function. Yikes! Thanks to David Levine for - this. - - * ace/Memory_Pool.cpp: Added a new #define called ACE_LACKS_SBRK - and ACE_LACKS_SYSV_SHMEM, which is enabled on Win32 and VxWorks. - Thanks to David Levine for reporting this. - - * ace/OS.h: Added new macros that #define ETIME for platforms like - VxWorks that don't support it, but do support ETIMEDOUT. - - * ace/OS.h: Added placeholder #defines for USYNC_PROCESS and - USYNC_THREAD when !defined (ACE_HAS_THREADS). Thanks to Neil - Cohen for reporting this. - -Tue Oct 1 00:42:35 1996 Douglas C. Schmidt - - * ace/Message_Block.cpp (size): Member base_ of ACE_Message_Block - was being set to the new memory pointer before the old contents - are saved in method size. So the line - - this->base_ = buf; - - was moved to a place some lines below. Thanks to Marco Sommerau - for detecting this. - - * ace/Message_Queue.cpp: Changed the implementation of the - enqueue_i() method so that FIFO order is maintained when - messages of the same priority are inserted consecutively. - Thanks to Jay Denkberg for - suggesting this. - -Mon Sep 30 22:59:38 1996 Douglas C. Schmidt - - * ace/OS.i (thr_yield): Added a new macro ACE_HAS_YIELD_VOID_PTR - to make pthread_yield work on MVS. Thanks to Chuck Gehr - for this fix. - - * ace/OS: Added a new macro called ACE_HAS_TIMEZONE_GETTIMEOFDAY - that handles problems on MVS. Thanks to Chuck Gehr - for this fix. - -Mon Sep 30 13:45:10 1996 Tim H. Harrison - - * ace/Local_Tokens.h: Updated some documentation in all the Token - files. - -Mon Sep 30 18:01:12 1996 Prashant Jain - - * netsvcs/lib/: Renamed files Logger.{h,cpp} to - Logging_Strategy.{h,cpp} to avoid confusion with Server_Logging - and Client_Logging stuff. In addition, I modified the affected - files, including Makefile, README, and the config files in the - tests directory. - -Sun Sep 29 12:47:37 1996 Douglas C. Schmidt - - * ace/OS.h: Added Chuck Gehr fixes for - MVS to enable signals to work correctly. - - * ace/Time_Value.h: Added an extern "C" { } block around #include - to solve a problem with Linux. Thanks to Padhu - Ramalingam for reporting this. - - * netsvcs/lib/Server_Logging_Handler.cpp: Changed the - initialization of a static template object from ::request_count_ - (0L) to ::request_count_ = 0L. Thanks to Gonzalo Diethelm - for reporting this. - - * ace/Remote_Tokens.h: Moved the inclusion of "Singleton.h" from - Remote_Tokens.cpp to Remote_Tokens.h. This should avoid - template instantiation problems on some platforms (e.g., Irix - 6.2). - - * ace/config-irix6.2-sgic++.h: Changed ACE_HAS_SIGINFO to - ACE_HAS_SIGINFO_T and added ACE_HAS_UCONTEXT_T. Thanks to - Gonzalo Diethelm for reporting this. - - * ace/Token_Invariants.h: The ctor/dtor were private and the - compiler would not allow a template of the class to be created. - I switched them to public, but I wish there was a better way... - Thanks to Gonzalo Diethelm for reporting - this. - - * ace/Synch_T.h: #include'd "ace/Event_Handler.h". Thanks to - Gonzalo Diethelm for reporting this. - - * ace/Synch.h: The parameter name gives warnings when - instantiating templates. Thanks to Gonzalo Diethelm - for reporting this. - - * ace/Process: Changed the definition of the get_pid() method to - getpid() to avoid a conflict with Irix. Thanks to Gonzalo - Diethelm for reporting this. - - * ace/Log_Msg.cpp (log): Added another #elif !defined (ACE_WIN32) - to handle logging for OS platforms that (1) aren't Win32 and (2) - are versions of UNIX that don't support STREAM pipes. Thanks to - Gonzalo Diethelm for reporting this. - - * ace/Acceptor.cpp (handle_signal): Erased the signum parameter - name to avoid a nasty warning about arguments not used when - instantiating templates. Thanks to Gonzalo Diethelm - for reporting this. - - * ace/OS.h: Added the ACE_Export symbol to the definition of - ACE_Str_Buf. This makes it compile and link on NT. Thanks to - Prashant for noticing this (our favorite Win32ism...). - - * ace/Thread.h (ACE_Thread): Removed a default argument for one of - the ACE_Thread::join() wrappers so this won't be ambiguous with - the other join() wrapper. - - * ace/OS: Added a new wrapper for strtok_r(). - -Sun Sep 29 16:12:01 1996 Prashant Jain - - * netsvcs/lib/: Renamed the project file for Win32 from lib.mdp to - netsvcs.mdp. Also the original project file did not include some - files such as Naming_Handler.cpp and Server_Logging_Handler.cpp - and I fixed that. Finally removed two files System_Time.{h,cpp} - which are already present in ace/. - -Sat Sep 28 16:34:56 1996 Douglas C. Schmidt - - * ace/OS: Added a new overloaded select() method that takes a - const ACE_Time_Value &. This is useful for situations where you - are passing in ACE_Time_Value::zero. - -Fri Sep 27 16:20:46 1996 Douglas C. Schmidt - - * ace/ACE: Added a fix for the fact that VxWork's write() call - doesn't take a const char *. - - * ace: Started adding support for VxWorks and GreenHills compiler, - e.g., added the config-vxwork-ghs-1.8.h file. Thanks to David - Levine for getting this rolling! - -Thu Sep 26 00:15:46 1996 Douglas C. Schmidt - - * ace/Timer_Queue: Changed the public interface methods to be - virtual in order to make it possible to override them in - subclasses. This makes it feasible to implement different types - of Timers. - - * ace/OS: Added a wrapper for the strspn() string call. Thanks to - Irfan for noticing this omission. - - * ace/Synch_T.cpp (wait): Changed the line: - - return ACE_OS::cond_wait (&this->cond_, this->mutex_); - - to - - return ACE_OS::cond_wait (&this->cond_, &this->mutex_.lock_); - - Thanks to Dieter Quehl - for noticing this. - - * ace/config-sunos5.4-g++.h: Removed the #define for - ACE_HAS_BROKEN_RANDR and replaced the ACE_HAS_SVR4_SIGNAL_T with - ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES since it looks like the - latest gcc release (2.7.2) fixes this in their own header files. - -Sat Sep 21 10:45:43 1996 Douglas C. Schmidt - - * ace/OS.h: Added a new #define called ACE_HAS_BROKEN_MSG_H to the - config-osf1-3.2.h file and used it in OS.h to work around - problems with prototypes on that platform. - -Fri Sep 20 00:15:29 1996 Douglas C. Schmidt - - * Released version 4.0.31 for testing. - - * ace/Pipe.cpp: Initialize handles_ to ACE_INVALID_HANDLE in - default constructor. Thanks to Tim Harrison for pointing this - out. - - * ace: Copied in new versions of ace.{mak,mdp} for Win32. - - * ace: Added TTY_IO.cpp to the Makefile. - - * ace/config-win32-msvc[24].0.h: Updated the config file so that - it *doesn't* #define ACE_HAS_STRBUF_T since this type clearly - isn't available on Win32! - - * ace: Modified all of OS.i and config-*.h files so that they - would be consisten with respect to handling the size_t and int - differences in socket implementations. Thanks to Chuck Gehr - for helping with this for AIX. - - * ace/ACE.h (ACE): Added a new method called max_handles() that - returns the maximum number of open handles currently supported - by the process. - - * examples/Reactor/Misc/signal_tester.cpp: Revised the test to - utilize the new idioms for programming with signals. - - * ace/OS.h: added a new #define called ACE_DEV_NULL that defaults - to "/dev/null" on UNIX and "nul" on NT. Thanks to David Trumble - for reporting this fix. - - * ace/Log_Msg.cpp: Added some checks to make sure that we don't - try to strdup() if we are passed a NULL pointer. Thanks to Luca - for suggesting this. - - * ace/OS: Move ACE_Str_Buf into OS.{h,i} and remove the Str_Buf.h - file. - - * Makefile: Added the "performance-tests" directory to the list of - directories we build when making ACE. - - * ace: Moved the definition of strbuf from Str_Buf.h into OS.h. - Thanks to Irfan for recommending this. - - * ace/Makefile: Added some additional sed magic on the - Svc_Conf_y.cpp file in order to remove the very last warnings - from MSVC++! - -Thu Sep 19 00:00:17 1996 Douglas C. Schmidt - - * ace/Service_Config.cpp (open): Only initialize the logger to use - STDERR if the user hasn't already set the ACE_Log_Msg::flags(). - Thanks to Tom Leith for suggesting this. - - * ace/OS: Removed all traces of the ACE_HAS_INT_SOCKNAME and - ACE_HAS_LENPTR_SOCKOPT since Chris Lahey's new fixes for AIX - obviate the need for these. - - * ace/OS.i: Only #include if the platform has RPC! - Thanks to Chuck Gehr for suggesting - this. - - * ace: Removed all uses of ACE_HAS_SETOWN and replaced them with - explicit tests for F_SETOWN and FASYNC. This is more portable. - Thanks to Chuck Gehr for suggesting - this. - - * ace/OS: Added a new #define called ACE_HAS_SIZET_SOCKET_LEN to - handle platforms where the length parameter of bind(), - connect(), accept(), etc. uses size_t rather than int. This - helps to get ACE working on MVS. Thanks to Chuck Gehr - for suggesting this. - - * ace/OS: Added Chris Lahey's fixes that make the - getprotoby{name,number}_r() functions work for AIX. - - * ace: Changed the ACE_HAS_STRUCT_HOSTENT_DATA to - ACE_HAS_STRUCT_NETDB_DATA because we use a single symbol to - refer to all of the odd netdb.h stuff that AIX has... - - * ace: Changed all uses of: - - iovec *iovp = (iovec *) alloca (total_tuples * sizeof *iovp); - - to - - iovec *iovp = (iovec *) alloca (total_tuples * sizeof (iovec)); - - to keep the AIX compiler from complaining (falsely) about using - iovp before it is initialized. Thanks to Chris Lahey for - reporting this. - - * ace/OS.h: Added Chris Lahey's changes that handle AIX's - _XOPEN_EXTENDED_SOURCE features without polluting all the socket - implementations! - - * ace/Thread.cpp (spawn_n): Removed an unreferenced local variable - so that the Win32 compiler doesn't complain. - - * ace/OS.h: Added the definition for strbuf{} for NT. - - * ace: Removed the msg_hack.h file since it had OSF and DEC - copyright info in it. Replaced this with Antonio Tortorici's - clever use of _KERNEL and the - new ACE_LACKS_SYSV_MSQ_PROTOS. - - * ace/INET_Addr.h: Updated the documentation to indicate more - clearly the use of getservbyname(). - - * ace/OS.cpp (thr_create): Added basic hooks to support the use of - AfxBeginThread on Win32. This is necessary to allow ACE to work - seemlessly with MFC applications. Added an THR_USE_AFX flag - that can be "or'd" in with the other thread flags in calls to - ACE_OS::thr_create(). If this flag is enabled *and* if we are - compiling with ACE_HAS_MFC enabled, then AfxBeginThread() is - called rather than _beginthreadex(). - - * ace/INET_Addr.h (set): Fixed a typo in the documentation for - set() (the order of "host:port" was backwards...). Thanks to - Brad Flood for reporting this. - -Wed Sep 18 00:36:01 1996 Douglas C. Schmidt - - * ace/SOCK_IO.cpp: Added a new recv() method that allows a client - to read from a socket without having to provide a buffer to - read. This method determines how much data is in the socket, - allocates a buffer of this size, reads in the data, and returns - the number of bytes read. The caller is responsible for - deleting the memory. Thanks to Luca Priorelli - for suggesting this. - - * ace/OS.h: Added a special #ifdef for IRIX 6.2 threads so that - THR_BOUND and THR_SCOPE_SYSTEM are different. Thanks to Gonzalo - Diethelm for reporting this. - - * ace/Message_Block.i (msg_class): Added a new "class" of messages - to ACE_Message_Block: MB_USER. This is useful for writing - extensible applications a la Microslush Windows MSG stuff... - -Tue Sep 17 16:38:44 1996 Douglas C. Schmidt - - * ace/Message_Block: Changed the signature of the - ACE_Message_Block constructors (and init()) so that they take - const char * rather than char *. In addition, changed the - definition of one of the constructors (and init()) so that it - takes a size field in addition to the buffer. - - * ace/Message_Block.cpp (size): Fixed a bug in the - ACE_Message_Block::size() method -- we were failing to deal with - allocators and ownership correctly during a resize. Thanks to - Amos Shapira for reporting - this. - - * ace/Naming_Context.cpp: Removed the source of yet another - warning about "inconsistent dll linkage. dllexport assumed." - - * ace/Mem_Map.cpp (map_it): Added a cast to size_t (file_len) - because by this time we know that file_len >= 0. This avoids - yet another warning on WinNT! - - * ace/Reactor.h: Fixed the remaining warnings about - "signed/unsigned mismatch" in Win32 by changing the type of - cur_size_ from size_t to ssize_t. - - * ace/Log_Msg.cpp: Modified the code so that on NT we use - ACE_SPIPE_Msg rather than ACE_FIFO_Send_Msg. Thanks to Luca - Priorelli for suggesting this. - - * ace/OS.i: Implemented the and put[p]msg() wrappers by being - smart about allocating and copying data. - - * ace/TTY_IO.cpp (control): There was one too many end parentheses - on line 192 of TTY_IO.cpp. Thanks to Dave Trumble - for reporting this fix. - - * ace/Log_Msg.cpp (local_host): Fixed the use of program_name_ and - local_host_ so that they strdup() the values passed by the - users, rather than copying pointers. This avoids problems if - the user doesn't pass in static memory. Thanks to Luca - Priorelli for reporting this. Somehow - this change got lost and I've reapplied it... - - * ace/Log_Record.cpp (round_up): Added an extra + 1 to the length - since otherwise the final '\0' gets lots if len is a multiple of - 8. Thanks to Luca Priorelli for reporting - this. Somehow this change got lost and I've reapplied it. - - * ace/Memory_Pool.h: removed #if defined (ACE_HAS_SIGINFO_T) logic - from both handle_signal() definitions (ACE_Shared_Memory_Pool - and ACE_MMAP_Memory_Pool). Thanks to Chris Lahey for fixing - this. - - * ace/OS.h: Moved the define of SA_RESTART below the #include for - signal.h. Otherwise SA_RESTART will always be defined by OS.h, - since SA_RESTART is defined on AIX in signal.h. Thanks to Chris - Lahey for fixing this. - - * ace/OS.h: Added some new #pragmas to suppress harmless warnings - for the MSVC++ compiler. - -Tue Sep 17 13:20:53 1996 Prashant Jain - - * ace/Local_Name_Space_T.cpp: Modified ACE_Local_Name_Space:: - create_manager () so that all three naming scopes use the - database variable defined in Name Options. This allows us to - specify different names for databases for all three naming - contexts. However, it is imporant to note that this can lead to - potential problems where, for example, a process may use the - same name for PROC_LOCAL database as an already existing - NET_LOCAL database. - -Mon Sep 16 01:31:21 1996 Douglas C. Schmidt - - * examples/Logger/simple-server/Logging_Handler: get_handle(), - handle_input(), and handle_close() want the right types - (ACE_HANDLE instead of int). Thanks to Luca Priorelli - for reporting these. - - * examples/Logger/simple-server/Logging_Acceptor.cpp: Fixed a typo - (Log_Mskg.h should be Log_Msg.h of course...). In addition, - changed the use of -1 to ACE_INVALID_HANDLE. Thanks to Luca - Priorelli for reporting these. - - - * ace: Changed all uses of ACE_HAS_ACE_INLINED_OSCALLS to - ACE_HAS_INLINED_OSCALLS. This was a vestiage of a global - replace gone amok. Thanks to Alan Stweart for - reporting this! - - * ace/Log_Msg.cpp (open): Added a check for the OSTREAM flag in - the ACE logger. Thanks to Rick Orr - for noticing this. - - * Released version 4.0.30 for testing. - - * netsvcs/clients/Naming/Dump_Restore/Dump_Restore.cpp - (Dump_Restore): Deleted an extra "return 0;" within a - constructor (duh...). - - * examples/Threads/test_process_{semaphore,mutex}.cpp (main): - Fixed some annoying G++ compiler bug related problems. We need - to use old-style C casts to prevent ambiguous parsing. - - * examples/ASX/Event_Server/Transceiver/transceiver: Rewrote this - example to illustrate how to use the ACE_Connector and - ACE_Svc_Handler. - - * examples/ASX/Event_Server/Transceiver/transceiver: Finally clued - in and realized that it is just not suitable to implement the - event server transceiver with separate threads for input and - output. It is simply to non-portable to get these shut down - gracefully. I think John Ousterhout was right -- threads are - evil! - - * examples/ASX/Event_Server: Merged the Consumer/Supplier - directories into a single Transceiver directory to reflect the - fact that the Consumer and Supplier were completely symmetrical! - - * ace/Module.cpp (close): Don't delete the Tasks in a Module if - there are still threads running in them. Otherwise we'll end up - with a big mess. - -Mon Sep 16 15:50:45 1996 Prashant Jain - - * performance-tests/Misc/test_naming.cpp: Added a new test to the - performance-tests directory called test_naming which simply does - performance testing on Naming Service. The test runs both the - SYNC and the NO-SYNC version of Naming Service. - -Mon Sep 16 15:22:52 1996 Tim H. Harrison - - * ace/Proactor.cpp (initiate): Added a check for - ERROR_NETNAME_DELETED after ReadFile/WriteFile. Now the - initiating handler is immediately dispatched for EOF *and* - closed connections. Thanks to Luca Priorelli - for suggesting this change. - -Sun Sep 15 00:55:59 1996 Douglas C. Schmidt - - * Fixed all uses of ACE_Service_Config::end_event_loop() and - ACE_Service_Config::run_event_loop() to be - ACE_Service_Config::end_reactor_event_loop() and - ACE_Service_Config::run_reactor_event_loop() since we now have - to consider the other event loops (e.g., Proactor and ReactorEx) - and it doesn't seem right to relegate those to 2nd class status. - - * ace: Finally got fed up with all the #ifdefs required to deal - with extended signals and just changed the - ACE_Event_Handler::handle_signal() method to always use the - extended signal interface. Fortunately, we can use default - values to hid this from callers (though you may need to change - your class definitions if you were assuming the - handle_signal(int) interface. - - * ace/Memory_Pool.h: Changed all the methods of the various - Memory_Pool classes to be virtual so that subclasses can - selectively override them. This shouldn't affect performance - since all existing use cases work directly with the "derived" - classes themselves, so there shouldn't be any overhead since the - compiler can use direct calls rather than virtual function - calls. - - * ace/OS.cpp (thr_create): Changed the call to CreateThread() to - _beginthreadex() and the call to ExitThread() to _endthreadex() - for Win32 in order to make ACE threads work correctly with - Win32. Thanks to James Mansion for - recommending this. - - * ace/ACE: Added two new static functions: read_adapter() and - register_stdin_handler(). These are useful when writing code - that must demultiplexing ACE_STDIN on both Win32 and UNIX. This - works around Win32 limitations that don't allow us to select() - on non-sockets (such as ACE_STDIN). - - * examples/ASX/CCM_App/SC_Server.cpp: Updated this - test so that it should now work correctly on Win32, where it - isn't possible to select() on STDIN... - - * ace/Synch_T: Added a new class to ACE called "ACE_Test_and_Set." - As this name implies, this class implements an atomic ``test and - set'' abstraction. This has all sorts of useful implications, - particularly because it is a template that can be paramaterized - by the type of LOCK (e.g., ACE_Null_Mutex, ACE_Thread_Mutex, - etc.) and the type of TYPE (e.g., int, double, sig_atomic_t, - etc.). In addition, because this "is-a" ACE_Event_Handler it - instances can be registered with the Reactor and used to shut - down event hoops gracefully upon receipt of certain signals - (e.g., SIGINT). In fact, I've redone many of the example - applications (e.g., ./examples/Logger/server/server_loggerd.cpp) - to illustrate how this works. - -Sun Sep 15 20:40:17 1996 Tim H. Harrison - - * ace/ReactorEx.cpp (notify): I've redesigned this code. - Previously, ReactorEx was explicitly managing a handle that it - kept in handles_[0]. handles_[0] was used to implement - ReactorEx::notify, which allowed other threads to wake up the - thread waiting in ReactorEx::handle_events. Now ReactorEx has - an Event_Handler (ReactorEx_Notify) that is registered in the - constructor of ReactorEx. This allows us to treat events from - handles_[0] just like every other event (i.e. by dispatching to - handles_[0]->handle_signal). One of the results of this change - is that code in remove_handler() is simplified a bit. - -Sun Sep 15 17:56:52 1996 Prashant Jain - - * ace/Naming_Context.cpp: Added a new flag to the constructor and - open() method of ACE_Naming_Context that allows us to specify - which Memory_Pool to use when creating ACE_Local_Name_Space - (that is choose between ACE_MMap_Memory_Pool and - ACE_Lite_MMap_Memory_Pool). - - * ace/Memory_Pool.cpp: Added a new class called - ACE_Lite_MMap_Memory_Pool which subclasses ACE_MMap_Memory_Pool - and overrides the sync method so that it is a no-op. - - * ace/Local_Name_Space.cpp: Made some siginificant changes in - ACE_Local_Name_Space. Here is what the problem was: - ACE_Name_Space_Map (which is an ACE_Map_Manager) used an - ACE_RW_Process_Mutex for synchronization. However, since the Map - was kept in shared memory and was shared by all the processes, - it got instantiated only by the first process which came - along. Therefore, only the first process got around to creating - and initializing the lock. - - In fixing the problem, we made some other changes to - ACE_Local_Name_Space and ACE_Name_Space_Map. Both classes are - now template classes. ACE_Local_Name_Space needs to be - parameterized with a Memory_Pool (thus giving us a hook to - implement the NO-SYNC option) as well as a LOCK. - ACE_Name_Space_Map needs to be parameterized by an ALLOCATOR - which is created by ACE_Local_Name_Space. Note that the reason - we need to parameterize ACE_Name_Space_Map is so that we can - pass an ACE_Allocator_Adapter (which subclasses from - ACE_Allocator) with every method. It is not possible to pass an - ACE_Allocator since the ::remap() method relies on an - allocator() method defined on the ALLOCATOR that is passed in - (and ACE_Allocator does not define an allocator() method). - - The purpose of the class ACE_Name_Space_Map still remains the - same. It IS_A Map_Manager and provides the hook to set the - allocator to the process specific one. However, none of its - methods acquire any locks. For that reason, the Map_Manager is - parameterized with the Null_Mutex. All synchronization takes - place inside ACE_Local_Name_Space. ACE_Naming_Context - instantiates ACE_Local_Name_Space (depending upon the scope) and - by default parameterizes it with ACE_MMap_Memory_Pool and - ACE_RW_Process_Mutex. - - Also made some more fixes to ACE_Local_Name_Space. In - create_manager(), after we create the allocator, we now check to - see if the backing store was created successfully and if not, we - return -1. - -Sat Sep 14 00:00:31 1996 Douglas C. Schmidt - - * examples/Logger: Renamed the original server directory to - "simple-server" and added a new directory called - "Acceptor-server" which implements the Logger using the - ACE_Acceptor. Note that almost all of the implementation code - disappears! - - * ace/Local_Name_Server_T.cpp: Removed the name_server_map_ array - and replaced it with the ACE_NAME_SERVER_MAP #define, which is - now contained in OS.h. - - * ace/Malloc.h: Added "virtual ... = 0" to the bind() and - trybind() methods of the ACE_Allocator since they should be pure - virtual functions... - - * ace/Synch{_T}: Separated out the wait (ACE_Time_Value *) and - wait (void) methods in order to optimize the call sequence for - the common case when there is no timeout. - - * ace/Synch: Added a new wait(ACE_Thread_Mutex &) method to - ACE_Condition_Thread_Mutex so that we are consistent with the - templated ACE_Condition_Mutex. - - * include/makeinclude: Changed uses of -pic to -PIC because ACE is - now creating more than 2082 symbols. It's probably time to - split up the library... - - * ace/DEV_IO: Moved the ACE_DEV_Addr instance from ACE_DEV_IO into - ACE_DEV so that it will be available for the ACE_DEV_Connector. - This fixes a bug that prevented us from using the ACE_Connector - in conjunction with the ACE_DEV_* classes. Thanks to Karlheinz - for clarifying what had to occur. - -Fri Sep 13 00:16:32 1996 Douglas C. Schmidt - - * ace/OS.h: Changed the order of #includes so that - comes before . This fixes some bugs with the - Siemens SVR4 C++. Thanks to Antonio Tortorici - for this fix - - * ace/ACE.cpp (handle_timed_complete): Added yet another weird - hack to deal with the insanity that is TLI... - - * ace/Synch.cpp: Replaced all uses of ACE_Thread_Mutex_Guard with - ACE_GUARD macros in order to avoid problems when mutexes fail. - - * ace/OS.h: Changed the definition of the ACE_*GUARD macros so - that they are always enabled, even when we turn off ACE_MT_SAFE. - This avoids a nasty semantic problem for components that use - ACE_Process_Mutex. Thanks to Avraham Nash - for reporting this problem. - - * ace/OS: Removed ACE_OS::fork_exec() since its functionality has - been subsumed by ACE_Process. - - * ace/Thread_Manager: Added a new thread_descriptor_i() method - that *doesn't* grab the lock in order to avoid deadlocks. - - * include/makeinclude/platform_sunos5_sunc++.GNU (CXX): had to add - the -pta option so that we achieve template closure in ACE. - - * include/makeinclude: Added -lthread to the - platform_sunos5_sunc++.GNU file. I don't know how this slipped - through the cracks! - - * ace/{DEV_IO,FILE_IO,SOCK_IO,SPIPE_Stream}: Fixed a braino with - alloca where I was failing to multiply by sizeof (iovec). Isn't - C great? ... Thanks to Chuck Gehr for - reporting this. - - * ace/SOCK_Dgram_Mcast.cpp: Added two changes to the ACE multicast - code in order to get it to work on Win32. The first change is - to put the IP_ADD_MEMBERSHIP setsockopt() call *after* the - bind() (in shared_open()). The second is to convert the - ACE_INET_Addr::get_ip_address() from host byte order into - network byte order. Thanks to Todd L. Montgomery - and Steve Weismuller - for helping with this. - - * examples/Threads/test_barrier2.cpp: Incorporated Karlheinz's - new ACE_Barrier test program. - - * ace/Synch.h: Added Karlheinz's ACE_Null_Barrier class. - -Fri Sep 13 00:30:50 1996 Tim H. Harrison - - * tests/{Tokens_Test,Time_Service_Test}.cpp: Updated tests to use - ACE_Process instead of ACE_OS::fork_exec. - - * ace/Process.cpp: Added a new ACE_Process abstraction that is a - Portable encapsulation for creating new processes. It allows - assignment of STDIN, STDOUT, and STDERR of the new process. On - UNIX, ACE_Process uses fork and exec. On Win32, it uses - CreateProcess. Since we can set the standard handles, we can - mimic UNIX pipes on Win32 by building chains of processes. This - class should be used instead ACE_OS::fork_exec. - - * examples/OS/Process/process.cpp (main): Added new example - application to show how to use ACE_Process. - -Thu Sep 12 00:55:25 1996 Douglas C. Schmidt - - * ace/DEV_IO: Added methods get_local_addr() and get_remote_addr() - so that ACE_Connector will work correctly. Thanks to Brad Flood - for reporting this. - - * ace/Thread_Manager.cpp (thr_self): Added a fix to solve the - problem that Win32 GetCurrentThread() returns a pseudo-handle - rather than a real handle. Now, we just look things up using - the thread id rather than the thread handle. Thanks to Luca - Priorelli" for clarifying this. - - * ace/Proactor.cpp (initiate): Fixed an incorrect set of return - values -- they were reversed. Thanks to Brad Flood - for reporting this. - - * ace/OS.i (thr_cmp): Added a check for - !defined(ACE_HAS_SETKIND_NP) to avoid a problem with OSF/1. - Thanks to Martin Schoeckle for - reporting this. - - * examples/IPC_SAP/DEV_SAP: Updated these examples to use the new - ACE_TTY_IO classes. - - * ace: Moved the TTY_IO code from the - examples/IPC_SAP/DEV_SAP/{reader,writer} directories into the - files TTY_IO.{h,cpp} in the main part of ACE and integrated Brad - Flood's changes for Win32. - - * ace/DEV_IO.i: Changed the mapping of send_n() and recv_n() - methods to use write_n() and read_n() respectively so they will - work on NT. Thanks to Brad Flood for - reporting this. - - * ace/Thread_Manager.h: Implemented a non-synchronized version of - the lookup function for the . This version - assumes that the lock is help. We need this to avoid - intra-class method deadlock on systems (such as Solaris) that - lack recursive mutexes. - - * ace/Log_Msg.cpp (ACE_Log_Msg): made sure to initialize - ACE_Log_Msg::thr_handle_ to 0. I'm not sure how this got - changed... Thanks to Luca Priorelli for - reporting this. - - * examples/Reactor/ReactorEx/test_reactorEx.cpp - (register_thread_exit_hook): Changed hthread_t to ACE_hthread_t. - Thanks to Luca Priorelli for reporting - this. - - * apps/Gateway/Gateway/Channel.h: Due to inconsistencies between - the semantics of sockets and TLI with respect to establishing - non-blocking connections it's not a good idea to use TLI in - conjunction with select(). Therefore, I've #if 0'd out the use - of TLI in the Gateway application. - -Wed Sep 11 00:25:38 1996 Douglas C. Schmidt - - * ace/ACE.cpp (handle_timed_complete): Fixed a typo that was - failing to set n = ACE::recv(...). In addition, rethought how - we figure out if a connection completes for the nth time... - - * ace/TLI.cpp (open): Modified the implementation of open() so - that if oflag == 0 it is given an initial value of O_RDWR. - Otherwise we'll get a "badflags" t_errno. - - * ace/Connector.h (connect): Modified connect() so that the - default value of the flags parameter is O_RDWR. This is - necessary to make TLI_Connector::connect() work correctly by - default. - - * examples/Logger: Updated the example logger client and server to - illustrate more clearly how things like the Singleton Reactor - and the ACE_Reactor timer mechanism work. Thanks to Joe - DeAngelis for suggesting this. - - * ace/Pipe: Added a new constructor that makes it possible to - initialize the from the and handles. - Thanks to Stevan Warwick (sjw@aesthetic.com) for suggesting - this. - - * config-irix5.3-sgic++.h: Added #define for ACE_NEEDS_SYSTIME_H. - Thanks to Stevan Warwick (sjw@aesthetic.com) for reporting this. - - * examples/Logger/server/Client_Acceptor: Fixed some stray - mis-uses of int that should have been ACE_HANDLE. Thanks to - Luca Priorelli" for reporting this. - - * ace/{ACE,Log_Msg}.cpp: Added fixes for hexdump(). Thanks to - Luca Priorelli" for supplying these. - - * ace/Reactor.cpp (ACE_Reactor): Fixed a typo: "this->max_handlep1 - ()" should be "this->handler_rep_.max_handlep1 ()". Thanks to - Scott Shupe for reporting this. - - * apps/Orbix-Examples/Event_Comm: Added a bunch of changes to make - this application compile with Orbix 2.0. Thanks to Mike - O'Malley for the fixes. - - * ace/OS.cpp (thr_create): Added yet another fix for the IRIX 6.2 - pthreads implementation. Thanks to Gonzalo Diethelm - for reporting this. - - * ace/config-irix6.2-sgic++.h: Changed ACE_HAS_IRIX53_GETTIMEOFDAY - to ACE_HAS_IRIX_GETTIMEOFDAY because this also seems to be the - case for IRIX 6.2... Thanks to Gonzalo Diethelm - for reporting this. - - * ace/TLI_{Connector,Acceptor}.cpp: Added tests against NULL - pointers to avoid segmentation faults when the TLI - implementation doesn't allocate memory for the udata and opt - fields of netbuf structures. - - * ace/Mem_Map.i (ACE_Mem_Map): Added an accessor so that callers - can get the name of the filename that is being used as the - backing store. Thanks to the James Mansion - for recommending this. - -Tue Sep 10 00:26:52 1996 Douglas C. Schmidt - - * ace/OS.cpp (thr_create): Modified the thr_create() - implementation for Win32 so that if the caller doesn't care - about this value we can avoid a HANDLE leak. Thanks to the - James Mansion for recommending this. - - * ace/Thread.cpp (ACE_Thread): Moved both definitions of spawn_n() - into the Thread.cpp since they have loops and don't benefit from - being inlined. - - * ace/Svc_Handler.h: Moved operator delete() into the public part - of the class in order to make various compilers happy... - - * ace/OS.i (ACE_OS): Fixed the #define that selects the (union - wait *) alternative of wait(). This original was protected by - ACE_LACKS_POSIX_PROTO, but it should be ACE_HAS_UNION_WAIT. - - * performance-tests: Created a new directory that will contain all - of the ACE performance tests. Move the Synch-Benchmarks and the - TTCP tests from ./apps into here, and also moved the - test_mutex.cpp and test_singleton.cpp files from - ./examples/{Threads,Misc}, respectively. Thanks to Tim Harrison - for this suggestion. - - * ace/OS.i (ACE_OS): in WIN32 closesocket() returns 0 if call is - OK, so I changed the return value to be the other way around. - Thanks to Luca Priorelli for reporting - this. - - * ace: Changed the ACE_NO_POSIX_PROTO #define to something more - meaningful: ACE_LACKS_POSIX_PROTO. Thanks to Jonathan Biggar - for suggesting this. - - * ace/config-sunos4-g++.h: Added the #define ACE_NEEDS_SYSTIME_H. - Thanks to Alexandre Karev for reporting - this. - - * ace/OS: Fixed a bunch of pthreads portability problems that - showed up on OSF/1 4.0. Also added support for asctime_r() and - ctime_r() for OSF/1 4.0. Thanks to Dave Trumble - for reporting these fixes. - - * ace/Synch_T.cpp (ACE_TSS_Read_Guard): Removed a stray "new" that - was causing problems for the ACE_NEW macro. Thanks to Dave - Trumble for reporting this. - - * ace/Local_Tokens.h: Fixed a broken use of "friend", which was - missing the keyword "class." Thanks to Dave Trumble - for reporting this. - - * ace/config-osf1-4.0.h: Included Dave Trumble's - config file for OSF/1 4.0. - - * include/makeinclude/platform_osf1_4.0.GNU: Included Dave - Trumble's platform macros file for - OSF/1 4.0. Also renamed platform_osf1.GNU to - platform_osf1_3.2.GNU to deal with the new version. - - * ace/Proactor: There wasn't a way to destroy an - ACE_Overlapped_File object without closing the ACE_HANDLE - attached to it. Therefore, I added a flag that keeps track of - whether we have to delete this or not. Thanks to Amos Shapira - for suggesting this. - - * examples/Threads/test_future[12].cpp: Updated the tests to use - the new call() semantics in order to shut down the Scheduler's - event loop gracefully. - - * ace/Method_Object.cpp: Added a return value to the call() - routine. This can be used to indicate to the caller that it is - necessary to shut down the event loop. - -Mon Sep 9 02:07:08 1996 Douglas C. Schmidt - - * ace/Service_Config.cpp (ACE_Service_Config): #ifdef's out the - registration of signal handling to control reconfiguration on - Win32 since it doesn't really handle signals very well. Thanks - to John Morey for bringing this to my - attention. - - * ace/CORBA_Handler: Replaced CORBA_[123] with ACE_CORBA_[123]. - - * examples/CORBA: Updated the test programs to work portably - across different versions of Orbix. - - * ace/OS: Added a new wrapper for the getcwd() call. - - * examples/Threads/test_recursive_mutex.cpp: Added the use of - ACE_Guard<> to illustrate how these work with the - ACE_Recursive_Thread_Mutex. Thanks to Gonzalo Diethelm - for motivating me to do this. - - * examples/Threads/test_process_{mutex,semaphore}: Added two new - tests to illustrate how the ACE_Process_Mutex and - ACE_Process_Semaphore work, respectively. - - * ace/Synch: Replaced the implementation of ACE_Process_Semaphore - to use SV_Semaphore_Complex on UNIX platforms in order to get - the same semantics for Win32 and for UNIX. Thanks to the James - Mansion for recommending this. - - * ace/OS.h: Added some parens around the ACE BIT* macros so that - the precedence levels would be dealt with correctly and we don't - get any nasty surprises... - - * ace/{Synch_T,Synch}: Modified the implementation of all the - *acquire()/release() methods so they keep track of whether they - own the mutex. Thus, if a code path needs to give up the mutex - within the lifetime of the mutex, and it calls mutex_.release(), - then the destructor will not call it again. Thanks to the James - Mansion for recommending this. - - * ace/{Synch_T,Synch}: Changed the name of the field result_ to - owner_ for the ACE_Thread_Muetx_Guard and ACE_Guard. This is - more representative of the true purpose of this field. - - * ace/Synch: Updated ACE_Thread_Mutex_Guard so that it has the - same interface and semantics of ACE_Guard. Thanks to the - ever-vigilant James Mansion for - noticing this. - - * examples/Log_Msg/test_log_msg.cpp (main): Added a test of the - new ACE_Log_Msg::priority_mask() functionality. - - * ace/Log_Msg.cpp: Added a new method called priority_mask(), - which updates the new thread-specific priority_mask_ data member - with the new mask and returns the old mask. This is useful for - applications written using ACE_Log_Msg. Often, these have log() - calls with low priority such as LM_DEBUG that don't need to be - printed, but for which the logging code should not be removed. - The priority_mask() scheme makes it possible to selective enable - printing of certain priorities. Thanks to Rochi Febo Dommarco - for suggesting this. - - * netsvcs/clients/Logger/indirect_logging.cpp (main): Modified the - test program so that it randomly selects logging priorities that - are powers of two. - - * ace/Log_Priority.h: Renumbered the LM_* logging flags so that - they are all powers of two. This makes it easy to implement a - scheme for selectively printing only certain logging values. - -Sun Sep 8 10:46:40 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Proactor.cpp: Fixed up the error handling in ACE_Proactor so - that it returns an error both in case of "bad errors," as well - as when ACE_WIN32 isn't defined. Thanks to Amos Shapira - for reporting this. - -Sun Sep 8 14:11:08 1996 Tim H. Harrison - - * examples/Reactor/Proactor/README: Updated the test_proactor.cpp - and README files to clarify the relationship between the - Proactor and ReactorEx. This example uses the Proactor as the - main event loop (not the Reactor or ReactorEx). Thus, this - application can only do overlapped I/O and timers - asynchronously. To be able to react to other Win32 events, see - the ACE_ReactorEx and the examples/Reactor/ReactorEx/ test. - Thanks to Amos Shapira for - pointing out the ambiguity. - -Sat Sep 7 14:09:21 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Task.cpp: Enhanced the activate() method so that the caller - can set the priority and the thread group id. Thanks to - Karlheinz for this suggestion. - - * ace/OS.h: Added default values of 0 for the trailing arguments - for the {mutex,sema,cond}_init() methods. - - * examples/Threads/test_mutex.cpp: Added a new test program that - illustrates the difference between implementations of thread - mutex wrappers that use inheritance and dynamic binding vs. the - ACE approach (which doesn't use inheritance and dynamic - binding). The results I got on my SPARCstation 20 model 712 is - included in the source file. Thanks to James Mansion - for motivating me to write this. - - * examples/Misc/test_singleton.cpp: Added a new test program that - illustrates the performance of using the Double-Checked Locking - pattern compared with the standard "Mutex::acquire()/release()" - approach. Thanks to Jim Coplien - for encouraging me to get these performance numbers. - -Tue Sep 3 00:38:47 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/XtReactor: Added minor fixes to XtReactor to fix complaints - about "bool" not being defined and the destructor - ~ACE_XtReactor() has already having a body. Thanks to Andres - Kruse for these fixes. - - * ace/Mem_Map.cpp: Make sure that this->length_ is initialized to - 0 in ACE_Mem_Map::map (). Thanks to James Mansion - for pointing this out. - - * ace/Thread.i (spawn_n): In ACE_Thread::spawn_n the sense of the - following check is wrong: - - for (i = 0; i < n; i++) - // Bail out if error occurs. - if (ACE_OS::thr_create (func, arg, flags, &t_id, 0, priority, - stack == 0 ? 0 : stack[i], - stack_size == 0 ? 0 : stack_size[i]) != 0) - thread_ids[i] = t_id; - else - break; - - The '!=' should be '=='. Thanks to James Mansion - for pointing this out. - - * include/makeinclude/rules.local.GNU (MAKEFILE): Changed the - $WRAPPER_ROOT/include/makeinclude/rules.local.GNU line that - says: - - sed -e "s:$(WRAPPER_ROOT);$$(WRAPPER_ROOT);g" \ - - so that the double dollar is now "\$$" (prefixed the first - dollar sign with a backslash). If not, my shell will try to - execute WRAPPER_ROOT for some reason. With "\$$" it works as it - should. Thanks to Marius Kjeldahl for - reporting this. - - * Released version 4.0.29 for testing. - - * ace/OS.i (thr_getspecific): Added a new case for OSF/1. Thanks - to Martin Schoeckle for - reporting this. - - * ace/Thread_Manager.cpp (spawn_i): Removed an invalid - initialization of ACE_hthread_t = 0, which doesn't work on all - pthreads platforms because pthreads uses a struct in some - implementations. Thanks to Martin Schoeckle - for reporting this. - - * man: Updated all the nroff and html documentation to conform to - the latest version of ACE. - - * netsvcs/lib/{Name_Handler,TS_Server_Handler}.cpp: Fixed - some mistakes in the ACE_TEMPLATES_REQUIRE_SPECIALIZATION - code so that all the services can be linked together without - multiply defined symbols. - - * netsvcs/lib/Name_Handler.cpp: Fixed a spot where we weren't - passing in an lvalue to send_request(). Why this wasn't showing - up earlier I don't know, but GCC caught it! - -Mon Sep 2 00:47:00 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Thread_Manager.cpp: Updated all comparisons of ACE_thread_t - and ACE_hthread_t so that they use the ACE_OS::thr_equal() and - ACE_OS::thr_cmp() methods, respectively. Thanks very much to - Martin Schoeckle for identify - the need for this. - - * ace/OS: Added a new method called thr_cmp() which compares two - ACE_hthread_t values for equality. Unfortunately, we can't just - compare these directly via == because on some platforms they are - implemented as structs. Right now, I'm assuming that if - ACE_HAS_TID_T is enabled that we can compare tid_t's using ==. - If this turns out to be incorrect (e.g., if tid_t's are also - implemented as structs, please let me know). - - * ace/Future: Changed the overloaded result() method to a pair of - get()/set() methods. - - * tests/test_config.h: Fixed a bug in the reset() routine. This - was originally deleting the global static ace_file_stream. - However, this was causing segmentation faults if destructors for - objects local to main() were trying to write to the output file. - Therefore, instead of deleting the ostream, we simply flush() - it! - - In addition, also renamed the various functions in test_config.h - to make sure they don't conflict with any other names by - prefixing them with ace_test_... - - * ace: Added many small fixes for IRIX 6.2. Thanks to Gonzalo - Diethelm for reporting all of these! - - * ace/OS: Added a wrapper for the UNIX syscon() system call. - - * ace/LSOCK.cpp (recv_handle): Rearranged the casts so that things - work correctly on platforms with odd definitions ot struct - iovec. Thanks to Gonzalo Diethelm for - reporting this. - - * ace/Task.cpp (ACE_Task_Exit): Rearranged the order in which we - shut down a Task via the Task_Exit hook so that we first - decrement the count of the threads in the task and *then* call - its close() hook. This guards against cases where the close() - hook does something crazy like "delete this". - - * ace/XtReactor.h: Changed #include "X11/Intrinsic.h" to #include - . Thanks to Gonzalo Diethelm - for suggesting this. - - * ace/Future.cpp (ACE_Future): Added some strategic "consts" to - the assignment operator and copy constructor for ACE_Future and - ACE_Future_Rep. - - * examples/Threads/test_task_three.cpp (main): Revised the test so - that it will shut itself down automatically when all the threads - have finished. - - * examples/Threads/test_task_two.cpp (main): Revised this test so - that it doesn't run forever, but only runs either 1000 times or - as many times as the user specifies on the command line. Thanks - to Gonzalo Diethelm for suggesting this. - - * ace/OS.i: Added an extra #else for thr_sigsetmask(), - thr_min_stack(), and thr_kill() for weirdo platforms that don't - conform to the other threading APIs... - -Sun Sep 1 20:15:28 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * examples/ASX/Message_Queue: Changed the use of read(0, ...) and - write(1, ...) to ACE_OS::read(ACE_STDIN, ...) and - ACE_OS::write(ACE_STDOUT, ...) in buffer_stream.cpp and - bounded_buffer.cpp. - - * ace/OS.i: Fixed the errno mapping of the cond_timedwait() - functions so that they set errno to ETIME rather than EBUSY when - timeouts occur. This is necessary to support Solaris and POSIX - pthreads semantics on Win32. - - * build/SunOS5.5/examples/ASX/Message_Queue/buffer_stream.cpp: - Modified the example somewhat so that it uses the Singleton - thr_mgr() method from ACE_Service_Config. - -Sun Sep 1 17:29:58 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu) - - * ace/ACE.cpp (map_errno): Added a new static method to the ACE - class. This method allows us to map troublesome win32 errno - values (e.g. WSAEWOULDBLOCK) to values that standard C strerr - function understands. Thank you Microsoft. - - * ace/Log_Msg.cpp (log): Added a call to ACE::map_errno to the %p - option. Now the ACE logger can begin to map Win32 error values - into meaningful strings. - - * netsvcs/lib/lib.mdp: Added a project file for the netsvcs - library. This builds a dll into ace/netsvcs.dll (not into the - netsvcs/lib directory). This reduces the number of paths needed - in %PATH%. - - * examples/Tokens: Renamed this directory netsvsc/clients/Tokens. - - * ace/ace.mdp: Removed wsock32.lib from the ace files listing. - The problem is that we can't assume where MSDEV is installed. I - added wsock32.lib and advapi32.lib to the - build/settings/link/library_modules line. - - * ace/config-win32-msvc4.0.h: Disabled the "C4355: 'this' : used - in base member initializer list" warning. Thanks to Amos - Shapira for figuring this out for us. Although "this" is - unneeded for win32, it is required for compilers on other - platforms (e.g., AIX). - - * ace/Message_Queue.cpp (dequeue_head_i): Andres Kruse pointed out - that we weren't doing head_->prev (0), when dequeuing! - -Tue Aug 27 21:00:25 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * include/makeinclude/platform_sunos5_sunc++_4.1.GNU (CXX): Added - Andres Kruse's changes for SunC+ 4.1. - - * ace: Fixed line # 12 of ace/config-sunos4-sun4.1.4.h, - which read: - - "#define ACE_HAS_SVSV_IPC" (ACE_HAS_ ess vee ess vee _IPC) - - to - - "#define ACE_HAS_SYSV_IPC" (ACE_HAS_ ess wye ess vee _IPC) - - Fix another problem: - - #define ACE_LACKS_THREAD_STACK_ADDR (OS.cpp) - - was inconsistently defined in: - - #define ACE_LACKS_THREAD_STACK_ADDRESS (config-aix-4.1.x.h) - - Thanks to Alan Stweart for reporting - this! - -Mon Aug 26 00:34:05 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Updated all of ACE such that the ACE_GUARD* macros now all take - the name of the ACE_*Guard* that they will use as the scoped - locking object. This is important for several reasons: - - 1. It make it more clear what is going on in the code, rather - than hiding behind the macros! - - 2. It is now possible to have multiple ACE_GUARD* macros in the - same scope by calling each scoped locking object a different - name. This is used in the Local_Tokens.cpp file. - - * ace/Synch.h (ACE_Null_Mutex_Guard): Added the locked() method so - that this signature will conform to the one expected of - ACE_Guard. - - * tests: Added a new file Test_Future.cpp, which tests the new ACE - Futures mechanism using Active Obejcts. Thanks to Andres Kruse - for contributing this test. - - * ace: Added three new files: Future.{h,cpp}, - Method_Object.{h,cpp}, and Activation_Queue.{h,cpp}, which - implement Polymorphic Futures. Thanks to Andres Kruse - for contributing these. - - * ace/Stream.cpp (dump): Replaced LM_INFO with LM_DEBUG. - -Sun Aug 25 21:57:57 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace: Rather than using operator new directly, most of ACE now - uses the ACE_NEW and ACE_NEW_RETURN macros. For instance, - rather than writing: - - if (token_manager_ == 0) - token_manager_ = new ACE_Token_Manager; - - we should write: - - if (token_manager_ == 0) - ACE_NEW_RETURN (token_manager_, ACE_Token_Manager, 0); - - The reason for this is that it makes it much easier to ensure - that all dynamic memory allocation errors are treated uniformly. - I've updated the entire ACE library code tonight to make this - usage consistent whenever possible. - -Sat Aug 24 11:51:38 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Time_Value.h: Simplified various things so that the nasty - macros necessary to build DLLs on Win32 will be simplier. In - addition, I will only #include for those platforms - that don't already do this in (i.e., if - ACE_NEEDS_SYSTIME_H is defined in config.h). Please let me know - if you run across any platforms like this. - - * ace/TLI_{Connector,Acceptor}: Added two additional parameters at - the end of the connect() and accept() methods, respectively, so - that the ACE TLI wrappers can be used with X.25. Thanks to Ajit - Sagar for suggesting this fix. - - * ace: Integrated Eric Newton's XtReactor into the Makefile. If - you want to include this into ACE, make sure to define - ACE_HAS_XT in the config.h file. - - * examples/Misc: Integrated the XtReactor tests. - - * ace/OS.i (getservbyname,gethostby*): Fixed a suble omission -- - any calls to socket function should be wrapped by the - ACE_SOCKCALL_RETURN macro in order to make the errnos work - correctly on Win32. - - * ace/OS: Added support for the getprotoby{name,number} wrappers. - Thanks to Joe DeAngelis for suggesting this. - - * ace/Connector.cpp: Fixed a subtle bug in the ACE_Connector. - The problem centered around the following line in - cleanup_AST(): - - if (this->handler_map_.find (handle, ast) == -1) - - This lookup always failed because the key, the handle of the - service handler, was always -1. The service handler's handle is - not set until a successful connection is made and connector - transfers ownership of the handle to the service handler. The - fix for this is to store the ACE_HANDLE in the ACE_Svc_Tuple - *separately* from the ACE_Svc_Handler. Thanks to Bill Gerecke - for being so persistent in tracking this - down. - - * ace/ARGV.cpp (ACE_ARGV): Added a nifty new constructor that - converts argv-style vectors of strings into a single string - (this is the reverse of what the original constructor does!). - - * ace/ACE: Added a new utility method called strecpy(), which - copies to , returning a pointer to the end of the copied - region (rather than the beginning, a la . - -Thu Aug 22 15:43:58 1996 - - * ace/OS.h: Changed the interface of ACE_OS::fork_exec (char - *const argv[]). (There is no longer a separate const char *path - parameter. Now, argv[0] must be the full path name to the - executable. - - * tests/Time_Service_Test.cpp: Updated the Time Service - one-button test to use the new ACE_OS::fork_exec. I didn't - event break it. - - * tests/Tokens_Test.cpp: Updated the Tokens one-button test to - use the new ACE_OS::fork_exec. It actually works now. - - * tests/test_config.h: Added some more #defines to help simplify - path differences between NT and UNIX. Perhaps these should be - moved into OS.h? - -Thu Aug 22 13:46:58 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Thread_Manager.cpp (ACE_Thread_Control): The status_ member - in ACE_Thread_Control() was not being initialized! This caused - Purify to complain loudly about invalid memory accesses. I have - added an initialiser to ACE_Thread_Control::ACE_Thread_Control - to set status_ to 0. Thanks to Ross Dargahi - for reporting this. - - * ChangeLog: The ACE configuration files "config-irix*.h" defined - 'ACE_HAS_SIGINFO' to indicate that IRIX supports SVR4 extended - signals. This should be 'ACE_HAS_SIGINFO_T' instead. Thanks to - Craig Johnston for reporting - this. - -Wed Aug 21 21:09:01 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/Time_Value.h: Added an extra condition, #if defined - (ACE_BUILD_DLL) so that ACE_Svc_Export evaluates to - something. Previously, it was evaluating to nothing in some - files such as Naming_Context.cpp where we were doing #define - ACE_BUILD_DLL and not #define ACE_BUILD_SVC_DLL. - -Wed Aug 21 00:33:17 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/ACE.cpp (format_hexdump): Fixed a minor bug in - format_hexdump(). If the buffer to dump is a multiple of 16 it - prints an extra blank line. ALso fixed the code to use spaces - rather than tabs and put an extra space between the first 8 HEX - bytes and the second. Thanks to Luca Priorelli - for this code. - - * ace/Log_Msg.h (ACE_HEX_DUMP): Added a new logging macro: - - #define ACE_HEX_DUMP(X) \ - do { int __ace_error = errno; \ - ACE_Log_Msg *ace___ = ACE_Log_Msg::instance (); \ - ace___->set (__FILE__, __LINE__, 0, errno, ace___->restart (), - ace___->msg_ostream ()); \ ace___->log_hexdump X; \ - } while (0) - - which makes it possible to dump info in HEX. Thanks to Luca - Priorelli for suggesting this. - - * ace/config-win32-msvc4.0.h: Added - - #define _WINSOCKAPI_ - - To avoid multiple inclusions. Thanks to Luca Priorelli - for suggesting this. - - * ace/OS.h: enclosed the #define of WIN32_LEAN_AND_MEAN macro - definition between #ifndef ... #endif to avoid compiler - warnings. Thanks to Luca Priorelli for - suggesting this. - - * ace/SOCK.cpp (win32_fini): Fixed a potential problem in ACE - where any code of the form: - - ACE_DEBUG ((LM_DEBUG, "%d", GetLastError())); - - will reset errno a couple of times before GetLastError() gets - called. So the result is always 0. The fix is to say: - - int ret = GetLastError(); - ACE_DEBUG ((LM_DEBUG, "%d", ret)); - - Thanks to Luca Priorelli for noticing - this. - - * ace/Connector.cpp (create_AST): Was missing a return 0; if we - successfully register a cancellation id. Thanks to William - L. Gerecke for reporting this bug. - - * ace/Module.h: Added a non-existent friend class to get ACE - to stop complaining - - private: - friend class ACE_Shutup_GPlusPlus; // Turn off g++ warning - ~ACE_Module (void); - // *Must* use dynamic allocation. - - Thanks to Eric Newton for the suggestion. - - * ace/Svc_Conf.y (ace_create_service_type): Removed some stray - calls to ACE_ERROR that were left over from earlier - configurations of ACE. Thanks to Gonzalo Diethelm - for reporting this. - - * ace/Log_Msg.cpp (instance): Fixed the #ifdefs so that - ACE_MT_SAFE implies ACE_HAS_THREAD_SPECIFIC_STORAGE. Thanks to - Gonzalo Diethelm for reporting the need for - this. - -Tue Aug 20 13:09:55 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * INET_Addr.cpp, line 84: Irix's C++ is not able to determine - whether to use the set(u_short,ACE_UINT32,int) or the - set(u_short,const char [],int), since on Irix, INADDR_ANY is 0. - I cast the value so that the call would read set(port, - ACE_UINT32(INADDR_ANY)) and everything went fine. Thanks to - Gonzalo Diethelm for reporting this. - - * ace/Synch[_T]: Added a new wait() method that takes a first - parameter which is the mutex used to serialize access to the - condition. This is useful if you want to store the - ACE_Condition object in shared memory (in which case, the use of - a reference to mutex_t doesn't work!). Thanks to Mark Patton - for recommending this approach. - - * ace/Task.h: Added a forward template declaration for - ACE_Task_Exit so that it will compile on HP/UX. Thanks to Tim - Ottinger for pointing this out. - - * ace: changed line 19 of ace/Str_Buf.h from - - #include "OS.h" - - to: - - #include "ace/OS.h" - - Fixed similar problems with OS.h at line 1154 and Dump.h at line - 150. Thanks to Alan Stewart for reporting this. - -Tue Aug 20 20:18:49 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * tests/TSS_Test.cpp (main): Fixed a small typo. I was referencing - the wrong variable but didn't catch it since it was in the #if - !defined (ACE_HAS_THREADS) section. Fixed the typo and also - renamed the variable called big_count to iterations. Thanks to - Tim Ottinger for pointing this out. - -Mon Aug 19 19:25:50 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * {examples,apps,tests}: Removed the use of zerop from these - files, as well... - - * ace/{Acceptor.cpp,Name_Proxy.cpp,Token.i}: Removed the use of - zerop from these files, as well... - - * ace/Connector.cpp (connect_svc_handler): It looks like our good - friend ACE_Time_Value::zerop isn't getting initialized correctly - on Win32. Therefore, I've replaced it with a direct use of - &ACE_Time_Value::zero. - - * ace/Time_Value.cpp: Removed the static pointer variable "zerop" - since there was no guarantee it was getting intialized before it - is used! Instead of using ACE_Time_Value::zerop, use - &ACE_Time_Value::zero. Thanks to William L. Gerecke - for reporting this problem. - - * ace/OS: Added zillions of changes to make ACE compile with OSF/1 - and its DCE threads implementation. Thanks to Martin Schoeckle - for sending these. - - * ace/config-osf1-3.2.h: Updated this file with fixes for OSF/1 by - Martin Schoeckle . - - * ace/ACE.cpp (handle_timed_complete): Added new logic to - ACE::handle_timed_complete() so that it sets errno to - ECONNREFUSED if the connection is refused by the server. When - you issue an asynchronous connect request, to complete it, you - will use complete() with a timeout. However, complete can fail, - and then it will deallocate any resource, (i.e. close down the - socket handle), also for timeout expiration. So, a user - interested in retrying to complete a connection while the - timeout expires will not use complete(); but rather will use - handle_timed_complete(). In fact, using handle_timed_complete() - the user could detect the reason of a failure (by examining - errno) and decide how to proceed. In the old ACE version the - problem was that, if handle_timed_complete() failed because of - the recv() returning 0, errno remained unchanged and so its - value could be quite misleading with respect to the reasons of - the failure. Thanks to Antonio Tortorici - for this fix and the explanation - above. - - * ace/OS.h: Added support for Borland 5.0's uint64. Thanks to - Hani Yakan for suggesting the strategy to - accomplish this. - -Mon Aug 19 15:52:07 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * tests: Added new macros to the test_config.h file in order to - simplify the testing. - -Mon Aug 19 00:21:22 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Re-released version 4.0.28 for testing (will change the version - number after Tim gives me the new Token stuff). - - * {netsvcs/lib,tests/test_config.h}: Removed spurious dependencies - on fstream.h and iostream.h. Thanks to Alan Stewart - for reporting this. - -Sat Aug 17 17:25:49 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Reactor: Removed the use of "inline" in the Reactor.cpp - files because this was causing problems with some - compilers/linkers. Thanks to Gonzalo Diethelm - for recommending this. - - * examples/Misc/test_XtReactor1.cpp: Added a new test of the - XtReactor, courtesy of Eric Newton . - - * ace/config-hpux-10.x.h: According to Eugene K. Plaude - , HP-UX 10.01 supports user-level threads - based on the pthreads interface specified by POSIX in 1003.4a, - Draft 4 (which is basically DCE threads). Therefore, I've - enabled the ACE_HAS_DCETHREADS symbol in the config-hpux-10.x.h - configuration file. If this isn't correct, please let me know. - -Sat Aug 17 02:18:39 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu) - - * examples/Tokens/manual/README: Added a new Token example - application. The manual test gives users a text-based - interactive interface to local or remote tokens. This is - extremely useful for manually testing the token server and - setting up deadlock scenarios. See the README file for more - details. - - * examples/Tokens/deadlock/README: Updated the deadlock example - application to test the new deadlock detection algorithm for - readers/writer locks. I also added the use of Token Invariants - to ensure correctness of the mutexes and readers/writer locks. - See the README file for more details. - -Fri Aug 16 22:16:05 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu) - - * ace/Token_Manager.cpp: Updated all Token code to use - ACE_OS::last_error instead of errno. - -Fri Aug 16 00:03:24 1996 Douglas C. Schmidt - - * After a long hiatus, released version 4.0.28 for testing. - -Thu Aug 15 21:04:35 1996 Douglas C. Schmidt - - * man: Updated all the ACE manual pages and html pages to reflect - recent changes. - - * netsvcs/lib/Server_Logging_Handler.cpp: Fixed an omitted - "ACE_BUILD_SVC_DLL" that was causing linker errors on NT. - Thanks to Luca Priorelli for reporting - this. - - * examples/Log_Msg/test_log_msg.cpp: Added a test for the new - log_hexdump() function. - - * ace/Log_Msg.cpp (log_hexdump): Integrated the log_hexdump() code - into the ACE Log_Msg abstraction. Thanks to Luca Priorelli - for fixing this and for Todd Montgomery - for originally supplying the code. - - * ace/Signal.cpp (ACE_Sig_Handlers): Moved the #endif /* HPUX */ - down to the end of the file so that it works correctly on HPUX. - Thanks to Eric C. Newton for report this bug. - - * ace/OS.i: Updated the behavior of thr_join() so that it will do - a ::CloseHandle after getting the exit status. Thanks to the - ever vigilant James Mansion - (mansionj@lonnds.ml.com) for noticing this. - - * examples: Finally added Tim and Prashant's examles/OS directory, - which contains a test that illustrates a "portable" means to - spawn processes on NT and UNIX. - - * ace/Malloc_T.cpp (next): Added an overloaded next() method that - returns the name that is bound to the pointer in the - Malloc_Iterator. This is useful in order to differentiate - entries in the pool based on their name. Thanks to Kim Gillies - for suggesting this. - - * ace: Changed all uses of thread_t, thread_key_t, mutex_t, - rwlock_t, sema_t, cond_t, etc. to ACE_* in order to avoid - polluting the name space. Also switched from using macros to - using typedefs whereever possible. Thanks to Gonzalo Diethelm - for recommending this. - - * ace/System_Time.cpp: Added template specializations for - templates used in the ACE_System_Time class. This should solve - some nasty undefined templates problems with GCC... Thanks to - Joseph DeAngelis for pointing out the - problem. - - * ace/Name_Space.cpp: Fixed the file Name_Space.cpp as follows: - - // Name_Space.cpp - #define ACE_BUILD_DLL - //#include "Name_Space.h" - #include "ace/Name_Space.h" - - Thanks to Eugene K. Plaude for fixing this! - - * ace/config-hpux-10.x.h: Added support for TLI since according to - Eugene K. Plaude this should work. If not, - please let me know. - -Wed Aug 14 21:29:46 1996 Douglas C. Schmidt - - * examples/Reactor/Logger: rearranged the Logger directory so it - would be more clear what the client and server programs did and - how to run them. - - * examples: Merged the contents of the SVR4 examples directory - into the IPC_SAP/SOCK_SAP directory so that we can remove the - SVR4 directory altogether (it wasn't contributing much...). - - * examples: Removed the vestigal Win32 tests since ACE now runs on - Win32 and we don't need a separate test directory. - - * netsvcs/client: Renamed the file remaining file in this - directory to logging_app.cpp since I moved the other file to the - examples/Reactor/Logger directory. - - * ace/Reactor.cpp (check_handles): If eh->get_handle() returns -1 - the select() code will index the [-1] element of an array. To - fix this, I've added a check of the value returned from - eh->get_handle(). Thanks to Eric C. Newton for - reporting this. - - * ace/OS.i (sema_wait): Fixed a subtle bug in the Pthreads - wrappers that surfaced on the SGI IRIX 6.2 port. There was some - code that looked like this: - - pthread_cleanup_push(); - int result = 0; - ... - pthread_cleanup_pop(); - return result; - - However, on Irix 6.2, the push introduces a new scope that is - closed by the pop, so result goes out of scope before returning. - Thanks to Gonzalo Diethelm for pointing this - out. - - * ace/OS.h: Changed the definition of pthread_mutex_t and - pthread_cond_t to mutex_t and cond_t to be consistent with other - usage in ACE. Thanks to Gonzalo Diethelm for - pointing this out. - -Wed Aug 14 01:25:47 1996 - - * ace/SPIPE_Acceptor.cpp: Added the PIPE_TYPE_MESSAGE | - PIPE_READMODE_MESSAGE flags to CreateNamedPipe pipe options so - that data is received in messages rather than as a stream. This - is consistent with the behavior of the SPIPE_Connector. When we - have time, we need to extend the interface so that stream pipes - are also supported, as well. - - * SPIPE_Acceptor.cpp: Made the ACE SPIPE in and out buffer sizes - 10 k. The previous size was just 512 bytes. This larger buffer - size helps decrease flow control. - -Tue Aug 13 23:21:46 1996 - - * examples/Connection/blocking: Updated the blocking SPIPE example - application to use a pool of threads in the proactor to handle - incoming client messages. The SPIPE-acceptor example - illustrates how named pipes are used on NT. Once the server - establishes a connection to a single client, it spawns a thread - pool to handle incoming requests via the proactor event - loop. That is, a separate thread from the pool is used to - process each message sent by a client. The size of the thread - pool can be specified by command-line arguments. This example - leverages the queueing performed by the NT kernel to trivially - implement a thread pool architecture. See - examples/Connection/blocking/README for more details. - - * Service_Config.h: Added a parameter (with a default - size of 0) to the proactor accessor method. This allows - applications to specify the size of the thread pool that can - block on Proactor::handle_events. - -Tue Aug 13 02:30:58 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Task: Added a new public interface called thr_count(). This - returns a count of the number of threads running within a Task. - If the value returned is 0, then the Task is a Passive Object. - If the value returns is > 0 the task is an Active Object, and - the value is a count of the number of threads running within the - object at this snapshot of time. - - * ace/OS: I implemented Karlheinz's suggested optimizations for - the ACE condition variable implementation under Win32. Here's - the deal... The original implementation used an internal_mutex - to ensure that access to the count of the number of waiters was - serialized between the waiter and signaler threads. The new - implementation is designed so that only the waiter threads - access the waiter count. Therefore, we can utilize the - external_mutex to serialize access to this, thus eliminating the - need for the internal_mutex. However, this means that code - *must* be written using the standard condition variable idiom, - i.e., - - int resources () - { - external_mutex.acquire (); - - // ... - - cond.signal (); - external_mutex.release (); - } - - Rather than like this: - - int resources () - { - external_mutex.acquire (); - - // ... - - external_mutex.release (); - cond.signal (); - } - - which is what some thread programming books recommend as an - optimization. However, you should be careful not to use this - form since it can lead to "lost wakeup" bugs caused by the fact - that the implementation of ACE_OS::cond_signal will test if the - waiter count > 0 *without holding any locks*!!! - - Fortunately, ensuring this shouldn't be a problem since most ACE - code uses the following idiom: - - int resources () - { - ACE_Guard mon (external_mutex); - - // ... - - cond.signal (); - // Destructor of mon releases external_mutex. - } - - Clearly, there are subtle tradeoffs between performance and - programmability here... - - * ace/Synch: Updated all of the ACE semaphore wrappers to take the - new "max" value as their final constructor argument. - - * ace/OS: Added a new default argument to the end of the - sema_init() method. This allows us to specify the maximum value - of the semaphore (this is only important on NT). Currently, it - is hard-coded to 0x7fffffff in uses. The new approach makes it - possible to set the max to a different value. Thanks to - Karlheinz for requesting this. - - * ace/Message_Queue.cpp: Added an implementation of the dump(). - Thanks Karlheinz. - - * ace/Synch.cpp: Added an implementation of the dump() method. - Thanks Karlheinz. - - * ace: Updated all usage of ACE_Thread_Mutex_Guard so that it now - uses the ACE_GUARD* macros correctly. Thanks to Chris Eich - for pointing out the - need for this. - - * examples/Threads: Added Karlheinz's new test_barrier2.cpp test - program that makes sure that the ACE_Message_Queues are working - correctly when accessed by multiple threads. - - * netsvcs/lib/Server_Logging_Handler.cpp (handle_logging_record): - Fixed an errant use of ACE_Guard, which wasn't properly checking - of the Guard acquired the lock. Thanks to Chris Eich - for pointing this out. - - * ace/OS.h (ACE_GUARD): Added default "ace_mon" implementations of - type ACE_Null_Mutex even in cases where there's no threading - defined so that code accessing ace_mon.release() and - ace_mon.acquire() will compile correctly. - - * apps/Gateway/Gateway/Channel.h: Fixed the code so - that we don't try to use TLI if the platform doesn't support it - (instead, we'll use sockets). Thanks to Marius Kjeldahl - for reporting this problem. - - * examples/ASX/Event_Server/{Supplier,Consumer}: Fixed the code so - that we don't try to use TLI if the platform doesn't support it - (instead, we'll use sockets). Thanks to Marius Kjeldahl - for reporting this problem. - -Mon Aug 12 14:50:47 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * examples/Misc: Added Eric Newton's test case for - his XtReactor integration. - - * ace: Included Eric Newton's code that integrates - ACE with the Xt event loop. This still needs a bit of work - (e.g., making it thread-safe and incorporating signal support), so - I haven't added it to the Makefile yet. If someone can take the - time to fix it up, I'll be happy to integrate it into ACE. - - * ace/Message_Queue.cpp (dequeue_head): Fixed the mother of all - bugs in the ACE_Message_Queue implementation... The problem was - that I was trying to be too clever by optimizing the number of - Condition::signal() calls by only calling signal() when the - queue changed state from empty to non-empty (or full to - non-full). It turns out that this optimization works fine for a - single producer/consumer case, but fails when there are multiple - consumers. The fix was just to call signal() every time. This - should be ok because the underlying Condition variable - implementation will perform the optimization in the correct - fashion. Thanks to the omniscient Karlheinz for detecting this - problem and reporting it. - -Sun Aug 11 15:52:07 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * tests: Made minor changes to test_config.h, SPIPE_Test.cpp, and - UPIPE_SAP_Test.cpp to accomodate the change made to SPIPE_Addr. - SPIPE_Addr now accepts a string of the form [host:]port and then - creates the rendezvous point. Originally, SPIPE_Addr would - assume that the string being passed in was the actual rendezvous - point. - -Sat Aug 10 18:41:21 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * netsvcs/lib/Logger.cpp (init): Added a new service to netsvcs - called ACE_Logger which allows us to control the output of all - the services. The ACE_Logger service can be invoked with - different flags (such as STDERR|OSTREAM) which in turn sets - ACE_Log_Msg to direct the output of all the services to the - appropriate stream(s). Note that if a service needs to stay - unaffected from ACE_Logger, it should be invoked before - ACE_Logger gets invoked. Also note that like other services in - netsvcs, ACE_Logger can also be dynamically linked in. - -Sat Aug 10 14:23:07 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Added Steve Huston's patches to get ACE - to compile on UnixWare 2.01. This mostly involved changes to - the internal types used by the socket wrappers. Thanks Steve! - -Fri Aug 9 01:34:19 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * examples/ASX/UPIPE_Event_Server/Options.cpp (print_results): - Added a typedef to avoid problems if a platform doesn't support - prusage_t. Thanks to Marius Kjeldahl for - reporting this. - - * include/makeinclude/platform_linux_pthread.GNU. The line that - say: - - LIBS = -lpthreads -lstdc++ - - was modified to say: - - LIBS += -lpthreads -lstdc++ - - Thanks to Marius Kjeldahl for reporting - this. - -Fri Aug 9 18:26:16 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/Local_Name_Space.cpp (reset): Fixed a subtle (yet very - annoying bug). In switching contexts a test program would hang - after a certain number of switches. Having gone through the code - thoroughly and with the aid of Purify, the bug was narrowed down - to an extraneous delete taking place in - ACE_Name_Space::reset(). Essentially, we do not need to delete - ACE_Name_Space_Map::instance() which is actually the - SHARED_MALLOC since it gets deleted in the destructor of - ACE_Local_Name_Space. - -Thu Aug 8 17:55:20 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/SPIPE_Addr.cpp (set): Implemented - ACE_SPIPE_Addr::string_to_addr(). Modified ACE_SPIPE_Addr::set() - using code provided by Brad Flood to create the rendezvous - point. Note that originally ACE_SPIPE_Addr constructor and set() - would take the actual rendezvous point but now they rely on - being passed a string which is of the format "[host]:port" - (where host is optional). The rendezvous point is then created - by extracting from the string the hostname (if any) and also - using the port number as the unique pipe name. Note that this - approach works on both UNIX and Win32. - -Mon Aug 5 20:15:59 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/OS.i (last_error): Fixed a typo. In the set and get methods - last_error(), there should be a check for "if defined - (ACE_WIN32)" and not "if defined (ACE_HAS_WIN32)" - -Wed Aug 7 00:21:42 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Log_Msg.h: Replaced all uses of errno *following calls to - ACE_Log_Msg::instance()* so that we first cache errno in a local - variable called __ace_errno. We need to do this because - ACE_Log_Msg::instance() can reset errno == 0. Thanks to - Tim for pointing this out. - -Mon Aug 5 20:15:59 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/OS.i (last_error): Fixed a typo. In the set and get methods - last_error(), there should be a check for - "if defined (ACE_WIN32)" and not "if defined (ACE_HAS_WIN32)" - -Sat Aug 3 14:52:32 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * examples/Win32/win32_client.cpp: Changed ACE_GUARD_RETURN to - ACE_GUARD in the method Errno::flags since the return type is - void. - - * examples/Connection/non_blocking/CPP-connector.cpp: Made some - minor changes to get things compiling on Win32. The call to - handle_close now takes zero as the first argument (which is - never used). Also the arguments to ACE_SERVER_ADDRESS are now - swapped (hostname followed by port number) to be consistent with - the change made to the macro. Thanks to Brad Flood for - suggesting these changes. - - * examples/Connection/non_blocking/CPP-acceptor.cpp: Made minor - changes to some of the methods to make sure all control paths - return a value. Also changed the default port number to - ACE_DEFAULT_SERVER_PORT_STR to match what the connector tries to - connect to. Thanks to Brad Flood for - suggesting these changes. - - * ace/OS.h (ACE_SERVER_ADDRESS): Modified the macro - ACE_SERVER_ADDRESS so that it creates a string of a server - address with a "host:port" format. Previously the order was - reversed. Thanks to Brad Flood for suggesting this change. - -Sat Aug 3 00:07:26 1996 Douglas C. Schmidt (schmidt@lambada.cs.wustl.edu) - - * ace: Fixed problems with recursive tracing of ACE_TRACE by - commenting out certain constructors in IPC_SAP.cpp, - FIFO_Send_Msg.cpp, FIFO_Send.cpp, and FIFO.cpp. Thanks to - Karlheinz for finding and reporting these fixes. - -Fri Aug 2 22:19:05 1996 Douglas C. Schmidt (schmidt@lambada.cs.wustl.edu) - - * ace/ACE.cpp (format_hexdump): Fixed an infamous "off by one" bug - that was causing this to fail on Win32 (time to switch to Java? ;-)). - Thanks to lucapri@mbox.vol.it for finding this. - -Thu Aug 1 14:08:30 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/CORBA_Handler.cpp (activate_service): Fixed a typo caused by - an omitted ENDTRY. Thanks to Garrett Conaty - for noticing this. - -Mon Jul 29 10:03:16 1996 Douglas C. Schmidt (schmidt@lambada.cs.wustl.edu) - - * examples/Win32/win32_client.cpp: There was a typo in one of the - ACE_GUARD macros. Thanks to Tim Ottinger - for pointing this out. - -Mon Jul 22 12:41:22 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/Local_Name_Space.cpp (reset): Added a new method - ACE_Name_Space_Map::reset() which deletes the instance of - ACE_Name_Space_Map. This forces instance() to create a new - instance using a new context file in the case of the context - having changed. I make use of this in - ACE_Local_Name_Space::create_manager(). - -Fri Jul 19 12:28:07 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/System_Time.cpp (get_master_system_time): Modified - ACE_System_Time::get_master_system_time() so that if an entry - for the time is not found in shared memory (indicating that no - Clerk is running), then we should just return the local time of - the host. - - * netsvcs/lib/TS_Clerk_Handler.cpp (update_time): Modified - ACE_TS_Clerk_Handler::update_time() so that if the Clerk is not - connected to any servers, is sets the delta time to zero - allowing clients to then use the local time of the host. - -Wed Jul 17 22:19:53 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/UPIPE_Connector.cpp (connect): Added an #ifdef around the - check of ACE_OS::isastream (handle) in - ACE_UPIPE_Connector::connect() since the call is not supported - on NT. - -Thu Jul 11 22:22:57 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu) - - * ace/OS.i (kill): Modified ACE_OS::kill so that it works on NT. - It takes a process ID, creates a handle for the associated - process, and calls TerminateProcess on the handle. This is - actually pretty dangerous according to the NT documentation. - Can majorly confuse DLLs. Does the same old thing on UNIX. - - * ace/OS.cpp (fork_exec): Added a fork_exec operation to ACE_OS. - This works on UNIX and NT. It combines the forking and exec'ing - into one call. This has to be combined since Win32 - CreateProcess only starts applications from scratch (unlike UNIX - fork). - - * examples/OS/test_os.cpp: Added a new example application to test - the new ACE_OS::fork_exec and ACE_OS::kill operations. - -Tue Jul 9 13:04:14 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Service_Manager.cpp (reconfigure_services): To improve - portability on Win32 and UNIX I replaced the use of a signal to - trigger reconfiguration to instead make a call to the new - ACE_service_Config::reconfig_occurred() method. This should - actually perform the same as the original approach, since all - the signal handler ever did was to set this flag! Thanks to - Karlheinz for pointing out the need for this. - - * ace/Service_Config.h: Added a new static public method called - reconfig_occurred(sig_atomic_t) to set if a reconfiguration - should take place the next time through the event loop. - -Mon Jul 8 14:20:01 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/Time_Value.h: Added "ACE_Export" before all global operators - to allow them to be dll-exportable on NT. - -Mon Jul 8 13:12:05 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/{Message_Block,DEV_IO,SPIPE_Stream}.cpp: Fixed several more - cases of delete array that should have been delete [] array. - Thanks to Tom Leith for pointing out some of these. I can hear - the ghost of James Mansion coming closer... ;-) - - * INSTALL: Added tips on how to install ACE on a Win32 platform - that lacks a network card. - - * ChangeLog: Split ChangeLog-96 into two files (ChangeLog-96a and - ChangeLog-96b) since it was becoming quite large! Thanks to - Chris Lahey for pointing this out. - - * ace/Stream.cpp: Was missing a "return 0;" at the end of the - close() method. Thanks to Tom Leith for - finding this. - -Mon Jul 8 14:20:01 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/Time_Value.h: Added "ACE_Export" before all global operators - to allow them to be exportable from Win32 DLLs. - -Sun Jul 7 10:34:48 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Released version 4.0.27 for testing. - - * config-sunos5.5*.h: Removed all uses of ACE_HAS_SVR4_SIGNAL_T in - the config files since Solaris 2.5 has consistent signal and - sigaction types (at last!). - - * Installed and compiled ACE successfully with the new SunC++ 4.1 - compiler on Solaris 2.5. However, there seems to be major - problems with the interaction of the SunC++ exception handling - runtime system and the Solaris multi-threading mechanisms. This - is causing the ACE multi-threading tests to bomb with - segmentation faults inside of the _ex_unwind() library function. - If you read the /opt/SUNWspro_3.1/READMEs/c++ file you'll see - why this problem is occurring (apparently due to bugs in the - Solaris libC.so.5 C++ runtime library). - - There seem to be two fixes for this problem: - - 1. Add the following to *all* threads (including main): - - #include - - void *my_thread_entry_point (void *) { - set_terminate (abort); - set_unexpected (abort); - - // Do real work... - } - - This is the approach recommended by the README file in - SUNWspro_3.1. However, it is *clearly* a horrible hack and - very non-portable (therefore, I deem it worthy of Microsoft - ;-)). - - 2. Compile ACE (and applications?) with -noex in order to avoid - this bug. This is clearly not desirable either since it - precludes the use of exception handling with C++ and threads - on Solaris... - - Since ACE doesn't use exceptions internally on Solaris option 2 - seems like the best approach for the time being. When Sun gets - it act together and releases a bug-free library and C++ - software, I'll fix ACE accordingly. - - * tests: Integrated the latest of Prashant's "one-button" tests - into the main ACE release. These will run on both UNIX and - Win32 now. - - * ace/UPIPE_Stream.cpp (recv): Changed the semantics of the - ACE_UPIPE_Stream::recv (char *, size_t, ACE_Time_Value *) - method. Currently, the behavior is to block until *exactly* N - bytes are read. However, this is incorrect for 2 reasons: - - 1. It makes it hard to write a server that doesn't know - precisely how big the messages are from the client. In - particular, if the receiver doesn't know how big the buffer - messages are from the client it will block indefinitely! - - 2. It is redundant with respect to the - ACE_UPIPE_Stream::recv_n(), which also blocks until all N - bytes are received. - - Therefore, I've made the new UPIPE_Stream::recv() method block - only until it's received the first block of data that allows it - to fulfill its size request, or anything that is smaller than - that size. - - * ace/OS.cpp (thr_create): Since POSIX pthreads doesn't provide an - equivalent of THR_NEW_LWP in the pthreads_attr_* functions, I've - added an emulation that should work for Solaris. Basically, if - THR_NEW_LWP is set when ACE_OS::thr_create() is called, we use - the ACE_OS::thr_{get,set}concurrency methods to increase the - number of LWPs by one. - - * ace/Message_Block: Changed the default high water mark for an - ACE_Message_Queue from 4K to 16K. This is useful since it - allows applications to buffer more information before blocking. - - * ace/Log_Msg: Added a pair of operations that allow applications - to acquire and release the synchronization lock used internally - by the ACE_Log_Msg implementation. This allows applications to - hold the lock atomically over a number of calls to ACE_Log_Msg, - which is useful for composite operations like the following: - - // Make sure the following operations are run atomically! - ACE_LOG_MSG->acquire (); - - while (c != '!') - { - if (c_stream.recv (&c, 1) == -1) - ACE_DEBUG ((LM_DEBUG, - "(%t) buffer recv from supplier failed\n")); - else - ACE_DEBUG ((LM_DEBUG, "%c", c)); - } - - ACE_LOG_MSG->release (); - - * examples/IPC_SAP/UPIPE_SAP: Revised all of the UPIPE_Stream - tests to make them more consistent and correct with respect to - the new changes. - - * ace/Stream.cpp (link_i): There was a bug in the link_i() logic - because we weren't also linking the other stream back to our - stream. - - * ace/UPIPE_{Acceptor,Connector}: Modified both of these classes - so that they don't - - * ace/Stream.cpp (close): Modified close() so that it now detects - "double-closes" and ignores anything but the first one. - - * ace/UPIPE_Stream: Updated this class so that it no longer - inherits from ACE_Stream (previously ACE_UPIPE_Stream had - inherited from *both* ACE_Stream *and* ACE_SPIPE). There are - several reasons we shouldn't inherit from ACE_Stream: - - 1. There are operations on ACE_Stream that don't make any sense - on ACE_UPIPE_Stream (e.g., link(), unlink()). - - 2. ACE_Stream isn't really designed to be subclassed (e.g., - it doesn't have virtual methods). - - 3. Not inheriting makes the interface cleaner, e.g., we now use - send() and recv() methods consistently, rather than - send_msg()/put() and recv_msg()/get(). - - 4. The return values from the I/O methods are now more - consistent than they were before. - - * ace/Message_Block: The signature for the copy() method was - incorrect. It should have been copy (const char *, .....) - rather than copy (char *, ....). - - * examples/IPC_SAP/UPIPE_SAP: Together with Prashant, fixed up the - ACE_UPIPE_Stream tests so they more cleverly - (and correctly) utilize and illustrate various ACE concurrency - features. - -Sat Jul 6 18:28:55 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Stream.cpp: Fixed some obscure bugs with Stream::unlink() - and Stream::link(). These bugs were triggered by the - ACE_UPIPE_Stream tests. We need to make sure that we don't have - race conditions in the order in which ACE_UPIPE_Stream close() - down. Prashant and I fixed this problem by (1) adding a lock to - unlink() and link() and then creating unlink_i() and link_i() to - perform the work and (2) being more careful about trying to - unlink our side and the other side of a linked Stream. - - * ace/config-linux.h: According to Istvan Buki - , Linux now supports the - send_msg()/recv_msg() system calls, as well as UNIX domain - sockets. Therefore, I've updated the config-linux*.h file to - remove the existing restrictions. If this turns out not to be - the case, please let me know. - - * ace/LSOCK.cpp (recv_handle): Added a change to some casts to - make ACE compile with Linux. Thanks to Istvan Buki - for reporting this. - - * apps/Gateway/Gateway/File_Parser.cpp (readword): Removed - yet another use of: - - for (int x; foo(x); ) - { - } - - x = 10; - - Which is now a deprecated feature of C++. - - * include/makeinclude: added the -lw library to the GNU G++ - platform*.GNU file in order to pick up the wide-character string - functions. - -Fri Jul 5 18:11:44 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Re-released version 4.0.26 for testing. - - * ace/CORBA_Handler.cpp (activate_service): Revised the code to - use the Orbix macros for TRY/CATCH rather than try/catch. We - need this to make legacy code work! Thanks to Irfan for - pointing this out. - - * ace/Thread_Manager: Fixed a bunch of typos that grelims snuck - in. Thanks to Jack Erickson for reporting this. - - * examples/IPC_SAP/TLI_SAP/ftp-server.cpp: Fixed some typos that - were causing problems on AIX. Thanks to Greg Wilson - for reporting this. - - * examples/Reactor/Misc/test_time_value.cpp (operator<<): Added a - "const" in front of the ACE_Time_Value & in order to make things - work correctly on AIX. Thanks to Greg Wilson - for reporting this. - - * ace/SPIPE_Acceptor: Fixed some missing "returns" that had sprung - up in the #else arm of the SPIPE code. Thanks to Greg Wilson - for reporting this. - - * apps/Synch-Benchmarks/Benchmark: Fixed a typo that was causing - the application to fail to compile on AIX. Thanks to Greg - Wilson for reporting this. - - * Changed all uses of virtual int init (int, char **) to virtual - int init (int, char *[]) to workaround bugs with MSVC++... - - * ace/OS.h: for POSIX pthreads, changed the definition of the - THR_SCOPE_SYSTEM macro so that it has the same value as - THR_BOUND. If this isn't done, then things don't quite work - right when we implement the ACE_OS::thr_create() wrapper. - -Thu Jul 4 13:17:35 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Thread_Manager: Added a new method called thr_self() that - *does* return a real handle that can be used by - WaitForMultipleObjects, etc. Note that this new approach - cleverly caches this handle in TSS in order to cut down on - search time. Thanks to Jesper for pointing this technique out. - - * ace/OS.i (thr_self): After receiving comments from Jesper, undid - the earlier change today that was returning a duplicated handle - for ACE_OS::thr_self(). It turns out this is a bad idea because - the handle most typically doesn't get released, which leads to - handle leaks. - - * ace/Thread_Manager: Added a new private method called - check_state(). This method extends existing code to be smarter - about how we check to see what "state" (e.g., suspended, - cancelled, etc.) a thread is in. The original code - (which was a macro called ACE_CHECK_STATE) didn't behave - correctly if we asked about the state of a thread that was - different from ourselves! - - * ace/Thread: Modified the public interface to - ACE_Thread::spawn_n() so that it now takes a void *stack[] and - size_t stack_size[]. If stack != 0 it is assumed to be an array - of n pointers to the base of the stacks to use for the threads - being spawned. Likewise, if stack_size != 0 it is assumed to be - an array of n values indicating how big each of the - corresponding stacks are. This is useful since now we can spawn - a group of threads each of which has its own custom stack and/or - stack size. Thanks to Ashish Singhai - for pointing out the need for - this. - - * apps/Synch-Benchmarks: Updated the Synch benchmarks so that most - of them work again. The trick is *not* to use ACE_OS::sleep () - (which doesn't seem to be thread-friendly...) but instead to use - ACE_OS::select() as a timer. - - * man: updated the manual pages and html pages to reflect all the - recent changes. - - * ace/Malloc_T.cpp (open): Added a check to make sure that if - init_acquire() fails we don't let this go by undetected... - Thanks to Karlheinz for pointing out the need for this. - - * ace/OS.i (thr_getconcurrency): Fixed a subtle bug with the - ACE_OS::thr_getconcurrency() function. I was mistakenly using - ACE_ADAPT_RETVAL for the result of ::thr_getconcurrency(), which - is clearly wrong! - - * ace/Service_Record.cpp (remove): Fixed a typo that was causing - the removals of Modules in a dynamically configured Stream to go - into infinite loops. - - * ace/OS.i (thr_self): Modified the ACE_OS::thr_self (hthread_t &) - function so that it will return a *duplicate* of the current - thread's pseudo-handle returned by GetCurrentThread(). This - change is necessary because the pseudo-handle returned by - GetCurrentThread() is pretty useless (e.g., it can't be used by - any other thread to "wait" for this thread to exit). This new - behavior is used in the examples/Reactor/ReactorEx test program. - - * ace/Service_Config.cpp: I'd forgotten to assign the - delete_svc_rep_ flag when dynamically allocating the svc_rep_. - This is fixed now. - -Wed Jul 3 20:09:44 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Added a new subdirectory called $WRAPPER_ROOT/tests that - contains the first phase of the ACE regression tests. - - * ace/Reactor.cpp (check_handles): Fixed an earlier fix with the - ACE_Reactor::wait_for_multiple_events() method. The earlier fix - had changed the exit condition of do/while loop to be - - while (nfound == -1 && this->handle_error () >= 0); - - However, this was causing signal handling to break... - Therefore, the right fix is to keep the exit test as: - - while (nfound == -1 && this->handle_error () > 0); - - and instead fix handle_errors() so that it returns 1 if we're - able to fix a bad handle... Thanks to Prashant and Irfan for - tracking this down. - - * ace/OS: Finally broken down and added a new pair of ACE_OS - functions called "last_error()". These basically call - SetLastError/GetLastError on Win32 or they set/get errno on - UNIX. - - * ace/config-linux.h: Fixed an annoying problem with - struct msghdr in Linux by adding - - #define msg_accrights msg_control - #define msg_accrightslen msg_controllen - - to the config-linux*.h files. Thanks to Michael R"uger - for suggesting this. - - * ace/SOCK_IO.cpp (recv): Fixed a "bug" where - ACE_SOCK_IO::{send,recv} allocates with: - - iovec *iovp = new iovec[total_tuples]; - - But deletes with: - - delete iovp; - - Thanks to the ever vigilant James Mansion - (mansionj@lonnds.ml.com) for noticing this. - -Tue Jul 2 23:48:38 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu) - - * ace/Service_Config.h: Added ReactorEx to the singleton resources - that the Service_Configurator holds. This includes accessors, - destruction hooks, and event loop methods. - - * examples/Reactor/ReactorEx/README: There is a new example - application for the ReactorEx. Please check out - examples/Reactor/ReactorEx/README for details. - -Tue Jul 2 18:43:12 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * Released version 4.0.25 for testing. - - * examples/ASX/Message_Queue/priority_buffer.cpp: Added a new test - program that illustrates the use of the new Message_Queue - priority scheme. - - * ace/Message_Queue: Added new support for prioritized message - enqueueing into the ACE_Message_Queue. Now, when an application - uses ACE_Message_Queue::enqueue() the new Message_Block is - inserted into the queue according to its msg_priority(). When - dequeue_head() is used the item retrieved will then be the item - of "highest priority" (priorities range from 0 to MAX_LONG). - Note that the semantics of the existing enqueue methods, - enqueue_head() and enqueue_tail(), remain unchanged. - - * ace/Message_Block: Changed the type of the priority in a message - block to u_long rather than u_char. This gives us a much - greater range of priorities! - -Mon Jul 1 01:12:08 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * ace/Thread.h: Changed a couple of mistyped comments. Thanks - to the eagle eyes of Andres Kruse for noticing this. - - * ace/OS: added more comprehensive support for UNICODE to - both the Win32 and UNIX OS adaptation layer. This new - support automagically selects the appropriate implementation - (i.e., either char * or wchar_t *) for the string comparison - routines (which are used in places like ACE_Mem_Map). - - * ace/Service_Config: Split up the ACE_Service_Config::close() - method into two parts: close_svcs() and close_singletons(). - This makes it possible to remove svc.conf services without - destroying Singletons like the Proactor, Reactor, etc. Thanks - to Karlheinz for recommending this. - - * ace/Service_Config: Added flags for remembering who created the - Singleton Proactor, Allocator, Thread_Manager, and - Service_Repository (in addition to the Reactor, which I did last - week). If we created these Singletons, then we are responsible - for freeing them up. Thanks to Karlheinz for pointing out the - need for this. - -Mon Jul 1 16:26:27 1996 Prashant Jain (pjain@merengue.cs.wustl.edu) - - * ace/Connector.cpp: Added two new arguments to connect () namely, - "int flags" and "int perms". The Connector can now pass these - two arguments to its template arguments (e.g., SOCK_Connector, - SPIPE_Connector, etc.) when calling their connect() method. A - consequence of doing this was that we had to modify the - signature of the connect() method on some of the IPC_SAP classes - (e.g., TLI_Connector, SOCK_Connector, and LSOCK_Connector). - Note that these changes may break some existing code, - particularly with TLI_Connector (see below), so beware... - - * ace/TLI_Connector.cpp: Changed the order of the connect() - arguments to be more consistent with the rest of the IPC_SAP - classes used with the Connector. Please note that existing - examples which use TLI_Connector may need to be modified as a - result of this change. - - * ace/OS.i (open): Modified ACE_OS::open() to use the argument - perms to turn the flag FILE_FLAG_OVERLAPPED on and off for - Win32. - - * ace/Service_Config.cpp (end_proactor_event_loop): Added new - methods run_proactor_event_loop() and end_proactor_event_loop() - which call handle_events on the Proactor. - -Mon Jul 1 02:15:34 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu) - - * ace/Proactor.h: Made ACE_Proactor an ACE_Event_Handler so that - it can be registered with the ACE_ReactorEx. ACE_Proactor - associates the same global HANDLE with every overlapped I/O - operation. This global HANDLE can be registered with the - ACE_ReactorEx. Therefore, by using the - ACE_Proactor::handle_signal method as an adapter, we can now - dispatch overlapped I/O and other "waitable" objects from a one - ACE_ReactorEx running in a single thread of control. Thanks to - James Mansion for setting us on the - right path! - - * ace/ReactorEx.h: Added a ACE_ReactorEx to encapsulate Win32 - WaitForMultipleObjects(). The ACE_ReactorEx handle_events() - method calls ACE_Event_Handler::handle_signal when the - corresponding Win32 HANDLE becomes signaled. This gives us a - uniform abstraction for dispatching all "waitable" objects on - Win32, including events related to I/O completion ports and - events related to other forms of NT synchronization (such as - mutexes, semaphores, threads, etc.). - - * ace/Timer_Queue.h (calculate_timeout): Added a calculate_timeout - method to ACE_Timer_Queue. Also removed the same method from - ACE_Reactor. This is so Reactor, ReactorEx, and Proactor can - all reuse the calculations required by the Timer_Queue without - duplicating code. diff --git a/ChangeLog-97a b/ChangeLog-97a deleted file mode 100644 index d8a4de991ba..00000000000 --- a/ChangeLog-97a +++ /dev/null @@ -1,9203 +0,0 @@ -Thu Jul 3 20:36:19 1997 Nanbor Wang - - * performance-tests/Misc/childbirth_time.cpp: Changed the - parameter type of "Profiler" from int to size_t to make g++ - happy. - -Thu Jul 03 20:03:18 1997 David L. Levine - - * ace/Reactor.cpp (remove_handler): added ACE_UNUSED_ARG - when NSIG != 0. - -Wed Jul 2 23:41:43 1997 Nanbor Wang - - * performance-tests/Misc/childbirth_time.cpp: Fixed some typos. - -Wed Jul 2 23:13:10 1997 Douglas C. Schmidt - - * performance-tests/Misc/childbirth_time.cpp: Revised the - code to use ACE programming style. - -Wed Jul 02 23:02:24 1997 Douglas C. Schmidt - - * ACE version 4.2.15, released Wed Jul 02 23:02:24 1997. - -Wed Jul 2 22:23:49 1997 Douglas C. Schmidt - - * ace/Service_Config.cpp: Used the new ACE_LACKS_UNIX_SIGNALS - macro to reduce the #ifdef complexity somewhat. - - * ace/config-{chorus,win32-common}.h: Added #define for - ACE_LACKS_UNIX_SIGNALS. - - * ace/OS.h: If a platform (e.g., Chorus) doesn't support signals - then #define NSIG 0. - - * ace/Reactor.cpp: Chorus does not support signals. Make the call - to register/remove_handler(sig_set, evnet_handler) return - succesfully so that some of the examples and test programs do - not need to be changed. Thanks to Wei Chiang for this. - - * ace/config-chorus.h: Added a new macro for - ACE_LACKS_NAMED_POSIX_SEM to handle Chorus. Thanks to Wei - Chiang for this. - - * ace/OS.i: Define macros ACE_PTHREAD_CLEANUP_* so that the - related code does not need to be surrounded with #ifdefs. - Thanks to Wei Chiang for this. - - * ace/OS.i: Chorus does not support named semaphores. The code - that to do with names in sema_init() and sema_destory() is - therefore disabled. Thanks to Wei Chiang for this. - - * ace/config-chorus.h: Added support for ACE_LACKS_PTHREAD_CLEANUP - and ACE_HAS_POSIX_SEM to the Chorus port. Thanks to Wei Chiang - for this. - -Wed Jul 2 17:37:09 1997 Douglas C. Schmidt - - * ace/Hash_Map_Manager.cpp: Clarified the behavior of close_i() a - bit more. - -Wed Jul 2 09:54:36 1997 Douglas C. Schmidt - - * ace/Hash_Map_Manager.cpp: Fixed a couple more size_t->u_long - conversions for ACE_Hash_Map_Manager::hash(). This didn't harm - anything but it's good to be consistent. - -Wed Jul 2 16:46:59 1997 Nanbor Wang - - * performance-tests/Misc/childbirth_time.cpp: Added this program - to measure child process/thread creation mechanisms on various - platforms. Native thread creation test only supports Solaris - and NT threads so far. But you can still use ACE_OS::thr_create - method on your platform if not supported. - -Wed Jul 2 15:59:53 1997 Darrell Brunsch - - * ace/High_Res_Timer.cpp: Created a function get_registry_scale_factor - that finds out the speed of the processor using the NT registry (in - megahertz). This means that ACE_High_Res_Timers should automatically - get the correct scale factor. - - * tests/Timer_Queue_Test.cpp: Removed the call to - get_env_global_scale_factor(). - -Wed Jul 2 15:39:33 1997 Tim H. Harrison - - * ace/Process.cpp: Modified spawn to check for the NO_EXEC - flag after forking on UNIX. If it's set, spawn returns the - child pid without exec'ing. Updated the NT version to - always return the child pid on success. - -Wed Jul 02 10:55:23 1997 David L. Levine - - * tests/SPIPE_Test.cpp,UPIPE_SAP_Test.cpp: tweaked the static - functions a bit to avoid warnings about unused statics on VxWorks. - -Wed Jul 02 00:16:07 1997 Douglas C. Schmidt - - * ACE version 4.2.14, released Wed Jul 02 00:16:07 1997. - -Tue Jul 1 22:49:58 1997 Douglas C. Schmidt - - * ace/Strategies_T.h: Changed the return value of all the hash() - methods to be u_long. - - * tests/Map_Manager_Test.cpp (hash): Changed the return value of - all the hash() methods to be u_long. - - * ace/SString.cpp: Changed the return value of all the hash() - methods to be u_long. - - * ace/Hash_Map_Manager: Changed the return value of hash() - to return a u_long in order to (1) be consistent with - the return value of hash_pjw() and (2) give the maximal - range for the hash function. Thanks to Marina Spivak - for reporting this. - -Tue Jul 01 14:47:22 1997 David L. Levine - - * ace/High_Res_Timer.{h,i} (gettime): use gettime () static function - to wrap all calls to ACE_OS::gethrtime (). On ACE_WIN32, if the - global scale factor has not been set, then gettime () uses - ACE_OS::gettimeofday () instead of ACE_OS::gethrtime (), because - gettimeofday doesn't need the scale factor. - -Mon Jun 30 17:28:53 1997 Douglas C. Schmidt - - * Makefile (RELEASE_FILES): Removed the rpc++ directory from the - main release since this doesn't seem to be widely used and the - GPL copyleft confuses people. - -Mon Jun 30 15:08:04 1997 David L. Levine - - * include/makeinclude/platform_vxworks5.x_g++.GNU: added -lgcc - to LDFLAGS. - -Mon Jun 30 12:00:02 1997 Douglas C. Schmidt - - * ACE version 4.2.13, released Mon Jun 30 12:00:02 1997. - -Sat Jun 28 08:27:27 1997 David L. Levine - - * ace/OS.h: added definitions of ACE_SHLIB_HANDLE and - ACE_DEFAULT_SHLIB_MODE on platforms other than - ACE_HAS_SVR4_DYNAMIC_LINKING and hpux. - - * ace/OS.i: split definitions of ACE_OS::cond_* member - functions into two: for ACE_WIN32/VXWORKS and all others. - That allows us to break the circular dependencies between - those functions and the ACE_OS::sema_* member functions. - - * ace/Svc_Conf_y.cpp: commented out unused args and wrapped - assignments in "if" conditionals with parenthesis to avoid - g++ warnings. - - * ace/{ACE,INET_Addr,OS}.cpp (VxWorks only): added ACE_UNUSED_ARG - calls. - - * ace/Parse_Node.cpp (ACE_Stream_Node,ACE_Dynamic_Node,ACE_Dummy_Node - constructors): reordered initializers to match declaration order. - - * ace/Profile_Timer.h (elapsed_time): commented out unused arg "et". - - * ace/Read_Buffer.cpp (rec_read): initialized local variable "c" to - make sure that it is always defined before use. - - * ace/SPIPE_Acceptor.cpp (remove): don't declare local variable - "result" if ! ACE_HAS_STREAM_PIPES, because it's not used in - that case. - - * ace/config-vxworks5.x-g++.h: added ACE_LACKS_IOSTREAM_FX, - ACE_LACKS_LINEBUFFERED_STREAMBUF, and ACE_LACKS_SIGNED_CHAR. - - * ace/IOStream_T.h (ipfx): comment out unused variable "need". - - * platform_vxworks5.2_g++.GNU: added -Wall now that the ACE library - builds cleanly with it. - - * platform_vxworks5.x_g{++,hs}.GNU: renamed 5.x instead of 5.2. - - * netsvcs/lib/Token_Handler.cpp: reordered initializers to match - declaration order. - - * tests/SV_Shared_Memory_Test.cpp: moved template specializations - so that they're not done on platforms that don't support SV IPC. - - * examples/IOStream/client/iostream_client.cpp, - examples/IOStream/server/iostream_server.cpp: - use ACE_HAS_STRING_CLASS rather than __GNUC__ to determine whether - the platform has a String class. - -Fri Jun 27 13:10:46 1997 Douglas C. Schmidt - - * ace: Changed the name of config-vxworks5.2-g++.h to - config-vxworks5.x-g++.h since it works with 5.2 and 5.3. - - * examples/Mem_Map/IO-tests/IO_Test.cpp: Fixed some bugs that were - preventing this from running correctly. - -Fri Jun 27 13:37:37 1997 Steve Huston - - * ace/Svc_Conf.y: Finished the sanity checks started below. - -Fri Jun 27 11:55:13 1997 Darrell Brunsch - - * ace/Timer_Queue_T.cpp: added a check for an empty queue in expire - -Fri Jun 27 07:53:58 1997 David L. Levine - - * tests/Message_Queue_Notifications_Test.cpp (handle_output, - handle_exception,main): added ACE_UNUSED_ARG (fd) to avoid - compilation warnings about unused arguments. - -Fri Jun 27 01:08:54 1997 Douglas C. Schmidt - - * ace/Connector.cpp (create_AST): Replaced the gratuitous #ifdef - for ACE_WIN32 and EXCEPT_MASK with the new CONNECT_MASK. This - is much cleaner! - - * ace/Event_Handler.h: Added a new CONNECT_MASK that defaults to - READ_MASK | WRITE_MASK (with | EXCEPT_MASK thrown in for Win32). - Thanks to Irfan for this suggestion. - -Thu Jun 26 19:53:11 1997 Nanbor Wang - - * ace/OS.i (strtok_r): Added check on a null string so we won't go - past the end of a string. - - * performance-tests/Misc/context_switch_time.cpp (main): Added - get_env_gloval_scale_factor() at the very beginning so that high - resolution timer can return correct time in millisecond. - -Thu Jun 26 15:29:55 1997 Darrell Brunsch - - * tests/Timer_Queue_Test.cpp: Changed the random scheduling to use - past times instead of future time. This should fix some unusual - behavior of this test. Thanks to Gonzalo A. Diethelm - for reporting this. - -Thu Jun 26 12:38:16 1997 Douglas C. Schmidt - - * ACE version 4.2.12, released Thu Jun 26 12:38:16 1997. - -Thu Jun 26 01:11:10 1997 Douglas C. Schmidt - - * ace/Svc_Conf.y: Added some sanity checks to make sure we don't - segfault when things go wrong during the svc.conf file parsing. - Thanks to Steve Huston for this suggestion. - -Thu Jun 26 08:36:37 1997 David L. Levine - - * Makefile: fix UPTODATE check (for release target) by not - running it in a sub-shell. Also, added ACE-lessons.html - to RELEASE_FILES. - - * performance-tests/Misc/context_switch_time.cpp: use same priority - values on Win32 platforms as on Solaris, because thread priority - increases with increasing priority values on both of those platforms. - -Thu Jun 26 01:34:46 1997 Nanbor Wang - - * performance-tests/Misc/misc.{mak,mdp}: Added makefile for NT. - - * ace/{FILE,DEV}.{h,i}: Added the disable(int signum) function to - prevent NT from disabling a FILE/DEV using socket calls. - -Wed Jun 25 12:59:00 1997 - - * ace/Synch_T.h (ACE_SYNCH_PROCESS_MUTEX and - ACE_SYNCH_NULL_MUTEX): Added new template typedef to the list. - - * tests/Message_Queue_Notifications_Test.cpp: New test for - demonstrating notification qualities of Message_Queue. - - * ace/Strategies.h: Added accessors to these classes to make them - more usable. - -Wed Jun 25 10:47:34 1997 Steve Huston - - * ace/Parse_Node.cpp: Insure that ACE_Object_Node::symbol(void) - returns 0 if the underlying shared library can't be loaded. - - * ace/OS.h: Added a new type, ACE_SHLIB_HANDLE to allow dynamic - linking using correct types on all platforms that support it. - Also added a const ACE_SHLIB_DEFAULT_MODE for the 'mode' argument - when doing a dlopen-like operation. - Moved the ACE_OSCALL_* macros to this file from OS.i - - * ace/OS.i: Moved ACE_OSCALL_* macros out of here and into OS.h. - Added support for dlopen/close/sym/error on HP-UX. Note - the - Service_Configurator tests do not run yet on HP - I'm working on - that. - - * ace/Service_Record.{h, i, cpp}: Use new ACE_SHLIB_HANDLE type for - dynamic loading operations. - - * ace/Parse_Node.{h, cpp}: Use new ACE_SHLIB_HANDLE where appropriate. - - * ace/Strategies_T.cpp: Use new ACE_SHLIB_HANDLE type. - -Wed Jun 25 02:36:05 1997 Nanbor Wang - - * ace/OS.i (gmtime_r): Modified the implementation of gmtime_r - when OS doesn't provide one. Notice that the implementation - only simulate the semantic and is not thread-safe. - - * ace/OS.h: Moved definition of ACE_SHLIB_HANDLE typedef and - ACE_DEFAULT_SHLIB_MODE global variable for Win32 to where it - belongs. - - * ace/OS.i: Changed the return type of dlopen() when ACE_HAS_UNICODE to - ACE_SHLIB_HANDLE. - - * ace/OS.{h,i}: Moved ACE_OSCALL and ACE_OSCALL_RETURN for WIN32 - from OS.i to OS.h. - -Wed Jun 25 01:23:58 1997 Nanbor Wang - - * ace/OS.i (strtok_r): Modified the implementation when OS does - not provide reentrant strtok_r so that our imp. comforms with - the semantic of strtok_r (). - -Wed Jun 25 00:37:56 1997 Douglas C. Schmidt - - * ACE version 4.2.11, released Wed Jun 25 00:37:56 1997. - -Tue Jun 24 21:30:53 1997 David L. Levine - - * ace/Svc_Conf_y.cpp: commented out unused args and wrapped - assignments in "if" conditionals with parenthesis to avoid - g++ warnings. - -Tue Jun 24 18:15:46 1997 Nanbor Wang - - * ace/Reactor.cpp (wait_for_multiple_events): Modified the way to - manipulate timeout value so that we can differentiate when there - are timeout events to be handle from no timer and we want to - wait indefinitely. - -Tue Jun 24 16:52:22 1997 David L. Levine - - * ace/OS.h: reverted ACE_hrtime_t to unsigned __int64 with VC++. - This might break something, but we need to know what. - -Tue Jun 24 16:38:52 1997 Darrell Brunsch - - * Added Visual C++ 5.0 specific workspace (.dsw) and project (.dsp) - files to both the ace and tests subdirectory. ACE.DSW in the root - directory contains all the project files, so a batch build should - be able to build all the project files. - -Tue Jun 24 14:27:47 1997 Darrell Brunsch - - * ace/Timer_{Hash,Heap,List,Wheel}_T.cpp: Changed cancel (type..) - to call cancellation() even if there are no timers to cancel. - This causes the correct behavior of calling handle_close () - during expire when handle_timeout() returns -1. Thanks to - Hamutal Yanay for - pointing this out. - - * tests/Timer_Queue_Test.cpp: Updated to correctly test this. - -Tue Jun 24 13:02:51 1997 David L. Levine - - * ace/SString.h (ACE_SString ctor): changed "allocator" to "alloc". - Thanks to Brian Mendel for reporting this. - -Tue Jun 24 12:58:28 1997 James C Hu - - * include/makeinclude/platform_irix6.4*: Shuts up useless warnings - about multiply defined template instances. - -Tue Jun 24 12:50:52 1997 Douglas C. Schmidt - - * ACE version 4.2.10, released Tue Jun 24 12:50:52 1997. - -Tue Jun 24 00:44:30 1997 Nanbor Wang - - * ace/SPIPE.{h,i}: Added the disable(int signum) function to - prevent NT from disabling an SPIPE using socket calls. - -Mon Jun 23 22:14:39 1997 Douglas C. Schmidt - - * ace/Svc_Conf*: Changed the name of the YYSTYPE field - ACE_Static_Node_ to static_node_ to be consistent with the other - fields. - -Mon Jun 23 18:28:55 1997 David L. Levine - - * ace/ACE.cpp: added auto_basic_array_ptr specialization. - - * ace/Service_Config.cpp, tests/Future_Test.cpp, - examples/Threads/future[12].cpp: added auto_basic_ptr - specializations. - - * include/makeinclude/platform_vxworks5.2_g++.GNU: - reworked to supported different targets, instead of only PowerPC. - -Mon Jun 23 16:06:35 1997 James C. Hu - - * ace/OS.i: Moved definition of sema_* methods to follow cond_* - methods to remove compiler warnings on SGI. - -Mon Jun 23 09:42:08 1997 Darrell Brunsch - - * tests/Timer_Queue_Test.cpp: added testing for cancellation - during expire (when of handle_timeout() in an event handler - returning -1). - -Mon Jun 23 09:18:39 1997 David L. Levine - - * Makefile: added up-to-date check for "make release" from - /project/adaptive/ACE_wrappers. Also, "make release" now - adds release entry to latest ChangeLog. - - * ace/Makefile: build shared library before static library. - This appears to fix a problem with Sun C++ 4.{1,2} possibly - related to its template instantiation scheme. If the - static library is built first, then .shobj/Reactor.so - and .shobj/Timer_Hash.so (and possibly others) fail to - build due to ACE_TimeValue::normalize () "relocations remain - against allocatable but non-writable sections". - Thanks to Steve Huston and - Satoshi Ueno for reporting this, and - to Satoshi for verifying the fix. - - * ace/ACE.cpp (terminate_process): removed used of - ACE_OSCALL_RETURN macro because its defined in OS.i, and so - not available if inlining is disabled. - - * ace/Auto_Ptr.{h,i}: made "p_" protected instead of private - so that it can be accessed with the new class arrangement. - Also, made the auto_array_ptr operator-> const. - - * ace/Sched_Params.cpp (previous_priority, VxWorks only): - removed ACE_UNUSED_ARG (policy) because policy is used in - this function. - - * netsvcs/lib/TS_Clerk_Handler.cpp (parse_args): wrapped TCHAR - argument to sizeof in parenthesis. - -Mon Jun 23 09:12:04 1997 Nanbor Wang - - * ace/Auto_Ptr.i (auto_array_ptr): Fixed a typo. - -Mon Jun 23 08:03:46 1997 Darrell Brunsch - - * ace/Auto_Ptr.h: changed inheritance of auto_basic_array_ptr in - auto_array_ptr to include the template parameter X. - - * ace/IOStream_T.i: removed default parameter in the definition - of ACE_Streambut_T::recv_n() and ACE_SOCK_Dgram_SC::recv_n() - -Mon Jun 23 01:13:15 1997 - - * ace/OS.cpp (fork_exec): Fixed the usage of ACE_WIDE_STRING. - - * test_registry_iterator.cpp (main): Fixed the usage of - ACE_WIDE_STRING. - - * netsvcs/lib/TS_Clerk_Handler.cpp (parse_args): Fixed the usage - of ACE_WIDE_STRING. - - * ace/Auto_Ptr.h: Added support for basic types by seperating the - auto_ptr classes into two. One that requires the -> operator - support and the other that does not. The former inherits from - the latter. - - * ace/{FILE,DEV,SPIPE}_Addr.h: Added support for multibyte and - wide character addr_to_string and string_to_addr functionality. - - * ace/Connector.cpp && ace/Acceptor.cpp (info): Fixed sizeof bug. - - * examples/Connection/blocking/SPIPE: Added UNICODE support for - this example. - - * ace/OS.h: Added new macro ACE_MULTIBYTE_STRING. - - * ace/ACE.cpp (terminate_process): Fixed unused args errors. - -Sun Jun 22 09:58:36 1997 Douglas C. Schmidt - - * Released version 4.2.9 for testing. - - * ace/Log_Msg.cpp (open): Changed the use of ACE_LOG_MSG-> within - the open() method to use this-> in order to avoid deadlocks. - Thanks to Per Andersson for reporting this. - - * ace/ACE.cpp: Changed the use of __SVR4 and __unix to sparc and - unix to work better with various UNIX environments. Thanks to - Michael R. MacFaden for these changes. - - * ace/Handle_Set.cpp (count_bits): Added special code to handle - the case where fdmask is typedef'd as a long rather than an int. - Thanks to Eric Newton and James Johnson for - reporting this. - - * ace/IOStream.h: Changed the name of QuotedString to - ACE_Quoted_String to be consistent with the ACE naming scheme. - Thanks to James Johnson for suggesting this. - - * ace/IOStream_T.i: Added this new file to split off the inlined - code from the header file. - - * ace/ACE.cpp (terminate_process): Remove the - ACE_UNUSED_ARG(signum) from terminate_process(). Thanks to Wei - Chiang for reporting this. - -Sun Jun 22 17:19:18 1997 David L. Levine - - * examples/Threads/process_manager.cpp (main): replaced call to - kill with terminate. - -Sat Jun 21 10:48:34 1997 Douglas C. Schmidt - - * examples/Reactor/FIFO: Added a new example that illustrates - how the Reactor and the FIFO wrappers work together. Thanks - to Johannes Gutleber for sending - this. - - * tests/Time_Service_Test.cpp (main): Replaced the kill() call - with the terminate() call since kill() isn't portable across - platforms. - - * ace/Process: The kill() method on this class was being used - incorrectly. I've created a new method called terminate() that - terminates the process. - - * ace/Process_Manager: Renamed the kill() method to terminate() - and updated the implementation to use the new - ACE::terminate_process() call. - - * ace/ACE: Moved the incorrect Win32 and Chorus implementations of - ACE_OS::kill() and put them in a new static method called - ACE::terminate_process(). - - * ace/ACE: Changed the name of the is_process_active() to the - more concise process_active(). - - * ace/OS.i: Added an implementation of ACE_OS::kill() for Chorus. - Note that this doesn't behave as UNIX does -- it kills the - process id rather than sending a signal! Thanks to Wei Chiang - for these fixes. - - * examples/Reactor/Misc/notification.cpp: Added patches to run - this example under Chorus. Thanks to Wei Chiang - for these fixes. - - * ace/Connector.cpp (create_AST): Changed the order of some - instructions in Connector::create_AST method to make it more - safer to use in multi-thread environment. Thank to Paul Han - for reporting the problem and the fix. - - * ace/Connector.cpp (create_AST): Make sure to pass in the "mask" - when calling remove_handler() so that we get the right set of - bits removed from the Reactor. - - * tests/Reactor_Timer_Test.cpp (class Time_Handler): Changed int - to long to avoid type conversion problems on 64 bit SGI. Thanks - to Fred LaBar for reporting this. - - * examples/Reactor/FIFO: Added a test program to illustrate the - interaction of the ACE Reactor with the FIFO IPC mechanism. - Thanks to Johannes Gutleber for this - test. - - * examples/Reactor/Misc/pingpong.cpp: Added support for Chorus. - Thanks to Wei Chiang for this. - - * ace: Added a number of minor changes to signal assignment - code so that ACE will compile with Tandem NonStop. Thanks - to Jan Perman for these fixes. - - * ace/config-tandem.h: Added a new config file for the - Tandem NonStop-UX 4.2MP platform. Thanks to Jan Perman - for contributing this. - - * include/makeinclude/platform_tandem.GNU: Added a new platform - file for the Tandem NonStop-UX 4.2MP platform. Thanks to - Jan Perman for contributing this. - - * ace/config-unixware-2.1.2-g++.h: Added a new config file for - UNIXWARE 2.1.2. Thanks to Ganesh Pai (gpai@voicetek.com) for - contributing this. - - * include/makeinclude/platform_unixware_g++.GNU: Updated the - UNIXWARE platform config file to work for version 2.1.2. Thanks - to Ganesh Pai (gpai@voicetek.com) for contributing this. - - * ace/Handle_Set.cpp (count_bits): Added another 0xff mask to - prevent problems with sign extension on machines with 32 bit - ints and 64 bit longs. Thanks to James Johnson for reporting - this. - - * ace/OS.h: Updated all of the ACE_DEFAULT* macros in OS.h so that - they can be overridden by #defines in the config.h file. Thanks - to Chuck Gehr for suggesting this. - -Thu Jun 19 22:20:20 1997 David L. Levine - - * ace/OS.h (VxWorks/g++ only): added horrible hack to work around - mismatch of memcmp, etc., prototypes in . - - * ace/OS.i: reordered many function definitions to avoid use - before definition. Building with g++ 2.7.2 on VxWorks 5.3.1 - revealed them. - - * ace/config-vxworks5.2-g++.h: removed ACE_HAS_STRING_CLASS and - ACE_HAS_GNU_CSTRING_H, because those aren't distributed with - Tornado 1.0.1. - -Thu Jun 19 15:31:53 1997 Darrell Brunsch - - * ace/Timer_Wheel_T.cpp: Fixed problem with expire () not - expiring timers with a timeout of the current time. This was - causing problems with Timer_Queue_Test when high profile - timers were disabled (such as Windows NT when the - environment variable ACE_SCALE_FACTOR was undefined) - -Wed Jun 18 19:43:35 1997 David L. Levine - - * ace/Signal.cpp: 'removed "const" from #define of - ACE_MAX_SIGNAL_HANDLERS because it broke Irix 6.2 build. Thanks - to Gonzalo A. Diethelm for reporting this. - - * examples/Threads/task_four.cpp (Invoker_Task::svc): fixed typo, - n_tasks instead of ntasks. - -Wed Jun 18 11:25:14 1997 Nanbor Wang - - * examples/Threads/{task_four,token}.cpp: Changed the use of - cerr/cout to ACE_DEBUG macro. Thanks to Chuck Gehr - for pointing these out. - -Tue Jun 17 15:11:09 1997 David L. Levine - - * ace/config-sunos5.5-sunc++-4.x.h, - include/makeinclude/platform_sunos5_sunc++.GNU: support enabling of - exception handling via "exceptions=1" make flag. Exception handling - does seem to work with Sun C++ 4.2, even on MP machines, if patch - 104631-02 "C++ 4.2: Jumbo Patch for C++ 4.2 on Solaris SPARC" - is applied. Please beware that enabling of exception handling can - adversely affect peformance, even if the program doesn't use it. - So, we haven't enabled it by default. Thanks to Chris Cleeland - for suggesting not to enable it by default. - - * ace/IOStream.h: added #include of "ace/config.h" so that - ACE_LACKS_ACE_IOSTREAM can be checked. Thanks to Ganesh Pai - for reporting this problem. - - * ace/ACE.cpp (get_handle): use /dev/udp instead of /dev/ip on - SVR4 machines because it has other read permission by default - (on Solaris 2.x). - - * ace/ACE.cpp (get_ip_interfaces): use auto_array_ptr instead of - auto_ptr so that the array gets deleted properly, and zero it - out to avoid unitialized memory read reports from Purify. - - * ace/Timer_Hash_T.cpp (cancel): added "[]" to delete of timer_ids - array. Purify rules. - - * Timer_Queue_Test.cppc (test_performance): added "[]" to delete of - times array. Purify rules. - -Tue Jun 17 15:31:01 1997 Steve Huston - - * ace/ACE.cpp: Fixed get_ip_interfaces (and count_interfaces) to - work properly on HP-UX (and probably other similar UNIXes). Needed - to work with non-IP interfaces present, and fixed to copy the - IP address without the fudge factor being applied. - -Tue Jun 17 14:02:01 1997 Nanbor Wang - - * ace/{Free_List.h,Free_List.cpp,Timer_Queue_T.h}: Added #include - "ace/Synch_T.h" to Free_List.h and removed related inclusion - from Free_List.cpp and Timer_Queue_T.h. Thanks to - Jack Erickson for reporting this problem. - -Tue Jun 17 09:41:48 1997 David L. Levine - - * tests/Enum_Interfaces_Test.cpp: changed name of log file to match - the program name, so that the one-button test can easily find it. - -Tue Jun 17 04:58:38 1997 Nanbor Wang - - * ace/Timer_Queue_T.h: Added include file "ace/Synch_T.h" to avoid - compilation errors in SC 4.1. We didn't notice this because - most of us have moved to SC 4.2. Don't know why this didn't - cause any problem in SC 4.2. Thanks to Jack Erickson - for reporting this bug. - -Mon Jun 16 22:25:18 1997 Steve Huston - - * ace/ACE.cpp: Fixed conditional compiles to compile the - interface counting code for HP - it reports 0 interfaces, - so it needs more debugging still. - - * include/makeinclude/platform_hpux_aCC.GNU: added -g to link - command for building shared library. - - * tests/Buffer_Stream_Test.cpp: fixes to execute correctly and only - fail assertions on real failures. - -Mon Jun 16 19:05:13 1997 Steve Huston - - * ace/Free_List.cpp: added #include ace/Synch.h, needed by - Free_List.i. Fixes compile errors on HP-UX. - -Mon Jun 16 10:59:55 1997 Darrell Brunsch - - * ace/Timer_Wheel_T.cpp: Changed expire () so it doesn't - access past the end of an array when it finds nothing to - expire. Thanks to Norbert Rapp - for catching this. - -Sun Jun 15 03:44:21 1997 Nanbor Wang - - * examples/Threads/thread_specific.cpp (worker): Changed the - output of diagnostics from using cout to using printf. Also - corrected several portability problems. Thanks for Chuck Gehr - for pointing these out. - - * ace/OS.i (thread_mutex_trylock): Corrected the code for NT. Now - this function returns 0 if lock is obtained and -1 otherwise. - Thanks to Robert V. Head for noticing this. - - * performance-tests/Synch-Benchmarks/Synch_Tests.{mdp.mak}: - Added project workspace and makefile for NT to this directory. - - * performance-tests/Synch-Benchmarks/svc.conf: - * performance-tests/Synch-Benchmarks/{Options,Benchmark}.h: - * performance-tests/Synch-Benchmarks/*.cpp: Reworked these - files to have them compiled on NT. - -Sat Jun 14 03:53:13 1997 Nanbor Wang - - * performance-tests/Synch-Benchmarks/pipe_proc_test.cpp (class - Pipe_Proc_Test): Changed the type of pipe_handles[] from int to - ACE_HANDLE. - - * performance-tests/Synch-Benchmarks/sysvsema_test.cpp: When - creating the semaphore, explicitly cast the key value to (key_t) - since NT couldn't handle the conversion. - -Fri Jun 13 19:32:03 1997 Steve Huston - - * ace/ACE.cpp: Fixed count_interfaces to compile on non-SVR4 - systems such as HP-UX. Not tested yet. - - * ace/OS.i: Fixed mis-arranged conditional compile for HP-UX in - asctime_r. - -Fri Jun 13 03:13:51 1997 Nanbor Wang - - * ace/config-win32-common.h: Added a "pragma comment" directive to - direct MSVC to link in mswsock.lib automatically. Thanks to - Bill Tang for reminding this. - - * ace/ace.{mak,mdp}: Removed explicit inclusion of mswsock.lib. - Thanks to Bill Tang for reminding this. - - * examples/OS/Process/Process.{mdp,mak}: For some reasons, I got - an "unknown link error, please refer to documentation for - appropriate technical supports" when building this example on NT - (didn't help much, did it?) Reassigning the linked library - solved the problem. - - * examples/OS/Process/process.cpp: Updated class name - ACE_ProcessEX to ACE_Process because ACE_ProcessEX no longer - exists. Also, all exec'ed programs' absolute names have been - changed and let the environment variable "path" to decide which - program(s) to exec. - -Thu Jun 12 15:48:16 1997 Chris Cleeland - - * ace/ACE.cpp (get_ip_interfaces): Corrected code in the BSDish - section so that it at least compiles on Linux. I haven't tested - this AT ALL. - - * ace/Timer_Queue_T.cpp (calculate_timeout): When this was called - with the default argument from handle_events(), max_timeout was - passed as zero, which would cause a SEGV when attempts were made - to deref it. Added protection to simply return a zero ptr in that - case. - -Thu Jun 12 13:18:03 1997 Steve Huston - - * ace/OS.{h,i,cpp}: Changes for HP-UX 10 primarily. Threads - support for DCE Draft 4 threads (bundled with HP-UX 10). - Correct usage of reentrant C library functions for HP-UX. - - * ace/OS.i: Changed timeout argument to 2nd select function to - allow the compiler to pick a conversion operator. As it was, - HP compiler would not compile it. - - * ace/Service_Object.cpp: When deleting the service memory pointed - to by a void *, use "operator delete" rather than deleting a void, - which is prohibited by the current ANSI C++ draft. - - * ace/config-hpux-10.x.h: This is now a compiler-independent header - file, and is included by config-hpux-10.x-hpc++.h. This file - contains all correct settings for HP-UX 10.x, and compiler-specific - config files should use this - see config-hpux-10.x-hpc++.h. - - * ace/config-hpux-10.x-hpc++.h: New config file for either of the HP - compilers (HP C++ or HP aC++). It figures it out internally, and - uses config-hpux-10.x.h for OS details. - - * include/makeinclude/rules.lib.GNU: Allow for doing a PRELIB step - when building a shared library, and not using .shobj/*.so files. - This allows HP aC++ to close all template instantiations for the - entire library at once, rather than separately, reducing the - size of the resultant library significantly. - - * include/makeinclude/platform_hpux-aCC.GNU: build libraries with - templates instantiated all at once. Compile with flags for using - the reentrant versions of C library functions. - -Wed Jun 11 15:20:15 1997 Nanbor Wang - - * ace/Timer_Queue_T.{h,cpp} (calculate_timeout): Changed the - second parameter the_timeout from a ref. to a ptr. to a ptr in - order to avoid compilation warning. Since the pointer itself is - not modified within the function, it's ok to change this. - - * ace/Reactor.cpp (wait_for_multiple_events): Added ACE_Time_Value - the_timeout as a place holder for timeout value when - max_wait_time is NULL. Otherwise, - Timer_Queue::calculate_timeout won't process the timer queue - even it's not empty. - -Wed Jun 11 11:14:29 1997 James C Hu - - * include/makeinclude/platform_mvs.GNU (RANLIB): Requested change - from Check Gehr (gehr@sweng.stortek.com), RANLIB = echo - -Wed Jun 11 04:47:52 1997 Nanbor Wang - - * ACE.cpp (count_interfaces): Two bugs were corrected here. Both - were typo. - - * tests/Timer_Queue_Test.cpp: Added include file ace/Timer_Queue.h - -Tue Jun 10 16:02:52 1997 Darrell Brunsch - - * ace/SString.{h,cpp}: Changed the parameters in CString::substring() - and WString::substring(). Removed const and changed length to a - ssize_t because of signed/unsigned comparison warnings. - - * ace/ACE.cpp: Changed a loop variable in get_ip_interfaces() to - a size_t because of a signed/unsigned comparison warning. - -Tue Jun 10 12:47:49 1997 - - * ace/SString.cpp (operator = and operator +=): There were two - bugs here. operator= forgot to tack on the NULL terminator - after the memcpy() and operator+= appended the second string - incorrectly. Thanks to Michael R. MacFaden for - pointing these out. - -Tue Jun 10 12:16:04 1997 Darrell Brunsch - - * ace/Makefile: Updated to reflect newly added files - - * ace/Proactor.cpp: Removed template specializations. - - * ace/Reactor.cpp: Removed some template specializations. - - * ace/Timer_Hash.h: Added an include for Timer_Heap. - - * ace/Timer_Hash_T.cpp: Changed a reference to ACE_Timer_Node - to ACE_Timer_Node_T - - * ace/Timer_{Hash,Heap,List,Wheel}_T.h: Changed #include - "ace/Timer_{...}.h" to "ace/Timer_{...}_T.h". - - * ace/Timer_Queue.cpp: Removed some template specializations. - - * ace/Timer_Queue.h: Removed the including of Timer_Queue.cpp - since there are no templates to warrant it. - - * ace/Timer_{Hash,Heap,List,Wheel}.cpp: Added these and put the - appropriate template specializations here. - -Tue Jun 10 02:08:25 1997 Nanbor Wang - - * examples/Log_Msg/README: Revised. - - * examples/Log_Msg/test_log_msg.cpp: Revised program output so - that it's clearer to explain. - -Mon Jun 09 15:46:41 1997 - - * OS.i (mutex_lock): When WaitForSingleObject returns - WAIT_ABANDONED, the lock is held by the calling thread. - Therefore we must return 0 from the method. I have added a new - mutex_lock() method that takes an extra "abandoned" parameter. - This is set wehen the mutex is abandoned. Thanks to Dieter - Quehl for pointing this out. - -Mon Jun 9 02:31:36 1997 Nanbor Wang - - * tests/Sigset_Ops_Test.cpp (main): Comment out testing of invalid - sigset checking for most platforms don't seem to support it. - Perhaps the ACE's sigset* functions should remove this check for - compatibility. - -Sun Jun 8 11:39:06 1997 Douglas C. Schmidt - - * ace/OS.i (set): There was a typo here where - - ((long) (d - (double) l)) * 1000000 - - should be - - (long) ((d - (double) l) * 1000000) - - since otherwise the values are always 0. Thanks to Jim Crossley - for reporting this. - - * tests/Enum_Interfaces_Test.cpp (main): Changed ACE_UINT32 to - size_t to be consistent with the class definition. Thanks to - Nanbor Wang for reporting this. - - * ace/Token.h: Added some no-op method for ACE_Token so that it - will still compile even if ACE_HAS_THREADS isn't defined. - -Sun Jun 8 01:37:52 1997 Nanbor Wang - - * examples/Log_Msg/README: Added a README file. - - * tests/Sigset_Ops_Test.cpp (main): bug fixed. - - -Sat Jun 7 16:40:22 1997 Douglas C. Schmidt - - * ace/SString.h (string.): Added a substring() member function to - ACE_*String classes. Thanks to Michael MacFaden - for contributing this. - - * ace/ACE: Added a new method called - - int get_ip_interfaces(count, address_array) - - which will query the OS kernel for the IP addresses for each network - interface found and return a count and array of ACE_INET_Addr objects. - The reason for adding this method is that most client apps - assume gethostbyname(uname|gethostname)) will work. If the - nameservices is misconfigured/broken or the machine is multi-homed, - the client apps have alot of coding to do to figure out if an inteface - represents a local address or not. On UNIX, this includes - the loopback addr. On NT, the loopback addr is not added - (but may change the impl if others think this useful). - Thanks to Michael MacFaden for contributing - this. - - * ace/Synch[_T]: Changed all the classes so that internal instance - variables are now protected rather than private. This allows - greater flexibility if there's a need to subclass - (which shouldn't occur very much...). Thanks to - Reza Roodsari for suggesting this. - -Fri Jun 06 21:30:57 1997 David L. Levine - - * ace/Timer_{Hash,Wheel}_T.cpp: added #includes of - ace/High_Res_Timer.h. Also, in Timer_Wheel_T.cpp (cancel), - moved the declaration of "i" out of the loop because it's - used in two different loops. - -Fri Jun 06 17:11:13 1997 - - * OS.i (sleep): If ACE_POLL_IS_BROKEN is defined, use select() to - do micro second sleeps. - - * ace/CORBA_Handler.h (ACE_CORBA_*): The new version of Orbix - (2.2C01) on NT finally supports namespaces. So now the macros - ACE_CORBA_n need to be defined using the "::" and not the "_" - for NT if the new Orbix is being used. Thanks to John Morey - (jmorey@tbi.com) for the changes. - -Fri Jun 06 02:16:08 1997 - - * Sigset_Ops_Test.cpp: Added to test correct implementation of - sigset manipulating functions. - - * run_tests.{sh,bat}, Makefile: Added Sigset_Ops_Test. - -Thu Jun 05 20:32:39 1997 David L. Levine - - * tests/Timer_Queue_Test.cpp (randomize_array): removed static - qualifier now that it's a template function. It caused a warning - with Sun C++. - -Thu Jun 05 18:28:36 1997 - - * ace/Asynch_Acceptor.cpp (open): The Proactor was beening passed - implicitly. I have made this explicit by making this a parameter - to open. Thanks to MehulM@spa-marketing.com (Mehul Mahimtura) - for this. - -Thu Jun 5 12:06:45 1997 Chris Cleeland - - * ace/Timer_Queue_T.h (ACE_Timer_Queue_T): Overloaded - calculate_timeout with a version that accepts a pointer to - storage for the ACE_Time_Value as an argument. This has a small - performance win over the other b/c it does not take a lock. The - change was made after examining Quantify output for TAO and - observing that this lock caused - Reactor::wait_for_multiple_events() to consume a substantial - percentage of processing time. - - * ace/Reactor.cpp (wait_for_multiple_events): This now uses a - different version of calculate_timeout() that doesn't require - taking a lock. - -Thu Jun 05 08:48:49 1997 David L. Levine - - * ace/Reactor.cpp: added template specializations. - - * ace/Timer_Queue_T.cpp (ACE_Timer_Queue_T ctor): rearranged - initializers to match declaration order. - -Thu Jun 5 06:08:06 1997 Nanbor Wang - - * ace/OS.i (sigaddset, sigdelset, sigismember): NSIG itself is - invalid and must be excluded. - -Wed Jun 04 21:24:35 1997 David L. Levine - - * ace/config-sunos5.5-g++.h: fixed typo: #define instead of - #defined ACE_HAS_CLOCK_GETTIME. - - * ace/config-sunos5.5-sunc++*.h: Combined - config-sunos5.5-sunc++-4.x.h and config-sunos5.5-sunc++-4.1.h, - and removed the latter. The Orbix config file now #includes - config-sunos5.5-sunc++-4.x.h and adds its differences. - - * include/makeinclude/platform_sunos5_sunc++*.GNU: Combined - platform_sunos5_sunc++.GNU and platform_sunos5_sunc++-4.1.GNU, - and removed the latter. platform_sunos5_sunc++_orbix.GNU now - includes the non-orbix file and adds its differences. Also, - added optional CC -fast support. To enable, just add "fast=1" - to your "make" invocation. - -Wed Jun 04 12:21:41 1997 - - * tests: Made the following config files consistent: - UNIXclerk.conf UNIXtokens.conf Win32clerk.conf Win32server.conf - Win32tokens.conf - - * ace/OS.h: Made sure that some #defines were guarded for - redefinition specially for the Bristol (that provides Win32 API - on AIX) headers. Thanks to Rich Christy (rchristy@cccis.com) for - suggesting these changes. - - * ace/Handle_Set.h: Changed the type of handle_index from int to - u_int on Win32. Thanks to Jack Erickson (jack@cibc.com) for - suggesting this. - - * ace/FILE.h (ACE_FILE_STREAM): Fixed this #define from - ACE_FILE_Stream to ACE_FILE_IO. - -Tue Jun 3 21:23:48 1997 Douglas C. Schmidt - - * ace/Timer_{Queue,Hash}: Fixed some uses of template typedefs - since GCC is too lame to handle them correctly. Therefore, I - had to expand TIMER_QUEUE into the ugly fully expanded name. - - * ace/Timer_Queue_T.cpp: Moved the implementation of - ACE_Event_Handler_Handle_Timeout_Upcall from Timer_Queue.* into - Timer_Queue_T.* since only template classes should go into *_T.* - files. - -Tue Jun 3 18:16:02 1997 Darrell Brunsch - - * ace/Timer_Queue.*: - - Templatized ACE_Event_Handler_Handle_Timeout_Upcall with LOCK - - Added deletion() to Upcall Functors. This gets called if there - are any nodes in a queue and the queue's destructor is called - - * ace/Timer_Queue_T.*: - - Changed iterator accessor to public - - Removed two template parameters from ACE_Timer_Node_T so only - EVENT is left. Added accessors instead of using friendships, - and deleted the constructor (use set() instead) - - Changed iterator into a general iterator (with first(), next(), - isdone() and item () methods) - - Added remove_first () method that removes and returns the - earliest timer in the queue - - Added ACE_Free_List support - - * ace/Timer_Heap*: - - Added upcall functor deletion() support - - Added remove_first () method that removes and returns the - earliest timer in the queue - - * ace/Timer_List*: - - Changed to double-linked circular list and changed the timer_id - to be a pointer to the node (like it is in Timer Wheel and Timer - Hash) - - Added upcall functor deletion() support - - Added remove_first () method that removes and returns the - earliest timer in the queue - - Added check for timer_id of -1 so we don't try to delete the - error code if it is passed into cancel - - Changed Timer_List_Iterator_T constructor parameter from list to - listParm to resolve a conflict with STL. Thanks to Todd - Barkalow for this fix - - * ace/Timer_Wheel*: - Added HighRes timer support - - Added upcall functor deletion() support - - Added earliest_pos_ variable to keep track of the list with - the earliest node - - Created an expire that is specialized for ACE_Timer_Wheel - - Added remove_first () method that removes and returns the - earliest timer in the queue - - Added check for timer_id of -1 so we don't try to delete the - error code if it is passed into cancel - - * ace/Timer_Hash*: - - Added Timer Hash Queue - This is a class that can take another - timer queue type (Timer List, Timer Heap...) as a template - parameter (BUCKET) and then do an intermediate hash of a timer - to determine which queue among a table of timer queues to put - the timer into. ACE_Timer_Hash is typedefed to the Timer List - version and ACE_Timer_Hash_Heap is typedefed to the Timer Heap - version - - Added HighRes timer support - - Added upcall functor deletion() support - - Created an expire that is specialized for ACE_Timer_Hash - - Added remove_first () method that removes and returns the - earliest timer in the queue - - Added check for timer_id of -1 so we don't try to delete the - error code if it is passed into cancel - - * ace/Free_List.* - - Added ACE_Free_List and ACE_Locked_Free_List. These - are used to maintain free lists of nodes. ACE_Free_List is a - abstract class where ACE_Locked_Free_List is a concrete one that - has a mutex parameter (LOCK). - - * ace/OS.h: - - Added ACE_DEFAULT_TIMER_HASH_TABLE_SIZE constant - - Added ACE_DEFAULT_FREE_LIST_* constants - - * ace/Proactor.*: - - Added deletion() to Upcall Functors. This gets called if there - are any nodes in a queue and the queue's destructor is called. - - * tests/Timer_Queue_Test.cpp: - - Added HighRes timer support - - Changed the array of timer queues into a list (to more easily - add/remove/comment out an entry) - - Added some more performance tests with randomization - -Tue Jun 3 00:26:06 1997 Douglas C. Schmidt - - * ace/OS.h: Changed the access protection for ACE_cond_t, - ACE_sema_t, ACE_event_t, and ACE_rwlock_t so that it is - protected rather than private. In addition, added ACE_Export to - all of these classes so that they are visible outside of a DLL. - Thanks to Ivan Murphy for these suggestions. - - * ace/OS.h: Changed the value of ACE_MAX_DEFAULT_PORT on Win32 to - 0 in order to work around a nasty NTism... Thanks to Jon Biggar - for reporting this. - -Mon Jun 2 16:29:48 1997 James C Hu - - * ace/Process.*: - - Fixed ACE_Process::spawn to close descriptors after having - been duped. - - Fixed ACE_Process::spawn to exit () after an error is - encountered in the child process, rather than returning. - - Fixed ACE_Process_Options::set_handles to duplicate handles - that are passed in, and then to close them in the destructor. - -Sun Jun 01 22:21:28 1997 David L. Levine - - * examples/Threads/tss1.cpp: made some globals non-static or - const so that tss1 will link with Sun C++ 4.2 -O3. I don't - know what the problem is; it only shows up with optimization - enabled. These fixes work around it. - -Sun Jun 01 20:29:20 1997 James CE Johnson - - * ace/IOStream*: - - removed the old 4/5/97 comments - - made operator>>, << on QuotedString a template - - This last makes QuotedString much more functional. As - templated functions, the QuotedString can now be used on - other iostream-type objects. The previous method of - defining the function only for the type of ACE_IOStream - being created was didn't provide this flexibility. - -Sat May 31 07:01:22 1997 Douglas C. Schmidt - - * ace/Log_Msg.cpp (open): To avoid handle leaks, we need to - shutdown the message_queue before trying to reopen it. Thanks - to Per Andersson for this suggestion. - - * include/makeinclude/platform_osf1_4.0.GNU: Added a new platform - config file. Thanks to James Johnson for this. - -Fri May 30 16:25:25 1997 - - * CPP-inclient.cpp (main): Properly compare to the "quit" - string. Thanks to "Andre Arpin" for - reporting this. - - * tests/UPIPE_SAP_Test.cpp (connector): Changed the eof marker in - the strings. - -Fri May 30 14:04:44 1997 James C Hu - - * include/makeinclude/platform_irix6.4_sgic++.GNU: added to make - things compile on latest SGI machines. Removed +pp and -woff... - flags from the CCFLAGS variable. Added new -woff flags to hide - other warnings. - - * ace/config-irix6.4-sgic++*.h: copied corresponding configs from - irix6.2 and removed ACE_HAS_SVR4_TIME, since this seems to be no - longer true of irix6.4. - -Fri May 30 02:39:39 1997 - - * ace/Connector.cpp - - (create_AST): On Win32, added the except mask when registering - with the Reactor to find out when asynchronous connects - complete. - - (Svc_Tuple): Made sure that the default value for the timer_id - in AST is not 0. 0 is a valid timer_id. I have changed this to - be -1. - - (handle_exception): Added this method. On - Win32, the except mask must also be set for asynchronous - connects. - -Thu May 29 21:28:25 1997 - - * Process.*: Removed the ACE_Process_Old class. - - * Local_Tokens_T.*: Removed all these files. They have not been - used by the token library for some time. They were mistakenly - put in the release. - -Thu May 29 02:00:14 1997 - - * ACE.cpp (is_process_active): Added this method which checks if a - process is still alive. Thanks to Chris (CLahey@cccis.com) for - this code. - - * ace/OS.i (kill): Changed PROCESS_ALL_ACCESS to - PROCESS_TERMINATE. - - * ace/ACE.cpp (bind_port): Changed the implementation of this - method such that a recently used port is not used again in the - next call to this method on Win32, i.e., upper limit is - decreased even in the successful case. This fixes the problem on - Win32 where binding to a recently used port works but the - following connect fails. - - * ace/Acceptor.cpp (close): Added a close method that allows us - to shutdown the Acceptor (without having to destroy it). - - * ace/Connector.cpp (close): Added a close method that allows us - to shutdown the Connector (without having to destroy it). - - * apps/Gateway/Gateway/Proxy_Handler_Connector.cpp - - (handle_close): Removed this method. This code seemed to be - duplicating the code in the handle_close of the proxies. - - (initiate_connection): Removed the code that did - rescheduling. The proxies are responsible for this. - - * apps/Gateway/Gateway/Event_Channel.cpp - - (initiate_proxy_connection): Must *always* use the correct synch - options while connecting. - - (reinitiate_proxy_connection): Always register for timeouts if - we are not disconnecting. This allows us to remove duplicated - logic in Proxy_Handler_Connector. - - The new logic of close() allows us to remove the code that use - to remove the proxy from the map to prevent double deletes. - - (close): Changed the shutdown logic to: Tell everyone that the - spaceship is here (behind the comet), close down the connector, - close down the acceptor, tell everyone that it is now time to - commit suicide. - - * apps/Gateway/Gateway/Proxy_Handler.cpp (handle_timeout): Must - return 0, or else the timer queue will cancel the handler and - *all* its timeouts. - - * apps/Gateway/Peer/svc.conf,Makefile: We now generate a Peer - shared library (instead of just an .so). The svc.conf was - changed to reflect this. - - * tests/UPIPE_SAP_Test.cpp: Fixed output message. - - * Handle_Set.i (operator): Fixed typo. - -Thu May 29 11:09:52 1997 David L. Levine - - * include/makeinclude/rules.local.GNU: check for directory - write permission before attempting to install. This helps - support shared ACE workspaces. There are two easy ways - to not install "private" libraries in the shared workspace: - 1) remove write permission from $WRAPPER_ROOT/ace, or - 2) add "INSTALL=" to invocations of "make". - -Thu May 29 06:07:18 1997 Douglas C. Schmidt - - * ace/OS.i (thr_join): Revised some code in the #ifdef'd out - version of ACE_OS::thr_join() so that it will compile correctly. - Note that this code isn't currently used, but someday it will - be. Thanks to Hamutal Yanay for reporting this. - -Wed May 28 16:37:57 1997 David L. Levine - - * ace/OS.{h,i} (ACE_Time_Value): added default constructor, - which does not call normalize (). ACE_Time_Value::normalize () - was showing up as a relatively minor, but signficant hot - spot in Event Channel latency tests. - -Wed May 28 16:02:53 1997 James C Hu - - * ace/OS.i: Changes to strdup and getpid for CHORUS, as per Wei - Chiang's suggestions. - -Tue May 27 18:26:51 1997 Douglas C. Schmidt - - * ace/config-hpux-10.x-decthreads.h: Added support for HP/UX 10.10 - with DCE threads. Thanks to Shankar Krishnamoorthy - for these fixes. - - * ace/Local_Tokens_T.h: #if def'd out all of this file since it - doesn't seem to be used anymore. Thanks to Shankar - Krishnamoorthy for reporting this. - - * ace/Makefile (TEMPLATE_FILES): Removed Local_Tokens_T since it - doesn't appear to be used anywhere. - -Tue May 27 18:47:34 1997 James C Hu - - * tests/*.cpp: Various changes for EBCIDIC compatibility. - Thanks to Chuck Gehr for pointing out the need for this! - - * tests/test_config.h: Added ACE_ALPHABET to aid a-z sending and - comparing. - -Tue May 27 15:03:25 1997 David L. Levine - - * tests/Future_Test.cpp: added ACE_Future{_Rep} template - specializations. - -Tue May 27 07:49:03 1997 Douglas C. Schmidt - - * ace/Future.cpp: Made a few minor reformatting changes to Per's - new Future enhancements. - -Tue May 27 14:19:14 1997 Per Andersson - - * ace/Future: Fixed self assignment bug in ACE_Future<>::operator=(). - Fixed bug in ACE_Future<>::set(). It is now possible to do a - ACE_Future<>::set() followed by a ACE_Future<>::get() without - hanging forever. - - Moved all handling of the ACE_Future_Rep<> reference count - into three new static ACE_Future_Rep<> member functions, - create, attach, assign and detach. - - Removed one mutex from ACE_Future_Rep<> by changing the - reference count from an ACE_Atomic_Op into a plain - int. The ACE_Future_Rep<>::value_ready_mutex_ mutex is - instead used for serializing changes to the reference count. - (ACE_Future_Rep<>::attach, ACE_Future_Rep<>::detach()) - - Removed mutex from ACE_Future<> the serialization is - performed by the ACE_Future_Rep<>::attach, - ACE_Future_Rep<>::detach() and ACE_Future_Rep<>::assign() - functions. - - Changed the ACE_Future<> default constructor to always - create a ACE_Future_Rep<> - - * tests/Future_Test.cpp: Added test case for - ACE_Future<>::set() followed by ACE_Future<>::get(). Added - test for working ACE_Future::operator=(). The test is not - fool proof but it crashes or hangs the test process with the - old ACE_Future<> implementation. - -Mon May 26 14:19:14 1997 James C Hu - - * ace/OS.{h,i}: Fixed difftime implementation for cases where - systems implement it as a macro. Fixed tempnam by adding - ACE_LACKS_TEMPNAM. - -Sun May 25 11:36:22 1997 Douglas C. Schmidt - - * examples/Reactor/Misc: Removed test_handle_set.cpp since it - is now completed subsumed by tests/Handle_Set_Test.cpp. - - * tests/Handle_Set_Test.cpp: Updated the test of - the ACE_Handle_Set so that it shows how fast the iterator works. - - * ace/Reactor.cpp: Updated the Reactor to use the new - ACE_Handle_Set_Iterator (whic no longer requires calling - operator++ to advance the iterator). - - * ace/Handle_Set: Rewrote the ACE_Handle_Set_Iterator to speed it up. - The result seems to be about 15% faster than the original. - - * ace/OS.h: Changed the MSB_MASK static constant into a macro and - moved it from Handle_Set.cpp into OS.h, changing its name to - ACE_MSB_MASK. - - * ace/Sched_Params.cpp (priority_max): Added another #ifdef for - Chorus. Thanks to Wei Chiang for reporting this. - - * include/makeinclude/platform_sunos5_sunc++_orbix.GNU: added -l - in front of orbixmt. Thanks to Wei Chiang for pointing this - out. - - * ace/ACE.cpp: Changed the default port for NT so that it starts - at 65279 rather than 65535. Hopefully, this will fix that - annoying bug that has been plaguing us on NT 4.0 for months. - Thanks to Goran Lowkrantz - for reporting this. - -Sat May 24 23:42:32 1997 David L. Levine - - * performance-tests/Misc/test_naming.cpp (do_testing): replaced - strlen () calls in character array size with constant expression. - -Sat May 24 12:07:48 1997 Douglas C. Schmidt - - * Released version 4.2.1 for testing. - - * ace/Reactor.cpp (bind): Fixed a stupid typo where I was using - the ACE_REACTOR_EVENT_HANDLER macro instead of the - ACE_REACTOR_HANDLE macro. Thanks to Detlef for reporting this. - - * ace/OS.i: Added a new macro called ACE_HAS_THR_MINSTACK to deal - with weirdo mangling of names by Tandem. Thanks to Jan Perman - for reporting this. - - * ace/OS.h: Added a new macro ACE_LACKS_PRI_T for those platforms - using STHREADS (e.g., Tandem NonStop OS) that don't have pri_t - defined. Thanks to Jan Perman for - reporting this. - - * ace/Connector.cpp (connect): Make sure to save/restore errno - since svc_handler->close() may change it. Thanks to Michael - Hartman for reporting this. - - * include/makeinclude/platform_chorus.GNU: Added a new platform - macros file for Chorus. Thanks to Wei Chang for this. - - * ace/OS.cpp (sched_params): Reordered the #ifdefs so that Chorus - comes first. - - * ace/OS.i (sleep): If the platform defines ACE_HAS_CLOCK_GETTIME - then we'll use the nanosleep() method rather than sleep(). - - * ace/OS.h: disabled THR_NEW_LWP for Chorus. Thanks to Wei Chang - for reporting this. - - * ace/Sched_Params.cpp: ACE_SCHED_OTHER and ACE_SCHED_RR have the - same value on Chorus. Thanks to Wei Chang for reporting this. - -Sat May 24 09:21:08 1997 David L. Levine - - * netsvcs/lib/Server_Logging_Handler.cpp: protected second - ACE_Svc_Handler specialization for case that ACE_HAS_THREADS, - when ACE_HAS_TLI. It had gotten lost in the last pass of - that module. Thanks to Sandro Doro - for reporting this problem. - -Sat May 24 03:19:38 1997 Nanbor Wang - - * ace/OS.i (sigaddset, sigdelset, sigemptyset, sigfillset, - sigismember): Modified the implementation of these function so - as to conform with POSIX standard. Basically all functions do - the same things they did but more conservative protections are - added. The modified semantic becomes, - - sigemptyset, sigfillset, sigaddset, sigdelset: return 0 if - succeed, -1 otherwise. - sigismember: returns 0 if signum is not in the set, 1 if signum - is in the set, and -1 if error occurs. - - If error occured, errno will be set to one of the following - value: - EFAULT: sigset is not a valid address. - EINVAL: signum is not a valid signal number. - - Notice that, so far, this is for NT only. - -Sat May 24 01:53:22 1997 James C Hu - - * performance-tests/Misc/test_naming.cpp (do_testing): Thanks to - Sandro Doro, squashed a bug where we were trying to concatenate - onto a string constant. - -Fri May 23 01:01:01 1997 Douglas C. Schmidt - - * ace/config-hpux-9.x.h: Added - - #define ACE_HAS_BROKEN_ENUMS - #define ACE_HAS_IP_MULTICAST - #define ACE_LACKS_GETPGID - - Thanks to Neil Cohen for reporting these. - - * ace/Thread_Manager.h: Made the private methods and data members - protected so that subclasses can extend it. Thanks to Hamutal - Yanay for this suggestion. - -Fri May 23 21:27:05 1997 David L. Levine - - * ace/Process.{h,cpp} (env_argv): added "const" to char * type in - return type, for argument compatibility in call to ACE_OS::execve (). - - * ace/Process.cpp (spawn): removed unreachable return statement at - end of function. - - Thanks to Dave Mayerhoefer for - reporting the above two problems. - - * ace/{IOStream*,Makefile}: Split out templates into - ace/IOStream_T.{h,cpp} files. This way, automatic template - instantiation systems that require templates to be in separate - files, such as on Irix 6.2, will be able to build IOStream_Test - and the ACE_IOStream examples without warnings. (The - ACE_IOSTREAM_BUILDING_TEMPLATE macro that did this only worked - if ACE_TEMPLATES_REQUIRE_SOURCE was defined. It's no longer - needed with the separate template files.) - - * tests/IOStream_Test.cpp, - examples/IOStream/client/iostream_client.cpp, - examples/IOStream/server/iostream_server.cpp: - swapped ACE_Streambuf and ACE_Streambuf_T class names so that - the template class has the "_T". And renamed ACE_IOStream_T - for consistency. - - * ace/{IOStream.*,README}, - tests/IOStream_Test.cpp, - examples/IOStream/client/iostream_client.cpp, - examples/IOStream/server/iostream_server.cpp, - config-hpux-9.x*.h: - Added ACE_LACKS_ACE_IOSTREAM protection - so that these can easily be built on platforms that have - trouble with ACE_IOStream. - - * Priority_Task_Test.cpp: removed close () because it didn't really - close the Task, and added printout to main () after all tasks have - been spawned to help debug non-termination. - - * ace/OS.cpp: (thr_create, with STHREADS only): *thr_handle was - used but *thr_id had been set by ::thr_create, so threads never - got activated. Fixed by using *thr_id instead of *thr_handle - in the calls to ACE_OS::thr_setprio and ACE_OS::continue. - Thanks to Jan Perman for reporting - this problem. - -Fri May 23 20:12:33 1997 James C Hu - - * tests/SV_Shared_Memory_Test.cpp: Thanks to Chuck Gehr, fixed - ASCII dependent code in the parent and child routines. - -Fri May 23 02:58:28 1997 Nanbor Wang - - * ace/OS.i (dlsym): Added ACE_USES_ASM_SYMBOL_IN_DLSYM, support - for platforms (FreeBSD) which use assembly symbols instead of C - symbols in dlsym (). - - * ace/config-freebsd[-pthread].h: Added flag ACE_HAS_CHARPTR_DL - and ACE_USES_ASM_SYMBOL_IN_DLSYM. - -Thu May 22 08:14:21 1997 David L. Levine - - * tests/Tokens_Test.cpp: added deletes to avoid memory leaks. - -Wed May 21 16:15:48 1997 David L. Levine - - * ace/{config-irix6.2*.h,README}: removed ACE_LACKS_IOSTREAM_SETGET - because tests won't build with it. Also, added - ACE_LACKS_SIGNED_CHAR. - - * ace/IOStream.h: removed "const" from PUT_PROT of - u_char * and void *. This should allow the IOStream test - and examples to build and run on Irix platforms. Thanks - to Torbjorn Lindgren and Amos Shapira - for reporting this, and to James Hu for - helping fix it. - - * ace/{OS.cpp,Sched_Params.cp} (Solaris only): use 0 min priority - again, with workaround in ACE_OS::thr_create to not use - ::pthread_attr_setschedparam () if the priority is 0. Instead, - the priority of the newly created thread is set to 0 (if it - wasn't created with 0) after the thread is created, with - ::pthread_setschedparam (). - -Wed May 21 15:23:37 1997 Chris Cleeland - - * ace/Strategies_T.* (ACE_Hash_Addr): Eliminated the ADDR_T - template parameter as a base class. It is now a wholly-contained - member of the ACE_Hash_Addr<> with conversion operators. - This caused problems on certain compilers, notably HP-UX. - -Wed May 21 14:13:36 1997 James C Hu - - * ace/OS.{h,i} (difftime): Added implementation to ACE_OS. I - don't expect any problems since it is in ANSI. - - * ace/OS.{h,i} (tempnam): Added implementation to ACE_OS. - -Wed May 21 01:17:40 1997 Douglas C. Schmidt - - * Released version 4.2. - - * ace/Acceptor.cpp (activate_svc_handler ): Removed an unnecessary - return 0. Thanks to Amos Shapira for reporting - this. - - * ace/Message_Block.cpp (release): I believe that - ACE_Message_Block::release() should return something other than - 0, i.e., it should return the result of release_i(). Thanks to - Amos Shapira for reporting this. - -Wed May 21 01:17:40 1997 Per Andersson - - * Moved most code from netsvcs/lib/Server_Logging_Handler.* to - Server_Logging_Handler_T.*. Made template out of - ACE_Server_Logging_Handler and ACE_Server_Logging_Acceptor. - Factorised out as much as possible to reduce code - duplication. The log record processing was moved from - ACE_Server_Logging_Handler it should now be handled by the - Log_Message_Receiver class. It is now possible to change - how log records processed without changing code in - Server_Logging_Handler* and it is possible to have several - Server_Logging_Handlers that processes log records - in different ways without duplicating all the server code. - All that is needed is to write a new/change - Log_Message_Receiver and instantiate a couple of templates. - - * netsvcs/lib/Server_Logging_Handler.h added lots of typedefs - for making template instantiations easier. - - * netsvcs/lib/Server_Logging_Handler.h addad lots template - instatiations, there are now 58 all together. - - * Added netsvc/lib/Log_Message_Receiver.{h,cpp}, implementstwo - simple log message receivers that prints the log record to - stderr. - -Tue May 20 13:50:17 1997 Douglas C. Schmidt - - * ace/config-hpux-9.x.h: Added a #define for ACE_HAS_BROKEN_ENUM, - ACE_HAS_IP_MULTICAST, and ACE_LACKS_GETPGID. Thanks to Neil - Cohen for reporting this. - - * include/makeinclude/platform_sunos5_sunc++_orbix.GNU: Replaced - the use of -lITsrv with -lorbixmt. Thanks to Wei Chiang for - this. - - * include/makeinclude/platform_osf1_3.2.GNU: Make sure that all - the template repositories are in the same directory to work - around problems with the C++ compiler. Also added -lrt to get - the apps and tests to run. Thanks to Tom Dobridge for this - help. - -Tue May 20 17:13:15 1997 Carlos O'Ryan - - * ace/config-hpux-10.x-nothread.h: - * ace/config-hpux-10.x-aCC.h: - * ace/Stream_Modules.cpp: - ACE_LACKS_STREAM_MODULES is no longer needed, moving the inclusion - of "ace/Task.h" to the beginning of "ace/Stream_Modules.h" solved - the problem nicely. - - * ace/config-hpux-10.x.h: - * ace/config-hpux-10.x-aCC.h: - ACE_HAS_BROKEN_HPUX_TEMPLATES is not needed on newer HP/CXX - compilers; further, old ones will not compile ACE even if the - macro is defined. - - * ace/Timer_List_T.h: - * ace/Timer_Queue_T.i: - I moved the definition of ACE_Timer_Queue_T::lock() from the .i - file to the .h file, HP/CXX gets completely confused otherwise. - I also added a number of ACE_INLINE missing in the .i file. - - * ace/Stream_Modules.h: - * ace/Stream_Modules.cpp: - I had to move the inclusion of "ace/Task.h" outside of the - protections against multiple inclusion for Stream_Modules.h. - That seems to solve the ciclyc dependancy for - Task->Module->Stream_Module->Task. - BTW, the same thing was already done in "ace/Log_Record.h". - I'll try to remove the ACE_LACKS_STREAM_MODULES macro, it seems - that the last change makes it redundant. - - * ace/Signal.cpp: - HP/CXX compiler will not close the library unless - ACE_MAX_SIGNAL_HANDLERS is defined as "const size_t". The previous - definition ("size_t") did compile tough. - - * ace/Log_Record.h: - We need to include "ace/ACE.h" before "ace/Log_Priority.h". - - * ace/Log_Priority.h: - HP/CXX compiler seems to reserve a few bits in enums, so the - ENSURE_32_BITS trick would result in a compile time error. - Since HP enums are always 32 bits we could skip the definition for - ENSURE_32_BITS altogether, but I prefer to keep a consistent - namespace across plaforms, I have found a value for ENSURE_32_BITS - that seems to work. - - * include/makeinclude/platform_hpux.GNU: - Some options to improve compile time, since we use explicit - template instantiation there is no need for a ptcomp o ptlink - phase. - -Tue May 20 09:10:18 1997 Nanbor Wang - - * ace/config-freebsd-pthread.h: - * ace/config-freebsd.h: Removed "FreeBSD" directive because gcc on - FreeBSD defines __FreeBSD__ automatically. - - * ace/OS.i (sigaddset, sigdelset, sigismember): Added range - checking to these functions in order to avoid disasters. Sig - number should be between 1 and NSIG. - (sigwait): Changed ifdef (FreeBSD) to ifdef (__FreeBSD__) since - compiler does it for us. - -Tue May 20 08:41:11 1997 David L. Levine - - * examples/Threads/tss2.cpp: added #include of ace/Thread.h - because Sun C++ 4.1 needs it. - -Mon May 19 16:04:32 1997 David L. Levine - - * bin/create_ace_build: changed startup line for compatibility - with bash. This startup line lets the script run without - hard-coding the full path to the perl executable, as long as - perl is on the user's PATH. - -Mon May 19 12:45:21 1997 Douglas C. Schmidt - - * examples/Threads/reader_writer.cpp: Changed the code so that we - don't try to treat thread ids as ints! Thanks to Chuck Gehr for - reporting this. - -Sun May 18 21:57:54 1997 David L. Levine - - * examples/Threads/tss2.cpp: added second parameter to - ACE_TSS_Singleton template specialization. - -Sun May 18 09:20:15 1997 Douglas C. Schmidt - - * examples/Threads/TSS_Data.h: Added the second parameter for - ACE_SYNCH_MUTEX since Rich and Chris updated ACE_TSS_Singleton. - - * ace/Singleton.cpp: Added the updated version of - ACE_TSS_Singleton that implements the Double-Checked Locking - pattern. Thanks to Rich Christy and Chris Lahey for this. - - * ace/Strategies_T.cpp (activate_svc_handler): Fixed the logic so - that a value is always returned. Thanks to David Levine for - noticing this. - -Sun May 18 07:25:11 1997 David L. Levine - - * netsvcs/lib/Server_Logging_Handler.cpp: removed second - ACE_Svc_Handler specialization for non-threaded, has-TLI case. - That's because it is the same as the first; the only difference - was that one specialized with ACE_SYNCH and the other with - ACE_NULL_SYNCH. Without threads, those macros expand to the - same thing. Thanks Sandro Doro for - reporting this. - - * examples/Threads/tss2.cpp: added ACE_TSS template - specialization. - -Sat May 17 23:24:34 1997 Nanbor Wang - - * ace/OS.i (sigismember): Corrected the code when - ACE_LACKS_SIGSET. - -Sat May 17 00:06:04 1997 - - * examples/ASX/Event_Server/Transceiver/transceiver.cpp - (Event_Transceiver): Corrected signal registration for Win32. - - * apps/Gateway/Gateway/Gateway.cpp (parse_args): Since the - Connector is now fixed, non-blocking is now working fine. - - * ace/Connector.cpp (handle_close,create_AST): Made sure we close - down the svc_handler on error. - - * ace/{Acceptor.cpp,Connector.cpp} (activate_svc_handler): The - if statement logic in these methods was incorrect. - - * ace/SOCK_Connector.cpp (connect): Just like in complete(), we - start out with non-blocking disabled on the . - - * ace/OS.h: When ACE_LACKS_SIGSET is defined, changed the - definition of sigset_t from void * to unsigned int. - -Sat May 17 12:25:22 1997 Douglas C. Schmidt - - * ace/{Acceptor,Connector,Strategies_T}: Make sure to either - enable or disable ACE_NONBLOCK (depending on the flags). This - ensures that we always start with the I/O mode set to a - deterministic state. Thanks to Irfan for suggesting this. - - * ace/Connector: Added a new "flags" parameter to the - ACE_Connector and ACE_Strategy_Connector which keeps track of - flags that control how Svc_Handler are initialized prior to - being activated. - - * ace/Strategies_T.cpp (activate_svc_handler): Make sure to set - the peer's handle into non-blocking mode *before* calling the - Svc_Handler's open() method. This ensures that things are set - up correctly when this hook is called. - -Sat May 17 02:19:27 1997 Nanbor Wang - - * ace/config-freebsd.h (ACE_HAS_BROKEN_TIMESPEC_MEMBERS): - - * ace/OS.i (set, timestruct_t, nanosleep): - - * ace/High_Res_Timer.cpp (elapsed_time): - - * ace/README: Added ACE_HAS_BROKEN_TIMESPEC_MEMBERS so that we can - fix that problem FreeBSD 2.1.x brings by defining timespec as { - time_t ts_sec ; long ts_nsec }. Notice: This is highly - non-portable. Please refer to ACE code and see how to write - portable. Fortunately, only older versions of FreeBSD have - this. Yesterday's hack didn't work, so, it's removed. Thanks - to Satoshi Ueno for reporting and helping - debug on his FreeBSD 2.1.7R box. - -Sat May 17 00:06:04 1997 - - * apps/Gateway/Gateway/Proxy_Handler.cpp (open): Turn on - non-blocking I/O only after the Channel is done sending the id - to the Peer. - - * apps/Gateway/Gateway/Gateway.cpp: - - - Added necessary DLL build macros. - - - Removed error checking for Reactor::remove_handler() for STDIN - as STDIN is never registered with the Reactor on Win32. - - - Fixed the registration of SIGINT. - - - blocking_semantics_ should be 1 when blocking is on and not 0. - - - Since the Connector is currently broken with respect to - non-blocking connects, I have put a temporary fix such that - only blocking connects are done. Revert this after the - Connector is fixed. - - * apps/Gateway/Gateway/Event_Channel.cpp: - - - Only if socket_queue_size > 0, do we set a new value. - - - In reinitiate_proxy_connection(), we must unbind the proxy - from the proxy_map_ as we are no longer responsible for - this. The Connector should now be responsible for this. - - * apps/Gateway/Gateway/Concrete_Proxy_Handlers.cpp: Added - necessary DLL build macros. - - * apps/Gateway/Peer/Peer.cpp: - - - Added include file and necessary DLL build macros. - - - Removed error checking for Reactor::remove_handler() for STDIN - as STDIN is never registered with the Reactor on Win32. - - - Fixed the registration of SIGINT. - - * apps/Gateway/{Peer,Gateway}: Added Win32 makefiles. - - * ace/ACE.cpp (read_adapter): Handle for the read_adapter should - always be STDIN. - -Fri May 16 18:43:17 1997 Nanbor Wang - - * ace/config-freebsd.h: Minor modification for working on FreeBSD - 2.1.x platform. Added includion of and - . Defined ACE_HAS_POSIX_TIME for 2.1.x. Redefine - timespec to timeval to hack around a bug on 2.1.x. Thanks to - Satoshi Ueno for reporting this. - -Fri May 16 12:25:32 1997 Douglas C. Schmidt - - * netsvcs/lib: Reverted back to the original Server_Logging_Handler - behavior since the new version is breaking GCC's templates. - - * ace/Log_Record.h: need to #include "ace/ACE.h" before - "ace/Log_Priority.h" so that "Log_Priority.h" sees the - configuration stuff (otherwise the following fix won't work). - - * ace/Log_Priority.h: Added a workaround for lame C++ compilers - like the one on HP/UX that can't support large enums. Thanks to - Robert Head for reporting this. - - * ace/Singleton: Added the new ACE_TSS_Singleton, which stores - Singletons in thread-specific storage. Thanks to Chris Lahey - and Rich Christy for this. - - * ace/OS.h: Removed the ACE_Singleton_Strategy since we don't need - it anymore. - - * netsvcs/lib: Added the new Server_Logging_Handler_T.* and - Log_Message_Receiver.* netsvcs. Thanks to Per Andersson for - contributing these. - - * examples/Misc/Makefile: Removed the XtReactor tests from the - Makefile until we figure out a good way to get them integrated - with the appropriate libraries. - - * ace/config-irix6.2-sgic++-nothread.h: Added the following: - - ACE_LACKS_LINEBUFFERED_STREAMBUF - ACE_HAS_SETOWN - ACE_HAS_SYSENT_H - ACE_HAS_SYSINFO - - Thanks to Torbjorn Lindgren for reporting - this. - - * ace/Proactor.cpp: Changed the use of lock() to mutex() since we - changed the name in Timer_Queue. - - * ace/Timer_Queue_T.i: Changed the name of the lock() method to - mutex() to work around compile problems with HP/UX. Thanks to - Robert Head for reporting this - workaround. - - * ace/config-irix5.3-sgic++.h: Made a few changes to get ACE to - work on IRIX 5.3. Thanks to Eugene R. Somdahl - for these fixes. - - * ace/OS: Added calloc() implementation. I don't know how - this managed to fall through the cracks! - - * include/makeinclude/platform_osf1_4.0.GNU: Added a few more - tweaks courtesy of James Johnson. - - * include/makeinclude/platform_osf1_3.2.GNU: Added a few more - tweaks courtesy of Tom Dobridge. - - * include/makeinclude/platform_osf1_4.0.GNU (DLD): Added -shared - -expect_unresolved '*' so that calls to the linker via cxx will - work correctly. Thanks to Thilo for this. - - * include/makeinclude/platform_chorus.GNU: Removed CLASSIXDIR = - /usr/home/chiang/chorus/merge/extended-i386at, added the - nostdinc flag, and removed extra whitespace. Thanks to Wei - Chiang for reporting this. - -Fri May 16 00:02:33 1997 - - * ace/ReactorEx: Even though changes to the owner field are very - well synchronized within the class code, the owner() - accessor is public and can be called from out side the - class. Therefore, I have added a owner_i() that does not do - locking. All internal calls to check the owner will use the - new accessor, whereas application code outside the class can - still use the old synchronized accessor. - -Fri May 16 11:39:51 1997 Nanbor Wang - - * ace/OS.i (sigaddset, sigdelset, sigemptyset, sigfillset, - sigismember): Added implementation when ACE_LACKS_SIGSET so that - platforms (NT?) without these functions can still manipulate - sigset_t variables. - -Thu May 15 22:19:59 1997 Douglas C. Schmidt - - * examples/ASX/Event_Server/Event_Server: Removed the THR_DETACHED - flag from options so that we can wait on the threads - correctly. - - * ace/Stream_Modules.cpp: Changed the logic for determining when - to compile the Stream_Modules.cpp code. Now, we compile it - unless ACE_LACKS_STREAM_MODULES is defined (i.e., we're on HP/UX - 10.x using aCC). - - * netsvcs/lib/Server_Logging_Handler.cpp (handle_input): Fixed - a bug in handle_input() where we need to return the result, not - just 0 or 1. Thanks to Per Andersson for reporting this. - - * ace/Log_Priority.h: Changed the values of the enums in - ACE_Log_Priority so that they can be dealt with via bitwise - operations. Thanks to Per Andersson for this. - - * include/makeinclude/platform_osf1_4.0.GNU: Added support for - templates. Thanks to Steve Huston and James Johnson for - verifying this. - - * include/makeinclude/platform_osf1_3.2.GNU: Got rid of all - unresolved symbol warnings using cxx 5.5 on DEC/OSF v3.2 by - using the linker flag "-expect_unresolved '*'." In addition, I - added -threads to the DCFLAGS macro. Thanks to Tom Dobridge - for this. - - * ace/Strategies_T: Added a minor ACE_Reactive_Strategy extension - to enable non-blocking I/O in active_svc_handler(). Thanks to - Arturo Montes for contributing this. - - * ace/config-osf1-4.0[-g++].h: Added a #define for - ACE_POLL_IS_BROKEN since DEC UNIX's poll() doesn't seem to work - correctly as a highres timer. Thanks to James Johnson and Thilo - for reporting this. - - * examples/Threads/thread_specific.cpp (worker): Changes - size_t i back to int i to avoid a signed/unsigned complaint. - Thanks to David Levine for reporting this. - - * ace/config-chorus.h: Added ACE_LACKS_MPROTECT, - ACE_HAS_IP_MULTICAST, and ACE_LACKS_SOCKETPAIR to the Chorus - port. Thanks to Wei Chiang for - reporting this. - - * ace/OS.i: Added ACE_LACKS_ACCESS to the Chorus config file - and VxWorks config file, as well as to OS.i. - -: * ace/OS.i: Added ACE_LACKS_GETSERVBYNAME to the Chorus config - file and VxWorks config file, as well as to OS.i. - - * ace/OS.i: Added ACE_LACKS_SBRK to the Chorus config file, as - well as to the definition of the ACE_OS::sbrk() function. - - * ace/OS.h: Removed #include /**/ from the Chorus-specific - part of OS.h since it's already included elsewhere. Thanks to - Wei Chiang for reporting this. - - * ace/Reactor: Added a typedef for ACE_Reactor_Token to - ACE_Null_Mutex for situations where ACE_MT_SAFE is *disabled*. - This makes the code more consistent. - - * ace/Reactor: Added an interface that makes it possible to - acquire a reference to the that is used to - serialize the internal Reactor's processing logic. This can be - useful for situations where you need to avoid deadlock - efficiently when are used in multiple - threads. Thanks to Detlef for pointing out the utility of this. - -Thu May 15 23:34:30 1997 Tim H. Harrison - - * ace/Process_Manager.cpp (spawn_n): Changed - ACE_Process_Manager::start_n to ACE_Process_Manager::spawn_n. - -Thu May 15 15:39:13 1997 Carlos O'Ryan - - * include/makeinclude/platform_hpux.GNU: - * ace/config-hpux-10.x.h: - * ace/config-hpux-10.x-nothread.h: - HP/CXX cannot achieve template closure, not even using the - dummy exec trick: apparently the repository gets a bit - corrupted. HP/CXX (version 10.24) support explicit template - instantiation, I believe this to be a superior method for - ensuring library closure (and it works). - - * ace/Task_T.cpp: - * ace/Stream_Modules.cpp: - I have changed the hack to compile under HP-UX, - "ace/Module.h" is once more included in ace/Task_T.cpp, but - "ace/Stream_Modules.cpp" is protected: it will be empty - under HP-UX unless included from the - "ace/Stream_Modules.h". I still believe that there is a - problem in the cyclic dependancy Task -> Module -> Thru_Task - -> Task; but it seems that the current hack works better. - - * ace/OS.h: - Defining ACE_UNUSED_ARG as (a) for HP/CXX does not work so I - moved it to the SGI and GCC definition. - - * ace/OS.i: - More unused args. - - * ace/Handle_Set.h: - Removed the extra qualification for ACE_Handle_Set::NBITS, - HP/CXX sends a lot of warnings with that. - - * ace/IOStream.h: - It included "IOStream.cpp" I think that "ace/IOStream.cpp" - is better. - - * ace/Local_Name_Space_T.h: - Ditto for "Local_Name_Space.h" - -Thu May 15 17:40:06 1997 - - * ace/ReactorEx.i (owner): Since changes to the owner field are - very well synchronized, we do not need to synchronize this - accessor. - - * ace/IOStream.h: Added /**/ after #include directives. - - * ace: Update Win32 makefiles to include UNICODE make option. - -Thu May 15 08:54:53 1997 David L. Levine - - * Makefile (release, cleanrelease): use -prune option to "find" - instead of filtering its output. Thanks to Chris Cleeland for - suggesting this. - -Wed May 14 21:52:22 1997 Douglas C. Schmidt - - * ace/UPIPE_Stream.cpp (control): We need to "cast away const" so - that this method can call the Stream's control() method - (which is non-const). Thanks to David Levine for locating this. - - * ace/Singleton.cpp: Finished re-implementing ACE_Singleton. - - * examples/ASX/Message_Queue/buffer_stream.cpp: Updated this - example to illustrate (1) how filters work in an ACE_Stream and - (2) to make sure that resizing buffers work. - - * ace/UPIPE_Stream.h: Changed the signature of control() - to take an int so that it will match the base class - signature. - - * ace/Singleton.h: The new ACE_SingletonEx isn't working yet. - I've #ifdef'd it out until it works. - - * examples/Threads/tss2.cpp: Updated this test program to - illustrate the use of the new ACE_SingletonEx class. - - * ace/Singleton.h: Added a new instance() method to the ACE - Singleton that can be used to set the Singleton. This is useful - for situations where the type being used as the Singleton - doesn't have a default constructor. Thanks to Arturo Montes - for this suggestion. - - * ace/Singleton: Factored out common code in the Singleton and - SingletonEx implementations so they will be cleaner and more - portable. - - * ace/Local_Name_Space_T.h, - ace/Map_Manager.h, - ace/Hash_Map_Manager.h, - ace/SString.h, - ace/Hash_Map_Manager.cpp: - - Changed all uses of the identifier "allocator" to "alloc" to - avoid conflicts with MSVC++ STL 5.0. Thanks to William - L. Gerecke for reporting this. - - * ace/config-aix-4.[12].x.h: Replaces - ACE_LACKS_PTHREAD_THR_SIGSETMASK with ACE_HAS_SIGTHREADMASK. - Thanks to Chris Lahey for this. - - * ace/OS.i (thr_sigsetmask): Added the ACE_HAS_SIGTHREADMASK - support for AIX. Thanks to Chris Lahey for this. - - * ace/Singleton: Added the new ACE_SingletonEx, which supports - both heap-based and thread-specific storage-based Singletons. - Thanks to Chris Lahey for this. - - * ace/OS.h: Added the new ACE_Singleton_Strategy to OS.h. Thanks - to Chris Lahey for this. - -Wed May 14 16:32:57 1997 David L. Levine - - * Makefile: use cpio instead of tar to allow easy filtering - of CVS files from the release. - -Wed May 14 15:00:58 1997 - - * examples/IPC_SAP/SOCK_SAP/CPP-inclient.cpp (main): Fixed code. - - * examples/Naming: Replaced multiple makefiles with one makefile. - - * ace/OS.h: Added UNICODE support for some #defines. - - * OS.i (vsprintf): Added support for this in ACE_OS. - - * OS.cpp (socket_init && socket_fini): It is ok to print out cout - and cerr messages from here (as the C runtime library is still - attached) but it is *not* ok to print out ACE_DEBUG - messages. God only knows the state of the thread specific LogMsg - instance when the process reaches this piece of code. - - Also added a (handy) sprintf that has the following prototype: - - sprintf (wchar_t *buf, const char *format, ...) - - * ace/Process: UNICODE fixes. - - * tests: Fixed the following such that they work with UNICODE: - - Pipe_Test.cpp - Process_Mutex_Test.cpp - Process_Strategy_Test.cpp - Time_Service_Test.cpp - Tokens_Test.cpp - - * Time_Service_Test.cpp (main): Fixed typo in the svc.conf - filename for the clerk. - -Tue May 13 18:56:27 1997 Douglas C. Schmidt - - * ace/IOStream.h: To make C++ compilers happy I added - the following changes by modifying - - ACE_IOStream & operator>>( ACE_Time_Value *& tv ); - - to be - - ACE_IOStream & operator>>( ACE_Time_Value *& tv ); - - Thanks to Chuck Gehr for this fix. - -Tue May 13 21:32:12 1997 David L. Levine - - * ace/Process.cpp (~ACE_Process_Options): delete - command_line_buf_ was missing the []. - - * examples/Threads/process_manager.cpp (main): avoid compiler - warning due to implicit creation of temporary by explicitly - creating an ACE_Process_Options instance. It gets passed to - ACE_Process_Manager::spawn (ACE_Process_Options &), which - takes a non-const reference. - -Tue May 13 18:08:32 1997 - - * examples/ASX/UPIPE_Event_Server: Made enough fixes for this to - compile on Win32 but more work need to be done for this to - work on Win32. - - * ace/OS.i (kill): The error result for ::OpenProcess() is null - and *not* invalid handle. - - * ace/Process.i (kill): Changed the implementation to remove the - ACE_OS::kill() code from ACE_Process::kill() for Win32. This - allows us to avoid calling ::OpenProcess() unnecessarily. - - * tests: For Win32, added Reactor_Exceptions_Test and - Priority_Tasks_Tests. Files changes include run_tests.bat, - tests.mak, and tests.mdp. - - * tests/Future_Test.cpp (main): Fixed memory leaks in main() and - in name_i(). - - * tests/Thread_Pool_Test.cpp (open): The loop was messed up - causing memory leaks. I fixed it. - - * ace/UPIPE_Stream.cpp (close): I am not sure why the stream was - closed with M_DELETE_NONE. This indicates that close() should - not delete any Tasks. This caused a memory leak as the Tasks in - the Tail and Head modules were not deleted. I have removed this - to fix the memory leak. - - Also added a destructor such that mb_last_ is released if it is - still around. - -Tue May 13 16:48:18 1997 James C Hu - - * ace/Process.cpp: Added implementations to new interfaces - to ACE_Process_Options::setenv (char *envp[]), and - ACE_Process_Options::command_line (char *argv[]). - - * apps/JAWS/server/HTTP_Response.cpp: Required changes so that CGI - processing will work with the new ACE_Process class. - - * apps/JAWS/stress_testing/benchd.cpp: Requried changes due to - changes in the ACE_Process interface. - -Tue May 13 15:22:01 1997 Tim H. Harrison - - * ace/Process_Manager.h: Changed ACE_Process_Manager::start to - ACE_Process_Manager::spawn. - - * ace/Process.cpp (spawn): The check for a null environment argv - was incorrect. Thanks to Nanbor for finding this. - -Mon May 12 18:59:39 1997 David L. Levine - - * ace/config-mvs.h: conditionally use ACE_HAS_UCONTEXT_T or - ACE_LACKS_UCONTEXT_H depending on __COMPILER_VER__. Thanks to - Chuck Gehr for this fix. - - * OS.h, OS.cpp (thr_create), Task.h, Thread.h, Thread_Manager.h: - use ACE_DEFAULT_THREAD_PRIORITY instead of -1, because -1 is a - valid priority on Win32. Thanks to Irfan for discovering this - problem with Priority_Task_Test. - - * ace/Thread_Manager.cpp (wait_grp,wait_task): changed type of loop - index "i" from size_t to int to avoid signed/unsigned comparison. - -Mon May 12 18:41:19 1997 Nanbor Wang - - * ace/config-freebsd-pthread.h: - * ace/config-freebsd.h: Added ACE_LACKS_RWLOCK_T to FreeBSD config - files. Thanks to Amancio Hasty for - noticing this. - -Mon May 12 17:11:50 1997 Tim H. Harrison - - * ace/Process.h: Changed ACE_Process::start to - ACE_Process::spawn. Added new argv-style methods for - ACE_Process::setenv and ACE_Process::command_line. These new - argv-style methods do not have implementations yet. - -Mon May 12 15:27:41 1997 Douglas C. Schmidt - - * ace/config-aix-4.[12].x.h: Added ACE_HAS_EXCEPTIONS to - the AIX 4.* config files. Thanks to Chris Lahey for this. - -Mon May 12 13:49:54 1997 - - * ace/Thread_Manager.cpp (wait): We have to make sure that while - we wait for these threads to exit, we do not have the - lock. Therefore we make a copy of all interesting entries and - let go of the lock. We then do the join(). - - * ace/Task.cpp (wait): Removed the extra locking in wait(). The - Thread Manager will handle this correctly. - - * ace/ACE.cpp (register_stdin_handler): Changed the options such - that the Thread Manager used for the adapter is passed along to - the method executed by the new thread. We can then notify the - thread manager when this adapter thread exits. - - * examples/ASX/Event_Server/Event_Server: Changed the way the - reference count was being kept on the context. Now, the - reference count starts with zero and every instance and every - active Task increments it. This works well as Task::close() is - called one from the module being deleted and from the active - thread going away. - -Mon May 12 11:11:51 1997 - - * ace/Process.*: Removed the old ACE_Process and replaced it with - what was ACE_ProcessEx. - - * ace/Process_Manager.{i,cpp}: Updated to use the new ACE_Process - API. - -Mon May 12 08:16:38 1997 David L. Levine - - * ace/config-freebsd*.h: added support for FreeBSD 2.1.7R. - Thanks to Satoshi Ueno for figuring - out the differences and to Nanbor Wang - for updating the config files. - -Sun May 11 17:36:59 1997 - - * tests/{Pipe_Test.cpp, Process_Mutex_Test.cpp, - Time_Service_Test.cpp, Token_Service_Test.cpp}: Updated these - files to use the new ACE_Process API. - -Sun May 11 14:40:51 1997 David L. Levine - - * ace/config-osf1-4.0.h: put back ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS. - - * ace/ACE_Process.cpp (ACE_Process_Options ctor): reordered - initializers to match declaration order. - -Sat May 10 19:44:28 1997 - - * Process.h: ACE_ProcessEx now works on Solaris and NT. There - have been some changes to the API. ACE_ProcessEx::cl_options - and ACE_ProcessEx::path have been combined into - ACE_ProcessEx::command_line. ACE_ProcessEx::command_line must - be used to specify path and command-line arguments. There is - also a second ACE_ProcessEx::setenv method that allows - applications to set environment variables in a "VAR=VALUE" - format. - -Sat May 10 10:51:11 1997 Douglas C. Schmidt - - * ace/config-osf1-3.2.h: Added three new flags to the config file - for OSF/1 3.2: - - #define ACE_LACKS_SETSCHED - #define ACE_LACKS_RWLOCK_T - #define ACE_LACKS_GETPGID - - Thanks to Tom Dobridge for reporting - this. - -Fri May 09 16:37:48 1997 David L. Levine - - * ace/config-osf1-4.0.h: added DEC_CXX. - - * ace/config-osf1-4.0-g++.h: removed commented-out - ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS. - - Thanks to Thilo Kielmann for - patches for the above two OSF config files. - - * ace/Sched_Params.cpp (priority_min): On Solaris (with STHREADS), - don't return priority of 0 because ::pthread_attr_setschedparam () - will refuse to use it (with EINVAL). So, bump priority of 0 up to 1. - - * tests/Priority_Task_Test.cpp: retry the task activation with - priority 0 if it fails with non-zero priority. This lets the - test run on platforms such as Linux that only let the superuser - set non-zero priority. - - * ace/ACE_Process.cpp (ACE_Process_Options ctor): reordered - initializers to match declaration order. - - * examples/Connection/non_blocking/test_lsock_acceptor.cpp: fixed - typo in template specializations: ACE_LSOCK_ACCEPTOR instead of - ACE_SOCK_LACCEPTOR. - -Fri May 9 13:07:20 1997 Douglas C. Schmidt - - * ace/UNIX_Addr: Changed the return values of all the set() - methods so that they conform to the signature used by the - INET_Addrs. - - * examples/Connection/non-blocking: Added two new test programs, - test_lsock_{connector,acceptor}.cpp that - - - * ace/LSOCK_Stream.cpp: Revised the get_remote_addr() method so - that it uses the underlying ACE_SOCK::get_remote_addr() method - rather than the get_local_addr() method. Hopefully, this will - fix an ACE bug with UNIX domain sockets. Thanks to Paul Han - for reporting the problem and the fix. - - * include/makeinclude/platform_aix4.2.GNU (LLIBS): Changed - - LLIBS = -lC_r -lC -lpthreads -lbsd -ltli_r -ldl -lc_r -lm -lc $(ACELIB) - - to - - LLIBS = -ltli_r -ldl $(ACELIB) - - MakeC++SharedLib_r includes all the other libs automatically in - the search. - - * apps/Gateway/Gateway/Proxy_Handler.h: Moved the handle_close() - method into the public section since the Connector now calls it. - - * ace/Containers.cpp: Updated all the operator= methods so - that they no longer try to return *this. Thanks to Chris Lahey - for reporting this. - - * ace/IOStream.h: Replaced __alpha with DIGITAL_UNIX && DEC_CXX. - Thanks to Thilo for reporting this. - - * build/gcc/tests/Simple_Message_Block_Test.cpp (main): Changed - the use of ACE_Mutex to ACE_SYNCH_MUTEX so that everything will - build correctly on non-MT platforms. - - * ace/Timer_{Heap,List}_T.cpp: To ensure backwards compatibility - with the old "int" return value of Timer_*::schedule() we must - cast the long value to int before returning it. Thanks to Thilo - Kielmann for reporting this. - - * ace/Acceptor.cpp, - ace/Connector.cpp: - If an active or passive connection times out and the Connector - or Acceptor calls the handle_timeout() method of the - Svc_Handler, we now keep track of whether the handle_timeout() - method returns -1. If so, we call handle_close() on the - Svc_Handler automatically. Thanks to Michael Hartman - for suggesting this. - - * tests/IOStream_Test.cpp: Fixed this test so that it runs on - non-MT platforms. - - * ace/Module.cpp: Changed the implementation of the close_i() - method so that it will wait for all active threads in a Task to - exit before deleting the task. - - * ace/Task: Added a wait() method on an ACE_Task that will use the - new ACE_Thread_Manager::wait_task() method to block until all - threads have shutdown in a Task. - - * ace/Thread_Manager: Finally implemented the wait_task() and - wait_grp() interfaces on ACE_Thread_Manager. - - * ace/SOCK_Dgram.cpp: Added a timed recv() operation. Thanks - to Hongbo Xu for contributing this. - - * ace/Timer_Queue_T.cpp: Added #include "ace/Synch.h" to keep the - DEC C++ compiler happy. Thanks to James CE Johnson - for this. - - * ace/Containers.i (size): Changed to so that this - compiles on the Alpha. Thanks to James CE Johnson - for this. - - * ace/IOStream.h: Include the std_macros header on the Alpha. - Thanks to James CE Johnson for this. - - * include/makeinclude/platform_osf1_4.0.GNU (SOBUILD): Removed - -lACE from the link line. Thanks to James CE Johnson - for this. - - * tests/Timer_Queue_Test.cpp: Changed all the int timer ids to - long so that the test will work on DEC ALPHAs. Thanks to Thilo - Kielmann for reporting this. - - * ace/Process: Fixed a number of compile problems for UNIX. - - * ace/Process.h: Changed the methods named stdin/stdout/stderr to - std_in/std_out/std_err to avoid name clashes with the standard C - library. - - * ace/OS: Changed the use of ACE_Unbounded_Set to - ACE_Unbounded_Stack in order to get the appropriate semantics - for TSS cleanup on NT. - - * ace/Containers: Enhanced the ACE_Unbounded_Stack class so - that it supports insert()/remove()/find() methods. These - rather unorthodox methods are useful for implementing the - TSS semantics required by OS.cpp. - - * ace/Containers: Revised all the interfaces for the various - containers so that they all have the same "look and feel." - -Fri May 9 00:00:21 1997 James C Hu - - * apps/JAWS/server/HTTP_Request.{h,cpp}: Added a uritopath - translation method, so that CGI location can be computed as it - is searched. Added methods to access the parsed headers. - - * apps/JAWS/server/HTTP_Response.{h,cpp}: Flushed out the - implementation of cgi_response () method. If all goes well, it - should be able to execute a CGI program. I don't set the IO - handles to point at the socket handle yet. - - * apps/JAWS/server/README: Updated description of JAWS behavior. - -Thu May 8 18:04:14 1997 Irfan Pyarali - - * ace/Containers: Made the return values of Container methods - more consistant with other components of ACE (i.e., 0 for - success, -1 for failure). - - * ace/Containers (ACE_Unbounded_Stack::delete_all_nodes): - Fixed subtle bug in delete_all_nodes. - - * ace/OS.cpp (ACE_TSS_Cleanup::exit): Changed because of - return value changes in ACE containers. - - * Containers: Added size methods to stack containers and - consolidated friendship between ACE_Unbounded_Stack_Iterator and - ACE_Unbounded_Stack - - * tests/Message_Block_Test.cpp: I was incorrect about each data - block having its own lock. Since *many* data blocks can share - the same lock, for the case of message block chains, we would - like to optimize locking. - - Therefore, the first guy in the chain grabs the lock and passes - it to the continuation chain. When each guy in the chain gets - it, it compares the passed lock to its own locking strategy. If - it is the same lock, no need to acquire the lock again. If our - lock is different, then we do our own locking. - - * tests/Simple_Message_Block_Test.cpp: This test program is a - torture test that illustrates how ACE_Message_Block reference - counting works, how and when locks are used, how memory is - managed, and how continuation chains of message blocks are - made. Ideally used with purify :-) - - * tests: Added new test. Following changed: - Makefile run_tests.bat run_tests.sh tests.mak tests.mdp - -Thu May 8 18:04:14 1997 James C Hu - - * include/makeinclude/platform_irix6.2_sgic++.GNU: Moved SGI C++ - options out of CPPFLAGS into CCFLAGS so that gcc won't emit - diagnostics during a make depend. - -Thu May 8 11:52:41 1997 Chris Cleeland - - * ace/{Task,Thread}.h: Added documentation describing - thread priority determination to methods where priority - is an [optional] argument. Note that if you want to inspect - the REAL documentation, you should look at the code for - ACE_OS::thr_create(). But that's convoluted and touchy. - - * ace/Strategies_T.h (ACE_Cached_Connection_Strategy): Added - documentation for this class. - -Thu May 08 00:10:00 1997 - - * ace/Process.*: This is the first pass at the new ACE_Process - class. It is now called ACE_ProcessEx. When it is completely - ported to Solaris, we'll replace the current ACE_Process with - ACE_ProcessEx. - - * examples/OS/Process/process.cpp: Added some examples for the - new ACE_ProcessEx. - -Wed May 07 21:58:29 1997 - - * ace/Message_Block.h: ACE_Data_Block calling delete on the - ACE_Message_Block was incorrect. This was a hack to simplify - the locking issues! However this optimization leaded to - incorrect code. Therefore I have taken this behavior out. The - new implementation will lock and unlock multiple times in the - case when there are message_blocks in the continuation field, - all of which point to same data block. However, this is a - strange case that can be optimized later. For now correct code - is more important. - - Also, the continuation message blocks are only deleted in the - release() method and not in the destructor. This will ensure - that if message blocks of the stack are chained together, we - will not call release on message blocks of the stack. - - Also note that release() should only be called on message blocks - that have been dynamically allocated. Message blocks of the - stack will clean up properly when the activation record of the - method completes. Dynamically allocated messages blocks should - *never* be chained with message blocks allocated of the stack. - - * examples/ASX/Event_Server/Event_Server/Peer_Router.h: Removed - empty definitions of assignment operator and copy constructor. - - * examples/ASX/Event_Server/Event_Server/event_server.cpp - (handle_input): Added code here will make sure we actually wait - for the user to type something. On platforms like Win32, - handle_input() is called prematurely (even when there is no - data). - - * examples/ASX/Event_Server/Event_Server/Peer_Router.cpp: Changed - a log message. - -Wed May 7 22:55:00 1997 James C Hu - - * JAWS/server/*: Debugging changes! GET and HEAD both work - now. As well as changes to make it compile cleanly on - VXWORKS, as reported by David. - -Wed May 07 16:05:39 1997 David L. Levine - - * ace/Makefile: added Timer_Wheel to FILES. Thanks to Thilo - Kielmann for reporting this. - - * include/makeinclude/platform_irix6.2_sgic++.GNU: enabled CPPFLAGS - to instantiate all templates so that gatewayd will build. - Thanks to Nathan N. Vuong for reporting - this problem and Eric Dean Russell - for supplying and the fix. - - * ace/Map_Manager.h: updated comments to indicate that find - functions return a non-negative integer if the item is found. - - * ace/Map_Manager.cpp (find_i (const EXT_ID &, INT_ID &)): return - index instead of 0 if the item is found, to be consistent with - find_i (const EXT_ID &). - - * ace/IOStream.cpp (ACE_Streambuf_T ctor): added initializations of - eback_saved_ and pbase_saved_ to avoid unitialized memory read - reports from Purify. - -Tue May 6 07:39:25 1997 Douglas C. Schmidt - - * ace/Service_Config.cpp (open): Make sure to perform the - daemonization logic first so that we get a new process created - before initializing reactors, etc. Thanks to Adrian Salt - for reporting this. - - * examples/IPC_SAP/SOCK_SAP/CPP-inserver-poll.cpp (main): - Changed ACE::INVALID_HANDLE to ACE_INVALID_HANDLE. - Thanks to Dani Flexer for - reporting this. - - * tests/Conn_Test.cpp (compare_i): Changed the comparison from - a1 == a2 to a1 != a2 since this appears to be what is needed. - We need to improve the comments here! - - * tests/Conn_Test.cpp: Split the definition of the Svc_Handler - template into its own Conn_Test.h file to work around "features" - with AIX C++. Thanks to Chris Lahey for reporting this. - - * ace/Containers.cpp: Fixed a bug in the set() method for - ACE_Unbounded_Queue. Again, thank goodness for cs242! - - * ace/Containers.cpp: Fixed a bug in the enqueue_head() logic for - ACE_Unbounded_Queue. Thank goodness for cs242 ;-). - - * ace/Containers.cpp: Added a destructor for ACE_Node to keep the - compilers happy. - -Tue May 06 11:31:49 1997 David L. Levine - - * netsvcs/lib/*.cpp: removed break statements after - ACE_RETURNs to avoid unreachable statement warnings from - GHS. - - * ace/OS.cpp (mktime): added time_t cast of -1 (error) return - to avoid compiler warning. - - * ace/config-vxworks-ghs-1.8.h: added ACE_LACKS_SIGNED_CHAR. - - * ace/Containers.cpp (dequeue_head): fixed typos in variable names. - - * examples/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.cpp: - removed #ifdef ACE_HAS_TLI around some template specializations so - that this subproject will build on platforms non-TLI platforms such - as Linux. - -Tue May 6 17:02:54 1997 James C Hu - - * ace/OS.{h,i}: Added strftime (). Also, enhanced strcasecmp - implementation to account for lexicographical ordering for - mismatches. - - * apps/JAWS/server/Parse_Headers.{h,cpp} (class Headers_Map): - Changed signature of casting operator to return a pointer - rather than a reference to a constant pointer, to fix - anachronism warning Doug found. - - * apps/JAWS/server/HTTP_Config.{h,cpp}: Added class - HTTP_Config to be a container for HTTP server options - such as locations of directories, port, etc. - - * apps/JAWS/server/HTTP_Helpers.{h,cpp}: Added code to enhance - support for CGI scripts: - - Added HTTP_decode_string to HTTP_Helper class, to deal - with percent codes. - - * apps/JAWS/server/HTTP_Request.{h,cpp}: Added code to enhance - support for CGI scripts: - - Added cgi_, cgi_env_, and cgi_args_ data members to - and corresponding accessors. - - Added nice accessors to the important data members to - simplify other parts of the code. - - Added method to parse URI to determine the name of the CGI - executable if present. - - * apps/JAWS/server/HTTP_Response.{h,cpp}: Added code to - enhance support for CGI scripts: - - Hooks are now present to make the appropriate calls - to activate a CGI program. - - * apps/JAWS/server/*.{h,cpp} - Various changes from the ACE mailing list incorporated. - Cosmetic changes for ACE coding style. - - SGI fixes. - -Tue May 6 00:00:54 1997 Chris Cleeland - - * ace/Message_Block.cpp: Added template specialization for - ACE_Guard<> that prevented ACE from compiling under Linux. - -Mon May 5 22:17:15 1997 Sumedh Mungee - - * apps/JAWS/stress_testing: Removed the usleep definition from - global.h, it was unused by the program. - -Mon May 05 21:01:42 1997 David L. Levine - - * ace/config-linux*.h: added ACE_HAS_STRING_CLASS. Thanks to - Luis Lopes for reporting this. - -Mon May 05 19:58:16 1997 - - * ace/ace.{mak,mdp}: Readded IOStream.cpp to the makefile. - - * ace/Synch_T.h: Added ACE_SYNCH_RECURSIVE_MUTEX. - - * ace/Timer_Queue: Added an extra template parameter to - Timer_Queues that specifies the type of locking to be used - inside of the timer queue. - - Also changed the functor callback routines so that they are more - descriptive compared to operator (). - -Mon May 5 21:37:01 1997 Douglas C. Schmidt - - * ace/Message_Block: Revised the release() logic for - ACE_Message_Block and ACE_Data_Block so that we will delete both - within the same block of code in order to hold the lock. This - should prevent nasty race conditions in multi-threaded programs. - Thanks to Craig Perras for - reporting this problem. - - * ace/Message_Block.cpp: Replaced an explicit acquire()/release() - of ACE_Lock::locking_strategy_ with a call to an ACE_Guard. - - * ace/Containers.cpp (set): Optimized for the common case where - we're increasing the size of the set by 1. - - * ace/Containers: Merged the ACE_Set_Node, ACE_Stack_Node, and - ACE_Set_Node into a single "ACE_Node" class. This tidies up the - code quite a bit. - - * ace: Removed the Set.* and Stack.* files and replaced them with - the Containers.* files. This file contains the ACE_*Stack, - ACE_*Queue, and ACE_*Set classes. If this revised file scheme - breaks existing code please let me know and I'll provide - backwards compatibility. - - * ace/Stack: Changed the name of ACE_Unbounded_Queue::enqueue() to - ACE_Unbounded_Queue::enqueue_tail() and also added - ACE_Unbounded_Queue::enqueue_head(). - - * ace/OS: Changed the names of the parameters of the ACE_OS::mem* - methods from ACE_OS::mem* (void *s, const void *t) to - ACE_OS::mem* (void *t, const void *s) since "t" should stand for - "target" and "s" for "source." Thanks to Andres Kruse - for pointing this out. - - * ace/Stack: Removed the peek() method from ACE_Unbounded_Queue. - This functionality is now subsumed by the get(..., 0) method. - If this breaks any existing code please let me know. - - * ace/Stack.h: Moved all the functionality from ACE_Unbounded_Set - into ACE_Unbounded_Queue. That's really where this belonged in - the first place. Thanks to David Levine for noticing this. - - * ace/Set.h: Moved ACE_Set_Node from the *.cpp file into the *.cpp - file in anticipation of AIX C++ compiler bugs ;-). - - * examples/ASX/Event_Server/Transceiver/transceiver.cpp: - Rearranged the location where we register to receive standard - input so that the socket handle will not be initialized at this - point. Thanks to craig perras for - reporting this. - - * examples/ASX/Event_Server/Transceiver/transceiver.cpp - (Event_Transceiver): Make sure to #ifdef around SIGQUIT for - WIN32 since it lacks this signal. Thanks to craig perras - for reporting this. - - * ace/config-osf1-4.0-g++.h: Removed the ACE_LACKS_SIGNED_CHAR - since this seems to be compiler specific. Thanks to Thilo for - this insight. - - * ace/Strategies_T: Added a number of fixes and enhancements to - the new Hash_Addr and ACE_Cached_Connect_Strategy classes. - - * ace/Strategies_T.h: Added #include for "Hash_Map_Manager.h". - Thanks to Amos Shapira for reporting this. - - * ace/config-hpux-10.*.h: Applied a number of patches courtesy of - Carlos O'Ryan. - - * ace/Dump.cpp: Changed a cast from - - delete (ACE_Dumpable_Ptr *) this->dumper_; - - to - - delete (ACE_Dumpable *) this->dumper_; - - This fixes a potential bug. Thanks to Carlos O'Ryan for this - bug report. - - * ace/DEV_IO.h, - * ace/SPIPE_Stream.h: Removed the = 0 default value for one send() - method to avoid ambiguity with the other send() method. Thanks - to Carlos O'Ryan for this bug report. - - * ace/Map_Manager.cpp (advance): Removed a cast to size_t since - that is always true. Thanks to David Levine for pointing this - out. - - * ace/XtReactor: Moved the remove_handler_i() and - register_handler_i() methods into the protected portion - of the class. Since these should never be called by the - client I've moved them into protected portion to ensure this - is the case. - - * ace/XtReactor: Changed the implementation of the XtReactor to - use long for dealing with timers. Thanks to Stuart Powell - for reporting this. - -Mon May 5 17:16:41 1997 Carlos O'Ryan - - * ace/config-hpux-10.x.h, config-hpux-10.x-nothread.h: - Some patches are needed to compile ACE under HP-UX (using HP/C++), - I documented those patches. - -Mon May 05 11:50:39 1997 David L. Levine - - * netsvcs/lib/Server_Logging_Handler.cpp: fixed ACE_Svc_Handler - specializations, yet again, for Linux w/LXPthreads. Thanks to - Luis Lopes for reporting this - problem with sufficient detail for us to track it down. - - * ace/Stack.* (ACE_Unbounded_Queue): - - 1) made peek () const. - 2) added another peek (u_int index = 0) function that can peek - at any queue item, not just the first. It returns a pointer - to the item (or 0 if not found), to avoid copying. - 3) changed return type of size () from int to size_t. - 4) inlined size (). - - * ace/Strategies_T.cpp (connect_svc_handler, operator==): - added return type. - - * netsvcs/lib/Server_Logging_Handler.cpp: fixed template - specializations for platforms that have neither THREADS nor - TLI. Thanks to Nanbor Wang for reporting this. - -Sun May 4 12:34:09 1997 Douglas C. Schmidt - - * ace/OS.cpp: If ACE_HAS_THREADS isn't defined then we'll just - use mktime() without the locking. - - * ace/Set: Removed the get() methods from the ACE_Fixed_Set and - ACE_Bounded_Set since they don't make much sense on these - abstractions. - - * ace/Set: Changed the new "find" method to be called "get" to - correspond to the new "set" method I'm adding. - - * ace/SString.cpp: Added a operator << for ACE_CString in - order to print it with iostreams. - - * ace/Set.cpp: Added a reset method to the ACE_Unbounded_Set to - remove all the nodes without completely destroying the set. - - * ace/SString: Added friend operator+ to both ACE_CString and - ACE_WString in order to provide a concatenation operator. - - * ace/SString: Added a compare() method to all the ACE String - classes. This behaves just like the Standard C library strcmp() - function. - - * ace/Message_Queue.i: Oddly, there were a bunch of methods - defined in this *.i file that didn't have ACE_INLINE in front of - them. I'm surprised this didn't give compile errors on some - platforms. I've fixed this by moving these methods into the - *.cpp file. - - * ace/Stream, - ace/Service_Repository, - ace/Reactor, - ace/Message_Queue, - ace/Map_Manager, - ace/Malloc_T, - ace/Hash_Map_Manager, - ace/Set: Added a done() method on all the iterators so that - we can check within the iteration itself to see if there are any - remaining elements. In addition, updated the return value of - advance() on all iterators so that it returns 1 if we're not - done and 0 if we're done. - -Sun May 04 07:22:49 1997 David L. Levine - - * ace/Timer_Heap_T.cpp: changed some more int declarations to longs. - -Sat May 3 17:38:19 1997 Douglas C. Schmidt - - * Changed all uses of Reactor::{scheduler_timer,cancel}() and - Timer_{Queue,List,Heap,Wheel}::{schedule,cancel}() to use - long rather than int. This is important since it ensures that - we can make the Timing Wheels trick of casting the - Timer_Node * to long work correctly on machines that have 64 - bit pointers, 64 bit longs, and 32 bit ints (e.g,. DEC - ALPHA). Thanks to Thilo Kielmann - for pointing this out, - even though he finds this solution distasteful ;-). - - * netsvcs/lib/TS_Clerk_Handler.cpp (initiate_connection): I - believe there was also a bug here -- if schedule_timer() returns - 0 that's not an error! - - * apps/Gateway/Gateway/Proxy_Handler_Connector.cpp - (initiate_connection): I believe there was a bug here -- if - schedule_timer() returns 0 that's not an error! - - * tests/IOStream_Test.cpp: Added some minor changes for DEC UNIX. - Thanks to James CE Johnson for reporting - this. - - * ace/IOStream: Added a number of minor changes for DEC UNIX. - Thanks to James CE Johnson for reporting - this. - - * ace/config-osf1-4.0.h: Added - ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS to the config.h file. - Thanks to James CE Johnson for reporting - this. - - * ace/SString: Made the ace_string_null_string_ a static data - member rather than an external constant. This should control - the name space a bit better. - - * ace/SString.cpp: Fixed the ACE_CString::operator += so that it - won't screw up if this->rep_ initially points to the - ACE_String_null_string_. - - * examples/Misc: Added a new test_set.cpp program that exercises - the ACE_*_Set classes. - -Sat May 03 06:56:10 1997 David L. Levine - - * ace/Map_Manager.cpp (dtor): removed void return (typo). - - * ace/Set.cpp (ACE_Fixed_Set::operator =): typo: fs instead of bs. - - * ace/Set.cpp (ACE_Fixed_Set::find): typo: index instead of i. - - * ace/IOStream.cpp: fixed typo: "#if defined" instead of just "#if". - - * tests/Conn_Test.cpp, - netsvcs/lib/{Client_Logging_Handler,TS_Clerk_Handler}.cpp, - netsvcs/clients/Tokens/manual/manual.cpp, - apps/Gateway/Gateway/Event_Channel.cpp,: - apps/JAWS/client/Blob.cpp, - examples/ASX/Event_Server/Event_Server/Peer_Router.cpp, - examples/ASX/Event_Server/Transceiver/transceiver.cpp, - examples/ASX/UPIPE_Event_Server/{Consumer,Supplier}_Router.cpp, - examples/Connection/misc/test_upipe.cpp, - examples/Connection/non_blocking/test_*_connector.cpp: added - ACE_Map_Entry template specialization. It's needed now that the - destructor is explicit. - -Fri May 2 14:57:56 1997 Douglas C. Schmidt - - * ace/Map_Manager.cpp: Added a no-op destructor to ACE_Map_Entry - just to keep some compilers happy. Thanks to Chuck Gehr for - reporting this. - - * ace/config-osf1-4.0.h: Added - - #define ACE_LACKS_IOSTREAM_FX - #define ACE_LACKS_LINEBUFFERED_STREAMBUF - #define ACE_LACKS_SIGNED_CHAR - - Thanks to James CE Johnson for reporting - this. - - * ace/Timer_{Wheel,Heap,List}_T.h: Fixed a typo in all these - classes that was failing to put the keyword "class" after - "friend." Also, replaced the use of the typedef with the - expanded name of the class to work around problems with DEC - C++. Thanks to James CE Johnson for - reporting this. - - * ace/Set: Added a find() method that will return the "ith" - element in the set. - - * ace/Set: Added copy constructors and assignment operators to all - the ACE_*_Set classes. - - * ace/Set.cpp: Changed the implementation of ACE_Unbounded_Set to - use a dummy node and a circular list. This improves performance - and also makes it possible to implement "queue" semantics for - inserting at the tail of the set. - - * ace/config-osf1-4.0.h: Added the ACE_HAS_STRING_CLASS macro. - Thanks to James CE Johnson for this. - - * ace/IOStream: Added the ACE_HAS_STRING_CLASS macro to - replace the nasty #ifdefs we had previously. Thanks to - James CE Johnson for this. - - * ace/config*.g++: Added ACE_HAS_STRING_CLASS for all the GNU - compilers and Win32. - - * ace/config-mvs.h: Added a new version that contains support for - IBM OS/390 r2. Thanks to Chuck Gehr for this. - -Fri May 02 08:14:30 1997 David L. Levine - - * examples/ASX/Event_Server/Transceiver/transceiver.cpp: removed - specializations of ACE Guards because they're in libGateway. - Thanks to Joey Zhu for reporting this problem. - - * examples/ASX/Event_Server/Transceiver/{Makefile,transceiver.cpp}: - added template specializations to transceiver.cpp so that it no - longer needs to be linked with libGateway. - - * examples/ASX/Event_Server/Event_Server/{Makefile,Peer_Router.cpp}: - added template specialization to Peer_Router.cpp so that event_server - no longer needs to be linked with libGateway. - - Thanks to Joey Zhu for reporting the above - link problems. - - * apps/Gateway/Peer/{Makefile,Peer.cpp}: added template - specialization to Peer.cpp so that peerd no longer needs to - be linked with libGateway. - - * Log_Msg.cpp (VxWorks only): fixed used of ::taskDeleteHookAdd (it - should only be called once for all Log_Msg instances) and added call - to ::taskDeleteHookDelete to clean up when the last task exits. - Thanks to Dave Mayerhoefer for - reporting this. - - * tests/Conn_Test.cpp: changed some fprintf print specifiers to avoid - g++ warnings about printing pointer values. - -Thu May 01 00:05:59 1997 - - * tests/Time_Service_Test.cpp (main): Made sure that the backing - store is not there at the start of the program. We need to make - sure because this test kills the Time Clerk and on some - platforms the Clerk is not allowed to do a graceful shutdown. By - cleaning the backing store here, we are sure that we get a fresh - start and no garbage data from a possible aborted run. - - The old code deleting the backing store at the end of the test - is still there but does not work on Win32 as unlink fails with - ERROR_ACCESS_DENIED. I am not sure why this is happening! For - now the unlink at the start of the program will do. - - Also added a wait for the clerk before deleting the backing - store. This way we are sure that we do not delete the backing - store before the clerk is done with it. - - * netsvcs/lib/TS_Clerk_Handler.cpp: Fixed an obscure bug with - ACE_TS_Clerk_Processor. ACE_TS_Clerk_Processor (which is an - ACE_Connector) and all its pending connection objects are still - registered with the Reactor when the process exits and the - Service_Object is deleted. After this the destructor of the - Reactor then calls handle_close on ACE_TS_Clerk_Processor - (which does not exist anymore), causing a seg fault. The - solution is to call ACE_Connector::fini from - ACE_TS_Clerk_Processor::fini. ACE_Connector::fini will - unregister ACE_TS_Clerk_Processor and all pending connects from - the Reactor. - -Wed Apr 30 17:47:11 1997 Douglas C. Schmidt - - * ace/OS.i (getpwnam_r): Changed the expression to check if - getpwnam_r() returns -1 for AIX. Thanks to Chris Lahey for - this. - - * ace/Timer_Wheel_T.h: changed - - // = Don't allow these operations for now. - ACE_Timer_Wheel_T (const ACE_Timer_Wheel_T &); - void operator= (const ACE_Timer_Wheel_T &); - - to: - - // = Don't allow these operations for now. - ACE_Timer_Wheel_T (const ACE_Timer_Wheel_T &); - void operator= (const ACE_Timer_Wheel_T &); - - Thanks to Chuck Gehr for reporting this. - - * ace/OS.cpp: Made mktime() thread-safe. If any platforms support - multi-thread safe versions of mktime() please let me know so we - can set the ACE_HAS_MT_SAFE_MKTIME macro for that config file. - - * ace/OS.i: Added a new special case for getpwnam_r() on AIX. - Thanks to Chris Lahey for reporting this. - -Wed Apr 30 16:01:04 1997 James C Hu - - * ace/OS.i, ace/OS.h: added mktime(). - -Wed Apr 30 14:17:34 1997 David L. Levine - - * ace/config-vxworks*.h: added ACE_LACKS_PWD_FUNCTIONS. Thanks - to Dave Mayerhoefer for reporting - this. - - * ace/OS.i: cleaned up ACE_LACKS_PWD_FUNCTIONS comments a bit. - - * ace/Array.{h,i}: added const operator []. - - * ace/Array.cpp (ctors): reordered initializers to match declaration - order. - - * netsvcs/lib/Server_Logging_Handler.cpp: protect against multiple - inclusion. Thanks to Kevin Martindale - for reporting this problem. - -Wed Apr 30 08:42:55 1997 Douglas C. Schmidt - - * ace: Added a new generic Array class, which we'll use until - STL becomes more widely portable. - - * ace: Added a new macro ACE_LACKS_GETPGID to clean up the code - in ACE_OS::getpgid(). - - * ace: Added new config*.h files and platform*.GNU files for - FreeBSD. Thanks to Nanbor Wang for these. - -Wed Apr 30 07:44:36 1997 David L. Levine - - * ace/config-osf1-4.0*.h: removed ACE_HAS_SIGWAIT. - - * ace/OS.{h,i}: applied Thilo's patch for sigwait on Digital - Unix 4.0, which defines sigwait as a macro. Thanks to - Thilo Kielmann for - this and the above config file patches. - - * ace/IOStream.{h,cpp}: James CE Johnson updated - the IOStream class; see comments in IOStream.h. - - * examples/Logger/client/logging_app.cpp (main), - performance-tests/Misc/test_naming.cpp (*): replaced sprintf - with ACE_OS::sprintf. Thanks to Thilo Kielmann - for reporting these. - -Tue Apr 29 20:03:38 1997 - - * apps/JAWS/stress_testing/http_tester.cpp : Removed usage - of pow (), and changed method of calculating throughput/latency - to use straight multiplication instead of pow (). Updated - Makefile to not link -lm. - -Tue Apr 29 19:57:52 1997 - - * config-win32-common.h (ACE_HAS_TEMPLATE_SPECIALIZATION): Win32 - supports this option. Added to config file. - - * ace: Removed tracing for the following to make things work with - tracing on: - - ACE::timestamp - ACE_FIFO_Send_Msg::send - ACE_SPIPE_Stream::send - ACE_Sig_Guard::ACE_Sig_Guard - ACE_Sig_Guard::~ACE_Sig_Guard - - * netsvcs/servers/main.cpp (main): Added special code for Win32 - such that only SIGINT is being registered with the Signal - Handler. SIGQUIT is not supported on Win32. - - * netsvcs/lib/Token_Handler.cpp (init): Removed the registration - of the Acceptor for SIGINTs. - - * netsvcs/lib/TS_Server_Handler.cpp (init): Same as above. - - * netsvcs/lib/Client_Logging_Handler.cpp (open): Removed the - registration of SIGPIPE for Win32. Win32 does not support - SIGPIPE. - - * tests/Process_Strategy_Test.cpp (server): The new thread must - become owner before it can call Reactor::handle_events. Also - fixed #define typo. - - * ace/OS.cpp (socket_fini): Remove the ACE error message as the IO - Stream objects are already gone by this point in the program. - - * examples/Registry/Registry.mak: Replaced the old makefiles with - this one. Also added _AFXDLL as a preprocessor define, forcing - the correct inclusion of header files that give a consistent - definition of HKEY. This is a hack till we have a better - solution. - - * ace/Event_Handler: Removed the old Proactor callback methods. - -Tue Apr 29 17:39:40 1997 Douglas C. Schmidt - - * ace/config-mvs.h: Added #define ACE_LACKS_LINEBUFFERED_STREAMBUF - for MVS. Thanks to Chuck Gehr for - reporting this. - - * ace: Commented out ACE_TRACE calls in constructors in - several ACE classes in order to avoid problems with circular - initialization dependencies related to mutexes that are - breaking code on WinNT when ACE_NTRACE is set to 0. Thanks - to Lothar Hermann for - reporting these. - - * ace/Reactor.cpp: It looks as if Windows NT isn't returning - the number of bytes requested by a WinSock recv() used in - the ACE_Reactor::notify() in some situations. This is - causing problems for test programs under heavy load. The - fix appears to be to add an additional ACE::recv() to obtain - the remaining bytes. Thanks to Karlheinz for reporting this - and to Irfan for helping to fix it. - - * ace/OS.i: Fixed a very subtle bug with ACE_OS::cond_wait() and - ACE_OS::cond_signal() that only manifests itself when - ACE_HAS_SIGNAL_OBJECT_AND_WAIT is enabled (which isn't the - default). The problem stemmed from the fact that we were - assuming that if we used condition variables it implied that the - external mutex had USYNC_PROCESS scope. In fact, the external - mutexes typically have USYNC_THREAD scope, so - SignalObjectAndWait() was hanging indefinitely. Fortunately, - the fix was easy -- just add a run-time check for the type of - the external mutex and take the appropriate action. Thanks to - Irfan for noticing this. - - * tests/Reader_Writer_Test.cpp: Added a parse_args() function that - allows us to override the default number of reader/writer - threads + the number of iterations. - - * ace/OS: Added patches for Digital UNIX to handle the - getpwnam_r() name. Thanks to Thilo Kielmann - for these patches. - -Tue Apr 29 14:27:19 1997 - - * OS.h: Added ACE_HAS_SVC_DLL. If you write a library and - want it to use ACE_Svc_Export, this will cause those macros - to build dlls. If you want your ACE service to be a static - library, comment out this line. As far as I know, the only - reason to have a library be an ACE "service" is to leverage - the ACE_Svc_Export macros. It's just as easy to define your - own export macros. - -Tue Apr 29 07:25:25 1997 David L. Levine - - * apps/JAWS/server/HTTP_Request.h (HTTP_Request): added destructor - declaration. - - * apps/JAWS/server/Parse_Headers.cpp (parse_header_line): assign local - "value" to value_ field of map_[header]. - - * apps/JAWS/server/HTTP_Request.cpp (HTTP_fix_path): commented this - static function out because it's not used, and g++ warns about that. - - * apps/JAWS: added CVS header to all .h, .i, and .cpp files. - -Tue Apr 29 00:33:46 1997 - - * examples/Reactor/Misc/notification.cpp: Add this test to the - Win32 makefile. - - * ace: Removed config-win32-msvc2.0.h, config-win32-msvc4.0.h - config-win32-msvc4.x.h, and config-winnt-4.0-msvc.h from the - repository. These files have been replaced by config-win32.h - and config-win32-common.h. - - * IOStream_Test.cpp (main): Added return 0 at the end of main(). - - * examples/Reactor/Proactor/test_proactor.mak: Added wsock32.lib - to the link line. I am not sure why we have to do this again - since ace.lib already includes it. Without this library in the - link line, GetAcceptExSockaddr is not defined. Go figure! - - * apps/JAWS/server/jaws.mak: Same as above. - - * ace/ace.{mak,mdp}: Fixed the generation of the release version - of ace.dll such that wsock32.lib is automatically included. - -Tue Apr 29 00:16:27 1997 James C Hu - - * JAWS: Changes to support CGI scripts - - Changed the following files -- - HTTP_Handler.cpp HTTP_Handler.h HTTP_Helpers.cpp - HTTP_Helpers.h HTTP_Request.cpp HTTP_Request.h IO.cpp IO.h - - Added the following files -- - HTTP_Response.cpp HTTP_Response.h Parse_Headers.cpp - Parse_Headers.h - - Removed the file -- - JXH_String.h - - * JAWS/stress_testing: Changed the Makefile to link in the math - library (-lm). - - * ace/OS.h and ace/OS.i: Added support for memmove(). - -Mon Apr 28 21:35:35 1997 Douglas C. Schmidt - - * ace/IOStream.h: Added a new macro called - ACE_LACKS_IOSTREAM_SETGET, which works around bugs with SGI C++ - on IRIX 6.2. Thanks to Torbjorn Lindgren for - reporting this. - - * ace/Timer_List_T.h: Replaced the use of - ITERATOR with ACE_Timer_Queue_Iterator_T to - work around problems with SGI C++. Thanks to - Torbjorn Lindgren for reporting this. - - * ace/Timer_List_T.cpp: Removed the use of NODE * and replaced it - with ACE_Timer_Node_T in order to work around - bugs with certain C++ compilers (i.e., SGI). Thanks to Torbjorn - Lindgren for reporting this. - - * tests/Conn_Test.cpp: Removed some extraneous template - specializations. Thanks to Nanbor Wang for - reporting these. - - * apps/JAWS/client/Blob.cpp: Rearranged some of the template - specializations in the hope of fixing a linker problem with - SunC++ 4.2. - - * ace/config-irix-6.2*.h. It appears that SGI IRIX 6.2 supports - pread() and pwrite() so I enabled the ACE_HAS_P_READ_WRITE macro - in the IRIX 6.2 config file. - - * ace/OS.cpp: Implemented ACE_OS::pread() and ACE_OS::pwrite() for - systems that lack this feature. The implementation uses the new - ACE_Thread_Mutex monitor lock in order to ensure atomicity - between the lseek() and the read()/write(). - - * ace/OS.cpp: Finally broke down and added a ACE_Thread_Mutex - monitor lock to the ACE_OS implementation file. This is useful - for situations where we need to serialize certain ACE_OS - emulation calls (e.g., ACE_OS::{pwrite,pread}). - -Mon Apr 28 15:42:48 1997 David L. Levine - - * apps/JAWS/client/blobby.cpp: updated template specializations. - - * apps/JAWS/stress_testing/global.h: removed #includes of system - headers because ace/OS.h takes care of them. They were causing - warnings with g++ (because they were #included before OS.h). - - * examples/ASX/UPIPE_Event_Server/Supplier_Router.cpp: fixed - typos in template specializations. - - * tests/Conn_Test.cpp,Message_{Block,Queue}_Test.cpp, - Process_Strategy_Test.cpp: fixed template specializations - for platforms without threads. Thanks to Nanbor Wang - for pointing out this problem. - - * ace/Connector.h: use ACE_SYNCH_RW_MUTEX in Map typedefs - instead of old ACE_RW_Mutex (which should have been - ACE_Thread_RW_Mutex) and ACE_Null_Mutex (depending on - whether the platform has threads). - - * ace/Service_Record.cpp: added ACE_NULL_SYNCH template - specializations with threads, because they're still needed even - with threads. This way, individual programs don't have to - specialize these. - - * ace/Task.cpp: added ACE_TSS and - ACE_TSS template specializations, if the platform - has threads and TSS. This way, individual programs don't have - to specialize them. - - * apps/Gateway/Gateway/Event_Channel.cpp, - Proxy_Handler{,_Connector}.cpp,apps/JAWS/server/HTTP_Server.cpp, - examples/ASX/Event_Server/Transceiver/transceiver.cpp, - examples/ASX/UPIPE_Event_Server/Consumer_Router.cpp, - examples/Connection/blocking/SPIPE-connector.cpp, - examples/Connection/misc/{Connection_Handler,test_upipe}.cpp, - examples/Connection/non_blocking/test_*.cpp, - examples/IOStream/server/iostream_server.cpp, - examples/Logger/Acceptor-server/server_loggerd.cpp, - examples/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.cpp, - netsvcs/lib/Client_Logging_Handler.cpp, - netsvcs/lib/TS_{Clerk,Server}_Handler.cpp: - removed template instantiations that are now in - ace/Service_Record.cpp and ace/Task.cpp. This should help - on platforms without threads. - - * examples/ASX/UPIPE_Event_Server/Supplier_Router.cpp: fixed - typos in template specializations. - - * examples/ASX/Event_Server/Event_Server/Peer_Router.cpp: protected - the ACE_*Guard template instantiations with #ifdef ACE_HAS_THREADS. - - * examples/ASX/Event_Server/Transceiver/transceiver.cpp: protected - the ACE_*Guard template instantiations with #ifdef ACE_HAS_THREADS. - - * apps/JAWS/stress_testing/benchd.cpp (serve): added return -1 if - the strcmp () fails so that the function always returns a value. - -Mon Apr 28 18:53:58 1997 Darrell Brunsch - - * ace/OS.h: Added ACE_DEFAULT_TIMER_WHEEL_SIZE and - ACE_DEFAULT_TIMER_WHEEL_RESOLUTION constants. - - * ace/Timer_Wheel_T.h: switched to use these constants - - * tests/Timer_Queue_Test.cpp: switched to use these constants - - * ace/Timer_Wheel: added a new strategy for Timer Queues, one - based on a hash table of ordered lists. - - These files were added: - - - ace/Timer_Wheel.h - - ace/Timer_Wheel_T.h - - ace/Timer_Wheel_T.cpp - - These files were also changed to accomodate Timer Wheel - - - ace/Timer_Queue.cpp - - ace/Timer_Queue_T.h - - ace/Timer_Queue_T.cpp - - tests/Timer_Queue_Test.cpp - -Mon Apr 28 17:32:04 1997 Chris Cleeland - - * examples/ASX/Event_Server/Event_Server/Peer_Router.cpp: Added - template specializations. - - * examples/ASX/Event_Server/Transceiver/transceiver.cpp: Added - template specializations. - - * ace/OS.cpp (thr_create): Hopefully resolved tension - btw. priority determination algorithms for IRIX, LinuxThreads, and - DEC UNIX 4.0. Thanks to Thilo for information that lead to this. - -Mon Apr 28 00:25:17 1997 - - * apps/JAWS/client: Removed ACE_Export macro from class - declarations. Fixed buffer size bug in - ACE_Blob_Reader::receive_reply (). - -Sun Apr 27 22:22:14 1997 - - * ace/Proactor: The Proactor can now be registered with ReactorEx - and both of them can be run from ReactorEx's event loop. Added a - flag to Proactor's constructor that indicates whether the - Proactor will be used in conjunction with ReactorEx event - loop. Only if this flag is set will the event in the Proactor be - used by the Asynch IO components. This will help with - performance. - - * examples/Reactor/Proactor/test_multiple_loops.cpp: Added a new - test that shows the integration of the event loops of Proactor - and ReactorEx. - - * ace/Asynch_IO: Added an ACE_EVENT parameter to the constructors - of classes that inherit from the OVERLAPPED structure. This way - the Proactor's event_ can be set in the OVERLAPPED structure. - - Also changed the open methods on the Asynch IO classes to take a - Proactor as an extra parameter. - - Changed ACE_Handler's handle_timeout() to handle_time_out() in - ACE_Handler. This is temporary till we decide on the argument - about mixing the interface of ACE_Event_Handler and - ACE_Handler. This change allows user to inherit from ACE_Handler - and ACE_Event_Handler and use the different handle_timeout() - method, one of which returns void and the other return an int. - - * examples/Reactor/Proactor/test_timeout.cpp: This file got - affected by the above change. - -Sun Apr 27 17:44:28 1997 Douglas C. Schmidt - - * ace/OS.h: Added a new #define called ACE_DEFAULT_HTTP_SERVER_PORT. - Naturally, this defaults to 80... - - * apps/JAWS/client/blobby.cpp: Cleaned up the blobby example so - that it conforms more closely to the ACE style guide. - - * examples/IPC_SAP/SOCK_SAP/CPP-in{server,client}.cpp: Took out - the VxWorks-specific #ifdefs. I believe this is fixed in ACE_OS - now. If not, the burden of proof is on the VxWorks testers to - prove me wrong ;-). - - * ace/Synch_T.h: Added a new macro ACE_SYNCH_RW_MUTEX to - complement the existing ACE_SYNCH_MUTEX and ACE_SYNCH_CONDITION - macros. This will clean up lots of code in various test - programs. - - * ace/Synch_T.h: Added two new macros, ACE_SYNCH_MUTEX and - ACE_SYNCH_CONDITION. These default to ACE_MT_SYNCH::MUTEX and - ACE_MT_SYNCH::MUTEX if template typedefs are supported and - ACE_HAS_THREADS is enabled. If template typedefs *aren't* - supported but ACE_HAS_THREADS is enabled these macros turn into - ACE_Thread_Mutex and ACE_Thread_Condition. Finally, if - ACE_HAS_THREADS is disabled these macros turn into - ACE_Null_Mutex and ACE_Null_Condition. These macros make it - possible to write code that is more portable across platforms - and configurations. Thanks to Carlos O'Ryan for this - suggestion. - - * ace/OS.h: Replaced all uses of ACE_SYNCH_MUTEX and - ACE_SYNCH_CONDITION with ACE_SYNCH_MUTEX_T and - ACE_SYNCH_CONDITION_T since (1) this usage relates to templates - and (2) it frees up the namespace for the new ACE_SYNCH_MUTEX - and ACE_SYNCH_CONDITION macros. - - * ace/Timer_Queue.cpp: Added yet more template specializations for - the benefit of GCC (ugh). - - * ace/Timer_Wheel_T.cpp: Had to revise things just a bit to - compile with GCC and it's lame template mechanism. This - required changing NODE * to ACE_Timer_Node_T * in - several method definitions. - - * apps/JAWS/server/HTTP_Server.h: Changed the use of ACE_WIN32 to - ACE_HAS_THREAD_SAFE_ACCEPT since this is a more precise way to - determine if the platform allows multiple threads to call - accept() on the same port. If other platforms support this - feature please make sure to add it to their config*.h files. - - * ace/config-win32-common.h: Defined ACE_HAS_THREAD_SAFE_ACCEPT, - since Win32 allows multiple threads to call accept() on the same - port. - - * examples/ASX/UPIPE_Event_Server/Supplier_Router.cpp: The mutex - should be ACE_RW_Mutex, not ACE_Null_Mutex... - -Sun Apr 27 18:13:24 1997 Irfan Pyarali - - * ace/Proactor.h: Added Timer_Wheel support. - -Sun Apr 27 18:13:24 1997 Sumedh Mungee - - * apps/JAWS/client: Removed blobby.h, and replaced it with - blobby_options.{h,cpp}. - - * apps/JAWS/stress-testing: Removed unused argument warnings - etc. - -Sun Apr 27 07:41:44 1997 David L. Levine - - * ace/Timer_Queue.cpp: added #includes for template specializations, - and removed some unused specializations. - - * ace/Timer_Wheel_T.cpp: added newline at end of file. - - * ace/Timer_Wheel_T.cpp (ACE_Timer_Wheel_T ctor): reordered - initializers to match declaration order. - - * ace/Log_Msg.cpp (log): added support for indenting output according - to the current nesting level by adding a new format specifier, I, - which indents the output according to the current trace_depth_. - If a width is also specified it is taken as multiplier (so that - the indentation is n*trace_depth_). Thanks to Matthias Kerkhoff - for providing the code for this feature! - - * examples/Reactor/Misc/test_timer_queue.cpp: fixed typos in - #includes, and added #include of ace/Timer_Heap.h. - -Sat Apr 26 17:19:56 1997 Irfan Pyarali - - * ace/Timer_Queue.cpp: The correct Timer_Queue.cpp file was not - checked in. Also the necessary #include was missing. - - * ace/Proactor.h: Proactor need all three Timer include files. - - * ace/ace.{mdp,mak}: Updated for changes to Timer files. - - * ace: Updated the following files to include /**/ before an - include file directive: OS.h, config-win32-common.h, - bstring.h. Thanks to Matthias Kerkhoff - for reporting this. - -Sat Apr 26 13:41:15 1997 Douglas C. Schmidt - - * ace/config-sco-5.0.0-mit-pthread.h: Added - ACE_LACKS_PTHREAD_CANCEL. Thanks to Arturo Montes - for reporting this. - - * ace: Came up with a scheme that allowed us to remove the - ace/Timers.{h,i,cpp} files by adding - ACE_Timer_{Queue,Heap,List}_T.{h,i,cpp} files instead. Thus, no - existing code should break. - -Fri Apr 25 17:17:06 1997 Chris Cleeland - - * ace/OS.cpp (thr_create): Fixed the fix from Thilo so that it - compiled properly on Linux. Hopefully I didn't break his, and I - should have detected the problem earlier. Mea culpa. - -Fri Apr 25 12:45:23 1997 Douglas C. Schmidt - - * ace/OS.h: Added a new macro called ACE_HAS_SIG_MACROS for the - case where the frigging OS defines things like sigismember and - sigfillset as macros (ugh). - - * ace/FILE_IO.h: Removed a trailing default initializer from the - send() method since it was ambiguous. Thanks to Carlos O'Ryan - for reporting this bug. - - * ace/OS.i (select): Unfortunately the (operator timeval*) defined - for ACE_Time_Value was not used in ACE_OS::select (int width, - fd_set *rfds, fd_set *wfds, fd_set *efds, const ACE_Time_Value - *timeout) because the operator cannot be applied for a - ACE_Time_Value*. Therefore, I fixed this as follows: - - ACE_SOCKCALL_RETURN (::select (width, - (ACE_FD_SET_TYPE *) rfds, - (ACE_FD_SET_TYPE *) wfds, - (ACE_FD_SET_TYPE *) efds, - timeout == 0 ? 0 : (timeval *) *timeout) , int, -1); - - Thanks to Carlos O'Ryan for reporting this bug. - - * ace: Applied a slew of patches from Carlos O'Ryan in order to - get ACE to compile on HP/UX 10.x with the aCC compiler. - - * ace/Shared_Memory_MM: Export the filename in - ACE_Shared_Memory_MM class in order to aid debugging. Thanks to - Ashish Singhai for reporting - this. - -Fri Apr 25 14:58:38 1997 Irfan Pyarali - - * ace/Timers: Updated the following files to make it compile on - g++. The following files were updated: - - Proactor.cpp Timer_Heap.cpp Timer_List.cpp Timer_Queue.cpp - Timers.cpp - -Thu Apr 24 21:13:51 1997 - - * ace/Timer_Queue: Decoupled the Timer Queue from - ACE_Event_Handler and the callback routines in the handler - (handle_timeout and handle_close). The new Timer Queue is - parameterized by the type of data to store and a FUNCTOR on - which methods are invoked by the Timer Queue when timeouts and - cancellations occur. - - No changes occured to the algorithms of the different - implementations of the Timer Queues (Timer List and Timer - Heap). Timer Queues, Timer List, and Timer Heap were all renamed - as _T. However, typedef were added such that there is now - an ACE_Timer_Queue, ACE_Timer_Heap, and ACE_Timer_List, each - being an instantiation of the respective template classes. The - instantiation is done with ACE_Event_Handler as the type of data - to be stored in Timer Queue and - ACE_Event_Handler_Handle_Timeout_Upcall as the FUNCTOR that does - the appropriate upcall to ACE_Event_Handler. - - Due to these typedefs, 99.9% of existing code should not - break. However, the following two will cause problems: - - (a) Forward declarations of Timer_Queue will not work! This is - because Timer_Queue is now a typedef and not a class. - - (b) #include "ace/Timer_Queue.h" will not be enough to get the - ACE_Timer_Queue typedef. The new typedefs are in a new file - called Timers.h. This file also has typedefs for ACE_Timer_Heap - and ACE_Timer_List. - - Currently Proactor is the only class that uses a different - instantiation of the Timer Queue class. Proactor's Timer Queue - class is instantiated with ACE_Handler as the type of data to be - stored in Timer Queue and ACE_Proactor_Handle_Timeout_Upcall as - the FUNCTOR that does the appropriate posting to the Proactor's - completion port. - - The Upcall Strategy is not needed any more cause it is replaced - by the FUNCTORs. Thus this is removed. - - Small modifications were made to the following files - because of the changes to Timer_Queue. - - - examples/Reactor/Misc/test_timer_queue.cpp - - examples/Reactor/Proactor/test_timeout.cpp - - tests/Timer_Queue_Test.cpp - - ace/Makefile (both UNIX and Win32) - - ace/Connector.h - - ace/Reactor.h - - ace/ReactorEx.h - - ace/Proactor.h - - * ace/Proactor: Proactor now uses the new timer queues. Proactor's - Timer Queue class is instantiated with ACE_Handler as the type - of data to be stored in Timer Queue and - ACE_Proactor_Handle_Timeout_Upcall as the FUNCTOR that does the - appropriate posting to the Proactor's completion port. This will - help reduce the overhead of creating new act for each - timer. This also enables the cancellation of entire - ACE_Handlers. - - * examples/Reactor/Misc: Added Win32 makefiles. - - * ace/Shared_Memory_MM.i: Fixed typo. - - * ace/SOCK_Connector.cpp: Fixed typo. - -Thu Apr 24 13:56:28 1997 Douglas C. Schmidt - - * ace/SOCK_Dgram.cpp: Added support for FreeBSD (i.e., BSD 4.4) - features for passing file descriptors between processes. Thanks - to Nanbor Wang for reporting this. - - * ace/LSOCK_Stream.cpp: Added support for FreeBSD (i.e., BSD 4.4) - features for passing file descriptors between processes. Thanks - to Nanbor Wang for reporting this. - - * ace/LSOCK.cpp: Added support for FreeBSD (i.e., BSD 4.4) - features for passing file descriptors between processes. Thanks - to Nanbor Wang for reporting this. - - * ace/SOCK_Connector.cpp (complete): There's a bug in WinNT that - causes non-blocking connects to fail. The workaround is to - sleep for 1 millisecond. Thanks to Steve Huston - for reporting this. - - * ace/Connector.cpp (handle_output): There's a bug in WinNT that - causes non-blocking connects to fail. The workaround is to - sleep for 1 millisecond. Thanks to Steve Huston - for reporting this. - - * tests/Conn_Test.cpp: Changed from operator != to operator == to - be consistent with what is required by the ACE_Hash_Map_Manager. - - * ace/Hash_Map_Manager: Factored out the equality comparison into - an equal() method in order to facilitate template - specialization. In addition, rather than using the != operator - we now default to using the operator== operator and negating the - result. This is consistent with the behavior of the - ACE_Map_Manager. - - * ace/Map_Manager: Factored out the equality comparison into an - equal() method in order to facilitate template specialization. - - * ace/OS.i: Added a new #ifdef called ACE_LACKS_PTHREAD_CANCEL. - I'm not sure which platforms should set this, but it fixes - a bug with ACE_OS::thr_cancel(). Thanks to Eric Dean - Russell for reporting this. - - * tests/Process_Strategy_Test.cpp (handle_input): We were - comparing EOF to a char, which gets complaints on platforms - where char is unsigned by default. I added a cast of EOF to - char to fix this. Thanks to Amos Shapira for - reporting this. - - * apps/JAWS/server/HTTP_Helpers.cpp (instance): Changed the - return type from const char * to const char **. Thanks to - Amos Shapira for reporting this. - - * ace/OS.i (getpwnam_r): Added a missing #else. Thanks to - Amos Shapira for reporting this. - - * ace/Timer_Heap: Made many minor enhancements to ACE_Timer_Heap - in an effort to figure out why we're getting memory leaks. - -Thu Apr 24 09:33:53 1997 David L. Levine - - * Makefile: modified the TIMESTAMP macro to update the third - component, if there is one, of the version number in the VERSION - file. This assumes that alpha/beta releases are numbered with - three components, and that final releases are not. So, if the - version number is, e.g., 4.2, it will not be modified because it - is assumed to be for a final release. Manual switching between - alpha/beta and final release "modes" is therefore still required. - - * ace/Timer_Heap.cpp (copy): added cast of max_size_ to int to avoid - signed/unsigned comparison. - - * ace/config-sunos5.4-g++.h: removed - ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES because it caused compile - warnings about conversion from `(int)' to `(...)' at Signal.i:113. - (And the other sunos5.4 config files don't have it.) - Thanks to Joey Zhu for reporting this. - - * tests/Timer_Queue_Test.cpp (main): added delete of timer_ids array - to avoid memory leak. - -Wed Apr 23 22:56:57 1997 Sumedh Mungee - - * apps/JAWS/client/*: Fixed warnings due to size_t - * apps/JAWS/client/Blob_Handler: Fixed error by passing - pointer to base class ACE_Blob_Handler instead - of pointing to ACE_Blob_Reader, in call to connect - -Wed Apr 23 20:57:35 1997 James C Hu - - * ace/OS.i and ace/OS.h: added methods for getpwnam and - getpwnam_r, with hooks for NT. - - * ace/config-irix6.2.*: added ACE_LACKS_PWD_REENTRANT_FUNCTIONS. - -Wed Apr 23 14:27:48 1997 David L. Levine - - * ace/Timer_Queue.cpp (ACE_Timer_Queue ctor): reordered initializers - to match declaration order. - - * tests/Process_Strategy_Test.cpp: added ACE_Singleton template - specialization. In function client (), null terminated "buf" - before call to ACE_OS::strrchr () to avoid uninitialized memory - read. Also, fixed typo in test name (argument to ACE_START_TEST). - - * examples/Service_Configurator/Misc/Timer_Service.cpp (init): changed - type of loop index to int to avoid signed/unsigned comparison, and - initialized "interval" so that it has a value even if one isn't - specified on the command line. - -Wed Apr 23 10:52:45 1997 Chris Cleeland - - * ace/OS.cpp (thr_create): Removed errant preprocessor conditional - for determining the scheduling priority. Thanks to Thilo Kielmann - for reporting this. - -Wed Apr 23 09:06:52 1997 Douglas C. Schmidt - - * tests/Process_Strategy_Test.cpp: Finished updating this program - so that it is an automated test. - - * ace/Acceptor.h: Moved get_handle() into the public portion of - the Acceptor. - - * include/makeinclude/platform_irix6.2_sgic++.GNU (SOBUILD): There - was an extra @ in $@@. Thanks to Amos Shapira - for reporting this. - - * apps/JAWS/client/Blob[_Handler].cpp: Added casts for free ((void - *) filename_);. Thanks to Amos Shapira for - reporting this. - - * apps/JAWS/server/HTTP_Helpers.h (class HTTP_Status_Code): - Removed an extraneous const * from the definition of instance(). - Thanks to Amos Shapira for reporting this. - -Wed Apr 23 03:15:11 1997 James C Hu - - * apps/JAWS/server/README: Updated to add some clarity and more - useful information. - -Tue Apr 22 20:17:00 1997 Douglas C. Schmidt - - * ace/Synch.cpp: Added a new method called open() to ACE_File_Lock - so that we don't have to initialize it solely in the - constructor. - - * tests/Process_Strategy_Test.cpp: Added new test code that - exercises the ACE_Process_Strategy, ACE_Thread_Strategy, and - ACE_Reactive_Strategy classes. - - * ace/Strategies_T: Added a new class called - ACE_Reactive_Strategy, which inherits from - ACE_Concurrency_Strategy and registers new Svc_Handlers with the - Reactor. - - * ace/Strategies_T.cpp (ACE_Thread_Strategy): Added a check for - failed open() methods and call ACE_ERROR. - - * tests/Map_Manager_Test.cpp: Added a template specialization for - the ACE_Hash_Map_Manager::hash() method, which is enabled if the - compiler supports template specializations. - - * ace/Hash_Map_Manager.h (pool): Moved the ext_id.hash() call into - a separate method so that we can perform template specialization - of it more easily. - - * ace/README: Added a new #define called - ACE_HAS_TEMPLATE_SPECIALIZATION so that we can work around funky - compilers that don't support this advanced template feature. - - * ace: Added Nanbor Wang's port to FreeBSD. The port is done - at FreeBSD 3.0-current as of 2/9/97, which is the - latest stable system before Lite2 merge. Since the merge is - current under testing and changes are introduced in a daily - basis, I don't recommend using -current after the date. You - can specified the date in your "supfile", run CVSup to get the entire - source tree and do a 'make world' to update (or reverse) your - system. - - Pthread library is provided by John Birrell. There is a - bug fix at mid April so you may want to CVSup the latest libc_r - library and re-make the pthreaded library. - - A shared library must be name as lib.so. (e.g. libACE.4.1.0). I would recommend adding a - post-compile hook in the Makefile so we FreeBSDers can - rename the shared library to it's proper name with correct - major and minor version number attached. (which is a trick - BSD library makefiles use.) - - * examples/OS/Process/process.cpp (main): Replaced the use of - "/bin/cat" with "cat" since we are now using execvp(). Thanks - to Nanbor Wang for reporting this. - - * ace/Process.cpp (start): Changed the use of execv() to execvp() - in order to avoid having to pass in the full pathname. - - * ace/OS.i (sigwait): Added an #ifdef for FreeBSD so that we - return ACE_NOTSUP_RETURN(-1) for ACE_OS::sigwait(). Thanks to - Nanbor Wang for reporting this. - -Tue Apr 22 17:46:30 1997 - - * Process.cpp (start): We must pass in 0 instead of "" to - CreateProcess for the current working directory. - -Tue Apr 22 01:38:14 1997 - - * ace/Timer_Queue: Added ACE_Upcall_Strategy as a parameter to the - constructor. will call upcall> if - is not 0. Else it will call - on the . Thus ACE_Upcall_Strategy becomes a - vehicle for extending the behavior of ACE_Timer_Queue wrt the - upcall (callback) *without subclassing*. Hence, it's an example - of the Bridge/Strategy patterns. - - This also affected ACE_Timer_List and ACE_Timer_Heap - - * ace/Strategies: Added ACE_Upcall_Strategy. - - * ace/Proactor: Added timing support to the calls. - - * ace/Asynch_IO: ACE_Handler now supports handle_timeout. - - * ace/Proactor: Added timer support for the new Proactor. This - new scheme allows any of the threads in the "thread pool" - waiting on the completion port of the Proactor to execute the - callback routine of the handler. - - The implementation included adding ACE_Proactor_Timer_Handler - class that has a thread that will wait on the earliest time in a - timer queue and an event. When a timer expires, the thread will - post a completion event on the port and go back to waiting on - the timer queue and event. If the event is signaled, the thread - will refresh the time it is currently waiting on (in case the - earliest time has changed). - - The ACE_Proactor::Asynch_Timer class is posted to the completion - port when a timer expires. When the method of this - object is called, the 's handle_timeout method will be - called. - - * examples/Reactor/Proactor/test_timeout: This example illustrates - the new timer features in the Proactor - - * examples/Reactor/Proactor/test_proactor.{mdp,mak}: Added new - example. - -Mon Apr 21 18:14:32 1997 Irfan Pyarali - - * ace/config-win32-common.h: Added checks around _AFXDLL before - defining it. Thanks to Bruce Meyer for - pointing this out. - -Mon Apr 21 11:31:16 1997 Chris Cleeland - - * examples/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.cpp: - Removed some unnecessary explicit template instantiations. - - * examples/Threads/barrier1.cpp (main): Explicitly converted - n_threads to int. - -Sun Apr 20 23:08:37 1997 Irfan Pyarali - - * ace/{Local,Remote}_Tokens.h: Added a private declarations of the - copy constructor and assignment operator for classes that - inherit from ACE_TSS. This is necessary since the compiler will - auto generate these two operations that will end up using the - non-existent copy constructor and assignment operator from the - TSS class and cause linker errors. - -Sun Apr 20 20:47:34 1997 Sumedh Mungee - - * apps/JAWS/client: Reworked the ACE_Blob* classes to work - with the new Connector behavior. Added README for this - directory. Added comments. - - * apps/JAWS/stress-testing: Added README file - -Sun Apr 20 13:11:25 1997 Douglas C. Schmidt - - * apps/Makefile: By default, we now compile JAWS along with the - rest of ACE. I've also added some README files that explain - what JAWS is all about. - - * examples/Service_Configurator/Misc/Timer_Service: Improved the - Timer_Service test so that it makes more sense and is better - documented. - -Sat Apr 19 11:56:35 1997 Douglas C. Schmidt - - * include/makeinclude: Removed the platform_irix6.2_sgiCC.GNU - from the release. Thanks to Torbjorn Lindgren - for these fixes. - - * include/makeinclude/platform_irix6.2_sgic++.GNU: Updated the SGI - C++ platform config file. Thanks to Torbjorn Lindgren - for these fixes. - - * ace/Log_Msg.cpp (log_hexdump): The char * arguments should be - const char *'s. Thanks to Matthias Kerkhoff - for reporting this. - -Sat Apr 19 18:52:44 1997 David L. Levine - - * (format_hexdump): changed type of first arg to const char * - for compatibility with Log_Msg::log_hexdump (). - -Thu Apr 17 08:25:06 1997 Douglas C. Schmidt - - * ace/Memory_Pool.h: Fixed a couple of typos in Memory_Pool - classes. Thanks to Neil B. Cohen for reporting - this. - - * netsvcs/lib/Name_Handler.h: Arrgh, there was still one more - missing #include that I forgot to move into the *.h file. - Thanks to David Levine for noticing this. - - * ace/Synch.cpp (wait): There was a bug in - ACE_Condition::wait(MUTEX& mutex, const ACE_Time_Value - *abstime.) Basically when abstime is zero, it ignores the - parameter "mutex" that has been passed to it and instead goes on - to call "ACE_Condition::wait()" which uses "this->mutex_" - as the mutex to be released and not the mutex that the caller - has given. The fix is to change the call "this->wait()" in the - if-clause to: - - return ACE_OS::cond_wait (&this->cond_, &mutex_.lock_); - - Thanks to Ashish Singhai for reporting - this. - -Thu Apr 17 16:33:21 1997 David L. Levine - - * ace/Memory_Pool.cpp: fixed typos in ACE_MMAP_Memory_Pool_Options - constructor declaration and initializer list. In init_acquire, - added cast of minimum_bytes_ to size_t to avoid signed/unsigned - comparison. - - * include/makeinclude/{platform*,wrapper_macros}.GNU: - moved -g out of wrapper_macros.GNU and into each platform - file so that -gstabs can be used on SCO. Thanks to - Ganesh Pai for reporting that problem. - - (The real change was getting rid of the CFLAGS += DCFLAGS - default. We could have left DCFLAGS=-g in wrapper_macros.GNU - and overridden for SCO. But the way I changed things, the - C/CFLAGS pieces are together in each platform file, so they're - easier to find.) - -Wed Apr 16 17:05:55 1997 Douglas C. Schmidt - - * ace/Memory_Pool.cpp (acquire): Added code to enable a minimum - bytes field with the Shared_Memory_Pool. Thanks to Fred LaBar - for these enhancements. - - * tests/Process_Strategy_Test.cpp: Only compile this test if - ACE_LACKS_EXEC is *not* defined since ACE_Process_Strategy - requires fork(). Thanks to Irfan for pointing this out! - - * netsvcs/lib: Fixed a couple o' typos that had escaped detection - last night. Thanks to David Levine for reporting this. - - * ace/Synch[_T].h: removed the use of {} rather than ; for - the private copy constructors and assignment operators. - Hopefully this won't break code on older C++ compilers. Thanks - to Berni Merkle for suggesting this. - - * Added a whole slew of minor fixes for unused variables in - the tests and examples. Thanks to Torbjorn Lindgren - for reporing these. - - * ace/Handle_Set.cpp (ACE_Handle_Set_Iterator): The order of - the clause - - this->handles_.mask_.fds_bits[this->index_] == 0 - && this->num_ < ACE_Handle_Set::MAXSIZE - - was backwards. It should be: - - this->index_ < ACE_Handle_Set::NUM_WORDS - && this->handles_.mask_.fds_bits[this->index_] == 0 - - Thanks to Michael Newton for - reporting this. - -Wed Apr 16 21:34:53 1997 David L. Levine - - * tests/Process_Strategy_Test.cpp: added template specializations. - -Wed Apr 16 15:46:58 1997 - - * tests/Process_Strategy_Test: Added test to batch files and - MSVC++ Makefiles. - - * tests/Process_Strategy_Test.cpp (open): Added UNICODE support. - - * ace/OS.h: Added SIGCHLD to Win32 section. - - * ace/config-win32-common.h: UNICODE should not be automatically - defined if ACE_HAS_UNICODE is defined. ACE_HAS_UNICODE signifies - that the OS has UNICODE support. It does not mean that your code - must be UNICODE. UNICODE must be defined at the project level. - -Wed Apr 16 16:55:47 1997 David L. Levine - - * ace/SString.{h,cpp}: Modified CString to not allocate 1 byte for - a 0 length string. Instead, set the internal representation to - the address of static class character null_string_. - -Wed Apr 16 11:47:35 1997 Chris Cleeland - - * ace/Map_Manager.cpp (free_search_structure): Added the loop - variable back in that must have been inadvertently deleted in the - previous entry. - -Wed Apr 16 09:35:39 1997 David L. Levine - - * ace/Map_Manager.cpp (free_search_structure): changed type of - loop index to size_t to avoid signed/unsigned mismatch. - -Wed Apr 16 04:07:50 1997 Douglas C. Schmidt - - * ace/Strategies_T: Widened the constructor interface for - ACE_Process_Strategy based on the feedback I got from - implementing the Process_Strategy_Test.cpp program. - - * tests/Process_Strategy_Test.cpp: Added an interesting new test - that illustrates the use of the ACE_Process_Strategy and the - ACE_File_Lock. To exercise this program, you can telnet to it - and type "read" and "inc" to query and change the count of - the numbers in the file, respectively. - - * ace/Connector.cpp (create_AST): I fixed a couple of things - in Connector.cpp: - - - In create_AST, it needs to save and restore errno, else it - gets wiped on Win32 and other platforms. - - - On Win32 when a non-blocking connect completes and handle_output is - called, it tries to get the peer address. If done too quickly, it - fails. I put in a Sleep(0) call. I think this is not a great - solution, but I don't have a better one yet. - - Thanks to Steve Huston for fixing - these bugs. - -Tue Apr 15 17:09:33 1997 Douglas C. Schmidt - - * ace/SOCK_Stream.cpp (close): Removed the call to close_writer() - on UNIX since that doesn't do the correct thing in many - cases since it causes a protocol transmission which isn't - what we want if we're using fork(). - - * ace/Strategies_T.cpp (activate_svc_handler): Added a call to - svc_handler->destroy() in the parent since we don't need it and - we're leaking descriptors and memory otherwise... Thanks to - Kevin Boyle for reporting this. - - * ace/OS.i (thr_sigsetmask): Replaced the use of - PTHREADS_1003_DOT_1C with ACE_HAS_PTHREAD_SIGMASK. Thanks to - Arturo Montes for suggesting this. - - * ace: Changed all uses of ACE_HAS_PTHREADS_XAVIER to - ACE_HAS_PTHREAD_SIGMASK, which is more descriptive. Thanks to - Arturo Montes for suggesting this. - - * ace/config-aix-4.2.x.h: Added #define ACE_LACKS_RWLOCK_T to make - things compile with AIX 4.2. Thanks to Jeremy Buch - for reporting this. - - * ace/XtReactor.cpp (register_handler_i): Added "[]" to delete - this->ids_ since it is an array. Thanks to Jean-Marc Strauss - for reporting this. - - * netsvcs/lib: Moved all the class definitions into the *.h files - to avoid complaints from the IBM C++ compiler. - - * ace/OS.h: Added a #define for WNOHANG since this is missing on - NT. Thanks to Brian Mendel for reporting - this. - - * examples/Connection/non_blocking/test_sock_connector.cpp: Added - a typedef for ACE_RW_Mutex so that the code compiles on non-MT - platforms. Thanks to Ganesh Pai for - reporting this. - - * examples/Connection/non_blocking/test_tli_connector.cpp: Added a - typedef for ACE_RW_Mutex so that the code compiles on non-MT - platforms. Thanks to Ganesh Pai for - reporting this. - - * examples/Connection/misc/test_upipe.cpp: Added a typedef for - ACE_RW_Mutex so that the code compiles on non-MT platforms. - Thanks to Ganesh Pai for reporting this. - - * performance-tests/Synch-Benchmarks/Options.cpp: Added a #ifdef - for ACE_Thread_Mutex so that the code compiles on non-MT - platforms. Thanks to Ganesh Pai for - reporting this. - - * examples/ASX/Event_Server/Transceiver/transceiver.cpp: Added a - typedef for ACE_RW_Mutex so that the code compiles on non-MT - platforms. Thanks to Ganesh Pai for - reporting this. - - * examples/ASX/UPIPE_Event_Server/Consumer_Router.cpp: Added a - typedef for ACE_RW_Mutex so that the code compiles on non-MT - platforms. Thanks to Ganesh Pai for - reporting this. - - * examples/ASX/Event_Server/Event_Server/Options.cpp - (print_results): Although rusage struct is defined on SCO, there - is no getrusage(), rusage is used only by wait() - etc. internally. Therefore, we had to move some #ifdefs around. - Thanks to Ganesh Pai for reporting this. - - * apps/Gateway/Gateway/Proxy_Handler_Connector.cpp: Added a - typedef for ACE_RW_Mutex so that the code compiles on non-MT - platforms. Thanks to Ganesh Pai for - reporting this. - - * tests/Conn_Test.cpp: Added a typedef for ACE_RW_Mutex so that - the code compiles on non-MT platforms. Thanks to Ganesh Pai - for reporting this. - - * tests/SPIPE_Test.cpp (main): Removed the VXWORKS arm of the - #ifdef, which is not correct since this stuff only works if - we're working with a version of VxWorks that has STREAM pipes. - - * include/makeinclude/platform_sco5.0.0-nothread.GNU: Changed - - LIBS = -lsocket -lnsl -ldl - - to - - LIBS += -lsocket -lnsl -ldl - - Thanks to Ganesh Pai for reporting this. - - * netsvcs/lib/Client_Logging_Handler.cpp: Added a typedef for - ACE_RW_Mutex so that the code compiles on non-MT platforms. - Thanks to Ganesh Pai for reporting this. - - * netsvcs/lib/TS_Clerk_Handler.cpp: Added a typedef for - ACE_RW_Mutex so that the code compiles on non-MT platforms. - Thanks to Ganesh Pai for reporting this. - - * examples/ASX/Event_Server/Event_Server/Peer_Router.cpp: Added a - typedef for ACE_RW_Mutex so that the code compiles on non-MT - platforms. Thanks to Ganesh Pai for - reporting this. - -Tue Apr 15 23:16:43 1997 - - * ace/[Hash_]Map_Manager.cpp: The [Hash_]Map_Manager now - explicitly calls the destructors of Map_Entry objects before - freeing up the space. Not sure why we were not doing this - before... - -Tue Apr 15 17:09:33 1997 Irfan Pyarali - - * examples/Logger: Added MSVC++ makefile to Acceptor-server - and client. - -Tue Apr 15 21:51:45 1997 James C Hu - - * apps/JAWS/server/IO.cpp: Added a template instance for - ACE_Singleton so it would link using GCC. Removed GCC - warnings. - - * apps/JAWS/server/HTTP_Server.cpp: Added template instances for - LOCK_SOCK_Acceptor, ACE_Task, ACE_Thru_Task, ACE_Message_Queue, - ACE_Module so it would link using GCC. Removed GCC warnings. - - * apps/JAWS/server/HTTP_Server_T.cpp: Removed template instance of - LOCK_SOCK_Acceptor, since it was not really being compiled. - -Tue Apr 15 21:51:45 1997 James C Hu - - * apps/JAWS/server/IO.cpp: Added a template instance for - ACE_Singleton so it would link using GCC. Removed GCC - warnings. - - * apps/JAWS/server/HTTP_Server.cpp: Added template instances for - LOCK_SOCK_Acceptor, ACE_Task, ACE_Thru_Task, - ACE_Message_Queue, ACE_Module so it would link using GCC. - Removed GCC warnings. - - * apps/JAWS/server/HTTP_Server_T.cpp: Removed template - instance of LOCK_SOCK_Acceptor, since it was not really - being compiled. - - * apps/JAWS/server/HTTP_Handler.cpp: Removed GCC warnings. - -Tue Apr 15 13:01:13 1997 David L. Levine - - * ace/Token_Request_Reply.cpp (ctor): added initialization of - transfer_.data_ to avoid unitialized memory read. - - * tests/test_config.h: removed "static" qualifier from - randomize () to avoid warning from g++ when it's not called - in a test. - - * examples/IPC_SAP/SPIPE_SAP/server.cpp (main): moved - declaration of local variable "handle" up before its first - use. - -Tue Apr 15 17:09:33 1997 Irfan Pyarali - - * examples/Connection/blocking/Makefile: Removed the Makefile - for this test. This example is only suppose to work on WIN32 - and therefore the Makefile is not necessary. I have replace - this file with a MSVC++ make file. - -Mon Apr 14 23:08:27 1997 - - * INSTALL: Updated install files for Win32. - - * ace/SPIPE_Stream: Changed the use of ACE::send_n to ACE::write_n - and ACE::recv_n to ACE::read_n. - - * ace/OS.h (WNOHANG): Added WNOHANG to OS.h for Win32. - - * ace/OS.i (getpgid): Fixed extra return. - - * examples/Connection/blocking/SPIPE-acceptor: Updated the code to - use the new Proactor and the new asynchronous IO. - -Mon Apr 14 21:32:24 1997 David L. Levine - - * examples/IPC_SAP/SOCK_SAP/FD-unserver.cpp (handle_client): - ACE_OS::sprintf instead of sprintf. - - * examples/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.cpp - (svc): declare "t" as time_t instead of long. - - Thanks to Thilo Kielmann for - reporting both of these. - -Mon Apr 14 00:02:39 1997 Douglas C. Schmidt - - * ace/OS.i (getpgid): Removed the extraneous return in front of - ACE_NOTSUP_RETURN. Thanks to Mike Bernat for - reporting this. - - * ace/Process.cpp: Replaced the use of ACE_OS::fork(void) with - ACE_OS::fork(const char *) so that we can pass in the name of - the process we're exec'ing. - - * examples/Threads/process_manager.cpp: Added a test program that - exercises the features of the new ACE_Process_Manager. - - * ace/Process_Manager: Finished a rudimentary implementation of - ACE_Process_Manager. There's still plenty of work to be done on - this, however... - - * ace/Thread_Manager.cpp (dump): Added dump() methods for - ACE_Thread_Descriptor and ACE_Thread_Manager. - -Sun Apr 13 11:40:26 1997 Douglas C. Schmidt - - * ace/OS: Added a getpgid() call to ACE_OS. - - * ace/Thread_Manager: Changed the 'int n' of spawn_n() to size_t n - since this is more appropriate because we can't spawn a negative - number of threads... - - * ace/Thread_Manager.cpp (close): Make sure to lock the calls to - close() in case things get amiss. - - * ace/Process.cpp (start): Updated ACE_Process::start() to that it - doesn't try to exec() a program if argv == 0. This allows us to - use ACE_Process to fork() a process without exec'ing. - - * tests/Timer_Queue_Test.cpp (randomize_array): Added a new - "randomization" test that determines the performance of randomly - canceling items in the array. Thanks to Darrell Brunsch - for this enhancement. - - * tests/test_config.h: Moved the randomize() function from - Naming_Test.cpp to test_config.h so that we can use it in other - tests (e.g., the new Timer_Queue_Test.cpp that Darrell is - working on). - - * ace/OS: Added a new #define called ACE_HAS_NONCONST_MSGSND which - can be used for platforms (e.g., SCO) that don't have a const - parameter for msgsend(). Thanks to Arturo Montes - for reporting this. - - * ace/config-sco-5.0.0-mit-pthread.h: Added some fixes to make - this work on SCO. Thanks to Arturo Montes - for reporting this. - - * ace/OS.i (cond_timedwait): There is a *small* chance for a - context switch before ACE_OS::cond_timedwait() is reached. In - this case, the current time *may* advance by some milliseconds. - The code in ACE_OS::cond_timedwait() then converts the given - absolute time to a relative time. In the described situation - this will be a very, very long t ime (0xfffffffn). Therefore, I - added a check to avoid the "negative timespan" case. Thanks to - Matthias Kerkhoff for suggesting this. - - * ace/Set: Moved all the size() methods out of the *.i file and - into the *.cpp file to avoid problems with quirky compilers - (e.g., SGI) that can't handle this. Thanks to Torbjorn Lindgren - for pointing this out. - - * examples/Threads/process_semaphore.cpp (main): Removed a stray - ^M that was causing the SGI C++ compiler some grief. Thanks to - Torbjorn Lindgren for pointing this out. - - * ace/OS.i (gettimeofday): Rearranged the code a bit to return - errors correctly if they occur (which should be *very* - unlikely). Thanks to Torbjorn Lindgren for - pointing this out. - - * netsvcs/lib/Server_Logging_Handler.cpp: Replaced the use of - ACE_TLI* with LOGGING_PEER*. Thanks to Tom Wright - for reporting this. - - * ace/Connector.cpp: Made sure to initialize all of the instance - variables for the ACE_Strategy_Connector and ACE_Connector. - Thanks to David Levine for pointing this out. - - * ace/Synch.h: Changed protected: to private: so that we can - ensure that we never copy classes like ACE_File_Lock, etc. - Thanks to Berni Merkle for reporting - this. - - * examples/Shared_Malloc/test_malloc.cpp (malloc_recurse): Added - the print_stats() call back into the test since Sandro's fixes - should now support this. - - * ace/Malloc[_T]: Added patches to enable ACE_Allocator's to print - malloc statistics. Thanks to Sandro Doro - for these fixes. - -Sat Apr 12 20:42:11 1997 David L. Levine - - * tests/Priority_Task_Test.cpp (open): only use THR_SCHED_FIFO - if it is defined. (It isn't on Solaris without PTHREADS.) - - * examples/ASX/Event_Server/Event_Server/Peer_Router.cpp - (make_svc_handler): added return statement. - -Sat Apr 12 11:53:49 1997 Douglas C. Schmidt - - * examples/ASX/Event_Server/Transceiver/transceiver.cpp (main): - The first argument to connect () is now a SVC_HANDLER *&. - Therefore, we can no longer allows us to pass the address of a - SVC_HANDLER on the stack (or in the data segment). - Fortunately, the fix is easy, as shown below: - - Event_Transceiver transceiver, *tp = &transceiver; - - connector.connect (tp, ACE_INET_Addr (port_number, host_name)); - - Thanks to David Levine for reporting this problem. - -Fri Apr 11 15:14:59 1997 David L. Levine - - * tests/Conn_Test.cpp: moved declaration of "result" out of - loop because it's used after the loop. Thanks to - Thilo Kielmann for - reporting this. Also, removed a few unnecessary template - specializations. - - * apps/Gateway/Gateway/Proxy_Handler_Connector.cpp: fixed template - specializations for no-thread platforms. Thanks to Ganesh Pai - for reporting this. - - * performance-tests/Misc/context_switch_time.cpp (main): - removed call to ACE_High_Res_Timer::supported (). - -Fri Apr 11 14:31:42 1997 Chris Cleeland - - * tests/Conn_Test.cpp: Added several explicit template - instantiations. - -Fri Apr 11 13:49:04 1997 David L. Levine - - * ace/OS.h: VxWorks changes only: added taskHookLib.h. Thanks - to Dave Mayerhoefer for reporting - that. Also rearranged the VxWorks #includes and such a bit. - - * ace/Log_Msg.cpp (atexit): VxWorks changes only: added cast - of spare1 to ACE_Log_Msg *. Thanks to Dave Mayerhoefer - for reporting that. Also, - in exists () and instance (), replaced double indirection - of the ACE_Log_Msg instance with indirection through a pointer - reference. - - * ace/High_Res_Timer.{h,i}: removed supported () because - ACE_OS::gettimeofday () is used if a high-res timer isn't available. - - * ace/OS.i (thr_sigsetmask),config-sunos5.4-*.h: swapped order of - #ifdefs to that ACE_LACKS_PTHREAD_THR_SIGSETMASK is checked before - ACE_HAS_STHREADS. Added that #define to all SunOS 5.4 configs. - Thanks to Joey Zhu for reporting this. - - * ace/Token_Request_Reply.cpp (ctor): added a initializations to 0 - of requeue_position_, notify_, and arg_. With this change, all - of the ACE tests run without any Purify access anomalies! - (There are still some memory leaks, though.) - - * include/makeinclude/rules.local.GNU: added -DMAKEDEPEND to - invocation of g++dep. This allows users to get proper - dependencies if they have conditional #includes in their code. - They can added #if defined (MAKEDEPEND) as necessary to make - sure that all headers are seen by g++dep. - -Fri Apr 11 10:46:56 1997 Chris Cleeland - - * config-linux*.h: Added ACE_HAS_IP_MULTICAST as the default for - all Linux configurations. If you're a 1.x user, or you didn't - config that into your 2.x kernel, you'll have to remove this from - your version of the file. - -Thu Apr 10 00:34:10 1997 Douglas C. Schmidt - - * examples/Logger/simple-server/Logging_Acceptor.cpp - (handle_input): We need to call svc_handler->close() if accept() - or open() fails. Thanks to Ganesh Pai for - reporting this. - - * ace/Service_Config.cpp (close): Moved the call to - ACE_Service_Config::close_singletons() to outside the check for - ACE_Service_Config::svc_rep_ since the Singletons can be used - independently of the services. Thanks to Matthias Kerkhoff - for suggesting this. - -Wed Apr 9 21:11:38 1997 Douglas C. Schmidt - - * apps/Gateway/Gateway/Gateway.cpp (handle_signal): Evil demons - added bugs to my code that were causing segfaults when signals - shutdown the gateway. This is now fixed. - - * apps/Gateway/Gateway/Proxy_Handler.h: Changed ACE_Event_Channel - & to ACE_Event_Channel * to keep the compiler happy. - - * examples/Connection/non_blocking/CPP-connector.h: Added a - do-nothing default constructor to keep ACE_Connector happy. - - * examples/Connection/misc/test_upipe.cpp: Added a do-nothing - default constructor to keep ACE_Connector happy. - - * examples/Connection/blocking/SPIPE-connector.h: Added a - do-nothing default constructor to keep ACE_Connector happy. - - * apps/Gateway/Gateway/Proxy_Handler: Added a do-nothing default - constructor to keep ACE_Connector happy. - - * netsvcs/lib: Added some default arguments to - TS_Clerk_Handler.cpp and Client_Logger_Handler.cpp to keep the - compiler from complaining about the new ACE_Connector features. - Thanks to David Levine for reporting this. - - * ace/Timer_Heap.cpp (reheap_down): Fixed a *very* subtle bug in - reheap_down() where parent was starting off at 0 whereas it - should have been starting off at child_index / 2. - - * examples/Logger/simple-server/Logging_Handler: Removed the use - of the operator ACE_SOCK_Stream &() and replaced it with the - more intuitive peer() approach used in ACE_Svc_Handler et al. - Thanks to Ganesh Pai for reporting this. - - * ace: Added a bunch of changes to improve ACE support on SCO 5.0. - Thanks to Ganesh Pai for these fixes. - - * tests/Conn_Test.cpp: Completely reworked this test so that it - illustrates how to use the ACE_Strategy_Connector, which is - customized with a special Caching_Connect_Strategy that recycles - connections. - - * ace/Connector: Finished implementing the new - ACE_Strategy_Connector. This is similar in design to the - ACE_Strategy_Acceptor. - - * ace: Changed the signature of all the make_svc_handler() methods - so that they return int (rather than SVC_HANDLER *) and they - pass back a SVC_HANDLER * by reference. This makes it possible - to totally control the creation of svc handlers (which is useful - for the new ACE_Strategy_Connector). - - * ace/Connector.cpp: Factored out the active_svc_handler() call - from the connect_svc_handler() method into the connect() method - so that it would behave correctly as a Template Method and - Strategy. - - * ace/Connector: Removed the explicit use of the Reactor data - member from the ACE_Connector since it's inherited from the - ACE_Service_Object. - - * ace/Log_Msg.cpp: The MVS compiler doesn't like the call to - atexit() in ACE_Log_Msg::instance() because atexit() requires an - a function pointer of type extern "C" for its parameter. I've - fixed this via an adapter. Thanks to Chuck Gehr - for reporting this. - - * ace/Strategies_T: Added a new ACE_Connect_Strategy that - complements the ACE_Strategy_Connector in the same manner that - the ACE_Accept_Strategy complements the ACE_Strategy_Acceptor. - - * ace/Connector.h: The destructor for ACE_Connector should have - been virtual. Now it is. - - * ace/Connector: Added a new factory method called - make_svc_handler(). This behaves similiarly to the - ACE_Acceptor::make_svc_handler(). However, for the - ACE_Connector we only use this when the SVC_HANDLER * is NULL. - - * ace/Connector: Changed the signature for connect() to take a & - to a SVC_HANDLER * in anticipation of our new - ACE_Strategy_Connector. This new connector will make it easy to - implement cached connections. - - * ace/config-win32-common.h: Added a new #include for , - which contains the declarations for TransmitFile() data - structures. They are in WINSOCK.H if you do not use - ACE_HAS_WINSOCK2. Thanks to Norbert Rapp - for reporting this. - - * ace/OS.i: Fixed a typo in the new condition variable - implementation for Win32. Thanks to Norbert Rapp - for reporting this. - -Wed Apr 09 22:06:23 1997 - - * Memory_Pool.h: Modified ACE_MMAP_Memory_Pool and - ACE_MMAP_Memory_Pool_Options to include the new guess_on_fault - option. This is only for platforms that can not report which - address caused a segmentation fault (via signal or exception). - When guess_on_fault is set (via ACE_MMAP_Memory_Pool_Options), - ACE_MMAP_Memory_Pool::handle_signal calls - ACE_MMAP_Memory_Pool::remap "guessing" that the segmentation - fault was caused by an access to memory not yet mapped. - -Wed Apr 09 16:46:16 1997 David L. Levine - - * ace/OS.{h,i}: fixed readPPCTimeBase declaration and return - value (for now: it really needs to return a 64 bit quantity). - Thanks to Dave Mayerhoefer for - reporting these. - -Wed Apr 9 03:12:24 1997 Irfan Pyarali - - * ace/config-win32-common.h: Defining _WIN32_WINNT as 0x0400 - implies ACE_HAS_WINSOCK2. - - * ace/Asynch_IO: The implementation of ACE_Asynch_Transmit_File - and ACE_Asynch_Accept are only supported if ACE_HAS_WINSOCK2 is - defined or you are on WinNT 4.0 or higher. Therefore, added - appropriate #defines. Thanks to Matthias Kerkhoff - for suggesting this. - -Tue Apr 8 22:45:28 1997 Prashant Jain - - * java/src/SOCKStream.java (SOCKStream): Made two small changes to - the two send(). Instead of doing a println, I now do a - print. This was really a bug! - -Tue Apr 08 22:08:12 1997 David L. Levine - - * include/makeinclude/platform_sunos5_sunc++_4.1.GNU: removed - "rm -f $@" from AR command so that archive won't be removed - during incremental updates. Thanks to Chuck Gehr - for reporting this. - -Tue Apr 8 00:04:22 1997 Douglas C. Schmidt - - * ace/Task_T.cpp: Added a hack to work around the new weird HP/UX - aCC template semantics. Thanks to Neil B. Cohen - for reporting this. - - * ace/config-hpux-10.x[-g++].h: Added #define - ACE_HAS_CLOCK_GETTIME. Thanks to Neil B. Cohen - for reporting this. - - * ace/config-hpux-10.x[-g++].h: Added ACE_HAS_IP_MULTICAST and removed - ACE_LACKS_STRRECVFD. Thanks to Neil B. Cohen - for reporting this. - - * ace/config-hpux-10.x.h: Apparently some HP/UX 10.x C++ compilers - don't support volatile, so I #defined it away as a macro. - Thanks to Neil B. Cohen for reporting this. - - * ace/Log_Msg.cpp: Put a #if defined (ACE_MT_SAFE) around the - entire Log_Msg destructor. Thanks to Neil B. Cohen - for reporting this. - - * ace/config-hpux-10.x[-g++].h: Added #define ACE_HAS_STREAMS on - the recommendation of Neil B. Cohen . - -Mon Apr 07 12:08:21 1997 - - * ace/Set.cpp: For some reason, VC++ 5.0 doesn't like to have the - constructors X::X(X&) and X::X(X*). We can change the X::X(X*) - constructor to take in an extra argument with a default value. - This seems to have sufficiently satisfied the VC++ 5.0 for the - time being. There were no changes necessary to other Set.cpp - code (as the extra argument has a default value). - -Mon Apr 07 08:05:03 1997 David L. Levine - - * ace/config-win32.h: enabled ACE_HAS_UNICODE by default. - Thanks to Matthias Kerkhoff for - suggesting this. - - * ace/config-sunos5.4-g++.h: enabled ACE_HAS_BROKEN_RANDR and - disabled ACE_HAS_SVR4_SIGNAL_T. Thanks to Joey Zhu - for reporting these problems and testing - the fix. - - * ace/Proactor.h (ACE_Proactor): commented out unused arguments - in non-WIN32 version. - -Sun Apr 06 22:51:02 1997 - - * ace/Proactor: Complete rewrite of Proactor that pushes all the - differences in asynchronous I/O to the edges of the framework - - i.e., into the new Asynch_IO classes. This allows the Proactor - to easily support new asynchronous operations. - - Currently, the new Proactor supports minimal functionality. In - the future, we will complete this. - - The Proactor is used in conjunction with the new Asynch_IO - classes. There is a different class for each operation. Please - see Asynch_IO.h for details. - - There is also a new ACE_Asynch_Acceptor that uses AcceptEx. - - Example is in: - ACE_wrappers/examples/Reactor/Proactor/test_proactor.cpp. - - This example illustrates how the ACE_Proactor can be used to - implement an application that does various asynchronous - operations. - - * apps/JAWS/server: Complete rewrite of JAWS. The new JAWS has - support for Asynch-Thread-Pool (on WIN32), Synch-Thread-Pool, - and Thread-per-Request. Different models can be configured using - the svc.conf file. The server now supports both GET and PUT - commands. - - The HTTP_Handler class is a state based implementation of the - HTTP protocol. Therefore, it can be used synchronously and - asynchronously. It uses an abstract IO class to move between - different HTTP protocol states. It is up to the IO class to - decide on synchronous or asynchronous I/O. - - * apps/JAWS/client: This is an example of the implementation of - BlobStreaming in ACE. This version of BlobStreaming uses HTTP as - a transport protocol. - - Blobby :-) is a simple application written using the ACE_Blob - class, which is capable of doing both file uploads and - downloads. If a file is downloaded, the downloaded data is sent - to standard output, so that it can be piped as necessary. - - * ace/Mem_Map.cpp (map_it): This method now uses ACE_OS::pwrite - (if ACE_HAD_P_READ_WRITE is defined) instead of - ACE_OS::lseek/ACE_OS::write to write the end-of-file byte. The - old scheme does not work if the file is in OVERLAPPED mode. - - * ace/OS: Added pread and pwrite to the OS class (if - ACE_HAD_P_READ_WRITE is defined). On Win32, these functions use - the OVERLAPPED structure to specify the offset. This - implementation will block until the write/read completes (even - if the file is in OVERLAPPED mode). - - * ace/config: Added ACE_HAS_P_READ_WRITE to the following - platforms that support pread() and pwrite() calls: - config-sunos4-g++.h - config-sunos4-lucid3.2.h - config-sunos4-sun3.x.h - config-sunos4-sun4.1.4.h - config-sunos4-sun4.x-orbix.h - config-sunos4-sun4.x.h - config-sunos5.4-centerline-2.x.h - config-sunos5.4-g++.h - config-sunos5.4-sunc++-4.x-orbix.h - config-sunos5.4-sunc++-4.x.h - config-sunos5.5-g++.h - config-sunos5.5-sunc++-4.1.h - config-sunos5.5-sunc++-4.x-orbix.h - config-sunos5.5-sunc++-4.x.h - config-sunx86-sunc++-4.x.h - config-win32-common.h - -Sun Apr 6 14:16:18 1997 Douglas C. Schmidt - - * tests/Timer_Queue_Test.cpp: Added tests to make sure that the - new ACE_Timer_Queue::cancel() logic is working correctly. So - far, it seems to be fine. - - * ace/Timer_{Heap,List}.cpp (cancel): Changed the comparison for - dont_call_handle_close to be correct. - - * ace/OS.cpp: Deleted a useless return. Thanks to Gonzalo - A. Diethelm for reporting this. - - * ace/config-irix6.2-sgic++.h: Added the following definitions: - - + ACE_LACKS_PTHREAD_THR_SIGSETMASK - + ACE_HAS_PTHREAD_EQUAL - + ACE_HAS_PTHREAD_T - + ACE_HAS_SYSENT_H - + ACE_HAS_SYSINFO - + ACE_HAS_TEMPLATE_TYPEDEFS - - Deleted the following definitions: - - + #define ACE_HAS_SYS_SIGLIST (Irix's compiler only has a - _sys_siglist array when compiling their own internal - functions). - - Thanks to Gonzalo A. Diethelm for this. - - * ace/Process: Added new support for setting the environment - variable and the current working directory. Thanks to Gonzalo - A. Diethelm for this enhancement. - - * ace/OS.h: "sys/stat.h" was being included more than once, so I - fixed this. Thanks to Gonzalo A. Diethelm - for reporting this. - - * ace/XtReactor.cpp: Added the register_handler_i() method, which - just delegates to the one defined in the Reactor. This is - necessary to adjust to the C++ type system rules. Thanks to - Gonzalo A. Diethelm for reporting this. - - * ace/Service_Config.cpp: Added the Double-Checked Locking - Optimization pattern to all the ACE_Service_Config Singletons - (e.g., thr_mgr(), reactor(), etc.) so that they behave correctly - in multi-threaded programs. Thanks to Matthias Kerkhoff - for insisting on this. - - * ace/OS.i (nanosleep): If the nanosleep() system call isn't - supported by the OS platform we'll just use ACE_OS::sleep(const - ACE_Time_Value &) instead. - - * ace/Log_Msg.cpp: Changed the logic of - ACE_Log_Msg_Manager::remove() so that it returns the number of - remaining registered instances. When this goes to 0 we'll - cleanup. - - * ace/OS.i: Enhanced the ACE_OS::cond_[timed_]wait() methods so - that they use SignalObjectAndWait() whenever possible to avoid - potential problems with unfairness. See - http://www.cs.wustl.edu/~schmidt/editorial-15.html for more - details. Thanks to David Holmes for - pointing out this subtlety. - -Sun Apr 06 20:01:57 1997 David L. Levine - - * include/makeinclude/wrapper_macros.GNU: added "purify" and - "quantify" make command options. To build Purified versions - of all executables in the current direction, for example: - - % make clean; make purify=1 - - These options assume that purify or quantify are in your PATH. - - * ace/Task.{h,cpp}: removed ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES - from ACE_Task_Exit declaration and ACE_Task_Exit::instance (). - ACE_Task_Exit is no longer a template class, so we don't need that. - - * ace/Task_T.h: added missing "*/" at end of comment after #endif. - - * tests/IOStream.cpp (server): added check for 0 strlen of - "buf" to avoid out-of-bound array reference. - - * ace/Svc_Conf_l.cpp, Makefile: added #define ACE_BUILD_DLL. - Thanks to Matthias Kerkhoff for - reporting this. - - * ace/Set.cpp(ACE_Set_Node ctor): commented out unused arg MS_SUCKS. - -Sat Apr 5 14:21:29 1997 Prashant Jain - - * java/: Changed package name from ACE to JACE across all directories. - -Sat Apr 5 13:12:37 1997 Douglas C. Schmidt - - * tests/MM_Shared_Memory_Test.cpp: Removed the use of dynamic - memory allocation to avoid memory leaks. - - * ace/Service_Config: Changed _defaults to _static_svcs since this - more accurately reflects what they do. - - * examples/Shared_Malloc/test_malloc.cpp: Removed the - print_stats() call since it doesn't work via this API. Thanks - to Sandro Doro for reporting this. - - * ACE-install.sh: Tweeked the install script by changing the - "gunzip; tar; gzip" sequence into "gunzip -c | tar xvf -" to - speed it up a little. Thanks to Per Andersson - for this fix. - - * examples/Threads/future1.cpp: Make sure to delete the char *name - that is retrieved from the future in order to avoid a memory - leak. Thanks to Matthias Kerkhoff for - figuring this out. - - * examples/Threads/future1.cpp: Make sure to delete this->name_ in - the Scheduler destructor to avoid a memory leak. - - * examples/Threads/task_four.cpp (close): Enhanced the close() - method so that it will actually delete the memory for the - Worker_Task. - - * ace/XtReactor.cpp (register_handler_i): Added the - - if (mask & ACE_Event_Handler::ACCEPT_MASK) - ACE_SET_BITS (condition, XtInputReadMask); - - Thanks to Jean-Marc Strauss for - reporting this. - - * ace/Timer_Queue.cpp (expire): This is the only method that calls - ACE_Timer_Queue::cancel() with dont_call_handle_close set to 0. - - * ace/Reactor: Modified the cancel_timer() methods so that they - also take a dont_call_handle_close parameter and pass it on to - the Timer_Queue::cancel() method. - - * ace/Timer_{List,Heap}.cpp: Modified all the cancel() methods so - that they will not call handle_close() unless the new parameter - dont_call_handle_close is 0 (it is 1 by default). This will - avoid nasty problems with recursion. Thanks to Paul Han - for suggesting this. - - * ace/Timer_{List,Heap}.cpp (schedule): If a user tried to - schedule a NULL ACE_Event_Handler then we return -1 with errno - set to EINVAL. - - * ace/Message_Block.cpp: Somehow the file got screwed up and was - reverted back to an earlier incarnation where we didn't use - ACE_Service_Config::alloc()... Thanks to Matthias Kerkhoff - for figuring this out. - -Sat Apr 5 19:11:46 1997 Tim H. Harrison - - * ace/Signal.i (ACE_Sig_Guard): Changed the constructor of - ACE_Sig_Guard so that it doesn't call ACE_OS::sigprocmask for - Win32. This keeps errno from being set to ENOSYS at random - times. - -Sat Apr 05 17:27:02 1997 - - * Registry.cpp (resolve): Type and size of the object is only set - if RegQueryValueEx() returns success. Thanks to Alan - (Alan_Cabrera@fp.cibc.com) for reporting this. - -Sat Apr 05 13:11:04 1997 David L. Levine - - * ace/Log_Msg.cpp (instance): Added another ACE_NO_HEAP_CHECK. - Matthias provided the fix. - - * ace/config-win32.h: Disable ACE_HAS_STRICT by default, because - it will break existing application code. - - * ace/OS.{h,cpp},Log_Msg.{h,cpp}: fixes from Matthias Kerkhoff - to avoid memory-leak reports when MFC - or (the CrtHeapXXX()-functions of the Win32 runtime library) - are used. - - The problem is, that MFC (and so may other Win32 applications - do) allocates a thread specific storage slot for each running - thread which contains various control and debug informations. - Part of this information is an object, which when constructed - makes a snapshop of the heap. When this object is destroyed, - the snapshot is compared to the actual heap. All object still - existing on the heap are reported as memory leaks (which - is in most situations correct). Because the object is deleted - when the thread (or programs main) is left and this happens - before atexit is called, some leak reports are false (because, - e.g., all these ACE_Log_Msg's will be deleted in atexit). - - The fix for ACE_Log_Msg consists of three changes (two only - relevant for Win32, one relevant for all platforms.) - Description of changes: - - a) Introduced a new macro ACE_NO_HEAP_CHECK, which turns - off the built in heap checking until the current code block - is left. (defined for all platforms, but only does something - for Win32). This changes os.h and config-win32-common.h. - - b) Added a static member function to ACE_Log_Msg. The function - (exists) returns 0 if the calling thread don't have an ACE_Log_Msg - and non-null if an ACE_Log_Msg exists. This changes Log_Msg.h - and Log_Msg.cpp. - - c) Changed ACE_Thread_Adapter in a way that creating a new - thread does not automatically create an ACE_Log_Msg for the - calling thread. This happened until now, because the new - thread inherited the log settings of the calling thread. - This behaviour makes no sense, if the calling thread does - not have an ACE_Log_Msg, so i use ACE_Log_Msg::exists() (see - above) to prevent the implicit creation of an ACE_Log_Msg - for the calling thread. - - Thanks, Matthias! - - * ace/config-win32.h and config-win32-common.h: new, consolidated - Win32 config files. Thanks, again, Matthias! - - * ace/OS.h (ACE_UNUSED_ARG): determine whether we're building - on an Irix platform by looking for ACE_HAS_IRIX_GETTIMEOFDAY - instead of ACE_HAS_IRIX62_THREADS. - - * ace/Log_Msg.cpp: VxWorks (only!) change: no longer strdups - program_name and local_host to avoid memory leaks. Instead, - the addresses of these are copied by ACE_Log_Msg. So, only - strings in the text segment should be passed to its functions! - Again, this change is for VxWorks only. - - * ace/Sched_Params.cpp: moved memsets of pcinfo so that entire - pcinfo structure is zeroed out, to _really_ avoid Purify warnings. - -Fri Apr 04 12:28:40 1997 David L. Levine - - * ace/config-mvs.h: removed ACE_HAS_IP_MULTICAST because MVS - doesn't define ip_mreq. Thanks to Chuck Gehr - for reporting this. - - * ace/OS.i (mutex_init): fixed the extra braces once and for all. - Thanks to Chuck Gehr for reporting it. - - * ace/OS.i, config-sco-5.0.0*.h: fixed for SCO so that it uses - single-argument gettimeofday () prototype, but calls two-arg - (SVR4) version in ACE_OS::gettimeofday (). Thanks to Ganesh - Ganesh Pai for solving this problem. - - * ace/Log_Msg.{h,cpp}: added ACE_Log_Msg destructor. In - instance (), added call to ::atexit () (::taskDeleteHookAdd () - on VxWorks) to register cleanup handler. Each new instance - of an ACE_Log_Msg is inserted into an ACE_Unbounded_Set; the - cleanup handler iterates over the Set and deletes the - ACE_Log_Msgs at program exit. - - Also, the two strings that are allocated get cleaned up after - the last ACE_Log_Msg instance is deleted. Many thanks to - Matthias Kerkhoff for figuring this out - and cranking out the code. - - It works differently on VxWorks, because it doesn't have - ::atexit (). VxWorks has ::taskDeleteHookAdd (), which is - called when each task exits. So, the Set isn't used. Instead, - the cleanup hook is called for each task when it exits, passing - the task control block (TCB) of the exiting task. A pointer to - the ACE_Log_Msg instance is contained in one of the spare fields - of the TCB, so the cleanup handler simply deletes it. - - * ace/IOStream.h: specify template parameter (ACE_IOStream) - to ACE_OPERATOR{G,P}_SET macros. Thanks to Chuck Gehr - for providing this fix. - -Thu Apr 3 22:17:53 1997 Irfan Pyarali - - * ace/Registry.cpp: Changed STRING_SEPARATOR from Istring to - LPCTSTR. Thanks to Matthias Kerkhoff for - suggesting this. - -Thu Apr 3 21:39:45 1997 Chris Cleeland - - * ace/OS.i (mutex_init): Removed errant open-brace ('{'). Thanks - to Chuck Gehr (gehr@sweng.stortek.com) for the fix! - -Thu Apr 03 08:52:34 1997 David L. Levine - - * ace/OS.h,OS.cpp,Sched_Params.cpp: added /**/ to some #include - directives. Thanks to Matthias Kerkhoff - for reporting these. - - * ace/OS.cpp (writev, readv): changed type of local variable "i" - from size_t to int to avoid signed/unsigned mismatch. Thanks - to Matthias Kerkhoff for reporting this. - - * ace/OS.cpp (readv), SOCK_Dgram.cpp (recv): added casts of - iov_len and copyn because iov_len is int on some platforms and - size_t on others. This avoids compiler (MSVC 4.1) warnings. - Thanks to Matthias Kerkhoff for reporting - this. - - * include/makeinclude/platform_sco5.0.0-nothread.GNU: - updated CCFLAGS and added LD=$(CXX). Thanks to - Ganesh Pai for these fixes. - - * ace/OS.h: added #include of for SCO only. - Thanks to Ganesh Pai for this fix. - - * ace/config-sco-5.0.0*.h: added #define ACE_HAS_IP_MULTICAST. - Thanks to Ganesh Pai for this fix. - - * ace/config-{chorus,linux*,sco*}.h: removed #define of - ACE_HAS_INLINED_OSCALLS because it's no longer needed in the - config files: it's #defined in OS.h if needed. - -Thu Apr 3 01:48:01 1997 Tim H. Harrison - - * ace/Malloc.i (malloc): ACE_New_Allocator::malloc only calls new - if nbytes is > 0. Purify was complaining that 0 bytes were - allocated but never deleted. Go figure. - -Wed Apr 2 22:24:48 1997 Douglas C. Schmidt - - * ace/OS.cpp: Moved the ACE_OS::inet_aton() method into the *.cpp - file and made it non-inline to work around a bug with HP/UX C++. - Thanks to Neil Cohen for this fix. - -Wed Apr 02 10:09:37 1997 David L. Levine - - * ace/config-sunos5.5-sunc++-4.1.h: added template specialization - with Sun C++ 4.2. - - * include/makeinclude/platform_sunos5_sunc++_4.1.GNU: removed +w - and added comments about Sun C++ 4.2 support. - - * include/makeinclude/platform_chorus.GNU, platform_hpux_gcc.GNU, - platform_irix5.{2,3_g++}.GNU, platform_linux{_,pthread}.GNU, - platform_m88k.GNU,platform_osf1_4.0_g++.GNU, - platform_sco-nothread.GNU,platform_sco5.0.0-*.GNU, - platform_sunos{4,5}_g++.GNU, platform_sunos5_x86_g++.GNU, - platform_unixware_g++.GNU, platform_vxworks5.2_g++.GNU: - added -fno-implicit-templates to CCFLAGS. See INSTALL file - for discussion of the g++ option. Also, added -O2 because - it dramatically reduces object file sizes. - - * netsvcs/clients/Tokens/manual/manual.cpp: made - STDIN_Token::TID typedef public so that template - specialization (w/ Sun C++ 4.2) can access it. - -Wed Apr 2 10:02:47 1997 Chris Cleeland - - * ace/OS.h: Added definitions for THREAD- and PROCESS-LEVEL - priorities because some implementations define these while - others don't. These are now - ACE_{THR,PROC}_{FIFO,RR,OTHER}_{MIN,MAX,DEF}. The only really - NEW concept is the *_DEF, which is a default value assigned by - ACE_OS::thr_create() if one isn't given. Of special note is that - we don't redefine a default values if it's already been - defined, which allows individual programs to have their - own ACE-wide "default". - - * ace/OS.cpp (thr_create): Uses ACE_{THR,PROC}_* macros - rather than the PRI_* macros. - - * ace/Sched_Params.cpp (priority_min,priority_max): These now - use ACE_{THR,PROC}_* macros to ignore OS-specific priority - assignments. - - * ace/config-linux-lxpthreads.h: Removed definitions of - PRI_{FIFO,RR,OTHER}_{MIN,MAX}. - - * include/makeinclude/platform_linux*.GNU (CCFLAGS): Added - -fno-implicit-templates now that it's supported. This - eliminates messages of the sort 'ld: Warning size of - change from xx to yy' - when linking libACE.so. Thanks to David Levine for making - this possible! - -Tue Apr 1 15:27:28 1997 Douglas C. Schmidt - - * bin/g++dep: Removed the "/bin" prefix so that this won't fail on - platforms that don't have sed in /bin. Thanks to Sandro Doro - for this fix. - -Tue Apr 01 09:55:07 1997 David L. Levine - - * ace/OS.h: protected definition of struct flock on VxWorks, - because it defines that type in sys/fcntlcom.h. (It doesn't - appear to support flock (), though.) Thanks to Dave - Mayerhoefer for reporting this. - - * ace/OS.h: define ACE_hrtime_t as u_longlong_t gcc, because - its long long types are only 4 bytes long. Its longlong_t - types are 8 bytes. Also made ACE_hrtime_t unsigned for - other than gcc on Unix platforms. - - * ace/OS.* (gethrtime), config-vxworks-ghs-1.8.h: added support - for PowerPC with Green Hills compiler. Thanks to Dave - Mayerhoefer for providing the - readPPCTimeBase assembler routine. - - * ace/config-vxworks*.h: removed #include of vxWorks.h because - its no longer necessary with the TimeValue.h merged into OS.h. - - * ace/High_Res_Timer.cpp (elapsed_time): added cast to - initialization of nseconds to avoid compiler warning from - MSVC 4.1 about narrowing from unsigned __int64. - Thanks to Matthias Kerkhoff for - reporting this. - -Mon Mar 31 18:18:35 1997 Carlos O'Ryan - - * ace/config-hpux-10.x-g++.h: - It was tuned to HP-UX 10.10 (and further) using g++ 2.7.2 without - DCE/Threads. - - * ace/Task_T.cpp: - Another iteration on the Module.h file, this time it is not - included *only* under HPUX and when using HP/aCC. Still IMHO - problems will arise as template sintax checking becomes more - popular. - - * ace/Local_Name_Space_T.h: - * ace/Local_Name_Space_T.cpp: - Replaced MAXNAMELEN with MAXPATHLEN since some platforms - (e.g., HP/UX) have a very low value (e.g., 14 bytes) for - MAXNAMELEN. - - * ace/config-hpux-10.x-aCC.h: - The comment did not make clear what was compiler/platform - target. It also included some remarks that only applied to - HP/C++. - - * tests/Future_Test.cpp: - * tests/Message_Block_Test.cpp: - * tests/Thread_Pool_Test.cpp: - Will not compile if ACE_HAS_THREADS was not defined and - ACE_TEMPLATES_REQUIRE_SPECIALIZATION was: they tried to - instantiate templates that were only defined when ACE_HAS_THREADS. - - * ace/config-hpux-10.x-aCC.h: - More fine tuning: ACE_HAS_EXCEPTIONS, - ACE_LACKS_LINEBUFFERED_STREAMBUF, - ACE_HAS_STREAM_PIPES. - - * ace/TLI_Stream.h: - * ace/TLI_Acceptor.h: - No "Meta-type info" was defined (the PEER_ADDR and PEER_STREAM - typedefs). - - * ace/Signal.h: - * ace/Signal.cpp: - With HP/aCC we can enable ACE_Sig_Handlers. - -Mon Mar 31 22:36:55 1997 Douglas C. Schmidt - - * ace/Service_Config.cpp (process_directives): Return -1 if - ace_yyerrno > 0. Thanks to Alan Cabrera - for reporting this. - -Mon Mar 31 17:38:08 1997 Chris Cleeland - - * ace/OS.cpp (thr_create): Moved priority determination after - policy determination because it's possible for setting of the - priority to fail if it's not a valid priority for the [default] - policy. - -Mon Mar 31 09:00:54 1997 David L. Levine - - * performance-tests/Misc/context_switch_time.cpp: this test no - longer worked. So, reverted to revision 4.5, plus minimum - changes necessary to support build on platforms without threads. - - * examples/Threads/Makefile, performance-tests/Misc/Makefile: - moved context_switch_time.cpp from examples/Threads to - performance-tests/Misc. - - * examples/Logger/Acceptor-server/server_loggerd.cpp, - examples/Reactor/Misc/pingpong.cpp, - examples/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.cpp, - examples/Shared_Malloc/Malloc.cpp: - added template specializations. - - * include/makeinclude/platform_sunos5_g++.GNU: removed dependency - of CCFLAGS on CFLAGS to avoid duplicate -g in build command. - Also, added -fno-implicit-templates in comment. - -Sun Mar 30 12:52:58 1997 Douglas C. Schmidt - - * ace/Malloc.h: The block begining with: - #if defined (ACE_MALLOC_STATS) - and ending with end of struct ACE_Malloc_Stats - must be moved (up) after line 107 - - Thanks to Sandro Doro for pointing - this out. - - * ace/Malloc_T.cpp: The line - this->malloc_stats_.dump (); - must be changed in: - this->cb_ptr_->malloc_stats_.dump (); - - Thanks to Sandro Doro for pointing - this out. - - * ace/Malloc_T.cpp: the line - this->cb_ptr_->malloc_stats_.print (); // print not exists - may be changed in: - this->cb_ptr_->malloc_stats_.dump (); - - Thanks to Sandro Doro for pointing - this out. - - * ace/Malloc_T.h: Added "virtual" to the ACE_New_Allocator methods - to reinforce the fact that they are indeed virtual. Thanks to - Sandro Doro for pointing this out. - - * ace/Malloc.h: Added "virtual" to the ACE_New_Allocator methods - to reinforce the fact that they are indeed virtual. - -Sat Mar 29 20:26:54 1997 David L. Levine - - * ace/OS.h: moved #defin of RTLD_LAZY after #include of dlfcn.h. - Thanks to Chris Lahey for this fix. - - * ace/Task_T.h: replaced #include of "ace/Module.h" because some - Task_T methods use ACE_Module methods. - - * examples/Connection/non_blocking/test_{sock,spipe,tli}_{acceptor, - connector}.cpp, - examples/System_V_IPC/SV_Semaphores/Semaphores_{1,2}.cpp: - added template specializations. - -Sat Mar 29 17:08:33 1997 Douglas C. Schmidt - - * ace/OS.cpp: Added many new ACE_UNUSED_ARGS macros to eliminate - warnings when we are compiling without threads. - -Fri Mar 28 11:34:38 1997 David L. Levine - - * ace/Task.{h,cpp},Thread_Manager.h: changed remaining - priority types to long and defaults to -1. - - * ace/Thread_Manager.cpp (spawn_i): don't clobber errno! - ACE_OS::thr_create () sets errno and returns -1. So, - its return value should not be used to set errno. - - * ace/OS.cpp (thr_create): fixed PTHREADS_1003_DOT_1C thread - priority logic. Thanks to Thilo Kielmann - for the patch. - - * ace/config-sunos5.5*.h,README,OS.cpp (thr_create): added - ACE_HAS_ONLY_SCHED_OTHER to indicate that platform (Solaris 2.5) - only supports POSIX SCHED_OTHER scheduling policy. - - * tests/Priority_Task_Test.cpp (open): added THR_SCHED_FIFO flag. - Thanks to Thilo Kielmann for - for this suggestion. - - * examples/ASX/Event_Server/Event_Server/Makefile, - Transceiver/Makefile: - added -lGateway to LIBS to pick up its template - instantiations during links. - - * examples/ASX/Event_Server/Event_Server/Peer_Router.cpp, - Transceiver/transceiver.cpp, - Connection/blocking/SPIPE-{acceptor,connector}.cpp, - misc/Connection_Handler.cpp,test_upipe.cpp, - Logger/simple-server/server_loggerd.cpp, - UPIPE_Event_Server/{Consumer,Supplier}_Router.cpp, - performance-tests/Synch-Benchmarks/Options.cpp: - added template specializations. - -Thu Mar 27 21:10:59 1997 David L. Levine - - * ace/IOStream.h: only use built-in ipfx{0,1} () with __GNUC__, - because that's the only compiler we know of that has them. - Thanks to Carlos O'Ryan for pointing this - out, and to James CE Johnson for providing the fix. - - * ace/OS.i: rearranged order of ACE_Time_Value functions (moved - set ()'s up, moved arithmetic operators down) so that they are - defined before use. - - * ace/Task_T.cpp: removed ACE_TEMPLATES_REQUIRE_SOURCE around - #include of "ace/Module.h" so that it will build with Sun C++ 4.1. - - * apps/Gateway/Peer/Makefile: added -lGateway to LIBS to - pick up its template instantiations during links. - - * apps/Gateway/Peer/Peer.cpp: added template instantations. - -Thu Mar 27 14:10:39 1997 Douglas C. Schmidt - - * ace/OS.h: Added two new accessors to ACE_Time_Value: - - operator timeval *() const; - // Returns a pointer to the object as a timeval. - - const operator timeval *() const; - // Returns a pointer to the object as a timeval. - - Thanks to Carlos O'Ryan for this suggestion. - - * ace/OS.i (ACE_Time_Value): Inlined many of the ACE_Time_Value - accessors. - - * ace/OS.h: Reimplemented ACE_Str_Buf at - - struct ACE_Export ACE_Str_Buf : public strbuf - { - // = Initialization method - ACE_Str_Buf(void* b = 0, int l = 0, int max = 0); - // Constructor. - }; - - this makes the casting from ACE_Str_Buf* to strbuf* a "safe" - cast and makes it more portable (say on platforms where the - fields in strbuf are not in the right order). Thanks to Carlos - O'Ryan for this fix. - - * ace/OS.h: Moved the definition of imr_multiaddr to just before - class ACE_OS so that it picks everything up appropriately. - Thanks to Hakan Kallberg for reporting this. - - * ace/config-aix-4.[12].x.h and config-mvs.h: Fixed the - ACE_HAS_MULTICAST macros, which should have said - ACE_HAS_IP_MULTICAST. Thanks to Daniel Montalibet - for reporting this. - -Thu Mar 27 15:54:10 1997 Chris Cleeland - - * ace/{Thread,Thread_Manager}.{h,i,cpp} (ACE_Thread): Changed - type for priority arg to spawn*() from u_int to long to - support changes in thr_create indicated below. Thanks to - Thilo Kielmann for these - changes. - - * ace/OS.cpp: Ensure that whenever either a priority of a - scheduling policy is set explicitly, with POSIX threads, the - other argument and the flag THR_EXPLICIT_SCHED is set - automatically. A range check for priority values for POSIX - 1003.1c is also included. Thanks to Thilo Kielmann - for these changes. - - * ace/OS.h: Changed type and default value of priority arg to - thr_create from u_int to long and 0 to -1. Thanks to Thilo - Kielmann for these - changes. Also added ACE_MAX and ACE_MIN macros. - -Thu Mar 27 11:25:38 1997 David L. Levine - - * netsvcs/servers/Makefile: removed SHOBJ so that main.so is not - built, because it wasn't needed. Thanks to Sandro Doro - for this fix. - - * ace/config-aix-4.[12].x.h,config-mvs.h: changed - ACE_HAS_MULTICAST to ACE_HAS_IP_MULTICAST. Thanks to Daniel - Montalibet for reporting - this. - - * include/makeinclude/platform_sunos5_g++.GNU, - platform_sunos5_x86_g++.GNU, - platform_unixware_g++.GNU: - removed "-L$(WRAPPER_ROOT)/ace -L./" from LDFLAGS because it - is added to LDFLAGS in include/makeinclude/wrapper_macros.GNU. - - * apps/Gateway/Gateway/{Event_Channel.cpp,Gateway.cpp, - Proxy_Handler.cpp,Proxy_Handler_Acceptor.cpp, - Proxy_Handler_Connector.cpp, - examples/IPC_SAP/UPIPE_SAP/ex{2,3}.cpp, - netsvcs/clients/Naming/Client/Client_Test.cpp, - netsvcs/clients/Tokens/manual/manual.cpp: - added template specializations. - -Thu Mar 27 10:05:59 1997 Prashant Jain - - * netsvcs/lib/TS_Clerk_Handler.cpp: Fixed two things: - 1) In TS_Clerk_Processor::parse_args() changed - "%n:\n[-p hostname:port] [-t timeout] [-p poolname]\n%a", 1), - to - "%n:\n[-h hostname:port] [-t timeout] [-p poolname]\n%a", 1), - - 2) In TS_Clerk_Processor::alloc() changed - void *temp = 0; - // Only create the state if it doesn't already exist. - if (this->shmem_->find (ACE_DEFAULT_TIME_SERVER_STR, temp) == -1) - { - // Allocate the space out of shared memory for the system time entry - temp = this->shmem_->malloc (sizeof (this->system_time_)); - - to: - - // Only create the state if it doesn't already exist. - if (this->shmem_->find (ACE_DEFAULT_TIME_SERVER_STR) == -1) - { - // Allocate the space out of shared memory for the system time entry - void *temp = this->shmem_->malloc (sizeof (this->system_time_)); - - Thanks to Sandro Doro (alex@aureus.sublink.org) for suggesting these changes. - -Thu Mar 27 01:00:18 1997 Douglas C. Schmidt - - * include/makeinclude/platform_irix6.2_sgiCC.GNU: Added a new - platform config file for SGI Irix 6.2 using the CC compiler (not - NCC nor the MipsProcompiler). Thanks to Eric Dean Russell - for these changes. - - * ace/OS.h: Moved the ACE_LACKS_UTSNAME_T block into the right - part of the code. Thanks to Jonathan Biggar for - this fix. - - * ace/Malloc.h: Added an enhancement so that the new alignment - features will work regardless of the size of ACE_MALLOC_ALIGN. - Thanks to Fred LaBar for this fix. - - * ace/Synch_Options.cpp: We now automatically set the USE_TIMEOUT - flag if a non-0 timeout value is supplied. Thanks to Tim - Liddelow for this suggestion. - -Wed Mar 26 08:47:24 1997 David L. Levine - - * ace/{ACE.cpp,Log_Msg.cppOS.cpp}, - tests/{Message_Queue_Test.cpp,Naming_Test.cpp}: - Changed ::sprintf calls to ACE_OS::sprintf. Thanks to - Thilo Kielmann for - reporting this. - - * netsvcs/lib/{Client_Logging_Handler.cpp,Name_Handler.cpp, - Server_Logging_Handler.cpp,TS_Service_Handler.cpp, - Token_Handler.cpp}: added template specializations. - -Tue Mar 25 06:47:14 1997 Douglas C. Schmidt - - * ace/OS.h: Moved config.h to the top of OS.h so that we don't - have to worry about not defining things in the right place. - Thanks to Matthias Kerkhoff for pointing - this out. - -Tue Mar 25 22:54:49 1997 Irfan Pyarali - - * ace/OS.i: Added UNICODE support for ACE_OS::chdir(). Thanks to - Ivan Murphy for the code. - -Tue Mar 25 21:26:10 1997 David L. Levine - - * ace/TTY_IO.{h,cpp},README, and these config files: - config-aix-*.h, config-hpux-*.h, config-irix5.*.h, - config-mvs.h, config-osf1-*.h, config-sun*.h (except for g++ - and config-sunos5.5-sunc++-4.1.h), config-win*.h: - Added ACE_NEEDS_DEV_IO_CONVERSION to conditionally compile the - ACE_DEV_IO & conversion operator for ACE_TTY_IO, which is a - subclass of ACE_DEV_IO. Thanks to Fred LaBar - and Gonzalo Diethelm - for reporting warnings without this on - Irix 6.2 with the mipsPro compiler. - - * ace/OS.cpp (thr_create): on VxWorks, always pass 0 as first arg to - ::taskSpawn () so that VxWorks will generate the task ID. - Thanks to Dave Mayerhoefer - for providing this fix, without which random task names would - be assigned. - - * ace/ACE.cpp (get_bcast_addr): added return 0 at end of non-WIN32 - code to avoid compile warning from g++. - - * tests/IOStream_Test.cpp: removed extra "(%P|%t)" from output. - I couldn't get ACE_ERROR_RETURN to work on g++: it complained - about mismatched return types when returning an int from a - function that returns a void *, and about mismatched arguments - to an ACE_Log_Msg function if I cast the int to a void *. So, - I used ACE_ERROR instead. - Added ACE_UNUNSED_ARG (arg). Removed unused variables - error_at_server and error_at_client. - - * netsvcs/lib/TS_Clerk_Handler.cpp: added another template - specialization. - - * examples/Reactor/Multicast/client.cpp: Log_Wrapper::LOG_DEBUG - instead of LM_DEBUG. - - * examples/Threads/context_switch_time.cpp: use ACE_Sched_Params - to get platform-dependent thread priorities. Also, moved #includes - so that config.h is read before testing for ACE_HAS_THREADS. - - * examples/Threads/{auto_event.cpp,barrier2.cpp,future1.cpp, - future2.cpp,reader_writer.cpp,tss1.cpp,tss2.cpp}: - added template specializations. - -Tue Mar 25 10:01:05 1997 Chris Cleeland - - * config-linux.h: Added - ACE_HAS_{SVR4_DYNAMIC_LINKING,AUTOMATIC_INIT_FINI}. Thanks to - alex@aureus.sublink.org (Sandro Doro) for the change. - - * platform_linux.GNU: Added -ldl to LIBS. Thanks to - alex@aureus.sublink.org (Sandro Doro) for the change. - -Tue Mar 25 16:01:34 1997 Carlos O'Ryan - - * ace/Svc_Handler.cpp: - I forgot to comment this: "operator delete" used to call ::delete - on a void*, on ANSI/C++ this is not allowed. Since "operator new" - calls ::new for a char[] I do a casting to char* and call - ::delete[] on the char pointer. - - * ace/config-hpux-10.x-aCC.h: - HP-UX 10.10 supports CLOCK_GETTIME, my guess is that it should - work with g++ and HP/C++, but I won't mess with those files yet. - - * ace/Connector.h: - The default address parameter for "connect" is a bit tricky, from - the comments in the file: - // - // If the compiler supports 'typename' we cannot use - // - // PEER_CONNECTOR::PEER_ADDR::sap_any - // - // because PEER_CONNECTOR::PEER_ADDR is not considered a - // type. But: - // - // typename PEER_CONNECTOR::PEER_ADDR::sap_any - // - // will not work either, because now we are declaring sap_any a - // type, further: - // - // (typename PEER_CONNECTOR::PEER_ADDR)::sap_any - // - // is considered a casting expression. All I can think of is - // using a typedef, I tried PEER_ADDR but that was a source of - // trouble on some platforms. I will try: - // - typedef ACE_PEER_CONNECTOR_ADDR ACE_PEER_ADDR_TYPEDEF; - - * ace/OS.h: - The stock HP C++ compiler (cfront based) gives lots of warnings in - . I used to define volatile to avoid this warnings. Now - I think I'll rather like to see them. - - * ace/SPIPE_Stream.h: - * ace/SPIPE_Connector.h: - There was no meta-type info (PEER_ADDR) for SPIPE_Stream and - SPIPE_Connector. - - * ace/Stream_Modules.h: - * ace/Stream_Modules.cpp: - Fixed a "bug" introduced in my last change: a couple of - ACE_ALLOC_HOOK_* were commented but shouldn't. - - * examples/Connection/non-blocking/CPP-acceptor.cpp (open): - PR_AD cannot be used in this context, it expands to - _ACE_PEER_ACCEPTOR::PEER_ADDR (via ACE_PEER_ACCEPTOR_ADDR), but - the template parameter is _ACE_PEER_STREAM (aka PR_ST_1, aka - ACE_PEER_STREAM_1). - The right macro was ACE_PEER_STREAM_ADDR. - - * ace/Connector.h: - * ace/Connector.cpp: - The typedef trick I used (PEER_ADDR) did not work on every - platform. - I also broke some examples since ACE_PEER_CONNECTOR_ADDR did not - include ACE_TYPENAME on its definition. Hopefully this new trick - will work everywhere. - - * I finally sorted out the mistery of including "ace/Module.h" - into "ace/Task_T.cpp": when compiling "ace/Stream_Modules.cpp" you - get the following include sequence: - Stream_Modules.cpp - Stream_Modules.h - Task.h - Task.i - Task_T.h - Message_Queue.h (descendants removed) - Synch_T.h (descendants removed) - Task.h (already included). - Task_T.i - Task_T.cpp - Module.h - ACE.h (descendants removed) - Task.h (already included). - Module.i - Module.cpp - - At this point Module.cpp uses ACE_Thru_Task declared on - Stream_Modules.h, but after the #include "ace/Task.h"; - in fact Module.cpp tries to #include "ace/Stream_Modules.cpp" but - that second #include expands to nothing due to the canonical - protection on Stream_Modules.h. - That explains the removal of Module.h in Task_T.cpp. - If you are wondering why so long an explanation for this change - the answer is simple: just because I was curious on now it worked. - -Mon Mar 24 14:08:48 1997 Douglas C. Schmidt - - * ace/SOCK_Dgram_Bcast.cpp (mk_broadcast): Cleaned up the code a - bit. - - * ace/ACE: Added a new method called get_bcast_addr() which will - get the broadcast address for a host. Thanks to Paul Han - for suggesting this. - - * ace/UNIX_Addr: Added another set method in UNIX_Addr class: - - void set (const ACE_UNIX_Addr &sa); - // Creates an ACE_UNIX_Addr from another . - - Thanks to Paul Han for this. - - * ace/SOCK_Dgram: Removed the #if defined (ACE_HAS_IP_MULTICAST) - since this is now handled at the ACE_OS level. - - * ace/OS.h: Added support for IP multicast macros and structs even - on platforms that don't support it so that the tests will - compile without having lots of #ifdefs. - - * tests/Future_Test.cpp: Added a check for platforms that lack - threads. Thanks to Hakan Kallberg - for reporting this. - - * netsvcs/lib/Server_Logging_Handler.cpp: Added a check for - platforms that lack threads. Thanks to Hakan Kallberg - for reporting this. - - * examples/Threads/context_switch_time.cpp: Added an #ifdef for - ACE_HAS_THREADS to this test so that it will compile on - platforms that don't have threading. Thanks to Scott Halstead - for reporting this. - - * tests/IOStream_Test.cpp: Fixed up this test so that it works - correctly on platforms that lack multi-threading. Thanks to - Scott Halstead for reporting this. - - * netsvcs/lib/Makefile: Reincluded the LIB target so that we'll - build a static library. Thanks to Scott Halstead - for reporting this. - - * ace/SOCK_Dgram.cpp (recv): Added a check to make sure that we - don't try to copy more into the recv buffer than we've really - got. Thanks to Alan_Cabrera@fp.cibc.com for this fix. - - * ace/OS.cpp (readv): Added a check to make sure that we don't try - to copy more into the recv buffer than we've really got. Thanks - to Alan_Cabrera@fp.cibc.com for this fix. - - * ace/Malloc.h: Modified the alignment strategy to define - ACE_MALLOC_ALIGN to a number of bytes. (it gets rounded to a - number of long's). This makes it easier to work with more - complex buffer alignment strategies (e.g., DMA). Thanks to Fred - LaBar for this. - - * ace/OS.cpp (readv): Added several more changes for the readv() - emulation. Thanks to Alan Cabrera - and Adam Porter for these fixes. - -Mon Mar 24 14:22:17 1997 David L. Levine - - * ace/OS.cpp (thr_create): For VxWorks, fixed call to ::taskSpawn (). - ACE's arguments are in an array, not individual arguments. - Also, set flags to VX_FP_TASK if it's 0, to match behavior - of ::sp (). Thanks to Dave Mayerhoefer - for reporting these and providing - the fix. - - * ace/High_Res_Timer.cpp (elapsed_time (struct timespec &): - fixed, using same approach as in elapsed_time - (ACE_hrtime_t &nanoseconds), to get nanosecond resolution. - - * netsvcs/lib/TS_Clerk_Handler.cpp (handle_close): added - ACE_UNUSED_ARG (mask). Also, added template specializations. - - * examples/Reactor/Multicast/server.cpp (Server_Events ctor): - rearranged initializers to match declaration order. - - * examples/IOStream/server/iostream_server.cpp, - client/iostream_client.cpp: - added template specializations. - -Mon Mar 24 13:21:31 1997 Tim H. Harrison - - * ace/High_Res_Timer.cpp (elapsed_time): Added an - ACE_High_Res_Timer::elapsed_time (ACE_hrtime_t &nanosecond) - method that returns the number of elapsed nanoseconds. This is - accomplished even with the scale factors converting to - microseconds. It also does not use floating point - calculations. - -Sun Mar 23 13:25:39 1997 Tim H. Harrison - - * ace/High_Res_Timer.h: Removed from the - constructor of High_Res_Timer. All High_Res_Timers now use - global_scale_factor_ directly. Hopefully, this will not break - any existing code! - -Sat Mar 22 12:06:22 1997 Douglas C. Schmidt - - * ace/OS.h: The include statement for config.h was too low. Some - defines for key_t, needed for NT, didn't work. Thanks to Alan - Cabrera for these fixes. - - * examples/Reactor/Multicast: Improved the multicast client and - server programs to work better. - - * ace/Connector.cpp: Modified the ACE_Connector::handle_close() - method to prevent recursive calls to itself. Thanks to Paul Han - for reporting this. - - * ace/Svc_Handler.cpp: Put the check (closing_ == 0) in the - destructor as well as in the destroy() method. This prevents a - possible core dump when the timer exists. The instruction - reactor::remove_handler in the shutdown method currently will be - called twice when ACE_Svc_Handler object is being deleted. Core - dump occurs when it tries to execute ACE_Reactor::remove_handler - method the second time because the ACE_Svc_Handler object - pointer has already been deleted by the previous instruction - ACE_Reactor::cancel_timer. Thanks to Paul Han - for reporting this. - - * ace/OS.cpp: Added new thread-safe implementations of writev() - and readv() for platforms that lack these functions. - - * ace/SOCK_Dgram.cpp: Added new implementations of - ACE_SOCK_Dgram::{send,recv} that define methods for - send(iovec[], ...) and recv(iovec[], ...) for systems that - don't have sendmsg() and recvmsg(). Thanks to Alan Cabrera - for these fixes. - - * apps/jaws/HTTP_Handler.cpp: Removed some problematic template - specializations that were left over from an earlier version of - JAWS. Thanks to Adam Porter for reporting - this. - - * examples/Logger/Acceptor-server/server_loggerd.cpp: Revised the - code to use the new ACE_Svc_Handler logic that checks to ensure - that we don't recurse infinitely in handle_close(). - Thanks to Jean-Marc Strauss for - reporting this problem. - - * examples/Logger/simple-server/Logging_Handler.cpp - (handle_close): Added a check to make sure we don't end up - recursively calling handle_close(). This will prevent - a segfault. - -Sat Mar 22 07:30:49 1997 David L. Levine - - * ace/High_Res_Timer.*: Changed scale factor to convert - platform-dependent clock units to microseconds instead of - nanoseconds. That way, it should be greater than 1 for - all supported platforms. So, it's now an unsigned long - instead of a double. - - * ace/OS.h: Changed ACE_hrtime_t to unsigned __int64 with - _MSC_VER. Also, fixed typo: "uint64" instead of "unit64" - without _MSC_VER. - -Fri Mar 21 08:37:34 1997 Carlos O'Ryan - - * makeinclude/rules.lib.GNU: - I use the macro SOEXT to support HP non-standard extension for - shared library names (.sl instead of .so). - I also changed the rule to build shared libraries: under HP-UX you - cannot pass extra libraries (-lXXX options) when building a shared - lib. Before HP-UX 10.10 it wasn't a problem because no library was - needed with ACE, but to support XLI the '-lxti' flag must be used - on binaries (but not on shared libs). - - * include/makeinclude/platform_hpux.GNU: - The PIC option (+Z) was used always, clearly not intended. - - * include/makeinclude/platform_hpux_gcc.GNU: - Added a config file for g++ under HP-UX. - - * include/makeinclude/platform_hpux_aCC.GNU: - Added a config file for HP/aCC compiler under HP-UX. - - * ace/Makefile: - * netsvcs/lib/Makefile: - Changed to support the SOEXT macro. - - * config-hpux-10.x.h: - * config-hpux-10.x-aCC.h: - * config-hpux-10.x-g++.h: - I updated the files to HP-UX 10.10, AFAIK since that version HP-UX - uses fd_set instead of int in select(2) (so ACE_SELECT_USES_INT is - not needed) and the OS supports siginfo_t and ucontext_t so - ACE_HAS_SIGINFO_T and ACE_HAS_UCONTEXT_T are defined. - I *do not* have threads at my site nor the infamous PHSS_6246 - patch so I couldn't test the threaded version nor the HP cfront - based one. - ACE compiled fine with g++ and HP/aCC though. - - * ace/OS.h: - * ace/Malloc_T.h: - HP/aCC supports the typename keyword. I added a new config macro - 'ACE_HAS_TYPENAME_KEYWORD', when it is defined ACE_TYPENAME - expands to 'typename' when not it expands to nothing. - On the cases where HP/aCC requires the usage of 'typename' I added - a 'ACE_TYPENAME'. - - * ace/OS.i: - * ace/OS.cpp: - ACE_OS::inet_aton cannot be inlined under HP-UX. - - * ace/Connector.h: - * ace/Connector.cpp: - I have decided to use a typedef (PEER_ADDR) instead of - ACE_PEER_CONNECTOR_ADDR, mainly because the second form - requires a ACE_TYPENAME before each usage. - - * ace/Event_Handler_T.i: - Much to my surprize ACE_TYPENAME is required when using a template - typedef as a return value. - - * ace/Local_Name_Space_T.h: - HP/aCC does not like the usage of a private typedef from another - class. - - * ace/Strategies_T.h: - * ace/Strategies_T.cpp: - ACE_Process_Strategy declared two defaults constructors: - ACE_Process_Strategy(void) and ACE_Process_Strategy(int = 1). - The constructor code was wrong, it called open() with parameters: - open(thr_mgr, thr_flags, n_threads) - none of which were defined, worse, open() receives just one - parameter (the number of processes) just as the constructor, I - believe that C-w programming is lurking here. - - * ace/Signal.cpp: - Though the header file does not declare ACE_Sig_Handlers under - HP-UX (and the code is not defined too) some auxiliary functions - that use ACE_Sig_Handlers were defined. I removed their - definition. - Some day I'll try to take a look at the code, trying to find out - was wrong with them. - - * ace/Stream_Modules.h: - * ace/Stream_Modules.cpp: - By mistake I commented out the ACE_ALLOC_HOOK_* macros; have to - fix it *real soon*. - - * ace/Task_T.cpp: - No need to include "ace/Module.h" since only the template - declaration is used. When ACE_TEMPLATES_REQUIRE_SOURCE is defined - you end up using ACE_Thru_Task before it gets defined. - This is no problem unless your compiler checks template sintax - before instantiation as the HP/aCC compiler do. - - * examples/Reactor/Misc/test_demuxing.cpp: - ACE_MT_SYNCH was used, but it is only defined if ACE_HAS_THREADS, - I used ACE_SYNCH instead, which is defined as ACE_MT_SYNCH if - ACE_HAS_THREADS and as ACE_NULL_SYNCH if not. - Maybe the semantics are wrong, but the thing compiles. - -Fri Mar 21 15:10:59 1997 Douglas C. Schmidt - - * ace/Makefile (FILES): Moved Log_Msg to the beginning of the - source list in the ace Makefile. This is nice because it forces - the compilation of OS.i and that, obviously, is where you get - the complaints for the port. It's nice to have it at the - beginning so you catch the errors very early on before you've - compiled 30 or 40 files. Thanks to Scott Halstead - for this suggestion. - - * ace/Memory_Pool.cpp: Added #if !defined - (ACE_LACKS_SYSV_SHMEM) to handle systems like Chorus that - lack this feature. - -Thu Mar 20 18:58:50 1997 Douglas C. Schmidt - - * ace/Svc_Handler.cpp (destroy): Added a state variable to keep - track of when we are closing down the Svc_Handler. This is - necessary to prevent endless recursive calls to handle_close() - due to the recent enhancements to ACE_Timer_{List,Heap}. Thanks - to Bert Craytor for reporting - this. - - * tests/Conn_Test.cpp: Added a new test that makes sure the - Acceptor, Connector, and Svc_Handler are working correctly. - - * ace: Added some more changes for Chorus. Thanks to Wei Chiang - for these changes. - - * ace/OS.h: Added #define for SIGSEGV for platforms that lack it - (e.g., Chorus). - - * ace: Made a bunch of minor changes to support SunOS 4.x better. - Thanks to Scott Halstead for reporting - these problems. - - * tests/Conn_Test.cpp: Added ACE_TEMPLATES_REQUIRE_SPECIALIZATION - for the various templates used in this test. Thanks to Thilo - Kielmann for reporting this. - - * ace/Connector.cpp (connector): Fixed some minor bugs that - prevented the ACE_Connector from compiling. Thanks to David - Levine for noticing this. - - * ace/OS.h: Moved the ACE_LACKS_SIGACTION block so that it will - work on Win32. Thanks to Matthias Kerkhoff - for pointing this out. - -Thu Mar 20 22:38:27 1997 David L. Levine - - * ace/Timer_Heap.cpp: added template specializations. - - * netsvcs/lib/Client_Logging_Handler.cpp, - Name_Handler.cpp - Server_Logging_Handler.cpp - TS_Clerk_Handler.cpp - TS_Server_Handler.cpp - Token_Handler.cpp: added template specializations. - There are still many missing from libnetsvcs. - - * tests/Conn_Test.cpp, - Future_Test.cpp - IOStream_Test.cpp - Map_Manager_Test.cpp - Message_Block_Test.cpp - Message_Queue_Test.cpp - Reader_Writer_Test.cpp - SV_Shared_Memory_Test.cpp - Thread_Pool_Test.cpp}: added template specializations. - Thanks to Thilo Kielmann - for providing these. - - * ace/Log_Msg.cpp: removed commented-out template specialization. - - * include/makeinclude/platform_{chorus,hpux,hpux_gcc}.GNU: - split out CFLAGS and CCFLAGS from CC and CXX. - - * ace/config-aix-4.[12].x.h: added back ACE_HAS_THREAD_SELF and - and ACE_HAS_SVR4_DYNAMIC_LINKING; removed ACE_HAS_PTHREAD_T. - Thanks to Chris Lahey for figuring these out. - -Thu Mar 20 12:25:30 1997 - - * ace/ace.{mak,mdp}: Build->Settings->Code Generation->Processor is - now set to "Pentium" instead of "Blend*" for Debug and Release - builds. - - * ace/config-win32-msvc4.x.h: - * ace/config-win32-msvc2.0.h: - * ace/config-winnt-4.0-msvc4.x.h: Only define ACE_HAS_PENTIUM when - _M_IX86 == 500. Projects must specify Pentium in - Build->Settings->Code Generation->Processor to use the RDTSC - instruction in ACE_OS::gethrtime. - - * ace/High_Res_Timer.{cpp,i}: By default, High_Res_Timer is - constructed with a scale_factor == 1. This allowed me to remove - all the checks for scale_factor == 0 in the code. - - * ace/High_Res_Timer.h (static gettimeofday): If - global_scale_factor_ is not set, and we're on a platform that - requires global_scale_factor_ (e.g., Win32), - ACE_OS::gettimeofday will be used instead of ACE_OS::gethrtime. - This allows the scale_factor of 1 to still result in correct - values. - -Wed Mar 19 15:02:09 1997 Douglas C. Schmidt - - * ace: Added zillions of minor changes so that ACE will compile on - the new aCC compiler for HPUX. Thanks to Gonzalo A. Diethelm - and Carlos O'Ryan for - help with this. - - * ace/SOCK_Dgram_Mcast.cpp (subscribe): In addition to the - SO_REUSEADDR option, Irix has a SO_REUSEPORT option that must - also be set to allow multiple sockets to bind to the same - multicast address. Thanks to Robert V. Head for - reporting this. - - * ace: Added a slew of changes to support CHORUS. Thanks to - Wei Chiang for these changes. - - * ace/config-sunos4.*.h: Added #define ACE_HAS_UNION_WAIT based - on the recommendation of Kumar Neelakantan - . - - * ace/Log_Msg.cpp (log_hexdump): Replaced the use of ::sprintf() - with ACE_OS::sprintf() so that the return value would be correct - on SunOS 4.x! - - * ace/OS: Added ACE_HAS_CHARPTR_SPRINTF and ACE_SPRINTF_ADAPTER - to ACE_OS::sprintf() for SunOS 4.x platforms. Thanks to Kumar - Neelakantan for reporting this. - - * ace/Handle_Set.cpp (ACE_Handle_Set_Iterator): If the bound was - reached in the following loop, we should set this->num_ = - this->handles_.max_handle_ + 1 rather than go into the 2nd loop. - Thanks to Michael Newton for reporting - this. - - * ace/Handle_Set.cpp (ACE_Handle_Set_Iterator): - ACE_Handle_Set_Iterator::ACE_Handle_Set_Iterator did not work - properly if called with a zero handleset, as there was no bounds - check on the first loop therein. Thanks to Michael Newton - for reporting this. - -Wed Mar 19 16:06:32 1997 David L. Levine - - * ace/OS.h,README: added ACE_HAS_AIX_BROKEN_SOCKET_HEADER to wrap - #include of sys/socket.h with #undef/#define of __cplusplus. - - * ace/config-aix-4.[12].x.h: added ACE_HAS_AIX_BROKEN_SOCKET_HEADER, - ACE_HAS_PTHREAD_T, ACE_LACKS_TCP_H, and ACE_LACKS_SETSCHED. - Removed ACE_HAS_SVR4_DYNAMIC_LINKING and ACE_HAS_THREAD_SELF. - - Thanks to Daniel Montalibet for - both of the above modifications. - - * platform_{dgux4_epc,irix5.3_g++,linux*,m88k,osf1_3.2,sco*, - sunos4_g++,sunos5_centerline*,sunos5_g++,sunos5_sunc++*, - unixware_g++,vxworks5.2_g++}.GNU: split out CFLAGS and CCFLAGS. - Also, removed -lstdc++/-lm from g++ versions, because we now set - CXX to g++ instead of gcc, so those libraries are picked up. - - * include/makeinclude/platform_osf1_4.0{,_g++}.GNU: - added -lrt to support ACE_Sched_Params. Thanks to - Thilo Kielmann for - suggesting this. Also, split out CFLAGS and CCFLAGS. - - * ace/OS.h: removed SVR4_DYNAMIC_LINKING protection around - #define of RTLD_LAZY because it's used in ace/Parse_Node.cpp. - Thanks to Matthias Kerkhoff for pointing - this out. - - * ace/OS.i (thr_setcanceltype): added ACE_UNUSED_ARGS for STHREADS - case. Thanks to Chuck Gehr for - providing this fix. - -Tue Mar 18 21:53:03 1997 Douglas C. Schmidt - - * ace/SOCK_Dgram_Bcast.cpp (mk_broadcast): Modified the - SOCK_Dgram_Bcast class by adding a const char *host_name to the - contructor, and open, and mk_broadcast methods. If the user - passes in the host_name, then only the broadcast address of an - interface that has a matching ip address with the host will be - added to the if_list_. Otherwise, nothing changes. Thanks to - Paul for this feature. - -Tue Mar 18 13:20:59 1997 Irfan Pyarali - - * ace/ace.mdp: Reverted the change for DllMain as the entry point - to ace.dll. This is causing problems in multi-threaded - applications. - - * netsvcs/lib/Client_Logging_Handler.cpp: Added a check in fini() - to make sure we have a valid handler. If the connect attempt - failed, this->handler_ will be set to 0. - - * tests/Mem_Map_Test.cpp: Added code that removes all temporary - files created by the test. - - * tests/Time_Service_Test.cpp: Made sure we remove the backing - store file left behind by a aborted clerk process. - - * examples/Reactor/Ntalker/ntalker.cpp: The ntalker now uses - ACE::register_stdin_handler to register the STDIN. This function - allows for portability. - -Tue Mar 18 08:12:22 1997 David L. Levine - - * ace/Svc_Conf_y.cpp,Makefile: replaced "y.tab.c" string with - "Svc_Conf_y.cpp" to ease debugging. Thanks to Luca Priorelli - for suggesting this. - - * ace/IOStream.cpp (close): replaced call to - ACE_SOCK_Stream::close () with one to generic STREAM::close (). - Thanks to Kumar Neelakantan for - reporting this problem. - - * ace/OS.h,README,config-*.h: removed ACE_HAS_RTLD_LAZY_V, and - replaced with #define of RTLD_LAZY macro only if it's not - already defined (and if ACE_HAS_SVR4_DYNAMIC_LINKING is defined). - Thanks to Chris Lahey for providing this fix. - - * ace/OS.i (thr_setcancelstate, thr_setcanceltype, thr_cancel): - added ACE_UNUSED_ARG calls to avoid compiler warnings. Thanks - to Chuck Gehr for suggesting them. - - * ace/Local_Name_Space_T.h: moved #include of Local_Name_Space.h up - because this file needs declaration of ACE_NS_String. There - _shouldn't_ be a circular include problem because the #includes are - protected. Thanks to Daniel Montalibet - for reporting this problem and - providing the fix. - - * ace/Local_Name_Space.h: removed #include of ace/Service_Config.h. - - * include/makeinclude/wrapper_macros.GNU: put -I. before - -I$(WRAPPER_ROOT) instead of after. - - * tests/IOStream_test.cpp: added checks for receipt of proper values. - -Tue Mar 18 01:38:14 1997 Irfan Pyarali - - * ace/ace.mdp: Add DllMain as the entry point of ace.dll. This - allows us to call WSAStartup when ace.dll is loaded in and - WSACleanup when ace.dll is unloaded. People using ace as a - static library are still out in the cold with respect of getting - WSACleanup called before the process exits. - - I am not sure of two cases: (1) What happens when an application - crashes and was not able to call WSACleanup and (2) if the - application wants to continue using sockets when ace.dll is - unloaded. I hope this solves more problems than it creates ;-) - -Tue Mar 18 01:38:14 1997 Irfan Pyarali - - * ace/Parse_Node.cpp: Added END_OF_LINE characters to some - ACE_ERRORs. - - * netsvcs/{lib,servers}: Fixed the project files to produce and - use the dll in the correct place (which is netsvcs/lib). - - * ace/Log_Record.cpp: Corrected format string for fprintf(). - - * examples/Threads/test.mdp: Added context_switch_time.cpp to the - project. - - All of the above bugs were reported by Luca Priorelli - . Thanks for the contribution. - -Mon Mar 17 12:59:56 1997 David L. Levine - - * ace/OS.{h,i}: added nanosleep (), currently supported only - on POSIX platforms (if ACE_HAS_CLOCK_GETTIME is defined). - - * examples/Mem_Map/IO-tests/{IO_Test.cpp,test_io.cpp): - LM_ERROR instead of ACE_ERROR, and fixed call to ACE::basename (). - - * ace/OS.cpp (sched_params): return -1 if not supported, - instead of ENOTSUP. - - * ace/OS.cpp (fork): added ACE_UNUSED_ARG (program_name) for WIN32 - and VxWorks. - - * ace/Sched_Params.cpp (priority_min, priority_max, next_priority, - previous_priority): not supported on MVS, via ACE_LACKS_SETSCHED. - Thanks to Chuck Gehr for figuring this - out and providing the fix. - - * tests/Timer_Queue_Test.cpp (test_performance): changed type of - local variable "i" to (signed) int to avoid signed/unsigned - comparison, and eventual seg fault because a loop would never - terminate. - -Sun Mar 16 11:31:46 1997 Douglas C. Schmidt - - * ace/Timer_{List,Queue,Heap}.h: Defined copy constructors and - assignment operators in the private part of the class so that - users won't accidentally make mistakes. - -Sat Mar 15 21:44:45 1997 Douglas C. Schmidt - - * ace/Timer_{Queue,List}.cpp (cancel): handle_close() should be - called only once (especially when handle_close() implements - "delete this;" ). Since it is possible that the EH will be - registered more than once, I changed the code to do the - following: - - if (number_of_cancellations == 1) - // Call the close hook. - curr->handler_->handle_close (ACE_INVALID_HANDLE, - ACE_Event_Handler::TIMER_MASK); - - Thanks to Hamutal Yanay for - suggesting this. - - * examples/Mem_Map/IO-tests/test_io.cpp (run_tests): Removed all - uses of ::perror and replaced them with calls to ACE_ERROR - macros. - - * ace/Mem_Map.i (unmap): The ACE_Mem_Map::close method does not - work properly if the value of file_mapping_ is equal to - ACE_INVALID_HANDLE. In this case the method calls a useless - close (-1). Therefore, I changed: - - if (this->file_mapping_ != this->handle_) - ACE_OS::close (this->file_mapping_); - - in: - - if (this->file_mapping_ != this->handle_ && - this->file_mapping_ != ACE_INVALID_HANDLE) - ACE_OS::close (this->file_mapping_); - - Thanks to Sandro Doro for reporting - this. - -Thu Mar 13 18:21:15 1997 Irfan Pyarali - - * ace/ReactorEx.h: Change protection of methods/variables of - ReactorEx from private to protected. Thanks to Matthias Kerkhoff - for suggesting this. - -Thu Mar 13 16:31:54 1997 David L. Levine - - * ace/OS.i (thr_getprio): Added missing ACE_NOTSUP_RETURN - for the case of pthreads && !defined (ACE_LACKS_SETSCHED). - Thanks to Chuck Gehr for - reporting this. - -Thu Mar 13 00:12:15 1997 Irfan Pyarali - - * ace/Local_Name_Space_T.cpp (dump): Added ACE_UNUSED_ARG around - fake_this to stop the compiler from complaining about unused - variables. - - * ace/Message_Block.cpp (ACE_Data_Block::size): Moved the copying - of the old base before freeing it up. Thanks to Dieter Quehl - (dietrich.quehl@med.siemens.de) for pointing this out. - - * ace/Local_Name_Space_T.cpp: Added code to the list methods such - that structured exceptions are handled correctly. Thanks to - Karlheinz Dorn (karlheinz.dorn@med.siemens.de) for reporting - this. - -Wed Mar 12 21:31:51 1997 Irfan Pyarali - - * examples/Reactor/Ntalker/ntalker.cpp: Made changes to the - program which allows it to run under Win32. - - * ace/SOCK_Dgram_Mcast.cpp: Made changes to the setting of the - interface address so that it works correctly under Win32. - Thanks to Todd L. Montgomery (tmont@cs.wvu.edu), Anton van - Straaten (anton@appsolutions.com), Ole O. Johnsen - (Ole.Johnsen@gpi.telemax.no), Mike Flinn - (mike.flinn@smtpgate.aws.waii.com), Steve Weismuller - (spweismu@rsoc.rockwell.com) and others who helped out. - -Wed Mar 12 17:05:52 1997 Chris Cleeland - - * ace/config-linux-lxpthreads.h: Added ACE_HAS_IP_MULTICAST. - -Wed Mar 12 16:07:07 1997 David L. Levine - - * ace/OS.i (gethrtime): Added support for VxWorks and - other platforms that support ACE_HAS_CLOCK_GETTIME. - -Tue Mar 11 21:38:42 1997 Irfan Pyarali - - * ace/OS.i (open): Improved support for passing flags through to - CreateFile (). - -Tue Mar 11 14:30:12 1997 David L. Levine - - * ace/config-vxworks-ghs-1.8.h: added ACE_LACKS_SYS_NERR. - Thanks to Dave Mayerhoefer for - reporting this. - - * ace/OS.{i,cpp} (uname, hostname): added VxWorks support. - Thanks to Dave Mayerhoefer for - providing this. (Also, uninlined ACE_OS::uname on WIN32 - and VxWorks because it contains string literals.) - - * ace/High_Res_Timer.{i,cpp}: fixed interpretation of units: - ACE_hrtime_t is in nanoseconds, so it should be divided by - 1000000000 to get seconds. Fixed divs/mods to first divide - by 1000, then div/mod. Thanks to Luca Priorelli - for identifying this problem. - - Also, removed some casts that are no longer necessary, and - added some casts of ACE_hrtime_t values to longs to avoid - compiler warnings. Thanks to Matthias Kerkhoff - for pointing this out. - - * ace/Reactor.cpp (unbind): cast "index" to int to avoid - signed/unsigned comparison. Thanks to Matthias Kerkhoff - for pointing this out. - - * ace/ReactorEx.cpp (bind): changed type of "current_size" to - size_t to avoid signed/unsigned comparison. Thanks to Matthias - Kerkhoff for pointing this out. - - * ace/Timer_Heap.cpp (ctor, grow_heap): cast unsigned value - (i + 1) to int before negating to avoid compiler warning. - Thanks to Matthias Kerkhoff for pointing - this out. - - * examples/Threads/context_switch_time.cpp (main): added - ACE_SCOPE_PROCESS param to ACE_Sched_Params instances so - that the test works on WIN32. Thanks to Luca Priorelli - for identifying this problem. - - * ace/Registry.{h,cpp},Registry_Name_Space.{h,cpp},Svc_Conf_Tokens.h, - Svc_Conf_{l,y}.cpp,Timer_{Heap,List}.cpp,config-aix-4.2.x.h, - config-dgux-4.11-epc.h,config-mvs.h,config-sco-5.0.0-fsu-pthread.h, - config-sco-5.0.0-mit-pthread.h,config-sco-5.0.0-nothread.h: - added CVS header (Id wrapped in $). - - * netsvcs/clients/Logger/indirect_logging.cpp (main): declare loop - index as signed int to avoid signed/unsigned comparison. - -Tue Mar 11 07:34:04 1997 Douglas C. Schmidt - - * tests/Timer_Queue_Test.cpp: Added some code to illustrate how - the new handle_close() hook for ACE_Timer_{Heap,List} work. - - * ace/Timer_Heap.cpp (cancel): Modified the Timer_Heap and - Timer_Queue so that it will call the handle_close() hook when - Event_Handler's are cancelled. This is necessary to reclaim - resources. Thanks to Hamutal Yanay - for suggesting this. - - * ace/Event_Handler.h (signal): Added a TIMER_MASK, which is - passed to handle_close() when a timer is cancelled. - - * ace/Log_Msg.cpp (log): Fixed a bug by setting LPTSTR lpMsgBuf = - 0 on line 524. Thanks to Mark Wright for - reporting this. - -Sun Mar 10 13:06:04 1997 Douglas C. Schmidt - - * examples/Mem_Map/IO-tests: Fixed a small bug in "IO_Test.cpp" - file. In the "int Mmap1_Test::run_test" method I inserted an - lseek to rewind the output file. With this correction the speed - go up due to IO cache. Thanks to Sandro Doro - for reporting this. - -Sun Mar 9 18:24:37 1997 Prashant Jain - - * java/src/IOCntlMsg.java (IOCntlMsg): Added two new - classes/files, namely IOCntlCmds and IOCntlMsg. - - * java/src/Task.java: Added accessors to get/set the flags of the - Task. - -Sun Mar 9 13:06:04 1997 Douglas C. Schmidt - - * ace/Reactor: Fixed an evil bug where the expression - - if (handle >= 0 || handle < this->max_handlep1_) - - should be - - if (handle >= 0 && handle < this->max_handlep1_) - - Thanks to Mark Wright for reporting this. - -Sun Mar 9 13:06:04 1997 Douglas C. Schmidt - - * apps/Gateway: Updated the Peer and Gateway applications so that - they don't try to register ACE_STDIN with the Reactor on Win32. - - * apps/Gateway: Changed a bunch of calls to - ACE_Reactor::remove_handler() so that it no longer tries to - remove descriptor 0, but instead uses ACE_STDIN. Naturally, - this doesn't work due to the way that Win32 implements select() - but at least it compiles... Thanks to Elliot Lau - for reporting this. - - * apps/Gateway/Gateway/File_Parser: Changed the enumerated type - ERROR to PARSE_ERROR to avoid a name clash with a symbol - reserved by Win32 (barf). Thanks to Elliot Lau - for reporting this. - -Sat Mar 8 12:37:44 1997 Douglas C. Schmidt - - * ace/Log_Msg.cpp: Changed the implementation of ACE_Log_Msg so - that all accesses to the lock_ are now through a Singleton. - This makes it possible to define multiple instances of - ACE_Log_Msg within the same thread. Thanks to Jeff Morgan - for helping track this down. - - * Added support for SCO 5.0. Thanks to Auturo - for these patches. - -Thu Mar 06 13:24:04 1997 David L. Levine - - * ace/OS.i (gettimeofday): moved declaration of "result" so - that it's not declared on VxWorks, where it's not needed; - (stat): added cast of file arg to char * for VxWorks; - (thr_getprio): added missing "#else" before ACE_NOTSUP_RETURN (-1). - Thanks to Dave Mayerhoefer for - reporting these. - - * ace/OS.cpp (sched_param): with STHREADS, map ACE_SCOPE_THREAD - to ACE_SCOPE_PROCESS'. - - * ace/Svc_Conf_l.cpp: commented out YY_BREAK after ace_yyterminate () - to avoid GHS compiler warning about unreachable statement. - Thanks to Dave Mayerhoefer for - reporting this. - - * ace/ace.mak: removed Thread_Priority and renamed Scheduling_Params - to Sched_Param. - - * examples/IPC_SAP/SOCK_SAP/FD-unserver.cpp (handle_client): - added "l" qualifier for sprintf of ACE_OS::getpid (). - - * tests/Priority_Task_Test.cpp, - examples/Threads/{context_switch_time.cpp,Makefile}: - adapted to new thread priority/ACE_Sched_Params. - -Wed Mar 5 14:33:04 1997 Douglas C. Schmidt - - * ace/UNIX_Addr.cpp: Enhanced the implementation of set() so - that it works correctly on MVS, which has a different definition - of struct sockaddr_un: - - struct sockaddr_un { - unsigned char sun_len; - unsigned char sun_family; - char sun_path[108]; - }; - - Thanks to Chuck Gehr for reporting - this. - -Wed Mar 05 14:47:14 1997 David L. Levine - - * ace/OS.{h,cpp},Makefile; also, renamed Scheduling_Params.* to - Sched_Params.* and removed Thread_Priority.*: - - Major change in scheduling parameters interface: - The key change is that there is no longer a special thread priority - enum. Thread_Priority was changed to int, so applications can do - whatever they want. The ACE_Sched_Params class has some static - functions to help do this portably. - - Here are the changes from the ACE 4.1.3: - - 1) ACE_Thread_Priority: removed this class. - - It contained "priority class" and "thread priority". - "Priority class" is platform-specific and doesn't - need to be visible in ACE; it is subsumed by scheduling policy, - see below. "Thread priority" is replaced by the global - ACE_Sched_Priority typedef in ace/OS.h, see next change. - - 2) ace/OS.h: added ACE_Sched_Priority typedef (to int) - and ACE_SCOPE_THREAD. - - 3) ace/OS.h: added scheduling policy #defines: ACE_SCHED_OTHER, - ACE_SCHED_FIFO, and ACE_SCHED_RR. There's an ACE_Sched_Params:: - Policy typedef that can take one of these values. - - 4) ACE_Sched_Params: added priority_min (), priority_max (), - next_priority (), and previous_priority () functions. All - require an ACE_Sched_Params::Policy argument and take an - optional scope argument (to support the distinct thread - and process priorities on DEC UNIX). - - min_priority () and max_priority () have platform-specific - and policy-specific values, and direction (the min value may - be higher than the max value). The increment and decrement - operations allow applications to iterate over them, etc., - without explicitly specifying the direction of the priority - (0 for high or low priority). - - 5) The only way to apply ACE_Sched_Params is through - ACE_OS::sched_params (const ACE_Sched_Params &). - (This is not really a change, except for the name change from - ACE_OS::set_sched_params (). - - It sets both policy and priority of current thread or - process (depending on the scope in ACE_Sched_Params). - Not all combinations of policy, priority, and scope are - legal on all platforms. Unfortunately, I see no way around - this, because the intersection of legal ranges - on our supported platforms is empty. If an illegal request - is made, ACE_OS::sched_params () sets errno to EINVAL and - returns -1. - - 6) added ACE_OS::thr_setprio (const ACE_Sched_Priority prio) - to set the current thread's priority, only. - - Many thanks to Thilo Kielmann - for his careful review of this class design, thoughtful comments, - and assistance with implementation, especially for PTHREADS - platforms. - -Wed Mar 5 14:36:59 1997 Irfan Pyarali - - * SString.cpp: Fixed ACE*String initialization bugs. Thanks to - jmorey@tbi.com (John Morey) for reporting this. - -Wed Mar 5 14:33:04 1997 Douglas C. Schmidt - - * ace/OS.i: Fixed a bug in gethrtime - - const ACE_Time_Value now = ACE_OS::gettimeofday (void); - - which should be - - const ACE_Time_Value now = ACE_OS::gettimeofday (); - - Thanks to Chuck Gehr for reporting - this. - -Tue Mar 4 16:37:26 1997 Douglas C. Schmidt - - * examples/IPC_SAP/SOCK_SAP/CPP-unserver.cpp (main): Make life - easier by doing an unlink(rendezvous) before reopening the - UNIX-domain socket. Thanks to Jeff Morgan - for suggesting this. - -Sun Mar 02 19:58:00 1997 David L. Levine - - * ace/config*.h: removed #define of ACE_HAS_INLINED_OSCALLS - because it's no longer needed in the config files: it's - #defined in OS.h if needed. - -Sun Mar 2 17:14:29 1997 Douglas C. Schmidt - - * include/makeinclude: Updated all the platform-*g++.GNU files so - that they no longer -D__ACE_INLINE__ (since this is handled in - the the config-*g++.h files). - - * ace: Updated all the config-*g++.h files so that they now - #define __ACE_INLINE__ rather than having this set in the - platform_*.GNU file. This makes ACE easier to build and - integrate with other software packages. - -Fri Feb 28 02:22:33 1997 Douglas C. Schmidt - - * ace/SOCK_*: There were problems starting UDP broadcast servers - (all using the same well known port number) multiple times on - one machine (this is very useful test distributed applications - on one single machine). Setting the SO_REUSEADDR option for the - broadcast socket allows binding of a socket that is already in - use and thus allows us to start more than one broadcast servers - in parallel on one machine. Thanks to Dieter Quehl - for this fix. - - Therefore, I patched ACE_SOCK_Dgram_Bcast, ACE_SOCK_Dgram and - ACE_SOCK to include this feature. In addition, I also changed - ACE_SOCK_Connector/ACE_SOCK_Acceptor to use this feature instead - of calling setsockopt() there explicitly. - - * examples/IPC_SAP/SOCK_SAP/FD-unserver.cpp (main): Fixed up the - use of ACE_OS::fork() here to use the new "named" version. - - * ace/OS.h: Added a clever new wrapper function called fork (const - char *program_name), which calls fork() and then automatically - calls ACE_LOG_MSG->sync (program_name) to sync up the program - name. This eliminates a common source of error when forking - children and using ACE_Log_Msg::log(). - - * examples/IPC_SAP/SOCK_SAP/FD-un{client,server}.cpp: Updated the - FD client and FD server programs so that it is now a concurrent - server. - - * ace/config-mvs.h: Added #define ACE_LACKS_TCP_H for MVS. Thanks - to Chuck Gehr for pointing this out. - - * ace/OS.h: Added a new #define ACE_LACKS_TCP_H that skips the - inclusion of the netinet/tcp.h file if it isn't on the platform. - - * ace/OS.i (thr_cancel): Changed the line - - ACE_UNUSED_ARG (t_id); - - to - - ACE_UNUSED_ARG (thr_id); - - Thanks to Chuck Gehr for reporting - this. - - * ace/SString.cpp: Fixed up all the ACE_[CSW]String code so that - always allocates a rep_ even in the null constructor. This - saves us from having to handle odd special cases later on... - Thanks to John Morey for reporting this. - - * ace/Service_Repository.cpp (close): Changed the order in which - services are destroyed when the Service Configurator is closed. - Currently, services are destroyed in the order in which they are - created according to the svc.conf file. Now, we shut them down - in reverse order. This makes more sense when services are - related, i.e., one service has to be started before another. - Thanks to Karlheinz for this suggestion. - - -Fri Feb 28 12:13:09 1997 David L. Levine - - * ace/OS.h: fixed definition of ACE_TIMER_SKEW. Thanks - to Chuck Gehr for pointing this out. - -Thu Feb 27 21:36:28 1997 David L. Levine - - * ace/OS.{i,cpp} (gethrtime): support on all platforms by - using ACE_OS::gettimeofday () if there is no native high - resolution timer. Moved ACE_OS::getimeofday () definition - toward top of OS.i so that it is always defined before - being called. Finally, expanded gethrtime () support from - linux to __GNUC__ with ACE_HAS_PENTIUM; it should work on - platforms such as VxWorks with gcc on Pentiums. - - * ace/config-osf1-4.0-{,g++}.h: added ACE_HAS_CLOCK_GETTIME. - Thanks to Thilo Kielmann - for pointing this out. - -Thu Feb 27 17:06:12 1997 - - * ace/High_Res_Timer.h (get_env_global_scale_factor): This static - method will set the global_scale_factor to the value in an - environment variable (ACE_SCALE_FACTOR by default). - - * ace/High_Res_Timer.*: Changed all calculations to divide by - scale_factor before doing / and %. This must be done before the - mod for correctness. - - * ace/Profile_Timer.i (start): Changed start and stop methods to - call ACE_High_Res_Timer::gettimeofday. This should allow - greater timing accurracy. - - * ace/High_Res_Timer.h (global_scale_factor): Added a static - global_scale_factor that allows applications to set one scale - factor for all high res timers. This is important for platforms - like intel where the scale factor will vary based on the - processor clock speed. - - * ace/High_Res_Timer.i (gettimeofday): This static method calls - ACE_OS::gethrtime and converts to an ACE_Time_Value based on the - global_static_factor. - -Wed Feb 26 18:28:35 1997 Douglas C. Schmidt - - * ACE-install.sh: Added some fixes for the ACE-install.sh script. - Thanks to Eugene R. Somdahl for reporting these. - - * ace/Connector.cpp (handle_close): Added a test to see if the - reactor_ is NULL and if it is, don't bother trying to use it to - clean up. Thanks to Paul Han for this - suggestion. - -Tue Feb 25 21:19:57 1997 David L. Levine - - * ace/OS.h,config-sunos*.h: default ACE_TIMER_SKEW to 0, - and override to 10 ms in all Solaris config files. - - * ace/Svc_Conf_l.cpp,Makefile: #undef ACE_HAS_TERM_IOCTLS - so that /usr/include/sys/termios.h won't be included; it - #defines ECHO, and Svc_Conf_l.cpp has an ECHO symbol. - - * ace/ACE.cpp (sock_error): added ACE_UNUSED_ARG (error);. - - * ace/Timer_Queue.cpp (ctor): rearranged initializers to - match declaration order. - -Tue Feb 25 19:57:54 1997 - - * ace/Timer_Queue.cpp (gettimeofday): Added gettimeofday accessors - on the Timer_Queue. The default implementation calls - ACE_OS::gettimeofday. Applications can specify, via pointers to - functions, that a timer queue use an alternate gettimeofday - implementation (e.g., a high resolution timer). - - * ace/Reactor.cpp (schedule_timer): The Reactor no longer calls - ACE_OS::gettimeofday. Instead, it calls - Timer_Queue::gettimeofday. - - * ace/ReactorEx.cpp (schedule_timer): The ReactorEx no longer calls - ACE_OS::gettimeofday. Instead, it calls - Timer_Queue::gettimeofday. - -Tue Feb 25 17:40:57 1997 Douglas C. Schmidt - - * ace/Log_Msg.cpp: Updated the 'p' option of the log() method to - use the new ACE::sock_error() method for cases where - FormatMessage() fails. - - * ace/ACE: Added a new sock_error() method to class ACE which - returns the appropriate message for each WinSock error code. - This makes up for an apparent oversight in Win32. Thanks to - Michael R. MacFaden" for this. - -Tue Feb 25 01:33:06 1997 Douglas C. Schmidt - - * ace/OS.h: Moved outside of the VXWORKS #ifdef - since it seems to be available on other platforms (e.g., - Solaris). If people find this not to be the case on all - platforms please let me know and I'll #ifdef it. Thanks to - Sumedh Mungee for reporting this. - -Tue Feb 25 16:20:29 1997 Irfan Pyarali - - * examples/Connection/non_blocking/CPP-acceptor.cpp: Added a - specific checl for timeouts. Also, changed - ACE_PEER_ACCEPTOR_ADDR to ACE_PEER_STREAM_ADDR - - * examples/Connection/non_blocking/non-blocking.{mak,mdp}: New - project files for Win32. - - * ace/Log_Msg.cpp: Minor changes. - -Mon Feb 24 17:16:06 1997 Douglas C. Schmidt - - * ace/Log_Msg.cpp (ACE_Log_Msg): Enable the thread-specific - tracing flag by default. This ensures that tracing will work - "out of the box." - - * ace/config-sunos5.[45]-g++.h: Added a #define for - ACE_HAS_TERM_IOCTLS. Thanks to Joey Zhu for - reporting this. - - * ace/Synch.cpp (acquire): Simplified the recursive mutex logic - for acquire(). Thanks to Arthur J. Lewis" - for reporting this. - - * examples/Connection/non_blocking/CPP-acceptor.cpp (init): Added - a #ifdef for ACE_WIN32 so that we don't register the signal - handler for SIGPIPE since it's not supported on Win32. Thanks - to Ivan Murphy for reporting this - problem. - - * examples/Connection/non_blocking: The SPIPE examples in - (test_spipe_{acceptor,connector}.cpp) aren't ported to Win32 - yet. They currently don't work because ACE_SPIPE*'s can't be - registered with the ACE_Reactor (which only works with sockets). - I've #ifdef'd these examples so that they don't get compiled on - Win32. Thanks to Ivan Murphy for - reporting this problem. - -Mon Feb 24 20:28:10 1997 David L. Levine - - * ace/OS.h: use signed __int64 for ACE_hrtime_t because VC++ - won't convert unsigned __int64 to double. Thanks to Irfan - for reporting this. - - * include/makeinclude/platform_{irix5.3_g++,linux*,m88k, - osf1_4.0_g++,sco-nothread,sunos*g++,unixware_g++}.GNU: - changed C++ compiler (CXX) from gcc to g++ so that libg++ - will be linked in. Thanks to James CE Johnson - for suggesting this. - - * examples/IOStream/{client,server}/Makefile,tests/Makefile: - removed -lg++, when gcc is the compiler, because it's no - longer needed with g++ as the compiler. - -Sat Feb 22 23:03:45 1997 David L. Levine - - * ace/OS.i: restored version 4.89 and 4.90 changes that - were lost in version 4.91. - - * ace/OS.{i,cpp},config-linux*.h: added ACE_OS::gethrtime () - support for Linux on Pentiums. - - * ace/High_Res_Timer.*: changed scale_factor type from - u_long to double so that it can be less than 1. - - * ace/Thread_Priority.cpp: "linux" instead of "LINUX". - - * tests/Priority_Task_Test.cpp (open): set this->priority_ because - an assertion uses it. Also, use ACE_NORMAL_PRIORITY_CLASS so that - root doesn't have to run the test on Solaris. - -Sat Feb 22 22:07:35 1997 Chris Cleeland - - * tests/Priority_Task_Test.cpp (open): Now use - ACE_Thread_Priority while setting the priority of the new - thread. - - * ace/Thread_Priority.cpp (convert_to_os_priority): Changed - return type for this to 'int' from 'long' on Linux. Thanks - to James CE Johnson for pointing this - out! - - * ace/OS.i (thr_cancel): Corrected erroneous macro argument. - Thanks to James CE Johnson for pointing - this out! - -Sat Feb 22 17:00:59 1997 - - * ace/OS.i (gethrtime): Added support for intel's RDTSC - instruction for pentium architectures. - -Sat Feb 22 10:57:47 1997 Douglas C. Schmidt - - * ace/Stream.cpp (open): Make sure that if we allocate the Tasks - in the Stream head and the Stream tail that we set the M_DELETE - flag so that the close() method will clean up the memory. - Thanks to David Levine and Purify for noticing this problem. - -Fri Feb 21 08:06:41 1997 Douglas C. Schmidt - - * ace/OS.i: Yikes, it looks like the Solaris and the POSIX version - of sigwait() are different! The Solaris version returns the - signal number, whereas the POSIX version returns 0 on success, - errno on failure, and sets a parameter with the signal on - success. I've fixed the ACE_OS C++ wrapper so that the right - thing happens, i.e., errno is always set to the error (if - sigwait() returns -1) and the signum is always returned as the - argument and the return value on success ... Thanks to Harry - Gunnarsson for reporting this. - -Fri Feb 21 11:01:22 1997 David L. Levine - - * ace/Thread_Priority.cpp: fixed return type of - convert_to_os_priority () for Linux. Thanks to - James CE Johnson for pointing this out. - - * examples/Shared_Malloc/test_malloc.cpp, - examples/System_V_IPC/SV_Message_Queues/{T,}MQ_Server.cpp (main): - added ACE_UNUSED_ARG (sa);. - -Fri Feb 21 04:12:31 1997 - - * ace/OS.h: Added ACE_SEH_FINALLY. - - * ace/ReactorEx.h: Added ACE_ReactorEx_Test as a friend class. I - think we should have one such friend class for all classes in - ACE. - - * examples/Reactor/ReactorEx/test_exceptions.cpp: New test which - checks how ReactorEx deals with structured exceptions thrown by - user code - - * ace/ReactorEx.cpp (safe_dispatch): Added protection against - structured exceptions caused by user code when dispatching - handles - -Thu Feb 20 17:32:54 1997 Douglas C. Schmidt - - * apps/Gateway: Added a new -v flag to the peerd and gatewayd - applications so that they will print out the strings that are - passed to them. This makes it easier to debug and see what's - happening. - -Wed Feb 19 19:39:06 1997 Douglas C. Schmidt - - * apps/Gateway/Gateway/Concrete_Proxy_Handlers.cpp (recv): Removed - the VERBOSE #ifdefs since they weren't used and were causing - compile errors. Thanks to Bert Craytor - for reporting this. - -Wed Feb 19 00:39:50 1997 Douglas C. Schmidt - - * examples/ASX/Event_Server: Updated the README file a bit to - clarify some loose ends. The documentation now explains - precisely how to start up the transceivers correctly. Thanks to - Patty Genuald for suggesting this. - - * include/makeinclude: Removed the default symlink for - platform_macros.GNU since it is "Solaris-biased" ;-). Thanks to - Amos Shapira for reporting this. - -Wed Feb 19 14:41:18 1997 Tim H. Harrison - - * ace/Reactor.cpp: Modified to use timer_queue_->gettimeofday(). - - * ace/Proactor.cpp: Modified to use timer_queue_->gettimeofday(). - - * ace/ReactorEx.cpp: Modified to use - timer_queue_->gettimeofday(). Also had to modify the - ReactorEx_Notify mechanism to use the ReactorEx's timer queue to - call gettimeofday. - - * ace/Timer_Queue.h: Added a gettimeofday method. This allows - applications to replace the timer mechanism used by the - Reactors. The default implementation returns - ACE_OS::gettimeofday. However, a real-time application can - inherit from Timer_Queue and override gettimeofday to return a - value from a high resolution timer. - - * STL/bool.h: Changed the defines for type bool. First, bool is no - longer defined for WIN32 since yvals.h typedefs it already. - Also, I moved the defines out the namespace. I'm not sure if - that's the right thing to do. - -Tue Feb 18 16:41:02 1997 Douglas C. Schmidt - - * include/makeinclude: Added minor enhancements to rules.local.GNU - and wrapper_macros.GNU so that it works with MVS. Thanks to - Chuck Gehr for this. - - * include/makeinclude: Added a new platform_mvs.GNU file that - supports builds on MVS! Thanks to Chuck Gehr - for this. - - * tests/TSS_Test.cpp (worker): To get TSS_Test.cpp to compile on - MVS we changed line 69 from: - - ACE_thread_key_t key = 0; - - to: - - ACE_thread_key_t key = ACE_OS::NULL_key; - - and line 122 from: - - key = 0; - - to: - - key = ACE_OS::NULL_key; - - Thanks to Chuck Gehr for reporting - this. - - * ace/Reactor.cpp (dispatch): Fixed the dispatching logic so that - we bail out as soon as we discover that our state has changed. - Thus, we'll recompute the fd_sets used for select(). - -Tue Feb 18 19:02:53 1997 - - * ace/ReactorEx: - - (a) Made wakeup_all_threads() public. Thanks to Hamutal Yanay - for suggesting this. - - (b) Change closed_for_business_ to open_for_business_. Also made - sure that open and close can potentially be called multiple - times from multiple threads. - - (c) Changed unbind and unbind_all such that they iterate through - all the handles. - - (d) Added a check to see if the handle has been scheduled for - deletion before dispatching it. - -Tue Feb 18 21:24:57 1997 David L. Levine - - * ace/IOStream.h,README: replaced ACE_WIN32 conditional with - ACE_LACKS_IOSTREAM_FX. - - * ace/config-{mvs,win*}.h: added #define ACE_LACKS_IOSTREAM_FX. - Thanks to Chuck Gehr for pointing - out the need for this support for MVS. - - * examples/Reactor/Misc/test_demuxing.cpp: removed unused - variable "done". - - * examples/Reactor/Misc/test_signals_1.cpp (main), - examples/Reactor/Ntalker/ntalker.cpp (main): - added ACE_UNUSED_ARG (sig);. - -Tue Feb 18 17:15:24 1997 Tim H. Harrison - - * ace/ace.mdp, ace/mak: Modified release configuration to build - acer.dll. - -Tue Feb 18 11:43:04 1997 David L. Levine - - * ace/Log_Msg.cpp: removed destructor because it's not declared - and it's empty. - - * ace/OS.i (thr_setprio): added another case (that is NOTSUP) - for platforms with Pthreads and with LACK_SETSCHED. Thanks to - Chuck Gehr for pointing this out. - - * tests/Reactor_Notify_Test.cpp (main): added shutdown flag so - that normal termination reaches ACE_END_TEST. - - * tests/Reactors_Test.cpp (worker): changed "timeout" message to - "Reactor shutdown" because that indicates normal termination, - and won't fool the one-button test. - - * examples/Mem_Map/IO-tests/test_io.cpp (main): added - ACE_UNUSED_ARG (sa);. - - * examples/Misc/test_trace.cpp (main): added ACE_UNUSED_ARG - for sig1 and sig2. - -Tue Feb 18 03:50:10 1997 Irfan Pyarali - - * ace/ReactorEx: - - (a) Added a closed_for_business_ flag so that handle_events() - cannot be called after the ReactorEx has been closed down. - - (b) Transfer of ownership of the ReactorEx to a new owner has - changed. The transfer will not complete until all threads - are ready for it (just like the handle set). - ReactorEx->update_state() now looks out for changes in - ownership. - - * examples/Reactor/ReactorEx/test_MT.cpp: - - (a) The test now terminates and number of iterations can be - specified on the command line. - - (b) Graceful shutdown of ReactorEx is now exercised in the - test. This is a change for the earlier infinite loop. This - also shows how to gracefully close ReactorEx which is being - shared by multiple threads. - - (c) Timers were added to the test. - - * ace/config{win32}: Added flag ACE_LACKS_LINEBUFFERED_STREAMBUF. - -Mon Feb 17 22:37:35 1997 Tim H. Harrison - - * ace/Log_Msg.h (ACE_RETURN): Modified all ACE_RETURN macros to - use ACE_OS::last_error instead of errno. This makes these more - portable to Win32. - - * ace/Log_Msg.cpp (log): Modified Win32 version to use - FormatMessage if errnum is greater than sys_nerr. - - * ace/OS.i (last_error): Modified Win32 version to return - GetLastError if errno == 0. - -Mon Feb 17 18:32:29 1997 Douglas C. Schmidt - - * ace/OS.h: Protected the #ifdef for CLOCK_REALTIME so that it - won't conflict with an existing macro in AIX. Thanks to Chris - Lahey for this. - - * ace/Local_Name_Space_T.h: Added Local_Name_Space.h to - Local_Name_Space_T.h so that templates will work correctly on - AIX. Thanks to Chris Lahey for this. - - * tests: Added a new test, Reactor_Notify_Test.cpp, which tests - out the new max_notify_iterations() method on the Reactor. - - * ace/Reactor: Finished rewriting and testing the new dispatching - logic of the Reactor. The new implementation guards against - pathological cases where ACE_Event_Handler::handle_*() methods - remove registered ACE_Event_Handler objects whose handles are - pending in the dispatch_set. Previously there was no good way - to guard against this. Now, it should be handled automatically. - - * ace: Added many minor fixes to remove warnings with the SGI C++ - compiler. Thanks to Gonzalo Diethelm for - suggesting this. - - * include/makeinclude/platform_irix6.2_sgic++.GNU: Turned on all - the warnings for the SGI C++ compiler. Thanks to Gonzalo - Diethelm for suggesting this. - -Mon Feb 17 20:59:47 1997 David L. Levine - - * ace/IOStream.h: added null ipfx (), etc., methods for ACE_WIN32 - because its iostream class doesn't have them. - - * ace/OS.h: added #include of on VxWorks. - - * ace/Pipe.cpp (open): enabled TCP_NODELAY on VxWorks now that - OS.h #includes . - - * ace/ReactorEx.h: made ACE_ReactorEx_Handler_Repository destructor - virtual because the class has other virtual functions. - - * tests/IOStream_Test.cpp: removed ACE_WIN32 #ifndef, and - removed q_char bool conversion operator because it shouldn't - be needed. - - * examples/Reactor/Misc/pingpong.cpp (handle_input): cast buf_len - to ssize_t to avoid signed/unsigned comparison. - - * examples/Service_Configurator/IPC-tests/client/\ - remote_dgram_client_test.cpp (main): cast mmap.size () to - ssize_t to avoid signed/unsigned comparison. - -Mon Feb 17 09:25:08 1997 Chris Cleeland - - * ace/config-linux-lxpthreads.h: Bumped the Linux kernel version - number assigned to the symbol LINUX. Also added conditional - defines for PTHREAD_{MAX,MIN}_PRIORITY when using Xavier Leroy's - LinuxThreads. - - * ace/Thread_Priority.cpp: Added convert_to_os_priority() for Linux. - -Mon Feb 17 03:15:48 1997 Irfan Pyarali - - * tests/SOCK_Test.cpp (server): Changed recv_n() to recv(). - - * tests/tests.{mak,mdp}: Added two new tests: IOStream and - Reactor_Notify. - - * ace/Reactor: Removed all special checks for setting - ACE_Reactor::max_notify_iterations_ on WIN32 to be 1. This was - made possible after we figured out that the errno was being - reset after the recv() call in handle_input(). This allows - ACE_Reactor_Notify::handle_input() to serve upto - ACE_Reactor::max_notify_iterations_ notifications in one shot - rather than just 1 on WIN32. This should speed up the Reactor on - WIN32 platforms. - -Sun Feb 16 12:23:23 1997 Douglas C. Schmidt - - * ace/Reactor.cpp: Totally rewrote the ACE_Reactor's dispatching - mechanism so that it now keeps track of whether the state of the - wait_set_ has changed during a dispatch (i.e., whenever - register_handler_i() or remove_handler_i() is called). If the - wait_set_ state *has* changed, then we bail out and rerun - select() in order to get the latest changes. - - * ace/Reactor.cpp: Changed the implementation of the - ACE_Reactor_Notify class so that (1) it short-circuits a trip - through the ACE_Reactor::notify_handle() method (after all, it's - just going to call its own handle_input() method back) and (2) - the ACE_Reactor_Notify::handle_input() method now returns a - count of the number of handlers that it dispatched. - - * ace/Log_Msg.h: Added a (%P|%t) so that we now print out the - process id and thread number for failed ACE_ASSERT() calls. - - * tests: Removed the unnecessary template specializations of - ACE_Atomic_Op since this is already done - in libACE. - - * ace/Reactor.cpp: Removed the #ifdef preventing the enabling of - non-blocking mode for the recv() side of the Reactor's - notification pipe (socket) for Win32. I believe that with the - new max_notify_iterations scheme we should be all set. - - * ace/ReactorEx.cpp: Added an identical API for bounding the - max_notify_iterations() for ReactorEx. - - * ace/Reactor.cpp: Enhanced the Reactor's notify() mechanism so - that it is now possible to set the max_notify_iterations(), - which limits the number of times that the - ACE_Reactor_Notify::handle_input() method will iterate and - dispatch the ACE_Event_Handlers that are passed in via the - notify pipe before breaking out of its recv() loop. This is - necessary to keep from starving out other Event_Handlers. - Thanks to Rod Skinner for pointing out the - need for this. - - * ace/Reactor.cpp: Fixed a bug in the WIN32 - ACE_Reactor_Notify::handle_input() logic. We were calling - requeue_position(0) when we should have been calling renew(). - -Sat Feb 15 11:46:39 1997 Douglas C. Schmidt - - * ace/ACE.cpp: It appears that VxWorks doesn't support fcntl(). - However, it does seem to support ioctl(). Therefore, that's how - we'll set the descriptors into non-blocking mode. Thanks to - Dave Mayerhoefer for reporting this. - - * ace/SOCK_Stream.h: Corrected the documentation for - ACE_SOCK_Stream::recv_n (void *buf, size_t len, int flags, const - ACE_Time_Value *timeout). Thanks to Paul Roman - for reporting this. - - * ace/SOCK_Stream.i (recv_n): Fixed a minor bug in the - SOCK_Stream.i line 38: - - ACE_TRACE ("ACE_SOCK_Stream::send_n"); - - should be - - ACE_TRACE ("ACE_SOCK_Stream::recv_n"); - - Thanks to Paul Roman for reporting this. - -Fri Feb 14 00:40:14 1997 Douglas C. Schmidt - - * ace/TTY_IO.cpp (control): Moved the drop out timer value from - the ACE struct to the WinNT struct. Thanks to Brad Flood - for this fix. - -Thu Feb 13 21:24:17 1997 - - * ace/OS.i (event_wait): Fixed the missing check for success. - - * ace/Synch: Fixed problems with multiple removal of - resources. Thanks to Bert (Bcraytor@aol.com) for pointing this - out. - - * examples/Threads/test.{mdp,mak}: Reorganized project so that it - is easier to use. - - * examples/Threads: Small changes to make tests run faster. - -Thu Feb 13 01:49:38 1997 Irfan Pyarali - - * ace/OS.i (stat): Added stat() to ACE_OS. - - * apps/jaws: The ACE web server has now been ported to Win32. - - * ace/ReactorEx: Add a new version of remove_handler(). - - * examples/Reactor/ReactorEx/test_MT.cpp: Fixed stuff so that only - are activated. - -Wed Feb 12 22:58:15 1997 Douglas C. Schmidt - - * ace/ReactorEx: Made minor changes to the ReactorEx. - - * examples/Reactor/ReactorEx/test_MT.cpp: Updated Irfan's new - ReactorEx test to use ACE_Tasks. - -Wed Feb 12 00:08:42 1997 Irfan Pyarali - - * ace/ReactorEx: Finished a complete rewrite of - ReactorEx. The new version allows multiple threads of - control to wait simultaneously in - ::WaitForMultipleObjects(). This was difficult because the - set of ACE_HANDLEs used in ReactorEx->handle_events() is - shared between all threads. We devised a clever protocol - that ensures all changes to the handle set are - serialized. This serialization was achieved by using - multiple (auto and manual) events and mutexes and by taking - advantage of the "waitAll" semantics of - WaitForMultipleObjects(). - - Concept of "owner" thread is introduced in ReactorEx. We - need to keep track of the "owner" because we don't want - multiple threads to try to expire timers. Therefore the - "owner" thread is the only one allowed to expire - timers. Also, the owner thread is the only thread which - waits on the internal notify handle (which is used to - dispatch explicit calls to - ACE_ReactorEx::notify(). Initially, the creator thread of - ReactorEx becomes the "owner" thread. Ownership can later be - transferred among threads, just as with the standard - ACE_Reactor. - - We also updated the Handler Repository since it now - keeps track of tuples to be added - and deleted from the current handle set at the appropriate - time (i.e., when all threads are out of - WaitForMultipleObjects() and have completed all necessary - dispatching). The Handler_Repository implements the update - protocol that is used to serialize changes to its internal - state. - - Two slots were added to the parameter in the - constructor and open methods of ReactorEx that will store - handles used for internal management. Therefore, users can add - upto MAXIMUM_WAIT_OBJECTS - 2 handles into ReactorEx. On - current WinNT platforms (e.g., 3.51 and 4.0) - MAXIMUM_WAIT_OBJECTS is 64. - - Note that the interface to ReactorEx did not change in this - process. Your existing code should work without changes. - Moreover, we've optimized the implementation so that if only - 1 thread calls ACE_ReactorEx::handle_events() the code is - very efficient. Moreover, you can dynamically add or remove - threads without having to register them with the ReactorEx. - - * examples/Reactor/ReactorEx/test_MT.cpp: This application tests - multiple threads simultaneously calling - ReactorEx->handle_events(). It also shows how different threads - can update the state of ReactorEx. - -Wed Feb 12 00:08:42 1997 Douglas C. Schmidt - - * ace/Synch: Added a remove() call to ~ACE_Thread_Mutex so that it - will be removed (and resources cleaned up) automatically when an - ACE_Thread_Mutex object goes out of scope. Thanks to Jay - Denkberg for reporting this. - - * ace: Added a new config file (config-irix6.2-sgic++-nothreads.h) - that works for non-Pthread versions of SGI 6.2. Thanks to Fred - LaBar for this. - - * ace/XtReactor: Fixed a bunch of minor bugs that crept into the - ACE_XtReactor. Thanks to Fred LaBar - for reporting this. - - * ace/OS.i (thr_getprio): Fixed a typo in the #ifdefs so that we - return ACE_NOTSUP_RETURN(-1) if threading isn't enabled. Thanks - to Fred LaBar for reporting this. - -Tue Feb 11 11:26:03 1997 David L. Levine - - * ace/OS.{h,i},config-vxworks*.h,README: added ACE_HAS_CLOCK_GETTIME, - and only support ACE_OS::clock_gettime if that's defined. - It can be supported on Solaris 2.5, but -lposix4 is then required. - - * ace/Thread_Priority.*: added increment () and decrement () - operations. - - * include/makeinclude/platform_sunos5_sunc++_4.1.GNU: - added -pta back to avoid link problems with template classes - that have virtual functions that are all inline, if inlining - is disabled. Though we don't see the problem, other 4.1 users do. - Thanks to mscallinan@CCGATE.HAC.COM for reporting this. - - * examples/Logger/simple-server/Logging_Handler.cpp (handle_input): - cast "len" to ssize_t to prevent mixed signed/unsigned comparison. - - * examples/Logger/simple-server/server_loggerd.cpp (main): - added ACE_UNUSED_ARG (sa);. - - * examples/Reactor/Misc/notification.cpp (Thread_Handler ctor): - changed type of n_threads argument from int to size_t to avoid - signed/unsigned comparison. - -Mon Feb 10 15:27:02 1997 Douglas C. Schmidt - - * ace/Timer_Queue: Added a virtual destructor so that subclasses - deleted via ACE_Timer_Queue *'s will call the right destructor. - Thanks to Stuart Powell for reporting - this. - - * ace/Timer_Heap.cpp: Added support for automatically growing - ACE_Timer_Heaps. This allows heaps to grow automatically as new - ACE_Event_Handlers are added dynamically. Thanks to Stuart - Powell for this enhancement. - - * ace/Memory_Pool: Added support that allows flags to be passed in - to the MMAP_Memory_Pool. This can be used to set the - appropriate type of backing store semantics (e.g., MAP_PRIVATE - and MAP_SHARED). Thanks to Fred LaBar - for providing this. - -Sun Feb 9 11:56:37 1997 Douglas C. Schmidt - - * ace/Map_Manager.cpp (bind_i): A recent change to Map_Manager - broke the Connector since errno was getting set to ENOENT rather - than EWOULDBLOCK. Thanks to Mark Rabotnikov - for finding this. - -Sun Feb 09 21:44:34 1997 David L. Levine - - * ace/ACE.{h,cpp}: added static u_long is_prime (). - - * ace/{OS.cpp,Thread_Priority.cpp}: added comment about thread - priorities only being tested for 1003.1C version of Pthreads. - Thanks to Thilo Kielmann - for suggesting this. - - * ace/OS.{h,i}: added ACE_OS::clock_gettime (). It allows - applications to get high-resolution time on POSIX systems. - - * ace/Future.cpp (dump): cast ref_count_ to an int because - g++ doesn't figure it out (it's an ACE_Atomic_Op, which does have an int conversion operator). - - * ace/Timer_List.cpp (constructor): added initializer for - timer_id_ to prevent unitialized memory read report from Purify. - - * tests/IOStream_Test.cpp,Makefile: added IOStream_Test, - complements of James CE Johnson . Very cool! - - * tests/Future_Test.cpp: replaced call to ::sin () - with one to ACE::is_prime () to remove dependency on libm. - - * examples/IPC_SAP/UPIPE_SAP/ex1.cpp (peer1, peer2): removed - unused variables c_addr and serv_addr: they were replaced by - a global. - - * examples/Threads/future{1,2}.cpp: replaced call to ::sin () - with one to ACE::is_prime () to remove dependency on libm. - - * netsvcs/clients/Naming/Dump_Restore/createfile.cpp: removed - #include of math.h, it wasn't needed. - -Sat Feb 08 15:19:50 1997 David L. Levine - - * ace/ReactorEx.h: commented out ACE_ReactorEx_Notify::message_queue_ - declaration if not ACE_WIN32 because Sun C++ chokes on it. - - * examples/IPC_SAP/{FILE,SPIPE}_SAP/client.cpp: declare "len" as - ssize_t to avoid signed/unsigned comparison. - -Fri Feb 7 01:13:05 1997 Douglas C. Schmidt - - * ace/OS.i (select): Simplified Chris' fixes for the weird - Linux select() semantics. - - * ace/OS: Added a new accessor method called waiters() in - ACE_cond_t that returns the number of waiters on the condition - variable. Thanks to Karlheinz for suggesting this. - - * ace/OS: Changed all the ACE_cont_t, ACE_rwlock_t, etc. so that - their fields are private, but made class ACE_OS a friend. - Applications should not be mucking with these fields since they - may change. - - * ace/OS.h: Fixed a minor typo where friend class ACE_rwlock_t - should be friend class ACE_OS. Thanks to Thilo Kielmann - for reporting this. - - * ace/Log_Msg.cpp: Added a destructor to ACE_Log_Msg and changed - ACE_TSS_cleanup so that it calls delete (ACE_Log_Msg *) ptr. - Thanks to Per Anderson for - reporting this. - - * tests/Map_Manager_Test.cpp: Create a file Map_Manager_Test_Key.h - and move the class Key into the include file. Include this *.h - file in Map_Manager_Test.cpp. This is needed for template - generation on AIX. Thanks to Chris Lahey for - pointing this out. - -Fri Feb 7 17:29:40 1997 Chris Cleeland - - * ace/OS.cpp (set_sched_params): added support for POSIX - threads. Thanks to Thilo Kielmann - for figuring it out and - for providing the code. - - * tests/Naming_Test.cpp (test_find): Changed final delete[] to - not try to delete a static buffer. :-( - - * tests/SOCK_Test.cpp (server): Added assertion test for - modified select timeval. - -Fri Feb 07 13:56:24 1997 David L. Levine - - * ace/{OS.cpp,Thread_Priority.cpp}: added ACE_Thread_Priority - support for Digital Unix. Thanks to Thilo Kielmann - for figuring the priorities - and priority classes out and for providing the code. - - * ace/High_Res_Timer.{h,cpp},config-linux*.h,README: - use struct timespec instead of timespec_t, because not all - platforms have the timespec_t typedef. Thanks to - Marius Kjeldahl for reporting this on Linux - and Chris Lahey for reporting it on AIX. - - * ace/IOStream.h: use "ssize_t send (...)", etc., instead of exact - function prototypes. - - * examples/IPC_SAP/TLI_SAP/db-server.cpp: declare struct member as - const char * instead of const char [] because it's not static and - the struct doesn't have constructors. - - * examples/Reactor/Multicast/server.cpp (Server_Events ctor): - reordered initializers to match declaration order. - -Fri Feb 07 05:08:51 1997 - - * ace/Synch.cpp (dump): Fixed access error. - - * ace/OS.h: Fixed ACE_rwlock_t friend declaration. - - * ace/OS.i: Moved ACE_cond_t::waiters() such that it is now - visiable to NT. Also fixed ACE_OS::cond_timed_wait by returning - the correct return value on a TIMEOUT. Also fixed typo in - ACE_OS::sema_wait. - -Thu Feb 6 20:25:13 1997 Chris Cleeland - - * ace/OS.i (select): Adapted ACE_OS::select methods for use on - platforms (such as Linux) that allow select(2) to modify its - struct timeval arg. New behavior is triggered by the define - ACE_HAS_NONCONST_SELECT_TIMEVAL. Thanks to Jorn Jensen - for reporting this! - -Thu Feb 06 09:48:43 1997 David L. Levine - - * ace/config-sunos-sun*.h,README: added - ACE_LACKS_LINEBUFFERED_STREAMBUF and ACE_LACKS_SIGNED_CHAR. - - * ace/IOStream.{h,cpp}: support - ACE_LACKS_LINEBUFFERED_STREAMBUF and ACE_LACKS_SIGNED_CHAR - so that this builds with SunC++. - - * examples/IOStream/client/iostream_client.cpp: - reordered args and fixed argv indexes. - - * examples/IOStream/server/iostream_server.cpp: - use ACE_DEFAULT_SERVER_PORT for default port. - - * tests/Naming_Test.cpp (randomize): changed type of "size" arg to - size_t to avoid compiler warnings about signed/unsigned comparison. - -Thu Feb 06 09:40:47 1997 Chris Cleeland - - * ace/config-linux*.h: added typedef of timespec_t. - -Wed Feb 5 01:45:03 1997 Douglas C. Schmidt - - * ace/OS.i: Changed the Win32 implementation of all methods that call - WaitForMultipleObjects() so that errno is set to - WAIT_ABANDONED if the mutex is abandoned. This makes it - possible for users to understand why ACE_OS methods that use - synchronization operations fail. Thanks to Ivan Murphy - for reporting this problem. - - * ace/IOStream.cpp (ACE_Streambuf): Moved the const initialization - from the header file to the constructor since this is the only - portable way to do this. Thanks to Michael Maxie - for reporting this. - - * ace/OS.i: Updated the call to thr_setprio() for pthreads so that - it first determines the existing scheduling parameters and then - updates the priority. Thanks to Thilo Kielmann - for help with this. - - * ace/config-osf1-4.0*.h: Updated ACE_NEEDS_HUGE_THREAD_STACKSIZE - to be 1 mega to minimize porting surprises. Thanks to Thilo - Kielmann for help with this. - - * tests/Naming_Test.cpp: Cleaned up a few minor things related to - int i = 0 vs. size_t i = 0. - - * ace/SOCK_Dgram.cpp: Added a new macro called - ACE_HAS_SOCKADDR_MSG_NAME, which is used on platforms (e.g., - DG/UX) that require a cast to (struct sockaddr *) for the - msg_name field of struct msghdr. - -Wed Feb 05 10:45:41 1997 David L. Levine - - * ace/IOStream.h: replaced __*manip with expanded types, because - Sun C++ doesn't have those typedefs; and added complete prototypes - for send, recv, send_n, and recv_n. - - * ace/IOStream.cpp: fixed "#define ACE_IOSTREAM_C" to keep g++ sane. - - * ace/Hash_Map_Manager.{h,cpp},Map_Manager.{h,cpp}: replaced - DEFAULT_SIZE with ACE_DEFAULT_MAP_SIZE so that Naming_Test runs - on SunC++ 4.1. - - * ace/High_Res_Timer.*: added optional scale factor. - - * examples/IOStream/{client,server}/Makefile: addd -g++ if building - with gcc. - - * tests/Naming_Test.cpp: moved declaration of "i" out of for loop - because it is used after the loop. - - * examples/ASX/UPIPE_Event_server/{Consumer,Supplier}_Router.cpp - (open): return 1 if init () succeeds. There's a commented-out - call to activate the objects that would (should?) return a value. - - * examples/IPC_SAP/FIFO_SAP/FIFO-client.cpp (main): declare n - as ssize_t instead of size_t to avoid compiler warning about - signed/unsigned comparison. - -Tue Feb 4 19:06:52 1997 Douglas C. Schmidt - - * ace/Signal.cpp: Fixed all the ACE_Sig_Handler[s] methods so that - they now use ACE_Guard, rather than ACE_TSS_Guard, *unless* they - are actually performing callbacks to user-code. Not only is - this faster, but it also avoids thread-specific storage key - leaks on platforms like Solaris! - - * ace/OS.cpp (thr_keyfree): Added a new #ifdef for - ACE_HAS_THR_KEYDELETE, which is defined for UNIXWARE. This - fixes a nasty problem with leaking thread-specific keys. Thanks - to Nigel Owen for reporting this. - - * ace/Message_Block.cpp: Added a #include for - "ace/Service_Config.h". - - * ace/Malloc.i: Fixed a few warnings by removing the names of - unused parameters. - - * ace: Added many minor changes to ACE so that it will work on - DG/UX. Thanks to Michael Maxie for all these. - - * ace/LSOCK_Stream.cpp: Applied the same fix as to LSOCK.cpp. - - * ace/LSOCK.cpp: Removed the cast of 0 to (char *) for msg_name - since some platforms use (struct sockaddr *). By omitting the - cast the compiler will figure it out correctly. Thanks to - Michael Maxie for this. - - * ace/IOStream: Added a new template adapter for creating an - iostream-like object using an ACE IPC Stream for the actual I/O. - Thanks to James CE Johnson for this. - - * examples/Misc/test_iostreams.cpp: Added a test that illustrates - how the new ACE_iostreams mechanism works. Thanks to James CE - Johnson for this. - - * ace/Message_Block: Updated the ACE_Message_Block implementation - to use ACE_Service_Config::alloc() if the user doesn't supply a - customize version. This also means that we never delete the - allocator_strategy_, so we can remove this flag and reduce the - amount of storage by 4 bytes. Thanks to Irfan for noticing that - we can do this. - - * ace/platform_dgux4_epc.h: Added a new platform config file - for DG/UX. Thanks to Michael Maxie for - this. - - * ace/config-dgux-4.11-epc.h: Added a new config file for DG/UX. - Thanks to Michael Maxie for this. - -Tue Feb 04 18:26:01 1997 - - * ace/Service_Config.cpp (alloc): The implementation now creates a - ACE_New_Allocator rather than a ACE_Allocator_Adaptor. If - you still want the old behavior, simply provide your own - custom allocator singleton for ACE_Service_Config. - - * ace/OS.i (mktemp): Added the missing ACE_INLINE directive. - - * ace/OS.h: ACE_HAS_INLINED_OSCALLS is now automatically defined - when __ACE_INLINE__ is defined. This avoids mysterious linking - problems that occur otherwise. - - * ace/Malloc: Added a virtual destructor to ACE_Allocator. Also - added a new class ACE_New_Allocator which is a sub-class of - ACE_Allocator. This class uses the new/delete operators to - allocate and free up memory. Please note that the only methods - that are supported are malloc() and free(). All other - methods are no-ops. If you require more functionality, please use: - ACE_Allocator_Adapter > This will allow you to use the added functionality of - bind/find/etc. while using the new/delete operators. - -Mon Feb 3 15:35:24 1997 Douglas C. Schmidt - - * ace/config-aix-*.h: Added a (char *) cast to - ACE_DEFAULT_BASE_ADDR. Thanks to John Cosby - for reporting this. - - * ace/OS.cpp: Added a new set() method that sets the Time_Value - from a double. Thanks to Brad Flood for this suggestion. - - * ace/OS: Changed ACE_OS::flock_t to ACE_OS::ace_flock_t to avoid - a name clash on DG/UX. Thanks to Michael Maxie - for reporting this. - -Tue Feb 4 03:02:52 1997 Irfan Pyarali - - * tests/Naming_Test.cpp: Added timing and made debug print outs - optional. Also added randomization of the test data. - - * ace/OS.h: Fixed prototype for gethrtime () - -Mon Feb 03 21:00:56 1997 David L. Levine - - * ace/OS.h: define ACE_SCOPE_PROCESS and ACE_SCOPE_THREAD - even if ACE_HAS_THREADS is not defined. Thanks to - Michael Maxie for pointing this out. - - * examples/Threads/{process_mutex.cpp,process_semaphore.cpp, - task_three.cpp,thread_manager.cpp,thread_specific.cpp} (main): - added ACE_UNUSED_ARG (sa);. - - * examples/Threads/reader_writer.cpp: fixed declaration of - "shared_data" to be "static volatile" instead of "volatile - static", and removed unused variable "n". - - * examples/Threads/thread_pool.cpp: removed unused variable "result". - -Sun Feb 02 21:24:02 1997 David L. Levine - - * ace/OS.h: changed hrtime_t to ACE_hrtime_t. - - * ace/{config-win*.h,README}: added #define ACE_HAS_PENTIUM to - enable gethrtime () support. - - * ace/High_Res_Time.{h,i,cpp}: removed platform-specific #ifdef's, - instead added "unsupported ()" static member function; changed - changed signature of elapsed_time to take time reference as - argument instead of return value; added elapsed_time - (ACE_Time_Value &) and elapsed_time_incr (ACE_Time_Value &). - - * examples/Thread/context_switch.cpp: use ACE_High_Res_Timer - instead of the old Timer adapter. - - * ace/config-aix-4.1.x.h: fixed typo: #defind ACE_HAS_LONGLONG_T. - - * ace/config-aix-4.2.x.h: added #define ACE_HAS_LONGLONG_T. - - * ace/Thread_Priority.{h,cpp}: moved #include of OS.h from .cpp - to .h file. - -Sun Feb 02 10:30:29 1997 David L. Levine - - * ace/Local_Name_Space.cpp: removed ACE_Map_Manager, ACE_Map_Iterator, - and ACE_Map_Entry: they don't appear to be used and, without - including their headers, this file won't compile. - - * ace/Hash_Map_Manager.cpp (Hash_Map_Manager (ACE_Allocator *)): - reordered initializers to match declaration order. - -Sat Feb 1 15:11:28 1997 Douglas C. Schmidt - - * include/makeinclude/platform_aix4.2.GNU (LD): Removed the -qnoro - flag since it is no longer needed. Thanks to Rob Jordan - for reporting this. - -Sat Feb 1 03:25:21 1997 Irfan Pyarali - - * ace/SString.cpp: Added two methods to the wide string - implementation for high-performance. Even though these methods - are somewhat ugly and not the "OO" way of doing things, - performance was at stake here. - - * ace/Registry_Name_Space.cpp (resolve): Fixed the implementation - by correctly figuring out the size of the value in the - Registry. This allows us to dynamically allocated the correct - amount of memory. - - * ace/Registry: Fixed the constant MAX_CONTEXT_NAME_SIZE to be the - maximum path length. - - * ace/Naming_Context.cpp: Fixed various memory leaks. - - * ace/Local_Name_Space_T.h: Replaced the simple-minded Map_Manager - with the new (improved) Hash_Map_Manager. - - * ace/Local_Name_Space.cpp: Added new methods operator!= and hash - required by the map. - - * ace/Hash_Map_Manager.cpp (ACE_Hash_Map_Manager): Added an extra - constructor. - - * tests/Naming_Test.cpp: Removed memory leaks. - -Fri Jan 31 19:39:48 1997 David L. Levine - - * ace/Hash_Map_Manager.cpp (ctor): reordered initializers - to match declaration order. - - * tests/Time_Value_Test.cpp: cast double argument to long - because there no longer is a constructor that takes a double. - - * ace/Hash_Map_Manager.{h,cpp}: removed #include of - ace/Hash_Map_Manager.i because it doesn't exist. - Protected .cpp file against multiple includes. Moved - #include of "ace/Malloc.h" from .h to .cpp file. - - * ace/Map_Manager.cpp (current_size, total_size): cast -1 to - size_t to avoid warning about signed-to-unsigned conversion. - - * ace/OS.h: moved hrtime_t typedef for ACE_WIN32 so it doesn't - get defined twice. - - * ace/OS.i (getservbyname): one last ACE_HAS_NONCONST_GETBY change: - missed "lproto" to "proto". - - * bin/create_ace_build: added checks for existing symlinks, so - now the script can be re-run safely at any time on a build - tree to update it. - -Fri Jan 31 02:16:30 1997 Douglas C. Schmidt - - * ace/config-aix-*.h: Made the default value for - ACE_DEFAULT_BASE_ADDR 0x80000000 to work around restrictions - with AIX. Thanks to Rob Jordan for - this. - - * examples/Map_Manager: Added a new example of the - Hash_Map_Manager. - - * tests/Map_Manager: Integrated the Hash_Map_Manager into the - Map_Manager test and greatly improved the test (e.g., by adding - timing). - - * ace: Added a new implementation of the Map_Manager called - Hash_Map_Manager. This, of course, uses hashing rather than - linear search. The result should be a much faster - implementation for many types of applications. - -Thu Jan 30 13:55:08 1997 Douglas C. Schmidt - - * ace/Map_Manager: Changed the return type of total_size() and - current_size() to size_t. - - * ace/OS: Had to remove the ACE_Time_Value (double) constructor - since it caused ambiguities with ACE_Time_Value (long). Thanks - to Per Andersson for figuring this out. - - * include/makeinclude/platform_linux_lxpthread.GNU (CXX): Added - -D_REENTRANT to make things work correctly in MT programs. - Thanks to Marius for this fix. - - * ace/OS.h: Added several extra constructors for ACE_Time_Value so - that it won't cause problems with the new ACE_Time_Value - (double) constructor. - - * ace/Log_Record.cpp (ACE_Log_Record): Added an "L" to the 0 - initial value used for time_stamp_. Thanks to Marius for - reporting this. - - * ace: Added the new config-aix-4.2.x.h file, which supports the - AIX4.2 platform. Thanks to Rob Jordan - for this. - - * include/makeinclude/platform_aix4.2.GNU: Added support for the - new AIX4.2 platform. Thanks to Rob Jordan - for this. - - * ace/OS.h: It's now possible to override ACE_DEFAULT_BASE_ADDR in - a config.h file. This is important for platforms that need to - put shared memory segments at particular address ranges. Thanks - to Rob Jordan for suggesting this. - -Thu Jan 30 16:01:37 1997 David L. Levine - - * ace/{config-aix-4.1.x.h,README}: added ACE_HAS_AIX_HIRES_TIMER, - see change to gettimeofday in OS.i below; and ACE_HAS_LONGLONG_T. - - * ace/OS.i (gettimeofday, gethrtime): use read_real_time () if - ACE_HAS_AIX_HIRES_TIMER. Thanks to Bob Olson - for this suggestion. - - * ace/OS.h: define hrtime_t as long long if ACE_HAS_AIX_HIRES_TIMER. - - * ace/OS.{i,cpp}: uninlined ACE_OS::gethostbyname (), - and ACE_OS::inet_ntoa () on VxWorks, because they have - static char arrays. - - * ace/OS.i (gethostbyaddr, getservbyname, gethostbyaddr, - gethostbyname, getservbyname_r): with ACE_HAS_NONCONST_GETBY, - instead of copying the const argument, just cast it to (char *). - Thanks to Michael Maxie for pointing out the - problem with the nonstatic char arrays with sizes determined at - runtime. - - * ace/High_Res_Timer.*: added ACE_HAS_AIX_HIRES_TIMER support. - Also, renamed get_time () to elapsed_microseconds (). - - * examples/Threads/{Timer.h,context_switch_time.cpp}: - ACE_High_Res_Timer::elapsed_microseconds () instead of - ACE_High_Res_Timer::get_time (). - - * bin/create_ace_build: added this script: it creates an ACE build - tree in directory "build/" below the current - directory, which must be a ACE "top level" directory (such as - $WRAPPER_ROOT). The build tree directory structure mirrors that - of the ACE top level directory structure, except that instead of - containing any plain files, it contains only symlinks to the files - in the ACE top level structure. - -Thu Jan 30 06:57:50 1997 David L. Levine - - * ace/Thread_Priority.cpp (convert_to_os_priority): changed - switch (priority_class) to switch (priority_class_). - Thanks to Chris Lahey for pointing this out. - Also, return -1 on other than Solaris, Win32, and VxWorks. - -Wed Jan 29 22:05:01 1997 Douglas C. Schmidt - - * tests/Naming_Test.cpp: Added the prefix "test_" to the bind(), - find(), rebind(), and unbind() functions. This avoids name - clashes with the bind() call from the socket API. Thanks to - Marius for this info. - - * ace/OS.cpp (ACE_Time_Value): Added a new constructor that makes - it possible to construct an ACE_Time_Value from a double. - Thanks to Brad Flood for this. - - * ace/OS.i (thr_join): If ACE_HAS_THREADS is defined, but none of - the threading APIs match (e.g., AIX) then we'll return - ACE_NOTSUP_RETURN(-1). Thanks to Chris Lahey for help with - this. - - * include/makeinclude/platform_aix.GNU: Made some changes to the - type of dynamic linker and libraries used by AIX 4.1. Thanks to - Chris Lahey for help with this. - - * ace/config-aix-4.1.x.h: Changed from BSD 4.3 to 4.4. Thanks - to Chris Lahey for help with this. - -Wed Jan 29 09:03:48 1997 David L. Levine - - * ace/OS.h: moved ACE_id_t and ACE_pri_t typedefs out of the - ACE_HAS_THREADS section. - - * ace/OS.cpp: fixed ACE_OS::set_sched_params on Win32 and VxWorks. - - * ace/Scheduling_Parameters.*, ace/Thread_Priority.*: updated - comments. - - * examples/Threads/{context_switch_time.cpp,Timer.h,Makefile}: - added context switch timing test. Currently only works on - Suns because that's the only platform for which ACE has a - high-resolution timer. - - * Makefile: added chmod of VERSION file in TIMESTAMP macro. - -Wed Jan 29 00:59:12 1997 Douglas C. Schmidt - - * include/makeinclude/platform_linux_lxpthread.GNU (CXX): Removed - the -D_MIT_POSIX_PTHREADS symbol since we're using Xavier's - threads instead. Thanks to Marius Kjeldahl for reporting this. - - * ace/config-linux-lxpthreads.h: Removed the _MIT_POSIX_PTHREADS - symbol since we're using Xavier's threads instead. Thanks to - Marius Kjeldahl for reporting - this. - -Tue Jan 28 23:32:58 1997 Douglas C. Schmidt - - * ace/SString: Added hash() methods to each ACE String class so - that we can use this with the new ACE_Hash_Set implementation of - ACE_Map_Manager. - - * ace/ACE.h (ACE): Added a UNICODE version of hash_pjw() so that - we can use it to hash ACE_WString. - - * ace/OS.i (thr_setprio): Fixed a typo that was left over from a - previous change. Thanks to Fred LaBar - for reporting this. - - * apps/Gateway/Gateway/{proxy_config,consumer_config}: Added - comments to these config files so they are easier to understand. - Thanks to Chuck Gehr for motivating this. - - * apps/Gateway/Peer/Peer.cpp: Changed the name from connection_id_ - to proxy_id_, which is more accurate. - - * apps/Gateway/Peer/Peer.cpp: Added a destructor to Peer_Handler - so that it can clean itself up properly when shutdown with a - signal. This fixes a nasty bug. - - * ace/config-win32-msvc4.x.h (ACE_HAS_MFC): By default, ACE now - enables ACE_HAS_MFC. This makes it possible to use - AfxBeginThread() with the ACE_THR_AFX flag. - - * ace/OS.cpp: Fixed a typo in the call to ::AfxBeginThread() - function. Thanks to Karlheinz for reporting this. - - * apps/Gateway/Peer/Peer.cpp: Removed all uses of the Map_Manager - from the Peer. There's only ever one connection from a Gateway - per-Peer, so what was this doing here anyway?! It was causing - problems due to multiple deletions, so removing it improves - robustness of the tests. - - * ace/OS.i: Commented out the "extern char **_sys_siglist" - definition since this was conflicting with the definition in - Solaris. If some platforms needs this, we'll need to add a - specific #ifdef. - -Tue Jan 28 21:57:45 1997 David L. Levine - - * ace/OS.{h,cpp}: added ACE_OS::set_sched_params (). It permits - platform-independent setting of thread priorities and - priority classes. It is currently supported on Solaris, - Win32, and VxWorks. - - * ace/Scheduling_Parameters.{h,i,cpp}, - ace/Thread_Priority.{h,i,cpp}, ace/Makefile: - Added these two classes to support ACE_OS::set_sched_params (). - -Tue Jan 28 12:42:39 1997 Irfan Pyarali - - * ace/ace.mdp: Added the "Using MFC in a Shared DLL" flags. - - * tests/test_config.h (ACE_INIT_LOG): Made this UNICODE safe. - - * tests/Pipe_Test.cpp (main): Added an iteration count to control - the number of children created by the main process. - - * ace/Memory_Pool.cpp (init_acquire): cast this->minimum_bytes_ to - size_t to avoid compiler warning if size_t is unsigned. - - * ace/OS.h: Added strncat to the OS class. - -Tue Jan 28 09:13:00 1997 David L. Levine - - * ace/ACE.cpp (ACE::ldfind), - ace/Local_Name_Space_T.cpp, - ace/Local_Token.cpp (ACE_TPQ_Entry::ACE_TPQ_Entry), - ace/Log_Msg.cpp (ACE_Log_Msg::msg, ACE_Log_Msg::find), - Memory_Pool.cpp (ACE_MMAP_Memory_Pool::ACE_MMAP_Memory_Pool), - ace/Naming_Context.cpp (ACE_Naming_Context::open), - ace/Parse_Node.cpp (ACE_Location_Node::open_handle), - ace/Registry.cpp (ACE_Predefined_Naming_Contexts::is_local_host, - ACE_Registry::Binding_Iterator::Object_Iteration::next_n, - ACE_Registry::Binding_Iterator::Context_Iteration::next_n), - tests/UPIPE_SAP_Test.cpp: - changed "sizeof char" to "sizeof (char)" because g++ and Sun C++ - (properly) choked on it. - - * ace/Local_Name_Space_T.cpp (create_manager_i): - -- ::strncat () instead of ACE_OS::strcat () - -- "lock_name_for_backing_store" instead of - "lock_name_for_local_name_space" - - * ace/Naming_Context.cpp (both constructors): reordered - initializers to match declaration order. - - * include/makeinclude/platform_sunos5_g++.GNU: removed - -fno-strict-prototypes because it's not needed with SunOS 5.5.1. - -Mon Jan 27 21:33:00 1997 Irfan Pyarali - - * tests/Naming_Test.cpp (main): Made modifications to the test to - make it more dynamic. Also made it work with UNICODE and - ACE_Naming_Context. - - * ace/Local_Name_Space_T.cpp (create_manager_i): Added a better - naming scheme for the locks. - - * ace: Changed the calculations of string lengths such that the - size of the character type is carefully considered. - - The following were affected: - - ACE.cpp (ACE::ldfind) - Local_Token.cpp (ACE_TPQ_Entry::ACE_TPQ_Entry) - Log_Msg.cpp (ACE_Log_Msg::msg, ACE_Log_Msg::find) - Memory_Pool.cpp (ACE_MMAP_Memory_Pool::ACE_MMAP_Memory_Pool) - Naming_Context.cpp (ACE_Naming_Context::open) - Parse_Node.cpp (ACE_Location_Node::open_handle) - Registry.cpp (ACE_Predefined_Naming_Contexts::is_local_host, - ACE_Registry::Binding_Iterator::Object_Iteration::next_n, - ACE_Registry::Binding_Iterator::Context_Iteration::next_n) - - * ace/OS.h: Added UNICODE support for ACE_DEFAULT_LOCALNAME. - - * ace/Proactor.cpp: Redid "lost" changes to add UNICODE support to: - - /* Proactor */ - ACE_Overlapped_File::ACE_Overlapped_File - ACE_Overlapped_File::open - - * ace/Registry_Name_Space.h: Changed the order of #include and - #define as that the correct set of MACROS are defined for the - include files. - - * tests/MM_Shared_Memory_Test.cpp: Added UNICODE support. - -Mon Jan 27 09:16:03 1997 David L. Levine - - * include/makeinclude/platform_sunos5_sunc++.GNU, - include/makeinclude/platform_sunos5_sunc++_orbix.GNU, - ace/config-sunos5.5-sunc++-4.x-orbix.h - ace/config-sunos5.5-sunc++-4.x.h: - disabled exception handling by commenting out ACE_HAS_EXCEPTIONS - in the config files and adding -noex to the platform files, - because it causes trouble, at least on MP machines. - -Mon Jan 27 14:54:31 1997 Douglas C. Schmidt - - * ace/Memory_Pool.h: Added code to ACE_MMAP_Memory_Pool_Options to - take a minimum_bytes parameter. This is needed to prevent mmap - remapping when a large segment is requested. Thanks to Fred - LaBar for this. - -Sun Jan 26 13:39:13 1997 Douglas C. Schmidt - - * ace/OS.i: Changed the typo sis_siglist to sys_siglist. Also, - changed the logic from #if !defined (ACE_HAS_SYS_SIGLIST) to - #if defined (ACE_HAS_SYS_SIGLIST) since this makes more sense... - Thanks to Nanbor Wang for noticing this. - -Sat Jan 25 20:30:23 1997 David L. Levine - - * ace/config-sunos5.5-sunc++-4.1.h: commented out ACE_HAS_EXCEPTIONS - #define because -noex is required with it, and that causes core - dump during thread exit on multiprocessor UltraSparcs. - - * include/makeinclude/platform_sunos5_sunc++_4.1.GNU: added -noex - back because of core dump during thread exit on - multiprocessor UltraSparcs. - - * examples/ASX/Event_Server/Event_Server/Event_Analyzer.cpp, - examples/ASX/UPIPE_Event_Server/Event_Analyzer.cpp (control): - added "default" case to switch statement to eliminate compiler - warnings about enumeration values not being handled in switch. - - * examples/ASX/UPIPE_Event_Server/event_server.cpp (consumer): - removed unused variable "iter". - -Sat Jan 25 12:50:24 1997 Douglas C. Schmidt - - * ace/OS.i: Updated all the cond_timedwait() and cond_wait() - methods so that they decrement the count of waiters by one even - when errors occur. Thanks to Irfan for finding this. - - * ace/Map_Manager.cpp: Updated the ACE_Map_Iterator code so that - it no longer crashes if the Map has been closed. Thanks to - Slawomir Kuzniar for reporting this. - -Sat Jan 25 11:34:56 1997 Irfan Pyarali - - * ace/SOCK_Connector.cpp (complete): Added a sleep of zero seconds - which allows non-blocking connects to work properly on NT. - - * ace/config-winnt-4.0-msvc4.x.h and config-win32-msvc4.x.h: - Added ACE_HAS_BROKEN_NON_BLOCKING_CONNECTS. - - * ace/OS.i: Moved out all code for Time_Value from #if region. It - is common to all. - - * ace/Reactor: Added helper routines to stop the VC++ compiler from - bitching about destructors in exception handling code. - - * ace/ace.{mak,mdp}: Removed Time_Value.cpp from project. - - * tests/tests.{mak,mdp}: Corrected the creation of SOCK_Test and - Message_Blob_Test executables and temporary files. - -Fri Jan 24 09:01:50 1997 David L. Levine - - * examples/Connection/misc/Connection_Handler.cpp: added - specialization of ACE_Svc_Handler - so that subproject will build with g++ without optimization. - - * apps/Gateway/Gateway/Proxy_Handler.cpp: added specializations - of ACE_Svc_Handler and - ACE_Svc_Handler - so that subproject will build with g++ without optimization. - - * tests/Reactor_Exceptions_Test.cpp (main): added ACE_UNUSED_ARG - for argc and argv when ACE_HAS_EXCEPTIONS is not defined. - - * performance-tests/Misc/test_mutex.cpp: made destructor of - Thread_Mutex_Derived virtual because the class has other virtual - functions. - -Thu Jan 23 11:51:45 1997 David L. Levine - - * ace/config-sunos5.5-g++.h: commented out ACE_HAS_EXCEPTIONS because - -fhandle-exceptions is broken in g++ 2.7.2 (and is required in order - to use exception handling); also, added ACE_HAS_INLINED_OSCALLS, if - __ACE_INLINE__ is #defined. - - * ace/config-sunos5.5-sunc++-4.1.h: added ACE_HAS_INLINED_OSCALLS, - if __ACE_INLINE__ is #defined. - -Wed Jan 22 15:04:47 1997 Douglas C. Schmidt - - * ace/OS.h: Moved the ACE_TIMER_SKEW macro to below the #inclusion - of config.h and updated it so that it can be overridden in the - config.h file if necessary. Thanks to Bob Olson - for motivating this. - - * ace/OS.cpp: Fixed the implementation of - ACE_Thread_ID::operator== so that it works correctly when thread - ids and thread handles aren't ints. Thanks to Chuck Gehr for - reporting this. - - * ace/OS.i (thr_getprio): Moved a stray #else into the right - place. Thanks to Chuck Gehr for reporting this. - - * ace/OS.i (sema_post): this->count_++ should have been - s->count_++. Thanks to Chuck Gehr for reporting this. - - * ace/Synch_T.cpp: Added an extern "C" definition for - ACE_TSS_C_cleanup(). Thanks to Chuck Gehr for reporting this. - - * ace: Added a new #define called ACE_LACKS_SYS_NERR to the - config files for MVS and VxWorks. This is used in OS.cpp - as follows: - - #if defined (ACE_LACKS_SYS_NERR) - int sys_nerr = ERRMAX + 1; - #endif /* ACE_LACKS_SYS_NERR */ - - Thanks to Chuck Gehr for reporting this. - - * Removed all #inclusions of "ace/Time_Value.h." This file - no longer contains anything besides a #include "ace/OS.h" - and is only kept around due to backwards compatibility. - - * ace: Moved the contents of Time_Value.h into OS.h to reduce the - confusion that arises from the #inclusion of "config.h" in - Time_Value.h. Also merged the contents of Time_Value.{i,cpp} - into OS.{i,cpp}. Thanks to the MDA guys for motivating this. - - * tests/Reactor_Exceptions_Test.cpp: Added a new test that - exercises the Reactor with C++ exceptions. Thanks to Luca for - the test. - - * ace/Reactor.cpp (handle_events): Added Win32 structured - exception handling support to the ACE_Reactor::handle_events() - method so that it correctly releases the token lock when Win32 - SEH occur in callback routines. Thanks to Luca for reporting - this problem. - - * ace: Added a new macro called ACE_HAS_EXCEPTIONS, which - indicates that the compiler supports C++ exception handling. - - * include/makeinclude/platform_sunos5_sunc++*.GNU: Commented out - the -noex flag for now. Hopefully, things will work correctly - now. - - * ace/Thread_Manager.cpp (exit): Removed the final acquire() on - ace_mon, which is no longer necessary since the Guard classes - now keep track of whether they are "owned". Thanks to Karlheinz - and Detlef for this fix. - -Wed Jan 22 09:05:31 1997 David L. Levine - - * Makefile,VERSION: modified top-level Makefile (and VERSION) - to add a timestamp to the VERSION file if creating a release - from the /project/adaptive/ACE_wrappers directory. If it - causes problems, this will disable it: - % make TIMESTAMP= release. - - * ace/Local_Tokens.cpp (dump): replaced "ACE_TSS" - with "ACE_TPQ_ENTRY" so that ACE_NO_TSS_TOKENS is supported. - - * ace/Synch.h: fixed typo in comment header for ACE_Thread_Semaphore - - * ace/config-vxworks-ghs-1.8.h,config-vxworks5.2-g++.h, - config-unixware-2.01-g++.h: - protect ACE_HAS_INLINED_OSCALLS #defined with - #if defined (__ACE_INLINE__). - - * apps/Gateway/Gateway/Event_Channel.cpp (open): added - ACE_UNUSED_ARG (sig);. - - * examples/ASX/Event_Server/Event_Server/Peer_Router.h: - declared a friend of class Peer_Router_Context because it - has a private destructor, to eliminate compiler warning - about not having any friends. - - * examples/ASX/Event_Server/Event_Server/Supplier_Router.cpp - (open): added return 0 in "true" branch of if statement so - that the function always returns a value. - -Tue Jan 21 09:19:44 1997 David L. Levine - - * tests/Reader_Writer_Test.cpp (reader): commented out unused - variable "n"; also, commented out unused function - print_usage_and_die. - - * tests/TSS_Test.cpp, Thread_Manager_Test.cpp (main): added - ACE_UNUSED_ARG (sa);. - - * tests/Thread_Pool_Test.cpp (open): added return 0 at end. - -Tue Jan 21 11:00:12 1997 Douglas C. Schmidt - - * apps/Gateway/Gateway/Gateway.cpp (parse_args): There was a small - bug in parse_args (latest beta), it mixed proxy and consumer - conf files. Thanks to Per Andersson - for reporting this. - -Mon Jan 20 13:29:28 1997 David L. Levine - - * ace/OS.i, ace/Task.h, and ace/Thread_Manager.h: changed a few - occurrences of NULL to 0 (for other than Win32 platforms), - primarily to avoid compiler warnings on VxWorks if ACE.h isn't - #included before stddef.h. - - * netsvcs/clients/Naming/Dump_Restore/Dump_Restore.cpp - (handle_input): replaced %d format with %hu for u_short arg. - - * netsvcs/clients/Tokens/deadlock/deadlock_detection_test.cpp - (run_writer): initialized variable "t" to avoid compiler warning. - - * examples/Connection/misc/Connection_Handler.cpp (handle_timeout): - added ACE_UNUSED_ARG (tv); also, added explicit int return type - to definition of Connection_Handler::close (u_long). - - * examples/Threads/task_four.cpp (Invoker_Task::svc): - moved declaration of "task" out of for loop because it is - also used after the for loop. - - * netsvcs/lib/Name_Handler.cpp, Server_Logging_Handler.cpp, - TS_Clerk_Handler.cpp, TS_Server_Handler.cpp, Token_Handler.cpp: - added ACE_UNUSED_ARG (sig);. - -Sun Jan 19 11:10:49 1997 David L. Levine - - * include/makeinclude/platform_sunos5_sunc++.GNU, - platform_sunos5_sunc++_4.1.GNU: - added comment about compiler warnings with +w option. - Also, added +w to platform_sunos5_sunc++_4.1.GNU. With the - other changes in this ChangeLog entry, there no longer should - be significant warnings from Sun C++ when building ACE. - - * examples/ASX/Event_Server/Event_Server/Peer_Router.cpp - (Peer_Handler::put): added ACE_UNUSED_ARG (tv);. - - * examples/IPC_SAP/SPIPE_SAP/NPServer.cpp (main), - netsvcs/clients/Tokens/invariant/invariant.cpp (main): - commented out argc and argv. - - * examples/Mem_Map/file-reverse/file-reverse.cpp (main): - removed unused variable "cp". - - * netsvcs/clients/Tokens/manual/manual.cpp (handle_input, - handle_exception): added ACE_UNUSED_ARG (fd); and - (create_proxy): added return statement at end: even - though it should never be reached, it eliminates a - compiler warning. - - * examples/OS/Process/process.cpp, - examples/Reactor/Misc/test_reactors.cpp, - netsvcs/clients/Tokens/deadlock/deadlock_detection_test.cpp, - netsvcs/clients/Tokens/mutex/test_mutex.cpp, - netsvcs/clients/Tokens/rw_lock/rw_locks.cpp, - performance-tests/TTCP/ORBeline/ttcp_i.cpp, - performance-tests/TTCP/Orbix/ttcp_i.cpp (main): - return 0 instead of 42. - -Sat Jan 18 10:54:25 1997 Prashant Jain - - * java/src/README: Updated the README file to indicate how - documentation for Java ACE cab be automatically generated. - -Fri Jan 17 11:47:10 1997 Douglas C. Schmidt - - * ace/OS.h: Added an equivalent set of - ACE_LSOCK_{STREAM,ACCEPTOR,CONNECTOR} macros to complement the - ones for ACE_SOCK_*. Thanks to Gonzalo Diethelm - for suggesting this. - - * ace/OS.cpp (ACE_Thread_Adapter): Added a new feature that allows - logging features to be inherited by threads. It works with - those OSs (e.g., Win32) that use ACE_Thread_Adapter class. At - some point, we might do this for all the OSs. Thanks to Luca - for this. - - * examples/Connection/misc/Connection_Handler.cpp: Added a - new example that illustrates how to use the Acceptor pattern - to create multiple threads, each running its own Reactor. - - * ace/Log_Msg.cpp (dump): Some of the variables in the dump() - method have the wrong format specification type. These are: - restart_ (%d), flags_ (%x), priority_mask_ (%d). They are now - fixed, thanks to Luca. - - * tests/Priority_Task_Test.cpp (open): Add an ACE_ASSERT to make - sure that the tasks activate() correctly. Thanks to David for - finding this. - - * ace/config-linux-lxpthreads.h: Added #defines for - ACE_HAS_AUTOMATIC_INIT_FINI and ACE_HAS_SVR4_DYNAMIC_LINKING. - Thanks to Marius for this. - - * ace/Malloc.h: Changed the typedef of ACE_Malloc_Align to a macro - called ACE_MALLOC_ALIGN to allow users to override this value in - their config.h file. This is necessary for platforms that don't - have "long" word alignments. Thanks to Fred LaBar - for this suggestion. - - * ace/OS.h: Added an #ifdef check for ACE_HAS_IRIX62_THREADS and - if so, we'll use the if (&a) /* null */; } form of the - ACE_UNUSED_ARG macro to avoid unnecessary warnings. Thanks to - Fred LaBar for testing this out. - -Fri Jan 17 16:33:25 1997 David L. Levine - - * ace/High_Res_Timer.*: added elapsed_time () and get_time (). - - * netsvcs/clients/Tokens/collection/collection.cpp, rw_locks.cpp: - commented out unused variables to avoid compiler warnings; and - return 0 from main (). - - * include/makeinclude/rules.local.GNU, - netsvcs/lib/Makefile, - examples/Service_Configurator/IPC-tests/server/Makefile: - fixed ESOBUILD mechanism to work on all platforms, not just Linux. - Thanks to Marius Kjeldahl for this fix. - - * ace/OS.i and OS.cpp: uninlined functions that use varargs, because - they usually won't get inlined anyways. - - * ace/OS.cpp (thr_create): added #else clause to be sure that - always sparam.sched_priority always get set to the priority argument. - - * netsvcs/clients/Naming/Client/Client_Test.cpp: commented out - unused parameters and wrapped combined assignments/conditional - values to avoid compiler (g++) warnings. - - * tests/Priority_Task_Test.cpp: added check for successful thread - spawn, and ACE_NEW_THREAD to svc () so that messages get logged. - -Thu Jan 16 17:03:47 1997 Douglas C. Schmidt - - * include/makeinclude: Added support for shared object files - on Linux. Thanks to Marius Kjeldahl for his help with this. - - * ace: Merged in the IRIX support, mainly the missing netdb reentrant - functions. Thanks to Gonzalo Diethelm - and Carlos O'Ryan for their help. - - * ace/Timer_{List,Heap,Queue}: Changed iterator() to iter() to - avoid name clashes with STL (ugh). - - * ace/Timer_{Heap,List}.cpp: Added ACE_BUILD_DLL so that things - will link. Thanks to John Morey for reporting this. - - * ace/Synch_T.h: Fixed: class ACE_Write_Guard: method: - tryacquire_write so that it will call - ...->lock_->tryacquire_write() and not - ...->lock_->acquire_write(). Thanks to Alexandre Karev - for this fix. - -Thu Jan 16 15:51:16 1997 David L. Levine - - * Dump.cpp (register_object): initialized "slot" so that g++ doesn't - complain about uninitialized use. - - * Reactor.cpp (initialized): use ACE_GUARD_RETURN instead of - ACE_GUARD because the function returns a value; - (find): initialize "i" if handle is out of range so that g++ - doesn't complain about uninitialized use. - - * Service_Repository.cpp (remove): removed unused variable "handle". - - * Thread_Manager.h: made destructor virtual now that spawn_i () is - virtual. - - * Timer_Heap.cpp: changed some int loop indicies to size_t to - make sure that comparisons are consistently signed or unsigned. - - * OS.h, config-vxworks*.h: removed ACE_HAS_GREENHILLS_SOCKETS - ACE macro because the code it wrapped applies to all VxWorks - compilers, not just GreenHills. - -Wed Jan 15 02:06:21 1997 Douglas C. Schmidt - - * ace/ACE.cpp (round_to_pagesize): If _SC_PAGESIZE is enabled then - we set the ACE::pagesize_ variable using sysconf(2). Thanks to - James Mansion for this suggestion. - -Wed Jan 15 02:06:21 1997 Douglas C. Schmidt - - * ace/Timer_Queue.cpp (expire): Changed a line of code from - - ACE_Timer_Queue_Iterator &iterator (this->iterator ()); - - to - - ACE_Timer_Queue_Iterator &iterator = this->iterator (); - - so that the Visual C++ compiler can grok it. Thanks to John - Morey for reporting this. - - * ace/Reactor.cpp: Modified the close() method so that it can be - called multiple times with no bad side-effects. - - * ace/Pipe.cpp: Modified the close() method so that it can be - called multiple times with no bad side-effects. - - * ace/Reactor: Added an initialized() method that indicates - whether the Reactor was successfully initialized. Also - rearranged the code in ACE_Reactor::open() so that initialized_ - is only set at the end of the method when everything succeeds. - If things *don't* succeed, we call close() on the way out. - Thanks to Luca for these suggestions. - - * ace/Reactor.cpp (close): When closing down the ACE_Reactor, we - now set initialized_ back to 0 so that it can be reopened again - later. - - * tests/Reader_Writer_Test.cpp: There were some problems with this - test due to the fact that on many pthreads platforms pthread_t - isn't an int (it's a struct). Thanks to Chuck Gehr - for the fix. - - * ace/OS.i (exit): In WIN32 when the process exits through an - ExitProcess() call, some process resources (e.g., file handles) - are freed before the static variable destructors are - called. This results in an application error when tracing is - enabled. Removing the ACE_TRACE call in ~ACE_Event_Handler - seems to fix this. Thanks to Luca for this fix. - - * ace/OS: Fixed the implementation of semaphores for the POSIX - port (POSIX lacks semaphores). The trick was to add a "waiters" - field, along with the semaphore count. Thanks to John Bossom - for reporting this. - - * examples/Threads/wfmo.cpp: Added a new test program that seems - to indicate that the Win32 WaitForMultipleObjects() function can - be called in multiple threads, all of which wait on the same set - of HANDLEs. Note that the dispatching of the threads is - relatively "fair" (i.e., everyone gets a chance to process the - various HANDLEs as they become active). Thanks to Ari Erev - for suggesting this and providing the - initial code. - - * ace/Thread_Manager.h: Made the spawn_i() method virtual and - moved it into the protected section of the class so that it can - be over-ridden by subclasses. Thanks to Tim Harrison for - suggesting this. - -Tue Jan 14 15:57:55 1997 Douglas C. Schmidt - - * ace/OS.h: Changed the default size of ACE_DEFAULT_TIMERS to - _SC_TIMER_MAX (which is typically around 40 or so). - Thanks to Stuart Powell for - suggesting this. - - * tests/Timer_Queue_Test.cpp (main): Added some additional logic - so that we can test the performance of the preallocated and - non-preallocated ACE_Timer_Heap. - - * ace/Timer_Heap: Added a new "preallocate nodes" mechanism to the - ACE_Timer_Heap. If this is enabled by the constructor, then we - preallocate as many ACE_Timer_Nodes as there are slots in the - heap. This allows us to completely remove the need for dynamic - memory allocation, which is important for real-time systems. - - * ace/Thread_Manager.cpp (remove_thr): Optimized the code just a - tad by decrementing the current_count_ *first*. Thanks to Per - Andersson for suggesting this. - - * ace/ReactorEx: Updated the implementation so that the - handle_events() method now in fact *does* return the number of - event handler's dispatched (i.e., the implementation matches the - documentation...). Thanks to Hamutal Yanay - for reporting this. - - * ace/Service_Repository.cpp (remove): Removed an extra call to - ACE_OS::dlclose(). This is already being called in the - destructor of ACE_Service_Record. Thanks to Karlheinz for - reporting this. - - * man: Updated all the nroff and html documentation. - - * ace/Timer_Heap: Implemented the spiffy new timer cancellation - algorithm that requires only O(log N) time to remove a timer - from the ACE_Timer_Heap. This is about 50 to 100 times faster - than using the ACE_Timer_List implementation. - -Tue Jan 14 21:01:36 1997 David L. Levine - - * ace/OS.h: Replace "Linux" preprocessor symbol with "linux". - -Mon Jan 13 17:57:50 1997 Douglas C. Schmidt - - * ace/Synch: Added lock() accessor methods to both - ACE_Process_Semaphore and ACE_Process_Mutex. Thanks to Hamutal - Yanay for suggesting this. - - * ace/config-mvs.h: Added a #define for ACE_HAS_GETPAGESIZE. - Thanks to Chuck Gehr for this information. - - * ace/LSOCK_Stream.h: Added a new typedef for PEER_ADDR that is - associated with ACE_UNIX_Addr. Thanks to Mark Rabotnikov - for suggesting this. - -Mon Jan 13 22:24:09 1997 David L. Levine - - * ace/OS.h: Added #undefs of sigemptyset and sigfillset on Linux - when __OPTIMIZE__ is enabled. Yes, the system header on Linux - really #defines them when optimizing! Thanks to an anonymous - ACE user for pointing this out. - - * tests/tests_config.h: Dropped ACE_MAX_ITERATIONS back to 10. - -Sun Jan 12 16:59:52 1997 Douglas C. Schmidt - - * ace/Timer_List.cpp (schedule): Cleanup the code so that (1) - timer_id never == -1 (in order to distinguish it from error - return values and (2) so that we avoid an unnecessary check for - operator new failure. - - * ace/OS.h: Added a new #define called ACE_DEFAULT_MAX_TIMERS, - which specifies the maximum number of ACE_Event_Handlers - supported by ACE_Timer_Heap. - - * ace/Proactor.cpp (ACE_Proactor): Updated the allocation of - ACE_Timer_Queue so that it really points to an ACE_Timer_List by - default. Naturally, this can be overridden by users. - - * ace/ReactorEx.cpp (open): Updated the allocation of - ACE_Timer_Queue so that it really points to an ACE_Timer_List by - default. Naturally, this can be overridden by users. - - * ace/Reactor.cpp (open): Updated the allocation of - ACE_Timer_Queue so that it really points to an ACE_Timer_List by - default. Naturally, this can be overridden by users. - - * ace: Added two new classes called ACE_Timer_List and - ACE_Timer_Heap, which derive from ACE_Timer_Queue. - ACE_Timer_List is essentially the old behavior of - ACE_Timer_Queue, i.e., it uses an implementation of a linked - list of ACE_Timer_Nodes. ACE_Timer_Heap, on the other hand, - uses a heap-based callout queue, which is more appropriate for - certain real-time applications. - - * ace/Timer_Queue: Revised the ACE_Timer_Queue implementation so - that it's now an abstract base class with most of the - implementation details pushed into the ACE_Timer_List and - ACE_Timer_Heap subclasses. - - * ace/Timer_Queue.h: Made all the ACE_Timer_Queue methods public - so that we can override them in a subclass (e.g., the new - ACE_Timer_Heap). - - * examples/Logger/Acceptor-server/server_loggerd.cpp: Fixed this - example application so that it only uses a single Reactor (the - REACTOR::instance()) rather than two Reactors. Thanks to Sandro - Doro for reporting this. - - * netsvcs/lib/Logging_Strategy.cpp: Fixed the #include of - fstream.h and iostream.h to use the '<' '>' notation rather than - the '"' and '"' notation. This avoids problems with running - "make depend". Thanks to Rino Simioni for - reporting this fix. - -Sun Jan 12 18:20:49 1997 David L. Levine - - * ace/ACE.cpp (round_to_pagesize): fixed typo in reference to - ACE::pagesize_. - - * ace/ACE.cpp: initialize ACE::pagesize_ to 0. - - * ace/config-irix*.h and config-win*.h: removed ACE_PAGE_SIZE - definition because these platforms no longer use it. - - * tests/UNIX*.conf and Win32server.conf: replaced net_svcs - with netsvcs. - -Sat Jan 11 15:11:28 1997 Douglas C. Schmidt - - * ace/OS.i (thr_setprio): The POSIX implementation of - ACE_OS:thr_setprio did not set the priority. It calls: - - pthread_setschedparam( thr_id, &policy, ¶m ) - - and then does - - prio = param.sched_priority. - - instead of - - param.sched_priority = prio; - - This is now fixed. Thanks to John Bossom - for reporting this. - - * ace/config-irix*.h: Modified all the IRIX config files to - use the new ACE_HAS_GETPAGESIZE feature since this is necessary - to differentiate between IRIX and IRIX64. - Thanks to Fred LaBar for - reporting this. - - * ace/ACE.cpp: Modified the round_to_pagesize() so that if - a config.h file enables ACE_HAS_GETPAGESIZE then we use - that function in preference to the value in config.h. - Thanks to Fred LaBar for - suggesting this. - - * ace/ACE.cpp: Modified the round_to_pagesize() so that on - platforms that allow the page size to be obtained dynamically - we'll get that rather than replying on what it set in the - config.h file. We'll cache this value in a static variable - to speedup searches. Thanks to James Mansion for suggesting - this. - - * apps/Gateway/Gateway: Finished adding support for thread-safe - reference counting to the uses of ACE_Message_Block. - - * examples/ASX/Event_Server/Event_Server/Peer_Router.cpp: Replaced - the use of ACE_MT_SYNCH with ACE_SYNCH so that this will compile - correctly on non-MT platforms. - -Fri Jan 10 12:38:42 1997 Douglas C. Schmidt - - * Added a COPYING file that explicitly states the copyright status - of ACE. - - * ace/config-win32-msvc4.x.h and ace/config-winnt-4.0-msvc4.x.h: - By default, we'll revert to *not* enabling - ACE_HAS_TEMPLATE_TYPEDEFS for MSVC++ 4.2, even though this is - well-support by the compiler since it breaks some application - code that expects to use 3 template parameters for - ACE_Svc_Handler<>. The "fix" is to use the ACE_SOCK_STREAM - macros (rather than using the "ACE_SOCK_Stream, ACE_INET_Addr" - tuple) in order to achieve portability in either case. Thanks - to Karlheinz for pointing out the need for backwards - compatibility. - -Wed Jan 8 01:00:05 1997 Douglas C. Schmidt - - * tests/Message_Block_Test.cpp: Enhanced the torture test of the - ACE_Message_Block so that it stresses the reference counting - implementation in a multi-threaded environment. - -Wed Jan 08 10:26:45 1997 David L. Levine - - * ace/Message_Block.cpp (~ACE_Data_Block): assigned 0 to - allocator_strategry_ after deleting it; fixed template - specializations (for g++) by using macros instead of class names; - commented out template specializations because Service_Record.cpp - already has them, and they should only appear once in the library - in order to avoid link clashes - - * ace/Service_Object.cpp (ACE_Service_Object): reordered - initializations in constructor - - * ace/Service_Record.cpp (ACE_Service_Record): reordered - initializations in constructor - - * ace/config-linux-lxpthreads.h: added - ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS, thanks to - James CE Johnson for tracking down this - problem and testing the fix. - -Tue Jan 7 13:03:25 1997 Douglas C. Schmidt - - * ace/Message_Block: Continued to improve the - ACE_Message_Block/ACE_Data_Block implementation. - - * ace/Message_Block: Added a new constructor to ACE_Message_Block - that takes an ACE_Data_Block * and "owns" it. Thanks to Tim for - this idea. - - * ace/Log_Msg.cpp: Now that we've prevented signal handlers from - occurring within critical sections of ACE_Log_Msg::log() we - don't need to use the ACE_Recursive_Thread_Mutex anymore. - Instead, we just need ACE_Thread_Mutex. - - * ace/Log_Msg.cpp (log): Added an ACE_Sig_Guard to the block in - ACE_Log_Msg::log() that acquires the mutex that serializes - output. This prevents nasty problems with recursive to - ACE_Log_Msg::log() from within signal handlers. - - * ace/Service_Config.cpp (end_reactor_event_loop): Added a timeout - of ACE_Time_Value::zero to the ACE_Reactor::notify() method when - called in the ACE_Service_Config::end_reactor_event_loop(). - This prevents the Reactor from blocking indefinitely if there's - no longer a thread to receive from the notification pipe. - - * netsvcs/clients/Naming/Dump_Restore: Removed the vestigal - nametest.cpp and nametest.h files. I'm not sure why they were - still there, but they shouldn't have been! - - * ace/Synch.i (remove): this->owner_ should be set to -1 before - calling this->release(). Thanks to Per Andersson - for suggesting this. - - * ace/Thread_Manager.cpp (exit): Added a flag called "do_thr_exit" - to the ACE_Thread_Control::exit() method. This controls whether - we call ACE_OS::thr_exit() after removing the thread from the - Thread Manager's internal table. This is necessary to work - around pthread bugs on certain platforms (e.g., AIX and Linux). - - * ace/Synch.h: Removed the - ACE_Recursive_Thread_Mutex::set_nesting() method since this - isn't being used and is potentially dangerous. Thanks to Per - Andersson for suggesting this. - - * ace/XtReactor: Updated the XtReactor so that it uses the next - internal Reactor implementation. Thanks to Mark Rabotnikov - for reporting this. - - * ace/Task.i: Updated the grp_id(int) method to cache the group id - in the task and then set it in the Thread_Manager, if there is - one. Thanks to Hamutal Yanay - for suggesting this. - - * ace/Log_Record.h: Updated the ACE_Log_Record class to use the - new ACE_MAXLOGMSGLEN macro. - - * ace/OS.h: Added a new #define called ACE_MAXLOGMSGLEN. By - default this is 4k. However, you can reset it in the config.h - file if you'd like to increase or decrease the size. Thanks to - Anthony McConnell for suggesting this. - - * examples/Threads/tss[12].cpp: Tidied up the tss1.cpp and - tss2.cpp examples and improved the comments. Thanks to Luca for - suggesting this. - - * ace/Service_Object.cpp (fini): Added the "virtual" keyword to - the new destructor of ACE_Service_Type. Thanks to David for - reporting this. - - * ace/Message_Block.i: Rearranged the order of the ACE_Data_Block - and ACE_Message_Block locking_strategy() methods so that they'd - be defined as inline before being used. Thanks to David for - reporting this. - -Mon Jan 6 16:46:06 1997 Douglas C. Schmidt - - * ace/Service_Manager.cpp (fini): Only try to remove the - ACE_Service_Manager from the Reactor if it's actually been - registered in the first place (i.e., if it's get_handle() method - does not return ACE_INVALID_HANDLE). - - * netsvcs/servers/svc.conf: Changed the name of the net services - .so file from libnet_svcs to netsvcs so that it will work - correctly with our new "cross-platform" svc.conf ACE::ldfind() - strategy. Thanks to Marius Kjeldahl for - reporting this. - - * ace/Reactor.cpp (find): Added a strategic break and a check for - handle_in_range(). Thanks to Tim for this help! - - * netsvcs/clients/Naming/Client/svc.conf: Removed the "lib" part - from the executable shared object file names in the svc.conf - file so that it will work with the new "cross-platform" svc.conf - ACE::ldfind() strategy. Thanks to Marius Kjeldahl - for reporting this. - - * ace/Service_Record.cpp (fini): Added an extra assignment to a - temporary const void *obj to avoid problems with MSVC++ and it's - cast mechanism. - - * ace/ReactorEx.h: Added a default parameter to - ACE_ReactorEx::notify(). Thanks to Tim for noticing this. - -Sun Jan 5 10:48:23 1997 Douglas C. Schmidt - - * tests: Added a new test for ACE_Message_Block, which is called - Message_Block_Test.cpp (no surprise there ;-)). This test - exercises the reference counting mechanisms. - - * ace/Message_Block.h: Made the destructors for ACE_Message_Block - and ACE_Data_Block virtual, so that these classes can be - subclassed and ACE_Message_Blocks can delete these - subclasses (either via release() or delete). Thanks to Tilo - Christ for suggesting this. - - * ace/Message_Block.cpp: Modified the implementation - of ACE_Message_Block/ACE_Data_Block so that we always create - an allocator_strategy_. By default, this strategy will be - ACE_Allocator_Adapter >; - This greatly simplifies the code. - - * ace/Message_Block.h: It's now possible to assign a - Message_Block's priority when you create it. - - * ace/Reactor: Sped things up some more by merging the Reactor's - any_ready() and fill_in_ready() methods together. This reduces - redundant computations. - - * ace/Reactor: Changed the name of ACE_Reactor::detach() to - ACE_Reactor::remove_handler_i() and changed the name of - ACE_Reactor::attach() to ACE_Reactor::register_handler_i(). - This is more consistent with the other naming schemes. - - * ace/Reactor.cpp: Reworked the implementation of the Handler - Repository's unbind() method in order to simplfy the logic. - Also merged in all the Reactor's detach() functionality into the - unbind() method in order to localize all the handler removal - processing. - - * ace/Reactor[Ex].cpp: Added more descriptive errno entries for - failed operations in the handler repository. - - * ace/Reactor.cpp: Modified the implementation of the Handler - Repository's bind() method so that it reports an error if you - try to register an Event_Handler for an invalid HANDLE. - - * ace/Reactor.cpp: Reimplemented the internals of the Reactor to - prepare for the upcoming merge of the Reactor and ReactorEx to - use a single code base. - - * ace/Timer_Queue.cpp: Modified the behavior of the expire() - methods so that they return the number of ACE_Event_Handlers - whose handle_timeout() method was called. - -Sat Jan 4 11:47:05 1997 Douglas C. Schmidt - - * ace/Reactor.h: Removed the #ifdefs for ACE_HAS_POLL. This will - be recast as a strategy in subsequent implementations. - - * ace/Reactor.cpp: Added a new call, - ACE_Handler_Repository::handle_in_range(), which checks to make - sure that the HANDLE is within the range of 0 .. max_handlep1_. - This factors out some redundant code. - - * ace/Reactor.cpp: Sped up the performance of the Reactor by - removing redundant calls to - ACE_Handler_Repository::invalid_handle() and - ACE_Handler_Repository::find(). - - * tests/Reactors_Test.cpp: Added a test for - the new Reactor::notify() method with timeouts. - - * examples/Reactor/Misc/notification.cpp (svc): Added a test for - the new Reactor::notify() method with timeouts. - - * ace/Reactor[Ex]: Modified the Reactor and ReactorEx so that they - use timed send() operations for their notify() methods. This - makes it possible for users to bound the amount of time they're - willing to wait to try and notify the Reactor. This is mostly - useful to avoid infinite blocking if there is congestion in the - Reactor's notification mechanism. - - * ace/ACE.cpp: Added a new timed send() method that uses the - write() system call on UNIX and the socket send() call on Win32. - This new method is used in the new ACE_Reactor::notify() method, - which now supported timed notifications. - - * ace/Reactor.cpp (ACE_Handler_Repository): To simplify the code - and reduce unnecessary #ifdefs, I've merged the max_handlep1_ - and cur_size_ fields (which are now called max_handlep1_). - -Fri Jan 3 10:47:15 1997 Douglas C. Schmidt - - * ace: Replaced all uses of "delete mb" with mb->release (); - - * ace/Stream_Modules.cpp: Replaced the use of explicit bit - twiddling with the ACE_BIT* macros. - - * ace/Message_Block.cpp: Make sure that we use the - allocator_strategy_ to create the memory for the reference count - since this may need to go into shared memory if that's the - memory pool where the Message_Block allocations are coming from. - - * ace/OS.h: Added two new macros, ACE_ALLOCATOR_RETURN and - ACE_ALLOCATOR, which are similar to ACE_NEW_RETURN and ACE_NEW, - except that these - - * ace/Message_Block.cpp (release): Make sure to "delete this" - outside the scope of the locking_strategy_. - - * ace/Service_Object.cpp: Added a destructor to ACE_Service_Type. - Thanks to Per.Andersson@hfera.ericsson.se (Per Andersson) for - suggesting this. - - * ace/Service_Object.i: Be smarter about how we reassign the name_ - pointer, i.e., delete the old one and make a copy. Thanks to - Per.Andersson@hfera.ericsson.se (Per Andersson) for reporting - this. - - * ace/Module.cpp (open): Rearranged the assignments to - reader_q->mod_ and writer_q->mod_ so that we don't try to - initialize through NULL pointers. Thanks to - Per.Andersson@hfera.ericsson.se (Per Andersson) for reporting - this. - - * ace/Service_Record.cpp (ACE_Service_Record): Initialized name_ - to NULL so that the following change works correctly now. - Thanks to Per.Andersson@hfera.ericsson.se (Per Andersson) for - reporting this. - - * ace/Service_Record.i (name): Make sure to delete [] (char *) - this->name_ before allocating a new one. Thanks to - Per.Andersson@hfera.ericsson.se (Per Andersson) for reporting - this. - - * ace/Message_Block: Reworked the reference counting implemention - so that reference counts are shared correctly amongst their - various owners. This requires making a deep copy the "header" - portion, but a shallow copy of the "data." - - * ace/Message_Block.cpp (ACE_Message_Block): Updated all three - ACE_Message_Block constructors so that they all call the init() - method. This centralizes all the initialization logic in one - place. - -Thu Jan 2 00:42:21 1997 Douglas C. Schmidt - - * ace/Message_Block.cpp (ACE_Message_Block): Make sure to set the - cont_ field to 0 after "releasing" it so that we don't - mistakenly think it's still around later on. This problem arose - in the ACE_Message_Queue::close() method, which was trying to - count the number of bytes being freed. - - * ace/Message_Queue.cpp (close): Fixed a subtle bug where we - weren't actually deleting messages from the - ACE_Message_Queue::close() routine. This should work now... - - * ace/Message_Queue.cpp (close): Replaced the use of "delete mb" - with "mb->release()" since the Message_Blocks are now reference - counted. - - * ace/Message_Block: Enhanced the reference counting scheme so - that you can increment and decrement the count by an arbitrary - amount. This is particular useful when you know you'll be - sending the same Message_Block to N consumers. - - * ace/Singleton: The dump() must be used same as instance() - (without supplying an object) so it must be declarated *static*, - i.e., - - static void dump (void); - - Thanks to Sandro Doro for reporting - this. - - * examples/ASX/Event_Server: Completely rewrote and retested the - ACE Event Server example. The new code is *much* easier to - understand, has many more comments, is more robust, and compiles - much faster since I removed many of the templates. - - * examples/ASX/Event_Server/Tranceiver/tranceiver.cpp: Fixed the - tranceiver so that it shuts down correctly when the Event_Server - exits. - - * examples/Connection/non_blocking/CPP-connector.cpp: Fixed a - problem where we were trying to select() on ACE_STDIN on Win32. - Naturally, this doesn't work, so we used the - ACE::register_stdin_handler() to fix this. Thanks to - Samuel_Bercovici - for reporting this. - - * examples/ASX/Event_Server/Event_Server/Options: Changed the - Options class to be a Singleton... - - * ace/Task.h: Added "const" method qualifier to accessor methods - like is_reader() and is_writer(). - -Wed Jan 1 00:10:47 1997 Douglas C. Schmidt - - * ace/Message_Block: Added a new static release() method that - behaves like the non-static method release(), except that it - checks if is 0. This is similar to CORBA::release(), which - is useful if you want to eliminate lots of checks for NULL - pointers before calling release() on them. - - * Updated all places in ACE where we use - ACE_Event_Handler::READ_MASK when we should be using - ACE_Event_Handler::ACCEPT_MASK. - - * examples/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.cpp: - Changed the name of the acceptor class from Handle_Thr_Stream to - Handle_Thr_Acceptor, which is more accurate. - - * ace/Reactor: Since we've now got an - ACE_Event_Handler::ACCEPT_MASK (intended primarily to accept - connections asynchronously using Win32 overlapped I/O) we can - now use this with the ACE_Reactor, as well. In particular, any - time that we are registering a "passive-mode" socket acceptor we - can now specify ACE_Event_Handler::ACCEPT_MASK. This is much - more intuitive than using the READ_MASK (which never made any - sense...). The ACE_Reactor now treats the ACCEPT_MASK as a - READ_MASK internally, so you can still use READ_MASK if you'd - like (i.e., this change doesn't break any existing code). - - * ace/Event_Handler: Changed "get_priority" and "set_priority" to - simply "priority(void)" and "priority(int)" to be more - consistent with other parts of ACE. - - * apps/Gateway/Gateway: Updated the Gateway so that the - concurrency strategies can now be specified on the - command-line (or in the svc.conf file), rather than being - determined at compile-time. This is much more flexible. - See the ./apps/Gateway/Gateway/README file for details. - - * apps/Gateway/Gateway: Verified that all the multi-threading - strategies still work. - - * ace/Message_Block.cpp (ACE_Message_Block): Make sure that we - "release" the continuation field, rather than delete it, since - its reference count may be > 1. - - * ace/Log_Msg.cpp (log): Change the abort_prog logic a bit so that - we always print a message to stderr if we're exiting, - regardless... Thanks to David Levine for pointing this out. - - * apps/Gateway/Gateway: Moved all of the configuration file - parsing logic *outside* of the Event_Channel into the Gateway - class so that we wouldn't have unnecessary dependencies. - - * apps/Gateway/Gateway: Redesigned the Gateway so that the - Proxy_Handlers (i.e., the Consumer_Proxy and Supplier_Proxy) - most of their work to the Event_Channel. This "lightweight - proxy" design is an improvement since it is now possible to - emulate the COS Event Channel semantics within the Event_Channel - "kernel." - - * Happy new year! Let's start a new ChangeLog to celebrate the - new year. diff --git a/ChangeLog-97b b/ChangeLog-97b deleted file mode 100644 index da7e8bf2f84..00000000000 --- a/ChangeLog-97b +++ /dev/null @@ -1,9182 +0,0 @@ -Tue Nov 25 16:18:49 1997 David L. Levine - - * ACE version 4.4, released Tue Nov 25 16:18:49 1997. - -Tue Nov 25 16:03:09 1997 David L. Levine - - * Makefile: fixed Version.h generation to work properly when - $$beta is undefined. - -Mon Nov 24 10:33:34 1997 Douglas C. Schmidt - - * ACE version 4.3.56, released Mon Nov 24 10:33:34 1997. - -Sun Nov 23 13:32:02 1997 David L. Levine - - * ace/IOStream.h: removed DIGITAL_UNIX from #include decision, - so now it just depends on DEC_CXX and its version. Thanks to - Dani Flexer for this fix. - - * netsvcs/lib/Server_Logging_Handler.cpp: updated template - instantiations to match recent change to Server_Logging_Handler_T.h. - -Sat Nov 22 19:16:35 1997 - - * tests/Process_Strategy_Test.cpp: - - main: Removed signal handling code. It is unnecessary since we - do not use kill() anymore. - - Process_Strategy: This subclass of ACE_Process_Strategy - overwrites the process creation method to include connection - counting. - - connection_completed: Made sure that the Reactor is woken up - after all the connections have completed. - - * ace/Priority_Reactor.cpp (init_bucket): Removed extra code. - - * ace/Acceptor.cpp (activate_svc_handler): open svc_handler only - if result is 0. Also removed extra tracing code. - - * ace/Handle_Set.i (reset): Purify is reporting a UMR - (uninitialized memory copy) when copying a Handle_Set. This - comes from the mask fd_set not being memset to 0 by FD_ZERO. - This is therefore a harmless error. - - * tests/Priority_Reactor_Test.cpp (main): The ordering of - auto_ptrs is very subtle.... "auto_ptr reactor" - should come before "auto_ptr impl", i.e., - the implementation should be destroyed *before* the forwarding - class. This is apparent when the implementation class is - removing registered event handlers that hold a pointer to the - forwarding class. - -Sat Nov 22 16:04:07 1997 Carlos O'Ryan - - * ace/Message_Queue.cpp: - Fixed some formating problems in the ACE_Message_Queue::dump - method, thanks to Arturo Montes for - finding this one. - -Sat Nov 22 14:38:22 1997 Steve Huston - - * ace/config-aix-4.2.x.h: Added ACE_TLI_TCP_DEVICE "/dev/xti/tcp". - This fixes Riverace problem ID P32; AIX now joins HP-UX in - supporting XTI/TLI, but not everything (problem P27). - - * ace/UPIPE_Connector.h: - * ace/TLI_Connector.h: Added meta-type information PEER_ADDR and - PEER_STREAM. Fixes Riverace problem ID P37. - - * apps/JAWS/server/HTTP_Server.cpp: Added 'const' to "char *prog". - Fixes Riverace problem P36. - - * examples/Connection/misc/test_upipe.cpp: - * examples/Connection/non_blocking/CPP-connector.cpp: - * examples/Threads/process_mutex.cpp: - * examples/Threads/process_semaphore.cpp: - Added 'const' to "char *" - can't initialize a char * with - a const string. Fixes Riverace problem ID P38, P40. - - * examples/Threads/thread_specific.cpp, tss1.cpp: Moved the Errno - class out to a new file, thread_specific.h. AIX xlC needs to have - the class in a .h file for template generation. Fixes Riverace - problem P42. - * examples/Threads/Makefile: Make sure that, on AIX, the tempinc - directory is cleared before building each new program. - - * performance-tests/Synch-Benchmarks/Makefile: Changed SHLIB to use - $(SOEXT) rather than .so. Fixes Riverace problem ID P41. - - * tests/Thread_Pool_Test.cpp: Moved 'this->getq(mb)' out of an - ACE_ASSERT. Thanks to Arturo Montes - for finding this. - -Sat Nov 22 05:44:10 1997 Nanbor Wang - - * tests/Process_Strategy_Test.cpp (main): Shuffled things around - in fork() block. This is fun. - - * ace/Strategies_T.cpp (activate_svc_handler): Added an - ACE_UNUSED_ARG macro to muffle g++. - - * tests/Process_Strategy_Test.cpp (handle_close): Added a return - type specifier. Without it, g++ laments. - - * ace/Acceptor.cpp (activate_svc_handler): Should be if (open (...) == - -1) then error, not if (open (...) != -1) then error. - - * ace/ACE.cpp (set_handle_limit): Removed a duplicated ACE_TRACE - macro. - -Sat Nov 22 00:26:11 1997 Nanbor Wang - - * ace/Thread_Manager.cpp (close): Activated automatic wait on - close functionality. I think I get it right this time. - -Fri Nov 21 19:59:37 1997 Carlos O'Ryan - - * ace/IPC_SAP.cpp: - Added a couple of ACE_NOTREACHED protections. Thanks to Brian - Mendel for reporting this. - -Fri Nov 21 17:12:48 1997 - - * ace/Thread_Manager.cpp (close): Deactivated automatic wait on - close for now. It doesn't seem to work on Solaris. - - * ace/Thread_Manager.{h,cpp} (wait): Added codes to remove detached - threads. This function can be activated selectively. I added - this so we can ignore detached threads when closing down the - default thread manager. - - (close): Activated the code to wait (join) all threads managed - by the thread manager. It will ask wait function to remove all - detached thread first (and so they won't be counted into threads - we are waiting for.) - -Fri Nov 21 13:22:25 1997 Douglas C. Schmidt - - * ACE version 4.3.55, released Fri Nov 21 13:22:25 1997. - -Fri Nov 21 12:18:28 1997 Douglas C. Schmidt - - * ace/Acceptor.cpp,Strategy_T.cpp: Removed the use of gotos. See - Dijkstra '67 for motivation... - - * tests/Process_Strategy_Test.cpp (open): Make sure that we set - the Reactor of the Svc_Handler to 0 if we're running the - threading test. - - * tests/Reactor_Notify_Test.cpp: Added back THR_BOUND to - make things work on Solaris. - -Fri Nov 21 02:23:47 1997 - - * tests/Process_Strategy_Test.cpp: - - - The event loop execution was based on a fragile timeout - mechanism. This was changed to a more robust mechanism that - counts the connections. - - - The unlinking of the file was moved from the server to the - client. This is necessary since there maybe multiple server - processes that cannot really coordinate when the file should - be removed. - - * ace/Strategies_T.cpp (ACE_Concurrency_Strategy): - ACE_Concurrency_Strategy and all three of the subclasses - (ACE_Reactive_Strategy, ACE_Process_Strategy, and - ACE_Thread_Strategy) were messed up. Only ACE_Reactive_Strategy - was (trying) to set the correct blocking mode of the socket. - Therefore, moved the socket mode setting code to the base class, - ACE_Concurrency_Strategy, so that all the classes can share it. - - This did create one problem though. If the implementation of - the reactor uses event associations (i.e., WFMO_Reactor), we - cannot try to set the socket mode since the registration of the - svc_handler caused an event association to be created for the - socket and by default (thanks Microslush) the socket is set to - non-blocking mode. If the user is excepting to have a socket in - blocking mode, he is in for a surprise. Maybe we should return - a failure if the user is expecting a socket in blocking mode. - This is probably too harsh for now. - - * tests/Future_Test.cpp (open): Added THR_DETACHED since we don't - wait for this thread. - - * tests/Reactor_Notify_Test.cpp (open): Changed THR_BOUND to - THR_DETACHED since we don't wait for this thread. - - * tests/IOStream_Test.cpp (server): Make sure to close the socket - in ACE_SOCK_Acceptor and ACE_SOCK_IOStream. - - * ace/WFMO_Reactor.cpp (open): When I changed open() last, I - ignored the order of the registeration of notify_handler_ and - wakeup_all_threads_handler_. Unfortunately, the order of the - two registrations is very important since the optimization for - owner thread takes advantage of this ordering. Therefore, - revert the order of registertion to notify_handler_ followed by - wakeup_all_threads_handler_. - - * tests/version_tests/run_all_tests.bat: Added new bat file to - make the running of all the different configurations easier. - - * tests/version_tests/version_tests.{mak,mdp}: Added a mammoth - testing scheme that is used to test all 8 configurations of the - tests under Win32. These 8 configurations are: - - DLL Debug - DLL Release - DLL Unicode Debug - DLL Unicode Release - static Debug - static Release - static Unicode Debug - static Unicode Release - - run_tests.bat from the test directory can then be used to run - these various configurations. run_tests.bat was also extended - to allow the user to purify the tests. Simply execute - run_tests.bat with the purify command line option. - -Thu Nov 20 17:43:15 1997 - - * ace/Thread_Manager.cpp (kill_thr): Changed to prevent thread - manager from "discard" a thread when a certain operation is not - supported by the operation system. Removed the mechanism that - preserves errno during "thread removal." We no longer remove - thread right after an error occured. - -Thu Nov 20 17:53:35 1997 Douglas C. Schmidt - - * examples/Shared_Malloc/test_multiple_mallocs.cpp (main): Make - sure make sure that the semaphores created by the program are - released as well as the storage files deleted. Thanks to Tom - Arbuckle for reporting - this. - - * ace: Added a new version of config-osf1-3.2.h. Thanks to Dani - Flexer for updating this. - -Thu Nov 20 18:22:24 1997 Steve Huston - - * ace/README - ace/TLI.h - ace/TLI_Acceptor.h - ace/TLI_Connector.h - Changed from using hardcoded "/dev/tcp" as the XTI device name to - a new config-related define, ACE_TLI_TCP_DEVICE. If the config - doesn't set one, it defaults to "/dev/tcp". Thanks to Steve Coy - for zeroing in on this problem in HP-UX. - - ace/config-hpux-10.x.h: ACE_TLI_TCP_DEVICE is "/dev/inet_cots". - Note that XTI won't work 100% well on HP still - this is Riverace - problem ID P27. - - * netsvcs/lib/Server_Logging_Handler_T.h: Hardcoded to always use - ACE_SOCK_Stream (and friends) rather than ACE_TLI_Stream and friends. - XTI doesn't work real well on some platforms (particularly HP-UX - and AIX). When they're fixed, this can be undone (Riverace problem - ID P28). - - * examples/IPC_SAP/TLI_SAP/CPP-client.cpp: Changed 'char *host' to - 'const char *host' so it can be initialized from a const char string. - -Thu Nov 20 14:19:57 1997 Carlos O'Ryan - - * tests/Priority_Reactor_Test.h: - * tests/Priority_Reactor_Test.cpp: - The test has a limited execution time now, and only reports a - warning if runs out of time. This may be due to some failed - connections, but it is hard to avoid that. On the other hand - the default time should be large enough, in our machines the - test only takes 14 seconds, so 60 seconds should be enough. - NOTE: this problem reveals a problem *only* in the test itself - not in ACE_Priority_Reactor. - -Thu Nov 20 11:29:51 1997 David L. Levine - - * ace/Timer_{Heap,List}_T.{h,cpp}: added - ACE_Timer_{Heap,List}::get_first () accessors. Thanks to - Stephen Henry for this suggestion. - -Thu Nov 20 11:27:44 1997 Douglas C. Schmidt - - * ACE version 4.3.54, released Thu Nov 20 11:27:44 1997. - -Thu Nov 20 10:45:08 1997 - - * tests/MT_SOCK_Test.cpp: Uncommented socket close call. - - * ace/WFMO_Reactor.cpp (open): Open the notification handler - *after* the timer queue has been created. - - * ace/ACE.cpp (get_ip_interfaces): Changed rep() to fast_rep() to - prevent memory leak. - - * ace/Reactor.cpp (ACE_Reactor): Fixed error of not creating any - Reactors on UNIX. - -Thu Nov 20 08:36:54 1997 Nanbor Wang - - * ace/Thread_Manager.{h,cpp}: Added a dummy argument to internal - thread functions. Without them, MSVC wrongly optimizes codes - and the stack were all clobbered when entering these functions. - -Wed Nov 19 23:24:03 1997 - - * ace/Reactor.cpp: Rearragned macros so we use Select_Reactor as - default if we don't have Winsock2. Irfan did it, not me. - -Wed Nov 19 22:11:20 1997 Douglas C. Schmidt - - * ACE version 4.3.53, released Wed Nov 19 22:11:20 1997. - -Wed Nov 19 15:55:52 1997 Sumedh Mungee - - * config-netbsd.h: NetBSD 1.3alpha has a better MSYNC. Commented out - ACE_HAS_BROKEN_NETBSD_MSYNC - -Wed Nov 19 14:26:36 1997 Nanbor Wang - - * stdcpp.h, OS.h: Changed ACE_CONFIG_H to ACE_USER_CONFIG_H. It - conflicts with the macro in various configuration files. - -Wed Nov 19 15:55:45 1997 Douglas C. Schmidt - - * ace/config-sunos5.*.h: Replaced all uses of ACE_HAS_UNICODE with - ACE_HAS_XPG4_MULTIBYTE_CHAR. At this point, I think only NT has - the UNICODE macro now. Thanks to Steve Huston for validating - this. - - * STL/bstring.h: Added a special-case for BorlandC++. However, I - think this can be generalized for all compilers. Thanks to - Valik Solorzano Barboza for reporting this. - - * ace/OS: Fixed strpbrk() to handle the const char * and char * - cases of ANSI C++. Thanks to Valik Solorzano Barboza - for reporting this. - - * ace/OS.h: Added a special case for _MSC_VER since BC++ doesn't - have wchar.h! Thanks to Valik Solorzano Barboza - for reporting this. - -Wed Nov 19 13:43:33 1997 Darrell Brunsch - - * Merged the purify testing into run_tests. Just use - - "run_tests purify ..." - - to purify instead of running the tests. If you thought this - batch file looked bad before.... - -Wed Nov 19 12:17:50 1997 Nanbor Wang - - * ace/{OS,stdcpp}.h (ACE_CONFIG_H): Added this macro to protect - config.h from getting included multiple times. - - * ace/stdcpp.h: Reverted include OS.h back to config.h. - -Wed Nov 19 09:20:05 1997 Douglas C. Schmidt - - * ACE version 4.3.52, released Wed Nov 19 09:20:05 1997. - -Wed Nov 19 07:54:44 1997 Douglas C. Schmidt - - * ace/ACE.cpp (crc32): Reverted the COMPUTE macro back to its - original value. For some reason, the version given by Valik was - failing. - - * ace/SV_Semaphore_Complex.cpp (open): Make sure initialize the - sem_number_ data member, though this isn't actually used for - anything. - - * ace/ACE.cpp: Added a #ifdef for __unix since this is the only - case where we'll actually have the ifreq autoptr. Thanks to - Valik Solorzano Barboza for reporting this. - - * ace/Log_Record.cpp (print): Added a work around for a really - lame bug with BORLANDC. Thanks to Valik Solorzano Barboza - for reporting this. - -Wed Nov 19 04:22:38 1997 Douglas C. Schmidt - - * ACE version 4.3.51, released Wed Nov 19 04:22:38 1997. - -Wed Nov 19 04:02:09 1997 Douglas C. Schmidt - - * include/makeinclude/rules.local.GNU (show_uninit): It seems - there was a missing '@' at the beginning of the line. Thanks to - Hans Rohnert for reporting this. - - * tests/Process_Strategy_Test.cpp (handle_input): Fixed Irfan's - code, which keeps breaking ACE ;-). - -Wed Nov 19 01:55:06 1997 - - * ace/WFMO_Reactor.cpp (resume_handler_i, suspend_handler_i, - unbind_i): Since things don't happen immediately in the - WFMO_Reactor world, we must make sure that this request is not a - duplicate. If so we must ignore it. - - * ace/Asynch_Acceptor.cpp (open): Fixed addr type mismatch problem. - - * tests/UPIPE_SAP_Test.cpp (main): Make sure to close the socket - in ACE_UPIPE_Acceptor. - - * tests/SPIPE_Test.cpp (server): Make sure to close the socket in - ACE_SPIPE_Acceptor. - - * tests/SOCK_Test.cpp (spawn): Make sure to close the socket in - ACE_SOCK_Acceptor. - - * tests/Reactor_Notify_Test.cpp (Supplier_Task): Make sure to - close the pipe down. - - * tests/Process_Strategy_Test.cpp (handle_input): Fixed ACE_DEBUG - statement to pass the correct number of arguments. - - * tests/MT_SOCK_Test.cpp (spawn): Make sure to close the socket in - ACE_SOCK_Acceptor. - - * tests/Reactor_Exceptions_Test.cpp (main): Make sure to close the - socket in ACE_SOCK_Dgram. - - * tests/run_purify_tests.bat: Added "mkdir purify_results". - - * tests/run_tests.bat, run_purify_tests.bat: Changed explicit name - of bat file (e.g., run_tests, run_purify_tests) to %0. This - will allow the bat file to be used from other directories. - - * ace/config-win32-common.h: Removed extraneous define of - ACE_HAS_TEMPLATE_INSTANTIATION. - -Wed Nov 19 00:37:22 1997 - - * ace/stdcpp.h: Changed to use "ace/OS.h" instead of using - "ace/config.h" directly to avoid redefinition of user defined - macros. - - * ace/Log_Msg.cpp (close): Disable Win32 to delete - ACE_Log_Msg::instance (). On Win32, this should be done by - ACE_TSS_Cleanup. - - * ace/OS.cpp (cleanup_tss): Enabled Win32 to call - ACE_Log_Msg::close. This is required to properly release - resourses held by ACE_Log_Msg_Manager. - -Tue Nov 18 19:28:36 1997 Douglas C. Schmidt - - * ace/Select_Reactor.cpp (unbind), - ace/WFMO_Reactor.cpp (handle_signal): Fixed a large number of - bugs with non-portable "scope of the for loop counter"... - Thanks to Valik Solorzano Barboza for - reporting this. - - * ace/Thread_Manager: Added == and != operators for - ACE_Thread_Descriptor to fix things with BORLANDC's template - mechanism. Thanks to Valik Solorzano Barboza - for reporting this. - - * ace/Select_Reactor: Added == and != operators for - ACE_Event_Tuple to fix things with BORLANDC's template - mechanism. Thanks to Valik Solorzano Barboza - for reporting this. - - * ace/OS.i (tempnam): Fixed a typo -- WIN32 should be ACE_WIN32. - Thanks to Valik Solorzano Barboza for - reporting this. - - * ace/OS.h: Reordered the ACE_SEH_* macros so they work correctly - with BORLANDC. Thanks to Valik Solorzano Barboza - for reporting this. - - * ace/OS: Added operator== and operator!= for ACE_Cleanup_Info so - that it will work correctly with BORLANDC's template mechanism. - Thanks to Valik Solorzano Barboza for - reporting this. - - * ace/config-win32-common.h: Added - ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION for BORLANDC. Thanks to - Valik Solorzano Barboza for reporting this. - - * ace/Filecache.cpp: Fixed a bug with BORLANDC. Thanks to Valik - Solorzano Barboza for reporting this. - - * ace/ACE.cpp (crc32): Added some parens to the COMPUTE macro to - make it easier to grok. Thanks to Valik Solorzano Barboza - for reporting this. - -Tue Nov 18 16:27:32 1997 - - * ace/Log_Msg.cpp (log): Added a %D option to Log_Msg for - "month/day/year hour:minute:second:microsecond". Thanks to John - Mulhern <9107@MN3.LAWSON.lawson.com> for suggesting this. - - * ace/config-win32-common.h: If __ACE_INLINE__ is defined to be 0, - we will undefine it. - -Tue Nov 18 15:59:37 1997 Steve Huston - - * ace/IOStream.cpp: In underflow() and overflow(), use base() to - check for buffer in use in every case - not just without - ACE_HAS_STANDARD_CPP_LIBRARY==1. Thanks to James CE Johnson - (jcej@lads.com) for this fix. - - * tests/MT_SOCK_Test.cpp: Allow the test to run even if not all of - the proceses can be forked. - -Tue Nov 18 15:27:37 1997 Nanbor Wang - - * ace/Timer_Queue_Adapters.cpp: Reordered include files. Thanks - to Torbjorn Lindgren for noticing the problem. - -Tue Nov 18 11:40:18 1997 Steve Huston - - * ace/IOStream.(cpp h): Added: &&(ACE_HAS_STANDARD_CPP_LIBRARY != 0) - to the #if defined (ACE_HAS_STANDARD_CPP_LIBRARY) lines to only use - the new iostreams things if that's been selected by the config file. - In ACE_Streambuf::overflow(), changed: - if (!eback()) to if (!pbase()) - -Tue Nov 18 08:23:53 1997 Douglas C. Schmidt - - * tests/Thread_Pool_Test.cpp (open): Moved the activate() method - from the Thread_Pool constructor to the open() hook since the - Thread_Pool class invoked ACE_Task::activate, indirectly invokes - Thread_Pool::svc. There existed a miniscule probability this - code would have crashed since on extremely broken C++ compilers - the virtual member function Thread_Pool::svc may not correctly - initialized in Thread_Pool constructor (i.e., it might point to - ACE_Task_Base::svc() at this point). The chance of this - happening is incredibly remote, but it's still a good ideal to - put the call in the open() method so we can check the return - value in the application. Thanks to Arturo for pointing this - out. - -Tue Nov 18 05:40:53 1997 David L. Levine - - * ace/OS.cpp (inet_aton): on Chorus only, use the native - ::inet_aton (). Thanks to Wei for pointing this out. - - * ace/OS.cpp (gethostby{addr,name}): on VxWorks only, don't htonl - the input address because it already should be in network byte - order. Store the output address in network byte order. Thanks - to Wei for noticing this error. - - * include/makeinclude/wrapper_macros.GNU: add -DACE_PURIFY to - CFLAGS if purify make flag is set, and -DACE_QUANTIFY if - quantify is set. Thanks to Chris Cleeland for this suggestion. - - * ace/Memory_Pool.cpp (ACE_Shared_Memory_Pool): reordered - initializers to match declaration order. - - * etc/purify.solaris2: added suppression of pthread_setcanceltype - BSW. - -Tue Nov 18 00:11:26 1997 Douglas C. Schmidt - - * ACE version 4.3.50, released Tue Nov 18 00:11:26 1997. - -Mon Nov 17 22:35:22 1997 Douglas C. Schmidt - - * examples/Shared_Malloc/test_malloc.cpp: Added some additional - calls to Malloc::instance ()->remove () to cleanup all the - semaphore locks. Thanks to Tom Arbuckle - for reporting this. - - * ace/Memory_Pool.cpp (init_acquire): Fixed a problem caused by - failing to initialize the minimum_bytes_ field in the - ACE_Shared_Memory_Pool class. Thanks to Tom Arbuckle - for reporting this. - - * examples/Shared_Malloc/test_malloc.cpp: Updated the Shared - Malloc test program to use the Singleton Thread Manager. - -Mon Nov 17 18:09:06 1997 - - * All eight different configurations of ACE passed all tests on - our Alpha/NT. - -Mon Nov 17 15:37:52 1997 David L. Levine - - * ace/INET_Addr.cpp (get_host_name): on VxWorks only, moved - ::hostGetByAddr code block to _after_ the check for the - address being INADDR_ANY. Without that check, get_host_name () - never returns the caller's own hostname. - - * netsvcs/lib/Makefile: the first line of the Local Target - (Server_Logging_Handler.*) override mysteriously disappeared. - -Mon Nov 17 02:09:57 1997 Douglas C. Schmidt - - * ACE version 4.3.49, released Mon Nov 17 02:09:57 1997. - -Mon Nov 17 02:03:21 1997 Douglas C. Schmidt - - * ace/IOStream_T.cpp: Added a few more fixes for KCC C++ and its - standard C++ library support. - -Mon Nov 17 01:34:34 1997 - - * netsvcs/servers/main.cpp (main): Removed daemon and changed to - use the singleton service configurator. Thanks to John Mulhern - and Stephen Coy for tracing this down and Irfan for coming out - with the fix. - -Sun Nov 16 21:58:51 1997 Darrell Brunsch - - * tests/*.dsp, ace/*.dsp: Added Release, Unicode Debug, and - Unicode Release versions for each of the tests. - - Also found out that precompiled headers take up insane - amounts of disk space when used with ACE and also slows - the compilation down. I turned it off for the tests and - for the ace libraries - -Sun Nov 16 13:34:29 1997 Douglas C. Schmidt - - * tests/SOCK_Connector_Test.cpp (fail_no_listener_nonblocking): - Changed the line - - status = con.complete (sock); - - to - - if (sock.get_handle () != ACE_INVALID_HANDLE) - status = con.complete (sock); - - The change worksaround a core dump due the the following - conditions: - - - the find_another_host function in SOCK_Connector_Test comes - up with the entry for an NT machine. - - - the ACE_OS::connect call at line 64 of SOCK_Connector.cpp - "successfully" fails returning -1 but in this case - errno is set to ECONNREFUSED. - - - Since errno is not EINPROGRESS or EWOULDBLOCK the - ACE_SOCK_Stream 'new_stream' close member function is called - which, besides closing the "handle", also sets it to - ACE_INVALID_HANDLE. - - - Since the errno was ECONNREFUSED the 'if' test at line 97 of - SOCK_Connector_Test.cpp is true and the next statement - - status = con.complete (sock); - - is called causing a core dump since sock.get_handle() is - ACE_INVALID_HANDLE (-1 on Solaris). - - Thanks to Jack Erickson for reporting this. - - * ace/OS: Cast away the constness of the parameters to _tempnam() - for Borland C++. Thanks to Valik Solrzano Barboza - for this. - - * ace/config-unixware-2.1.2-g++.h: Changed - ACE_HAS_OSF1_GETTIMEOFDAY to ACE_HAS_SVR4_GETTIMEOFDAY. Thanks - to John Connett for reporting this. - - * ace/SPIPE_Addr.cpp (set): Fixed a problem where we were - potentially writing into character constants. Thanks to Darrell - Brunsch for finding this. - - * ace/Get_Opt.cpp (operator): We need to make sure that all uses - of ACE_OS::strchr() are consistent with respect to const - correctness. Thanks to Darrell Brunsch for finding this. - - * ace/config-win32-common.h: Added a few minor changes for Borland - C++. Thanks to Valik Solrzano Barboza for - this. - - * ace/Log_Record.cpp (print): Changed the formal parameter from - "const char host_name[]" to "const char *hostname" so that we - can assign this in the function if necessary. Thanks to Valik - Solrzano Barboza for this. - - * ace/OS.cpp: Moved the constructor for ACE_Cleanup_Info into the - OS.cpp since it doesn't really need to be inline. - - * ace/WFMO_Reactor.cpp (notify): Replaced a "sizeof - ACE_Notification_Buffer" with "sizeof - (ACE_Notification_Buffer)". It's odd that the first approach - (which is incorrect) isn't flagged by MSVC++... Thanks to Valik - Solrzano Barboza for this. - - * ace/OS.i (sema_init): Added an ACE_ALLOCATOR_RETURN in the - appropriate spot. - - * ace/ACE.cpp: Moved the implementation of strsplit_r() into the - ACE.cpp file since it's rather long... - - * ace/OS: To be more conformant to the standard C++ library, - I've added a pair of methods for strstr(), strchr(), strrchr(), - etc. e.g., the function signature strstr(const char*, const - char*) is replaced by the two declarations: - - const char *strstr (const char* s1, const char* s2); - char *strstr (char* s1, const char* s2);" - - Thanks to Valik Solrzano Barboza for this. - - * ace: Added "ace.idl", which is a config file for Borland C++ - 5.x. Thanks to Valik Solrzano Barboza for - this. - - * include/makeinclude/platform_linux_kcc.GNU (SOFLAGS): Improved - this file a bit to work better with NULL pointers. Thanks to - Ben Eng for reporting this. - - * examples/System_V_IPC/SV_Semaphores/Semaphores_1.cpp (main): - Changed allocator to alloc to avoid conflicts with STL. Thanks - to Ben Eng for reporting this. - - * ace/config-linux-kcc.h: Added some fixes for the KCC compiler. - Thanks to Ben Eng for reporting this. - - * ace/IOStream: Added fixes for the standard C++ library. Thanks - to Ben Eng for reporting this. - -Sat Nov 15 17:31:58 1997 Douglas C. Schmidt - - * Ran "make depend" on all of ACE. - -Sat Nov 15 15:55:52 1997 Steve Huston - - * tests/Priority_Reactor_Test.cpp: Removed the writer->peer().close() - call from client() that I added yesterday. ACE_Svc_Handler::destroy - will end up doing the close - thanks to Irfan for pointing this out. - -Sat Nov 15 01:31:58 1997 Douglas C. Schmidt - - * ACE version 4.3.48, released Sat Nov 15 01:31:58 1997. - -Fri Nov 14 23:36:12 1997 Chris Cleeland - - * ace/{OS,ACE}.{h,i} (strsplit_r): Moved strsplit_r from ACE_OS to - ACE, which is where it should go. - - * ace/ACE.cpp (ldfind): Changed uses of strsplit_r to be scoped - under ACE rather than ACE_OS. - -Fri Nov 14 22:57:04 1997 David L. Levine - - * ace/config-vxworks*.h: added ACE_LACKS_NETDB_REENTRANT_FUNCTIONS. - This is necessary for the gethostby{addr,name}_r support added - yesterday. - -Fri Nov 14 18:42:23 1997 Steve Huston - - * tests/Priority_Reactor_Test.cpp: Fixed client to close its socket - before exiting from the thread/process. - -Fri Nov 14 17:41:40 1997 Douglas C. Schmidt - - * ace/OS.i: Fixed some typos in strsplit_r(). - - * ace/OS.h: Moved the ACE_ALLOCATOR* stuff from Malloc_T.h to - OS.h, which is where it belongs. - - * examples/Reactor/Dgram: Reformatted some of the example - code to make it more readable. - -Fri Nov 14 17:08:00 1997 Chris Cleeland - - * ace/OS.i (strsplit_r): Added fixes so that this properly returns - the last piece. Thanks to Scott Herscher for - submitting this! Also beefed up the comments. - - * ace/OS.h: Added definitions to work around VxWorks' lack of - proper ANSI C/C++ prototypes for the functions found in - . The definitions were taken from Solaris 2.5.1, but - appear to work just fine. For now this is only in effect when - compiling with the Green Hills (ghs) environment, but it should - probably be used for others (such as g++) as well. - -Fri Nov 14 01:10:33 1997 Douglas C. Schmidt - - * ACE version 4.3.47, released Fri Nov 14 01:10:33 1997. - -Fri Nov 14 00:14:21 1997 David L. Levine - - * ace/OS.* (gethostbyaddr_r,gethostbyname_r): added VxWorks - support. - -Thu Nov 13 20:29:18 1997 Douglas C. Schmidt - - * ACE version 4.3.46, released Thu Nov 13 20:29:18 1997. - -Thu Nov 13 19:11:36 1997 Douglas C. Schmidt - - * ace/config-sunos5.4.*: Solaris 2.4 doesn't support the ualarm() - call unless you use the (broken) /usr/ucb/cc compiler. Here's a - patch for $ACE_ROOT/ace/config-sunos5.4-sunc++-4.x.h to fix the - problem. Thanks to Caleb Epstein - for reporting this. - -Thu Nov 13 19:25:50 1997 Carlos O'Ryan - - * include/makeinclude/platform_irix6.x-sgic++.GNU: - Updated comment on when should the user disable the use of - -lpthread - -Thu Nov 13 18:18:16 1997 Steve Huston - - * ace/Containers.h, Containers.cpp, Hash_Map_Manager.cpp, Malloc_T.h: - Removed the conditional code for the macro - ACE_HAS_HPUX_ACC_BROKEN_TEMPLATE_DESTRUCTOR. The workaround for - this compiler bug is to remove "this->" from the object pointer - used in the ACE_DES_FREE_TEMPLATE macro invocation. This compiler - bug is HP case SR5003396259 for future reference. - - * ace/config-hpux-10.x-hpc++.h: Added ACE_HAS_ANSI_CASTS; removed - ACE_HAS_HPUX_ACC_BROKEN_TEMPLATE_DESTRUCTOR (both for aC++ only). - - * ace/README: Removed ACE_HAS_HPUX_ACC_BROKEN_TEMPLATE_DESTRUCTOR, as - it is no longer used. - -Thu Nov 13 16:51:40 1997 - - * ace/OS.h: Added two new macros ACE_FACTORY_DECLARE and - ACE_FACTORY_DEFINE. Changed definitions of - ACE_SVC_FACTORY_DECLARE AND ACE_SVC_FACTORY_DEFINE to use these - two macros. Refer to changes of the ACE_Export related macros - below, you can now declare/define your service factories as, - - ACE_FACTORY_DECLARE (FOOBAR, fac_class); - ACE_FACTORY_DEFINE (FOOBAR, fac_class); - - This will ensure they get define properly and proper decoration - will be added. - -Thu Nov 13 16:52:31 1997 Nanbor Wang - - * ace/Thread_Manager.cpp: Removed all ! defined - (ACE_HAS_FSU_PTHREAD). Thanks to ARTURO MONTES - for reporting this. - - * ace/config-gcc-2.7.2.h: Added ACE_HAS_TEMPLATE_SPECIALIZATION. - Thanks to ARTURO MONTES for reporting - this. - - * ace/config-fsu-pthread.h: added ACE_LACKS_THREAD_PROCESS_SCOPING. - Thanks to ARTURO MONTES for reporting - this. - - * ace/OS.h: Separate definition of proper export flag for - platforms from setting these flags for building/not building - DLL. I keep ACE_Export and ACE_Svc_Export to remain backward - compatibality but now, they are defined using the new "common" - definition. This changes is made in hope that it will simplify - codes generated by TAO_IDL compiler. - - Several new directives are added to these file. These common - directives will be set to proper values (macros) according to - the platform we use. They are: - - ACE_Proper_Export_Flag - ACE_Proper_Import_Flag - ACE_EXPORT_SINGLETON_DECLATATION(T) - ACE_IMPORT_SINGLETON_DECLARATION(T) - ACE_PROPER_SINGLETON_INSTANTIATION(T) - - I use them to define ACE_Export and ACE_Svc_Export. I hope it - is easier to define your own export decoration flag now. Here - is an example. Say you want to define an export flag for your - DLL file : foobar.dll. First, you need to add the following to - a common header file: - - // Here are definition for FOO_BAR library. - #if defined (FOOBAR_HAS_DLL) && (FOOBAR_HAS_DLL == 1) - # if defined (FOOBAR_BUILD_DLL) - # define FOOBAR_Export ACE_Proper_Export_Flag - # define FOOBAR_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) - # define FOOBAR_SINGLETON_INSTANTIATION(T) ACE_PROPER_SINGLETON_INSTANTIATION (T) - # else - # define FOOBAR_Export ACE_Proper_Import_Flag - # define FOOBAR_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) - # define FOOBAR_SINGLETON_INSTANTIATION(T) - # endif /* FOOBAR_BUILD_DLL */ - #else /* ! FOOBAR_HAS_DLL */ - # define FOOBAR_Export - # define FOOBAR_SINGLETON_DECLARATION(T) - # define FOOBAR_SINGLETON_INSTANTIATION(T) - #endif /* FOOBAR_HAS_DLL */ - - Be sure to include "ace/OS.h" before these definitions so that - the macros they use will be properly initialized. After you've - done this, on Win32, define "FOOBAR_HAS_DLL=1" if you want to - build DLL, define it as "FOOBAR_HAS_DLL=0" if you want to build - static library. In your library project file, you must define - the directives FOOBAR_BUILD_DLL and decorate classes/objects you - want to export with FOOBAR_Export so that they can be declared - automatically according whether you are building/linking with - static library or dynamic library. - -Thu Nov 13 05:47:42 1997 David L. Levine - - * ace/Thread_Manager.cpp: added ACE_TSS_Singleton instantiation, for the recent Svc_Handler - change. - - * ace/Object_Manager.h (default_mask): moved out of ACE_MT_SAFE - protection. - - * ace/OS.{h,i},config-vxworks-ghs-1.8.h,README (strlen,strcpy): - protect declarations of wchar versions with - ACE_HAS_WCHAR_TYPEDEFS_CHAR. GreenHills typedefs wchar to char. - - * ace/Singleton.cpp: register ACE_TSS_Singletons for cleanup with - Object_Manager. - - * ace/OS.{i,cpp} (gethostbyaddr): added VxWorks support. - -Thu Nov 13 02:06:58 1997 Chris Cleeland - - * ace/Signal.i: Changed to use new Object Manager member. - - * ace/Object_Manager.cpp: Added a new member to the Object - Manager--default_mask. This is the default signal mask employed - by ACE_Sig_Set. Moving the object into the OM saves cycles b/c we - only construct it once and just re-use every time. - - * ace/Handle_Set.cpp: Added two new macros--ACE_DIV_BY_WORDSIZE and - ACE_MULT_BY_WORDSIZE--which either divide or multiply the argument - by ACE_Handle_Set::WORDSIZE. The manner in which this is - accomplished is governed by the #define - ACE_USE_SHIFT_FOR_EFFICIENCY--when defined, ACE tries to use - shifts to implement multiplication and division rather than actual - multiply and divide operations. Currently this is disabled. - -Wed Nov 12 19:13:05 1997 - - * ace/Svc_Handler: Changed hand written tss singleton to - ACE_TSS_Singleton. Lot of (unnecessary) code disappeared. - Thanks to David Levine for suggesting this. - - * ace/Object_Manager: Removed ACE_SVC_HANDLER_LOCK. - -Wed Nov 12 16:29:15 1997 Sumedh Mungee - - * platform_netbsd.GNU: added /usr/lib/c++rtO.o to SOBUILD to - insure that static objects' ctors are called. - -Wed Nov 12 00:20:38 1997 David L. Levine - - * ace/OS.{i,cpp} (inet_ntoa): use VxWorks' native inet_ntoa. It's - not documented but it works. - - * ace/OS.cpp (gethostbyname): on VxWorks, load static first_addr on - every call, not just the first. - - * include/makeinclude/rules.local.GNU: removed extra "fi" in - install operation. - - * include/makeinclude/platform_sunos5_sunc++.GNU: removed +w from - CFLAGS because it generates too many spurious warnings. - - * ace/TTY_IO.cpp (control): commented out unused local variable - c_line. Thanks to Amos Shapira for - reporting this. - - * ace/OS.{h,i} (hostname): added Chorus support. Thanks to Wei - for the patches. - -Tue Nov 11 23:44:17 1997 Douglas C. Schmidt - - * ACE version 4.3.45, released Tue Nov 11 23:44:17 1997. - -Tue Nov 11 21:26:36 1997 Douglas C. Schmidt - - * platform_sunos5_sunc++.GNU, platform_irix6.x-sgic++.GNU, rules.local.GNU: - Added some minor fixes. - -Tue Nov 11 20:18:27 1997 Douglas C. Schmidt - - * Makefile: Added the tests and netsvcs directory to - RELEASE_LIB_FILES since this is pretty important to determine - whether ACE works. Thanks to Chuck Gehr and Steve Coy for this - suggestion. - - * tests/UNIXclerk.conf: Changed "merengue" to "localhost." - Thanks to Steve Coy for this suggestion. - - * ace/config-lynxos.h (getopt): Missing 't' from const => see - getopt prototype parameter list. Thanks to Manojkumar Acharya - . - -Tue Nov 11 08:09:16 1997 David L. Levine - - * ace/OS.cpp (inet_aton): declare local ip_addr as an ACE_UINT32 - instead of a long. Real programmers have 64-bit longs. - - * ace/INET_Addr.cpp (get_host_name): added ACE_UNUSED_ARG (len); - for VxWorks only. - -Tue Nov 11 13:19:46 1997 Torbjorn Lindgren - - * include/makeinclude/rules.local.GNU: Fixed so that the ACE - makefiles doesn't create circular symlinks (happens if - something fails when building libACE.* with "make -k", or when - doing parallel builds). It's now possible to do parallel - builds of libACE.* without having to clean up a mess afterwards. - - * include/makeinclude/platform_irix6.x-sgic++.GNU: Removed - .so build with links instead (ace/apps/examples/tests and my own - programs all work well with this, and the manual seems to suggest - that it hasn't ever been necessary on this platform) - - * ace/config-irix6.x-sgic++-nothreads.h: Added - ACE_HAS_XPG4_MULTIBYTE_CHAR for SGI IRIX 6.[2-5]. - -Tue Nov 11 04:50:06 1997 Nanbor Wang - - * examples/Reactor/Multicast/server.cpp (handle_timeout): Fixed a - typo. Thanks to Sandro Doro for - reporting this. - -Tue Nov 11 04:20:09 1997 Douglas C. Schmidt - - * ACE version 4.3.44, released Tue Nov 11 04:20:09 1997. - -Tue Nov 11 01:44:39 1997 - - * examples/Naming/test_open.cpp (main): Added a new naming test - that binds to the net_local server and tries to bind entries to - it. - - * netsvcs/lib/Name_Handler.cpp: Added a new class called - Naming_Context. This helper class adds the correct default - constructor to the ACE_Naming_Context class so that we can use - it in ACE_Singleton. - - Previously, each Name_Handler was getting its own - Naming_Context. This is obviously incorrect as the mapping - address in already occupied by the first Name_Handler. - Therefore, the Naming_Context was changed into a Singleton - accessable by all Name_Handlers. - - * ace/WFMO_Reactor.cpp (handle_additions && handle_deletions): - Changed code to make sure that we should not make the upcall - until all the internal data structures have been updated. This - is to protect against upcalls that try to deregister again. - -Tue Nov 11 01:28:50 1997 Douglas C. Schmidt - - * ACE version 4.3.43, released Tue Nov 11 01:28:50 1997. - -Mon Nov 10 21:30:04 1997 Aniruddha Gokhale - - * INET_Addr.cpp: In the ACE_INET_Addr::get_host_name (char - hostname[], size_t len) method, an unnecessary local variable - called "name" was being used and the actual parameter "hostname" - was never getting updated. The local variable is now removed and - we use the actual parameter everywhere. - -Mon Nov 10 20:44:43 1997 James C Hu - - * etc/ACE-guidelines.html: Added a section for ACE Design Rules, - and added a design rule about sentinels. - -Mon Nov 10 18:11:05 1997 Sumedh Mungee - - * ace/Singleton.h (ACE_TSS_Singleton): Changed ACE_TSS to - ACE_TSS_TYPE (TYPE), so that the ACE_TSS_TYPE macro (defined in - OS.h) gets used. (Irfan's suggestion.) - -Mon Nov 10 17:02:40 1997 Douglas C. Schmidt - - * ace/OS.h: Reformatted the #ifdef structure of the - ACE_HAS_XPG4_MULTIBYTE_CHAR to conform to ACE usage. - - * ace/Service_Repository.cpp: The close() method needed a '\n' in - one of the debug messages. Thanks to Steve Coy for reporting - this. - -Mon Nov 10 14:09:24 1997 Steve Huston - - * ace/OS.h, OS.i, README: Added new macro, ACE_HAS_XPG4_MULTIBYTE_CHAR - for platforms which supply wchar.h and wide character functions. - Added the use if it in OS.h, and use the functions in OS.i, - strlen and strcpy with wchar_t arguments. - - * ace/config-hpux-10.x.h, config-aix-4.2.x.h, config-mvs.h, - config-sunos5.5-sunc++-4.x.h: Added ACE_HAS_XPG4_MULTIBYTE_CHAR. - -Mon Nov 10 13:33:02 1997 - - * ace/OS.h (ACE_WRITE_GUARD): Added macros for ACE_WRITE_GUARD and - ACE_READ_GUARD. Thanks to Brian Raven - for suggesting this. - - * tests/Thread_Mutex_Test.cpp: Modified version of Mutex_Test that - exclusively works on a Thread_Mutex. - - * tests/Mutex_Test.cpp: Removed this test. It have been - superseded by Thread_Mutex_Test and Process_Mutex_Test. - - * ace/OS.i (thread_mutex_trylock): Fixed the return value and - errno for this system call such that it is consistent with other - trylock calls. - -Mon Nov 10 10:21:55 1997 David L. Levine - - * ace/INET_Addr.cpp: updated gethostbyname/addr support for - Chorus. Thanks to Wei Chiang for - the patches for this fix. - - * ace/config-chorus.h: disabled ACE_LACKS_SOCKETPAIR. Thanks - to Wei for this fix, also. - - * tests/Thread_Mutex_Test.cpp (test): don't compile this function - if ACE_HAS_THREADS is not defined. - - * tests/IOStream_Test.cpp (main): removed extra % at end of - ACE_ERROR_RETURN message. - - * etc/ace_ld,include/makeinclude/platform_vxworks5.x_g++.GNU: - added ace_ld, a drop-in replacement for ld that supports munching. - We need to munch for VxWorks/g++. - - * ACE-INSTALL.html: updated VxWorks info to mention requirement - for perl with VxWorks/g++. And, LD_LIBRARY_PATH must be set - to find the ACE libraries on the host if using TAO. - -Sun Nov 09 23:29:43 1997 Douglas C. Schmidt - - * ACE version 4.3.42, released Sun Nov 09 23:29:43 1997. - -Sun Nov 09 22:18:30 1997 - - * ace/config-win32-common.h (ACE_HAS_ANSI_CASTS): VC++ compilers - support ANSI style casts. - - * ace/OS.h (ACE_static_cast): Added ANSI style cast macros to ACE. - Thanks to Stephen Coy for suggesting this. - -Sun Nov 9 21:34:16 1997 Douglas C. Schmidt - - * ace/OS: Enhanced ACE_OS so that it *always* defines - implementations for the wchar_t versions of strlen() and - strcpy(), even if the platform doesn't explicitly support - UNICODE. This is necessary since TAO needs these functions. - - * ace/OS.h: Added a typedef for wchar_t to handle the case where - the OS doesn't support UNICODE. - - * ace/ACE.cpp: Added hex character routines from TAO since they - are generally useful. - - * ace/OS.h: Moved the TAO-specific #defines into TAO, where they - belong. Thanks to David Levine and Chris Cleeland for insisting - on this... - -Sun Nov 09 17:55:50 1997 - - * examples/ASX/Event_Server/Event_Server/Peer_Router.cpp (open): - Removed codes that reset a socket's non-blocking flag. This has - been taken care of by ACE_Acceptor::activate_svc_handler now and - resetting this flag twice on NT caused us grief. Thanks to - Georges Ata for reporting - the bug. - - * ace/ACE.i (hex2byte,nibble2hex): Replaced ACE_INLINE to inline - for these two functions. Functions in this file are always - inlined. - - * ace/config-win32-common.h (ACE_LACKS_RLIMIT): Added this flags - so we don't need to treat ACE_WIN32 specially. - - * ace/OS.i (getrlimit,setrlimit): Removed unnecessary conditional - flag ACE_WIN32. - - * ace/Thread_Manager.cpp (wait): Merged the two blocks within this - function so that we can avoid relase/acquire lock - unnecessarily. Thanks to Doug for his careful scrutiny. - -Sun Nov 09 09:27:24 1997 David L. Levine - - * ace/Thread_manager.cpp (wait): removed unused local, - threads_waited_on. - -Sat Nov 08 23:20:50 1997 Douglas C. Schmidt - - * ACE version 4.3.41, released Sat Nov 08 23:20:50 1997. - -Sat Nov 8 15:46:30 1997 Douglas C. Schmidt - - * ace/INET_Addr.cpp: Enhanced the get_host_name() functions so - that if the sin_addr.s_addr == INADDR_ANY we assume that we're a - server, and we return our "hostname". - - * Added a number of minor fixes for UNIXWARE with G++. Thanks to - Michael Rueger for reporting these. - - * ace/Thread_Manager.h: Both Irix5 and VxWorks have problems with - local typedefs with GCC. Thanks to Laura Paterno - for reporting this. - - * ace/Timer_Queue_Adapters.cpp: Changed some errant uses of lock_ - to mutex_. Thanks to David Levine for reporting this. - - * ace/ACE.cpp: set_handle_limit() was buggy because it never - increased the handle limit. With this change we do not need - special code in ACE_Select_Reactor with ACE_LACKS_RLIMIT because - this is managed in ACE::set_handle_limit. Thanks to Arturo for - this fix. - - * ace/Select_Reactor.cpp (open): We no longer need to - conditionally compile for ACE::set_handle_limit(). Thanks to - Arturo for this fix. - -Fri Nov 7 18:53:13 1997 Sumedh Mungee - - * ace/config-netbsd.h: Added file for NetBSD 1.2G. - - * tests/SOCK_Connector_Test.cpp (fail_no_listener_nonblocking): - Added ECONNREFUSED as a "valid failure", alongwith EWOULDBLOCK. - - * ace/OS.i (msync): msync on NetBSD takes only two parameters as - opposed to the usual three. (It doesnt have the "flags" - parameter.) The ACE_HAS_BROKEN_NETBSD_MSYNC flag works around - that. - -Fri Nov 7 16:04:35 1997 Douglas C. Schmidt - - * ace/Thread_Manager.cpp: Added a missing '>' for one of the - template specializations. Thanks to Torbjorn Lindgren - for reporting this. - - * ace/OS.cpp: ACE_OS::ACE_OS is defined in OS.cpp, which causes - the compiler to complain about multiple definitions. Other - ACE_CLASS_IS_NAMESPACE doesn't have constructors, which is why - they work. Thanks to Torbjorn Lindgren for - reporting this. - -Fri Nov 07 15:14:51 1997 David L. Levine - - * examples/Threads/tss1.cpp: replaced ACE_SYNCH_1 and _2 with - _DECL and _USE. - - * ace/config-linux{,-common}.h: created config-linux-common.h - and moved alpha-specific defines to it. - - * ace/FILE_Addr.cpp (set): explicitly declare int return type. - - * performance-tests/Misc/preempt.cpp (get_options): DEC CXX didn't - like conversion of -1 to u_int, so changed return type to int and - all ACE_ERROR_RETURNs to return -1. - -Fri Nov 07 10:05:12 1997 Douglas C. Schmidt - - * ACE version 4.3.40, released Fri Nov 07 10:05:12 1997. - -Fri Nov 7 09:58:09 1997 Douglas C. Schmidt - - * ace/Connector.cpp (fini): Added a call to - ACE_Map_Manager::close() in fini() since the destructor may not - be called. Thanks to Eric C. Newton for - reporting this. - - * ace/{FILE,SPIPE}_Addr.cpp (set): Added a return value. Thanks - to Marios Zikos for reporting this. - -Fri Nov 07 02:45:55 1997 Douglas C. Schmidt - - * ACE version 4.3.39, released Fri Nov 07 02:45:55 1997. - -Fri Nov 7 01:06:08 1997 Douglas C. Schmidt - - * ace/Message_Queue: Added a new method called deactivated(), - which returns true if the queue has been deactivated. Thanks to - Wei Chiang for reporting this. - - * ace/{config-chorus.h,OS.cpp}: Added a new macro called - ACE_CHORUS_DEFAULT_MIN_STACK_SIZE. Thanks to Wei Chiang - for reporting this. - - * ace/DEV_Addr.cpp, - ace/FILE_Addr.cpp, - ace/SPIPE_Addr.cpp, - ace/INET_Addr.cpp, - ace/UNIX_Addr.cpp: Fixed the set(const Foo &) method so that - it correctly detects cases where we're passed in a - ACE_Addr::sap_any. This is a total hack... - - * ace/{OS.h,Addr.cpp}: Added a new AF_ANY flag, which is set to -1. - -Thu Nov 6 23:05:14 1997 Douglas C. Schmidt - - * Changed the obtusely named ACE_SYNCH_1 and ACE_SYNCH_2 macros to - ACE_SYNCH_DECL and ACE_SYNCH_USE, respectively. Thanks to Mike - Kamrad for suggesting this. - - * ace/Select_Reactor.cpp, ace/ACE.cpp: Broaded the comparison so - that we only try to use {set|get}rlimit() if ACE_LACKS_RLIMIT is - *false*. Thanks to Arturo Montes for - reporting this. - - * ace/Object_Manager: Added support for - get_singleton_lock(ACE_Mutex *). Thanks to Arturo Montes - for reporting this. - - * ace/Connector.cpp: If connect_n() fails make sure to return -1. - Thanks to Stephen Coy for pointing out the - problem. - - * ace/config-sco-5.0.0.h: Removed the ACE_LACKS_RLIMIT flag. - Thanks to Arturo Montes for reporting - this. - - * tests: Changed all uses of "localhost" to - ACE_DEFAULT_SERVER_HOST. This solves some problems with MVS. - Thanks to Chuck Gehr for reporting - this. - - * examples/Timer_Queue: Changed COMMAND to CMD so it won't - conflict with the HP/YUX compiler. Thanks to Sandro Doro - for reporting this. - -Thu Nov 06 22:13:01 1997 - - * examples/Connection/blocking/SPIPE-connector.cpp (init): Fixed - odd looking typecast. - - * ace: Changed the comparison &local_sap == &ACE_Addr::sap_any to - local_sap == ACE_Addr::sap_any. Thanks to Steve Coy - for pointing out that the default - parameter const ACE_Addr &local_sap = ACE_Addr::sap_any will - cause a copy of sap_any to be made and passed to the method, - invalidating the memory address comparison. - - The following files were effected: - - Asynch_Acceptor.cpp - SOCK_Acceptor.cpp - SOCK_CODgram.cpp - SOCK_Dgram.cpp - TLI_Acceptor.cpp - TLI_Connector.cpp - - * ace/Addr.cpp: Made sure that the type and size of - ACE_Addr::sap_any does not match the type and size of any other - Addr type. This is necessary for local_addr==ACE_Addr::sap_any - to return 0 when local_addr is anything other than - ACE_Addr::sap_any. - - * ace/Synch_T.h: Fixed all the ACE_SYNCH_* defines. Thanks to - Matthias Kerkhoff for pointing the - problems. - -Thu Nov 06 18:30:42 1997 Steve Huston - - * ace/Addr.(h i), DEV_Addr.(h i), FILE_Addr.(h i), INET_Addr.(h - cpp), SPIPE_Addr.(h i), UNIX_Addr.(h i): Changed the operators - == and != to be non-virtual, and to accept the 'sap' argument as - its own type (not ACE_Addr for all of them). The - implementations of the operators compare type-specific data - without having to check the inherited type member. Thanks to - Steve Coy and Irfan and Nanbor for a huge - amount of work on these changes. *** NOTE - there is still some - SOCK_Connector problems related to these changes on HP-UX. The - hunt continues. - - * ace/Connector.cpp (connect_n): return -1 if any of the connect - attempts fail. - - * tests/Reactor_Performance_Test.cpp: Don't crash if any of the - client's connect attempts fail. - - * ace/Reactor.h: Added #include "ace/Handle_Set.h" - AIX needs the - class definition when generating templates in programs. - - * tests/Map_Manager_Test.cpp: Don't even try if the compiler doesn't - have template specialization working correctly. - - * tests/Priority_Reactor_Test.h: Added #include "ace/SOCK_Stream.h" - so AIX could generate template code correctly. - - * tests/Reactor_Performance_Test.cpp: Moved class definitions out to - Reactor_Performance_Test.h (new file) to allow AIX to generate - templates. - - * tests/SOCK_Connector_Test.cpp: Added a couple more checks to make - sure the local host is not the test target, and changed from using - port 4242 to 42000 (there is actually a program on AIX which listens - at port 4242). - - * tests/Thread_Manager_Test.cpp: Moved a class definition out to - Thread_Manager_Test.h (new file) to allow AIX to use it in template - generation. - - * tests/Timer_Queue_Test.cpp: Limit the number of iterations to 2000. - -Thu Nov 6 16:51:36 1997 Sumedh Mungee - - * tests/SOCK_Connector_Test.cpp (find_another_host): Added - ACE_NETBSD to the #if define around gethostent. - -Thu Nov 06 00:08:01 1997 Douglas C. Schmidt - - * ACE version 4.3.38, released Thu Nov 06 00:08:01 1997. - -Wed Nov 5 21:32:36 1997 Douglas C. Schmidt - - * ace/Service_Repository.cpp (close): Looking in the - Service_Repository while shutting it down does really bad - things. Some careful changes to the loop in - Service_Repository::close() fixed this. Thanks to Eric - C. Newton for reporting this. - - * Added new support for SCO UNIX with no threads. Thanks to - Arturo Montes for reporting this. - -Wed Nov 05 20:31:36 1997 - - * ace/Connector.cpp (close): Added an explicit close() method for - the Strategy_Connector. This closes down all Strategy_Connector - specific things and then calls close() on the base class. Also - modified the destructor to call this routine. - -Wed Nov 5 17:09:05 1997 Nanbor Wang - - * ace/OS.cpp (cleanup_tss): Rearranged how TSS'es get cleanup on - Win32. This was causing a tiny memory leak on NT. - -Wed Nov 5 15:03:31 1997 Nanbor Wang - - * ace/Thread_Manager.{h,cpp}: Changed the data type of - terminated_thr_queue_ back to - ACE_Unbounded_Queue. - -Wed Nov 05 14:16:27 1997 Steve Huston - - * ace/OS.i (mutex_trylock): Fixed code for ACE_HAS_DCE_DRAFT4_THREADS - (HP-UX) to process the returned status correctly. Thanks to - Robert Head for reporting this. - -Wed Nov 05 13:01:49 1997 David L. Levine - - * ace/ACE.cpp (daemonize): added ACE_UNUSED_ARG (close_all_handles) - if ACE_LACKS_FORK. - -Wed Nov 05 01:06:53 1997 Douglas C. Schmidt - - * ACE version 4.3.37, released Wed Nov 05 01:06:53 1997. - -Tue Nov 04 23:11:41 1997 - - * ace/Thread_Manager.h: Added an ACE_Unbounded_Queue to - collect threads that need to be removed. We can no longer - remove thread descriptors directly from because that - would clobber the integrity of the double-linked list. Changed - the data type of from - ACE_Unbounded_Queue to - ACE_Unbounded_Queue to reduce the codes - generated. - - * ace/Thread_Manager.cpp: Reordered several thread operations so they - won't remove thread descriptor directly while traversing the - . Removed #ifdef from template - instantiation section because now VxWorks needs it too. - - * ace/Container.{h,cpp}: Added more check on validities of passed in - node to ACE_Double_Linked_List::remove_element. Also changed - the function to reset a node's and to prevent - double removal of a node, which messes up the list structure. - - * ace/ace_{dll,lib}.dsp: Excluded Acceptor.cpp from make - explicitly. Moving this file to "template file folder" was not - enough. - -Tue Nov 4 18:03:51 1997 Douglas C. Schmidt - - * ace/config-sco*.h: Added #define ACE_DEFAULT_CLOSE_ALL_FILES 0 - to the SCO Unix config files. - - * ace/ACE.cpp: Added a new macro called - ACE_DEFAULT_CLOSE_ALL_FILES to workaround a bug with SCO Unix. - Thanks to Arturo Montes for reporting - this. - - * The ACE developer's drinking song: - - 100 little bugs in the code, - 100 bugs in the code, - fix one bug, compile it again, - 101 little bugs in the code. - 101 little bugs in the code..... - - Thanks to Steve Huston for appreciating the humor in this ;-). - - * ace/Containers.cpp (insert_head): Added some minor stylistic - fixes. - - * apps/Gateway/Gateway/Event_Channel.cpp (initiate_acceptor): - Changed - - if (ACE_Reactor::instance ()->register_handler - (&this->acceptor_, ACE_Event_Handler::ACCEPT_MASK) == -1) - - to: - - if (this->acceptor_.open(this->options ().acceptor_port_, - ACE_Reactor::instance (), this->options ().blocking_semantics_) == -1) - - Thanks to Ganesh Pai for reporting this. - - * apps/Gateway/Gateway/Gateway.cpp (parse_args): Changed - - ACE_Get_Opt get_opt (argc, argv, "abC:cdP:pq:t:vw:", 0); - - to: - - ACE_Get_Opt get_opt (argc, argv, "abC:cdP:p:q:t:vw:", 0); - - Thanks to Ganesh Pai for reporting this. - -Tue Nov 4 18:13:52 1997 Sergio Flores - - * examples/Timer_Queue/Async_Timer_Queue_Test.cpp (cancel): - Initialized act pointer variable to 0, which was causing - core dump in linux. In general, all pointers should be - initialized. This should have been warned by the compiler. - Thanks to Sandro Doro for - pointing this out. - -Tue Nov 4 11:14:35 1997 Nanbor Wang - - * ace/Containers.cpp: Fixed some stylistic ambiguities. - -Tue Nov 04 10:12:21 1997 David L. Levine - - * include/makeinclude/platform_hpux.GNU: added +a1 to CFLAGS - to select ANSI C, instead of the default K+R C. This is - required with the current ace/Object_Manager.cpp, because - it initialized autos using aggregates (via the - ACE_STATIC_SVC_DEFINE macro). Thanks to Neil B. Cohen - for helping to sort this out. - - * examples/Timer_Queue/Thread_Timer_Queue_Test.cpp: changed - another lock () to mutex (). - - * tests/run_tests.vxworks: added MT_SOCK_Test. - -Tue Nov 04 04:13:23 1997 Douglas C. Schmidt - - * ACE version 4.3.36, released Tue Nov 04 04:13:23 1997. - -Tue Nov 04 03:50:57 1997 - - * ace/Addr.i (operator == && operator !=): Comparison of - sap.addr_type_ should be with this->addr_type_ and not with 0. - -Mon Nov 3 23:18:33 1997 Sergio Flores - - * ace/Synch_T.cpp (dump): change the field lock_ to mutex_. - -Mon Nov 3 22:37:58 1997 Nanbor Wang - - * ace/Timer_Wheel_T.cpp: - * ace/Timer_List_T.cpp: - * ace/Timer_Hash_T.cpp: Changed the use of lock_ to mutex_. - - * ace/OS.cpp (cleanup_tss): Added TSS cleanup codes for Win32 when - non-main threads are exiting. Without them, Thread_Manager won't - cleanup its thread table correctly. - - * ace/SV_Semaphore_Complex.cpp (close): Changed to return 0 - only when this->key_ == -1 instead of <= -1. This was causing - semaphore leaks on Solaris. - - * ace/UNIX_Addr.i (operator ==): - * ace/SPIPE_Addr.i (operator ==): - * ace/FILE_Addr.i (operator ==): - * ace/DEV_Addr.i (operator ==): - * ace/INET_Addr.cpp (operator ==): Added checking for the same - Addr types for addresses under comparison. Thanks to Stephen - Coy for pointing out the problem. - -Mon Nov 03 18:32:42 1997 Carlos O'Ryan - - * ace/Proactor.cpp: - * ace/Timer_Queue_T.h: - * ace/Timer_Queue_T.cpp: - * ace/Timer_Heap_T.cpp: - * ace/Synch_T.h: - * ace/Synch_T.cpp: - * ace/Atomic_Op.i: - Changed the method name from lock() to mutex(), otherwise the - lame HP/C++ compiler gets completely confused. Also changed the - field from lock_ to mutex_ - -Mon Nov 3 17:15:17 1997 Steve Huston - - * ace/OS.h: Removed "class ace_dewarn_gplusplus;" from the - ACE_CLASS_IS_NAMESPACE macro. Produces warnings on AIX and - shouldn't be needed. - -Mon Nov 3 15:49:18 1997 Chris Cleeland - - * ace/Connector.cpp (connect): "Fixed" so that the service handler - pointer passed in by the caller doesn't change until the connect - completes without errors. - -Mon Nov 03 08:15:21 1997 David L. Levine - - * ace/Managed_Object.[hi] (get_preallocated_{object,array}): - inlined function definitions into the class header so that - it compiles on AIX 4.1 w/ xlC 3.01. Thanks to Bob Lyng - for reporting this problem, - at to Steve H. for testing the fix. - - * include/makeinclude/{platform_linux*.GNU,wrapper_macros.GNU}, - netsvcs/lib/Makefile: suppress -g when compiling ace/Timer_Hash.cpp - and netsvcs/lib/Server_Logging_Handler.cpp on Linux only. - (It really only needs to be suppressed on Linux/Alpha.) - - * apps/Gateway/Gateway: protect instantiation of - ACE_Svc_Handler - with ACE_HAS_THREADS. - - * ace/{Naming_Context.cpp,Service_Config.cpp,Object_Manager.cpp}: - moved ACE_Naming_Service and ACE_Service_Manager static service - objects to ACE_Object_Manager. - - With this change, the ACE library no longer has any static - objects that require destruction. - - * ace/Object_Manager.h: added documenation of - ACE_HAS_NONSTATIC_OBJECT_MANAGER config #define. - - * performance-tests/Misc/preempt.cpp: cleaned up cleanup so that - it compiles cleanly. - -Sun Nov 02 18:09:14 1997 Douglas C. Schmidt - - * ACE version 4.3.35, released Sun Nov 02 18:09:14 1997. - -Sun Nov 2 15:31:45 1997 Douglas C. Schmidt - - * ace/Select_Reactor.i (cancel_timer): Make sure that we don't try - to call cancel() through a NULL this->timer_queue_. Thanks to - Stephen Coy for reporting this. - - * ace/ACE.cpp (set_handle_limit): Fixed a subtle bug that occurs - if the OS doesn't like non-initialized rlimit structs. Thanks - to Stephen Coy for reporting this. - - * examples/System_V_IPC/SV_Semaphores/Semaphores_2.cpp (main): - Renamed allocator to my_alloc to work around wonderful STL and - GCC problems... Thanks to Ben Eng for - reporting this. - - * examples/System_V_IPC/SV_Semaphores/Semaphores_1.cpp: Removed - unused constant SHMSZ. Thanks to Ben Eng for - reporting this. - - * examples/Reactor/Misc/test_time_value.cpp (operator<<): Removed - the "dec" stream manipulator since it isn't portable. Thanks to - Ben Eng for reporting this. - - * performance-tests/Misc/preempt.cpp (main): Cleaned up this test - so it compiles on non-threaded platforms. Thanks to Ben Eng - for reporting this. - - * examples/Timer_Queue/main_*.cpp (main): std::auto_ptr does not - have an operator= that accepts a raw pointer. Therefore, we - must assign raw pointers to an auto_ptr via the constructor. - Thanks to Ben Eng for reporting this. - - * apps/Gateway/Gateway/Proxy_Handler.cpp: Make sure we distinguish - between ACE_NULL_SYNCH and ACE_MT_SYNCH since these will be - different on all platforms, whereas ACE_SYNCH will be the same - as ACE_NULL_SYNCH on platforms without threads. Thanks to Ben - Eng for reporting this. - - * ace: Removed lots of uses of NULL and replaced them with 0. - This works around bugs with lame C++ compilers that treat NULL - as (void *). Thanks to Ben Eng for reporting - this. - - * ace/Thread.i (spawn): Replaced "stack" with "thr_stack" to work - around bugs with lame C++ compilers and STL. Thanks to Evgeny - Beskrovny for reporting this. - -Sat Nov 1 11:55:05 1997 Douglas C. Schmidt - - * ace/config-irix5.3-g++.h, - ace/config-irix5.3-sgic++.h: Removed the ACE_HAS_SYS_SIGLIST - macro since it doesn't seem to be working. Thanks to Laura - Paterno for reporting this. - - * include/makeinclude/platform_chorus.GNU: Tidied up - platform_chorus.GNU a bit. Thanks to Wei Chiang - for this. - -Fri Oct 31 14:35:37 1997 David L. Levine - - * ace/OS.cpp (thr_create): on Chorus, double the stack size to - avoid bad problems. Thanks to Wei Chang - for diagnosting this. - - * ace/Hash_Map_Manager.cpp (unbind_i): set the int_id - reference argument instead of ignoring it. Thanks to - Wei Chang for providing the patch. - - * ace/OS.h,README: wrapped #include of dlfcn.h with - ACE_HAS_DLFCN_H_BROKEN_EXTERN_C to support RedHat 4.2 - Linux 2.0.30/Alpha. - - * ace/OS.i,README: added ACE_HAS_GETRUSAGE_PROTO support, for - platforms that have a getrusage () prototype that is - different from the one in OS.i. - - * ace/config-linux.h: added added some #defines to enable - builds on RedHat 4.2/Linux 2.0.30/Alpha. - - * include/makeinclude/platform-linux.GNU: added -pipe and - bumped optimization level up to -O3. - - * ace/Thread_Manager.cpp (wait_task): no-op if thr_list_ - size is 0. wait_task () can be called under that condition - (after Thread_Manager::wait () has returned) from an - ACE_Stream destructor, through ACE_Module::close () and - ACE_Task_Base.wait (). Without this change, wait_task () - allocated a copy_table array of size 0. Sun C++ leaked - that array, according to Purify. - - * ace/Service_Config.*,Object_Manager.cpp: moved static - ACE_Service_Config::signal_handler_ to Object_Manager. - - * include/makeinclude/rules.local.GNU (show_statics,show_uninit): - added $(TOOLENV) to allow specification of full path to nm. - Thanks to Wei Chiang for this suggestion. - - * include/makeinclude/platform_chorus.GNU: added trailing "/" - to TOOLENV definition, so that it can be empty when not used. - - * ACE-INSTALL.html,include/makeinclude/wrapper_macros.GNU: - added documentation for ACE show_statics and show_uninit targets. - These are only supported with g++. - -Fri Oct 31 00:53:52 1997 - - * The following five changes were suggested by Stephen Coy - . Thanks Stephen. - - * ace/OS.h (ACE_CLASS_IS_NAMESPACE): Changed friend - ace_dewarn_gplusplus to friend class ace_dewarn_gplusplus. - - * ace/Malloc_T.h: Move the #include files to just after the - declaration of the macros, otherwise Containers.cpp will be - #included before the definition of the various allocator macros - (such as ACE_ALLOCATOR_RETURN) have been seen (when - ACE_TEMPLATES_REQUIRE_SOURCE is defined). - - * ace/Hash_Map_Manager.cpp (close_i): Changed &table[i] to - &table_[i]. - - * ace/Containers.h: The ACE_Node destructor needs to be publicly - accessible in order to support the - ACE_HAS_HPUX_ACC_BROKEN_TEMPLATE_DESTRUCTOR fix. Unfortunately, - making the template function - ACE_Destructor_Template_For_HPUX_aCC_Only a friend does not seem - to work (although it should). - - * ace/ACE.cpp (ldfind): Changed path_entry from char* to - const char*. - - * tests/Priority_Reactor_Test.cpp (main): Fixed auto_ptr usage. - Thanks to Jack Erickson (jack@pinion.com) for pointing this out. - - * ace/OS.h (ACE_CLASS_IS_NAMESPACE): Changed the macro to not - include the destructor. This causes undefined destructor - problems on Win32. Also added ACE_UNIMPLEMENTED_FUNC macros - around the remain functions. - -Thu Oct 30 21:22:47 1997 David L. Levine - - * ace/Makefile: added auto Svc_Conf_[ly].cpp patches. - - * etc/Svc_Conf_[ly].cpp.diff,README: the ace/Svc_Conf_[ly].cpp - patches, and instructions for updating them. - -Thu Oct 30 19:54:50 1997 Douglas C. Schmidt - - * ACE version 4.3.34, released Thu Oct 30 19:54:50 1997. - -Thu Oct 30 17:49:56 1997 Douglas C. Schmidt - - * tests/Priority_Task_Test.cpp (main): Moved "int status" out of - the #if defined (ACE_HAS_THREADS) so that it will compile when - the platform *doesn't* have threads. - - * ace/Synch_T.i (ACE_TSS): Added a missing ':' that was causing - problems on platforms that lack threads. Thanks to Laura - Paterno for helping to track this - down. - - * ace/Signal.cpp (register_handler): Make sure not to use - SA_SIGINFO if we're running on LynxOS. At some point, we'll - want to generalize this, once enough OS platforms support POSIX - real-time signals. Thanks to Kirill.Rybaltchenko - for reporting this. - - * include/makeinclude/platform_chorus.GNU (CXX): Replaced - DCFLAGS += -g with DCFLAGS += -gstabs+. Thanks to - Wei Chiang for this. - - * ace/OS.cpp: It's not valid to set the NULL_key to anything other - than implicit initialization. In particular, if we set it to -1 - it breaks on pthreads systems... Thanks to Check Gehr for - reporting this. - - * ace/config-irix5.3*++.h: Added ACE_NEEDS_SYSTIME_H. Thanks to - Laura Paterno for reporting the - problem. - - * ace/OS.h: Moved the unistd.h files back down to where - they originally were defined since this was unnecessary. - - * include/makeinclude/platform_chorus.GNU (CXX): Replaced - DCFLAGS += -g with DCFLAGS += -gstabs+. Thanks to - Wei Chiang for this. - -Thu Oct 30 17:41:19 1997 James C Hu - - * ace/OS.h: Stray semi-colon removed from ACE_CLASS_IS_NAMESPACE - macro. - -Thu Oct 30 17:04:52 1997 - - * ace/OS.h (ACE_CLASS_IS_NAMESPACE): Changed the macro to not - include the destructor. This causes undefined destructor - problems on Win32. Also added ACE_UNIMPLEMENTED_FUNC macros - around the remain functions. - -Thu Oct 30 10:50:21 1997 Chris Cleeland - - * ace/OS.h: Added new macro--ACE_CLASS_IS_NAMESPACE ()--to - designate that a class is being used as a pseudo-namespace. It - declares private CTOR, Copy CTOR, and DTOR, as well as a friend - declaration in order to de-warn on g++. Typical usage would be - something like: - - class FooBarNamespace - { - ACE_CLASS_IS_NAMESPACE (FooBarNamespace); - - public: - static ... - }; - - The ACE_OS class has been updated to use this. - - * ace/ACE.h: Updated class ACE to use the new - ACE_CLASS_IS_NAMESPACE (). - - * ace/OS.i (getopt): Changed ACE_LACKS_SOME_POSIX_PROTOTYPES back - to ACE_LACKS_POSIX_PROTOTYPES so that a clean build on Linux is - achievable now. - (msgsnd): Corrected errant spelling from - ACE_LACKS_POSIX_SOME_PROTOTYPES to - ACE_LACKS_SOME_POSIX_PROTOTYPES. - -Thu Oct 30 06:14:58 1997 David L. Levine - - * Makefile,ACE-INSTALL: removed ACE-INSTALL from CVS control. - It will only be created when a release is made in - /project/adaptive/ACE_wrappers, and not put under CVS control. - - * ace/Manager_Object.h: added ACE_INLINE specifier to - get_preallocated_object/array declarations. Thanks to - Torbjorn Lindgren for reporting this. - - * ace/Synch.cpp: removed duplicate - ACE_Write_Guard instantiation. Thanks to - Torbjorn Lindgren for reporting this. - - * tests/Conn_Test.cpp: fixed template instantiation pragmas. - Thanks to Torbjorn Lindgren , again. - - * tests/SPIPE_Test.cpp: replaced ACE_UNUSED_ARG of client and server - with conditional compilation of those functions. Thanks to - Torbjorn Lindgren for snagging this. - - * ace/OS.{h,cpp},Object_Manager.cpp (tss_open,tss_close): removed - tss_open () dynamic allocation option because it wasn't used. - Removed tss_close() because it was a no-op without tss_open () - dynamic allocation. - - * ace/OS.cpp (tss_open): On VxWorks, don't check for 0 tss_base (). - It's not always 0 on program startup, especially if a program - has been previously run by the shell directly, without spawning - a new task to run it. - - * ace/OS.*: added ACE_TSS_EMULATION support for non-scalar - ACE_thread_key_t. Thanks to Chuck Gehr - for motivating this. - - * ace/config-mvs.h: added ACE_HAS_NONSCALAR_THREAD_KEY_T. It - is only used with ACE_HAS_TSS_EMULATION, which currently is - not supported on MVS. - - * ace/OS.cpp (ACE_Thread_Adapter::invoke): cleaned up this function. - -Thu Oct 30 03:25:13 1997 Nanbor Wang - - * ace/Hash_Map_Manager.cpp (close_i): Can't use ACE_DES* - template. Have I been here before? - -Thu Oct 30 03:03:41 1997 Nanbor Wang - - * ace/Hash_Map_Manager.cpp (close_i): Changed to use ACE_DES* macros. - - * ace/OS.h: Moved ACE_Allocator related macros to Malloc_T.h - - * ace/Malloc_T.h: Moved ACE_Allocator related macros from OS.h. - Added two macros ACE_DES_NOFREE and ACE_DES_NOFREE_TEMPLATE to - call objects' destructors explicitly. This is required to - take care of some "broken" compilers. Thanks to Stephen Coy - for providing the fix for HP-UX aCC. - - * ace/README: - * ace/config-hpux-10.x-hpc++.h: Added flag - ACE_HAS_HPUX_ACC_BROKEN_TEMPLATE_DESTRUCTOR. - -Thu Oct 30 02:56:25 1997 Douglas C. Schmidt - - * ACE version 4.3.33, released Thu Oct 30 02:56:25 1997. - -Thu Oct 30 01:03:21 1997 Douglas C. Schmidt - - * ace/LOCK_SOCK_Acceptor.cpp: Added a #include of "ace/Synch.h" so - that the Conn_Test.cpp will compile on HP/UX. Thanks to Stephen - Coy for reporting this. - -Wed Oct 29 22:55:15 1997 Nanbor Wang - - * ace/config-vxworks5.x-g++.h: - * ace/config-unixware-2.1.2-g++.h: - * ace/config-unixware-2.01-g++.h: - * ace/config-sunos5.5-g++.h: - * ace/config-sunos5.4-g++.h: - * ace/config-sunos4-g++.h: - * ace/config-osf1-4.0.h: - * ace/config-osf1-4.0-g++.h: - * ace/config-linux.h: - * ace/config-linux-pthread.h: - * ace/config-linux-lxpthreads.h: - * ace/config-irix6.x-g++.h: - * ace/config-irix5.3-g++.h: - * ace/config-hpux-10.x-g++.h: - * ace/config-gcc-2.7.2.h: - * ace/config-freebsd.h: - * ace/config-freebsd-pthread.h: - * ace/config-chorus.h: - * ace/config-aix-4.1.x.h: - * ace/README: Removed ACE_HAS_BROKEN_EXPLICIT_TEMPLATE_DESTRUCTOR. - It is no longer in use. - -Wed Oct 29 21:12:55 1997 Douglas C. Schmidt - - * ace/README: Added a new macro called ACE_LACKS_SOCKET_BUFSIZ, - which is enabled on VxWorks. - - * ace/OS.h: Added a new macro called - ACE_DEFAULT_MAX_SOCKET_BUFSIZ, which is set to 65536. - - * ace/OS: Changed the tolower() method to to_lower() so that it - won't conflict if there's a macro with the same name. - - * ace/OS.h: #include before ACE_Time_Value as long as - ACE_LACKS_UNISTD_H is false. Added this flag to the VxWorks and - Win32 config.h files. - - * ace/OS.h: Added a special #define for IRIX5, which seems to put - timeval in a strange file... Also, moved this #include to - *before* ACE_Time_Value. Thanks to Carlos O'Ryan for suggesting - this and to Laura Paterno for - reporting the problem in the first place. - - * ace: Changes all uses of the overly long - ACE_LACKS_POSIX_PROTOTYPES_FOR_SOME_FUNCS to - ACE_LACKS_SOME_POSIX_PROTOTYPES. However, I'm not really sure - how this relates to the ACE_LACKS_POSIX_PROTOTYPES macro. I - suspect we probably only need one of these... - - * ace/OS.h: Added a new ACE_HAS_STDARG_THR_DEST to handle - weirdness with LynxOS. Thanks to Kirill.Rybaltchenko - for reporting this. - - * ace: OS.h,config-lynxos.h: Added a new ACE_LACKS_GETOPT_PROTO - for LynxOS. Thanks to Kirill.Rybaltchenko - for reporting this. - - * ace/config-lynxos.h: Replaced - ACE_LACKS_POSIX_PROTO_FOR_SOME_FUNCS with - ACE_LACKS_POSIX_PROTOTYPES_FOR_SOME_FUNCTIONS. Thanks to - Kirill.Rybaltchenko for reporting - this. - -Wed Oct 29 22:17:03 1997 Nanbor Wang - - * ace/config-hpux-10.x-hpc++.h (ACE_HAS_TEMPLATE_SPECIALIZATION): - Moved to C++ section. Restored ACE_TEMPLATE_REQUIRE_SOURCE in - C++ section. Thanks to Stephen Coy for - providing the fix (patiently.) - -Wed Oct 29 20:30:55 1997 James C Hu - - * ace/OS.i (strlen): Moved it earlier so that it would be declared - inline before use. - - * ace/OS.i (strcasecmp): Removed spurious semi-colons (how did - they get in there?). - -Wed Oct 29 18:51:12 1997 Darrell Brunsch - - * ace/OS.{h,i}: Added strcasecmp functionality for NT - -Wed Oct 29 15:56:01 1997 David L. Levine - - * ace/OS.cpp: replaced ACE_TSS_REF_TABLE with a reference count to - remove dynamic allocation from ACE_TSS_Info. Also, enabled call - of ACE_Task close hook before calling TSS destructors. - - * ace/OS.cpp: changed a few TSS 0 keys to ACE_OS::NULL_key. - - * ace/Thread_Manager.cpp (ace_thread_manager_adapter): with - TSS_EMULATION, moved the call of tss_close () from here to - ACE_Thread_Adapter::invoke () so that it can be called after - the task's close hook, if any. - - * ace/{OS.h,Log_Msg.h,Object_Manager.cpp} (cleanup_tss): added - an argument to indicate whether the main thread is calling or not. - - * ace/OS.i (ACE_TSS_Emulation::next_key): start key values at - 0 instead of 1, because it's easier to deal with arrays of - keys then. That also corresponds with the starting key value - on Windows NT. - - * ace/IOStream.h: DEC_CXX #includes now depend on compiler version. - Thanks to James Johnson for providing the fix. - -Wed Oct 29 10:32:16 1997 David L. Levine - - * ace/config-lynxos.h: fixed ACE_LACKS_POSIX_PROTOTYPES_FOR_SOME_FUNCS - and added getopt () declaration. - - * include/makeinclude/platform_lynxos.GNU: updated LIBS. - - Thanks to Kirill Rybaltchenko for - the above fixes. - - * etc/purify.solaris2: added another _thrp_exit UMR. - - * include/makeinclude/wrapper_macros.GNU: added login (LOGNAME) - and compiler (CXX) to Purify/Quantify cache names. - -Wed Oct 29 08:40:38 1997 Douglas C. Schmidt - - * ACE version 4.3.32, released Wed Oct 29 08:40:38 1997. - -Wed Oct 29 07:39:38 1997 Douglas C. Schmidt - - * ace/Synch.cpp: Added an explicit template instantiations for - ACE_Guard. - - * ace/LOCK_SOCK_Acceptor.h: Removed the typedef of - ACE_SOCK_Acceptor with a full expansion of the name to fix a G++ - bug. - - * tests/Conn_Test.cpp: Fixed a template instantiation problem. - - * ACE-INSTALL.html: Pointed out that ACE is ported to LynxOS and - Chorus. - - * ACE-INSTALL.html: Added information about cloning that explains - how you must to build a config.h and platform_macros.GNU in - cloned directory. Thanks to Arturo for this. - - * bin/Makefile: Added - $(ACE_ROOT)/include/makeinclude/platform_macros.GNU to Makefile - so we can compile clone on any ACE platform. Thanks to Arturo - for this. - - * include/makefiles: Added new platform file for SCO UNIX with - nothreads. Thanks to Arturo for this. - - * ace: Added new config files for SCO UNIX with nothreads. - Thanks to Arturo for this. - - * apps/JAWS/server/HTTP_Server.cpp: Fixed the typedef for - ACE_LOCK_SOCK_Acceptor. Thanks to Hans Rohnert for reporting - this. - - * tests/Conn_Test.cpp: Changed template instantiations from - SOCK_ACCEPTOR to LOCK_SOCK_ACCEPTOR. Thanks to Han Rohnert for - reporting this. - -Wed Oct 29 02:10:37 1997 Douglas C. Schmidt - - * ACE version 4.3.31, released Wed Oct 29 02:10:37 1997. - -Wed Oct 29 01:25:54 1997 Douglas C. Schmidt - - * tests/Conn_Test.cpp: Modified Conn_Test to fully integrate - Irfan's new LOCK_SOCK_Acceptor. This new implementation is - truly the "mother of all Conn_Tests" ;-). - - * ace/LOCK_SOCK_Acceptor.cpp (lock): Added a lock() accessor - method to the new ACE_LOCK_SOCK_Acceptor so that we can remove - the lock (somehow). - -Wed Oct 29 00:29:52 1997 - - * apps/JAWS/server: Fixed Win32 related compilation errors. - - * ace/OS.h (SIGUSR1 and SIGUSR2): Added new defines for these two - signals. - - * ace/LOCK_SOCK_Acceptor: New class added to ACE (it was - originally a class in JAWS). It specialize ACE_SOCK_Acceptor to - lock around . This class is particular useful if you - want to have multiple threads accepting on the same endpoint and - the system does not support have thread safe accept. Thanks to - James Hu who initially wrote this class for JAWS. Thanks also - to Johannes Gutleber who decided to - use this in the Conn_Test. - - * tests/Conn_Test.cpp: Updated to use the new LOCK_SOCK_Acceptor. - - * apps/JAWS/server/HTTP_Server.h: Updated to use the new - LOCK_SOCK_Acceptor. - - * apps/JAWS/server/HTTP_Server_T.*: These files are no longer - necessary since this class has been absorbed into ACE. - - * tests: Fixed auto_ptr use in: - - Notify_Performance_Test.cpp - Priority_Reactor_Test.cpp - Reactor_Performance_Test.cpp - - Thanks to Jack Erickson (jack@pinion.com) for pointing this out. - -Tue Oct 28 11:26:39 1997 Nanbor Wang - - * ace/ace_{dll,lib}.dsp: Moved Acceptor.cpp from Source file - folders to Template file folders. Thanks to Satheesh Kumar - for pointing this out. - -Tue Oct 28 05:44:56 1997 David L. Levine - - * ace/OS.cpp (thr_create): use pthread_attr_setprio instead of - *_setsched with DCETHREADS, and check return values of - ACE_OS::thr_[gs]etconcurrency (). Thanks to Stephen Coy - for tracking these problems down. - - * tests/Priority_Task_Test.cpp (svc): removed ACE_ASSERT and - replaced with setting of error flag. This allows the test - to continue and gather more possibly useful information. - - * tests/Conn_Test.cpp: 1) Added template instantiations. - 2) Re-enabled with DEC_CXX. 3) Removed THR_DETACHED flags. - - * include/makeinclude/platform_osf1_4.0.GNU: suppress warnings - about unreachable statments. - - * ACE-INSTALL.html: Conn_Test now runs with DEC_CXX 6.0. - -Tue Oct 28 00:38:58 1997 - - * ace/Strategies_T: - - ACE_Recycling_Strategy - Added new class ACE_Recycling_Strategy. - It defines the interface (and default implementation) for - specifying a recycling strategy for a SVC_HANDLER. This - strategy acts as a consular to the Svc_Handler, preparing it for - the tough times ahead when the Svc_Handler will be recycled. - - ACE_NOOP_Concurrency_Strategy - Added new class - ACE_NOOP_Concurrency_Strategy. It implements a no-op activation - strategy in order to avoid calling open on a recycled - svc_handler multiple times. - - ACE_Cached_Connect_Strategy - Added a ACE_Creation_Strategy, - ACE_Concurrency_Strategy, and ACE_Recycling_Strategy to the - cached connector. This gives it more flexibility than by simply - providing template methods. This is similar to the Strategy - Connector. - - ACE_Cached_Connect_Strategy - Added new template methods for - certain key occasions in the cached connector: make_svc_handler, - activate_svc_handler, assign_recycler, and - prepare_for_recycling. - - * tests/Conn_Test.cpp (client): Updated the tests such that it - uses a null activation strategy. - -Mon Oct 27 22:17:54 1997 Aniruddha Gokhale - - * OS.h: Added the ACE_NESTED_CLASS macro to deal with those - compilers that do not allow a fully scoped type name appearing - inside a scope in which it was defined. - -Mon Oct 27 22:17:32 1997 David L. Levine - - * ace/Thread_Manager.cpp (exit): don't use the cache when finding - the thread ID. The cache is in the ACE_Log_Msg instance, and - it might have been deleted already. - -Mon Oct 27 20:33:07 1997 Douglas C. Schmidt - - * ACE version 4.3.30, released Mon Oct 27 20:33:07 1997. - -Mon Oct 27 18:03:06 1997 Nanbor Wang - - * ACE-INSTALL.html (HREF): Added NT/Alpha to supporting platforms - list. Added hyperlink to ACE newsgroup. Added hyperlink to - FreeBSD homepage. Minor changes to Win32 intstallation guide. - -Mon Oct 27 17:50:16 1997 Douglas C. Schmidt - - * include/makeinclude/platform_sco5.0.0-fsu-pthread.GNU (PRELIB): - Changed PRELIB in platform_sco5.0.0-mit-pthread.GNU, - platform_sco5.0.0-fsu-pthread.GNU to @true, so we can generate - the TAO_IDL compiler. Thanks to Arturo Montes - for reporting this. - -Mon Oct 27 14:26:10 1997 - - * ace/Synch_T (ACE_TSS): When ACE does not have thread specific - storage, ACE_TSS will be a simple pointer holder. Previously, it - had a instance as a member, now it has a pointer to an instance. - - * ace/WFMO_Reactor.cpp (update_state): Fixed a bug in the - WFMO_Reactor. wakeup_all_threads() used to be an internal - method that was called when changes were made to the state of - the reactor. When wakeup_all_threads() became public, there was - no code in place to handle explicit user wakeups. In - particular, the wakeup_all_threads event was never reset. - Thanks to Evgeny Beskrovny for - pointing out this bug. - - * ace/OS.i (ACE_FAIL_RETURN): Added mapping from - ERROR_PATH_NOT_FOUND to ENOENT. Thanks to David Brackman - for suggesting this. - -Mon Oct 27 11:36:39 1997 David L. Levine - - * ace/OS.cpp (exit_cleanup_i): removed protection against recursive - calls. This protection no longer is necessary, because - ACE_TSS_Cleanup () is only called by ACE_Thread_Adapter::invoke (). - It was problematic because it used the ACE_Allocator instance. - - * ace/config-vxworks*.h,README: added ACE_LACKS_FCNTL. - - * ace/OS.i,ACE.cpp: replaced #ifdef VXWORKS with #ifdef - ACE_LACKS_FCNTL. - - * ace/ACE.i (get_flags): return 0 if ACE_LACKS_FCNTL. It would - be better to store ACE's notion of the flags associated with - the handle so that they could be returned, but this works for now. - - * tests/run_tests.vxworks: re-enabled Reactors_Test, because it - works with the ACE_LACKS_FCNTL mods. - - * include/makeinclude/platform_osf1_4.0.GNU: -pthread instead of - -lpthread in LIBS. Thanks to James Johnson for - pointing this out. - - * ACE-INSTALL.html: added info on bin/create_ace_build. - -Mon Oct 27 11:11:33 1997 Nanbor Wang - - * netsvcs/servers/servers.dsp - * netsvcs/lib/netsvcs.dsp: - * tests/*.dsp: - * ace/ace_{dll,lib}.dsp: Added project configurations for Alpha - machines. Configurations are named by adding "Alpha" in front - of the original config names, e.g., "Win32 Alpha Unicode Debug. - -Mon Oct 27 06:40:18 1997 Douglas C. Schmidt - - * include/makeinclude/rules.local.GNU (show_uninit): Added a - missing semi-colon for one of the install rules. Thanks to - Manojkumar Acharya for reporting this. - - * ace/Synch_T.h: Make sure that ACE_Guard::remove() calls - this->lock_->remove() rather than this->lock_->release(). - Thanks to Johannes Gutleber for - reporting this. - -Mon Oct 27 00:20:13 1997 Nanbor Wang - - * ace/config-hpux-10.x-hpc++.h: Added directive - ACE_HAS_TEMPLATE_SPECIALIZATION. Thanks to Stephen Coy - for reporting this. - -Sun Oct 26 22:17:57 1997 Douglas C. Schmidt - - * ACE version 4.3.29, released Sun Oct 26 22:17:57 1997. - -Sun Oct 26 20:03:57 1997 Douglas C. Schmidt - - * ace/IPC_SAP.cpp, - ace/IO_SAP.cpp: Make sure that we don't use fcntl() when - we're compiling on VXWORKS since it's not defined... - - * examples/Connection/non_blocking/CPP-connector.cpp: Changed the - method named idle() to uninitialized() since idle() is now - defined on ACE_Svc_Handler. - - * ace/OS.h: Added the TAO_DEFAULT_SERVER_PORT to OS.h. - - * tests/Conn_Test.cpp (cached_connect): Added a new variable - called "n_client_iterations" to control how many times each - client thread tries to connect with the Cached_Connector. - -Sun Oct 26 16:56:32 1997 Chris Cleeland - - * include/makeinclude/platform_linux_lxpthread.GNU (CFLAGS): Added - -pipe to the compile options. - -Sun Oct 26 11:04:21 1997 David L. Levine - - * ace/Hash_Map_Manager.cpp (unbind): added ACE_UNUSED_ARG (int_id). - - * tests/Conn_Test.cpp (server): added ACE_UNUSED_ARG (options). - And, added template instantations. - - * tests/Conn_Test.cpp (cached_connect): changed type of loop index i - to int to avoid signed/unsigned comparison. - - * ace/Strategies_T.h: added #include of ace/Strategies.h. Thanks to - James Johnson for reporting this. - -Sun Oct 26 10:01:01 1997 Nanbor Wang - - * ace/Connector.cpp (open): The original fix failed to replace - strategies under some circumstances. - - * ace/OS.{h,cpp} (sprintf): Removed ACE_OS::sprintf (wchat_t, char). - It didn't ever work. - - * ace/Connector.cpp (open): Added check if we had previously - allocated various strategies and deleted these objects before - allocating new objects. The original codes caused memory leaks - and possible segmentation faults if it got called twice. We - probably need a do-nothing constructor (the current constructor - calls open.) However, this may break other codes. - -Sun Oct 26 01:00:07 1997 Douglas C. Schmidt - - * ACE version 4.3.28, released Sun Oct 26 01:00:07 1997. - -Sun Oct 26 00:50:00 1997 Douglas C. Schmidt - - * tests/Conn_Test.cpp (close): Since the connect() method on - ACE_Connector closes the svc_handler if failure occurs, we - shouldn't do that again unless we succeed in connecting. - - * ace/OS.h: Moved the CORBA portability macros from - CORBA_Handler.h into OS.h so they will be accessible from TAO. - - * ace/Filecache.cpp (finish): Replaced filename_ with filename() - so that "const correctness" would work with template - specialization. Go figure! - - * TAO/tests/IDL_Cubit/Makefile: Enhanced the "realclean" target to - remove the generated IDL stubs and skeletons. - - * ace/OS.cpp (ace_sysconf_dump): Made a minor change to OS.cpp - to fix some typos. Thanks to Wei Chiang - for reporting this. - -Sun Oct 26 00:06:17 1997 - - * ace/Strategies_T.cpp (~ACE_Cached_Connect_Strategy): Must set - recycler to 0 before calling close, else the svc_handler will - try to purge itself from the cache. - - * tests/Conn_Test.cpp (client): Updated to use the new connection - recycling scheme. - - * ace/Hash_Map_Manager: - - - ACE_Hash_Map_Reverse_Iterator: Added reverse iterator. - - - ACE_Hash_Map_Entry: Added a prev pointer to the entry. Thus - changing the bucket chains into doubly linked lists. Because of - this, it was necessary to change the way the list was being - managed. Sentinels were created for each bucket. - - This also changed (a) the way the iterators worked, (b) made it - easy to delete entries when you have one (this scheme allows the - entries to be easily used as ACTs). - - - New methods (bind, trybind, rebind, find): These methods allow - the users to get access to ACE_Hash_Map_Entry of the node in - question. This allows the user to treat the entry as an ACT and - get access to the key (in case the user is interested in - changing the key). These methods are only valid since the - implementation of Hash_Map_Manager uses linked lists where nodes - are never copied. These methods cannot be added to Map_Manager - since it uses an array of nodes, where the your data may get - copied to another node when the size of the Map_Manager changes. - - * ace/Strategies (ACE_Connection_Recycling_Strategy): Added a new - abstract strategy for recycling connections. - - * ace/Strategies_T: - - - ACE_Cached_Connect_Strategy: ACE_Cached_Connect_Strategy now - implements the ACE_Connection_Recycling_Strategy interface. - This allows Svc_Handlers to cache themselves with - ACE_Cached_Connect_Strategy when they become idle. It also - allows them to purge themselves from the connection cache when - the Svc_Handlers close down. - - Also added ~ACE_Cached_Connect_Strategy that will cleanup up the - connection cache. - - - ACE_Hash_Addr: ACE_Hash_Addr is the key for the hash map used by - ACE_Cached_Connect_Strategy. Previously it kept the Svc_Handler - pointer in the key in order to find out if it was busy or not. - Now the flag has been moved from the Svc_Handler into - the key. The also saves the Hash_Addr from requiring - Svc_Handler as a template parameter. - - Also updated ACE_Hash_Addr::operator== such that if the - Svc_Handler is busy, it does not bother to check compare the - addresses but simply returns false. - - * ace/Svc_Handler.cpp: Added the ability for a Svc_Handler to - recycle itself. idle() can be called when the Svc_Handler is - done serving a particular connection and can how be recycled. - The Svc_Handler now also has a pointer to a recycler that is - responsible for managing the connections. The recycler is - usually a Cached_Connector. - - * ace/Filecache.cpp (ACE_Hash_Map_Entry): Added a new constructor - specialization as the ACE_Hash_Map_Entry now has two - constructors. - - * tests/Hash_Map_Manager_Test.cpp (ACE_Hash_Map_Entry): Added a - new constructor specialization as the ACE_Hash_Map_Entry now has - two constructors. - - * tests/Reactor_Exceptions_Test.cpp (class My_Reactor): Added the - other handle_events method. Thanks to Stephen Coy - (coys@mail.ns.wsa.com.au) for pointing this out. - - * ace/Strategies_T.cpp (hash_i): This default routine is no good. - It uses a complicated scheme that calculate a hash value. - Unfortunately, there is no guarantee that this hash algorithm - will produce the same hash value for the same address. - Therefore, it is better just to return a consistent hash value - rather than an erroneous one. I have choosen 0 of the return - value. Even though this will cause all the entries to be hashed - to the 0 bucket, atleast they will be found. Users should - override this to provide better hashing. - - (compare_i): Memcmp is not the correct default action. - !(b1==b2) is the correct comparison, though this will assume - that the addresses will have a comparison operation. - - * ace/Mem_Map.cpp (close and close_handle): close() is doing too - much. It is closing the handle and unmapping the file. - Changing this method might effect code that depends on this - behavior. Therefore, we create a seperated method - close_handle() that only closes down the handle, and does not - unmap the file. Thanks to Jeff Richards (jrichard@OhioEE.com) - for pointing this out. - - * ace/Strategies_T.cpp (connect_svc_handler): If connect() failed - because of timeouts, we have to reject the connection entirely. - This is necessary since currently there is no way for the - non-blocking connects to complete and for the to - notify the cache of the completion of connect(). Therefore if - errno is EWOULDBLOCK, it is changed to ENOTSUP and -1 is - returned. - -Sat Oct 25 17:41:57 1997 Sergio Flores - - * examples/Timer_Queue/Thread_Timer_Queue_Test.cpp: - * examples/Timer_Queue/Async_Timer_Queue_Test.cpp: - * examples/Timer_Queue/Reactor_Timer_Queue_Test.cpp: - * examples/Timer_Queue/main_async.cpp: - * examples/Timer_Queue/main_reactor.cpp: - * examples/Timer_Queue/main_thread.cpp: - Added "#pragma instantiate" for template instantiations on - platforms that use pragmas instead, like SGI. - -Sat Oct 25 4:44:00 1997 Carlos O'Ryan - - * Today at 06:44 hours (Santiago, 04:44 St. Louis) Fernanda O'Ryan - has joined the ACE family. She was born 3040 gr in weight and - 50 cm length. She has absolutely no experience in CORBA, C++ or - programming in general. Therefore, she is the ultimate Java - programmer. - -Sat Oct 25 10:13:56 1997 David L. Levine - - * ace/Singleton.h: added comment about best ACE_LOCK types to use. - - * Makefile (TIMESTAMP): replace tab with spaces in ChangeLog entry. - - * tests/Conn_Test.cpp (main): fixed typo, spawn_threads instead of - spawn_thread. Also, protected definitions of spawn_processes () - and spawn_threads () to avoid compiler warnings about unused static - functions. - -Sat Oct 25 01:02:34 1997 Douglas C. Schmidt - - * ACE version 4.3.27, released Sat Oct 25 01:02:34 1997. - -Fri Oct 24 17:39:08 1997 Douglas C. Schmidt - - * ace/ACE.cpp: Changed all the ACE_BIT_ENABLED () == 0 macros to - ACE_BIT_DISABLED() since the logic is clearer. - - * ace/SOCK_Acceptor.cpp (shared_accept): Improved the handling of - timed accepts. The original implementation was prone to race - conditions if there were multiple processes all doing timed - connects on the *same acceptor socket*! That's because select() - and accept() are not performed atomically. Now, we're smarted - about handling this... - - * tests/Conn_Test.cpp: Simplified the shutdown logic, which - appeared to have race conditions. - - * tests/Conn_Test.cpp: Modified this test to spawn off a number of - server processes, all of which will listen for connections on - the same acceptor port. This demonstrates a useful idiom for - writing connection-oriented concurrent server pools. - - * netsvcs/lib/Server_Logging_Handler_T: Fixed this code so that if - we're on an HP/UX that has broken templates we don't use the - Base_Optimizer. Thanks to Per Andersson for providing this fix. - - * ace/Thread_Manager: Added a destructor for ACE_Thread_Descriptor - to keep some compilers happy. Thanks to Chuck Gehr - for reporting this. - - * ace/Task.cpp (ACE_Task_Base_cleanup): Changed - ACE_Task_Base::cleanup (object); - - to: - - ACE_Task_Base::cleanup (object, 0); - - Thanks to Chuck Gehr for reporting - this. - - * ace/Thread_Manager.cpp (find_thread): Fixed another problem with - == being used to compare threads rather than - ACE_OS::thr_equal(). Thanks to Chuck Gehr - for reporting this. - -Fri Oct 24 17:11:14 1997 Sergio Flores - - * Thread_Timer_Queue_Test.cpp (shutdown_timer): added logic to - cancel preemptively or voluntarily, the dispatching thread, - depending on whether the platoform supports pthread_cancel(). - - * Timer_Queue_Adapters.cpp (ACE_Thread_Timer_Queue_Adapter): Added - initialization of flag to 1, active mode. We assume - we start in active mode. Added an internal variable - that stores the thread id of the currently running thread. The - motivation behind this is to be able to cancel this thread - whenever we are shutting down. It is initialized to - ACE_OS::NULL_thread. - - * Timer_Queue_Adapters.cpp (svc): Assign the with the - current running thread ID, using ACE_Thread::self (). - - * Timer_Queue_Adapters.h (ACE_Thread_Timer_Queue_Adapter): Added - default to be - ACE_Thread_Manager::instance() - - * Timer_Queue_Adapters.h (activate): Override the default - method to be able to enforce one thread of execution - per timer queue. Does make much sense to have more than one - managing the timer queue, and like Doug said too many weird - things can happen... - - * Timer_Queue_Adapters.i (thr_id): Added this method to access the - thread ID of this task. - - * Timer_Queue_Adapters.i (activate): Call - ACE_Task_Base::activate() with n_threads = 1 to ensure that a - single thread is spawned. - -Fri Oct 24 10:00:02 1997 Nanbor Wang - - * ace/Thread_Manager.cpp (wait_grp): Fixed a bug. Should wait on - threads with same grp_id, not task. - -Fri Oct 24 09:24:14 1997 David L. Levine - - * ace/Select_Reactor.cpp (open): cast return value of - ACE_::max_handles () to size_t to avoid signed/unsigned comparison. - - * ace/Singleton.cpp,Object_Manager.{h,cpp}: (get_singleton_lock): - dynamically allocate ACE_Thread_Mutex and ACE_RW_Thread_Mutex locks, - so we end up with one lock per ACE_Singleton instantiation. - - * ace/OS.cpp (ACE_TSS_Info, Win32 and VxWorks only): changed type - of ACE_TSS_TABLE from ACE_Unbounded_Stack to fixed-size ACE_Array. - With this change, we avoid some use of ACE_Allocator when - destroying TSS objects. There are two more changes required to - completely remove the ACE_Allocator use. - - * tests/TSS_Test.cpp (worker): added printout of iteration count. - -Fri Oct 24 01:53:58 1997 Douglas C. Schmidt - - * ACE version 4.3.26, released Fri Oct 24 01:53:58 1997. - -Thu Oct 23 19:05:08 1997 Douglas C. Schmidt - - * netsvcs/clients/Naming/Client/Makefile - netsvcs/clients/Naming/Dump_Restore/Makefile - - The lines: - - SHLIB = libClient_Test.so - SHLIB = libDump_Restore.so - - need to be - - SHLIB = libClient_Test.$(SOEXT) - SHLIB = libDump_Restore.$(SOEXT) - - Thanks to Stephen Coy for reporting this. - - * ace/Thread_Manager.cpp (find_hthread): Replaced the call - - if (iter.next ()->thr_handle_ == h_id) - - to - - if (ACE_OS::thr_equal (iter.next ()->thr_handle_, h_id)) - - since the other one isn't portable to Pthreads. Thanks to - Stephen Coy for reporting this. - - * ace/Hash_Map_Manager.cpp: Removed the sentinel in the - Hash_Map_Manager. Sentinels are evil since they require us to - hold write locks, even when we're doing finds! - - * ace/ACE.cpp (max_handles): By default, we now try to use the - getrlimit() function before sysconf() since sysconf() doesn't - work "correctly" for NO _SC_OPEN_MAX (i.e., it just returns the - original value, which might have been changed by setrlimit(). - What a pain... - - * ace/ACE.cpp (max_handles): If FD_SETSIZE is enabled return - this as the number of handles. This isn't perfect, but it's - probably better than returning -1. - - * ace/Select_Reactor.cpp (open): Added a call to - ACE::set_handle_limit() if the requested size for the Reactor is - greater than the current max number of descriptors in the - process. Also check to make sure that the user isn't ask for - more than the FD_SETSIZE. Thanks to Neil Lavelle - for motivating this. - - * ace/Thread_Manager: Changed the name THR_FUNC to - ACE_THR_MEMBER_FUNC since it's now a global typedef on VxWorks - and we don't have to have clashes with other names. - - * ace/Thread_Manager.h: There are mutually incompatible bugs with - VxWorks and MVS. Therefore, we have to conditionally compile - the THR_FUNC differently for these two platforms. Thanks to - Chuck Gehr for reporting this. - - * ace/OS.cpp (thr_create): Added a fix to set the Chorus stack - size correctly. Thanks to Wei Chiang for - reporting this. - - * ace/OS.cpp: Added a new method ace_sysconf_dump() to dump the - state of the configuration. Thanks to Wei Chiang - for reporting this. - - * ace/Singleton.cpp (dump): There was a typo in the dump() method - for ACE_TSS_Singleton, it should be - ACE_TSS_Singleton::instance_i(). I've fixed this. - -Thu Oct 23 23:19:24 1997 James C Hu - - * ace/Filecache.cpp: Removed template method specialization of - shared_find. No longer needed since Hash_Map_Manager has been - changed to no longer rely on sentinel_. - - * ace/Thread_Manager.cpp (various): - Hacked 'til it compiled. (Chased down syntax errors.) - -Thu Oct 23 22:52:17 1997 Sergio Flores - - * examples/Timer_Queue/Thread_Timer_Queue_Test.cpp (shutdown_timer): - Added a line to call the cancel method on the timer queue task - when we are shutting down; this is wrapped around #if's to only - include this only when the platformm supports pthread_cancel(). - - * ace/Timer_Queue_Adapters.cpp (svc): Added some POSIX thread - cancellation points to make sure the mutex that the condition - variable uses is unlocked before the thread is cancelled. - - * examples/Timer_Queue/Thread_Timer_Queue_Test.cpp (list_timer): - Deleted unnecessary cancellation points. Since we are not - blocking on a condition variable, we don't need to guard the - code. - -Thu Oct 23 22:07:03 1997 Nanbor Wang - - * ace/Thread_Manager.cpp (wait_task,wait_grp): We should also - check for thread creation flags when collection information for - threads belong to this group and don't try to join those threads - created with THR_DETACHED or THR_DAEMON. - -Thu Oct 23 21:22:16 1997 Darrell Brunsch - - * ACE-INSTALL.html: Copied some documentation about makefile flags - from include/makeinclude/wrapper_macros.GNU and added a section - for this. - -Thu Oct 23 20:37:44 1997 David L. Levine - - * ace/Array.*: added ACE_Array_Iterator. - -Thu Oct 23 17:28:11 1997 Chris Cleeland - - * ace/Mem_Map.i (close_filemapping_handle): Moved this above its - uses in the file so that g++ would de-warn. - -Thu Oct 23 15:30:17 1997 Steve Huston - - * ace/Timer_Hash_T.h, Timer_Hash.cpp, Timer_Heap_T.h, Timer_Heap.cpp, - Timer_List_T.h, Timer_List.cpp, Timer_Queue_T.h, Timer_Queue.cpp, - Timer_Wheel_T.h, Timer_Wheel.cpp: Replaced all occurences of - ACE_HPUX_BROKEN_TEMPLATES with ACE_HAS_BROKEN_HPUX_TEMPLATES. - -Wed Oct 22 23:23:29 1997 Nanbor Wang - - * ace/ACE_Library.*, ace_lib.dsp: Made naming convention uniform - for some less used ACE library. They are called: aced.dll, - ace.dll, aceud.dll, aceu.dll, acesd.lib, aces.lib, aceusd.lib - and aceus.lib. If you are using ACE on NT, you know what they - mean. ;-) - -Wed Oct 22 21:22:35 1997 David L. Levine - - * ace/Object_Manager.{h,cpp}: Added support for ACE_RW_Thread_Mutex - ACE_Singleton lock type. Thanks to Nanbor for suggesting this, - because TAO needs it. - - Also, removed at_exit registration of dynamically allocated - ACE_Static_Object_Lock because Object_Manager instance isn't - available for registration when it's created. Instead, handle - this lock as a special case in the Object_Manager destructor. - - * ace/Singleton.cpp,Object_Manager.cpp: check for shutting_down () - as well as starting_up () when deciding whether to use a - preallocated lock. Preallocated locks are not available at those - times. - - * tests/Reactor_Performance_Test.cpp (client): removed declaration - of loop index "i" because it shadowed a local. Also, the loop - index declaration caused a signed/unsigned comparison. - - * ace/Singleton.cpp: temporarily disabled ACE_Guards until - the lock acquistion is fixed. - -Wed Oct 22 17:53:26 1997 Steve Huston - - * ace/SOCK_Connector.cpp: In connect(), changed the - (local != ACE_Addr::sap_any) to be value comparison, - not pointer comparison. Works on compilers which construct - temporaries when a const reference is passed (like HP aC++), and - also when a user passes an ACE_Addr which they construct to look - just like an ACE_Addr::sap_any. Thanks to Stephen Coy - for finding this. - -Wed Oct 22 16:43:25 1997 Chris Cleeland - - * tests/Reactor_Performance_Test.cpp (client): Corrected some code - that wasn't logical (but compiled!) in the connect_n() test. - -Wed Oct 22 13:27:47 1997 Douglas C. Schmidt - - * tests/Reactor_Performance_Test.cpp (client): Revised the - connection portion of this test to use the newly revised - connect_n() method on Connector. - - * ace/Connector.cpp (connect_n): Revised the connect_n() method so - that it keeps track of which connections succeeded and which - failed. - -Wed Oct 22 07:23:21 1997 David L. Levine - - * ace/OS.i (getpgid): fixed (commented) ACE_TRACE identifer. - Thanks to Eric Newton for reporting this. - - * ace/Singleton.{h,cpp},Object_Manager.{h,cpp}: moved - ace_singleton_lock_ to Object_Manager. ace_singleton_lock_ - was a static data member: in addition to the usual troubles - associated with being a static, it was a static member of a - template class. g++ can't handle those, so we used a local - static; initialization of that static was not thread safe. - - The fix relies on knowledge from the Object_Manager about - whether the program is in static construction phase or not. - A critical assumption is that construction of static objects - does not spawn threads. With that assumption, we know that - there is only one (main) thread in the program prior to the - Object_Manager instance being constructed. At that time, - locking is not needed. The ACE_{TSS_}Singleton::instance () - methods rely on the state of the Object_Manager: if it has - not been constructed yet, then they don't guard allocation - of their singleton instance. - - The Object_Manager constructs four locks (of types ACE_Null_Mutex, - ACE_Thread_Mutex, ACE_Recursive_Thread_Mutex, and - ACE_RW_Thread_Mutex) for use only by ACE_Singleton classes. - After the Object_Manager has been constructed, ACE_{TSS_}Singleton - instantiations use one of those locks to guard their allocation of - a new instance, via double-checked locking. - - This change has one impact, then: - ACE_{TSS_}Singleton users are limited to the following types - for their ACE_LOCK instantiation parameters: ACE_Null_Mutex, - ACE_Thread_Mutex, ACE_Recursive_Thread_Mutex, and - ACE_RW_Thread_Mutex. If another type is needed, it can be - easily added to the ACE_Object_Manager: another overloaded - get_singleton_lock () function and preallocated lock would - have to be added. - - As noted in Singleton.h, the best types of ACE_LOCKs to use - for instantiating ACE_Singleton are ACE_Recursive_Thread_Mutex - and ACE_Null_Mutex. - - In addition to the above change, I made these two other - changes: - 1) ACE_Static_Object_Lock::instance (): dynamically allocate - a lock if the Object_Manager has not been constructed yet. - This approach replaces the static lock that was necessary - to allow the static services to be constructed. - - 2) Consolidated the singleton_ access in ACE_TSS_Singleton - via a singleton_i () internal accessor function. Now, - ACE_TSS_Singleton looks just like ACE_Singleton. - - * ACE-INSTALL.html: updated DEC CXX 6.0 build/test status. - - * examples/Service_Configurator/IPC-tests/server/Handle_Timeout.i - (handle_timeout): convert arg to long if ACE_HAS_64BIT_LONGS. - - * examples/Shared_Malloc/test_malloc.cpp (worker): convert arg to - long if ACE_HAS_64BIT_LONGS. - - * examples/Timer_Queue/Driver.cpp (run_test,parse_commands): - added ACE_NOTREACHED. - - * examples/Logger/simple-server/Logging_Handler.cpp (handle_close): - removed declaration of unused arg "mask". - - * include/makeinclude/rules.local.GNU: added show_statics and - show_uninit targets. They show the statics (that have static - destructor calls) and uninitialized data in the object files - in the current directory. They work best (or at all) on object - files compiled by g++. - -Wed Oct 22 05:04:07 1997 Douglas C. Schmidt - - * ACE version 4.3.25, released Wed Oct 22 05:04:07 1997. - -Tue Oct 21 22:55:36 1997 - - * ace/WFMO_Reactor: Removed ACE_Event_Handler::CLOSE_MASK and the - explicit registration for the closing of sockets from - WFMO_Reactor. This is essentially for compatibility with UNIX - programs. UNIX does not have a CLOSE_MASK and the notification - of the closing of a socket is implicit in the socket becoming - read ready. Therefore when you register for - ACE_Event_Handler::READ_MASK with WFMO_Reactor, you will - register for FD_READ and FD_CLOSE. When FD_CLOSE is triggered, - handle_input() will be called on the Event_Handler. As on UNIX, - read() will return 0 and the programmer will be able to tell - that the socket has actually closed down. - - Arguably, this is lame for Win32 programmers as they have the - explicit close notification, but portability and existing code - base wins in this case. - - One other change. When an event_handler returns -1 from the - callback, unbind() is called with ALL_EVENTS_MASK rather than - the NULL_MASK. - - The upcall routine still needs to threat the two masks - separately. (FD_CLOSE | FD_READ) will not work as both maybe - simultaneously enabled. Therefore handle_input() maybe be called - twice (once for FD_READ and once for FD_CLOSE) unless the user - returns -1 from the first callback. - - * ace/Event_Handler: Removed the CLOSE_MASK. - - * examples/Logger/simple-server/Logging_Handler.cpp: Minor fixes. - - * examples/Logger/Acceptor-server/server_loggerd.cpp: Minor - changes. No need to register the acceptor with the - Reactor. Acceptor::open() does that. - - * examples/Reactor/ReactorEx/test_network_events: Removed the use - of CLOSE_MASK. - - * tests/Reactor_Performance_Test: Removed the use of CLOSE_MASK. - -Tue Oct 21 21:48:54 1997 David L. Levine - - * ace/OS.[hi]: moved ACE_PTHREAD_CLEANUP_PUSH/POP definitions from - OS.i to OS.h. Also, added #ifdef ACE_HAS_PTHREADS protection - before ! defined ACE_LACKS_PTHREAD_CLEANUP so that only PThreads - platforms need add ACE_LACS_PTHREAD_CLEANUP. - - * tests/Notify_Performance_Test.cpp: added #include of - ace/Thread_Manager.h. It's needed on OSF-1. - -Tue Oct 21 21:09:35 1997 Nanbor Wang - - * ace/Memory_Pool.cpp (ACE_MMAP_Memory_Pool): Oops. Souldn't - access options when it is 0. - -Tue Oct 21 12:58:30 1997 Nanbor Wang - - * ace/Log_Msg.{h,cpp}: (thr_desc): Modified the method so it take - an extra argument of type ACE_Thread_Manager* and uses it to - block execution until thread manager release its lock. - - * ace/Thread_Manager.{h,cpp} (acquire_release): Added this new - method whose only function is to grab the thread manager's - lock. This function ensure that a newly spawned thread won't - try to access its thread descriptor before it is fully built. - - * ace/OS.cpp (inherit_log_msg): Modified to cache the thread - descriptor of spawned thread in TSS Log_Msg after it has been - created and block the execution of new thread until thread - manager releases the lock (i.e., fills in all the information.) - - * ace/OS.h (ACE_Thread_Adapter): Added one more argument of type - ACE_Thread_Descriptor* to the constructor with default value 0. - - * ace/OS.cpp (invoke): If the thread descriptor ptr is not zero - in thread arguemnt, then, we'll wait till the thread manger - fills in the formation and cache the value in TSS Log_Meg. - - * ace/Thread_Manager (spawn_i): Changed to pass in the thread - descriptor of the newly spawned thread to thread adapter so it - can cache it in TSS Log_Msg. This must be created before - spawning the thread. If all goes well, we'll need to append the - thread descriptor into the double-linked list in the thread - manager. - (append_thr): Added a new argument of type Thread_Descriptor* - with default value 0. If we pass in a thread descriptor, - append_thr won't try to create on itself. - -Tue Oct 21 21:34:35 1997 Douglas C. Schmidt - - * ACE version 4.3.24, released Tue Oct 21 21:34:35 1997. - -Tue Oct 21 14:14:33 1997 Carlos O'Ryan - - * examples/Timer_Queue/Thread_Timer_Queue_Test.h: - * examples/Timer_Queue/Thread_Timer_Queue_Test.cpp: - Use the typedef for Upcall to define the base Timer_Queue. - Input_Task inherits from ACE_Task_Base, no need for ACE_Task<> - here. - -Tue Oct 21 13:45:53 1997 Douglas C. Schmidt - - * ace/config-irix6.x-sgic++-nothreads.h: Added ACE_HAS_TERM_IOCTLS - for SGI. Thanks to Jeffrey Peterson - for reporting htis. - - * TAO/tests/Thruput_test/server.cpp (main): Changed BOA_init() - to POA_init(). - -Tue Oct 21 12:58:30 1997 - - * ace/OS.h (ACE_SINGLETON_DECLARATION): - (ACE_SINGLETON_INSTANTIATION): - (ACE_SVC_SINGLETON_DECLARATION): - (ACE_SVC_SINGLETON_INSTANTIATION): Added these new macros. Each - of them takes one argument which is the ACE_Singleton class. - All these craps are needed because MSVCs very kindly instantiate - the template codes for you. This ends up producing two - ACE_Singleton objects, one in DLL and one in user program. What - these macros do is to supress the template code instantiation in - user program and force compilers to instantiate these codes in - DLL. On other platforms, these macros simply expand to empty - strings. Here is a simple use case. Say we have a class - called which we want to make it a singleton using - ACE_Singleton template in our own DLL. In file , add - a line like this, - - ACE_SVC_SINGLETON_DECLARATION (ACE_Singleton); - - and it will be expanded to suitabe code to export the class or - supress another template instantiation outside DLL depending on - whether ACE_BUILD_SVC_DLL is defined or not. In file - , add a line, - - ACE_SVC_SINGLETON_INSTANTIATION (ACE_Singleton); - - at the end of the file to instantiate the template object in - DLL. Notice that there is a bug in MSVC 4.2 and you'll have to - write up a DEF file to export the template interface - explicitly. - - These macros should be integrated with the case when - ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION but because of the VC - 4.2's bug, it will cause too much trouble to export all these - symbols for external access. Therefore, I'll leave them as they - are now. - - BTW, these is no templatized singleton object within ACE that - needs to be exported at this moment. - -Tue Oct 21 07:14:24 1997 David L. Levine - - * ace/Svc_Conf_l.cpp: fixed compile warnings on g++. - - * ace/Timer_{Heap,List,Wheel}_T.cpp: replaced NULL with 0 because - some compilers, such as GHS, define NULL as (void *) 0. So, it - sometimes needs to be cast to be used. Thanks to Brian Mendel - for reporting this. - - * ace/Thread_Manager.cpp (wait): removed thr_yield () hack because - it's not needed with Nanbor's Thread_Manager fix. - - * tests/test_config.h (ACE_END_TEST): removed sleep hack with - threading because it's not needed with Nanbor's Thread_Manager fix. - - * include/makeinclude/platform_vxworks*.GNU: added VXWORKS=1 macro, - for use by individual Makefiles to suppress VxWorks builds. - - * examples/System_V_IPC: suppress VxWorks builds because the builds - fail, and the examples wouldn't run anyways. - - * netsvcs/lib/TS_Server_Handler.cpp: only instantiate - ACE_Svc_Handler if ! ACE_HAS_TLI - because without TLI, the instantiation is in - Client_Logging_Handler.cpp. - - * examples/Shared_Malloc/test_persistence.cpp: added #include of - iostream.h with ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION. - - * examples/ASX/UPIPE_Event_Server/Supplier_Router.cpp: removed - instantiation of ACE_TSS because it is in - ace/Thread_Manager.cpp. - -Tue Oct 21 02:23:26 1997 Douglas C. Schmidt - - * ACE version 4.3.23, released Tue Oct 21 02:23:26 1997. - -Tue Oct 21 02:18:56 1997 Douglas C. Schmidt - - * examples/Makefile: Things are happier now, so we've added back - the Timer_Queue directory to the Makefile. - - * examples/Timer_Queue: Added lots of annoying template - specializations so that the timer queue tests now work with GCC. - - * ace/Svc_Conf.l: Changed the regular expression for a - {string} so that it maches the null string (i.e., ""). - -Tue Oct 21 01:07:58 1997 Sergio Flores - - * examples/Timer_Queue: - Added documentation and fixed some warnings from the unused - arguments in some member functions. Cleaned up some .h files of - unnecessary template instantiations. - -Tue Oct 21 01:01:12 1997 Nanbor Wang - - * ace/Thread_Manager.h: Added more comments. - - * ace/Thread_Manager.{h,cpp}: Added a parameter to - Thread_Manager's constructor with default value 0. This - parameter is currently unused and put in for backward - compatibility. - (open): Putting back this method for backward compatibility. - This is currently a no-op. Thanks to David for reporting this. - Also modify some mis-inform comments. - -Mon Oct 20 22:34:46 1997 - - * ace/OS.i (open): Moved Win32 specific errno mappings from open() - to ACE_FAIL_RETURN. Also updated the wide-character version of - open(). - -Mon Oct 20 14:07:37 1997 Douglas C. Schmidt - - * ace/config-hpux-10.x.h: Added #define ACE_DEFAULT_BASE_ADDR - ((char *) 0x80000000) so that the various mmap() tests - will work on HP/UX. Thanks to Stephen Coy - for reporting this. - - * ace/OS.i: Fixed the implementation of ACE_OS::cond_timedwait() - so that it will work on VxWorks. Thanks to David Levine for - chasing this down and doing most of the changes. - - * ace/OS.h: Added a new special case for _KCC so that its - ACE_UNUSED_ARG will work properly. Thanks to Torbjorn Lindgren - for reporting this. - -Mon Oct 20 22:23:42 1997 Nanbor Wang - - * tests/Sigset_Ops_Test.cpp (main): It is not legal too for - sigismember to return 0 if we pass an invalid signal to it. - Thanks to Stephen Coy for fixing this. - - * Thread_Manager.*: Replace the thr_table_ with a double-linked - list thr_list_. With this change, we can cache the thread - descriptor entries in TSS area. Then, when accessing thread - descriptor from a spawned thread's context, we don't have to - search thru the whole list in order to find the corresponding - thread descriptor. Double-linked list and caching also make - adding/removing thread descriptor entries very fast. At this - moment, we need to do a linear search when we try to access the - cached pointer the first time. This overhead is expected to - removed shortly. The will be some memory leaks at this moment - because I haven't implemented the code to clean up the list when - a thread manager gets deleted. Will fix it soon. - - * Log_Msg.{h,cpp}: Removed thr_state methods, variable, and thr_id - methods and variable and replace them with thr_desc which cache - the pointer to the thread descriptor structure. - - * Containers.*: Added two new template classes - ACE_Double_Linked_List and ACE_Double_Linked_List_Iterator. - These two classes implement the very fundamental data structure - of double-linked list. Although this is not actually a - container class, I couldn't find a better place to put these - classes. - - * ace/Filecache.* - * ace/FIFO.* - * ace/FIFO_Send.* - * ace/FIFO_Recv.* - * ace/FIFO_Send_Msg.* - * ace/FIFO_Recv_Msg.* - * ace/Memory_Pool.* (ACE_MMAP_Memory_Pool_Options, - ACE_MMAP_Memory_Pool): Added one member variable to these class - so users can specify the LPSECURITY_ATTRIBUTES object they want - to use with them. - (map_file, init_inquire): Pass the security attribute to - underlying memory map object. - - * ace/Mem_Map.* (ACE_Mem_Map, map, open, map_it): Added a new - function parameter LPSECURITY_ATTRIBUTES. It will be passed - down to ACE_OS::mmap or ACE_OS::open. This is only used on - Win32. - -Mon Oct 20 08:48:28 1997 Steve Huston - - * ace/OS.h, config-hpux-10.x.h: Added a new definition, - ACE_HAS_TIUSER_H_BROKEN_EXTERN_C - HP-UX's tiuser.h has - def for t_errno/_terrno() outside of an extern "C" block, - so in this case, wrap #include in our own - extern "C" block. HP support call W3711856. - -Mon Oct 20 07:49:54 1997 David L. Levine - - * Makefile (TIMESTAMP): moved chmod after cvs commit. - - * include/makeinclude/platform_sunos{4,5}_sunc++*.GNU: don't - create Templates.DB/Modules.DB, because that should have been - Module.DB, and it's not needed anyways. - - * ace/config-vxworks-ghs-1.8.h: removed ACE_HAS_VERBOSE_NOTSUP. - - * tests/run_tests.vxworks: re-enabled Buffer_Stream_Test now that - ACE_OS::cond_timedwait () is supported on VxWorks. - - * examples/IPC_SAP/TLI_SAP/ftp-server.cpp (main): removed call - to ACE_Thread_Manager::open () because it no longer is available. - -Mon Oct 20 02:04:19 1997 Douglas C. Schmidt - - * ACE version 4.3.22, released Mon Oct 20 02:04:19 1997. - -Mon Oct 20 02:01:43 1997 Douglas C. Schmidt - - * examples/Makefile: Removed the Timer_Queue directory from the - Makefile until Sergio has fixed all the examples for GCC. - -Sun Oct 19 21:15:10 1997 Sergio Flores - - * examples/Timer_Queue: Added a new testing framework for - various types of ACE_Time_Queue usecases, e.g., threaded, - reactive, and asynchronous. - The new classes are: - which factors out the common code for - different type of Timer queue implementations, for example the parsing, - the input reading, and leaves the implementation of display_menu() for - example, to subclasses. - the asynchronous version of the timer - queue, uses signals. - implements the reactive timer queue - test driver using - the threaded implementation of the - timer queue. - this class is used to specify operations on the timer queue - independently of their implementation. Thsi allows different - implementations of the timer queue to have different ways of - doing the operations without the base class having to know that. - See the Command pattern. - Added some helper functions into the class. - - -Sun Oct 19 18:07:31 1997 Douglas C. Schmidt - - * ace: Added new config files for SCO OpenServer with a new initial scheme - to make config files: - - - The config to SCO OpenServer has been changed to separate OS - specific flags, threads and compiler flags. - - - For SCO OpenServer the base config file is config-sco-5.0.0.h - - - Pthreads base files are config-fsu-pthread.h and - config-mit-pthread for FSU and MIT pthreads. - - - The compiler file has been named config-gcc-2.7.2.h, this is - base config file for GNU gcc 2.7.2 - - To build a config file for SCO using GNU gcc 2.7.2 would be: - - #include "ace/config-gcc-2.7.2.h" - #include "ace/config-sco-5.0.0.h" - - We would obtain ACE config file for SCO OpenServer with GNU gcc - 2.7.2 with no threads. To build a config file for SCO using GNU - gcc 2.7.2 with FSU pthread would be: - - #include "ace/config-gcc-2.7.2.h" - #include "ace/config-sco-5.0.0.h" - #include "ace/config-fsu-pthread.h" - - Thanks to Arturo Montes for these - changes. - - * ace/OS.i (open): Modified ACE_OS::open() so that it sets errno - to EACCES when the requested file is in use. Thanks to Edan - Ayal for reporting this. - -Sun Oct 19 17:55:34 1997 David L. Levine - - * etc/purify.solaris2: the contents of my ~/.purify file - for Solaris 2.x. The ACE tests purify cleanly with it. - -Sun Oct 19 13:49:17 1997 Carlos O'Ryan - - * ace/Proactor.cpp: - The mutex vs lock name change strikes back, this time under NT. - - * tests/Conn_Test.h: - * tests/Conn_Test.cpp: - The Svc_Handler was cached, but it had the default - handle_close() method, which destroys the object. The new - version leaks a bit of memory, but it seems that it never - crashes. - -Sat Oct 18 09:13:29 1997 Douglas C. Schmidt - - * ace/Synch_T.cpp (lock): Moved the frigging lock method of - Atomic_Op into the *.cpp file to work around bugs with earlier - versions of the horribleHP/UX C++ compiler. Thanks to Neil - Cohen for reporting this. - -Sat Oct 18 07:43:29 1997 David L. Levine - - * Makefile (release): oops, removed "echo" that was used to - disable CVS commit, for testing. - - * ace/Thread_Manager.{h,cpp},Object_Manager.{h,cpp}: moved - ace_thread_exit_lock_ to Object_Manager. - - * include/makeinclude/rules.local.GNU: added $(TEMPLATE_REPOSITORY) - to OBJDIRS, so that individual platforms can add template - repository directories for creation. - - * include/makeinclude/platform_sunos{4,5}_sunc++*.GNU: added - TEMPLATE_REPOSITORY with Templates.DB and Templates.DB/Modules.DB. - We can build without any warnings with Sun C++ now. - -Sat Oct 18 00:17:26 1997 Douglas C. Schmidt - - * ACE version 4.3.21, released Sat Oct 18 00:17:26 1997. - -Fri Oct 17 22:51:46 1997 Carlos O'Ryan - - * ace/Timer_Queue_Adapters.h: - * ace/Timer_Queue_Adapters.i: - * ace/Timer_Queue_Adapters.cpp: - * ace/Timer_Queue_T.h: - * ace/Timer_Queue_T.i: - * ace/Timer_Queue_T.cpp: - * ace/Timer_List_T.cpp: - * ace/Timer_Wheel_T.cpp: - * ace/Timer_Hash_T.cpp: - Changed the accessor name for the lock_ field from mutex() to - lock(), we know this can cause trouble on HP-UX, but only if the - function is inline; so it was moved to the .cpp file. - - * ace/Timer_Queue_Adapters.h: - * ace/Timer_Queue_Adapters.i: - Changed the method name from lock() to mutex(), this should - workaround a bug in the HP/C++ compiler. - - * ace/Timer_Hash.cpp: - * ace/Timer_Hash_T.h: - * ace/Timer_Heap.cpp: - * ace/Timer_Heap_T.h: - * ace/Timer_List.cpp: - * ace/Timer_List_T.h: - * ace/Timer_Queue.cpp: - * ace/Timer_Queue_T.h: - * ace/Timer_Wheel.cpp: - * ace/Timer_Wheel_T.h: - Workaround HP/C++ compiler bug, we cannot include the .cpp file - from the header file, but it must be included in the point of - instantiation. - -Fri Oct 17 18:34:00 1997 Douglas C. Schmidt - - * ace/Atomic_Op.i (lock): Added an accessor to ACE_Atomic_Op to - return a reference to the underlying lock. Thanks to Janusz - Stopa for suggesting this. - -Fri Oct 17 15:36:26 1997 - - * ACE/config-win32-common.h: Added a directive to disable warning - of using Microsoft template instantiation control extension. - -Fri Oct 17 06:31:20 1997 David L. Levine - - * ace/Atomic_Op.i (operator=): rsh.value () instead of just rhs. - - * Makefile (release): added ACE_VERSION string to ace/Version.h. - The MS Resource-Compiler doesn't implement the preprocessor - # operator, so ACE_VERSION supplies the concatenated version - string. Thanks to Matthias for suggesting this. - - * ace/Svc_Handler.{h,cpp},Object_Manager.{h,cpp}: moved - ace_svc_handler_lock_ to Object_Manager. This lock was - created once per Svc_Handler instantiation. It has been - replaced by a single lock for all instantiations. That - shouldn't be a problem because there are so few Svc_Handler - instantiations, and the lock is only used for singleton - creation using double-checked locking. - -Fri Oct 17 01:19:35 1997 Douglas C. Schmidt - - * ACE version 4.3.20, released Fri Oct 17 01:19:35 1997. - -Fri Oct 17 00:05:55 1997 - - * ace/OS: Added ACE_Export to declarations to: - ace_mutex_lock_cleanup_adapter, ftruncate, ace_thread_adapter - - * ace/OS.cpp (readv, writev): Moved ACE_Export directive from - OS.cpp to OS.i. - - * ace/Atomic_Op (operator TYPE): operator TYPE() of Atomic_Op has - been deprecated and removed. Because both user-defined - conversions and user-defined operators were defined on - Atomic_Op, it was possible to get ambiguities between the - user-defined operators and the built-in operators. Therefore, - operator TYPE() has been removed and explicit accessor value() - has been added. Thanks to Stephen Coy for - suggesting this. - - * ace/Atomic_Op (operator!=): Add new operator. - - * tests/Atomic_Op_Test.cpp: Previously we had foo.operator== (5). - It was necessary to resolve the ambiguities between the - user-defined operators and the built-in operators. Since we have - removed the automagic type conversion, we can go back to writing - foo == 5. - - * ACE: Atomic Op related minor changes: - - ace/Malloc.cpp (dump): - tests/Future_Test.cpp (main): - tests/Reactors_Test.cpp (handle_input): - example/Threads/{future1.cpp future2.cpp manual_event.cpp task_two.cpp tss2.cpp}: - examples/Reactor/Misc/test_reactors.cpp: - - * tests/Notify_Performance_Test.cpp: - * tests/Reactor_Performance_Test.cpp: - - Moved explicit template instantiation code to ACE_HAS_THREADS - part for the test. Thanks to Stephen Coy - for pointing this out. - -Thu Oct 16 20:44:40 1997 James C Hu - - * ace/Message_Block.cpp: Changed how continuations are released in - the Message_Block::release_i() method to use an iteration rather - than recursion. This is to avoid a stack overflow problem - encountered by Janusz Stopa. - - * ace/OS.cpp: Added ACE_Export to the declarations of ::writev and - ::readv. These are emulation implementations for systems that - don't support them natively. Was not being resolved correctly - on NT. Hopefully this will fix it. Fix suggested by Rob Head - (rhead@virtc.com). - -Thu Oct 16 14:21:34 1997 Nanbor Wang - - * ace/Proactor.cpp: Replaced #include "ace/Servie_Config.h" with - #include "ace/Object_Manager.h" for declaration of - ACE_Static_Object_Lock. - -Thu Oct 16 10:22:48 1997 Carlos O'Ryan - - * ace/Timer_Heap_T.h: - Fixed comment on the Heap_Iterator, it said "Iterates over an - "). - -Thu Oct 16 08:43:50 1997 David L. Levine - - * ace/OS.i (sema_trywait): on VxWorks only, fixed to set errno to - EBUSY if the semaphore couldn't be taken. Thanks to Doug for - suggesting this fix. - - * performance-tests/Misc/preempt.cpp (main): fixed program name. - - * include/makeinclude/platform_osf1_4.0.GNU: OCFLAGS instead of OFLAGS. - - * tests/test_config.h (VxWorks): restored the removal of the log - file, because it again appears to be necessary. - - * tests/run_tests.vxworks: updated VxWorks tests status. - - * ace/OS.cpp,Token_Invariants.{h,cpp},Object_Manager.{h,cpp}: - moved ace_os_monitor_lock and ACE_Token_Invariants_Creation_Lock - to Object_Manager. - -Thu Oct 16 02:26:12 1997 Douglas C. Schmidt - - * ACE version 4.3.19, released Thu Oct 16 02:26:12 1997. - -Thu Oct 16 02:07:54 1997 Douglas C. Schmidt - - * tests/Priority_Reactor_Test.cpp: Added a "max_retries" flag to - keep the test from hanging forever... Thanks to Stephen Coy - for motivating this. - - * tests/Priority_Reactor_Test.h: Changed - - class Read_Handler : public ACE_Svc_Handler< - - to - - class Read_Handler : public ACE_Svc_Handler< - - and the same for the Write_Handler. Thanks to the ever vigilant - Stephen Coy for reporting this. - -Thu Oct 16 01:18:48 1997 Nanbor Wang - - * ace/OS.cpp (socket_init): Changed to use ACE_UNUSED_ARG. - - * ace/SV_Semaphore_Simple.cpp (name_2_key): Explicitly cast the - return value to (key_t). It was causing problem on Win32. - -Wed Oct 15 22:47:30 1997 Carlos O'Ryan - - * ace/ACE.h: - * ace/ACE.cpp: - Added an implementation of the ISO 8802-3 standard 32 bits CRC, - but for strings only. The implementation was taken from the - FreeBSD code. - - * ace/SV_Semaphore_Simple.cpp: Improved the hashing algorithm to - assign a "unique" key for semaphore keys using an string. This - solves a problem detected by Mark L. Boriack - (Mark.L.Boriack@cpmx.saic.com): under OSF/1 the were too many - collitions with the default arguments for ACE_Process_Mutex. - Note that this is only a problem if no name is given to it. - - * ace/Log_Msg.cpp: ACE_Log_Msg_message_queue_ was not initialized - in platforms without threads. - - * ace/Containers.h: Added a duplicate ACE_Ubounded_Stack_Iterator - to the NANBOR_EXP_CHANGES block. - - * ace/OS.h (ACE_DES_FREE_TEMPLATE): Removed unneeded concatenation - that was getting the HP/aCC compiler a bit confused. Thanks to - Stephen Coy for pointing out the problem - and then reminding me of actually adding the solution to ACE. - -Wed Oct 15 11:07:47 1997 Douglas C. Schmidt - - * ace/OS.i: Fixed the flock_trywrlock() and flock_tryrdlock() so - that they both set errno = EBUSY if they lock is already held. - - * ace/OS.i (mutex_trylock): Make the VxWorks version consistent - with the other versions by returning -1 and setting errno to - EBUSY. Thanks to David Levine for reporting this. - - * ace/Synch.h: Updated the documentation to clarify what the - return value is from the tryacquire() methods. - - * ace/OS.i (mutex_trylock): On NT, if we try to acquire a mutex - that's already locked we'll return -1 and set errno to EBUSY - rather than ETIME to be consistent with Pthreads. Please see - the following entry to understand why this doesn't break - existing code ;-). - - * ace/OS.h: Added a #define for EBUSY on NT. We'll make it the - same as ETIME to avoid breaking existing code! - - * tests/Process_Strategy_Test.cpp (main): Ignore SIGCHLD in the - child. - -Wed Oct 15 14:59:41 1997 - - * tests/run_tests.bat: Added Reactor_Performance_Test and - Notify_Performance_Test to one button test script. - - * tests/tests.dsw: Added Reactor_Performance_Test.dsp and - Notify_Performance_Test.dsp. - -Wed Oct 15 07:21:05 1997 David L. Levine - - * ace/ACE.{h,i},Version.h: added ACE version macros, and static - functions to access them in class ACE. - - * Makefile (release): updates ace/Version.h based on contents of - VERSION. - - * tests/Time_Value_Test.cpp: added test of ACE version accessors. - - * ace/OS.cpp,Object_Manager.cpp: changed ACE_TSS_CLEANUP_LOCK - from an ACE_Thread_Mutex to an ACE_Recursive_Thread_Mutex. - - * ace/OS.h: define ACE_NOTREACHED as empty on DEC_CXX (and - on ghs instead of VXWORKS). - - * tests/TSS_Test.cpp (worker): convert void *c to long if - ACE_HAS_64BIT_LONGS to avoid DEC cxx compiler warning. - - * examples/Threads/thread_specific.cpp (worker): convert void *c - to long if ACE_HAS_64BIT_LONGS. Changed name of "lock" to - "printf_lock" to avoid collision with lock () in DEC cxx - iostream.hxx. - - * examples/threads/tss1.cpp: removed unused static "lock". - - * examples/IPC_SAP/TLI_SAP/ftp-server.cpp (read_file): convert - void *fd to long if ACE_HAS_64BIT_LONGS. And, put "n" in - ACE_UNUSED_ARG. (main): put "return 0" in ACE_NOTREACHED. - - * include/makeinclude/platform_osf1_4.0.GNU: minor cleanup, incl. - addition of -use_ld_input to SOFLAGS. - - * include/makeinclude/platform_osf1_4.0_g++.GNU: added "c" to - ARFLAGS. - - * tests/Future_Test.cpp,examples/Threads/future[12].cpp - (Method_Object_Name): removed extraneous ";" after function - definition. - - * netsvcs/lib/Base_Optimizer.h: adding missing, default "public" - access specifier. - - * apps/JAWS/Server/HTTP_Config.h: added "class" to friend HTTP_Config - declaration in HTTP_Config_Info. - - * examples/IPC_SAP/TLI_SAP/ftp-client.cpp: removed unused variable - "MAXLINE". - - * examples/IPC_SAP/TLI_SAP/db-server.cpp (main): wrapped "return 0" - with ACE_NOTREACHED. - - * examples/Reactor/Misc/test_timer_queue.cpp (handle_timeout): - convert void *arg to long if ACE_HAS_64BIT_LONGS. - - * examples/Service_Configurator/IPC-tests/client/ - local_fifo_client_test.cpp: removed unused variable BUF_LEN. - - * examples/Shared_Malloc/test_persistence.cpp: - removed unused Employee ostream << operator. - - * tests/Conn_Test.cpp: neutered Conn_Test on DEC_CXX. It - doesn't build on DEC cxx 5.5 due to apparent template - instantiation problems. Thanks to James Johnson for - reporting that. And it doesn't terminate when built with - DEC cxx (beta) 6.0. - - * ace/Thread_Manager.h: removed parens from (???) because - g++ got upset about encountering a trigraph. - - * tests/{Notify,Reactor}_Performance_Test.cpp: added - ACE_UNUSED_ARG (handle). - - * tests/Makefile,run_tests.sh: added Reactor_Performance_Test and - Notify_Performance_Test. - - * tests/run_tests.vxworks: added test status of - Reactor_Performance_Test (doesn't appear to do anything, - but doesn't return) and Notify_Performance_Test (fcntl - not supported). - -Wed Oct 15 01:48:36 1997 Nanbor Wang - - * ace/Containers.{h,i,cpp}: - * ace/Thread_Manager.{h,i,cpp}: Start modifying these files. - Will work on them for a day or two. You guys shouldn't worry - about these changes affecting anything because I surround my - changes with #ifdef (NANBOR_EXP_CHANGES) my changes #else - original codes #endif. More details change log will be added - once I get them all working. - -Tue Oct 14 23:54:21 1997 Douglas C. Schmidt - - * ACE version 4.3.18, released Tue Oct 14 23:54:21 1997. - -Tue Oct 14 20:27:28 1997 Carlos O'Ryan - - * tests/Priority_Reactor_Test.cpp: - Added a debug message to find out who terminates the reactor - thread. - - * tests/Priority_Reactor_Test.cpp: - The children could not connect sometimes, this will cause the - test to hang, waiting for those failed connections. - I added a simple exponential backoff strategy to retry - connections until they succeed. - -Tue Oct 14 17:48:28 1997 Steve Huston - - * ace/config-hpux-10.x-hpc++.h: Set ACE_LACKS_SIGNED_CHAR for - both C++ and aC++, not just C++. Thanks to Stephen Coy and - David Levine for finding this. - -Tue Oct 14 03:26:17 1997 Douglas C. Schmidt - - * ace/OS.h: Moved to earlier in the file so that - u_int will be defined. Thanks to Neil B. Cohen - for reporting this. - - * ace/OS.cpp (uname): Added a workaround for the fact that - Chorus doesn't support uname(). Thanks to Wei Chiang for - this fix. - -Tue Oct 14 08:02:20 1997 David L. Levine - - * ace/Managed_Object.{h,cpp} (ACE_Cleanup_Adapter): added virtual - destructor, needed by some compilers for vtable placement. - Thanks to Stephen Coy for this patch. - - * ace/Svc_Conf_y.cpp: commented out unused args and wrapped - assignments in "if" conditionals to avoid g++ warnings. - - * ace/Object_Manager.{h,cpp},Synch.{h,cpp}: moved - ACE_Static_Object_Lock from Synch.{h,cpp} to Object_Manager.{h,cpp}. - This allows it to be absorbed into the ACE_Object_Manager's - preallocated locks. The ACE_Static_Object_Lock interface - isn't really needed any more, but has been kept for backward - compatibility. - - * ace/Object_Manager.cpp: use a static ACE_Static_Object_Lock, - temporarily, because the ACE static services needs it. - - * ace/Malloc.cpp,Reactor.cpp,Service_Repository.cpp: added - #include "ace/Object_Manager.h" for ACE_Static_Object_Lock. - - * ace/Thread_Manager.h: moved ACE_Thread_Manager::THR_FUNC typedef - outside the class declaration to avoid compilation problems on - g++/VxWorks/i960 with -g. THR_FUNC is only used by protected - ACE_Thread_Manager methods so this doesn't widen the public - interface. Thanks to Aaron Valdivia for - reporting this and verifying the fix. - - * tests/IOStream_Test.cpp (client): multiply floats by 1.0 instead - of 1 to avoid bad code generation on g++/VxWorks/i960. Thanks to - Aaron Valdivia for reporting this. - - * tests/Buffer_Stream_Test.cpp: removed unused static thread_manager. - It caused core dump during destruction of static objects with - ACE_HAS_NONSTATIC_OBJECT_MANAGER. - - * examples/Timer_Queue/Reactor_Timer_Queue_Test.cpp (handle_timeout): - removed declaration of unused arg "tv". - - * examples/Timer_Queue/Thread_Timer_Queue_Test.cpp (main): - removed declarations of unused args "argc" and "argv". And, - updated template instantiations. - - * ace/OS.h: use "complex" ACE_UNUSED_ARG for DEC_CXX. - - * ace/Reactor.i (implementation): moved definition to top of - file to prevent use before definition. - - * ace/ARGV.cpp (ACE_ARGV): removed extraneous ; function definition. - - * ace/config-osf1-4.0.h: removed ACE_NEEDS_DEV_IO_CONVERSION. - - * tests/Time_Value_Test.cpp: ACE_HAS_64BIT_LONGS instead of - ACE_HAS_64BIT_LONG. - -Tue Oct 14 03:13:38 1997 Douglas C. Schmidt - - * ACE version 4.3.17, released Tue Oct 14 03:13:38 1997. - -Tue Oct 14 03:10:00 1997 Douglas C. Schmidt - - * ace/Service_Types.cpp (fini): Backed out the following change - until we figure out how to keep existing Svc_Handler code from - dying... Thanks to Nanbor for reporting this. - - * ace/Service_Types.cpp: Changed the implementation so that we - bypass the default cleanup originally done in - ACE_Service_Type_Impl::fini() and instead perform the cleanup in - ACE_Service_Object_Type::fini (void). Thanks to Alex Chan - for reporting this. - - * ace/Svc_Conf.y: Make sure that the Module has the same name as - the Module_Type object from the svc.conf file. We need to do - this because the Stream_Type::fini() method removes each module - by the name given in the configuration file (stored in the - Module_Type object). But the Stream::remove() method compares - this name against the name stored in the Module. So the object - is deleted, but never removed from the list. Another traversal - of the list causes a crash... Thanks to Eric Newton for - suggesting this fix. - - * ace/OS.cpp (invoke): Added call to AfxEndThread insides - ACE_TSS_Cleanup::exit() such that the same cleanup would not be - executed again when threads exit in ace_thread_adapter() in - OS.cpp. Thanks to Alex Chan for - reporting this. - - * ace/Service_Config.cpp (process_directives): Avoid reporting - lex/yacc leakage since there is nothing we could do about it. - Thanks to Alex Chan for reporting this. - - * ace/Svc_Conf.y: Removed duplicate call to symbol() to avoid the - problem that dynamic service objects are created twice. Thanks - to Alex Chan for reporting this. - - * examples/Reactor/FIFO/client.cpp (main): Fixed the call to - fifo_sender.send () so that it passes msg rather than &msg. - Thanks to Sandro Doro for reporting this. - -Tue Oct 14 02:49:02 1997 - - * tests/Notify_Performance_Test.cpp: New performance test. This - test is used to time the notification mechanisms of the - ACE_Reactors. Both the WFMO_Reactor and Select_Reactor can be - tested. The notify() mechanism can also be tested with or - without data. - - * tests/Reactor_Performance_Test.cpp: New performance test. This - test is used to time the dispatching mechanisms of the - ACE_Reactors. Both the WFMO_Reactor and Select_Reactor can be - tested. - - * ace/Svc_Handler.cpp (shutdown): Change READ_MASK | WRITE_MASK to - ALL_EVENTS_MASK. - - * ace/Atomic_Op (value): Added an explicit value accessor. - -Mon Oct 13 23:07:15 1997 Douglas C. Schmidt - - * tests/Process_Strategy_Test.cpp (handle_signal): Removed the - ACE_DEBUG calls in the child reader signal handler. This was - causing all sorts of random problems due to the asynchronous - nature of signals. Thanks to David Levine for pointing this - out. - -Mon Oct 13 16:27:46 1997 Carlos O'Ryan - - * tests/Priority_Reactor_Test.h: - * tests/Priority_Reactor_Test.cpp: - Fixed wrong header file, thanks to Irfan (irfan@cs.wustl.edu) - - * examples/Shared_Malloc/test_persistence.cpp: - * examples/Timer_Queue/Thread_Timer_Queue_Test.cpp: - Added a couple of ACE_NOTREACHED, thanks to Torbjorn Lindgren - for pointing out this one. - - * ace/Priority_Reactor.cpp: - Added some more template specializations. - - * tests/Priority_Reactor_Test.cpp: - Fixed a number of bugs: hostname not initialized when creating - the server address. - The Svc_Handler base class should be instantiated using the - ACE_*_STREAM macros. - The code for non-threaded platforms was broken. - Thanks to Irfan - - * tests/Priority_Task_Test.cpp: - We use the new ACE_Sched_Priority_Iterator. - - * include/makeinclude/platform_irix6.x-32_sgic++.GNU: - * include/makeinclude/platform_irix6.x-n32_sgic++.GNU: - Removed this old config files, they have been superseeded by - platform_irix6.x_sgic++.GNU. - -Mon Oct 13 15:41:32 1997 Steve Huston - - * ace/Select_Reactor.i, Priority_Reactor.i: Moved code for the - ACE_Event_Tuple struct from Priority_Reactor.i to Select_Reactor.i. - - * ace/Priority_Reactor.cpp: added #include Malloc_T.h to build on AIX. - - * ace/Synch_T.h, Timer_Queue_Adapters.h - added a template argument - to the non-ACE_HAS_TEMPLATE_TYPEDEFS, multi-threaded version of - the ACE_SYNCH_CONDITION macro - of the 3 possibilities for its - definition, this is the only case which requires a template - argument. Timer_Queue_Adapters.h is the only user of the definition, - and it was changed to not supply the template argument. - - * tests/Conn_Test.h: - * tests/Process_Strategy_Test.h: Added #include "ace/SOCK_Stream.h" - -Mon Oct 13 13:42:05 1997 Nanbor Wang - - * examples/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.cpp (svc): - Added a macro to define L_cuserid on Win32. - -Mon Oct 13 13:44:40 1997 - - * ace/Priority_Reactor: Fixed a gross violation of ACE coding - standard. Changed bucket to bucket_. - -Mon Oct 13 12:58:01 1997 David L. Levine - - * ace/OS.i: moved ACE_OS::strcasecmp () definition after - ACE_OS::strlen () to prevent use before definition. - - * ace/Priority_Reactor.i: reordered initializers to match - declaration order. - - * ace/Sched_Params.i: reordered function definitions to prevent - uses before definitions. - - * ace/Thread_Manager.cpp (ACE_Thread_Descriptor ctor): reordered - initializers to match declaration order. (spawn_i): added - ACE_UNUSED_ARG (t_handle) without WTHREADS. - - * ace/Thread_Manager.cpp (wait): moved all of the "join" block - inside the #ifndef VXWORKS so that it compiles on VxWorks. - - * ace/Strategies_T.cpp (ACE_NOOP_Creation_Strategy:: - make_svc_handler): removed unused arg declaration to avoid - compiler warning. - - * ace/Svc_Conf_y.cpp: commented out unused args and wrapped - assignments in "if" conditionals to avoid g++ warnings. - - * tests/Priority_Reactor_Test.cpp (handle_input): added - ACE_UNUSED_ARG (h). - - * examples/Connection/non_blocking/CPP-connector.cpp (handle_signal): - added ACE_UNUSED_ARG (signum). - -Mon Oct 13 03:25:45 1997 Douglas C. Schmidt - - * ACE version 4.3.16, released Mon Oct 13 03:25:45 1997. - -Mon Oct 13 03:18:33 1997 Douglas C. Schmidt - - * ace/Thread_Manager.h: Removed the following code from - ACE_Thread_Control: - - #if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0) - static ACE_Thread_Mutex ace_thread_lock_; - // Lock the creation of the Singleton. - #endif /* defined (ACE_MT_SAFE) */ - - What on earth was this doing here?! Thanks to Stephen Coy - for reporting this. - -Mon Oct 13 00:10:00 1997 - - * tests/Atomic_Op_Test.cpp (main): Changed "foo == 5L" to - "foo.operator== (5L)" because the former was breaking some - compilers (e.g., HP/UX aCC). - - * ace/Connector.h (open): Removed the defaults arguments since - some compilers complain about the two open()s being - indistinguishable. - -Sun Oct 12 23:51:57 1997 Douglas C. Schmidt - - * ace/{Synch_T,Atomic_Op}: All the relational operators should - return int (really return bool) rather than TYPE. - -Sun Oct 12 18:41:01 1997 Carlos O'Ryan - - * tests/Priority_Reactor_Test.cpp: - Added several missing template specializations. - - * ace/Priority_Reactor.cpp: - Fixed typo (#pragme for #pragma). - Added several missing template instantiation. - - * ace/Timer_Queue_Adapters.cpp: - The includes were missing and there was a minor syntax error. - -Sun Oct 12 16:16:15 1997 Nanbor Wang - - * ace/ace_{dll,lib}.dsp: Added Timer_Queue_Adapters.cpp into - project files. - - * tests: Added a new test Priority_Reactor_Test. - - * ace/Timer_Queue_Adapters.{h,i}: Added or moved the line that - instructs edit mode to use on emace to the first line. Also - added ACE_Export to classes in this file. - - * ace/Timer_Queue_Adapters.cpp: Added proper inclusion of the - header file. Corrected a syntax error. - - * examples/Timer_Queue/Timer_Queue.dsw: Added a new project - Thread_Timer_Queue_Test.dsp. - - * tests/run_tests.{bat,sh}: Added MT_SOCK_Test and - Priority_Reactor_Test into one-buttoned test set. - -Sun Oct 12 16:53:32 1997 Douglas C. Schmidt - - * ace/examples/Service_Configurator/IPC-tests/server: Reformatted - and recommented the code a bit. - - * ace/OS: Added 3 new ACE #defines: - - #define ACE_ONE_SECOND_IN_MSECS 1000L - #define ACE_ONE_SECOND_IN_USECS 1000000L - #define ACE_ONE_SECOND_IN_NSECS 1000000000L - - This is much easier to read than trying to keep track of the - 000s! Then, replaced all uses of the original values with the - new symbolic constants. - - * ace/Timer_List.cpp: Removed an explicit template instantiation - of ACE_Async_Timer_Queue_Adapter<>. Why was it here in the - first place? - - * ace: Created a new group of Timer_Queue_Adapters files and moved - the Async and Thread adapters into this file. This reduces the - amount of coupling in the ACE library and removes problems with - circular includes. - - * ace/Timer_Queue_T: Added a new ACE_Thread_Timer_Queue_Adapter, - which makes it possible to use a timer queue in a thread - automagically. Thanks to Carlos O'Ryan for writing this. - - * examples/Timer_Queue: Began to integrate Carlo's new thread - timer queue test. - - * examples/Timer_Queue/Async_Timer_Queue_Test.cpp: Changed the - timer queue from a Timer_List to a Timer_Heap. - - * examples/Makefile (DIRS): Added Timer_Queue to the list of DIRS - to build. - -Sun Oct 12 16:45:47 1997 Carlos O'Ryan - - * ace/Sched_Params.h: - Added some comments. - - * examples/Timer_Queue/Thread_Timer_Queue_Test.cpp: - Added some comments and template specializations. - - * examples/Naming/Makefile: - There is no need to set LDLIBS to add local object files - anymore, using FILES is enough. - -Sun Oct 12 03:35:37 1997 Nanbor Wang - - * examples/Timer_Queue: Added a new directory for testing of - various usages of timer queue. - - * tests/Async_Timer_Queue_Test: Moved to examples/Timer_Queue. - It doesn't really belong to tests/ directory. - - * ace/ACE.cpp (register_stdin_handler): Must register the reactor - we are using to the event handler. - (read_adapter): Must notify the reactor when we are done with - handling stdin event. - -Sun Oct 12 00:26:56 1997 Carlos O'Ryan - - * ace/Makefile: - * ace/Priority_Reactor.h: - * ace/Priority_Reactor.i: - * ace/Priority_Reactor.cpp: - Augmentes Select_Reactor, adding priority based dispatching for - the I/O Event_Handlers, the only feature supported is - dispatching in the order defined by the priorities. - Each Event_Handler defines its priority, if the priority is out - of range the culprit is "punished" by dispatching at the lowest - priority. - Care has been exercised to avoid dynamic memory allocation. - - * tests/Makefile: - * tests/Priority_Reactor_Test.h: - * tests/Priority_Reactor_Test.cpp: - Added small tests of the Priority_Reactor, the test runs an - Acceptor on the main thread and creates several threads (or - processes if the plaform does not support threads) that connect - to this Acceptor. The writing threads send several short - messages, the main thread receives them using one Svc_Handler - per writer, dispatched at different priorities. - The test itself is interesting, it shows how to write very - simple Svc_Handler, Connectors and Acceptors. - - * ace/Select_Reactor.h: - * ace/Select_Reactor.cpp: - The dispatching of all the handles in a "group" (READ, WRITE or - EXCEPT) was encapsulated in a single routine. - - * ace/Malloc_T.cpp: - In the Cached_Allocator memory was allocated as an arrays of - char, it must be released the same way. - - * ace/Sched_Params.h: - * ace/Sched_Params.i: - Added a new class (ACE_Sched_Priority_Iterator) to iterate over - the priorities. - - * tests/Priority_Task_Test.cpp: - Added some comments. - -Sat Oct 10 16:23:49 1997 Steve Huston - - * tests/SOCK_Connector_Test.cpp: Passes the test if the should-fail - non-blocking test fails for any reason - not limited to ECONNREFUSED - or ENOTCONN. - -Sat Oct 11 16:02:33 1997 Douglas C. Schmidt - - * ACE version 4.3.15, released Sat Oct 11 16:02:33 1997. - -Sat Oct 11 14:38:16 1997 Douglas C. Schmidt - - * ace/SOCK_Connector.cpp (complete): Fixed a typo with - ACE_NON_BLOCKING_BUG_DELAY. Thanks to John Zeb Dhom" - for reporting this. - - * tests/MT_SOCK_Test.cpp (client): Slightly revised the client - function so that it doesn't try to use non-blocking connects if - it's on a Win32 platform that has bugs with non-blocking - connects. - - * ace/SOCK_Connector.cpp: It appears that connect() can set the - ETIMEDOUT errno if the connection times out (whatever that - means). Therefore, I need to check for that errno, rather than - ETIME after calling connect(). - - * tests/SOCK_Connector_Test.cpp: Added a check for ETIMEDOUT - since this appears to be set by some platforms (e.g., - SGI). - -Sat Oct 11 02:52:10 1997 Douglas C. Schmidt - - * ACE version 4.3.14, released Sat Oct 11 02:52:10 1997. - -Sat Oct 11 02:10:29 1997 Carlos O'Ryan - - * examples/Logger/simple-server/Makefile: - * examples/Mem_Map/IO-tests/Makefile: - * examples/Reactor/Multicast/Makefile: - * examples/Service_Configurator/Misc/Makefile: - Fixed some more problems with the Makefiles for binaries; I took - the chance and added RCS ids on the Makefiles - -Fri Oct 10 18:39:39 1997 Douglas C. Schmidt - - * tests/Service_Config_Test.cpp: Moved the static member function - called cleanup() out into a stand-alone extern "C" function - called test_singleton_cleanup() to workaround MVS C++ compiler - bugs. Thanks to Chuck Gehr for reporting this. - - * ace/Task.cpp: Solved the age old MVS C++ problem where we can't - register C++ static member functions as C callback functions. - The solution here was to create a C wrapper to do the callback. - Thanks to Chuck Gehr for reporting this. - - * tests/Service_Config_Test.cpp: Made the destructor of - Test_Singleton public to work around bugs with the MVS C++ - compiler. Thanks to Chuck Gehr for reporting this. - - * ace/ACE, - ace/Proactor, - ace/SOCK_Connector, - ace/SPIPE_Connector, - ace/Acceptor, - tests/Conn_Test: Changed ETIMEDOUT errno to ETIME errno to be - consistent throughout ACE. There should be no uses of - ETIMEDOUT in ACE or the test apps and examples. - - * ace/ACE.cpp (handle_timed_complete): Only assume that we've - timed out if the return value from select() == 0 *and* the - timeout value isn't NULL... - - * ace/Object_Manager.h: Replaced the use of ACE_MT() in the header - file with a #ifdef. This solves problems that arise when ACE_MT - is defined as "nothing" when MT_SAFE is not defined. As a code - which has "ACE_MT();" becomes just ";" and fail to compile. - Thanks to Avraham Nash for reporting - this. - -Fri Oct 10 19:55:50 1997 Carlos O'Ryan - - * examples/ASX/CCM_App/Makefile: - * include/makeinclude/rules.bin.GNU: - I have re-applied Steve Huston changes from Oct 01, the change - was (IMHO) useful and made compilation cleaner. - - * examples/ASX/Event_Server/Event_Server/Makefile: - Fixed problem that made compilation fail. - -Fri Oct 10 19:52:44 1997 - - * ace/OS.h: - * ace/Connector.cpp: - * ace/SOCK_Connector.cpp: Added new #define - ACE_NON_BLOCKING_BUG_DELAY and replace their uses from some - magic numbers to this constant. - -Fri Oct 10 19:27:28 1997 Steve Huston - - * include/makeinclude/rules.bin.GNU - examples/ASX/CCM_App/Makefile - Removed the changes to these files added Oct 01. - -Fri Oct 10 15:21:07 1997 - - * examples/Connection/non_blocking/CPP-connector.cpp - (disconnecting): Remove this method. It was not being used. Also - rewrote some parts of handle_close to make the code simple. - - * ace/Connector.cpp (create_AST): The register_handler() method - now needs to explicitly be given the handle to wait on. This is - because the get_handle() method of Connector has been - depricated. - - * examples/Connection/non_blocking/test_sock_connector.cpp (main): - Since this test waits on the STDIN handle to become ready, we - have to make sure that the WFMO_Reactor is used on Win32. This - is necessary since select() on NT does not support waiting on - STDIN. - - * examples/Connection/non_blocking/CPP-connector.cpp (open): On - Win32, the std handle must be registered directly (and not as a - socket). On non-Win32, the std handle must be registered as a - normal handle with the READ mask. Since on Win32, STDIN is used - directly as an waitable handle, handle_signal will be called - instead of handle_input. Therefore, we had to add handle_signal - to the event_handler. - -Fri Oct 10 15:16:47 1997 Nanbor Wang - - * ace/WFMO_Reactor.{h,cpp}: - * ace/Select_Reactor.{h,cpp}: - * ace/Reactor_Impl.h: - * ace/Reactor.h: Added 2 new functions in ACE_Reactor class so we - can replace the signal handler and timer queue the reactor is - using. Notice that you should do this before you start the - reactor, otherwise, you may loose your scheduled timed events. - -Fri Oct 10 14:49:40 1997 Douglas C. Schmidt - - * bin/man2html: Added a new set rul -e 's/^$/

    /g', which - correctly preserves paragraph boundaries. Regenerated all of - the ACE html documentation so that it is much better formatted. - -Fri Oct 10 11:08:02 1997 Carlos O'Ryan - - * tests/run_tests.sh: - We remove the log file before running a test, we also check for - the log file existance before running run_test.check on - it. Thanks to Dean Clamons for - helping us with this. - - * tests/run_tests.check: - IRIX egrep does not support -q, we redirect the output the - /dev/null instead. - -Fri Oct 10 01:46:07 1997 Douglas C. Schmidt - - * ACE version 4.3.13, released Fri Oct 10 01:46:07 1997. - -Thu Oct 9 22:23:56 1997 Douglas C. Schmidt - - * ace/Thread_Manager.cpp: Moved the explicit template - instantiations for ACE_Unbounded_Queue out of the complicated - #ifdef since we also want this to compile even if we don't have - threads. - - * tests/MT_SOCK_Test.cpp: Revised the code so that it uses - processes on UNIX rather than threads. - - * tests/SOCK_Test.cpp (spawn): Cleaned up the code to make it - correct. - - * ace/Get_Opt.cpp (ACE_Get_Opt): Changed the third argument to the - ACE_Get_Opt constructor be changed from `char *' to `const char - *'. Thanks to Eric Newton for suggesting this. - -Thu Oct 09 18:43:14 1997 - - * ace/Strategies_T.cpp (connect_svc_handler): Added - synchronization to the method as the setting of the in_use bit - in the service handler must be done atomically with the finding - and binding of the service handler in the cache. - - * tests/Conn_Test.cpp (client_connections): Added multithreading - to the test in order to test out the new MT features of the - Connector. - - * ace/OS.cpp (invoke): Somehow there was a bug introduced in - ACE_Thread_Adapter::invoke where the user entry point was being - called twice! - -Thu Oct 09 17:54:31 1997 Douglas C. Schmidt - - * ACE version 4.3.12, released Thu Oct 09 17:54:31 1997. - -Thu Oct 9 17:46:59 1997 Carlos O'Ryan - - * ace/Thread_Manager.cpp: - Added explicit instantiation of - ACE_Unbounded_Queue_Iterator, it seems to - be needed on Linux and other platforms; thanks to Huiying Shen - for pointing out this one. - - * ace/OS.h: - * ace/OS.i: - Reverted the change that added support for - pthread_setconcurrency on IRIX, the function was supposed to be - undocumented, but present on the libraries, I could not find it - in any of the SGI machines we have access to. - - * ace/Thread_Manager.cpp: - On IRIX/SGIC++ we need to instantiate ACE_Node too. - - * ace/SOCK.h: - Moved the open() method to the public interface, it is used by - ACE_SOCK_Connector. - -Wed Oct 8 20:01:35 1997 Douglas C. Schmidt - - * ace/SOCK_Connector: Modified the ACE_SOCK_Connector so that it - doesn't maintain state and doesn't inherit from ACE_SOCK. - Therefore, we can have multiple threads using the same - ACE_SOCK_Connector simultaneously without any reentrancy - problems. - - * ace/SOCK.h: Moved the open() method into the public part of the - class so it can be used in ACE_SOCK_Connector::connect(). - - * ace/Connector.h: Removed the this->connector_ from the - ACE_Connector class in order to make this pattern work correctly - with multi-threaded programs. Also removed the connector() - accessor (which was never useful anyway). - - * ace/SOCK.cpp (open): Explicitly test setsockopt() for -1 in case - of failure. - - * tests/SOCK_Test.cpp (server): Revised this test to reflect the - fact that it doesn't iterate, but only runs one client and one - server. - - * tests: Added a new test for multi-threaded sockets called - MT_SOCK_Test.cpp. Thanks to Bob Laferriere - for motivating this test. - -Wed Oct 8 12:09:46 1997 Nanbor Wang - - * ace/OS.i (strcasecmp): Oops, we forgot to compare the strlen - first. Thanks to Murphy Ivan for - fixing the bug. - - * ace/OS.h: Added THR_DAEMON macro definition for Win32 (et. al.?) - to avoid compilation error. - Removed ACE_HAS_BROKEN_TEMPLATE_DESTRUCTOR and related macros. - -Wed Oct 8 09:52:20 1997 Carlos O'Ryan - - * ace/Parse_Node.cpp: - Fixed the minor syntax error *again*. - -Tue Oct 7 17:10:51 1997 Carlos O'Ryan - - * ace/Token_Manager.cpp: - Added a defined(ACE_MT_SAFE) protection around the lock creation - on ACE_Token_Manager::instance(), otherwise it would not work on - platforms without threads. Thanks to "Neil B. Cohen" - for pointing this one out. - -Tue Oct 7 07:07:45 1997 Douglas C. Schmidt - - * ace/Parse_Node.cpp (symbol): Added an ACE_ERROR_RETURN instead - of an ACE_RETURN to bail out if an error occurs. Thanks to Eric - Newton for reporting this. - -Tue Oct 7 10:57:48 1997 Carlos O'Ryan - - * ace/OS.h: - Added a prototype for pthread_setconcurrency when - ACE_HAS_IRIX62_THREADS is defined. This function is undocumented - but was needed by some users. - - * ace/Parse_Node.cpp: - Fixed a minor syntax error. - -Tue Oct 07 06:58:40 1997 Douglas C. Schmidt - - * ACE version 4.3.11, released Tue Oct 07 06:58:40 1997. - -Tue Oct 7 02:51:55 1997 Nanbor Wang - - * tests/TSS_Test.cpp (main): - * tests/Task_Test.cpp (main): - * tests/Barrier_Test.cpp (main): Removed thread_handles[] since we - don't need to join the thread explicitly anymore. - - * ace/Thread_Manager.{h,cpp}: Added an ACE_Unbounded_Quque to - collect terminated threads so that we can later join the threads - automatically by issuing a ACE_Thread_Manager::wait(). Some - typos are also fixed. Next step will be to replace current - thr_table_ with a hash table and store an index to this table - in TSS. - -Mon Oct 6 22:16:45 1997 Douglas C. Schmidt - - * ace/Thread_Manager: Added a new task() method to - ACE_Thread_Manager that returns a pointer to the current - ACE_Task_Base we're executing in if this thread is indeed - running in an ACE_Task_Base, else return 0. Thanks to Ari Erev - and John Neystadt for suggesting this. - - * ace/Thread_Manager: Moved the task_ pointer from the public part - of the ACE_Thread_Descriptor class into the private part of the - class and added an inline accessor instead. - - * ace/{Parse_Node.{h,cpp},Svc_Conf.y}: Added support to enable - dynamically allocate objects from factory functions that have - been pre-registered with the Service Configurator instead of - relying on dynamic loading. The new config file syntax would be - (note the colons): - - dynamic joe Service_Object * : make_queue() active - dynamic bob Service_Object * : make_queue() active - - Functions are found in the list of statically defined functions - for static services. Thanks to Eric C. Newton - for this fix. - -Mon Oct 6 13:00:19 1997 Carlos O'Ryan - - * ace/CORBA_Handler.cpp: Removed the use of reactor_ in the .cpp - file too; we are using the ACE_Event_Handler reactor_ (which is - a base class). - -Sat Oct 04 17:40:30 1997 Douglas C. Schmidt - - * ACE version 4.3.10, released Sat Oct 04 17:40:30 1997. - -Sat Oct 4 11:57:25 1997 Douglas C. Schmidt - - * apps/Orbix-Examples/Event_Comm/{Supplier,Consumer}/Makefile: - Changed a typo where /src/ was being used instead of /libsrc/. - Thanks to Jean-Marc STRAUSS for reporting - this. - - * examples/Connection/non_blocking/CPP-connector.cpp (init): - Removed the initialization of the local address. This is - error-prone and confusing to use. Thanks to Huiying Shen - for reporting this. - - * ace/SV_Semaphore_Simple: Added support for IPC_EXCL in order to - determine, upon creating the semaphore, if it already exists - (which means a bad key was selected), another daemon is still - running or the previous daemon didn't remove its resources. I - have this implemented now by first opening the semaphore and if - that fails then creating it. To support this, added another - enum, ACE_EXCL = IPC_EXCL, to the class header. - Also, changed the ACE_SV_Semaphore_Simple::open( key_t, ... ) - method to use - - if (ACE_BIT_ENABLED (flags, IPC_CREAT)) - - rather than - - if (flags == IPC_CREAT) - - Thanks to Michael McKnight for - reporting this. - - * ace: Replaced all uses of the template param LOCK with ACE_LOCK - to avoid conflicts with some systems that have a macro named - LOCK. - - * ace/IOStream_T.h: Added ACE_LACKS_ACE_IOSTREAM to the - IOStream_T.* files. Thanks to Torbjorn Lindgren - for reporting this. - - * ace/{Proactor,Service_Config,ACE_Sig_Handler}: Removed the use - of sig_atomic_t as a return type. Thanks to Torbjorn Lindgren - for reporting this. - -Sat Oct 04 03:14:46 1997 - - * ace/WFMO_Reactor.cpp (add_network_events_i): While looking - through all entries in the current (and suspended) handles for a - matching handle, we need to skip those that have been scheduled - for deletion). Also changed ACE_BIT_STRICTLY_ENABLED to - ACE_BIT_ENABLED. - - * ace/Select_Reactor.cpp (bit_ops): Since CONNECT is no longer a - logical OR of READ and WRITE, we have to explicitly make sure - that enable the handle in the correct wait sets. - - * ace/Event_Handler.h: Changed the values of the event - masks. CONNECT is no longer a logical OR of READ and WRITE. It - was its own unique value. - - * ace/OS.h: Removed ACE_BIT_STRICTLY_ENABLED. It did not do what I - thought it would do. - - * ace/Connector.cpp (handle_output): Added code that tries to find - out if the reactor uses event associations for the handles it - waits on. If so we need to reset it. This is necessary for - asynchronous connects. - - * ace/SOCK_Connector.i (reset_new_handle): Added new method on all - connectors to reset event associations of handles. - -Fri Oct 03 21:20:26 1997 David L. Levine - - * ace/Makefile: disable INSTALL in $(ACE_ROOT)/ace Makefile, - because it's not needed and it creates circular symlinks when - the library build fails. - -Fri Oct 3 11:39:45 1997 Douglas C. Schmidt - - * ace/Thread_Manager: Added a new flags_ field to - ACE_Thread_Descriptor and changed the insert_thr() and - append_thr() methods to update this flag so that we can keep - track of whether the thread was created "detached" or not. - - * ace/Reactor.cpp (event_loop_done): Replaced the use of - sig_atomic_t with int to workaround bugs with KAI C++. Thanks - to Torbjorn Lindgren for reporting this. - - * ace/CORBA_Handler: Removed the reactor() accessors since they - are subsumed by the methods in ACE_Event_Handler. Thanks to - Jean-Marc STRAUSS for reporting this. - -Thu Oct 02 15:38:34 1997 - - * Reactor: Renamed reset_new_handle to uses_event_associations. - - * ace/FIFO_Recv.cpp (ACE_FIFO_Recv): aux_handle_ must correctly be - initialized to ACE_INVALID_HANDLE. Thanks to Sandro Doro - for reporting this. - -Thu Oct 02 11:21:37 1997 Steve Huston - - * include/makeinclude/platform_{aix aix4.2}.GNU: added the - shared_libs_only = 0 and static_libs = 1 settings since C Set++ - builds the shared libs from the static. - - * ace/OS.h: Removed spaces around '##' in ACE_DES_FREE_TEMPLATE macro. - - * ace/Strategies_T.cpp: added #include "ace/Thread_Manager.h" - - * ace/Managed_Object.h: Added template arg in the "unimplemented - function" section. - -Thu Oct 02 10:46:18 1997 Steve Huston - - * ace/Malloc.h: added some comments on rationale and use of - ACE_MALLOC_ALIGN. - -Wed Oct 01 19:08:26 1997 Steve Huston - - * include/makeinclude/rules.bin.GNU: correctly builds programs - with multiple object modules. - - * examples/ASX/CCM_App/Makefile: needed some adjustment to work with - new rules.bin.GNU, above. - -Wed Oct 01 14:11:03 1997 - - * ace/Remote_Name_Space.cpp (resolve): We need to allocate one more - space than what strlen reports. - -Wed Oct 01 12:45:51 1997 David L. Levine - - * ace/ACE.cpp (count_interfaces, get_handle): changed "unix" to - "__unix" because DEC CXX doesn't #define "unix". Thanks to - Billy Quinn for reporting this. - - * ace/High_Res_Timer.h: added comment from Gabe - about ACE_OS::gethrtime () drift on MP - machines. - - * ace/OS.i (gethrtime, Solaris only): removed ACE_OSCALL_RETURN - wrapper around ::gethrtime () because it was broken (the type - was int) and not necessary (::gethrtime () should never fail), - so we can remove its overhead. - - * tests/Time_Value_Test.cpp: undef ACE_NO_INLINE in the - ACE_U_LongLong test hacks. - - * tests/SV_Shared_Memory_Test.cpp: delay construction of allocator - until first needed because it needs something that the - ACE_Object_Manager constructs. - - * tests/run_tests.vxworks: added console printout before each test. - -Tue Sep 30 21:42:58 1997 Douglas C. Schmidt - - * ACE version 4.3.9, released Tue Sep 30 21:42:58 1997. - -Tue Sep 30 17:15:14 1997 James C Hu - - * ace/Filecache.{h,cpp}: I removed the static locks in the - Filecache and made them local member objects. Since Filecache - is usually a singleton, no more memory is required this way. - - * tests/Hash_Map_Manager_Test.cpp: Added some code to test the - Hash_Map_Manager_Iterator. This is to show Bob Laferriere that - it works. - -Tue Sep 30 13:41:14 1997 Nanbor Wang - - * examples/Service_Configurator/IPC-tests/server/Handle_R_Stream.i - (handle_input): - * examples/Reactor/ReactorEx/test_network_events.cpp (handle_input): - * examples/Logger/simple-server/Logging_Acceptor.cpp - (handle_input): Changed to use reset_new_handle () for querying - whether we need to reset handles or not. - -Tue Sep 30 08:35:15 1997 David L. Levine - - * ace/Atomic_Op.i: added CVS header. - - * ace/Object_Manager.{h,cpp}: removed Filecache arrays, because - Filecache no longer needs them. - - * ace/Filecache.{h,cpp}: removed unused static Filecache::lock_. - - * tests/test_config.h: Added 1 second sleep to ACE_END_TEST to - allow all threads to terminate gracefully. - VxWorks only: removed the hack removal of the log file, because - it no longer appears to be necessary. - - * tests/TSS_Test_Errno.h,TSS_Test.cpp: dynamically allocate - Errno::lock_ to try to avoid problem with cleanup of statics - on VxWorks. It doesn't solve the problem, all of the time. - There are still statics in the ACE library, which could be - causing it. - -Tue Sep 30 01:35:28 1997 Nanbor Wang - - * ace/Naming_Context.cpp (close, close_down): Separated these two - functions calls. Close now only release the name_space_ - resource and close_down release all resources. Close should be - use when changing the name_space. - -Mon Sep 29 22:29:46 1997 Nanbor Wang - - * ace/Strategies_T.cpp (accept_svc_handler ): - * ace/Service_Manager.cpp (handle_input): - * ace/Acceptor.cpp (handle_input, accept_svc_handler): Changed to - use reset_new_handle () for querying whether we need to reset - handles or not. - - * ace/Reactor.{h,i} (reset_new_handle): - * ace/Reactor_Impl.h (reset_new_handle): - * ace/Select_Reactor.{h,i} (reset_new_handle): - * ace/WFMO_Reactor.{h,i} (reset_new_handle): Added this new method - so we can determine whether the implementation of the reactor - requires us to decouple the event a handle inherit from accept. - This scheme doesn't depend on the RTTI support of compilers. - Thanks to Irfan for the tips. - -Mon Sep 29 21:28:02 1997 - - * ace/Synch (ACE_Recursive_Thread_Mutex): Methods were added to - ACE_Recursive_Thread_Mutex so that it has a consistent interface - with other locking mechanisms. Thanks to Phil Logan - for submitting these changes. - -Mon Sep 29 13:28:05 1997 David L. Levine - - * ace/OS.i (thr_setconcurrency): added support on Irix 6.x, using - its ::pthread_setconcurrency (). Thanks to Felix Popp - for letting us know - about this Irix 6.2/3 system function, and for testing it out. - - * ace/ACE.cpp (handle_timed_complete) force recv check on VxWorks - because its read handle is always not set. Thanks to Steve for - helping track down the problem. We might want to consider doing - it this way on Unix platforms, as well, according to Steve. - - * apps/JAWS/server/HTTP_Server_T.cpp (accept): fixed typo, - "remote_address" instead of "remote_adrress". - - * tests/Time_Value_Test.cpp (test_ace_u_longlong): replaced - ACE_ASSERTs with calls to a static function that prints out - why the test failed. Also, disabled test of ACE_U_LongLong - if ACE_HAS_64BIT_LONG. - - * ace/OS.h: 1) Use u_long for ACE_hrtime_t if ACE_HAS_64BIT_LONGS. - 2) Added ACE_NO_INLINE support to allow wrapper_macros.GNU to - disable inlining from the command line. 3) Added - ACE_HAS_VERBOSE_NOTSUP support. - - * include/makeinclude/wrapper_macros.GNU: added "inline" flag to - allow enabling/disabling of inlining from the command line or - platform_macros.GNU. - - * ace/config-vxworks*.h: added ACE_HAS_VERBOSE_NOTSUP. - -Mon Sep 29 11:15:10 1997 Nanbor Wang - - * ace/OS.h (ace_cleanup_destroyer): Made this an export function. - -Sat Sep 27 17:04:48 1997 - - * ace/Reactor: Added new methods to be able to set and get the - implementation class being used by the reactor. The set method - is protected and should be used with care, specially while - changing the implementation class midway through an - application. Also both the methods are virtual, and user can - subclass to change their behavior. The internal code of the - reactor also changed to now use these methods exclusively rather - than the the raw data variables. - - * ace/Acceptor.cpp (handle_input): When using the WFMO_Reactor, we - need to reset the event association for the newly created - handle. This is because the newly created handle will inherit - the properties of the listen handle, including its event - associations. Therefore two changes were made: - - - A new directive (flag) was added to all the acceptors - (LSOCK_Acceptor, SOCK_Acceptor, SPIPE_Acceptor, TLI_Acceptor, - and UPIPE_Acceptor) to reset the event associations of the - newly created handle. Currently only the SOCK_Acceptor pays - attentions to this directive, others just ignore it. This flag - had to be added to all the acceptors for interface - compatibility and also to make sure that the Acceptor template - code works correctly. - - - A dynamic_cast was necessary to determine at run-time which - implementation of the Reactor we are using. But because this - code is limited to Win32, there should be no problems doing - the dynamic_cast. - - The same thing as above needed to be done to: - - - ACE_Accept_Strategy::accept_svc_handler (ace/Strategies_T.cpp) - - - ACE_Service_Manager::handle_input (ace/Service_Manager.cpp) - - - LOCK_SOCK_Acceptor::accept (apps/JAWS/server/HTTP_Server_T.h) - - - Logging_Acceptor.cpp::handle_input (examples/Logger/simple-server/Logging_Acceptor.cpp) - - - Network_Listener::handle_input (examples/Reactor/ReactorEx/test_network_events.cpp) - - - Handle_R_Stream::handle_input (examples/Service_Configurator/IPC-tests/server/Handle_R_Stream.i) - -Sat Sep 27 20:03:29 1997 Carlos O'Ryan - - * include/makeinclude/platform_sunos5_sunc++_orbix.GNU: - Activated exceptions by default too, since they are used by - Orbix anyway. - - * include/makeinclude/platform_sunos5_sunc++.GNU: - Some libraries were missing and the locations were not - completely accurate. - - * ace/config-sunos5.5-sunc++-4.x-orbix.h: - I let the MT Orbix as the default, since that is the - configuration here and that was implicit in the platform*.GNU - files. - - * include/makeinclude/wrapper_macros.GNU: - Added flags to the IDL compiler to emit support for both - CORBA::Any (-A) and the BOAImpl (-B) approach for the server - side implementations. - - * ace/CORBA_Handler.cpp: - The full definition for Thread_Manager was missing, I added an - include for it. - -Sat Sep 27 07:59:18 1997 David L. Levine - - * include/makeinclude/wrapper_macros.GNU, - platform_{chorus,lynxos,vxworks*}.GNU: - default to building shared libs only, except on Chorus, - LynxOS, and VxWorks. While the "shared_libs_only=1" make - flag is still supported, it is no longer necessary because - it is the default. - - To revert to the prior behavior of building both shared and - static libraries, add "static_libs=1" to either your make - command invocation or your include/makeinclude/platform_macros.GNU. - -Sat Sep 27 00:45:10 1997 Nanbor Wang - - * examples/OS/Process/README (imore): - * examples/OS/Process/Makefile: - * examples/OS/Process/imore.cpp: Added a new example: imore. - - * ace/SOCK_Stream.cpp (close, close_reader, close_writer): Moved - invalid handlers checking from close to close_reader and - close_writer. - -Fri Sep 26 14:28:36 1997 Nanbor Wang - - * tests/SPIPE_Test.cpp: - * tests/Process_Strategy_Test: Changed the macro "ACE_LACKS_EXEC" - to "ACE_LACKS_FORK". - - * ace/SOCK_Stream.cpp (close): Added checking for invalid handle - before shutting down the write end. - -Fri Sep 26 11:55:27 1997 Steve Huston - - * ace/Malloc.h: Use signed math in the preprocessor calculations - for ACE_CONTROL_BLOCK_ALIGN_LONGS (and all of its contributing - factors). - - * ace/ACE.cpp: Fixed the TLI/BSD checks in handle_timed_complete. - - * tests/SOCK_Connector_Test.cpp: Added ENOTCONN as a valid fail - condition (in addition to ECONNREFUSED). - -Fri Sep 26 05:11:40 1997 Nanbor Wang - - * ace/SOCK_Acceptor.cpp (shared_accept): Made the newly added - WSAEventSelect code unreachable. It caused several test program - hung when performing socket recieving. Don't know why this is - happening. According to the online manual, this should be the - right thing to do. Some more Access Violations to be fix - tomorrow. Oh, I mean, today. - -Fri Sep 26 01:22:28 1997 Douglas C. Schmidt - - * ace/OS: Made a few changes to OS.h and OS.i to stop compiler - warnings. Thanks to Wei Chiang for - reporting this. - - * ace/config-chorus.h: Added ACE_LACKS_RLIMIT and removed - ACE_LACKS_SIGACTION. Thanks to Wei Chiang - for reporting this. - - * ace/TLI_Connector.cpp (complete): Changed the call to - ACE::handle_timed_complete() to use the new parameter. - - * ace/ACE: Added an extra parameter to the call to - ACE::handle_timed_complete() to indicate (at run-time) that this - is being called via a TLI interface. Thanks to the - ever-vigilant Steve Huston for suggesting this. - - * tests/SOCK_Connector_Test.cpp: "ACEified" the new test program. - -Thu Sep 25 23:27:38 1997 - - * ace/config-win32.h: Error in directives: it should be "Define - ACE_HAS_WINSOCK2 to 0 in your config.h file if you do *not* want - to compile with WinSock 2.0.". The typo was a 1 instead of the - 0. Thanks to Gonzalo A. Diethelm for pointing - this out. - -Thu Sep 25 20:33:09 1997 Douglas C. Schmidt - - * ace/Message_Queue.h: Changed the *_i() methods to be virtual so - that we can change the queueing mechanism by subclassing from - ACE_Message_Queue. Thanks to Eric Newton for - this suggestion. - - * ace/Timer_List_T.cpp (ACE_Timer_List_Iterator_T): Changed - listParam to timer_list to keep programming style consistent... - -Thu Sep 25 17:06:42 1997 Steve Huston - - * ace/OS.i - ACE_OS::cond_timedwait - HP's threads return - EAGAIN on timeout from pthread_cond_timedwait, so adjust that - to ETIME. - - * tests/SOCK_Connector_Test.cpp - will now try to find another - host to run the connect to. Won't try on Win32 or VxWorks - though. - -Thu Sep 25 15:25:53 1997 David L. Levine - - * ace/Object_Manager.cpp,OS.cpp: moved socket_init to Object_Manager - ctor and socket_fini to Object_Manager dtor, to be sure that - WinSock gets initialized early and closed late. - - * ace/SOCK.{h,cpp}: removed dummy_ static now that the - Object_Manager initializes WinSock. - - No, I'm not a Win32 wizard all of the sudden. Thanks to - Irfan and Nanbor for directing these changes. - - * tests/run_tests.vxworks: commented out tests that don't run - productively on VxWorks: SV_Shared_Memory_Test, - Reactor_Exceptions_Test, SPIPE_Test, and UPIPE_SAP_Test. - -Thu Sep 25 03:50:27 1997 - - * ace/OS.i (thr_getspecific): Must restore errno if no errors have - occured. - - * ace/Log_Msg.cpp (close): Must close the message queue *before* - destruction since there is no destructor for the queue. - - * netsvcs/lib/Client_Logging_Handler.cpp (fini): fini must close - and unregister the acceptor. Closing the socket is simply not - enough. - -Thu Sep 25 01:39:47 1997 Nanbor Wang - - * ace/Containers.{i,cpp}: Commented out all ACE_TRACE macros in - ACE_Unbounded_Queue so that they won't cause SIGSEGV when we - turn the tracing on. Unbounded_Queue is used in Object_Manager - which must be initialize before most of other objects. - -Wed Sep 24 23:37:19 1997 Nanbor Wang - - * ace/OS.i (thr_getspecific): On NT, added check whether - ::GetLastError() is NO_ERROR when ::TlsGetValue() return 0. - -Wed Sep 24 13:37:02 1997 - - * ace/config-win32-common.h (ACE_LACKS_FORK): Added in macro to - distinguish between ACE_LACKS_FORK and ACE_LACKS_EXEC. Also - updated config-chorus.h, config-vxworks-ghs-1.8.h, and - config-vxworks5.x-g++.h. - - * ace/OS.h (ACE_WIN32CALL_RETURN && ACE_WIN32CALL): Added new - macros to distinguish between Win32 calls that set GetLastError - and those that set errno. Also updated ACE_OSCALL_RETURN and - ACE_OSCALL such that they do not set errno to GetLastError. This - is because these calls automatically set errno. - - Updates OS.* files to reflect these changes. - - * ace/SOCK_Acceptor.cpp (shared_accept): Make sure to reset the - event association inherited by the new handle. - - * ace/WFMO_Reactor.i (unbind): Added a check for invalid handles - being passed in for removals. - -Wed Sep 24 10:34:29 1997 Carlos O'Ryan - - * ace/OS.h: - Under HP-UX and g++ must be included for dynamic loading, - not ; thanks to Warren Thompson (wthompson@altaira.com) - for helping us with this one. - -Wed Sep 24 09:36:21 1997 David L. Levine - - * ace/Managed_Object.{h,i},Object_Manager.{h,cpp}: removed - ACE_Managed_Object get_object () interface. It wasn't - used anywhere; it was originally intended to support preallocated - objects but turned out to not be necessary. I think that it would - be more useful to make it possible to instantiate - ACE_Managed_Object instead, and have it implicitly register - with the ACE_Object_Manager. - - * ace/Timer_List_T.cpp (ACE_Timer_List_Iterator_T): - changed name of "list" argument ot "listParam" to resolve name - conflict with STL. Thanks to Brian Mendel for reporting this. - - * tests/run_tests.check: print out filename with error messages. - -Tue Sep 23 17:11:44 1997 Carlos O'Ryan - - * ace/config-hpux-10.x-g++.h: - Added A ACE_LACKS_TIMESPEC_T, thanks to Warren Thompson - (wthompson@altaira.com) for this one. - - * include/makeinclude/platform_hpux_gcc.GNU: - Added a -D_REENTRANT define, to enable reentrant methods, thanks - to Warren Thompson (wthompson@altaira.com) and Steve Huston - (shuston@riverace.com) for pointing out this. - - * ace/config-hpux-10.x.h: - Added an small comment to clarify that DCE/threads must be - installed if threading is wanted, they are an optional product - for HP-UX. - -Tue Sep 23 10:13:57 1997 David L. Levine - - * ace/Select_Reactor.cpp: added #include of ace/Thread.h. - Thanks to Vladimir Schipunov for - reporting this. - - * ace/Object_Manager.cpp: added #include of ace/Malloc.h. - Thanks to Vladimir Schipunov for - reporting this. - - * ace/config-aix-4.1.x.h: added ACE_HAS_PTHREAD_T and - ACE_HAS_BROKEN_EXPLICIT_TEMPLATE_DESTRUCTOR #defines. - Thanks to Vladimir Schipunov for - reporting the build problem on AIX 4.1, and to - Torbjorn Lindgren for providing these fixes. - - * ace/Token_Manager.{h,cpp},Object_Manager.{h,cpp}: - preallocate ACE_Token_Manager creation lock. - - * ace/Object_Manager.cpp: use ACE_Cleanup_Adapter - for preallocated arrays. - -Mon Sep 22 16:51:44 1997 - - * ace/OS.i (open): Changed code so that (_O_CREAT | _O_TRUNC) - means CREATE_ALWAYS. Thanks to Dave Brackman - (dbrackma@OhioEE.com) for pointing this out. - -Mon Sep 22 11:01:28 1997 Steve Huston - - * tests/SOCK_Connector_Test.cpp, Makefile, run_tests.sh - added new - test to exercise ACE_SOCK_Connector focusing on fail conditions. - -Mon Sep 22 07:11:21 1997 David L. Levine - - * ace/Message_Block.cpp (clone): check this block's cont () - instead of the new block's cont_ when cloning the continuation - messages. Thanks to Eric Newton for tracking - down this problem with failing to clone continuation blocks, - and for providing the fix. - - * ace/OS.{h,i} (ACE_U_LongLong): added operator!=, and made args - const to ctor, operator/, hi, and lo member functions. - - * ace/Managed_Object.[hi]: renamed ACE_Managed_Cleanup to - ACE_Cleanup_Adapter because it doesn't implicitly register - itself with the ACE_Object_Manager. - - * ace/ACE.cpp: moved ACE_Object_Manager_Destroyer to - Object_Manager.cpp because the ACE_Object_Manager should - always be linked into executables now, even if libACE is - statically linked. - - * ace/Filecache.{h,cpp},Signal.{h,cpp} preallocate locks for - Filecache and Signal in ACE_Object_Manager. - - * ace/Object_Manager.{h,cpp}: 1) renamed ACE_Managed_Cleanup to - ACE_Cleanup_Adapter. 2) Moved ACE_Object_Manager_Destroyer from - ACE.cpp to Object_Manager.cpp. 3) Added Filecache and Signal locks. - - * ace/Singleton.*: removed instance (TYPE *) member function because - it wasn't being used. And, it allows us to store the contained - instance_ as an object instead of a pointer, saving a dynamic - memory allocation on construction. - - * include/makeinclude/platform_vxworks5.x_g++.GNU: added $(MUNCHED) - to PRELINK, to allow applications to add libraries or object - files to be munched. - - * ace/stdcpp.h: stdarg.h must be #included before stdio.h on LynxOS. - -Sat Sep 20 17:32:23 1997 David L. Levine - - * ace/Object_Manager.{h,cpp},Managed_Object.*, - CORBA_Handler.{h,cpp},Dump.{h,cpp},Log_Msg.cpp,OS.cpp - revised ACE_Object_Manager interface for preallocated objects. - - Also, added documentation of ACE_Object_Manager interface to - Object_Manager.h and Managed_Object.h. - - * ace/CORBA_Handler.cpp,Dump.cpp,OS.cpp: use ACE_MT with - preallocated locks. - - * include/makeinclude/platform_*.GNU,wrapper_macros.GNU: - moved -O out of wrapper_macros.GNU and into each platform - file's OC[C]FLAGS to support "optimize" make flag. - - I moved -O and similar compile flags out of CFLAGS and/or - CCFLAGS and into OCFLAGS and/or OCCFLAGS. This allows the - ACE make system to support the "optimize" flag. It operates - similar to the "debug" flag, i.e., you can set "optimize=1" - or "optimize=0" in your platform_macros.GNU file to enable - or disable optimization. You can use the same syntax to - get the same effect from the "make" command line, e.g., - "make optimize=1 debug=0". - - I added optimize=1 to platform_*.GNU files that had -O, etc., - in their C[C]FLAGS. Therefore, there should be no net effect - from this change on any platform. - - * include/makeinclude/wrapper_macros.GNU: - I _removed_ the disabling of "debug" when "optimize=1" is - enabled. This _will_ have a net effect: if you were relying - on "debug" to be disabled when you enabled "optimize=1", - you'll be surprised. The change supports platforms that - allow "debug" and "optimize" simultaneously. - - Because I had added the disabling of "debug" recently, - and because "optimize=1" wasn't supported well, if at all, - I'd be suprised if any is actually affected by this change. - -Sat Sep 20 11:47:14 1997 Carlos O'Ryan - - * ace/Timer_Queue_T.cpp: - Changed the return type to , to match its declaration. The - intent was to error error values, which are declared as - throughout ACE. - -Sat Sep 20 08:07:36 1997 David L. Levine - - * ace/OS.i (gethrtime): on Linux only, removed "volatile" qualifier - from declaration of local variable "now". I don't think that - it's necessary. It causes compilation failure with g++ because - the ACE_U_LongLong copy constructor won't take a volatile - argument. Thanks to Sandro Doro for - tracking down this problem. - - * tests/Time_Value_Test.cpp: reverted to test ACE_U_LongLong on - all platforms except WIN32. It works properly on Linux with - the removal of volatile from ACE_OS::gethrtime's "now". Thanks - to Sandro Doro for figuring this one - out. - -Fri Sep 19 18:49:50 1997 Carlos O'Ryan - - * ace/config-irix6.x-g++.h: - * include/makeinclude/platform_irix6.x_g++.GNU: - Added support for IRIX 6.x w/gcc, thanks to Celeste E. Copeland - (celeste@altaira.com) for this. - -Thu Sep 18 19:33:02 1997 Carlos O'Ryan - - * Douglas added the following changes while going through the - Async_Timer_Queue. - - * ace/Timer_Queue_T.h: Factored out the code for handling - ualarm(). - - * ace/Timer_Queue_T.cpp (handle_signal): Cleanedup the logic - for rescheduling a ualarm() after expiring a timer. - - * tests/Async_Timer_Queue_Test.cpp (signal_handler): Changed the - use of ACE_DEBUG to ACE_ERROR to ensure that the call doesn't - magically disappear if ACE_NDEBUG is enabled. - -Fri Sep 19 18:05:48 1997 Douglas C. Schmidt - - * ace/Log_Msg.cpp (log): Changed the send() to a send_n() so that - all the data gets written... - -Fri Sep 19 14:52:53 1997 Nanbor Wang - - * netsvcs/lib/Client_Logging_Handler.cpp (get_handle): Can't use - ACE_ERROR_RETURN here because ACE_HANDLE is a void* on NT, not - int. - - * examples/Reactor/Misc: Added reactors.dsp signals_1.dsp - signals_2.dsp. - - * ace/OS.cpp (thr_exit): Commented out the call to - ACE_TSS_Cleanup::exit () because ACE_OS::thr_exit is actually - called from ACE_TSS_Cleanup::exit (). - -Fri Sep 19 12:50:37 1997 David L. Levine - - * ACE-INSTALL*,ace/README: added more documentation of requirement - for explicit main (int, char *[]) arguments and int return type - with ACE_HAS_NONSTATIC_OBJECT_MANAGER (on VxWorks). - -Thu Sep 18 22:45:09 1997 Douglas C. Schmidt - - * netsvcs/lib/Client_Logging_Handler.cpp (close): Fixed a - typo: it's output_ not outout_. Thanks to David for - pointing this out. - - * netsvcs/lib/Client_Logging_Handler.cpp: Make sure to clean up - all our resources (e.g., acceptor-mode and data-mode sockets) - when we close down. - - * netsvcs/servers/main.cpp (main): Restored the entire contents of - main(). - - * tests/Semaphore_Test.cpp: Updated the test to use a temporary - ACE_Time_Value variable that is passed to - ACE_Semaphore::acquire() so that we don't have problems with - reference anachronisms... Thanks to David Levine for reporting - this. - - * ace/Log_Msg.cpp: Changed over to using ACE_SPIPEs for the - logging mechanism rather than ACE_FIFOs to conform to the - changes to Client_Logging_Handler. - - * netsvcs/lib/Client_Logging_Handler.cpp: - Completely rewrote the Client Logging Daemon so that it uses - ACE_SPIPEs by default, rather than ACE_FIFOs. This is more - portable and makes it easier to write a generic client logging - daemon... If a platform doesn't support ACE_SPIPEs, then we - revert to using sockets. - -Thu Sep 18 21:56:33 1997 Nanbor Wang - - * ace/OS.cpp (ACE_TSS_Cleanup::exit): Masked out codes that relate - to freeing TSS keys and remove key entries from TSS cleanup - table. I removed it here to avoid race condition. - (ACE_TSS_Cleanup::free_all_key_left): Added this function to - free all left over TSS keys and remove them from TSS cleanup - table when the program exits. It is only called from - ACE_OS::cleanup_tss. - (ACE_OS::cleanup_tss): Added call to - ACE_TSS_Cleanup::free_all_key_left when ACE_WIN32 or - ACE_HAS_TSS_EMULATION are defined. - -Thu Sep 18 16:30:24 1997 David L. Levine - - * ace/Semaphore_Test: protected declarations of test_timeout_count - and timeouts because they're not used on Solaris. - - * netsvcs/lib/Client_Logging_Handler.cpp: added template - instantiations. - -Thu Sep 18 09:04:40 1997 - - * ace/Dynamic: Changed the way ACE_Dynamic worked. Instead of - keeping the "this" pointer of the object in question, we are now - simply keeping a flag that indicates whether the object was - dynamically created. The trick to this approach is to make sure - to reset the flag in the constructor. The "this" pointer - approach was broken when used with multiple inheritance, because - of "shearing" of the "this" pointer to get to the base - Svc_Handler class. - -Thu Sep 18 01:12:36 1997 Douglas C. Schmidt - - * ACE version 4.3.8, released Thu Sep 18 01:12:36 1997. - -Wed Sep 17 22:47:20 1997 Douglas C. Schmidt - - * ace/ACE: Added two new varargs methods for send() and recv(). - These are modeled after the ones that are in, e.g., ACE_SOCK_IO. - - * ace/Log_Msg.cpp (open): In the UNICODE version the compiler - complains about mixed wchar/char usage in Log_Msg.cpp: - - Log_Msg.cpp(468) : error C2665: 'ACE_INET_Addr::ACE_INET_Addr' : - none of the 8 overloads can convert parameter 1 - from type 'const unsigned short *' - - I fixed it modifing the connect() call from - - status = con.connect (*ACE_Log_Msg_message_queue, - ACE_INET_Addr (logger_key)); - - to - - status = con.connect (*ACE_Log_Msg_message_queue, - ACE_INET_Addr - (ACE_MULTIBYTE_STRING(logger_key))); - - Thanks to Dieter Quehl for - reporting this. - - * ace/SV_Semaphore_Simple.h: By default, we want the flags to - perform a SEM_UNDO. Thanks to Sandro Doro - for reporting this. - - * tests/Makefile (BIN): Added Semaphore_Test.cpp to the Makefile. - Thanks to Sandro Doro for reporting - this. - - * tests/Async_Timer_Queue_Test.cpp: If you want to print a '\', - you need to make it a \\... Thanks to David for noticing this. - - * apps/JAWS/clients/Blobby/Blob_Handler.h: There was a missing - #include for "ace/SOCK_Stream.h". - - * netsvcs/lib/Client_Logging_Handler: Reimplemented this service - so that it uses sockets on Win32 to receive logging messages - from clients. - - * ace/Log_Msg.cpp: Enhanced ACE_Log_Msg::log() so that it now uses - sockets on Win32 platforms to work around the lack of FIFOs. - - * ace/Log_Record.h: Revised the field layout of the ACE_Log_Record - so that the length field comes first. This is necessary for the - framing mechanisms used throughout ACE in various - configurations. - -Wed Sep 17 15:17:38 1997 James C Hu - - * ace/Filecache.cpp: ACE_Filecache::finish should check to see if - the file passed in is NULL before attempting to grab the - associated hash lock. Reported by Samuel Melamed - . - -Wed Sep 17 13:51:25 1997 Carlos O'Ryan - - * bin/auto_compile: - I setup autoflush on the logfile, it makes debugging and non - crontab usage a bit easier. - -Wed Sep 17 12:59:34 1997 - - * ace/Local_Name_Space_T.cpp: Fixed warnings caused by SEH macros. - -Wed Sep 17 01:07:40 1997 Douglas C. Schmidt - - * ACE version 4.3.7, released Wed Sep 17 01:07:40 1997. - -Tue Sep 16 23:34:36 1997 Douglas C. Schmidt - - * netsvcs/servers/main.cpp (main): The use of braces was incorrect - so that some services were being prematurely closed... - - * ace: Added a new flag called ACE_LACKS_FIFO to distinguish the - (lack of) features on Win32... - - * ace/Timer_Queue_T: Added an expire() wrapper for the - Async_Timer_Queue_Adapter. - - * ace/OS: Added a wrapper for strpbrk() and wcspbrk(). Thanks to - Bob Olson and Irfan for pointing out - the need for this. - -Tue Sep 16 18:03:58 1997 Carlos O'Ryan - - * bin/auto_compile: - It wouldn't report an error when run_tests.sh scream "FAILED", - now it does. - -Tue Sep 16 08:30:28 1997 Steve Huston - - * ace/OS.i: Changed a couple of ACE_UNUSED(arg) to ACE_UNUSED_ARG(arg) - -Mon Sep 15 12:08:38 1997 - - * ace/Reactor (register_handler): Originally this interface was - available for all platforms, but because ACE_HANDLE is an int on - non-Win32 platforms, compilers are not able to tell the - difference between - register_handler(ACE_Event_Handler*,ACE_Reactor_Mask) and - register_handler(ACE_Event_Handler*,ACE_HANDLE). Therefore, we - have restricted this method to Win32 only. - - * ace/WFMO_Reactor.h: Removed non-Win32 version of the - WFMO_Reactor. This is no longer required in the new scheme. - - * ace/XtReactor: - - Added remove_handler_i(const ACE_Handle_Set &,ACE_Reactor_Mask) - to make the compiler happy. - - Also changed ACE_Reactor_Handle_Set to ACE_Select_Reactor_Handle_Set. - - * ace/Select_Reactor.cpp (ACE_Select_Reactor_Token): Added set/get - select_reactor methods. - - * ace/OS.h (ACE_SEH_TRY): Changed ACE_SEH_TRY from nothing to - "if(1)" on non-Win32 platforms. This should stop some compilers - from complaining about unreachable code. - -Mon Sep 15 11:37:49 1997 Carlos O'Ryan - - * include/makeinclude/platform_hpux.GNU: - Added -D_REENTRANT to enable the _r functions. - -Mon Sep 15 09:40:57 1997 Carlos O'Ryan - - * bin/auto_compile: - Enabled the shared_libs_only flags to speed up compilations (and - reduce disk space usage). - -Sun Sep 14 22:36:17 1997 - - * ace/Select_Reactor.h: Added a no-op constructor for - ACE_Select_Reactor_Token to make the compiler happy. - -Sun Sep 14 21:02:31 1997 David L. Levine - - * all Makefiles: ran "make depend" to update all ACE Makefiles. - - * include/makeinclude/platform_irix6.x-32_sgic++.GNU, - platform_tandem.GNU: added debug = 1, to disable ACE_NDEBUG. - - * ace/Acceptor.cpp: added #include of ace/Handle_Set.h so that - it will compile on g++/Solaris. - - * ace/Managed_Object.h: added #include of ace/OS.h because - ACE_Cleanup class is used. - - * ace/Managed_Object.cpp: only #include ace/Synch.h if - ACE_TEMPLATES_REQUIRE_SOURCE is not defined. The #include - appears to be necessary with Digital Unix. But, it causes - inline functions warnings with g++, both with inlining - enabled and disabled. Circular #includes are evil :-) - - * ace/Select_Reactor.h: removed "," at end of DEFAULT_SIZE - enum definition. - - * ace/Select_Reactor.i (register_handler): added ACE_UNUSED_ARGS. - - * ace/Select_Reactor.i: moved ACE_Select_Reactor::size () after - ACE_Select_Reactor_Handler_Repository::size () to prevent use - before definition. - - * ace/Select_Reactor.cpp: added template instantiation. - - * ace/Svc_Conf_y.cpp: commented out unused args and wrapped - assignments in "if" conditionals to avoid g++ warnings. - - * ace/Token_Manager.h: inserting missing "public" access control - specifier for ACE_Cleanup. - - * ace/OS.{h,cpp} (gethrtime, Linux only): inlined and added Alpha - support. - - * ace/config-linux*.h: only define ACE_HAS_PENTIUM if i386 is defined. - -Sun Sep 14 10:35:57 1997 - - * ace/Reactor: The Reactor classes (ACE_Reactor and ACE_ReactorEx) - have changed. The motivation for this change was to allow users - to program abstractly and use the most efficient implementation - available on their platform. At the same time, we wanted to - make the changes required by the users kept to a minimal. - - Here is a layout of the new Reactor hierarchy in ACE (an example - of the GOF Bridge Pattern). Thanks to Thomas Jordan - (Thomas_Jordan@deluxedata.com) for suggesting this new design. - - - Reactor -----> Reactor_Impl - ^ - | - -------------------- - ^ ^ - | | - Select_Reactor WFMO_Reactor - - Reactor: - - The Reactor class now becomes an interface class that contains - a pointer to an implementation class. All methods of the - Reactor class forward all calls to the appropriate - implementation class. Users can pass in their own - implementation class. If an implementation class is not - supplied at creation time, the following default rules apply: - - On non-Win32 platforms: An instance of the Select_Reactor - class will be created and used as the implementation. - - On Win32 platforms: An instance of the WFMO_Reactor class will - be created and used as the implementation. This default - behavior can be overwritten at compile-time by setting the - ACE_USE_SELECT_REACTOR_FOR_REACTOR_IMPL flag. In this case, an - instance of the Select_Reactor class will be created and used - as the implementation. - - Reactor_Impl: - - Reactor_Impl is an abstract class (i.e., the Bridge). - Select_Reactor and WFMO_Reactor inherit from this class. - - Select_Reactor: - - Previously known as the Reactor class. This class implements - the Reactor_Impl interface by using the select() system - call. This implementation is available on all platforms - (including Win32). - - WFMO_Reactor: - - WFMO (Wait For Multiple Objects) Reactor, previously known as - the ReactorEx class. This class implements the Reactor_Impl - interface by using the WaitForMultipleObjects() system call. - This implementation is currently only available on Win32 - platforms. - - Code changes for users: - - The higher authorities of ACE have decided that ReactorEx was - a "goofy" name and made little sense in the new hierarchy. - Therefore users using the old ReactorEx will have to change - over to start using the Reactor class (and make sure that the - implementation class being used is WFMO_Reactor). - - Also users that have extended Reactor or ReactorEx must - now subclass from Select_Reactor or WFMO_Reactor, - respectively. - - * ace/ReactorEx: - - The ReactorEx interface has been extended to be identical to the - Reactor interface. Some of these new operations will not be - supported in this version. However, we will have interface - compatability at this point. This allows the creation of the new - Reactor hierarchy in ACE. - - Removed all static (singleton) methods from ReactorEx. These are - not necessary anymore since ReactorEx will become an - implementation class. Reactor will take over this functionality. - - Changed methods names from resume_all to resume_handlers and - suspend_all to suspend_handlers. This increases the similarity - between ReactorEx and Reactor. - - Add a lock_adapter so that we can return an ACE_Lock form of our - internal lock. - - Added signal handling capabilities to ReactorEx. - - Added handler, requeue_position, mask_ops, and ready_ops - operations. However, they are not supported in this - version. They are mostly here for interface compatibility with - Reactor. - - Added a size() accessor that returns the current size of the - ReactorEx's internal descriptor table. - - Added an initialized() accessor that returns true if ReactorEx - has been successfully initialized, else false. - - * ace/Reactor: - - The Reactor interface has been extended to be identical to the - ReactorEx interface. Some of these new operations will not be - supported in this version. However, we will have interface - compatability at this point. This allows the creation of the new - Reactor hierarchy in ACE. - - Added resume_handler(ACE_Handle_Set &) and - suspend_handler(ACE_Handle_Set &) to the Reactor. This - increases the similarity between ReactorEx and Reactor. - - Add a lock_adapter so that we can return an ACE_Lock form of our - internal lock. This changes the signature of the return type - from ACE_Reactor_Lock to ACE_Lock. - - Added a size() accessor that returns the current size of the - Reactor's internal descriptor table. - - Added wakeup_all_thread() operation. Currently it just does a - notify. - - Added alertable_handle_events() operation. Currently it just - calls handle_events(). - - Added register_handler (that take event handles) operations. - However, they are not supported in this version. They are mostly - here for interface compatibility with ReactorEx. - - * ace/XtReactor: Now inherits from Select_Reactor instead of - Reactor. - - * ace/Timer_Queue_T.h: Removed the inclusion of Time_Value.h. This - file does not exist anymore - - * ace/Synch_T (ACE_Lock_Adapter): Changed the implementation of - the adapter such that the user is allowed to (optionally) pass - in the locking mechanism. - - * ace/Strategies: Removed ACE_ReactorEx_Notification_Strategy. - - * ace/Service_Config: Updated Service_Config so that all ReactorEx - and Proactor methods are removed. ReactorEx does not exist any - longer and Proactor methods are available as statics methods on - the Proactor class. - - * ace/OS.h (ACE_DEFAULT_SELECT_REACTOR_SIZE): Changed - ACE_DEFAULT_REACTOR_SIZE to ACE_DEFAULT_SELECT_REACTOR_SIZE. - There is no default size dictated by the Reactor class anymore. - - * ace/Local_Tokens,Token: Added new methods: acquire_read, - acquire_write, tryacquire_read, tryacquire_write. These methods - allow the Tokens to be used by the ACE_Lock_Adapter class. - - * ace/Handle_Set.h (MAXSIZE): Changed ACE_DEFAULT_REACTOR_SIZE to - ACE_DEFAULT_SELECT_REACTOR_SIZE. There is no default size - dictated by the Reactor class anymore. - - * ace/Event_Handler: Removed the Proactor and ReactorEx pointers - from Event_Handler. The Proactor has its own event handler - (ACE_Handler), and the ReactorEx does not exist anymore. - - * ace/Proactor: - - Changed Proactor to work with the new Reactor. - - Updated Proactor to bring it upto date with the recent changes - to the Timer_Queue. - - * tests: - - Removed the ACE_NEW_THREAD macro. With the new thread adapter, - the log stream for the new thread will automatically be set to - the creator thread's stream. Therefore, this macro is not - needed. - - Removed the inclusion of Service_Config.h. All tests are now - accessing the singletons that are supported by the class directly. - - * examples/Reactor/Proactor: Updated examples to use and access - the new Reactor class instead of the old ReactorEx. - - * examples/Reactor/ReactorEx: Updated examples to use and access - the new Reactor class instead of the old ReactorEx. - -Sun Sep 14 09:50:22 1997 Douglas C. Schmidt - - * ace/Singleton.i (ACE_Singleton): Moved the definition of the - ACE_Singleton default constructor into the *.i file. In - general, it's not a good idea to put definitions in *.h files. - - * tests/test_config.h: Improved the #undef scheme for ACE_NDEBUG. - -Sat Sep 13 23:51:55 1997 Nanbor Wang - - * ace/ACE_Library.{mak,mdp}: Removed Service_Record.cpp and added - Service_Type.cpp in project file. - - * ace/: Removed ace.{mak,mdp} and replaced them with - ACE_Library.{mak,mdp}. MSVC 4.2 insists to change the release - version DLL from our original setting "ace.{dll,lib}" to "ACE - dynamic Library.{dll,lib}". This is so far the only known - method to get around this. - - * netsvcs/servers/servers.{dsw,dsp}: Changed the output filenames - of debug version from maind.exe to main.exe. - - * netsvcs/lib/netsvcs.{dsw,dsp}: Changed the output filenames of - debug version from netsvcsd.{dll,lib} to netsvcs.{dll,lib}. - - * ace/ace.dsw: - * ace/ace_{dll,lib}.dsp: Removed Service_Record.cpp and added - Service_Type.cpp. - - * ace/Log_Msg.cpp (open): Fixed a typo. - - * ace/Reactor.cpp: Fixed a typo. - -Sat Sep 13 17:23:22 1997 Douglas C. Schmidt - - * ACE version 4.3.6, released Sat Sep 13 17:23:22 1997. - -Sat Sep 13 12:11:50 1997 Douglas C. Schmidt - - * tests: #include "test_config.h" before all the other files so - that we always have the ACE_ASSERT enabled... Thanks to Carlos - for noticing this. - - * ace/Reactor.cpp: Added Arturo's improvements for suspending and - resuming Event_Handlers. - - * tests/Reactors_Test.cpp: As a result of the new changes to - ACE_Thread_Manager, the Reactors_Test now seems to be working - fine. - - * ace/Thread_Manager.cpp (append_thr): When we append a new - Thr_Descriptor make sure to zero-out the cleanup_info_ fields - since otherwise horrible things will happen... - - * ace/Reactor: Added a new ACE_Reactor_Handle_Set called - suspend_set_ and updated the suspend_i() and resume_i() method - to use this set to store the ready bits that are enabled when we - suspend and resume and Event_Handler, respectively. Thanks to - Arturo for this suggestion. - - * tests/TSS_Test.cpp (main): Had to move the allocation and - deletion of TSS_Error into the ACE_HAS_THREADS section since - otherwise this test doesn't work when threading is disabled. - - * tests/Thread_Manager_Test.cpp: Move the template specialization - inside of the ACE_HAS_THREADS macro since otherwise this test - doesn't work when threading is disabled. - - * ace/Thread_Manager.cpp: Arrgh! Must initialize the cleanup_info - fields to 0 in the constructor for ACE_Thread_Descriptor! This - should fix a nasty bug... - - * tests/Async_Timer_Queue_Test.cpp: Continued to improve the - documentation in the test of the ACE_Async_Timer_Queue_Adapter. - - * ace/Timer_Queue_T.cpp (schedule): Oops, must pass &this->mask_ - to ACE_Sig_Set rather than this->mask_. - - * ace/Object_Manager.cpp: Changed #include - "ace/Service_Repository.h" to #include "ace/Service_Config.h" - since we now call ACE_Service_Config::close(). - - * ace/Service_Types: Removed a nasty circular dependency by simply - having each of the ACE_Service_Type_Impl subclasses take const - void *'s rather than their specific type (i.e., ACE_Stream or - ACE_Module, etc.). This turns out not to be a problem since we - treated them as const void *'s internally anyhow... - - * ace/Strategies_T.cpp: Fixed a bug in ACE_DLL_Strategy: - - ACE_Service_Type_Impl stp = new ACE_Service_Object_Type (svc_handler, this->svc_name_); - - should be - - ACE_Service_Type_Impl *stp = new ACE_Service_Object_Type (svc_handler, this->svc_name_) - - I wonder how this ever compiled?! - -Fri Sep 12 13:26:50 1997 Douglas C. Schmidt - - * ace/Mem_Map.cpp (close): Removed the following code in the - close() method that appears to be redundant with the code in - unmap(): - - if (this->file_mapping_ != this->handle_ - && this->file_mapping_ != ACE_INVALID_HANDLE) - ACE_OS::close (this->file_mapping_); - - Also cleaned up the close() code so that it doesn't try to close - the handle multiple times, even if close() is called more than - once. Thanks to Beged-Dov for reporting - this. - - * tests/Async_Timer_Queue_Test.cpp: Improved the structure of the - program and finished implementing the new feature that makes it - possible to avoid blocking SIGQUIT. - - * ace/Timer_Queue_T: Added support for an ACE_Sig_Set that can be - passed into the constructor of ACE_Async_Timer_Queue_Adapter. - This will enable us to selectively block only certain signals. - - * ace/Signal: Added a new constructor for ACE_Sig_Set that takes - ACE_Sig_Set * and also improved the documentation of the - constructor interfaces. - -Fri Sep 12 13:46:04 1997 David L. Levine - - * ace/OS.[hi],Log_Msg.h,config-lynxos.h, - include/makeinclude/platform_lynxos.GNU: added LynxOS port, - provided by Dave Mayerhoefer . Note how few - files were affected. What's even more amazing is the very small - number, 8, of very minor code changes to OS.[hi] and Log_Msg.h. - This is a tribute to the maturity of - - - * ace/Service_Object.h: Moved the ACE_Service_Type class into the - Service_Object.h file since this is "publically" visible to - applications. - - * ace/Service_Types.h: Improved the documentation of the - ACE_Service_Type subclass implementations. - - * ace/Service_Types: Changed the name next_ to link_ to be - consistent with the accessor name. - - * ace: Renamed Service_Record.{h,i,cpp} to Service_Types.{h,i,cpp} - to reflect the recent change in names. - - * ace/Service_Object.h: Renamed ACE_Service_Type to - ACE_Service_Type_Impl and ACE_Service_Record to ACE_Service_Type - in order to emphasize the use of the Bridge pattern. Thanks to - Eric Newton for motivating this. - - * ace/Svc_Conf.y: Removed the warning about Service name being - different from Module name. I'm not sure why this was - complaining in the first place. Thanks to Eric Newton for - pointing this out. - - * netsvcs/lib/README: The entry point for the time service client - is _make_ACE_TS_Clerk_Processor and not - _make_ACE_TS_Clerk_Connector. Thanks to Ivan for pointing this - out. - -Thu Sep 11 10:59:12 1997 - - * ace/Connector.cpp (handle_output): Increased the idle time - before we check the status of a non-blocking connection from 1 - ms to 35 ms when ACE_HAS_BROKEN_NON_BLOCKING_CONNECTS is - defined (i.e., Win32.) This is very odd but wait a whole lot - longer seems to solve the problem. - - * ace/Log_Msg.cpp (close): On Win32, ACE_Log_Msg_Manager needs to - delete main thread's ACE_Log_Msg instance also. - -Thu Sep 11 10:37:00 1997 Carlos O'Ryan - - * ace/ACE.cpp: - * ace/INET_Addr.cpp: - * ace/Log_Msg.h: - * ace/Memory_Pool.h: - * ace/OS.h: - * ace/OS.i: - * ace/Parse_Node.cpp: - * ace/Strategies_T.h: - * bin/clone.cpp: - * netsvcs/clients/Naming/Dump_Restore/Dump_Restore.h: - I checked the use of MAXNAMELEN vs. MAXPATHLEN; all buffers - intended to keep full filenames should have at least - MAXPATHLEN+1 chars. - Only buffers that will keep basenames (without any directories) - should have MAXNAMELEN+1 bytes. - I also added a new macro ACE_MAX_FULLY_QUALIFIED_NAME_LEN which - is the maximum number of characters for a fully qualified - internet hostname. - There remain one obscure usage of these macros in ace/Malloc.h - and Local_Naming_Space_T.{h,cpp}, but a quick fix broke - something, I will try again soon. - -Thu Sep 11 08:52:36 1997 David L. Levine - - * ace/OS.cpp (thr_key_detach): check to see if the - ACE_TSS_Cleanup lock has been constructed, and not - destructed, before attempting to use it. Statics are evil. - - * ace/Log_Msg.cpp (~ACE_Log_Msg): release guard before calling - ACE_Log_Msg_Manager::close (), because that deletes the lock. - - * ace/Managed_Object.{h,cpp} (get_object): changed type of "id" - to int because it will often be passed an enum. Pass "id" by - value to get_object (int id), for preallocated objects. - - * ace/Object_Manager.{h,cpp}: added ACE_LOG_MSG_INSTANCE_LOCK, - and ACE_PREALLOCATE_OBJECT macro. - - * include/makeinclude/wrapper_macros.GNU: ignore shared_libs_only - in modules that only build a static lib. Fixed shared_libs_only - by removing OBJDIRS, unless BIN is undefined, and VDIR. Removed - SHOBJ from both shared_libs_only and static_libs_only because - they're unused. - - * include/makeinclude/rules.local.GNU: added lib*.*_pure* to - clean.local target, to remove Purified libraries. - - * examples/Connection/non_blocking/Makefile, - examples/Service_Configurator/IPC-tests/server/Makefile: - removed -L./ from LDFLAGS because it's redundant: - wrapper_macros.GNU adds it. - -Wed Sep 10 22:58:10 1997 Douglas C. Schmidt - - * ace/Thread_Manager.cpp (exit): Reordered the code so that it - will keep the lock held long enough to copy out the thread exit - hook but will release the lock before calling this hook. - -Wed Sep 10 11:04:08 1997 David L. Levine - - * ace/config-sunos5.5-g++.h: added - ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS. - - * include/makeinclude/wrapper_macros.GNU: added PIC= with - static_libs_only, and added list of supported make flags. - - * include/makeinclude/wrapper_macros.GNU: added support for - debug=0, etc. Also, made debug, optimize, and profile - flags independent instead of exclusive. Thanks to Per - Andersson for suggesting this. - - * include/makeinclude/platform_*.GNU: replaced "CFLAGS += - $(DCFLAGS) with debug=1 so that debugging can easily be - disabled. Thanks to Per Andersson and James CE Johnson - for noticing this deficiency. - - * include/makeinclude/platform_vxworks5.x_g++.GNU: removed - "-I. -I$(ACE_ROOT)" from CFLAGS because it duplicates the - INCLDIRS set in wrapper_root.GNU. - -Wed Sep 10 10:35:06 1997 David L. Levine - - * ACE version 4.3.5, released Wed Sep 10 10:35:06 1997. - -Wed Sep 10 10:25:41 1997 David L. Levine - - * ace/Thread_Manager.cpp (exit): copy the thread exit hook before - releasing the guard, and call it after releasing the guard. - - * examples/Shared_Malloc/test_malloc.cpp (spawn): added (char *) - cast of slave_name () to avoid compilation warnings on Solaris. - -Wed Sep 10 00:43:04 1997 Nanbor Wang - - * ace/Makefile: Added Managed_Object to template sources. - - * ace/Object_Manager.{h,cpp}: * ace/Managed_Object.{h,cpp}: - Separate ACE_Managed_Object to a new set of file. - -Tue Sep 9 23:41:56 1997 Douglas C. Schmidt - - * tests/Reactors_Test.cpp (main): Check to see if wait() returns - -1 and then test to see what's gone wrong! - - * ace/OS.h: Added a "fake" #define for SIGALRM so that programs - will *compile* on platforms like Chorus. Thanks to Wei Chiang - for reporting this. - - * examples/Shared_Malloc/test_malloc.cpp (spawn): HP/UX doesn't - seem to like const char *const argv[] being given an initializer - list. I've fixed this to be just plain ol' char *argv[]. - Thanks to Sandro Doro for reporting this. - - * ace/Handle_Set.i (clr_bit): Replaced SOCKET with ACE_SOCKET so - this will compile on UNIX. - -Tue Sep 09 17:16:21 1997 - - * ace/Proactor: Updated Proactor to bring it upto date with the - recent changes to the Timer_Queue. - - * ace/Handle_Set.i (clr_bit and set_bit): These methods now change - the size_ member of the class on Win32. This is necessary since - the ACE_Handle_Set::operator fd_set *() accessor has been - optimized for size_ == 0. - -Tue Sep 09 09:14:07 1997 David L. Levine - - * ace/OS.cpp (cleanup_tss): On WIN32 and with ACE_HAS_TSS_EMULATION, - delete the ACE_TSS_Cleanup instance instead of registering it for - cleanup via the ACE_Object_Manager's at_exit (). This should allow - applications to use ACE_Log_Msg in their at_exit () hooks. Thanks - to Wei Chiang for reporting this problem. - - * ace/Object_Manager.{h,cpp}: added guard of internal structures. - (dtor): call at_exit hooks before calling cleanup_tss, now that - the ACE_TSS_Cleanup instance is no longer registered for an at_exit - call. (at_exit): set errno instead of returning different values - on error. Added ACE_Managed_Object template class, intended for - use in replacing static instances. - - * ace/Thread_Manager.cpp (exit): release guard before running the - thread exit hooks. This should help avoid deadlocks, in case - one of those hooks needs to operate on the Thread_Manager. - - * ace/CORBA_Handler.{h,cpp},Dump.{h,cpp},Object_Manager.{h,cpp}: - preallocate locks for CORBA_Handler and Dump in ACE_Object_Manager. - Statics are evil. - - * ace/Synch.{h,cpp},OS.cpp,Object_Manager.{h,cpp}: removed - ACE_TSS_Cleanup_Lock and replaced it with a preallocated mutex - in OS.cpp. Thanks to Nanbor for reporting problems at shutdown - with the old ACE_TSS_Cleanup_Lock static instance. - - * include/makeinclude/platform_sunos5_sunc++.GNU: when building - libraries only, don't use CC to create individual .shobj/*.so - files. The .so files are not needed to build libraries, because - libraries are built with -G. (They are needed to avoid upsetting - the ACE make rules, so they're created as links to their - corresponding .o files.) The .so files are still needed when - building executables in order to get all template instantiations. - - * include/makeinclude/platform_sunos5_g++.GNU: removed unused - SOLINK definitions. - -Mon Sep 8 18:38:22 1997 Douglas C. Schmidt - - * tests/Handle_Set_Test.cpp: It is possible for the order to get - the handles (using the iterator) will not agree with insert - order in ACE_Unbounded_Queue. It's best to use - ACE_Unbounded_Set. Thanks to Arturo for this fix. - -Mon Sep 8 17:43:43 1997 Darrell Brunsch - - * ace/Timer_{List,Wheel,Hash,Heap}_T.cpp: The iter() method now - returns a pointer to an iterator that is in a reset state - instead of an unknown one. - -Mon Sep 8 14:05:15 1997 Nanbor Wang - - * ace/ACE.cpp (read_adapter): Removed ACE_Thread_Control object in - this function. This is now taken care of by ACE_Thread_Manager. - (register_stdin_handler): This function no longer uses - ACE_Stdin_Args to pass in thread manager into read_adapter. - - * ace/ACE.h (ACE): Removed class ACE_Stdin_Args, because it is no - longer needed. - -Mon Sep 08 11:49:02 1997 David L. Levine - - * tests/run_tests.sh: moved log file checks out to separate file, - run_tests.check. - - * tests/run_tests.vxworks: added one-button test for VxWorks. - Check it out, Darrell. - - * ace/Filecache.cpp: commented out unused constants [RW]COPY_FLAGS. - -Mon Sep 08 08:26:52 1997 David L. Levine - - * ACE version 4.3.4, released Mon Sep 08 08:26:52 1997. - -Sat Sep 6 10:41:17 1997 Carlos O'Ryan - - * ace/Malloc.h: - sizeof() must be casted to int in ACE_CONTROL_BLOCK_ALIGN_LONGS - otherwise unsigned int arithmetic is used, thus obtaining - unexpected results. - -Sat Sep 06 09:07:02 1997 David L. Levine - - * OS.{h,cpp}: added ACE_Cleanup base class and - ace_cleanup_destroyer adapter. - - * Object_Manager.*: added at_exit () interface for ACE_Cleanup objects. - - * Singleton.{h,cpp},Token_Invariants.{h,cpp},Token_Manager.{h,cpp}: - base on ACE_Cleanup, so that simpler ACE_Object_Manager::at_exit () - can be used. - - * performance-tests/Misc/Makefile: moved $(BIN) files from FILES - to SRC so that they don't get put into libPerf. - -Sat Sep 6 02:36:31 1997 Nanbor Wang - - * tests/test_config.h (set_output): Added openning flag ios::trunc - explicitly if we are not appending to the opening ofstream. - This is required by standard CPP iostream libraries on NT (i.e., - we can't use ios::out alone when ofstream.open a file.) - -Sat Sep 6 00:21:33 1997 Douglas C. Schmidt - - * ace/Synch_T.h: Added new constructors: - - ACE_Guard(ACE_LOCK& l) : lock_(&l) - { this->owner_ = this->acquire(); } - - ACE_Read_Guard(ACE_LOCK& m) : ACE_Guard(&m) - { this->owner_ = this->acquire_read(); } - - ACE_Write_Guard(ACE_LOCK& m) : ACE_Guard(&m) - { this->owner_ = this->acquire_write(); } - - Remove default argument to current Guard classes. - - ACE_Guard(ACE_LOCK&l, int block) - ACE_Read_Guard(ACE_LOCK& m, int block) - ACE_Write_Guard(ACE_LOCK&m, int block) - with the current semantic. - - This change allows OS platforms with - ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION or ACE_HAS ??? PRAGMA - ???, to> invoke common case constructor in a more efficient - way. Thanks to Arturo for this. - - * ace/Synch_T.h: ACE_Guard's destructor should be: - - ~ACE_Guard() { this->release(); } - - and not - - ~ACE_Guard() { if (this->owner_ != -1) this->release(); } - - because ACE_Guard::release has this test. Thanks to Arturo for - reporting this. - - * ace/ARGV.cpp: Declared the char* parameters for the ACE_ARGV - class constructors as const. Since they are copied in the - constructors, this is a safe thing to do. This makes it easier - to pass the result of string::c_str() to it. Thanks to Stephen - Coy for this suggestion. - - * ace/Thread_Manager.cpp: We were missing a Guard in the - ACE_Thread_Manager::at_exit() method. - - * ace/config-sunos5.5-sunc++-4.x.h: It appears that we need to set - ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS for Solaris 2.5 since otherwise - wierd things happen randomly. This is based on the following man - page entry for pthread_exit(): - - Do not call pthread_exit() from a cancellation cleanup handler - or destructor function that will be invoked as a result of - either an implicit or explicit call to pthread_exit(). - - * ace/Thread_Manager.cpp (run_thread_exit_hooks): Once the cleanup - hook(s) are called we set the value of the cleanup hook variable - to 0 to avoid false matches later on. - -Fri Sep 5 21:57:44 1997 Nanbor Wang - - * ace/Containers.i (is_empty): - * ace/Malloc.cpp (instance): Commented out ACE_TRACE in these - routines. They were causing recursive call if we used TRACE. - Thanks to Craig Perras for solving - this. - - * ace/Handle_Set.i (fd_set *): Added conditional compilation code - for Win32 platforms. This is because we don't maintain - on Win32 and, therefore, can't depend on it. - -Fri Sep 5 19:05:02 1997 Douglas C. Schmidt - - * tests/Thread_Manager_Test.cpp (main): moved delete - signal_catcher into the ACE_HAS_THREADS part of the main() - function. - - * ace/Reactor.cpp (check_handles): When handle_error was optimized - with fstat we put NULL value to second argument. It requires a - value to SCO OpenServer to work. Therefore, I added struct stat - temp and changed ACE_OS::fstat(handle, NULL) by - ACE_OS::fstat(handle, &temp); Thanks to Arturo for fixing this. - - * examples/Threads/process_manager.cpp (sig_handler): Fixed a bug - where the thread was exiting if no more children existed. - Thanks to Avraham Nash for reporting - this. - - * ace/Handle_Set: Added the following performance enhancements: - - . Assignment operator to optimize size == 0. - - . min_handle to manage the case when the Handle_Set start in - handle different of zero. - - . A new iterator algorithm tuned for select function calls. - - Thank to Arturo for these enhancements. - - * ace/config-aix-4.1.x.h: Added ACE_LACKS_TIMESPEC_T. Thanks to - Rob Head (rhead@virtc.com) for reporting this. - - * ace/OS.cpp (fork_exec): Changed the logic so that we don't - create a new console window on Win32. This isn't done on UNIX, - so there's no point in doing it here. Thanks to Jeff Richard - for pointing this out. - - * ace/Reactor.cpp: The call to - ACE_Reactor_Handler_Repository::open() in the constructor of - ACE_Reactor should check for == -1! Thanks to Brian Mendel for - reporting this. - - * ace/Reactor.cpp (remove_handler): Fixed a braino where the - conditional compile for NSIG should have been > 0 rather than == - 0. Thanks to fixing this codeKaren Amestoy - for reporting this fix. - -Fri Sep 05 16:17:50 1997 David L. Levine - - * performance-tests/Misc/preempt.cpp: added command line options, - and explanation on how to interpret the results. - -Thu Sep 04 10:26:11 1997 David L. Levine - - * ace/OS.cpp: (tss_open): removed paren from around type in "new" - statement, because GHS (and ANSI C++) compilers will choke on it. - Thanks to Brian Mendel for reporting - this. - - * ace/Thread_Manager.cpp: (ACE_Thread_Descriptor ctor): zero out - cleanup_hook_ in cleanup_info_ because we read it later on. - (dump): added guard because thr_table_ is accessed. (wait): - hacked in thr_yield () to give waited threads a chance to clean - up before continuing. - - * ace/OS.h (ACE_Cleanup_Info): added default ctor. - - * ace/Log_Msg.cpp (close): delete main thread's Log_Msg instance, - on Solaris if ACE_HAS_EXCEPTIONS is not defined, because main - thread TSS dtors apparently don't get called. - - * ace/Token_Manager.{h,cpp}: register ACE_Token_Manager singleton - for deletion with ACE_Object_Manager. - - * ace/Token_Invariants.{h,cpp}: register ACE_Token_Invariant_Manager - singleton for deletion with ACE_Object_Manager. - - * ace/Naming_Context.cpp (close) moved deletion of "name_options_" - from dtor to close (), because when Service_Repository is closed, - it calls close () instead of deleting the service. - - * ace/Process_Strategy.cpp (handle_signal): suppress printouts during - shutdown, to prevent using ACE_Log_Msg while it's being deleted. - - * ace/Timer_List.cpp: replace ACE_Recursive_Thread_Mutex with - ACE_SYNCH_RECURSIVE_MUTEX, for non-threaded platforms. - - * tests/Reactors_Test (~Test_Task): moved ASSERT after the printout, - so we can see why it failed. (svc): added printout with thread ID. - (main): deleted reactor at end of test to prevent leak. - - * tests/SPIPE_Test (client): increased sleep time to 10 sec, - because a long delay is needed with Purify. - - * tests/UPIPE_Test (connector): added 5 second sleep to give - acceptor a chance to start up. - - * include/makeinclude/wrapper_macros.GNU: added -max_threads=100 to - Quantify options. - - * include/makeinclude/rules.local.GNU: added *.sym to clean target. - -Thu Sep 04 09:39:08 1997 David L. Levine - - * ACE version 4.3.3, released Thu Sep 04 09:39:08 1997. - -Thu Sep 04 08:48:13 1997 David L. Levine - - * include/makeinclude/wrapper_macros.GNU: added shared_libs_only - and static_libs_only build options. Only static_libs_only - has been tested successfully. - - * include/makeinclude/rules.lib.GNU: added INSTALL support for - shared_libs_only and static_libs_only. - - * include/makeinclude/platform_vxworks*.GNU: use static_libs_only. - - * ace/OS.cpp: moved tss_open ()/tss_close () calls from invoke () - to ace_thread_adapter. - - * examples/Threads/auto_event.cpp,manual_event.cpp, - process_manager.cpp,reader_writer.cpp,tss2.cpp: - cast spawn entry point to ACE_THR_FUNC. - - * examples/Threads/task_four.cpp (Invoker_Task): rearranged - initializers to match declaration order. - - * examples/Threads/thread_specific.cpp (worker): use - ACE_OS::printf () instead of printf (), and print out the - ACE_hthread_t instead of the ACE_thread_t. - - * examples/IPC_SAP/SPIPE_SAP/client.cpp,consumer_msg.cpp, - consumer_read.cpp,producer_msg.cpp,producer_read.cpp,server.cpp: - moved #include of shared.h inside ACE_HAS_STREAM_PIPES protection - to avoid compilation warnings on unsupported platforms. - - * examples/Reactor/Ntalker/ntalker.cpp (main): removed unused "argc". - - * examples/*/*.cpp,netsvcs/clients/Tokens/mutex/test_mutex.cpp: - added args to main (). - -Wed Sep 3 21:38:18 1997 Carlos O'Ryan - - * ace/config-irix6.x-sgic++.h: - IRIX uses pthread_sigmask to manage per-thread signal mask, - thanks to Gonzalo Diethelm (gonzo@ing.puc.cl) for pointing out - this one. - - * ace/OS.h: - Removed an initial '#' for a comment line, thanks to Gonzalo - Diethelm (gonzo@ing.puc.cl) for pointing out this one. - - * ace/Timer_Hash_T.cpp: - * ace/Timer_Hash_T.h: - * ace/Timer_Heap_T.cpp: - * ace/Timer_Heap_T.h: - * ace/Timer_List.cpp: - * ace/Timer_List_T.cpp: - * ace/Timer_List_T.h: - * ace/Timer_Queue_T.cpp: - * ace/Timer_Queue_T.h: - * ace/Timer_Wheel_T.cpp: - * ace/Timer_Wheel_T.h: - In the word of its author: Modified the iterators kept in - each of these classes so that they are constructed - dynamically on the heap after the Queue has been properly - initialized. Otherwise, the iterators try to iterate over a - non-initialized queue, and fail miserably (usually dumping - core). Once more thanks to Gonzalo Diethelm - (gonzo@ing.puc.cl) for this changes. - - * tests/UPIPE_SAP_Test.cpp: - Gonzalo improved the error message. - - * ace/README: - Gonzalo updated the documentation for some macros. - -Wed Sep 03 15:21:46 1997 David L. Levine - - * ace/OS.h: define ACE_TSS macros with ACE_HAS_TSS_EMULATION, - and renamed some ACE_TSS_Emulation methods. - - * ace/OS.i: allow TSS_Emulation storage to be on thread stack, - instead of always dynamically allocating it. - - * ace/OS.cpp (ACE_Thread_Adapter::invoke): allocate TSS_Emulation - storage on thread stack. (ACE_TSS_Cleanup::exit): only call - a TSS destructor if the thread's value is non-zero. - - * ace/Thread_Manager.cpp: support TSS_Emulation. - - * ace/Thread_Manager.cpp (resize): zero out unused cleanup_hooks - in thr_table_; (run_thread_exit_hooks): check for zero cleanup - hook before calling. - - * ace/Synch_T.*: allow ACE_HAS_TSS_EMULATION _or_ - ACE_HAS_THREAD_SPECIFIC_STORAGE. - - * ace/Object_Manager.{h,cpp}: allocate main thread's TSS_Emulation - storage in the ACE_Object_Manager instance. - - * ace/Log_Msg.h: befriend ACE_OS::cleanup_tss () instead of - ACE_Object_Manager, because the cleanup path is now indirect - from the ACE_Object_Manager. - - * ace/Log_Msg.cpp: use TSS_Emulation on VxWorks, so - VxWorks-specific code was removed. - - * ace/Task.cpp: removed unused #include of ace/Dynamic.h. (It had - been used for template instantiations, but they were moved.) - Also, removed unused #include of ace/Object_Manager.h. - - * ace/Svc_Handler.{h,cpp}: register Svc_Handler singleton for - deletion with the ACE_Object_Manager. - - * tests/Process_Strategy_Test (Options): added a destructor so that - the dynamically allocated concurrency_strategy_ can be deleted. - -Wed Sep 3 08:05:26 1997 Steve Huston - - * ace/Message_Block.h: Corrected comment on release(void) - the - underlying ACE_Data_Block's refcount is decremented; the - ACE_Message_Block is always deleted. - -Tue Sep 2 18:26:22 1997 Douglas C. Schmidt - - * ace/Task: Revised the ACE_Task_Base::svc_run() method to - register a thread exit hook (ACE_Task_Base::cleanup()) - - * ace/Task: Added a static method called cleanup() that can serve - as a thread exit hook to ensure that close() is always called - when a task exits a thread. - - * ace/Thread_Manager: Added the first-cut implementation of the - thread exit hooks. This one is butt-simple -- just allowing a - single hook per-thread, but that should be enough to get us over - the hump... - - * ace/OS.h: Moved the object_info_t type from Object_Manager.h and - renamed it to ACE_Cleanup_Info since we will use it with the - Thread_Manager and the Object_Manager. - - * ChangeLog-97b: Emptied out the ChangeLog-97b file until - we move the ChangeLog to this file... - - * ace/OS.h: Moved the typedef from the - ACE_Object_Manager into global scope so that it can also be used - by the ACE_Thread_Manager. - - * ace/DEV_IO: Moved the get_remote_addr() and get_local_addr() - from the DEV class to the DEV_IO class, which seems to be more - consistent with how they should be used. - - * ace/FILE_IO: Added the get_remote_addr() and get_local_addr() - methods to FILE_IO. Now we should be able to use this with the - Connector pattern. Thanks to Stephen Coy - for reporting this. - - * ace/DEV_Connector*h, ace/FILE*.h: Added "traits" for PEER_ADDR - and PEER_STREAM. Now we should be able to use this with the - Connector pattern. Thanks to Stephen Coy - for reporting this. - - * tests/Async_Timer_Queue_Test.cpp (main): Replaced the use of - fputs() with read() so that it will be signal-safe. Thanks to - Carlos for pointing out the need for this. - - * ace/Task: All the complex ACE_Task_Exit logic has been moved out - of the Task file and into the Thread_Manager file. This will - both simplify and generalize the behavior of cleanups on thread - exit. - -Tue Sep 2 14:42:52 1997 Nanbor Wang - - * ace/config-chorus.h (ACE_HAS_BROKEN_EXPLICIT_TEMPLATE_DESTRUCTOR): - Added this directive for Chorus uses g++. Thanks to David - Levine for pointing this out. - -Mon Sep 01 21:31:25 1997 David L. Levine - - * ChangeLog-97b,Makefile,bin/create_ace_build: ChangeLog is no longer - a symbolic link, but instead is the most recent ChangeLog file. - ChangeLog-97b was moved to ChangeLog. - - * ace/Timer_Queue_T.cpp (schedule): added ACE_UNUSED_ARGs for act - and interval. - - * ace/OS.h: changed ACE_SEH_EXCEPT and ACE_SEH_FINALLY from null - to "while (0)" on all platforms except ACE_WIN32. Thanks to - Nanbor for this bit of macro wizardry. - - * ace/OS.i (tss_base): cast VxWorks TCB spare field to a void **& - instead of a void **, because the function returns a reference - to it. - - * ace/OS.cpp: protected definition of - ACE_TSS_Emulation::tss_collection_ on VxWorks, where it's not used. - - * ace/OS.cpp (ACE_Thread_Adapter::invoke) don't exit the thread - with TSS_EMULATION, except on WIN32. (thr_create) On VxWorks, - use thread adapter as entry point instead of func (via macros). - - * ace/config-vxworks*.h: added ACE_HAS_TSS_EMULATION, with - ACE_DEFAULT_THREAD_KEYS set to 16, and ACE_LACKS_UNIX_SIGNALS. - - * tests/Async_Timer_Queue_Test.cpp: added template instantiations. - - * tests/IOStream_Test.cpp: no longer need to dynamically allocate - the ACE_SOCK_IOStreams with the recent ACE_Thread_Manager changes. - That was causing occasional problems with unsafe deletion of the - underlying ostreams. Thanks to James Johnson for consulting on - this intermittent (nasty) problem. - - * tests/SPIPE_Test.cpp: (main) added ACE_UNUSED_ARG of client - and server. - - * tests/Thread_Manager_Test (worker): added ACE_UNUSED_ARG (thr_mgr) - if ACE_LACKS_UNIX_SIGNALS, and added template instantiations. - - * tests/Thread_Manager_Test.cpp: dynamically allocate the - signal_catcher so that we can destroy it before the main - thread's TSS is cleaned up. - - * tests/TSS_Test.cpp: dynamically allocate TSS_Error so that we - can ensure its deletion before that of ACE_Object_Manager. - Also, makde the code a little easier to change the number of threads. - - * include/makeinclude/wrapper_macros.GNU: added Purify options to - ignore SIGINT and set max threads to 100. - -Mon Sep 1 10:53:39 1997 Douglas C. Schmidt - - * ace/Handle_Set: Added an assignment operator that is optimized - for the case when the right-hand side is 0. - - * ace/OS: The ACE_THR_C_FUNC macro was confusing for Win32. We've - replaced this with the original UNIX typedef and will just use - LPTHREAD_START_ROUTINE for Win32. - - * tests/Thread_Manager_Test.cpp (main): Revised this test so that - we don't have race conditions for suspend() and resume(). - - * tests/Tokens_Test.cpp (run_test): Removed the use of - THR_SUSPENDED and resume_all() since this is broken due to race - conditions and other hazards implicit in using suspend() and - resume() on threads. - - * ace/Handle_Set.cpp: There were several ACE_INLINE methods in the - Handle_Set.cpp file. I've removed the ACE_INLINE flag. - - * tests/SPIPE_Test.cpp: If ACE doesn't have STREAM pipes on a - platform (or we aren't on NT) then don't try to run this test. - Thanks to James CE Johnson for reporting - this. - - * ace/config-sunos5.[45]-g++.h: ACE defines _REENTRANT in - config.h. Application using classes of ACE can conflict by - using compilation option as -D_REENTRANT. I fixed this by - surrounding the define as: - - #if !defined (_REENTRANT) - #define _REENTRANT - #endif /* _REENTRANT */ - - Thanks to Jean-Marc Strauss for - reporting this. - - * ace/Timer_Queue_T.h: We need to #include "ace/Signal.h" since - our Async_Timer_Queue_Adapter needs it. Thanks to Neil Cohen - for reporting this. - - * ace/Reactor.cpp (check_handles): Optimized the check for invalid - handles by using fstat() rather than select() on non-Win32 - platforms. Thanks to Arturo for suggesting this optimization. - -Mon Sep 1 17:52:10 1997 Darrell Brunsch - - * ace/Timer_Heap_T.cpp: Changed cancel (id ...) to check for - previously expired/cancelled timers - -Mon Sep 01 08:43:37 1997 David L. Levine - - * ace/Synch.cpp: added #include of Object_Manager.h. - Thanks to Edan Ayal for reporting this. - -Mon Sep 1 00:46:05 1997 Nanbor Wang - - * ace/README: Added explanation for ACE_HAS_STL_MAP_CONFILICT. - - * ace/OS.h: Added conditional compilation directive - ACE_HAS_STL_MAP_CONFLICT. This is used when users want to - compile ACE with STL library and the STL map class conflicts - with map structure in . - - * ace/config-unixware-2.1.2-g++.h: - * ace/config-unixware-2.01-g++.h: - * ace/config-osf1-4.0-g++.h: - * ace/config-irix5.3-g++.h: - * ace/config-hpux-10.x-g++.h: - * ace/config-linux-pthread.h: - * ace/config-linux-lxpthreads.h: - * ace/config-linux.h: - * ace/config-freebsd.h: - * ace/config-freebsd-pthread.h: - Added ACE_HAS_BROKEN_EXPLICIT_TEMPLATE_DESTRUCTOR flag for all - config files which apparently use g++. - - * ace/config-vxworks-g++.h: - * ace/config-vxworks5.x-g++.h: - * ace/config-sunos4-g++.h: - * ace/config-sunos5.4-g++.h: - * ace/config-sunos5.5-g++.h: - Moved ACE_HAS_BROKEN_EXPLICIT_TEMPLATE_DESTRUCTOR closer to - other template-related directives. - -Sun Aug 31 22:56:30 1997 Douglas C. Schmidt - - * ACE version 4.3.2, released Sun Aug 31 22:56:30 1997. - -Sun Aug 31 22:36:08 1997 Douglas C. Schmidt - - * tests/Async_Timer_Queue_Test.cpp: Need to #include "Timer_List.h" - rather than "Timer_Queue.h". - - * ace: Added ACE_HAS_HANDLE_SET_OPTIMIZED_FOR_SELECT for all - config.h files. - - * ace/Handle_Set.cpp (count_bits): Continued to optimize this - method. Now, if ACE_HAS_HANDLE_SET_OPTIMIZED_FOR_SELECT enabled - it will use a very fast loop that only runs for as many bits - that are enabled in the bitset. This approach also doesn't have - to access the Global Offset Table in shared libraries, which is - a win. Thanks to Arturo for contributing this. - - * tests/Async_Timer_Queue_Test.cpp: Generalized this test to use - the new ACE_Async_Timer_Queue_Adapter. - - * ace/Timer_Queue_T: Added the new ACE_Async_Timer_Queue_Adapter, - which makes it possible to encapsulate any of the ACE Timer - Queue mechanisms into a asynchronous signal-handling context. - - * ace/OS.i: If the platform doesn't support ualarm() (and it - doesn't lack UNIX signals) then we'll use alarm() rather - than ualarm(). Clearly, this isn't as good as ualarm(), - but it's better than nothing. - - * ace/OS.i: I'd missed replacing - - ACE_LACKS_POSIX_PROTO_FOR_SOME_FUNCS - - with - - ACE_LACKS_POSIX_PROTOTYPES_FOR_SOME_FUNCS - - in OS.i. Thanks to James CE Johnson for - pointing this out. - -Sun Aug 31 09:58:35 1997 Douglas C. Schmidt - - * Princess Diana was killed today in a senseless auto accident in - Paris, France. This is a very tragic ending to a very promising - life ahead of her. - -Sun Aug 31 15:08:00 1997 David L. Levine - - * tests/Async_Timer_Queue_Test.cpp: fixed and added some - ACE_UNUSED_ARG's. - - * netsvcs/clients/Tokens/invariant/invariant.cpp (run_mutex, - run_reader_writer), - netsvcs/clients/Tokens/mutex/test_mutex.cpp (run_test), - netsvcs/clients/Tokens/rw_lock/rw_locks.cpp (run_thread): - removed unused argument "vp". - - * ace/ACE.i (log2): moved "log" declaration outside of the - for loop because its used after the loop. - - * ace/Task.cpp (instance) only register for destruction with - ACE_Object_Manager when creating a new instance_. - - * ace/Thread_Manager.cpp (ACE_Thread_Control::exit) with TSS - emulation, don't exit the thread. Instead, - ACE_Thread_Adpater::invoke () will do it after cleaning up TSS. - - * ace/Synch{h,cpp}: (ACE_TSS_Cleanup_Lock) register for - destruction with ACE_Object_Manager. - - * ace/OS.*: major cleanup of ACE_TSS_Emulation, esp. how it - interacts with ACE_TSS_Cleanup::exit (). - -Sat Aug 30 17:30:24 1997 Steve Huston - - * Removed these config files: - config-hpux-10.x-aCC.h - config-hpux-10.x-decthreads.h - config-hpux-10.x-nothread.h - config-hpux-10.x-hpc++.h should be used with HP compilers on - HP-UX 10.x. - -Sat Aug 30 14:58:42 1997 Douglas C. Schmidt - - * ace/Signal.cpp (ACE_Sig_Action): Added a new constructor that - also takes an ACE_Sig_Set & *and* registers the handler... - - * ace/Handle_Set.cpp (count_bits): Added a newly optimized - algorithm for cases where - ACE_HAS_HANDLE_SET_OPTIMIZED_FOR_SELECT. Thanks to Arturo for - this suggestion. - - * ace/config-sco-5.0.0*.h: Added ACE_HAS_LONG_FDMASK for all the - SCO files. Thanks to Arturo for suggesting this. - - * ace/Signal: Added a new mutator method to reassign an - ACE_Sig_Set to an ACE_Sig_Action. - - * ace/Handle_Set.i: If the size of the fd_set is 0 then operator - fd_set *() just returns 0. This will help to optimize the - performance of the Reactor. Thanks to Arturo for suggesting - this. - - * ace/Handle_Set.cpp (count_bits): Added yet another improvement - to remove the "i" iterator. Thanks to Arturo for this! - - * ace/Log_Msg.cpp (log): Used the new ACE_Log_Record::priority() - method in place of the type() method so that the priorities are - handled correctly. - - * ace/Log_Record: Added two new methods that get/set the - "priority" of an ACE_Log_Record. This value computed as the - base 2 log of the value of the corresponding ACE_Log_Priority - enumeral (which are all powers of two). We need this mapping - function so that we can use the priorities as parameters to the - putpmsg() function (which can only map between 0-255). Thanks - to Per Andersson for finding this stuff! - - * ace/ACE: Added a new method to compute the base2 logarithm of a - number. - - * Replaced all uses of ACE_Thread_Control since this is now - handled by the ACE_Thread_Manager. - - * ace/Thread_Manager.cpp (spawn_i): Make sure to pass "this" to - the ACE_Thread_Adapter if we're constructing it in the - ACE_Thread_Manager::spawn_i() method. - - * ace/OS.i (cond_timedwait): Added a special check to see if - timeout != 0, in which case we just call ACE_OS::cond_wait(). - Therefore, VxWorks can now use ACE_OS::cond_timedwait(), as long - as the timeout == 0! This simplifies certain internal ACE code. - Thanks to David Levine for pointing this out. - - * ace/Handle_Set.cpp (count_bits): Changed the code from - - for (int i = 0; i < sizeof (u_long); i++) - { - rval += ACE_Handle_Set::nbits_[n & 0xff]; - n >>= 8; - } - - to - - for (int i = 0; n != 0; i++) - { - rval += ACE_Handle_Set::nbits_[n & 0xff]; - n >>= 8; - } - - in order to speed it up in the "best case." Thanks to Arturo - Montes for reporting this. - - * ace/Thread.cpp (spawn_n): Added a test to make sure that the - thread_ids is != 0 before we assign into this. - -Fri Aug 29 22:45:21 1997 Nanbor Wang - - * ace/config-vxworks-g++.h: - * ace/config-vxworks5.x-g++.h: - * ace/config-sunos4-g++.h: - * ace/config-sunos5.4-g++.h: - * ace/config-sunos5.5-g++.h: - Added flag ACE_HAS_BROKEN_EXPLICIT_TEMPLATE_DESTRUCTOR to these - config files. - - * ace/README: Added explanation of flag - "ACE_HAS_BROKEN_EXPLICIT_TEMPLATE_DESTRUCTOR." - When calling a template class'es destructor explicitly, if you - must use "ptr->FOO::~FOO ();" but not - "ptr->FOO::~FOO ();" then, you must add this flag to - your config file. - - * ace/OS.h (ACE_DES_FREE_TEMPLATE): Added this new macro to cope - with the fact that compilers require different syntax when - calling destructor of template classes explicitly. This macro - takes four arguments, POINTER, DEALLOCATOR, CLASS, and - TEMPLATE_PARAMETER. To deallocate a pointer allocated by - ACE_NEW_MALLOC and you need to call FOO class'es - destructor, you'll write: - - ACE_DES_FREE_TEMPLATE (ptr, alloc->free, FOO, ); - - * ace/Containers.cpp: Changed to use ACE_DES_FREE_TEMPLATE to iron - out differences among compilers. - -Fri Aug 29 15:31:50 1997 David L. Levine - - * ace/OS.*,Synch.{h,cpp},Object_Manager.cpp: started adding - support for TSS emulation. - - * ace/OS.h: declare class ostream if - ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION. - - * tests/Async_Timer_Queue_Test.cpp (parse_commands): fixed - sscanf format specifiers to match argument types; (main): - fixed ACE_ERROR_RETURN parens; protected bulk of code with - ACE_HAS_UALARM so that the test will build cleanly on - platforms without it. - -Fri Aug 29 00:43:27 1997 Douglas C. Schmidt - - * ace/Synch.cpp (wait): Simpified the call to - ACE_OS::cond_timedwait() to avoid an extra test. Thanks to - Arturo for pointing this out. - - * ace/TTY_IO: Added native support for TSETA. Thanks to Arturo for - this. - - * ace/Strategies_T.cpp: Finished integrating the ACE_DLL_Strategy - implementation, which is used in TAO. Thanks to Satheesh Kumar - MG for motivating this. - - * ace/Synch_T.h: Clarified the constructor for ACE_TSS that takes - a TYPE * as an argument. Note that this only initializes the - TSS value in the *calling* thread, but not any other threads - that may come along later on. Thanks to Bob Laferriere - for helping to clarify this. - - * ace/Synch_T.h: Removed stray semi-colons from some of the - ACE_SYNCH_* macros. Thanks for Wei Chiang for reporting this. - -Fri Aug 29 11:40:10 1997 Darrell Brunsch - - * ace/OS.cpp: Added cast for ace_thread_adapter. - - * ace/OS.h: Changed name of ACE_Thread_Adapter's constructor's - fourth parameter from tm to tmgr since tm conflicted with - another tm. - - * ace/Thread_Manager.cpp: In spawn_i, changed the last parameter - given to spawn to thread_args. Also had to add a cast for - ace_thread_adapter. - -Fri Aug 29 06:44:05 1997 Nanbor Wang - - * ace/OS.h (ACE_DES_FREE): Added this macro which will call - designate destructor before freeing the memory. This is a - matching macro that should go with ACE_NEW_MALLOC and - ACE_NEW_MALLOC_RETURN which allocate memory using designate - allocator then call the user specified constructor explicitly. - - * ace/Containers.cpp: Many memory deallocations of container's - nodes were changed to use the new macro which deletes objects - correctly. - - Thanks very, very much to Ivan Murphy for torturing various - test programs and reporting those tests which fail the - excruciation. - -Fri Aug 29 01:26:38 1997 - - * ace/ReactorEx.cpp: Added two new methods to ReactorEx - - schedule_wakeup() and cancel_wakeup(). Also fixed some bugs - related to our local copy of network_events_ not getting updated - properly. Thanks to Edan Ayal for pointing out - the two missing functions. - -Thu Aug 28 20:12:23 1997 Douglas C. Schmidt - - * ace/Thread_Manager.cpp: Added a new ace_thread_manager_adapter() - function, which is similar to the ace_thread_adapter function - used in ACE_OS::thr_create(). However, the new function ensures - that threads spawned by an ACE_Thread_Manager are automatically - registered and deregistered from the Thread Manager. - - * ace/ACE.h (inherit_log_msg): Factored out the functionality to - inherit the logging features if the parent thread has an - ACE_Log_Msg instance in thread-specific storage. This function - is called in several places (e.g., OS.cpp and - Thread_Manager.cpp), so it pays to factor it out. - - * ace/OS.h (ACE_Thread_Adapter): Added a new data member that - keeps track of which thread entry point function we will pass to - the underlying OS thread creation routine. The default value is - ace_thread_adapter, but this can be overridden to do different - things... - - * ace/OS, - ace/Thread: Extended thr_create() so that if an - ACE_Thread_Adapter is passed to it this is used in lieu of the - func and arg parameters. This reduces the amount of dynamic - allocation and indirection required with the new - ACE_Thread_Manager. - - * ace/Task.h: Removed the ACE_Thread_Control data member from the - ACE_Task_Exit class since it now belongs to the - ACE_Thread_Manager instead... - - * ace/OS.cpp: Move the ACE_Thread_Adapter out of the OS.cpp file - and made it a first-class citizen of ACE. We can put this - to good use in the new ACE_Thread_Manager. - - * ace/OS.cpp: The ACE_Thread_Adapter is now the default behavior - in ACE. If you don't want to use it for whatever reason, - you'll need to set the ACE_NO_THREAD_ADAPTER macro. - - * ace/config-sco-5.0.0-fsu-pthread.h: Added - ACE_LACKS_CONST_TIMESPEC_PTR. Thanks to Arturo for this. - - * ace/Synch.cpp (wait): Removed the reference assignment and just - take the address of this->mutex_.lock_. Also, removed the - additional check for abstime == 0 in order to speed up the - common case. Thanks to Arturo for these suggestions. - -Thu Aug 28 20:02:03 1997 Douglas C. Schmidt - - * ACE version 4.3.1, released Thu Aug 28 20:02:03 1997. - -Thu Aug 28 00:21:09 1997 Douglas C. Schmidt - - * ace/Strategies_T.cpp (ACE_Thread_Strategy): Added reasonable - values to the default constructor. Thanks to Stephen Coy - for reporting this. - - * ace/config-irix6.x-sgic++-*.h: Added ACE_HAS_UALARM. Thanks to - Amos Shapira for reporting this. - - * ace/config-aix-4.*.h: Added ACE_HAS_UALARM. Thanks to Cary - Clark for reporting this. - - * ace/config-hpux-10.x*.h: Added ACE_HAS_UALARM. Thanks to Cary - Clark for reporting this. - - * ace/config-osf1*.h: Added ACE_HAS_UALARM. Thanks to Thilo - for reporting this. - - * ace/config-mvs.h: Added ACE_HAS_UALARM. Thanks to Chuck Gehr - for reporting this. - - * tests/Async_Timer_Queue_Test.cpp: Added a new test that will - illustrate how to implement an asynchronously invoked - Timer_Queue using UNIX SIGALRM signals. - -Thu Aug 28 19:32:07 1997 - - * examples/Reactor/ReactorEx: Added two new applications - (test_registry_changes.cpp and test_console_input.cpp) to show - some more features of ReactorEx. test_registry_changes.cpp shows - how to monitor the Registry using ReactorEx. - test_console_input.cpp shows how to use ReactorEx to get - notified when input shows up on the console. - -Thu Aug 28 18:07:37 1997 Darrell Brunsch - - * ace/Timer_{List,Heap,Wheel,Hash}_T.cpp: Changed the behavior - of the iterator to automatically initialize when the iterator - is constructed. - -Thu Aug 28 10:43:35 1997 David L. Levine - - * ace/Task.{h,cpp} (ACE_Task_Exit::instance) added call to - ACE_Object_Manager::at_exit () to clean up the singleton at - program termination. - -Thu Aug 28 03:25:52 1997 Nanbor Wang - - * tests/Task_Test.cpp (Barrier_Task): - * tests/TSS_Test.cpp (main): Added an array to collect thread - handles in order to clean them up. Thanks to Ivan Murphy - for pointing this out. - - * ace/Thread_Manager.{h,cpp} (spawn_n): - * ace/Task.{h,cpp} (activate): - Added an extra argument ACE_hthread_t thread_handles[] with - default value 0. We need this argument to collect handles of - spwaned/activated threads. On NT, we have to join terminated - threads explicitly to prevent handles leak. Thanks to Ivan - Murphy for digging this out. - -Wed Aug 27 10:48:25 1997 Douglas C. Schmidt - - * ace: Changed all occurrences of ACE_LACKS_RLIMIT_PROTO to - ACE_LACKS_RLIMIT_PROTOTYPE, ACE_LACKS_POSIX_PROTO to - ACE_LACKS_POSIX_PROTOTYPES, and ACE_LACKS_SYSV_MSQ_PROTOS to - ACE_LACKS_SYSV_MSQ_PROTOTYPES to be more consistent. - - * ace/config-sunos5.x*.h: Added ACE_HAS_UALARM to all the Solaris - config files. However, also had to add ACE_LACKS_UALARM_PROTOTYPE - since Solaris strangely doesn't provide this prototype. - - * ace/OS.h: Added an ACE_Time_Value version of ACE_OS::ualarm(). - - * ace/Signal: Added a new constructor for ACE_Sig_Action that - takes an ACE_Sig_Set parameter. - - * ace/Signal: Added a sigset() accessor method. - - * ace/config-unixware-2.1.2-g++.h: Added ACE_HAS_UALARM. Thanks - to Ganesh Pai for reporting this. - - * ace/OS.h: Added a default value of 0 to ACE_OS::time(). - - * ace/Synch.i (ACE_Thread_Mutex_Guard): Rearranged the code so - that we can inline the acquire(), tryacquire(), and release() - methods properly. Thanks to David Levine for pointing this out. - - * ace/OS.h: Added ACE_OS support for the ualarm() method. If your - platform supports ualarm() please send me email so I can set the - ACE_HAS_UALARM flag in your config.h file. - - * tests/Makefile: Added an asynchronous timer queue test. - - * examples/IOStream/server/iostream_server.cpp: Added a new macro - to work around the fact that some C++ compiles don't grok - template typedefs. Thanks to Oleg Krivosheev - for pointing this out. - - * ace/OS, - ace/Task.cpp: - Installed a bunch of patches for FSU pthreads. Thanks to Arturo - Montes for sending this. - - * Makefile: Added a line to the release script that will - automatically generate an ACE-INSTALL text file from the - ACE-INSTALL.html file. Thanks to Oleg Krivosheev - for suggesting this. - - * performance-tests/Misc/Makefile: Added $(BIN) to the FILE target - so that "make depend" will work. Thanks to David Levine for - pointing this out. - - * ace/Synch.i: Eliminated unnecessary assignment to this->owner_. - Thanks to Chris for pointing this out. - - * ace/OS.i (msgctl): Added a "struct" to the definition of - msqid_ds. Thanks to Steve Hickman for - reporting this. - -Thu Aug 28 01:07:21 1997 - - * examples/Reactor/ReactorEx/test_directory_changes.cpp: Added a - new example application. This application tests the working of - ReactorEx when users are interested in changes in the - filesystem. - -Wed Aug 27 22:06:23 1997 Nanbor Wang - - * *.{mak,mdp,dsw,dsp}: Updated ACE's library names on Win32 as - below. Only Microsoft's Win95 and Windows NT are effected. - - Version Dynamic Library Static Livrary - ------------------ -------------------- ----------------- - Debug aced.lib, aced.dll acesd.lib - Release ace.lib, ace.dll aces.lib - Debug w/ UNICODE aceud.lib, aceud.dll acesud.lib - Release w/ UNICODE aceu.lib, aceu.dll acesu.lib - - Thanks to John Morey for suggesting this and - Darrell for updating VC 5.0's makefiles. - - * ace/config-freebsd[-pthread].h (ACE_HAS_UALARM): FreeBSD does has - ualarm. - -Wed Aug 27 10:52:59 1997 Chris Cleeland - - * ace/Synch_T.h (CTOR): Eliminated unnecessary assignment to - this->owner_. - -Wed Aug 27 09:32:57 1997 David L. Levine - - * ace/Singleton.cpp (instance): removed full qualification of - "instance_" in ACE_NEW_RETURN macro, because it confused - the Sun C++ 4.2 preprocessor. - - * ace/Singleton.cpp: added support for ACE_HAS_SIG_C_FUNC platforms, - e.g., on MVS. At least I tried to. The cleanup function, - on ACE_HAS_SIG_C_FUNC platforms only, doesn't call the object's - destructor. It just deallocates the storage. That should be - good enough; I don't think it's worth trying to do more than that. - - * ace/Synch.cpp (close_singleton): removed call to - ACE_Allocator::close_singleton (), because this method is - only called if ACE_HAS_THREADS. - - * ace/Object_Manager.cpp (dtor): added call to - ACE_Allocater::close_singleton (), and protected call to - ACE_Static_Object_Lock::close_singleton () with ACE_HAS_THREADS. - - * tests/Time_Value_Test.cpp: disabled ACE_U_LongLong test - on ACE_WIN32 platforms, because that class is never used - there. Thanks to Nanbor for finding this. - - * performance-tests/Misc/preempt.cpp,Makefile: added preempt - test, which tests for thread preemption. - -Tue Aug 26 13:59:01 1997 Douglas C. Schmidt - - * netsvcs/lib/Server_Logging_Handler_T.cpp: Changed the symbol - "SS" to "SST" to avoid a namespace collision with UnixWare. - Thanks to Ganesh Pai for pointing this out. - - * ace: Added a new config file to sco using FSU pthreads. Thanks - to Arturo Montes for sending this. - - * include/makeinclude: Added a new platform macros file to sco - using FSU pthreads. Thanks to Arturo Montes - for sending this. - -Tue Aug 26 22:06:14 1997 - - * examples/Reactor/ReactorEx: Added two new applications for - testing some of the new features of ReactorEx. Added - documentation and renamed some of the older test files to make - it easier to comprehend the examples. - -Tue Aug 26 11:47:29 1997 - - * ace/OS.i (mutex_trylock): Changed this method to make it deal - correctly with abandoned mutexes. Also added a new mutex_trylock - method that allows the user to know if the mutex was abandoned - (through an extra out parameter). Also fixed - ACE_OS::cond_timedwait(), ACE_OS::cond_wait(), - ACE_OS::event_wait(), ACE_OS::event_timedwait() and - ACE_OS::sema_wait() to remove extra checks for WAIT_ABANDONED, - since we are not dealing with mutexes in these methods. Thanks - to Ivan Murphy for pointing this - out. - -Tue Aug 26 11:06:45 1997 David L. Levine - - * ace/OS.h,config-vxworks5.x-g++.h: - split ACE_HAS_RENAMED_MAIN into ACE_MAIN and - ACE_HAS_NONSTATIC_OBJECT_MANAGER. - - * ace/ACE.cpp: only create the ACE_Object_Manager_Destroyer - if not ACE_HAS_NONSTATIC_OBJECT_MANAGER. - - * ace/Object_Manager.{h,cpp}: dynamically allocated the - contained ACE_Unbounded_Queue to so that it can be deallocated - before the ACE_Allocator is destroyed. - - * ace/Singleton.{h,cpp}: register all ACE_Singletons for - cleanup with the ACE_Object_Manager. - - * ace/Synch.{h,cpp}: renamed ACE_Static_Object_Lock::atexit () to - close_singleton (), and removed the unused atexit hook. - - * ace/Log_Msg.cpp (ACE_Log_Msg_Manager::close): delete the - main thread's Log_Msg. - - * ace/config-vxworks-ghs-1.8.h: added ACE_HAS_NONSTATIC_OBJECT_MANAGER. - - * tests/Time_Value_Test.cpp: added tests of ACE_U_LongLong. - - * tests/Atomic_Op_Test.cpp (main): added arguments to main (). - - * tests/Barrier_Test.cpp (main): delete thread_handles array - to prevent memory leak. - - * examples/Reactor/Misc/test_signals_2.cpp (main): changed - type of second arg from "char *" to "char *[]". - -Mon Aug 25 14:13:57 1997 Carlos O'Ryan - - * ace/OS.h: - Changed the return type of sendmsg_timedwait from sszie_t to - ssize_t, this should only affect platforms where - ACE_LACKS_TIMEDWAIT_PROTOTYPES, further it was definitely wrong - before. - Thanks to ARTURO MONTES for pointing - out this one. - -Mon Aug 25 10:15:06 1997 David L. Levine - - * ace/Message_Queue.cpp (notify): fixed ACE_TRACE message. - - * examples/ASX/UPIPE_Event_Server/event_server.cpp, - examples/Connection/misc/test_upipe.cpp, - examples/Connection/non_blocking/test_*.cpp, - examples/IPC_SAP/SOCK_SAP/CPP-inserver-poll.cpp, - examples/IPC_SAP/SOCK_SAP/FD-unserver.cpp, - examples/Misc/test_dump.cpp, - examples/Reactor/FIFO/client.cpp, - examples/Reactor/Misc/test_*.cpp, - examples/Reactor/Proactor/test_multiple_loops.cpp, - examples/Reactor/Proactor/test_timeout.cpp, - examples/Reactor/ReactorEx/test_timeout.cpp, - examples/Reactor/ReactorEx/test_exceptions.cpp, - examples/Service_Configurator/IPC-tests/client/local_spipe_client_test.cpp, - examples/Service_Configurator/IPC-tests/client/remote_thr_stream_client_test.cpp, - examples/Shared_Malloc/test_multiple_mallocs.cpp, - examples/System_V_IPC/SV_Message_Queues/*MQ_*.cpp, - examples/System_V_IPC/SV_Semaphores/Semaphores_?.cpp, - examples/Threads/process_mutex.cpp, - examples/Threads/recursive_mutex.cpp, - examples/Threads/tss1.cpp, - examples/Threads/thread_specific.cpp, - examples/Threads/token.cpp, - examples/Threads/wfmo.cpp, - tests/Simple_Message_Block_Test.cpp, - tests/Hash_Map_Manager_Test.cpp: - added arguments to main () to support redeclaring it on VxWorks. - - From now on, we should always declare main () with arguments, e.g., - int - main (int, char *[]) - -Sun Aug 24 10:27:33 1997 Douglas C. Schmidt - - * tests/Future_Test.cpp (Scheduler): Removed the non-existent - friend class Method_ObjectWork. Thanks to Sandro Doro - for reporting this problem. - - * ace/Message_Block.h: Clarified in the comments that the length() - of a Message_Block is 0 until the wr_ptr() is explicitly set. - Thanks to Amos Shapira for pointing out - the need for this. - -Sat Aug 23 14:43:27 1997 Douglas C. Schmidt - - * ACE version 4.3, released Sat Aug 23 14:43:27 1997. - -Sat Aug 23 14:40:32 1997 Douglas C. Schmidt - - * Released the long-awaited ACE 4.3. Good night sweet prince: - And flights of angels sing thee to thy rest. - -Sat Aug 23 00:44:09 1997 Douglas C. Schmidt - - * netsvcs/lib/Server_Logging_Handler.cpp: Make sure that we - explicitly instantiate ACE_Svc_Handler whether or not we're building with threads - since otherwise we get link errors. - -Fri Aug 22 20:58:49 1997 Nanbor Wang - - * ace/OS.cpp (ACE_TSS_Cleanup): Changed the lock for - ACE_TSS_Cleanup from a static object to a singleton to avoid the - nasty detruction order problem. This only effects Win32. - - * ace/Synch.{h,cpp}: Added a new singleton lock - "ACE_TSS_Cleanup_Lock" for Win32 platform. This object is - expect to be put under ACE_Object_Manager's control and will - probably gone/changed in the near future. - -Fri Aug 22 18:48:17 1997 Carlos O'Ryan - - * ACE-install.sh: - I updated the information on IRIX. Now we know for a fact it - compiles on IRIX 6.x, but we are not certain on IRIX 5.X. - - * bin/auto_compile_wrapper: - I have tried to make it clear that auto_compile_wrapper must be - tailored on each site. The email address is invalid and the - script should just crash the - - * ace/OS.i (cond_timedwait): - It used to always dereference the timeout parameter, which could - be 0 (heading for a - Sthreads use timestruc_t instead of timespec_t, thanks to - Ganesh Pai for pointing out this one and to - Steve Huston for explaining to us what - was going on. - -Fri Aug 22 08:46:39 1997 David L. Levine - - * include/makeinclude/platform_vxworks*.GNU: - unset SHLIB to fix builds without PRELIB. - - * netsvcs/lib/Logging_Strategy.cpp, - examples/Threads/task_three.cpp: include fstream.h and - iostream.h if ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION. - - * examples/ASX/UPIPE_Event_Server/event_server.cpp, - examples/Log_Msg/test_log_msg.cpp, - examples/Reactor/Misc/test_time_value.cpp, - examples/Logger/Accepter-server/server_loggerd.cpp: - #include iostream.h if ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION. - - * examples/ASX/UPIPE_Event_Server/Peer_Router.cpp (svc): - replaced an iostream printout with an ACE_DEBUG call. - - * examples/Misc/test_read_buffer.cpp, - test_dump.cpp, - Mem_Map/IO-tests/test_io.cpp: - replaced bare OS calls with ACE_OS calls. - - * examples/Reactor/Misc/notification.cpp (Thread_Handler): - added cast of svc_run to ACE_THR_FUNC. - -Thu Aug 21 22:38:19 1997 Carlos O'Ryan - - * bin/auto_compile: - This tool will checkout ACE_wrapper from CVS, use - bin/create_ace_build to update a clone directory, compile ace - and tests in that clone directory and then run run_tests.sh. - If there is any problem it will report it to email. - - * bin/auto_compile_wrapper: - The former needs some configuration information and a proper - enviroment, hence it may not be invoked directly from your - crontab. This tool is used for that purpose. - - * apps/Gateway/Gateway/Makefile: - * apps/JAWS/server/Makefile: - * examples/Connection/non_blocking/Makefile: - * examples/IPC_SAP/DEV_SAP/reader/Makefile: - * examples/IPC_SAP/DEV_SAP/writer/Makefile: - * examples/Service_Configurator/IPC-tests/server/Makefile: - * netsvcs/clients/Naming/Client/Makefile: - * netsvcs/clients/Naming/Dump_Restore/Makefile: - * performance-tests/Synch-Benchmarks/Makefile: - No need to defines LIBS=-lACE here, it is already done in - wrapper_macros.GNU. Thanks to Cary Clark for - pointing out this one. - - * bin/create_ace_build: - New flag -a to create all symlinks using absolute paths, it - helps when the build directory is a symlink too. - - * include/makeinclude/platform_irix6.x-sgic++.GNU: - ACE now compiles with little or no warnings, I kept the linker - warnings deactivated though. - -ptall does not work any more. I added a comment on that. - - * ace/OS.h: - * apps/Gateway/Gateway/Concrete_Proxy_Handlers.cpp: - * apps/JAWS/clients/Blobby/Blob_Handler.cpp: - * apps/JAWS/server/HTTP_Server.cpp: - * examples/ASX/UPIPE_Event_Server/Peer_Router.cpp: - * examples/IPC_SAP/SPIPE_SAP/NPServer.cpp: - * examples/IPC_SAP/SPIPE_SAP/producer_read.cpp: - * examples/Reactor/Dgram/CODgram.cpp: - * examples/Reactor/Dgram/Dgram.cpp: - * examples/Reactor/Misc/test_demuxing.cpp: - * examples/Reactor/Misc/test_reactors.cpp: - * examples/Reactor/Misc/test_signals_2.cpp: - * examples/Threads/barrier2.cpp: - * examples/Threads/process_manager.cpp: - * examples/Threads/task_three.cpp: - * netsvcs/clients/Naming/Dump_Restore/Dump_Restore.cpp: - * netsvcs/clients/Tokens/collection/collection.cpp: - * netsvcs/clients/Tokens/mutex/test_mutex.cpp: - * performance-tests/Misc/childbirth_time.cpp: - * tests/Reactor_Exceptions_Test.cpp: - * tests/Reactors_Test.cpp: - * tests/SOCK_Test.cpp: - New macro ACE_NOTREACHED. Some compilers will issue warnings on - unreached statements with things like: - int foo() - { - if (bar) { - return 0; - } else { - return 1; - } - return 0; // warning here - } - but if we remove the last return some other compiler will issue - warnings on leaving the function with no return value. - This macro tries to deal with that, all we have to do is to - write the last line like: - int foo() - { - if (bar) { - return 0; - } else { - return 1; - } - ACE_NOTREACHED(return 0); // No warning now!!! - } - IMHO it also serves as a form of documentation. - -Thu Aug 21 21:00:35 1997 - - * ace/Auto_Ptr: Changed auto_ptr implementation to be as close - to the C++ specification as possible. Things that are still - missing are: - (a) std namespace - (b) member templates implementations - (c) making the constructors explicit - - * ace/OS.h (ACE_BIT_STRICTLY_ENABLED): Added new macro to check if - a bit is strictly enabled in a word. This is necessary when the - bit would be a combination of bits, and therefore, just - comparing against != 0 (like ACE_BIT_ENABLED does) is not enough - and comparing == BIT is necessary. - -Thu Aug 21 19:28:28 1997 James C Hu - - * include/makeinclude/rules.local.GNU (depend.local): If TAO_ROOT - is not set, don't try using it in sed. - - * bin/g++dep: Check the existence of the TAO_ROOT environment - variable before adding it to the relative pathname replacement - strategy. - -Thu Aug 21 16:29:02 1997 David L. Levine - - * ace/OS.h: added THR_JOINABLE and THR_SCHED_FIFO/RR/DEFAULT - to STHREADS, WTHREADS, and non-threaded platforms. On VxWorks - only, set NSIG to _NSIGS + 1. - - * ace/config-vxworks*.h: removed ACE_HAS_POSIX_SEM now that we - emulate it for VxWorks. - - * tests/Priority_Task_Test.cpp: use THR_SCHED_FIFO unconditionally - now that it's defined on all platforms. - - * include/makeinclude/platform_chorus.GNU, - platform_hpux_gcc.GNU, - platform_linux*.GNU, - platform_m88k.GNU, - platform_osf1_4.0_g++.GNU, - platform_sco*.GNU, - platform_sunos*_g++.GNU, - platform_unixware_g++.GNU, - g++ only: replaced PRELIB with "true" because it's not - needed for template instantiation. The old PRELIB no longer - worked without -lACE being added to LIBS in individual Makfiles. - The only reason to leave PRELIB defined to something is so that - the shared object definitions will be correct in rules.lib.GNU. - That should be fixed after 4.3 is released. - - * include/makeinclude/platform_vxworks5.x_ghs.GNU: - PRELIB no longer needed with explicit template instantiation. - -Thu Aug 21 12:38:26 1997 Steve Huston - - * ace/config-hpux-10.x.h: Removed extraneous #endif - -Thu Aug 21 12:21:16 1997 Nanbor Wang - - * ace/OS.h (THR_JOINABLE): Defined this macro for Win32 as 0. - -Wed Aug 20 22:36:52 1997 Douglas C. Schmidt - - * ACE version 4.2.44, released Wed Aug 20 22:36:52 1997. - -Wed Aug 20 18:28:28 1997 Steve Huston - - * ace/config-hpux-10.x.h: Made some definitions dependent on the - HP-UX version that is compiling the code. - - * ace/Filecache.(cpp h): Moved the definition of ACE_Filecache_Object - from .cpp to .h to help AIX xlC's template instantiator along. - - * apps/Gateway/Peer/Peer.(cpp h): Moved the definition of Peer_Handler - from .cpp to .h to help AIX xlC's template instantiator along. - - * include/makeinclude/platform_(hpux hpux_aCC hpux_gcc).GNU: Added - a compiler option to define HPUX_VERS with the current OS version. - Used in the config-hpux-10.x.h file. - -Wed Aug 20 13:44:16 1997 Carlos O'Ryan - - * ace/config-unixware-2.1.2-g++.h: - Unixware does not define timespec_t. Thanks to Ganesh Pai - for pointing out this one. - -Wed Aug 20 11:37:44 1997 David L. Levine - - * include/makeinclude/rules.bin.GNU,platform_vxworks5.x_g++.GNU: - added POSTLINK to build symbol table. - -Wed Aug 20 07:43:14 1997 Douglas C. Schmidt - - * ACE version 4.2.43, released Wed Aug 20 07:43:14 1997. - -Tue Aug 19 08:25:28 1997 Steve Huston - - * tests/Barrier_Test.cpp: Added THR_JOINABLE to the flags for - creating threads - allows join to work on platforms that create - threads detached by default (i.e. AIX). - - * tests/Process_Strategy_Test.cpp: If the final ACE_OS::kill() fails, - don't ACE_OS::wait() for the process. - - * ace/config-aix-4.2.x.h: Added ACE_HAS_BROKEN_POSIX_TIME. Commented - out ACE_HAS_AIX_BROKEN_SOCKET_HEADER. Added ACE_HAS_PTHREAD_T, - and will now not use tid_t for any ACE types. Rearranged things - to start clarifying items. - - * ace/config-hpux-10.x.h: Removed ACE_HAS_SETKIND_NP and adjusted - other, more meaningful, threads-related definitions to match what - HP 10.10 and 10.20 have for threads. This matches changes to OS.* - - * ace/OS.(h i cpp): Removed use of ACE_SETKIND_NP in an effort to - simplify the variety of threads-capability definitions. The only - platforms which used ACE_HAS_SETKIND_NP were HP-UX (see above) and - OSF/1 V3.2 (which has the same threads package as HP-UX). OSF/1 - V3.2 may require some adjustments per this change - it probably - should be changed to match HP-UX. OSF/1 V4 (aka Digital UNIX) - is not affected by this change. - - * ace/Log_Msg.cpp: Changed the 't' format (thread ID) to call - thread_self() directly on AIX. - -Mon Aug 18 21:39:33 1997 Douglas C. Schmidt - - * ACE version 4.2.42, released Mon Aug 18 21:39:33 1997. - -Mon Aug 18 20:22:14 1997 Carlos O'Ryan - - * apps/Gateway/Peer/Makefile: - No need to define LIBS=-lACE here, its already done in - wrapper_macros.GNU. Thanks to Cary Clark - for helping in this effort. - -Mon Aug 18 19:54:36 1997 Nanbor Wang - - * ace/OS.{h,i} (open, mutex_init, sema_init, event_init, mmap): - Added an extra argument LPSECURITY_ATTRIBUTE with default value - 0 to all these methods so that we can modify objects' security - attributes when needed. Thanks to Ivan Murphy for pointing this - out. - -Mon Aug 18 19:50:13 1997 Carlos O'Ryan - - * examples/Service_Configurator/Makefile: - * examples/Service_Configurator/IPC-tests/server/Makefile: - * apps/Gateway/Gateway/Makefile: - * examples/Connection/non_blocking/Makefile: - $(SOEXT) must be used instead of just .so, the former does not - work on all platforms, notably HP-UX. Thanks to Cary Clark - for helping in this effort. - -Mon Aug 18 19:46:27 1997 Carlos O'Ryan - - * ace/OS.i: - Added support for the missing netdb reentrant functions, even - under IRIX 6.2 with no threads. Thanks Paul Roman - for reporting this. - -Mon Aug 18 12:53:16 1997 David Levine - - * tests/Barrier_Test.cpp (tester): VxWorks doesn't support - thr_join(). Therefore, we need to work around it for now. - Maybe Wind River will fix it at some point. - -Mon Aug 18 12:38:52 1997 Steve Huston - - * ace/config-aix-4.2.x.h: Removed ACE_HAS_SVR4_TIME, added - ACE_LACKS_TIMESPEC_T. - -Mon Aug 18 12:00:31 1997 Carlos O'Ryan - - * ace/config-mvs.h: - MVS does not define timespec_t either. Thanks to Chuck - Gehr for reporting this. - -Mon Aug 18 10:41:05 1997 Carlos O'Ryan - - * ace/OS.h: - * ace/README: - On some platforms timespec_t is not defined. We added a new - config macro (ACE_LACKS_TIMESPEC_T) to handle that and we do a - typedef to solve the problem. - - * ace/config-freebsd-pthread.h: - * ace/config-freebsd.h: - * ace/config-linux-lxpthreads.h: - * ace/config-linux-pthread.h: - * ace/config-linux.h: - These are *some* config files that needed changes due to the new - timespec_t stuff. - -Mon Aug 18 09:34:11 1997 David L. Levine - - * ace/OS.cpp (ACE_Thread_Adapter): rearranged initializers to - match declaration order. - - * ace/Log_Record.h: declare "class ostream" if - ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION Log_Record.h. - - * ace/IOStream.h,Log_Msg.cpp,Log_Record.cpp, - tests/test_config.h: include iostream.h instead of ace/stdcpp.h - if ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION. - - * ace/config-vxworks*.h: added ACE_LACKS_TIMESPEC_T. - -Sun Aug 17 20:58:56 1997 Douglas C. Schmidt - - * ACE version 4.2.41, released Sun Aug 17 20:58:56 1997. - -Sun Aug 17 17:02:53 1997 Carlos O'Ryan - - * ace/config-irix6.x-sgic++-nothreads.h: - * ace/config-irix6.x-sgic++.h: - * include/makeinclude/platform_irix6.x-sgic++.GNU: - Finally a single config.h and platform_macros.GNU file can be use - for all the IRIX 6.X versions. - On SGI machines we need a higher value for - ACE_DEFAULT_BASE_ADDR, we used 1024*1024*1024, which works on - our site, but your mileage may vary. - - * include/makeinclude/platform_irix6.2_sgic++.GNU: - * include/makeinclude/platform_irix6.4_sgic++.GNU: - * ace/config-irix6.2-sgic++-nothreads.h: - * ace/config-irix6.2-sgic++.h: - * ace/config-irix6.4-sgic++-nothreads.h: - * ace/config-irix6.4-sgic++.h: - These files are no longer needed, see above. - - * ace/README: - * ace/ACE.cpp: - * ace/OS.h: - * ace/OS.i: - * ace/Profile_Timer.cpp: - * ace/Profile_Timer.h: - We no longer use timestruct_t in ACE, it is a SYSVism; we use - timespec_t instead. Hence we have no need for the config - macro ACE_HAS_SVR4_TIME, but we keep it there for future - reference. - - * tests/Reader_Writer_Test.cpp: - On IRIX using ACE_Thread::yield() degraded performance for - multiprocessor machines, but worse, the test will not behave as - expected: instead of interleaving read/write locks over the - RW_Mutex it will make all the write locks first and then the read - locks. The test uses ACE_OS::sleep() for yielding the CPU, - and it uses different pauses for each thread (see code for - details). Further, it yields the CPU *before* taking the - lock, to give other threads a chance. - -Sat Aug 16 18:17:10 1997 Douglas C. Schmidt - - * ACE version 4.2.40, released Sat Aug 16 18:17:10 1997. - -Sat Aug 16 18:13:22 1997 Douglas C. Schmidt - - * ace/ReactorEx.cpp (add_network_events_i): Revised the code to - use the ACE_BIT_CMP_MASK and ACE_SET_BITS macros to simplify the - code. - - * ace/OS.h: Added a new macro called ACE_BIT_CMP_MASK which checks - if a "bit-wise" & with a word == a particular mask. - - * ace/OS.cpp (thr_create): If we're in the Pthreads implementation - then we assume that ACE_thread_t and ACE_hthread_t are the same. - If this *isn't* correct on some platform, please let us know. - Thanks to Carlos O'Ryan . - - * ace/Auto_Ptr.cpp: Reverted the changes of ACE_Auto_Ptr to - auto_ptr since we want to be Standard C++ Library compliant. - However, we only define auto_ptr if ACE_HAS_STANDARD_CPP_LIBRARY - is *not* enabled. - - * Removed the INSTALL file since this is redundant with the HTML - version of this file (ACE-INSTALL.html). Thanks to David Levine - for doing the legwork to merge this. - -Sat Aug 16 15:11:24 1997 Darrell Brunsch - - * ace/Auto_Ptr.h: Put in an #include (for auto_ptr) if - the standard C++ library is being used. - - * ace/Auto_Ptr.*: Changed the checks for ACE_HAS_STANDARD_CPP_LIBRARY - to also check to see if it is defined to 0 (which means the same - as it not being defined). - - * ace/ReactorEx.cpp: Changed the use of auto_ptr to work with - the one in the Standard C++ library. - - * ace/config-win32-common.h: Added ACE_HAS_BROKEN_NESTED_TEMPLATES - and ACE_LACKS_STL_DEFAULT_TEMPLATE_PARAMETER for the MSVC versions - that need them. - - * ace/Registry.cpp: changed some variable names from iterator to - iter to prevent conflicts with another variable - - * ace/Registry.cpp: - STL/bstring.h: - - Changed references of NPOS to Istring::npos - -Sat Aug 16 14:17:07 1997 Carlos O'Ryan - - * ace/Auto_Ptr.i: - * ace/Auto_Ptr.cpp: - Some code was only included if ACE_HAS_STANDARD_CPP_LIBRARY was - defined; but the intention was exactly the opposite. - -Sat Aug 16 14:33:26 1997 David L. Levine - - * README,FAQ,Makefile: changed references from INSTALL file - to ACE-INSTALL.html. - -Fri Aug 15 19:51:52 1997 - - * ace/Auto_Ptr.h: A rarely used piece of ACE code has changed - names because of name conflicts with the Microsoft Standard C++ - Library. The change is from auto_ptr to ACE_Auto_Ptr. A perl - script ($ACE_ROOT/bin/auto_ptr.perl) is provided for users to - change their code accordingly. - - The following files were effected: - - ace: ACE.cpp Auto_Ptr.cpp Auto_Ptr.h Auto_Ptr.i OS.h - ReactorEx.cpp Service_Config.cpp Service_Object.h - - examples/Threads: future1.cpp future2.cpp test_future1.cpp - test_future2.cpp - - tests: Future_Test.cpp - -Fri Aug 15 17:41:28 1997 Douglas C. Schmidt - - * ACE version 4.2.39, released Fri Aug 15 17:41:28 1997. - -Fri Aug 15 13:33:04 1997 Nanbor Wang - - * ace/OS.h (ACE_DEFAULT_GLOBALNAME_W): Moved pathname delimiter - from ACE_DEFAULT_{LOCAL|GLOBAL}NAME_* to - ACE_DEFUALT_NAMESPACE_DIR on NT. We need to append local/global - name to get a unique mutex name for naming service. NT won't - let us put a backslash in lock name. ;( - -Fri Aug 15 14:50:26 1997 Steve Huston - - * ace/Makefile: Moved ARGV from the TEMPLATES section to the FILES - section; now builds on AIX. - - * ace/config-hpux-10.x.h: Don't redefine _HPUX_SOURCE. Move the - ACE_HAS_REENTRANT_FUNCTIONS and ACE_CTIME_R_RETURNS_INT to the - build-with-threads section. Thanks to Neil Cohen - for helping to flush these problems out. - - * tests/Makefile: If building on AIX, wipe out the tempinc directory - before each compilation to keep the driver from compiling all - prior programs' template instantiations in every link step. - -Fri Aug 15 13:07:26 1997 Douglas C. Schmidt - - * ace/Signal.cpp (remove_handler): Added some additional - parameters to ACE_Sig_Action usages in order to get this stuff - to compile with G++ on SunOS 4.1.4. Thanks to Kumar Neelakantan - for reporting this. - - * ACE version 4.2.38, released Thu Aug 14 23:07:26 1997. - -Fri Aug 15 13:33:04 1997 Nanbor Wang - - * ace/Naming_Context.cpp (ACE_Naming_Context): Moved the deletion - of name_options_ from close to dtor of this class so that we can - reconfigure the naming context. - -Fri Aug 15 10:28:14 1997 Darrell Brunsch - - * ace/OS.cpp: Changed uname() for Win32 so it returns information - for Windows 95 and NT. - -Thu Aug 14 18:06:37 1997 Chris Cleeland - - * ace/OS.[hi] (strsplit_r): Added a new method which splits a - string separated by tokens, similar to the way that perl's - split() works. This is different from the strtok() family b/c - for the string ":/foo:/bar::boo", strtok() would return "/foo", - "/bar", "boo", while strsplit_r() returns "", "/foo", "/bar", - "", "boo". This method is also properly re-entrant, and thus - safe to use among multiple threads. - - * ace/ACE.cpp (ldfind): Fixed this so that it now properly deals - with paths containing empty components intended to indicate - 'current directory'. - -Thu Aug 14 17:30:36 1997 Steve Huston - - * ace/config-hpux-10.x.h - Add ACE_LACKS_CONST_STRBUF_PTR, remove - ACE_HAS_POSIX_SEM, clarify comments regarding setting of - _CMA_NOWRAPPERS_ - thanks to Cary Clark for - helping in this effort. - -Thu Aug 14 16:14:47 1997 David L. Levine - - * ace/High_Res_Timer.cpp (print_ave,print_total): fixed format - specification for total_secs to be lu instead of lld. - -Thu Aug 14 14:06:37 1997 Chris Cleeland - - * ace/ARGV.cpp: Completed the explicit template instantiations for - this component. - -Thu Aug 14 11:27:03 1997 Edward Everett Anderson - - * ace/ARGV.* (argv): - - * Added another behavior to ACE_ARGV -- a user can iteratively - build the parameter set with add(). Made the class more - consistent so that accessors work no matter which constructor is - used. - -Thu Aug 14 10:14:37 1997 Darrell Brunsch - - * Made several changes to allow ACE to work with the new standard - C++ header files, such as and the built in STL. Thanks - to Matthias Kerkhoff for these changes. - The default is to use the old headers, unless the - ACE_HAS_STANDARD_CPP_LIBRARY is defined as 1. - - * ace/config-win32-common.h: - ace/config-win32.h: - - - Added ACE_USES_STD_NAMESPACE_FOR_STDCPP_LIB flag to - distinguish compilers who have the standard C++ library - declared in the namespace std and those who use the global - namespace for it - - - Enabled ACE_HAS_SIG_ATOMIC_T and ACE_HAS_TYPENAME_KEYWORD for - MSVC 5 - - - Changed the semantics of ACE_HAS_STANDARD_CPP_LIBRARY from - [defined/undefined] to [(undefined or defined as 0)/defined != 0] - to allow the choice between the old iostream and standard C++ - library for those platforms that support both - - - Don't define the ACE_LACKS_IOSTREAM_FX when building with MSVC - 5.0 and the standard C++ library. - - - If __ACE_INLINE__ is defined as 0, config-win32-common.h - undefines __ACE_INLINE__ to decrease the size of libraries and - executables. - - * ace/IOStream.cpp: Moved the #ifdef ACE_LACKS_ACE_IOSTREAM up to the - proper place - - * ace/IOStream.h: - ace/IOStream_T.h: - ace/Log_Msg.cpp: - ace/Log_Msg.h: - ace/Log_Record.cpp: - ace/Log_Record.h: - examples/ASX/Message_Queue/*.dsp: - examples/OS/Process/*.dsp: - examples/Threads/*.dsp: - examples/Threads/barrier2.cpp: - examples/Threads/task_three.cpp: - netsvcs/lib/Logging_Strategy.cpp: - - Updated to including stdcpp.h instead of , - , , etc. - - * ace/OS.h: Updated to use stdcpp.h instead of including the - normal C headers. Moved the includes into stdcpp.h to allow - switching between the old and new versions - - * ace/Registry.h: Changed to use the standard C++ headers for STL - and added a typedef Name_Component and Binding to - ACE_Registry::* to help some unresolved problems. - - * tests/Hash_Map_Manager_Test.cpp: - tests/test_config.h: - - Updated to #include ace/stdcpp.h instead of and - - - * ace/stdcpp.h: Updated to include more of the new standard C++ - header files, and also promote some of the iostream classes to - the global namespace. - - * ace/ace.dsp: - - - Added some folders like Templates and Documentation - - Added some files that were missing to the project - - Enabled function level linking for debug projects - - Set it to "Not using MFC" - - Removed wsock32.lib from the project settings (since - config-win32-common.h will tell the linker to use the correct - winsock library) - - Removed some other unnecessary libraries (OLE) from the - project. - -Wed Aug 13 23:02:45 1997 Douglas C. Schmidt - - * ACE version 4.2.37, released Wed Aug 13 23:02:45 1997. - -Wed Aug 13 13:26:27 1997 Douglas C. Schmidt - - * tests/Barrier_Test.cpp (main): Fixed the test of the ACE_Barrier - class so that it doesn't leak handles. This also illustrates - the use of the ACE_Thread::join() and - ACE_Thread_Manager::spawn_n() methods. Thanks to Ivan Murphy - for pointing this out. - - * ace/Thread_Manager.cpp (spawn_n): Note that if we get a null - thread_ids parameter we shouldn't try to index into it! - - * include/makeinclude/rules.local.GNU (OBJDIRS): Added - so_locations to the list of directories cleaned up during a make - clean/realclean. Thanks to Amos Shapira for reporting this. - - * ACE version 4.2.36, released Wed Aug 13 07:30:10 1997. - - * include/makeinclude/platform_irix6.[x-]32_sgic++.GNU: Added a - -Wl,-woff,133 to LDFLAGS to make the linker shutup about branch - instructions that might degrade performance - (what does this mean?). Thanks to Amos for this. - - * tests/test_config.h: Fixed a typo (ourput_file() should be - output_file()). How on earth did this ever work?! Thanks to - Amos Shapira for reporting this. - - * ace/Message_Queue.cpp: Added a couple of new ACE_UNUSED_ARGs - Thanks to Amos Shapira for reporting this. - - * ace/OS.cpp (gethrtime): ACE_OS::gethrtime should cast its return - value to ACE_hrtime_t instead of (u_long long). Thanks to - Amos Shapira for reporting this. - -Wed Aug 13 14:51:47 1997 Darrell Brunsch - - * ace/SString.[i,cpp]: moved some inline methods from the .i into - the .cpp so the Win32 Unicode Release compiles with inlining. - -Wed Aug 13 01:14:08 1997 Nanbor Wang - - * tests/test_config.h (ACE_NEW_THREAD): Removed - ACE_Log_Msg::set_flags/clr_flags from this macro because - ACE_Log_Msg::flags is a static variable. We really don't need - to reset them when creating new threads. Once VxWorks can also - inherit ACE_Log_Msg's properties, we no longer need this macro. - - * ace/Log_Msg.h: Added trace_depth() functions. They are required - for inheriting ACE_Log_Msg's properties. - - * ace/OS.cpp: Changed ACE_Thread_Adapter implementation so that - newly created threads will inherit properties from their parent - threads. This is the default behavior and is valid on all - platform except VxWorks. If you don't want it and would like to - arrange the properties propagation yourself, you must define - ACE_THREADS_DONT_INHERIT_LOG_MSG in your ace/config.h file. Now, - creating a new thread will go thru ace_thread_adapter on all - platform except VxWorks. If ACE_THREADS_DONT_INHERIT_LOG_MSG is - defined but your platform defines ACE_HAS_THR_C_FUNC or - ACE_WIN32, creating new threads still need to use - ace_thread_adapter. This change also fixes a previous problem - which let threads access another thread's TSS. - -Tue Aug 12 21:57:30 1997 David L. Levine - - * etc/ACE-guidelines.html: added. - -Tue Aug 12 16:54:33 1997 Douglas C. Schmidt - - * Added Chuck Gehr's explanation of how to build ACE for MVS to - the ACE-INSTALL.html file at http://www.cs.wustl.edu/~schmidt/. - - * ace/OS.i: changed the name of ACE_U_LongLong::dump() to - ACE_U_LongLong::output(). Also moved some of the code that was - inlined in the class definition into the *.i file. - - * netsvcs/lib/Server_Logging_Handler.cpp: Added a template - specialization for ACE_Atomic_Op to - make things link with SGI and other systems that have long - different than int. Thanks to Amos Shapira for reporting this. - - * ace/Reactor.cpp (close): Removed the #ifdefs around - notify_handler_.open () and notify_handler_.close() since this - is now supposed to be available on all build configurations. - Thansk to Stefan Ericsson for reporting this. - - * examples/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.cpp: - Removed a static variable that seemed to be causing problems for - SGI C++. Also, removed the now unnecessary "inherited" from - Handle_Thr_Acceptor. - - * examples/ASX/UPIPE_Event_Server/Peer_Router.h, - * netsvcs/lib/Log_Message_Receiver.h: Added an - ACE_UNIMPLEMENTED_FUNC macro for the assignment operator to work - around silly "features" of SGI C++... - - * include/makeinclude/platform_irix6.[x-]32_sgic++.GNU: Added some - additional patches to suppress warning code. Thanks to Torbjorn - Lindgren for this fix. - - * include/makeinclude/platform_mvs.GNU: Changed all occurrences of - "MVSLIB" to "ACELIB". Thanks to Chuck Gehr for reporting this. - -Tue Aug 12 15:03:42 1997 Steve Huston - - * ace/Timer_Hash_T.cpp, Timer_Wheel_T.cpp: Replaced references to - ACE_High_Res_Timer::gettimeofday with ACE_OS::gettimeofday. - The High Res version is deprecated, and doesn't work - correctly on HP-UX. - -Tue Aug 12 07:51:02 1997 Douglas C. Schmidt - - * ACE version 4.2.35, released Tue Aug 12 07:51:02 1997. - -Mon Aug 11 22:30:39 1997 David L. Levine - - * include/makeinclude/platform_vxworks5.x_ghs.GNU: disabled - automatic template instantiation, because we use explicit - template instantiation, via a #pragma, with Green Hills. - Thanks to Brian Mendel for - finding the compiler options. - -Mon Aug 11 17:45:44 1997 Nanbor Wang - - * ace/OS.cpp (ace_thread_adapter): Changed the code so that TSS - ACE_Log_Msg will get created and put into cleanup stack first no - matter there is other ACE_Log_Msg instances or not. This fixed - the "order of destruction" problem on Win32 platform. Thanks to - Irfan for digging this out and helping solving it. - -Mon Aug 11 07:25:29 1997 - - * examples/Reactor/ReactorEx/test_reactorEx.cpp: Updated this - example to use the new Proactor and Asynch IO interfaces. - - * ace/Connector.cpp (activate_svc_handler): Fixed the "leak" of - svc_handler in case of error. Thanks to Wei Chiang - for reporting this. - -Mon Aug 11 01:11:26 1997 Douglas C. Schmidt - - * ACE version 4.2.34, released Mon Aug 11 01:11:26 1997. - -Mon Aug 11 01:06:02 1997 Douglas C. Schmidt - - * ace/Message_Queue.cpp (enqueue_tail_i): Inadvertantly - added "signal_dequeue_waiters()" where I meant - "signal_enqueue_waiters()." - - * include/makeinclude/wrapper_macros.GNU: Fixed a typo in the - wrapper_macros.GNU file that was causing link errors. - -Sun Aug 10 11:35:06 1997 Douglas C. Schmidt - - * ace/Message_Queue.cpp: To make sure that we have correctly - signaled waiters the signal_enqueue_waiters() and - signal_dequeue_waiters() methods now check the return value from - the semaphore release if ACE_HAS_OPTIMIZED_MESSAGE_QUEUE is - enabled. - - * include/makeinclude/wrapper_macros.GNU (VLDLIBS): Added a - new macro called ACELIB that can be used to make it easier - to enable static linking for ACE, i.e.: - - ACELIB = -Bstatic -lACE -Bdynamic - - or - - ACELIB = $(ACE_ROOT)/ace/libACE.a - - Can be added to the individual platform_macros.GNU file. This - allowed us to remove special code for MVS in wrapper_macros.GNU. - Thanks to Chuck Gehr for this fix. - - * netsvcs/lib: Added some comments after the #endifs. - - * ace/Filecache.cpp (insert_i): Updated the code so that we use - ACE_NEW_RETURN rather than operator new. This macro will - protect against failed allocations. - -Sat Aug 9 22:08:50 1997 Douglas C. Schmidt - - * ace: Added two new config files: - - config-irix6.x-sgic++.h - config-irix6.x-sgic++-nothreads.h - - This should hopefully consolidate the SGI platform - configuration. Thanks to Torbjorn Lindgren for - this fix. - - * include/makeinclude: Added two new platform macro files: - - platform_irix6.x-n32_sgic++.GNU: - platform_irix6.x-32_sgic++.GNU - - This should hopefully consolidate the SGI platform macros. - Thanks to Torbjorn Lindgren for this fix. - - * ace/Filecache.cpp: Fixed the syntax of the SGI pragma stuff. - Thanks to Torbjorn Lindgren for reporting this. - - * ace/Name_Request_Reply.h: Changed MAX_NAME_LEN to MAX_NAME_LENGTH - to avoid problems with Solaris 2.6. Thanks to Thanh Ma - for reporting this. - -Sat Aug 9 12:10:35 1997 Nanbor Wang - - * ace/config-win32-common.h (ACE_HAS_WINSOCK2): - * ace/config-win32.h (ACE_HAS_WINSOCK2): Rearranged definition of - this so that users can overwrite the default setting and choose - older Winsock if they want. No action needed for most NT - useres. Thanks to jmorey@tbi.com (John Morey) for pointing this - out. - -Sat Aug 09 11:28:36 1997 Steve Huston - - * ace/Profile_Timer.i: ACE_HAS_GETRUSAGE and !ACE_HAS_PRUSAGE - platforms now use ACE_OS::gettimeofday rather than - ACE_High_Res_Timer::gettimeofday in start() and stop() methods. - - * tests/Sigset_Ops_Test.cpp: adjusted test for sigismember() with - out-of-range signum to separately test return value and errno. - Also, returns non-zero from program on failed test. - -Fri Aug 08 17:39:43 1997 Douglas C. Schmidt - - * ACE version 4.2.33, released Fri Aug 08 17:39:43 1997. - -Fri Aug 08 02:50:31 1997 Douglas C. Schmidt - - * ace/Message_Queue: Factored out the code that differs depending - on whether we are using the optimized ACE_Message_Queue - implementation (i.e., VxWorks and NT). This change makes it - easier to maintain the code. Thanks to Darrell for helping with - this. - - * ace/Log_Msg.cpp (close): Fixed a couple of typos in this code, - in particular, we need to make sure that we don't call - ACE_Log_Msg_Manager::close() if we aren't multi-threaded. - - * ACE version 4.2.32, released Fri Aug 08 02:50:31 1997. - -Fri Aug 8 13:17:21 1997 Chris Cleeland - - * ace/OS.* (strtoul): Added the OS function strtoul() to turn - strings into unsigned longs. - -Fri Aug 8 12:26:54 1997 Steve Huston - - * ace/Log_Msg.cpp: Fixed some comments and removed unused code - I erroneously added August 6. - - * ace/config-hpux-10.x.h: Fixed to not always compile tracing code. - - * tests/test_config.h: ACE_END_TEST and ACE_END_LOG macros direct - log output back to stderr when shutting off the file output. - - * tests/TSS_Test.cpp: Removed ACE_Thread_Control object from the main - thread - it served no purpose and didn't work on HP-UX (due to - a documented pthread_exit restriction). Also changed a 'delete - ptr' to a call on operator delete (void *). - -Fri Aug 8 09:17:21 1997 Chris Cleeland - - * ace/Service_Repository.h (operations.): Improved documentation - on find(). - -Fri Aug 8 00:01:43 1997 Nanbor Wang - - * ace/Log_Msg.cpp (close): Moved ACE_Log_Msg::close() out of - ACE_MT_SAFE block so it always exists. This function only takes - care of non-VxWorks platforms. - - (instance): Removed at_exit() call since the instances will be - taken of by TSS_Cleanup. - - * ace/Object_Manager.cpp (~ACE_Object_Manager): Removed condition - compilation so it always calls ACE_Log_Msg::close(). - -Thu Aug 7 23:36:26 1997 Douglas C. Schmidt - - * ace/Reactor.h: Added the renew() method and the notify_handler_ - data member to all compilation cases, not just for - multi-threading. - - * ace/Service_Config.h: Clarified the fact that argv[0] is the - program name. Thanks to Chris Cleeland for pointing this out. - - * ace/config-mvs.h: Added the ACE_HAS_TEMPLATE_SPECIALIZATION flag - thanks to Chuck Gehr. - - * include/makeinclude/platform_irix6.2_sgic++.GNU: Turned on - exceptions and turned off implicit template instantiation. - Thanks to Amos Shapira for reporting the - former. - - * ace/config-irix6.2-sgic++.h: Also added the - ACE_HAS_TEMPLATE_SPECIALIZATION flag and changed the - platform_irix6.2.GNU file to not implicitly initialize - templates. If this breaks something, please let me know. - - * ace/config-irix6.2-sgic++.h: Added the ACE_HAS_EXCEPTIONS flag. - Thanks to Amos Shapira for reporting this. - However, there is some question as to whether this will work. - If it doesn't, please let me know. - - * ace/Reactor: Moved the ACE_Reactory_Notify class out from the - ACE_MT_SAFE section into the main code since this should work - for non-threaded builds, as well. Thanks to Stefan Ericsson - for reporting this. - - * ace/config-chorus.h: Added the ACE_HAS_TEMPLATE_SPECIALIZATION - flag. Thanks to Wei Chiang for this. - -Thu Aug 7 19:09:35 1997 Steve Huston - - * tests/Hash_Map_Manager_Test.cpp - split definition of Dumb_String - class to a new header, Hash_Map_Manager_Test.h. This makes AIX - C Set ++ happy. - - * tests/Process_Strategy_Test.cpp - split definitions of Options - and Counting_Service classes to Process_Strategy_Test.h for AIX - C Set ++'s benefit. - -Thu Aug 7 15:27:28 1997 Darrell Brunsch - - * ace/OS.h: Fixed typo in the definition of ACE_SYNCH_1 and - ACE_SYNCH_2 for ACE_HAS_OPTIMIZED_MESSAGE_QUEUE - -Thu Aug 7 13:05:20 1997 Chris Cleeland - - * ace/Strategies_T.h: Changed the argument to ACE_DLL_Strategy - from ACE_Service_Config to ACE_Service_Repository, which is more - concrete. - - * bin/g++dep (REL): Added sed rule so that TAO's dependencies are - set relative to $TAO_ROOT as well as $ACE_ROOT when the '-r' - option is utilized. - - * include/makeinclude/platform_linux_lxpthread.GNU (CCFLAGS): The - -Wall option can now be used. It only generates two warnings - throughout all of ACE! - - * include/makeinclude/rules.local.GNU (depend.local): Modified - this target so that TAO's dependencies are set relative to - $TAO_ROOT as well as $ACE_ROOT. - -Thu Aug 7 12:03:48 1997 James C Hu - - * ace/Filecache.{h,cpp}: Fixed unused variable found by Amos - Shapira. Fixed TEMPLATE_SPECIALIZATION dependency, sort of. Do - not attempt to use Filecache if you do not support - TEMPLATE_SPECIALIZATION. - -Thu Aug 07 00:19:12 1997 Douglas C. Schmidt - - * ACE version 4.2.31, released Thu Aug 07 00:19:12 1997. - -Wed Aug 6 22:20:54 1997 Douglas C. Schmidt - - * ace/Synch_T.h: Replaced all uses of ACE_Null_Condition_Mutex - with ACE_Null_Condition, which is much more straightforward... - - * ASNMP: Added Mike MacFaden's changes for IRIX. - -Wed Aug 6 16:37:51 1997 James C Hu - - * ace/Hash_Map_Manager.cpp: Changed implementation back to use a - single sentinel_ rather than an array of them. - - * ace/Filecache.{h,cpp}: Total re-implementations. Fewer locks - acquired and released when there is a cache hit. - -Wed Aug 06 12:55:26 1997 Steve Huston - - * ace/Log_Msg.(h cpp): - (ACE_Log_Msg_Manager) - Removed most of the non-VxWorks - pieces - there's just a lock left; the instances_ was removed - (ACE_Log_Msg) - Use ACE_Object_Manager to remove per-thread - instances of ACE_Log_Msg rather than using ACE_Log_Msg_Manager. - The use of an ACE_Unbounded_Set to hold the ACE_Log_Msg pointers - in previous versions caused some non-tail recursion problems when - tracing was enabled. - Uses an instance count to know when it's safe to free the dynamically - allocated class-static memory. - - * ace/Trace.(h cpp): Added new static member function: - int is_tracing(void) - returns 1 if tracing is enabled, else 0. - - * ace/Object_Manager.(h cpp): Added a flag to indicate the object is - being destroyed - during destruction, ACE_Object_Manager now refuses - to register any new memory pointers. Also turns tracing off during - destruction - ACE_Log_Msg makes use of ACE_Object_Manager, so we - don't want ACE_Log_Msg instance being deleted, then created for a - ACE_TRACE, then deleted, then created,... - -Wed Aug 06 03:35:41 1997 Douglas C. Schmidt - - * ACE version 4.2.30, released Wed Aug 06 03:35:41 1997. - -Wed Aug 6 00:13:27 1997 Nanbor Wang - - * netsvcs/lib/Server_Logging_Handler.cpp: We only need to - instantiate ACE_Svc_Handler when - ACE_HAS_THREADS. Otherwise, we'll have duplicate symbols - defined on platforms that do not support threads. - -Tue Aug 5 19:52:36 1997 Douglas C. Schmidt - - * ace/Containers: Added a new reset method for ACE_Unbounded_Set. - Thanks to Arturo Montes for - reporting this. - - * ace: Changed most uses of ACE_LACKS_COND_T to - ACE_HAS_OPTIMIZED_MESSAGE_QUEUE to make it possible to toggle - between the emulated condition variable implementation of - ACE_Message_Queue and the semaphore implementation. We need - this until we fully test out the semaphore implementation of - ACE_Message_Queue. - - * ace/Object_Manager.cpp (ACE_Object_Manager): Only call the - ACE_Log_Msg::close() method if ACE_MT_SAFE is enabled! Thanks - to Satoshi Ueno for reporting this. - - * ace/Malloc.h: Added a fix for misalignment of data in the - ACE_CONTROL_BLOCK_ALIGN_LONGS macro. Thanks to Fred LaBar - for this fix. - - * ace/ACE.cpp: (enter_recv_timedwait,enter_send_timedwait): Always - give val a default value of 0 to make Purify happy. Thanks to - David Levine for reporting this. - - * netsvcs/clients/Tokens/rw_lock/rw_locks.cpp, - netsvcs/clients/Tokens/manual/manual.cpp, - netsvcs/clients/Tokens/deadlock/deadlock_detection_test.cpp: - Removed unreachable statements. Thanks to Cherif Sleiman - for reporting this deficiency and - testing the fix. - -Tue Aug 5 16:41:06 1997 Darrell Brunsch - - * ace/Synch_T.h: Added some more ACE_LACKS_COND_T changes for compilers - without template typdefs. - -Tue Aug 5 11:50:43 1997 Nanbor Wang - - * ace/Message_Queue.h: Fixed typos for the case when - ACE_LACKS_COND_T. - -Tue Aug 05 11:02:11 1997 - - * tests/Atomic_Op_Test.cpp (main): Made sure that on platforms - without threads, we don't try to run this test. - -Tue Aug 05 09:15:40 1997 David L. Levine - - * include/makeinclude/platform_vxworks5.x_ghs.GNU: removed - -no_prelink from LDFLAGS because ghs 1.8.8 doesn't support it. - Thanks to Cherif Sleiman for - reporting this. - - * ace/Service_Record.cpp: added #include "ace/Stream_Modules.h" - to support template instantiation on GreenHills, at least. - Thanks to Cherif Sleiman for - reporting this deficiency and testing the fix. - - * ace/config-vxworks-ghs-1.8.h: added - ACE_LACKS_LINEBUFFERED_STREAMBUF. Thanks to Cherif Sleiman - for reporting this. - -Mon Aug 4 22:47:54 1997 Douglas C. Schmidt - - * ace/Message_Queue: Fixed consistency problems in naming notfull - vs. not_full. Thanks to David Levine for finding this. - - * ace/Message_Queue: Added specialized support for cases where - ACE_LACKS_COND_T (e.g., VxWorks and NT). This scheme uses - ACE_Thread_Semaphores in this case, which should be more - efficient). - - * ace/Synch_T.h: Added a new set of macros and typedefs for - ACE_SYNCH_SEMAPHORE. - - * examples/ASX/Message_Queue: Cleaned up all the Message_Queue - examples. - - * examples/ASX/Message_Queue/buffer_stream.cpp: Added a - NUL-terminator to the program so that it won't break. Thanks to - Darrell for finding this. - - * ace/Reactor.cpp (wait_for_multiple_events): Fixed some - stylistic problems in the Reactor. - - * ace/Synch.cpp (ace_static_object_lock_atexit): Changed from: - - extern "C" static void - - to: - - extern "C" void - - Thanks to Chuck Gehr for this. - -Mon Aug 4 14:03:22 1997 Steve Huston - - * tests/Enum_Interfaces_Test.cpp: return non-zero if test fails. - -Mon Aug 4 12:03:29 1997 Darrell Brunsch - - * tests/Semaphore_Test: Redid to test timed waits in a more - reasonably fashion. - -Mon Aug 4 11:43:09 1997 Douglas C. Schmidt - - * ace/OS: Continued to cleanup the problems with inconsistent - variants of sendmsg() and writev() on VxWorks. Thanks to Cherif - Sleiman for reporting this. - - * ace/OS.i (sema_wait): Fixed the implementation on NT so that - errno = ETIME. - - * tests/Semaphore_Test.cpp: Cleaned up the programming style a - bit. - - * ace/OS (writev): Removed the ACE_WRITEV_TYPE from the - ACE_OS::writev() method and instead put this as a cast on the - internal call to ::writev(). This is much cleaner and should - fix a bug introduced last night. Thanks Cherif Sleiman - for reporting this. - - * ace/Synch: Added a new release() method to ACE_Semaphore that - enables a caller to release multiple waiters. Thanks to Darrell - Brunsch for noticing this. - -Mon Aug 4 12:03:29 1997 Darrell Brunsch - - * tests/Semaphore_Test: Redid to test timed waits in a more - reasonably fashion. - -Sun Aug 03 23:47:13 1997 Douglas C. Schmidt - - * ACE version 4.2.29, released Sun Aug 03 23:47:13 1997. - -Sun Aug 3 22:18:33 1997 Douglas C. Schmidt - - * tests/Atomic_Op_Test.cpp: Added template specialization so that - David won't have to ;-) - - * ace/ACE: Added a new, complete set of send/recv operations with - timeouts. These implement the following methods: - - read, readv, write, writev, recv, recvfrom, recvmsg, send, sendto, sendmsg. - - The implementation provides two flavors: MIT pthread support, an - ACE portable support. To use MIT pthread support, you must to - define ACE_HAS_READ_TIMEDWAIT, ACE_HAS_READV_TIMEDWAIT, - ACE_HAS_WRITE_TIMEDWAIT, ACE_HAS_RECV_TIMEDWAIT, - ACE_HAS_RECVFROM_TIMEDWAIT, ACE_HAS_RECVMSG_TIMEDWAIT, - ACE_HAS_SEND_TIMEDWAIT, ACE_HAS_SENDTO_TIMEDWAIT and - ACE_HAS_SENDMSG_TIMEDWAIT respectively. See the config.h file - for SCO UNIX for an example. - - This new approach is not only more powerful (since it takes - advantage of OS-level mechanisms when they exist), but it also - greatly improves the modularity of the code and provides a - wider range of supported functionality. Thanks to Arturo - Montes for this new feature. - - * ace/ACE.cpp: Added comments to the ACE_Object_Manager_Destroyer - class. - - * ace/OS.h: Redid all the function prototypes for class ACE_OS so - that it's easier to read the arguments. - - * ace/config-sco-5.0.0-mit-pthread.h: Added the new macros that - enable timed reads and writes. Thanks to Arturo Montes - for this new feature. - - * ace: Added a corresponding #endif /* FOO */ for all #if defined - (FOO) in ACE. - - * ace: Changed all uses of ACE_IOStream_T to ACE_IOStream to - be more consistent with other uses of templates in ACE. - Thanks to Thilo for reporting this (and thanks to David - for not being offended ;-)). - - * ace/OS.i (operator/): Removed "const" from both the OS.h and - OS.i files for ACE_U_LongLong::operator/. It is redundant, - potentially confusing, and gives warnings on some compilers! - -Sun Aug 03 21:20:12 1997 - - * tests/Atomic_Op_Test.cpp: Added new test to test the Atomic - Operations Class in ACE. On platforms like Win32, ACE uses - template specialization to use native implementations provided - by the OS to accelarate these operations. - - * ace/config-win32-common.h (ACE_HAS_INTERLOCKED_EXCHANGEADD): - Added macro to config file. This macro is automatically set true - for NT4.0 systems or greater. - - * ace/Atomic_Op.i: On Win32 platforms, this code will be included - as template source code and will not be inlined. Therefore, we - first turn off ACE_INLINE, set it to be nothing, include this - code, and then turn ACE_INLINE back to its original setting. All - this nonsense is necessary since the generic template code that - needs to be specialized cannot be inlined, else the compiler - will ignore the specialization code. Also, the specialization - code *must* be inlined or the compiler will ignore the - specializations. - - The creation of this new file is necessary for non-Win32 - platforms to continue to inline the code as before. - - * ace/Synch_T.cpp: This file must include Atomic_Op.i if - ACE_INLINE has not be turned on. If it is, this file must be - included by Synch_T.h. - - * ace/Synch.cpp: Moved the specialization code from Synch.cpp to - Atomic_Op.i. This is necessary, otherwise the compiler will - ignore the specialization. - -Sun Aug 03 10:51:34 1997 David L. Levine - - * ace/config-osf1-4.0*.h: added #define ACE_HAS_LONGLONG_T. - Thanks to Thilo for reporting that OSF1-4.0 does. - -Sat Aug 02 23:51:19 1997 Douglas C. Schmidt - - * ACE version 4.2.28, released Sat Aug 02 23:51:19 1997. - - * ace/TTY_IO.cpp (control): Fixed a bug when using 8 bits for - character due to ISTRIP flag setting for device. Thanks to - Arturo Montes for reporting this bug. - - * ACE-categories: Updated the list of ACE classes to reflect - recent changes. - - * ASNMP: Added the new ACE+SNMP release courtesy of Mike - MacFaden . This builds cleanly on Solaris, - but it looks like there are a bunch of non-portable features - that won't compile cleanly on all the other platforms. - Therefore, until Mike or others get this stuff fully portable, - it won't be build by default in the top-level ACE Makefile. - - * ace/OS.h (class ACE_U_LongLong): Reformatted this a bit. - - * ace/SV_Semaphore_Simple.i: Removed the #include of - SV_Semaphore_Simple.h since it seems unnecessary and is causing - problems for TAO. - - * ace/IOStream_T.h (ACE_IOStream_T): Removed the unneeded ';' at - the end of the ACE_UNIMPLEMENTED_FUNC macros since this was - causing compiler errors. - -Sat Aug 02 13:11:22 1997 David L. Levine - - * ace/Synch.cpp (ACE_Static_Object_Lock::instance): commented - out call to ::atexit () because it causes shutdown problems - on DEC CXX, HP/UX, and AIX. Many thanks to James Johnson - for tenaciously tracking this one down, to Thilo and Steve - for assisting, and to all who reported the problem. - - * ace/Log_Msg.cpp (ACE_Log_Msg_Manager::open,close): neutered - on VxWorks, only, so that it will compile. - -Fri Aug 1 21:33:18 1997 Nanbor Wang - - * netsvcs/lib/netsvcs.mak: Added post compilation command that - copies DLL to ace/ directory because netsvcs/main.exe must have - this file in search path. - - * ace/Read_Buffer.cpp (ACE_Read_Buffer): Used ACE_OS::fdopen - instead of ::fdopen because it caused compilation error on NT. - -Fri Aug 1 17:25:04 1997 Chris Cleeland - - * include/makeinclude/platform_irix6.4_sgic++.GNU (CCFLAGS): Used - -ptnone and -no_prelink in order to get SGI to compile properly. - - * ace/config-irix6.4-sgic++.h (ACE_HAS_EXCEPTIONS): Added - ACE_HAS_EXCEPTIONS to this config. - - * ace/IOStream_T.h (ACE_IOStream_T): Wrapped send, recv, send_n, - and recv_n with the ACE_UNIMPLEMENTED_FUNC macro. - -Fri Aug 1 17:08:32 1997 Nanbor Wang - - * ace/ace.mak: Put OS.cpp back into the makefile. - - * ace/config-win32-common.h: Commented out checking of - ACE_HAS_WINSOCK2 when we are using NT 4.0 and above. The - original check prevented us from using winsock2. - - * ace/Thread_Manager.cpp: - * ace/Service_Repository.cpp: - * ace/ReactorEx.cpp: - * ace/Reactor.cpp: - * ace/Proactor.cpp: - * ace/Malloc.cpp: - * ace/Synch.{h,cpp}: Changed the lock held by - ACE_Static_Object_Lock from ACE_Thread_Mutex to - ACE_Recurssive_Thread_Mutex. - - * ace/Timer_Heap_T.cpp (ACE_Timer_Heap_T): Something was missing - here..... - -Fri Aug 1 13:39:13 1997 Douglas C. Schmidt - - * ace/TTY_IO.cpp (control): Removed the special M_UNIX code for - SCO_OpenServer. Thanks to Arturo Montes - for reporting this. - - * ace/Read_Buffer.cpp (ACE_Read_Buffer): Mistakenly used int - rather than ACE_HANDLE for one of the constructors in - ACE_Read_Buffer. - - * ace/OS.cpp (readv): Fixed a braino that manifests itself on - Chorus because I put the ACE_READV_TYPE in the wrong place. - Thanks to Wei Chiang for reporting this. - -Fri Aug 1 14:31:22 1997 Darrell Brunsch - - * tests/Timer_Queue_Test.cpp: removed casts from pointers to ints - (when a act was compared with a number) and instead used a cast - on the integer values. This gets rid of warnings on platforms - where the sizeof a pointer is larger than the sizeof an int. - -Fri Aug 01 12:10:28 1997 - - * ace/Synch_T: Changed parameter passing for ACE_Atomic_Op from - const TYPE to const TYPE &. - - * ace/Synch.cpp: These specializations have been added to - ACE_Atomic_Op to make the implementation faster on Win32 that - has OS support for doing this quickly through methods like - InterlockedIncrement and InterlockedDecrement. - - * ace/SV_Semaphore_Complex.cpp (open): Fixed more compiler - warnings: - - IOStream.cpp Naming_Context.cpp Read_Buffer.cpp - SV_Semaphore_Complex.cpp SV_Semaphore_Complex.i - -Fri Aug 1 11:57:45 1997 Chris Cleeland - - * ace/Containers.h (ACE_Fixed_Set): Eliminated declaration for - unnecessary ACE_Fixed_Set(size_t) CTOR. - - * ace/OS.h: Simplified the typedef of ACE_hrtime_t so that it's an - unsigned long long whenever ACE_HAS_LONG_LONG_T is defined. - -Fri Aug 01 10:12:26 1997 David L. Levine - - * ace/config-osf1-4.0.h: added ACE_HAS_TEMPLATE_SPECIALIZATION. - Thanks to Thilo for verifying that this is supported with DEC CXX. - - * ace/config-irix6.4-sgic++*.h: added ACE_TEMPLATES_REQUIRE_SOURCE - and ACE_REQUIRES_FUNC_DEFINITIONS. - - * ace/OS.h,README: added ACE_REQUIRES_FUNC_DEFINITIONS support. - - * ace/{Free_List.h,Remote_Tokens.h,Synch_T.h,Timer_*_T.h}: - wrapped unimplemented template class copy constructors and - assignment operators with ACE_UNIMPLEMENTED_FUNC. - - * tests/Service_Config_Test.cpp: removed templates to avoid - problems with finicky compilers, and added check of destruction - ordering. - - * include/makeinclude/platform_vxworks5.x_ghs.GNU: added - -no_prelink to LDFLAGS. - -Fri Aug 01 00:14:46 1997 Douglas C. Schmidt - - * ACE version 4.2.27, released Fri Aug 01 00:14:46 1997. - -Thu Jul 31 21:51:01 1997 David L. Levine - - * ace/Log_Msg.cpp (open): fixed memory leak. - -Thu Jul 31 21:41:10 1997 Douglas C. Schmidt - - * tests/Service_Config_Test.cpp (run_test): You won't shout as I... - - * ace/Object_Manager.cpp (instance): ... fiddle about ;-) - -Thu Jul 31 17:39:56 1997 - - * ace: The following files were modified to avoid the - "unreferenced formal parameter" and other warnings from the - compiler: - - ACE.cpp Asynch_IO.cpp Asynch_IO.h INET_Addr.cpp OS.cpp OS.h OS.i - Proactor.cpp Reactor.cpp ReactorEx.cpp ReactorEx.i - SOCK_Dgram_Bcast.cpp Service_Config.cpp - -Thu Jul 31 16:46:44 1997 David L. Levine - - * ace/config*.h: replaced "ACE_REQUIRES_TEMPLATE_SPECIALIZATION" - with "ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION". - - * ace/config-vxworks-ghs-1.8.h,config-irix6.4-sgic++*.h: added - ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA. - - * all .cpp files that had "ACE_REQUIRES_TEMPLATE_SPECIALIZATION": - replaced with "ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION" and - added #pragma instantiate for Edision Design Group compilers, - e.g., SGI and Green Hills. - -Thu Jul 31 16:25:33 1997 Douglas C. Schmidt - - * ace/Synch.i (acquire): Added the timed acquire() interface to - ACE_Semaphore. - -Thu Jul 31 11:10:17 1997 Darrell Brunsch - - * tests/run_tests.bat: Redid this file completely making it - much smarter about running tests. Instead of just blindly - executing the tests, it checks the return values to see if - an error occured and also outputs relevant errors from the - log file if the test was unsuccessful. - - It's a remarkable example of batch programming wizardry. - -Thu Jul 31 10:39:04 1997 Darrell Brunsch - - * ace/INET_Addr.cpp: initialized error variable in - gethostname to stop warnings when inlining is on. - -Thu Jul 31 09:46:50 1997 Darrell Brunsch - - * ace/Timer_Heap_T.cpp: changed cancel(id) to check the timer - id to make sure it is in range (not negative and not larger - than the current size of the heap) - -Thu Jul 31 07:32:26 1997 David L. Levine - - * Malloc_T.{i,cpp},Timer_Queue_T.i: replaced LOCK with ACE_LOCK. - Thanks to Thilo for supplying patches. - - * ace/config-sunos5.5-g++.h: #define ACE_MALLOC_ALIGN to be 8. - - * ace/Object_Manager.*: renamed cleanup () to at_exit (). - - * Log_Msg.{h,cpp},Object_Manager.cpp: let ACE_Object_Manager - clean up the global ACE_Log_Msg_Manager. - - * Service_Config_Test.cpp: added test of - ACE_Object_Manager::at_exit (). - -Wed Jul 30 20:30:25 1997 Douglas C. Schmidt - - * ace/SOCK_Dgram.h: Added an = 0 to the flags parameter to recv(). - Thanks to Michael MacFaden for pointing out the inconsistency. - - * ace/OS.cpp (thr_create): Added support for the SCHED_IO policy, - which is supported by MIT Pthreads. Thanks to Arturo Montes - for this fix. - - * ace/SOCK_Dgram.h: Added a comment to clarify how to delete the - elements of the iovec array. Thanks to Mike MacFaden for - clarifying this. - - * ace/Reactor.h: Changed the comment for schedule_timer() to use - delta_timer rather than delay. - - * ace/Connector: Updated the timer cancellation id to be long - rather than int. - - * examples/Reactor/Misc/notification.cpp: Timers are now working - happily on Chorus, so we can revert the Chorus-specific patches. - Thanks to Wei Chiang for reporting this. - - * ace/SOCK_Dgram.cpp (recv): The timed recv() method must return - -1 on a timeout to meet its documented specification. Thanks to - Joseph Cross for reporting this - problem. - - * ace/OS.i (readv): Added a fix for Chorus, which has a different - readv() prototype than normal operating systems. Thanks to Wei - Chiang for reporting this. - -Wed Jul 30 20:02:21 1997 James C Hu - - * ace/Hash_Map_Manager.{h,cpp}: changed the *_i methods to use - shared_find() method to ease template specialization efforts. - Also, added a new shared_find() method. Added a parameter to - each to allow the passing in of the calculated hash value. - -Wed Jul 30 16:43:34 1997 - - * ace/config-win32-common.h: If _DEBUG is not set (that is, we are - building the Release version), we will turn on __ACE_INLINE__. - Thanks to Matthias Kerkhoff for - suggesting this. - -Wed Jul 30 06:53:30 1997 Matthias Kerkhoff - - * The use of the following configuration #defines in the entire - ACE distribution has been changed: - - - ACE_HAS_WINNT4 - - ACE_HAS_MFC - - ACE_HAS_STRICT - - ACE_MT_SAFE - - ACE_HAS_DLL - - ACE_HAS_SVC_DLL - - ACE_HAS_WINSOCK2 - - ACE_HAS_ORBIX - - ACE_HAS_MT_ORBIX - - In previous ACE-versions, code blocks depending on one of these - defines have been guarded by an #if defined(ACE_XXX_OPTION). - Therefore it has been necessary to define the default - configuration unconditionally in config-win32.h. - - The #if statements in the source files have been changed to - - #if defined(ACE_XXX_OPTION) && (ACE_XXX_OPTION != 0) - - while the default configuration in config-win32.h will only be used, - if it has not been overridden from the compilers command line (i.e.) : - - #if !defined(ACE_XXX_OPTION) - #define ACE_XXX_OPTION 1 - #endif - -Wed Jul 30 14:46:33 1997 Nanbor Wang - - * ace/Malloc.cpp: - * ace/Proactor.cpp: - * ace/ReactorEx.cpp: - * ace/Reactor.cpp: - * ace/Service_Repository.cpp: - * ace/Thread_Manager.cpp: - * ace/Synch.{h,cpp}: Changed ACE_Static_Object_Lock::get_lock () - to instance () to emphasize that it's a singleton. - - * ace/Containers.cpp: Fixed the problem caused by - ACE_Unbounded_Stacknotkeeping its size currectly. Thanks for - Matthias Kerkhoff for sending us the - patch. - - * ace/OS.cpp (exit): Corrected a bug in ACE_TSS_Cleanup::exit (). - It innocently uses default ctor to copy info_arr. And things - get out of hand when info_arr[] gets destructed. Thanks very - much for Matthias Kerkhoff for digging - this out and sending us the patch. - -Wed Jul 30 13:36:55 1997 David L. Levine - - * ace/config-vxworks-ghs-1.8.h: added #ifdef ppc wrapper around - #define of ACE_HAS_POWERPC, because GreenHills #defines that. - - * include/makeinclude/platform_vxworks5.x_ghs.GNU: replaced - indlib.o LIBS with newer ghsbltin.o and ghsmath.o. - - * ace/OS.h: use the same ACE_UNUSED_ARG definition with ghs as - with other compilers. - - * ace/Object_Manager.*: revised interface, but still in flux. - cleanup () should work for process-wide registration, but is - untested. - -Wed Jul 30 11:13:57 1997 Chris Cleeland - - * ace/config-linux*.h (ACE_HAS_LONGLONG_T): These configs - file incorrectly had ACE_HAS_LONGLONG rather than - ACE_HAS_LONGLONG_T. - - * ace/OS.cpp (gethrtime): Added 'volatile' keyword to insure that - the automatic variables 'most' and 'least' don't get put into - registers. Putting this in stopped the SIGSEGV that was occurring - in Linux. - -Wed Jul 30 06:53:30 1997 Douglas C. Schmidt - - * ACE version 4.2.26, released Wed Jul 30 06:53:30 1997. - -Wed Jul 30 04:36:39 1997 Nanbor Wang - - * ace/Containers.{h,cpp}: Added back new parameterized allocation - strategy version. Finally. - - * ace/Synch.cpp (atexit): Moved ACE_Allocator here because only - here, we can be sure that no other user defined memory - activities are going on. This is becoming even more - interesting now.... Perhaps we should move all - close_singleton's here? - - * ace/Service_Config.cpp (close_singletons): Removed - ACE_Allocator::close_singleton () from this function because we - still need ACE_Allocator to "free" static objects' memory. - - * ace/Synch.{h,cpp}: Added a new class ACE_Static_Object_Lock - which provides a lock when instantiating static objects. - - * ace/Thread_Manager.cpp: Removed ace_thread_manager_lock_, - * ace/Service_Repository.cpp: Removed ace_service_repository_lock_, - * ace/ReactorEx.cpp: Removed ace_reactorex_lock_, - * ace/Reactor.cpp: Removed ace_reactor_lock_, - * ace/Proactor.cpp: Removed ace_proactor_lock_, - * ace/Malloc.cpp: Removed ace_malloc_lock_, - and replace them with a global single lock - ACE_Static_Object_Lock::get_lock (). - -Tue Jul 29 16:25:48 1997 Chris Cleeland - - * ace/OS.cpp (thr_create): Explicitly flagged 'stack' and 'size' - as unused arguments. - - * ace/Memory_Pool.cpp (handle_signal): Explicitly flagged siginfo - as an unused argument, and moved the decl of offset into the - conditional block in which it's used. - - * ace/OS.i (dlerror): Added explicit cast of the return value to - (char*) because on Linux dlerror() returns const char*, while on - Solaris it's char*. - - * ace/config-linux-lxpthreads.h: Created new flag - ACE_LACKS_POSIX_PROTO_FOR_SOME_FUNCS that can be used when only - certain functions are missing POSIX prototypes. This eliminates - more warnings with -Wall - - * ace/ACE.cpp (max_handles): Added return statement for the - RLIMIT_NOFILE case. - (count_interfaces): Removed unused variables. - -Tue Jul 29 15:10:35 1997 Darrell Brunsch - - * ace/OS.i: Changed sema_wait to take in a const ACE_Time_Value - -Tue Jul 29 12:41:27 1997 Douglas C. Schmidt - - * ace/config-sco-5.0.0-mit-pthread.h: Added the - ACE_LACKS_PWD_FUNCTIONS macro. Thanks to Arturo Montes - for reporting this. - -Tue Jul 29 13:10:00 1997 Nanbor Wang - - * ace/Signal.h: Moved inclusion of "Containers.h" to the bottom of - this file so everything is defined properly before use. - -Tue Jul 29 12:36:24 1997 - - * tests/Message_Queue_Test.cpp (main): Removed dynamic allocation - of the string array. - -Tue Jul 29 12:15:49 1997 Darrell Brunsch - - * ace/Proactor.cpp - * ace/Reactor.cpp: - * ace/ReactorEx.cpp: Changed the default Timer Queue to - Timer Heap instead of Timer List. - -Tue Jul 29 07:59:04 1997 David L. Levine - - * Makefile,TAO/Makefile: change mode of updated ChangeLog-* - file to 644 after updating it, when building a release - with TIMESTAMP enabled. - - * ace/OS.cpp (sched_params): added some more initializations - to 0 to avoid Purify warnings about unitialized memory reads. - - * ace/Object_Manager.cpp (~ACE_Object_Manager): removed unused - variable "i". Thanks to Amos Shapira - for reporting this. - - * ace/Service_Record.{h,i} Parse_Node.{h,cpp} (handle,open_handle): - removed "const" from ACE_SHLIB_HANDLE return value. Thanks - to the several people who noted compiler warnings from this. - - * ace/Naming_Context.cpp: added delete of this->name_options_; - (dtor,fini): call this->close (). - - * tests/IOStream_Test.cpp (client,server): use ACE_NEW_RETURN - instead of new. - -Tue Jul 29 01:53:18 1997 Nanbor Wang - - * ace/OS.h: Added two new macros ACE_NEW_MALLOC_RETURN and - ACE_NEW_MALLOC. Theses are similiar to ACE_ALLOCATOR_RETURN and - ACE_ALLOCATOR that allow memory allocation using user defined - functions. However, these two macros will call specified - constructor after memory is being allocated. - - * ace/Containers.{h,cpp}: Decoupled memory allocation strategy for - ACE_Unbounded_Stack, ACE_Unbounded_Set, ACE_Unbounded_Queue. - Users can now specified their own memory allocation strategies - if needed. If not specified, the default ACE_Allocator will be - used. - -Tue Jul 29 00:56:54 1997 Douglas C. Schmidt - - * ACE version 4.2.25, released Tue Jul 29 00:56:54 1997. - -Mon Jul 28 16:23:26 1997 David L. Levine - - * include/makeinclude/rules.nested.GNU: added missing - semicolon at end of last statement. Thanks to Amos - Shapira for providing this fix. - - * ace/OS.h (VxWorks only): only #include before - for GreenHills. Thanks to Dave Moore - for reporting a problem without this - fix with g++/VxWorks 5.3.1 for PowerPC target. - Also, commented out g++ string.h hack. It no longer appears - to be necessary. - - * tests/README: added VxWorks 5.3.1 test status. - - * tests/SPIPE_Test.cpp (main): fixed #ifdefs so that it compiles. - - * ace/OS.i: (strtok_r): replaced NULL with 0. NULL is #defined - as (void *) 0 on VxWorks, so it causes compile warnings. - Thanks to Dave Mayerhoefer for reporting - this problem. - - * ace/Object_Manager.{h,cpp},Makefile: added this class to - shutdown ACE library services, and reclaim their storage, - at program termination. - - * ace/ACE.cpp: added hook to call ACE_Object_Manager destructor - in this file. It's in this file so that it's sure to be - linked in to executables that statically link libACE.a. - - * ace/Service_Config.{h,cpp}: (close): delete ACE_STATIC_SVCS - instance, which is now saved in static_svcs_. Also, removed - LM_SHUTDOWN call, because the logger apparently gets shutdown - now with everything else (with ACE_Object_Manager). - - * ace/Object_Manager.* (delete_at_exit,delete_array_at_exit): - made these (inline) static functions, with return values. - - * tests/IOStream_Test.cpp (client,server): explicitly destroy - (and create) ACE_SOCK_IOStream instances, because they don't - get destroyed on Solaris. They're on the stack of separate - threads, so maybe the problem is related to not cleaning up - TSS on Solaris. Thanks to James CE Johnson - for some efficient debugging work, and for verifying that the - original code works properly on Linux. - -Mon Jul 28 21:59:09 1997 Nanbor Wang - - * ace/ace.mak: Added file Object_Manager.cpp. - - * ace/OS.h: Added #define RTLD_LAZY when - ACE_HAS_SVR4_DYNAMIC_LINKING and RTLD_LAZY is not defined. - FreeBSD 2.2.1 "forgot" to put in this definition. Thanks to - Satoshi Ueno for reporting this. - -Mon Jul 28 13:27:21 1997 Douglas C. Schmidt - - * ace/Object_Manager: Made a few minor stylistic updates. - - * netsvcs/servers/main.cpp (main): Updated this test program to - utilize the new ACE_Service_Object_Ptr class. - - * ace/Service_Object.h: Added a new smart pointer call - ACE_Service_Object_Ptr, which generalizes functionality that was - previously in the ./netsvcs/server/main.cpp file. Thanks to Wei - Chiang for this suggestion. - - * examples/Threads/process_manager.cpp (parse_args): Removed the - unused n_processes global variable. Thanks to Amos Shapira for - reporting this. - - * tests/SPIPE_Test.cpp (main): Cleaned up the #ifdef structure - to remove compiler warnings. Thanks to Amos Shapira for - this. - - * tests/Handle_Set_Test.cpp (test_performance): Removed an unused - ACE_HANDLE handle definition. Thanks to Amos Shapira for - reporting this. - - * ace/OS.i (sema_init): Swapped else and #endif to avoid - a compile error when ACE_LACKS_NAMED_POSIX_SEM is false. - Thanks to Wei Chiang for reporting this. - - * ace/OS.cpp (rwlock_init): Added a cast to (const void *) to keep - certain compilers from complaining. Thanks to Thilo and - Amos Shapira for reporting this. - - * ace/OS.i (sema_wait): *tv should have been &tv. Thanks to Thilo - for reporting this. - -Mon Jul 28 13:57:21 1997 James C Hu - - * ace/config-irix6.4-sgic++.h: Added template specialization #def. - -Sun Jul 27 20:47:01 1997 David L. Levine - - * tests/Handle_Set_Test.cpp: Instantiate templates with - ACE_HANDLE instead of int. - - * examples/IPC_SAP/SPIPE_SAP/NPServer.cpp (main): use - ACE_OS::fprintf () instead of cerr. - -Sun Jul 27 20:10:26 1997 Douglas C. Schmidt - - * ACE version 4.2.24, released Sun Jul 27 20:10:26 1997. - -Sun Jul 27 16:03:30 1997 Nanbor Wang - - * tests/Handle_Set_Test.cpp (test_boundaries): Changed class of - queue from ACE_Unbounded_Queue to - ACE_Unbounded_Queue so it declares the right data - type. - - * ace/Synch.cpp (ACE_Process_Mutex): - * ace/OS.cpp (rwlock_init): - * ace/ACE.cpp (unique_name): Memories for placing unique_name are - now declared using ACE_UNIQUE_NAME_LEN. When calling - ACE::unique_name, the length is also specified using - ACE_UNIQUE_NAME_LEN because using "sizeof (buffer)" also caused - problem if we are using UNICODE. - - * ace/OS.h: Added a new directive ACE_UNIQUE_NAME_LEN to specified - the maximum length of an "unique name." - -Sun Jul 27 15:32:08 1997 David L. Levine - - * tests/Handle_Set_Test.cpp (main): uncommented - test_duplicates () and test_performance () calls, and added - ACE_Unbounded_Queue_Iterator specialization. - -Sun Jul 27 14:25:33 1997 Douglas C. Schmidt - - * tests/Handle_Set_Test.cpp (test_boundaries): Added a better test - to ensure that the ACE_Handle_Set_Iterators are working - correctly. This works by inserting the handles in a queue and - then making sure that they are the same values we receive from - the iterator. - - * ace/Handle_Set.i (operator): Fixed a subtle bug in the - ACE_Handle_Set_Iterator implementation. We need to make - sure that we increment the handle_index_ to the beginning - of the next word whenever we've examined all the bits in - the current word. Thanks to David Levine for noticing this - problem. - -Sun Jul 27 09:06:29 1997 David L. Levine - - * include/makeinclude/rules.lib.GNU: replaced hard-coded ".so" - with "$(SOEXT)". - - * include/makeinclude/rules.local.GNU: added/completed support - for "$(SOEXT)", and "$(VSHDIR)" instead of always hard-coding - them as ".so" and ".shobj/". - - * include/makeinclude/wrapper_macros.GNU: added support for - override of "$(VSHDIR)" in platform_macros.GNU. - - * apps/JAWS/clients/{Blobby,Caching}/Makefile, - apps/JAWS/stress_testing/Makefile, - apps/Orbix-Examples/Event_Comm/{Consumer,Supplier}/Makefile, - examples/ASX/Event_Server/Event_Server/Makefile, - examples/ASX/UPIPE_Event_Server/Makefile, - examples/Logger/simple-server/Makefile, - examples/Mem_Map/IO-tests/Makefile, - examples/Naming/Makefile, - examples/Reactor/Multicast/Makefile, - examples/Service_Configurator/Misc/Makefile, - examples/Shared_Malloc/Makefile: - replaced hard-coded ".shobj" with "$(VSHDIR)" in LDLIBS definitions. - - * include/makeinclude/platform_vxworks5.x_{g++,ghs}.GNU: - added overrides of .so build rules to change them .o builds. - - The above changes allow builds of modules that specify .shobj/*.so - on VxWorks, by mapping those objects to .obj/*.o. - -Sun Jul 27 03:07:35 1997 Nanbor Wang - - * ace/ACE.cpp (unique_name): Added __TEXT macro to the format - string in sprintf to avoid a nasty problem when using UNICODE on - NT. - -Sat Jul 26 21:12:07 1997 David L. Levine - - * ace/ReactorEx.cpp: added a couple of ACE_UNUSED_ARG's. - - * examples/Logger/simple-server/Logging_Handler.cpp (handle_input): - replace use of cerr with stderr (by using default arg of - ACE_Log_Record::print ()). - - * examples/Shared_Malloc/test_multiple_mallocs.cpp (main): use - ACE_OS::printf () instead of cout. - - * examples/Shared_Malloc/test_persistence.cpp: added #include - of iostream.h with ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION. - -Sat Jul 26 15:55:43 1997 - - * ace/Malloc_T.cpp (ACE_Cached_Allocator): Changed (T *) to - (T*). VC++ did not like the former. - - * The entire ACE distribution was updated to use the new singleton - methods. The old singleton methods in Service_Config have been - deprecated and users are encouraged not to use these methods - anymore. It may not be supported in future releases. The - replacement is the instance() methods in the individual classes. - For example, ACE_Service_Config::reactor() is replaced by - ACE_Reactor::instance(). A perl script has been added - (ACE_wrappers/bin/Service_Config.perl) to allow users to change - their code over to the new methods. - - These changes will hopefully help in reducing the compile-time - dependencies in ACE source files and allow smaller custom ACE - libraries to be compiled. - - Thanks to Matthias Kerkhoff for making - these changes. - -Sat Jul 26 15:44:45 1997 Douglas C. Schmidt - - * ace/Malloc_T.cpp (ACE_Cached_Allocator): I think we want to - say "sizeof (T)" rather than "sizeof (T *)". - - * ace/FILE_IO.i (recv_n): There is a minor bug fix to be made in - FILE_IO.i. The method ACE_FILE_IO::recv_n() should call - ACE::read_n(), not ACE::recv_n(). Similarly, the method - ACE_FILE_IO::send_n() should call ACE::write_n(), not - ACE::send_n(). The functions ::recv() and ::send() are intended - only for *socket* I/O, and return failure conditions when - applied to *file* I/O. Thanks to David Brackman - for reporting this. - - * ace: Changed all LOCK names to ACE_LOCK to avoid clashes - with macros in the KAI C++ compiler. Thanks to Jeff - R. Hayes for pointing this out. - - * ace/Malloc_T.i: Added ACE_INLINE to some methods that weren't - getting inlined. - - * ace/OS.i: Added an implementation of timed semaphores for the - POSIX threading APIs. Also cleaned up the return values from - sema_wait() so that it always returns -1 if an error occurs - (originally, it was returning -2, which is confusing). Also - cleaned up the rd_lock() and wr_lock() methods in the same way. - -Sat Jul 26 16:00:05 1997 David L. Levine - - * Malloc_T.cpp (ACE_Cached_Allocator): fixed typo, sizeof (T*) - instead of sizeof (*T). - - * Proactor.cpp (instance): fixed signature in non-WIN32 - version. (run_event_loop): added ACE_UNUSED_ARG (tv). - -Fri Jul 25 12:08:47 1997 David L. Levine - - * ace/OS.[hi]: finished VxWorks (non-POSIX) semaphore implementation. - - * ace/Process.cpp (spawn): with GreenHills compiler only (for - VxWorks), call ACE_NOTSUP_RETURN instead of spawning via execve. - GreenHills 1.8.8 loses its lunch on the ACE_OS::execve () call. - Thanks to Dave Mayerhoefer for reporting - this problem. - - * tests/Mem_Map_Test.cpp (create_test_file): delete array "mybuf" - to prevent memory leak. - - * tests/Message_Queue_Test.cpp (main): delete "buffer" - elements at end of test to prevent memory leaks. - - * performance-tests/Misc/context_switch_time.cpp: use - ACE_Sched_Params for platform-independent thread priority - assignment. Also, modified Yield_Test so that only one thread - writes the test's timer. - - * examples/ASX/UPIPE_Event_Server/Peer_Router.cpp (svc): - replaced an iostream printout with an ACE_DEBUG call. - - * examples/ASX/UPIPE_Event_Server/event_server.cpp: added - #include of iostream.h with ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION. - - * examples/IPC_SAP/FILE_SAP/client.cpp: require 2 args instead - of 1; mask file mode with 0777 (octal); and use - ACE_OS::printf () instead of cout. - -Fri Jul 25 00:46:22 1997 - - * ace/Synch: Added documentation for Condition variables. Thanks - to Jeff for pointing out the lack of - documentation. - -Thu Jul 24 11:48:05 1997 David L. Levine - - * Makefile,TAO/Makefile: added a filter to exclude backup and - [.]#* files from releases. Thanks to Carlos O'Ryan - for reporting this problem. - - * include/makeinclude/platform_*.GNU: inserted CVS/RCS - keyword string. - - * performance-tests/Misc/basic_perf.cpp (per_iteration): - added support for ACE_U_LongLong. - - * performance-tests/Misc/childbirth_time.cpp: - (prof_fork,prof_native_thread): added ACE_UNUSED_ARGs - for unsupported platforms. (prof_ace_os_thread): added - (ACE_THR_FUNC) cast of first arg to ACE_OS::thr_create () call. - - * performance-tests/Misc/test_naming.cpp (find): replaced cerr - statement with an ACE_DEBUG. - - * examples/Misc/test_read_buffer.cpp: replaced bare OS calls - with ACE_OS calls. - -Thu Jul 24 11:35:37 1997 Darrell Brunsch - - * ace/Timer_Heap_T.cpp: Fixed a problem with reschedule() - corrupting the free list in Timer Heap. Thanks to - James Crawford , Silvano Peruzzi - , and Stuart Powell - for the fix. - -Wed Jul 23 23:29:15 1997 - - * ace/Message_Block.cpp (size): Changed the comparison from - (length < this->max_size_) to (length <= this->max_size_). - Thanks to Paul for suggesting this change. - -Wed Jul 23 21:54:23 1997 David L. Levine - - * examples/Shared_Malloc/test_malloc.cpp (spawn): cast argv - argument to (char *const *) for call to ACE_OS::execv (). - -Wed Jul 23 16:40:39 1997 Nanbor Wang - - * ace/ACE.cpp (get_ip_interfaces): ACE'ified codes for NT. UNIX - part will come later. - - * ace/Malloc_T.cpp (ACE_Cached_Allocator): Changed to use raw - memory allocation method for memory pool. - - * ace/OS.h (ACE_TEXT_STRING): Added this #define macro to switch - between ACE_WString and ACE_CString according to the usage of - UNICODE. - -Wed Jul 23 14:43:11 1997 David L. Levine - - * tests/Timer_Queue_Test.cpp(main): delete timer_id array at - the end of the test to avoid a memory leak. - -Wed Jul 23 13:40:39 1997 Nanbor Wang - - * ace/Process.cpp (ACE_Tokenizer::next): Moved checking of string - termination after checking delimiter and preserve_designator so - that we can use this class to tokenize multiple null terminated - strings cascaded together (using \0 as delimitor.) Notice tne - combined strings must be terminated with two null chars. I need - to use this class in ACE::get_ip_interfaces. - - * ace/Malloc_T.{h,i}: Changed the implementation of - ACE_Cached_Mem_Pool_Node from using union to a plain pointer. - This is because some C++ compilers don't allow union member to - have copy constructor. Thanks to Tim to dig this out. - -Wed Jul 23 12:58:04 1997 Steve Huston - - * ace/CORBA_Ref.cpp: Added #include "ace/Log_Msg.h" to catch the - ACE_DEBUG macro. diff --git a/ChangeLog-98a b/ChangeLog-98a deleted file mode 100644 index c5daa4d7ee1..00000000000 --- a/ChangeLog-98a +++ /dev/null @@ -1,6588 +0,0 @@ -Wed Apr 29 18:55:13 1998 David L. Levine - - * ACE version 4.5 released. - -Wed Apr 29 12:25:05 1998 David L. Levine - - * ace/config-lynxos.h: added ACE_POLL_IS_BROKEN so that - ACE_OS::sleep () uses select () instead of poll (). - - * tests/Map_Manager_Test.cpp: added a ssize_t loop index that's - used to avoid signed/unsigned comparisons. - -Tue Apr 28 23:08:10 1998 Nanbor Wang - - * ace/Hash_Map_Manager.cpp: Bugs fixed. - - * tests/Map_Manager_Test.cpp: Added assertion tests on the number - of iterations to ensure the test does run correctly. - - * tests/Map_Manager_Test.cpp (main): Disabled the VERBOSE_LITE - Log_Msg flag before starting the real test and reenabled it - after the tests. - -Tue Apr 28 06:49:50 1998 David L. Levine - - * ACE-INSTALL.html,os-patches/linux-patches.html: updated - Linux glibc-2 info. ACE works with glib-2.0.7-7, unmodified. - - * ace/config-g++-common.h: added - ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES with egcs. egcs 1.0.2 - won't compile netsvcs/lib without it. - - * include/makeinclude/platform_vxworks5.x_ghs.GNU: fixed location - of parenthesis in ppc check. Thanks to Brian Mendel - for reporting this. - - * ace/High_Res_Timer.cpp: initialize global_scale_factor_ to 1000 - on Linux. - -Mon Apr 27 07:18:54 1998 Nanbor Wang - - * ace/Service_Types.cpp: Changes to use typedef - ACE_Service_Object_Exterminator to define . Thanks to - Chuck Gehr for reminding this. - - * ace/Service_Object.h (ACE_Service_Object_Ptr): - * netsvcs/servers/main.cpp (main): Added more comments on how to - use ACE_Service_Object_Ptr with ACE_SVC_INVOKE correctly. - - * ace/OS.h (ACE_Service_Object_Exterminator): Define the type as - extern "C" function pointer to make MVS happy. Thanks to Chuck - Gehr for pointing this out. - - * ace/Service_Object.i (ACE_Service_Object_Ptr): Delete the - underlying Service_Object after calling its fini() method. - Thanks to Tom Arbuckle - for pointing this out. - -Sun Apr 26 21:50:07 1998 David L. Levine - - * ace/Svc_Conf_l.cpp,etc/Svc_Conf_[ly].cpp.diff,etc/README: - updated the patch files. Thanks to J. Russell Noseworthy - for reporting problems with - them. - -Sun Apr 26 01:05:20 1998 Douglas C. Schmidt - - * ACE version 4.4.43 released. - -Sat Apr 25 17:47:31 1998 Nanbor Wang - - * ace/OS.h (ACE_FACTORY_DECLARE): Added explicit casting for - gobbler to prevent some weird compiler from complaining too - much. - - * netsvcs/lib/Server_Logging_Handler_T.cpp - (ACE_Server_Logging_Acceptor_T): We can't initialize the - with a temporary object. Its content gets deleted - right after the constructor exits. - -Sat Apr 25 11:55:01 1998 Alexander Babu Arulanthu - - * ace/Containers.h (class ACE_Double_Linked_List): Added - comments.(, the parameter for this class should have - T* next_ and T* prev_ fields in it. - - * ace/Containers.h (class ACE_Double_Linked_List): Corrected the - documentation for the insert_head and insert_tail functions. - -Fri Apr 24 22:36:37 1998 David L. Levine - - * ace/Service_Config.cpp (process_directive): added - ACE_UNUSED_ARG (directive). - -Fri Apr 24 18:40:08 1998 Irfan Pyarali - - * ace/Asynch_Acceptor.cpp (handle_accept): Fixed this method so - that it has better flexibility and error checking. Also, added - hooks so that users can do validation of remote connections. - Also, a flag is checked before accept is reissued. Thanks to - Jason Katz for reporting these upgrades. - -Fri Apr 24 16:33:14 1998 Steve Huston - - * ace/OS.h: ACE_FACTORY_DEFINE - in the generated gobble function, - use the indicated object type to do the delete so 1) the aC++ - compiler won't complain, and 2) so the service object is - destructed properly. - - * tests/Env_Value_Test.cpp: Made it compile on Solaris. - -Fri Apr 24 15:45:38 1998 David L. Levine - - * ace/config-sunos5.5-*.h: set ACE_THR_PRI_FIFO_DEF to 30, because - sched_get_priority_min is not implemented on Solaris 2.5.x. - -Fri Apr 24 09:12:39 1998 Nanbor Wang - - * tests/Env_Value_Test.cpp: Made it UNICODE safe. - - * tests/version_tests/version_tests.dsw: - * tests/version_tests/OrdMultiSet_Test.dsp: Added new project - file. - -Fri Apr 24 09:09:49 1998 David L. Levine - - * ace/config-linux-common.h: added ACE_HAS_4_4BSD_SENDMSG_RECVMSG. - Thanks to Sandro Doro for recommending - this. - -Fri Apr 24 04:12:39 1998 Nanbor Wang - - * tests/version_tests/version_tests.dsw: - * tests/version_tests/OrdMultiSet_Test.dsp: Added new project - file. - -Thu Apr 23 22:52:20 1998 Nanbor Wang - - * tests/tests.dsw: Somehow, Thread_Mutex_Test.dsp got removed from - the workspace. - - * tests/Thread_Mutex_Test.dsp: Update include/lib path. - -Fri Apr 24 00:12:32 1998 Douglas C. Schmidt - - * ACE version 4.4.42 released. - -Thu Apr 23 22:28:02 1998 Douglas C. Schmidt - - * ace/Service_Config: Began adding support for the new service - configurator feature that will make it possible to dynamically - configure services that are read in from the command-line. - Thanks to Karlheinz for requesting this. - - * ace/Parse_Node.cpp (open_handle), - ace/Svc_Conf.l: The line for the service object for the service - configurator contains the DLL specifications. Previously, it - was possible to specify either the absolute path name of the DLL - or only the name of the DLL itself. For the latter, the service - configurator is searching for the DLL using the PATH environment - variable. If we used the absolute path name it was not - possible to use environment variables in the string. It is now - possible to do this for Win32 using their %foo% notation. - Thanks to Andreas Schuelke for - providing these fixes. - - * etc/Svc_Conf_y.cpp.diff, - etc/Svc_Conf_l.cpp.diff, - ace/Makefile: Change the YY* symbols to ACE_YY* symbols to - avoid clashes if we link with other flex/yacc generated code. - - * apps/Gateway/Gateway/gatewayd.cpp, - apps/Gateway/Peer/peerd.cpp: Added a check to see if the - svc.conf file exists before trying to parse the arguments. - Thanks to Dani Flexer for reporting this. - - * apps/Gateway/Peer/Options.cpp (parse_args): Added the "C:" - qualifier to the get_opt string. Thanks to Dani Flexer - for reporting this. - - * ace/Activation_Queue.h: Extended ACE_Activation_Queue so that it - can be a proper base class by making the destructor virtual and - putting the methods into the protected section. Thanks to Garry - Brother for this. - - * ace/XtReactor.cpp: Commented out most of the logic if we're - running on Win32 because (1) it doesn't work correctly since - HANDLEs are not ints and (2) there's no X windows on Win32 - anyhow... - - * ace/XtReactor.h: Made ACE_XtReactor be ACE_Export'd. Thanks to - Kirill Rybaltchenko for reporting - this. - -Thu Apr 23 13:54:33 1998 David L. Levine - - * ace/Malloc.i (free): added ACE_UNUSED_ARG (ptr) if ACE_NDEBUG. - - * include/makeinclude/platform_chorus.GNU: include dtool/htgt-cf.rf - from $(MERGEDIR) instead of $(CLASSIXDIR). Thanks to - Wei Chiang for this update. - -Wed Apr 22 22:13:57 1998 Douglas C. Schmidt - - * ace/ace_bcc.ide: Added a new IDE for the Borland C++ compiler. - Thanks to Valik Solorzano Barboza for - this. - - * ace/Msg_WFMO_Reactor.cpp (wait_for_multiple_events): Fixed a - missing semi-colon. Thanks to Jorn Jensen - for reporting this. - -Wed Apr 22 21:53:12 1998 David L. Levine - - * config-linux-kcc.h: added #define ACE_SIZEOF_LONG_DOUBLE - to 12 on i386. Thanks to Ben Eng for - reporting this. - -Tue Apr 21 18:38:22 1998 Nanbor Wang - - * ace/ace_ce_dll.dsp: Removing a deprecated /windowsce:noconvert - linker flag. - -Mon Apr 20 15:39:42 1998 Steve Huston - - * ace/Handle_Set.cpp: Access fds_bits elements using an fd_mask - pointer rather than array indexing of the fds_bits array itself. - HP-UX 11 plays some games with the fd_mask type - fd_mask is defined - as an int32_t, but the fds_bits is an array of longs. This makes - plainly indexing through the array by hand tricky, since the FD_* - macros treat the array as int32_t. So the bits are in the right - place for int32_t, even though the array is long. This, they say, - is to preserve the same in-memory layout for 32-bit and 64-bit - processes. So, we play the same game as the FD_* macros to get - the bits right. See /usr/include/sys/_fd_macros.h. - On all other systems, this amounts to practically a NOP, since this - is what would have been done anyway, without all this type jazz. - -Sat Apr 18 13:59:55 1998 David L. Levine - - * ace/Naming_Context.h: removed trailing ';' at end of - ACE_FACTORY_DECLARE. - - * ace/OS.*,Sched_Params.{h,cpp}: added support on Solaris - for setting the LWP priority. It is necessary to set the - LWP priority for bound threads in the Real-Time scheduing - class. Thread priority is essentially ignored. See the - pthread_setschedparam man page for more info. Thanks to - Fred Kuhns for helping track this problem - down. - - There is one drawback: to set the LWP priority, in ACE, - a thread must set its own priority. There are examples - in performance-tests/Misc/preempt.cpp: - - High_Priority_Task::svc (void) - { - // On Solaris 2.5.x, the LWP priority needs to be set. - // This is the ACE way to do that . . . - ACE_OS::thr_setprio (priority_); - - I don't know of a way to set the LWP priority for another - thread. The problem is that there is no way that I know of - to find the LWP ID of another (bound) thread. A thread can - find the ID of its own LWP using _lwp_self (). - - * ace/config-sunos5*,README: added ACE_HAS_PRIOCNTL and - ACE_NEEDS_LWP_PRIO_SET. - - * ace/config-osf1-4.0.h: added ACE_HAS_PRIOCNTL and - ACE_LACKS_PRI_T. - - * performance-tests/Misc/preempt.cpp (svc): set LWP priority - (on Solaris) by having the thread set its own priority. - This test now passes on Solaris 2.5.1! - - * ace/High_Res_Timer.cpp (reset): initialize by assignment with - 0 instead of using memset. Thanks to Carlos for noticing this. - - * ace/Object_Manager.cpp (ACE_Object_Manager ctor): allocate - registered_objects_ after the allocation of ACE_STATIC_OBJECT_LOCK, - just to be safe. - -Sat Apr 18 01:28:36 1998 Irfan Pyarali - - * ace/Timeprobe.h (class ACE_Timeprobe): Changed ACE_Timeprobe to - use ACE_OS::gethrtime(). - -Sat Apr 18 01:14:30 1998 Irfan Pyarali - - * ace/OS.cpp (start and stop): start and stop should only be done - when ACE_Countdown_Time::max_wait_time_ is non-zero. - - * ace/Acceptor.cpp (open): Only set the reactor if calls to open() - and register_handler() succeeds. - -Fri Apr 17 21:00:21 1998 Steve Huston - - * ace/config-hpux11.h: Changes and comments around the - ACE_DEFAULT_BASE_ADDR definition for 64-bit HP-UX 11. - - * ace/Naming_Context.cpp - * ace/Malloc_T.cpp - * ace/Memory_Pool.cpp: Hacks to work around bugs in HP-UX aC++ in - 64-bit mode on HP-UX 11. - - * ace/OS.i: Addition of a facility that allows config.h to specify - additional flags for ACE_OS::mmap, above what's set by the caller. - It's done using a new definition, ACE_OS_EXTRA_MMAP_FLAGS. - This was added primarily to allow setting of the MAP_ADDR32 flag - on HP-UX 11 if the ACE_DEFAULT_BASE_ADDR is set in the 32-bit range - to allow 32-bit and 64-bit programs to map the same region. - -Fri Apr 17 11:40:38 1998 Nanbor Wang - - * ace/OS.cpp (invoke): Should check against null thr_desc, not - thr_desc->flag (). Thanks to "Erickson, Jack (CICG - NY GFX)" - for reporting this. - - * ace/OS.h (ACE_Service_Object_Exterminator): Typedef of ACE - factory cleanup funciton. - (ACE_FACTORY_{DECLARE,DEFINE}): Added an extra argument to pass - back destructor for the object created by the factory. Changed - the ACE_FACTORY_DEFINE to generate this destructor function to - pair with factory function so that we can deallocate the object - in the same heap it was created. - (ACE_SVC_INVOKE): This will now pass in 0, which means we don't - want to use the destructor function. - - * ace/Parse_Node.{h,cpp} (symbol): Added an extra argument to get - back the destructor function from ACE_FACTORY. Only - Function_Node actually uses it. - (ACE_Function_Node::symbol): Initialize the Service_Object with - added destructor function ptr so it will get destructed in the - "right place". - - * ace/Service_Config.{h,cpp} (load_static_svcs): Invoke the - factory method with added argument to get back the destructor - function and then, pass it in to ace_create_service_type - function. - (ACE_Service_Manager): Changed to use the more generic - ACE_FACTORY_DEFINE than using ACE_SVC_FACTORY_DEFINE. - (ACE_SERVICE_ALLOCATOR): Must match with signature of the - new factory method. - - * ace/Service_Type.{h,cpp} - (ACE_Service_Object_Type,ACE_Service_Type_Impl): Keep the - destruction function in these object, if use provides one, then - use it to destruct the object, otherwise, just use delete. - - * ace/Naming_Context.{h,cpp}: Changed to use - ACE_FACTORY_{DEFINE,DECLARE}. - - * ace/Object_Manager.cpp: Changed the signature of - Service_Manager. - - * ace/Svc_Conf.h: Changed the signature of - ace_create_service_type. - - * ace/Svc_Conf_y.cpp: - * ace/Svc_Conf.y: Try to get the destruction function from - factories in svc_location. - (ace_create_service_type): Pass in the destruction function if - provided one. - -Fri Apr 17 08:31:38 1998 Douglas C. Schmidt - - * ace/Signal.cpp (dispatch): Fixed a typo. Thanks for David - Levine's help pointing this out. - -Thu Apr 16 21:12:48 1998 Douglas C. Schmidt - - * ace/Signal.cpp: There was a major portability violation in the - ACE_Sig_Handler::dispatch() method, which was previously - acquiring a mutex lock. This is NOT permitted in the POSIX - signal handler spec. In addition, the implementation had other - nasty consequences related to dynamic allocation of memory in - the signal handler, which has a bad habit of breaking - non-reentrant uses of "new". The consequence of all this is - that you really shouldn't be modifying signal handlers via the - Reactor in multiple threads of control. In general, threads and - signals are just plain evil, so they are best addressed via - sigwait() anyhow... - - Thanks to Sumedh and Naga for first tracking this down. - -Thu Apr 16 20:51:42 1998 David L. Levine - - * ace/config-linux-pthread.h: added ACE_HAS_THREADS. - ace/config-irix6.x-g++.h: added ACE_HAS_THREADS and ACE_MT_SAFE. - Thanks to Dave Tallman for reporting these. - -Thu Apr 16 04:14:53 1998 Irfan Pyarali - - * ace/Timeprobe: - - This class is used to instrument code. This is accomplished by - inserting time probes at different location in the code. - ACE_Timeprobe then measures the time difference between two time - probes. - - This class provides a lightweight implementation for measuring - the time required to execute code between two time probes. When - a time probe executes, it records the time, the id of the - calling thread, and an event description. The event description - can either be an unsigned long or a string (char *). If string - are used, care must be taken cause only pointer copies are done - and the string data is *not* copied. - - The recorded time probes can then be printed by calling - print_times(). If you have used unsigned longs as event - descriptions in any of your time probes, you must provide an - event description table that maps the unsigned longs to readable - strings. This map is a simple array of strings, and the event - number is used as the index into the array when looking for the - event description. If you have only used strings for the event - description, this map is not necessary. - -Wed Apr 15 23:01:08 1998 Nanbor Wang - - * ace/Thread_Manager.cpp (exit): Don't delete the ACE_Thread_Exit - object of the thread here. ACE_Thread_Manager::exit will be - called back again when performing TSS cleanup. Thanks to Dave - Tallman for the bug report. - -Wed Apr 15 17:12:14 1998 Steve Huston - - * ace/config-hpux-11.x-hpc++.h: Explicitly set ACE_SIZEOF_LONG based - on compiler switch for processor/memory model. - -Wed Apr 15 16:25:38 1998 Irfan Pyarali - - * ace/WFMO_Reactor.cpp (handle_signal): Changed break to return 0. - - * ace/OS.cpp (uname): We have to make sure that the size of - (processor + subtype) is not greater than the size of - name->machine. So we give half the space to the processor and - half the space to subtype. The -1 is necessary for because of - the space between processor and subtype in the machine name. - - Thanks to Andrew Marchewka - (Andrew_Marchewka@SRT.CCMAIL.compuserve.com) for suggesting - these changes. - -Wed Apr 15 08:52:52 1998 David L. Levine - - * tests/Reactor_Exceptions_Test (handle_input): removed - ACE_NOTREACHED wrapper around return statement at end. - Now that the previous statement is a function call, the - compiler (cxx) doesn't detect that the statement can't - be reached. - -Wed Apr 15 01:03:42 1998 Douglas C. Schmidt - - * ace/OS.i (ACE_SOCKCALL_RETURN): Added a work-around for a - Borland 5.02 compiler bug. The key turns out to be the - throw-away intermediate assignment statement to correctly keep - the value of WSAGetLastError(). Thanks to Dave Tallman - for reporting this. - -Tue Apr 14 23:35:19 1998 Nanbor Wang - - * ace/Profile_Timer.cpp (elapsed_rusage): The differences of user - time and system time for GETRUSAGE were not calculated. - - * performance-tests/Synch-Benchmarks/Options.cpp (print_results): - Added dump code for ACE_HAS_GETRUSAGE. - - * ace/ace_{dll,lib}.dsp: Removed Service_Main.cpp from the - projects. We don't really need them in ACE DLL. - - * ace/Service_Main.cpp: Removed the file from CVS. Lots of - Service_Config examples can be found all round ACE directories - so we really don't need it here anymore. - -Tue Apr 14 20:30:53 1998 Steve Huston - - * ace/OS.i (mutex_init, cond_init): Added sections to properly - handle error conditions on platforms which claim - ACE_HAS_PTHREADS_1003_DOT_1C. - -Tue Apr 14 16:39:42 1998 Nanbor Wang - - * ace/ACE.cpp (ldfind): Fixed a miscalculated string size. - Thanks to Jason Katz for reporting the - bug. - -Tue Apr 14 14:33:33 1998 David L. Levine - - * tests/Thread_Manager_Test.cpp (main): don't try to suspend/resume - DCE threads, because they don't support it. Added a start barrier, - to ensure that worker threads set up their signal handlers before - the main thread tries to signal them. Drop DEFAULT_ITERATIONS from - 100000 to 10000 because 100000 takes a long time on a 200 MHz - Pentium. - -Tue Apr 14 12:59:04 1998 Douglas C. Schmidt - - * tests/Hash_Map_Manager_Test.cpp: Changed the consts to - size_t, as well... - -Tue Apr 14 11:40:23 1998 David L. Levine - - * tests/Hash_Map_Manager.cpp: made type, size_t, of String_Table_size - explicit, instead of using the default type of int. - -Tue Apr 14 10:10:46 1998 Douglas C. Schmidt - - * ACE version 4.4.41 released. - -Tue Apr 14 07:19:25 1998 David L. Levine - - * bin/make_release (create_kit): ACE+TAO instead of ACE_TAO. - Thanks to Doug for reporting this. - - * ace/OS.h (ACE_Thread_Adapter): added friend class declaration - to avoid g++ warning: only defines a private destructor and - has no friends. - - * ace/OS.cpp (ACE_Thread_Adapter::invoke): only declare local - thr_desc if ACE_HAS_WIN32 and ACE_HAS_MFC. - -Tue Apr 14 00:46:05 1998 Douglas C. Schmidt - - * ACE version 4.4.40 released. - -Mon Apr 13 19:19:13 1998 Douglas C. Schmidt - - * ace/OS: Made the destructor of ACE_Thread_Adapter private to - keep people like Russ from abusing this class... ;-) - - * ace/OS.cpp (invoke): We were incorrectly deleting this and then - using one of its fields! Thanks to the ever-vigilant Russ - Noseworthy for reporting this. - - * ace/Log_Record.cpp (print): Added VERBOSE_LITE support to the - code so we don't spew out quite so much information. - - * ace/Log_Msg.cpp (log): Replaced all calls to - ACE_Log_Record::print() so that they pass the - ACE_Log_Msg::flags_ parameter. - - * ace/Log_Record.h: Changed the 'int verbose' parameter to 'u_long - verbose_flag' parameter so that we can pass in the - ACE_Log_Msg::flags_ and check to see what they are enabled with! - - * tests/test_config.h: Changed VERBOSE to VERBOSE_LITE so we don't - have quite so much junk printed out for the tests! - - * ace/Log_{Priority,Record}: Added a new flag called VERBOSE_LITE - that isn't quite as verbose as VERBOSE (it only prints things - that can change between calls to the ACE_Log_Msg::log() method). - In addition, also changed the ACE_Log_Record::print() method so - it prints the string format for the ACE_Log_Priority types. - This is a lot more legible than printing the numbers. - - * ace: Removed all uses of ACE_HAS_WILDCARD_BIND. This is now the - default behavior. If there's some weird platform that DOESN'T - have this behavior, we'll deal with that by setting the - ACE_LACKS_WILDCARD_BIND flag. - - * ace/OS.cpp (invoke): Removed the (void *) cast on delete this. - It wasn't necessary. Thanks to Steve Huston and David Levine - for reporting this. - -Mon Apr 13 19:12:49 1998 Nanbor Wang - - * ace/DEV_Connector.i (ACE_DEV_Connector): - * ace/Asynch_IO.cpp (accept,addresses): UNICODE changes. - -Mon Apr 13 18:05:26 1998 Steve Huston - - * tests/Thread_Manager_Test.cpp: Disabled the suspend/resume action - for Pthreads platforms. - -Mon Apr 13 10:18:59 1998 David L. Levine - - * ace/High_Res_Timer.i (hrtime_to_tv): in tv.usec calculation, - moved the cast to long to after the division by global_scale_factor_. - This is necessary for compatibility with ACE_U_LongLong. - - * bin/make_release (get_versions): use $KIT instead of hard-coded - ACE, so that it works with TAO. (tag): translate dots to - underscores, because CVS doesn't allow dots in tags. Thanks to - Doug and Hans Rohnert for reporting these. - -Sun Apr 12 21:11:53 1998 Nanbor Wang - - * ace/OS.h: Prevent using ACE_HAS_MOSTLY_UNICODE_APIS without UNICODE. - - * ace/OS.cpp (thr_create): - * ace/Thread_Manager.cpp (spawn_i): Removed directive - ACE_NO_THREAD_ADAPTER and its related code. - -Sat Apr 11 22:20:51 1998 Nanbor Wang - - * tests/Thread_Manager_Test.cpp (main): Don't check execute result - of kill_grp statement if we are running on Win32 platforms. - thr_kill is not supported there. - -Sat Apr 11 20:00:12 1998 Douglas C. Schmidt - - * ACE version 4.4.39, released Sat Apr 11 20:00:12 1998. - -Sat Apr 11 19:58:56 1998 Douglas C. Schmidt - - * Nanbor removed a bunch of *.MAK files, which were quite large - and taking up lots of space. - -Sat Apr 11 18:58:24 1998 Steve Huston - - * ace/INET_Addr.cpp: Fixed missing paren. - - * netsvcs/servers/servers4.mdp: Added ..\lib to include directories - for Release build. - -Sat Apr 11 13:28:19 1998 Douglas C. Schmidt - - * ACE version 4.4.38, released Sat Apr 11 13:28:19 1998. - -Sat Apr 11 12:46:08 1998 Douglas C. Schmidt - - * ace/config-mvs.h: Added some ACE_SIZEOF_* macros for MVS. - Thanks to Chuck Gehr for reporting - this. - - * ace/INET_Addr.cpp: Added a newline and a better explanation of - what went wrong if an error occurs. Thanks to Luca for - reporting this. - -Fri Apr 10 02:42:35 1998 Nanbor Wang - - * ace/Log_Msg.{h,cpp} (log_hexdump): - * ace/ACE.{h,cpp} (format_hexdump): The buffer to be hex-dumped should - always be of type (const char *) no matter we have UNICODE - system strings or not. - - * ace/OS.{h,cpp} (ACE_CE_Bridge): This new class bridges - a text-based ACE programs with a default window that prints out - the default ACE_Log_Msg output. - - CE always uses non-static object manager and we replace the - original main function with a well know entry that the main - window program can call back from to invoke the ACE program in a - separate thread. - - * ace/Log_Record.{h,cpp}: Added support for passing strings as - windows messages. - - * ace/Log_Msg.cpp (log): Specialized CE support. - - * windoezCE: The template windows program that receives ACE - messages. See CE-Status or README file for more info. - -Fri Apr 10 00:41:23 1998 Douglas C. Schmidt - - * tests/Reactor_Exception_Test: Tidied the test up a bit. Thanks - to Bob Laferriere for suggesting - this. - - * tests/test_config.h: Enabled ACE_Log_Msg::VERBOSE since it gives - more information that can be useful for debugging. - -Fri Apr 10 00:04:03 1998 Irfan Pyarali - - * ace/Proactor.cpp (post_completion): Added a new method to the - Proactor. It can be used to post a result to the completion port - of the Proactor. If errors occur, the result will be deleted by - this method. If successful, the result will be deleted by the - Proactor when the result is removed from the completion port. - Therefore, the result should have been dynamically allocated and - should be orphaned by the user once this method is called. - - Changed the timer mechanism to use this new method rather than - posting to the completion port directly. - - Thanks to Jason Katz for the - improvements. - -Thu Apr 9 17:31:47 1998 Douglas C. Schmidt - - * Updated all the Makefile dependencies and also added the - appropriate CVS strings to all Makefiles. - - * examples/IPC_SAP/SOCK_SAP: Improved both the CPP-unserver.cpp - and CPP-inserver.cpp programs so they work identically wrt - concurrency and logic. - - * ace/LSOCK_Stream.cpp: Fixed the get_remote_addr() and - get_local_addr() methods to work correctly. Apparently, - getpeername() doesn't work appropriately for UNIX domain - sockets, so we simply have both methods call getsockname(). - Thanks to Chuck Gehr for pointing out this problem. - - * ace/FILE_IO.cpp (get_local_addr): The RHS has an additional - field that is the FILE name, which did not get copied. Added an - ACE_dynamic_cast() to do the right thing here. Thanks to Ganesh - Pai for reporting this. - - * ace/Malloc*: Factored out all the code in ACE_Static_Allocator - into a new non-templatized base class called - ACE_Static_Base_Allocator so that we don't trigger multiply - defined symbols when we use this in TAO. Thanks to Carlos for - this very insightful trick! - - * tests/Thread_Manager_Test.cpp (main): Added ACE_ASSERT - statements so that we bailout if things go awry. Thanks to - Robert J. Laferriere for reporting - this. - -Thu Apr 09 18:06:53 1998 Nanbor Wang - - * ace/High_Res_Timer.i (hrtime_to_tv): Cast the parameter for usec - to long. It can be fixed because of Darrell's vigilance. - -Thu Apr 09 17:55:21 1998 Steve Huston - - * ace/config-hpux-10.x.h, config-hpux11.h, config-aix-4.2.x.h: - Added ACE_HAS_WILDCARD_BIND. - -Thu Apr 09 16:43:26 1998 Irfan Pyarali - - * ace/ACE.*: Changed *_version() functions to be non-inlined. - After this change, inclusion of ace/Version.h can be moved into - ACE.cpp. This change helps as all of ACE doesn't have to be - compiled after Version.h changes (Version.h changes every time a - new beta is produced). - -Thu Apr 9 12:27:23 1998 Carlos O'Ryan - - * tests/Hash_Map_Manager_Test.cpp: POOL_SIZE was simple "const - POOL_SIZE" I changed that to "const int POOL_SIZE". Added - missing template instantiation for Static_Allocator. - -Thu Apr 09 10:50:18 1998 Nanbor Wang - - * ace/WFMO_Reactor.cpp (dump): Fixed signed/unsigned mismatched - warnings on NT. Thanks to Darrell for noticing the bug. - -Thu Apr 9 09:37:08 1998 Douglas C. Schmidt - - * ace/Malloc_T: Moved the ACE_Static_Allocator::dump() method into - the Malloc_T.cpp file so we'd get a vtable... Thanks to David - Levine for reporting this. - - * tests/Hash_Map_Manager_Test.cpp (run_test): Added a return - value to make G++ and David Levine happy ;-). - -Thu Apr 09 10:50:18 1998 Nanbor Wang - - * ace/WFMO_Reactor.cpp (dump): Fixed signed/unsigned mismatched - warnings on NT. Thanks to Darrell for noticing the bug. - -Wed Apr 08 17:29:01 1998 Irfan Pyarali - - * ace/SOCK_Acceptor.cpp (open): There was a boo-boo in open() as - we were only calling bind_port() and ignoring the port supplied - by the user. Call bind_port only if port == 0. - -Wed Apr 8 01:09:52 1998 Douglas C. Schmidt - - * ace/Malloc_T: Added a new ACE_Static_Allocator class, which is - highly optimized for allocations where (1) all the memory size - is known in advance and (2) no deletions are done. This class - will ultimately be used in TAO to improve it's startup - performance for operation tables initialization. - - * tests/Hash_Map_Manager_Test.cpp: Enhanced the test so that it - uses the new ACE_Static_Allocator feature. - - * ace/OS: Added support for the rename() method. Thanks to Ganesh - Pai for suggesting this. - - * ace/config-win32-common.h, - config-sunos*.h: - config-irix-6*.h: - Enable the ACE_HAS_WILDCARD_BIND macro. - - * ace/ACE.cpp: Modified the bind_port() method so that it is more - efficient on platforms that interpret a 0 port to bind() as a - request for the kernel to select the port. Thanks to Chris - Cleeland for pointing this out. - - * ace/Hash_Map_Manager: Made a bunch of minor changes to fix some - subtle deadlocks with intra-class locking. - - * tests/Map_Manager_Test.cpp: Restructured the tests so that we - don't keep recomputing end() and rend() of the map in each loop - iteration! - -Wed Apr 08 10:02:16 1998 David L. Levine - - * bin/make_release: added this script that creates ACE and/or - TAO releases. - - * Makefile: added support for make_release. See comments at - the top of the Makefile. The old release mechanism has - been retained; to use it: make release-old or - make releaseall-old. - -Wed Apr 08 00:37:33 1998 Irfan Pyarali - - * ace/ACE.cpp (bind_port): This call was not flexible enough as it - always assumed that the user wanted INADDR_ANY. Added an extra - parameter to this function where the user can pass in the addr - that she is interested in. This extra parameter defaults to - INADDR_ANY, so no existing should break. - - * ace/SOCK_Acceptor.cpp (open): Not enough information was being - passed to the new ACE::bind_port() call. Changed open() so that - the sin_addr part of the address is passed along to - ACE::bind_port(). - -Tue Apr 07 15:25:08 1998 David L. Levine - - * ace/config-irix*.h: fixed determination of ACE_SIZEOF_LONG_DOUBLE, - depending on system release and ABI. Thanks to Robert J. - Laferriere for figuring it all out. - -Mon Apr 06 01:29:35 1998 Nanbor Wang - - * ace/ace_ce_dll.dsp: Update project files. Rearrange dll filenames a - bit so that it's eaier to have various ACE libraries for various - CE supported CPUs. Files for every supported CPU are generated - under CPU specific directory as follow: - - CPU Directory Name - Sh3 series ace/WCE/SH aced.{lib,dll} ace.{lib,dll} - MIPS series ace/WCE/MIPS aced.{lib,dll} ace.{lib,dll} - x86 emulation ace/WCE/x86em aced.{lib,dll} ace.{lib,dll} - - * ace/config-win32-common.h: Prevent CE from using wsock32.lib. - -Sun Apr 05 16:44:31 1998 Nanbor Wang - - * ace/OS.h (ASYS_ONLY_MULTIBYTE_STRING): New macro. Used to - activate wchar string to char string conversion only under CE, - under other cases, the argument to this macro is treated as - a regular char string. - - * ace/INET_Addr.cpp (set): Changed to use - ASYS_ONLY_MULTIBYTE_STRING. This has gotten out of control - now. I need to think of a better name for these macros. - -Tue Apr 07 09:30:28 1998 David L. Levine - - * include/makeinclude/platform_lynxos.GNU: set up PATH when - cross-compiling. With this change, users don't need to - do anything special to their platform_macros.GNU or - environment to cross-compile for LynxOS (assuming that - the default platform_lynxos.GNU configuration is suitable). - -Mon Apr 06 16:28:32 1998 Steve Huston - - * examples/Service_Configurator/IPC-tests/server/svc.conf: Corrected - library name to load tests from. Thanks to Sandro Doro - for noticing there was a problem here. - -Sun Apr 05 10:20:26 1998 David L. Levine - - * include/makeinclude/platform_lynxos.GNU: only define - CROSS-COMPILE if not building on LynxOS. - - * ace/OS.h: fixed ACE_CAST_CONST definition with Sun CC. - -Sun Apr 05 00:20:52 1998 Nanbor Wang - - * ace/ACE.h: Moved "#include "ace/OS.h" out of _ACE_H_ block to - resolve the circular inclusion that occured when building ACE - Unicode Release version. - -Sat Apr 04 21:19:32 1998 Douglas C. Schmidt - - * ACE version 4.4.37, released Sat Apr 04 21:19:32 1998. - -Sat Apr 04 19:41:03 1998 Nanbor Wang - - * ace/OS.cpp (thr_exit): Forgot to access creation flags thru - the access function. - -Sat Apr 04 14:01:53 1998 Steve Huston - - * performance-tests/Makefile: Put UDP back in dir list. - -Sat Apr 04 07:45:33 1998 David L. Levine - - * ace/Basic_Types.h,config-sunos4*.h,README: don't use - u_longlong_t on Suns if ACE_LACKS_U_LONGLONG_T is defined. - Define ACE_LACKS_U_LONGLONG_T in all SunOS4 config files. - Thanks to John Lindal for reporting - this. - -Sat Apr 4 02:06:57 1998 Nanbor Wang - - * ace/OS.cpp (invoke,thr_exit): (*Win32*) We also need to consider - threads that are not spawned by ACE_Thread_Manager by checking - the validity of cached ACE_Thread_Descriptor. In any rate, - please avoid using thread functions in ACE_Thread::* and - ACE_OS::thr_* directly. - -Sat Apr 4 01:03:17 1998 Alexander Babu Arulanthu - - * ace/Map_Manager.cpp (map): Added map method for the iterator interface. - -Sat Apr 4 00:55:30 1998 Douglas C. Schmidt - - * netsvcs/clients/Naming/{Client,Dump_Restore}/Makefile: - Moved all program source names to PSRC, not SRC, for - 'make depend'. - -Fri Apr 3 21:18:51 1998 Douglas C. Schmidt - - * ace/OS.cpp (cleanup): Moved ACE_Cleanup::cleanup() back into the - *.cpp file so that we have at least one non-inline virtual - function. - - * ace/OS (cleanup): Created a dummy ACE_Cleanup constructor since - the lack of this may be causing a bug with CC and the linker for - TAO's IDL compiler. Also moved the constructor and destructor of - ACE_Cleanup into the OS.i file and made them inline. We'll fix - this bug yet!!!! - -Fri Apr 03 18:45:35 1998 Steve Huston - - * apps/JAWS/clients/Blobby/Makefile - * apps/JAWS/clients/Caching/Makefile - * examples/ASX/Event_Server/Event_Server/Makefile - * examples/ASX/UPIPE_Event_Server/Makefile - * examples/Logger/simple-server/Makefile - * examples/Mem_Map/IO-tests/Makefile - * examples/Reactor/Multicast/Makefile - * examples/Service_Configurator/Misc/Makefile - * examples/Shared_Malloc/Makefile - * performance-tests/Synch-Benchmarks/Makefile - Adjusted for corresponding changes to rules.bin.GNU and/or - rules.lib.GNU, below. - - * examples/Connection/non_blocking/Makefile - * examples/Service_Configurator/IPC-tests/server/Makefile - * examples/Timer_Queue/Makefile - * performance-tests/Misc/Makefile - Moved all program source names to PSRC, not SRC, for - 'make depend'. - - * performance-tests/Makefile: Removed UDP from list of dirs to build. - - * include/makeinclude/rules.bin.GNU: Set OBJEXT and VOBJS from the - SRC files in the Makefile (LSRC sets VLOBJS in rules.lib.GNU; - SRC sets VOBJS in rules.bin.GNU). - - * include/makeinclude/rules.local.GNU: depend rule will also operate - on $(PSRC) in addition to $(SRC). PSRC is new - if you have more - than one program to build in a makefile, set PSRC to the source - files for make depend. - - * include/makeinclude/rules.lib.GNU: Use VLOBJS for archive lib object - files; using VOBJS gets it confused with VOBJS in rules.bin.GNU and - makes it very difficult to build lib and exe from same Makefile. - -Fri Apr 3 10:40:10 1998 Nanbor Wang - - * ace/OS.cpp (invoke): We were using AfxGetThread to determine - whether a thread was created with AfxBeginThread or - _beginthreadex. This seemed to cause some subtle problem with - MSVC 4.2. Since we always cached the Thread_Descriptor in TSS - now, we can just check how a thread was created and use the - appropriate thread exiting method. Thanks to Detlef Becker - for tracing down this obscure - bug. - - * ace/Thread_Manager.{h,i} (flags): Added this new access function - into ACE_Thread_Descriptor to get the creation flags for a - thread. - -Fri Apr 03 10:01:32 1998 Steve Huston - - * ace/ACE.cpp (handle_timed_complete): On AIX, always check a - completed non-blocking connect() because AIX sets only the write - handle from select regardless of whether the connect succeeded - or not. - - * netsvcs/clients/Naming/Dump_Restore/Dump_Restore.cpp: Removed - the #include - this is taken care of via ace/OS.h. - Having the #include in Dump_Restore.cpp caused some very weird - compile errors on DG/UX. - - * netsvcs/lib/Server_Logging_Handler.cpp: Fixed template instantiations - for Base_Optimizer, non-static logging cases. - -Fri Apr 03 09:16:24 1998 David L. Levine - - * ace/OS.cpp (ACE_TSS_Info::key_in_use): return true if - thread_count_ > 0, not if it is != -1. Thanks to Chris - Lahey for finding and reporting this. - - * ace/OS.i (thr_yield): on VxWorks, changed argument of - ::taskDelay () from 0 to 1. With an argument of 0, - ::taskDelay () doesn't appear to yield the current thread. - - * tests/run_tests.vxworks: Reactor_Notify_Test is OK on - VxWorks now. - - * ace/OS.h,config-sunos5.5-sunc++-4.x.h: added ACE_CAST_CONST, - so that we can work around broken cast constness requirements - with Sun CC 4.2. It requires, for example, that a reinterpret - cast to a local pointer variable in a const member function be - const. Wrong. - - * ace/Basic_Types.i (operator/ and %): fixed comments: former - instead of latter. - -Thu Apr 02 16:23:12 1998 Irfan Pyarali - - * ace/WFMO_Reactor.i (dump): Also changed the method from HANDLE - to ACE_HANDLE. - -Thu Apr 2 15:36:20 1998 Douglas C. Schmidt - - * ace: Added - - #define ACE_HAS_STL_QUEUE_CONFLICT - - to the config files which had ACE_HAS_STL_MAP_CONFLICT defined, - i.e., - config-sunos5.5-g++.h - config-sunos5.5-sunc++-4.x.h - - Thanks to Russ Noseworthy for - reporting this. - -Thu Apr 2 15:14:35 1998 Sumedh Mungee - - * ace/WFMO_Reactor.h (dump): Renamed HANDLE to ACE_HANDLE. - -Thu Apr 02 14:23:11 1998 David L. Levine - - * tests/Reactor_Notify_Test.cpp (Supplier_Task::handle_output): - added a thr_yield () so that the Supplier_Task always gets a - chance to run. - - * tests/run_tests.sh: Reactor_Notify_Test is OK on Chorus now. - -Wed Apr 01 18:59:42 1998 Irfan Pyarali - - * ace/WFMO_Reactor.cpp (dump): Added dump() methods. - - * ace/Msg_WFMO_Reactor.cpp (wait_for_multiple_events): Reverted - Nanbor's change. The flag is properly set in - ACE_Msg_WFMO_Reactor::alertable_handle_events(). - -Wed Apr 1 15:40:01 1998 Douglas C. Schmidt - - * ace: Made the WMFO_Reactor and Select_Reactor's dump() methods - virtual to underscore the fact that the Reactor_Impl's new - dump() method is also virtual. - - * ace/OS.h: Changed ACE_HAS_STL_MAP_CONFLICT to - ACE_HAS_STL_QUEUE_CONFLICT for the appropriate cases in ACE. - Thanks to Russ Noseworthy for - reporting this. - - * ace/CORBA_Handler.cpp (ACE_CORBA_Handler): The reference_count_ - data member wasn't being initialized correctly. Thanks to - Mahesh Chandwani for reporting this. - - * ace: Renamed config-sunos5.5-sunc++-4.x-orbix.h to - config-sunos5.x-sunc++-4.x-orbix.h since this config file works - with SunOS 5.5 and 5.6. Thanks to Mahesh Chandwani - for reporting this. - -Wed Apr 01 16:28:30 1998 David L. Levine - - * ace/Reactor.{h,cpp},Reactor_Impl.h (dump): added dump () - method, which calls the (existing) dump () in the reactor - implementation. - - * ace/High_Res_Timer.* (hrtime_to_tv): fixed conversion of - ACE_hrtime_t to ACE_Time_Value to be compatible with - ACE_U_LongLong. - -Wed Apr 01 09:32:27 1998 Nanbor Wang - - * ace/Msg_WFMO_Reactor.cpp (wait_for_multiple_events): Should not - wait for all objects in this function. - -Tue Mar 31 15:27:25 1998 Steve Huston - - * apps/JAWS/server/JAWS_Pipeline_Handler.cpp: Defined 'status' in - the put() function. - - * ace/config-dgux-4.x-ghs.h: Removed settings for ACE_SIZEOF_LONG_LONG - since the compiler doesn't really support a long long that ACE - is looking for (64-bit). Use the ACE-supplied ACE_ULongLong type. - -Tue Mar 31 10:46:23 1998 Nanbor Wang - - * ace/Msg_WFMO_Reactor.cpp: Changed to use - MsgWaitForMultipleObjects if we are not under NT. Also in - MsgWaitForMultipleObjectsEx, we should use NT defined flags - instead of the boolean "alertable" directly. - -Tue Mar 31 07:22:09 1998 David L. Levine - - * ace/OS.i (cond_timedwait): restored ACE_HAS_DCE_DRAFT4_THREADS - behavior to use absolute time. Special-case only on LynxOS, - which requires a relative time. Thanks to Steve Coy - for reporting this on HP-UX. - - * tests/Thread_Manager_Test.cpp (worker): cache the thread's - Signal_Catcher on entry. That way, we don't have to - dereference it in the worker's loop. It seems that a worker - thread can continue to run after main exits (and cleans up - TSS). That shouldn't happen, but it looks like it does on - Linux, LynxOS, and Digital Unix. Thanks to James CE Johnson - for verifying that the fix works on Linux/ - Intel and DU 4.0. - - * examples/Threads/task_five.cpp (main): wrapped return statement - at end with ACE_NOTREACHED. This will prevent compiler warnings - from Green Hills and DEC CXX, and maybe SGI cc. - -Fri Mar 27 23:04:08 1998 David L. Levine - - * ace/config-linux-common.h: added ACE_DEFAULT_MAX_SOCKET_BUFSIZ - 65535, because some Linux 2.1.x kernels fail setsockopts if - bigger than that. Thanks to Ravi Nagabhyru - for reporting that. Also changed hard-code ACE_PAGESIZE to - ACE_HAS_GETPAGESIZE, even though getpagesize () doesn't get - used. ACE_OS::getpagesize () uses sysconf on Linux. - - * performance-tests/UDP/udp_test.cpp (main): getopt.optarg instead - of optarg, for -f option. - - * ace/IPC_SAP.cpp (enable,disable): removed the ACE_NOTREACHED - wrappers around the return statements. Seems that some versions - of Green Hills complain about an unreachable statement, but - we'll live with it. This change is only visible with SGI, - DEC CXX, and Green Hills. - - * include/makeinclude/platform_vxworks5.x_ghs.GNU: added missing - close paren after ppc conditional. Thanks to Brian Mendel for - reporting this. - -Fri Mar 27 16:47:26 1998 Steve Huston - - * tests/tests.mdp: Made settings for Env_Value_Test consistent with - other tests, so that run_tests.bat can find it. - - * netsvcs/servers/servers4.mdp: Added ..\lib to Include directories - when building in Release mode. - -Fri Mar 27 13:55:13 1998 Nanbor Wang - - * ace/High_Res_Timer.i (gettime): ACE_OS::gettimeofday doesn't - take any argument. - -Fri Mar 27 09:50:52 1998 Steve Huston - - * ace/Strategies_T.cpp: Added #include "ace/Service_Repository.h" for - compile on HP. Thanks to Steve Coy for this. - -Fri Mar 27 09:21:21 1998 David L. Levine - - * tests/test_config.h: with Green Hills on VxWorks, rename - main to ace_main for compatibility with run_tests.vxworks. - - * ace/OS.{h,i},High_Res_Timer.* (gethrtime): added an optional - argument to allow specifying start/increment/stop to a timer. - It is currently only used on Chorus. On Chorus, using - the default ACE_HRTIMER_GETTIME will use clock_gettime () - instead of sysBench (). sysBench () disables interrupts, - so it must be used with care. - -Thu Mar 26 21:18:57 1998 David L. Levine - - * ace/Basic_Types.h,config-g++-common.h,config-freebsd*.h, - config-netbsd.h: moved setting of ACE_SIZEOF_LONG_DOUBLE to 12 - from Basic_Types.h to config-g++-common.h and the FreeBSD/NetBSD - config files. - -Thu Mar 26 20:53:30 1998 Nanbor Wang - - * ace/Containers.{h,i,cpp}: Changed the template parameter name - to to avoid namespace polution. Thank to John - Mulhern <9107@MN3.LAWSON.lawson.com> for suggestion this. - -Thu Mar 26 17:23:38 1998 Douglas C. Schmidt - - * ACE version 4.4.36, released Thu Mar 26 17:23:38 1998. - -Thu Mar 26 12:54:57 1998 David L. Levine - - * ace/IPC_SAP.cpp (enable,disable): wrapped return statement - at end with ACE_NOTREACHED. - - * include/makeinclude/platform_vxworks5.x_ghs.GNU: added support - for x86 targets. - - * ace/Basic_Types.h: sizeof (long double) is 8 on ghs/VxWorks/i386, - not 12. - -Wed Mar 25 10:10:04 1998 David L. Levine - - * include/makeinclude/platform_{chorus,vxworks5.x}_ghs.GNU: - change OFLAGS to OCFLAGS. - - * include/makeinclude/platform_chorus_ghs.GNU: if debug is enabled, - link with crth_d.s.o instead of crth.s.o. - - * ace/config-g++common.h: don't #define - ACE_HAS_TEMPLATE_SPECIALIZATION with egcs 2.91. Thanks to - Sudish Joseph and - Loren Rittle for reporting this - apparent bug with egcs 2.91. (egcs 2.90 builds ACE cleanly - with ACE_HAS_TEMPLATE_SPECIALIZATION.) - - * include/makeinclude/platform_vxworks5.x_g++.GNU: add VxWorks - host bin directory to PATH if its not already there. - -Tue Mar 24 19:48:44 1998 Irfan Pyarali - - * ace/Proactor.cpp (timeout): Changed comparison from || to - &&. Thanks to Jason Katz for reporting - this. - -Tue Mar 24 18:14:18 1998 Steve Huston - - * ace/Env_Value_T.h: added #include "ace/OS.h" to get the definition - for ACE_static_cast - AIX xlC needs it for auto template generation. - -Tue Mar 24 09:00:36 1998 Carlos O'Ryan - - * bin/auto_compile: - Missing newline after the "DISABLED" message. - -Tue Mar 24 07:38:44 1998 David L. Levine - - * ace/config-sunos5.5-g++.h: replaced ACE_PAGE_SIZE with - ACE_HAS_GETPAGESIZE, and added ACE_HAS_STL_MAP_CONFLICT. - Thanks to Loren Rittle for reporting - these. - -Mon Mar 23 12:06:30 1998 David L. Levine - - * performance_tests/UDP/udp_test.cpp: made use of the Reactor - optional. With this change, the performance is comparable - to the original C version. - - * ace/OS.{h,i} (wslen,wscpy): added these, and WChar typedef, - for TAO. - - * include/makeinclude/platform_chorus_ghs.GNU: moved directories - to /project/doc/mvme/. - - * ace/config-vxworks5.x.h: protected #define of ACE_MAIN so that - it can be #defined on the command line. - -Mon Mar 23 11:38:43 1998 Nanbor Wang - - * ace/OS.h (MAXPATHLEN): Guard the MAXPATHLEN definition with - #ifndef in case if has already been defined. Thanks to "Patrick - J. McNerthney" for reporting this. - -Mon Mar 23 03:18:50 1998 Douglas C. Schmidt - - * ACE version 4.4.35, released Mon Mar 23 03:18:50 1998. - -Mon Mar 23 00:03:37 1998 Irfan Pyarali - - * examples/Reactor/ReactorEx/test_abandoned.cpp: Tests the - WFMO_Reactor's ability to handle abandoned mutexes. - - * examples/Reactor/ReactorEx/test_apc.cpp: Tests the - WFMO_Reactor's ability to handle regular APC notifications. - -Sun Mar 22 23:47:00 1998 Irfan Pyarali - - * ace/WFMO_Reactor.cpp: Added code to the Reactor to make it more - resilient when the wait() function returns WAIT_IO_COMPLETION - and WAIT_ABANDONED. - - ok_to_wait: Keep waiting if wait() returns WAIT_IO_COMPLETION. - - dispatch: Return if wait() returns - WAIT_IO_COMPLETION. - - dispatch_handles: Added code to correctly handle WAIT_ABANDONED - and to correctly figure out the index of the handler to be - dispatched. - - Thanks to Beskrovny Evgeny (evgeny_beskrovny@icomverse.com) of - Comverse Network Systems for pointing out the problem with - WAIT_IO_COMPLETION. - - * ace/Reactor.cpp (run_alertable_event_loop): Added new function - that runs the Reactor using alertable_handle_events() instead of - handle_events(). - -Sat Mar 21 19:58:42 1998 Nanbor Wang - - * ace/OS.i (flock_destroy): lock->lockname_ should be cast to - LPTSTR instead of char*. Thanks to Goran Lowkrantz - for reporting this. - - * examples/Threads/task_five.cpp: Allow users to set thread stack - size from command lines. If a user doesn't give one, it will be - set to 8k on non-Windows platforms. - -Fri Mar 20 22:07:15 1998 Nanbor Wang - - * ace/ACE_Library.{mak,mdp}: Added Msg_WFMO_Reactor. - - * ace/Asynch_IO.cpp (cancel): Added version check because MSVC 4.2 - doesn't support CancelIo. - -Fri Mar 20 21:46:16 1998 Douglas C. Schmidt - - * ACE version 4.4.34, released Fri Mar 20 21:46:16 1998. - -Fri Mar 20 20:53:27 1998 Nanbor Wang - - * ace/Parse_Node.cpp: Fixed typos. - -Fri Mar 20 14:18:53 1998 Douglas C. Schmidt - - * performance-tests/UDP/udp_test.cpp: Completed the ACE'ification - of this test. - -Fri Mar 20 09:31:22 1998 David L. Levine - - * ace/OS.h: with ACE_LACKS_WCHAR_T, changed wchar_t typedef - from long to ACE_UINT32 to ensure that it is 4 bytes on - any platform. - - * performance-tests/UDP/udp_test.cpp: added this test, which - provides UDP performance statistics. Thanks to Fred Kuhns - for contributing the test. - -Thu Mar 19 10:15:27 1998 Steve Huston - - * ace/OS.i: Changed the dynamic library load/unload code so that - on HP-UX, g++ does the same thing as aC++ (not like HP C++), using - and shl_(un)load. Thanks to Kirill Rybaltchenko - for this change. - -Thu Mar 19 10:13:35 1998 David L. Levine - - * performance-tests/Misc/preempt.cpp: 1) Added -f option to fork - instead of spawning new threads. 2) Added -l option for - specifying number of iterations of low priority thread/process. - 3) On Solaris, print LWP ID. - -Thu Mar 19 02:47:42 1998 Nanbor Wang - - * ace/ace_dll.dsp: Link against user32.lib for all configurations - for we now use Msg_WFMO and related APIs in ACE. (We should do - the same to ace_lib.dsp.) - - * ace/config-WinCE.h: Added dummy definition of stdin and stdout. - They don't have any real effect. - - * ace/ACE.{h,cpp} (ldopen,ldfind): Made these functions visible - under CE. Modified them to work under CE. - - * ace/OS.cpp: Added scope name to day_of_week_name and - month_name. They are used only on CE. - - * ace/OS.{h,i}: Added some dummy C methods for CE. Yacc and Lex - generated codes use these functions, although we don't really - use them in ACE. - - * ace/OS.i (exit): Added implementation of ACE_OS::exit under CE. Since - there's no ExitProcess available, I use TerminateProcess, which - is not exactly the same as using ExitProcess but that's the - closest thing I can think of. - (open): Made the char version unsupported under CE. - (fread,fwrite,...): Added dummy C methods definition for CE. - - * ace/Parse_Node.cpp: Regular CE stuff. There's a boundary - of char/wchar functions somewhere in this file. Most Svc_Conf - stuff uses char functions but the information gets converted to - wchar later. - - * ace/Service_Config.{h,i}: Added char version function for - Service_Type under CE. Service_Type (and its subclasses) are - the boundary of char/wchar functions. - - * ace/Service_Object.{h,i}: Added the chname method which always - returns char value of a Service_Object under all platforms. - - * ace/Svc_Conf.y: - * ace/Svc_Conf_y.cpp: - * ace/Object_Manager.{cpp}: Regular CE stuff. - - * ace/Svc_Conf_l.cpp: Regular CE stuff. Haven't figure out a way - to modify this from Svc_Conf.l yet. - - * ace/Service_Config.cpp - * ace/Object_Manager.{cpp}: Ifdef'ed inclusion of Naming Context - related header files out. Naming context uses Registry which - uses iostream and STL, both are not available on CE (yet?). - - * ace/WFMO_Reactor.{h,cpp}: - * ace/Proactor.{h,i,cpp}: - * ace/Asynch_IO.{h,cpp}: Ifdef'ed the body so they are not visible - under CE. CE doesn't have asynchronous IO. - -Wed Mar 18 21:30:39 1998 Douglas C. Schmidt - - * ACE version 4.4.33, released Wed Mar 18 21:30:39 1998. - -Wed Mar 18 16:36:17 1998 Douglas C. Schmidt - - * Makefile (releaseall): There is no more TAO.tar.gz. There are - now two tar files, ACE.tar.gz and ACE+TAO.tar.gz. - ACE+TAO.tar.gz contains ALL of ACE. In particular, it will - always have the same version number and same ACE contents as - ACE.tar.gz. The intent here is that people who just want to use - ACE will use ACE.tar.gz and people who want to use ACE and TAO - will use ACE+TAO.tar.gz. Thanks to David Levine and Irfan for - helping with this. - -Wed Mar 18 15:50:30 1998 Nanbor Wang - - * ace/Log_Msg.cpp (ACE_Log_Msg): Added codes to grab - ACE_Log_Msg_Manager's lock while updating the instance_count_. - There was a race condition without the change. Thanks to Detlef - Becker's thread creation stress - test to reveal the bug. - -Tue Mar 17 17:20:00 1998 Nanbor Wang - - * examples/Threads/test.dsw: - * examples/Threads/task_five.cpp: - * examples/Threads/task_five.dsp: - * examples/Threads/Makefile: Added a new ACE_Task testing - program. Thanks to Detlef Becker - for providing the source. - -Wed Mar 18 11:00:11 1998 Alexander Babu Arulanthu - - * ace/Hash_Map_Manager.cpp (map): This method has been added to - the ACE_Hash_Map_Iterator_Base class. - -Wed Mar 18 09:25:30 1998 Chris Gill - - * ace/ace.dsw: added user32.lib to link for dynamic library on NT - for all builds. - -Wed Mar 18 09:22:13 1998 David L. Levine - - * ace/Containers.cpp,Hash_Map_Manager.cpp,Map_Manager.cpp - (operator *): initialize retv to 0 to avoid warning about - using it before setting its value. - - * tests/Thread_Mutex_Test.cpp (test): added no-op statement to - suppress GHS warning about unused local variable "mutex". - - * tests/Priority_Buffer_Test.cpp (consumer): added no-op statement - to suppress GHS warning about unused local variable "cur_priority". - - * ace/README: removed ACE_HAS_BOOL. It was unused. - - * performance-tests/Misc/basic_func.{h,cpp},basic_perf.cpp: - With MSVC 5.0, do something in the empty iteration because - otherwise it gets completely optimized away. Thanks to - Alexander Ovsiankin for providing - this fix. - -Tue Mar 17 23:53:56 1998 Douglas C. Schmidt - - * examples/Threads/task_five.cpp (main): Reformatted Detlef's new - torture test so that it conforms to ACE programming conventions. - -Tue Mar 17 23:22:20 1998 Irfan Pyarali - - * ace/Reactor.cpp (ACE_Reactor): If - ACE_USE_MSG_WFMO_REACTOR_FOR_REACTOR_IMPL is defined, use - ACE_Msg_WFMO_Reactor for ACE_Reactor::instance(). - - * examples/Reactor/ReactorEx/test_window_messages.cpp: Tests - Msg_WFMO_Reactor's ability to handle regular events and window - messages. - -Tue Mar 17 21:41:57 1998 David L. Levine - - * examples/Threads/task_five.cpp (svc): use ACE_OS::sleepq - instead of ::Sleep. (main): declare "ii" outside of the - first loop because it is used in other loops. - -Tue Mar 17 16:02:26 1998 Irfan Pyarali - - * ace/WFMO_Reactor: Changes were made to WFMO_Reactor to make it - easier to extend it to handle window messages: - - - dispatch_handler() checks if there are window messages that - need to be dispatched if the matches . - If there are, they are dispatched by calling - dispatch_window_messages(). - - - dispatch_window_messages() is a noop for WFMO_Reactor. - - - Checking the return values from Wait*() functions was changed - as (WAIT_OBJECT_0 + nCount) is now a valid index. - - - Checking for remaining handles was abstracted into - poll_remaining_handles(). - - - Expiring of timer was abstracted out into expire_timers(). - Only the owner thread expires the timers. - - - calculate_timeout() was removed from - wait_for_multiple_events(). - - * ace/Msg_WFMO_Reactor: A new Reactor that specializes the - WFMO_Reactor. WFMO_Reactor uses WaitForMultipleObjects while - Msg_WFMO_Reactor uses MsgWaitForMultipleObjects. This allows - the Msg_WFMO_Reactor to react to Windows and COM/DCOM messages - in addition to the regular WFMO_Reactor events. - - Thanks to Beskrovny Evgeny (evgeny_beskrovny@icomverse.com) of - Comverse Network Systems for contributing this to ACE. - -Tue Mar 17 13:15:11 1998 Douglas C. Schmidt - - * ace/Future.cpp: Added missing ACE_MT macros so that we now - compile correctly if we don't have threads. Thanks to Laura - Paterno for reporting this. - -Tue Mar 17 15:13:17 1998 David L. Levine - - * ace/High_Res_Timer.cpp (dump): fleshed out the implementation. - - * ace/Profile_Timer.{h,cpp} (dump): implemented for platforms - w/o ACE_HAS_PRUSAGE_T and ACE_HAS_GETRUSAGE. - - * ace/OS.i (gethrtime): with ACE_HAS_CLOCK_GETTIME, carefully - construct return value to avoid arithmetic overflow if - ACE_LACKS_LONGLONG_T. - -Mon Mar 16 22:18:07 1998 Douglas C. Schmidt - - * ace/IPC_SAP.cpp: Moved return values outside of the #ifdefs to - quiet warning messages with KAI C++. Thanks to Laura Paterno - for reporting this. - -Tue Mar 17 00:04:53 1998 Nanbor Wang - - * ace/Svc_Conf.y: - * ace/Svc_Conf_y.cpp: Applied "Regular CE Tricks [TM]". - -Mon Mar 16 23:34:39 1998 Nanbor Wang - - * ace/README: - * ace/config-WinCE.h: Added ACE_LACKS_STRRCHR. - - * ace/OS.i: Added implementation of ACE_OS::strrchr () when - platforms don't provide one. - -Mon Mar 16 16:08:45 1998 David L. Levine - - * ace/High_Res_Timer.cpp: set global_scale_factor_ to 1000 with - ACE_HAS_CLOCK_GETTIME, because clock_gettime has nanosecond - resolution, and with PSOS. - - * ace/Profile_Timer.{h,cpp},tests/Handle_Set_Test.cpp: use units - of microseconds instead of seconds if ACE_LACKS_FLOATING_POINT. - - * ace/OS.i (hostname): on Chorus, try the HOST environment variable - if ::gethostname () returns an empty string. - -Mon Mar 16 13:04:58 1998 Seth Benjamin Widoff - - * ace/OS.h: - Extended the ACE_HAS_STL_MAP_CONFLICT to include 'queue' as well - as 'map.' 'queue' is defined in sys/stream.h, which is included in - OS.h by netinet/in.h and sys/timod.h. - -Mon Mar 16 00:22:40 1998 Nanbor Wang - - * CE-status: Updated CE port status. - - * ace/config-WinCE.h: Added macro definitions for EOF and BUFSIZ. - - * ace/OS.{h,i} (ace_isspace): Added both char and wchar version - functions. Notice that this can't be called isspace because - most compilers implement isspace as a macro. - (dlerror,dlsym): Added wchar version of these functions under CE. - - * ace/OS.cpp (fork_exec): Modified parameters passed to - CreateProcess under CE. - - * ace/ARGV.{h,i,cpp}: Unicodize this class under CE. Notice that - under CE, you won't be able to use environment variable - substitution since there's no environment variable at all. - - * ace/Reactor.cpp: Don't include Service_Config.h and - WFMO_Reactor.h under CE for now. Prevent Reactor from - reconfigure the service configurator. - - * ace/Task.cpp: Don't include Service_Config.h under CE for now. - Prevent Task_Base from reconfigure the service configurator. - - * ace/SString.cpp: Don't include Service_Config.h under CE for - now. - - * ace/Svc_Conf.h: - * ace/Shared_Object.{h,cpp}: - * ace/Service_Type.{h,i,cpp}: - * ace/Service_Repository.{h,cpp}: - * ace/Service_Object.{h,i,cpp}: - * ace/Service_Manager.{h,cpp}: - * ace/Service_Config.{h,i,cpp}: Unicodize service configurator - related classes. I still need to find a point which breaks the - usage of char functions that flex and yacc use and wchar - functions that most CE functions use. - - * ace/Get_Opt.{h,cpp}: - * ace/Local_Token.{h,i,cpp}: - * ace/Map_Manager.cpp: - * ace/Message_Queue.cpp: - * ace/Module.{h,i,cpp}: - * ace/Parse_Node.cpp: - * ace/Pipe.cpp: - * ace/Stream.{h,cpp}: - * ace/Stream_Module.{h,cpp}: - * ace/Token_Manager.{h,cpp}: - * ace/Activation_Queue.cpp: Unicodize classes. Regular CE stuff. - -Sat Mar 14 06:43:32 1998 David L. Levine - - * ace/Basic_Types.h,config-win32-common.h,config-irix*.h: - moved WIN32 and SGI-specific code out of Basic_Types.h and - into their respective config files. - - * ace/Object_Manager.h: changed ACE_HAS_NON_STATIC_OBJECT_MANAGER - to ACE_HAS_NONSTATIC_OBJECT_MANAGER in comments. Thanks to - Kirill Rybaltchenko for reporting - this. - - * include/makeinclude/platform_chorus_ghs.GNU: set PATH, and - remove /tmp/gh_*.[os] files that GreenHills leaves. - - * ace/INET_ADDR.cpp (get_host_name): on Chorus, save errno in - error so that it gets propagated back to the caller. - -Sat Mar 14 00:13:22 1998 Douglas C. Schmidt - - * ace/Task.h (ACE_Task_Base): Give a default value of 0 for the - Thread Manager so we can use this as a base class. - - * tests/Future_Test.cpp: Since the Scheduler provides its own - activation queue it doesn't make sense to inherit from ACE_Task - (which provides its own queue) but instead ACE_Task_Base - (which doesn't define its own queue). Thanks to Loren Rittle - for reporting this. - - * examples/Threads/future[12].cpp: Since the Scheduler provides - its own activation queue it doesn't make sense to inherit from - ACE_Task (which provides its own queue) but instead - ACE_Task_Base (which doesn't define its own queue). Thanks to - Loren Rittle for reporting this. - - * examples/Threads/future[12].cpp: Removed the explicit call to - scheduler_->close() to avoid closing the scheduler down twice. - Thanks to Loren Rittle for reporting this. - -Fri Mar 13 23:41:44 1998 Nanbor Wang - - * ace/Process.cpp (ACE_Process_Options): Moved column out of - ifdef'ed area. - -Fri Mar 13 21:17:51 1998 David L. Levine - - * ace/Process.cpp (ACE_Process_Options): reordered initializers - to match declaration order. - -Fri Mar 13 17:30:16 1998 Nanbor Wang - - * ace/Process.{h,i,cpp}: As CE's CreateProcess is basically - broken, you can only start a new process using ACE_Process. You - cannot set any of environment, process attributes, thread - attributes, current directory, stratup info, and security - attributes. I have modified these files so that most attribute - access functions just do nothing. Some of "do nothing" - functions were defined as ACE_INLINE on CE. - - * ace/Memory_Pool.cpp: Regular CE stuff. - -Fri Mar 13 17:42:17 1998 Irfan Pyarali - - * ace/WFMO_Reactor.cpp (handle_signal): If there are still - notification in the queue, we need to wake up again. - -Fri Mar 13 09:09:08 1998 David L. Levine - - * ace/Profile_Timer.*,config-chorus.GNU,README, - tests/Handle_Set_Test.cpp (test_performance): added - ACE_LACKS_FLOATING_POINT support. - - * include/makeinclude/platform_chorus_ghs.GNU: removed - -X445 from CFLAGS. I don't know what it does. - -Fri Mar 13 01:10:36 1998 Irfan Pyarali - - * ace/WFMO_Reactor: The following changes were made to make the - registration and removal of event_handlers from WFMO_Reactor - more robust. Thanks to Jonathan Biggar for - helping out. - - - ACE_WFMO_Reactor_Handler_Repository::Common_Info now contains - the delete_entry_ and close_masks_ fields as these were now - common to all three structures. - - - handle_additions() and handle_deletions() were changed to - make_changes_in_current_infos(), - make_changes_in_suspension_infos(), and - make_changes_in_to_be_added_infos() - - - Correct range for suspend_handlers() is 0 to max_handlep1_ - rather than (max_handlep1_ - 1) - - - suspend_handlers(), - resume_handlers(), - add_network_events_i(), - unbind_i(), - suspend_handler_i(), - resume_handler_i(), - unbind_all(), - - now go through the to_be_add_info_ array when making changes. - - * examples/Reactor/ReactorEx/test_prerun_state_changes.cpp: New - test added to check the Reactor's ability to handle state - changes before getting a chance to run. - - * examples/Reactor/ReactorEx/test_talker.cpp (main): Remove the - Procator from the Reactor so that the Proactor is not called - after it has been destroyed. - -Thu Mar 12 19:36:43 1998 Douglas C. Schmidt - - * ACE-INSTALL.html: Tidied up a bunch of things in this file. - Also, created a new $ACE_ROOT/os-patches/ directory and moved - the patches for Linux and LynxOS into this in order to - consolidate the patches into one location. - - * ace/WFMO_Reactor.cpp (upcall): Cleaned up a bunch of code to (1) - avoid a nasty "dangling else" bug and (2) simplify a bunch of - if/if statements. Thanks to Jonathan Biggar - for pointing this out. - -Thu Mar 12 18:21:15 1998 James C Hu - - * ace/config-linux-common.h: Incorporated changes that were - suggested by Robert Hanzlik to get ACE to - compile on Linux using glibc 2.1 and libg++/gcc 2.8. - -Thu Mar 12 17:25:28 1998 James C Hu - - * ACE-INSTALL.html: Added a table to Supported Platforms and - Compilers. - -Thu Mar 12 16:28:32 1998 Nanbor Wang - - * Apply regular string manipulation for CE to following files: - ACE.cpp ARGV.cpp Acceptor.cpp Activation_Queue.cpp - Asynch_Acceptor.cpp Asynch_IO.cpp CORBA_Handler.cpp - Connector.cpp Containers.cpp DEV_Addr.cpp Dynamic_Service.cpp - FIFO.cpp FIFO_Recv.cpp FIFO_Recv_Msg.cpp FIFO_Send.cpp - FIFO_Send_Msg.cpp FILE_Addr.cpp FILE_Connector.cpp Filecache.cpp - Future.cpp Get_Opt.cpp Hash_Map_Manager.cpp LSOCK.cpp - LSOCK_CODgram.cpp LSOCK_Connector.cpp LSOCK_Dgram.cpp - Local_Name_Space_T.cpp Local_Tokens.cpp Local_Tokens.i - Malloc_T.cpp Map_Manager.cpp Mem_Map.cpp Memory_Pool.cpp - Message_Queue.cpp Module.cpp Name_Proxy.cpp - Name_Request_Reply.cpp Naming_Context.cpp Obstack.cpp - Parse_Node.cpp Pipe.cpp Priority_Reactor.cpp Proactor.cpp - Process_Manager.cpp Read_Buffer.cpp Registry_Name_Space.cpp - Remote_Name_Space.cpp Remote_Tokens.cpp SPIPE_Acceptor.cpp - SV_Semaphore_Complex.cpp SV_Semaphore_Simple.cpp - Select_Reactor.cpp Service_Config.cpp Service_Main.cpp - Service_Manager.cpp Service_Repository.cpp Service_Types.cpp - Singleton.cpp Strategies_T.cpp Stream.cpp Svc_Handler.cpp - TLI.cpp TLI_Acceptor.cpp TLI_Connector.i Task_T.cpp - Time_Request_Reply.cpp Timer_Queue_Adapters.cpp - Token_Collection.cpp Token_Invariants.cpp Token_Manager.cpp - Token_Request_Reply.cpp WFMO_Reactor.cpp WFMO_Reactor.i - XtReactor.cpp. - -Thu Mar 12 15:37:14 1998 David L. Levine - - * ace/Read_Buffer.* (read): null terminate the result buffer. - Also, changed "inline" to "ACE_INLINE" and updated #includes - so that ACE inlining works. - -Thu Mar 12 02:19:53 1998 Irfan Pyarali - - * ace/WFMO_Reactor.cpp (upcall): In the Select_Reactor, when it - upcalls to an event_handler which returns a -1, the - Select_Reactor only clears the specific mask bit for the - handler. For example, for a call to - Event_Handler::handle_input() which returns -1, the - Select_Reactor clears the READ_MASK bit. - - In the WFMO_Reactor, if any handler returns a -1, then it clears - ALL of the mask bits for the event handler. - - So, fixed WFMO_Reactor so that it works like Select_Reactor in - this regard. - - Thanks to Jonathan Biggar for pointing this - discrepancy out. - - * ace/WFMO_Reactor.cpp (dispatch_handles): The correct range check is - {WAIT_OBJECT_0,WAIT_OBJECT_0 + this->handler_rep_.max_handlep1 () - index} - and not - {WAIT_OBJECT_0,WAIT_OBJECT_0 + this->handler_rep_.max_handlep1 ()} - - Thanks to Evgeny Beskrovny evgeny_beskrovny@icomverse.com for - pointing this out. - -Wed Mar 11 15:20:09 1998 Douglas C. Schmidt - - * ace/OS.i (thr_getspecific): Added comments to the code to - explain the unusual step of saving errno across calls to - TlsGetValue() on Win32. Thanks to Tim Harrison for clarifying - this. - -Wed Mar 11 00:39:29 1998 Nanbor Wang - - * CE-status: A temporary file to trace the progress of the CE - port. - - * ace/ace_ce_dll.dsp: Added more .cpp files. - - * ace/High_Res_Timer.{h,cpp}: Undefined functions print_ave and - print_total. These two function use STDOUT which is not - supported on CE. We should probably modify the functions so - they write results to Log_Msg. - (get_register_scale_factor): This function always returns 1 on - CE to prevent the use of High_Res_Timer. - (get_env_global_scale_factor): Always returns -1 on CE because - environment variables are not supported. - - * ace/Thread_Manager.cpp (spawn_i): WinCE doesn't support - DuplicateHandle, therefore the best we can do now is just pass - back the handle to the spawned thread. Notice that you *can't* - close the handle by yourself under CE. Perhaps we shouldn't - even try to pass this info back. ??? - Applied regular CE porting tricks. - - * ace/SOCK_Dgram_Mcast.{h,cpp}: - * ace/SOCK_Dgram_Bcast.{h,cpp}: Changed some function signatures - to use wchar on CE. Applied regular CE porting tricks. - - * ace/IO_SAP.cpp: - * ace/SOCK_CODgram.cpp: - * ace/SOCK_Dgram.cpp: - * ace/Select_Reactor.cpp: - * ace/Timer_{Hash,Heap,List,Queue,Wheel}_T.cpp: Applied regular CE - porting tricks. Erm, I'm running out of tricks. - -Tue Mar 10 20:27:57 1998 Nanbor Wang - - * ace/Reactor.h (reset_event_loop): Made the signature match with - its definition in .cpp file. - -Tue Mar 10 15:07:00 1998 Douglas C. Schmidt - - * ace/Svc_Handler.cpp, - ace/Module.cpp: - Fixed some problems where Svc_Handlers in Modules were being - deleted prematurely. Thanks to Steve Coy - for reporting this. - - * ace/Reactor.h (ACE_Reactor): Added a "reset_event_loop" method - so that it's possible to reset the loop again once the - end_event_loop() method is called. Thanks to Eric Hopper - for reporting this. - - * ace/IOStream_T.cpp (ACE_IOStream): Moved some code to work - around some bugs with MSVC++ 5.0. Thanks to James CE Johnson - for reporting this. - -Tue Mar 10 15:57:54 1998 Nanbor Wang - - * ace/Handle_Set.cpp (dump): Cast mask_.fd_count to size_t. - Depend on whether you are using standard C++ library, the type - of fd_count count be size_t or ssize_t. Thanks to Darrell for - discovering this. - -Tue Mar 10 13:22:24 1998 Irfan Pyarali - - * ace/Asynch_IO.cpp (cancel): CancelIo is not supported on Win95. - - * ace/SString.cpp (set): Use ACE_WString::wstrlen(). - -Tue Mar 10 06:59:42 1998 David L. Levine - - * ace/SString.cpp (WString::set): added support for platforms - that don't have wchar_t, or that treat wchar_t and ACE_USHORT16 - as different types. - - * ace/OS.h,Basic_Types.h: moved ACE_USHORT16 typedef from OS.h to - Basic_Types.h. - - * ace/High_Res_Timer.h: fixed comment: timer.start () instead of - timer.stop () (twice). - -Mon Mar 09 22:15:43 1998 Irfan Pyarali - - * ace/SString.cpp (ACE_CString::operator=): Special cases have to - considered carefully so that memory is managed properly. This - is specially true when the ACE_CString::NULL_CString_ is used. - - * ace/SString.h (ACE_CString and ACE_WString): Added set methods - that allows the user to set the strings without having to use - the assignment operator. - -Mon Mar 09 16:11:16 1998 David L. Levine - - * examples/Map_Manager/test_hash_map_manager.cpp: added #include - of ace/SString.h and template instantiations. Replaced gets - with ACE_OS::fgets. - - * examples/Makefile,examples/Map_Manager/Makefile: added - Map_Manager to examples DIRS and added RCS keyword string. - -Mon Mar 9 14:59:20 1998 Carlos O'Ryan - - * include/makeinclude/platform_irix6.x-sgic++.GNU: - Added the definition for MATHLIB. - -Mon Mar 09 01:23:49 1998 Nanbor Wang - - * ace/ace_ce.dsw: - * ace/ace_ce_dll.dsp: New project/workspace files for WinCE. This - is a temporary workspace only and should be merged into ACE mail - Win32 project/workspace when the port is stable enough. - - * ace/config-WinCE.h: Added ACE_LACKS_GETS. - - * ace/Synch.i (get_nesting_level): Defined it as not supported on - CE. CE's CriticalSections don't have RecursionCount defined. - We should be able to simulate this, however. - - * ace/Process.{h,cpp}: - * ace/SString.{h,cpp}: Moved class ACE_Tokenizer from Process.* to - SString.*. Although ACE_Tokenizer is used in - ACE_Process[_Options], it really is a more general utility - class. - (operator<<): Conditionally compile these functions only when we - are not running ACE on CE. - - * ace/OS.i (atoi): Added inline implementation for wchar version. - (gets): Remove condition !defined (ACE_HAS_WINCE). This should - be taken care of by ACE_LACKS_GETS. - - * ace/OS.h (atoi): Added wchar version of this function. - (ASYS_WIDE_STRING): This macro converts char strings to - wchar strings when ACE_HAS_MOSTLY_UNICODE_APIS is defined. - (ASYS_MULTIBYTE_STRING): This macro converts wchar strings back - to char strings *only* when ACE_HAS_MOSTLY_UNICODE_APIS is - defined. - - * ace/INET_Addr.{h,cpp}: Redefined interface signatures on WinCE - using ASYS_* macros. The principle here is to pass wide char - strings in and get char strings out. That's because we will use - mostly wchar strings in CE but most winsock APIs return (or uses - char strings.) Doing so should reduce conversion between them - to minimum. - Converting debug messages with ASYS_TEXT. - - * ace/Log_Msg.cpp (open): - * ace/ACE.cpp (get_ip_interfaces): Only convert the wide character - string to a char string when ACE_HAS_MOSTLY_UNICODE_APIS flag is - not set using the ASYS_MULTIBYTE_STRING macro. - - * ace/SOCK.cpp: - * ace/SOCK_Acceptor.cpp: - * ace/Malloc.cpp: - * ace/Malloc_T.cpp: - * ace/Synch.cpp: - * ace/Message_Block.cpp: - * ace/IPC_SAP.cpp: - * ace/Handle_Set.cpp: - * ace/Addr.cpp: Converting debugging messages to wchar strings for - CE using the ASYS_TEXT macro. - -Sun Mar 08 14:29:30 1998 David L. Levine - - * apps/Gateway/Gateway/Event_Channel.cpp (initiate_acceptors): - changed SUPPLIER_CONNECTOR to SUPPLIER_ACCEPTOR. Thanks - to Dani Flexer for reporting this. - - * ace/OS.i (cond_timedwait): removed "struct" from declaration - of local timespec_t relative_time, because timespec_t can - be a typedef. Thanks to Steve Coy for - reporting this. - - * Makefile: tag from ACE_wrappers, not its parent directory, - to avoid confusing CVS. - -Sat Mar 07 16:46:58 1998 David L. Levine - - * ACE version 4.4.32, released Sat Mar 07 16:46:58 1998. - -Fri Mar 06 08:37:44 1998 David L. Levine - - * bin/ace_ld: made perl4-compatible. Thanks to - Jerry Bickle for reporting this. - - * ace/os.i: (sigwait): removed "::" from before sigwait () call - with ACE_HAS_ONEARG_SIGWAIT, in case it's a macro. Thanks - to Kirill Rybaltchenko for - reporting this. - - * bin/create_ace_build: made perl4-compatible. Thanks to - Carlos for noticing this. - - * include/makeinclude/platform_vxworks5.x_g++.GNU: added - WIN32 host support. Thanks to Paul von Behren - for providing the patches. - - * ACE-INSTALL.html: added information from Paul von Behren - on building on NT hosts for - VxWorks targets. - - * tests/Recursive_Mutex_Test.cpp: 50 iterations instead of 100 - on Chorus. - - * include/makeinclude/platform_chorus_ghs.GNU: added -G to - LDFLAGS. - - * tests/run_tests.sh: added capability for executing the tests - on a remote (Chorus) target. - - * examples/System_V_IPC/Makefile: added clean and realclean targets - for VXWORKS. - - * Makefile: cd .. before tagging. - -Thu Mar 05 12:36:52 1998 Nanbor Wang - - * ace/OS.h (ACE_TRACE): Added a missing right paren. - -Thu Mar 05 10:04:06 1998 David L. Levine - - * include/makeinclude/platform_chorus_ghs.GNU: this works, - though it may not be optimum. - -Thu Mar 05 01:33:08 1998 Nanbor Wang - - * ace/config-WinCE.h: Added more CE stuff. Ostream is now - redefined as FILE on CE. - - * ace/OS.{i,cpp}: - * ace/Synch_T.cpp - * ace/Message_Queue.cpp: - * ace/SOCK_Connector.i: Added ASYS_TEXT to numerous - ACE_DEBUG/ACE_ERROR macros. We must use wide char strings in - CE. - - * ace/ACE.{h,cpp}: Redefined sock_error to return wchar string on - CE. Added ASYS_TEXT to debugging messages. - - * ace/Trace.{h,cpp}: - * ace/Log_Msg.{h,cpp}: Made it UNICODE compatible. - - * ace/Log_Record.cpp: Changed how ostream is used on CE. Although - the code here become some how platform dependent, fortunately, - it can be shielded out from the users thru various macros. - Added ASYS_TEXT. - - * ace/SString.h: Undefined friend relations of ACE_?String with - ostream on CE. CE doesn't support . - - * ace/OS.h: Changed the definition of ASYS_TEXT to use _TEXT. - This macro can be used with other compiler defined macros - (e.g. __FILE__.) Added ASYS_TEXT to adorn parameters of - ACE_TRACE so we don't need to modify our codes to make it - portable to CE. - - * ace/Log_Msg.cpp: Removed macro definition of ACE_WSPRINTF. It - didn't appear to be used anywhere. - -Wed Mar 04 09:32:32 1998 David L. Levine - - * ace/OS.cpp (readv,writev): added static cast of iov_len to int, - to avoid unsigned comparison < 0. - - * ace/Containers.cpp (ACE_Fixed_Set_Iterator::done), - ace/Map_Manager.cpp (ACE_Map_Iterator_Base::done): - removed const from static cast to avoid warnings about - meaningless type qualifier from GreenHills. - - * ace/Basic_Types.i (ACE_U_LongLong): added missing ACE_INLINE's. - - * ace/Svc_Conf.y,Svc_Conf_y.cpp, etc/Svc_Conf_y.cpp.diff - (svc_location): delete svc_initializer after initializing - svc_location. Thanks to Tom Arbuckle - for reporting this. - - * include/makeinclude/platform_linux_lxpthreads.GNU: separated - SOBUILD into compile and link steps because the - Service_Configurator/server/* examples are unable to - use files compiled with -fPIC and just labeled as .so as shared - ELF objects. Thanks to Tom Arbuckle - for reporting this. - - * include/makeinclude/platform_chorus_ghs.GNU: explicitly link - in ioassign.o to resolve _cerr. - - * tests//SOCK_Connector_Test.cpp, - ace/config-{chorus,lynxos,netbsd,psosim-g++,vxworks5.x, - win32-common}.h: - added ACE_LACKS_GETHOSTENT, so that SOCK_Connector_Test doesn't - have to enumerate the platforms that don't have ::gethostent (). - - * tests/Basic_Types_Test.cpp (main): if ACE_LACKS_LONGLONG_T, use - ACE_U_LongLong instead of long long. - -Tue Mar 03 22:15:16 1998 Nanbor Wang - - * ace/Remote_Name_Space.cpp: Replaced a bunch of usages of - ACE_WString::rep (). They were passed to ACE_Name_Request which - creates another copy for itself and nobody ever cleans up these - memories. Thanks to John Mulhern <9107@MN3.LAWSON.lawson.com> - for reporting this. - - * ace/OS.h (THR_DETACHED): Defined this macro so that we can - simulate detached threads on NT (Hi Irfan! ;-). Thanks to Andre - Arpin for prividing the use case of - detached threads. - - * ace/Thread_Manager.cpp (exit): Added detached threads - manipulating codes here. We now can simulate behaviros of UNIX - detached threads on NT (no one cares about their return status.) - -Tue Mar 03 15:05:42 1998 David L. Levine - - * ace/Basic_Types.{h,i} (ACE_U_LongLong::operator *=): updated - with James Hu's implementation. Now it's fast :-) - - * tests/Time_Value_Test.cpp (test_ace_u_longlong): added another - test of operator *=. - -Mon Mar 2 19:21:36 1998 Douglas C. Schmidt - - * ace/OS.h: Changed all uses of "/localname" and "/globalname" to - "localname" and "globalname" to avoid problems on UNIX. Thanks - to John Mulhern <9107@MN3.LAWSON.lawson.com> for reporting this. - - * ace/OS.h: Changed "C:\\temp\\" to "C:\\temp" to avoid some minor - problems on NT. Thanks to John Mulhern - <9107@MN3.LAWSON.lawson.com> for reporting this. - - * netsvcs/lib/Log_Message_Receiver.cpp - (Log_Message_Receiver_Impl): Removed some stray inline keywords. - Thanks to Russ Noseworthy for - reporting this. - - * ace/OS.i (sigwait): Added support for POSIX sigwait(). Thanks - to Russ Noseworthy for reporting - this. - - * ace/Containers.cpp (done): - ace/Map_Manager.cpp (done): Corrected some misplaced "consts" in - the ACE_static_cast macro. Thanks to Russ Noseworthy - for reporting this. - - * include/makeinclude/platform_sunos5_sunc++.GNU (CXX): Commented - out the -pta option since it might not be necessary. If this - breaks code then we'll need to reevaluate this change. Thanks - to Russ Noseworthy for suggesting - this. - -Mon Mar 02 17:06:46 1998 Nanbor Wang - - * ace/Thread_Manager.cpp (exit): Added Win32 thread exit - functionality. When a thread function falls out of scope, this - functions is called by ACE_Thread_Control::exit and it will not - call ACE_OS::thr_exit from here. Under this scenario, the - ACE_Thread_Manager::exit simply falls thru the end. If a user - call this function directly, this function will delete - ACE_Thread_Exit::instance() first, which simulate the cleanup - routine executed when a thread fall out of end by calling - ACE_Thread_Manager::exit recursively. After this is done - (returned from the second call,) this function will then call - ACE_OS::exit, which clean up the TSS objects and then really - exit the thread. Thanks to Gordon Watts for - pointing this out. - - * ace/OS.cpp (thr_exit): Added Win32 thread exit functionality. - ACE_OS::thr_exit now will try to clean up TSS objects by calling - ACE_OS::cleanup_tss. You really should _not_ calling this - function directly. Esp. from the main thread because I don't - know how to tell if you are calling it from main thread thread - or not and thus memory leak might occur. - -Mon Mar 02 09:13:26 1998 David L. Levine - - * ace/config-sunos5.5-sunc++-4.x.h: replaced ACE_PAGE_SIZE with - ACE_HAS_GETPAGESIZE, and added ACE_HAS_STL_MAP_CONFLICT. - Thanks to J. Russell Noseworthy - for these recommendations. - - * ace/config-sunos5.6-sunc++-4.x.h: just #include - config-sunos5.5-sunc++-4.x.h. There's no difference between - the two at this point. - - * include/makeinclude/platform_sunos5_sunc++.GNU: added -R./ and - -mt to LDFLAGS. Added -fast to LDFLAGS if "fast" flag is - enabled. Thanks to J. Russell Noseworthy - for these recommendations. - - * include/makeinclude/platform_sunos5.6_sparc_sunc++.GNU: just - include platform_sunos5_sunc++.GNU. There's no difference between - the two at this point. There is one significant net change to - the 5.6 platform: -s is no longer included in LDFLAGS. - - * ace/config-chorus.h: added ACE_LACKS_ACE_IOSTREAM with ghs, because - its iostream doesn't have separate operators for signed/unsigned - char. - -Sun Mar 1 13:54:02 1998 Nanbor Wang - - * Makefile: Added cvs commands to automatically tag the CVS - repository with version number 'ACE_9_9_99' tag and 'Current' - tag. - -Sun Mar 1 12:26:13 1998 Alexander Babu Arulanthu - - * ace/Hash_Map_Manager.cpp (reset_i): - * ace/Hash_Map_Manager.h: - Added reset () method for the Hash_Map_Iterator. - -Sun Mar 01 10:59:27 1998 Irfan Pyarali - - * ace/Asynch_IO.cpp (cancel): Changed CancelIO to CancelIo. - - * ace/Synch.h (ACE_Lock): Added a virtual destructor to ACE_Lock. - -Sun Mar 01 08:38:00 1998 David L. Levine - - * ace/OS.h: use the new ACE_DEFAULT_SYNCH_TYPE for the default - mutex, etc., type, so that it can be set VxWorks. The ACE default - type on VxWorks is SEM_Q_FIFO, the same as VxWorks' default. - The ACE default can be easily overridden in config.h by - defining ACE_DEFAULT_SYNCH_TYPE. - - * ace/OS.i (sema_init): on VxWorks, use the type argument for the - sema type, instead of hard-coding to SEM_Q_FIFO. - - * ACE-INSTALL.html: updated Linux/alpha "as" patch. - -Sat Feb 28 12:20:57 1998 Douglas C. Schmidt - - * ace/Message_Queue.cpp: Fixed the implementation of - wait_not_{full,empty}_cond() so that they utilize the - ACE_Time_Value it's passed. In addition, revised the - implementation of peek_dequeue_head() so that it uses the new - wait_not_empty_cond() implementation. Thanks to Tom Venturella - for reporting this. - -Fri Feb 27 15:47:15 1998 David L. Levine - - * ACE-INSTALL.html: added very useful information from - Chris Ryan about build ACE with - NT/Tornado for VxWorks. - - * ace/config-chorus.h: use ACE_NEEDS_READV/WRITEV with GHS as well - as with g++. - - * ace/Basic_Types.{h,i} (ACE_U_LongLong): added a bunch of arithmetic - operators for Carlos :-) The operator *= is _very_ slow, until we - come up with the right way to do it. - - * tests/Time_Value_Test.cpp (test_ace_u_longlong): added some tests - of the new operators. - -Fri Feb 27 13:42:09 1998 Douglas C. Schmidt - - * ace/ACE.cpp (recv_n): Removed the MSG_PEEK flag since it didn't - seem to work correctly. - -Fri Feb 27 11:18:28 1998 Chris Cleeland - - * ace/Log_Msg.cpp: Added three new conversion operators: "%{" - calls inc() to increase the trace_depth, "%}" calls dec() to - decrease the trace_depth, and "%$" is used in place of "\n" to - insert a newline followed by appropriate current indentation. - -Thu Feb 26 21:36:27 1998 Douglas C. Schmidt - - * ACE version 4.4.31, released Thu Feb 26 21:36:27 1998. - -Thu Feb 26 16:48:53 1998 Douglas C. Schmidt - - * ace/OS.h: Added new macros for ACE_FILE_STREAM and - ACE_FILE_CONNECTOR to be consistent with the ACE_SOCK_* stuff, - etc. Thanks to Ganesh Pai for reporting - this. - -Thu Feb 26 11:14:21 1998 David L. Levine - - * ace/Parse_Node.cpp (ACE_Location_Node): reordered initializers - to match declaration order. - -Thu Feb 26 02:42:57 1998 Nanbor Wang - - * ace/Service_Config.cpp (load_static_svcs): Removed explicit - constness cast from the allocation function. - -Wed Feb 25 23:08:44 1998 Douglas C. Schmidt - - * tests/MT_Reactor_Timer_Test.cpp: Made this test compile on - platforms that lack threads and also updated the programming - style to be consistent with other parts of ACE. - - * tests/Priority_Task_Test.cpp: Made this test compile on - platforms that lack threads. - - * ace/Svc_Conf.h: Fixed the prototype for - ace_create_service_type() to reflect the elimination of "const - void *". - - * ace/Parse_Node: Eliminated more uses of "const void *" and - changed them to plain ol' "void *". - - * ace/Service_Types.cpp (fini): Changed the "const void *" to be - simply "void *" since it didn't seem to make any sense they way - it was! Thanks to Stephen Coy for - insisting on this... - - * ace/config-sunos5.*.h: Moved the ACE_HAS_REENTRANT_FUNCTIONS - into the section of #defines that should be commented out if - we're not building a multi-threaded library. - - * ace/Service_Config.cpp (open): Tightened up the comparison of - the key with the ACE_DEFAULT_LOGGER_KEY to use string equality - rather than pointer equality. Thanks to Stephen Coy - for reporting this. - -Wed Feb 25 10:50:17 1998 David L. Levine - - * include/makeinclude/platform_osf1_4.0.GNU: added suppression of - "no corresponding delete" warning, until that is fixed in libTAO. - Added -lm to LIBS for MT_Cubit client. - - * include/makeinclude/platform_chorus_ghs.GNU: we can link now. - - * ACE-INSTALL.html: added information on Linux v. 2.0.x - getsockname () bug. - -Tue Feb 24 15:07:50 1998 Nanbor Wang - - * tests/test.{mdp,mak}: Added Env_Value_Test and OrdMultiSet_Test - into the workspace. - - Removed all odbc libraries from all projects. We don't really - need them to run ACE. Thanks to gonzo@ing.puc.cl (Gonzalo - A. Diethelm) for pointing this out. - -Tue Feb 24 07:14:16 1998 Douglas C. Schmidt - - * ace/Asynch_Acceptor.cpp (handle_accept): Update the - event_handler's proactor pointer once it is accepted. Thanks to - Jason Katz for reporting this. - - * apps/Gateway/Gateway/Event.h (class Subscription): Moved the - htonl of total_consumers_ to *after* the loop that uses it! - Thanks to Jorn Jensen for reporting this. - -Tue Feb 24 05:08:31 1998 Nanbor Wang - - * ace/Asynch_Acceptor.i: Filled in some missing keywords. - - * ace/Log_Record.h (ACE_Log_Record): Hacked it to work for CE. - Undefined the ostream version of print (). I'm planning to drop - iostream support on WinCE. (Then, I don't have to write my - own. ;-) - - * ace/ACE.{h,i} (timestamp, format_hexdump): Removed UNICODE_ONLY version. - Changed to use ASYS_TCHAR to differentiate this condition. - - * ace/OS.h (ACE_OS): Undefined shm_{open,unlink} if - ACE_HAS_MOSTLY_UNICODE_APIS. - - * ace/OS.cpp (ctime,ctime_r): Added CE implementation. - - * ace/streams.h: Added /**/ between #include and <..> in several - places. - - * ace/*: Changed ACE_HAS_UNICODE_ONLY to - ACE_HAS_MOSTLY_UNICODE_APIS. - -Mon Feb 23 19:41:53 1998 Douglas C. Schmidt - - * ace/Asynch_Acceptor.i (bytes_to_read): Added an inline accessor - for the bytes_to_read_ field. Thanks to Jason Katz - for suggesting this. - -Mon Feb 23 12:26:06 1998 David L. Levine - - * ace/OS.cpp (sched_params): removed ACE_ADAPT_RETVAL from PTHREADS - ::sched_setscheduler () call, because it returns the old scheduling - policy, not 0, on success. - - * ace/config-osf1-4.0.h: removed ACE_HAS_EXCEPTIONS because that is - enabled by platform_osf1_4.0{,_rcc}.GNU. - - * include/makeinclude/platform_osf1_4.0.GNU: added suppression of - warning 835 because /usr/include/cxx/memory, line 505, triggers - a warning about an unreferenced parameter. - - * include/makeinclude/platform_osf1_4.0{,_rcc}.GNU: added - "exceptions = 1" so that ACE exception handling can be - disabled on the make command line. - -Mon Feb 23 11:27:10 1998 David L. Levine - - * ACE version 4.4.30, released Mon Feb 23 11:27:10 1998. - -Mon Feb 23 11:11:18 1998 Nanbor Wang - - * ace/Process.h: Define ACE_Process_Options::NO_EXEC as 0 on - Win32. It has no effect on NT anyway. - -Sun Feb 22 21:37:43 1998 David L. Levine - - * include/makeinclude/platform_vxworks5.x_g++.GNU: updated - comments to reflect that WIND_BASE and WIND_HOST_TYPE - environment variables must be set. Thanks to Nanbor for - reporting that. Also, set CROSS-COMPILE flag. - - * include/makeinclude/rules.lib.GNU: updated VOBJS so that it - will build the fancy new TAO/orbsvcs hierarchy. - - * include/makeinclude/platform_{chorus*,lynxos,vxworks5.x_g*}.GNU: - set CROSS-COMPILE flag. It's only used by TAO at this point. - - * ace/Svc_Conf_y.cpp: updated based on new Svc_Conf.y. - - * etc/Svc_Conf_y.cpp.diff: regenerated for latest Svc_Conf_y.cpp. - - * ACE-INSTALL.html,include/makeinclude/platform_lynxos.GNU: moved - LynxOS installation info from its platform file to ACE-INSTALL.html. - -Sun Feb 22 21:26:19 1998 James CE Johnson - - * tests/IOStream_Test.cpp (server): break out of while loop if - read from client_handler fails. - -Sun Feb 22 13:06:20 1998 Douglas C. Schmidt - - * ace/Asynch_Acceptor.h (class ACE_Asynch_Acceptor): Made the - accept method virtual so that users can override it and do - things like enforce limits on the maximum number of simultaneous - connections. Thanks to Jason Katz for - suggesting this. - -Sun Feb 22 13:22:30 1998 Nanbor Wang - - * ace/OS.h: Moved definition of ACE_MAP_{PRIVATE,SHARED,FIXED} - down to where every platform can see. - -Sun Feb 22 13:06:20 1998 Douglas C. Schmidt - - * ace/Svc_Conf.y: Fixed a couple of places where we were - potentially dereferencing NULL pointers when services failed to - load. Thanks to Eric C. Newton for reporting - this. - -Sat Feb 21 12:44:51 1998 David L. Levine - - * ACE version 4.4.29, released Sat Feb 21 12:44:51 1998. - -Sat Feb 21 11:53:45 1998 Nanbor Wang - - * ace/Hash_Map_Manager.cpp (close_i): Remember to reset the - current size to 0 after deallocating all entries in the map. - Thanks to Alex for noticing this. - -Fri Feb 20 06:36:04 1998 David L. Levine - - * ace/Timer_Queue_Adapters (activate): added thread_names argument. - - * ace/OS.{h,i} (cond_timedwait): fixed on LynxOS (DCE_DRAFT4_THREADS), - where pthread_cond_timedwait () expects a relative instead of - absolute time. - - * tests/Buffer_Stream_Test (Consumer::svc): removed thr_yield for - LynxOS, now that ACE_OS::cond_timedwait () is fixed. - - * ace/OS.i (mmap): use ACE_DEFAULT_FILE_PERMS on LynxOS for the - shared memory object. - - * ace/Mem_Map.* (unmap): on LynxOS, write back the shared object to - the plain file, if the mmap () protection included PROT_WRITE. - - * ace/README: added ACE_HAS_BOOL, which can be used by TAO. - -Thu Feb 19 17:59:53 1998 Nanbor Wang - - * apps/JAWS/clients/Caching/*: Reworked and cleaned up these files a - bit. Added a test_URL.cpp file. Notice that these file will - finally be moved to other directory. - -Thu Feb 19 15:52:50 1998 Stanley D Leeson - - * ace/Task.{h,cpp} (activate): added optional thread_names array - argument. - -Thu Feb 19 12:55:00 1998 Nanbor Wang - - * ace/OS.h: Added /**/ between #include and '<', Thanks to - gonzo@ing.puc.cl (Gonzalo A. Diethelm) for providing the - patches. - -Thu Feb 19 11:18:08 1998 David L. Levine - - * ace/OS.h: added ACE_MAP_{PRIVATE,SHARED,FIXED}, and - ACE_OS::shm_{open,unlink}. - - * ace/OS.i: added ACE_OS::shm_{open,unlink}, and mmap support on - LynxOS. - - * ace/Mem_Map.*,Shared_Memory_MM.h,Filecache.cpp: default share - value to ACE_MAP_PRIVATE instead of MAP_PRIVATE, to allow easy - overriding in config files. - - * ace/config-lynxos.h: added ACE_HAS_SHM_OPEN, and map - ACE_MAP_PRIVATE to ACE_MAP_SHARED because MAP_PRIVATE is - not supported on LynxOS 2.5.0. - - * tests/Mem_Map_Test.cpp: replace file_size with line_length because - that's more accurate. - - * tests/SOCK_Connector_Test.cpp: use ACE_DEFAULT_SERVER_HOST on - LynxOS, and removed #include of sys/utsname.h because it's in OS.h. - - * include/makeinclude/platform_lynxos.GNU: added LYNXOS so that - other Makefiles can easily know if where building for LynxOS. - - * ace/ACE.cpp (recv_n): commented out the MSG_PEEK flag check because - it caused IOStream_Test to not terminate. - - * ace/Env_Value_T.{h,i}: moved ACE_Convert specializations from .i - file to .h file, because the resulted in multiple instantiations - with ACE_INLINE disabled, and missing specializations without - ACE_HAS_TEMPLATES_REQUIRE_SOURCE and inlining enabled. - - * tests/TSS_Test.cpp: weakened to work with LynxOS. It has a very - limited number of keys, maybe 16, and can't free them. And, the - test always core dumps if we try to request more keys than it has - available. - - * tests/run_tests.sh: disabled some tests on LynxOS. - -Thu Feb 19 10:41:05 1998 Douglas C. Schmidt - - * ace/SOCK.cpp (open): It appears that we don't need to do - SO_REUSEADDR if protocol_family != PF_UNIX. Thanks to Chuck - Gehr for reporting this. - -Wed Feb 18 22:34:40 1998 Nanbor Wang - - * examples/Reactor/Dgram/Dgram.dsw: - * examples/Reactor/Dgram/Dgram.dsp: - * examples/Reactor/Dgram/CODgram.dsp: Newly added files for NT. - - * examples/Reactor/Dgram/Dgram.cpp: - * examples/Reactor/Dgram/CODgram.cpp: Made them runnable on NT. - - * ace/Process.h (ACE_Process_Options): Changed the definition of - ACE_Process_Options::NO_EXEC to 0 for Win32 because it doesn't - mean anything on NT (you must exec a new program on NT, no fork - syntax available.) With this, we can simulate the fork effect - more or less (still not portable thou. See - examples/Reactor/Dgram/ for some examples.) - -Wed Feb 18 16:07:14 1998 Douglas C. Schmidt - - * netsvcs/lib/Log_Message_Receiver.cpp (log_output): There was a - problem where "outputfile" can be NULL, which causes problems - when it is dereferenced. Thanks to Stephen Coy - for reporting this. - - * ace/ACE.cpp (ldfind): modified the code to allow it to - consistently return a status indicating whether or not a - potential shared library file was found. Thanks to Patrick - J. McNerthney for reporting this. - -Wed Feb 18 15:30:48 1998 Carlos O'Ryan - - * include/makeinclude/rules.lib.GNU: - Now we can create libraries with some files in - subdirectories. Though the Makefile still needs to set VPATH. - -Wed Feb 18 12:22:48 1998 David L. Levine - - * tests/Buffer_Stream_Test.cpp (Consumer::svc): added a - thr_yield so that the test magically works on LynxOS. - ACE_OS::cond_timedwait is busted on LynxOS, we're investigating it. - -Wed Feb 18 11:53:00 1998 Carlos O'Ryan - - * bin/auto_compile: - Added netsvcs to auto_compile list. - -Tue Feb 17 18:27:15 1998 Douglas C. Schmidt - - * ACE version 4.4.28, released Tue Feb 17 18:27:15 1998. - -Tue Feb 17 17:59:32 1998 Nanbor Wang - - * examples/Reactor/Multicast/Multicast.dsw: - * examples/Reactor/Multicast/client.dsp: - * examples/reactor/multicast/server.dsp: New project files. - -Tue Feb 17 15:53:41 1998 Douglas C. Schmidt - - * ace/ACE.cpp (recv_n): Added a check to drop out if the MSG_PEEK - flag is set! Thanks to Keith Brown for - reporting this. - -Tue Feb 17 12:56:24 1998 Chris Cleeland - - * include/makeinclude/wrapper_macros.GNU: Broke the "purify" - command out of PRELINK into its own variable: PURELINK. This was - done to quiet purify when building shared libraries. It wasn't - possible simply to remove the PRELINK reference from SOLINK.cc - because PRELINK is also used for specifying quantify. - - Also added two new variables: PURE_CACHE_DIR and - PURE_CACHE_BASE_DIR. PURE_CACHE_DIR is the value of the - purify/quantify '-cache-dir=' option, and PURE_CACHE_BASE_DIR is - used as the base directory to build a user/compiler-specific cache - directory. In general, you probably want to use them like this: - "make PURE_CACHE_BASE_DIR=~/mypurecache", which will end up - creating the directory ~/mypurecache--. - -Tue Feb 17 09:23:05 1998 David L. Levine - - * ace/OS.h: there were two SIGCHLD #defines, if it was not - already #defined. I changed the second one to be SIGCLD instead. - - * ace/config-linux-common.h: removed ACE_LACKS_TCP_H on alpha because - it's not necessary with glibc-2.0.6. - -Tue Feb 17 08:41:06 1998 Douglas C. Schmidt - - * ace/OS.h (ACE_PROPER_SINGLETON_INSTANTIATION): Changed spelling - of SINGLETONE to SINGLETON. Thanks to Mark Maris - for reporting this. - -Tue Feb 17 07:41:32 1998 Douglas C. Schmidt - - * ACE version 4.4.27, released Tue Feb 17 07:41:32 1998. - -Tue Feb 17 03:32:30 1998 Nanbor Wang - - * ace/ACE.*: Changes for Windows CE just keeps going and going and - going... All following functions are member functions of class - ACE. - - This member funcion has wchar version _only_ when - ACE_HAS_UNICODE_ONLY is defined: - - timestamp - - I've added wchar version of the following member functions: - - strecpy - strsplit_r - strrepl - basename - execname - format_hexdump - - These functions are not defined on CE because they make no sense - on CE. - - strenvdup - daemonize - - There is no stdin defined on CE. Before we implement a stdin - for CE, these functions don't make any sense. - - read_adapter - register_stdin_handler - remove_stdin_handler - - Changing these functions to UNICODE will need to change the - svc.conf parser. Therefore, I'll leave them to a later point. - - ldopen - ldfind - - * ace/README: Added a new directive ACE_HAS_UNICODE_ONLY which - indicates that most APIs must use wchar instead of char. (Note - that on WinCE, only WinSock functions use the traditional char - interfaces. Most other functions only support wchar - interfaces, include str* functions.) - -Mon Feb 16 14:57:26 1998 David L. Levine - - * tests/Priority_Task_Test.cpp (open): fallback to minimum - ACE_SCHED_OTHER priority instead of 0. - - * tests/Priority_Task_Test.cpp (open): suppress warning message - about retrying task activation with fallback priority unless -d - option is specified. - - * ace/High_Res_Timer.cpp: initialize global_scale_factor_ to 1 if - ACE_HAS_{,AIX_}HI_RES_TIMER and ACE_WIN32 are not defined. - Thanks to Robert Olson for reporting a - problem with bad hires time values on Irix. - -Mon Feb 16 10:51:28 1998 Oliver Kellogg - - * include/makeinclude/platform_osf1_4.0_rcc.GNU: added this - new platform file for Rational rcc (2.4.1) on DU 4.0. - - * ace/config-osf1-4.0.h: added ACE_LACKS_SIGNED_CHAR to - RATIONAL section. - - * ace/OS.h: added __rational__ to list of users of long - ACE_UNUSED_ARG. - - * ace/OS.i (gethostbyname_r): added some ACE_UNUSED_ARGs for - Digital Unix. - -Sun Feb 15 16:32:52 1998 Nanbor Wang - - * netsvcs/clients/Naming/Client/svc.conf: Removed "-s" flag, which - set the database name for local namespce. This was causing - grief if users forgot to set this environment variable. Thanks - to Johannes Gutleber for reporting - this. - -Sun Feb 15 15:55:47 1998 Darrell Brunsch - - * ace/Timer_Hash_T.{cpp,h}: Timer Hash wasn't keeping the earliest - node pointer up to date with cancels. - -Sat Feb 14 21:12:52 1998 Douglas C. Schmidt - - * ace/Synch_T.h (class ACE_Guard): this->acquire() already sets - the owner, so we don't need to do it in the constructor. - -Sat Feb 14 20:57:59 1998 Nanbor Wang - - * netsvcs/lib/Log_Message_Receiver.{h,cpp} (log_output): Added this to - all receiver classes. It allows writing messages to a user - specified ostream. - - * netsvcs/lib/Server_Logging_Handler_T.cpp - (handle_logging_record): * netsvcs/lib/Client_Logging_Handler.cpp - (send): Use the above change to avoid missing data on NT. Thanks - to Greg White for providing the fix. - -Sat Feb 14 18:34:37 1998 Darrell Brunsch - - * ace/Timer_{Wheel,Hash}_T.cpp: Fixed a bug with earliest time - pointers not being set correctly. Thanks to Mark Evans - for reporting this. - - * tests/Timer_Queue_Test.cpp: Added a quick test to check to - make sure the earliest time is reported correctly. - -Sat Feb 14 18:28:19 1998 Douglas C. Schmidt - - * ace/SOCK_Dgram_Mcast.cpp (subscribe): Fixed a problem with the - ACE_SOCK_Dgram_Mcast subscription method. Originally, each time - the ACE_SOCK_Dgram_Mcast subscribe() method was invoked, it - created a new socket, did appropriate setsockopt calls - (e.g. SO_USEPORT), did a bind() to that socket, and then did the - setsockopt call that actually joins the mcast group. The - problem with this was that is wasn't possible to a single socket - to subscribe to more than one multicast group. Multiple calls - to ACE_SOCK_Dgram_Mcast.subscribe() didn't work because the new - socket descriptor that was issued didn't listen to the old - multicast group(s). The fix was to change the subscribe() - method to only create, set up, and bind the socket if - get_handle() == ACE_INVALID_HANDLE. Thanks to Dave Meyer - for reporting this. - -Sat Feb 14 03:29:50 1998 Sergio Flores - - * ace/ACE.cpp (set_handle_limit): Fixed a couple of bugs - setting the maximum number of file descriptors. If we use - setrlimit, we should first get the hard limit before calling - it, or we get an EINVAL for trying to set a hard limit of 0 - and a soft limit greater than that. Also, for -1 the call - was not setting the limit to the maximum allowable. - - * ace/OS.h (ACE_MAX_DGRAM_SIZE): Moved the #define - ACE_MAX_DGRAM_SIZE from the PSOS specific part of OS.h. - -Fri Feb 13 19:25:55 1998 Douglas C. Schmidt - - * ace/Log_Record.cpp (ACE_Log_Record): Changed the "set" method - for priority() so that it doesn't convert the priority into the - base two logarithm of the parameter. Instead, this is handled - by the "get" method of priority(). Thanks to Eric C. Newton - for reporting this. - - * ace/OS.h: Added a new #define called ACE_MAX_DGRAM_SIZE, which - is set to 8k by default. Naturally, this can be overwritten in - platform-specific config.h files. - -Fri Feb 13 10:40:36 1998 David L. Levine - - * ACE version 4.4.26, released Fri Feb 13 10:40:36 1998. - -Thu Feb 12 14:33:12 1998 Nanbor Wang - - * ace/OS.i (mktemp): I missed this one in Win32 section. - -Fri Feb 13 09:04:13 1998 Oliver Kellogg - - * ace/config-osf1-4.0.h: added Rational RCC support. - -Wed Feb 11 09:50:27 1998 Steve Huston - - * ace/config-dgux-4.x-ghs.h - * include/makeinclude/platform_dgux4_ghs.GNU: Configs for ACE on - DG/UX 4 using Green Hills Multi C++ compiler, and draft 10 pthreads. - - * ace/README - * ace/OS.h: New macro ACE_NEEDS_SCHED_H for platforms which needs to - #include to get complete defs for thread scheduling. - - * ace/OS.cpp: Added a DG/UX-specific pthread_wait function for use with - draft 10 pthreads on DG/UX. - -Wed Feb 11 09:32:10 1998 David L. Levine - - * ACE-INSTALL.html: updated DU CXX and Linux info. - - * ace/Makefile: moved INSTALL= to before include of rules.local.GNU, - so that the (unused) install command doesn't show up with make -n. - - * include/makeinclude/platform_chorus_ghs.GNU: put posix -I before - stdc -I. - - * ace/OS.h: removed include of stdfileio.h on ghs/Chorus. It's not - necessary with the above change to platform_chorus_ghs.GNU. - -Wed Feb 11 09:24:51 1998 David L. Levine - - * ACE version 4.4.25, released Wed Feb 11 09:24:51 1998. - -Tue Feb 10 14:58:00 1998 Chris Gill - - * ace/Containers.cpp : removed unreachable break; - -Tue Feb 10 09:34:27 1998 David L. Levine - - * ace/INET_Addr.cpp (get_host_name): moved declaration of local - "hentry" so that it's not seen on Chorus. - - * ace/OS.i (getprotoby{name,number}{,_r}): not supported on Chorus. - - * ace/Makefile: build Select_Reactor.o without -g on ghs/Chorus, - because it causes GreenHills 1.8.8 to core dump. - - * ace/config-chorus.h: adjusted to work with GreenHills 1.8.8. - - * include/makeinclude/platform_chorus_ghs.GNU: use Gnu ar instead - of ax, because we don't have a license for ax. - - * Timer_Queue_Adapters.{h,i} (activate): added stack and stack_size - parameters to match declaration in ACE_Task_Base. - - * include/platform_linux{,_lxpthread}.GNU: removed - -fno-strict-prototypes from CFLAGS because it is no longer needed. - - * include/makeinclude/platform_sunos5_g++.GNU: added -lposix4, to - be consistent with the Sun C++ platform file. Some of the TAO - tests need it. - -Mon Feb 09 18:10:37 1998 Chris Gill - - * ace/Containers.{cpp,h} : made next () a const member function in - ACE_Ordered_MultiSet_Iterator - -Mon Feb 09 14:52:25 1998 David L. Levine - - * include/makeinclude/platform_chorus_ghs.GNU: added include path. - - * ace/config-chorus.h: with GreenHills, removed - ACE_HAS_WCHAR_TYPEDEFS_CHAR and ACE_LACKS_UNISTD_H. We'll - see if --multibyte_chars --wchar_t_keyword work. - - * ace/OS.h: added #include with GreenHills/Chorus. - - * netsvcs/clients/Naming/Client/Client_Test.cpp (handle_input): - get input from stdin, not ACE_STDIN. Thanks to Jack Erickson - for reporting this. - -Sun Feb 8 15:33:33 1998 Nanbor Wang - - * include/makeinclude/wrapper_macros.GNU: - * include/makeinclude/rules.lib.GNU: - * include/makeinclude/rules.local.GNU: Rename - ACE_LDSO_Major_Minor_Version_Number to ACE_LDSO_Version_Number. - - * include/makeinclude/rules.local.GNU: Put back checking of - current directory into library installation rules but with an - extra check for null ACE_LDSO_Version_Number. - -Sun Feb 08 12:06:30 1998 David L. Levine - - * ACE-INSTALL.html: added Scott Snyder's egcs 1.0.1 patch, which - allows netsvcs/lib/Server_Logging_Handler.cpp to build on - Linux/RedHat 5.0. - - * include/makeinclude/wrapper_macros.GNU: protected ACE_ROOT... - additions to INCLDIRS and LDFLAGS so they're only added once. - Thanks to James CE Johnson for this addition. - - * ace/config-linux-common.h: added ACE_HAS_TERM_IOCTLS. Thanks - to James CE Johnson for this addition. - - * examples/Naming/test_multiple_contexts.cpp,test_non_existent.cpp, - test_writers.cpp: - replaced uses of cout with ACE_DEBUG. - - * examples/performance-tests/Misc/basic_perf.cpp, - context_switch_time.cpp,preempt.cpp: - divide ACE_hrtime_t by ACE_UINT32, to prevent ambiguity with - ACE_U_LongLong operator / overloading. - -Sun Feb 8 01:45:59 1998 Nanbor Wang - - * include/makeinclude/wrapper_macros.GNU (versioned_so): Added - a new directive to allow automatic installing of so libraries - with version number. This flag is default to 0. Put this line, - - versioned_so = 1 - - in your platform_*.GNU file to enable this feature. - - (ACE_LDSO_Major_Minor_Version_Number): Define the version number - to be appended to versioned so libraries (Notice: it include a - dot at the beginning.) If versioned_so == 0, this macro expand - to nothing. - - * include/makeinclude/rules.lib.GNU (INSTALL): - * include/makeinclude/rules.local.GNU (INSTALL rules): Modified - installation rules to allow installing so libraries with version - numbers. - - * include/makeinclude/platform_netbsd.GNU: - * include/makeinclude/platform_freebsd[_pthread].GNU: Enabled - new versioned_so feature. - -Sat Feb 07 05:51:15 1998 Nanbor Wang - - * ace/Synch_T.cpp (ACE_TSS): Changed to use MessageBox on WinCE. - Because there's no console in WinCE, we can't output warning - messages to stderr. - - * ace/README (ACE_HAS_UNICODE_ONLY): This new directive is used to - removed some char version function definitions because it - doesn't make too much sense to support these function when most, - if not all, strings in the system are wchar strings. - - * ace/OS.{h,i} (ACE_DEFAULT_LOGGER_KEY): Added wchar definition if - we are using UNICODE. - (ACE_SHE_{TRY,FINALLY,EXCEPT}): WinCE doesn't support Win32 - structual exception, so these macros should be defined as on - UNIX platforms. - (mktime): Removed this function from WinCE. Don't even think - about using them. - (ACE_HAS_UNICODE_ONLY): If this directive is defined, the char - version of the following functions are not defined in ACE_OS: - - chdir - mkdir - mkfifo - mktemp - getcwd - unlink - tempnam - - Some of them has wchar version. - - (chdir,mkdir,getcwd): Added wchar version. Unfortunately, getcwd - still doesn't work for WinCE. - - * ace/OS.cpp (mktemp): Added wchar version of this function. - Other changes added. Please refer to the entry above. If - platform/compiler supports this function, then both char and - wchar versions are defined as inline functions in OS.i. - (socket_{init,fini}): Removed leading :: from WSAStartup and - WSACleanup because these two are implemented as macros on - WinCE. Changed to use MessageBox instead of cerr for outputing - error messages. - - * ace/config-win32-common.h: Don't defined ACE_HAD_P_READ_WRITE on - WinCE. - - * ace/config-WinCE.h: Defined directive ACE_HAS_UNICODE_ONLY. - - * ace/ace_dll.dsp: Adjusted CE project settings. - -Fri Feb 06 15:28:11 1998 David L. Levine - - * ace/config-sunos5.5-sunc++-4.x.h: disable explicit template - instantiations with CC 4.2, because it still does implicit - instantiation. We need to figure out how to disable that. - Then, we can enable -instances=global to get the real - benefits of explicit template instantiation with CC. - - * tests/Barrier_Test.cpp: updated a comment re. the VxWorks - task names test. - -Fri Feb 06 10:42:22 1998 David L. Levine - - * ACE version 4.4.24, released Fri Feb 06 10:42:22 1998. - -Fri Feb 06 10:30:00 1998 Chris Gill - - * ace/Containers.cpp: fixed error in - ACE_Doubly_Linked_List_Iterator::first (void); - -Fri Feb 06 08:27:32 1998 Chris Gill - - * ace/Containers.{cpp,h} : added "first" methods to all container - iterators: each positions the iterator at the first element - in the container and returns 1, or if the container is empty - positions the iterator at a well defined "null" position for - that container and returns 0: - - template int - ACE_Unbounded_Set_Iterator::first (void); - - template int - ACE_Unbounded_Queue_Iterator::first (void); - - template int - ACE_Unbounded_Stack_Iterator::first (void); - - template int - ACE_Bounded_Set_Iterator::first (void); - - template int - ACE_Fixed_Set_Iterator::first (void); - - template int - ACE_Doubly_Linked_List_Iterator::first (void); - -Wed Feb 04 22:23:24 1998 David L. Levine - - * include/makeinclude/platform_linux*.GNU: commented out or - removed SUPPRESS_DASH_G, because it's not needed with hacked - gas on Linux/Alpha. - - * ACE-INSTALL.html: added some comments on Linux/RedHat 5.0, - for both Intel and Alpha. Thanks to James CE Johnson - , Torbjorn Lindgren , - and Oleg Krivosheev for this information. - - * ace/config-linux-common.h: replaced #define of ACE_HAS_EXCEPTIONS - with a compile time check for egcs, which supports exceptions. - Exceptions can now be enabled on the make command line. Also, - moved some comments on Linux system configuration up to - ACE-INSTALL.html. - - * ace/config-linux-common.h,config-g++-common.h: moved - ACE_HAS_EXCEPTIONS #define from config-linux-common.h to - config-g++-common.h. - - * include/makeinclude/wrapper_macros.GNU: disabled exception handling, - the default, on g++ >= 2.8.0. On both Linux/alpha and - Solaris 2.5.1/sparc, exception handling increased the size of - libACE.so by about 25 percent. Exception handling can easily - be enabled on the make command line or by editing your - include/makeinclude/platform_macros.GNU. - - * netsvcs/lib/TS_Server_Handler.cpp: instantiate - ACE_Svc_Handler if - ACE_HAS_STREAM_PIPES, not if ACE_HAS_TLI. Thanks to Oliver - Kellogg for reporting this problem. - - * Makefile: made ACE-INSTALL a dependency of release and - cleanrelease so that it is only updated when necessary. - - * ace/OS.{h,i},README (gets): wrapped with !ACE_LACKS_GETS. - - * ace/config-g++-common.h: added ACE_LACKS_GETS for egcs. It - supports ::gets (), but warns about it at link time on Linux. - The Solaris gets () man pages recommends using fgets () instead. - - * netsvcs/clients/Naming/Client/Client_Test.cpp: replaced use of - ACE_OS::gets () with ACE_OS::fgets (). - -Wed Feb 04 11:07:46 1998 Chris Gill - - * ace/Containers.cpp : fixed my "fix" to new_position pointer in - ACE_Ordered_MultiSet::find_from () - now checks the pointer - before assigning something to it. - -Tue Feb 03 15:11:00 1998 Chris Gill - - * ace/Containers.cpp : fixed order of member initialization list - in ACE_DNode ctor, added update of new_position pointer in - ACE_Ordered_MultiSet::find_from () - -Mon Feb 02 21:26:30 1998 David L. Levine - - * tests/Map_Manager_Test.cpp (test_map_manager): print out - item.int_id_ instead of local i so that item gets used (CXX - warned that it wasn't). - - * include/makeinclude/platform_osf1_4.0.GNU: added suppression of - warning 610, nonoverriding_function_decl. - - * ace/config-chorus.h,config-freebsd*.h,,config-hpux-10.x-g++.h, - config-irix{5.3,6.x}-g++.h,config-osf1-4.0.h,config-m88k.h, - config-netbsd.h,config-psosim-g++.h,config-sco-4.2-nothread.h, - config-sco-5.0.0-mit-pthread.h,config-sunos4-g++.h, - config-sunos5.4-g++.h,config-unixware-2.*.h: - migrated to config-g++-common.h. - - * ace/config-sunos5.5-egcs*.h: removed. config-sunos5.5-g++.h - now supports egcs, via config-g++-common.h. - - * ace/config-sco-5.0.0*.h: added RCS keyword string. - - * include/makeinclude/wrapper_macros.GNU: support "exceptions" - make flag on all platform. If enabled, it adds - -DACE_HAS_EXCEPTIONS to CCFLAGS. Not all platforms support - exception handling, of course, and that is noted in the - description of the "exceptions" make flag. - - * include/makeinclude/platform_sunos5_sunc++.GNU, - platform_sunos5.6_sparc_sunc++_4.2.GNU: - removed -DACE_HAS_EXCEPTIONS, because it's now done in - wrapper_macros.GNU. - - * examples/Reactor/Misc/test_event_handler_t.cpp: renamed - ACE_Sig_Handler to ACE_Test_Sig_Handler to avoid collision - with ACE_Sig_Handler in ACE library. - - * tests/Env_Value_Test.cpp (main): print out signed instead of - unsigned values. - -Mon Feb 02 14:40:00 1998 Chris Gill - - * tests/OrdMultiSet_Test.cpp: added explicit template instantiation - for ACE_DNode - - * tests/OrdMultiSet_Test.dsp: new MSVC++ project for the test - - * tests/tests.dsw: added OrdMultiSet_Test.dsp project to workspace - - * tests/run_tests.{bat,sh,psosim,vxworks} : added OrdMultiSet_Test - - * tests/Makefile : added OrdMultiSet_Test - -Mon Feb 02 02:42:30 1998 Nanbor Wang - - * ace/OS.h (ACE_NOTSUP_RETURN): Moved its definition to the end of - this file where __TEXT has already been defined. WinCE needs to - use wchar. - - (struct utsname): Moved this definition after all datatypes are - filled in. Reverted my previous changed on it. - - Win32 only: Added wchar version of ACE_OS::{perror,fprintf, - vsprintf,sprintf}. - - Windows CE only: Undefined some char version function in class - ACE_OS. They are of no use on CE anyway. - - * ace/OS.i (fdopen): Added wchar version of ACE_OS::fdopen, it is - only available on Win32. - - Windows CE only: Added implementation for c-styled file - functions. Type FILE * is mapped to Win32 HANLDE under the hood - and Win32 API's are used to emulate these functions. - - * ace/OS.cpp: Removed some char version functions and added some - wchar functions. - -Sun Feb 01 15:12:49 1998 Chris Gill - - * tests/OrdMultiSet_Test.cpp: added an ACE test for the - ACE_Ordered_MultiSet and ACE_Ordered_MultiSet_Iterator - class templates. - - * ace/Containers.i (ACE_Ordered_MultiSet::is_empty ()): - changed to return 1 rather than cause a SEGV when the - container is in fact empty (the above test discovered the bug). - -1998-02-01 Nanbor Wang - - * ace/OS.h (struct utsname): Separated WCE's definition from - ACE_LACKS_UTSNAME_T bacause VxWorks doesn't have TCHAR type. - -Sun Feb 01 12:09:11 1998 David L. Levine - - * ace/Containers.cpp (ACE_Ordered_MultiSet::insert and find): - expanded ITERATOR type of second argument, because g++ couldn't - deal with it. It can in the class declaration in Containers.h, - so I didn't change that. - - * ace/config-sunos5.5-g++.h,config-lynxos.h,config-vxworks5.x.h: - migrated to config-g++-common.h. - - * tests/run_tests.vxworks: disabled Message_Queue_Test because - it sometimes page faults or hangs the target. - -Fri Jan 30 15:35:30 1998 Chris Gill - - * ace/Containers.{cpp,h,i} : added class templates - ACE_Ordered_MultiSet and ACE_Ordered_MultiSet_Iterator - which respectively implement abstractions for containment - of and iteration over an ordered set that allows multiple - identical instances of a given item. - -Fri Jan 30 02:42:30 1998 Nanbor Wang - - * ace/OS.cpp (uname): Made it comform with Unicode. - - * ace/OS.h (struct utsname): Changed the internal string type to - TCHAR. - - * ace/OS.i (gettimeofday): Added Windows CE implementation. - -Thu Jan 29 21:02:24 1998 David L. Levine - - * ace/config-sunos5.5-g++.h: revert so that ACE_HAS_STRING_CLASS - is #defined, regardless of g++ version. - - * ace/config-g++-common.h,config-gcc-2.7.2.h: replaced - config-gcc-2.7.2.h with config-g++-common.h, which will support - all g++ versions, including egcs. - - * ace/config-linux-common.h,config-sco-5.0.0-{fsu-pthread,nothread}.h: - migrated to config-g++-common.h. - -Thu Jan 29 20:28:30 1998 Douglas C. Schmidt - - * ACE version 4.4.23, released Thu Jan 29 20:28:30 1998. - -Thu Jan 29 16:17:28 1998 Nanbor Wang - - * ace/Log_Msg.cpp (open): Always close down the logger connection - before changing the setting. Added codes to allow resetting - logging endpoint back to STDERR from LOGGER. - - * ace/OS.h (ACE_DEFAULT_LOGGER_KEY): Changed to localhost:10012 - so it can be used in both netsvcs/lib/ and netsvcs/client/. - - * netsvcs/client/Logger/indirect_logger.cpp: Added code to reset - logging endpoint back to stderr. - - * netsvcs/lib/Client_Logging_Handler.cpp - (ACE_Client_Logging_Acceptor): Changed to initialize - logger_key_ with ACE_DEFAULT_LOGGER_KEY. - - * netsvcs/lib/Client_Logging_Handler.h: Removed DEFAULT_LOGGER_KEY - definition. - -Thu Jan 29 12:32:32 1998 Carlos O'Ryan - - * include/makeinclude/platform_irix6.x-sgic++.GNU: - Added support for debugging, somehow the DCCFLAGS were missing. - -Thu Jan 29 10:52:34 1998 David L. Levine - - * ace/config-lynxos.h: added putenv () declaration. - - * include/makeinclude/platform_sunos5_g++.GNU: added comment - about disabling optimization with g++ 2.8.0. - - * ace/config-sunos5.5-g++.h: don't #define ACE_HAS_STRING_CLASS - with g++ 2.8.0. - - * include/makeinclude/platform_sunos5_egcs.GNU: include - the g++ platform file, it works just fine. The net effect - on egcs is these three changes: - - 1) -fno-implicit-templates is included in CPPFLAGS. That - option is necessary with the egcs (egcs-2.90.23 980102 - (egcs-1.0.1 release)) that we use to save _much_ text - space. - - 2) Use -G instead of -shared in SOFLAGS. That way, - libstc++.so, etc., need not be built. - - 3) The compiler is called g++ instead of c++. I don't - think this hurts anything. And Purify knows about g++, - but not g++. - - These (and any other) options can be overridden in - platform_sunos5_egcs.GNU if necessary. See the commented - example there. - - * ace/config-sunos5.5-egcs.h: added - ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION to match - -fno-implicit-templates in the platform_sunos5_egcs.GNU. - - * tests/Env_Value_Test.cpp: updated comment to explain why we - can't use spawn with ACE_HAS_NONSTATIC_OBJECT_MANAGER. We - can, in general, but we can't on VxWorks because it doesn't - have fork (). - -Thu Jan 29 10:32:28 1998 Carlos O'Ryan - - * include/makeinclude/platform_sunos5_sunc++.GNU: - The posix4 library is needed in some TAO examples. - - * ace/Module.h: - * ace/Message_Queue.h: - Workaround HP/C++ compiler bug, it does not support enums inside - templates so we move them into base classes. Thanks to Sundar - T.J for reporting this problem. - -Thu Jan 29 10:14:03 1998 Douglas C. Schmidt - - * ace/FIFO.h: Revised the comment at the beginning of ACE_FIFO to - clearly indicate that it doesn't work portably to Win32. Thanks - to Thomas Hampson for suggesting this. - -Wed Jan 28 15:36:55 1998 Carlos O'Ryan - - * bin/auto_compile: - We can use the top level Makefile on TAO now. - -Wed Jan 28 11:59:41 1998 Nanbor Wang - - * ace/OS.i (isatty): Added conversion from a Win32 HANDLE to a C - file handle. It works correctly now. Thanks to Chuck R. Gehr - for noticing the problem. - -Tue Jan 27 20:32:07 1998 Douglas C. Schmidt - - * ace/Message_Block: Added an accessor to retrieve the reference - count on an ACE_Data_Block. Thanks to Dave Meyer - for contributing this. - -Tue Jan 27 15:09:08 1998 Douglas C. Schmidt - - * ace/OS.i, - * ace/Timer_Queue_Adapters.cpp: - When using ACE_CLEANUP_???_POP macros, it was being called with - argument 1, which should be 0 (don't execute the cleanup). - Thanks to Arturo Montes for reporting - argument 1, which should be 0 (don't execute the cleanup).this. - -Tue Jan 27 14:56:49 1998 David L. Levine - - * ace/Basic_Types.*: more cleanup: got rid of ACE_USES_ACE_U_LONGLONG, - replaced VXWORKS && ghs with ACE_HAS_WCHAR_TYPEDEFS_CHAR, and - factored out some common #defines. Rearranged ACE_SIZEOF_LONG_LONG - and ACE_UINT64 logic so that it works on NT. - -Tue Jan 27 08:28:34 1998 Steve Huston - - * ace/Basic_Types.h: Simplified and changed so that the config.h file - can pre-specify the ACE_SIZEOF_* macros in case the preprocessor - has trouble calculating them. - -Tue Jan 27 06:45:07 1998 David L. Levine - - * examples/IOStream/server/iostream_server.cpp: for egcs, use - ACE_SOCK_IOSTREAM instead of its expansion in the ACE_Svc_Handler - template instantiation. - - * ace/Event_Handler_T.h,examples/Reactor/Misc/test_event_handler_t.cpp: - removed special-case support for ACE_HAS_SIGNFO_T, because ace/OS.h - declares a siginfo_t without it. - - * tests/run_tests.vxworks: enabled Priority_Reactor_Test and - Message_Queue_Test, because they appear to run successfully now. - Most of the time, anyways. Message_Queue_Test occasionally - pages faults; there appears to be a memory management problem. - -Tue Jan 27 02:38:16 1998 Nanbor Wang - - * ace/OS.{i,cpp}: - * ace/config-WinCE.h: More Windows CE insanities. - -Mon Jan 26 13:20:58 1998 David L. Levine - - * include/makeinclude/platform_osf1_4.0_g++.GNU: added $(ACELIB) - to SOFLAGS. Thanks to Oliver Kellogg - for reporting the problem with building shared libraries on - g++/DU 4.0. - - * ace/config-linux-common.h: moved ACE_LACKS_TCP_H so that it is - only seen on alphas (with glibc2). Thanks to Edgar Villanueva - for reporting this. - - * performance-tests/Misc/childbirth_time.cpp (prof_native_thread, - prof_ace_os_thread): changed type of local j to int to avoid - signed/unsigned comparison. - - * tests/Reactors_Test (Test_Task): changed type of member - handled_ from int to size_t to avoid signed/unsigned comparison - in Test_Task::handle_input (). - -Mon Jan 26 11:35:54 1998 Carlos O'Ryan - - * bin/auto_compile: - Added TAO_ROOT to the environment. - -Mon Jan 26 10:28:57 1998 Douglas C. Schmidt - - * ACE version 4.4.22, released Mon Jan 26 10:28:57 1998. - -Mon Jan 26 02:53:10 1998 Nanbor Wang - - * ace/OS.h: Namespace related macros are now ifdef'ed by - ACE_HAS_BROKEN_NAMESPACES instead of ACE_ORBIX_HAS_NAMESPACES. - - * ace/README - * ace/config-win32-common.h: Added a new flag - ACE_HAS_BROKEN_NAMESPACES to deal with MSVC's broken namespace - support. - - * ace/config-win32.h: Re-enable defining ACE_ORBIX_HAS_NAMESPACES - for Win32. - - * ace/config-WinCE.h: Temporary file to hold WinCE specific - configurations. It will probably be merged with - config-win32-common.h in some point. - - * ace/ace_dll.dsp: Added WinCE x86 emulation mode project - definition. - - * ace/OS.{h.i} (ACE_OS): Added Windows CE macros madness. - - * ace/config-win32-common.h: Ifdef'ed out ACE_HAS_SIG_ATOMIC_T for - WinCE. Prevent repeat definition of STRICT. - -Sun Jan 25 17:31:49 1998 Nanbor Wang - - * ace/config-win32.h: Disabled setting ACE_ORBIX_HAS_NAMESPACES by - default on NT. MSVC's namespace support is buggy. - -1998-01-25 Nanbor Wang - - * tests/Conn_Test.cpp: Rearranged explicit template instantiations - order to avoid errors from egcs. Thanks to Gonzo for reporting - the bug. - -Fri Jan 23 12:24:05 1998 Douglas C. Schmidt - - * ace/OS.i (sleep): Fixed a typo where tv_sec was being set rather - than tv_usec. Thanks to Gonzo for pointing this out. - -Fri Jan 23 06:27:51 1998 David L. Levine - - * ace/IOStream.h: use std::string if - ACE_USES_STD_NAMESPACE_FORSTDCPP_LIB IOStream.h. Thanks - to Gonzo for the patch. Also, changed - DEC_CXX to __DECCXX_VER because that's more accurate. - - * tests/Barrier_Test.cpp: specify thread name and stack size - on VxWorks. Thanks to Stan Leeson - for suggesting this. - - * tests/Env_Value_Test.cpp (TEST_THIS): cast val to (type) - before casting to (u_int), to try to avoid DEC CXX compiler - warning about integer overflow. Thanks to Frederic Andres - for reporting this. - - * ace/config-osf1-4.0.h: added ACE_HAS_EXCEPTIONS, etc., with - CXX 6.0. Thanks to Torbjorn Lindgren for - the patch. - - * ace/OS.i (thr_kill): removed ACE_ADAPT_RETVAL because - ::taskNameToID returns the task ID, not success/fail. - Thanks to Richard Keizer for - diagnosing the problem and providing the fix. - - * tests/run_tests.vxworks: enabled Thread_Manager_Test and - Message_Block_Test now that they succeed. Thanks to Richard Keizer - for the ACE_OS::thr_kill fix. - - * ace/OS.cpp (thr_create), ace/Thread_Manager.cpp (kill_thr): - on VxWorks, use strncmp instead of strcmp to check for allocated - thread ID. - -Thu Jan 22 16:34:18 1998 Douglas C. Schmidt - - * examples/Connection/misc/Connection_Handler.cpp (svc): Fixed a - bug in the example where the global Singleton Reactor was being - used rather than the object's Reactor. Thanks to Peter Gross - for reporting this. - -Thu Jan 22 09:04:13 1998 David L. Levine <@cs.wustl.edu> - - * ace/Hash_Map_Manager.cpp (ACE_Hash_Map_Iterator_Base ctor): - added a cast of mm.total_size_ to ssize_t, to try to avoid - a compiler warning. Thanks to Brian Mendel - for reporting this. - - * ace/config-osf1-4.0.h: updated g++ support. Thanks to - Oliver Kellogg for the patch. - - Thanks to Tom Venturella and Dave Mayerhoefer - (!) for requesting the following three changes: - - * ace/Thread_Manager.cpp: added support for a user-supplied - thread (VxWorks task) name. By itself, that means just passing - the ACE_thread_t along to ACE_OS::thr_create (). The tricky - part was then handling the case where the user doesn't supply - a name. It would be cleaner if the ACE_thread_t and ACE_hthread_t - typedefs were swapped on VxWorks, because the ACE_Thread_Manager - keys off of the ACE_thread_t. And in addition to being cleaner, - it would be safer because ACE_thread_t's currently aren't - guaranteed to be unique on VxWorks. - - * ace/OS.cpp (thr_create): on VxWorks only, use the t_id (task - name) and stack_size if supplied. Also added support for setting - the stack, but commented it out because it doesn't seem to work. - - * tests/Conn_Test.cpp: on VxWorks, assign thread (VxWorks task) - names to server and client threads, to test that feature. - - * ace/OS.cpp (spa [VxWorks only]): use ::taskSpawn () instead - of ::sp () so that the task name, ace_main, can be specified. - - * ACE-INSTALL.html: added note about not linked the ACE library - into every VxWorks executable. It should work when running - multiple ACE executables on a target, though I haven't tried it. - - * include/makeinclude/rules.local.GNU: set SOEXT if it was not set, - so that it's always non-null for make depend. - - * ace/OS.h: #define ACE_THR_PRI_FIFO_DEF on all threaded platforms, - if not already defined in OS.h or in the individual platform config - file. It should be used by applications for a default real-time - thread priority. - - * ace/config-chorus.GNU: added GreenHills support. - - * include/makeinclude/platform_chorus_ghs.GNU: added platform file. - -Wed Jan 21 21:37:03 1998 Nanbor Wang - - * ace/Hash_Map_Manager.cpp (close_i): Removed the HPUX_11 - destructor madness by saving the location to be destructed in a - temporary reference instead of calling the destructor from the - array directly. Thanks to Istvan Buki for - providing the patch. - -Wed Jan 21 20:36:43 1998 Chris Cleeland - - * ACE version 4.4.21, released Wed Jan 21 20:36:43 1998. - -Wed Jan 21 10:39:12 1998 David L. Levine - - * ace/Task.cpp (activate): for builds without threads only, - added ACE_UNUSED_ARG of stack and stack_size. - - * ace/High_Res_Timer.cpp: used unsigned constants instead of - signed, to allow resolution of overloaded - ACE_U_LongLong::operator/ (). - -Tue Jan 20 21:15:01 1998 Douglas C. Schmidt - - * ACE version 4.4.20, released Tue Jan 20 21:15:01 1998. - -Tue Jan 20 20:31:27 1998 Carlos O'Ryan - - * tests/test_config.h: - Changed several buffer sizes from BUFSIZ to MAXPATHLEN, they - were used for storing pathnames, so the later is a proper size - for them. - -Tue Jan 20 15:54:44 1998 Darrell Brunsch - - * ace/Timer_Heap_T.cpp: Fixed a bug that was introduced on - Sunday because of the non-use of position 0 (we have to - grow the heap one node early). - - * ace/Timer_Queue_T.{h,cpp}: Added a return_node () method - which is used to return a ACE_Timer_Node back into the - control of the Timer Queue after it leaves via - remove_first (). - -Tue Jan 20 15:52:31 1998 Douglas C. Schmidt - - * ACE version 4.4.19, released Tue Jan 20 15:52:31 1998. - -Tue Jan 20 12:49:05 1998 Nanbor Wang - - * ace/Hash_Map_Manager.cpp (ACE_Hash_Map_Manager): Member table_ - needs to be initialized to prevent deleting invalid memories. - -Tue Jan 20 11:57:24 1998 Carlos O'Ryan - - * bin/auto_compile: - Added several TAO components to the compile list. - The regular expression for make errors was missing several of - them. - -Tue Jan 20 03:36:54 1998 Nanbor Wang - - * ace/Hash_Map_Manager.cpp (open): We should call close_i () to - ensure previously allocated memory gets release before we - allocate new one. - -Mon Jan 19 22:21:34 1998 Nanbor Wang - - * tests/Env_Value_Test.cpp (main): Added test codes for unsigned - short. - - * ace/Env_Value_T.i (ACE_Convert): Added conversion function for - unsigned short. - -Mon Jan 19 15:13:47 1998 Douglas C. Schmidt - - * bin/Makefile: Fixed a problem with the CCFLAGS definition that - was causing circular macro expansion. Thanks to Philippe - O'Reilly for reporting this. - -Sun Jan 18 14:32:42 1998 Darrell Brunsch - - * ace/Timer_Heap_T.cpp: Problems were arising because of the - use of negative numbers in the timer_id array of the timer - heap for the free list. When the 0th index is in the free - list, pointers to it will show up as 0 (because 0 == -0). - This will look the same as a timer_id for the top of the - heap, and if cancel () was attempted on this invalid - timer_id, bad things would happen. To prevent this, index - 0 is now ignored so it doesn't show up in the free list. - -Sun Jan 18 18:12:52 1998 Nanbor Wang - - * examples/Service_Configurator/Misc/*.ds?: Added new project - files for this example. - -Sun Jan 18 17:27:52 1998 Darrell Brunsch - - * ace/Timer_Wheel_T.cpp: Fixed a problem with Timer Wheel's - expire(). The problem occured when the handle_timeout() method - of the event handler used would return a 0. This causes the - Timer Queue to cancel all timers using that event handler. - Because Timer Wheel's expire caches the position of some timers - that will be expired, it was trying to expire timers that were - already cancelled. Now it checks the timer before it expires. - -Sun Jan 18 16:08:36 1998 Douglas C. Schmidt - - * ace/Thread_Manager: Modified the signature to the spawn_n() - method so that it's possible to pass in an array of stack - pointers and stack sizes. Thanks to Thomas Venturella - for requesting this. - - * ace/Task: Modified the signature to the activate() method so - that it's possible to pass in an array of stack pointers and - stack sizes. Thanks to Thomas Venturella - for requesting this. - -Sun Jan 18 15:54:16 1998 Darrell Brunsch - - * ace/Timer_Wheel_T.h: - ace/Timer_Hash_T.h: - ace/Timer_Queue_T.h: - ace/Timer_Wheel_T.cpp: - ace/Timer_Hash_T.cpp: Added pure virtual get_first() method to - Timer_Queue_T. Added implementations to Timer_Wheel and Timer_Hash. - Timer_Heap and Timer_List already had implementations. - -Sat Jan 17 23:40:02 1998 Nanbor Wang - - * netsvcs/VCAUTO.MAK: - * netsvcs/lib/VCAUTO.MAK: Added directory information for easier - debugging. - -Sat Jan 17 16:10:04 1998 Douglas C. Schmidt - - * examples/Service_Configurator/Misc/main.cpp (main): Replaced the - buggy use of ACE_Service_Config daemon; with - ACE_Service_Config::open(). We'll have to fix this properly - some day, but for now this is the best solution. Thanks to - Pawel Roman for reporting this. - -Sat Jan 17 00:42:13 1998 Irfan Pyarali - - * ace/SString.cpp (substring): Fixed bug. count should be - initialized to length and not len_. - -Fri Jan 16 15:52:34 1998 Nanbor Wang - - * ace/IOStream.h (ACE_Streambuf): - * ace/config-win32-common.h: - * ace/iosfwd.h: - * ace/streams.h: Applied IOStream patches from James CE Johnson - . - -Fri Jan 16 01:42:52 1998 Irfan Pyarali - - * ace/OS.h: Changed the definition of ACE_CORBA_* macros so that - on non-Win32 platforms, they will be expand to the nested - classes. Thanks to Jonathan Reis - for reporting this. - - * ace/SString.h: Added the correct export macros. - -Thu Jan 15 15:45:48 1998 Douglas C. Schmidt - - * etc/ACE-guidelines.html: Reformatted this page a bit. - - * ace/Message_Queue.cpp (open): The fix from Slawomir Kuzniar was - incorrect. I reverted the change. - -Thu Jan 15 12:43:23 1998 Nanbor Wang - - * /: Added a bunch of makefiles (*.MAK) for one button - make-and-test on NT. - - * Makefile (FILTER): Added filter to remove VC one button related - makefile from ACE release. - - * ace/ACE_Library.{mdp,mak}: Added Shared_Memory.cpp file into the - project makefile. - -Thu Jan 15 09:12:26 1998 David L. Levine - - * tests/Barrier_Test.cpp,Message_Block_Test.cpp,Priority_Task_Test.cpp, - Reactor_Exceptions_Test.cpp,Reactors_Test.cpp,Thread_Mutex_Test.cpp: - (main): changed some local variables from int to size_t to avoid - signed/unsigned comparison. - - * ace/OS.i,config-linux-common.h,README: aded ACE_HAS_SOCKLEN_T - support for Linux/glibc2, which has a socklen_t type. - - * include/makeinclude/rules.local.GNU (depend.local): produce all 4 - combinations of .obj, .shobj, .o, and .so dependency targets. This - should take care of the problem of not rebuilding when a dependency - has changed, after we regenerate all the Makefiles. - - * include/makeinclude/rules.local.GNU (depend.local): removed the sed - rule that wiped out each Makefile line ending with :. I don't know - why that rule was there. With it, if a Makefile had a target such - as clean:, it got deleted. Not any more. - - * many Makefiles: updated dependences with revised depend.local. - - * bin/g++dep: added lib/g++-include path to gcc -MM invocation, so - that gcc can find all of its headers. (It didn't help to replace - gcc with g++, though I would have expected that to solve the - problem.) - - * ace/Timer_Heap_T.cpp (get_first): fixed ACE_TRACE id string. - - * apps/Gateway/Gateway/Concrete_Connection_Handlers.cpp, - * apps/Gateway/Peer/Peer.cpp (recv): - changed type of HEADER_SIZE to size_t to avoid signed/unsigned - comparison. - -Wed Jan 14 20:41:35 1998 Carlos O'Ryan - - * ace/Signal.i (is_member): - Fixed typo in new cast, the type is sigset_t not sigset. - -Wed Jan 14 20:27:44 1998 - - * ace/OS.h: - The new location for AF_ANY and AF_FILE was in the middle of a - big #if !ACE_WIN32, hence it was not working for NT, I moved it - further down and now NT is happy. - -Wed Jan 14 19:01:59 1998 Douglas C. Schmidt - - * ace/Message_Queue.cpp (open): In Message_Queue::open - deactivated_ flag is being set to 0 instead of - WAS_INACTIVE. This is causing incorrect return value from - first-time call to activate(). Thanks to Slawomir Kuzniar - for reporting this. - - * ace/Signal.i (is_member): Added an ACE_const_cast(). Thanks to - Oleg Krivosheev for reporting this. - -Wed Jan 14 06:45:52 1998 David L. Levine - - * ace/OS.i: Fixed typo in ACE_Time_Value::operator const timeval * - definition. (select's): cast the ACE_Time_Value to a - const timeval * and then to a timeval * so that they will - compile. - - * tests/Time_Value_Test.cpp (test_ace_u_longlong): made divisors of - operator/ tests explicitly unsigned, to avoid overloading problems - now that there are two division operators. - -Tue Jan 13 16:31:48 1998 Douglas C. Schmidt - - * ace/OS.i: Changed the signature of ACE_Time_Value::operator - timeval *() to return operator const timeval *(). Thanks to - Oleg Krivosheev for reporting this. Changed - several other unsafe casts to use the ACE_const_cast() macro. - -Tue Jan 13 13:30:23 1998 David L. Levine - - * ace/Profile_Timer.cpp (elapsed_time): use floating point - arithmetic for real_time calculation, in case delta_t is - less than ACE_ONE_SECOND_IN_NSECS (and for more precision - otherwise). Thanks to Brian Mendel for tripping over this. - - * ace/Basic_Types.{h,i} (ACE_U_LongLong): added - operator/ (const double). - - * ace/OS.h: moved definition of AF_FILE, etc., to _after_ the - #include of sys/socket.h. That way, the #ifndef AF_FILE - protection will work properly on Linux/glib2. Thanks to - Amos Shapira for breaking silence and - reporting this. - -Mon Jan 12 20:19:54 1998 Douglas C. Schmidt - - * ace/SString.i: Replaced all uses of NULL with 0 since NULL - causes problems with some lame C++ compilers. - - * ace/SString.i: Moved one of the inline find() methods down - so that GCC doesn't complain anymore. - - * tests/Reactor_Timer_Test.cpp (main): Changed long i to size_t i - to be consistent. - - * ace/Select_Reactor.h: Updated the explanation of how the - ACE_Select_Reactor_Token works. Thanks to Detlef Becker for - explaining this in great detail. - - * tests/test_config.h: Changed the type of all the consts to - size_t rather than int. This may cause a bit of upheaval at - first since we'll need to fix some other types. But it's the - "Right Thing"[TM] to do. - -Mon Jan 12 18:31:23 1998 Nanbor Wang - - * Start renaming MSVC 4.2 workspace/makefile names. - - * apps/Gateway/Peer/Peer4.{mdp,mak}: - * apps/Gateway/Gateway/Gateway4.{mdp,mak}: Made them in synch with - VC 5.0's status. - -Mon Jan 12 12:30:34 1998 David L. Levine - - * ace/config-linux-common.h: moved - ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES so that it isn't used - with egcs. Thanks to Gonzo for testing this. - - * tests/Service_Config.test: changed type of VARIETIES to u_int to - avoid signed/unsigned comparison in main. Thanks to Gonzo for - reporting this. - - * ace/config-linux-common.h: added ACE_HAS_TEMPLATE_TYPEDEFS and - ACE_HAS_TYPENAME_KEYWORD. Thanks to Oleg Krivosheev - for reporting these. - - * ace/config-vxworks5.x.h: merged the two VxWorks configs (g++ and - ghs) into this new config for easier maintenance. Added - ACE_THR_PRI_FIFO_DEF, set to 6. - - * tests/Reactor_Timer_Test.cpp (main): cast i to u_long to avoid - signed/unsigned comparison. - -Sun Jan 11 23:02:07 1998 Irfan Pyarali - - * tests/SString_Test.cpp (main): Removed the "silly" strings from - the tests. They are annoying and cause memory leaks. - -Sun Jan 11 22:16:28 1998 Nanbor Wang - - * apps/Gateway/Peer/Peer.{h,cpp} (transmit): Changed the function - to return the result of transmission. - (transmit_stdin): Make sure the function returns proper results - of transmission. - -Sun Jan 11 16:18:15 1998 Douglas C. Schmidt - - * ACE version 4.4.18, released Sun Jan 11 16:18:15 1998. - -Sun Jan 11 00:00:26 1998 Douglas C. Schmidt - - * apps/Gateway/Gateway/Gateway.cpp (parse_connection_config_file): - Fixed a typo, == should be =. Thanks to David Levine for - reporting this. - - * apps/Gateway/Peer/Peer.cpp (recv), - apps/Gateway/Gateway/Concrete_Connection_Handlers.cpp (recv): - Added a cast to remove a GCC warning about signed/unsigned - comparisons. Thanks to David Levine for reporting this. - - * ace/Log_Msg.cpp (log): Made a minor change to move where the - message is copied from thread-specific storage into the transfer - buffer. Thanks to Patrick J. McNerthney - for reporting this. - - * apps/Gateway/Peer/Peer: Added new logic to transmit subscription - requests to the Gateway. - - * apps/Gateway/Gateway/Event.h (class Event_Header): Make sure - that we correctly encode/decode the connection_id. - -Sat Jan 10 18:17:06 1998 Douglas C. Schmidt - - * apps/Gateway/Gateway/Event.h: Added the event priority_ field to - the Event_Key. We don't currently use this, but we may some - day. - - * apps/Gateway/Gateway/Concrete_Connection_Handlers.cpp (put): - Changed the forward() method to process() since our new scheme - will need to do more than just forward, e.g., it will need to - handle subscriptions. - - * apps/Gateway/Gateway/Connection_Handler: Made the accessors - const member functions and also added accessors for the - Event_Channel * so this can be set by the - Connection_Handler_Acceptor::accept_svc_handler() method. - - * apps/Gateway/Gateway/Connection_Handler: Added mutators so that - we can set the local and remote addresses outside of the - constructor. - - * apps/Gateway/Gateway/Options: Added a connection_id() accessor - to set/get the connection id. This makes it possible to allow - Peers to connection with the Gateway. - - * apps/Gateway/Gateway/Gateway.cpp (parse_connection_config_file): - Added a sanity check to ensure that the connection ids start at - 1 and increment by 1. - -Sat Jan 10 22:37:37 1998 David L. Levine - - * ace/SString.i (find): changed type of local i to size_t to - avoid signed/unsigned comparison. - -Sat Jan 10 14:57:01 1998 - - * ace/Env_Value_T.h: - The return value for the assignment operator had no template - parameter, ditto for the arguments of the copy constructor and - the already mentioned operator. - -Sat Jan 10 13:20:08 1998 Nanbor Wang - - * tests/Conn_Test.cpp: Moved template instantiation codes around - to avoid warnings. - -Sat Jan 10 01:36:08 1998 Irfan Pyarali - - * ace/SString: Made the following changes to make the ACE string - class look more like the STL string class: - - - Added npos to all classes. - - - Added non-const reference operator[]. - - - Changed operator= and operator+= to return *this. - - - Added STL like find and rfind routines - - - Made the three classes be a similar as possible. - - - Changed the implementation of strstr to use the C library - strstr function. - - - Added constructors from single characters. - - - Made substring a const method. - -Fri Jan 9 19:11:39 1998 Nanbor Wang - - * tests/Map_Manager_Test.cpp (test_hash_map_manager): Added - ACE_UNUSED_ARG to eliminate warnings. - - * ace/Hash_Map_Manager.cpp (rbegin): Added more static cast to - eliminate warning messages. - -Fri Jan 9 11:35:53 1998 Douglas C. Schmidt - - * examples/Service_Configurator/IPC-tests/server/server_test.cpp: - Fixed a syntax error. Thanks to John Mulhern - <9107@MN3.LAWSON.lawson.com> for reporting this. - - * ace/Log_Msg.cpp (log): Changed abort_prog == 0 to abort_prog so - that STDERR would be printed correctly. - - * ACE-categories: Added all the ACE files into the ACE-categories - listing. Thanks to Andres Kruse for motivating this. - - * include/makeinclude/platform_sunos5_egcs.GNU (CXX): Removed - -pipe from CC and CXX. It was already in CCFLAGS. - -Fri Jan 09 11:56:44 1998 Irfan Pyarali - - * ace/config-win32.h (ACE_ORBIX_HAS_NAMESPACES): By default, you - will get the proper namespace usage for Orbix. If you don't - like this, comment out the #define ACE_ORBIX_HAS_NAMESPACES line - or #undef ACE_ORBIX_HAS_NAMESPACES in your config.h file after - including this config-win32.h. - -Fri Jan 09 07:04:47 1998 David L. Levine - - * include/makeinclude/platform_sunos5_g++.GNU: removed - -pipe from CC and CXX. It was already in CCFLAGS. - - * include/makeinclude/platform_vxworks5.x_g++.GNU: added - target-dependent support for symbol table extractor, and - disabled symbol table extraction (POSTLINK) by default. - Thanks to Keith Nicewarner for - reporting problems with this on PPC604 targets. - - * ace/config-linux-common.h: added ACE_HAS_STDCPP_STL_INCLUDES - and removed ACE_LACKS_ACE_IOSTREAM. Thanks to James CE Johnson - for reporting these. - - * tests/run_tests.vxworks: added Env_Value_Test. - -Fri Jan 09 00:14:20 1998 Nanbor Wang - - * apps/Gateway/Gateway/Connection_Handler_Acceptor.cpp: - * apps/Gateway/Gateway/Config_Files.cpp: Defined - ACE_BUILD_SVC_DLL flag. All declarations of an exported class - must be declared with the same exporting flag. - - * apps/Gateway/Peer/Options.h: Updated the path of include file - Event.h. - -Thu Jan 08 22:11:57 1998 Nanbor Wang - - * ace/Env_Value_T.i (ACE_Convert): Added static cast for int and - short conversion funcions. - -Thu Jan 08 21:37:30 1998 Douglas C. Schmidt - - * ACE version 4.4.17, released Thu Jan 08 21:37:30 1998. - -Thu Jan 8 19:50:43 1998 Douglas C. Schmidt - - * ace/Task: Added a virtual destructor for ~ACE_Task_Base. Thanks - to Oleg Krivosheev for suggesting this. - - * ace: Added a new config-sunos5.5-egcs.h for the EGCS compiler. - Thanks to Oleg Krivosheev for contributing - this. - - * include/makeinclude: Added a new platform macros file for the - EGCS compiler on Solaris 2.x. Thanks to Oleg Krivosheev - for contributing this. - - * include/makeinclude/platform_sunos5_g++.GNU (CXX): Added the - -pipe flag. - - * man: Updated all the manual pages. - - * ace/Log_Msg: Added changes to allow the logging of custom built - log records. The main reason for these changes is to allow code - to handle the logging of out of memory conditions without - allocating any additional memory. Thanks to Patrick - J. McNerthney for this feature. - - * ace/Log_Msg: Added a new method called log_priority_enabled(), - which returns true if the priority is enabled (gee, is *that* - what it does? ;-)). Thanks to Patrick J. McNerthney - for this feature. - - * examples/Service_Configurator/IPC-tests/server/server_test.cpp - (main): Revised the driver program so that it doesn't create an - explicit ACE_Service_Config object. Thanks to John Mulhern - <9107@MN3.LAWSON.lawson.com> for reporting this. - - * apps/Gateway/{Gateway,Peer}/Options.cpp: Oops, ACE_BUILD_DLL - should be ACE_BUILD_SVC_DLL, yikes! Thanks to Jeff Hellzen - for reporting this. - - * apps/Gateway/{Peer,Gateway}/Options.{h,cpp}: Added a missing - #define ACE_BUILD_DLL and a missing ACE_Svc_Export. Thanks to - Jeff Hellzen for reporting this. - - * ace/Select_Reactor.cpp (suspend_i): The clr_bit call was - mistakenly made on the write mask, rather than the read mask. - Thanks to Billy Quinn for reporting this. - -Thu Jan 08 16:02:33 1998 Nanbor Wang - - * ace/Hash_Map_Manager.{h,cpp}: Added STL-styled iterator - functions. - - * tests/Map_Manager_Test.cpp: - * tests/Hash_Map_Manager_Test.cpp: - * tests/Conn_Test.cpp: - * ace/Local_Name_Space.cpp: - * ace/Filecache.cpp: Added missing template instantiation codes. - -Thu Jan 08 11:05:15 1998 - - * ace/ace_dll.dsp: - * ace/ace_lib.dsp: - Added the new Shared_Memory.cpp file to the project. - -Wed Jan 07 20:40:45 1998 David L. Levine - - * ace/OS.h: protect #define of AF_FILE, because Linux/RedHat 5.0 - #defines it in /usr/include/socketbits.h. Thanks to James CE - Johnson for reporting this. - - * tests/test_config.h (set_output): "if (! test_dir)" instead of - "if (test_dir)" so the output filename ends up non-null. - - * ace/Shared_Memory.{h,cpp},Makefile (~ACE_Shared_Memory): made - virtual and non-line. Added file Shared_Memory.cpp to contain - the definition. - -Wed Jan 07 17:59:57 1998 Nanbor Wang - - * ace/Free_List.i (add): Only delete freeed item when we hit the - high water mark, not the other way around. Thanks to Stuart - Myles for pointing this out. - -Wed Jan 7 17:46:09 1998 James C Hu - - * examples/Timer_Queue/Thread_Timer_Queue_Test.h: - * examples/Timer_Queue/Thread_Timer_Queue_Test.cpp: - * examples/Timer_Queue/Reactor_Timer_Queue_Test.h: - * examples/Timer_Queue/Reactor_Timer_Queue_Test.cpp: - * examples/Timer_Queue/Driver.h: - * examples/Timer_Queue/Driver.cpp: - Added virtual destructors to classes that needed them. - -Wed Jan 7 16:28:16 1998 Douglas C. Schmidt - - * ace/Event_Handler_T.cpp: Reordered the initializers in the - ACE_Event_Handler_T constructor so G++ doesn't complain. Thanks - to Oleg Krivosheev for reporting this. - - * ace/Shared_Memory.h: Added a virtual destructor to the - ACE_Shared_Memory abstract base class so that EGCS won't - complain. Thanks to Oleg Krivosheev for - reporting this. - - * ace/Event_Handler_T.h: Had to include the *.cpp file into .h - when ACE_TEMPLATES_REQUIRE_SOURCE is defined. Thanks to Oleg - Krivosheev for reporting this. - -Wed Jan 07 14:31:34 1998 Douglas C. Schmidt - - * ACE version 4.4.16, released Wed Jan 07 14:31:34 1998. - -Wed Jan 7 13:38:28 1998 Douglas C. Schmidt - - * tests/test_config.h (set_output): Added an environment variable - to specify where to put the log directory: ACE_TEST_DIR. Thanks - to Keith Nicewarner for reporting this. - - * ace/Service_Repository.cpp (close): Removed a fragment of - redundant code. Thanks to Eric Newton and Alex - Chan for reporting this. - -Tue Jan 06 17:19:13 1998 Nanbor Wang - - * ace/Containers.{h,cpp} (ACE_Unbounded_Set[_Iterator]): Added - STL-styled iterator functions. Changed the internal - representation of ACE_Unbounded_Set within iterators from a - reference to a pointer. We need this to compare if two - iterators are refering to the same set or not. - -Tue Jan 6 14:11:54 1998 Carlos O'Ryan - - * tests/Reader_Writer_Test.cpp: - Reverted to revision 4.21 since the latest one (4.23) fails; - thanks to Irfan for this solution. - -Tue Jan 06 10:37:49 1998 David L. Levine - - * ace/OS.i (rw_trywrlock_upgrade): moved the #if 0 up a bit so - that it builds on Linux/non-glibc. For some reason, its - preprocessor was getting confused. - - * ace/OS.i (nanosleep): convert nanoseconds to microseconds - by dividing by 1000, not multiplying. Thanks to - Mitch Kuninsky for reporting this. - - * ace/config-mvs.h: added ACE_LACKS_LONGLONG_T because MVS doesn't - support it. Thanks to Chuck Gehr for - confirming that. - -Mon Jan 5 01:20:51 1998 Nanbor Wang - - * ace/Map_Manager.{h,cpp}: Made operator == and != and their - arguments const. - -Sun Jan 04 19:45:47 1998 David L. Levine - - * ace/IPC_SAP.cpp (enable,disable): moved return 0 at end - to inside the #endif, to avoid warning about unreachable - return statement on ghs/VxWorks. Thanks to Brian Mendel - for reporting this. - - * ace/OS.i (rw_trywrlock_upgrade): moved return 0 inside the - #if 0 block to avoid warning about unreachable return statement - on ghs/VxWorks. Thanks to Brian Mendel for reporting this. - - * ace/OS.i (rw_trywrlock_upgrade): added ACE_UNUSED_ARG (rw) - to temporary code. - - * ace/Basic_Types.{h,i},README: replaced ACE_HAS_LONGLONG_T with - ACE_LACKS_LONGLONG_T. ACE_HAS_LONGLONG_T was no longer - being used on many platforms with the scheme in Basic_Types.h. - From now on, we'll assume that a platform has long long - (unless ACE_LACKS_LONGLONG_T is #defined), which should help - porting to new platforms. - - * ace/config-aix-4.{1,2}.x.h,config-dgux-4.11-epc.h, - config-linux-{common,kcc}.h,config-lynxos.h,config-m88k.h, - config-osf1-*.h,config-sunos5.*.h,config-tandem.h: - removed ACE_HAS_LONGLONG_T. - - * ace/config-chorus.h,config-psosim-g++.h,config-vxworks*.h: - added ACE_LACKS_LONGLONG_T. - - * ace/Basic_Types.{h,i} (ACE_U_LongLong): fixed operator/, and - added operator% and operator--. - - * ace/High_Res_Timer.*: changed type of global_scale_factor_ from - u_long to ACE_UINT32. Removed some hacks now that ACE_U_LongLong - has operator%. - - * tests/Time_Value_Test.cpp: added tests of ACE_U_LongLong - operator/ and operator%. - - * ACE-INSTALL.html: added link to Cygus repo patches. Thanks - to Achint Sandhu for providing the URL. - - * ace/OS.{h,i}: added ACE_OS::putenv (). - - * tests/Env_Value_Test.cpp: use ACE_OS::putenv (). - - * tests/Env_Value_Test.cpp: expect (unsigned long) -10 for - TEST_VALUE_NEGATIVE converted to an unsigned long. - Thanks to Jack Erickson for - verifying that it _should_ return (unsigned long) -10. - - * ace/OS.i (strtoul): on Linux with glibc, use ::strtol instead of - ::strtoul and cast the result to an unsigned long. Its ::strtoul - always seems to return 0 for a negative number, at least on - RedHat 4.2/Linux 2.0.30/Alpha with glibc 2.0 (0.961212-5). - - * ace/config-linux-common.h: factored out - ACE_LACKS_SOME_POSIX_PROTOTYPES from glibc and non-glibc - sections to common section. - - * etc/purify.solaris2: added suppression of MIU from putenv. - -Sun Jan 04 17:19:31 1998 Douglas C. Schmidt - - * ACE version 4.4.15, released Sun Jan 04 17:19:31 1998. - -Sun Jan 4 10:11:53 1998 Douglas C. Schmidt - - * ace/OS.i (rw_trywrlock_upgrade): Temporarily comments out this - method since we need to finish implementing it correctly. - - * ace/OS.i (rw_trywrlock_upgrade): Fixed a minor bug where we - weren't releasing the lock correctly if there were competing - readers. - - * apps/Gateway/Gateway/Event_Channel.cpp (put): Uncommented the - code that sets the appropriate locking strategy for the Message - Blocks. - - * apps/Gateway/Gateway/Connection_Handler.h: Made the - remote_addr() and local_addr() accessor methods return - const-correct values. - - * build/SunOS5.5/ace/OS: Revised a bunch of #ifdefs so that we can - selectively enable the ACE rwlock emulation, even if we're - compiling with ACE_HAS_STHREADS in order to get the native - Solaris semaphores. - - * apps/Gateway/Peer/Makefile: Tweaked the Makefile rules to fix - some minor problems. Thanks to David Levine for showing the - way... - -Sun Jan 04 12:37:02 1998 David L. Levine - - * tests/Env_Value_Test.cpp: hacked to work with - ACE_HAS_NONSTATIC_OBJECT_MANAGER. With that, it uses ::putenv (), - which we should wrap in ACE_OS. Also, expanded TEST_THIS to - provide a more helpful log message than just the ASSERT output. - - * ace/config-vxworks5.x-g++.h: removed - ACE_HAS_TEMPLATE_SPECIALIZATION. - - * tests/Hash_Map_Manager_Test.cpp (main): added casts of i->ext_id_ - and i->int_id_ to (char *) to force g++/VxWorks to apply the - conversion from Dumb_String to char *. - -Sun Jan 04 09:51:59 1998 Nanbor Wang - - * apps/Gateway/Gateway/Options.{h,cpp}: Removed macros to export - this class out of DLL. They are no longer needed. - - * apps/Gateway/Gateway/Gateway.dsp: Updated source file listings. - -Sat Jan 3 22:25:15 1998 Douglas C. Schmidt - - * apps/Gateway/Gateway: Changed the name of the ACE_Event_Channel - class to Event_Channel since this class wasn't a part of the ACE - library. - - * apps/Gateway/Gateway/Event_Channel.h: Updated the inheritance - relationship for Event_Channel so that it inherits from - ACE_Event_Handler rather than ACE_Task. ACE_Task was - overkill... - - * apps/Gateway/Gateway: Removed the supplier_id from all the - files. We didn't use this anyway and it was just confusing. - Also, renamed Proxy_* to Connection_* to underscore the fact - that the Supplier_Handler and Consumer_Handler work atop - *connections*. The previous naming scheme was too abstract for - its own good. - -Sat Jan 03 14:16:40 1998 Nanbor Wang - - * ace/Map_Manager.cpp (ACE_Map[_Reverse]_Iterator): Fixed the - initial iterator position. - -Fri Jan 02 18:43:14 1998 Douglas C. Schmidt - - * ACE version 4.4.14, released Fri Jan 02 18:43:14 1998. - -Fri Jan 2 17:39:04 1998 Douglas C. Schmidt - - * apps/Gateway/Peer/Options.cpp (Options): Rearranged the order of - the parameters in the base/member initialization section to make - GCC happy. Thanks to David Levine for getting on me about this. - - * apps/Gateway/Gateway/Options.h: Changed DEFAULT_TIMEOUT - to MAX_TIMEOUT to be consistent. Thanks to David - Levine for reporting this. - -Fri Jan 2 17:25:05 1998 Nanbor Wang - - * tests/Map_Manager_Test.cpp: Added codes to test STL-styled - functions in ACE_Map_Manager. - - * apps/Gateway/Gateway/Proxy_Handler.cpp: - * apps/Gateway/Gateway/Proxy_Handler_Connector.cpp: - * apps/Gateway/Gateway/Event_Channel.cpp: - * apps/Gateway/Peer/Peer.cpp: - * ace/Local_Name_Space.cpp: - * examples/ASX/Event_Server/Event_Server/Peer_Router.cpp: - * examples/ASX/Event_Server/Transceiver/transceiver.cpp: - * examples/ASX/UPIPE_Event_Server/Supplier_Router.cpp: - * examples/ASX/UPIPE_Event_Server/Consumer_Router.cpp: - * examples/Connection/blocking/SPIPE-connector.cpp: - * examples/Connection/misc/test_upipe.cpp: - * examples/Connection/non_blocking/test_sock_connector.cpp: - * examples/Connection/non_blocking/test_spipe_connector.cpp: - * examples/Connection/non_blocking/test_tli_connector.cpp: - * examples/Connection/non_blocking/test_lsock_connector.cpp: - * netsvcs/clients/Tokens/manual/manual.cpp: - * netsvcs/lib/TS_Clerk_Handler.cpp: - * apps/Gateway/Gateway/Proxy_Handler_Connector.cpp: Added some - more explicit template instantiations. - - * ace/Map_Manager.{h,cpp}: Added back comparison operators for - ACE_Map_Iterator and ACE_Map_Reverse_Iterator. - - * ace/Token_Invariants.cpp: - * ace/Token_Collection.cpp: - * ace/Token_Manager.cpp: Added missing ACE_Map_Reverse_Iterator. - - * ace/Map_Manager.h: Remove unnecessary method declarations from - ACE_Map_Iterator adn ACE_Map_Reverse_Iterator. - - * examples/Connection/non_blocking/test_tli_connector.cpp: - * examples/Connection/non_blocking/test_sock_connector.cpp: - * examples/Connection/non_blocking/test_lsock_connector.cpp: - * examples/Connection/non_blocking/test_spipe_connector.cpp: - * examples/Connection/misc/test_upipe.cpp: - * examples/Connection/blocking/SPIPE-connector.cpp: - * examples/ASX/UPIPE_Event_Server/Supplier_Router.cpp: - * examples/ASX/UPIPE_Event_Server/Consumer_Router.cpp: - * examples/ASX/Event_Server/Transceiver/transceiver.cpp: - * examples/ASX/Event_Server/Event_Server/Peer_Router.cpp: - * apps/JAWS/clients/Caching/http_handler.cpp: - * apps/JAWS/clients/Blobby/Blob.cpp: - * apps/Gateway/Peer/Peer.cpp: - * apps/Gateway/Gateway/Event_Channel.cpp: - * apps/Gateway/Gateway/Proxy_Handler.cpp: - * apps/Gateway/Gateway/Proxy_Handler_Connector.cpp: - * tests/Reactor_Performance_Test.cpp: - * tests/Priority_Reactor_Test.cpp: - * tests/Map_Manager_Test.cpp: - * tests/Conn_Test.cpp: - * netsvcs/lib/TS_Clerk_Handler.cpp: - * ace/Token_Manager.cpp: - * ace/Token_Invariants.cpp: - * ace/Token_Collection.cpp: - * ace/Local_Name_Space.cpp: Added explicit template instantiation - for ACE_Map_Iterator_Base. - - * ace/Map_Manager.{h,cpp}: Added a new class ACE_Map_Iterator_Base - to abstract out most common functionalities from - ACE_Map_Iterator and ACE_Map_Reverse_Iterator. Added some - missing functions to both iterator classes. - -Fri Jan 2 12:39:45 1998 Carlos O'Ryan - - * ace/Map_Manager.h: - Another declaration removed from ACE_Map_Reverse_Iterator, - operator* is defined in the base class. - - * tests/Conn_Test.cpp: - * tests/Priority_Reactor_Test.cpp: - * tests/Reactor_Performance_Test.cpp: - The instantiation of ACE_Map_Manager *requires* instantiating - ACE_Map_Reverse_Iterator. - - * ace/OS.i: - Cannot use ACE_ASSERT in OS.i, at least it make SGI compiler - unhappy. - - * ace/Map_Manager.cpp: - Several methods for ACE_Map_Manager were not given their fully - qualified name. - - * ace/OS.i: - The error code should be stored in errno, not in "error". - -Fri Jan 2 17:02:36 1998 Chris Cleeland - - * tests/run_tests.sh: Added Env_Value_Test to the list of tests to - run. - - * tests/Env_Value_Test.cpp (main): Fixed wrong test for negative - values with unsigned longs. Thanks to David Levine and - Linux/Alpha for finding this. - - * tests/Env_Value_Test.cpp (main): Changed the definition of the - TEST_THIS macro to be all on one line. While ugly, this helps in - locating the line when ACE_ASSERT fails, since allowing the macro - to have multiple lines skews the line # reported by ACE_ASSERT. - - * ace/Env_Value_T.*: Fixed lots of little bugs that got past both - g++ and Solaris compilers, but were caught by the ever-skeptical - SGI compiler. This included providing a definition for the missing - 'varname(void)' method. - -Fri Jan 02 10:12:28 1998 Steve Huston - - * ace/config-hpux-10.x-g++.h: Added #define HPUX_10 to catch OS - version-dependent code correctly. - -Fri Jan 02 07:06:44 1998 David L. Levine - - * apps/Gateway/Gateway/Makefile: restored the .obj/*.o targets. - They don't affect the build of the shared lib and are used if - the unshared lib is built. - - * apps/Gateway/Gateway/Options.h: added missing , in enum definition. - - * apps/Gateway/Gateway/Options.cpp (Options ctor): reordered - initializers to match declaration order. - - * apps/Gateway/Gateway/Config_Files.cpp (read_entry): fixed syntax - error, missing "if" after "else". Added #include of Options.h. - - * ace/OS.i (rw_trywrlock_upgrade): added ACE_UNUSED_ARG (rw) with - STHREADS. - - * ace/Synch.i (tryacquire_write_upgrade): only define if - ACE_HAS_THREADS. - - * tests/test_config.h: hacked ACE_INIT_LOG to work on VxWorks. - VxWorks gets upset if its asked to unlink a nonexistant file. - - * ace/Basic_Types.*: if using ACE_U_LongLong, #define - ACE_USES_ACE_U_LONGLONG and use that in the .i and .cpp files - instead of repeating all of the complex preprocessor tests - in Basic_Types.h. Thanks to Carlos for suggesting this. - - * ace/Env_Value_T.cpp: added protection against multiple inclusion. - - * tests/Env_Value_Test.cpp: added ACE_Env_Value instantiation. - -Fri Jan 02 00:47:33 1998 Douglas C. Schmidt - - * ACE version 4.4.13, released Fri Jan 02 00:47:33 1998. - -Fri Jan 2 00:17:04 1998 Douglas C. Schmidt - - * Reader_Writer_Test.cpp: Changed from an ACE_RW_Mutex to an - ACE_RW_Thread_Mutex so that we can use the new - tryacquire_write_upgrade() method. - - * ace/Env_Value_T.h: Reformatted the file a bit to conform to - ACE coding conventions. - -Thu Jan 1 12:04:29 1998 Douglas C. Schmidt - - * apps/Gateway/Peer/Options.cpp (parse_args): Changed the option - to set the passive acceptor port from -p to -a. This is now - consistent with the option for active connector port number, - which is -c. - - * apps/Gateway/Gateway/Gateway.cpp (fini): Added a call to - ACE::remove_stdin_handler(), which removes the handler for - ACE_STDIN so the gatewayd will shutdown cleanly. - - * ace/ACE: Added a new method, remove_stdin_handler(), which is - the inverse of the register_stdin_handler() method. However, - I'm not sure how to make this work on NT! - - * examples/Reactor/Misc/notification.cpp: Removed some - CHORUS-specific, which should be a no-op with our new signal() - and sigaction() scheme. - - * ace/OS.i: Enhanced the signal() and sigaction() wrappers so that - they simply ignore signums of 0. This means that we don't need - to special case all this stuff throughout ACE anymore. - - * ace/OS.h: Changed all the #defines for various SIG* so that they - are all 0. This way, we can ensure that the signal() functions - in ACE_OS can correctly ignore these signals. This should clean - up a ton of platform-dependent code throughout ACE. - - * apps/Gateway/Gateway/File_Parser.cpp (getint): Added a new - special-case check for the '*' character, which indicates "use - the default value for this field." - - * apps/Gateway/Gateway/Options: Added a new option to provide a - default max retry timeout. - - * tests/Reader_Writer_Test.cpp: Enhanced the test so that it - exercises the new "upgrade" feature of RW_Thread_Mutexes. - - * ace/{OS,Synch}: Added new methods, - ACE_OS::rw_trywrlock_upgrade() and - ACE_RW_Thread_Mutex::tryacquire_write_upgrade() that - conditionally upgrade a read lock to a write lock. This only - works if there are no other readers present, in which case the - method returns 0. Otherwise, the method returns -1 and sets - errno to EBUSY. Note that the caller of this method *must* - already possess this lock as a read lock. - - * apps/Gateway/{Gateway,Peer}/Makefile: Removed the $(VLIB) macro - so that we don't try to build the lib*.a files by default. - Thanks to David Levine for explaining this. - - * apps/Gateway/Gateway: Added new Options.{h,cpp} files and - rearranged the program to centralize all options processing in - an Options Singleton. - - * apps/Gateway/Peer/Options.cpp (parse_args): Changed the - connector and acceptor options to use a more generalizable - format. Now we can set the Consumer and Supplier port numbers - independently. - - * apps/Gateway/Gateway/Event.h: This is currently where the macros - from the following bullets have been moved, so they can be - shared by the Peer and Gateway components. - - * ace/OS.h: Moved the ACE_DEFAULT_{GATEWAY,PEER}_SERVER_PORT - macros into the Gateway application, where they belong. - - * apps/Gateway/Peer/Options.cpp (parse_args): Changed the option - to set the passive acceptor port from -p to -a. This is now - consistent with the option for active connector port number, - which is -c. - - * apps/Gateway/Gateway/Gateway.cpp (fini): Added a call to - ACE::remove_stdin_handler(), which removes the handler for - ACE_STDIN so the gatewayd will shutdown cleanly. - - * ace/ACE: Added a new method, remove_stdin_handler(), which is - the inverse of the register_stdin_handler() method. However, - I'm not sure how to make this work on NT! - - * examples/Reactor/Misc/notification.cpp: Removed some CHORUS-specific - code, which should be a no-op with our new signal() and sigaction() - scheme. - - * ace/OS.i: Enhanced the signal() and sigaction() wrappers so that - they simply ignore signums of 0. This means that we don't need - to special case all this stuff throughout ACE anymore. - - * ace/OS.h: Changed all the #defines for various SIG* so that they - are all 0. This way, we can ensure that the signal() functions - in ACE_OS can correctly ignore these signals. This should clean - up a ton of platform-dependent code throughout ACE. - - * apps/Gateway/Gateway/Gateway.cpp (init): Revised the code a bit - to factor out platform-dependent signal handling stuff in the - right place. - - * apps/Gateway/Gateway/gatewayd.cpp: Cleaned up the gatewayd main - program so that it reuses more ACE components and so that it is - more portable. - -Thu Jan 01 18:24:56 1998 Nanbor Wang - - * apps/Gateway/Gateway/Gateway.dsp: Added new file Options.cpp. - - * apps/Gateway/Gateway/Options.cpp (ACE_BUILD_SVC_DLL): Added - #define ACE_BUILD_SVC_DLL. - - * netsvcs/lib/Base_Optimizer.i: Removed this file. - - * netsvcs/lib/Base_Optimizer.h: Added codes to include in the - source file conditionally if needed. - - * netsvcs/lib/Base_Optimizer.cpp: Moved template implementation - from .i file. Removed ACE_INLINE keyword. - - * netsvcs/lib/Server_Logging_Handler.cpp: Added explicit template - instantiation macros. - -Thu Jan 01 17:13:06 1998 David L. Levine - - * apps/Gateway/Peer/Peer.cpp (Peer_Connector::open): added - return 0 statement at end. - - * apps/Gateway/Gateway/Options.cpp (Options ctor): reordered - initializers to match declaration order. - - * apps/Gateway/Gateway/Makefile: removed LOBJ and SHOBJ macros - because they're not needed. And, restored BUILD so that static - lib will be built if requested. - - * include/makeinclude/rules.lib.GNU: added OBJEXT macro, defaulted - to "o", and use it in VOBJS definition. - - * include/makeinclude/wrapper_macros.GNU: if building shared libs - only, set OBJEXT to "so" and VDIR to .shobj/, so that only shared - objects will be built. - - * apps/Gateway/Peer/Peer.cpp: added template instantiations. - - * netsvcs/lib/Base_Optimizer.*,Makefile: moved inline functions - to .i file and changed inline to ACE_INLINE. - - * netsvcs/lib/Server_Logging_Handler_T.{h,cpp}: don't use - Base_Optimizer with g++. Some versions of g++ 2.7.x have - trouble with its inline template member functions, especially - if __ACE_INLINE__ is disabled. - -Thu Jan 01 07:56:17 1998 Douglas C. Schmidt - - * ACE version 4.4.12, released Thu Jan 01 07:56:17 1998. - -Thu Jan 01 00:28:46 1998 Nanbor Wang - - * apps/Gateway/Peer/Peer.dsp: Added a new file "Options.cpp" into - this project. - - * tests/Env_Value_Test.cpp (main): Changed variable name: 'environ' - to 'envp'. Real OSes don't understand what the word means - and Access Violations will occur. - - * tests/run_tests.bat: Added Env_Value_Test. - - * tests/version_tests/version_tests.dsw: - * tests/tests.dsw: Added Env_Value_Test.dsp. - - * tests/version_tests/Env_Value_Test.dsp: - * tests/Env_Value_Test.dsp: New file. - -Thu Jan 1 00:00:00 1998 Douglas C. Schmidt - - * Happy New Year! Here's a thought for the new year, courtesy of - Sumedh: - - Nothing in the world is permanent, - and we're foolish when we ask anything to last; - but surely we're still more foolish - not to take delight in it while we have it. - - - W.Somerset Maugham (Razor's Edge) - -Wed Dec 31 19:10:59 1997 Douglas C. Schmidt - - * apps/Gateway/Peer/Peer: Added the hooks for making the Peer a - Connector, as well as an Acceptor. Now it's time to have some - fun. - - * apps/Gateway/Peer/peerd.cpp: Cleaned up the peerd main program - so that it reuses more ACE components and so that it is more - portable. - - * netsvcs/servers/main.cpp (main): Revised the code a bit to - factor out platform-dependent signal handling stuff in the right - place. - - * apps/Gateway/Peer: Factored out some common initialization code - to create an Options Singleton. Yowza! - - * apps/Gateway/README: Improved the documentation so that its - easier to tell what's supposed to happen and how to configure - the system. - - * apps/Gateway/Peer/Peer: Moved the Peer_Acceptor into the Peer.h - file and updated the documentation to clarify what's going on - better. - - * examples/Reactor/Dgram/: Enhanced the examples to make sure they - close() the dgram endpoint when the object is removed from the - Reactor. Thanks to Evgeny Beskrovny - for reporting this. - - * ace/Obstack.cpp: Fixed a stupid bug in the ACE_Obstack - constructor. Thanks to David Levine for reporting this. - - * ace/Local_Name_Space_T.h: Updated the documentation for class - ACE_Name_Space_Map to make it more clear. - -Wed Dec 31 21:21:50 1997 David L. Levine - - * examples/Reactor/Dgram/{CO,Dgram.cpp} (handle_close): added - ACE_UNUSED_ARG (handle). - - * tests/Env_Value_Test.cpp (main): removed unused arg argv and - local envargv. undef'ed ACE_HAS_NONSTATIC_OBJECT_MANAGER because - it can't deal with the three arguments to main (). - -Wed Dec 31 16:25:16 1997 Chris Cleeland - - * ace/Env_Value_T.*: Added a new template (ACE_Env_Value) which is - a typesafe encapsulation of environment variables with the - ability to provide a value to be used as a default if the - variable isn't set. An example of its use can be seen in the - corresponding test, tests/Env_Value_Test.cpp. Thanks to Carlos - O'Ryan for giving me the seed that started this. - - * tests/Env_Value_Test.cpp: Added test for the new template added - above. - - * tests/Makefile: Added new Env_Value_Test test to the Makefile. - - * ace/OS.{h,i} (strtod): Added new function for converting strings - to doubles. - -Tue Dec 30 22:07:44 1997 David L. Levine - - * ace/High_Res_Timer.cpp (elapsed_time): added a cast in - calculation of useconds to avoid MSVC++ warning about narrowing. - Thanks to Nanbor for reporting this. - - * ace/OS.i (gethrtime): commented out high-res tick counter on Linux - because it doesn't seem to work properly. Use ::gettimeofday () - instead. - - * tests/Basic_Types_Test.cpp (main): replaced #ifdef VXWORKS && ghs - with !ifdef ACE_HAS_WCHAR_TYPEDEFS_CHAR. - - * ace/Map_Manager.cpp (operator*): fixed typo in "ACE_Map_Entry". - - * ace/OS.h: added ACE_NSIG. In addition, I removed this: - - // Why is this defined? It must be a std C library symbol. - #if !defined (NSIG) - #define NSIG 0 - #endif /* NSIG */ - - We #define NSIG elsewhere on platforms (VxWorks, MVS) that need it. - #defining it to be 0 isn't good; it's better to catch the lack of - NSIG at compile time than at run time. - - * ace/{Log_Msg.cpp,OS.i,Select_Reactor.cpp,Signal.*,WFMO_Reactor.i}, - tests/Sigset_Ops_Test.cpp: replace NSIG with ACE_NSIG. - - * ace/Basic_Types.{h,i}: only use u_longlong_t on sun. Added - operator++ to ACE_U_LongLong, and tweaked calculation in operator/. - - * tests/Time_Value_Test.cpp (test_ace_u_longlong_): added test of - operator+, and one simple test of operator/. - - * ace/Filecache.h: removed extra , in enum ACE_Filecache_Flag definition. - -Tue Dec 30 20:32:03 1997 Nanbor Wang - - * ace/Map_Manager.{h,cpp}: Added STL-styled iterator function. - Changed the references to ACE_Map_Manager within interator - classes to pointers so we can check errors. - -Tue Dec 30 14:56:18 1997 Douglas C. Schmidt - - * ace/Obstack: Enhanced ACE_Obstack so that it can be given a - pointer to an allocator strategy. This allows users to take - complete control of where the memory comes from for the Obstack. - - * ace/Obstack: Changed the default value of "size" so that it is - (4096 - sizeof (ACE_Obstack)). - - * ace/Obstack: Added a new ACE_Obchunk constructor to simplify - some of the code. - -Mon Dec 29 20:21:32 1997 Steve Huston - - * include/makeinclude/rules.lib.GNU: Adjusted dependencies on building - a shared library to be on the object modules it will link in, not - necessarily $(VSJOBJ). - -Mon Dec 29 18:53:35 1997 James C Hu - - * ace/Filecache.h: Added an enum type, ACE_Filecache_Flag, which - gets passed into the ACE_Filecache_Handle constuctor to help - determine whether or not to use memory mapping (on Windows NT, - we sometimes do not want to memory map). - - * ace/Filecache.cpp: Required modifications to accomodate the - ACE_Filecache_Flag parameter. - -Mon Dec 29 15:37:24 1997 Nanbor Wang - - * ace/OS.i (event_timedwait): Added codes to guard against - negative wait time since we are passing an absolute time value - here, we may way past the target time when it gets called. - Thanks to Norbert Rapp for pointing - this. - -Mon Dec 29 13:57:43 1997 Carlos O'Ryan - - * ace/XtReactor.cpp: - Fixed syntax error, apparently some kind of typo. - - * ace/OS.h: - The ACE_*_cast() macros had (IMHO) surprizing priority, added - some parenthesis to make them behave as the new cast operators - are supposed to do. - -Mon Dec 29 08:59:28 1997 David L. Levine - - * ace/Basic_Types.h: Linux w/o glibc 2.0 doesn't have u_longlong_t, - so use "unsigned long long" for it. - - * ace/Task.cpp (activate): added ACE_UNUSED_ARG (thread_handles) on - non-threaded platforms. - - * ace/Thread_Manager.cpp (wait): added ACE_UNUSED_ARG - (abandon_detached_threads) on non-threaded platforms. - - * performance-tests/Misc/childbirth_time.cpp (prof_ace_os_thread): - added ACE_UNUSED_ARG (iteration) on non-threaded platforms. - - * performance-tests/Misc/preempt.cpp (main): added ACE_UNUSED_ARG - for argc and argv on non-threaded platforms. - - * include/makeinclude/platform_linux.GNU: enabled compiler warnings - by replacing -w with -Wall -Wpointer-arith in CFLAGS. - - * ace/ACE.cpp (count_interface,get_handle,get_ip_interfaces): use - same code for LynxOS as for __unix. - - * ace/OS.h: on LynxOS, redefine NSIG to be one greater than the - highest-numbered signal. LynxOS' signal.h #defines it to be - equal to the highest-numbered signal, 64. - -Mon Dec 29 08:35:17 1997 Steve Huston - - * include/makeinclude/platform_hpux_aCC.GNU: Removed the PRELIB - and PRELIB_USES_OBJ_ONLY stuff; merged in macros for building - on HP-UX 11.00. - * include/makeinclude/platform_hpux11_aCC.GNU - Removed this file. - The 10.x and 11.x builds are now both controlled by - platform_hpux_aCC.GNU. - -Sun Dec 28 10:50:54 1997 Douglas C. Schmidt - - * ACE version 4.4.11, released Sun Dec 28 10:50:54 1997. - -Sat Dec 27 18:03:52 1997 Nanbor Wang - - * ace/Log_Msg.cpp (dump): Sould test if we have a valid thr_desc - before dumping the information of it. Thanks to Luca Priorelli - for pointing this out. - -Sat Dec 27 16:13:59 1997 David L. Levine - - * ace/{OS.i,config-linux-common.h,README} (getrusage,{get,set}rlimit): - added ACE_HAS_RUSAGE_WHO_ENUM and ACE_HAS_RLIMIT_RESOURCE_ENUM - support. glibc 2.0 for Linux uses enums for the first arguments - to ::getrusage and ::{get,set}rlimit. - -Fri Dec 26 18:04:06 1997 - - * ace/Containers.h: Added iterator traits for following classes. - ACE_Unbounded_Set - ACE_Unbounded_Queue - ACE_Unbounded_Stack - ACE_Double_Linked_List - ACE_Fixed_Set - ACE_Bounded_Set - Thanks to for recommending this. - -Fri Dec 26 12:03:05 1997 David L. Levine - - * ace/config-osf1-4.0.h: added support for DCE threads, and merged in - config-osf1-4.0-g++.h. Thanks to Frederic Andres - for the DCE threads support #defines. - - * ace/config-osf1-4.0-g++.h: removed. All Digital Unix 4.0 configs - are now supported by config-osf1-4.0.h. - - * ace/platform_osf1_4.0.GNU: added comment on how to use DCE threads - instead of POSIX threads. - - * ace/OS.i (thr_{get,set}prio): don't apply the - !defined(ACE_LACKS_SETSCHED) test if ACE_HAS_DCETHREADS. - - * ace/OS.cpp (thr_create): added || ACE_HAS_DCETHREADS to - #ifndef ACE_LACKS_SETSCHED, so that priority is set with DCETHREADS. - - * ace/OS.cpp (sched_params): moved paren so that DCETHREADS block - will be executed even if ACE_LACKS_SETSCHED. - - * ace/Sched_Params.cpp ({next,previous)_priority): added - ACE_HAS_DCETHREADS check before !defined(ACE_LACKS_SETSCHED). - - * ace/OS.i (cond_timedwait): wrapped first arg to ACE_OSCALL in - parens because it confused cxx. - - * examples/System_V_IPC/SV_Message_Queues/{,T}MQ_Server.cpp: renamed - variable msgque because it conflicted with a symbol in the DEC cxx - w/DCE threads headers. - - * ACE-INSTALL.html: expanded discussion of gcc config.status file. - Thanks to Hans Rohnert for figuring - out the role of the config.status file. - -Fri Dec 26 06:44:25 1997 - - * ace/OS.h (ACE_OS::ace_flock_t): Added a new field "lockname_" to - remember the lock filename. - - * ace/OS.i (flock_init,flock_destroy): We need to remember the - name of the lock file when initializing the lock and unlink the - file when destroying the lock. - -Thu Dec 25 18:08:42 1997 Douglas C. Schmidt - - * ace/XtReactor.cpp: Removed g++ warning about initialization - order, enabled read/write masks for - ACE_Event_Handler::CONNECT_MASK; fixed typo that checks a write - mask, but sets a read mask; removed unused variable "zero." - Thanks to Eric Newton for these fixes. - -Thu Dec 25 17:17:16 1997 - - * ace/config-win32.h: * ace/config-win32-common.h: Added macro - definitions not to use C++-styled castings on Win32 by default - so that we don't depend on the RTTI support. - -Thu Dec 25 16:18:03 1997 - - * ace/SString.h (ACE_CString and ACE_WString): Added c_str() to - make it similar to STL's string class. - -Wed Dec 24 19:59:15 1997 David L. Levine - - * tests/IOStream_Test.cpp (client): changed stream error message - from "timeout" to "timed out", so that run_tests.check won't - complain about it. - -Wed Dec 24 18:37:49 1997 - - * ace/Synch.i (get_thread_id,get_nesting_level): Added ACE_INLINE. - -Wed Dec 24 18:31:31 1997 Douglas C. Schmidt - - * ACE version 4.4.10, released Wed Dec 24 18:31:31 1997. - -Wed Dec 24 14:27:33 1997 - - * ace/Synch.{h,i,cpp} (ACE_Recursive_Thread_Mutex): Changed - ACE_Recursive_Thread_Mutex to inherit from ACE_Thread_Mutex on - Win32 because ACE_Thread_Mutex is already recusive on Win32. - -Wed Dec 24 08:14:32 1997 David L. Levine - - * ace/Log_Msg.cpp (instance): without threads, dynamically create - the ACE_Log_Msg instance instead of using a static. Now, without - threads, the ACE library has no statics that require destruction - (at least on Solaris/g++ and Linux). And, all of the ACE tests - Purify cleanly. - - * ace/OS.cpp (ACE_Thread_Adapter::invoke): wrapped - rethrow_w32_structural_exception () call with #ifdef ACE_WIN32. - It was eliminated by the ACE_SEH_EXCEPT macro on non-WIN32 - platforms, but some compilers (cxx) warned about the - unreachable code. This call is only supported on WIN32 anyways. - - * ace/OS.h: LynxOS has ACE_HAS_PTHREADS_1003_DOT_1C, but not - ACE_HAS_PTHREAD_SIGMASK. - - * tests/Time_Value_Test.cpp: only test ACE_U_LongLong on Solaris, - and other platforms with STHREADS. - -Wed Dec 24 04:25:49 1997 - - * ace/OS.i (sema_init): Added checking for initial semaphore - counts and set the semaphore to non-signaled state if the - initial count is zero. Changed the internal variable lock from - a mutex to a thread_mutex (Critical Section.) - -Tue Dec 23 21:06:14 1997 David L. Levine - - * ace/TLI_Stream.cpp (get_remote_addr): added ACE_UNUSED_ARG - for the arg if ! ACE_HAS_SVR4_TLI. - - * examples/IPC_SAP/SOCK_SAP/CPP-inserver-poll.cpp (main): declare - local "i" outside the for loop because it is used after the loop. - -Tue Dec 23 19:34:10 1997 - - * ace/OS.i: Added comments for semaphore simulation. - -Tue Dec 23 19:33:59 1997 Douglas C. Schmidt - - * ACE version 4.4.9, released Tue Dec 23 19:33:59 1997. - -Tue Dec 23 19:05:32 1997 Douglas C. Schmidt - - * tests/IOStream_Test.cpp (server): Changed sleep(30) to - sleep(5). This seems more reasonable. Thanks to - James Johnson for this suggestion. - -Tue Dec 23 16:43:14 1997 Steve Huston - - * ace/README: Added descriptions for ACE_HAS_PTHREADS_1003_DOT_1C (this - was in use previously but not documented), ACE_HAS_XTI (new; XTI is - the POSIX superset of TLI - this implies ACE_HAS_TLI), - ACE_NEW_THROWS_EXCEPTIONS (new; the compiler throws bad_alloc if - a 'new' memory allocation fails). - - * ace/Hash_Map_Manager.cpp - Workaround for an aC++ bug in the HP-UX 11 - version of the compiler. - - * ace/INET_Addr.cpp: Note the failing host name in the error message - from ACE_INET_Addr::ACE_INET_Addr(u_short, const char []). - - * ace/OS.h: Changes made while porting to HP-UX 11: - - If ACE_HAS_PTHREADS_1003_DOT_1C (POSIX.1C), it implies (by - way of POSIX.1C) that these also be set: - ACE_HAS_PTHREAD_SIGMASK - ACE_HAS_2_PARAM_ASCTIME_R_AND_CTIME_R - This is intended to make the process of configuring a new - new platform easier. - - If the new config macro ACE_NEW_THROWS_EXCEPTIONS is set, include - the file . The "proper" thing to do is to include - ; however, at least on HP-UX 11, this will cause - other things to get brought in, like , which will - screw up auto_ptr. The day that all this standard library and - STL stuff is finally straight, there will be dancing in the - streets... - - Support including the proper header file for XTI when it's - supposed to use rather than (POSIX specifies - XTI, a superset of TLI, to have ) - - If ACE_NEW_THROWS_EXCEPTIONS is set, the ACE_NEW and - ACE_NEW_RETURN macros handle the exception. - - * ace/OS.i: Fixed check for failure in ACE_OS::sema_init. - - * ace/config-hpux11.h: - * ace/config-hpux11-hpc++.h: New configs for HP-UX 11.00 - - * include/makeinclude/platform_hpux11_aCC.GNU: Platform macros for - HP-UX 11. It is set up for 32-bit build with comments for how to - do a 64-bit build. - - * examples/Makefile: Added Naming to the directory list to build. - - * examples/IPC_SAP/SOCK_SAP/CPP-inserver-poll.cpp: Changed test from - ACE_HAS_SVR4_POLL to ACE_HAS_POLL. - - * examples/IPC_SAP/SOCK_SAP/C-inclient.cpp: - * examples/IPC_SAP/SOCK_SAP/CPP-unclient.cpp: - * examples/IPC_SAP/SOCK_SAP/CPP-unserver.cpp: - * examples/IPC_SAP/SOCK_SAP/FD-unserver.cpp: Fixed a char * being - initialized by a string literal. - - * examples/Map_Manager/test_hash_map_manager.cpp: Added #include - "ace/SString.h" - - * examples/Mem_Map/IO-tests/test_io.cpp: Fixed a char * being - initialized by a string literal. Fixed diagnostic statements. - - * examples/Naming/test_multiple_contexts.cpp: - * examples/Naming/test_non_existent.cpp: - * examples/Naming/test_writers.cpp: Added Id line for CVS. - - * tests/Time_Value_Test.cpp: Added #include "test_config.h" - -Tue Dec 23 16:12:28 1997 - - * ace/OS.i: Must use ACE_OS::sema_wait instead of waiting on the - singling event when using simulated semaphores. - -Tue Dec 23 08:32:00 1997 Chris Gill - - * include/makeinclude/platform_sunos5_g++.GNU - Removed trailing spaces from CC and CXX macros - (the trailing space behind CXX was giving the TAO_IDL - make fits) - -Tue Dec 23 07:26:28 1997 David L. Levine - - * ace/TLI.cpp (get_local_addr): return -1, instead of 0, and - set errno (with ACE_NOTSUP_RETURN) if ! ACE_HAS_SVR4_TLI. - ({set,get}_option): added ACE_UNUSED_ARfor all - arguments if ! ACE_HAS_SVR4_TLI. - - * ace/TLI_Stream.cpp (get_remote_addr): return -1, instead of 0, - and set errno (with ACE_NOTSUP_RETURN) if ! ACE_HAS_SVR4_TLI. - Declare and set local "name" only if ACE_HAS_SVR4_TLI. - - * ace/TLI_Acceptor.cpp (handle_asynch_event): initialize local - "event" instead of defining it in the switch condition, to - avoid compiler warning about not using it. - - * examples/IPC_SAP/TLI_SAP/db-server.cpp (lookup_name): removed - unused local variable "len". - - * include/makeinclude/platform_osf1_4.0.GNU: removed some warning - suppressions that are no longer needed. - - * ace/Log_Msg.cpp (~ACE_Log_Msg): clean up the message queue and - allocated strings on non-threaded platforms. - - * tests/test_config.h (ACE_APPEND_LOG): added a close () of the - ace_file_stream before opening it. Forked children inherit the - opened file stream, and fail on their attempt to open it if it - is not explicitly closed. - -Mon Dec 22 22:42:57 1997 Douglas C. Schmidt - - * ace/OS: Added a few minor changes to Nanbor's Semaphore - emulation for WinCE. - -Mon Dec 22 11:39:19 1997 - - * OS.i (event_timedwait): Added code to handle timeouts. Thanks - to Luca Priorelli for reporting this. - -Mon Dec 22 07:03:13 1997 David L. Levine - - * ace/IOStream_Test.cpp (spawn): changed printout from - "Process_Mutex_Test-children" to "IOStream_Test-children". - -Mon Dec 22 03:08:22 1997 - - * ace/OS.i: Modified ACE_OS::cond_* for WinCE. - - * ace/config-win32-common.h: Prevent ACE from using NT specific - API on Win CE. - -Sun Dec 21 16:19:40 1997 Nanbor Wang - - * ace/OS.{h,i} (ACE_OS::sema_*): Added semaphore simulation code - for WinCE. This code is currently protected - ACE_USES_WINCE_SEMA_SIMULATION for debugging the code on NT. - This flag should soon be obsolete and changed to ACE_HAS_WINCE. - - Moved ACE_event_t macro definition for Win32 before ACE_sema_t - definition for NT. I need to use it in semaphore simulation. - - * ace/OS.h (class ACE_Cleanup_Info::operator ==, !=): Removed - keyword struct. ACE_Cleanup_Info is a class now. - - * ace/Containers.h (class ACE_Double_Linked_List): Removed - unused function declarations. - - * ace/Containers.h (class ACE_DNode): Removed ACE_DNode class. - -Sun Dec 21 18:47:09 1997 Douglas C. Schmidt - - * ACE version 4.4.8, released Sun Dec 21 18:47:09 1997. - -Sun Dec 21 12:39:38 1997 Douglas C. Schmidt - - * ace/OS.h (ACE_OS): Made the netdb_{acquire()/release()} methods - public to help ACE users stuck on weird OS platforms. Thanks to - Arturo Montes for this suggestion. - - * ace: Changed all ACE class documentation so that it puts the - =TITLE and =DESCRIPTION comments *after* the opening '{' rather - than before. I did this since (1) it makes emacs C++ mode - happier and (2) it makes Rational Rose reverse-engineering tool - happier too. Thanks to Thomas Jordan - for suggesting this. - - * ace/LOCK_SOCK_Acceptor.h: The accept() method of class - ACE_LOCK_SOCK_Acceptor is no longer a virtual. I don't know why - this was made virtual in the first place, but it was a mistake. - -Sun Dec 21 15:24:42 1997 Nanbor Wang - - * ace/OS.h (class ACE_Cleanup_Info::operator ==, !=): Removed - keyword struct. ACE_Cleanup_Info is a class now. - - * ace/Containers.h (class ACE_Double_Linked_List): Removed - unused function declarations. - - * ace/Containers.h (class ACE_DNode): Removed ACE_DNode class. - -Sat Dec 20 11:05:45 1997 Douglas C. Schmidt - - * tests/test_config.h (ACE_INIT_LOG): Added (%P|%t) to an - ACE_DEBUG statement to make it consistent. - - * tests/IOStream_Test.cpp (spawn): Revised the test so that it - prints data correctly to the child processes. - - * examples/Shared_Malloc/test_multiple_mallocs.cpp (main): Moved - the final print statement inside one of the if blocks so that it - appears only every second invocation to remind people to rerun - the program to remove the leaks. Thanks to Tom Arbuckle - for suggesting this. - - * ace/Malloc*: Changed ACE_MALLOC_STATS to ACE_HAS_MALLOC_STATS - since this is more consistent with ACE conventions. Also, - added ACE_HAS_MALLOC_STATS to the ace/README file. Thanks - to Tom Arbuckle for - suggesting this. - - * ace/Memory_Pool.cpp (ACE_Shared_Memory_Pool): Fixed the logic - for naming the backing store if the sscanf() call fails. Thanks - to Tom Arbuckle for - suggesting this. - -Sat Dec 20 15:39:00 1997 Nanbor Wang - - * tests/IOStream_Test.cpp (spawn): Changed ACE_LACKS_EXEC to - ACE_LACKS_FORK. - -Sat Dec 20 09:42:06 1997 David L. Levine - - * ace/OS.h: changed ACE_SEH_FINALLY to be if (1) on Unix, not - just pSOS. - -Fri Dec 19 23:20:42 1997 Nanbor Wang - - * tests/IOStream_Test.cpp (client): Removed an extra read. - - * ace/OS.h: ACE_SEH_FINALLY should always be executed on UNIX - platforms. - -Fri Dec 19 18:49:26 1997 Douglas C. Schmidt - - * ace/IOStream_T.i: Enhanced ACE_IOStream and its companions as - follows: - - - ACE_Streambuf_T<> now distinguishes recv() timeout failure from - a "real" stream failure - - - ACE_IOStream::eof() honors the streambuf's recv_timeout() value - and returns FALSE if the eof() check fails on timeout. - - - IOStream_Test.cpp tests the streambuf timeout via the stream eof() - and retrys if possible. - - Thanks to James Johnson for these fixes. - - * ace/Log_Record.i: Removed a no-op assignment to Time_Value - in the encode() method. Thanks to Patrick J. McNerthney - for reporting this. - - * ace/Log_Record.i: The time stamp put into the ACE_Log_Record - gets all messed up when the ACE_Log_Record is transmitted to the - Server_Logging_Handler and the client is run on a little-endian - architecture. This is because the ACE_Log_Record::encode method - does: - - this->time_stamp_ = ACE_Time_Value - - htonl (this->time_stamp_.sec ()), - htonl (this->time_stamp_.usec ())); - - When the ACE_Time_Value is passed in the resulting values from - "htonl", it calls "normalize" which totally messes with the - values passed. Thanks to Patrick J. McNerthney - for reporting this. - - * ace/OS.i: Fixed ctime_r() so that it doesn't crash if a NULL is - returned from ctime_r(). Thanks to Patrick J. McNerthney - for reporting this. - -Fri Dec 19 09:44:28 1997 David L. Levine - - * ace/OS.{h,i}: fixed sigwait for DEC cxx, yet again for cxx - V6.0-010. cxx #defines sigwait, and was getting confused - with ACE_OS::sigwait. I replaced Thilo's #undef sigwait, - and updated the ::sigwait declaration to what cxx uses internally. - - * examples/IPC_SAP/SOCK_SAP/CPP-inserver.cpp (server): cast arg - to long before casting to ACE_HANDLE, and removed function-style - cast. - -Fri Dec 19 00:39:40 1997 Douglas C. Schmidt - - * ACE version 4.4.7, released Fri Dec 19 00:39:40 1997. - -Thu Dec 18 19:47:47 1997 Douglas C. Schmidt - - * examples/IPC_SAP/SOCK_SAP: Stripped the CPP-in{server,client}.cpp - tests down to their bare essence to only test the core features - of sockets. Thanks to Bryan and Brian for suggesting this. - - * ace/Message_Queue.cpp (ACE_Message_Queue_Iterator): Changed - queue to q to avoid clashes with STL. Thanks to Brian Mendel - for reporting this. - - * ace/OS.h: The server logging daemon is implemented using TCP/IP - under Win32. Therefore, we can simplify the creation of the - ACE_DEFAULT_LOGGER_KEY. Thanks to Patrick J. McNerthney - for reporting this problem. - -Thu Dec 18 22:35:45 1997 David L. Levine - - * ace/OS.h: fixed typo in end-of-comment marker. - - * ace/OS.h: on Digital Unix 4.0, only declare sigwait () with cxx, - not with g++. Thanks to Erik Margraf - for verifying this. - - * examples/IPC_SAP/SOCK_SAP/CPP-in{client,server}.cpp: tweaked - so that they build on VxWorks (spawn needs the (ACE_THR_FUNC) - cast), and without threads. - - * tests/run_tests.vxworks: updated VxWorks test status. - - * ace/Basic_Types.h: look for ULONGLONG_MAX, which Irix 6.x uses. - And, hard-code ACE_SIZEOF_LONG_DOUBLE to be 16 on __sgi, because - its float.h doesn't always allow us to distinguish them. - Thanks to Carlos for reporting these. - - * ace/High_Res_Timer.cpp,Profile_Timer.cpp: removed dependence - on ACE_U_LongLong. Thanks to Carlos for reporting this. - - * tests/Time_Value_Test.cpp: fixed #ifdefs so that ACE_ULongLong - isn't tested on Irix 6.x, etc. Thanks to Carlos for tripping - over this. - - * ace/IOStream_T.i (eof): made the return type, int, explicit. - - * ace/config-linux-common.h: started adding support for threads on - alpha (glibc). - -Thu Dec 18 21:17:46 1997 - - * ace/ace_dll.dsp: Added project files for Windows CE on SH3 - series CPU and x86 emulator. - - * ace/streams.h: - * ace/OS.h: Added Windows CE flags. - - * ace/OS.cpp (invoke): Added a dummy return to shut gcc up. - - * ace/OS.cpp (invoke): Added a dummy return to shut gcc up. - - * ace/OS.{h,cpp} (rethrow_w32_structural_exception): Added this - function, which prints out an error message to indicate the - occurance of structural exception and rethrow it again. - (ACE_Thread_Adapter::invoke): Rearranged try and except block - for Win32 and added a finally block so when a structural - exception occurs, a thread can clean it up properly, print out - an error message, and rethrow the exception again. - -Thu Dec 18 15:40:50 1997 James C Hu - - * ace/Filecache.{cpp,h}: - - debugged writing a file. - - can select if mapping is desired. - - * ace/OS.h: Added new #defines to facilitate forward declarations - of ACE_Export classes. - -Thu Dec 18 00:15:02 1997 Douglas C. Schmidt - - * ACE version 4.4.6, released Thu Dec 18 00:15:02 1997. - -Wed Dec 17 19:42:38 1997 Douglas C. Schmidt - - * examples/IPC_SAP/SOCK_SAP: Enhanced the - CPP-{inserver,inclient}.cpp tests so that they will spawn - multiple client and server threads to perform the data transfer. - Thanks to Brian Mendel and Bryan Doerr for suggesting this. - - * ace/OS.i: Fixed some very subtle bugs with cond_signal() and - cond_broadcast(). Thanks to Patrick J. McNerthney - for reporting these and sending the fixes. - -Wed Dec 17 19:27:06 1997 Nanbor Wang - - * ACE-INSTALL.html (HREF): Added an advise not to use VC5.0 SP3. - - * examples/OS/Process/Makefile: Removed inclusion of - rules.lib.GNU. Thanks to Avi Nash for - noticing this. - -Tue Dec 16 22:09:42 1997 David L. Levine - - * tests/Time_Value_Test.cpp: restored #include test_config.h, - and changed #include ace/config.h to ace/inc_user_config.h. - - * examples/IPC_SAP/TLI_SAP/ftp-server.cpp, - examples/Reactor/Misc/test_timer_queue.cpp, - examples/Service_Configurator/IPC-tests/server/Handle_Timeout.i, - examples/Shared_Malloc/test_malloc.cpp, - examples/Threads/thread_specific.cpp: replaced ACE_HAS_64BIT_LONGS - preprocessor logic with a cast through a long to an int. - A void * is the same size as a long on all currently supported - ACE platforms. The int cast is also there, to avoid compiler - warnings about narrowing. As a side effect, the function-style - casts were removed. - - * ace/config-osf1*.h,README: added comment stating that - ACE_HAS_64BIT_LONGS is deprecated. - - * ace/config-tandem.h: removed commented-out line that mentioned - ACE_HAS_64BIT_LONGS. - - * ace/OS.{h,i} (sigwait): removed DEC cxx version dependence. The - standard two-arg POSIX ::sigwait () seems to work just fine even - on older releases of Digital Unix 4.0, with the sigwait declaration - that we have in OS.h. Thanks to Erik Margraf - and Thilo - for helping to sort this out. - - I did change the ACE_OS::sigwait () return value determination - in OS.i. It now depends on whether or not POSIX ::sigwait () - returns 0, to agree with the documenation for POSIX sigwait. - Before, the code checked for a -1 return value from ::sigwait (). - -Tue Dec 16 21:00:49 1997 Chris Gill - - Single Threaded port of ACE to pSOSim - first checkin - - * psosim/Makefile: (new) make file for new psosim directory - - builds the configured simulator components - - * psosim/drv_conf.c: (new) board driver configuration code for - simulator - - * ace/sys_conf.h: (new) configuration settings for simulator, ACE - - * ace/config-psosim-g++.h: (new) config file for psosim w/ g++ - - * ace/OS.cpp: - * ace/OS.h: - * ace/OS.i: Added psos and psosim specific code - - * ace/Mem_Map.cpp: Removed function style casts which were killing - g++ - - * ace/Message_Block.cpp: Removed function style casts which were - killing g++ - - * ace/Containers.cpp: Removed function style casts which were - killing g++ - - * ace/Map_Manager.cpp: Removed function style casts which were - killing g++ - - * tests/Handle_Set_Test.cpp: Added PSOS #defines, alongside those - for VXWORKS - - * tests/SOCK_Connector_Test.cpp: Added PSOS #defines, alongside - those for VXWORKS - - * tests/Priority_Reactor_Test.cpp: Added PSOS #defines, alongside - those for VXWORKS - - * tests/MM_Shared_Memory_Test.cpp: Added PSOS #defines, alongside - those for VXWORKS - - * tests/Conn_Test.cpp: Added PSOS #defines, alongside those for - VXWORKS - - * tests/run_tests.psosim: (new) script to run only those tests - that are relevant to pSOSim, in its current single threaded - state - - * include/makeinclude/platform_psosim_g++.GNU (new) make macros - for pSOSim using g++ - - -Tue Dec 16 17:23:49 1997 Nanbor Wang - - * tests/Time_Value_Test.cpp: Removed inclusion of "ace/config.h". - - * ace/inc_user_config.h: Added this file to prevent multiple - inclusions of config.h file. Replace `#include "ace/config.h"' - with `#include "ace/inc_user_config.h"'. - - * ace/Log_Msg.cpp: - * ace/OS.h: - * ace/Trace.cpp: - * ace/streams.h: - * ace/iosfwd.h: Replace "config.h" with "inc_user_config.h". - -Tue Dec 16 08:30:41 1997 Douglas C. Schmidt - - * examples/IPC_SAP/FILE_SAP/client.cpp (main): Fixed "lines" to - "links." Thanks to Istvan Buki for reporting - this. - -Tue Dec 16 14:15:48 1997 - - * ace/OS.i (fstat): Fixed Dr. Schmidt's typo. - -Tue Dec 16 09:17:53 1997 David L. Levine - - * ace/Singleton.cpp (cleanup): set instance pointer to 0 after - deleting it. Thanks to Luca Priorelli - for suggesting this. - - * ace/Basic_Types.{h,i}: (ACE_U_LongLong): use ACE_UIN32 instead - of u_long for data members, to ensure that its sizeof is 8 bytes. - - * ace/OS.h: except on WIN32 and Solaris (ACE_HAS_HI_RES_TIMER), - always typedef ACE_hrtime_t to ACE_UINT64. This changes removes - the dependence on ACE_HAS_64BIT_LONGS. - - * ace/OS.cpp (ACE_TSS_Keys): replaced ACE_HAS_64BIT_LONGS - dependence with ACE_SIZEOF_LONG == 8, and similarly for - determination of 4-byte longs. - - * tests/TSS_Test.cpp (worker): replaced ACE_HAS_64BIT_LONGS - preprocessor logic with a cast of the void * argument to a long. - A void * is the same size as a long on all currently supported - ACE platforms. The int cast is also there, to avoid compiler - warnings about narrowing. - - * tests/Time_Value_Test.cpp: replaced use of ! ACE_HAS_64BIT_LONGS - with ACE_SIZEOF_LONG == 4. - -Mon Dec 15 22:47:24 1997 Douglas C. Schmidt - - * ACE version 4.4.5, released Mon Dec 15 22:47:24 1997. - -Mon Dec 15 20:17:10 1997 Douglas C. Schmidt - - * ace/OS.cpp: Fixed pread() and pwrite() so that they work - correctly even if we don't support threads. Thanks to Irfan for - finding this. - - * ace/OS.i: Tried to fix the fstat() wrapper on Win32 so that - it does the right think for HANDLES. Thanks to Lori Anderson - for pointing this out. - -Mon Dec 15 15:36:07 1997 Nanbor Wang - - * ace/Thread_Manager.cpp (exit,wait): Changed these two functions - more for Chorus. Thanks again to Wei Chian - for providing the patch. - -Mon Dec 15 06:42:42 1997 David L. Levine - - * ace/Log_Msg.cpp (instance): on non-threaded platforms, only - allocate a new ACE_Log_Msg_message_queue if the (static) pointer - is 0. Thanks to Stephen Coy for - reporting this. - - * ace/config-linux-common.h: updated header comments about - autosensing the platform capabilities. - - * tests/Process_Strategy_Test.cpp: (parse_args): added DEBUG - message if an unsupported concurreny strategy is provided with - a -c option. - -Mon Dec 15 01:12:33 1997 - - * ace/Synch_T.h (ACE_Atmoic_Op::value_i): Explicitly return - (by reference). This gives the user full, unrestricted - access to the underlying value. This method will usually be - used in conjunction with explicit access to the lock. Use with - care ;-) - -Sun Dec 14 21:37:08 1997 Douglas C. Schmidt - - * ace/OS.i (cond_wait,cond_timedwait): Fixed a missing return to - handle the case where we're using USYNC_PROCESS for the external - mutexes. - - * ace/OS: Made the use of the waiters_lock_ mutex consistent in - the ACE_cond_t implementation. This was broken since we used - the external_mutex to serialize access to the waiters_ count - inconsistently. Thanks to Patrick J. McNerthney - for reporting this very subtle bug. - -Sun Dec 14 12:29:26 1997 Nanbor Wang - - * ace/Thread_Manager.cpp (exit,wait): Disabled thread join - functionality in Chorus. Thanks to Wei Chiang - for providing the fix. - -Fri Dec 12 21:48:38 1997 Torbjorn Lindgren - - * ace/config-linux*.h: All Linux platform files except the - Linux-KCC modified to use the upgraded common Linux - configuration file. Linux-KCC looks reasonably easy to do, - if no-one that actually have KCC takes care of it I can do - this one later. - - * ace/config-linux-common.h: Modernized and updated the common - Linux configuration file to handle more of the common - configuration stuff. Also added the beginning of proper - glibc and egcs support for Linux. - -Sat Dec 13 14:22:28 1997 - - * ace/Basic_Types.h: Changed _M_IX386 to _M_IX86. - -Fri Dec 12 19:41:42 1997 - - * ace, tests, version_tests: Updated Win32 makefiles (VC4.2 and - VC5.0) to include new Basic_Types_Tests. - - * tests/Basic_Types_Test.cpp (main): Updated to use - ACE_OS::getpagesize(). - - * ace/ACE.cpp (round_to_pagesize): Updated to use - ACE_OS::getpagesize(). - - * ace/OS.i (getpagesize): Added this to ACE_OS. - -Fri Dec 12 07:49:01 1997 David L. Levine - - * ace/OS.i (inet_addr): changed type of "valid" from bool to u_int. - This code is only seen on VxWorks. - - * ace/IOStream.h (ACE_Quoted_String::operator <): changed return - type from bool to int. - - * ace/config-vxworks*.h,README: removed ACE_LACKS_SOCKET_BUFSIZ; - added ACE_DEFAULT_MAX_SOCKET_BUFSIZ of 32768. - - * examples/IPC_SAP/SOCK_SAP/C-in{client,server}.cpp: added - support to optionally set socket buffer sizes. - - * examples/System_V_IPC/SV_Semaphores/Semaphores_2.cpp: - removed unused constant SHMSZ. - - * examples/Timer_Queue/Reactor_Timer_Queue_Test.cpp: removed - unused constant NO_OF_IO_HANDLERS. - - * ace/IOStream_T.h (ipfx,ipfx1): don't call setstate () on WIN32, - because MS VC++ 5.0 doesn't declare it. Thanks to Irfan for - reporting this. This "fix" is temporary, maybe, until we - figure out the proper fix. - - * ace/OS.h: cast the 1 in ACE_MSB_MASK to an fd_mask, to support - 64-bit fd_masks. I suspect that with this change, the - ACE_HAS_BROKEN_BITSHIFT used in config-tandem.h is no longer - necessary. - - Added Basic_Types: - * ace/Basic_Types.*,Makefile: Basic_Types defines the - following preprocessor macros: - - Sizes of built-in types: - ACE_SIZEOF_CHAR - ACE_SIZEOF_WCHAR - ACE_SIZEOF_SHORT - ACE_SIZEOF_INT - ACE_SIZEOF_LONG - ACE_SIZEOF_LONG_LONG - ACE_SIZEOF_VOID_P - ACE_SIZEOF_FLOAT - ACE_SIZEOF_DOUBLE - ACE_SIZEOF_LONG_DOUBLE - - Wrappers for built-in types of specific sizes: - ACE_INT16 - ACE_UINT16 - ACE_INT32 - ACE_UINT32 - ACE_UINT64 - (Note: ACE_INT64 is not defined, because there is no ACE_LongLong for - platforms that don't have a native 8-byte integer type.) - - Byte-order (endian-ness) determination: - ACE_BYTE_ORDER, to either ACE_BIG_ENDIAN or ACE_LITTLE_ENDIAN - ACE_BIG_ENDIAN or ACE_LITTLE_ENDIAN - - * ace/OS.*: moved ACE_U_LongLong to Basic_Types.*. - - * ace/OS.h: added #include . - - * ace/config-linux-common.h,README: added ACE_HAS_BYTESEX_H. - - * tests/Basic_Types_Test.cpp,run_tests.{bat,sh,vxworks),Makefile: - added new Basic_Types_Test. - - * tests/Time_Value_Test.cpp: removed ACE Version printout because - it is now in Basic_Types_Test. - -Fri Dec 12 03:00:21 1997 James C Hu - - * ace/config-sunos5.5-egcs-1.0.h: Fundamemntally identical to g++ - version, except added ACE_HAS_STDCPP_STL_INCLUDES, which is - taken to mean that the Standard C++ STL include files are - supported. - - * IOStream.h: Added #if's to handle the case where - ACE_HAS_STRING_CLASS, but if ACE_HAS_STDCPP_STL_INCLUDES, then - the string class is found in . Otherwise, it looks for - it in . - - * ace/OS.i: Re-implemented strcasecmp methods. Thought bad - implementations were related to a JAWS bug, but the hand - implementations are not used on Solaris. - -Thu Dec 11 23:20:57 1997 - - * ace/Strategies_T.cpp (activate_svc_handler): Changed the - parameter that was been passed into the open routine of - Svc_Handler. The that was passed to us is passed through - to open, rather than passing . Thanks to Mats Nilsson - for pointing this out. - - * ace/Connector.cpp (activate_svc_handler): Made sure that we pass - the connector pointer as the void* parameter to the svc_handler. - -Thu Dec 11 23:35:04 1997 Douglas C. Schmidt - - * ace/OS.i. The code was always calling dlsum for the _init() - hook, even if dlopen() failed. In addition to fixing this, I - also removed a potential handle leak. Thanks to Patrick - J. McNerthney for reporting this. - -Thu Dec 11 13:13:17 1997 David L. Levine - - * ace/LSOCK.cpp (recv_handle): fixed to remove compile errors and - warnings on platforms with both ACE_HAS_4_4BSD_SENDMSG_RECVMSG - and ACE_HAS_THREADS. The delta from version 4.3 of this file - is very small. Thanks to Kirill Rybaltchenko - for reporting this problem and - verifying the fix on LynxOS, the only affected platform. - - * ace/config-linux-kcc.h,include/makeinclude/platform_linux_kcc.GNU: - added linuxthreads support with the linux KAI C++ config. - Thanks to Ben Eng for the patches. - - * ace/IOStream_T.h: iostream fx emulation now skips whitespaces and - flushes when tied. Thanks to Ben Eng for the patch. - - * tests/IOStream_Test.cpp (server): check for double-quote instead - of newline as end-of-string character. Thanks to Ben Eng - for the patch. - - * tests/SV_Shared_Memory_Test.cpp: renamed "allocator" to - "myallocator" to avoid conflict with STL. Thanks to Ben Eng - for the patch. - - * include/makeinclude/platform_linux_lxpthread.GNU: protect - PRELIB definition with ifndef PRELIB, to allow overriding - without modifying the platform_macros.GNU file. Thanks to - James Johnson for this suggestion. - - * ace/IOStream_T.cpp: restored ACE_HAS_IOSTREAMH_INCLUSION - protection around the old g++ munch hack. There's no need - to trouble all (g++) platforms with its (4 byte) space penalty. - - * examples/IOStream/server/iostream_server.cpp (handle_input): - removed unused local "addr". - - * examples/Reactor/Dgram/{CODgram,Dgram}.cpp (run_test): added - return 0 at end so that the function always returns a value. - - * include/makeinclude/platform_lynxos.GNU: added comment indicator - to comment describing POSTLINK. - - * ACE-INSTALL.html: updated DEC CXX 6.0 test status: all tests pass - with the version of DIGITAL UNIX 4.0 and cxx 6.0 that we use. - -Wed Dec 10 23:57:00 1997 Chris Cleeland - - * ACE version 4.4.4, released Wed Dec 10 23:57:00 1997. - -Wed Dec 10 16:24:09 1997 - - * ace/Auto_Ptr.i: Apparently, the standard states that in order to - access members of a templated superclass from a templated - subclass, then the member name must be fully qualified. - Therefore, changed access to p_ to ACE_Auto_Basic_Ptr::p_. - Thanks to Stephen Coy for reporting this. - -Tue Dec 09 13:05:00 1997 - - * ace/Containers.cpp (copy_all_nodes): Added a temporary - ACE_Node pointer to get around the macro side effects. - -Sun Dec 7 10:20:46 1997 Douglas C. Schmidt - - * ace/Service_Config.cpp (parse_args): Added an appropriate macro - to switch from char * to UNICODE. Thanks to Timothy A. Brown - for reporting this. - - * ace/config-linux-*.h: Added ACE_HAS_GETRUSAGE_PROTO to all - the linux config files. Hopefully, this will help ACE to work - better with glibc. Thanks to Ernie Makris - and Torbjorn Lindgren for their help. - -Sat Dec 06 13:30:11 1997 Douglas C. Schmidt - - * ACE version 4.4.3, released Sat Dec 06 13:30:11 1997. - -Sat Dec 6 12:02:09 1997 Douglas C. Schmidt - - * examples/IOStream: Revised both the client and server to - demonstrate the ACE_IOStream functionality correctly. Also - added a README file explaining how to run the examples. Thanks - to James Johnson and Dustin Laurence - for suggesting this. - - * ace/IOStream_T: Added a new method eof() to the ACE_IOStream_T<> - class. This returns 1 if we've reached the end of the socket - stream, else 0. - -Fri Dec 5 16:58:29 1997 Douglas C. Schmidt - - * ace/Addr.h: Added a const ACE_Addr & instead of const ACE_Addr. - This will avoid an extra copy. Thanks to Irfan for noticing - this. - - * examples/Reactor/Dgram/CODgram.cpp: Also updated the CODgram - test to be just like the Dgram test. - - * examples/Reactor/Dgram/Dgram.cpp (main): Fixed a bug where it - was sending a huge buffer instead of just the string size. - Also, exit once we've finished the send. Finally, revised the - test so that it is easier to understand and so that it exits - properly. Thanks to Michael Hoffman - for reporting - this. - -Fri Dec 05 13:20:09 1997 David L. Levine - - * include/makeinclude/platform_vxworks5.x_ghs.GNU: added OFLAGS. - Thanks to Brian Mendel for suggesting these. - - * tests/IOStream_Test.cpp: updated to work with the standard C++ - library version of iostreams. That primarily involved not - using operator>>(char& c) and operator>>(char* c) for C strings. - Thanks to Ben Eng for the patch. - - * ace/OS.{h,i},config-osf1-4.0.h: fixed sigwait on DEC CXX 6.0/ - recent DEC UNIX 4.0. The fix keys off the compiler version, - though it probably should depend on the OS. It adds a - sigwait declaration, which is a current signal.h deficiency. - With this change, ACE builds and tests cleanly on DEC UNIX. - - * ace/config-vxworks5.x-g++.h: restored comment that explains - ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION. - - * netsvcs/lib/Makefile: the first line of the Local Target - (Server_Logging_Handler.*) override mysteriously disappeared, again. - -Fri Dec 5 12:15:49 1997 Chris Cleeland - - * ace/Select_Reactor.cpp: Made error messages on open failure more - verbose. Having these in place straightaway would have helped - track down some problems at Boeing much more effectively. - -Fri Dec 5 11:15:17 1997 Nanbor Wang - - * ace/Log_Msg.h (callers.): Added documentation for %I and %D - flags. Thanks to John Morey for reosting - this. - - * ace/Dynamic.h: - * ace/CORBA_Ref.h: - * ace/Token_Invariants.h: - * ace/Token_Collection.h: - * ace/Local_Tokens.h: - * ace/Remote_Name_Space.h: - * ace/Registry_Name_Space.h: - * ace/Strategies.h: - * ace/Name_Space.h: - * ace/Name_Request_Reply.h: - * ace/Naming_Context.h: - * ace/Name_Proxy.h: - * ace/Local_Name_Space.h: - * ace/Local_Name_Space_T.h: Corrected erroneous comments. These - files all contain incorrect filename info in the preambles which - make erroneous auto-generated man pages. - -Fri Dec 05 00:00:53 1997 - - * ace/OS.h: If the user wants minimum IOStream inclusion, i.e., - they have defined ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION, we will - just include the forward declarations, i.e., ace/iosfwd.h. Else - they will get all the stream header files, i.e., ace/streams.h. - The positive thing about this change is that if your code was - using stream classes and you were depending on OS.h to provide - you the stream header files, you will not have to change your - code, unless you have defined - ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION. Thanks to Dr. Schmidt for - suggesting this and thanks to David Levine for suggesting it to - Dr. Schmidt ;-). - - * ace/config-vxworks5.x-g++.h: Restored - ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION. - - * ace/Asynch_IO.cpp (open): Fixed typo. - -Thu Dec 04 21:20:47 1997 Douglas C. Schmidt - - * ACE version 4.4.2, released Thu Dec 04 21:20:47 1997. - -Thu Dec 4 19:45:04 1997 Douglas C. Schmidt - - * ace/Object_Manager.cpp (ACE_Object_Manager_Destroyer): Fixed a - bug in the - ACE_Object_Manager_Destroyer::~ACE_Object_Manager_Destroyer - thread comparison routine. Thanks to Steven Coy for this. Also - renamed _saved_main_thread_id to saved_main_thread_id_, which is - proper ACE style. - - * Updated the ACE-INSTALL.html file to explain why you don't need - to build everything all the time. Thanks to Dustin Laurence - for suggesting this. - - * tests/SOCK_Connector_Test.cpp (fail_no_listener_nonblocking): - Added a check for ENETUNREACH. Thanks to Dustin Laurence - for reporting this. - - * ace/Asynch_Acceptor.cpp (open): Changed the local variable named - sap_any to sa to avoid conflicts with the new sap_any macro. - - * ace/Asynch_IO: Made the ACE_Service_Hanlder::open() method - non-virtual to work around bugs with Borland C++. Thanks to - Valik Solorzano Barboza for suggesting this. - - * ace/ACE.cpp (COMPUTE): Put parens around elements the COMPUTE - macros so that it will work on Borland C++. Thanks to Valik - Solorzano Barboza for suggesting this. - - * ace/config-win32-common.h: Added ACE_HAS_BROKEN_SAP_ANY to deal - with Borland C++ bugs. Thanks to Valik Solorzano Barboza - for suggesting this. - - * ace/Addr: Added a workaround for the Borland C++ problems. This - introduces a new global macro called sap_any. However, this is - only used for Borland, so it should be ok. Thanks to Valik - Solorzano Barboza for suggesting this. - - * ace/LSOCK.cpp (recv_handle): Make the code smarter if we've got - both STREAMS and 4_4BSD_SENDMSG_RECVMSG. - - * Reran "make depend" over all of ACE. - - * netsvcs/clients/Logger/indirect_logging.cpp (main): Changed - LOGGING to LOGGER. Thanks to Irfan for noticing this. - - * netsvcs/lib/Client_Logging_Handler: Changed "rendezvous" to - "logger." - - * netsvcs/clients/Logger/indirect_logging.cpp, - netsvcs/lib/Client_Logging_Handler: Changed DEFAULT_RENDEZVOUS - to DEFAULT_LOGGER_KEY. Thanks to Steven Coy for pointing out - this inconsistency. - - * ace/OS.h: Renamed ACE_LOGGER_KEY to ACE_DEFAULT_LOGGER_KEY to - make it consistent with other ACE_DEFAULT_* names. - - * ace/OS.h: Changed the definition for ACE_LOGGER_KEY so that it - defaults to "localhost:10015" on platforms that don't support - ACE STREAM Pipes. Thanks to Steven Coy for suggesting this. - - * ace/Service_Config.cpp: Added the -k option to parse_args() so - that the user can set the logger key. Thanks to Steven Coy for - suggesting this. - - * ace/Service_Config: Added the logger_key as a parameter to the - other open() method, as well. Thanks to Steve Coy for being - picky ;-). - - * netsvcs/clients/Logger/direct_logging.cpp (main): Modified the - code to use the new framing scheme. - - * netsvcs/lib/Server_Logging_Handler_T.cpp - (handle_logging_record): Updated the code to take advantage of - our new framing scheme. - - * netsvcs/lib/Client_Logging_Handler.cpp (send): We can be smarter - now about sending the ACE_Log_Record across the network since - the length field is now fixed and it's guaranteed to be in the - first 4 bytes. Thanks to Steve Coy for suggesting this. - - * ace/Log_Record.h (ACE_Log_Record): Replaced the horribly - non-portable "long length_" field with the "ACE_INT32 length_" - field, which is nice because it is portable across platforms - with different long-word sizes. - -Thu Dec 04 09:57:40 1997 David L. Levine - - * include/makeinclude/platform_osf1_4.GNU: allow enabling of - WARNING_FLAGS by setting CXX_VER to POST_5X. Thanks to - James Johnson for this suggestion. - - * ace/Svc_Conf_l.cpp: rebuilt with Doug's flex. - -Thu Dec 04 03:46:04 1997 - - * ace/Makefile (Svc_Conf_l.cpp): Changed the sed macros to produce - OS.h include instead of stdcpp.h. - - * ace/Svc_Conf_l.cpp: Updated after code was regenerated using the - new sed changes in the Makefiles. Currently there are two - inclusions of OS.h in this file and an extra stdlib.h. Maybe - someone more experienced in sed can take these out by updating - the Makefile. - - * ace/IOStream_T.h (stdcpp.h): Removed inclusion of stdcpp.h. It - is redundant because IOStream.h includes it. - - * ace/streams.h: New file. This files tries to reduce the - differences between the old and new stream libraries for the - user. This is done by automatically selecting the correct - includes depending on the ACE_HAS_STANDARD_CPP_LIBRARY variable. - This file also helps out by making commonly used classes (e.g., - ios, ostream, iostream, cin, cout, etc) available in the global - name space when used with the Standard C++ Library. Use this - file where you would usually include or . - - * ace/iosfwd.h: New file. This files deals with forward - declaration for the stream classes. Remember that since the new - Standard C++ Library uses templates for the implementation of - the streams, simple forward declaration will not work. Classes - forward declared by this class include: - - ios - streambuf - istream - ostream - iostream - filebuf - ifstream - ofstream - fstream - - Use this file where you would usually forward declare the - classes listed above. - - * ace/stdcpp.h: Removed this file from the repository. This file - was trying to do too much. All the inclusion of the C Library - headers were unnecessary. This is because the new C++ standard - preserves the old C library include files. The functions from - those files will still be in the global namescape. The new - header files (e.g., cstdio), provides the same prototypes as the - old files (e.g., stdio.h), except that all prototypes are in the - std namespace. Since we want the old behavior and global - prototypes (for backward compatibility), inclusion of the new - header files was incorrect. - - stdcpp.h was included by OS.h. This caused almost all files to - force the inclusion of the stream header files. This was - changed so that OS.h only includes the ace/iosfwd.h file. This - means that if your code was using stream classes and you were - depending on OS.h to provide you the stream header files, you - will have to change your code to either include iostream.h or - iostream, or more portably ace/streams.h. - - * ace/OS.h: Removed stdcpp.h. Moved the standard C library - includes from stdcpp.h to OS.h. Also added ace/iosfwd.h to give - forward declaration for the stream classes. - - * ACE: Added explicit inclusion of ace/streams.h to the following - files: - - ace/IOStream.cpp - ace/Log_Record.cpp - ace/OS.cpp - ace/SString.cpp - ace/Log_Msg.cpp - tests/test_config.h - examples/Log_Msg/test_log_msg.cpp - examples/Reactor/Misc/test_time_value.cpp - examples/Threads/task_three.cpp - netsvcs/lib/Logging_Strategy.cpp - examples/Logger/Acceptor-server/server_loggerd.cpp - examples/ASX/UPIPE_Event_Server/event_server.cpp - examples/Reactor/Ntalker/ntalker.cpp - examples/Shared_Malloc/test_persistence.cpp - examples/System_V_IPC/SV_Message_Queues/MQ_Server.cpp - examples/System_V_IPC/SV_Message_Queues/MQ_Client.cpp - examples/System_V_IPC/SV_Message_Queues/TMQ_Server.cpp - examples/System_V_IPC/SV_Message_Queues/TMQ_Client.cpp - - * Updated makefile dependencies throughout ACE to reflect the - removal of stdcpp.h and the addition of streams.h. - - * examples/Threads/barrier2.cpp: Removed inclusion of stdcpp.h. - - * ace/IOStream_T.cpp: Reorganized include files so that inclusion - of config.h is not necessary. - - * ace/IOStream.cpp: Changed inclusion of config.h to OS.h. - - * ace: Removed config.h from the following files. It was - redundant. - - Timer_Hash.cpp - Timer_Heap.cpp - Timer_List.cpp - Timer_Queue.cpp - Timer_Wheel.cpp - - * ace: Added code to protect against multiple inclusions of - config.h. Following files were effected: - - Trace.cpp - Log_Msg.cpp - - * ace/config-win32-common.h: Removed redundant definitions of - ACE_HAS_TYPENAME_KEYWORD and ACE_HAS_SIG_ATOMIC_T. Thanks to - Matthias Kerkhoff for pointing this out. - -Wed Dec 3 21:37:47 1997 Douglas C. Schmidt - - * Added the new ACE-inheritance.ps and pdf files, which show the - class structure of ACE. Thanks to John Lindal - for generating this. - - * ace/Service_Config: Removed the static logger_key_ member and - replaced it with a (defaulted) parameter to open(). This is - more flexible. Thanks to Steve Coy for the suggestion. - - * ace/Service_Config.h: Addressed all the "@@" questions. - - * examples/IPC_SAP/SOCK_SAP/CPP-inclient.cpp (main): Fixed a - subtle bug in the "quit" logic. Thanks to Michael Hoffman - for reporting - this. - - * netsvcs/lib/Server_Logging_Handler_T.cpp (handle_logging_record), - netsvcs/lib/Client_Logging_Handler.cpp (send): - Changed the code so that we now always send ACE_UINT32 bytes - worth of data for the length field. This ensures we're portable - across platforms. Thanks to Steven Coy for noticing this. - -Wed Dec 03 18:02:09 1997 - - * performance-tests/Synch-Benchmarks/Benchmark.cpp: Added template - instantiations for Atomic_Op. - -Wed Dec 3 10:29:58 1997 Carlos O'Ryan - - * ace/ACE.cpp: - Use ACE_UINT32 to compute the 32-bit CRC, on Alphas (and - probably other 64 bit machines) u_long seems to be longer than - that. - -Wed Dec 03 07:39:15 1997 Steve Huston - - * include/makeinclude/platform_hpux.GNU: - * include/makeinclude/platform_hpux_gcc.GNU: Moved some compile options - from the DCFLAGS to the CCFLAGS to compile correctly with or without - debugging. - -Wed Dec 03 06:26:14 1997 David L. Levine - - * ace/Future.cpp, - tests/{Future_Test,Reactors_Test,Reader_Writer_Test.cpp, - examples/Threads/manual_event.cpp: - moved ACE_Atomic_Op instantiation from - ace/Future.cpp to where it is used. - - * ace/OS.cpp (inet_aton): return 0 if addr argument is 0. Thanks - to Wei for reporting this. - - * ace/config-linux.common.h: set an ACE_DEFAULT_BASE_ADDR, on Alpha - for now. This might be necessary on Intel as well. - - * ace/OS.{h,i}, config-osf1-4.0.h: fixed use of ::sigwait with - DIGITAL_UNIX's cxx 6.0, which now uses ACE_HAS_ONEARG_SIGWAIT. - Also, added an ACE_DEFAULT_BASE_ADDR to the config file. - - * tests/{Priority_Reactor_Test,Reactor_Performance_Test}.cpp: - instantiate ACE_Map_*, for use by ACE_Connector, with ACE_HANDLE - instead of int. That's the way it's declared in ace/Connector.h. - -Wed Dec 03 00:17:50 1997 - - * tests/test_config.h: Removed code for - ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION, as this option is no longer - necessary. - - * ace/stdcpp.h: Removed code for - ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION, as this option is no longer - necessary. - - * ace/config-vxworks5.x-g++.h: Removed - ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION. This flag is no longer - required. - - * ace/IOStream_T.cpp: Removed ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION - from #if defined. - - * ACE: Removed the explicit iostream.h inclusion from these: - - examples/ASX/UPIPE_Event_Server/event_server.cpp - examples/Log_Msg/test_log_msg.cpp - examples/Logger/Acceptor-server/server_loggerd.cpp - examples/Reactor/Misc/test_time_value.cpp - examples/Shared_Malloc/test_persistence.cpp - examples/Threads/task_three.cpp - netsvcs/lib/Logging_Strategy.cpp - - * ace/IOStream.h: Darrell missed removing this explicit iostream.h - inclusion. - - * ace/Future.cpp: Removed template instantiation of Atomic_Op - since Atomic_Op is not used by Future. - -Fri Dec 02 11:46:17 1997 - - * ace/Proactor.cpp (ACE_Proactor): Reenabled Proactor's thread - manager to wait on its Timer_Handler thread. - - * ace/Thread_Manager.cpp (close_singleton): Removed Win32 specific - codes. This is no longer necessary with above changes. - (wait): Close down thread handles when removing detached - threads. Avoid performing wait when the program is shutting - down. - (remove_thr_all): Extracted out this protected member function. - (close): Changed to use the new remove_thr_all function. - - * ace/Proactor.cpp (handle_events): Changed the magic number 258 - to WAIT_TIMEOUT. Thanks to Mark Rabotnikov - for pointing this out. - -Tue Dec 02 14:13:15 1997 Steve Huston - - * include/makeinclude/platform_hpux_aCC.GNU: Moved some compile options - from the DCFLAGS to the CCFLAGS to compile correctly with or without - debugging. Thanks to Istvan Buki for reporting - the problem. - -Tue Dec 02 06:16:39 1997 David L. Levine - - * ace/Object_Manager.cpp (~ACE_Object_Manager_Destroyer): don't - delete the ACE_Object_Manager if not destroyed by the main - thread. That can cause problems, at least on WIN32. And - it should only happen under exceptional conditions, at least - on WIN32. Thanks to Ari Erev and - John Neystadt for suggesting this. - - * ace/IOStream.cpp (underflow,overflow): moved get_mode_ and - put_mode_ accesses so that it now works on KAI C++. - Thanks to Ben Eng for the patch. - - * ace/config-linux-kcc.h: commented out ACE_TEMPLATES_REQUIRE_SOURCE. - Thanks to Ben Eng for this update. - - * ace/Profile_Timer.cpp (elapsed_time): changed - ACE_ONE_SECOND_IN_USECS to ACE_ONE_SECOND_IN_NSECS. Thanks - to Wei for noticing this. - - * ace/OS.cpp (inet_aton): removed CHORUS specialization. - Thanks to Wei for reporting this. - - * include/makeinclude/platform_chorus.GNU: added CHORUS = 1, - for use by individual Makefiles. - - * examples/Shared_Malloc/test_persistence.cpp: removed - ACE_Malloc - instantiation because it's in ace/System_Time.cpp. - - * ace/config-lynxos.h: removed ACE_HAS_UALARM, because LynxOS - apparently doesn't. - - * include/makeinclude/platform_lynxos.GNU: added -Winline and - removed -fno-strict-prototypes. - - * tests/Message_Queue_Test.cpp (main): increased queue size from - default of 16Kb to 32Kb, so that it runs on machines with 8Kb - pagesizes. And, added a check to see if the queue is full - before enqueuing. - - * ace/OS.i, config-osf1-4.0.h: DECXX 6009006 has SIGWAIT. - - * ACE-INSTALL.html: updated DEC_UNIX test status. Message_Queue_Test - and all of the Mutex_Tests now pass. Conn_Test no longer does. - -Tue Dec 02 00:18:04 1997 - - * ace/Memory_Pool.cpp (handle_signal): If guess_on_fault_ is true, - then we cannot call remap(0). This will always put the address - out of range. Therefore, we will shoot in the dark (user has - instructed us to do so as guess_on_fault_ is true) and try to - remap the file. If the user does not want this behavior, the - guess_on_fault_ flag should be turned off. Thanks to Jon - Prettyman for pointing this out. - -Mon Dec 01 16:13:06 1997 - - * ace/config-win32-common.h: Added back ACE_LACKS_ACE_IOSTREAM to - the config file. The test is not compiling. - - * tests/run_tests.bat: Look for "Win32 structured exception" in - the log files. - -Mon Dec 1 14:01:02 1997 Darrell Brunsch - - * ace/Log_Msg.cpp, ace/Log_Msg.h, ace/Log_Record.cpp, - ace/Log_Record.h ace/OS.h, ace/stdcpp.h, tests/test_config.h: - - Changed use of ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION in stdcpp.h - to include iostream when the above is #defined. Made - changes to other files to accommodate this change. - -Mon Dec 01 12:15:00 1997 - - * ace/config-win32-common.h (ACE_LACKS_ACE_IOSTREAM): James CE - Johnson claims that ACE_LACKS_ACE_IOSTREAM is no longer not - necessary when using the ACE_HAS_STANDARD_CPP_LIBRARY. - - * ace/OS.h: Changed the definition of ACE_UNIMPLEMENTED_FUNC so - that it just evaporates on platform that have - ACE_REQUIRES_FUNC_DEFINITIONS defined. - - ACE_UNIMPLEMENTED_FUNC is only required for template classes and - not for a normal class. When the template is explicitly - instantiated, it causes some compilers to look for the - definition of all the declared methods. - - On platforms that have this behavior, we have decided to take - out the declaration of this function. This is necessary since - an empty definition of {} usually does not work with some - constructors. And by providing a explicit definition of this - function, will cause all platforms to suffer. - - Therefore, platforms with ACE_REQUIRES_FUNC_DEFINITIONS defined - must be specially careful when using this. - -Mon Dec 01 07:56:02 1997 David L. Levine - - * include/makeinclude/platform_sunos5_sunc++.GNU: added - -xildoff to LDFLAGS, to avoid occasional problems with - the incremental linker. Thanks to Hans Rohnert - for this suggestion. - - * include/makeinclude/platform_vxworks5.x_g++.GNU, - etc/ace_ld, bin/ace_ld, ACE-INSTALL.html: - moved ace_ld from etc/ to bin/. - - * Makefile: added etc/ to CLONE and RELEASE_FILES. - - * include/makeinclude/platform_lynxos.GNU: added -Wall to CFLAGS. - - * ace/ACE.cpp (set_handle_limit): only call setrlimit if - RLIMIT_NOFILE is #defined. - - * ace/OS.h: removed ACE_HAS_STDARG_THR_DEST dependence for - ACE_THR_DEST definition. - - * ace/OS.cpp (thr_keycreate): with ACE_HAS_DCETHREADS only, cast - dest argument to ::pthread_keycreate if ACE_HAS_STDARG_THR_DEST. - - * ace/OS.i (get{host,proto,serv}by{addr,name}_r): with - ACE_HAS_NONCONST_GETBY only, added some ACE_UNUSED_ARGS. - - * examples/Shared_Malloc/Malloc.cpp: removed - ACE_Guard instantiation because it's in - ace/Synch.cpp. - - * ace/config-lynxos.h: added ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS. - Without it, the Thread_Manager went recursively ballistic. - - * performance-tests/Misc/preempt.cpp (main): fixed printout if - ACE_OS::sched_params () call failed. - -Sun Nov 30 22:44:50 1997 Douglas C. Schmidt - - * ACE version 4.4.1, released Sun Nov 30 22:44:50 1997. - -Sun Nov 30 20:32:50 1997 David L. Levine - - * include/makeinclude/platform_osf1_3.2.GNU: removed -ptr option - from CCFLAGS, so the default template repository will be used. - Thanks to Dani Flexer for reporting this. - - * ace/Svc_Conf_l.cpp,Makefile: - 1) #include ace/stdcpp.h instead of stdio.h so that anything - that needs to be #included with/before stdio.h can be. - 2) Changed ECHO to ACE_SVC_CONF_ECHO to avoid compiler warning if - ECHO was #defined to be a constant. - - * ace/Makefile: set ACELIB to null so that it can be used to build - shared libs, including libACE.$(SOEXT). - - * include/makeinclude/platform_osf1_4.0.GNU: added $(ACELIB) to - SOFLAGS to avoid shared lib build warnings about undefined ACE - symbols. - - * ace/Thread_Manager.h: declare ACE_THR_MEMBER_FUNC outside of - ACE_Thread_Manager class with __GNUG__ instead of with - VXWORKS || IRIX5. The problem is with older versions of g++, - not with the OS. - -Sun Nov 30 14:13:09 1997 Douglas C. Schmidt - - * netsvcs/servers/README: Clarified a bit more about how to - configure the client and server logging processes. Thanks to - Neil Cohen for motivating this. - -Sun Nov 30 17:36:35 1997 Sergio Flores - - * ace/Synch.cpp (ACE_File_Lock): Fixed order of parameters in the - call to this->open() and too many arguments in call to - ACE_File_Lock::open(). - -Sun Nov 30 16:31:41 1997 Carlos O'Ryan - - * ace/Synch.h: - * ace/Synch.cpp: - ACE_File_Lock should create the file if it does not exist, to do - so the constructor takes the parameter to ACE_OS::open() - and defaults to O_CREAT|O_RDWR. - -Sat Nov 29 21:31:07 1997 Nanbor Wang - - * ace/Proactor.cpp (~ACE_Proactor_Timer_Handler): Removed explicit - call to thr_mgr_.close(). - (ACE_Proactor): Be sure to ask Thread_Manager not to wait for - the timer_handler_ thread. - - * ace/Thread_Manager.cpp (close_singleton): Only reset - exit_on_wait status if we are responsible for deleting the - global thread manager. - -Sat Nov 29 15:15:04 1997 Carlos O'Ryan - - * ace/IPC_SAP.cpp: - Removed warning for functions not returning a value on SGI, it - seems that the flow changed and the last return was reached - sometimes, hence the ACE_NOTREACHED macro is no longer needed. - -Sat Nov 29 13:12:47 1997 Douglas C. Schmidt - - * ace/Synch: Conditionally inlined all the ACE_Process_Mutex - wrapper calls and moved them into the Synch.i file. I'm not - sure why there weren't here before. - - * ace/Synch: Reimplemented ACE_RW_Process_Mutex to use - ACE_File_Lock, which provides the proper readers/writer - semantics that had been lacking in the previous implementation. - -Fri Nov 28 04:25:23 1997 Nanbor Wang - - * ace: Removed redundant trailing commas from - ACE_UNIMPLEMENTED_FUNC. - - * ace/Thread_Manager.{h,i,cpp}: Delete declaration of - remove_thr_self. It is no longer in use. - (wait_on_exit): Added this function to let users specify whether - they want their Thread_Manager wait for spawned threads on exit - or not. - (wait): On Win32, handles should be closed if we decide to let - the thread go wild. - (remove_thr): Added another parameter to control whether - remove_thr should close the handle or not. It is only used on - Win32. - (close): Removed the parameter for it has been - incoporated as a member. - (close_singleton): Reset on Win32. We'll never - need to wait for unfinished threads on NT. - (ACE_Thread_Manager): Added initialization of member - . It is default to 1 (wait on exit.) - - * ace/Containers.h: Corrected erroneous comments. - -Wed Nov 26 10:33:22 1997 - - * ace/Log_Msg (msg): Changed the parameters from char * to const - char *. - - * ace: Added unimplemented copy constructors and assignment - operators to the following classes: - - ACE_Map_Manager - ACE_Message_Block - ACE_Data_Block - ACE_Log_Msg - ACE_Message_Queue - ACE_Task - ACE_Task_Base - - Added ACE_UNIMPLEMENTED_FUNC macros to these classes: - - ACE_Mem_Map - ACE_Priority_Reactor - ACE_Select_Reactor - ACE_WFMO_Reactor - ACE_XtReactor - ACE_Reactor - ACE_Read_Buffer - ACE_CORBA_Handler - ACE_TSS_TPQ_Entry - ACE_Object_Manager - ACE_File_Lock - ACE_Semaphore - ACE_RW_Mutex - ACE_Mutex - ACE_Null_Barrier - ACE_Null_Condition - ACE_Null_Mutex_Guard - ACE_Event - ACE_Thread_Mutex - ACE_Thread_Mutex_Guard - ACE_Condition_Thread_Mutex - ACE_Recursive_Thread_Mutex - ACE_Barrier - ACE_Condition - - Thanks to Stanley D Leeson for these - suggestions. - -Sat Dec 20 14:57:30 1997 - - * All MSVC 5.0 project files: Removed unnecessary library - inclusions. Most of them are not necessary. Thanks to - Patrick J. McNerthney for suggesting - this. - -Wed Nov 26 15:49:14 1997 David L. Levine - - * ace/IOStream_T.i (recv) affects WIN32 only: fixed typo, - ACE_BIT_ENABLED instead of ACE_BIT_ENTABLED IOStream_T.i. - Thanks to James CE Johnson for reporting this. - - * include/makeinclude/platform_lynxos.GNU: added information - on necessary OS patches. - -Wed Nov 26 09:45:43 1997 Chris Cleeland - - * ace/OS.h (ACE_PROPER_SINGLETON_INSTANTIATION): Corrected - misspelling in the "! defined (MSC_VER)" branch. I just happened - to notice this, so I don't know if anybody ever tried it and it - failed. - -Tue Nov 25 12:07:07 1997 David L. Levine - - * include/makeinclude/platform_osf1_3.2.GNU: updated for - OSF/1 3.2g/CXX 5.7. Thanks to Dani Flexer - for the updates. - -Tue Nov 25 01:07:39 1997 - - * examples/Reactor/Proactor/test_multiple_loops.cpp (main): Made - sure that the Proactor was removed from reactor. - - * ace/WFMO_Reactor.cpp (remove_handler_i, - remove_suspended_handler_i): Make sure to preserve DONT_CALL - with normal event entries. - - * ace/Proactor.cpp: - - - A flag used to indicate when we are shutting down. - - - Made sure to signal the timer event when we are closing down. - - - Thread Manager: don't bother to wait (since the thread may have - already gone). But make sure to close up the descriptor. This - may not be necessary in the future when THR_DETACHED is - correctly implemented. - - * ace/Asynch_IO.h: Changed some code from protected to public. - Even though these functions are really protected, sometimes it - simplifies user code to be able to "fake" a result. Users - should use these with care. - - * examples/Reactor/Proactor/test_proactor.cpp - (handle_write_stream): Added code for partial write to socket. - However it ever seems to do a short write ;-). Also made sure - that the initial data coming from the AcceptEx call is also - dumped to the file. Thanks to Mark Rabotnikov - (mark@netmanage.co.il) for pointing this out. diff --git a/ChangeLog-98b b/ChangeLog-98b deleted file mode 100644 index 13ad5c9005d..00000000000 --- a/ChangeLog-98b +++ /dev/null @@ -1,12943 +0,0 @@ -Thu Dec 31 13:25:53 1998 James CE Johnson - - * docs/tutorials/019/server[2].cpp: - Test that the segment was created. If it already existed, the - malloc() will return 0 and we'll crash. - -Thu Dec 31 12:10:46 1998 Carlos O'Ryan - - * tests/RB_Tree_Test.cpp: - Added missing template instantiation, actually it seems that the - IRIX MIPSPro compiler was not doing recursive instantiation. - - * ace/ACE.cpp: - Use ACE_NOTREACHED in ACE::set_handle_limit(), the IRIX compiler - was complaining again. - -Thu Dec 31 10:58:11 1998 David L. Levine - - * ace/Containers_T.cpp (ACE_Fixed_Set::insert): removed - blank line between function header and body. - -Thu Dec 31 09:40:09 1998 Douglas C. Schmidt - - * ace/SOCK_Stream: Added a new ACE_SOCK_Stream constructor that - initializes the underlying ACE_HANDLE automagically. - -Wed Dec 30 17:07:21 1998 Douglas C. Schmidt - - * ace/Containers_T.h: Clarified that the insert() method on - ACE_Unbounded_Stack doesn't allow duplicates. Thanks to Susan - Liebeskind for reporting - this. - -Wed Dec 30 14:41:56 1998 Carlos O'Ryan - - * ace/ACE.cpp: - Sometimes the get_ip_interfaces routine was returning 0.0.0.0 as - a valid address, we explicitly avoid that now. - -Wed Dec 30 14:34:44 1998 Nanbor Wang - - * bin/GenExportH.BAT: Added '\$\I\d\$' string in generated file. - Also in generated file, make XXX_HAS_DLL defined to 1 if it - isn't defined already. - -Wed Dec 30 13:22:50 1998 Chris Gill - - * ace/Functor.{cpp, h, i} - ace/Functor_T.{cpp, h, i} - ace/Hash_Map_Manager.{h, i} - ace/Hash_Map_Manager_T.{h, i}: Moved ACE_Hash and ACE_Equal_To - STL-style functors from the Hash_Map_Manager files into the - Functor files (so other containers can use these from a central - place). Added ACE_Less_Than STL-style functor. Thanks to Doug - Schmidt, Carlos O'Ryan, and Irfan Pyarali for comments on the - distinctions between GOF command pattern functors and STL-style - functors. - - * ace/RB_Tree.{cpp, h, i}: Reworked templates so RB_Tree can take - advantage of template specialization for strcmp semantics without - the overhead of a virtual function call. Thanks to Carlos O'Ryan - for his suggestions on how to achieve this. - - * ace/OS.h - ace/config-psos-diab.h - include/makeinclude/platform_psos_diab.GNU - tests/Handle_Set_Test.cpp - tests/Process_Strategy_Test.cpp - tests/RB_Tree_Test.cpp - tests/Reactor_Performance_Test.cpp - tests/TSS_Test.cpp: A number of fixes to allow ACE pSOS tests to - compile and link successfully. - -Wed Dec 30 10:36:36 1998 David L. Levine - - * tests/Env_Value_Test.cpp: protected tests of doubles with - #ifndef ACE_LACKS_FLOATING_POINT, so that the test will - build for our Chorus platform. - -Tue Dec 29 16:24:24 1998 David L. Levine - - * bin/Service_Config.perl,auto_ptr.perl,corba-boolean.perl, - rename-ace.pl: use perl from user's path, so we don't have - to hard-code its location. - - * tests/Time_Value_Test.cpp: don't test ACE_U_LongLong if - the platform defines ACE_LACKS_LONGLONG_T, e.g., GreenHills, - because it makes a big mess. - - * bin/Hash_Map_Manager.pl,Hash_Map_Manager_Helper.csh: - translated Hash_Map_Manager_Helper.csh from csh to sh. - Renamed Hash_Map_Manager_Helper.csh to Hash_Map_Manager_Helper. - - * docs/ACE-guidelines.html: specifically disallow csh scripts. - -Tue Dec 29 15:09:15 1998 Douglas C. Schmidt - - * ACE version 4.6.10 released. - -Tue Dec 29 14:57:24 1998 Douglas C. Schmidt - - * docs/tutorials/{019,020}: Checked out the two new tutorials - from James Johnson. - -Tue Dec 29 14:37:57 1998 Douglas C. Schmidt - - * ACE version 4.6.9 released. - -Tue Dec 29 13:32:50 1998 Nanbor Wang - - * ace/OS.h (ACE_SELF): Changed it's definition from -1 to 0 on NT - to avoid warings from Intel C++. ACE_SELF is not used on NT. - Thanks to Karel Zuiderveld for - reporting this. - -Tue Dec 29 10:29:03 1998 Douglas C. Schmidt - - * ace: Fixed a bunch of warnings produced by Intel's C++ 4.0 - compiler. Thanks to Karel Zuidrveld - for reporting these. - -Tue Dec 29 09:47:48 1998 David L. Levine - - * ace/config-sunos*.h,README: - restored ACE_TIMER_SKEW, with explanatory comment. - -Mon Dec 28 23:12:59 1998 Douglas C. Schmidt - - * ace/DLL.h, - ace/Mem_Map.h, - ace/Read_Buffer.h: - Added ACE_UNIMPLEMENTED_FUNC() macros to these headers. - -Wed Dec 28 22:55:55 1998 Kirthika Parameswaran - - * ace/DLL.h: Prevent copying and assignment by putting these - methods in the private part of the class. - -Mon Dec 28 17:57:25 1998 James CE Johnson - - * docs/tutorials/020/*: - Sooner than expected... A brief and basic intro to using - ACE_Shared_Memory_MM. - - * docs/tutorials/online-tutorials.html: - Linked in 019 and 020 - -Mon Dec 28 16:32:42 1998 James CE Johnson - - * docs/tutorials/019/*: - At long last, a basic Tutorial on ACE_Shared_Memory_SV. With - luck, 020 will be added soon to cover ACE_Shared_Memory_MM - -Mon Dec 28 11:21:40 1998 Douglas C. Schmidt - - * ace/Strategies.h: Put the "virtual" keyword in from of the - ~ACE_Reactor_Notification_Strategy to make it clear - that this destructor is virtual. Thanks to Greg Gallant - for pointing this out. - -Mon Dec 28 11:12:08 1998 David L. Levine - - * ACE-INSTALL.html: added SunOS 5.7 (Solaris 7) info. - -Mon Dec 28 10:52:20 1998 Carlos O'Ryan - - * */Makefile: - Updated dependencies. - -Mon Dec 28 02:34:59 1998 Nanbor Wang - - * examples/Service_Configurator/IPC-tests/server/server_test.cpp - (main): Allow loading in static services in this application. - Thanks to Peter J. Mason for reporting this. - - * ace/Service_Config.{h,i,cpp} (ACE_Service_Config): Changed the - default value of to 1. Otherwise, it is - not consistent with the initial value of - ACE_Service_Config::no_static_svcs_ and that's very confusing. - (open): Added one more argument with - default value of 1. This allow us to turn off this behavior - when opening Service_Config. Otherwise, the only other way is - to create a fake ACE_Service_Config and use that to change the - static variable . - -Sun Dec 27 21:51:10 1998 David L. Levine - - * etc/purify.solaris2: added a couple of MIU suppressions for - SunOS 5.7's thread library. - -Fri Dec 25 08:23:51 1998 Douglas C. Schmidt - - * ACE-INSTALL.html: Fixed a broken link to the ACE FAQ. Thanks to - Barry Hoggard for reporting this. - -Fri Dec 25 01:55:32 1998 Irfan Pyarali - - * ace/Hash_Map_Manager: There are two problems with the current - implementation of Hash_Map_Manager: - - (a) It requires a hash() method on the key type. If it is not - possible for the key type to have a hash() function (e.g., - the key is a primitive type such as an int, or is a pointer - type, or a three party class), the usual solution is to do - partial template specialization. - - This is usually not a very good option since some compilers - do not support partial template specialization. - - (b) The second problem is with comparing two keys. - Hash_Map_Manager assumes that keys can be compared using - operator==. This assumption causes problems in some cases, - e.g., when using char * as the key. Usually with char *, - you want to use strcmp and not compare pointers. - - Solution to these two problems is the new Hash_Map_Manager_Ex - class. Problem (a) is addressed by using a function object - the - type of which is specified by the user as an additional template - parameter. Problem (b) is addressed by using another function - object - the type of which is specified by the user as an - additional template parameter. So the new Hash_Map_Manager_Ex - takes five template parameters: - - - - Backward compatibility: Hash_Map_Manager now inherits from - Hash_Map_Manager_Ex, fixing the hash_key function object (which - simply calls key.hash()) and fixing compare_keys (which simply - uses operator== on the keys). - - There will be one problem: Users of compilers that do not - implicitly instantiate templates will have to update their list - of template instantiations. To help with this, please see - $ACE_ROOT/bin/Hash_Map_Manager_Helper.csh - - Other miscellaneous changes: Added two new classes: ACE_Hash - and ACE_Equal_To. ACE_Hash assumes a hash() method on T. - ACE_Equal_To compares by using operator==. However, the - ACE_Hash class has been specialized to work with: - - char, signed char, unsigned char, - short, unsigned short, - int, unsigned int, - long, unsigned long, - const char *, char *, - const wchar_t *, wchar_t *, - const ACE_USHORT16 *, ACE_USHORT16 *, - - Also, ACE_Equal_To has been specialized to work with: - - const char *, char *, - const wchar_t *, wchar_t *, - const ACE_USHORT16 *, ACE_USHORT16 *, - - Remember, you don't have to use these specialization. You can - always create your own. - - If we had default template parameters, we could default hash_key - to ACE_Hash and compare_keys could default to - ACE_Equal_To. - - BTW, note that the specialization with ACE_Hash and ACE_Equal_To - is not partial template specialization. It is complete template - specialization, and we don't know of compilers that cannot - handle complete template specialization. - - Since we now have template specialization, Hash_Map_Manager_T.* - files were created. I also took this opportunity to inline most - of the Hash_Map_Manager functions. - - Also, update the makefiles and project files. - - BTW, these changes grossly simplified - tests/Hash_Map_Manager_Test.cpp and tests/Map_Manager_Test.cpp. - These tests will now work with compilers that do not support - partial template specialization. Maybe James can change - Filecache to take advantage of these changes. - - Updated the following files with the new template instantiations: - - ace/Filecache.cpp - ace/Local_Name_Space.cpp - ace/Template_Instantiations.cpp - tests/Conn_Test.cpp - tests/Hash_Map_Manager_Test.cpp - tests/Map_Manager_Test.cpp - TAO/examples/Callback_Quoter/Notifier_i.cpp - TAO/examples/POA/On_Demand_Loading/Servant_Manager.cpp - TAO/examples/Simple/bank/AccountManager_i.cpp - TAO/orbsvcs/orbsvcs/AV/AVStreams_i.cpp - TAO/orbsvcs/orbsvcs/Event/EC_Gateway_UDP.cpp - TAO/orbsvcs/orbsvcs/Log/Logger_i.cpp - TAO/orbsvcs/orbsvcs/Property/CosPropertyService_i.cpp - TAO/orbsvcs/orbsvcs/Naming/CosNaming_i.cpp - TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.cpp - TAO/orbsvcs/orbsvcs/Trader/Trader.cpp - TAO/orbsvcs/orbsvcs/Trader/Trader_Utils.cpp - TAO/tao/ORB.cpp - TAO/tao/ORB_Core.cpp - TAO/tao/Object_Table.cpp - TAO/tao/Operation_Table.cpp - TAO/tao/POA.cpp - examples/Map_Manager/test_hash_map_manager.cpp - - Thanks to Carlos for suggesting these changes. Most of these - were inspired by SGI's STL. - - If these changes are successful (i.e., nobody is hunting me down - for breaking their code ;-)), we should add a similar comparison - function object to Map_Manager, Collections in Containers_T that - require an operator==() (typically for remove() and find()) and - the RB_Tree. - - * ace/ACE (hash_pjw): hash_pjw is now available for char *, - wchar_t *, and ACE_UINT16 *. - - * ace/OS (strlen, strcpy, strcmp): These functions are now - available for char *, wchar_t *, and ACE_UINT16 *. - - * ace/SString.cpp (ACE_WString::strlen): Simply calls - ACE_OS::strlen. - - * ace/config-win32-common.h (ACE_HAS_WCHAR_TYPEDEFS_USHORT): Since - Win32 typedefs wchar_t as a 16 bit unsigned short, this can - potentially cause problems with function overloading. - Therefore, I added ACE_HAS_WCHAR_TYPEDEFS_USHORT to the Win32 - config file. This is very similar to - ACE_HAS_WCHAR_TYPEDEFS_CHAR. Thanks to David Levine for helping - with this. - -Thu Dec 24 09:37:32 1998 Douglas C. Schmidt - - * ACE version 4.6.8 released. - -Thu Dec 24 00:59:46 1998 Nanbor Wang - - * ace/Thread_Manager.h (ACE_Thread_Manager): Added a more complete - documentation of the deprecated method. Thanks to - Keith Brown for reporting this. - -Wed Dec 23 16:37:52 1998 David L. Levine - - * ace/config-sunos5.5.h,include/makeinclude/platform_sunos5_ghs.GNU: - updated so that links succeed. - -Wed Dec 23 15:58:53 1998 Nanbor Wang - - * ace/ACE.cpp (ldfind): Supress changing the 'dll' name if a - customized dll extension is used. - -Tue Dec 22 22:34:32 1998 David L. Levine - - * ace/config-sunos5.5.h,include/makeinclude/platform_sunos5_ghs.GNU: - added GreenHills compiler support. - - * ace/OS.h: don't use hrtime_t for ACE_hrtime_t if - ACE_LACKS_LONGLONG_T. - -Mon Dec 21 16:06:07 1998 Douglas C. Schmidt - - * ace/Shared_Memory_MM.i: Changed the remove() method to call - ACE_Mem_Map::remove() rather than ACE_Mem_Map::unmap() so the - code is consistent with the documentation. Thanks to James - Johnson for reporting this. - -Mon Dec 21 13:55:33 1998 David L. Levine - - * ace/Containers_T.{i,cpp} (ACE_Bounded_Set::is_full): On LynxOS - only, uninlined this function to avoid Internal Compiler Error - with native (3.0.0) compiler. Thanks to Carlos for this fix, - it had us stumped for quite a while. - -Sat Dec 19 18:27:07 1998 Douglas C. Schmidt - - * ace/Timer_Queue_Adapters.cpp (handle_signal): Cleaned up an - unused variable. Thanks to David Levine for reporting this. - -Fri Dec 18 09:30:57 1998 David L. Levine - - * ace/High_Res_Timer.h (elapsed_time_incr): added missing - const to member function declaration. - - * ace/config-sunos5.5.h: removed redundant - ACE_HAS_XPG4_MULTIBYTE_CHAR #define. - - * ace/config-sunos5.7.h: added this config, for Solaris 7. - - * apps/Gateway/Gateway/Gateway.cpp, - examples/ASX/Event_Server/Transceiver/transceiver.cpp - (handle_signal): added ACE_UNUSED_ARG (signum). - -Fri Dec 18 06:08:47 1998 Douglas C. Schmidt - - * ace/High_Res_Timer: Made several methods const. Thanks to Ulf - Jaehrig for reporting this. - - * ace/Thread.h (ACE_Thread): Removed a stray join(ACE_Thread_ID) - method. Thanks to Jody Hagins for reporting - this. - -Thu Dec 17 21:06:30 EST 1998 James CE Johnson - - * docs/tutorials/000: - Removed. This is redundant with the Chap* directories. - -Thu Dec 17 17:18:21 1998 Douglas C. Schmidt - - * include/makeinclude/platform_sco5.0.0-{nothread,fsu-pthread}.GNU: - This file was been modified to get rid of thread related stuff - until we can obtain the FSU threads library. Thanks to Michael - Preobrazhensky for this. - -Thu Dec 17 16:56:28 1998 David L. Levine - - * bin/create_ace_build: try /bin/find if /usr/bin/find doesn't exist. - - * ace/High_Res_Timer.cpp (elapsed_time): rearranged terms in - nanoseconds calculation to avoid overflow on machines that don't - have native 64-bit ints. Thanks to Greg Holtmeyer - for helping to track this problem down. - -Thu Dec 17 12:43:11 1998 Douglas C. Schmidt - - * ace: Removed the use of ACE_DEBUG within handle_signal() methods - to avoid portability problems. Thanks to Susan Liebeskind - for reporting this. - -Tue Dec 15 14:45:49 1998 David L. Levine - - * *.h: removed () from #pragma implementation argument. - Thanks to Christian v. Mueffling for reporting - this. - - * docs/ACE-guidelines.html: added Doug's warning about side effects - in ACE_DEBUG statements. - -Tue Dec 15 14:43:47 1998 Ossama Othman - - * ace/OS.{h,i},README: added lstat() and readlink() methods. - Use ACE_LACKS_LSTAT and ACE_LACKS_READLINK if lstat() and readlink() - aren't supported. - -Tue Dec 15 11:55:51 1998 Steve Huston - - * ace/ACE_Library.(mak mdp): Added Message_Queue.cpp to the files list. - - * examples/NT_Service/NT_Service.(mak mdp): MSVC 4.2 project file for - the NT_Service example. - -Tue Dec 15 11:27:24 1998 David L. Levine - - * ace/config-chorus.h: added ACE_LACKS_READLINK. - - * ace/config-psos*.h,config-vxworks-5.x.h: added ACE_LACKS_READLINK - and ACE_LACKS_LSTAT. - -Tue Dec 15 08:44:18 1998 Steve Huston - - * examples/NT_Service: New example program, shows how to create, - manipulate, and run an NT Service using the ACE_NT_Service class. - Muchas gracias to Gonzalo Diethelm for smashing this code into a - good example - useful enough to show how things work, but simple - enough to show all the useful functionality in one concise program. - -Tue Dec 15 07:32:49 EST 1998 Aniruddha Gokhale - - * OS.h: - - Moved the definition of IOV_MAX after we have included the - limits.h file. Before make ing this change, we were getting lots - of warnings on SunOS 5.6 about redefinition of IOV_MAX. - -Mon Dec 14 15:39:39 1998 Carlos O'Ryan - - * tests/Makefile: - Updated dependencies. - -Mon Dec 14 10:49:29 1998 Nanbor Wang - - * Static_Performance.dsw: Quick and dirty workspace to build - several static version's performance tests. - - * ace/ace_lib.dsp: Removed "__ACE_INLINE__=0" from the default - static release build settings. - - * performance-tests/Misc/basic_perf.dsp: - * performance-tests/Misc/context_switch_time.dsp: Added static - build configurations. - - * tests/RB_Tree_Test.dsp: Redid the project file. A VC 6 only - compiler option somehow got into the file. Thanks to Ulf - Jaehrig for reporting this. - -Mon Dec 14 10:24:59 1998 Fred Kuhns - - * ace/OS.h: Added #define for IOV_MAX 16 - -Mon Dec 14 08:35:11 1998 David L. Levine - - * BUG-REPORT-FORM: added a few FMMs. - -Mon Dec 14 08:27:11 1998 Steve Huston - - * tests/run_tests.sh: Enabled MT_Reactor_Timer_Test. - -Sun Dec 13 16:40:18 1998 Nanbor Wang - - * tests/MT_Reactor_Timer_Test.dsp: - * tests/tests.dsw: Added the new project file - - MT_Reactor_Timer_Test. - - * tests/run_tests.bat: Added MT_Reactor_Timer_Test into - one-button test for NT. - - * tests/MT_Reactor_Timer_Test.cpp: Changed the use of - ACE_OS::{read,write} to ACE::{recv,send}. - -Sat Dec 12 17:19:17 1998 Irfan Pyarali - - * ace/ACE.cpp (ldfind): If we specified a suffix which is not the - default suffix on the platform, the ldfind() operation should - not try to add the default platform suffix but use ours. - -Sat Dec 12 07:44:02 1998 John Lindal - - * ace/config-mklinux.h: added. - -Fri Dec 11 23:26:20 1998 Nanbor Wang - - * tests/Message_Queue_Test.cpp: Generalize the test to perform - "platform specific" message queue tests when applicable. - Currently, this only applies to VxWorks and Windows NT 4.0 or - above. - - * tests/DLL_Test.cpp (main): STL's implementation of auto_ptr - doesn't define an assignment operator that takes a pointer of T. - Changed to use constructor to initialize the auto_ptr my_hello. - -Fri Dec 11 16:30:44 1998 Ossama Othman - - * tests/Time_Value_Test.cpp: Removed the ACE_DISABLE_AUTOCONF_LONGLONG - macro. It broke ACE+autoconf on non-sun platforms. - -1998-12-11 Nanbor Wang - - * test/DLL_Test.dsp: Fixed configuration settings. Most of the - time, it's easier to add new projects by using the - bin/dsp2dsp.pl. - - * ace/Message_Queue.{h,cpp} (enqueue): Made sure all bytes in a message - block chain are accounted for. - (enqueue_tail,dequeue_head): Added two more methods into - ACE_Message_Queue_Base. They are the prefered methods to use. - -Fri Dec 11 15:09:43 1998 Ossama Othman - - * tests/Time_Value_Test.cpp: define ACE_DISABLE_AUTOCONF_LONGLONG - before including ace/inc_user_config.h. This will prevent - an automatically generated ACE Configuration Project config.h - header from defining ACE_UINT64, and thus allowing - Time_Value_Test.cpp to compile on platforms that define - ACE_HAS_STHREADS. Please read the comment in Time_Value_Test.cpp. - ACE_DISABLE_AUTOCONF_LONGLONG is not meant for general use! - -Fri Dec 11 14:05:11 1998 Steve Huston - - * tests/MT_Reactor_Timer_Test.(cpp h): Replaced the multithread - timer set/cancel test with sensible tests. - -Fri Dec 11 08:51:07 1998 David L. Levine - - * ACE-INSTALL.html: updated egcs version information. - - * VERSION: added ace-users/comp.soft-sys.ace info. - - * include/makeinclude/platform_osf1_4.0.GNU: added suppression - of warning 1136, conversion to integral type of smaller size - could lose data. cxx V6.1-029 spews out a bunch of them, - otherwise. - - * tests/Time_Value_Test.cpp: protected definition of __ACE_INLINE__. - Thanks to Ossama for reporting this. - -1998-12-11 Nanbor Wang - - * ace/Message_Queue.{h,i,cpp} (ACE_Message_Queue_Base): Added a - bunch of pure virture functions in the class to define the - common interface functions of a message queue. This allows up - to experiment different message queue implementations easily. - Most significantly, all queueing operations are simplified into - and method in ACE_Message_Queue_Base as - "standard" queueing operations. Inherited class, of course, can - add fancier queueing operations (as in ACE_Message_Queue.) - - (ACE_Message_Queue_NT): A new adapter class inherited from - ACE_Message_Queue_Base that implement a message queue using NT's - IO completion ports. As it's name implies, this is a - specialized version for NT. It is not as versatile as ACE's - general MQ implementation. However, this implementation - consumes less NT handles which in some circumstances may be a - big win (because ACE_Message_Queue uses cv and on NT, cv is - simulated and consumes 4 handles per cv. ACE_Message_Queue_NT - only uses one handle and one critical section.) - - Several features inherited from IO completion port are, the - waiting threads are release in LIFO order, and you can control - (at initialization time,) the max number of threads that can be - release by the message queue to run concurrently. - - Notice that the constructor and the method have different - signature compared with those of ACE_Message_Queue. You should - use ACE_Message_Queue_Factory to create a message queue on the - fly if so desired. - - Thanks to Mark Lucovsky and Karlheinz Dorn - for providing the idea. - - * ace/Message_Queue_T.h (dequeue): Added the new method to match - with the changes in ACE_Message_Queue_Base. - (create_NT_message_queue): A wrapper function to manufacture an - ACE_Message_Queue_NT. - - -Thu Dec 10 09:08:26 1998 David L. Levine - - * ace/config-chorus.h: added ACE_LACKS_FSYNC. - - * ACE-INSTALL.html: ACE/TAO build on Linux RedHat 5.2 - as well as 5.1. - - * ace/config-osf1-3.2.h: added getpgid () prototype, because - an old comment said that it was missing from the system headers. - - * ace/config-linux-common.h: replaced ACE_LACKS_GETPGID with - a getpgid () prototype. - - Thanks to Ivan Pascal for motivating the - above two getpgid () updates. - - * ace/config-sunos5.5.h: updated comment on why explicit - instantiation isn't used with Sun CC. Thanks to - William A. Hoffman for introducing - us to -instances=explicit. - -Wed Dec 09 22:59:38 1998 David L. Levine - - * ACE version 4.6.7 released. - -Wed Dec 09 18:03:58 1998 Irfan Pyarali - - * examples/Reactor/WFMO_Reactor/test_network_events.cpp (main): - Removed global variables and cleaned up some minor things. - -Wed Dec 09 07:02:06 1998 David L. Levine - - * README, VERSION: expanded mention of BUG-REPORT-FORM. - - * docs/ACE-guidelines.html: strengthened mention of ACE_ASSERT danger. - Thanks to Irfan for the example. - - * tests/run_tests.vxworks: re-enabled Timeprobe_Test, now that - ACE_ASSERTs have been fixed in ACE's Containers. - - * ace/config-linux-common.h,config-osf1-{3.2,4.0}.h: - removed ACE_LACKS_GETPGID. Thanks to - Ivan Pascal for reporting that - getpid () is supported on those platforms. - - * ace/config-linux-common.h: restored ACE_LACKS_GETPGID, - because ::getpgid () isn't found on Alpha with glibc 2.0.7. - - * tests/Timeprobe_Test.cpp: disabled ACE_ENABLE_TIMEPROBES, - because the ACE lib is built by default without them. - - * performance-tests/Misc/context_switch_time.cpp: disabled - Yield_Test on VxWorks, because it doesn't run properly there. - - * ace/config-tandem.h,README: removed ACE_HAS_STRUCT_PROTOENT_DATA, - because it is no longer used. Thanks to Ossama for reporting this. - - * tests/Collection_Test.cpp, - examples/Reactor/Misc/test_early_timeouts.cpp: - removed unused parameter names argc and argv. - - * tests/DLL_Test.cpp: added ACE_Auto_Basic_Ptr template - instantiation. - -1998-12-09 Irfan Pyarali - - * tests/Collection_Test.cpp: Added new test for ACE collections. - - * ace/Map_Manager.cpp (operator*): - * ace/Containers_T.cpp (operator*): - * ace/SPIPE_Acceptor.cpp (create_new_instance): - - Fixed ACE_ASSERT usage. - - * ace/config-vxworks5.x.h: Added ACE_LACKS_FSYNC. - - * ace/OS.i (fsync): Added ACE_NOTSUP_RETURN (-1). - -Tue Dec 08 21:39:16 1998 David L. Levine - - * include/makeinclude/platform_osf1_4.0.GNU,ACE-INSTALL.html: - enable DU 4.0 cxx 6.x warnings by default. To disable, if - you're using cxx 5.x, set CXX_VER to CXX_5 either on the - make command line, or in your environment. Thanks to - Gary York for being that last - cxx 6.x user to trip over this :-) - - * include/makeinclude/platform_lynxos.GNU: override - ACE_HAS_GNUG_PRE_2_8 to allow builds of all TAO tests - on LynxOS 3.0.0. Its g++ can handled nested classes, even though - it's in the 2.7 family. Thanks to Patty Hair - for suggesting that we try to build the tests on LynxOS. - -Tue Dec 8 19:50:49 1998 Douglas C. Schmidt - - * ace/Shared_Object.cpp: Changed the various default - implementations of init()/fini()/info() to return 0 rather than - -1 so that users won't have to subclass Service_Object just to - change the return value. Thanks to Eric Newton for motivating - this. - -Tue Dec 8 16:52:57 1998 Ossama Othman - - * ace/OS.{h,i}, ace/README: Added a fsync() method. Define - ACE_LACKS_FSYNC if ::fsync() isn't supported. - -Tue Dec 08 15:03:25 1998 Steve Huston - - * ace/NT_Service.{h cpp i}: Added a number of methods which can be - used to register, remove, and control an NT service. Also, - another macro, ACE_NT_SERVICE_RUN, which simplifies the setting up - and running the most common case, a single service. Huge thanks - to Gonzalo Diethelm for contributing - the bulk of this code! - -Tue Dec 08 11:22:56 1998 Chris Gill - - * ACE version 4.6.6 released. - -Tue Dec 08 10:45:56 1998 Nanbor Wang - - * ace/System_Time.h: Removed redundant ACE_Time_Date definition. - Thanks to Martin Krumpolec for reporting this. - -Mon Dec 07 22:58:53 1998 Irfan Pyarali - - * examples/Reactor/Misc/test_early_timeouts.cpp: On some - platforms, select() returns before the time value specified. - This tests counts the number of times this happens and the max - early timeout. - - * ace/DLL.cpp (open): Added a call to ACE::ldopen() before calling - ACE_OS::dlopen(). The allows us to find the library is - predefined places and also expand the file name to the correct - syntax (prefix and suffix) according to the platform. - - Also, fixed a bug where the flag has not - being consulted on a reopen. - - * ace/ACE.cpp (ldfind): Moved the code that calls - ExpandEnvironmentStringsA() from - ACE_Location_Node::open_handle() to ACE::ldfind(). This code is - more general and therefore belongs in ACE::ldfind(). - - * ace/Parse_Node.cpp and ace/Svc_Conf_y.cpp: Fixed the incorrect - use of ASYS_WIDE_STRING. Remember that the string returned from - ASYS_WIDE_STRING is only valid for that line of code ;) - -Mon Dec 7 19:10:24 EST 1998 James CE Johnson - - * docs/tutorials/ - * docs/tutorials/001/001.dsp - * docs/tutorials/002/002.dsp - * docs/tutorials/003/003.dsp - * docs/tutorials/004/004.dsp - * docs/tutorials/005/005.dsp - * docs/tutorials/006/006.dsp - * docs/tutorials/007/007.dsp - * docs/tutorials/008/008.dsp - * docs/tutorials/008/008-server/008-server.dsp - * docs/tutorials/008/008-direct/008-direct.dsp - * docs/tutorials/008/008-broadcast/008-broadcast.dsp - * docs/tutorials/009/009-directed/009-directed.dsp - * docs/tutorials/009/009-server/009-server.dsp - * docs/tutorials/009/009-broadcast/009-broadcast.dsp - * docs/tutorials/010/010.dsp - * docs/tutorials/011/011.dsp - * docs/tutorials/012/012.dsp - * docs/tutorials/013/013.dsp - * docs/tutorials/014/014.dsp - * docs/tutorials/018/018.dsp - * docs/tutorials/015/015-client/015-client.dsp - * docs/tutorials/015/015-server/015-server.dsp - * docs/tutorials/016/016.dsp - * docs/tutorials/017/017.dsp - * docs/tutorials/tutorials.dsw - Contributed by: - Stefan Ericsson - -Mon Dec 07 14:11:00 1998 Chris Gill - - * ace/README: added entries for ACE_LACKS_IOSTREAMS_TOTALLY - and ACE_HAS_BROKEN_CONDITIONAL_STRING_CASTS. Thanks to - Ossama Othman for reminding - me to do this. - -Mon Dec 07 09:27:04 1998 David L. Levine - - * ace/Stats.cpp (std_dev): added comments to not reformat - some code. It compiles with the Diab compiler for pSoS - the way it is. - -Sun Dec 06 23:59:29 1998 Irfan Pyarali - - * config-sunos5.5.h: Added back ACE_HAS_TIMER_SKEW. It is really - required. See me for an example that illustrates this need. - -Sun Dec 06 16:05:00 1998 Chris Gill - - Changes for pSOS port: ACE now compiles for pSOSystem 68k targets using - the Diab D-C++ 4.2a compiler release, and links with all but the - following ACE tests: Conn_Test, Handle_Set_Test, OrdMultiSet_Test, - Priority_Reactor_Test, Process_Strategy_Test, Reactor_Performance_Test, - and TSS_Test. - - * ace/Log_Msg.cpp - ace/Log_Record.{cpp, h} - ace/streams.h - ace/SString.cpp - ace/config-WinCE.h - ace/config-psos-diab.h - tests/test_config.h: Rearranged log print methods so that logging - can still be done on platforms where iostreams are not sufficiently - supported. Added ACE_LACKS_IOSTREAMS_TOTALLY to select this - behavior, and defined it in pSOS Diab config header (also added to - Windows CE config header, to simplify factoring out Win CE specific - logging methods). - - * include/makeinclude/platform_psos_diab.GNU - ace/OS.{cpp, h, i}: Removed Diab supplied library calls so ACE now - links directly to pSOSystem libraries. - - * ace/Parse_Node.cpp - ace/Stats.cpp: Modifications to circumvent bugs in the Diab 4.2a - compiler's handling of conditional operators. - -Sun Dec 06 08:32:36 1998 David L. Levine - - * ace/Containers_T.cpp,Local_Name_Space_T.cpp, - Name_Request_Reply.cpp,Service_Config.cpp,Service_Manager.cpp, - Svc_Conf.y,Svc_Conf_Tokens.h,Svc_Conf_y.cpp, - Time_Request_Reply.cpp,Trace.cpp: - use ACE_NLOGGING instead of ACE_NDEBUG. - -Sat Dec 05 21:45:00 1998 David L. Levine - - * ace/Containers_T.cpp,Local_Name_Space_T.cpp, - Name_Request_Reply.cpp,Service_Config.cpp,Service_Manager.cpp, - Svc_Conf.y,Svc_Conf_Tokens.h,Svc_Conf_y.cpp, - Time_Request_Reply.cpp,Trace.cpp: - added if NDEBUG protection to some local variables and - ACE_UNUSED_ARG to some parameters to avoid compiler warnings - when ACE_DEBUG is disabled. Thanks to Faron Dutton - for reporting this. - - * ace/Makefile (Svc_Conf_Tokens.h): escaped $\I\d$ string so - that it doesn't get expanded in the Makefile itself. - -Sat Dec 5 16:06:27 1998 Darrell Brunsch - - * ace/Local_Name_Space_T.cpp: Protected some of the ACE_DEBUG - statements with a ACE::debug () check. - -Fri Dec 04 13:46:12 1998 David L. Levine - - * ace/Stats.cpp (std_dev): fixed difference calculation so - that it always calculates a non-negative value. - - * performance-tests/Misc/context_switch_time.cpp - (High_Priority_Synchronized_Task::svc): check if nsec is >= - mutex_acquire_release_time, to avoid adding in negative - context_switch_times. - - * ace/config-vxworks5.x.h, - include/makeinclude/platform_vxworks5.x_g++.GNU, - include/makeinclude/platform_vxworks5.x_ghs.GNU: moved -DVXWORKS - from platform_vxworks5.x_* files to config-vxworks5.x.h, to reduce - command-line clutter a bit. - -Fri Dec 4 12:45:04 1998 James CE Johnson - - * docs/tutorials/linify: - * docs/tutorials/combine: - * docs/tutorials/fixMakefile: - Ensure that perms are 755 and that #!/.../perl is not used - -Wed Dec 02 14:21:34 1998 Nanbor Wang - - * ace/OS.i (fstat): This function needs to close down the c handle - opened by _open_osfhandle to avoid resource leaks on Win32. - Thanks to Christian Korn for reporting - this. - -Tue Dec 01 13:48:51 1998 Nanbor Wang - - * ace/config-freebsd-pthread.h: Added ACE_HAS_SIGWAIT. Also added - ifdef section to prevent threaded ACE from compiling on FreeBSD - under 3.0 (excluded.) - -Tue Dec 1 22:22:42 1998 Douglas C. Schmidt - - * ace/Synch.h: Added a comment to clarify the semantics of - ACE_RW_Process_Mutex. Thanks to Stanislav Meduna - for reporting this. - -Tue Dec 01 17:22:00 1998 Kirthika Parameswaran - - * tests/DLL_Test: Added the .dsp and tests.dsw to the - repository. - - * tests/run_tests.bat: Added an entry for DLL_Test. - -Tue Dec 01 13:54:35 1998 David L. Levine - - * ace/OS.h: added ESUCCESS definition (to 0), if not #defined. - -Tue Dec 01 13:48:51 1998 Nanbor Wang - - * ace/config-freebsd-pthread.h: Added ACE_HAS_SIGWAIT. Also added - ifdef section to prevent threaded ACE from compiling on FreeBSD - under 3.0 (excluded.) - - * ace/OS.i (sigwait): FreeBSD 3.0 supports sigwait. Changed the - ifdef condition to support sigwait for 3.0 or above. Thanks to - Bob McWhirter and Russell L. Carter - for helping to track this down. - -Tue Dec 01 12:59:57 1998 James CE Johnson - - * ace/IOStream_T.i (recv,recv_n): set errno to ESUCCESS - because it was never being set to ETIME when the read timed - out. (Before entering the peer_->recv/recv_n, errno was - ENOENT from previous activities and was the same after in - both positive & negative tests until I did the reset.) - (eof): cleaned up a bit. - - I tested against IOStream_Test for both positive and - negative. For the positive test, I changed the sleep() at - line 363 to a much larger value. The client worked fine. - For the negative test, I replaced the spleep() with a - close() & return() pair. The client saw the closure and - exited as expected. - -Tue Dec 1 08:55:48 PST 1998 James Hu - - * ace/Memory_Pool.cpp: Since type key_t might be something - other than int (e.g., a long), some additional code was needed - to support the sscanf. - -Tue Dec 01 10:49:00 1998 Chris Gill - - * tests/Win32clerk.conf - tests/Win32server.conf - tests/Win32tokens.conf: removed explicit path for netsvcs dll, as - this dll is now being moved to ACE_wrappers/bin after it is built - and the explicit path was causing dlopen to fail rather than - searching the path on NT, which caused Time_Service_Test to fail. - -Tue Dec 01 10:07:48 1998 David L. Levine - - * ACE version 4.6.5 released. - -Tue Dec 1 00:07:05 PST 1998 James Hu - - * ace/Containers_T.h: - * ace/Containers_T.i: - Fixed a bug introduced when someone genericized the creation - strategy for ACE_DLList. The removal routing had not been - similarly genericized. Thanks goes to Martin Krumpolec - for spotting the problem. - - -Mon Nov 30 19:10:23 1998 Kirthika Parameswaran - - * examples/DLL/Makefile: - * examples/DLL/Makefile.Today: - * examples/DLL/Makefile.Newsweek: - - Added the above makefiles. Makefile internally uses - Makefile.Today and Makefile.Newsweek to build the libraries - seperately. - -Mon Nov 30 13:54:04 1998 Douglas C. Schmidt - - * netsvcs/lib/Server_Logging_Handler_T.cpp (handle_input): There - was a friggin' bug in this code that is a violation of Reactor - framework design rule #2, i.e., we were returning a non-0 value - from handle_input(), which is a no-no... Thanks to Steve Huston - for reporting this. - -Mon Nov 29 13:16:53 EST 1998 James CE Johnson - - * docs/tutorials/001/logger.h: - * docs/tutorials/001/page04.html: - * docs/tutorials/003/client.cpp: - * docs/tutorials/003/page01.html: - Added a blurb about the additional parameters to the recv(), - recv_n(), send() and send_n() method calls of ACE_SOCK_Stream. - -Sun Nov 29 22:14:32 1998 David L. Levine - - * ace/OS.i,cpp (exit): with ACE_HAS_NON_STATIC_OBJECT_MANAGER, - call ACE_Object_Manager::fini (). Uninlined to avoid circular - include problems with Object_Manager.h. The ACE_Object_Manager - instantiation on main's stack is not destroyed by ::exit (), - so this addition causes the ACE_Object_Manager to be - properly shutdown. Thanks to Jeff Greif - for pointing out that automatic objects are not destroyed - by ::exit (). - - * ace/Object_Manager.h: added Jeff Greif's ACE_OS::exit () - recommendations in comments. - -Sun Nov 29 20:13:15 1998 Kirthika Parameswaran - - * examples/DLL/Today.cpp: - * examples/DLL/Newsweek.cpp: - - Added ACE_BUILD_SVC_DLL and ACE_Svc_Export directives needed for the - extern "C" create_magazine function. - -Sun Nov 29 18:22:52 1998 Nanbor Wang - - * tests/Thread_Pool_Reactor_Test.cpp: Removed the use of - "main_reactor". The "main_reactor" was added to handle incoming - connections because this test was not working correctly without - moving out the acceptor to another reactor. However, I recently - found that the problem was actually due to the deadlocked - notify_handler which I fixed a while back. - - * ace/OS.h: Added forward declarations of ACE_Time_Value's - operator{+,-} so VC 6.0 won't get confused with the - operator{+,-} in namespace std. Thanks to Victor Yu - for reporting this. - -1998-11-29 James CE Johnson - - * docs/tutorials/007/page09.html: - Added warnings about a possible core dump when an event handler - exists in the thread pool's message queue after the handler has - been destroyed. Jeff Donner's work with - Tutorial 007 on Win32 lead to this discovery. - -Sat NOv 28 20:02:08 1998 Kirthika Parameswaran - - * examples/DLL/Today.cpp: - * examples/DLL/Newsweek.cpp: - - Added the #ifdef directive needed to seperate out the - functionality on NT and UNIX platforms. - -Sat NOv 28 20:02:08 1998 Kirthika Parameswaran - - * examples/DLL/Dll.dsw: - * examples/DLL/Test_dll.dsp: - * examples/DLL/Today.dsp: - * examples/DLL/Newsweek.dsp: - - Added to the repository. The test successfully executes on NT. - - * examples/DLL/README: Modified to add information on how to - execute this test example on NT. - -Fri Nov 27 13:32:38 1998 Kirthika Parameswaran - - * examples/DLL/test_dll.cpp (main): Added right arguments to the - ACE_ERROR_RETURN macro. - -Thu Nov 26 21:04:05 1998 Kirthika Parameswaran - - * examples/DLL/Makefile: - * examples/DLL/Today.{h,cpp}: - * examples/DLL/Newsweek.{h,cpp}: - * examples/DLL/Magazine.h: - - Placed the comments at the right place and added an descriptive - header wherever missing in the .h files. - - * examples/DLL/test_dll.cpp (main): Added auto_ptr for the - Magazine class object pointer. - - * examples/DLL/README: Added to the repository. - -Wed Nov 25 02:02:32 1998 Kirthika Parameswaran - - * examples/DLL/Makefile: - * examples/DLL/Today.{h,cpp}: - * examples/DLL/Newsweek.{h,cpp}: - * examples/DLL/Magazine.h: - * examples/DLL/test_dll.cpp: - - Added these files. This test example shows how dynamically linked - library objects can be loaded on demand and their methods accessed - on getting an pointer to these objects. - -Wed Nov 25 22:28:44 1998 Carlos O'Ryan - - * ace/INET_Addr.cpp: - Reverted the behavior to version 4.35, we don't use the first - alias as the hostname, but the value returned in the h_name - field. - This change was to support TAO in our local site, but it caused - many problems for other configurations of /etc/hosts and DNS. We - found another workaround for our local site which makes more - sense to the rest of the world. - -Wed Nov 25 20:34:12 1998 Kirthika Parameswaran - - * tests/DLL_Test.cpp (main): Removed ACE_OS::strcat which was - concatenating a string literal with a defined string. - -Wed Nov 25 12:01:20 1998 Ossama Othman - - * apps/gperf/gperf.texi: - * apps/gperf/gperf.info: - * apps/gperf/texinfo.tex: - * apps/gperf/version.texi: - - updated gperf.texi to work with recent versions of makeinfo (e.g. 1.68, - available in GNU texinfo-3.12). Regenerated gperf.info with latest - makeinfo (1.68). Added texinfo.tex to make available certain TeX - macros for texinfo to TeX converters. Added version.texi to centralize - gperf update dates and versions (gets included by gperf.texi). - -Wed Nov 25 12:01:20 1998 David L. Levine - - * performance-tests/Misc/context_switch_time.cpp (main): fixed - printouts by performing floating point division, instead of - converted integer division to double. Added checks of - activate () return values. - - * ace/OS.cpp (sched_params,lwp_getparams,lwpsetparams): set - LWP priority on Suns, even if only using the ACE_HAS_PTHREADS - interface. Though, we still don't get preemption if only using - that interface. performance-tests/Misc/preempt.cpp demonstrates - that. - - * ace/config-osf1-4.0.h: removed ACE_LACKS_THREAD_PROCESS_SCOPING. - DU 4.0 seems to have process scoping, though I think only - the superuser can use it. - -Wed Nov 25 10:48:42 1998 Douglas C. Schmidt - - * ace/Task.cpp: Fixed a bug whereby we weren't inheriting the - group id correctly when joining a group of existing threads. - Thanks to Valery Arkhangorodsky for - pointing this out. - -Tue Nov 24 03:50:09 1998 Kirthika Parameswaran - - * tests/DLL_Test.cpp: Renamed DLL_Wrapper_Test.cpp to - DLL_Test.cpp. Also, added ACE_OBJ_SUFFIX which takes care of the - object code convention on NT and UNIX platforms. Changed the - messages in ACE_ERROR to come from ACE_DLL::error(). - This is a running version tested using CC compiler too. - -Tue Nov 24 17:45:26 1998 Steve Huston - - * netsvcs/clients/Naming/Dump_Restore/Makefile: Added a LIBS += - $(ACELIB) to help this build on AIX. Thanks to Jon Lindgren - for reporting this problem. - - * README: Added Jon Lindgren to the contributor's list. Welcome, Jon! - -Tue Nov 24 09:34:58 1998 David L. Levine - - * include/makeinclude/platform_chorus.GNU: added support for - exceptions=0/1 make option. Thanks to Wei Chiang for - requesting this. - - * include/makeinclude/platform_chorus_ghs.GNU: removed - trailing / from MVME_DIR definition. - - * include/makeinclude/platform_vxworks5.x_ghs.GNU: added - optimize=1, to enable optimization by default. - - * performance-tests/Misc/context_switch_time.cpp (main): - don't print suspend-resume results if the suspend-resume - test isn't run (because thr_suspend isn't supported). - Process command line options before calulating hi-res timer - scale factor. - - * ace/OS.h: replaced ENOTSUP with EDEADLK in a comment, - to fix a copy-and-paste error. - - * ace/Stats.* (mean): removed caching. It didn't account for - the fact that it could be called with different scale - factors. (std_dev): fixed sum_of_squares calculation to - always use 64-bit arithmetic. (print_summary): if the - std dev calculation overflows, retry with smaller scale - factor, until 0 is reached. - - * tests/Conn_Test.cpp: replaced #include of ace/Auto_Ptr.h, - because ACE_Auto_Basic_Array_Ptr is used. - -Mon Nov 24 03:30:36 1998 Kirthika Parameswaran - - * tests/DLL_Wrapper_Test.cpp: Added a test example for the DLL - wrapper class. - - * tests/Makefile: Added an entry for DLL_Wrapper_Test example. - -Mon Nov 23 23:49:36 1998 Kirthika Parameswaran - - * ace/DLL.h: Made the default value of the close_on_destruction - equal to 1. - - * ace/DLL.cpp (~ACE_DLL): Checked whether the member variable, - close_on_destruction_ is non-zero instead of comparing it to 1. - -Mon Nov 23 21:14:22 1998 Kirthika Parameswaran - - * ace/DLL.h (ACE_DLL): Set the default of close_on_destruction to - 1 instead of 0. - - * ace/DLL.cpp (~ACE_DLL): In the close operation, made a check for - whether the close_on_destruction_ flag was equal to 1 instead of - 0. - - * ace/DLL.cpp (get_handle): Made the close_on_destruction_ flag - equal to 0 when it gets orphaned as now the new owner has to - explicitly close the library. - -Mon Nov 23 20:29:52 1998 Douglas C. Schmidt - - * ace/DLL: Cleaned up the comments and also fixed an unnecessary - check to see if dll_name == 0. - -Mon Nov 23 10:20:22 1998 Kirthika Parameswaran - - * ace/DLL.h: Added a comment which specified that by default the - library would be closed before the ACE_DLL object gets - destroyed. - - * ace/DLL.cpp (get_handle): Changed the value for the member - variable, close_on_destruction_ to 1 on orphaning the handle - and giving it to the new owner. - -Mon Nov 23 17:14:40 1998 Alexander Babu Arulanthu - - * examples/Reactor/Proactor/test_proactor.cpp (open): It is even - more neat to do this for faking the result. - // for Accept would have already moved the - // forward. Update it to the beginning position. - duplicate.wr_ptr (duplicate.wr_ptr () - bytes_transferred); - -Mon Nov 23 17:16:46 1998 Irfan Pyarali - - * ace/OS.h: Set the value of ACE_SHLIB_INVALID_HANDLE to 0 for HP. - Thanks to Steve Huston for providing this - information. - -Mon Nov 23 16:16:26 1998 Alexander Babu Arulanthu - - * examples/Reactor/Proactor/test_proactor.cpp: Updated the code to - show that adjusting wr_ptr () to the place of rd_ptr () is the - better way to fake results properly. Thanks to "James A. Risinger" - for reporting this problem. - -Mon Nov 23 12:58:47 1998 Douglas C. Schmidt - - * examples/ASX/Message_Queue, - tests: - Replaced the improper (though technically correct) use of the - rd_ptr() with wr_ptr(). Thanks to Susan Liebeskind - for reporting this. - -Mon Nov 23 10:47:38 1998 David L. Levine - - * bin/generate_man_pages: added this script, which generates - the ACE man and html pages. - - * Makefile (release): added call to bin/generate_man_pages. - -Sun Nov 22 22:58:39 1998 Douglas C. Schmidt - - * ace/SPIPE_Addr.h: Replaced the use of an anonymous struct so - that class2man will be happy. Thanks to David Levine for - reporting this. - -Sun Nov 22 22:07:04 1998 David L. Levine - - * ace/Functor*: removed trailing // EOF because class2man choked - on it. - -Sun Nov 22 14:36:26 1998 Alexander Babu Arulanthu - - * examples/Reactor/Proactor/test_proactor.cpp (open): Updated the - test to show the correct way to 'fake' call. - -Sun Nov 22 13:57:28 1998 Douglas C. Schmidt - - * ace/Makefile: Added Env_Value_T to the TEMPLATE_FILES macro in - the Makefile. Thanks to Ossama for reporting this. - -Sat Nov 21 14:32:53 1998 Douglas C. Schmidt - - * ace/DLL: Cleaned up the DLL logic to handle "close on - destruction" properly. - -Sat Nov 21 08:34:44 1998 David L. Levine - - * ace/OS.h: added ACE_LACKS_IP_ADD_MEMBERSHIP, for internal - use only. If IP_ADD_MEMBERSHIP isn't defined, ACE defines - ACE_LACKS_IP_ADD_MEMBERSHIP for subsequent use in - determining whether to define ip_mreq. - - * bin/html-windex: updated to match Doug's ~/bin version. - -Fri Nov 20 00:58:35 1998 Kirthika Parameswaran - - * ace/DLL.h (ACE_DLL): Added a new constructor which allows auto - opening of the dynamically linked library. - - * ace/DLL.h (get_handle): Added a method which returns teh handle - to the user. - - * ace/DLL.cpp (ACE_DLL): Added the auto-open feature taking care - of more than one open calls. - - * ace/DLL.cpp (get_handle): The orphan flag decides whether the - handle is orphaned or given to the user temporarily. - - * ace/DLL.cpp (open): Added a check so that a already existing - handle is closed before the next open is done. - -Fri Nov 20 23:40:12 1998 James CE Johnson - - * docs/tutorials/00[567]/client_handler.cpp : - * docs/tutorials/00[56]/page0[45].html - * docs/tutorials/007/page0[56].html - Rework the interaction of handle_input(), handle_close() and - close(). I had this all wrong by making handle_close() invoke - remove_handler() when it was unnecessary. - -Fri Nov 20 22:12:03 1998 Kirthika Parameswaran - - * ace/Makefile: Added an entry for DLL.{h,cpp}. - -Fri Nov 20 15:49:04 1998 Irfan Pyarali - - * ace/OS.h: Added ACE_SHLIB_INVALID_HANDLE which is used to - indicate a invalid shared library handle. - - * examples/Reactor/WFMO_Reactor/test_handle_close.cpp: This - application tests whether handle_close() gets called and if the - correct masks are passed along. The handler should get - handle_close() called for all three masks (READ, WRITE, and - EXCEPT). - - * ace/WFMO_Reactor.cpp (remove_handler_i, - remove_suspended_handler_i, and remove_to_be_added_handler_i): - There was a bug in WFMO_Reactor where handle_close() was not - called when it is not a complete removal. Added a call to - handle_close() for all the masks that were removed. Note that - partial removals do not change the state of the internal tables - of the reactor. - - * ace/OS.i (recvfrom): There is a bug in the Win32 implementation - of this function. It reports an error (with errno=WSAEMSGSIZE), - even MSG_PEEK is specified, when the message was too large to - fit into the specified buffer and was truncated. So we fixed it - by returning the length of the recv request when - errno=WSAEMSGSIZE and the MSG_PEEK flag was specified. - -Fri Nov 20 11:15:40 1998 David L. Levine - - * ace/config-sunos5.5.h: changed comment to use - -D_POSIX_PTHREAD_SEMANTICS to specify POSIX threads only. - Just commenting out ACE_HAS_STHREADS in insufficient. - See the Intro (3) man page for information on - -D_POSIX_PTHREAD_SEMANTICS; it's the Sun-recommended - way to specify use of POSIX threads. Thanks to - Rich Christy for pointing out that - removal of ACE_HAS_STHREADS doesn't work. - - * ACE-INSTALL.html: added notes on thread flavors on Solaris. - - * include/makeinclude/platform_sunos5_g++.GNU: added support - for threads=0. - - * ace/OS.cpp (thr_create): added static cast of PTHREAD_STACK_MIN - to size_t, to avoid signed/unsigned comparison on - g++ 2.7.2.3/Solaris86 2.6. - -Thu Nov 19 23:04:37 1998 Irfan Pyarali - - * ace/Functor.h (ACE_Command_Base): Added missing ACE_Export. - -Thu Nov 19 18:01:00 1998 Kirthika Parameswaran - - * ace/DLL.cpp (ACE_DLL): Made base-member initialisation change - to member variable close_mode_. - -Thu Nov 19 10:28:11 1998 David L. Levine - - * performance-tests/Misc/context_switch_time.cpp: fixed 64-to-32 - bit casts to work with unsigned 64 bit ACE_hrtime_t on NT. - -Wed Nov 18 20:56:38 1998 Kirthika Parameswaran - - * ace/DLL.{cpp,h} (ACE_DLL): Added the close-on-destruction - feature in the constructor of the ACE_DLL class. - -Thu Nov 19 00:18:26 1998 Irfan Pyarali - - * ace/OS.i (strnstr): Added a check to see if the substring is - longer than the string being searched. Fixed both the char and - wchar_t versions in OS.i and the ACE_USHORT16 version in - SString.cpp. Thanks to Knut Johannessen for - pointing out the bug and providing a fix. - - * ace/SString.i (find): The argument to strnstr() should be the - length of instead of len_ - pos>. - - * tests/SString_Test.cpp (main): Added tests to make sure that - find() and strstr() work even when the substring is longer that - the original string. - - * ace/Timeprobe_T.h (ACE_Timeprobe): Added accessors to the class - so that the user can get to the internals. This allows the - users to format the output of collecting the timeprobes - according to their liking. - -Wed Nov 18 15:51:42 1998 David L. Levine - - * ace/Basic_Types.h (ACE_UINT64_DBLCAST_ADAPTER): on other - than Win32 and without ACE_LACKS_LONGLONG_T, wrapped the - "n" macro definition with parenthesis, to avoid insidious - errors in equations due to removing the grouping. g++ 2.7.2.3 - noticed this on the latest context_switch_time.cpp. - - * ace/Svc_Handler.cpp (cleanup_hint): fixed ACE_TRACE string. - - * *.cpp: changed include protection from #if !defined to ifndef. - Added #pragma once, if possible, i.e., after #include of - an ace/ header. It can only be done after ace/config.h - is included, because some platforms don't allow #pragma once. - -Wed Nov 18 15:54:09 EST 1998 James CE Johnson - - * docs/tutorials/007/client_handler.cpp - * docs/tutorials/007/page06.html - - Jeff Donner (jdonner@schedsys.com) points out that Susan Liebskind's - fix to Tutorial 6 should also be applied to this one. - - The fix is: - Don't call baseclass close() from Client_handler::close(). Doing - so will result in double-delete of the handler object. - -Wed Nov 18 00:25:08 1998 Kirthika Parameswaran - - * ace/DLL.{h,cpp} (ACE_DLL): - Wrapper for dynamically linked library operations. - -Tue Nov 17 11:15:00 1998 Chris Gill - - * tests/version_tests/RB_Tree_Test.dsp - tests/version_tests/version_tests.dsw : created RB_Tree_Test project - for NT version tests and added it to version tests workspace. - -Tue Nov 17 10:15:10 1998 Nanbor Wang - - * ace/Map_Manager.cpp (resize_i): Made sure the new elements in - resize_i get constructed properly so we can use more complex - classes with it. Thanks to Knut Johannessen - for providing the patch. Also changed to use copy constructor - to move data across rather than construct/assign pair. - -Tue Nov 17 09:37:32 1998 David L. Levine - - * ace/config-linux-common.h: removed - ACE_HAS_BROKEN_EXPLICIT_DESTRUCTOR because it caused compilation - failure with egcs 1.0.2. - - * ace/config-g++-common.h: added ACE_HAS_BROKEN_EXPLICIT_DESTRUCTOR, - with egcs >= 1.1 only. Thanks to James Johnson for helping - to sort this out. - - * ace/config-osf1-4.0.h: moved ACE_HAS_BROKEN_EXPLICIT_DESTRUCTOR - from common area to DEC CXX area, because config-g++-common.h now - handles g++. - - * ace/IOStream_T.i (eof): fixed return value calculation - logic. Thanks to Arturo and James Johnson for providing - and verifying the fix. - - * include/makeinclude/platform_vxworks5.x_ghs.GNU: - added -DVXWORKS to CFLAGS, because GHS 1.8.9 needs it. - (GHS 1.8.8 had a built-in processor define for it. Adding - -DVXWORKS doesn't seem to bother 1.8.8.) Thanks to Steve - Kay for reporting this. - - * ace/OS.h: even if ACE_HAS_IP_MULTICAST is not defined, if - IP_ADD_MEMBERSHIP is defined, assume that the ip_mreq struct - is also defined (presumably in netinet/in.h). This allows - compilation to succeed on GHS 1.8.9/VxWorks. Thanks to - Steve Kay for reporting it. - -Tue Nov 17 09:12:00 1998 Chris Gill - - * ace/SString.{h, i}: added < , > operators to string classes - - * apps/JAWS/PROTOTYPE/HTTPU/http_headers.cpp - tests/RB_Tree_Test.cpp: added missing template instantiations - - * tests/Makefile - tests/run_tests.sh : added RB_Tree test to UNIX makefile, test script - -Mon Nov 16 17:55:00 1998 Chris Gill - - * ace/Functor_T.{h, i} - ace/RB_Tree.{cpp, h, i} : added less-than comparison functor - (aka function object aka GOF Command Pattern) to allow ACE_RB_Tree - to be used with key types that do not support a < operator. - Thanks to Mark De Jong for reporting the less-than - problem and suggesting part of the solution. Also cleaned up class - naming and comments to conform to ACE coding standards, fixed an - access violation that occurred when deleting items from a tree. - - * tests/RB_Tree_Test.{cpp, dsp} - tests/run_tests.bat - tests.dsw: Added a test to verify correct tree - behavior under insertion and deletion for different key and item - types and insertion orders. - - * apps/JAWS/PROTOTYPE/HTTPU/http_headers.{cpp, h}: Changed type names - for ACE_RB_Tree and associated classes. - -Sun Nov 15 16:34:11 1998 David L. Levine - - * ace/config-osf1-4.0.h,config-linux-common.h: added - ACE_HAS_BROKEN_EXPLICIT_DESTRUCTOR #define. Thanks to - James Johnson for reporting that it is necessary. - - * ace/config-kcc-common.h: removed commented-out - ACE_HAS_BROKEN_EXPLICIT_TEMPLATE_DESTRUCTOR #define. - -Sun Nov 15 12:40:35 1998 James CE Johnson - - * docs/tutorials/018/* - * docs/tutorials/online-tutorials.html - A new tutorial on ACE_Token. - -Sun Nov 15 12:10:39 1998 James CE Johnson - - * docs/tutorials/013/* - - A few more tweeks now that the sun is up. Mostly simple - documentation changes but a couple of cleanups on the code as well. - -Sat Nov 14 23:15:58 EST 1998 James CE Johnson - - * docs/tutorials/013/message_queue.cpp - docs/tutorials/013/block.cpp - docs/tutorials/013/block.h - docs/tutorials/013/combine.shar - docs/tutorials/013/*.html - - Something changed between 4.5.x and 4.6 with the calling - order for ACE_Lock_Adapter<>::release() and ::destroy(). - - Specifically: In the older release, the data block's - lock was being held across its destruction. That required - some odd things to prevent the lock's deletion until it - was released. - - In the new version, it appears that release() is called - on the lock before the data block's destructor is called. - Data_Block::Lock::destroy() can now simply 'delete this' - The funky destroy_ flag is no longer necessary. - - Thanks to Bob McWhirter for causing me - to look back on this and get it fixed. - - I've also taken this opportunity to convert the tutorial - to the new style colorized HTML. - -Sat Nov 14 22:01:52 1998 David L. Levine - - * bin/make_release (diff): fixed logic that determines - when to use ../diffs/ instead of diffs/. Thanks to - Doug for reporting this. - -Sat Nov 14 14:21:49 1998 Douglas C. Schmidt - - * ACE version 4.6.4 released. - -Fri Nov 13 12:03:18 1998 Carlos O'Ryan - - * ace/config-irix6.x-sgic++.h: - * ace/config-irix6.x-sgic++-nothreads.h: - Under some versions of IRIX 6.X the readdir_r() prototype does - not show up unless threads support (actually POSIX1c support) is - enabled. I've change the config file to only use readdir_r() if - threads are enabled. Thanks to Bob Olson for - reporting this problem. - -Fri Nov 13 08:55:18 1998 David L. Levine - - * tests/Pipe_Test,Process_Mutex_Test.cpp: wrapped some variables - and functions with #ifndef ACE_LACKS_FORK, to avoid warnings - on g++/VxWorks. - -Thu Nov 12 09:07:28 1998 David L. Levine - - * bin/make_release: use ../diffs if building ace+tao kit, so - we no longer need a ../diffs symlink in TAO directory. Thanks - to Hans Rohnert for motivating this. - - * ace/README: removed ACE_LACKS_STREAM_MODULES. Thanks to - Ossama for reporting that it's no longer used. - -Wed Nov 11 23:11:15 1998 Darrell Brunsch - - * bin/ACEutils.pm: Updated to include $EXEPREFIX, which is used - in front of executables in the run_test.pl's. - -Wed Nov 11 01:08:32 1998 Nanbor Wang - - * ACE-INSTALL.html: Added a link to Ossama's ACE Configuration - Project. - -Tue Nov 10 22:29:00 1998 Douglas C. Schmidt - - * ACE version 4.6.3 released. - -Tue Nov 10 22:24:59 1998 Douglas C. Schmidt - - * docs/tutorials: Integrated Umar's code examples from - the ACE programmers manual. - -Tue Nov 10 21:53:01 1998 David L. Levine - - * ace/Process.cpp: added const to loop index, in CHORUS code. - -Tue Nov 10 19:27:32 1998 Darrell Brunsch - - * ace/OS.[i,cpp]: - Added checks for ACE_HAS_WINNT4 != 0 when checking for - ACE_HAS_WINNT4 like we do elsewhere. Thanks to Valery - Arkhangorodsky for pointing this out. - -Tue Nov 10 14:56:38 EST 1998 James CE Johnson - - * docs/tutorials/index.html - Including #17 now - - * docs/tutorials/017/*.html - docs/tutorials/017/combine.shar - Completed! Commented and converted into standared Tutorial format. - -Tue Nov 10 10:09:06 1998 David L. Levine - - * tests/Env_Value_Test.cpp (main): replaced hard-coded "/" with - ACE_DIRECTORY_SEPARATOR_STR. - - * ace/config-vxworks5.x.h: removed ACE_HAS_VERBOSE_NOTSUP #define. - Thanks to Margherita Vittone Wiersma and - Ramiro Penataro Blanco for complaining - about it. - -Mon Nov 9 23:27:59 1998 Douglas C. Schmidt - - * examples/ASX/Message_Queue/buffer_stream.cpp (main): Fixed an - off-by-one bug. Thanks to Rainer Blome - for reporting this. - -Mon Nov 09 21:31:56 1998 David L. Levine - - * tests/Env_Value_Test.cpp (main): prepended "./" to name of - file to spawn. With the last round of changes to - ace/Process.cpp, that's necessary if "." isn't in the user's - PATH. That's because we're now using only execvp, and no - longer using execve. - - * tests/Atomic_Op_Test.cpp,Barrier_Test.cpp,Buffer_Stream_Test.cpp, - Future_Test.cpp,IOStream_Test.cpp,MT_Reactor_Timer_Test.cpp, - Map_Manager_Test.cpp,Message_Block_Test.cpp, - Message_Queue_Notifications_Test.cpp,Notify_Performance_Test.cpp, - Pipe_Test.cpp,Priority_Buffer_Test.cpp,Priority_Task_Test.cpp, - Process_Mutex_Test.cpp,Reactor_Exceptions_Test.cpp, - Reactor_Notify_Test.cpp,Reactor_Performance_Test.cpp, - Reactors_Test.cpp,Reader_Writer_Test.cpp,SPIPE_Test.cpp, - SV_Shared_Memory_Test.cpp,Semaphore_Test.cpp,TSS_Test.cpp, - Task_Test.cpp,Thread_Manager_Test.cpp,Thread_Mutex_Test.cpp, - Thread_Pool_Reactor_Test.cpp,Thread_Pool_Test.cpp, - Tokens_Test.cpp,UPIPE_SAP_Test.cpp,Upgradable_RW_Test.cpp, - XtReactor_Test.cpp: - changed Log_Priority of "not supported" messages to LM_INFO. - Hopefully, it will help avoid confusion, especially among - new ACE users. Thanks to Gonzo for suggesting this. - - * tests/run_tests.sh: added ACE version number printouts. - - * BUG-REPORT-FORM: added phase (compilation/linking/execution/other), - and ACE+TAO/application/both. - -Mon Nov 9 02:52:11 1998 Douglas C. Schmidt - - * ace/Signal.cpp: handle_close() wasn't being called when - handle_signal() returns -1. It is now... Thanks to Vicentini - Emanuele for reporting this. - - * ace/Event_Handler.h (ACE_Event_Handler): Added a SIGNAL_MASK so - that we can pass this to handle_close() when handle_signal() - returns -1. - - * README: Fixed a typo where ACE-install.html was misspelled as - ACE-Install. Thanks to Michael Thomas - for reporting this. - -Sun Nov 08 22:00:22 1998 David L. Levine - - * ace/Message_Block.h: changed ACE_Message_Type to int, to - avoid overload ambiguity when it's unsigned. - -Sun Nov 8 10:42:38 1998 Douglas C. Schmidt - - * ace/Message_Block.h: Changed the ACE_Message_Type from being an - enum to being an ACE_UINT32 so that it's easier for users to add - their own message types to an ACE_Message_Queue. Thanks to - Martin Krumpolec for this suggestion and to - David Levine for catching that it should be an ACE_UINT32. - -Fri Nov 6 23:08:16 1998 Douglas C. Schmidt - - * ace/Process.cpp (spawn): Set result correctly when execvp() is - called. Also, make sure to check for putenv() failing. Thanks - to David Levine for pointing this out. - - * tests/Env_Value_Test.cpp: Reformatted the test a bit. - -Fri Nov 06 22:41:21 1998 David L. Levine - - * ace/Process.cpp (spawn): initialized local "result" to 0 - to avoid egcs warning about possible unitialized use. Added - const to loop index to avoid egcs warning about discarding - const. - - * ace/OS.h,Basic_Types.h: moved ACE_UINT64_FORMAT_SPECIFIER from - OS.h to Basic_Types.h, because other 64-bit int support is - there. Changed default ACE_UINT64_FORMAT_SPECIFIER to - "%llu", because that's what Solaris 2.x uses. - - * ace/config-win32-common.h,ace/config-linux-common.h: added - ACE_UINT64_FORMAT_SPECIFIER overrides. - - * ace/Log_Msg.cpp (log): added ACE_U_LongLong support. - -Fri Nov 6 13:29:11 1998 Douglas C. Schmidt - - * ace/OS.h (ACE_UINT64_FORMAT_SPECIFIER): Changed - #define ACE_UINT64_FORMAT_SPECIFIER "%I64d" - - to: - - #define ACE_UINT64_FORMAT_SPECIFIER "%I64u" - - to handle the signed/unsigned stuff correctly. Thanks Zoran! - - * ace/Process.cpp (spawn): Replaced the use of execve() with - execvp() by copying the environment variables manually first. - Thanks to Avi Nash for this fix. - - * ace/Log_Msg.cpp (log): Added support for a `%Q' format specifier - to the log() method. This prints out quad words, i.e., - ACE_UINT64's. Thanks to Zoran Ivanovic for - contributing this. - - * Updated the "site map" for ACE so that it doesn't use absolute - links. Thanks to Rainer Blome for - contributing this. - - * ace/Process.h: Clarified the behavior of ACE_Process and - ACE_Process_Options on UNIX because of the use of execve(), - which doesn't search the path. Thanks to Avi Nash for reporting - this. - -Fri Nov 06 15:01:20 1998 Rainer Blome - - * tests/run_tests.sh: augmented to make, run, and discard - each test for which it doesn't find an executable. - - Thus, if you first say make to build the executables, all tests - will just run (or not ;-), nothing is changed. - - If you start run_tests.sh without having built the executables, - it will make, run and discard the tests one by one instead. - Any compiler output goes to log/compilation.log. - -Fri Nov 06 12:58:24 1998 Nanbor Wang - - * ace/Thread_Manager.cpp: Removed several superfluous parens so - the code looks clearer and less error-prone. - -1998-11-06 James CE Johnson - - * docs/tutorials/013/block.cpp - * docs/tutorials/013/page05.html - * docs/tutorials/015/Compressor.cpp - * docs/tutorials/015/Crypt.cpp - * docs/tutorials/015/Recv.cpp - * docs/tutorials/015/Xmit.cpp - * docs/tutorials/015/*.html - Susan Liebeskind (susan.liebeskind@gtri.gatech.edu) discovered - that you can't use the 'inherited' typedef to initialize a - baseclass if you use the AIX C++ compiler. - -Fri Nov 06 08:57:49 1998 David L. Levine - - * tests/Mem_Map_Test.cpp (reverse_file): put the volatile - qualifier back in. LynxOS 3.0.0/PowerPC needs it with -O2 - and without ACE_HAS_INLINE. - - * VERSION: added reference to BUG-REPORT-FORM. Thanks to - Peter Nordlund for providing the new - text. - - * ace/SOCK_Dgram_Mcast.cpp (unsubscribe): fixed ACE_TRACE - string. - - * ACE-INSTALL.html: added note on possibly having to change - -G to -shared in platform_macro.GNU's SOFLAGS with GNU linker. - Thanks to Andy Gokhale and James Megquier for - reporting this. If anyone knows of an automagic fix, that would - be appreciated. - - * ACE-INSTALL.html: added note on how to enable IP multicast on - LynxOS. - -Thu Nov 5 23:10:46 1998 Nanbor Wang - - * ace/Thread_Manager.cpp (wait_task): Fixed a wrong parenthesis - pair. Thanks to Bob McWhirter for figuring - this out. - -Thu Nov 5 21:41:26 1998 James CE Johnson - - * docs/tutorials/017 - Began the ACE_Barrier tutorial. So far, it's just code but I'll - add the usual heavy comments & commentary in the next few days or - so. I'll update the docs/tutorials/index.html after that. - -Thu Nov 5 14:42:59 1998 Douglas C. Schmidt - - * ACE-INSTALL.html: Cleaned up a typo in the ACE-INSTALL.html - file. Thanks to James Megquier for reporting - this. - - * ace/config-sunos5.5.h: Cleaned up the comments a bit to make it - more clear how to enable/disable threads. Thanks to Russ - Noseworthy for reporting this. - - * ace/Stream.h: Clarified some subtleties with subclassing from - ACE_Stream. Thanks to Stephen Coy for reminding me of this. - - * include/makeinclude: Updated the platform_linux_kcc.GNU file. - Thanks to Joseph Weihs for reporting - this. - - * ACE.FAQ.html: Pointed out that ACE is Y2K compliant. Thanks to - Fredrik Lindahl for suggesting this. - -Thu Nov 05 13:23:29 1998 David L. Levine - - * include/makeinclude/platform_lynxos.GNU: default VERSION - to 3.0.0. We no longer build/test for LynxOS 2.5.0. Added - usage comments. - - * ACE-INSTALL.html: for LynxOS, added link to platform_lynxos.GNU - file, for usage information. Replaced some absolute paths in - URLs with relative paths. - -Wed Nov 4 23:28:55 1998 Douglas C. Schmidt - - * ace/Stream.h: Made all the methods of ACE_Stream virtual to - enable subclasses. Thanks to Bob McWhirter's for this - suggestion. - -Tue Nov 3 16:06:23 1998 Douglas C. Schmidt - - * examples/Logger/simple-server: Fixed the server so that it shuts - down cleanly when ^C is given. Thanks to Avi Nash - for reporting this. - -Tue Nov 03 13:17:49 1998 Nanbor Wang - - * ace/Thread_Manager.{h,i,cpp} (thread_desc_self): Changed this - method to an inline function. Removed outdated comments and - instead of searching thru the list when the current thread's - descriptor is not found in TSS cache, place an assertion there - for this should never happen. Thanks to Terry Rosenbaum - for motivating the change. - -Mon Nov 2 22:54:08 1998 Darrell Brunsch - - * ace/config-win32.h: - * ace/config-win32-common.h: - Only define ACE_LACKS_RECVMSG/SENDMSG for non-WinSock2 systems. - Before, it was being defined for all non-NT configurations. - Thanks to Irfan for suggesting this change. - -Mon Nov 2 18:18:04 1998 Douglas C. Schmidt - - * examples/Reactor/Dgram/CODgram.cpp, - examples/Reactor/Dgram/Dgram.cpp: - Fixed these programs so that they will work across - processes/machines, as well as within the same process. Thanks - to Larry for reporting this. - - * Added a "site map" for ACE. Thanks to Rainer Blome - for contributing this. - -Mon Nov 2 18:13:29 EST 1998 James CE Johnson - - * docs/ACE-FMM.html - Updated from Bob's latest. - -Mon Nov 02 11:22:30 1998 Nanbor Wang - - * tests/Thread_Pool_Reactor_Test.{h,cpp}: Renamed Acceptor_Handler to - Request_Handler to better reflect what the class actually does. - - * docs/ACE-categories.html: Fixed erroneous html tags. Thanks to - Rainer Blome for reporting this. - -Mon Nov 02 00:26:59 1998 Irfan Pyarali - - * ace: Since connectors really don't have any state, they don't - need to inherit from the SAP classes. Therefore, modified the - following to be simpler: - - TLI_Connector - DEV_Connector - SPIPE_Connector - UPIPE_Connector - -Sun Nov 01 21:18:24 1998 Irfan Pyarali - - * ace/WFMO_Reactor.cpp (upcall): Before handle_input is called - because of FD_CLOSE, we check the return value of handle_input - because of FD_READ. If the user had returned -1, we won't call - handle_input again. Thanks to Gonzalo Diethelm - for suggesting this change. - - * examples/Reactor/WFMO_Reactor/test_network_events.cpp - (handle_input): Changed this method to keep reading from the - socket until EWOULDBLOCK occurs. - -Sun Nov 1 17:32:50 1998 Douglas C. Schmidt - - * tests/Hash_Map_Manager_Test.cpp (run_test): Oops, we need to - account for compilers that lack template specialization! Thanks - to David Levine for reporting this. - -Sun Nov 01 17:24:56 1998 David L. Levine - - * ace/config-win32-borland.h,config-win32-common.h,README: - removed ACE_LACKS_STL_DEFAULT_TEMPLATE_PARAMETER because - it's no longer used. Thanks to Ossama for reporting this. - -Sun Nov 01 08:54:08 1998 Douglas C. Schmidt - - * ACE version 4.6.2 released. - -Sat Oct 31 18:12:36 1998 Douglas C. Schmidt - - * tests/Hash_Map_Manager_Test.cpp (run_test): updated the test to - validate that the trybind() operation works correctly. Thanks - to Bill Fulton for this - fix. - - * ace/Hash_Map_Manager.cpp: trybind() was doing the "Wrong - Thing"[TM] by overwritting the INT_ID even if the entry was - already in the map! It's fixed now... Thanks to Bill Fulton - for reporting this. - -Sat Oct 31 17:15:42 1998 Douglas C. Schmidt - - * ACE version 4.6.1 released. - -1998-10-31 Nagarajan Surendran - - * ace/Select_Reactor_T.cpp (dispatch): Added signal_occurred at - the right return to indicate that a handle_signal () has been - dispatched. - -Fri Oct 30 20:31:27 1998 Darrell Brunsch - - * tests/Semaphore_Test.cpp: Cleaned up the #if's to make it easier - to understand, and fixed a related problem. Thanks to - Ossama for finding this. - -Fri Oct 30 15:47:39 1998 Douglas C. Schmidt - - * ace/Select_Reactor_T.cpp (dispatch): Make sure to include a - count of 1 if the Reactor dispatched a handle_signal() method. - This ensures we don't return 0 from handle_events() in cases - where we didn't timeout... Thanks to Naga for chasing this - down! - -Fri Oct 30 11:53:16 1998 David L. Levine - - * ace/config-sunos5.6.h: removed ACE_HAS_POSIX_SEM #define because - it caused a seg fault in Reactor_Notify_Test on - g++ 2.7.2.3/Solaris86 (with -D_POSIX_C_SOURCE=199506L - -D_POSIX_PTHREAD_SEMANTICS -D__EXTENSIONS__). The seg fault is - at the end of the test: - - #0 0xdfd5a809 in realfree () - #1 0xdfd5ad16 in cleanfree () - #2 0xdfd5a43a in _malloc_unlocked () - #3 0xdfd5a2e9 in malloc () - #4 0xdfd61a25 in _strdup () - #5 0xdfeffcd5 in ACE_Log_Msg::log (this=0x8052ec0, - format_str=0x804f0af "(%P|%t) Ending %s test at %D\n", - log_priority=, - argp=0x80476ac "\nð\004\bÔÀÿß\177\023\004\bÔv\004\b§¹\004\b\001") - at /export/home/conga/levine/ACE_wrappers/ace/OS.i:1399 - #6 0xdfeffbfa in ACE_Log_Msg::log (this=0x8052ec0, - log_priority=, - format_str=0x804f0ac "d\n") at Log_Msg.cpp:601 - #7 0x804c935 in main () at Reactor_Notify_Test.cpp:297 - - It's hard to imagine how ACE_HAS_POSIX_SEM could cause that. - But, it's perfectly repeatable. And, we can live without - ACE_HAS_POSIX_SEM. - - * tests/run_tests.sh: really commented out Thread_Pool_Reactor_Test. - It _wasn't_ commented out in the 4.6 release. - - * tests/Mem_Map_Test.cpp (reverse_file): removed volatile - qualifier because it no longer seems to be necessary for LynxOS - 3.0.0/PowerPC. - -Fri Oct 30 09:23:55 1998 Douglas C. Schmidt - - * ace/SString.h: Cleaned up the ACE_SString comments to be more - helpful. Thanks to Ivan Murphy for - motivating this. - -Thu Oct 29 22:19:19 1998 James CE Johnson - - * docs/ACE-FMM.html: - Updated from Bob's latest version. Thanks Bob! - -Thu Oct 29 21:13:41 1998 James CE Johnson - - * docs/tutorials/016/Condition_i.cpp: - Fixed messed-up the signature on - Condition::operator Condition::value_t(void) - -Thu Oct 29 18:51:19 1998 Steve Huston - - * ace/ACE.cpp: Added "|| defined (_AIX)" to decision to do - template instantiations at end of file. Thanks to Ian - Wright for this fix. - - * ace/config-aix-4.1.x.h: Added ability to use g++ in addition to xlC. - Thanks again to Ian Wright for this addition. - - * include/makeinclude/platform_aix_g++.GNU: New platform_macros file - for building on AIX with g++. And, once again, thanks to Ian Wright - for this contribution. - - * ace/NT_Service.i: Added ACE_INLINE to the methods in this file. - Thanks to Goran Lowkrantz - for this fix. - -Thu Oct 29 17:36:29 1998 Darrell Brunsch - - * tests/Semaphore_Test: Removed the timed acquire stuff from - the worker thread and the display at the end of the test. - Now it shouldn't output the confusing "100% of threads - timed out" message on platforms without timed acquire. - -Thu Oct 29 15:25:19 1998 Nanbor Wang - - * ace/Svc_Handler.cpp (open): Added a trailing newline to the - error message. - -Thu Oct 29 15:13:07 EST 1998 James CE Johnson - - * docs/tutorials/index.html - * docs/tutorials/016/* - Added Tutorial 016. This discusses ACE_Condition<> and ways - to make it more manageable in an application. - -Thu Oct 29 11:44:21 1998 David L. Levine - - * ace/config-sunos5.6.h: changed ACE_THREAD_POSIX_SEM to - ACE_HAS_POSIX_SEM. It looked like a typo. - Only #define ACE_HAS_POSIX_SEM if _POSIX_PTHREAD_SEMANTICS is - #defined. Thanks to Ossama for help with this. - - Also, removed ACE_HAS_PTHREADS_STD because it's - #defined in config-sunos5.5.h. - -Wed Oct 28 14:30:01 1998 Rainer Blome - - * ace/Makefile: added AIX_TEMPLATE_HACK support. - This patch helps using Rob Jordan's trick described in the - ACE-INSTALL file. The existing description in the ACE-INSTALL - is a little misleading. Creating a ACE_All_Tmp.h will not - really help, because the Makefile will look for a ACE_All_Tmp.cpp. - - Here's how to use the patch: - - Use `make ACE_All' to create 0_ACE_All_Src.h, 0_ACE_All_Src.cpp and - 0_ACE_All_Tmp.cpp. These files contain include directives for each - of the files mentioned in the makefile variables FILES and - TEMPLATE_FILES. Then `make AIX_TEMPLATE_HACK=1' to compile the - library in one go. Compilation is fast then, but `ar' will still - take a long time. - -Wed Oct 28 09:13:10 1998 David L. Levine - - * ACE-INSTALL.html: expanded discussion of non-static - ACE_Object_Manager, including the fact that it's the - default config on Win32 and VxWorks. And that not - declaring main () with two arguments will lead to - link failure due to unresolved ace_main_i. - - * tests/Time_Service_Test.cpp,Tokens_Test.cpp: display - filename if ACE_Process::spawn () fails. - - * tests/run_tests.sh: only run Time_Service_Test if - ../netsvcs/server/main exists. Also, exit if a command - line argument is provided to run_tests.sh, and the argument - is not a Chorus hostname. - - * ace/Object_Manager.h: declare the ACE_Object_Manager_Base - methods to be public, instead of protected, for DEC CXX 5.6 - (in addition to Diab for PSoS). Thanks to Doug Anderson - for suggesting this. - - * ace/config-sunos5.5.h: removed ACE_HAS_TIMER_SKEW. Thanks - to Russ Noseworthy for verifying - that it no longer seems to be necessary. - - * ace/config-linux-common.h: added ACE_HAS_PROCFS. - -Tue Oct 27 22:14:18 1998 David L. Levine - - * ACE version 4.6 released. - -Tue Oct 27 21:54:17 1998 Douglas C. Schmidt - - * man: Added the ACE_Service_Repository_Iterator.{html,3} files. - Thanks to Erik Koerber for reporting - this. - - * Updated the manual pages to reflect the latest APIs in - the new release. - -Tue Oct 27 14:16:27 1998 James CE Johnson - - * docs/tutorials/015/Recv.cpp : Changed atoi() to ACE_OS::atoi() - * docs/tutorials/015/page22.html: Ensure that the correct cpp - and header files are HREF'd - - Thanks to Susan Leibeskind for catching these. - -Tue Oct 27 12:31:28 1998 Nanbor Wang - - * ace/OS.i (cond_timedwait): Made sure the broadcaster always gets - signaled no matter what the "wait" function return if this is - the last waiter for this cv. In any case, the calling thread is - no longer waiting on the cv any more. - -Tue Oct 27 08:22:41 1998 David L. Levine - - * ace/config-win32.h: fixed typo in comment: - ACE_DOESNT_INSTANTIATE_NONSTATIC_OBJECT_MANAGER instead of - ACE_DONT_INSTANTIATE_NONSTATIC_OBJECT_MANAGER. Thanks to - Olivier Lau for reporting this. - - * tests/Semaphore_Test.cpp (test_timeout_count,test_timeout): - put these in #ifndef STHREADS && #ifndef POSIX_SEM protection - to avoid compiler warnings about unused variable/function. - - * ace/config-sunos5.5.h: added comment to comment out - ACE_HAS_REGEX if there are link problems with g++ or egcs on - SunOS 5.5. Thanks to Hakan Kallberg for - reporting this. - - * ACE-INSTALL.html: added Sun C++ version/patchlevel information, - including a link to Sun's tech patches home patch. Thanks to - Susan for recommending this, and for providing the URL. - - * ACE-INSTALL.html: added note about segfault when attempting to - register a signal handler on LynxOS 3.0.0/PowerPC. - - * ace/Object_Manager.cpp (fini): added check of - instance_->shutting_down_ on entry. This will avoid - reentrance if fini () is called before the Object_Manager - is (explicitly) destroyed. Thanks to Gonzo for reporting it. - -Tue Oct 27 05:47:21 1998 Douglas C. Schmidt - - * ACE version 4.5.65 released. - -Tue Oct 27 03:24:36 1998 Nanbor Wang - - * ace/TP_Reactor.h: Added an description for TP_Reactor. - - * ace/OS.i (cond_timedwait): When emulating cv, there're chances - that the "wait for being signaled" function times out and return - an error. In this rare case, we must also signal the - broadcasting thread to bail out of cond_broadcast to avoid - deadlock since we are no longer waiting on the cv anymore. - Thanks to Detlef Becker for - noticing the problem and providing the patch. - -Mon Oct 26 20:59:15 1998 David L. Levine - - * ace/Synch_T.{i,cpp} (ACE_Lock_Adapter): uninlined the - ACE_Lock_Adapter default constructor. SunPRO C++ 4.2 + patch - 104631-07 has trouble compiling TAO with it inline. - Thanks to Terry Rosenbaum - for tracking this problem down and providing the fix. - -Mon Oct 26 18:33:28 1998 Carlos O'Ryan - - * Updated the dependencies in all the Makefiles, this was required - after the new Message_Block_T.{h,i,cpp} files. - -Mon Oct 26 19:16:27 1998 James CE Johnson - - * docs/tutorials/000/index.html: This index is has a layout - similar to Umar's ACE Tutorial document. As time progresses, we - will be merging the examples in his document into the online - tutorials. The current free-form tutorials will not go away but - will be supplimented with Umar's more structured approach. - -Mon Oct 26 17:37:55 1998 Carlos O'Ryan - - * ace/OS.h: - * ace/config-sunos5.4-sunc++-4.x.h: - * ace/config-sunos5.5.h: - Sun/CC throws the ::xalloc exception when operator new cannot - allocate the memory, thanks to Terry Rosenbaum - for reporting this and - providing a patch. - - * ace/Makefile: - Updated dependencies. - -Mon Oct 26 17:02:48 1998 Nanbor Wang - - * tests/Thread_Pool_Reactor_Test.cpp: Reduced the number of - connector threads _ONLY_ on platforms that couldn't handle too - many simultaneous connection. - - Changed to use dotted-decimal format to specify connection - endpoint for some platforms don't have a decent DNS support. - -Mon Oct 26 12:04:10 1998 Nanbor Wang - - * ace/ace_lib.dsp: Added TP_Reactor into the project. - -Mon Oct 26 11:29:55 1998 Darrell E. Brunsch - - * tests/Semaphore_Test.cpp: Changed behavior for ACE_HAS_STHREADS - and ACE_HAS_POSIX_SEM so it still tests everything but doesn't - test the timed waits. - -Mon Oct 26 08:22:18 1998 David L. Levine - - * docs/ACE-guidelines.html: added recommendation and - explanation re. use of #pragma once. - - * docs/ACE-guidelines.html: recommend avoiding g++ 2.8.1. - - * tests/SV_Shared_Memory_Test.cpp: don't try to run this - test if ACE_LACKS_FORK, because it uses ACE_OS::fork (). - It allocates the shared memory segment before the fork, - of course, so that was leaked if the fork was attempted - but failed. - - * tests/Pipe_Test.cpp,Process_Mutex_Test.cpp: don't try - to run these tests if ACE_LACKS_FORK, either. - - * tests/Mem_Map_Test.cpp (reverse_file): use a local, volatile - variable for the array index. Without it, the test core dumps - on LynxOS 3.0.0/PowerPC with -O2. - - * tests/run_tests.sh: run Timer_Queue_Test and Upgradeable_RW_Test - on LynxOS. - - * tests/run_tests.vxworks: changed - Message_Queue_Notifications_Test.cpp to - Message_Queue_Notifications_Test. - -Mon Oct 26 01:49:44 1998 Nanbor Wang - - * tests/Env_Value_Test.cpp (main): Changed argv and envp to type - LPTSTR[]. - -Sun Oct 25 23:52:40 1998 Douglas C. Schmidt - - * ACE version 4.5.64 released. - -Sun Oct 25 22:18:26 1998 Douglas C. Schmidt - - * ace/Select_Reactor_T.cpp (dispatch): Be more careful in how we - handle dispatching when signals occur. In general, if we're - interrupted by a non-Reactor-aware signal handler we need to - bail out... Thanks to Naga for reporting this. - - * examples/Reactor/Misc/test_signals_1.cpp: Cleaned up this test - so that it'll show off the signal handling capabilities of the - ACE Reactor better. - -Sun Oct 25 14:13:31 1998 Darrell Brunsch - - * ace/OS.i: Changed ACE_OS::sigaction to work with a null value - for on Windows. Thanks to Jim Buck for - reporting this. - - * examples/Reactor/Misc/reactors.dsp: - * examples/Reactor/Misc/signals_1.dsp: - * examples/Reactor/Misc/signals_2.dsp: - Corrected the include and library paths. Thanks to - Zoran Ivanovic for reporting this. - - * ChangeLog: Removed all the trailing spaces and tab characters so - CVS's commit-check will be happy. - -Sun Oct 25 10:59:21 1998 Douglas C. Schmidt - - * ace/config-sunos5.5.h: Added - - #if defined (i386) - #define ACE_HAS_X86_STAT_MACROS - #endif /* i386 */ - - to check for the [f]stat macros on Solaris for Intel. Thanks to - Daniel Nieten for reporting this. - -Sun Oct 25 00:15:03 1998 Nanbor Wang - - * ace/Service_Config.cpp (process_directives): We should use - ASYS_WIDE_STRING to convert a to a UNICODE string. - -Sat Oct 24 18:39:11 1998 Steve Huston - - * ace/ACE.cpp (get_ip_interfaces, get_handle): Add _AIX to the list - of macros which enable the proper code for these to work. - ACE::get_ip_interfaces still doesn't work right on AIX, though - - it reports one link-level interface. May need to get IBM's help - with this. - -Sat Oct 24 18:07:00 1998 Nanbor Wang - - * ace/OS.h (ACE_TEXT): Consolidated various ACE_TEXT definitions - into one and place it near the beginning of the file. - Re-indented macros. - -Sat Oct 24 17:47:15 1998 Arturo Montes - - * ace/OS.i (sigwait): Sigwait is little different with FSU - pthreads, sigwait take two arguments and return -1 if error, 0 - in otherwise. - -Sat Oct 24 17:26:41 1998 Darrell Brunsch - - * ace/OS.h (ACE_TEXT): Moved Nanbor's changes outside of - ACE_PSOS block. - - * ace/config-win32.h: Defined ACE_HAS_TEXT_MACRO_CONFLICT, - seeing that MSVC already defines __TEXT. - -Sat Oct 24 15:21:32 1998 Nanbor Wang - - * ace/OS.h (ACE_TEXT): Changed the macro __TEXT to ACE_TEXT to - avoid conflicting with OS/390. __TEXT is still available for - backward compatibility unless ACE_HAS_TEXT_MACRO_CONFLICT is - defined. However, using ACE_TEXT is prefered for obvious - reason. Thanks to Paul K. Fisher for - reporting this. - - * ace/README: Added documentation for ACE_HAS_TEXT_MACRO_CONFLICT. - - * *.cpp: Replaced a bunch of __TEXT to ACE_TEXT. - -Sat Oct 24 08:34:08 1998 Douglas C. Schmidt - - * ace/OS.i: Updated the fstat() and stat() calls to work properly - on the Solaris for Intel platform, which does weird things to - the fstat() and stat() functions to handle 32 and 64 bit file - offsets. Thanks to Daniel Nieten for - reporting this. - -Sat Oct 24 02:13:11 1998 Detlef Backer - - * ace/OS.cpp (invoke): ACE_Thread_Adapter::invoke() swapped the - nesting level of __except() and __finally() because if the - selector returns EXCEPTION_EXECUTE_HANDLER a global unwind takes - place, activating nested __finally blocks and in this case - terminating the thread before having a chance to execute the - handler. After reversing the logic, now the exception handler - gets called first before the termination handler is invoked. - - Furthermore I added the call to GetExceptionInformation(), - passing the result as a void* into the selector function. This - allows a case sensitive handling startegy of the exception in - the selector function. - - (inherit_log_msg): In ACE_Thread_Adapter::inherit_log_msg() I - moved the copy operation from the selector and handler - attributes outside of the "if (this->ostream_)" condition, - because I don't think this condition is related to the SEH. - - (thr_create): In ACE_OS::thr_create() I "inherit" the current - selector handler into the newly created ACE_Thread_Adapter in - case that the caller did not specify one at invocation. - - * ace/Thread_Manager.cpp (spawn_i): In - ACE_Thread_Manager::spawn_i() I added the initialization of - selector and handler at the creation time of - ACE_Thread_Adapter. - -Fri Oct 23 21:11:03 1998 Douglas C. Schmidt - - * ace/OS.h: Changed a comment to be consistent. Thanks to Serge - Kolgan for reporting this. - -Fri Oct 23 20:39:00 1998 Chris Gill - - * Paul Christopher Gill was born Friday October 23, 1998, at - 20:39 CDT, weighing 6 lbs. 7 oz., at 19 3/4 inches in length. - A true hacker in the making, Paul decided to work through the - evening even though it was a Friday night. ;-) - -Fri Oct 23 11:37:38 1998 Steve Huston - - * include/makeinclude/platform_aix4.2.GNU: Removed -qinitauto=5F from - DCFLAGS - with it, Process_Strategy_Test was going CPU bound in an - ostream operation. - -Fri Oct 23 00:27:11 1998 Douglas C. Schmidt - - * ACE version 4.5.63 released. - -Thu Oct 22 21:32:14 1998 Darrell Brunsch - - * ACE-INSTALL.html: Since we've been successfully using MSVC 6.0 - for a while, might as well mention it here in the documentation. - -Thu Oct 22 19:48:20 1998 James CE Johnson - - * docs/index.html - Reformatted it via emacs to make it more readable when editing. - Added a comment pointing to Bob McWhirter's original FMM document - to make it easier to update the repository in the future. - - * docs/tutorials/015/Client.h - * docs/tutorials/015/Client.cpp - * docs/tutorials/015/Server.h - * docs/tutorials/015/Server.cpp - - Since Windows just *pretends* to have mixed-case names the cpp - files conflict with client.cpp and server.cpp. I renamed these - files to: - - * docs/tutorials/015/Client_i.h - * docs/tutorials/015/Client_i.cpp - * docs/tutorials/015/Server_i.h - * docs/tutorials/015/Server_i.cpp - - Which necessitated changes to - * docs/tutorials/015/client.cpp - * docs/tutorials/015/server.cpp - * docs/tutorials/015/Makefile.client - * docs/tutorials/015/Makefile.server - * docs/tutorials/015/Makefile - * docs/tutorials/015/combine.shar - * docs/tutorials/015/*.html - - Thanks to Darrell Brunsch for catching this. - - -Thu Oct 22 16:52:21 1998 Steve Huston - - * tests/Thread_Pool_Reactor_Test.(cpp h): Adjusted debug output to - learn more about what's happening; added a check to be sure that - the correct number of messages are processed by each Svc_Handler. - -Thu Oct 22 15:46:42 1998 David L. Levine - - * ace/OS.cpp (ACE_TSS_Emulation::tss_base): if storage for - the TSS data must be allocated off the heap, zero all of it. - This avoids problems after fork in the child process on - LynxOS. - -Wed Oct 21 22:23:06 1998 Douglas C. Schmidt - - * ACE version 4.5.62 released. - -Wed Oct 21 21:19:53 1998 Douglas C. Schmidt - - * ace/Service_Config.cpp (process_directives): Replaced a - return -1 with a result = -1 and a break to avoid a - memory leak. Thanks to David for pointing this out. - -Wed Oct 21 20:00:51 1998 Nagarajan Surendran - - * tests/Timer_Queue_Test.cpp : - * tests/Map_Manager_Test.cpp: - * tests/Dynamic_Priority_Test.cpp: - Replaced double with ACE_timer_t everywhere so that it works on - platforms like Chorus. - -Wed Oct 21 18:44:26 1998 Nagarajan Surendran - - * tests/run_tests.sh: Changed egrep Chorus to CHORUS to identify a - Chorus vme board. - -Wed Oct 21 17:51:52 1998 Steve Huston - - * ace/ACE.cpp (get_ip_interfaces): If compiling on Win32 w/ Winsock 2, - use WSAIoctl(SIO_GET_INTERFACE_LIST) to get the interfaces from the - kernel rather than trying to fish through the registry. This should - help TAO's naming service be somewhat more reliable on Win32, as - well as solve some other nasties that plagued this thing. - - * ace/ws2tcpip.h: Filled out necessary pieces for the above change. - -Wed Oct 21 14:19:11 EDT 1998 James CE Johnson - - * docs/tutorials/007/thread_pool.cpp - * docs/tutorials/007/thread_pool.h - Alison Greig's question caused me to look back at these and - I find that an older g++ is unhappy about the close() methods. - It seems to confuse the baseclass 'close(u_long flags=0)' with - my derived 'close(void)' even though I also have 'close(u_long)'. - Anyway, I removed my 'close(void)' and now do all of my work in - the other method. - - * docs/tutorials/007/client_handler.cpp:handle_input() - Now using ACE_OS::thr_equal() instead of operator==() - This fixes Alison's problem. (Thanks for the solution David!) - -Wed Oct 21 07:12:32 1998 David L. Levine - - * tests/Thread_Pool_Reactor_Test.cpp: moved #include of - tests/Thread_Pool_Reactor_Test.h inside of ACE_HAS_THREADS - protection, so that it will compile without thread support. - Thanks to Jan Perman for - reporting this. - - * tests/MT_Reactor_Timer_Test.cpp: moved "the_reactor" declaration - outside of ACE_HAS_THREADS protection, so that it will compile - without thread support. Thanks to Jan Perman - for reporting this. - - * bin/g++dep: added -DACE_LACKS_PRAGMA_ONCE to keep it - quiet when the config.h doesn't #define it. Thanks to - Naga for reporting this. - - * ace/config-g++-common.h: protected #define of ACE_LACKS_PRAGMA_ONCE, - because g++dep now defines it with a -D. - - * ACE-INSTALL.html: updated Linux and LynxOS version status, - and egcs --enable-shared discussion. - - * ace/Hash_Map_Manager.cpp (operator *): only declare local "result" - without ACE_NDEBUG, to avoid compile warning with debug=0. - - * ace/Synch.cpp (ACE_Recursive_Thread_Mutex::release): only - declare local "t_id" without ACE_NDEBUG, to avoid compile warning - with debug=0. - - * ace/Timer_Heap_T.cpp (reschedule): only declare local "timerID" - without ACE_NDEBUG, to avoid compile warning with debug=0. - - * ace/SV_Message_Queue.h: fixed #ifndef protection to use - ACE_SV_MESSAGE_QUEUE_H instead of ACE_MESSAGE_QUEUE_H, to - prevent collision with the Message_Queue.h's protection. - Thanks to Rainer Blome for - reporting this. - - * ace/Object_Manager.cpp: removed some old, unused printouts. - -Tue Oct 20 19:40:41 1998 Steve Huston - - * include/makeinclude/platform_hpux_aCC.GNU: Added - -DACE_LACKS_PRAGMA_ONCE - aCC on both 10.20 and 11.00 complain about - #pragma once. Added it here rather than in config.h because (1) it - can be set in one file, not two, (2) in case a #pragma gets in before - config.h is included somehow. - - * include/makeinclude/platform_aix4.2.GNU: Revised flags passed to - xlC_r - remove -qextchk because it's the cause of the mismatched - type errors building netsvcs/lib (IBM reports this is fixed in - compiler version 3.6.4). Removed -M - it's not needed and wastes - disk space. Moved -qcheck to DCFLAGS and added -qinitauto=5F to - DCFLAGS. - - * include/makeinclude/rules.local.GNU: Added SHLIBA to the files that - get 'realclean'ed - this covers libACEshr.a on AIX. - - * netsvcs/lib/Makefile: - * netsvcs/clients/Naming/Client/Makefile: Added ACELIB to LIBS to - insure libACE is linked in. - -Tue Oct 20 19:37:42 1998 James CE Johnson - - * docs/tutorials/014/*.html: - * docs/tutorials/014/Makefile: - * docs/tutorials/014/combine.shar: - Colorized using the new and improved 'combine' script. Also - modified the Makefile so that the HTML sources won't get destroyed - if the shar operation failed. - - * docs/tutorials/015/Makefile: - Added the same Makefile modification to prevent loss of HTML sources - -Tue Oct 20 16:28:12 1998 David L. Levine - - * ACE-INSTALL.html: added recommended DU CXX version info. - Thanks to Susan Liebeskind - for suggesting this. - - * ACE-INSTALL.html: added AIX 4.2.1 xlC V3.1 patch info. - Thanks to Susan Liebeskind - for supplying it, in ready-to-use form. - - * tests/Thread_Manager._Test.cpp (main): changed debug messages - for suspend_grp/resume_grp with Pthreads, which fail due to - ENOTSUP. The resume_grp message was wrong (copy and paste - error). In addition, I reworded the messages to that - run_tests.check won't catch them. They don't indicate a - problem, just that Pthreads doesn't support those operations; - see Steve's Thu Oct 15 16:40:41 1998 entry. - -Tue Oct 20 14:31:37 EDT 1998 James CE Johnson - - * docs/tutorials/001/Makefile - * docs/tutorials/002/Makefile - * docs/tutorials/003/Makefile - * docs/tutorials/005/Makefile - * docs/tutorials/006/Makefile - * docs/tutorials/007/Makefile - * docs/tutorials/008/Makefile - * docs/tutorials/009/Makefile - * docs/tutorials/010/Makefile - * docs/tutorials/011/Makefile - * docs/tutorials/012/Makefile - * docs/tutorials/013/Makefile - * docs/tutorials/012a/Makefile - * docs/tutorials/Makefile - - Updated these makefiles to remove rules.lib.GNU - Added the "top-level" makefile to allow building - of all tutorials in one step. - -Tue Oct 20 12:54:39 1998 David L. Levine - - * ACE version 4.5.61 released. - -Tue Oct 20 07:43:56 1998 David L. Levine - - * include/makeinclude/platform_irix6.x_g++.GNU: added - LIBS += -lpthread. Thanks to Peter Nordlund - for reporting that it is needed. - - * ace/config-irix6.x-sgic++-nothreads.h,config-irix6.x-common.h: - moved ACE_HAS_GPERF from SGI C++ config to common SGI C++/g++ - config. Thanks to Peter Nordlund for - recommending this. - - * ace/config-aix-4.1.x.h,config-dgux-4.11-epc.h,config-dgux-4.x-ghs.h, - config-irix5.2.h,config-irix5.3-g++.h,config-irix5.3-sgic++.h, - config-m88k.h,config-tandem.h,config-osf1-3.2.h, - config-sunos5.4-centerline-2.x.h,config-sunos5.4-g++.h, - config-sunos5.4-sunc++-4.x-orbix.h,config-sunos5.4-sunc++-4.x.h, - config-sunos5.5.h,config-unixware-2.01-g++.h, - config-unixware-2.1.2-g++.h,config-irix6.x-common.h,README: - removed ACE_HAS_SVR4_TIME because it is no longer used. - Thanks to Peter Nordlund for - reporting this. - - * tests/MT_Reactor_Timer_Test.cpp (handle_exception, - handle_timeout): added ACE_UNUSED_ARG's. - - * netsvcs/clients/Naming/Dump_Restore/Dump_Restore.cpp: - added #include of ace/streams.h, because the dump () - method uses ofstream. - - * examples/Connection/non_blocking/CPP-acceptor.cpp (handle_close): - added ACE_UNUSED_ARG's. - - * ace/config-sunos5.5-sunc++-4.x.h,config-sunos5.5-g++.h: - removed, because config-sunos5.5.h should be used instead. - - * performance-tests/Misc/basic_perf.cpp (iteration_time): - added static cast 0 to ACE_hrtime_t to please g++ - on VxWorks (which uses ACE_U_LongLong for ACE_hrtime_t). - - * ace/config-cygwin32-common.h: removed msg_accrights{,len} - defines, because they were commented out. - - * OS.h,config-aix-4.1.x.h,config-linux-common.h,README: - added ACE_LACKS_MSG_ACCRIGHTS support. This consolidates - code that was in both of the config files. Thanks to - Ossama for suggesting it. - - * include/makeinclude/platform_vxworks*.GNU: moved our - wind installation from /project/doc/wind to /project/doc/pkg/wind. - -Tue Oct 20 07:09:31 1998 Steve Huston - - * ace/config-aix-4.2.x.h: Added ACE_HAS_GPERF. - - * tests/tests.(mak mdp): Fixed to build clean; Added: - DLList_Test, High_Res_Timer_Test, Dynamic_Priority_Test, - Thread_Pool_Reactor_Test, Upgradable_RW_Test, MT_Reactor_Timer_Test. - -Mon Oct 19 21:40:56 1998 David L. Levine - - * *.h: changed include protection from #if !defined to ifndef. - Added #pragma once, if possible, i.e., after #include of - an ace/ header. It can only be done after ace/config.h - is included, because some platforms don't allow #pragma once. - - * include/makeinclude/wrapper_macros.GNU: removed -DACE_LACKS_PRAGMA - for g++ because it's now in config-g++-common.h. - -Mon Oct 19 20:44:33 1998 James CE Johnson - - * docs/tutorials/015: - Once again I've modified just about every file. Finally though - Tutorial 015: Protocol Stream is done! - - * docs/tutorials/combine - Get rid of that silly "links" file and add "bodies". The new file - is an ordered list of files to use when assembling the HTML - pages. This makes it easier to stuff source code into the pages. - - * docs/tutorials/index.html - I could have sworn that I linked in 014 many moons ago. - Appologies to Bob McWhirter for leaving this out for so long! - -Mon Oct 19 17:00:52 EDT 1998 James CE Johnson - - * docs/tutorials/015: - Just about everything in this directory has been touched. I'm - in the middle of documenting it and need a checkpoint so nothing - gets lost! ETA for completion is later tonight or sometime tomorrow. - -Mon Oct 19 11:47:20 1998 David L. Levine - - * ace/OS.cpp (readPPCTimeBase): wrapped each line in "". - Otherwise, the C++ compiler on MVS complains unterminated - strings. Even though it isn't supposed to see this code :-/ - Thanks to Chuck Gehr for - reporting this. - - * ace/config-g++-common.h: added ACE_LACKS_PRAGMA_ONCE. - g++ doesn't need it, because it optimizes includes if the #ifndef - header protection convention is followed. And, it - complains about #pragma once. - - * ace/config-win32-common.h: added ACE_LACKS_PRAGMA_ONCE, - unless _MSC_VER < 1000. - -Mon Oct 19 11:13:00 1998 Chris Gill - - * ace/Message_Block.h: Added title and description comments to - deadline and laxity message priority strategy classes. - -Sun Oct 18 17:22:00 1998 James CE Johnson - - * docs/tutorials/014/combine.shar: - * docs/tutorials/015/combine.shar: - The additional input files to the combine script. A shell archive - seems to be the most economical way to keep their history. - Individual files just create clutter and a tar.gz wouldn't be - diff-able in the repository. - - * docs/tutorials/014/Makefile: - * docs/tutorials/015/Makefile: - Adjusted to create the HTML and combine.shar files. - -Sun Oct 18 16:51:43 1998 James CE Johnson - - * docs/tutorials/combine: A perl script for combining several - "source" files into an HTML. It was designed to combine comment - files with .cpp and .h files in the creation of tutorials. The - HTML output is commited to the repository, I haven't decided yet - if it's worth saving the input. - - * docs/tutorials/fix.Makefile: This was pulled out of one of the - old tutorials and made a bit more useful. It's purpose is to pull - dependency information out of a Makefile and create a .depend file - instead. This keeps makfiles cleaner and less confusing. - - * docs/tutorials/014/Makefile - * docs/tutorials/014/Task.cpp - Minor changes. I attempted to add THR_JOINABLE to the activate() - call but that resulted in a permanent hangup on Linux when trying - to exit the application - - * docs/tutorials/015/Client.cpp - * docs/tutorials/015/Client.h - * docs/tutorials/015/Compressor.cpp - * docs/tutorials/015/Compressor.h - * docs/tutorials/015/Crypt.cpp - * docs/tutorials/015/Crypt.h - * docs/tutorials/015/Handler.cpp - * docs/tutorials/015/Handler.h - * docs/tutorials/015/Makefile - * docs/tutorials/015/Makefile.client - * docs/tutorials/015/Makefile.server - * docs/tutorials/015/Protocol_Stream.cpp - * docs/tutorials/015/Protocol_Stream.h - * docs/tutorials/015/Protocol_Task.cpp - * docs/tutorials/015/Protocol_Task.h - * docs/tutorials/015/Recv.cpp - * docs/tutorials/015/Recv.h - * docs/tutorials/015/Server.cpp - * docs/tutorials/015/Server.h - * docs/tutorials/015/Xmit.cpp - * docs/tutorials/015/Xmit.h - * docs/tutorials/015/client.cpp - * docs/tutorials/015/page01.html - * docs/tutorials/015/page02.html - * docs/tutorials/015/page03.html - * docs/tutorials/015/page04.html - * docs/tutorials/015/page05.html - * docs/tutorials/015/page06.html - * docs/tutorials/015/server.cpp - The beginnings of a protocol stream tutorial. The code is done but - the tutorializing (eg -- HTML and comments) isn't complete. - -Sat Oct 17 21:20:44 1998 David L. Levine - - * ace/OS.i (gethrtime): updated comments on Alpha rpcc - instruction. Only 32 bits of high-res tick count are - available, even the 64 bits are read by the rpcc instruction. - The high 32 bits are for implementation-specific use, such - as a virtual tick counter. - -Sat Oct 17 13:41:57 1998 Douglas C. Schmidt - - * test/Future_Test.cpp: Added more comments so that the structure - and participants in the Active Object pattern would be more - obvious. - - * ace/Message_Block: Added a priority parameter, which defaults to - 0, to one of the constructor for ACE_Message_Block so that it - simplifies the new Method_Request semantics. - - * ace/Method_Request.h: Added priority() accessor/mutator methods - so that we can control where a Method_Request is placed in the - Activation_Queue, which is just a Facade for an - ACE_Message_Queue. - - * ace: Renamed ACE_Method_Object to ACE_Method_Request to - correspond to the new version of the Active Object pattern at - http://www.cs.wustl.edu/~schmidt/Act-Obj.ps.gz. This change - involved renaming the Method_Object.h and Method_Object.cpp - files to Method_Request.h and Method_Request.cpp, respectively. - For backwards compatibility, I kept the Method_Object.h file, - which now just includes Method_Request.h and adds a typedef of - ACE_Method_Request to ACE_Method_Object so no applications - should break. New applications should use the new names, - however. - - * ace/Acceptor.h: Moved the - ACE_Oneshot_Acceptor::register_handler() method into the private - part of the class so that users won't be tempted to call it! - Thanks to Larry for reporting this. - - * examples/Connection/non_blocking/CPP-acceptor: Fixed a bug that - occurred when timers were used in conjunction with the - ACE_Oneshot_Acceptor and handle_close(). - - * ace/Acceptor: Cleaned up the ACE_Oneshot_Acceptor comments. - Boy, this was confusing ;-). Thanks to Larry - for reporting this. - -Sat Oct 17 12:54:17 1998 Douglas C. Schmidt - - * ACE version 4.5.60 released. - -Sat Oct 17 12:50:44 1998 Douglas C. Schmidt - - * Fixed a number of warnings that crept into the release - yesterday. Thanks to David Levine and DEC C++ for - reporting these. - -Sat Oct 17 00:35:21 1998 Douglas C. Schmidt - - * ACE version 4.5.59 released. - -Sat Oct 17 00:29:37 1998 Douglas C. Schmidt - - * ace/Service_Config.cpp (process_directives): Only warn about a - missing svc.conf file if we're debugging. - -Fri Oct 16 23:16:30 1998 David L. Levine - - * docs/ACE-guidelines.html: 1) use complete sentences for - comments and 2) use prefix operators where possible, such - as on an iteration loop index. - -Fri Oct 16 15:45:08 1998 Douglas C. Schmidt - - * ace/Service_Config: Added a new method called - init_svc_conf_file_queue() that will properly initialize the new - queue containing the list of svc.conf files. - - * ace/Service_Config: Added a return value to parse_args() to make - sure we do a sanity check... - - * ace: Replaced all #if !defined (ACE_FOO_H) with #ifndef - ACE_FOO_H since many C++ preprocessors can recognize this idiom - and optimize for it. - - * ace/Service_Config.cpp (parse_args): Modified the -S option to - enqueue the directives in FIFO order rather than in LIFO order. - It's more intuitive to process them in the order they are - received! - - * ace/Service_Config: It's now possible to give multiple -f - options to the Service Configurator and it will open multiple - files and process each one in the order specified in argv. This - is useful if svc.conf are generated by automatic tools, e.g., - Wizards, that are operating independently. Thanks to David - O'Farrell for suggesting this. - - * tests/Upgradable_RW_Test.cpp: Revised the programming style ;-). - - * tests/Map_Manager_Test.cpp: Replaced all uses of postfix ++ - operators with prefix ++ operators because they are faster when - iterating over the various Maps. - - * ace/[Hash_]Map_Manager: Today we decided to remove the use of - locking for the ACE[_Hash]_Map_Manager Iterators. The original - scheme acquired the mutex of the [Hash_]Map_Manager on every - ++operator++/--operator-- call. Not only was this very - inefficient, but it was also essentially useless since it - doesn't protect against arbitrary insertions/deletions in the - underlying map during the iteration. - - Our first thought was to put an ACE_Read_Guard into the iterator - itself and acquire this for the duration of the iteration. - However, this approach is totally broken when using STL-style - iterators since the postfix ++ and -- operators return a copy of - the iterator, which easily causes deadlocks if non-recursive - mutexes are used. - - After much discussion, we decided it's better to let users - figure out their own locking usecase, rather than have the - iterators guess wrong and either screw up their code or yield - substantial inefficiencies. Therefore, the right approach is to - do something like this: - - typedef ACE_Map_Manager MAP_MANAGER; - typedef ACE_Map_Iterator ITERATOR; - typedef ACE_Map_Entry ENTRY; - - void - foo (MAP_MANAGER &map) - { - // ... - { - // Explicitly grab the lock and hold it for the duration of - // the iteration. - ACE_READ_GUARD (ACE_Thread_Mutex, ace_mon, map.mutex ()); - - ITERATOR end = map.end (); - - for (ITERATOR iter = map.begin (); - iter != end; - ++iter) - { - ENTRY &entry = *iter; - ++i; - } - // ... - } - - Note that as a general rule, it's better to use ++i rather than - i++ to avoid unnecessary copies. - -Fri Oct 16 14:57:58 1998 Irfan Pyarali - - * ace/Hash_Map_Manager and Map_Manager: Fixed the operator++ and - operator--. Also, moved the guard from the individual methods - to the iterator. Now, the read guard is held for the life time - of the iterator. - -Fri Oct 16 14:51:57 1998 Nanbor Wang - - * ace/OS.cpp (thr_create): Made sure if users don't specify - whether to spawn threads detached or joinable, we'd change the - creation flag for them so that they are always joinable (not - detached.) This is important for unify the thread behavior on - different platforms that have various default thread creation - policies. Thanks to Susan Liebeskind - for motivating the change. - -Fri Oct 16 01:28:17 1998 Douglas C. Schmidt - - * ACE version 4.5.58 released. - -Thu Oct 15 23:50:41 1998 Douglas C. Schmidt - - * ACE version 4.5.57 released. - -Thu Oct 15 22:05:02 1998 Douglas C. Schmidt - - * ace/ACE.cpp (unique_name): Moved the arguments around in the - sprintf() in order to generate a better "unique name". Thanks - to Bob McWhirter for suggesting this. - -Thu Oct 15 21:20:36 1998 Irfan Pyarali - - * ace/Hash_Map_Manager.cpp (operator-- and operator++): - * ace/Map_Manager.cpp (operator-- and operator++): - - Fixed by value and by reference return values. - -Thu Oct 15 20:16:46 1998 James CE Johnson - - * docs/ACE-FMM.html: Updated with Bob McWhirter's latest changes. - Discussion of race conditions when spawning threads from within a constructor. - -Thu Oct 15 18:30:58 1998 Douglas C. Schmidt - - * ace/OS.h: Added ACE_HTONS(x) macros to complement ACE_HTONL(x) - macros. Thanks to Balaji Srinivasan - for reporting this. - - * ace/[Hash_]Map_Manager.cpp: Postfix and prefix were inverted. - They are correct now. Thanks to Balaji Srinivasan - for reporting this. - -Thu Oct 15 18:02:51 1998 Darrell Brunsch - - * ace/config-win32.h: For non-winnt systems, define - ACE_LACKS_RECVMSG and ACE_LACKS_SENDMSG. Thanks to Bill Hall - for pointing this out. - - [BTW, Bill was the 400th individual to contribute an ACE/TAO - bug report, thanks to everyone for all their help over the years!] - -Thu Oct 15 16:50:09 1998 Nanbor Wang - - * ace/SOCK_Dgram_Mcast.i (set_option): Need to convert the - from char to int for Win32 because the shortest length - of must be at least sizeof (int) on Win32. Thanks - to Johan Lundin for reporting this. - -Thu Oct 15 16:40:41 1998 Steve Huston - - * tests/Thread_Manager_Test.cpp: Allow suspend/resume to be tried on - pthreads, but don't allow any error other than ENOTSUP. This - catches a bug in Thread_Manager that lost the error values on an - error. - - * ace/Thread_Manager.cpp (ACE_THR_OP macro): Don't remove a thread - from the active threads list if an operation fails with ENOTSUP. - This was causing calls to suspend_grp/resume_grp to erase the list - of threads in a group on pthreads, then wait_grp didn't wait because - it thought there weren't any more threads. - -Thu Oct 15 12:43:46 1998 Nanbor Wang - - * ace/Task.cpp (activate): Changed to activate new active objects - using the same grp_id if this task has been activated before and - no new grp_id is specified in activate method. Also, the task's - grp_id will only get updated if it has never been updated even - if is set. This prevent the original - get lost but the consequence if that if users select to - force_activate new tasks with a different grp_id, the new grp_id - will get lost and the only way to wait for these threads is to - either perform a wait for all threads, or wait for each - individual thread by waiting on the thread handles returned by - the activate method. Thanks to Bob McWhirter - for motivating this change. - (ACE_Task_Base): Changed to initialize to -1. - -Thu Oct 15 10:07:13 1998 David L. Levine - - * ACE version 4.5.56 released. - -Thu Oct 15 09:54:07 1998 David L. Levine - - * tests/run_tests.sh: commented out MT_Reactor_Timer_Test because - it doesn't halt on g++/Solaris or DU 4.0. - - * include/makeinclude/wrapper_macros.GNU: for g++, added - -DACE_LACKS_PRAGMA_ONCE to CCFLAGS. Thanks to Kirk Ellet - for pointing out that is has to be done - in CCFLAGS rather than as a #define in OS.h, because - ace/Synch_T.h uses the pragma before config.h is #included. - -Wed Oct 14 23:20:45 1998 Douglas C. Schmidt - - * ACE version 4.5.55 released. - -Wed Oct 14 22:17:31 1998 David L. Levine - - * docs/ACE-guidelines.html: added guideline for protection of - header files against multiple inclusion. Thanks to - Eric C. Newton for pointing out the construct - used by gcc/g++ to minimize unnecessary file inclusion. - Fortunately, other compilers use the same method. And, - thanks to Susan Liebeskind for being - the last ACE user to suggest something like this, and to - Pat McNerthney for spurring the search for - such an optimization. - -Wed Oct 14 12:36:00 1998 Douglas C. Schmidt - - * tests/run_tests.sh: Added the MT_Reactor_Timer_Test. - - * tests/MT_Reactor_Timer_Test.cpp: Fixed a number of bugs with - this test. It seems to work fine on Solaris now. - - * tests/MT_Reactor_Timer_Test.cpp (main): Added a test to make - sure that the ACE_Reactor::handle_events() method properly - counts the number of expired timers. - - * ace/Select_Reactor_T: Updated the various methods so that - handle_events() now works as advertised, i.e., it actually - returns the number of event handlers it dispatched. - - * ace: Added - - #if !defined (ACE_LACKS_PRAGMA_ONCE) - #pragma once - #endif /* ACE_LACKS_PRAGMA_ONCE */ - - To all the header files in ACE. This should speed up - compilation time on platforms whose C++ compilers support - #pragma once. Thanks to Patrick J. McNerthney - for suggesting this. - - * ace/Functor.h: Moved the definitions of the constructor and - destructor of ACE_Command_Base into the *.i file. - - * ace/Select_Reactor_T: Enhanced dispatch_timer_handlers() so that - it passes the number of timers dispatched as an out parameter to - avoid any ambiguity. - -Wed Oct 14 15:30:42 1998 Steve Huston - - * ace/Message_Block_T.h: Removed ACE_Export from definition of template - class ACE_Locked_Data_Block. - -Wed Oct 14 12:36:00 1998 Douglas C. Schmidt - - * ace/config-cygwin32-common.h, - ace/config-cygwin32.h, - ace/OS.h: - Added support for Cygwin32. Thanks to Phil Feairheller - for contributing this. - - * ace/config-vxworks5.x.h, - ace/config-chorus.h, - ace/config-psos*.h, - ace/config-cygwin32-common.h, - ace/OS.i: - Added and used the new ACE_LACKS_MKFIFO macro. Thanks to Phil - Feairheller for reporting this. - -Wed Oct 14 11:03:45 1998 Douglas C. Schmidt - - * ACE version 4.5.54 released. - -Wed Oct 14 00:28:10 1998 Douglas C. Schmidt - - * ACE version 4.5.53 released. - -1998-10-14 Nagarajan Surendran - - * ace/Synch_T.cpp : Changed ACE_mutex_t to ACE_cond_t for CHORUS - in ACE_Condition constructor. - -1998-10-13 Nagarajan Surendran - - * ace/Synch.i (ACE_Mutex::remove): Added a #else for non-chorus - cases instead of #endif to call ACE_OS::mutex_destroy. - - * ace/OS.cpp : Added static member definition - KnCap ACE_OS::actorcaps_[ACE_CHORUS_MAX_ACTORS] - for CHORUS. - - * ace/config-chorus.h: Added ACE_HAS_TSS_EMULATION. - -Tue Oct 13 22:40:40 1998 Carlos O'Ryan - - * ace/Makefile: - * ace/Message_Block.h: - * ace/Message_Block.i: - * ace/Message_Block.cpp: - * ace/Message_Block_T.h: - * ace/Message_Block_T.i: - * ace/Message_Block_T.cpp: - Added a new variant of the ACE_Data_Block class that holds an - instance of its locking strategy, this is useful because in some - cases the lifetime of the lock is tied to the lifetime of the - Data_Block itself. The Message_Block class was carefullly - modified to support this new feature, i.e. it does not hold a - lock while removing the data block because the hold may be part - of the data block itself. Still all the features in the - Message_Blocks are supported, for instance, a complete - Message_Block chain ca be destroyed while holding a single lock, - shared by all the Data_Blocks in the chain. - -Tue Oct 13 22:39:42 1998 David L. Levine - - * tests/MM_Shared_Memory_Test.cpp (client): added an - ACE_ASSERT to check that shm is non-zero. - - * ace/OS.h,config-chorus.h,README: added - ACE_HAS_PTHREAD_PROCESS_ENUM support. Thanks to - Alberto Villarica and Naga - for tracking the problem with Semaphore_Test hanging. - - * ace/OS.h: changed default PTHREAD_PROCESS_SHARED from 0 to 1. - That way, it's different than PHTREAD_PROCESS_PRIVATE. - -Tue Oct 13 22:09:12 1998 Irfan Pyarali - - * ace/Mem_Map.cpp (map_it): One more try to get this right ;) - Thanks to Jonathan Reis for the bug - reports, suggested fixes, and test program. - -Tue Oct 13 21:17:37 1998 Alexander Babu Arulanthu - - * ace/Asynch_IO.cpp: - * ace/Proactor.cpp: Fixed the problem with POSIX4 implementation - of Asynch_Transmit_File. Thanks to James Hu and Irfan for - reporting this problem and helped me on the fixes. - -Tue Oct 13 18:07:21 1998 Steve Huston - - * ace/config-aix-4.2.x.h: Set up so it should work with gcc as well - as xlC. Rearranged defs and removed some duplicates. - Enabled ACE_HAS_4_4BSD_SENDMSG_RECVMSG and removed the redefs - of msgbuf fields. - - * tests/Thread_Pool_Reactor_Test.cpp: Moved the definition of - Acceptor_Handler to a new file, Thread_Pool_Reactor_Test.h to - satisfy AIX xlC's template instantiation. - -Tue Oct 13 15:56:09 1998 Nagarajan Surendran - - * ace/OS.i: Fixed a few errors on CHORUS. - -Tue Oct 13 08:48:36 EDT 1998 James CE Johnson - - * docs/ACE-tutorials.html - * docs/ACE-FMM.html - Added Bob McWhirter's "Frequently Made - Mistakes" list. - -Tue Oct 13 07:28:38 1998 David L. Levine - - * ace/High_Res_Timer.cpp (dump): replaced ACE_static_casts with - ACE_CU64_TO_CU32, because the method is const. Thanks to Doug - for reporting this. - - * ace/Thread_Manager.cpp (join): replaced __xlC__ test with - _AIX. That way, g++ and xlC will both use the three-arg - join call on AIX. Thanks to Ian Wright - for reporting this. - - * ace/Makefile,examples/Bounded_Packet_Relay/Makefile: - updated dependencies. - - * ace/OS.[hi],config-fsu-pthread.h,config-aix-4.[12].x.h, - config-mit-pthread.h,config-hpux-10.x.h,config-hpux11.h, - config-irix6.x-{g++,sgic++}.h,config-mvs.h,config-tandem.h, - config-osf1-3.2.h,config-osf1-4.0.h,config-sco-5.0.0-mit-pthread.h, - config-irix6.x-common.h,README: - removed ACE_HAS_TID_T and ACE_HAS_PTHREAD_T support. ACE_hthread_t - is now a simple typedef of pthread_t. It was before, also, but not - so simple :-) Before, it was a typedef of tid_t on platforms - that had ACE_HAS_TID_T but not ACE_HAS_PTHREAD_T. There were - no such platforms; so, it was pthread_t on all PTHREADS platforms. - Thanks to Ossama, Arturo, and Steve for sorting all this out. - We ended up with just a single typedef, so it was worth it. - - * ace/OS.i (thr_cmp): use pthread_equal with PTHREADS, same as - in ACE_OS::thr_equal (). Thanks to Ossama for pointing out that - they were different, but shouldn't have been. - - * ace/config-aix-4.2.x.h,config-fsu-pthread.h,config-hpux-10.x.h, - config-hpux11.h,config-irix6.x-{g++,sgic++}.h,config-mit-pthread.h, - config-mvs.h,config-osf1-3.2.h,config-osf1-4.0.h, - config-sco-5.0.0-mit-pthread.hconfig-tandem.h,README: - removed ACE_HAS_PTHREAD_EQUAL because it's no longer used. Thanks - to Ossama for motivating the above change to thr_cmp, which had - been the only use of ACE_HAS_PTHREAD_EQUAL. - - * ace/Log_Record.h,OS.h: changed C++-style comments to C-style - comments in preprocessor directives. Thanks to - Fernando D. Mato Mira for reporting these. - -Tue Oct 13 00:19:42 1998 Douglas C. Schmidt - - * ace/OS.i (sema_destroy): I believe I've fixed the rats nest of - #ifdefs to get semaphores to work correctly on Chorus again. - Thanks to Naga for tracking this down! - - * ace/High_Res_Timer.cpp: Temporarily commented out the - ACE_static_casts so that this will compile with CC. - - * ace/Hash_Map_Manager, - ace/Map_Manager: - Added a public mutex() accessor that allows us to return a - reference to the lock_. This is useful for cases where we're - using ACE_Process_Mutex and need to call remove(). Thanks to - Bob McWhirter for this suggestion. - -Mon Oct 12 23:03:26 1998 Douglas C. Schmidt - - * ace/Mem_Map.cpp (map_it): Added a minor fix to handle the fact - that Chorus doesn't support filesize() on a shared memory - segment. Thanks to Alberto Villarica - for reporting this. - -Mon Oct 12 22:18:03 1998 David L. Levine - - * ace/High_Res_Timer.cpp (dump): cleaned up output so that it - works and is consistent across all platforms. (long long - printing is not portable: some platforms use %llu and - others use %Lu). - -Mon Oct 12 18:39:09 1998 Irfan Pyarali - - * ace/Mem_Map.cpp: Revised the code to take the offset into - account when deciding whether to grow the backing store. - - Also, ACE_Mem_Map was trying to be too clever when it tries to - make sure that your offset is a multiple of the allocation - granularity. It ends up messing up user offset and length - calculations. Therefore, I have taken this out of ACE_Mem_Map - code. Users is still welcome to use - ACE_OS::allocation_granularity and - ACE::round_to_allocation_granularity by themselves. - -Mon Oct 12 14:39:15 1998 Douglas C. Schmidt - - * ace/Parse_Node.cpp: Added some ACE_const_casts to cleanup the - casting going on here. - - * examples/ASX/CCM_App/CCM_App.cpp: We need to make sure and use - the ACE_SVC_FACTORY_* macros so that the gobbler will be set - correctly. Purify rules! - - * ace/Makefile: Make sure to add the // $ Id: $ CVS string when - recreating Svc_Conf_Tokens.h. - - * ace/Svc_Conf.y: Just to be paranoid, make sure to set the - gobbler function to 0. At least this way we'll get crashes - rather than bizarre errors if users don't use the ACE_*FACTORY* - macros. - -Mon Oct 12 19:19:27 1998 James CE Johnson - - * docs/ACE-tutorials.html: - Added a link to Bob McWhirter's Frequently Made Mistakes page. - - * docs/tutorials/014/Makefile - * docs/tutorials/014/Task.{cpp|h} - * docs/tutorials/014/EndTask.h - * docs/tutorials/014/stream.cpp - * docs/tutorials/014/page0[123456].html - A slightly modified version of Bob McWhirter's ACE_Stream tutorial. - -Mon Oct 12 15:59:00 1998 David L. Levine - - * ace/Message_Block.cpp (size): removed unused local "old_base". - -Mon Oct 12 11:24:45 PDT 1998 James Hu - - * Asynch_IO.cpp: Minor changes to deal with FMR error. - - * Message_Block.{cpp,i,h}: Changed rd_ptr_ and wr_ptr_ to be - byte offsets from base (). This allows one to resize a - duplicate without trashing other Message_Blocks that may be - referring to the same data block. - - * Proactor.cpp: Made the message block 64 bytes bigger to make - purify happier. - -Mon Oct 12 12:14:45 1998 Douglas C. Schmidt - - * ace/Parse_Node.cpp (ACE_Stream_Node): In error cases, the strops - parameter can be NULL. Therefore, we need to protect against - this case. Thanks to David O'Farrell - for reporting this. - -Mon Oct 12 10:43:09 1998 Alexander Babu Arulanthu - - * ace/Asynch_IO.cpp (ACE_Asynch_Result): Fixed a double deletion - problem. Thanks to James Hu for reporting this. - -Mon Oct 12 09:43:07 1998 Carlos O'Ryan - - * ace/Containers_T.h: - * ace/Containers_T.cpp: - Added a new method to modify the size of an ACE_Array. - -Mon Oct 12 09:23:49 1998 David L. Levine - - * netsvcs/lib/Name_Handler.cpp (lists_entries): one more try - to fix the egcs 1.1b bug: removed the ptmf temporary entirely. - -Sun Oct 11 17:33:22 1998 Douglas C. Schmidt - - * ace/Synch.cpp: Fixed a typo, s/lock_/process_lock_/. Thanks to - Naga for noticing this. - -Sun Oct 11 08:19:33 1998 David L. Levine - - * ace/config-linux-common.h: re-enabled msg_* undefs and defines, - but for libc5 (non-glibc) only. Thanks to JM Strauss - for verifying that they're needed. - - * netsvcs/lib/Name_Handler.cpp (lists_entries): replaced - switch statement with a multi-branch if statement, to - avoid Internal compiler error 980331 with egcs 1.1b (2.91.57) - (on Linux/alpha). - -Sat Oct 10 18:30:02 1998 Douglas C. Schmidt - - * ace/Synch_T: Added a process condition abstraction for Chorus - that is based on a condition variable stored in shared memory. - Thanks Alberto Villarica for - this. - - * ace/Synch: Added a process mutex abstraction for Chorus that is - based on a mutex stored in shared memory. Thanks Alberto - Villarica for this. - - * ace/config-chorus.h: Updated the config file for Chorus. Thanks - Alberto Villarica for this. - - * ace/OS.i: Added rudimentary flock support for Chorus. Thanks - Alberto Villarica for this. - - * ace/OS.i: Added exec*() support for Chorus. Thanks Alberto - Villarica for this. - - * ace/config-chorus.h: Added #include of file . - - * ace/Local_Name_Space_T.cpp (create_manager_i): Added a special - case for CHORUS so that we use a base address of 0. Thanks to - Alberto Villarica for reporting - this. - - * ace/Local_Name_Space_T.cpp (create_manager_i): Don't use - ACE_OS::access() if the platform lacks it. Thanks to Alberto - Villarica for reporting this. - -Sat Oct 10 18:33:06 1998 Alexander Babu Arulanthu - - * tests/Aio_Platform_Test.cpp: Comments. - -Sat Oct 10 17:42:18 1998 Douglas C. Schmidt - - * ACE version 4.5.52 released. - -Sat Oct 10 16:44:24 1998 Douglas C. Schmidt - - * ace/Service_Repository.cpp: Improved the documentation and added - some new ACE_const_casts. Thanks to Eric Palantir - for motivating this. - - * ace/Service_Config.cpp (open): The logger key should be set to - the static logger key only if the key supplied is EQUAL with the - default logger key. Thanks to Eric Palantir - for reporting this. - -Sat Oct 10 16:28:00 1998 Carlos O'Ryan - - * ace/Synch.h: - * ace/Synch.i: - * ace/Synch.cpp: - The ACE_Process_Mutex class was allocating one of its members - from the heap, thus it could not be placed in shared memory. - The problem was that the member required the creation of a - unique name if the user did not provide one; making the buffer - for this unique name a member of ACE_Process_Mutex allowed us to - initialize the lock_ member while still allocating it as a - member of the class. Thanks to Bob McWhirter - for helping to track this down. - -Sat Oct 10 12:45:31 1998 Douglas C. Schmidt - - * ace/Malloc_T.h: Added a documentation entry for class - ACE_Cached_Allocator. Thanks to Erik Koerber - for reporting this. - -Sat Oct 10 00:40:05 1998 Douglas C. Schmidt - - * ACE version 4.5.51 released. - -Fri Oct 09 23:47:42 1998 Irfan Pyarali - - * ace/Mem_Map.cpp (map_it): Fixed the setting of length_ again. - Hopefully, it will be right this time. - -Fri Oct 9 15:37:26 PDT 1998 James Hu - - * ace/Mem_Map.cpp: Protect against assigning 0 to length_. This - was causing JAWS to fail. - -Fri Oct 9 16:59:26 1998 Nagarajan Surendran - - * examples/IPC_SAP/SOCK_SAP/run_test: - * examples/IPC_SAP/SOCK_SAP/summarize: - Fixed the scripts to print the results correctly.Fixed - comments and usage. - -Fri Oct 09 16:35:00 1998 Chris Gill - - * ace/Timer_Queue_Adapters.cpp - ace/ace_dll.dsp - examples/Bounded_Packet_Relay/Thread_Bounded_Packet_Relay.{cpp, h}: - Fixes for deferred callbacks in the BPR example on NT. - -Fri Oct 09 11:59:26 1998 David L. Levine - - * include/makeinclude/wrapper_macros.GNU: removed RM override - because it's not necessary. Thanks to - Tres Seaver for this suggestion. - - * include/makeinclude/platform_chorus_ghs.GNU, - platform_irix6.x-sgic++.GNU,platform_osf1_3.2.GNU, - platform_osf1_4.0.GNU,platform_osf1_4.0_rcc.GNU, - platform_sunos5_sunc++.GNU: - replaced hard-coded /bin/rm -f with $(RM). Thanks to - Tres Seaver for this suggestion. - - * ace/Containers_T.{h,cpp}: removed unecessary (and impolite) - argument name. - -Fri Oct 09 00:44:21 1998 Irfan Pyarali - - * ace/OS.i (mmap): CreateFileMapping must be created with a length - of 0 (which will get translated to the size of the file). This - must not be since only deals with the mapping of the - view and not with the file mapping object. It is ok to use 0 - since we are trying to emulate UNIX's mmap. - - * ace/ACE.cpp (round_to_allocation_granularity): - ace/OS.i (allocation_granularity): - - New methods. We need allocation granularity when rounding off - the offset in mmap and not the page size. Only on Win32, - allocation granularity is different from pagesize. - - * ace/High_Res_Timer.cpp: Added the inclusion of Object_Manager.h. - Otherwise, NT was picking up the definition of - ACE_Static_Object_Lock. - - * ace/Mem_Map.cpp (map_it): Fixed the problem where a requested - length of less than the filesize was being ignored. Also, - changed round_to_pagesize() to round_to_allocation_granularity(). - Thanks to Jonathan Reis for - pointing this bug out. - -Fri Oct 09 00:02:01 1998 Alexander Babu Arulanthu - - * ace/Asynch_IO.cpp: The YET another problem with doing multiple - Asynch_Accepts have been fixed. Thanks very much James Hu for - reporting this. I was calling reactor's resume_handlers and - suspend_handlers instead of only for one handle. Thanks very - much Irfan! for pointing this out. - -Thu Oct 08 23:06:20 1998 David L. Levine - - * config-linux-common.h: on Alpha only, added ACE_POLL_IS_BROKEN. - High_Res_Timer_Test revealed that it's necessary with - glibc 2.0.7-13. I don't think that its necessary on - Pentiums, but maybe it depends on glibc version. - - * OS.i (gethrtime),High_Res_Timer.cpp OS.i,README: - added ACE_HAS_ALPHA_TIMER support. See the comment - in ACE_OS::gethrtime about it being limited to 32 bits. - I don't know why, but that severely limits the range - of high res times. Therefore, it's not enabled by default - in any config files. - -Thu Oct 08 15:22:22 1998 Arturo Montes - - * ace/OS.{i,cpp}: Reverted FSU thread changes for now. - -Thu Oct 08 15:11:34 1998 Nanbor Wang - - * ACE-INSTALL.html: Updated document about spawning new thread - when ACE_HAS_MFC is defined. CWinBeginThread is not used - automatically. Users have to explicitly ask for this. - -Thu Oct 8 12:11:08 1998 Nagarajan Surendran - - * examples/IPC_SAP/SOCK_SAP/run_test: - * examples/IPC_SAP/SOCK_SAP/summarize: - - Added these scripts to run the test and summarize the - results. These scripts are modelled similar to the - $TAO_ROOT/performance-tests/Cubit/TAO/MT_Cubit scripts. - Thanks to David for the scripts. - -Thu Oct 08 08:23:09 1998 David L. Levine - - * ace/High_Res_Timer.cpp (get_registry_scale_factor): - default global_scale_factor to 1000 instead of 1, - because ACE_OS::gethrtime () defaults to nanoseconds. - Thanks to Peter Nordlund for - reporting that High_Res_Timer_Test failed on Irix without - this fix. - - * ace/Makefile (Svc_Conf_l.cpp): use Doug's flex to generate - this file, if running on a DOC group machine, instead of - using whatever flex is first on the users path. - - * etc/README: fixed typo. - - * ace/Svc_Conf_l.cpp,etc/Svc_Conf_l.cpp.diff (ACE_YY_DECL): - initialize ace_yy_cp and ace_yy_bp to 0 to avoid egcs 1.1 - warning about possible use before initialization. - -Wed Oct 7 23:47:29 1998 Alexander Babu Arulanthu - * ace/Asynch_IO.cpp: - * ace/Proactor.cpp : Fixed the problem with doing multiple - Asynch_Accepts. Thanks to James Hu for reporting this - problem. Thanks very much Irfan!!!, for helping me a lot in fixing - this one. - -Wed Oct 07 23:14:36 1998 Douglas C. Schmidt - - * ACE version 4.5.50 released. - -Wed Oct 7 21:44:20 1998 Douglas C. Schmidt - - * ace/Stream.h: Added a default value of 0 for both put() and - get(), which is more consistent with the underlying putq() and - getq() methods on ACE_Task. Thanks to Bob McWhirter - for this suggestion. - -Wed Oct 7 18:18:14 1998 Carlos O'Ryan - - * README: - * ace/config-irix6.x-g++.h: - * ace/config-irix6.x-common.h: - * ace/config-irix6.x-sgic++-nothreads.h: - Peter Nordlund kindly submitted a common - configuration file for IRIX 6.X that works with both g++ and SGI - MIPSPro 7.X - -Wed Oct 7 17:21:17 1998 Arturo Montes - - * ace/OS.{i,cpp}: FSU pthreads is draft6, but FSU in SCO is an - special port. The API is draft6 but return values is DRAFT7 - (really I am moving to STD). - -Wed Oct 07 09:30:00 CDT 1998 Chris Gill - - * ace/Functor.{cpp, h, i} - ace/Functor_T.{cpp, h, i} - ace/Makefile: - - Added ACE_Command_Base abstract base class and derived class - template ACE_Command_Callback to ACE to support the GOF Command - design pattern. - - * ace/Timer_Queue_Adapters.{cpp, h}: - - Added registration and deferred executiton of ACE_Command_Base - objects to ACE_Thread_Timer_Queue_Adapter. This is conditionally - compiled if the ACE_HAS_DEFERRED_TIMER_COMMANDS symbol is defined. - - * examples/Bounded_Packet_Relay/BPR_Drivers.{cpp, h} - examples/Bounded_Packet_Relay/BPR_Drivers_T.{cpp, h} - examples/Bounded_Packet_Relay/Makefile - examples/Bounded_Packet_Relay/Thread_Bounded_Packet_Relay.{cpp, h} - examples/Bounded_Packet_Relay/bpr_thread.cpp: - - Changed example to use ACE_Command_Callback objects, modified event - handlers to register ACE_Command_Callback objects for deferred - excecution of timer cancellations and registrations. - -Wed Oct 07 02:37:58 1998 Douglas C. Schmidt - - * ACE version 4.5.49 released. - -Wed Oct 7 00:11:33 1998 Nanbor Wang - - * ACE-INSTALL.html: Added more information on using MFC with ACE, - some explanations about using run-time libraries and information - about VC6. - - * tests/version_tests/version_tests.dsw: Removed - MsgQueue_Notifications_Test.dsp and added - Message_Queue_Notifications_Test. - - * tests/*.dsp: Changed to use DLL version of run-time libraries - for static builds. Notice that user libraries are still linked - in statically. Only the run-time libraries are effected. - - * ace/README: Added information for ACE_USES_STATIC_MFC. - - * ace/config-win32-common.h: Re-structured MFC related macros - (_AFXDLL and _WINDLL) so that it allows us to use MFC in static - ACE libraries and the setting of MFC can propagate to - applications. By default, ACE uses MFC DLL if ACE_HAS_MFC=1. - If you want to use MFC as a static library, besides - ACE_HAS_MFC=1, also define ACE_USES_STATIC_MFC. Thanks to Jason - Milley for noticing the problem - of compiling static ACE library with MFC. - -Tue Oct 6 15:06:21 1998 Steve Huston - - * ace/Asynch_IO.cpp (ACE_Asynch_Accept_Handler): Removed the - version of the ctor with no args - it's equivalent to the one - with all defaulted args, and HP aCC complained. - - * ace/NT_Service.{h cpp i}: New class, ACE_NT_Service. This provides - a class and supporting macros to integrate NT Services into the - ACE framework at run-time. I'll work on getting an example into - the kit soon. - - * ace/ACE_Library.{mak mdp}: - ace/ace_dll.dsp, ace_lib.dsp: Added NT_Service files. - -Tue Oct 6 12:49:37 EDT 1998 James CE Johnson - - * docs/tutorials/006/client_handler.cpp - * docs/tutorials/006/page05.html - Susan Liebeskind discovered that invoking the baseclass - close() after handle_close() in Client_Handler::close() - causes the object to be destructed twice. I've removed - the call to the baseclass close(). She reports success - on Solaris, Dec and AIX. I've verified that Linux also - works fine with this fix. - -Tue Oct 06 09:53:22 1998 David L. Levine - - * ace/config-fsu-pthread.h,config-mit-pthread.h,config-mvs.h, - config-sco-5.0.0-mit-pthread.h,config-tandem.h,README: - removed ACE_HAS_YIELD_VOID_PTR because it's no longer used. - Thanks to Ossama for reporting this. - - * config-dgux-4.x-ghs.h,config-hpux-10.x.h,config-mit-pthread.h, - config-mvs.h,config-sco-5.0.0-mit-pthread.h,config-tandem.h,README: - removed ACE_LACKS_KEYDELETE because it's no longer used. Thanks to - Ossama for reporting this. - -Tue Oct 06 03:36:22 1998 Douglas C. Schmidt - - * ACE version 4.5.48 released. - -Tue Oct 06 02:53:28 1998 Douglas C. Schmidt - - * ACE version 4.5.47 released. - -Tue Oct 6 02:16:01 1998 Alexander Babu Arulanthu - - * ace/Asynch_Acceptor.cpp: - * ace/Asynch_IO.cpp (handle_input): - * ace/Proactor.cpp: - In POSIX implementation of Asynch_Accept, We dont have to read - initial data to read on to the Message Block given to the - Asynch_Accept. So we dont use it at all. We get local and peer - address from using socket and pass back to the application. - -Mon Oct 05 23:58:16 1998 Douglas C. Schmidt - - * ACE version 4.5.46 released. - -Mon Oct 5 23:19:30 1998 Nanbor Wang - - * ace/OS.cpp (fork): Changed to use fork1 when ACE_HAS_STHREAD is - defined. Otherwise, file descriptors get messed up and socket - connections get lost after exec'ing a new program. Generally - speaking, you should not simply fork a multi-threaded program - without calling exec (). On pthread compliant platform, fork - does what fork1 does on solaris thread. - -Mon Oct 05 21:21:42 1998 Douglas C. Schmidt - - * ACE version 4.5.45 released. - -Mon Oct 05 15:59:55 1998 David L. Levine - - * ACE version 4.5.44 released. - -Mon Oct 05 15:23:04 1998 Douglas C. Schmidt - - * ACE version 4.5.43 released. - -Mon Oct 5 15:34:41 1998 James CE Johnson - - * docs/tutorials/002/handler.h: Added includes for INET_Addr.h, - SOCK_Stream.h and Reactor.h. Susan Liebeskind pointed out that - AIX gets confused in processing templates if these aren't present. - -Mon Oct 05 10:02:37 1998 David L. Levine - - * ace/config-chorus.h: added ACE_LACKS_TRUNCATE. Thanks - to Steve Kay for reporting this. - - * tests/Semaphore_Test.cpp: added some ifdefs so that it - builds cleanly with ACE_HAS_POSIX_SEM. - -Sun Oct 05 03:49:09 PDT 1998 James Hu - - * ace/Asynch_Accept.* - * ace/Asynch_IO.* - Made some small modifications to support passing in and - retrieving an ACT when performing asynchronous accept. - -Sun Oct 04 22:07:09 1998 David L. Levine - - * ace/config-fsu-pthread.h,config-hpux-10.x.h,config-lynxos.h, - config-mit-pthread.h,config-mvs.h,config-osf1-3.2.h, - config-osf1-4.0.h,config-sco-5.0.0-mit-pthread.h,config-tandem.h, - README: removed ACE_HAS_PTHREAD_GETSPECIFIC_DATAPTR, because it's - no longer used. Thanks to Ossama for reporting this. - - * ace/config-tandem.h,README: removed ACE_HAS_PTHREAD_YIELD_VOIDPTR, - because it's no longer used. It was commented out in - config-tandem.h, anyways. Thanks to Ossama for reporting this. - -Sun Oct 4 20:00:44 1998 Carlos O'Ryan - - * bin/auto_compile: - Fixed the regular expression to detect compile errors. - The user can pass extra arguments to GNU make, the arguments are - given as the script is invoked. - -Sun Oct 4 14:30:03 1998 Nanbor Wang - - * ace/TP_Reactor.cpp (handle_events): Made sure we never suspend - the without holding the . Otherwise, - depend on how an OS schedules ready threads, we may have a - Reactor that could never be woken up. This leads to a very - delicate race condition when other threads which need to modify - Reactor's state get block on the token (because they couldn't - wake up the reactor). These threads later block the - nofify_handler thread when it's ready to resume - - (notify_handle): Since we don't suspend the , - there's no need to resume it here. - -Sat Oct 3 13:11:48 1998 Carlos O'Ryan - - * bin/auto_compile: - Removed some of the tests, they were crashing more often than - not. - -Sat Oct 3 09:36:09 1998 Alexander Babu Arulanthu - - * examples/Reactor/Proactor/test_proactor.cpp: Comments. - -Sat Oct 03 09:24:45 1998 Susan Liebeskind - - * ace/Task.h,Thread.h,Thread_Manager.h,Timer_Queue_Adapters.h - (activate,spawn,spawn_n): added THR_JOINABLE to THR_NEW_LWP - default flags. - - On the boxes which implement POSIX 1003.1.b (Solaris, Digital Unix) - threads spawned using default flags provided by those methods were, - and still are, created *joinable*. - - On the box which implements Draft 7 (AIX), the spawned threads were - *detached*. With this change, they'll be created *joinable*, - instead. - - This change ensures consistent behavior across all platforms. - -Sat Oct 03 09:04:44 1998 David L. Levine - - * ace/ACE.cpp (set_handle_limit): wrapped the final - return statement with #ifdef __sgi. Irix complains without - this return statement. DEC cxx (correctly) says that it's not - reachable. ACE_NOTREACHED won't work here, because it handles - both platforms the same. - - * include/makeinclude/wrapper_macros.GNU: with quantify=1 - on sparcs, add -record-register-window-traps to $(PRELINK). - Thanks to Andy for discovering this Quantify option, for sparcs. - -Fri Oct 2 23:43:51 1998 Carlos O'Ryan - - * ace/config-irix6.x-g++.h: - * ace/config-irix6.x-sgic++-nothreads.h: - * ace/OS.h: - IRIX puts in header of IRIX, it is only - relevant for the autoconf project. - - * ace/ACE.cpp: - Added an extra return to make IRIX compiler happy. - -Fri Oct 2 21:48:18 1998 Nanbor Wang - - * tests/Thread_Pool_Reactor_Test.cpp: Send the message length - before each message so we don't need to use time delay to - separate consecutive requests. - -Fri Oct 02 16:27:07 1998 Nanbor Wang - - * ace/Thread_Manager.cpp: ACEified some code. - (terminate): Do not register a thread as being terminated if it - is being joined by another thread. Just remove it from - Thread_Manager's thr_list_. - -Fri Oct 2 00:19:04 1998 Nanbor Wang - - * tests/Thread_Pool_Reactor_Test.cpp: Fixed explicit template - instantiation. - - * ace/Strategies_T.{h,i,cpp}: Removed classes - ACE_Thread_Pool_Strategy and ACE_Svc_Handler_Pool_Strategy. - - * tests/run_tests.{sh,bat}: Added Thread_Pool_Reactor_Test into - one-buttoned test scripts. - -Thu Oct 01 12:04:30 1998 Nanbor Wang - - * tests/Thread_Pool_Reactor_Test.cpp: Added a command line argument - parser. - -Thu Oct 1 08:51:00 1998 Douglas C. Schmidt - - * tests/Thread_Pool_Reactor_Test.cpp: Reformatted the - code a bit. - - * ace/ACE.cpp (max_handles): Added yet another fix for AIX. - Thanks to Chris Lahey for this. - -Thu Oct 01 01:05:49 1998 Nanbor Wang - - * tests/tests.dsw: - * tests/version_tests/version_tests.dsw: - * tests/Thread_Pool_Reactor_Test.{cpp,dsp}: Added a new test that - torture tests the new ACE_TP_Reactor. - -Thu Oct 01 00:09:35 1998 Irfan Pyarali - - * ace/ACE.cpp: Fixed max_handles(). - - * tests/Conn_Test: Removed template specialization for - INET_Addr.hash(). - - * ace/Addr.i (hash): - * ace/INET_Addr.i (hash): - - Finally gave up with template specialization hell and freak'in - broken compilers and simply added a hash() method to ACE_Addr - and ACE_INET_Addr. ACE_Addr::hash() simply return 0 and should - be overwritten by subclasses that can provide better hashing. - -Wed Sep 30 10:16:56 1998 Douglas C. Schmidt - - * ace/ACE.cpp: Modified max_handles() so that it goes the right - thing on platforms like AIX that don't have any predefined limit - on the number of handles. Thanks to Chris Lahey - for reporting this. - -Wed Sep 30 01:56:54 1998 Irfan Pyarali - - * ace/Strategies_T: - - - ACE_Refcounted_Hash_Recyclable::operator==(const T &rhs): - Added new method to prevent implicit type conversions. - - - Changed ACE_Hash_Addr::hash_i to return u_long instead of - size_t. This makes it similar to the return value from - hash(). - - - Added hash caching ability to ACE_Hashable. - - - Removed the use of ACE_Hash_Addr inside the - ACE_Cached_Connect_Strategy. This allows us to reduce - implicit type conversions inside connect_svc_handler(). - - Users are now required to specialize - ACE_Refcounted_Hash_Recyclable::hash_i (void) instead - of ACE_Hash_Addr::hash_i(const ACE_INET_Addr&addr) - - * tests/Conn_Test.cpp: Changed template specialization of - ACE_Hash_Addr::hash_i(const ACE_INET_Addr&addr) - to ACE_Refcounted_Hash_Recyclable::hash_i (void). - - * ace/OS.cpp (open): Fixed a couple of things that were broken - with respect to when the SetFilePointer was called and when lock - was released. Also fixed the UNICODE version of open(). BTW, - these functions had to be moved from OS.i to OS.cpp since the - ACE_Managed_Object is not visible from OS.i. - -Wed Sep 30 02:29:48 1998 Carlos O'Ryan - - * performance-tests/TTCP/ACE-C++/Makefile: - * performance-tests/TTCP/ACE-C++/wrapper-new-ttcp.cpp: - Hacked so it would compile, don't know anything further than - that. - -Tue Sep 29 21:55:52 1998 Irfan Pyarali - - * ace/ace.dsw: Removed Connector.cpp from the compile list since - it is a files with template classes only. - -Tue Sep 29 21:14:02 1998 Nanbor Wang - - * ace/OS.i (open): Grab a lock from the Object_Manager when - O_APPEND is defined to simulate atomic behavior on most UNIX - platforms. Thanks to Irfan. - -Tue Sep 29 19:16:57 1998 James CE Johnson - - * docs/tutorials/007/thread_pool.h - * docs/tutorials/007/thread_pool.cpp - Added virtual methods for open() and close() that match the - baseclass. This will keep some compilers from complaining about a - partial-overload attempt. Thanks to Bob McWhirter for catching this. - -Tue Sep 29 16:13:10 1998 Irfan Pyarali - - * ace/Strategies_T: - * ace/Connector: - - Added accessors for the strategy. - -Tue Sep 29 14:04:49 EDT 1998 James CE Johnson - - * docs/tutorials/013/page08.html: Removed link to message_queue. - Thanks to Jeff Hellzen for pointing this out. - -Tue Sep 29 11:05:04 1998 David L. Levine - - * ace/README: removed ACE_HAS_ONLY_TWO_PARAMS_FOR_ASCTIME_R_AND_CTIME_R - because it is no longer used. Thanks to Ossama for reporting this. - - * ace/config-fsu-pthread.h,config-mit-pthread.h,config-mvs.h, - config-sco-5.0.0-mit-pthread.h,config-tandem.h,README: - removed ACE_HAS_PTHREAD_DSTATE_PTR because it is no longer used. - Thanks to Ossama for reporting this. - -Mon Sep 28 20:35:49 1998 Sergio Flores - - * ace/Containers_T.h: - * ace/Containers_T.cpp: Added begin () and end () to - ACE_Unbounded_Queue. - -Mon Sep 28 16:06:05 1998 David L. Levine - - * ace/OS.*,Object_Manager.{h,cpp}: removed ACE_HAS_TSS_EMULATION's - support for ACE_HAS_NATIVE_KEYS. Now, if ACE_HAS_TSS_EMULATION - is used and ACE_HAS_THREAD_SPECIFIC_STORAGE is #defined, then - the ACE TSS emulation will use one native TSS key. - - ACE_TSS_EMULATION may be useful even on platforms that - have native thread specific storage. It offers these - advantages: - - 1) ACE's TSS emulation offers a configurable number of TSS - keys, via ACE_DEFAULT_THREAD_KEYS. Most (all?) native TSS - implementations have a fixed number of keys. LynxOS 3.0.0, - for example, only has three keys available to applications. - - ACE_DEFAULT_THREAD_KEYS defaults to 64, to match the - number of native keys on Windows NT. - - 2) ACE's TSS emulation recycles deleted keys. Some native TSS - implementations, such as POSIX Draft 4, POSIX Draft 6, and - Solaris, do not allow deletion of TSS keys. Therefore, - unused keys cannot be recycled. - - 3) ACE's TSS emulation calls destructors on TSS objects in the - main thread. Solaris' native TSS, for example, does not. - - There is one known drawback to using ACE's TSS emulation: it is - slower than using native TSS. The performance penalty is - probably negligible for most applications, however. It involves - just an additional function call, an array index, and three numeric - comparisons beyond the native TSS call. The function call is - _not_ a virtual function call. (On MVS, there's an additional - memcpy of the TSS key with TSS emulation.) - - TSS emulation is enabled by default in the ACE configurations - for VxWorks, pSOS, and LynxOS. - - Many thanks to Arturo Montes for - expanding TSS emulation to platform that have native TSS. - -Sun Sep 27 20:12:13 EDT 1998 James CE Johnson - - * docs/tutorials/index.html: Linked in Tutorial 13 - -Sun Sep 27 18:53:25 1998 Carlos O'Ryan - - * tests/Map_Manager_Test.cpp: - Instead of clearing the capacity and size in the - free_search_structure() method we do it on the close() - method. The first method is also used in other places... - -Sun Sep 27 18:25:57 1998 David L. Levine - - * ace/OS.i (readdir_r): added __USE_POSIX test for three-arg - ::readdir_r (). Thanks to james@tsunami.com for providing - the patch. - -Sun Sep 27 09:35:04 1998 James CE Johnson - - * docs/tutorials/013/* - Completed Tutorial 013! The code is up to date and compilable on - RedHat Linux with egcs 1.1. It may need some template help on other - platforms. The HTML is done and in synch with the code. - -Sun Sep 27 01:52:36 1998 Carlos O'Ryan - - * ace/INET_Addr.cpp: - The get_host_name() method was returning the first name, and not - looking up in the alias list for the right match with the - address. - -Sun Sep 27 00:18:48 1998 Nanbor Wang - - * ace/Makefile: Updated dependency. - - * ace/OS.cpp (invoke): - * ace/Thread_Manager.cpp (ace_thread_manager_adapter): - (ACE_Thread_Exit::instance): Removed conditional macro - ACE_HAS_PTHREAD_SIGMASK so the Thread_Exit instance can be place - in TSS. This was guarded by ACE_HAS_PTHERAD_1003_DOT_3 which - later merged with ACE_HAS_PTHERAD_SIGMASK. However, the - origianl intension of this condition was to fix a bug in Xavier - pthread implementation. The effect of merging the two macros - forces ACE_Thread_Exit be allocated from stacks which, in turn, - prevent threads from exiting properly when pthread_cancel is - used. - - Linux is the only platform that I know which uses Xavier thread - library. The bug has apparently been fixed. If your platform - segfaults while spawning threads, please let me know. Thanks to - Chris Gill for noticing the abnormal behavior when calling - ACE_Thread::thr_cancel. - -Sat Sep 26 23:20:52 1998 Alexander Babu Arulanthu - - * ace/Proactor.cpp: Fixed the g++ warnings. - -Fri Sep 25 23:19:52 1998 David L. Levine - - * ace/Sched_Params.cpp: use both ACE_HAS_STHREADS and - ACE_HAS_PRIOCNTL. With just ACE_HAS_PRIOCNTL, the - min/max priority values weren't right on DU 4.0. With - this change, we're back to the strict POSIX interface - on DU 4.0, and SunOS if ACE_HAS_STHREADS is not #defined. - -Fri Sep 25 21:58:35 1998 Irfan Pyarali - - * ace/ACE.cpp (set_handle_limit): Added appropriate return value. - -Fri Sep 25 22:10:38 1998 Carlos O'Ryan - - * ace/Map_Manager.cpp: - Map_Manager::close() did not reset the capacity or current size - of the map. - -Fri Sep 25 18:24:17 1998 Darrell Brunsch - - * ace/Proactor.{h,cpp}: Had to allow the definition of - POSIX_COMPLETION_STRATEGY for the do-nothing constructor on - NT. - -Fri Sep 25 18:07:19 EDT 1998 James CE Johnson - - * A few more minor changes to docs/tutorials/013. With luck, the - HTML part will be done this weekend! - -Fri Sep 25 14:51:54 1998 Alexander Babu Arulanthu - - * ace/Asynch_IO.h: - * ace/Asynch_IO.cpp: - * ace/Proactor.h: - * ace/Proactor.cpp: - Implemented Asynch_Accept to work for AIO_CONTROL_BLOCKS strategy of - completion notification. - - Defined an auxillary Accept_Handler called ACE_AIO_Accept_Handler in - addition to the ACE_Asynch_Accept_Handler. ACE_AIO_Accept_Handler - holds the notification pipe and does a read on it to handle the - coming from Asynch_Accept_handler. - - THANKS to Doug and Irfan for suggesting this 'notification pipe' based - implementation for AIO_CONTROL_BLOCKS strategy, so that Proactor will - work on platforms where POSIX4 RT_Signals are broken (Solaris 2.6 !) - - Note : Proactor uses AIO_CONTROL_BLOACKS strategy by default on - POSIX4 platforms. Call the constructor with RT_SIGNALS to enable - Real Time singal implementation. - - This should become very easier when we finish organizing these - files according to the Bridge pattern. - -Fri Sep 25 12:40:45 1998 David L. Levine - - * ace/config-sunos5.{5,6}.h: removed #define/#undef of - ACE_THR_PRI_FIFO_DEF. They're no longer needed with the - hard-coded ACE_THR_PRI_* values for Solaris in ace/OS.h. - - * ace/OS.i: removed carriage returns. Thanks to Darrell - for noticing it. - - * tests/Handle_Set_Test.cpp: removed ACE_Node - template instantiation because it conflicted with the - ACE_Node instantiation in ace/Stats.cpp. - - * docs/ACE-porting.html: updated "auto configure" link. Thanks - to Ossama for reporting this. - - * ace/ACE.cpp (set_handle_limit): on platforms with - ACE_LACKS_RLIMIT or ! RLIMIT_NOFILE, don't use - ACE_NOTSUP_RETURN if the new_limit is <= the cur_limit. - On those platforms, the limit can't be changed anyways, - and the request was _not_ to increase the limit. So, - it's a no-op; just return 0. - -Fri Sep 25 12:15:00 1998 Irfan Pyarali - - * ace: The following ACE_TRACE calls being made during the - creation of the ACE_Log_Msg instance. The ACE_TRACE calls then - try to create the ACE_Log_Msg instance which then ends up - executing the ACE_TRACE's. Etc, etc, etc... - - Here are the methods with the ACE_TRACEs that I commented out to - get ACE to run: - - ACE_IPC_SAP::~ACE_IPC_SAP - ACE_SOCK::ACE_SOCK - ACE_SOCK::~ACE_SOCK - ACE_SOCK_IO::ACE_SOCK_IO - ACE_SOCK_IO::~ACE_SOCK_IO - ACE_SOCK_Stream::ACE_SOCK_Stream - ACE_SOCK_Stream::~ACE_SOCK_Stream - ACE_Thread::keycreate - ACE_Thread::setspecific - ACE_Thread::getspecific - - Thanks to "Patrick J. McNerthney" for this bug - report. - -Fri Sep 25 10:10:12 1998 Steve Huston - - * ace/OS.i (cond_timedwait): Add EINTR to the list of errno values - that get changed to ETIME on wait timeout. EINTR is from LynxOS. - Thanks to David Levine for this fix. - - * tests/Semaphore_Test.cpp: Remove the assertion that a timed out - semaphore will return EINTR for ACE_HAS_PTHREADS_DRAFT4. All - platforms expect ETIME, which is normalized in - ACE_OS::cond_timedwait. - -Thu Sep 24 22:31:30 1998 David L. Levine - - * ace/OS.h: hard-coded the ACE_THR_PRI_* values on suns. - SunOS 5.6 could use sched_get_priority_min/max () for FIFO - and RR. But for OTHER, it returns negative values, which - can't be used. And, sched_get_priority_min/max () aren't - supported in SunOS 5.5.1. It would really be helpful - if SunOS defined PRI_FIFO_MIN, etc., in sched.h, but - it doesn't, probably because its process scheduling is - so flexible. Thanks to Russ Noseworthy - for helping to figure this - out. - -Thu Sep 24 17:54:26 1998 Carlos O'Ryan - - * ace/Asynch_IO.cpp: - Removed duplicate instantiation of a template, IRIX does not - like this. Thanks to Ossama Othman - because his configure script - detected the Asynch I/O calls on IRIX and enabled this ACE - code. - -Thu Sep 24 16:28:32 1998 Irfan Pyarali - - * ace/config-win32-common.h: ACE_HAS_TEMPLATE_TYPEDEFS was defined - for VC4.1 and VC4.2. Template typedefs in Strategies_T.cpp - broke the VC4.2 compiler. Therefore, ACE_HAS_TEMPLATE_TYPEDEFS - was deprecated for VC4.1 and VC4.2. I also checked VC5.0 and it - didn't work. Therefore, for the time being, none of the VC - compilers support ACE_HAS_TEMPLATE_TYPEDEFS. I didn't try - VC6.0. - - * ace/Strategies_T.cpp (check_hint_i ): Changed the signature so - that it is identical to find_or_create_svc_handler_i(). For - some strange freakin reason, the VC4.2 could not gork - check_hint_i() but was able to gork - find_or_create_svc_handler_i. - - * ace/ACE_Library.mdp: Added Select_Reactor_Base.cpp and - Container.cpp to make ACE build with VC4.2. - -Thu Sep 24 13:30:00 CDT 1998 Chris Gill - - * examples/Bounded_Packet_Relay/README - examples/Bounded_Packet_Relay/Bounded_Packet_Relay.{dsp,dsw} - - Updated README, added in MSVC++ project, workspace files. - -Thu Sep 24 12:48:58 1998 David L. Levine - - * ace/Containers_T.cpp (ACE_{Bounded,Fixed}_Set_Iterator::done), - ace/Map_Manager.cpp (ACE_Map_Iterator_Base::done): - added ACE_CAST_CONST to the static cast. Thanks to Ossama for - reporting a compilation failure on Sun C++ 4.2/Solaris 2.6 - without it. - - * ace/High_Res_Timer.cpp (global_scale_factor): on Linux, - only use BogoMips if the CPU is an alpha. It would also - work directly on Pentium Pro, but not other Pentiums. With - a little effort, it could be made to work there, see the - BogoMips mini-HOWTO. Thanks to Ossama for enlightening me - on this corner of Linux. - - * tests/Upgradable_RW_Test.cpp (main): delete dynamically - allocated reader_tasks and writer_tasks, and arrays, at end of test. - -Thu Sep 24 09:17:32 1998 Steve Huston - - * ace/Containers_T.h: Added #include "ace/Containers.h" - AIX xlC - needs this when instantiating templates. - - * ace/Dirent.cpp: Do the HP check using only compiler-defined - preprocessor macros since config.h isn't included. - - * ace/OS.i: Fixed comments that referenced DCE threads. - Changed readdir_r #ifdefs to handle pthreads drafts 4 and 6 - the same, and split HP-UX 10.x off as a non-conformant player. - Thanks to David Levine for sorting this out with LynxOS. - - * ace/Thread_Manager.cpp: Changed occurrences of - ACE_HAS_DCE_DRAFT4_THREADS to ACE_HAS_PTHREADS_DRAFT4. Corrected - a call to pthread_detach. Changed a couple of calls to - pthread_detach on HP-UX 10.x to duplicate the thread handle before - the call because pthread_detach on HP-UX 10.x clears the handle - and it was still needed. - On AIX, xlC doesn't match the call to - ACE_Thread::join(ACE_hthread_t, void ** = 0) correctly when the - second arg is specified. So call the 3-arg variety on AIX, knowing - that the second arg is ignored underneath on pthreads. - -Wed Sep 23 22:13:04 1998 James CE Johnson - - * docs/tutorials/006/server.cpp: - Wrapped !defined(ACE_HAS_GNU_REPO) around the explicit template - instantiation. - - * docs/tutorials/005/client_handler.cpp (handle_input): - * docs/tutorials/006/client_handler.cpp (svc): - * docs/tutorials/006/client_handler.cpp (handle_input): - * docs/tutorials/007/client_handler.cpp (svc): - * docs/tutorials/007/client_handler.cpp (handle_input): - Use ACE_OS::memset() instead of direct call to memset() - - * docs/tutorials/005/Makefile: - * docs/tutorials/007/Makefile: - Touch .depend if it does not exist. - -Wed Sep 23 22:03:19 1998 Arturo Montes - - * ace/config-sco-5.0.0.h: added ACE_LACKS_READDIR_R. - -Wed Sep 23 14:26:44 EDT 1998 James CE Johnson - - * docs/tutorials/005/server.cpp - docs/tutorials/006/server.cpp - docs/tutorials/007/server.cpp - docs/tutorials/008/Makefile - docs/tutorials/009/Makefile - docs/tutorials/013/Makefile - docs/tutorials/013/block.cpp - docs/tutorials/013/block.h - docs/tutorials/013/data.h - docs/tutorials/013/message_queue.cpp - docs/tutorials/013/mld.cpp - docs/tutorials/013/mld.h - docs/tutorials/013/page01.html - docs/tutorials/013/page02.html - docs/tutorials/013/page03.html - docs/tutorials/013/page04.html - docs/tutorials/013/task.cpp - docs/tutorials/013/task.h - docs/tutorials/013/work.cpp - docs/tutorials/013/work.h - - Fixed explicit template instantiaions in - tutorials 5, 6, 7. - - Fixed a nasty bug in 9's Makefile (and removed - similar comment in 8's Makefile) - - Preliminary version of 013 committed. The code - worked before I began "optimizing" and should work - again in a couple of days. The HTML is not yet - done but will be by the weekend (I hope). - -Wed Sep 23 12:15:21 1998 David L. Levine - - * ace/Stats.*: modified standard deviation calculation to - help avoid overflow. Instead of keep running totals of - the sum and sum of squares, it stores each sample in an - dynamic structure. Then, to calculate the standard - deviation, each sample is compared with the mean. - - * ace/Sched_Params.cpp: replace ACE_HAS_STHREADS with - ACE_HAS_PRIOCNTL. Thanks to Ossama for pointing this out. - - * ace/Synch.h: replaced #endif /* ACE_HAS_STHREADS */ with - #endif /* 0 */. - - * performance-tests/TTCP/{ACE-C++,C,Orbix}/Makefile: removed - old Quantify LINK_COMMANDs. They don't look like they're used - anywhere. - - * include/makeinclude/wrapper_macros.GNU: removed -DACE_QUANTIFY - and -Dquantify, with quantify=1, because they're no longer used. - - * ace/OS.h,README: added ACE_LACKS_CMSG_DATA_{MACRO/MEMBER} support. - It will be used by autoconf, for Linux libc5 (pre-libc). Thanks - to Ossama for supplying it. - - * ace/config-g++-common.h: disable ACE_HAS_TEMPLATE_SPECIALIZATION - with g++ 2.9. Thanks to Andrew G. Harvey for a - problem with compiling ace/Filecache.cpp with g++ 2.9 on SunOS 5.5.1. - - * tests/Upgradeable_RW_Test.h: replaced ACE_Thread_Mutex with - ACE_SYNCH_MUTEX. Thanks to Ossama for reporting this. - - * ace/config-linux-common.h: commented out the msg_accrights(len) - #defines. Thanks to Ossama for noticing that they just don't - look right. They no longer appear to be necessary on Linux. - -Wed Sep 23 11:30:00 CDT 1998 Chris Gill - - * examples/Bounded_Packet_Relay/Thread_Bounded_Packet_Relay.{h,cpp} - examples/Bounded_Packet_Relay/BPR_Drivers.{h,cpp} - examples/Bounded_Packet_Relay/BPR_Drivers_T.{h,cpp} - - Fixed memory leaks uncovered by Purify, added large high water mark - for packet relay's underlying message queue. - -Wed Sep 23 11:28:13 1998 Carlos O'Ryan - - * bin/Process_Unix.pm: - If the exec() call fails we report the name and the arguments of - the program. - -Wed Sep 23 09:27:21 1998 Steve Huston - - * ace/Dirent.cpp: Fixed aCC workaround from 22-Sep so that only - non-g++ compilers on HP-UX see it. - -Wed Sep 23 02:21:24 1998 Douglas C. Schmidt - - * ACE version 4.5.42 released. - -Tue Sep 22 21:34:31 1998 Steve Huston - - * ace/Dirent.cpp: Make aCC quit yacking about an empty translation - unit. - - * ace/OS.i: Fix up the conditions for readdir_r on differing pthreads - drafts. - - * ace/config-aix-4.2.x.h: Added ACE_HAS_DIRENT. - -Tue Sep 22 21:00:00 CDT 1998 Chris Gill - - * examples/Bounded_Packet_Relay/Thread_Bounded_Packet_Relay.{h,cpp} - examples/Bounded_Packet_Relay/BPR_Drivers.{h,cpp} - examples/Bounded_Packet_Relay/BPR_Drivers_T.{h,cpp} - examples/Bounded_Packet_Relay/bpr_thread.cpp: - - More fixes from testing on NT, added more logging features. - -Tue Sep 22 17:07:17 1998 Nanbor Wang - - * tests/Message_Queue_Notifications_Test.cpp (Watermark_Test): - Repositioned a comma so it compiles on non-threaded platforms. - Thankd to Ossama for noticing this. - -Tue Sep 22 17:20:53 1998 James Hu - - * ace/Containers_T.{h,i}: - Added a remove method to the ACE_DLList_Iterator. This is - needed since ACE_DLList is actually an abstraction over - ACE_Double_Linked_List, so the user of ACE_DLList does not hold - the address of the "real" node that ACE_Double_Linked_List is - managing. - -Tue Sep 22 16:07:53 1998 Steve Huston - - * bin/Makefile: Will now only build envinfo if make is invoked - with "envinfo=1". The difference is needed to allow clone to be - built before ACE has been built. - -Tue Sep 22 13:58:06 1998 Carlos O'Ryan - - * ace/config-irix6.x-g++.h: - Added some missing defines, thanks to JM Strauss - for pointing them out. Also fixed a - test for the N32 ABI, it said _NABI32 and should be _ABIN32. - -Tue Sep 22 11:42:17 1998 David L. Levine - - * ace/config-lynxos.h: added ACE_HAS_POWERPC_TIMER with - __powerpc__, but commented it out because it requires an OS patch. - - * ace/OS.i (fstat): put a :: in front of the call to the - system fstat if it's not defined as a macro. Thanks to - Ossama for reporting that MM_Shared_Memory_Test failed - otherwise. - -Tue Sep 22 10:58:04 1998 Ossama Othman - - * ace/OS.i (ACE_cond_t::waiters): only define this function if - ACE_HAS_THREADS. - - Testing the autoconf integration on a Linux libc5 system w/o - threads caused me problems since ACE_LACKS_COND_T gets - defined by the configure script automatically since no - condition variable support was found. The ACE_cond_t class - appears to only get defined if ACE_HAS_THREADS is defined, - otherwise ACE_cond_t is typedefed to an int. For - this reason, I thought that it would be a good idea to make - the above modification to prevent compile time errors on - platforms without threads and when ACE_LACKS_COND_T is - defined on those platforms. - -Tue Sep 22 03:09:07 1998 Douglas C. Schmidt - - * ACE version 4.5.41 released. - -Tue Sep 22 00:31:26 1998 Douglas C. Schmidt - - * ace/Log_Record.cpp (print): Make sure that the process id and - timestamp are fixed width. Thanks to Valery Arkhangorodsky - for this fix. - -Mon Sep 21 22:54:44 1998 Douglas C. Schmidt - - * examples/Bounded_Packet_Relay: Removed a gratuitous - parameterized type which was causing problems for SunC++. - -Mon Sep 21 21:47:12 1998 David L. Levine - - * ace/README: added ACE_HAS_PURIFY and ACE_HAS_QUANTIFY. - - * include/makeinclude/wrapper_macros.GNU: added ACE_HAS_PURIFY - and ACE_HAS_QUANTIFY support. We should use these consistently. - In addition, added -I support for Purify and Quantify. - This support should no longer appear in individual Makefiles. - - * ACE-INSTALL.html: added paragraph on Purify/Quantify support - details, i.e., they must be on your PATH, and ACE puts the - instrumented libraries below /tmp by default. - -Mon Sep 21 20:46:00 1998 Nanbor Wang - - * ace/Containers_T.cpp (ACE_Double_Linked_List): Changed - dynamic_cast to static_cast. - -Mon Sep 21 18:35:00 CDT 1998 Chris Gill - - * examples/Bounded_Packet_Relay/Thread_Bounded_Packet_Relay.{h,cpp} - examples/Bounded_Packet_Relay/BPR_Drivers.{h,cpp} - examples/Bounded_Packet_Relay/BPR_Drivers_T.{h,cpp} (new) - examples/Bounded_Packet_Relay/bpr_thread.cpp: - - Factored out templates into separate files, fixed initialization, - concurrency, and deadlock problems found in NT testing. - -Mon Sep 21 18:27:19 1998 Irfan Pyarali - - * tests/Conn_Test.cpp: g++ cannot gork templates typedefs. - -Mon Sep 21 15:48:34 1998 Douglas C. Schmidt - - * ace/Acceptor: It's now possible to select if you want to reuse - the PEER_ACCEPTOR addr. Thanks to Chuck Gehr for suggesting - this. - -Mon Sep 21 15:00:34 1998 Nanbor Wang - - * ace/Thread_Manager.{h,cpp} (join): Allow passing back of thread's - exit status of the thread being joined. - -Mon Sep 21 11:24:33 1998 Douglas C. Schmidt - - * docs/ACE-categories.html (HREF): Updated the links to ace/ and - man/ since we moved the file around. Thanks to Byron Harris for - reporting this. - -Mon Sep 21 10:22:17 1998 Steve Huston - - * ace/Select_Reactor_T.cpp (handle_error): Check handles for all - errors (not just EBADF) on Win32, in addition to MVS. Thanks - to Xu Yifeng for this fix. - -Mon Sep 21 01:27:19 1998 Irfan Pyarali - - * ace/Strategies_T.cpp (find_or_create_svc_handler_i): g++ cannot - gork templates... - - * tests/Conn_Test.cpp: Fixed template instantiations. - - * ace/Strategies_T.cpp (ACE_Cached_Connect_Strategy): New methods - find_or_create_svc_handler_i and check_hint_i to simplify - connect_svc_handler. Also added _i methods to implement - non-locking versions. - - * ace/Strategies.h (ACE_Connection_Recycling_Strategy): - New methods: mark_as_close and cleanup_hint. - - * ace/Strategies: Added three new classes: ACE_Recyclable, - ACE_Hashable, and ACE_Refcountable. Also added - ACE_Refcounted_Hash_Recyclable. Deprecated ACE_Recyclable and - ACE_Hash_Recyclable - - * ace/Svc_Handler.h (cleanup_hint): Added new method. This can be - used by users when they are through with using the svc_handler - as a hint. - -Mon Sep 21 00:40:00 CDT 1998 Chris Gill - - * examples/Bounded_Packet_Relay/Thread_Bounded_Packet_Relay.{h,cpp} - examples/Bounded_Packet_Relay/BPR_Drivers.{h,cpp} - examples/Bounded_Packet_Relay/bpr_thread.cpp - examples/Bounded_Packet_Relay/README: - - Reorganized construction of input and output device objects - and the relay object, cleaned up readme file. - -Sun Sep 20 22:01:00 CDT 1998 Chris Gill - - * examples/Bounded_Packet_Relay/BPR_Drivers.h: - - Made Bounded_Packet_Relay_Driver::display_menu (void) pure virtual: - now it all compiles *and* links. - -Sun Sep 20 21:49:00 CDT 1998 Chris Gill - - * examples/Bounded_Packet_Relay/Thread_Bounded_Packet_Relay.{h,cpp} - examples/Bounded_Packet_Relay/BPR_Drivers.{h,cpp} - - Fourth checkin of bounded packet relay example: compiles. - -Sun Sep 20 20:41:29 1998 Nanbor Wang - - * ace/Acceptor.{h,cpp}: Added an extra argument to constructors of - ACE_Strategy_Acceptor and open method so that we can accept only - one connection request every time handle_input is called. - -Sun Sep 20 20:30:36 1998 Marina Igorevna Spivak - - * ace/OS.h : added ACE_GUARD_THROW, ACE_GUARD_THROW_RETURN, - ACE_NEW_TRY_THROW, ACE_NEW_TRY_THROW_RETURN macros to utilize - new exceptions macros. - -Sun Sep 20 19:18:00 CDT 1998 Chris Gill - - * examples/Bounded_Packet_Relay/Thread_Bounded_Packet_Relay.{h,cpp} - examples/Bounded_Packet_Relay/BPR_Drivers.{h,cpp} - examples/Bounded_Packet_Relay/README - - Third checkin of bounded packet relay example, - addressed remaining coding style issues. - (very rough, still does not compile) - -Sun Sep 20 16:38:17 1998 Nanbor Wang - - * ace/Thread_Manager.i (get_next): Changed to use static_cast. - - * ace/Thread_Manager.cpp: Shielded off terminated_thr_list_ from - compilation on VxWorks. Thanks to David for noticing this. - -Sun Sep 20 12:17:00 CDT 1998 Chris Gill - - * examples/Bounded_Packet_Relay/Thread_Bounded_Packet_Relay.{h,cpp} - examples/Bounded_Packet_Relay/BPR_Drivers.{h,cpp} - - Second checkin of bounded packet relay example, - addressed several coding style issues. - (very rough, still does not compile) - -Sun Sep 20 11:25:52 1998 David L. Levine - - * ace/OS.h: with ACE_HAS_TSS_EMULATION, use u_long instead of - u_int for ACE_thread_key_t. This avoids overload ambiguity - on platforms that typedef pthread_key_t to u_int. We'll be - in trouble if we try on one that uses u_long. In that case, - we could try u_short, or added an ACE_HAS. - - * ace/Thread_Manager.i (register_as_terminated): neutered on VxWorks, - so that it will compiled. - - * tests/SOCK_Connector_Test.cpp (host_is_up): don't define - this function ifdef ACE_LACKS_GETHOSTENT, because it isn't - used in that case. - -Sat Sep 19 14:29:56 1998 Douglas C. Schmidt - - * ace/OS.i (fstat): Removed the "::" in front of the fstat() call - since it's implemented as a macro on some platforms. Thanks to - Frank Adcock for reporting this. - - * examples/Bounded_Packet_Relay: Updated the coding style. - -Sat Sep 19 14:06:52 1998 Darrell Brunsch - - * apps/JAWS/PROTOTYPE/JAWS/IO.cpp: Fixed typo. - - * apps/JAWS/PROTOTYPE/JAWS/jaws.dsp: - * apps/gperf/src/gperf.dsp: - * ace/ace_dll.dsp: - * netsvcs/clients/Naming/Client/Client_Test.dsp: - * netsvcs/lib/netsvcs.dsp: - Changed behavior of all DLL projects and utilities (like - gperf) to put the dll and executables in $ACE_ROOT/bin. - - * ace/config-win32.h: ACE_HAS_GPERF is back. - - * ACE-INSTALL.html: On NT, $ACE_ROOT/bin should now be in - your path instead of $ACE_ROOT/ace. - -Sat Sep 19 12:27:31 1998 Irfan Pyarali - - * ace/Asynch_IO.cpp: thread_function() is only for UNIX. - -Sat Sep 19 10:43:41 1998 Alexander Babu Arulanthu - - * ace/Asynch_IO.cpp (open): Fixed the build errors with WIN32. - -Sat Sep 19 09:02:00 CDT 1998 Chris Gill - - * examples/Bounded_Packet_Relay/Thread_Bounded_Packet_Relay.{h,cpp} - examples/Bounded_Packet_Relay/BPR_Drivers.{h,cpp} - examples/Bounded_Packet_Relay/bpr_thread.cpp - examples/Bounded_Packet_Relay/Makefile - examples/Bounded_Packet_Relay/README: - - First checkin of bounded packet relay example - (very rough, does not even compile yet) - -Sat Sep 19 00:42:53 1998 Alexander Babu Arulanthu - - * ace/Asynch_IO.cpp: Fixed NT warnings (hopefully :-) - -Fri Sep 18 22:50:21 1998 Nanbor Wang - - * ace/Thread_Manager.{h,i,cpp}: Added a join method to reclaim - OS/ACE resources that are used to managed thread object. I - encourage all ACE programmers to use ACE_Thread_Manager::join to - wait for threads spawned by ACE_Thread_Manager. It is more - portable than ACE_Thread (most significantly, wrt resource - management.) - (wait_grp,wait_task): Improved and corrected the - implementations. These two methods now also clean up resources - used by threads that has already terminated when the calls get - invoked. - - Changed the terminated_thr_queue_ to terminated_thr_list_ which - is now a double-linked list. This change allows us to - gather/cleanup infomation of threads belong to same group/task - in one pass. - - ACE_Thread_Manager::exit now tests the thread status to see if - ACE_THR_JOINING is set or not. If set, it means the thread is - being joined by join/wait_grp/wait_task and avoid double - removing the thread resources from OS. - - * ace/OS.h (ACE_Thread_State): Added ACE_THR_JOINING to identify - threads that are being joined by the Thread Manager. - - * ace/Container_T.{h,cpp} (ACE_Double_Linked_List): Added several - dynamic_cast in several places so we can generate code for both - base class and derived class. - (ACE_Double_Linked_List_Iterator): Added a method - "advance_and_delete" to allow removing double-linked list - element while iterating thru the list. The design is very - intrusive and you should know what you are doing before using - the method. Notice that ACE_Double_Linked_List is _not_ a - general purpose Container class. - - * tests/run_tests.bat: Added DLList_Test. - -Fri Sep 18 18:06:19 1998 Alexander Babu Arulanthu - - * ace/Asynch_IO.h: - * ace/Asynch_IO.cpp: - * examples/Reactor/Proactor/test_proactor.cpp: - Implemented Asynch_Accept for POSIX4 systems, by having only one - thread doing . Asynch_Accept_Handler has been - changed to act as Event Handler now. No problem of having threads - blocking on the now. Thanks to Irfan for this idea. - -Fri Sep 18 13:26:50 1998 David L. Levine - - * tests/High_Res_Timer_Test.cpp (check): raised success - threshold from 10 to 25 percent. Ossama saw just over - 10 percent on an Linux box, not surprising. Thanks to - him for reporting it. - - * ace/SOCK_Dgram_Mcast.cpp (unsubscribe): on other than ACE_WIN32, - added ACE_UNUSED_ARGs for protocol_family and protocol. Thanks - to Peter Liqun Na for reporting this. - - * ace/OS.cpp (ACE_TSS_Emulation_cleanup): added ACE_UNUSED_ARG (ptr). - - * bin/make-release: enter version number(s) into BUG-REPORT-FORM. - Thanks to Steve for this suggestion. - -Fri Sep 18 01:53:38 1998 Douglas C. Schmidt - - * ACE version 4.5.40 released. - -Fri Sep 18 01:51:46 1998 Douglas C. Schmidt - - * ace/ACE (open_temp_file): Changed the signature of this method - to take a const char * rather than a char *. - -Fri Sep 18 00:07:31 1998 Alexander Babu Arulanthu - - * ace/ACE.h (ACE): - * ace/ACE.cpp (open_temp_file): Added this method to do open for - the temp files, so that they will get deleted when they are - closed. - Thanks to Nanbor and Carlos. - -Thu Sep 17 23:01:50 1998 David L. Levine - - * ace/Containers.i: resurrected the file properly. - - * ace/Containers.i (~ACE_DLList_Node): removed extraneous ; - following function definition. - -Thu Sep 17 22:44:17 1998 Douglas C. Schmidt - - * examples/IPC_SAP/SOCK_SAP/CPP-inclient.cpp: If the client - doesn't connect to the server, make sure to shut down the test - gracefully, rather than getting a segfault. Thanks to - Margherita Vittone Wiersma for - reporting this. - -Thu Sep 17 22:33:00 1998 James CE Johnson - - * docs/tutorials/index.html - docs/tutorials/templates.html - - Added templates.html to discuss issues surrounding manual vs - automatic template instantiation. - -Thu Sep 17 20:01:33 1998 Nanbor Wang - - * tests/tests.dsw: - * tests/version_tests.dsw: - * tests/[version_tests/]High_Res_Timer_Test.dsp: - * tests/[version_tests/]DLList_Test.dsp: Added new project files. - -Thu Sep 17 19:27:11 1998 David L. Levine - - * ace/OS.cpp (TSS_base,some ACE_PSOS_Time_t functions): - removed ACE_INLINE. - - * examples/Shared_Malloc/test_malloc.cpp (gen_size): cast - &seed to unsigned long first, to avoid warning about - narrowing on Alphas (cxx/DU 4.0). - -Thu Sep 17 18:51:08 1998 Carlos O'Ryan - - * examples/Reactor/Multicast/server.cpp: - * examples/Reactor/Multicast/Log_Wrapper.cpp: - * examples/Service_Configurator/IPC-tests/client/remote_stream_client_test.cpp: - Revert back to iovec instead of ACE_IO_Vector. - -Thu Sep 17 18:33:19 EDT 1998 James CE Johnson - - * docs/tutorials/002/server.pp - - Added necessary templates for explicit instantiation. - Thanks to Krishna Padmasola for providing the proper code - and to Clinton Carr for reminding me to do it! - -Thu Sep 17 16:30:00 1998 Carlos O'Ryan - - * This comments were lost in a previous commit. - - * ace/OS.h: - * ace/OS.i: - * ace/ACE.cpp: - * ace/ACE.h: - * ace/DEV_IO.cpp: - * ace/DEV_IO.h: - * ace/DEV_IO.i: - * ace/FIFO_Send_Msg.cpp: - * ace/FILE_IO.cpp: - * ace/FILE_IO.h: - * ace/FILE_IO.i: - * ace/LSOCK.cpp: - * ace/LSOCK_Stream.cpp: - * ace/LSOCK_Stream.h: - * ace/SOCK_Dgram.cpp: - * ace/SOCK_Dgram.h: - * ace/SOCK_Dgram_Bcast.cpp: - * ace/SOCK_Dgram_Bcast.h: - * ace/SOCK_Dgram_Mcast.h: - * ace/SOCK_Dgram_Mcast.i: - * ace/SOCK_IO.cpp: - * ace/SOCK_IO.h: - * ace/SOCK_IO.i: - * ace/SPIPE_Stream.cpp: - * ace/SPIPE_Stream.h: - * ace/SPIPE_Stream.i: - Moved back to iovec instead of ACE_IO_Vector. Since this - structure is defined by ACE we can make it binary compatible - with the WSABUF structure (yet preserve the names of the UNIX - iovec struct). This allow us to simply pass arrays of iovec to - routines expecting WSABUF*. - But Win32 does not provide any functions to go scatter-gather - over files, so this is only used for sockets, new methods: - ACE_OS::sendv() and ACE_OS::recvv() were added for this - purpose, the old emulation is used for the other classes. Users - writing to higher-level components (such as ACE_SOCK or - ACE_SOCK_Dgram) will benefit from this without any changes to - their code. - - * ace/SOCK_Dgram.cpp: - * ace/SOCK_Dgram.h: - * ace/SOCK_Dgram_Bcast.cpp: - * ace/SOCK_Dgram_Bcast.h: - * ace/SOCK_Dgram_Mcast.h: - * ace/SOCK_Dgram_Mcast.i: - Added the implementation for some send() variants that were - declared but not implemented. - - * ace/OS.h: - * ace/OS.i: - * ace/config-win32-common.h: - Added support for sendmsg() and recvmsg() on NT, emulated over - WSASendTo() and WSARecvFrom(), do data copies are made. - - * ace/Containers.cpp: - * ace/Containers.h: - * ace/Containers_T.h: - * ace/Containers_T.i: - Moved the non-templated code back to Containers.{h,i,cpp}, added - the infamous ACE_Export macro. - - * ace/ace_dll.dsp: - Added Containers.cpp to the project. - -Thu Sep 17 11:23:49 1998 Douglas C. Schmidt - - * ace/OS: Modified ACE_THR_FUNC so that its signature is always - void *(*)(void *). We now have a new type called - ACE_THR_FUNC_INTERNAL that is defined for each different OS - platform, e.g., VxWorks, pSoS, et al. - - * examples/IPC_SAP/SOCK_SAP/CPP-inserver.cpp (run_server): Oops, - we can't use ACE_THR_FUNC here since that has a different - signature on VxWorks. So we'll just expand this a bit. Thanks - to Raja Ati for reporting this. - -Thu Sep 17 09:54:56 1998 David L. Levine - - * ace/Svc_Handler.cpp (new): cleaned up the ACE_ASSERT check - for ACE_Dynamic::instance () not being null. - - * docs/ACE-guidelines.html: added guideline to define ACE_ - typedefs to reduce the number of #ifdefs. Thanks to - Carlos and Doug for this suggestion, and Chris for the - example :-). - - * examples/IPC_SAP/SOCK_SAP/CPP-inserver.cpp (run_event_loop): - added casts to ACE_THR_FUNC to please VxWorks. Thanks to - Raja Ati for reporting this problem. - - It would probably be better to change the definition of - ACE_THR_FUNC on VxWorks (and PSOS) to be the same as on - other platforms. That will require other changes, though. - - * examples/IPC_SAP/SOCK_SAP/CPP-inserver-fancy.cpp: - removed trailing ; from instantiation #pragma. - - * ace/config-lynxos.h: added ACE_HAS_TSS_EMULATION. - -Thu Sep 17 09:23:01 1998 Carlos O'Ryan - - * ace/FIFO_Send_Msg.cpp: - Fixed variable declaration, "struct ACE_IO_Vector_Base" is not - the same as "ACE_IO_Vector_Base". - - * ace/OS.i: - Fixed the ACE_OS::rand_r() signature for Win32. - - * ace/SOCK_Dgram_Mcast.cpp: - Fixed some problems with the Win32 implementation of - unsubscribe(). - -Thu Sep 17 08:41:14 1998 Carlos O'Ryan - - * examples/Shared_Malloc/test_malloc.cpp: - Fixed some problems with my changes to rand_r() - - * ace/Containers.i: - Resurrected this file to avoid problems with dependencies in - TAO. - -Thu Sep 17 08:41:24 1998 Steve Huston - - * include/makeinclude/platform_hpux_gcc.GNU: Added -L. to LDFLAGS. - Thanks to Anne Blankert for this fix. - -Thu Sep 17 07:31:13 1998 David L. Levine - - * ace/OS.i (truncate): added ACE_UNUSED_ARGs for NOTSUP case. - -Thu Sep 17 02:45:53 PDT 1998 James Hu - - * ace/Containers_T.h: - * ace/Containers_T.i: - * ace/Containers_T.cpp: - Added these files so that I could include some explicit - template instantiations inside Containers.cpp. Removed - #if guards around ACE_DLList since it no longer relies - on the feature that was being guarded against. - - * ace/Containers.h: - Simply #includes Containers_T.h. - - * ace/Containers.cpp: - Only contains some explicit template instantiations. - - * ace/Containers.i: - Removed, since it was no longer needed. - -Thu Sep 17 01:20:53 1998 Irfan Pyarali - - * ace/Msg_WFMO_Reactor.cpp (dispatch_window_messages): There was a - slight problem in Msg_WFMO_Reactor.cpp when ACE coexists with - MFC. Basically the dispatch_window_messages routine simply - returns -1 when the WM_QUIT message is received. However, if - the WFMO_Reactor and the MFC application run on the different - threads the main thread would never shut down since it just keep - waiting forever for the Quit message from other threads. The - easiest way to fix the above problem to call PostQuiteMessage - when WM_QUIT is received by WFMO_Reactor. - - Thanks to Hongbo Xu for fixing this. - - * ace/OS.i (open): No need to find the file size since - SetFilePointer supports FILE_END. Also fixed the UNICODE - version of ACE_OS::open(). - -Wed Sep 16 22:52:44 1998 Carlos O'Ryan - - * examples/Reactor/Multicast/server.cpp: - * examples/Reactor/Multicast/Log_Wrapper.cpp: - * examples/Service_Configurator/IPC-tests/client/remote_stream_client_test.cpp: - Use ACE_IO_Vector instead of iovec because it is more portable. - -Wed Sep 16 22:17:54 1998 Carlos O'Ryan - - * ace/OS.h: - * ace/DEV_IO.cpp: - * ace/DEV_IO.h: - * ace/DEV_IO.i: - * ace/FIFO_Send_Msg.cpp: - * ace/FILE_IO.cpp: - * ace/FILE_IO.h: - * ace/FILE_IO.i: - * ace/LSOCK.cpp: - * ace/LSOCK_Stream.cpp: - * ace/LSOCK_Stream.h: - * ace/SOCK_Dgram.cpp: - * ace/SOCK_Dgram.h: - * ace/SOCK_Dgram_Bcast.h: - * ace/SOCK_Dgram_Mcast.cpp: - * ace/SOCK_Dgram_Mcast.h: - * ace/SOCK_Dgram_Mcast.i: - * ace/SOCK_IO.cpp: - * ace/SOCK_IO.h: - * ace/SOCK_IO.i: - * ace/SPIPE_Stream.cpp: - * ace/SPIPE_Stream.h: - * ace/SPIPE_Stream.i: - More iovec to ACE_IO_Vector_Base conversion. - - * ace/Containers.i: - The ACE_DLList_Node and ACE_DLList_Iterator class are protected - by a !defined (ACE_LACKS_TEMPLATE_AS_TEMPLATE_PARAMETER), so - should be their inline methods. - - * ace/SOCK_Dgram_Mcast.cpp: - * ace/SOCK_Dgram_Mcast.h: - * ace/SOCK_Dgram_Mcast.i: - Added a generic unsubscribe() method. - -Wed Sep 16 21:45:48 1998 Darrell Brunsch - - * ace/ACE.{h.cpp}: Changed some iovecs to ACE_IO_Vector_Base. - - * ace/config-win32.h: Commented out ACE_HAS_GPERF until we get - everything working with it. - -Wed Sep 16 21:43:07 1998 Nanbor Wang - - * ace/OS.i (open): Added SetFilePointer to move the file pointer - of the opened file to end of file if _O_APPEND is specified on - Win32. - -Wed Sep 16 20:42:16 1998 Douglas C. Schmidt - - * ace/OS: Added a typedef for ACE_IO_Vector_Base so that it will - shield the differences between Win32 and UNIX. - -Wed Sep 16 20:09:01 1998 Carlos O'Ryan - - * ace/OS.h: - * ace/OS.i: - ACE_OS::rand_r() is easier to use now. Just define a variable of - that type and invoke ACE_OS::rand_r() with it, it even works on - broken platforms that define it as a non-pointer. - This is a brief example on how to use it: - ACE_RANDR_TYPE seed; - int r1 = ACE_OS::rand_r (seed); - int r2 = ACE_OS::rand_r (seed); - -Wed Sep 16 17:46:23 PDT 1998 James Hu - - * ace/Containers.{h,i}: Added comments to DLList as per Doug's - request. - -Wed Sep 16 19:23:21 1998 Steve Huston - - * ace/config-hpux-11.x-hpc++.h: Moved ACE_HAS_DIRENT to config-hpux11.h - -Wed Sep 16 18:21:45 1998 Douglas C. Schmidt - - * ace/Containers.h: Reformatted the ACE_DLList* classes to conform - to ACE programming conventions. - - * ace/config-hpux-11.x-hpc++.h: Added ACE_HAS_DIRENT and - ACE_HAS_GPERF to appease John Mulhern. - - * ace/Asynch_Acceptor.cpp: Added ACE_reinterpret_cast()s to the - sockaddr *'s to appease aCC on HP/UX 11. Thanks to John Mulhern - for reporting this. - -Wed Sep 16 17:16:51 EDT 1998 James CE Johnson - - * docs/tutorials/012/Makefile - docs/tutorials/012/data.h - docs/tutorials/012/message_queue.cpp - docs/tutorials/012/page01.html - docs/tutorials/012/page02.html - docs/tutorials/012/page03.html - docs/tutorials/012/page04.html - docs/tutorials/012/page05.html - docs/tutorials/012/page06.html - docs/tutorials/012/task.cpp - docs/tutorials/012/task.h - docs/tutorials/index.html - - Tutorial 12. This corrects some of the nastyness - in number 11 by specializing the ACE_Message_Block - to carry around the data. - -Wed Sep 16 16:01:53 1998 Nanbor Wang - - * ace/Select_Reactor_T.{h,i,cpp}: Disable inlining in - Select_Reactor_T.i and always include them in .cpp file. The - latest version of SunCC can't grok this particular file and we - just turn it off here. We shall turn it back on once the - problem gets fixed. Thanks to Keith Brown - for providing this temporary fix. - -Wed Sep 16 13:41:50 1998 Douglas C. Schmidt - - * ace/OS.h: Added more protection for the semun definition, i.e., - (defined (__GLIBC__) && defined (_SEM_SEMUN_UNDEFINED)). This - fixes problems with Linux, GLIBC 2.1, and PGCC. Thanks to - Marc Lehmann for reporting this. - -Wed Sep 16 11:41:57 1998 David L. Levine - - * ace/High_Res_Timer.cpp: added ACE_HAS_POWERPC_TIMER support. - - * tests/High_Res_Timer_Test.cpp: added this new test. - - * tests/Makefile,run_tests.{bat,psosim,sh,vxworks}: - added High_Res_Timer_Test. - - * ace/OS.* (readPPCTimer): unlined readPPCTimer for - PowerPC. If it was called more than once in a - compilation unit, when inlined, the assembler complained - about multiple definitions of the aclock symbol. - - * ace/Malloc_T.cpp (dump): fixed typo, cb_ptr instead of - cp_ptr. Thanks to Umar Syyid for reporting this. - - * tests/TSS_Test.cpp (worker): allow second group of TSS keys to - be allocated, with TSS emulation. - - * ace/Svc_Handler.cpp (new): added check that - ACE_Dynamic::instance () is non-null before dereferencing it. - ACE_ASSERT/return 0 if it is null. - -Wed Sep 16 11:28:47 1998 Irfan Pyarali - - * netsvcs/clients/Naming/Dump_Restore/Dump_Restore.cpp: In - general, using iostreams in ACE causes more problems for us than - it is worth since some systems do not support iostreams. I have - rewritten this file to not use iostreams but use - ACE_DEBUG/ACE_ERROR instead. - -Wed Sep 16 10:49:34 1998 Carlos O'Ryan - - * bin/auto_compile: Updated to the new directory hierarchy in TAO. - -Wed Sep 16 09:46:31 1998 Steve Huston - - * ace/config-hpux-10.x.h: Added ACE_HAS_DIRENT. - -Tue Sep 15 20:25:23 1998 Douglas C. Schmidt - - * tests/test_config.h: Always #undef ACE_NLOGGING so the tests - will produce output! Thanks to Chuck Gehr for reporting this. - - * ace/OS.i: Added a new ACE_LACKS_TRUNCATE flag to work around - platforms that lack the truncate() call. Thanks to - Sergio for reporting this. - -Tue Sep 15 17:57:26 1998 Sergio Flores - - * ace/config-vxworks5.x.h: Added ACE_LACKS_TRUNCATE to VxWorks - configuration. - -Tue Sep 15 16:58:18 1998 Nagarajan Surendran - - * include/makeinclude/platform_chorus_ghs.GNU: Changed the - MVME_DIR to /project/doc/mvme/mvme177. - - * ace/ARGV.cpp (ACE_ARGV::argv_to_string): Fixed the problem where - we were allocating space only for the length of the string whereas - strecpy was inserting the extra '\0' leading to Array bounds write. - -Tue Sep 15 16:34:47 1998 David L. Levine - - * ace/OS.i (gethrtime): added high-res timer support with - g++ and ACE_HAS_POWERPC_TIMER. - - * ace/OS.{h,cpp},config-vxworks5.x.h,README: changed ACE_HAS_POWERPC - to ACE_HAS_POWERPC_TIMER. - - * ace/config-lynxos.h: added ACE_HAS_PENTIUM, to provide - high-res timer support on LynxOS. - -Tue Sep 15 13:33:26 1998 Nanbor Wang - - * ace/config-{WinCE,g++-common}.h: - * ace/OS.{h,i,cpp}: Deprecated ACE_LACKS_GETS and ACE_OS::gets (void). - - * apps/gperf/src/gperf_lib.dsp: Enabled c++ exception handling to - avoid warning when compiling with standard c++ libraries. - -Tue Sep 15 11:22:53 1998 Aniruddha Gokhale - - * ace/OS.{h, i}: - - Added definition for the "stat" data structure. Also added the - definition for the "truncate" function. - -Mon Sep 14 23:28:24 1998 Douglas C. Schmidt - - * ACE version 4.5.39 released. - -Mon Sep 14 21:46:36 1998 David L. Levine - - * ace/Containers.h: added "class" to several ACE_DLList friend - declarations. - -Mon Sep 14 21:02:30 1998 Irfan Pyarali - - * ace/Mem_Map.cpp (map_it): Removed the code for - !ACE_HAS_P_READ_WRITE since we cover it in ACE_OS::pwrite. - - * ace/Filecache.cpp (ACE_Filecache_Object): Changed the - lseek/write combo to pwrite. - -Mon Sep 14 17:09:04 1998 Douglas C. Schmidt - - * ace/config-win32-common.h,OS.h,README: Removed all mention of - ACE_LACKS_FIFO, which was no longer necessary. Thanks to Ossama - Othman for suggesting this. - - * ace/ACE.cpp (bind_port): Renamed sin to sock_addr to make the - autoconf script happier. Thanks to Ossama Othman - for suggesting this. - - * include/makeinclude/platform_mvs.GNU: Updated the MVS platform - configuration as follows: - - changed: - debug = 1 - to: - debug = 0 - - added: - static_libs = 1 - - and deleted the line: - CCFLAGS += $(CFLAGS) - - Thanks to Chuck Gehr for these - changes. - -Mon Sep 14 14:34:32 1998 Darrell Brunsch - - * apps/gperf/src/gperf.dsp: - * apps/gperf/src/gperf_lib.dsp: - Fixed the project by removing new.cpp (which disappeared a - while back) and changed the code generation to DLL. Now - seems to work on NT. - - * ace/config-win32.h: ACE_HAS_GPERF now on NT. - -Mon Sep 14 13:41:26 1998 Douglas C. Schmidt - - * ace/OS: Fixed qsort() and bsearch() so they work correctly for - MVS. Thanks to Chuck Gehr for reporting this. - - * ace/config-mvs.h: Added - - #define ACE_HAS_DIRENT - #define ACE_LACKS_READDIR_R - - so that things will work correctly for MVS. Thanks to Chuck - Gehr for reporting this. - -Mon Sep 14 10:11:18 1998 Nanbor Wang - - * ace/ace_ce_dll.dsp: Added Select_Reactor_Base.cpp and removed - Array.cpp from the project. Thanks to Paul Sexton - for noticing this. - - * ace/config-WinCE.h: Added ACE_LACKS_BSEARCH. - - * ace/OS.h: Added /**/ between #include and in - pSOS section to prevent a MSVC warning. - - * ace/OS.i (bsearch): If the function is not supported by the - platform, return NULL instead of -1 so it behaves compatibly - with most common implementation. - -Mon Sep 14 09:37:09 1998 Douglas C. Schmidt - - * ace/Synch_T.h: Fixed a deadlock condition caused by acquiring - the internal lock in multiple places during the same call. - Thanks to Jorn Jensen for reporting this. - -Mon Sep 14 01:59:51 1998 Nanbor Wang - - * ace/Strategies_T.{h,i,cpp}: Added two new classes - ACE_Thread_Pool_Strategy and ACE_Svc_Handler_Pool_Strategy for - activating and creating Svc_Handler. They should be used with - the new TP_Reactor. More to come... - -Sun Sep 13 22:31:23 1998 Douglas C. Schmidt - - * ACE version 4.5.38 released. - -Sun Sep 13 18:36:11 EDT 1998 James CE Johnson - - * docs/tutorials/006/notify.cpp - No longer applicable. This used spawn() to create the - thread but the new version uses an ACE_Task<> derivative. - - * docs/tutorials/006/Makefile - Removed dependency info. - - * docs/tutorials/007/thread_pool.cpp - Removed THR_DETACHED from activate() call. I need a - better understanding of when to include this flag... - - * docs/tutorials/index.html - Setting up new Message_Queue entry points. - - * docs/tutorials/010/Makefile - docs/tutorials/010/block.h - docs/tutorials/010/message_queue.cpp - docs/tutorials/010/page01.html - docs/tutorials/010/page02.html - docs/tutorials/010/page03.html - docs/tutorials/010/page04.html - docs/tutorials/010/page05.html - docs/tutorials/010/page06.html - docs/tutorials/010/page07.html - docs/tutorials/010/task.cpp - docs/tutorials/010/task.h - - A tutorial showing a simple use of the ACE_Message_Queue. - - * docs/tutorials/011/Makefile - docs/tutorials/011/block.h - docs/tutorials/011/data.h - docs/tutorials/011/message_queue.cpp - docs/tutorials/011/page01.html - docs/tutorials/011/page02.html - docs/tutorials/011/page03.html - docs/tutorials/011/page04.html - docs/tutorials/011/page05.html - docs/tutorials/011/page06.html - docs/tutorials/011/task.cpp - docs/tutorials/011/task.h - - Extension of 010 adds queue-ing of non-trivial data. - - -Sun Sep 13 16:29:27 1998 Carlos O'Ryan - - * ace/Select_Reactor_T.h: - Use the ACE_UNIMPLETED_FUNC to make the code work on older - versions of IRIX - -Sat Sep 12 22:39:47 1998 Douglas C. Schmidt - - * ace/ACE.i: There was a bug with strecpy() -- it should return a - pointer to 1 byte PAST the '\0'... - -Sat Sep 12 21:43:07 1998 Nanbor Wang - - * ace/Timer_Hash.cpp: Removed the #pragma template instantiation - for ACE_Timer_Node_T because it is already - instantiated in Timer_Queue.cpp. Thanks to Sergio for noticing - this. - -Sat Sep 12 16:30:39 1998 Douglas C. Schmidt - - * ace/Dirent.cpp: Renamed the methods to be more "abstract" by - removing the "dir" suffixes. - - * ACE-INSTALL.html: Fixed a broken link. Thanks to Tom Shields - for reporting this. - - * ace/OS.h (ACE_OS): Added wrappers for the passwd iterator. - - * ace/OS.h (ACE_OS): Added wrappers for qsort() and bsearch(). - - * ace/README: Reformatted this file and also changed - ACE_REQUIRES_FUNC_DEFINITIONS - ACE_NEEDS_READV - ACE_NEEDS_SCHED_H - ACE_NEEDS_SYSTIME_H - ACE_NEEDS_WRITEV - - to - - ACE_NEEDS_FUNC_DEFINITIONS - ACE_LACKS_READV - ACE_LACKS_SCHED_H - ACE_LACKS_SYSTIME_H - ACE_LACKS_WRITEV - - respectively. - -Sat Sep 12 19:18:18 1998 Nanbor Wang - - * ace/OS.i (qsort): Fixed a typo. And removed "return" for this - is a void function. - -Sat Sep 12 13:13:39 EDT 1998 James CE Johnson - - docs/tutorials/003/Makefile - Removed dependency stuff since installations may vary - - docs/tutorials/003/client.cpp - docs/tutorials/003/page01.html - docs/tutorials/004/Makefile - docs/tutorials/004/client.cpp - docs/tutorials/004/page01.html - - Converted to new style with embedded comments instead of - line-numbered comments. - -Fri Sep 11 22:46:54 EDT 1998 James CE Johnson - - docs/tutorials/001/Source.tgz - docs/tutorials/001/acceptor.h - docs/tutorials/001/logger.h - docs/tutorials/001/page02.html - docs/tutorials/001/page03.html - docs/tutorials/001/page04.html - docs/tutorials/001/page05.html - docs/tutorials/001/server.cpp - docs/tutorials/002/Makefile - docs/tutorials/002/handler.h - docs/tutorials/002/page01.html - docs/tutorials/002/page02.html - docs/tutorials/002/page03.html - docs/tutorials/002/page04.html - docs/tutorials/002/server.cpp - - Updated to "new style". Corrected issues with Reactor - based on recent mailing list discussions. - -Fri Sep 11 12:30:37 1998 Nagarajan Surendran - - * ace/config-chorus.h: Uncommented ACE_LACKS_SYSV_SHMEM as ace - didn't compile on Chorus with that commented out. - -Fri Sep 11 09:02:00 CDT 1998 Chris Gill - - * ace/OS.{h,i} - ace/Containers.{cpp,h} - ace/config-psos-diab.h - include/makeinclude/platform_psos_diab.GNU: - Fixes to compile pSOS - added #if ! defined around new templates - as template parameters stuff in Config.* (Diab compiler can't - grok these), played with library linkage order platform macros. - -Fri Sep 11 08:54:41 EDT 1998 James CE Johnson - - * docs/tutorials/001/logger.h - Logging_Handler::open() should return 0 on success. - - * docs/tutorials/002/server.cpp - docs/tutorials/002/page02.html - Provide 'g_reactor' to the acceptor's open(). If you - don't do this, the app will core dump on ^C - - Thanks to Krishna Padmasola for - helping me see these. - -Thu Sep 10 16:53:21 1998 Carlos O'Ryan - - * tests/Upgradable_RW_Test.cpp: - Some templates were instantiated twice if threads were enabled. - -Thu Sep 10 13:41:53 1998 David L. Levine - - * config-sunos4-sun3.x.h,config-tandem.h,README: removed - ACE_HAS_SYSV_SPRINTF because it's no longer used. Thanks - to Ossama for reporting this. - -Thu Sep 10 10:18:29 1998 Nanbor Wang - - * examples/IPC_SAP/SOCK_SAP/CPP-inserver.cpp (run_event_loop): - Changed to use ACE_Handle_Set instead of FD_SET. It is more - portable this way. Thanks to Andre Folkers - for noticing this. - -Wed Sep 09 16:29:36 1998 David L. Levine - - * BUG-REPORT-FORM,Makefile: added BUG-REPORT-FORM. Thanks - to Susan Liebeskind for the form. - -Wed Sep 9 13:22:11 1998 James Hu - - * ace/Containers.h: - * ace/Containers.cpp: Added a new container class ACE_DLList. - -Tue Sep 8 23:17:11 1998 Nanbor Wang - - * tests/Thread_Mutex_Test.cpp (test): - * tests/Priority_Buffer_Test.cpp (consumer): Changed the - do-nothing if statements to ACE_UNUSED_ARG because NT doesn't - like that. Thanks to David for clarifying this. - -Tue Sep 8 21:45:32 1998 Nanbor Wang - - * *.{dsp,dsw}: Updated for VC 6. - -Tue Sep 8 21:31:32 1998 Carlos O'Ryan - - * ace/config-irix6.x-sgic++-nothreads.h: - Added ACE_HAS_DIRENT and support for the envinfo tool. - -Tue Sep 08 18:54:28 1998 Steve Huston - - * ace/OS.h: Removed definitions of PTHREAD_DETACHED, PTHREAD_FLOAT, - PTHREAD_INHERIT_SCHED from the ACE_HAS_PTHREADS_DRAFT6 section of - mapping draft 6 names into the pthreads standard names. The first - two aren't used anywhere and the third is already defined on the - known draft 6 platforms. Thanks to Chuck Gehr and Arturo Montes for - helping to straighten this out. - -Tue Sep 8 15:10:42 1998 Carlos O'Ryan - - * tests/Makefile: - Updated dependencies. - -Tue Sep 8 13:16:37 1998 Douglas C. Schmidt - - * ace/config-sco-5.0.0.h: Added ACE_HAS_GPERF at the bequest - of Arturo. - -Tue Sep 08 10:25:48 1998 Nanbor Wang - - * ace_{dll,lib}.dsp: Changed the process type to "Blend*" which - make the project to work on any type of intel processors. - However, this disable the bug-fix to get around the infamous - Pentium floating point problem. - - * netsvcs/lib/netsvcs.dsp: - * netsvcs/servers/servers.dsp: Perform VC 6 modification. - -Tue Sep 08 07:28:05 1998 David L. Levine - - * ace/OS.i (readdir_r): don't use the POSIX.1c ::readdir_r on - suns without _POSIX_PTHREAD_SEMANTICS. - - * include/makeinclude/wrapper_macros.GNU: added - ACE_HAS_GNUG_PRE_2_8 macro. Use it for determining - exceptions-related flags with g++. It can also be used to - suppress builds with old (pre-2.8) versions of g++; see - TAO/tests/POA/TIE/Makefile for an example. - - * apps/Gateway/Gateway/File_Parser.cpp (getint): - egcs 1.1b can't handle the FP_RETURN_TYPE typedef. So, - use FP::Return_Type with __GNUG__. - - * ace/config-chorus.h: added ACE_HAS_DIRENT and - ACE_LACKS_READDIR_R. - - * ace/config-lynxos.h: don't use ACE_HAS_STRING_CLASS with - LynxOS >= 3.0.0. It requires that libg++ be linked in - to the IOStream tests. - - * docs/ACE-guidelines.html: notify via email if a particular - individual's attention is needed to address a comment in the code. - - * ace/Basic_Types.h: corrected comment: the dump method - is named output, because it takes an argument. - -Mon Sep 7 22:12:02 1998 Nanbor Wang - - * ace/config-freebsd.h: Added ACE_HAS_SIGINFO_T, - ACE_LACKS_SIGINFO_H, ACE_LACKS_UCONTEXT_H, ACE_LACKS_SI_ADDR and - ACE_HAS_DIRENT. - - * ace/config-freebsd-pthread.h: - * ace/config-linux-common.h: Added ACE_HAS_DIRENT. - -Mon Sep 7 12:39:10 EDT 1998 James CE Johnson - - docs/tutorials/008/page01.html - docs/tutorials/008/page02.html - docs/tutorials/008/page03.html - docs/tutorials/008/page04.html - docs/tutorials/008/page05.html - docs/tutorials/009/Makefile - docs/tutorials/009/broadcast_client.cpp - docs/tutorials/009/directed_client.cpp - docs/tutorials/009/page01.html - docs/tutorials/009/page02.html - docs/tutorials/009/page03.html - docs/tutorials/009/page04.html - docs/tutorials/009/page05.html - docs/tutorials/009/server.cpp - - Cleanup on Tutorial 008 and creation of Tutorial 009 which expands - 008 by making the server more selective in who it responds to. - -Mon Sep 7 10:06:54 1998 Douglas C. Schmidt - - * ace/ACE.h (ACE): Moved strnew (wchar_t *) into an ACE_WIN32 - section to protect it properly. Thanks to David Levine for - reporting this. - - * ace:config-sco-*.h: Added ACE_HAS_DIRENT on the advice of Arturo - Montes . - -Mon Sep 07 09:52:12 1998 David L. Levine - - * docs/ACE-guidelines.html: added general rule to put system - call wrappers in ACE_OS, extensions in ACE. - - * ace/config-osf1-4.0.h: added ACE_HAS_DIRENT and - _POSIX_PTHREAD_SEMANTICS. The latter was necessary - to tell ACE_OS::readdir_r () to use the three-arg - ::readdir_r (). - - * ace/config-lynxos.h: added ACE_HAS_DIRENT. - - * ace/Log_Msg.cpp (log): initialized local "c" to '\0' so that - egcs 1.1b won't complain that it might be used without - initialization. - - * ace/OS.i,ace/config-osf1-4.0.h (readdir_r): use - ACE_HAS_PTHREADS_STD instead of _POSIX_PTHREAD_SEMANTICS to - select the three-arg ::readdir_r (). - - * ace/config-vxworks.h: added ACE_HAS_DIRENT. - - * ace/OS.i,config-vxworks5.x.h (readdir_r,rewinddir,seekdir,telldir), - README: - added support for ACE_LACKS_READDIR_R, ACE_LACKS_SEEKDIR, and - ACE_LACKS_TELLDIR. - - * ace/OS.i (opendir): added const_cast to remove constness - from the argument, because VxWorks' header doesn't declare - it const. This shouldn't cause a problem on other platforms. - -Mon Sep 7 01:02:58 1998 Darrell Brunsch - - * ace/ACE.i: Changed ACE_INLINE to ASYS_INLINE. - - * ace/OS.h: Added a no-op type define for DIR and struct - dirent so compilation can continue on NT. - - * ace/ace_dll.dsp: - * ace/ace_lib.dsp: - Added new dirent.* files and removed Array.{cpp,i} files. - -Sun Sep 6 15:49:46 1998 Douglas C. Schmidt - - * ace/ACE: Added several new helper string functions, which were - mined from the drwho program. - - * ace/OS: Moved strnew() into class ACE, which is where it - belongs... - - * ace/Containers: Merged the ACE_Array class entirely into the - Containers files, which is more consistent with the general - design of ACE. Also, removed ace/Array.i and Array.cpp since - they are no longer needed. We'll keep Array.h around for a - while for backwards compatibility, but it just #includes - "ace/Containers.h" now... - - * ace/config-sunos5*.h: Added ACE_HAS_DIRENT. We'll need help - figuring this out on the other platforms... - - * ace/OS: Began adding "Dirent" support to ACE_OS. This will - provide the UNIX/POSIX directory iterator routines when the - ACE_HAS_DIRENT macro is enabled. - - * ace/OS: Added fputs() to ACE_OS. I'm not sure why this was - missing... - - * ace/Makefile (FILES): Moved Priority_Reactor to earlier in - the Makefile to maintain alphabetical order. - -Sun Sep 6 14:06:43 1998 Douglas C. Schmidt - - * ace/OS.h: Moved the ACE_NEW_THROW macros that Matt Braun wrote - into ACE so that we can use these in all applications. - -Sun Sep 06 12:28:40 1998 Fred Kuhns - - * Added a simple reactor/acceptor figure to the first tutorial - docs/tutorial/001/simple.* - -Sun Sep 06 08:34:57 1998 David L. Levine - - * ace/config-g++-common.h,ace/README,tests/Conn_Test.cpp: - renamed ACE_HAS_OLD_GNUG to ACE_HAS_GNUG_PRE_2_8. - -Sat Sep 5 15:31:33 1998 Douglas C. Schmidt - - * ace: Removed ACE_HAS_IRIX_GETTIMEOFDAY and all of its uses - throughout ACE. It was no longer necessary. Thanks to Ossama - for reporting this. - - * ace/Synch.h: Added a "no-op" ACE_Barrier for cases where we - don't have ACE_HAS_THREADS enabled. - -Sat Sep 5 15:25:33 EDT 1998 James CE Johnson - - docs/tutorials/index.html - docs/tutorials/008/Makefile - docs/tutorials/008/server.cpp - docs/tutorials/008/broadcast_client.cpp - docs/tutorials/008/directed_client.cpp - docs/tutorials/008/page01.html - docs/tutorials/008/page02.html - docs/tutorials/008/page03.html - docs/tutorials/008/page04.html - docs/tutorials/008/page05.html - docs/tutorials/008/CVS/Root - docs/tutorials/008/CVS/Repository - docs/tutorials/008/CVS/Entries - docs/tutorials/009/Makefile - docs/tutorials/009/broadcast_client.cpp - docs/tutorials/009/directed_client.cpp - docs/tutorials/009/server.cpp - docs/tutorials/009/CVS/Root - docs/tutorials/009/CVS/Repository - docs/tutorials/009/CVS/Entries - - Began the next set of tutorials on the topic of Datagrams. - Thanks to Jeff Hellzen for this suggestion. - -Fri Sep 4 18:56:36 1998 Carlos O'Ryan - - * ace/Name_Proxy.cpp: - Fixed spurious double assignment (int foo = foo = bar;), thanks - to thanks to John Mulhern <9107@mn3.lawson.lawson.com> for - reporting this. - -Fri Sep 04 18:54:32 1998 Irfan Pyarali - - * ace/Select_Reactor_T.cpp (ACE_Select_Reactor_T): Made sure that - all references to Select_Reactor have the template argument in - them. Thanks to Chuck Gehr for - sending the patches. - -Fri Sep 4 18:29:29 1998 Alexander Babu Arulanthu - - * examples/Reactor/Proactor/test_proactor.cpp: Changed to use - "test_proactor.cpp" as input file. - -Fri Sep 4 17:51:17 1998 Alexander Babu Arulanthu - - * ace/Proactor.cpp: - * ace/Asynch_Acceptor.cpp: - * ace/Asynch_Acceptor.h: - * ace/Asynch_IO.cpp: - * examples/Reactor/Proactor/test_proactor.cpp: - First round of changes for ACE_Asynch_Accept. Makes use of - separate thread for each accept call, each thread blocking on the - ACE_OS::accept. Thanks to Irfan, a better implementation using - TP_Reactor is currently being done. - -Fri Sep 4 16:45:36 1998 Douglas C. Schmidt - - * ace: Removed all traces of ACE_HAS_MT_SAFE_SOCKETS -- this was a - vestige from Solaris 2.2! Thanks to Ossama Othman - for suggesting this. - - * ace/Service_Config: Changed the default value of - ACE_Service_Config::debug_ from 1 to 0. Thus, debugging is - DISABLED by default. If you want to enable debugging, pass the - -d option to the constructor of ACE_Service_Config. - - * ace/Naming_Context.cpp, - ace/Service_Config.cpp, - ace/Service_Types.cpp, - ace/Service_Repository.cpp: Now we only print out service config - information if we're ACE::debug() is non-0. This is more - consistent with other parts of ACE. Thanks to XuYifeng - for reporting this. - - * ace/Service_Config: Moved the debug() stuff from here and put it - into class ACE so that it will be more globally visible. - -Fri Sep 04 15:24:44 1998 Nanbor Wang - - * ace/ACE.i: Here, we should use ASYS_INLINE which is always - defined as inline on most platforms. - - * ace/Log_Msg.h (ACE_Log_Msg): Added a new ACE_DEBUG format - character 'A' which prints out an ACE_timer_t value. This is - most useful when you want to print out the timers in - ACE_Profile_Timer::ACE_Elapse_Time. Thanks to Naga for - providing the brilliant idea. - - * tests/XtReactor_Test.cpp (main): Removed '.cpp' from - ACE_START_TEST title string. Thanks to Ossama for reporting - this. - - * Makefile (CONTROLLED_FILES): Removed some documents from the - list because they are in docs/ now. - - * tests/run_tests.bat: Removed trailing '.cpp' from - Message_Queue_Notifications_Test. Thanks to Jack Erickson - for reporting this. - - * ace/OS.i (signal): Added check for ACE_WIN32 to defeat the - effect of !defined (ACE_LACKS_UNIX_SIGNALS). Although Win32 - does has ACE_LACKS_UNIX_SIGNALS defined, it also has limited - support for signals. Thanks to XuYifeng - for reporting this. - -Fri Sep 04 07:26:57 1998 David L. Levine - - * include/makeinclude/rules.bin.GNU,wrapper_macros.GNU: - moved VBIN definition from rules.bin.GNU to wrapper_macros.GNU. - With this change, individual Makefiles need not define VBIN. - - * tests/run_tests.sh: removed -f so that temp file removal - works properly. Don't printout ipcs output unless it - changes, for resources owned by the user. - -Fri Sep 04 01:01:58 1998 Irfan Pyarali - - * ace/Timeprobe.h: Disable warning of using Microsoft Extensions. - -Fri Sep 04 02:12:03 1998 Douglas C. Schmidt - - * ACE version 4.5.37 released. - -Fri Sep 4 00:07:18 1998 Douglas C. Schmidt - - * examples/IPC_SAP/SOCK_SAP/CPP-inserver-fancy.cpp (open): Added - template instantiations to make GCC happy. Thanks to David - Levine for reporting this. - -Thu Sep 03 19:15:52 1998 Fred Kuhns - - * docs/tutorial/006/client_acceptor.cpp: added - typedef ACE_Svc_Handler inherited; - -Thu Sep 03 17:03:46 1998 Irfan Pyarali - - * ace/Dynamic.cpp (instance): Removed the typedef in the header - file because some compiler was having problems with it. Thanks - to baksoo@dbserver.kaist.ac.kr for reporting this. - -Thu Sep 03 16:43:34 1998 David L. Levine - - * ace/OS.cpp (thr_create): play the zero thread priority game - on Solaris if defined (sun), not if defined (ACE_HAS_STHREADS). - This allows POSIX threads to be created with a thread priority - of 0 if _POSIX_C_SOURCE=199506L and _POSIX_PTHREAD_SEMANTICS - are defined. Thanks to Russ Noseworthy - for reporting this problem. - - * examples/Threads/tss2.cpp: added explicit ACE_Guard - instantiation. - - * tests/Dynamic_Priority_Test.cpp (main): changed "not supported" - to "not available" in printout that indicates that the - test will be run in time-sharing class, instead of - a real-time class. The test can still run in time-sharing - class. Thanks to Ossama for reporting this. - -Thu Sep 03 16:14:16 1998 Nanbor Wang - - * ace/Synch.i (ACE_Process_Mutex::remove): Reset this->lock_ to 0 - after removing the lock so we can avoid destroying the same - kernel object twice. Thanks to Detlef Becker - for reporting this. - -Thu Sep 03 15:43:22 1998 Irfan Pyarali - - * tests/Upgradable_RW_Test.cpp: Fixed this file so that it works - with egcs. - -Thu Sep 3 14:51:06 1998 Douglas C. Schmidt - - * docs: Moved ACE-{tutorials,guidelines,subsets,porting}.html - into the docs directory from the etc directory. This is - a more "fitting" location... - -Thu Sep 3 13:23:39 1998 Nanbor Wang - - * Makefile (CONTROLLED_FILES): Added docs/ into CONTROLLED_FILES. - -Thu Sep 03 09:24:20 1998 David L. Levine - - * ace/Message_Block.cpp: added ACE_Guard instantiation. - - * ace/SPIPE_Stream.i (recv_handle): replaced "recvfd = recvfd" with - ACE_UNUSED_ARG (recvfd) to avoid egcs 1.1 warning about a - statement with no effect. - -Thu Sep 03 00:26:23 1998 Nanbor Wang - - * ace/Time_Request_Reply.cpp (ACE_Time_Request): The second - parameter should be of type ACE_UINT32. - -Wed Sep 2 22:52:32 1998 Douglas C. Schmidt - - * netsvcs/lib/Name_Handler.cpp, - * ace/Time_Request_Reply.cpp: Fixed up yet another - minor mismatch caused by the ACE_SUCCESS/ACE_FAILURE fixes... - Thanks to David Levine for tracking these down. - -Wed Sep 02 20:55:18 1998 Douglas C. Schmidt - - * ACE version 4.5.36 released. - -Wed Sep 2 19:21:25 1998 Douglas C. Schmidt - - * ace/Name_Request_Reply.cpp: Continued to cleanup the residue of - the ACE_SUCCESS and ACE_FAILURE changes. Thanks to David Levine - for reporting this. - -Wed Sep 02 19:08:29 1998 David L. Levine - - * ace/Template_Instatiations.cpp: commented text following - an #endif. - -Wed Sep 02 16:46:45 1998 Douglas C. Schmidt - - * ACE version 4.5.35 released. BTW, these releases were aborted - due to CVS hiccups. We've got to figure out a better way to - roll this stuff back... - -Wed Sep 02 16:33:25 1998 Douglas C. Schmidt - - * ACE version 4.5.34 released. - -Wed Sep 02 16:31:22 1998 Nanbor Wang - - * ace/OS.h: Make sure ACE_NO_INLINE is not defined before defining - it to avoid double defining the macro. Thanks to Ossama Othman - for suggesting this. - -Wed Sep 2 11:10:08 1998 Douglas C. Schmidt - - * ace/Task.cpp (activate): Remmber to decrement the thr_count_ if - spawn_n() fails. Thanks to Russ Noseworthy - for reporting this fix. - - * examples/IPC_SAP/SOCK_SAP/CPP-inclient.cpp: Fixed another - void * -> char * problem. Now this stuff all seems to build - fine. - -Wed Sep 02 10:07:15 1998 David L. Levine - - * ace/Name_Request_Reply.{h,cpp}: reverted ACE_SUCCESS to SUCCESS - because other ACE code depended on it. - - * ace/Object_Manager.cpp (~ACE_Object_Manager_Base): moved - internal_lock_ deletion inside ACE_MT_SAFE protection. Thanks - to Dongwook Kim for reporting this. - - * include/makeinclude/platform_sunos5_sunc++.GNU: updated comments - to recommend not using Sun C++ 4.1. - -Wed Sep 02 09:34:32 1998 Oliver M. Kellogg - - * ace/OS.i (sigwait): use __sigwaitd10 with g++ on DU 4.0. - -Tue Sep 1 20:44:15 PDT 1998 James C. Hu - - * ace/Filecache.cpp: - * ace/UPIPE_Stream.cpp: I guess nobody uses GCC anymore. Fixed - some template instantiation problems in Filecache.cpp and - UPIPE_Stream.cpp. I guess, eventually all of this will be moved - into the Template_Instantiations.cpp file, but until then... - -Tue Sep 01 20:59:11 1998 David L. Levine - - * ace/OS.i (ts_object): commented test appearing after the #endif. - - * ace/OS.i (rw_trywrlock_upgrade): expanded/added comment to - clarify the with/without ACE_LACKS_RWLOCK_T distinction. - - * ace/OS.i (sigwait): fixed indentation. - - * ace/ACE.cpp (get_ip_interfaces): removed trailing } after comment - following #endif. - - * etc/ACE-guidelines.html: added section on scripts. Added rule - to prefix constants and enum values with ACE_ or TAO_. - -Tue Sep 1 19:05:05 1998 Douglas C. Schmidt - - * tests/XtReactor_Test.cpp: Added a new version that should work - on Linux. Thanks to Eric Newton for this fix. - -Tue Sep 1 19:40:03 1998 Carlos O'Ryan - - * tests/XtReactor_Test.cpp: - If ACE_LACKS_MOTIF is defined the test can use Athena - Widgets. Thanks to Eric C. Newton for - contributing this example. - -Tue Sep 1 19:05:05 1998 Douglas C. Schmidt - - * examples/Shared_Malloc/test_malloc.cpp (spawn): Fixed a minor - problem with conversions from const char * literals to char *'s. - Thanks to John Mulhern for reporting this problem. - - * examples/IPC_SAP/SOCK_SAP/CPP-in{server,client}.cpp: Fixed all - uses of void *request with char *request to stop ANSI C++ - compilers from complaining. Thanks to John Mulhern for - reporting this problem. - -Tue Sep 01 16:22:06 1998 Irfan Pyarali - - * ace/Filecache.cpp (init and ~ACE_Filecache_Object): Changed - SUCCESS to ACE_SUCCESS. - -Tue Sep 1 13:54:10 PDT 1998 James C. Hu - - * ace/Message_Block.h: - * ace/Message_Block.i: Added a space () method that reports - the amount of space remaining in the message block. - -Tue Sep 1 3:50:39 US/Central 1998 James CE Johnson - - * etc/tutorials/006/client_handler.cpp - etc/tutorials/006/client_handler.h - etc/tutorials/006/page04.html - etc/tutorials/006/page05.html - - Added a close() method to Client_Handler so that it will be closed - properly when the svc() method exits. - - * etc/tutorials/007/client_handler.cpp - etc/tutorials/007/client_handler.h - etc/tutorials/007/page05.html - etc/tutorials/007/page06.html - etc/tutorials/007/page09.html - - Added Client_Handler::close() that will be called when - Client_Handler::svc() exits in the thread-per-connection model. - Thread_Pool::svc() now calls the handler's handle_close() method - to properly shut down the handler if handle_input() fails. - -Tue Sep 01 12:58:02 1998 Chris Gill - - * ace/ACE.cpp - ace/Basic_Types.cp - ace/Containers.{cpp, h} - ace/Filecache.{cpp, h} - ace/Hash_Map_Manager.{cpp, h} - ace/INET_Addr.cpp - ace/Local_Tokens.cpp - ace/Log_Record.cpp - ace/Map_Manager.{cpp, h} - ace/Message_Block.cpp - ace/Name_Request_Reply.{cpp, h} - ace/OS.{cpp, h, i} - ace/Object_Manager.h - ace/Process.cpp - ace/Remote_Name_Space.cpp - ace/SOCK_Dgram_Mcast.{cpp, h} - ace/Service_Types.cpp - ace/Signal.cpp - ace/Synch_T.{cpp, h, i} - ace/Time_Hash.cpp - ace/Token_Request_Reply.h - ace/UPIPE_Stream.cpp - ace/config-psos-diab.h - ace/config-psos-tm.h: - - pSOS port of ACE for the Diab 4.2 and Trimedia cross compilers. - Thanks to Jin Lu of Philips Research for completing the ACE pSOS - port on the Trimedia cross compiler and contributing the changes - back to the ACE distribution. - -Tue Sep 1 10:43:24 1998 Douglas C. Schmidt - - * ace/config-linux-common.h, - ace/config-sco-5.0.0-mit-pthread.h, - ace/config-sco-5.0.0.h, - ace/README: - ACE_HAS_LONG_FDMASK macro has been changed to - ACE_HAS_BIG_FD_SET. Therefore, I updated these files. Thanks - to Ossama Othman for reporting - this. - -Tue Sep 01 10:21:49 1998 David L. Levine - - * tests/TSS_Test.cpp (cleanup, worker): with ACE_HAS_PTHREADS_DRAFT4, - delete the tss instances in cleanup instead of worker. This gets - rid of the memory leaks on those platforms. - - * include/makeinclude/platform_osf1_4.0.GNU: added - -hidden [...] -non_hidden magic. See comments in the file; - this solves a problem with mutiply defined symbols between - shared libraries and DEC's libcxxstd.a. It only affected - tests/IO_Stream_Test. - -Tue Sep 01 10:03:55 1998 Douglas C. Schmidt - - * ACE version 4.5.33 released. - -Tue Sep 01 03:46:21 1998 Steve Huston - - * ace/Asynch_Acceptor.{h cpp}: Enable the contents for platforms - with ACE_HAS_AIO_CALLS, not just ACE_WIN32. Thanks to John - Mulhern for these fixes. - - * examples/Reactor/Proactor/Makefile: Removed include of - platform_macros.GNU. Thanks to John Mulhern for this one too. - -Mon Aug 31 16:38:03 1998 Douglas C. Schmidt - - * ace/config-kcc-common.h: Added ACE_HAS_CPLUSPLUS_HEADERS to - prevent warnings/errors. Thanks to Ben Eng and - Todd Pack for reporting this. - - * Added a bunch of patches so that ACE compiles and passes its - tests on Chorus with gcc. Thanks to Alberto Villarica" - for reporting this. - -Mon Aug 31 14:02:34 1998 Darrell Brunsch - - * ace/ace.dsw: - * ace/ace_dll.dsp: - * ace/ace_lib.dsp: - Updated to MSVC 6, which consisted of changing the - version number insde to 6.00. This change gets it - to work in both 5 and 6, without any trouble. - -Mon Aug 31 12:25:15 1998 David L. Levine - - * ace/Object_Manager.*: reorganized to provide the - ACE_Object_Manager_Base class. This class contains - the data structures used to support Singleton - registration for destruction. - - * ace/ACE.{h,cpp}: added init () and fini (). These - currently just call the ACE_Object_Manager's init () - and fini (). The might be useful for applications - that use ACE_HAS_NONSTATIC_OBJECT_MANAGER and - ACE_DOESNT_INSTANTIATE_NONSTATIC_OBJECT_MANAGER, and - therefore need to explicitly initialize and finalize - the ACE_Object_Manager singleton. - - * tests/Semaphore_Test.cpp (test_timeout): a timed - semaphore acquire fails on ACE_HAS_PTHREADS_DRAFT4 - with EINTR instead of ETIME if it times out. That's - the way it's documented, as well as the way it behaves on LynxOS. - - * tests/TSS_Test.cpp (cleanup): with DRAFT4 threads, - don't do anything in the cleanup function. - The intended use of this function doesn't apply. - With Draft 4 threads, this function is called implicitly - by pthread_setspecific whenever an old value is replaced. - This function is intended to be used with Draft 6 and later - threads, where it is called on thread termination with the - thread-specific value. - - * tests/test_config.cpp: set ACE_MAX_PROCESSES to 4 on LynxOS, - so that Process_Mutex_Test will succeed. - -Sun Aug 30 23:05:34 1998 Nanbor Wang - - * ace/Select_Reactor_T.cpp: Should include ace/Thread.h also. - Thanks to J. Russell Noseworthy - for reporting this. - - * ace/Select_Reactor.cpp: Added explicit template instantiation - for ACE_Lock_Adapter>. - Thanks to Eric C. Newton for reporting this. - -Sun Aug 30 07:44:54 1998 David L. Levine - - * ace/config-sunos5.5.h,ace/README, - include/makeinclude/platform_sunos5_sunc++.GNU: - use ACE_LACKS_RTTI instead of ACE_HAS_RTTI without rtti, - with Sun CC on SunOS 5.5. That removes all use of ACE_HAS_RTTI - from ACE. - - * netsvcs/lib/Name_Handler.h: added #include of ace/Singleton.h. - - * tests/run_tests.vxworks: commented out Dynamic_Priority_Test. - It now causes VxWorks to go to never-never land. - - * ace/config-g++-common.h,ace/README,tests/Conn_Test.cpp: - added ACE_HAS_OLD_GNUG. Thanks to Doug for this suggestion. - - * ace/Token.cpp (ACE_Token_Queue_Entry ctor): added - ACE_UNUSED_ARG (m) ifdef ACE_TOKEN_USES_SEMAPHORE. - -Sun Aug 30 00:14:29 1998 Irfan Pyarali - - * ace/Service_Object.cpp (fini): Make sure to check the - flag before proceeding. Also - ~ACE_Service_Type() now calls this->fini(). - - * ace/Svc_Handler: - * ace/Dynamic: - - Patrick J. McNerthney described this problem: - ________________________________________ - - ACE_Svc_Handler creates an - ACE_TSS_Singleton singleton - object to determine if the ACE_Svc_Handler is a dynamically - created object or not. ACE_TSS_Singleton declares the internal - single instance of the ACE_Dynamic object as a - ACE_TSS data type. - - The first time this object is "referenced", - ACE_TSS::ts_init() is called, which in turn calls - ACE_Thread::keycreate and registers - ACE_TSS::cleanup with it. Since ACE_TSS is a - template class, the vtable and the code of this object resides - in the dynamically loaded service DLL. - - During termination, the Object Manager closes down the Service - Configurator, causing all services to be shutdown, and their - DLLs are unloaded. - - The Object Manager then calls ACE_OS::cleanup_tss which attempts - to call the above registered ACE_TSS::cleanup - method. Since the DLL has already been unloaded, the - application faults trying to access the vtable. - ________________________________________ - - My earlier solution addressed this problem but only in - ~Object_Manager(), i.e., at the end of the application, by - carefully ordering the cleanup of singletons, tss, and the - unlinking of libraries. To solve this more generically and to - address this problem when DLLs are unlinked arbitrarily (and not - only at the end of applications), I moved the typedef of - ACE_TSS_Singleton from Svc_Handler.h to - Dynamic.h. Then the access to this singleton was changed from - DYNAMIC::instance() to ACE_Dynamic::instance(). - - This will force the generation of the code for this class to be - in the ACE library rather than in a user's DLL. Hence when TSS - cleanup hooks and Object Manager are trying to clean this object - up from ~Object_Manager, it won't crash as the code for this - class is in ACE and not in the unlinked DLL. - - This issue raised a couple of interesting observations about - ACE_Singleton and ACE_TSS_Singleton and DLLs: - - It is ok to use ACE_Singleton and ACE_TSS_Singleton in DLLs that - are going to be unlinked at the end of the program. For DLLs - that may get unlinked *before* the end of the program, they must - not use ACE_Singleton or ACE_TSS_Singleton. ACE_Singleton - registers with the Object_Manager for deletion and therefore is - accessed at the end of the application. ACE_TSS_Singleton is - very similar to ACE_Singleton. Moreover, it uses tss cleanup - hooks to clean up the thread specific storage. Therefore, if - the DLL lives shorter than the thread and/or the application, it - must *not* use ACE_Singleton and ACE_TSS_Singleton. - - This motivates the need for ACE_DLL_Singleton. As usual, - contributions to ACE are always welcome ;-) Many, many thanks to - Patrick J. McNerthney for all his help! - -Sat Aug 29 19:22:22 1998 Douglas C. Schmidt - - * examples/Service_Configurator/Misc/main.cpp (main): Fixed a stray - l_argv[3] = 0; I'm not sure why this was here... - -Sat Aug 29 17:31:06 1998 Douglas C. Schmidt - - * examples/IPC_SAP/SOCK_SAP/CPP-in{client,server,server-fancy}.cpp: - Updated these tests to be more robust and better designed. - - * examples/IPC_SAP/SOCK_SAP/Makefile: Added the - CPP-inserver-fancy.cpp file. I'm not sure why I'd omitted it - for so long... - - * examples/IPC_SAP/SOCK_SAP/CPP-in{client,server}.cpp: Cleaned up - the code a bit to avoid warnings. Thanks to David Levine for - reporting these. - -Sat Aug 29 14:11:25 1998 David L. Levine - - * etc/ACE-guidelines.html: added rule to not for a pointer - being 0 before deleting it. It's always safe to delete a - 0 pointer. Thanks to James CE Johnson for - pointing this out. - -Fri Aug 28 23:29:51 1998 Douglas C. Schmidt - - * examples/IPC_SAP/SOCK_SAP/CPP-in{client,server}.cpp: Enhanced - the client and server test so that it'll be a good benchmark for - the "best case" to compare TAO against. - -Fri Aug 28 21:53:13 1998 Steve Huston - - * ace/OS.h: Conditionalize setting of ACE_INFINITE on non-Win32 - to allow the platform config to define a value. - - * ace/config-hpux11.h: Define ACE_INFINITE as 10000000. This value - was empirically determined by John Mulhern. Until we know why - this had to be done, you may need to set a different value in - your own config.h file. - -Fri Aug 28 13:14:34 1998 Nanbor Wang - - * examples/Service_Configurator/Misc/main.cpp: Made the file CE - friendly. Added "-y" to service configurator so we can still - test static services. - -Fri Aug 28 13:45:28 1998 David L. Levine - - * include/makeinclude/platform_lynxos.GNU: added HOST_OS - support for PowerPC target. It has a slightly different - name (sunos-xcoff-ppc) than for x86 target (sunos-coff-x86). - - * ace/config-lynxos.h: there doesn't seem to be an - alloca () for PowerPC target. So, only enable - ACE_HAS_ALLOCA and ACE_HAS_ALLOCA_H ifdef __x86__. - -Fri Aug 28 12:30:57 1998 Carlos O'Ryan - - * bin/create_ace_build: - Now it will cleanup dead links on the build directory. - -Fri Aug 28 09:45:53 1998 Douglas C. Schmidt - - * ace/Synch: Fixed the constructor of ACE_Null_Condition so that - it's consistent with ACE_Condition_Thread_Mutex. Thanks to - Mats Nilsson for reporting this. - -Fri Aug 28 08:33:20 1998 Alexander Babu Arulanthu - - * ace/OS.h (FILE_FLAG_SEQUENTIAL_SCAN): Given null definitions for - FILE_FLAG_SEQUENTIAL_SCAN for Non Win32 platforms. - -Thu Aug 27 19:40:32 1998 Steve Huston - - * ace/OS.i: Changed an erroneous ACE_HAS_PTHREAD_DRAFT6 to - ACE_HAS_PTHREADS_DRAFT6. Thanks to Chuck Gehr for catching this. - -Thu Aug 27 15:47:34 1998 Irfan Pyarali - - * ace/Proactor.cpp (handle_signal): Fixed code for looping around - handle_events(). Thanks to Marc Penner - for pointing out the problem. - - * ace/OS.cpp (ACE_Countdown_Time::stop): Removed the setting of - errno to ETIME when we have used all of timeout. This was - necessary since this errno was interfering with errno being set - by other parts of ACE. - -Thu Aug 27 13:45:31 1998 Nanbor Wang - - * ace/OS.h: Added /**/ between "#include" and - "". Otherwise, MSVC spits out warnings, tons of - them. - - * ace/Profile_Timer.h (ACE_Profile_Timer): Remove the Win32 - section. Win32 (except CE) actually uses the code in - ACE_HAS_GETRUSAGE. - -Thu Aug 27 13:12:04 1998 Alexander Babu Arulanthu - - * examples/Reactor/Proactor/test_proactor.cpp : - test_proactor_with_aio.cpp is removed. - test_proactor.cpp should do well on Win as well as other - POSIX4 compliant platforms (with some known bugs in Solaris2.6). - -Thu Aug 27 11:35:11 1998 David L. Levine - - * etc/ACE-guidelines.html: added rule to declare a loop index - before the loop, if it's used after the loop. - - * ace/OS.h,README: added ACE_LACKS_RTTI support, for use with - ACE_HAS_ANSI_CASTS without dynamic_cast. - - * ace/config-sunos5.5.h (Sun CC only), config-osf1-4.0.h: - added conditional ACE_LACKS_RTTI. - - * include/makeinclude/platform_osf1_4.0.GNU: added rtti=0 - support. - - * ACE-INSTALL.html,include/makeinclude/wrapper_macros.GNU: - updated comments to reflect that rtti=0 is now supported on - OSF1-4.0. (It's not only supported on Sun CC/SunOS 5.) - - * tests/SOCK_Connector_Test.cpp (host_is_up): broke out - the code to test whether a host exists, is reachable, and - is up into host_is_up (). Consider the host up if the - blocking connection attempt succeeds, or down if it doesn't. - -Wed Aug 26 23:43:42 1998 Douglas C. Schmidt - - * ACE version 4.5.32 released. - -Wed Aug 26 19:11:07 1998 Carlos O'Ryan - - * bin/count_lines: - A nice Perl script to count lines of code. - -Wed Aug 26 17:35:43 1998 Douglas C. Schmidt - - * tests/Reactors_Test.cpp (close): Oops, the ACE_ASSERT() was - incorrect. It should be - - ACE_ASSERT (Test_Task::task_count_ >= 0); - - Thanks to David Levine for reporting this. - -Wed Aug 26 07:47:57 1998 Nanbor Wang - - * ace/Select_Reactor.h: Added template specialization for - ACE_Guard> to speed - thing up when using lock-freed Select_Reactor. - - * ace/Select_Reactor.cpp: Removed template instantiation for - ACE_Guard> because - it's been specialized in .h file. - -Wed Aug 26 08:51:23 1998 Steve Huston - - * ace/OS.cpp (thr_keycreate): On pthreads draft 6, the call is - pthread_key_create, not pthread_keycreate. Thanks to Arturo - Montes for this fix. - -Wed Aug 26 08:32:18 1998 David L. Levine - - * tests/Reactor_Performance_Test.cpp (create_reactor): - wrapped block in "if" statement with {} to prevent syntax - error. Yet another example of why we should always use - {} in "if" statements :-) - -Wed Aug 26 07:54:49 1998 J. Russell Noseworthy - - * ace/OS.{i,cpp} (rwlock_init): use native ::rwlock_init on Solaris, - even if ACE_HAS_STHREADS isn't defined. This avoids a nasty - bug on startup with only ACE_HAS_PTHREADS defined on Solaris. - The ACE_Object_Manager fails to initialize its first - preallocated object, and core dumps when trying to use - the ACE_Log_Msg lock, which hasn't been initialized yet. - -Tue Aug 25 21:26:29 1998 James CE Johnson - - * include/makeinclude/platform_linux_lxpthread.GNU: - added NO_IMPLICIT_TEMPLATES support. To disable - -fno-implicit-templates, set NO_IMPLICIT_TEMPLATES - to anything in either your environment or on the - make command line. - -Tue Aug 25 20:04:09 1998 Douglas C. Schmidt - - * ace/config-hpux11.h: Added ACE_HAS_AIO_CALLS. Thanks to John - Mulhern for verifying this. - - * etc: Began to add the ACE tutorials. Thanks to James CE Johnson - for contributing this stuff. - - * tests/Reactor*.cpp: Fixed all the Reactor tests so that they'd - abide by the appropriate design rules. Thanks to Hans Rohnert - for reporting this. - -Tue Aug 25 19:31:37 1998 David L. Levine - - * ace/Memory_Pool.i (~ACE_Lite_MMAP_Memory_Pool,~ACE_MMAP_Memory_Pool): - swapped to avoid use of ~ACE_MMAP_Memory_Pool before its linline - definition. - -Tue Aug 25 18:48:50 1998 Irfan Pyarali - - * ace/Service_Config.cpp (parse_args): Changed the default for - ACE_Service_Config::no_static_svcs_ to be 1. This means that by - default static services (ACE_Naming_Context and - ACE_Service_Manager) will *not* be loaded into the Service - Repository. The -n option remains the same for backward - compatibility, i.e., it sets ACE_Service_Config::no_static_svcs_ - to 1. -y is a new option that sets - ACE_Service_Config::no_static_svcs_ to 0. - - The motivation for this change was to minimize the ACE - footprint, i.e., only load them if the program requires it. - -Tue Aug 25 18:28:11 1998 Nanbor Wang - - * ace/OS.i (strdup): Changed ::strlen to ACE_OS::strlen so we can - get the actual length for UNICODE strings. Thanks to Dana - Hackman for reporting this. - - Also, the size of the allocated memory should be - (strlen(s)+1)*sizeof(wchar_t), not strlen(s)*sizeof(wchar_t)+1. - -Tue Aug 25 14:33:46 1998 Carlos O'Ryan - - * ace/XtReactor.cpp: - The lock type for the ACE_XtReactor was wrong. - -Tue Aug 25 13:36:10 1998 Alexander Babu Arulanthu - - * tests/Aio_Platform_Test.cpp (do_sysconf): Fixed the VxWorks - warnings. - -Tue Aug 25 13:04:00 1998 Irfan Pyarali - - * ace/Memory_Pool: Added virtual destructors. - -Tue Aug 25 10:38:52 1998 Carlos O'Ryan - - * bin/auto_compile: - Added orbsvcs/test/Property/run_test.pl. - The Simple test was moved to Simple/time. - -Tue Aug 25 10:45:50 1998 Alexander Babu Arulanthu - - * tests/Aio_Platform_Test.cpp: Fixed the SunCC errors about - missing function prototypes. Also put the various - routines under "#if defined " - statements. - -Tue Aug 25 07:42:40 1998 David L. Levine - - * ace/Memory_Pool.cpp: changed ACE_Auto_Basic_Array_Ptr - template instantiation to ACE_Auto_Basic_Array_Ptr. - - * examples/IPC_SAP/UPIPE_SAP/ex3.cpp (consumer): changed - ACE_Auto_Basic_Ptr to ACE_Auto_Basic_Array_Ptr . - - * tests/Reactor_Performance_Test.cpp, - examples/IPC_SAP/UPIPE_SAP/ex{2,3}.cpp: - removed explicit ACE_Auto_Basic_Array_Ptr instantiation - because it's now in libACE. - - * include/makeinclude/wrapper_macros.GNU: added BUILD - definition when building static libs only. This was necessary - to allow the TAO/orbsvcs/tests/Simulator/{EventSup,DOVEMIB} - makes to work properly on both Solaris and VxWorks. - It also means that BUILD is no longer necessary in most Makefiles. - - * tests/Message_Queue_Notification_Test.cpp (main): removed - trailing ".cpp" from log file name. - - * ace/config-sunx86-sunc++-4.x.h: removed because it wasn't being - maintained, because config-sunos5.{5,6}.h are supported on Solaris86. - - * include/makeinclude/wrapper_macros.GNU: fixed determination - of whether the g++ version supports exception handling. Assume - that it doesn't on VxWorks. Thanks to Margherita Vittone Wiersma - for reporting this. - - * include/makeinclude/platform_vxworks5.x_g++.GNU: use := instead - of += to set PATH, because += seems to insert a space. - -Tue Aug 25 05:23:11 1998 Nanbor Wang - - * tests/Message_Queue_Notifications_Test.dsp: Fixed something.... - - * tests/tests.dsw: Fixed a typo. - - * ace/ace_{dll,lib}.dsp: - * ace/Makefile: Added Select_Reactor_T and Select_Reactor_Base. - Rebuilt file dependencies. - - * ace/Select_Reactor[_Base,_T].{h,i,cpp}: Templatized - ACE_Select_Reactor and gangs. The original Select_Reactor files - are splited into three sets of files. Select_Reactor_Base - defines common components used by Select_Reactor and defines - Select_Reactor_Base class. Select_Reactor_T defines the - template classes. Select_Reactor instantiates necessary - template classes. Next step is to add template specialization - for ACE_Guard< ACE_Select_Reactor_Token_T >. - - * ace/Synch.{h,i}: Added a new class ACE_Noop_Token which is a - subclass of ACE_Null_Mutex. It supports a null renew method. - This class should be called ACE_Null_Token but the name is - already used. - -Tue Aug 25 01:38:40 1998 Douglas C. Schmidt - - * examples/Threads/task_three.cpp (main): Fixed this example so - that it works portably with signals. Thanks to Susan Liebeskind - for reporting this. - - * tests/Aio_Platform_Test.cpp: Removed the forward decls - so that don't conflict with the use of "static" later on. - Thanks to David Levine for reporting this. - -Mon Aug 24 22:23:33 1998 David L. Levine - - * examples/IPC_SAP/UPIPE_SAP/ex{2,3}.cpp: removed unnecessary - includes of fstream.h. - -Mon Aug 24 18:11:39 1998 Irfan Pyarali - - * ace/Memory_Pool.cpp (ACE_Local_Memory_Pool::release): This - memory pool uses "new" to create memory chunks for the Malloc - class. However, since it did not keep track of this memory, - these chunks were leaked. - - The solution was to keep tarck of the chunks allocated and - delete them in release(). - - * ace/Object_Manager.cpp (~ACE_Object_Manager): Moved TSS cleanup - *before* Service_Config::close(). We need this to happen since - DLL related TSS objects need to get cleaned up *before* the DLL - is unlinked. The only downside to this order of things is that - Log_Msg will also get cleaned up by TSS cleanup, and we need to - make sure that we do not access Log_Msg after TSS cleanup. - - For this to work, we need to make sure of two things: user code - is not called and ACE does not use Log_Msg after this after TSS - resources have been cleaned up. The only major code that is - called is Service_Config::close(). Since - Service_Config::fini_svcs() has already been called, - Service_Config::close() only unlinks the DLLs and does not call - into user code. - - * ace/Service_Repository.cpp (close): Don't access Log_Msg since - it has already been deleted by the time this code runs. - - * ace/Service_Config.cpp (close): Don't access Log_Msg since it - has already been deleted by the time this code runs. - -Mon Aug 24 18:13:58 1998 Douglas C. Schmidt - - * tests/Aio_Platform_Test.cpp: Fixed a few problems due - to the fact that we weren't carefully guarding against platforms - that don't support AIO macros. Thanks to Dana Hackman - for reporting this. - -Mon Aug 24 15:18:46 1998 David L. Levine - - * tests/run_tests.sh: run Message_Queue_Notifications_Test - instead of Message_Queue_Notifications_Test.cpp. - -Mon Aug 24 13:05:03 1998 Douglas C. Schmidt - - * ace/config-{chorus,WinCE,vxworks5.x}.h: Added - ACE_HAS_STRDUP_EMULATION. Thanks to Chuck Gehr for this - suggestion. - - * ace/OS.i (strdup): Removed complicated #ifdef and replaced it - with ACE_HAS_STRDUP_EMULATION. - -Mon Aug 24 10:41:07 1998 Alexander Babu Arulanthu - - * ace/OS.h: Provided null defitions for all the wait - status macros for ACE_WIN32 platform. - -Mon Aug 24 00:11:00 1998 Douglas C. Schmidt - - * examples/Reactor/Misc/pingpong.cpp (run_svc): Fixed a subtle - potential "order of destruction" bug with this test. Thanks to - Hans Rohnert for reporting this. - -Sun Aug 23 21:09:55 1998 Arturo Montes - - * ace/OS.i (thr_testcancel): with ACE_HAS_PTHREAD_DRAFT6, - use ::pthread_testintr () instead of pthread_testcancel (). - Thats what FSU pthreads uses. Hopefully, MVS does also. - -Sun Aug 23 16:28:10 1998 Douglas C. Schmidt - - * ace/Process.cpp (spawn): Removed the ACE_DEBUG messages on exec - failure, etc. If apps want to know what has failed, they need - to check the return from spawn() or wait(). ACE shouldn't be - generating debugging information gratuitiously... - -Sun Aug 23 15:42:48 1998 Alexander Babu Arulanthu - - * ace/Process.cpp: Put the warning on failure on exec - ("ACE_Process::spawn (); exec failed: exiting!!!!\n") under - condition (ACE_Service_Config::debug_). - -Sun Aug 23 11:12:46 1998 Carlos O'Ryan - - * tests/Makefile: - * tests/Message_Queue_Notifications_Test.cpp: - Fixed typos. - -Sat Aug 22 21:52:23 1998 Douglas C. Schmidt - - * examples/IPC_SAP/UPIPE_SAP/ex[23].cpp: Changed the - Auto_Basic_Ptr to the Auto_Basic_Array_Ptr to avoid compilation - problems. Thanks to David Levine for reporting this. - -Sat Aug 22 20:13:37 1998 Darrell Brunsch - - * ACE-INSTALL.html: Added instructions for adding Alpha - configurations to MSVC 5 project files. - -Sat Aug 22 13:24:00 1998 Douglas C. Schmidt - - * tests/Message_Queue_Notifications_Test.cpp: Surrounded the - ACE_Barrier with conditional compilations for ACE_HAS_THREADS. - Thanks to Ganesh Pai for reporting this. - - * tests/Message_Queue_Notifications_Test.cpp: Cleaned up the - formatting a bit. - - * tests: Renamed MsgQueue_Notifications_Test.{cpp,bpr,dsp} to - Message_Queue_Notifications_Test.{cpp,bpr,dsp} to be more - consistent with spelling. - - * ace/OS.h: Moved the ACE_timer_t down a bit in the file so that - ACE_UINT is defined. Thanks to Naga for reporting this. - - * ace/OS.h: Added a "no-op" typedef for ACE_Rusage for platforms - that don't support it. Thanks to David Levine for reporting - this. - -Sat Aug 22 07:59:28 1998 David L. Levine - - * tests/UPIPE_SAP_Test.cpp (main): removed unused local - variables thr_handle_acceptor and thr_handle_connector. - - * tests/UPIPE_SAP_Test.cpp (connector): removed leading newline - in printout at end of thread execution. - - * ACE-INSTALL.html: added egcs section. Thanks to - Ganesh Pai for a portion of it. - - * examples/IPC_SAP/UPIPE_SAP/ex1.cpp (peer1); removed spurious - "new" in ACE_NEW_RETURN involcation. - - * examples/IPC_SAP/UPIPE_SAP/ex{2,3}.cpp: untabified. - - * examples/IPC_SAP/UPIPE_SAP/Makefile: updated dependencies - so that the module will build, now that auto_builtin_ptr.h - has been removed. - -Sat Aug 22 00:27:06 1998 Irfan Pyarali - - * ace/Read_Buffer.i (alloc): Added new method to get to - Read_Buffer's allocator. This is necessary because we need to - free up the memory that it allocates for us. - - * ace/Service_Object.cpp (fini): New method calls fini() on - and sets the flag. This flag is - tested in the destructor so that the is not fini'ed - twice. - - * ace/Service_Repository.cpp (fini): New method to finalize (call - fini() and possibly delete) all the services. - - * ace/Service_Config.cpp (fini_svcs): New method calls - ACE_Service_Repository::instance ()->fini (). - - * ace/Object_Manager.cpp (~ACE_Object_Manager): Added a call - to close and possibly delete all service instances in the - Service Repository by calling ACE_Service_Config::fini_svcs. - This call is made *before* the library singletons (such as - the Reactor, Proactor, Thread_Manager, and Allocator) are - destroyed since the service instances maybe accessing these - singletons in the fini() and destructor methods. Note that - user singletons are destroyed before the services are - fini'ed or closed. - - * ace/Service_Config.cpp (fini_svcs): Disable log messages when - appropriate. - -Fri Aug 21 22:26:54 1998 Steve Huston - - * ace/OS.i (ACE_OS::gettimeofday): On Win32, instead of _ftime, - use GetSystemTimeAsFileTime. _ftime has a bug crossing from - daylight time to standard time in the US. - -Fri Aug 21 22:13:51 1998 David L. Levine - - * ace/OS.i (thr_cancel, thr_setcancelstate, thr_setcanceltype, - thr_testcancel): added #else - case, with ACE_NOTSUP (-1), to the various threads - types. It catches - ACE_HAS_PTHREADS && ACE_LACKS_PTHREAD_CANCEL. Thanks - to Naga for reporting this. - - * ace/OS.i (thr_setcanceltype): don't support if - ACE_LACKS_PTHREAD_CANCEL. Thanks to Naga for reporting this. - - * ace/config-chorus.h: added ACE_LACKS_PTHREAD_CANCEL. - Thanks to Naga, again. - -Fri Aug 21 20:23:44 1998 Douglas C. Schmidt - - * examples/IPC_SAP/UPIPE_SAP/ex[123].cpp: Updated these programs - to use the ACE_Auto_Basic_Ptr instead of the bizarre - auto_builtin_ptr.h file, which has been removed... Also - replaced the global thr_mgr with the ACE_Thread_Manager - Singleton and moved the include file until AFTER the - ACE includes to avoid problems with HP/UX 11's C++ compiler. - Thanks to John Mulhern for motivating these fixes. - - * ace/config-hpux-10.x.h: Added a check so that if threading is - disabled, then timespec_t does not get defined. This seems to - work around a bug with HP/UX 10.x. Thanks to Ganesh M. Pai - for reporting this. - -Fri Aug 21 19:54:26 1998 Carlos O'Ryan - - * include/makeinclude/wrapper_macros.GNU: - The ACE_HAS_EXCEPTIONS macro definition goes into CPPFLAGS now, - so make depend can use it too. - -Fri Aug 21 18:47:40 1998 Nanbor Wang - - * ace/Process.cpp (wait): Need to check if status is non-null - before accessing the exit status on NT. Thanks to Carlos for - pointing this out. - -Fri Aug 21 16:40:39 1998 Carlos O'Ryan - - * ace/config-irix6.x-sgic++.h: - * ace/OS.i: - Some platforms (notable IRIX 6.x) do not update the timer in - pthread_cond_timedwait(), this made the Semaphore test fail for - those platforms. - I modified the ACE_OS::sema_wait() function to obtain the - desired behavior. - -Fri Aug 21 15:50:05 1998 Douglas C. Schmidt - - * etc/ACE-porting.html: Updated some discussion on selecting - versions of STL that work with ACE and TAO. Thanks to Bob - Laferriere for reporting - this. - -Fri Aug 21 14:49:31 1998 Steve Huston - - * include/makeinclude/platform_hpux_gcc.GNU: Changed the default - from build without threads to build with threads. Thanks to Ganesh - Pai for this change. - -Fri Aug 21 09:25:21 1998 Douglas C. Schmidt - - * ace/OS.h: Moved several #ifdefs from Profile_Timer.h into OS.h - to clean up the code. - - * ace/Profile_Timer.h: Cleaned up the class definition to make the - OSE tool happy. Thanks to Doug Anderson for - reporting this. - - * etc: Moved the ACE-subsets.html file into $ACE_ROOT/etc. - - * ace/Synch_Options.h: Fixed a typo that was giving the OSE tool - fits! Thanks to Doug Anderson for reporting - this. - -Fri Aug 21 03:41:01 1998 Nanbor Wang - - * examples/OS/Process/process.cpp: - * examples/OS/Process/imore.cpp: Minor bug fixes. Print out of - child processes' exit status. - -Thu Aug 20 23:33:15 1998 Nanbor Wang - - * ace/Process.cpp (wait): Allow passing back the exit status of - the child process on NT. - -Thu Aug 20 19:52:21 1998 Nagarajan Surendran - - * ace/OS.i: - ACE_INLINE int - ACE_OS::thr_getspecific (ACE_thread_key_t key, void **data) - ... - #else /* this is Draft 7 or STD */ - *data = pthread_getspecific (key); - - changed the ::pthread_getspecific to pthread_getspecific as it - is a macro in Chorus. Thanks to David Levine for finding this. - -Thu Aug 20 17:05:28 1998 Douglas C. Schmidt - - * examples/Service_Configurator/Misc/Timer_Service.cpp: Added some - ACE_SVC_FACTORY_* macros for Timer_Service_1 so that it'll - compile and link properly. Thanks to David Levine for reporting - this. - -Thu Aug 20 14:39:53 1998 Nanbor Wang - - * ace/Process.{h,cpp} (ACE_Process::wait): Added a parameter of int* to - get back the exit status of a child process. - -Thu Aug 20 14:33:59 1998 Douglas C. Schmidt - - * etc/ACE-porting.html: Generalized the discussion to cover - porting TAO, as well as to explain what C++ features must/can be - supported to port ACE/TAO to a new platform. - -Thu Aug 20 05:12:24 1998 Douglas C. Schmidt - - * ACE version 4.5.31 released. - -Thu Aug 20 03:10:48 1998 Nanbor Wang - - * tests/UPIPE_SAP_Test.cpp (main): Reverted back to use - ACE_Thread. Although it's considered the "Right Thing" to spawn - threads using ACE_Thread_Manager, I'll keep this file to use - ACE_Thread to serve as an example that you can also use - ACE_Thread to do any tricks you like, and, a sanity check. - - * ace/OS.cpp (ACE_Thread_Adapter::invoke): Don't create the - ACE_Thread_Exit object if we are not spawning the thread using - ACE_Thread_Manager. Otherwise, when a non-thread manager - spawned thread exits, the TSS clean up routing gets into an - infinite loop calling ~ACE_Thread_Exit recursively and - eventually the stack gets overflowed and the thread then - "appears" to exit normally. But in fact, TSS cleanup does not - complete at all. - - * ace/Thread_Manager.i: - * ace/Thread_Manager.cpp (at_exit,thr_self): Moved all at_exit - methods into the .i file. All at_exit methods and thr_self - don't really need to hold Thread_Manager's lock. - - Notice that after the newly spawned thread enters the - ACE_Thread_Adapter::invoke routine, we can safely manipulate its - Thread_Deacriptor because it has been registered properly. This - change should further reduce the times a thread gets started. - -Wed Aug 19 20:34:25 1998 Nanbor Wang - - * ace/README: - * ace/OS.h: Added a new macro directive - "ACE_DOESNT_INSTANTIATE_NONSTATIC_OBJECT_MANAGER". By defining - this macro, it implicitly forces ACE to use non-static object - manager and _NOT_ instantiating ACE_Object_Manager for you and - assumes you will take the responsibility of instantiating - ACE_Object_Manager at the proper place in your programs. This - is usually used when using ACE with MFC/Windows programs. - Because the main function is defined by MFC/Windows libraries, - ACE has no way to instantiate object manager in these programs. - For programs using MFC, a good place to instantiate Object - Manger will be to define ACE_Object_Manager a member of - CApplication derived classes so it gets instantiated/destructed - properly. - - * ace/config-win32.h: Revised the comment about - ACE_HAS_NONSTATIC_OBJECT_MANAGER - -Wed Aug 19 17:15:00 1998 Douglas C. Schmidt - - * ace/Service_Config.cpp: Moved the registration of the SIGHUP - signal from the constructor to the open() method since otherwise - it'll never get called in the typical usecase... Thanks to - Susan Liebeskind for - reporting this. - -Wed Aug 19 14:11:22 1998 David L. Levine - - * ACE version 4.5.30 released. - -Wed Aug 19 13:38:40 1998 David L. Levine - - * ace/OS.cpp (ACE_TSS_Cleanup::detach): only declare local - temp_key ifdef ACE_WIN32, because it's only used there. - -Wed Aug 19 10:13:36 1998 Nanbor Wang - - * ace/OS.cpp (ACE_Thread_Cleanup::remove): Don't bother to check - the status when the object manager is shutting down. - Otherwise, we are creating another fresh ACE_TSS object all over - again. - (ACE_Thread_Cleanup::detach): When cleaning up a thread key, we - must first remove it from the internal table before actually - freeing the key to avoid race condition (the OS may reassigned - the key to other the_keycreate requests.) - - * ace/Log_Msg.cpp (close): Removed the ACE_Thread::key_free - statement. This should be handled by TSS cleanup mechanism. - - * ace/Thread_Manager.cpp (at_exit): Moved the return statement - after #endif macros to avoid the no return compiler warning. - - * tests/UPIPE_SAP_Test.cpp (main): Changed to use - ACE_Thread_Manager to spawn and wait for threads so the TSS - object gets cleanup correctly. Using plain vanilla - ACE_Thread::spawn and/or ACE_OS::thr_create no longer works. - -Wed Aug 19 10:06:25 1998 David L. Levine - - * etc/ACE-guidelines.html: @added guidelines to check for - success of an attempted open of an existing file, and to not - release copyrighted, etc., material with ACE/TAO. - - * tests/SOCK_Connector_Test.cpp (find_another_host): check to see - if the other host is up, by attempting a blocking connection with - it. Only return another host if the connection succeeds. - Also, cache the other host so that multiple calls will not - have to repeat the connection attempt. - -Wed Aug 19 08:25:20 1998 Douglas C. Schmidt - - * examples/Service_Configurator/Misc/Timer_Service.cpp: Changed - Timer_Service_2 to Timer_Service_1 since it was a typo. Thanks - to Irfan for reporting this. - -Tue Aug 18 22:10:43 1998 David L. Levine - - * ace/config-fsu-pthread.h,config-hpux-10.x.h,config-mit-pthread.h, - config-mvs.h,config-osf1-{3.2,4.0}.h,config-sco-5.0.0-mit-pthread.h, - config-sunos5.{5,6}.h,config-tandem.h: - removed ACE_HAS_ONEARG_SIGWAIT. It's no longer used. - -Tue Aug 18 16:50:28 1998 Irfan Pyarali - - * ace/Thread.i (sigsetmask): Renamed parameter name since it - conflicts with STL class name. Thanks to Kent Watsen - for pointing this out. - - * examples/Reactor/Proactor/test_proactor.cpp (handle_write_stream): - Fixed incorrect unary minus operator application. - -Tue Aug 18 16:43:00 1998 David L. Levine - - * ACE version 4.5.29 released. - -Tue Aug 18 14:15:23 1998 Steve Huston - - * include/makeinclude/platform_aix4.2.GNU: Don't link programs - against libACE.a - just against libACEshr.a (the shared lib). - - * include/makeinclude/platform_hpux_aCC.GNU: - * include/makeinclude/platform_hpux_gcc.GNU: Switch support for threads - on and off using "make threads=0" or "make threads=1". The default - for aCC is to use threads, and for gcc is to not. I deduced the - defaults from the old lib settings. Sorry if the gcc one is wrong. - - * ace/config-hpux-10.x.h: Added ACE_HAS_SIGISMEMBER_BUG, plus... - * ace/config-hpux11.h: Set threads things based on the setting - of ACE_HAS_THREADS, which gets set in platform_macros.GNU (see above) - to build with threads support. - -Tue Aug 18 10:57:32 1998 Carlos O'Ryan - - * include/makeinclude/rules.nested.GNU: - Removed extra enter/leave messages at each directory, GNUmake - does it for you. - -Tue Aug 18 08:15:30 1998 David L. Levine - - * tests/Aio_Platform_Test.cpp (do_sysconf): on VxWorks, don't - call ACE_OS::sysconf () because it's not supported. - - * bin/make_release: added -P to cvs checkout command, to ignore - empty diretories. - -Mon Aug 17 22:56:17 1998 Nanbor Wang - - * tests/version_tests/version_tests.dsw: - * tests/version_tests/Dynamic_Priority_Test.dsp: Added a new - project (as shown) into the workspace. - -Mon Aug 17 17:17:52 1998 Steve Huston - - * ace/Makefile: Removed IO_Cntl_Msg from files to build. It's empty. - - * include/makeinclude/platform_hpux_aCC.GNU: Added '302' to warnings - to suppress; changed LIBS from '=' to '+=' to work better with TAO - builds. Thanks to John Mulhern for these fixes. - -Mon Aug 17 17:04:31 1998 Nanbor Wang - - * tests/Env_Value_Test.cpp (main): Changed to use ASYS_TCHAR* for - arguments in main. - -Mon Aug 17 15:51:30 1998 David L. Levine - - * ace/OS.i (thr_sigsetmask): with ACE_HAS_PTHREADS_DRAFT4 or - ACE_HAS_PTHREADS_DRAFT6, added :: in front of sigprocmask () - call. Without it, g++ on LynxOS was warning about use of - sigprocmask () before definition. - -Mon Aug 17 14:59:13 1998 Douglas C. Schmidt - - * etc: Added a new file, ACE-porting.html, which explains how to - port ACE to new OS platforms. Thanks to Gabriel Lima - for submitting this. - - * ace/FILE_Connector.h: Changed ACE_FILE_Connector so that it no - longer inherits from ACE_FILE. This relationship is unnecessary - and was not used. Thanks to Byron Harris for reporting this. - -Mon Aug 17 12:14:13 1998 Steve Huston - - Large number of small changes (all listed below) to begin aligning - the large number of Pthreads-related definitions around the 4 supported - drafts: 4, 6, 7, as well as the standard (also known as draft 10). - The notation for "DCE threads" is gone. DCE threads are primarily - draft 4, plus platform-specific modifications. Now all code must - declare the pthreads draft, and handle any platform/implementation - oddities as such. - As time goes on, I will remove more of the ACE_HAS_... and ACE_LACKS... - things that are actually changes with the pthreads drafts. - I tested these on Solaris 2.5.1 (CC), HP-UX 10.20 and 11.00, AIX 4.2.1, - and sanity-tested on NT/MSVC (though no changes affected the WTHREADS - parts). - - * ace/README: Clarified use of Pthreads macros. - - * ace/config-hpux-10.x.h: - * ace/config-lynxos.h: - * ace/config-osf1-3.2.h: - * ace/config-osf1-4.0.h: - Changed from DCE threads to ACE_HAS_PTHREADS_DRAFT4. - - * ace/config-fsu-pthread.h: - * ace/config-m88k.h: - * ace/config-mvs.h: Added ACE_HAS_PTHREADS_DRAFT6. - - * ace/config-aix-4.1.x.h: - * ace/config-aix-4.2.x.h: Added ACE_HAS_PTHREADS_DRAFT7. - - * ace/config-chorus.h: - * ace/config-dgux-4.x-ghs.h: - * ace/config-hpux11.h: - * ace/config-irix6.x-g++.h: - * ace/config-irix6.x-sgic++.h: - * ace/config-linux-lxpthreads.h: - * ace/config-linux-pthread.h: - * ace/config-mit-pthread.h: - * ace/config-osf1-4.0.h: - * ace/config-sco-5.0.0-mit-pthread.h: - * ace/config-sunos-5.5.h: (also remove ACE_HAS_STHREADS if - _POSIX_PTHREAD_SEMANTICS is defined by user). - * ace/config-sunos5.6.h: - - Changed to / added ACE_HAS_PTHREADS_STD. - - * ace/config-hpux-10.x-g++.h: Changed over to use the base file - config-hpux-10.x.h. - - * ace/OS.h: - * ace/OS.i: - * ace/OS.cpp: - Unified the compile ifdefs for pthreads around ACE_HAS_PTHREADS, - ACE_HAS_PTHREADS_DRAFT{4, 6, 7} and ACE_HAS_PTHREADS_STD. - Removed all use of ACE_HAS_DCETHREADS; put in platform-specific - settings where needed. - - * ace/Sched_Params.cpp: - * ace/Synch.cpp: Removed the use of ACE_HAS_DCETHREADS. - -Mon Aug 17 12:10:54 1998 Nanbor Wang - - * ace/ace_{dll,lib}.dsp: Removed Message_Queue_T.cpp from and included - Message_Queue.cpp into source files that get build. Hmm, I - thought I made this change long ago. - - * ace/ace_ce_dll.dsp: Changed the DLL output directories for some - configurations. - -Mon Aug 17 11:25:18 1998 Carlos O'Ryan - - * ace/Strategies_T.h: - In some platforms we need to include "ace/Thread_Manager.h" - because its definition is used in the inline methods of some - templates, and a few platform actually check the syntax of - template code, even if the template is not used. - -Mon Aug 17 10:06:01 1998 David L. Levine - - * netsvcs/lib/Server_Logging_Handler_T.cpp: replaced - #include with #include "ace/OS.h", so that - _REENTRANT gets defined with g++. - - * apps/Gateway/Peer/Peer.{h,cpp} (Peer_Connector::open): added - (unused) arguments to this function. They are only provided to - avoid a compiler warning about hiding the virtual function - ACE_Connector::open (ACE_Reactor *, - int). - - * tests/Dynamic_Priority_Test.cpp (run_performance_test): - added delete of time_offsets array. The test Purifies - cleanly now. - -Mon Aug 17 00:05:02 1998 Irfan Pyarali - - * examples/Reactor/ReactorEx/test_removals.cpp (main): Fixed - signed/unsigned mismatch. - - * examples/Reactor/ReactorEx/test_talker.cpp (handle_read_stream): - Fixed incorrect unary minus operator application. - -Sun Aug 16 20:57:12 1998 Nanbor Wang - - * ace/OS.i (dlerror): Fixed a typo. Thanks to Ossama Othman - for reporting this. - -Fri Aug 14 18:58:29 1998 Alexander Babu Arulanthu - - * tests/Aio_Platform_Test.cpp : Changed 's to - ACE_OS::sysconf's. - -Fri Aug 14 11:41:23 1998 Steve Huston - - * ace/OS.i (ACE_OS::dlclose): On HP-UX 10.x and 32-bit 11.00, do - not actually call shl_unload if the library's ref count is more than - 1. If shl_unload is called, it unloads the library, regardless of - the reference count. This has the affect of never unloading a - library that's been loaded more than once, until the OS unloads it - at process run-down. Better than invalidating references to it, - though. The wonder of wrappers at work for you... - -Fri Aug 14 10:01:05 1998 David L. Levine - - * ace/Basic_Types.h (ACE_UINT64_DBLCAST_ADAPTER): with - ACE_LACKS_LONGLONG_T, only use low 32 bits. We could devise - a conversion from ACE_U_LongLong to double that uses all - 64 bits; but, it's probably easier for users to upgrade - their hardware and/or compilers to ones that support 64 - bit ints :-) - -Thu Aug 13 19:29:33 1998 Douglas C. Schmidt - - * ace/Message_Queue_T.i: Changed the is_empty_i() method to check - if this->tail_ == 0 rather than this->cur_bytes_ <= 0 && - this->cur_count_ <= 0. Thanks to Dirk Broer - for suggesting this. - -Thu Aug 13 17:45:00 1998 Chris Gill - - * ace/Basic_Types.h: added ACE_UINT64_DBLCAST_ADAPTER macro - to patch unimplemented UINT64 to double casts - -Thu Aug 13 13:34:52 1998 David L. Levine - - * os-patches/linux-patches.html: the af_inet.c patch is only - needed through Linux kernel version 2.0.34. - - * tests/Conn_Test.cpp: disabled ACE_Hash_Addr template - specialization on non-egcs g++. - - * tests/Process_Strategy_Test.{h,cpp} (~Process_Strategy): - added an explicit destructor. g++ 2.7.2.3 got very - confused ("Internal compiler error") without it, apparently - when generating it implicitly. - - * tests/ MsgQueue_Notifications_Test.cpp (producer): removed - unused local "result". - -Wed Aug 12 22:45:50 1998 Nanbor Wang - - * tests/MsgQueue_Notifications_Test.cpp: Added an explicit - template instantiation. - -Wed Aug 12 21:32:05 1998 Carlos O'Ryan - - * ace/Message_Block.h: - * ace/Message_Block.i: - * ace/Message_Block.cpp: - Enabled the base() method, it replaces the internal buffer and - resets the Message_Block. There were other ways to do this (like - calling data_block->base()), but some users find it convenient. - I also modified the Data_Block::base() method to release any - memory held by the class before the method is called. Thanks to - Peter.Gorgia@libnet.com for pointing this out. - -Wed Aug 12 17:43:33 1998 Nanbor Wang - - * tests/MsgQueue_Notifications_Test.cpp: The watermark test which - uses cv's signaling to notify other threads is also merged into - this file. - - * tests/MsgQueue_Water_Mark_Test.{dsp,cpp}: Removed. - -Wed Aug 12 17:12:57 1998 Darrell Brunsch - - * APC.DSP: - * Abondoned.dsp: - * Console_Input.dsp: - * Directory_Changes.dsp: - * Exceptions.dsp: - * Multithreading.dsp: - * Network_Events.dsp: - * Prerun_State_Changes.dsp: - * Registration.dsp: - * Registry_Changes.dsp: - * Removals.dsp: - * Talker.dsp: - * Timeouts.dsp: - * Window_Messages.dsp: - * test_abandoned.cpp: - * test_apc.cpp: - * test_window_messages.cpp: - Added updated versions of project files (with correct include - directories). Also changed the

    's to take in argc and - argv. Thanks to Jeff Hellzen - for submitting these changes. - -Wed Aug 12 16:16:38 1998 Nanbor Wang - - * tests/MsgQueue_Notifications_Test.cpp: Since this test doesn't - use threads at all, I removed the #if ACE_HAS_THREADS macro. - -Wed Aug 12 14:57:51 1998 Jonathan Biggar - - * ace/config-sunos5.5.h: wrapped thread-related defines with - "#ifdef _REENTRANT". - - * include/makeinclude/platform_sunos5_sunc++.GNU,wrapper_macros.GNU, - ACE-INSTALL.html: added support for "threads" make option. - -Wed Aug 12 02:06:02 1998 Nanbor Wang - - * tests/test_config.h (ACE_Test_Output): It seemed like redirecting - the Log_Msg output back to stderr in close was a bit too early - and some messages popped out after some tests ran successfully. - Moved the redirecting code into the destructor. - -Tue Aug 11 22:47:49 1998 David L. Levine - - * ace/TP_Reactor.cpp (dispatch_io_set): added - ACE_UNUSED_ARG (ready_mask). - - * tests/test_config.h: added - ACE_Singleton template - instantiation. This shouldn't be done in a header, and - I wouldn't be surprised if it breaks somewhere. But, we - don't have any other need for a .cpp file to link into all tests. - -Tue Aug 11 17:30:32 1998 Steve Huston - - * tests/test_config.h: Fixed ACE_Test_Output to get torn down clean - in all cases by changing it from a static to an ACE_Singleton. - Re-enabled it for Win32, non-WinCE. - -Tue Aug 11 15:51:47 1998 Irfan Pyarali - - * ace/XtReactor.h (ACE_XtReactor): Changed the constructor so that - the XtAppContext can be passed later. This scheme allows for a - default constructor. Thanks to J-M Strauss - for suggesting this. - -Tue Aug 11 12:35:10 1998 Nanbor Wang - - * ace/OS.i (fopen): On WinCE, reset the handle to 0 if CreateFile - fails so we can detect errors when using the emulated FILE - pointer on CE. - - * tests/test_config.h (~ACE_Test_Output): Changed !defined - (ACE_HAS_WINCE) to !defined (ACE_WIN32). When using non-static - object manager, the singleton ACE_Log_Msg may no longer exist - here and the reseting here just causes access violations. Other - platforms which use non-static might suffer the same sympton. - -Tue Aug 11 12:29:03 1998 David L. Levine - - * os-patches/linux-patches.html: the gas patch on alphas - isn't necessary with binutils-2.9.1. - -Tue Aug 11 12:23:09 1998 Nanbor Wang - - * ace/ARGV.{h,cpp}: Made a series of changes to make the file CE - friendly. - - * ace/Message_Queue_T.cpp: Adjusted the indentation. - -Tue Aug 11 02:06:55 1998 Irfan Pyarali - - * ace/WFMO_Reactor.cpp (dispatch_handles): Because dispatch_index - is absolute, nCount should be set to - (max_handlep1 - dispatch_index) instead of (nCount - - dispatch_index). Thanks to Alberto Villarica - for pointing this out. - -Mon Aug 10 20:12:21 1998 Steve Huston - - * ace/Log_Msg.cpp: On HP-UX 10.x, display thread's readable number - rather than an int represenation of a pointer. - - * tests/test_config.h (ACE_Test_Output): When destroying - ACE_Test_Output, make sure to remove all traces of it from - ACE_Log_Msg instance. - - * tests/Dynamic_Priority_Test.cpp: Don't try to set process-wide - scheduling if it's not supported on the platform. - - * tests/Thread_Manager_Test.cpp: Don't do a kill on pthreads draft - 4 platforms. This is a NOP for now - it will make a difference when - I check in more threads-related changes later. - -Mon Aug 10 10:35:26 1998 Douglas C. Schmidt - - * Added the ACE-subsets.html file to the ACE directory so that - we can all modify it. - -Mon Aug 10 10:29:29 1998 Nanbor Wang - - * ace/OS.i (shm_open): There's no need to mess with the security - attribute here. - -Mon Aug 10 01:09:05 1998 Nanbor Wang - - * ace/OS.{h,i}: Added a new function - "default_win32_security_attributes" to return the defualt - security setting of kernel objects. By default, this function - is a no-op. You must define - ACE_DEFINES_DEFAULT_WIN32_SECURITY_ATTRIBUTES for this function - to return a SECURITY_ATTRIBUTES object that has no access - restriction. - - Modified all functions that use Win32 kernel objects to invoke - this new function to get the appropriate security attributes. - Thanks to Ivan Murphy for - suggesting this. - - -Sun Aug 09 23:26:39 1998 Douglas C. Schmidt - - * ACE version 4.5.28 released. - -Sun Aug 9 23:08:51 1998 Douglas C. Schmidt - - * Checked in a bunch of files/directories that I'd neglected - to check in before. - -Sun Aug 09 23:02:24 1998 Douglas C. Schmidt - - * ACE version 4.5.27 released. - -Sun Aug 9 15:04:41 1998 Darrell Brunsch - - * netsvcs/clients/Tokens/manual/manual.cpp: Changed all instances - of "#if (ACE_WIN32)" to "#if defined (ACE_WIN32)" - - * netsvcs/netsvcs.dsw: Added this workspace which contains all the - netsvcs projects. - - * netsvcs/clients/Tokens/collection/collection.dsp: - * netsvcs/clients/Tokens/collection/collection.dsw: - * netsvcs/clients/Tokens/deadlock/deadlock.dsp: - * netsvcs/clients/Tokens/deadlock/deadlock.dsw: - * netsvcs/clients/Tokens/invariant/invariant.dsp: - * netsvcs/clients/Tokens/invariant/invariant.dsw: - * netsvcs/clients/Tokens/manual/manual.dsp: - * netsvcs/clients/Tokens/manual/manual.dsw: - * netsvcs/clients/Tokens/mutex/mutex.dsp: - * netsvcs/clients/Tokens/mutex/mutex.dsw: - * netsvcs/clients/Tokens/rw_lock/rw_lock.dsp: - * netsvcs/clients/Tokens/rw_lock/rw_lock.dsw: - Added these MSVC projects and workspaces. Thanks to Jeff - Hellzen for submitting these. - - * netsvcs/clients/Logger/direct_logging.dsp: - * netsvcs/clients/Logger/indirect_logging.dsp: - * netsvcs/clients/Naming/Client/Client_Test.dsp: - * netsvcs/clients/Naming/Client/main.dsp: - * netsvcs/lib/netsvcs.dsp: - * netsvcs/servers/servers.dsp: - Mainly just updated all of these and made sure that they worked. - -Sun Aug 9 09:17:16 1998 Douglas C. Schmidt - - * ace/Strategies_T.cpp (connect_svc_handler): Changed the call to - this->CONNECT_STRATEGIES::connect_svc_handler() to avoid compile - problems with GCC on LynxOS. Thanks to Sergio for reporting - this. - -Sat Aug 8 09:37:27 1998 Carlos O'Ryan - - * ace/INET_Addr.cpp: - Reverted the operator== optimization, it turns out that the - definition of struct in_addr is not portable after all. Maybe - there is a set of macros to make it portable? - - * ace/ACE.h: - * ace/ACE.cpp: - Returning is unnecesary; and gives no more - guarantees that , plus it gives warnings in - IRIX/MIPSPro compilers. - - * ace/Synch.cpp: - Removed explicit instantiations of ACE_Guard, - the class is specialized so no instantiation is necessary. Same - thing for ACE_Write_Guard and ACE_Read_Guard. - -Fri Aug 7 23:18:53 1998 Carlos O'Ryan - - * ace/config-sunos5.5.h: - Updated the new ACE_CC_NAME macros (and friends) so they work - with egcs (and hopefully g++). - - * tests/MT_SOCK_Test.cpp: - Removed double comma in function call. - -Fri Aug 7 21:39:26 1998 Carlos O'Ryan - - * ace/INET_Addr.cpp: - Compare the fields of in_addr instead of calling memcmp. - - * ace/Message_Block.cpp: - * ace/Message_Block.h: - * ace/Message_Block.i: - The Message_Block can receive an allocator for the data block, - so instead of creating them on the heap they can be allocated - from a TSS allocator or other memory pool. By default we use - ACE_New_Allocator. - - * apps/gperf/Makefile: - The Id was wrong. - - * bin/auto_compile: - Added gperf to the default list of directories. - -Fri Aug 7 13:58:58 1998 Gonzalo Diethelm - - * bin/envinfo.cpp: - Added this program, which will print the version information for - ACE, the OS and C++ compiler. The idea is to use this when posting - to the ACE mailing list. - - * ace/ACE.h: - * ace/ACE.cpp: - Added static methods to retrieve compiler information (name, major - version, minro version, beta version). - - * ace/config-sunos5.5.h: - Defined the compiler information macros for this platform. - - * bin/Makefile: - Modified the Makefile to support multiple binaries in the - directory (according to tests/Makefile). - - * bin/clone.cpp: - Added RCS Id. - -Fri Aug 7 12:46:42 1998 Douglas C. Schmidt - - * ace/Activation_Queue.h: Updated the documentation to indicate - the need for absolute rather than relative time values. Thanks - to Johannes Gutleber for reporting - this. - -Fri Aug 07 02:06:54 1998 Nanbor Wang - - * tests/MsgQueue_Water_Mark_Test.{dsp,cpp}: Added a new test to - make sure the water mark stuff works. It still needs to be - clean up to compile with g++. - -Fri Aug 07 01:00:55 1998 Irfan Pyarali - - * ace/Strategies_T.i (operator==): Added a method to compare a - ACE_Hash_Recyclable and a ACE_Recyclable. Also inlined a shit - load of small methods. - - * ace/Strategies_T.cpp (connect_svc_handler): If is not - connected to the correct address or is busy, we will not use it. - Therefore we need to set it to zero. - - * ace/Synch: Added template specializations for - ACE_Guard, ACE_Write_Guard, and - ACE_Read_Guard. - -Thu Aug 06 14:59:22 1998 Douglas C. Schmidt - - * ace/Thread_Manager.cpp: Updated all uses of cancel_thr for the - various apply*() methods so that they pass along the - async_cancel flag. - - * ace/Thread_Manager.cpp: Added a new ARG to the ACE_EXECUTE_OP - macro. Believe it or not, this change actually reduced the - amount of special-case code because we can now treat kill_thr() - just like the other *_thr() methods. Irfan was amazed ;-). - - * ace/Thread_Manager: Added a new flag called "async_cancel" to - all the Thread Manager cancel*() methods. This flag is disabled - by default (hence, there are no changes to the ACE Thread - Manager semantics). If it is enabled, however, it will attempt - to perform an asychronous thread cancellation on the - corresponding thread id(s). - -Thu Aug 6 17:44:50 1998 Douglas C. Schmidt - - * tests/Priority_Task_Test.cpp: Enhanced this test so that it runs - correctly on platforms where you must be root to muck around - with thread priorities. Thanks to John Mulhern - <9107@mn3.lawson.lawson.com> for reporting this. - - * tests/MT_SOCK_Test.cpp: Reformatted the code to make it more - readable and also to remove a C-style cast. - - * ace/Message_Queue_T.h: Improved the documentation of the low - water mark and high water marks. Thanks to Umar for encouraging - this. - -Thu Aug 6 20:41:44 1998 James C Hu - - * ace/Filecache.cpp: Avoided a deadlock detected by Tom Dobridge - (thanks!). - -Thu Aug 06 14:59:22 1998 Irfan Pyarali - - * ace/Strategies_T.cpp (connect_svc_handler): If is not - connected to the correct address or is busy, we will not use it. - Therefore we need to set it to zero. - - * ace/Synch: Added template specializations for - ACE_Guard, ACE_Write_Guard, and - ACE_Read_Guard. - -Thu Aug 6 14:30:11 1998 Carlos O'Ryan - - * ace/config-irix6.x-sgic++-nothreads.h: - Use template specializations instead of pragmas if the compiler - is 7.2 or better. - - * ace/config-irix6.x-sgic++.h: - The is not necessary in IRIX 6.4 - -Thu Aug 06 14:11:15 1998 Nanbor Wang - - * ace/Message_Queue_T.cpp: Make sure to check if the cur_bytes_ is - <= to the low_water_mark before signaling threads trying to - enqueue a Message_Block. - - * ace/Message_Queue_T.cpp: Fixed a bunch of code to use the - ACE_NEW_RETURN macro to ensure that errno is set correctly. - - * ace/Message_Queue.h: Changed the DEFAULT_LWM to be the same as - the DEFAULT_HWM since that's the "Right Way"[TM] to handle - this... Thanks to Umar Syyid for helping to - track this down. - - * ace/Message_Queue_T.i (is_empty_i): Removed the low water mark - logic entirely because this isn't the right place to put it. - Also reverted back to using && rather than || since we need - to handle "0-sized" messages. - -Thu Aug 6 09:41:22 1998 Nagarajan Surendran - - * ace/ARGV.{h,cpp} : Added a new - ACE_ARGV(ASYS_TCHAR *first_argv,ASYS_TCHAR *second_argv,int) - which creates a new ARGV which is the concatenation of the 2 argvs. - - Also added a new private method argv_to_string - which converts an argv to a string. - -Thu Aug 6 08:56:02 1998 Douglas C. Schmidt - - * ace/Module.h: Pointed out that ACE_Module should't be subclassed - -- ACE_Task should be subclasses. Thanks to Barney Dalton - for pointing this out. - -Wed Aug 05 23:57:16 1998 Irfan Pyarali - - * ace/Reactor.cpp (end_event_loop): Changed the code so that *all* - threads are woken up. Thanks to Olivier Lau - for pointing this bug out. - - * examples/Reactor/ReactorEx/test_multithreading.cpp (main): - Changed Reactor->close() to Reactor::end_event_loop(). - -Wed Aug 5 23:12:54 1998 Douglas C. Schmidt - - * include/makeinclude/wrapper_macros.GNU: Changed - PURE_CACHE_DIR = $(PURE_CACHE_BASE_DIR)-$(LOGNAME)-$(CXX) - - to - - PURE_CACHE_DIR = $(PURE_CACHE_BASE_DIR)-$(LOGNAME)-$(notdir $(CXX) ) - - Thanks to John Mulhern <9107@mn3.lawson.lawson.com> for this. - -Wed Aug 05 14:53:18 1998 Irfan Pyarali - - * ace/Strategies_T.cpp (connect_svc_handler): When using this - method, the user was required to pass us a zero for the - svc_handler. We would either find them a non-busy one, or will - create a new one. - - Unfortunately, the svc_handler lookup was taking too long. - Therefore, the following change was made to the - connect_svc_handler algorithm: the user is now allowed to pass - in the svc_handler that they used last as a "hint". The - algorithm first checks to see if the "hint" svc_handler is - connected to the correct address and is recyclable. If it is, - then it recycles the "hint" svc_handler and gives it back to the - user. This should improve the lookups in most cases. - - * ace/Svc_Handler.cpp (recycling_act): Added accessor to get the - . - - * tests/Conn_Test.cpp (idle): Added method so that we can tell - when a Svc_Handler is being set to idle. Also changed the test - so that it can use the new "hint" mechanism in the cached - connector. - -Wed Aug 5 16:12:34 1998 Nanbor Wang - - * ace/Log_Msg.cpp: Replaced usage of ACE_OS::thr_* with - ACE_Thread::*. Thanks to Arturo Montes - for sending the patches. - -Wed Aug 5 11:07:12 1998 Douglas C. Schmidt - - * ace/Service_Manager: Cleaned up the documentation and formatting - a bit. - - * ace/Message_Queue_T.i: Changed the computation of is_empty_i() - so that it's - - return this->cur_bytes_ <= this->low_water_mark_ || this->cur_count_ <= 0; - - i.e., we use an || rather than a &&. Thanks to Umar for - reporting this. - - * ace/Message_Queue_T.i: Changed the computation of is_empty_i() so - that it doesn't consider the queue to be empty unless the - cur_bytes_ <= the low_water_mark_ (which defaults to 0 so that - no existing code is affected). This change makes it possible - for producer/consumer threading applications to avoid the "silly - window syndrome." Thanks to Umar Syyid for - suggesting this. - -Wed Aug 05 00:10:27 1998 Irfan Pyarali - - * ace/OS.i (strnstr (both Unicode and Multibyte versions)): - * ace/SString.cpp (strstr): - Fixed "off by one error" in searching algorithm. Thanks to - Byron Harris for pointing this out. - - * tests/SString_Test.cpp (main): Added new test cases. - -Tue Aug 4 21:56:16 1998 Nanbor Wang - - * tests/TSS_Test.cpp: - * examples/Thread/thread_specific.cpp: Replaced ACE_OS::thr_* with - ACE_Thread::*. Thanks to Arturo Montes - for sending the patches. - -Tue Aug 4 18:44:54 1998 Gonzalo Diethelm - - * ACE-INSTALL.html: - Updated the file to recommend the creation of config.h as a - regular file that includes the appropriate platform config file, - instead of setting it to be a symlink. This is more flexible and - allows the user to redefine some of the ACE configuration - parameters. - - * ace/config-linux-common.h: - As an example of the above, now the user can #define - ACE_HAS_IP_MULTICAST in his config.h file to 0, and he won't be - using multicast under linux. This is clearer than having to edit - the config-linux-common.h file, which will now respect the user's - settings (if any).. - -Tue Aug 4 17:39:12 1998 Steve Huston - - * ace/ACE_Library.{mak mdp}: Added TP_Reactor.cpp to the project. - - * tests/Aio_Platform_Test.cpp: Don't try to sysconf() for the AIO - values if there's no chance of AIO on the system (_POSIX_ASYNC_IO - not defined at compile time). - - * examples/OS/Process/Process.dsp: Link against ace.lib for Release, - aced.lib for Debug (these were reversed). - -Tue Aug 4 12:09:51 1998 Douglas C. Schmidt - - * ace/OS.h: Clarified the fact that the ACE_DEFAULT_MUITCAST_ADDR - must be within the range for host group addresses: 224.0.0.0 to - 239.255.255.255. Thanks to Christa Schwanninger - for reporting this. - -Tue Aug 04 11:01:18 1998 Nanbor Wang - - * bin/GenExportH.BAT: Moved from TAO/TAO_IDL/. - - * ace/Token.{h,cpp} (signal_all_threads): Added this method which - changes the return values of all acquire method to 2. The last - thread waiting for the token will reset the signal state - (therefore, there's NO cancel_signal_all_threads method.) - (shared_acquire): Return 2 if the token is signaled after - acquiring the token successfully. - (release): If the token is signaled and there's no other thread - waiting to acquire the token, reset the signal state. - - * ace/TP_Reactor.{h,i,cpp} (wakeup_all_threads): Added - implementation for this virtual function. It "signals" the - token threads are waiting on and wake them up by notifying the - reactor. - (handle_events): Check to see if the reactor token is signaled - after acquiring it. If the the token is signaled, it will not - proceed to handle events (by calling select) but instead return - successfully. This allow the thread the chance to check if it's - time to shut down the event loop. - -Mon Aug 3 17:53:48 1998 Gonzalo Diethelm - - * performance-tests/Makefile: - * performance-tests/Misc/basic_func.cpp: - * performance-tests/Misc/basic_perf.cpp: - * performance-tests/Misc/childbirth_time.cpp: - * performance-tests/Misc/context_switch_time.cpp: - * performance-tests/Misc/preempt.cpp: - * performance-tests/Misc/test_mutex.cpp: - * performance-tests/Misc/test_naming.cpp: - * performance-tests/Misc/test_singleton.cpp: - * performance-tests/Synch-Benchmarks/Benchmark_Base.cpp: - * performance-tests/Synch-Benchmarks/Benchmark_Performance.cpp: - * performance-tests/Synch-Benchmarks/Options.cpp: - * performance-tests/Synch-Benchmarks/Performance_Test.cpp: - * performance-tests/Synch-Benchmarks/condb_test.cpp: - * performance-tests/Synch-Benchmarks/conds_test.cpp: - * performance-tests/Synch-Benchmarks/context_test.cpp: - * performance-tests/Synch-Benchmarks/memory_test.cpp: - * performance-tests/Synch-Benchmarks/mutex_test.cpp: - * performance-tests/Synch-Benchmarks/pipe_proc_test.cpp: - * performance-tests/Synch-Benchmarks/pipe_thr_test.cpp: - * performance-tests/Synch-Benchmarks/recursive_lock_test.cpp: - * performance-tests/Synch-Benchmarks/rwrd_test.cpp: - * performance-tests/Synch-Benchmarks/rwwr_test.cpp: - * performance-tests/Synch-Benchmarks/sema_test.cpp: - * performance-tests/Synch-Benchmarks/synch_driver.cpp: - * performance-tests/Synch-Benchmarks/sysvsema_test.cpp: - * performance-tests/Synch-Benchmarks/token_test.cpp: - * performance-tests/TTCP/ACE-C++/wrapper-new-ttcp.cpp: - * performance-tests/TTCP/C/new-ttcp.cpp: - * performance-tests/TTCP/ORBeline/ttcp_i.cpp: - * performance-tests/TTCP/Orbix/ttcpC.cpp: - * performance-tests/TTCP/Orbix/ttcpS.cpp: - * performance-tests/TTCP/Orbix/ttcp_i.cpp: - * performance-tests/UDP/udp_test.cpp: - Added ACE_RCSID to these files. - -Sun Aug 2 19:43:04 1998 Darrell Brunsch - - * tests/Reactor_Performance_Test.cpp: Made a change suggested by - Irfan to allow this test to work in Windows 95. - -Sat Aug 1 20:35:32 1998 Douglas C. Schmidt - - * ace: - include/makeinclude: - Added new config/platform files for SCO. These files enable the - following: - - - TAO_IDL work newly in SCO OpenServer. - - Fixed a compilation problem with EventService in TAO. - - Fixed a problem with ACE and TAO shared libraries. - - Some test with TSS_Emulation and recent changes in Thread_Manager. - - Thanks to Arturo for these changes. - -Sat Aug 01 13:34:12 1998 Irfan Pyarali - - * ace/OS.i (flock_wrlock): LockFileEx() and UnLockFileEx() are not - implemented on Win32. Therefore, the flock methods were changed - to use the non-Ex versions on Win95. Thanks to XuYifeng - for pointing this out. - - While making the changes, I found that there were a couple bugs - in the code: (a) the parameter was being ignored and - (b) the adjustment for == 0 was incorrect. I think I have - fixed both of these also in ACE_OS::adjust_flock_params(). - - One last thing: I changed flock_unlock() to use UnLockFile() - instead of UnLockFileEx(). UnLockFileEx() is also not supported - on Win95. Hopefully, it is ok to lock with LockFileEx() and - unlock with UnLockFile() instead of UnLockFileEx(). - - * ace/OS.cpp (pread): Changed bytes_written to bytes_read. - -Fri Jul 31 23:47:50 1998 Carlos O'Ryan - - * bin/auto_compile: - We now run several on-button tests in TAO, though it is still - hard to detect any errors. - -Fri Jul 31 21:33:22 1998 Douglas C. Schmidt - - * ace/Select_Reactor.cpp (open): Changed the code to ignore the - return value from ACE::set_handle_limit(). Thanks to Zheng Han - for reporting this and to Arturo for - suggesting the fix. - - * ace/ARGV.cpp: Enhanced the implemenation of string_to_array() so - that it should always work correctly even if there are a large - number of bytes in the original buf string. - - * ace/ARGV.cpp: Renamed string_to_array() to string_to_argv(), - which is more intuitive. - - * ace/OS.h: Added a new macro called ACE_DEFAULT_ARGV_BUFSIZ, - which is used as the default size of all the "argv" contents in - ACE_ARGV. This defaults to 4 kbytes. - -Fri Jul 31 19:55:10 1998 Gonzalo Diethelm - - * netsvcs/clients/Logger/direct_logging.cpp: - * netsvcs/clients/Logger/indirect_logging.cpp: - * netsvcs/clients/Naming/Client/Client_Test.cpp: - * netsvcs/clients/Naming/Client/main.cpp: - * netsvcs/clients/Naming/Dump_Restore/Dump_Restore.cpp: - * netsvcs/clients/Naming/Dump_Restore/createfile.cpp: - * netsvcs/clients/Naming/Dump_Restore/main.cpp: - * netsvcs/clients/Tokens/collection/collection.cpp: - * netsvcs/clients/Tokens/collection/rw_locks.cpp: - * netsvcs/clients/Tokens/deadlock/deadlock_detection_test.cpp: - * netsvcs/clients/Tokens/invariant/invariant.cpp: - * netsvcs/clients/Tokens/manual/manual.cpp: - * netsvcs/clients/Tokens/mutex/test_mutex.cpp: - * netsvcs/clients/Tokens/rw_lock/rw_locks.cpp: - * netsvcs/lib/Base_Optimizer.cpp: - * netsvcs/lib/Client_Logging_Handler.cpp: - * netsvcs/lib/Log_Message_Receiver.cpp: - * netsvcs/lib/Logging_Strategy.cpp: - * netsvcs/lib/Name_Handler.cpp: - * netsvcs/lib/Server_Logging_Handler.cpp: - * netsvcs/lib/Server_Logging_Handler_T.cpp: - * netsvcs/lib/TS_Clerk_Handler.cpp: - * netsvcs/lib/TS_Server_Handler.cpp: - * netsvcs/lib/Token_Handler.cpp: - * netsvcs/servers/main.cpp: - Added ACE_RCSID to these files. - -Fri Jul 31 19:15:58 1998 Irfan Pyarali - - * ace/OS.cpp (pwrite and pread): There were many bugs in these two - methods. - - - It was assumed that it is ok to call WriteFile/ReadFile with - an OVERLAPPED structure. This is not true on Windows95. - Therefore, code had to be added to make sure that on - Windows95, WriteFile and ReadFile were called without an - OVERLAPPED struct. - - - We were assuming that if we used the OVERLAPPED struct, the - file pointer would not move. It turns out that the OVERLAPPED - struct has nothing with whether the file pointer moves or not. - It has to do with whether the file was opened with - FILE_FLAG_OVERLAPPED or not. Since it is not possible to - figure whether the file handle we got was opened with this - flag or not, we have to program defensively and reset the file - pointer in any case. - - - Also the !ACE_HAS_P_READ_WRITE implementation was not - restoring the file pointer to its original position. This was - also fixed. - -Fri Jul 31 18:33:39 1998 Gonzalo Diethelm - - * apps/Gateway/Gateway/Concrete_Connection_Handlers.cpp: - * apps/Gateway/Gateway/Config_Files.cpp: - * apps/Gateway/Gateway/Connection_Handler.cpp: - * apps/Gateway/Gateway/Connection_Handler_Acceptor.cpp: - * apps/Gateway/Gateway/Connection_Handler_Connector.cpp: - * apps/Gateway/Gateway/Event_Channel.cpp: - * apps/Gateway/Gateway/Event_Forwarding_Discriminator.cpp: - * apps/Gateway/Gateway/File_Parser.cpp: - * apps/Gateway/Gateway/Gateway.cpp: - * apps/Gateway/Gateway/Options.cpp: - * apps/Gateway/Gateway/gatewayd.cpp: - * apps/Gateway/Peer/Options.cpp: - * apps/Gateway/Peer/Peer.cpp: - * apps/Gateway/Peer/peerd.cpp: - * apps/Orbix-Examples/Event_Comm/Consumer/Input_Handler.cpp: - * apps/Orbix-Examples/Event_Comm/Consumer/Notification_Receiver_Handler.cpp: - * apps/Orbix-Examples/Event_Comm/Consumer/consumer.cpp: - * apps/Orbix-Examples/Event_Comm/Supplier/Input_Handler.cpp: - * apps/Orbix-Examples/Event_Comm/Supplier/Notifier_Handler.cpp: - * apps/Orbix-Examples/Event_Comm/Supplier/supplier.cpp: - * apps/Orbix-Examples/Event_Comm/libsrc/Event_CommC.cpp: - * apps/Orbix-Examples/Event_Comm/libsrc/Event_CommS.cpp: - * apps/Orbix-Examples/Event_Comm/libsrc/Notification_Receiver_i.cpp: - * apps/Orbix-Examples/Event_Comm/libsrc/Notifier_i.cpp: - * apps/Orbix-Examples/Logger/Logger.cpp: - * apps/Orbix-Examples/Logger/client.cpp: - * apps/Orbix-Examples/Logger/loggerS.cpp: - * apps/Orbix-Examples/Logger/logger_i.cpp: - * apps/Orbix-Examples/Logger/server.cpp: - Added ACE_RCSID to these files. - -Fri Jul 31 17:50:01 1998 Gonzalo Diethelm - - * ace/TP_Reactor.cpp: - Added ACE_RCSID to this file, and all the .cpp files in examples, - listed below. - - * examples/ASX/CCM_App/CCM_App.cpp: - * examples/ASX/CCM_App/SC_Client.cpp: - * examples/ASX/CCM_App/SC_Server.cpp: - * examples/ASX/Event_Server/Event_Server/Consumer_Router.cpp: - * examples/ASX/Event_Server/Event_Server/Event_Analyzer.cpp: - * examples/ASX/Event_Server/Event_Server/Options.cpp: - * examples/ASX/Event_Server/Event_Server/Peer_Router.cpp: - * examples/ASX/Event_Server/Event_Server/Supplier_Router.cpp: - * examples/ASX/Event_Server/Event_Server/event_server.cpp: - * examples/ASX/Event_Server/Transceiver/transceiver.cpp: - * examples/ASX/Message_Queue/bounded_buffer.cpp: - * examples/ASX/Message_Queue/buffer_stream.cpp: - * examples/ASX/Message_Queue/priority_buffer.cpp: - * examples/ASX/UPIPE_Event_Server/Consumer_Router.cpp: - * examples/ASX/UPIPE_Event_Server/Event_Analyzer.cpp: - * examples/ASX/UPIPE_Event_Server/Options.cpp: - * examples/ASX/UPIPE_Event_Server/Peer_Router.cpp: - * examples/ASX/UPIPE_Event_Server/Supplier_Router.cpp: - * examples/ASX/UPIPE_Event_Server/event_server.cpp: - * examples/CORBA/Test_i.cpp: - * examples/CORBA/client.cpp: - * examples/CORBA/server.cpp: - * examples/Connection/blocking/SPIPE-acceptor.cpp: - * examples/Connection/blocking/SPIPE-connector.cpp: - * examples/Connection/blocking/test_spipe_acceptor.cpp: - * examples/Connection/blocking/test_spipe_connector.cpp: - * examples/Connection/misc/Connection_Handler.cpp: - * examples/Connection/misc/test_upipe.cpp: - * examples/Connection/non_blocking/CPP-acceptor.cpp: - * examples/Connection/non_blocking/CPP-connector.cpp: - * examples/Connection/non_blocking/test_lsock_acceptor.cpp: - * examples/Connection/non_blocking/test_lsock_connector.cpp: - * examples/Connection/non_blocking/test_sock_acceptor.cpp: - * examples/Connection/non_blocking/test_sock_connector.cpp: - * examples/Connection/non_blocking/test_spipe_acceptor.cpp: - * examples/Connection/non_blocking/test_spipe_connector.cpp: - * examples/Connection/non_blocking/test_tli_acceptor.cpp: - * examples/Connection/non_blocking/test_tli_connector.cpp: - * examples/IOStream/client/iostream_client.cpp: - * examples/IOStream/server/iostream_server.cpp: - * examples/IPC_SAP/DEV_SAP/reader/reader.cpp: - * examples/IPC_SAP/DEV_SAP/writer/writer.cpp: - * examples/IPC_SAP/FIFO_SAP/FIFO-Msg-client.cpp: - * examples/IPC_SAP/FIFO_SAP/FIFO-Msg-server.cpp: - * examples/IPC_SAP/FIFO_SAP/FIFO-client.cpp: - * examples/IPC_SAP/FIFO_SAP/FIFO-server.cpp: - * examples/IPC_SAP/FIFO_SAP/FIFO-test.cpp: - * examples/IPC_SAP/FILE_SAP/client.cpp: - * examples/IPC_SAP/SOCK_SAP/C-inclient.cpp: - * examples/IPC_SAP/SOCK_SAP/C-inserver.cpp: - * examples/IPC_SAP/SOCK_SAP/CPP-inclient.cpp: - * examples/IPC_SAP/SOCK_SAP/CPP-inserver-fancy.cpp: - * examples/IPC_SAP/SOCK_SAP/CPP-inserver-poll.cpp: - * examples/IPC_SAP/SOCK_SAP/CPP-inserver.cpp: - * examples/IPC_SAP/SOCK_SAP/CPP-unclient.cpp: - * examples/IPC_SAP/SOCK_SAP/CPP-unserver.cpp: - * examples/IPC_SAP/SOCK_SAP/FD-unclient.cpp: - * examples/IPC_SAP/SOCK_SAP/FD-unserver.cpp: - * examples/IPC_SAP/SPIPE_SAP/NPClient.cpp: - * examples/IPC_SAP/SPIPE_SAP/NPServer.cpp: - * examples/IPC_SAP/SPIPE_SAP/client.cpp: - * examples/IPC_SAP/SPIPE_SAP/consumer_msg.cpp: - * examples/IPC_SAP/SPIPE_SAP/consumer_read.cpp: - * examples/IPC_SAP/SPIPE_SAP/producer_msg.cpp: - * examples/IPC_SAP/SPIPE_SAP/producer_read.cpp: - * examples/IPC_SAP/SPIPE_SAP/server.cpp: - * examples/IPC_SAP/TLI_SAP/CPP-client.cpp: - * examples/IPC_SAP/TLI_SAP/CPP-server.cpp: - * examples/IPC_SAP/TLI_SAP/db-client.cpp: - * examples/IPC_SAP/TLI_SAP/db-server.cpp: - * examples/IPC_SAP/TLI_SAP/ftp-client.cpp: - * examples/IPC_SAP/TLI_SAP/ftp-server.cpp: - * examples/IPC_SAP/UPIPE_SAP/ex1.cpp: - * examples/IPC_SAP/UPIPE_SAP/ex2.cpp: - * examples/IPC_SAP/UPIPE_SAP/ex3.cpp: - * examples/Log_Msg/test_log_msg.cpp: - * examples/Logger/Acceptor-server/server_loggerd.cpp: - * examples/Logger/client/logging_app.cpp: - * examples/Logger/simple-server/Logging_Acceptor.cpp: - * examples/Logger/simple-server/Logging_Handler.cpp: - * examples/Logger/simple-server/server_loggerd.cpp: - * examples/Map_Manager/test_hash_map_manager.cpp: - * examples/Mem_Map/IO-tests/IO_Test.cpp: - * examples/Mem_Map/IO-tests/test_io.cpp: - * examples/Mem_Map/file-reverse/file-reverse.cpp: - * examples/Misc/test_XtReactor1.cpp: - * examples/Misc/test_XtReactor2.cpp: - * examples/Misc/test_dump.cpp: - * examples/Misc/test_get_opt.cpp: - * examples/Misc/test_profile_timer.cpp: - * examples/Misc/test_read_buffer.cpp: - * examples/Misc/test_set.cpp: - * examples/Misc/test_sstring.cpp: - * examples/Misc/test_trace.cpp: - * examples/Naming/test_multiple_contexts.cpp: - * examples/Naming/test_non_existent.cpp: - * examples/Naming/test_open.cpp: - * examples/Naming/test_writers.cpp: - * examples/OS/Process/imore.cpp: - * examples/OS/Process/process.cpp: - * examples/Reactor/Dgram/CODgram.cpp: - * examples/Reactor/Dgram/Dgram.cpp: - * examples/Reactor/FIFO/client.cpp: - * examples/Reactor/FIFO/server.cpp: - * examples/Reactor/Misc/notification.cpp: - * examples/Reactor/Misc/pingpong.cpp: - * examples/Reactor/Misc/test_demuxing.cpp: - * examples/Reactor/Misc/test_event_handler_t.cpp: - * examples/Reactor/Misc/test_reactors.cpp: - * examples/Reactor/Misc/test_signals_1.cpp: - * examples/Reactor/Misc/test_signals_2.cpp: - * examples/Reactor/Misc/test_time_value.cpp: - * examples/Reactor/Misc/test_timer_queue.cpp: - * examples/Reactor/Multicast/Log_Wrapper.cpp: - * examples/Reactor/Multicast/client.cpp: - * examples/Reactor/Multicast/server.cpp: - * examples/Reactor/Ntalker/ntalker.cpp: - * examples/Reactor/Proactor/test_multiple_loops.cpp: - * examples/Reactor/Proactor/test_proactor.cpp: - * examples/Reactor/Proactor/test_proactor_with_aio.cpp: - * examples/Reactor/Proactor/test_timeout.cpp: - * examples/Reactor/ReactorEx/test_abandoned.cpp: - * examples/Reactor/ReactorEx/test_apc.cpp: - * examples/Reactor/ReactorEx/test_console_input.cpp: - * examples/Reactor/ReactorEx/test_directory_changes.cpp: - * examples/Reactor/ReactorEx/test_exceptions.cpp: - * examples/Reactor/ReactorEx/test_multithreading.cpp: - * examples/Reactor/ReactorEx/test_network_events.cpp: - * examples/Reactor/ReactorEx/test_prerun_state_changes.cpp: - * examples/Reactor/ReactorEx/test_registration.cpp: - * examples/Reactor/ReactorEx/test_registry_changes.cpp: - * examples/Reactor/ReactorEx/test_removals.cpp: - * examples/Reactor/ReactorEx/test_talker.cpp: - * examples/Reactor/ReactorEx/test_timeouts.cpp: - * examples/Reactor/ReactorEx/test_window_messages.cpp: - * examples/Registry/test_registry_iterator.cpp: - * examples/Registry/test_registry_update.cpp: - * examples/Service_Configurator/IPC-tests/client/broadcast_client_test.cpp: - * examples/Service_Configurator/IPC-tests/client/local_dgram_client_test.cpp: - * examples/Service_Configurator/IPC-tests/client/local_fifo_client_test.cpp: - * examples/Service_Configurator/IPC-tests/client/local_pipe_client_test.cpp: - * examples/Service_Configurator/IPC-tests/client/local_spipe_client_test.cpp: - * examples/Service_Configurator/IPC-tests/client/local_stream_client_test.cpp: - * examples/Service_Configurator/IPC-tests/client/remote_dgram_client_test.cpp: - * examples/Service_Configurator/IPC-tests/client/remote_service_directory_test.cpp: - * examples/Service_Configurator/IPC-tests/client/remote_stream_client_test.cpp: - * examples/Service_Configurator/IPC-tests/client/remote_thr_stream_client_test.cpp: - * examples/Service_Configurator/IPC-tests/server/Handle_Broadcast.cpp: - * examples/Service_Configurator/IPC-tests/server/Handle_L_CODgram.cpp: - * examples/Service_Configurator/IPC-tests/server/Handle_L_Dgram.cpp: - * examples/Service_Configurator/IPC-tests/server/Handle_L_FIFO.cpp: - * examples/Service_Configurator/IPC-tests/server/Handle_L_Pipe.cpp: - * examples/Service_Configurator/IPC-tests/server/Handle_L_SPIPE.cpp: - * examples/Service_Configurator/IPC-tests/server/Handle_L_Stream.cpp: - * examples/Service_Configurator/IPC-tests/server/Handle_R_Dgram.cpp: - * examples/Service_Configurator/IPC-tests/server/Handle_R_Stream.cpp: - * examples/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.cpp: - * examples/Service_Configurator/IPC-tests/server/Handle_Timeout.cpp: - * examples/Service_Configurator/IPC-tests/server/server_test.cpp: - * examples/Service_Configurator/Misc/Timer_Service.cpp: - * examples/Service_Configurator/Misc/main.cpp: - * examples/Shared_Malloc/Malloc.cpp: - * examples/Shared_Malloc/Options.cpp: - * examples/Shared_Malloc/test_malloc.cpp: - * examples/Shared_Malloc/test_multiple_mallocs.cpp: - * examples/Shared_Malloc/test_persistence.cpp: - * examples/Shared_Memory/test_MM.cpp: - * examples/Shared_Memory/test_SV.cpp: - * examples/System_V_IPC/SV_Message_Queues/MQ_Client.cpp: - * examples/System_V_IPC/SV_Message_Queues/MQ_Server.cpp: - * examples/System_V_IPC/SV_Message_Queues/TMQ_Client.cpp: - * examples/System_V_IPC/SV_Message_Queues/TMQ_Server.cpp: - * examples/System_V_IPC/SV_Semaphores/Semaphores_1.cpp: - * examples/System_V_IPC/SV_Semaphores/Semaphores_2.cpp: - * examples/System_V_IPC/SV_Shared_Memory/SV_Shared_Memory_Test.cpp: - * examples/Threads/auto_event.cpp: - * examples/Threads/barrier1.cpp: - * examples/Threads/barrier2.cpp: - * examples/Threads/cancel.cpp: - * examples/Threads/future1.cpp: - * examples/Threads/future2.cpp: - * examples/Threads/manual_event.cpp: - * examples/Threads/process_manager.cpp: - * examples/Threads/process_mutex.cpp: - * examples/Threads/process_semaphore.cpp: - * examples/Threads/reader_writer.cpp: - * examples/Threads/recursive_mutex.cpp: - * examples/Threads/task_five.cpp: - * examples/Threads/task_four.cpp: - * examples/Threads/task_one.cpp: - * examples/Threads/task_three.cpp: - * examples/Threads/task_two.cpp: - * examples/Threads/thread_manager.cpp: - * examples/Threads/thread_pool.cpp: - * examples/Threads/thread_specific.cpp: - * examples/Threads/token.cpp: - * examples/Threads/tss1.cpp: - * examples/Threads/tss2.cpp: - * examples/Threads/wfmo.cpp: - * examples/Timer_Queue/Async_Timer_Queue_Test.cpp: - * examples/Timer_Queue/Driver.cpp: - * examples/Timer_Queue/Reactor_Timer_Queue_Test.cpp: - * examples/Timer_Queue/Thread_Timer_Queue_Test.cpp: - * examples/Timer_Queue/main_async.cpp: - * examples/Timer_Queue/main_reactor.cpp: - * examples/Timer_Queue/main_thread.cpp: - -Fri Jul 31 12:07:16 1998 Irfan Pyarali - - * ace/XtReactor.cpp (XtWaitForMultipleEvents): The first select() - is made with the correct width. In XtAppProcessEvent(), the - descriptor set may change, so the underlying handle_max may also - have changed. The second select() is made with an incorrect - value for the width. The solution is to reinitialize width - before calling select() again. Thanks to J-M Strauss - for suggesting this change. - -Fri Jul 31 11:18:24 1998 Steve Huston - - * ACE-INSTALL.html: Removed the direction to set global include/library - paths in MSVC 4.2. - -Fri Jul 31 08:23:14 1998 Douglas C. Schmidt - - * examples/Misc/test_XtReactor[12].cpp: Updated these files so - they will work correctly with the "new" Reactor structure. Boy, - it's been a long time since anyone actually tried to use this - stuff... ;-) Thanks to J-M Strauss for - reporting this. - -Thu Jul 30 21:25:31 1998 Nanbor Wang - - * ace/Svc_Conf_y.cpp: This file didn't get patched with our - routine patch. Applied $ACE_ROOT/Svc_Conf_y.cpp.diff manually. - This change eliminates some warnings from g++. - -Thu Jul 30 19:03:12 1998 Douglas C. Schmidt - - * examples/Timer_Queue/Thread_Timer_Queue_Test.h: Changed the type - to class Thread_Timer_Queue_Test_Driver from - Timer_Queue_Test_Driver to work around a bug with MSVC++. Thanks to - Gonzo for pointing this out. - - * examples/Connection/blocking/SPIPE-{connector,acceptor}.cpp: - Added #include "ace/Proactor.h". Thanks to Gonzo for reporting - this. - -Thu Jul 30 17:54:14 1998 Nanbor Wang - - * tests/test_config.h: Added /**/ between #include and - to avoid MSVC warnings. - - * tests/WinCE/ce_tests.dsw: Renamed project - Message_Queue_Notifications_Test to MsgQueue_Notifications_Test. - - * tests/WinCE/Reactor_Performance_Test.dsp: This project file was - somehow missing. - - * tests/TSS_Test.cpp: - * tests/Reader_Writer_Test.cpp: - * tests/Message_Queue_Test.cpp: Added numerous ASYS_TEXT macros to - make sure we use the right strings on CE. - -Thu Jul 30 14:56:59 1998 Gonzalo A. Diethelm - - * ace/ACE.h: - * ace/ACE.cpp: - * ace/Event_Handler.h: - * ace/Event_Handler.cpp: - Moved the following static functions: - - register_stdin_handler - remove_stdin_handler - read_adapter - - from class ACE to class ACE_Event_Handler. That breaks a - dependency from ACE to higher-level classes. - - * netsvcs/clients/Naming/Dump_Restore/Dump_Restore.cpp: - * netsvcs/clients/Naming/Client/Client_Test.cpp: - * examples/Timer_Queue/Reactor_Timer_Queue_Test.cpp: - * examples/Timer_Queue/Async_Timer_Queue_Test.dsp: - * examples/Timer_Queue/Reactor_Timer_Queue_Test.dsp: - * examples/Timer_Queue/Thread_Timer_Queue_Test.dsp: - * examples/Reactor/Ntalker/ntalker.cpp: - * examples/Reactor/Misc/test_demuxing.cpp: - * examples/Reactor/Misc/notification.cpp: - * examples/Connection/blocking/SPIPE-connector.cpp: - * examples/ASX/UPIPE_Event_Server/event_server.cpp: - * examples/ASX/Event_Server/Transceiver/transceiver.cpp: - * examples/ASX/Event_Server/Event_Server/event_server.cpp: - * apps/Gateway/Peer/Peer.cpp: - * apps/Gateway/Gateway/Gateway.cpp: - All these were modified by the above change. - - * ace/OS.h: - * ace/OS.i: - Added a strnew function that works as strdup but uses new instead - of malloc to allocate memory. - -Thu Jul 30 16:54:20 1998 Douglas C. Schmidt - - * ACE version 4.5.26 released. - -Thu Jul 30 13:01:12 1998 Douglas C. Schmidt - - * ace/Task.h (ACE_Task_Base): Changed the spelling of - ACE_Task_Exit to ACE_Thread_Exit, which is correct. - Thanks to Daniel Winder for - reporting this. - -Thu Jul 30 08:43:41 1998 Steve Huston - - * tests/tests.(mdp mak): Made include and library paths relative. - -Thu Jul 30 02:22:49 1998 Nanbor Wang - - * ace/Synch_T.cpp (ts_init): Casted away constness of key_. - Changed to cast away constness of the pointer to once_. - -Thu Jul 30 01:12:30 1998 Douglas C. Schmidt - - * ace/TP_Reactor.i (notify_handle): Added an ASYS_TEXT where it - was missing. Thanks to Dieter Quehl for reporting this. - - * ace/Synch_T.cpp: It wasn't possible to call ts_object() to set - an initial zero pointer value. The solution is to give - ts_object() the same ability to initialize the key as ts_get(). - I also factored out some common code into a new method called - ts_init(). Thanks to Bob McWhirter for - reporting this. - -Wed Jul 29 23:58:04 1998 Douglas C. Schmidt - - * examples/Reactor/Ntalker: Added a README file and made some - stylistic changes to the ntalker.cpp example. - -Wed Jul 29 18:38:17 1998 Douglas C. Schmidt - - * ACE version 4.5.25 released. - -Wed Jul 29 17:46:21 1998 Douglas C. Schmidt - - * ace/Task_T.h: Updated documentation to explain that - ACE_Time_Values are ABSOLUTE rather than relative. Thanks to - James Johnson for reporting this. - -Wed Jul 29 16:05:16 1998 Carlos O'Ryan - - * bin/Process_Unix.pm: - Use SIGTERM instead of SIGHUP to kill a process, it is the Right - Thing and SIGHUP will not work in some cases because it is usual - to catch this signal. - -Wed Jul 29 14:04:49 1998 Irfan Pyarali - - * ace/Asynch_Acceptor.cpp (open): Added - as an extra parameter to - open(). is the number of - asynchronous accepts that are started at the end of . If - is -1, then - is set to and hence - number of asynchronous accepts are started. - - (get_handle): New method to get the underlying handle. - - (set_handle): New method to set the underlying listen handle. It - is the user's responsibility to make sure that the old listen - handle has been appropriately closed and the all outstanding - asynchronous operations have either completed or have been - canceled on the old listen handle. - -Wed Jul 29 12:49:09 1998 Nanbor Wang - - * ace/Makefile (FILES): Added TP_Reactor to the build list. - Updated dependency. - - * ace/TP_Reactor.{h,i} (handle_events,notify_handler): Added two - dummy methods to avoid warnings from SunCC. Thanks to Carlos - for noticing this. - -Wed Jul 29 09:41:23 1998 David L. Levine - - * ace/config-linux-common.h: added #define - ACE_DEFAULT_SELECT_REACTOR_SIZE 256 so that the - ACE_Select_Reactor works with this fix: - - if (size > (size_t) ACE::max_handles ()) - return ACE::set_handle_limit (size); - - On Linux (2.0.34), only root can set RLIMIT_NOFILE above 256. - -Wed Jul 29 04:19:05 1998 Nanbor Wang - - * Integrate TP_Reactor into ACE. Major framwork designed by - Irfan. Here's his changelog: - - * ace/TP_Reactor.h (ACE_TP_Reactor): One of the short comings of - the Select_Reactor in ACE was that it did not support a thread - pool based event dispatching model, similar to the one in - WFMO_Reactor. In Select_Reactor, only thread can be blocked - in handle_events() at any given time. - - A new Reactor has been added to ACE that removes this - short-coming. TP_Reactor is a specialization of Select - Reactor to support thread-pool based event dispatching. This - Reactor takes advantage of the fact that events reported by - select() are persistent if not acted upon immediately. It - works by remembering the event handler that just got - activated, releasing the internal lock (so that some other - thread can start waiting in the event loop) and then - dispatching the event handler outside the context of the - Reactor lock. - - This Reactor is best suited for situations when the callbacks - to event handlers can take arbitrarily long and/or a number of - threads are available to run the event loops. - - Note that callback code in Event Handlers - (e.g. Event_Handler::handle_input) does not have to be - modified or made thread-safe for this Reactor. This is - because an activated Event Handler is suspended in the Reactor - before the upcall is made and resumed after the upcall - completes. Therefore, one Event Handler cannot be called by - multiple threads simultaneously. - - * ace/Reactor.cpp (ACE_Reactor): - ACE_USE_TP_REACTOR_FOR_REACTOR_IMPL can be used to make the - TP_Reactor the default Reactor implementation that will be - used by ACE_Reactor. - - I still need to add the reliable shutdown method and a - TP_Reactor_Test. - - * ace/Select_Reactor.{h,i,cpp} (renew): Moved decision of renew - supression from ACE_Select_Reactor_Notify::handle_input to this - method, which is a more appropriate place. - - * ace/Token.h (ACE_Token): Added more comprehensive comments about - the recent changes of reader/writer semantic. - -Tue Jul 28 12:36:18 1998 Irfan Pyarali - - * ace/Service_Config.cpp (~ACE_Service_Config): Removed the call - to ACE_Service_Config::close () from the destructor. This will - be called by the Object Manager upon destruction. - -Tue Jul 28 11:34:15 1998 Nanbor Wang - - * ace/OS.{h,i} (strpbrk): Added a const wchar_t version of this - function. Thanks to Ivan Murphy - for providing the fix. - -Tue Jul 28 09:52:08 1998 David L. Levine - - * ace/Thread_Manager.cpp (exit): only declare local close_handle - if ACE_USE_ONE_SHOT_AT_THREAD_EXIT. (ACE_Thread_Descriptor): - reordered initializers to match declaration order. - - * ace/Dynamic.cpp,Thread_Manager.cpp: moved - ACE_TSS_Singleton instantiation - from Thread_Manager.cpp to Dynamic.cpp. - -Mon Jul 27 16:31:27 1998 Arturo Montes - - * ace/Thread_Manager.{h,i,cpp}: - * ace/Log_Msg.cpp: The Thread_Manager::at_exit method now provides a - list of at_exit functions to be invoked to at thread termination - code. If you want to maintain previous compatibility use - ACE_USE_ONE_SHOT_AT_THREAD_EXIT. The new code maintaing - compatibility with the old code, ACE_Task::svc_run has not been - altered. - - We resolve a problem with ACE_TSS_cleanup, some platform using - Thread_Manager could be experimenting memory corruption because - of ACE_TSS_cleanup was being invoked before Thread_Manager exit - code. Now, if ACE_TSS_cleanup is called before of Thread_Manager - exit code, ACE_TSS_cleanup delegate ACE_Log_Msg delete instance - to Thread_Descriptor. - - Really, at_exit code is implemented in ACE_Thread_Descriptor, I - strongly recommend use at_exit code from Thread_Descriptor, - however in ACE_Thread_Manager we provide at_exit hook. - - Use of at_exit(void* object,ACE_CLEANUP_FUNC cleanup_hook,void* - param) is deprecated. We maitain it for compatibility and it - will be forever, however if you want implement new at_exit hook, - look into Thread_Manager.h and specialize ACE_At_Thread_Exit - class for your needs. - - If you want to allocate an ACE_At_Thread_Exit hook in stack, you - can do it. The at_exit code use at_exit overloading to take care - of this. Equally dynamic creation of at_exit hook is supported - too. - -Mon Jul 27 14:25:15 1998 Chris Gill - - * tests/Dynamic_Priority_Test.cpp: Changed C-Style casts to - ACE_static_casts, documented argument structure members - -Mon Jul 27 12:23:55 1998 Douglas C. Schmidt - - * ace/Select_Reactor.cpp (open): Changed a erroneous comparison - to - - if (size > (size_t) ACE::max_handles ()) - return ACE::set_handle_limit (size); - - Thanks to Avi Nash for reporting this. - -Sat Jul 25 20:26:21 1998 Steve Huston - - * ace/SPIPE_Acceptor.(h cpp): Modified Win32 part to start the - ConnectNamedPipe at open() time, in overlapped mode. Now also - processes the timeout in accept(), if specified. - -Sat Jul 25 16:18:30 1998 Carlos O'Ryan - - * ace/Malloc_T.i (addr): - Sun/CC does not like a reinterpret cast here, but only when T is - a char[20]. Use a couple of static casts and added a comment. - -Sat Jul 25 11:34:25 1998 Douglas C. Schmidt - - * ace/Typed_SV_Message_Queue.i (send): Fixed this call to use a - const cast AND a reinterpret cast. Thanks to David Levine for - reporting this. - -Fri Jul 24 23:14:09 1998 Douglas C. Schmidt - - * examples/Threads/thread_specific.cpp (cleanup): Added an - ACE_reinterpret_cast(). Thanks to John Mulhern - <9107@mn3.lawson.lawson.com> for this. - - * ace/Typed_SV_Message_Queue.i: Added some necessary - ACE_reinterpret_cast()s. Thanks to John Mulhern - <9107@mn3.lawson.lawson.com> for this. - - * ace/Malloc_T.i (addr): Changed (T *) cast to - ACE_reinterpret_cast(). Thanks to John Mulhern - <9107@mn3.lawson.lawson.com> for this. - - * ace/SOCK_Dgram_Bcast.cpp: Added an ACE_reinterpret_cast() macro - to make the HP/UX 11 C++ compiler happy. Thanks to John Mulhern - <9107@mn3.lawson.lawson.com> for this. - - * ace/config-hpux11.h: Added ACE_HAS_BROKEN_XTI_MACROS and - ACE_HAS_SIGISMEMBER_BUG. - - * ace/OS.i (sigismember): Sigismember works correctly in most - respects but the Sigset_Ops_Test tests the sigismember function - with an out-of-range signal number expecting it to fail with a - minus one result. On HPUX 11.0 it doesn't fail; it correctly - reports that the signal is not in the sigset. This happens - because HP, bless their hearts, thought that it should only - return out of range when the signal value was greater than the - capacity of the sigset; if ACE_NSIG is forced to 257 then the - test works as expected. But the real maximum signal is 45. - Added a fix for this courtesy of John Mulhern - <9107@mn3.lawson.lawson.com>. - - * ace/OS.h: Added a workaround for broken XTI header files on - HP/UX. Thanks to John Mulhern <9107@mn3.lawson.lawson.com> for - reporting this. - - * tests/Dynamic_Priority_Test.cpp: Reformatted this just a bit. - -Fri Jul 24 21:42:39 1998 David L. Levine - - * ace/OS.{h,cpp},Message_Block.{h,cpp}: renamed ACE_Time_Value::max - to ACE_Time_Value::max_time, because VxWorks #defines max. - - * tests/Message_Queue_Test.cpp: rearranged declarations so - that the test will build on non-threaded platforms. - - * tests/Dynamic_Priority_Test.cpp: changed ACE_MT_SYNCH to - ACE_SYNCH, so that we have a chance of building on non-threaded - platforms. - -Fri Jul 24 15:15:28 1998 Douglas C. Schmidt - - * Updated the manual pages to reflect recent changes. - - * ace/Svc_Conf.h: Change from yyerror (char *) to yyerror (const - char *). - -Fri Jul 24 14:36:30 1998 Chris Gill - - * ace/OS.{cpp, h} (ACE_Time_Value): Added ACE_Time_Value::max, - for the value at the other end of the time spectrum that can - be represented as a normalized ACE_Time_Value (LONG_MAX seconds, - ACE_ONE_SEC_IN_USECS - 1 microseconds). - - * ace/Message_Block.{cpp, h} (ACE_Message_Block): Changed default - parameters so message deadlines default to ACE_Time_Value::max - instead of ACE_Time_Value::zero - this ensures the assigned - static priority order is preserved in a dynamic message queue - if deadlines are not set. - - * ace/Message_Queue_T.{cpp, h} (ACE_Dynamic_Message_Queue): Changed - enqueue_tail and enqueue_head to call overloaded enqueue_prio - instead of static message queue base class methods (fixes bug - EC_Multiple_Test uncovered where a tail-enqueued zero length - message is still seen in the queue by the base class, but the - derived dynamic message queue class thinks the queue is empty) - - * DOC-way.html: added one on chess and sleep - -Fri Jul 24 12:35:12 1998 Nanbor Wang - - * ace/Token.{h,cpp}: Fixed warnings from gcc and SunCC. - -Fri Jul 24 09:05:24 1998 David L. Levine - - * ace/OS.cpp (thr_create): with ACE_HAS_DCE_DRAFT4_THREADS and - ACE_LACKS_SETDETACH (LynxOS and HP/UX 10.x), call - ::pthread_detach () on the newly spawned thread. Only do - it if the THR_DETACHED flag is enabled. - - * ace/Thread_Manager.cpp (join_thr,wait,wait_grp,wait_task): - with ACE_HAS_DCE_DRAFT4_THREADS and ACE_LACKS_SETDETACH - (LynxOS and HP/UX 10.x), call ::pthread_detach () on joined - threads. Only do it if the THR_DETACHED flag is not enabled. - - Thanks to Dave Mayerhoefer for diagnosing the - lack of ::pthread_detach () calls in ACE. - -Fri Jul 24 00:39:47 1998 Nanbor Wang - - * ace/ace_dll.dsp (Message_Queue_T.cpp): This file contains - template definitions and should not be included while building - ACE library. - - * ace/config-win32.h (ACE_HAS_NONSTATIC_OBJECT_MANAGER): Use - non-static object manager by default on Win32 (except CE.) This - at least fixed the problem of WSACleanup getting called too late. - - To disable this, define ACE_HAS_NONSTATIC_OBJECT_MANAGER to 0. - -Thu Jul 23 22:17:41 1998 Arturo Montes - - * ace/OS.cpp,Task.cpp,Thread_Manager.cpp: unify the Thread - Adapter use between general ACE threads and threads spawned - with a Thread_Manager. - - With this patch we add a new flag: ACE_USE_THREAD_MANAGER_ADAPTER. - If you set this flag in your config file, ACE will use the - ace_thread_manager_adapter in Thread_Manager, matching the current - behaviour. If you omit this flag, ACE will use ace_thread_adapter. - This change save a lot of source code and will let in the future - incorporate ACE_Thread at_exit. - -Thu Jul 23 15:30:41 1998 Nanbor Wang - - * ace/Token.{h,i,cpp}: On platforms that support timed acquire - semaphores, changed to use semaphores for signaling mechanism - for better performance. - (shared_acquire,renew): Give priority to acquire_write over - acquire_read. - -Thu Jul 23 14:05:20 1998 David L. Levine - - * performance-tests/Misc/context_switch_test.cpp: - helped yield test on VxWorks by timing each yield. - Added half-second delay between outer interations to give - LynxOS (w/ ACE_LACKS_SETDETACH) a chance to cleanup exited threads. - - * ace/config-sunos5.5.h: added support for _POSIX_PTHREAD_SEMANTICS. - If it is #defined, then #define ACE_HAS_PTHREADS_1003_DOT_1C - instead of ACE_HAS_STHREADS. Thanks to Doug Anderson - for investigating this and providing the - update. - - * ace/High_Res_Timer.cpp (elapsed_time (ACE_hrtime_t &nanoseconds)): - simplified the calculation. Thanks to Tom Dobridge - for the fix. - -Wed Jul 22 19:20:43 1998 Irfan Pyarali - - * ace/Proactor.h (ACE_Proactor): Since is a - valid constructor parameter for all platforms, - POSIX_COMPLETION_STRATEGY should be defined for all platforms. - - * ace/Proactor.cpp (ACE_Proactor): Only use the - completion_strategy when ACE_HAS_AIO_CALLS is defined. - - * ace/Asynch_IO.cpp (ACE_Asynch_Result): Only delete - this->aiocb_ptr_ when ACE_HAS_AIO_CALLS is defined. - -Wed Jul 22 17:58:27 1998 Alexander Babu Arulanthu - - * ace/OS.h: Updated the comments. - -Wed Jul 22 17:55:46 1998 Nanbor Wang - - * performance-tests/Synch-Benchmarks/token_test.cpp: A new test. - -Wed Jul 22 17:50:58 1998 Alexander Babu Arulanthu - - * ace/OS.h: Defiend ACE_SIG_AIO to be SIGRTMIN. This is the only - signal used for all the s. - -Wed Jul 22 17:46:45 1998 Alexander Babu Arulanthu - - * ace/Asynch_IO.h,Asynch_IO.cpp Proactor.h Proactor.cpp : - - First round of changes for sigtimedwait () based approach - of completion querying. - - Added one more parameter to the Proactor contructor to - decide the completion strategy for the POSIX implementation, - either control blocks or the RT signals. The default is RT - signals. - - Fixed Transmit file. Proactor's handle_events () is done - with in the ACE_Asynch_Transmit_Handler so that control does not - return to the user's application before the whole file is - transmitted. Otherwise the user's application might start writing - to the same socket and this might change the order of the file - that is being transmitted. - -Wed Jul 22 15:51:48 1998 Nanbor Wang - - * performance-tests/Synch-Benchmarks/Benchmark_Base.h - (Benchmark_Method_Base): Passing the test item into pre_run_test - so the thread can be setup correctly. Duh! - - * performance-tests/Synch-Benchmarks/Performance_Test.{h,cpp} - (pre_run_test): Added code so that it iterates thru test items - in svc.conf properly. Duh**2! - -Wed Jul 22 15:48:25 1998 David L. Levine - - * ACE version 4.5.24 released. - -Wed Jul 22 11:45:44 1998 Alexander Babu Arulanthu - - * tests/Aio_Platform_Test.cpp: Added calls test for - platforms with ACE_HAS_AIO_CALLS defined. - -Wed Jul 22 11:32:33 1998 David L. Levine - - * tests/Dynamic_Priority_Test.cpp: VxWorks only, fixed a few - minor things so that it builds now. - - * ace/config-linux-common.h: added ACE_HAS_GPERF. - -Tue Jul 21 23:09:31 1998 Nanbor Wang - - * performance-tests/Synch-Benchmarks/{Synch_Tests,synch_driver}.dsp: - Updated proejct source files and renamed debug version dll. - - * performance-tests/Synch-Benchmarks/Performance_Test.cpp: Added - ACE_Svc_Export directive. - -Tue Jul 21 20:17:31 1998 Steve Huston - - * ace/ACE_Library.{mdp mak}: Removed ..\STL from include directories. - -Tue Jul 21 12:34:11 1998 Alexander Babu Arulanthu - - * ace/config-lynxos.h: Defined ACE_HAS_AIO_CALLS. - -Mon Jul 20 19:35:21 1998 Steve Huston - - * ace/config-aix-4.1.x.h: Added ACE_LACKS_RLIMIT. Thanks to Zheng - Han for finding this problem. - - * ace/ACE_Library.{mdp mak}: Set up ".." as an include file directory - so that $ACE_ROOT doesn't have to be added to MSVC's global options. - Allows working on more than one ACE version. - - * netsvcs/lib/netsvcs4.{mdp mak}: Made paths to ACE components relative - and made Debug build netsvcsd.dll - this will work with Nanbor's new - DLL search method (from 19-July). - - * netsvcs/servers/servers4.{mdp mak}: - * netsvcs/clients/Logger/Logger.{mdp mak}: - Made paths to ACE components relative. - -Mon Jul 20 11:12:44 1998 David L. Levine - - * ace/Object_Manager.{h,cpp}: added ACE_TSS_BASE_LOCK, to - support ACE_HAS_TSS_EMULATION with ACE_USE_NATIVE_KEYS. - - * include/makeinclude/rules.lib.GNU: (INSTALL): use += to - define INSTALL instead of =, so that applications' INSTALL - won't be overwritten. - - * ace/config-osf1-4.0.h,config-linux-common.h: added - ACE_HAS_GPERF. - -Mon Jul 20 11:06:44 1998 Arturo Montes - - * ace/OS.*: added support for TSS emulation with Pthreads. - It uses one native TSS key for its internal implementation. - All other TSS keys, both within the ACE library and in - applications, use keys managed by ACE. - To enable, add these #defines to your config.h: - #define ACE_HAS_TSS_EMULATION - #define ACE_USE_NATIVE_KEYS - -Sun Jul 19 22:21:17 1998 David L. Levine - - * ace/OS.h: added ACE_THROW_SPEC definition. - -Sun Jul 19 00:48:42 1998 Nanbor Wang - - * ace/ACE.cpp (ldfind): Re-enabled searching for *d.dll before - *.dll for debug version of ACE. There was a premature return - error in the logic. This is now the default behavior and has to - be disabled explicitly by defining ACE_DISABLE_DEBUG_DLL_CHECK. - -Sat Jul 18 22:51:59 1998 Douglas C. Schmidt - - * ACE version 4.5.23 released. - -Sat Jul 18 22:48:52 1998 Douglas C. Schmidt - - * There was a typo in the Makefile where CE-status should have - been CE-status.txt. Thanks to Nanbor for fixing this. - -Sat Jul 18 22:14:07 1998 Douglas C. Schmidt - - * ACE version 4.5.22 released. - -Sat Jul 18 21:11:52 1998 Steve Huston - - * include/makeinclude/platform_hpux_aCC.GNU: Added +W829 to suppress - "string literal to char * is deprecated". I was going to fix these - in ACE, but TAO just wore me down... ;-) - -Sat Jul 18 Michael Kircher - - * tests/Upgradable_RW_Test.cpp: Changed the time measurement - completely. Before we meassured end-to-end. Now we meassure - only the time spend in actual doing things. At the end - all the time spend is summarized. - - * tests/Upgradable_RW_Test.h: Added this file, which contains - definitions for the test. - -Sat Jul 18 19:47:45 1998 Darrell Brunsch - - * ace/ACE.cpp: Looks like we are having some trouble with the - loading of *d.dll before *.dll on NT, so it is now disabled - by default (until the problem is solved). To enable use: - ACE_USE_DEBUG_DLL_CHECK. - -Sat Jul 18 13:51:49 1998 Douglas C. Schmidt - - * apps/Makefile: Always compile the gperf directory by default - now. - - * ace/config-sunos5.5.h: Added a new flag called ACE_HAS_GPERF, - which should be enabled if the OS/compiler platform can compile - GPERF. This will determine if we can use perfect hashing in - TAO! - -Sat Jul 18 10:52:49 1998 Gonzalo Diethelm - - * ace/Svc_Conf_l.cpp: - * ace/Svc_Conf_y.cpp: - Move the Id and added ACE_RCSID. - The #line commands changed their line numbers. - - * ace/Svc_Conf.l: - * ace/Svc_Conf.y: - Added an ACE_RCSID, and erased a few white spaces at the end. - - * etc/Svc_Conf_l.cpp.diff: - * etc/Svc_Conf_y.cpp.diff: - Got rid of a couple of RCS Ids that were being "replaced" by the - patches. These were probably a maintenance problem and didn't - really add much. I also cleaned up the patches: there were a - couple of useless replacements (lines with white spaces at the - ends, etc.), and some of the line offsets were wrong (but patch - could still catch them with its fuzz factors). Now the patches - apply cleanly. - -Sat Jul 18 9:00:00 1998 Douglas C. Schmidt - - * DCS: Born 36 years ago, at this moment. Yow, I've now become - a "perfect square" ;-) - -Fri Jul 17 18:30:10 1998 Irfan Pyarali - - * ace/Strategies_T.cpp (connect_svc_handler): The activation of - the newly created handler is moved outside the scope of the lock - of the cached connector. This is necessary to avoid subtle - deadlock conditions with this lock and the Reactor lock. Thanks - to Micheal for finding this race condition. - -Fri Jul 17 13:53:54 1998 Douglas C. Schmidt - - * examples/Threads/barrier2.cpp (ACE_MT_SYNCH>): Cleaned up the - coding style in this example. - - * ace/TTY_IO.cpp (control): Added entries for 300 baud. Thanks to - the ever vigilant Arturo Montes for - reporting this. - -Fri Jul 17 14:51:55 1998 Nanbor Wang - - * Makefile (CONTROLLED_FILES): Added CE-status to distribution. - Thanks to David for reminding this. - -Fri Jul 17 12:48:26 1998 Steve Huston - - * tests/Semaphore_Test.cpp: Removed unused variable, and disabled the - test for platforms with POSIX semaphores since POSIX semaphores - don't do timeouts (which this test stresses). - -Fri Jul 17 07:32:26 1998 David L. Levine - - * Makefile (CONTROLLED_FILES): added ACE-inheritance.{pdf,ps}.gz - to distribution. Thanks to Gabriel Lima for - reporting their absence. Also, added COPYING to distribution. - - * ace/IO_SAP.cpp (enable): removed unreachable break statement. - - * ace/OS.i (sema_wait w/time): on VxWorks and pSoS, subtract - the current time from the time argument to get the relative - time that the systems calls expect. Thanks to Steve Huston - for recommending this change. Also, removed ACE_ADAPT_RETVAL - wrap so that errno isn't disturbed. On VxWorks, convert - S_objLib_OBJ_TIMEOUT errno to ETIME. - - * tests/run_tests.{sh,vxworks}: added Semaphore_Test. - - * ACE-INSTALL.html: updated multicast on Linux discussion. - -Thu Jul 16 18:28:31 1998 Steve Huston - - * ace/OS.i (ACE_OS::sema_wait(ACE_sema_t*, ACE_Time_Value&)): - Changed WinCE version to use time as absolute and update it if - the semaphore is acquired. Changed Win32 version to update the - time if semaphore is acquired. - - * tests/Semaphore_Test.cpp: Added sanity checks for time that the - semaphore waits take and for the updated time values on acquiring - a semaphore. - -Thu Jul 16 15:41:08 1998 Douglas C. Schmidt - - * examples/IPC_SAP/UPIPE_SAP/ex2.cpp, - examples/Service_Configurator/IPC-tests/server/Handle_L_CODgram.i, - examples/Service_Configurator/IPC-tests/server/Handle_L_Dgram.i, - examples/Service_Configurator/IPC-tests/server/Handle_Broadcast.i, - examples/Service_Configurator/IPC-tests/server/Handle_L_Pipe.i, - examples/Service_Configurator/IPC-tests/server/Handle_L_Stream.i, - examples/Service_Configurator/IPC-tests/server/Handle_R_Dgram.i, - examples/Service_Configurator/IPC-tests/server/Handle_R_Stream.i: - Changed all uses of SIGIO to ACE_SIGIO. - - - * ace/IPC_SAP: Cleaned up the enable() and disable() methods and - documentation so they correctly use the new ACE_* macros - described in the following bullet. - - * ace/OS.h: Added new ACE_SIGIO, ACE_SIGURG, and ACE_CLOEXEC flags - that should be used instead of the SIGIO or SIGURG, etc., in - order to ensure uniqueness. However, legacy code will continue - to work. - - * ace/IO_SAP.cpp: Added new ACE_SIGIO, ACE_SIGURG, and ACE_CLOEXEC - flags that should be used instead of the SIGIO or SIGURG, etc., - in order to ensure uniqueness. However, legacy code will - continue to work. - -Thu Jul 16 15:02:55 1998 Carlos O'Ryan - - * ace/Synch_T.h: Use ACE_Condition_Thread_Mutex instead of - ACE_Condition as the default condition - variable (ACE_SYNCH_CONDITION), this removes some headaches wrt - template instantiation. - - * ace/IPC_SAP.cpp: Added support for the close-on-exec flag. We - use the new ACE_CLOEXEC macro for this. - -Thu Jul 16 12:50:42 1998 Nanbor Wang - - * netsvcs/lib/netsvcs.dsp: - * netsvcs/servers/servers.dsp: Updated DLL names. - - * ace/ACE.cpp (ldfind): Conventionallly, Win32 platforms - distinguish debug version DLL from release version DLLs by - suffixing debug version DLL names with 'd'. (E.g., aced.dll - v.s. ace.dll.) This was causing some problem in managing the - svc.conf files because we need to link the matching DLL with the - executables regarding of how they get compiled. - - I modified the ldfind so that when a debug version ACE is - searching for a DLL file, it will first try to find the debug - version of that DLL by suffixing the name with 'd'. If it can't - be found, it then searches for the name specified. The release - version doesn't try to do this. Now, we can specify only the - "normal" dll names in svc.conf files and ACE can pick up the - right dlls for you without changing svc.conf files. However, - you need to follow the Win32 DLL naming convention as described - above. - - I don't expect this feature to cause any backward compatibility - problem. However, if in the rare event, it does cause you - problem, you can disable it by defining - ACE_DISABLE_DEBUG_DLL_CHECK in your config.h file. Notice that - this change only affects Win32 platforms. - -Thu Jul 16 08:55:48 1998 David L. Levine - - * ace/Dynamic_Service.cpp (instance): removed const-ness - from local void * obj, because the function return value - isn't const. Sun C++ caught this. - - * STL,Makefile: removed STL from ACE, for good this time. There - are no more STL dependencies in TAO's AVStreams. However, if - you still want to use the version of STL that was in ACE, you - can obtain it at www.cs.wustl.edu/~schmidt/ACE_wrappers/STL. - - * ACE-INSTALL.html: added note on enabling multicast on Linux for - TAO's NameService. And, added note on adding a routing table - entry to enable multicast on Linux. Thanks to Nanbor for - discovering that. - -Wed Jul 15 19:00:33 1998 Douglas C. Schmidt - - * ace/Dynamic_Service.cpp (instance): Made the error reporting - less verbose. Thanks to Darrell for suggesting this. In - addition, changed the use of (SERVICE *) to - ACE_reinterpret_cast(). - -Wed Jul 15 16:16:40 1998 Chris Gill - - * ace/Message_Queue_T.cpp: Fixed message/byte counting bugs. - -Wed Jul 15 15:42:44 1998 James C Hu - - * ace/OS.h: Added a copy constructor for ACE_Thread_ID. - -Wed Jul 15 14:33:15 1998 Steve Huston - - * ace/Select_Reactor.cpp: Added some MVS-specific behavior in the - error checking/recovery code so that bad handles are properly - located and removed on MVS Open Edition. Thanks to Chuck Gehr - for his hard work in tracking these down. - -Tue Jul 14 14:00:00 1998 Michael Kircher - - * ace/Select_Reactor.cpp: Changed the handling - of the state_changed flag. Now, it is set to "changed" (=1) - after each run of the event loop. This fixed a nested - upcalls bug, which was caused by overwriting this - flag each time entering the event loop. So that, - when poping one level of the handle_events call - stack information was lost about changes. Now, we - assume that information has changed and - propagate this knowlegde down in the call - stack. No performance overhead is caused by that. - -Tue Jul 14 12:02:15 1998 Carlos O'Ryan - - * examples/IPC_SAP/SOCK_SAP/C-inserver.cpp: - * examples/IPC_SAP/SOCK_SAP/C-inclient.cpp: - * ace/SOCK_Dgram_Mcast.cpp: - * ace/SOCK_Acceptor.cpp: - * ace/ACE.cpp: - Use ACE_reinterpret_cast in several conversions address type - conversions (like from sockaddr* to sockaddr_in*). - Some compilers (HP/aCC) give a warning if the old C-style cast - operators are used; using the proper cast operator removes the - warning. Thanks to John Mulhern <9107@mn3.lawson.lawson.com> for - pointing out this problem. - -Tue Jul 14 11:26:40 1998 David L. Levine - - * Makefile: added STL back in, because TAO's AVStreams still uses it. - Thanks to Hans Rohnert for - reporting this. - - * ace/Message_Queue_T.cpp (refresh_{late,pending}_queue): removed some - breaks following ACE_ERROR_RETURNs, to avoid compiler warnings about - unreachable statements. - - * tests/Dynamic_Priority_Test.cpp: commented out unused global - FIFO_receipt_order. - - * ace/Basic_Types.h: added ACE_UINT64_LITERAL macro. Thanks to - Nanbor for suggesting it. - - * ace/Stats.cpp: use ACE_UINT64_LITERAL to replace platform-specific - code. - -Mon Jul 13 22:29:20 1998 David L. Levine - - * tests/Dynamic_Priority_Test.cpp: swapped "const" and "static" - qualifiers so that "static" appears first. - (run_performance_test): initialized random_int to 0 to avoid - g++ warning. - - * ace/Message_Queue_T.h: on VxWorks, added forward declaration - of class ACE_Message_Queue_Vx. - - * ace/Message_Queue_T.cpp (create_Vx_message_queue): added - template . - -Mon Jul 13 16:37:07 1998 Chris D. Gill - - * Message_Queue_T.cpp: - refined dynamic queues based on performance test results - -Mon Jul 13 16:35:50 1998 Chris Gill - - * ace/Message_Block.{cpp, h, i} - ace/Message_Queue_T.{cpp, h}: - - Removed automatic deletion of beyond messages, replaced this - with a remove_messages method to be called by an external - "reaper" if at all. Reorganized dynamic message queues - to remove sources of overhead, especially in checking - message status while refreshing the queue: added separate - head and tail pointers for pending, late, and beyond late - protions of queue: only move these pointers, not messages - (except at enqueue). - - * tests/Dynamic_Priority_Test.cpp: - - Added performance tests for static and dynamic queues - which do best case, worst case, and randomized ordering - of messages, presenting each ordering to all queues - and clocking enqueue and dequeue performance. - -Mon Jul 13 11:11:56 1998 Nanbor Wang - - * ace/Svc_Handler.h (ACE_SYNCH_USE>): Changed type of member - to int. Thanks to Zoran Ivanovic - for pointing this out. - -Sun Jul 12 13:25:04 1998 David L. Levine - - * ACE-INSTALL.html: Separated the Linux RedHat 5.1 and 5.0 - discussions into different paragraphs. - -Sat Jul 11 14:25:58 1998 David L. Levine - - * ace/Timer_Queue_Adapter.cpp: moved the ACE_RCSID inside the - ifndef ACE_TIMER_QUEUE_ADAPTERS_C protection, because this - file gets multiply included with g++. - - * ace/config-lynxos.h: added #define ACE_USE_RCS_ID 0. - -Sat Jul 11 03:44:00 1998 Gonzalo Diethelm - - * ace/inc_user_config.h: - Defined an ACE_RCSID macro to add RCS Id keywords to .cpp - files. Also defined an ACE_USE_RCSID macro that allows turning - this feature on and off. - - * ace/config-chorus.h: - * ace/config-psosim-g++.h: - * ace/config-vxworks5.x.h: - These files have the RCS Id keywords off by default. - I hope these are all (and the only) real-time OSs that could be - impacted by the extra 40K or so of space. - - * ace/ACE.cpp: - * ace/ACED.cpp: - * ace/ACER.cpp: - * ace/ARGV.cpp: - * ace/Acceptor.cpp: - * ace/Activation_Queue.cpp: - * ace/Addr.cpp: - * ace/Arg_Shifter.cpp: - * ace/Array.cpp: - * ace/Asynch_Acceptor.cpp: - * ace/Asynch_IO.cpp: - * ace/Auto_Ptr.cpp: - * ace/Basic_Types.cpp: - * ace/CORBA_Handler.cpp: - * ace/CORBA_Ref.cpp: - * ace/Connector.cpp: - * ace/Containers.cpp: - * ace/DEV.cpp: - * ace/DEV_Addr.cpp: - * ace/DEV_Connector.cpp: - * ace/DEV_IO.cpp: - * ace/Date_Time.cpp: - * ace/Dump.cpp: - * ace/Dump_T.cpp: - * ace/Dynamic.cpp: - * ace/Dynamic_Service.cpp: - * ace/Env_Value_T.cpp: - * ace/Event_Handler.cpp: - * ace/Event_Handler_T.cpp: - * ace/FIFO.cpp: - * ace/FIFO_Recv.cpp: - * ace/FIFO_Recv_Msg.cpp: - * ace/FIFO_Send.cpp: - * ace/FIFO_Send_Msg.cpp: - * ace/FILE.cpp: - * ace/FILE_Addr.cpp: - * ace/FILE_Connector.cpp: - * ace/FILE_IO.cpp: - * ace/Filecache.cpp: - * ace/Free_List.cpp: - * ace/Future.cpp: - * ace/Get_Opt.cpp: - * ace/Handle_Set.cpp: - * ace/Hash_Map_Manager.cpp: - * ace/High_Res_Timer.cpp: - * ace/INET_Addr.cpp: - * ace/IOStream.cpp: - * ace/IOStream_T.cpp: - * ace/IO_Cntl_Msg.cpp: - * ace/IO_SAP.cpp: - * ace/IPC_SAP.cpp: - * ace/LOCK_SOCK_Acceptor.cpp: - * ace/LSOCK.cpp: - * ace/LSOCK_Acceptor.cpp: - * ace/LSOCK_CODgram.cpp: - * ace/LSOCK_Connector.cpp: - * ace/LSOCK_Dgram.cpp: - * ace/LSOCK_Stream.cpp: - * ace/Local_Name_Space.cpp: - * ace/Local_Name_Space_T.cpp: - * ace/Local_Tokens.cpp: - * ace/Log_Msg.cpp: - * ace/Log_Record.cpp: - * ace/Malloc.cpp: - * ace/Malloc_T.cpp: - * ace/Managed_Object.cpp: - * ace/Map_Manager.cpp: - * ace/Mem_Map.cpp: - * ace/Memory_Pool.cpp: - * ace/Message_Block.cpp: - * ace/Message_Queue.cpp: - * ace/Message_Queue_T.cpp: - * ace/Method_Object.cpp: - * ace/Module.cpp: - * ace/Msg_WFMO_Reactor.cpp: - * ace/Multiplexor.cpp: - * ace/Name_Proxy.cpp: - * ace/Name_Request_Reply.cpp: - * ace/Name_Space.cpp: - * ace/Naming_Context.cpp: - * ace/OS.cpp: - * ace/Object_Manager.cpp: - * ace/Obstack.cpp: - * ace/Parse_Node.cpp: - * ace/Pipe.cpp: - * ace/Priority_Reactor.cpp: - * ace/Proactor.cpp: - * ace/Process.cpp: - * ace/Process_Manager.cpp: - * ace/Profile_Timer.cpp: - * ace/RB_Tree.cpp: - * ace/Reactor.cpp: - * ace/Read_Buffer.cpp: - * ace/Registry.cpp: - * ace/Registry_Name_Space.cpp: - * ace/Remote_Name_Space.cpp: - * ace/Remote_Tokens.cpp: - * ace/SOCK.cpp: - * ace/SOCK_Acceptor.cpp: - * ace/SOCK_CODgram.cpp: - * ace/SOCK_Connector.cpp: - * ace/SOCK_Dgram.cpp: - * ace/SOCK_Dgram_Bcast.cpp: - * ace/SOCK_Dgram_Mcast.cpp: - * ace/SOCK_IO.cpp: - * ace/SOCK_Stream.cpp: - * ace/SPIPE.cpp: - * ace/SPIPE_Acceptor.cpp: - * ace/SPIPE_Addr.cpp: - * ace/SPIPE_Connector.cpp: - * ace/SPIPE_Stream.cpp: - * ace/SString.cpp: - * ace/SV_Message.cpp: - * ace/SV_Message_Queue.cpp: - * ace/SV_Semaphore_Complex.cpp: - * ace/SV_Semaphore_Simple.cpp: - * ace/SV_Shared_Memory.cpp: - * ace/Sched_Params.cpp: - * ace/Select_Reactor.cpp: - * ace/Service_Config.cpp: - * ace/Service_Manager.cpp: - * ace/Service_Object.cpp: - * ace/Service_Repository.cpp: - * ace/Service_Types.cpp: - * ace/Shared_Memory.cpp: - * ace/Shared_Memory_MM.cpp: - * ace/Shared_Memory_SV.cpp: - * ace/Shared_Object.cpp: - * ace/Signal.cpp: - * ace/Singleton.cpp: - * ace/Stats.cpp: - * ace/Strategies.cpp: - * ace/Strategies_T.cpp: - * ace/Stream.cpp: - * ace/Stream_Modules.cpp: - * ace/Svc_Handler.cpp: - * ace/Synch.cpp: - * ace/Synch_Options.cpp: - * ace/Synch_T.cpp: - * ace/System_Time.cpp: - * ace/TLI.cpp: - * ace/TLI_Acceptor.cpp: - * ace/TLI_Connector.cpp: - * ace/TLI_Stream.cpp: - * ace/TTY_IO.cpp: - * ace/Task.cpp: - * ace/Task_T.cpp: - * ace/Thread.cpp: - * ace/Thread_Manager.cpp: - * ace/Time_Request_Reply.cpp: - * ace/Timeprobe.cpp: - * ace/Timeprobe_T.cpp: - * ace/Timer_Hash.cpp: - * ace/Timer_Hash_T.cpp: - * ace/Timer_Heap.cpp: - * ace/Timer_Heap_T.cpp: - * ace/Timer_List.cpp: - * ace/Timer_List_T.cpp: - * ace/Timer_Queue.cpp: - * ace/Timer_Queue_Adapters.cpp: - * ace/Timer_Queue_T.cpp: - * ace/Timer_Wheel.cpp: - * ace/Timer_Wheel_T.cpp: - * ace/Token.cpp: - * ace/Token_Collection.cpp: - * ace/Token_Invariants.cpp: - * ace/Token_Manager.cpp: - * ace/Token_Request_Reply.cpp: - * ace/Trace.cpp: - * ace/Typed_SV_Message.cpp: - * ace/Typed_SV_Message_Queue.cpp: - * ace/UNIX_Addr.cpp: - * ace/UPIPE_Acceptor.cpp: - * ace/UPIPE_Connector.cpp: - * ace/UPIPE_Stream.cpp: - * ace/WFMO_Reactor.cpp: - * ace/XtReactor.cpp: - * ace/gethrtime.cpp: - * tests/Aio_Platform_Test.cpp: - * tests/Atomic_Op_Test.cpp: - * tests/Barrier_Test.cpp: - * tests/Basic_Types_Test.cpp: - * tests/Buffer_Stream_Test.cpp: - * tests/Conn_Test.cpp: - * tests/Dynamic_Priority_Test.cpp: - * tests/Enum_Interfaces_Test.cpp: - * tests/Env_Value_Test.cpp: - * tests/Future_Test.cpp: - * tests/Handle_Set_Test.cpp: - * tests/Hash_Map_Manager_Test.cpp: - * tests/IOStream_Test.cpp: - * tests/MM_Shared_Memory_Test.cpp: - * tests/MT_Reactor_Timer_Test.cpp: - * tests/MT_SOCK_Test.cpp: - * tests/Map_Manager_Test.cpp: - * tests/Mem_Map_Test.cpp: - * tests/Message_Block_Test.cpp: - * tests/Message_Queue_Test.cpp: - * tests/MsgQueue_Notifications_Test.cpp: - * tests/Naming_Test.cpp: - * tests/Notify_Performance_Test.cpp: - * tests/OrdMultiSet_Test.cpp: - * tests/Pipe_Test.cpp: - * tests/Priority_Buffer_Test.cpp: - * tests/Priority_Reactor_Test.cpp: - * tests/Priority_Task_Test.cpp: - * tests/Process_Mutex_Test.cpp: - * tests/Process_Strategy_Test.cpp: - * tests/Reactor_Exceptions_Test.cpp: - * tests/Reactor_Notify_Test.cpp: - * tests/Reactor_Performance_Test.cpp: - * tests/Reactor_Timer_Test.cpp: - * tests/Reactors_Test.cpp: - * tests/Reader_Writer_Test.cpp: - * tests/Recursive_Mutex_Test.cpp: - * tests/SOCK_Connector_Test.cpp: - * tests/SOCK_Test.cpp: - * tests/SPIPE_Test.cpp: - * tests/SString_Test.cpp: - * tests/SV_Shared_Memory_Test.cpp: - * tests/Semaphore_Test.cpp: - * tests/Service_Config_Test.cpp: - * tests/Sigset_Ops_Test.cpp: - * tests/Simple_Message_Block_Test.cpp: - * tests/TSS_Test.cpp: - * tests/Task_Test.cpp: - * tests/Thread_Manager_Test.cpp: - * tests/Thread_Mutex_Test.cpp: - * tests/Thread_Pool_Test.cpp: - * tests/Time_Service_Test.cpp: - * tests/Time_Value_Test.cpp: - * tests/Timeprobe_Test.cpp: - * tests/Timer_Queue_Test.cpp: - * tests/Tokens_Test.cpp: - * tests/UPIPE_SAP_Test.cpp: - * tests/Upgradable_RW_Test.cpp: - * tests/XtReactor_Test.cpp: - * tests/tests_bcc.ide: - Added RCS Id keywords to all these files. - - * ace/ace_bcc.ide: - Don't really know what changed here... - -Fri Jul 10 23:11:36 1998 David L. Levine - - * bin/make_release: redirect rdiff error messages to /dev/null. - -Fri Jul 10 22:15:04 1998 David L. Levine - - * ACE version 4.5.21 released. - -Fri Jul 10 10:29:58 1998 David L. Levine - - * ace/SString.h: added ACE_INLINE specifiers to operator+ - declarations, to please Sun C++. Will AIX be able to cope? - -Thu Jul 09 23:27:26 1998 Gonzalo Diethelm - - * ace/OS.h: - Corrected definitions for ACE_Export under Borland compilers. - - * ace/SString.h: - Got rid of the friend operators. - - * ace/Containers.cpp: - * ace/Message_Queue_T.cpp: - * ace/Stream.cpp: - * ace/Timer_Heap_T.cpp: - * tests/Buffer_Stream_Test.cpp: - * tests/Dynamic_Priority_Test.cpp: - * tests/Future_Test.cpp: - * tests/Naming_Test.cpp: - * tests/Priority_Buffer_Test.cpp: - * tests/Thread_Pool_Test.cpp: - Got rid of a few assignments to zero that cause warnings with - the Borland compiler. - - * ace/ace_bcc.ide: - * tests/tests_bcc.ide: - Now Borland C++ 5.x supports building ACE as a DLL, and the tests - are linked against the Debug DLL. - - * tests/tests.bpg: - * tests/Dynamic_Priority_Test.bpr: - * tests/Timeprobe_Test.bpr: - * tests/Upgradable_RW_Test.bpr: - * tests/XtReactor_Test.bpr: - Added four new tests to the project group. - - * tests/Aio_Platform_Test.bpr: - * tests/Atomic_Op_Test.bpr: - * tests/Barrier_Test.bpr: - * tests/Basic_Types_Test.bpr: - * tests/Buffer_Stream_Test.bpr: - * tests/Conn_Test.bpr: - * tests/Dynamic_Priority_Test.bpr: - * tests/Enum_Interfaces_Test.bpr: - * tests/Env_Value_Test.bpr: - * tests/Future_Test.bpr: - * tests/Handle_Set_Test.bpr: - * tests/Hash_Map_Manager_Test.bpr: - * tests/IOStream_Test.bpr: - * tests/MM_Shared_Memory_Test.bpr: - * tests/MT_Reactor_Timer_Test.bpr: - * tests/MT_SOCK_Test.bpr: - * tests/Map_Manager_Test.bpr: - * tests/Mem_Map_Test.bpr: - * tests/Message_Block_Test.bpr: - * tests/Message_Queue_Test.bpr: - * tests/MsgQueue_Notifications_Test.bpr: - * tests/Naming_Test.bpr: - * tests/Notify_Performance_Test.bpr: - * tests/OrdMultiSet_Test.bpr: - * tests/Pipe_Test.bpr: - * tests/Priority_Buffer_Test.bpr: - * tests/Priority_Reactor_Test.bpr: - * tests/Priority_Task_Test.bpr: - * tests/Process_Mutex_Test.bpr: - * tests/Process_Strategy_Test.bpr: - * tests/Reactor_Exceptions_Test.bpr: - * tests/Reactor_Notify_Test.bpr: - * tests/Reactor_Performance_Test.bpr: - * tests/Reactor_Timer_Test.bpr: - * tests/Reactors_Test.bpr: - * tests/Reader_Writer_Test.bpr: - * tests/Recursive_Mutex_Test.bpr: - * tests/SOCK_Connector_Test.bpr: - * tests/SOCK_Test.bpr: - * tests/SPIPE_Test.bpr: - * tests/SString_Test.bpr: - * tests/SV_Shared_Memory_Test.bpr: - * tests/Semaphore_Test.bpr: - * tests/Service_Config_Test.bpr: - * tests/Sigset_Ops_Test.bpr: - * tests/Simple_Message_Block_Test.bpr: - * tests/TSS_Test.bpr: - * tests/Task_Test.bpr: - * tests/Thread_Manager_Test.bpr: - * tests/Thread_Mutex_Test.bpr: - * tests/Thread_Pool_Test.bpr: - * tests/Time_Service_Test.bpr: - * tests/Time_Value_Test.bpr: - * tests/Timeprobe_Test.bpr: - * tests/Timer_Queue_Test.bpr: - * tests/Tokens_Test.bpr: - * tests/UPIPE_SAP_Test.bpr: - * tests/Upgradable_RW_Test.bpr: - * tests/XtReactor_Test.bpr: - Uniform options for Borland C++ and C++ Builder. - -Thu Jul 09 16:23:34 1998 Irfan Pyarali - - * ace/Registry.h (ACE_Registry): Changed the Registry class so - that it does not use STL containers and the string classes - anymore. It now uses ACE containers and string classes. There - should be no dependency on STL in ACE anymore. - - * STL: Removed this directory since ACE is no longer dependent on - STL. If you still need these STL files, please refer to: - http://www.rahul.net/terris/. - - * examples/Registry/test_registry_{update,iterator}.cpp (main): - Updated files to work with modified Registry. - - * ace/SString.cpp (ACE_WString::operator<<): Added new operator. - - * Makefile: Updated Makefile so that STL is no longer released - with ACE. - -Thu Jul 09 09:37:43 1998 David L. Levine - - * ace/Basic_Types: for LONG_LONG size determination, don't use - ULONGLONG_MAX ifdef __GNUG__. This change should fix a build - problem on g++/Irix 6.4. Thanks to Johan Lundin - for reporting the problem. - -Wed Jul 08 17:47:48 1998 Irfan Pyarali - - * ace/Strategies_T (ACE_Scheduling_Strategy, - ACE_Schedule_All_Reactive_Strategy, and - ACE_Schedule_All_Threaded_Strategy): The code in these classes - was screwed up. The base class (ACE_Scheduling_Strategy) was - keeping a pointer to the SVC_HANDLER in order to enable the - derived classes to get to the Reactor and Thread Manager. Also, - if the user did not pass in an instance of SVC_HANDLER, one was - created dynamically ;-( Another problem was that the Reactor - field was set on the SVC_HANDLER, but the SVC_HANDLER was never - registered with the Reactor. So when the SVC_HANDLER was - deleted, it tried to remove itself from a potentially - non-existent Reactor. - - Solution: Removed scheduler_ as protected member of the base - class. Added thr_mgr_ to ACE_Schedule_All_Threaded_Strategy and - reactor_ to ACE_Schedule_All_Reactive_Strategy. Now these - classes do not need the scheduler_ member anymore. - -Wed Jul 8 13:47:02 1998 David L. Levine - - * ace/config-sunx86-sunc++-4.x.h: inserted note to not use this - config, but to use config-sunos5.5.h instead. After we - have installed and tested Sun C++ on Solaris86, we should - remove this config. - - * ACE-INSTALL.html: added note about increasing NUM_FILES to - 1000 in VxWorks kernel configuration. Thanks to - Jeff Franks for reminding me about - this change from the default VxWorks kernel configuration. - -Tue Jul 07 14:36:56 1998 Nanbor Wang - - * ace/ace_ce_dll.dsp: Added Stats.cpp into project. - - * ace/README: Added a new directive - ACE_HAS_WIN32_STRUCTURAL_EXCEPTIONS and its documentation. - - * ace/config-win32-common.h: Defined - ACE_HAS_WIN32_STRUCTURAL_EXCEPTIONS for Win32 except CE. - - * ace/Log_Msg.{h,cpp}: - * ace/OS.{h,i,cpp}: Changed to use ifdef - ACE_HAS_WIN32_STRUCTURAL_EXCEPTIONS for structural exception - code. - - * ace/Token.cpp: - * ace/Stats.cpp: - * ace/High_Res_Timer.cpp: Made them CE friendly. - -Tue Jul 07 09:26:22 1998 David L. Levine - - * ace/Thread_Manager.h: updated comments that describe - ACE_thread_t * argument to spawn () family. - - * ace/OS.{h,cpp},Thread_Manager.cpp: on VxWorks only, instead - of using a string to mark an ACE_thread_t as being allocated - by the ACE_Thread_Manager, use a single character (ASCII DC2). - - * tests/run_tests.vxworks: added Dynamic_Priority_Test. - - * apps/gperf/src/Makefile: added trailing $ to Id string. - -Tue Jul 7 10:48:42 EET DST 1998 Wei Chiang - - * tests/CLASSIX/CLASSIX_Con_Acc_Test.cpp: - Use a counter, max. number of unread messages, instead of wait - to work around the blocking problem in ipcSend() - -Mon Jul 6 22:32:19 1998 Gonzalo Diethelm - - * ace/ace_bcc.ide: - Updates for Borland C++ 5.x. - - * ace/config-win32.h: - Made sure ACE_HAS_WINNT4 and _WIN32_WINNT are always defined if - they were not explicitly defined. - - * ace/config-win32-borland.h: - * ace/config-win32-common.h: - Moved all the Borland definitions to a config-win32-borland.h - file. - - * ace/OS.h (ACE_SEH_TRY): - Added correct support for Borland C++ 5.x. - - * ace/OS.cpp: - Replaced the ugly hack to access wProcessorArchitecture under - Borland compilers for an even uglier hack, but that will work on - every Borland compiler, as long as the members of SYSTEM_INFO are - consistent. See the code and get sick! - - * ace/LOCK_SOCK_Acceptor.h: - * ace/Array.cpp: - * ace/Arg_Shifter.cpp: - Were missing an "ace/" in some includes. - - * tests/tests_bcc.ide: - Added all (well, most) of the tests to the project file. - - * tests/Makefile: - * tests/Message_Queue_Notifications_Test.cpp: - * tests/Message_Queue_Notifications_Test.bpr: - * tests/Message_Queue_Notifications_Test.dsp: - * tests/MsgQueue_Notifications_Test.cpp: - * tests/MsgQueue_Notifications_Test.bpr: - * tests/MsgQueue_Notifications_Test.dsp: - * tests/run_tests.bat: - * tests/run_tests.psosim: - * tests/run_tests.sh: - * tests/run_tests.vxworks: - * tests/tests.bpg: - * tests/tests.dsw: - * tests/tests.mak: - * tests/WinCE/Message_Queue_Notifications_Test.dsp: - * tests/WinCE/MsgQueue_Notifications_Test.dsp: - * tests/version_tests/Message_Queue_Notification_Test.dsp: - * tests/version_tests/MsgQueue_Notifications_Test.dsp : - Changed name of Message_Queue_Notifications_Test to - MsgQueue_Notifications_Test, to avoid problems with Borland - compilers. - - * tests/Enum_Interfaces_Test.cpp: - Added some output to test ACE_OS::uname(). - - * tests/Basic_Types_Test.cpp: - Changed a couple of debug lines to contain only one \n. - -Mon Jul 6 14:24:11 EET DST 1998 Wei Chiang - - * tests/CLASSIX/CLASSIX_Con_Acc_Test.cpp: - Add a pause after each send_n()(i.e. ipcSend()) as a temporary - work around over the block problem in ipcSend() when the resources are - exhaused. - - -Mon Jul 6 03:56:49 1998 Nanbor Wang - - * ace/Thread_Manager.h (ACE_Thread_Manager::thr_self): Instead of - refering to ACE_Thread::thr_self, it should mention - ACE_Thread::self. - -Fri Jul 03 17:02:49 1998 David L. Levine - - * bin/make_release (create_kit): remove any existing .zip - files before trying to create new ones, because they get - in the way. Thanks to J. Russell Noseworthy - for reporting the problem - with new ACE+TAO.tar.gz's not being created. - -Fri Jul 3 14:24:59 1998 Darrell Brunsch - - * apps/gperf/src/gperf.dsw: - * apps/gperf/src/gperf.dsp: - * apps/gperf/src/gperf_lib.dsp: - Added MSVC5 Project files - - * apps/gperf/src/Key_List.cpp: - * apps/gperf/src/Options.h: - * apps/gperf/src/Options.cpp: - There was a enumeration CONST, and MSVC5 didn't like it. I - renamed it to CONSTANT. - - * apps/gperf/src/new.cpp - Changed a variable from int to size_t to get rid of a MSVC - warning. - - NOTE: I tried out some tests and even though gperf compiles - on NT, it doesn't seem to work correctly yet. That - will come later. - -Fri Jul 03 13:47:19 1998 David L. Levine - - * ACE version 4.5.20 released. - -Fri Jul 03 08:52:13 1998 Steve Huston - - * netsvcs/lib/Name_Handler.{cpp h}: Moved class Naming_Context from - .cpp to .h so that AIX xlC can find it when instantiating templates. - -Thu Jul 2 11:49:16 1998 Alexander Babu Arulanthu - - * ace/OS.h: - * ace/OS.i: Added ACE_OS::fseek (). NT supports this too. Just - defined SEEK_SET, SEEK_CUR etc, in case they are not defined. This - is similar to what has been done for lseek. - -Thu Jul 02 10:58:00 1998 Michael Kircher - - * tests/Upgradable_RW_Test.cpp: Totally new version, - now we use linked lists on which we search to - spend some time. - - * tests/Upgradable_RW_Test.dsp: Project file for this test. - - * tests/tests.dsw: Integrated this project. - - * tests/version_tests.dsw: Integrated this project. - - * tests/Upgradable_RW_Test.dsp: Project file for this test. - -Thu Jul 02 09:14:20 1998 David L. Levine - - * examples/Reactor/Misc/test_timer_queue.cpp (test_functionality): - use timer_id outside of an assert, so that we don't get compile - warnings with ACE_NDEBUG about it being unused. - - * ace/OS.cpp (thr_create): on VxWorks only, check if thr_id - points to a zero char *. If so, assign the VxWorks task - name pointer to it (*thr_id). Thanks to Bill Backstrom - for this suggestion. - - * ace/Thread_Manager.cpp (spawn_i): on VxWorks only, augmented - comment to explain the various cases for t_id and *t_id values. - - * ace/Thread_Manager.h (spawn*): on VxWorks only, added comment - explaining use of ACE_thread_t * argument. - - * tests/Barrier_Test.cpp: on VxWorks only, added test of - an ACE_thread_t that points to a 0 char *. - - * tests/Barrier_Test.cpp,Thread_Manager_Test.cpp: moved - VxWorks task name and stack size tests from Barrier_Test - to Thread_Manager_Test. - - * tests/run_tests.vxworks: on VxWorks only, enabled - Message_Queue_Test. It's OK to run it on VxWorks, now - that the iterator_test () is disabled in the test. - - * tests/SOCK_Connector_Test.cpp (succeed_nonblocking): - if the connection completion fails, reset the status - _before_ doing the printout. The printout causes the - errno to be overwritten on LynxOS 2.5.0, for example. - - * Makefile (releaseall): use $(MAKE) instead of make for - recursive make. - -Wed Jul 01 21:31:40 1998 Arturo Montes - - * ace/IOStream_T.i (recv_n, eof): fixed calculation of - timeout_ and return value. - -Wed Jul 01 08:51:33 1998 Chris Gill - - * ace/Service_Types.cpp - tests/Dynamic_Priority_Test.cpp: Moved explicit template - instantiations for ACE_Dynamic_Message_Queue and - ACE_Message_Queue_Factory from the test into the ACE library - (next to where the ACE_Message_Queue instantiations resided). - -Wed Jul 01 07:08:40 1998 David L. Levine - - * ace/Message_Queue.i,cpp (VxWorks only): removed args from a - couple of unsupported functions, and added ACE_UNUSED_ARGS - to others, to avoid compiler warnings. - - * tests/Message_Queue_Test.cpp (performance_test): allocate - the send blocks in the main thread instead of in the sender. - That way, the main thread can delete them after the - receiver has finished. Before this change, the sender would - sometimes delete them before the reciever finished. Thanks to - Carlos and his friend Mr. SIGSEGV for helping to track this down. - -Tue Jun 30 23:48:39 1998 Nanbor Wang - - * ace/Message_Queue.h: Added /**/ between #include and <> to - prevent warnings from MSVC. - -Tue Jun 30 22:05:01 1998 David L. Levine - - * tests/Dynamic_Priority_Test.cpp: added template - instantiations. - -Tue Jun 30 18:55:45 1998 Chris Gill - - * ace/Message_Queue_T.{cpp, h} - - Added methods to ACE_Message_Queue_Factory to - create an ACE_Dynamic_Message_Queue with the - deadline and laxity with cleanup strategies. - - * tests/Dynamic_Priority_Test.cpp - - Added tests for the new cleanup strategy factory methods - -Tue Jun 30 18:03:15 1998 Chris Gill - - * ace/Message_Queue_T.{cpp, h} - ace/Message_Block.{cpp, h, i} - - Reorganized ACE_Dynamic_Message_Queue and related classes, - fixed bugs that turned up in testing: it's ready to put - on the road and see how it runs ;-) - - * tests/Dynamic_Priority_Test.{cpp, dsp} - tests/tests.dsw - tests/Makefile - tests/run_tests.{bat, sh} - - Added a test for the static and dynamic (both deadline and laxity - based) message queues, which assigns various message attributes, - pushes messages into the queue, and makes sure the resulting - dequeue order is correct for the given kind of queue. - -Tue Jun 30 14:04:42 1998 Steve Huston - - * ace/Message_Queue_T.cpp: Fixed references to an undeclared - priority_eval_func_ptr_ - I think I figured out what it was - supposed to be doing, but I'm not quite sure. It compiles ;-) - - * ace/Synch.h (ACE_Adaptive_Lock): Removed "= 0" (pure virtual) from - destructor decl. The function is defined in Synch.cpp. - -Tue Jun 30 13:13:21 1998 Irfan Pyarali - - * ace/WFMO_Reactor.cpp (open): Made sure that size does not exceed - MAXIMUM_WAIT_OBJECTS. Thanks to Dr. Schmidt for pointing this - out. - -Tue Jun 30 11:45:12 1998 Steve Huston - - * ace/Message_Queue_T.cpp: Added explicit class names where needed - for ANSI C++. Fixed some compile errors. Still needs more work to - compile correctly on HP-UX aCC. - -Tue Jun 30 09:27:25 1998 David L. Levine - - * etc/ACE-guidelines.html: added a guideline about using ACE_Export. - - * ace/Message_Queue.cpp (ACE_Message_Queue_Vx::dtor; VxWorks only): - added close () call to destructor, because the one in the parent - class will never get called because head_ is always 0 in the derived - class. - - * ace/Message_Queue.i (VxWorks only): finished implementing the - ACE_Message_Queue_Vx inline member functions. - - * tests/Message_Queue_Test.cpp: added performance tests and - tests of ACE_Message_Queue_Vx. - -Tue Jun 30 03:39:15 1998 Nanbor Wang - - * ace/Synch.h (ACE_RW_Process_Mutex): This class no longer needs - to inherit from ACE_Process_Mutex. - - * ace/Synch.cpp (ACE_RW_Process_Mutex): On non-Win32 platforms, - the underlying ACE_File_Lock needs to be created with owner's - read/write permission. Otherwise, other process won't be able - to access the lock. - - * Makefile (CONTROLLED_FILES): Added ChangeLog-98a and - ChangeLog-97b into release. Thanks to Ivan Murphy - for pointing this out. - -Tue Jun 30 00:51:32 1998 Douglas C. Schmidt - - * ACE version 4.5.19 released. - -Tue Jun 30 00:07:39 1998 Nanbor Wang - - * examples/Service_Configurator/Misc/main.dsp: Added macro - definition ACE_SVC_HAS_DLL=0 in this project. DLL linkage is - not used in this example (yet.) Thanks to Joe Covalesky - for noticing this. - -Mon Jun 29 21:16:39 1998 David L. Levine - - * ace/OS.cpp (invoke): wrapped final return with ACE_NOTREACHED. - "It's the right thing to do." - -Mon Jun 29 19:42:12 1998 Irfan Pyarali - - * ace/Timeprobe_T.cpp (ACE_Timeprobe): Changed __TEXT to ASYS_TEXT. - -Mon Jun 29 14:48:58 1998 Nanbor Wang - - * ace/OS.h: Added UNICODE macros for non-Win32 platforms. Thanks - to Jeff Greif for pointing this out. - - * ace/OS.cpp (invoke): Added a return at the end to keep AIX - happy. Thanks to CLahey@cccis.com for reporting this. - -Mon Jun 29 11:37:28 1998 Steve Huston - - * ace/ACE.cpp: Added a 'const' to initialized ASYS_TCHAR * - string - literal conversion to char * is deprecated in C++. - -Sun Jun 28 22:16:51 1998 David L. Levine - - * examples/Service_Configurator/Misc/main.cpp (main): removed - argc declaration because it was unused. - - * examples/Threads/task_five.cpp (work): added - ACE_UNUSED_ARG (stack_size). - - * ace/Message_Queue_T.h: fully qualify the DEFAULT_[HL]WM - references so that it will compile with aCC 1.07 on HPUX 10.20. - Thanks to Avi Nash for reporting this - problem. - - * acer/Message_Queue.{h,cpp} (ACE_Message_Queue_Vx:enqueue_head/tail): - implement these for VxWorks. enqueue_head_i just calls - enqueue_tail_i. - -Sat Jun 27 18:13:05 1998 Irfan Pyarali - - * ace/Timeprobe_T.cpp (ACE_Timeprobe - copy constructor): Stupid - MSVC is forcing me to define this and make it public; it should - really be protected; please don't use it. - - * ace/Timeprobe.h: Added ACE_SINGLETON_DECLARATION; otherwise all - compilation units would get a different instantiation of the - time probe class. Also, changed ACE_TIMEPROBE_SINGLETON to a - #define instead of a typedef; otherwise the compiler bitched - when it was use in ACE_SINGLETON_DECLARATION. - - * SINGLETON_INSTANTIATION: Removed this flag from all files in - ACE. It is causing duplicate declaration errors. - -Sat Jun 27 11:29:50 1998 Douglas C. Schmidt - - * ACE version 4.5.18 released. - -Sat Jun 27 11:27:28 1998 David L. Levine - - * ace/Basic_Types.h: use ACE_CAST_CONST instead of const in - ACE_CU64_TO_CU32. - -Sat Jun 27 11:03:52 1998 Douglas C. Schmidt - - * README: Updated the list of people who have contributed to TAO. - -Sat Jun 27 07:07:43 1998 Douglas C. Schmidt - - * ACE version 4.5.17 released. - -Sat Jun 27 00:27:29 1998 Irfan Pyarali - - * ace/Timeprobe: - - - Added back ACE_COMPILE_TIMEPROBES. David pointed out that - without this flag, size of ACE increases even when time probes - are not being used. Therefore, users must compile ACE with - this flag defined if they want to use time probes. This can - be achieved by doing one of the following: - - . Use make probe = 1, if you are using the make utility. - - . Define ACE_COMPILE_TIMEPROBES in config.h - - . Define ACE_COMPILE_TIMEPROBES in the VC project file. - - . Other regular methods will also work. - - It is not necessary to define ACE_COMPILE_TIMEPROBES when - using time probes, you simply need ACE_ENABLE_TIMEPROBES. You - can use the ACE_TIMEPROBE_* macros to program the time probes, - and use the ACE_ENABLE_TIMEPROBE to enable the time probes. - If you define ACE_ENABLE_TIMEPROBE in your code, but forget to - compile ACE with ACE_COMPILE_TIMEPROBES, you will end up with - linker errors. - - Remember that ACE_COMPILE_TIMEPROBES means that the ACE - library will contain code for time probes. This is only - useful when compiling ACE. ACE_ENABLE_TIMEPROBES means that - the ACE_TIMEPROBE_* macros should spring to life. - - - Added inclusion of OS.h. This way the ACE_COMPILE_TIMEPROBES - can be specified in the config file. - - * include/makeinclude/wrapper_macros.GNU: probe = 1 no longer - means ACE_ENABLE_TIMEPROBE. It only means - ACE_COMPILE_TIMEPROBES. This was changed because defining - ACE_ENABLE_TIMEPROBE here is too broad. ACE_ENABLE_TIMEPROBE is - cleverly designed so that it allows only some time probes to be - enabled (where ACE_ENABLE_TIMEPROBE is defined), while others to - be disabled (where ACE_ENABLE_TIMEPROBE is not defined). - - Example: IDL_Cubit time probes can be enabled without enabling - TAO time probes. Or TAO time probes can be enabled without - enabling IDL_Cubit time probes. TAO time probes are controlled - through TAO/tao/Timeprobes.h. - - * tests/Timeprobe_Test.cpp: - - - Defining ACE_ENABLE_TIMEPROBES is not forced. Users can - uncomment this at the top of the file. This relieves us from - trying to include the symbols of ACE_Timeprobes from ACE if - ACE was compiled without using ACE_COMPILE_TIMEPROBES (the - #include ace/Timeprobe.cpp trick did not work on all 8 - different ways of compiling ACE on NT). - - - Made the registration of the description arrays similar to the - real use cases (in TAO). - - - Introduced enums and took the magic numbers out. - -Fri Jun 26 20:37:06 1998 Matthew J Braun - * tests/Logger/clnt.h - * tests/Logger/clnt.cpp - * tests/Logger/svr.cpp - * orbsvcs/orbsvcs/Log/Logger_i.h - * orbsvcs/orbsvcs/Log/Logger_i.cpp - * orbsvcs/orbsvcs/Logger.idl - - The current status of this is incomplete. The svr* test is guaranteed - to be nonfunctional (I cannot yet speak for the rest). - - -Fri Jun 26 14:52:33 1998 Nanbor Wang - - * tests/test_config.h: Don't close the ofstream before opening the - log stream in ACE_APPEND_LOG on Win32. It it not necessary - because Win32 doesn't have fork anyway and it somehow confuses - Win32 (becuase no file was openen at that point.) - - * performance-tests/Makefile: Temporarily removed Synch-Benchmark - from the targets. It should be added back once the work is - done. - -Fri Jun 26 11:50:03 1998 David L. Levine - - * ace/OS.h: map ACE_dynamic_cast to static_cast with Sun C++, - without RTTI, to avoid warning about using dynamic_cast - without RTTI. Thanks to J. Russell Noseworthy - for reporting this. - - * include/makeinclude/wrapper_macros.GNU,ACE-INSTALL.html: - added rtti make option. - - * ace/Message_Queue.*: on VxWorks, added ACE_Message_Queue_Vx, - which wraps native VxWorks messages queues. See the header - file for limitations. - - * ace/Message_Queue_T.*,Makefile: split Message_Queue into - template and non-template files. - - * ace/Basic_Types.h: added ACE_CU64_TO_CU32 conversion macro, - for converting const ACE_UINT64 to const ACE_UINT32. The old - ACE_U64_TO_U32 wouldn't work with Sun C++'s ANSI casts. - - * performance-tests/Misc/basic_perf.cpp (per_iteration): use - ACE_CU64_TO_CU32 for narrowing the const ACE_UIN64 argument. - - * ace/config-sunos5.5.h: added ACE_HAS_ANSI_CASTS with Sun C++ 4.2. - - * include/makeinclude/platform_sunos5_sunc++.GNU: added - -features=castop to CCFLAGS, to enable use of ANSI casts. - - Thanks to J. Russell Noseworthy - for recommending the above two changes. - - * include/makeinclude/platform_sunos5_sunc++.GNU: Added - support for rtti=1 option to make, to optionally enable RTTI. - -Fri Jun 26 11:39:49 1998 Nanbor Wang - - * ACE-INSTALL.html: Added more infomation in {Free,Net}BSD. - -Fri Jun 26 10:51:07 1998 Carlos O'Ryan - - * ace/OS.h: - Fixed problem in ACE_DES_* macros, some preprocessors were - tokenizing ::~CLASS as ":: ~CLASS" and we wanted ":: ~ CLASS" - (were class in a macro argument). - -Fri Jun 26 09:48:55 1998 Douglas C. Schmidt - - * VERSION: Updated this file to direct bug reports to - the ACE mailing list. - -Fri Jun 26 10:43:02 EET DST 1998 Wei Chiang - - * ace/CLASSIX/CLASSIX_OS.cpp: - ACE_CLASSIX_OS::ACE_CLASSIX_OS() - After created an CLASSIX reactor as an actor-wide singleton - reactor, delete the original reator singleton, if any. - -Fri Jun 26 02:18:05 1998 Nanbor Wang - - * performance-tests/Synch-Benchmarks/Benchmark[_Base].{h,cpp}: - * performance-tests/Synch_Benchmarks/Makefile: Added a new class - Benchmark_Base so we can not only load the test items - but also the test methods dynamically. - -Wed Jun 24 21:37:22 1998 David L. Levine - - * ace/Message_Queue.cpp (refresh_queue): fixed syntax - error: extraneous ;. - -Wed Jun 24 19:52:30 1998 Irfan Pyarali - - * ace/IPC_SAP.cpp (enable,disable): Fixed #define nesting. - -Wed Jun 24 15:36:18 1998 Nanbor Wang - - * examples/ASX/Event_Server/Event_Server/Peer_Router.cpp - (Peer_Router_Context): For some reason, MSVC can't grop the - temporary objects. Therefore, I changed the ACE_INET_Addr object - in the constructor to a local variable. - -Wed Jun 24 17:10:06 1998 Irfan Pyarali - - * ace/Timeprobe: Removed ACE_COMPILE_TIMEPROBE. ACE library will - always contain ACE_Timeprobe code. - -Wed Jun 24 16:20:02 1998 James CE Johnson - - * ace/IOStream.cpp (underflow,overflow): added protection against - errors, when get/put buffers can be set to 0. - -Wed Jun 24 14:42:50 1998 Chris Gill - - * ace/Message_Queue.{cpp,h}: added =TITLE/=DESCRIPTION - and method comments to ACE_Message_Queue_Factory - - * ace/Message_Block.h: fixed comment in ACE_Laxity_Message_Strategy - -Wed Jun 24 13:35:15 1998 Chris Gill - - * ace/Message_Queue.{cpp,h,i} - ace/Message_Block.{cpp,h,i}: Fixed ACE_UNIMPLEMENTED_FUNC - declarations in ACE_Dynamic_Message_Queue, moved the - ACE_Dynamic_Message_Strategy, ACE_Laxity_Message_Strategy, - and ACE_Deadline_Message_Strategy classes from the - Message_Queue.* files into the respective Message_Block.* - files (fixes link errors on platforms such as NT which - require template source). - -Wed Jun 24 11:38:00 1998 Chris Gill - - * ace/Message_Block.{cpp,h,i}: Added worst case execution time and - deadline absolute time ACE_Time_Value members to ACE_Message_Block. - These default to ACE_Time_Value::zero in the constructors and - initialization methods. - - * ace/Message_Queue.{cpp,h,i}: Added ACE_Dynamic_Message_Queue, - ACE_Dynamic_Message_Strategy, ACE_Deadline_Message_Strategy, - ACE_Laxity_Message_Strategy, and ACE_Message_Queue_Factory - classes to facilitate adaptive use of statically or dynamically - prioritized message queues. - -Wed Jun 24 10:23:27 1998 David L. Levine - - * bin/make_release: 1) inserted /pkg/gnu/bin at head of - PATH, if it exists. That way, cvs diff will use GNU diff. - Thanks to Doug for tripping over that. - 2) changed grep -E to egrep. - - * ace/OS.i,gethrtime.cpp (gethrtime): with Pentium and g++ or ghs, - only; fixed load of 64-bit tick count into two 4-byte ints. - - * performance-tests/Misc/basic_perf.cpp (iteration_time): check - for elapsed_time_ less than empty_iteration_time_, and return 0 - if so. - -Wed Jun 24 10:02:14 1998 Douglas C. Schmidt - - * examples/ASX/Event_Server/Transceiver/transceiver.cpp - (parse_args): Fixed a warning about control reaching the end of - a method. Thanks to David Levine for reporting this. - - * .cvsignore: Added "build" to make CVS happy. Thanks to - David for this info. - - * ace/CLASSIX: Reran "make depend." - - -Wed Jun 24 13:34:32 EET DST 1998 Wei Chiang - - * tests/CLASSIX/* - Attached "CLASSIX_" to all the file names in this directory - Added Imakefile - - * ace/CLASSIX/CLASSIX_Select_Reactor.* - test/CLASSIX/CLD_Connector_Test.cpp - get_current_info() is now renamed to current_info() in compliant - with ACE_Reactor_Impl class. - -Wed Jun 24 08:17:25 EET DST 1998 Wei Chiang - - * Renamed ace/CLASSIX/CLASSIX_Reactor.* to - ace/CLASSIX/CLASSIX_Select_Reactor.* and adujsted other files - accordingly. - - * ace/CLASSIX/CLASSIX_Reactor.* - make naming reference consistenet: all the references to - ACE_CLASSIX_Reactor are now to ACE_CLASSIX_Select_Reactor - -Wed Jun 24 02:39:35 1998 Douglas C. Schmidt - - * ACE version 4.5.16 released. - -Wed Jun 24 00:00:44 1998 Douglas C. Schmidt - - * examples/ASX/Event_Server/Transceiver/transceiver.cpp: Cleaned - up the Event_Transceiver code a bit. - - * examples/ASX/Event_Server/Event_Server/event_server.cpp (main): - Cleaned up the code a bit. - - -Wed Jun 24 06:54:00 EET DST 1998 Wei Chiang - - * Attached "CLASSIX_" to all the file names in ace/CLASSIX. - - * Modified include statments in ace/CLASSIX/* to reflect the - name changes. - - * Added Makefile in ace/CLASSIX - - * ace/CLASSIX/CLASSIX_Reactor.h: - ACE_CLASSIX_Reactor_Notify is now derived from ACE_Reactor_Notify - The private data member, select_reactor_, is now an - ACE_CLASSIX_Reactor class instead of an ACE_Select_Reactor class. - - * ace/CLASSIX/CLASSIX_Reactor.cpp: - in open() - uses ACE_dynamic_cast() to cast - parameter from ACE_Reactor_Impl to ACE_CLASSIX_Reactor - -Tue Jun 23 22:18:42 1998 Douglas C. Schmidt - - * examples/Mem_Map/file-reverse/file-reverse.cpp: Fixed a minor - bug where the program would ungraciously core dump if the file - given on the command-line doesn't exist. Thanks to William - S. Lear for reporting this. - -Tue Jun 23 20:33:30 1998 Irfan Pyarali - - * ace/Synch.h (ACE_Adaptive_Lock): Added ACE_Export. - -Tue Jun 23 18:59:31 1998 Steve Huston - - * ace/Acceptor.cpp (ACE_Strategy_Acceptor<>::resume()): Don't - suspend() the object; resume() it - looked like a cut/paste error. - -Tue Jun 23 16:41:35 1998 Nanbor Wang - - * ace/Synch.{h,cpp} (class ACE_Adaptive_Lock): Added the new Lock - class which allows its subclass to determine the actual locking - mechanism it uses at run time. Notice that all subclasses must - provide their own contructor/destructor implementation. - -Tue Jun 23 06:40:35 1998 David L. Levine - - * examples/Map_Manager/test_hash_map_manager.cpp (main): - replaced use of cerr with and ACE_ERROR_RETURN. Thanks - to Philippe Klein for reporting - this. - - * netsvcs/clients/Naming/Dump_Restore/Dump_Restore.cpp: - added #include of ace/streams.h. Thanks to Philippe Klein - for reporting this. - - * tests/TSS_Test.cpp (worker): declare "u" globally so that - we don't quickly run out of TSS keys. - -Mon Jun 22 09:25:32 1998 Carlos O'Ryan - - * ace/XtReactor.cpp: - The notify_handler_ is a pointer now, it was still deferenced as - an object. - -Mon Jun 22 09:04:21 1998 David L. Levine - - * include/makeinclude/platform_osf1_4.0.GNU: removed suppression - of warning 340, used reference to copied (temporary) value, - because it's no longer needed. - - * ace/Message_Queue.cpp (ACE_Message_Queue_Iterator ctor): - replaced "queue" with "q" to avoid problems with STL or on - platforms that #define queue. Thanks to Dave Meyer - for reporting this. - - * ace/Synch_T.h: added adapter class ACE_TSS_Type_Adapter. - It adapts built-in types for use with ACE_TSS. - - * tests/TSS_Test.cpp: demonstrate/test use of ACE_TSS_Type_Adapter. - - * ace/Timeprobe.h: added semicolon to end of - ACE_TIMEPROBE_EVENT_DESCRIPTIONS definition, when it's non-null. - - * tests/Timeprobe_Test.cpp (main): removed trailing semicolon - from ACE_TIMEPROBE_EVENT_DESCRIPTIONS, and added ACE_UNUSED_ARGs - to avoid compilation warnings about unused variables. - -Mon Jun 22 04:49:29 1998 Douglas C. Schmidt - - * man/windex: Removed ACE_Service_Record from all the - documentation since it is no longer relevant. Thanks - to Ivan Murphy for reporting this. - -Mon Jun 22 02:59:42 1998 Nanbor Wang - - * ace/Process.cpp (setenv_i): Nedd to adjust the memory size to - the actual string size. - -Mon Jun 22 02:32:56 1998 Gonzalo Diethelm - - * ace/Thread_Manager.h: - * ace/Thread_Manager.cpp: - * ace/Thread_Manager.i: - * ace/OS.cpp (uname): - Moved a few things (comparison operators) from - ACE_Thread_Descriptor to ACE_Thread_Descriptor_Base, to satisfy - Borland compilers. - Enabled a conditional compilation for all Borland compilers. - Thanks to Valik Solorzano Barboza for pointing - these things out. - -Mon Jun 22 01:14:36 1998 Gonzalo Diethelm - - * ace/ACE.bpg: - * ace/ACED.bpr: - * ace/ACER.bpr: - Contained ^M characters. - I also made sure there were no absolute paths pointing to "gonzo" - directories... - - * ace/ACED.cpp: - * ace/ACER.cpp: - Added Stats.cpp as a module in the right place. - - * ace/OS.h: - Added a ACE_NOOP macro to avoid compilation warnings when "if" is - used as a noop in certain macros. - - * ace/Hash_Map_Manager.cpp: - * ace/Map_Manager.cpp: - Replaced the use of "if" as a noop with ACE_NOOP. - - * ace/Signal.cpp: - For some obscure reason, Borland needs a blank line between the - #if and the extern "C" void ace_sig_handler_dispatch() - definition. Don't ask... - - * ace/Asynch_IO.h: - Changed (again) inheritance for ACE_Asynch_Result from protected - to public. - - * tests/Aio_Platform_Test.bpr: - * tests/Atomic_Op_Test.bpr: - * tests/Barrier_Test.bpr: - * tests/Basic_Types_Test.bpr: - * tests/Buffer_Stream_Test.bpr: - * tests/Conn_Test.bpr: - * tests/Enum_Interfaces_Test.bpr: - * tests/Env_Value_Test.bpr: - * tests/Future_Test.bpr: - * tests/Handle_Set_Test.bpr: - * tests/Hash_Map_Manager_Test.bpr: - * tests/IOStream_Test.bpr: - * tests/MM_Shared_Memory_Test.bpr: - * tests/MT_Reactor_Timer_Test.bpr: - * tests/MT_SOCK_Test.bpr: - * tests/Map_Manager_Test.bpr: - * tests/Mem_Map_Test.bpr: - * tests/Message_Block_Test.bpr: - * tests/Message_Queue_Notifications_Test.bpr: - * tests/Message_Queue_Test.bpr: - * tests/Naming_Test.bpr: - * tests/Notify_Performance_Test.bpr: - * tests/OrdMultiSet_Test.bpr: - * tests/Pipe_Test.bpr: - * tests/Priority_Buffer_Test.bpr: - * tests/Priority_Reactor_Test.bpr: - * tests/Priority_Task_Test.bpr: - * tests/Process_Mutex_Test.bpr: - * tests/Process_Strategy_Test.bpr: - * tests/Reactor_Exceptions_Test.bpr: - * tests/Reactor_Notify_Test.bpr: - * tests/Reactor_Performance_Test.bpr: - * tests/Reactor_Timer_Test.bpr: - * tests/Reactors_Test.bpr: - * tests/Reader_Writer_Test.bpr: - * tests/Recursive_Mutex_Test.bpr: - * tests/SOCK_Connector_Test.bpr: - * tests/SOCK_Test.bpr: - * tests/SPIPE_Test.bpr: - * tests/SString_Test.bpr: - * tests/SV_Shared_Memory_Test.bpr: - * tests/Semaphore_Test.bpr: - * tests/Service_Config_Test.bpr: - * tests/Sigset_Ops_Test.bpr: - * tests/Simple_Message_Block_Test.bpr: - * tests/TSS_Test.bpr: - * tests/Task_Test.bpr: - * tests/Thread_Manager_Test.bpr: - * tests/Thread_Mutex_Test.bpr: - * tests/Thread_Pool_Test.bpr: - * tests/Time_Service_Test.bpr: - * tests/Time_Value_Test.bpr: - * tests/Timer_Queue_Test.bpr: - * tests/Tokens_Test.bpr: - * tests/UPIPE_SAP_Test.bpr: - * tests/tests.bpg: - Contained ^M characters. - I also made sure there were no absolute paths pointing to "gonzo" - directories... - -Mon Jun 22 01:33:12 1998 Nanbor Wang - - * ace/OS.h (ACE_SYNCH_{1,2}): These two macros were added back for - backward compatibility. - -Mon Jun 22 01:12:53 1998 Irfan Pyarali - - * ace/OS.i (dlerror): Just use FormatMessageA instead of - FormatMessage. The you don't have to worry about UNICODE being - turned on. - -Mon Jun 22 00:01:02 1998 Douglas C. Schmidt - - * ACE version 4.5.15 released. - -Sun Jun 21 23:54:28 1998 Nanbor Wang - - * ace/config-freebsd-pthread.h: Defined - ACE_LACKS_MUTEXATTR_PSHARED and ACE_LACKS_CONDATTR_PSHARED. - -Sun Jun 21 10:14:32 1998 Douglas C. Schmidt - - * examples/IPC_SAP/SOCK_SAP/CPP-unserver.cpp (server): Fixed - another ambiguity caused by the recent SOCK_IO changes. Thanks - to David for pointing this out. - -Sun Jun 21 00:16:56 1998 Nanbor Wang - - * ace/OS.i (dlerror): Have to treat UNICODE differently because - FormatMessage takes wchar when UNICODE is defined. - - * ace/WFMO_Reactor.{h,i,cpp}: Changed the parent class of - ACE_WFMO_Reactor_Notify from ACE_Event_Handler to - ACE_Reactor_Notify. - (dump): Added this virtual function implementation for - ACE_WFMO_Reactor_Notify. - - * Ace/Proactor.cpp (timeout): Fixed a typo. - -Sat Jun 20 16:51:39 1998 Douglas C. Schmidt - - * ace/Reactor*: Made a slew of changes to the Reactor and it's - associated implementations so that we can integrate it - seamlessly with Chorus ClassiX IPC. Thanks to Wei Chiang for - these changes. - - * ace/Acceptor.cpp: Added a flag that keeps track of whether we should - use select() in the Acceptor. This makes it easier to integrate - this stuff with Chorus IPC. Thanks to Wei Chiang for this. - - * examples/IPC_SAP/SOCK_SAP/CPP-inclient.cpp: Removed the trailing - 0 to the send() operation to (1) avoid overload ambiguity and - (2) to use write() rather than send()! Thanks to Chris Healey - for reporting this. - - * ace/ACE: The default condition in the select switch in the - enter_*_timed_wait functions assumed that all values returned - from select if not 0 or 1 will be -1. This is true in those - functions due to only 1 file descriptor flag being set. Thanks - to Chris Healey for generalizing this a bit... - - * ace/SOCK_IO: Added the wrappers for the "non-flags" version of - timed send()/recv(). Thanks to Chris Healey for this. - - * ace/FILE_Addr.cpp: Cleaned up the code a bit to be more - consistent. Thanks to Chris Healey for suggesting this. - - * ace/FILE_Addr.cpp (ACE_FILE_Addr): Removed the memset() in the - constructor since this is overkill... - - * ace/ACE.cpp (send_n): Fixed a dump cut&paste bug in the timed - version of send_n(). Thanks to Chris Healey - for reporting this. - -Sat Jun 20 14:58:21 1998 Nanbor Wang - - * bin/indent_macros.perl: Instead of hardcoding perl's location in - the script, it now invokes perl according to user's environment - setting. Thanks to David for providing the improvement. - -Sat Jun 20 01:24:28 1998 Nanbor Wang - - * include/makeinclude/platform_freebsd_pthread.GNU: Changed to use - -Wall to report all warnings. - - * ace/OS.cpp (thr_create): Specify as an unused - argument when ACE_LACKS_SETSCHED. - - * ace/OS.{h,i,cpp}: Rearrange macro indentations. - - * bin/indent_macros.perl: This little perl script rearrange the - indentation of macros so they are a bit easier to debug. - - * ace/config-freebsd-pthread.h: Defined ACE_LACKS_PTHREAD_CANCEL. - -Sat Jun 20 00:14:07 1998 Alexander Babu Arulanthu - - * examples/Reactor/Proactor/test_proactor_with_aio.cpp: Test - program for the Asynch_Transmit_File, Asynch_Read_File, - Asynch_Read_Stream, Asynch_Write_File and Asynch_Write_Stream. - -Fri Jun 19 23:58:35 1998 Alexander Babu Arulanthu - * ace/Proactor.h : - * ace/Proactor.cpp : - * ace/Asynch_IO.h : - * ace/Asynch_IO.cpp : - - Implemented Asynch_Transmit_File for POSIX4 systems. - - Added a new class "ACE_Asynch_Transmit_Handler", which is - an auxillary handler class for Asynch_Transmit_File. This - does the actual transmission doing file read and stream - write asynchronously and finally calling the - transmit_handler in the application. - - Aiocb list is now of size RTSIG_MAX, the maximum number - of RT signals that can be queued in a process at a time. - -Fri Jun 19 22:17:35 1998 David L. Levine - - * bin/make_release (check_workspace): use cvs checkout instead - of update, to notice any new directories that have been added - to the repository but not to the workspace. - - There are .cvsignore files in /project/adaptive/ACE_wrappers - and /project/adaptive/ACE_wrappers/java. They can be used - to suppress tripping over any new, uncontrolled files, such - as releases, that are added to these directories. - - Filter ^U from checkout output, so that release need not be - based on the latest repository versions. Instead, the release - is based on the contents of the /project/adapative/ACE_wrappers - workspace. It need not be brought up-to-date with the repository, - though it cannot contain any modified files. This change allows - other users to continue to check in files prior to or during the - release. - - * examples/IPC_SAP/SOCK_SAP/CPP-inclient.cpp (read): added - ACE_UNUSED_ARG (len). - - * Makefile: fixed build of .obj/gethrtime.o with ghs/VxWorks/i86. - - * tests/run_tests.vxworks: added Timeprobe_Test, but commented - out. That test page faults when built with ghs for Pentium. - It appears that the STL-style iterator usage in ACE_Timeprobe - isn't handled properly by the compiler. - -Fri Jun 19 16:51:05 1998 Nanbor Wang - - * ace/config-freebsd-pthread.h (ACE_HAS_NONCONST_MSGSND): Macro - definition added. - - * ace/OS.i (sigwait): Suppress compiler warnings on FreeBSD. - (msgsnd): Separated the case ACE_HAS_NONCONST_MSGSND out. - - Thanks to Russell L. Carter for reporting - the above fix. - -Fri Jun 19 11:22:27 1998 David L. Levine - - * ACE version 4.5.13 released. - -Thu Jun 18 21:14:25 1998 David L. Levine - - * examples/Threads/task_five.cpp: renamed global stack_size - to default_stack_size, to avoid shadowing by stack_size in - main (). - - * ace/OS.i (dlopen): added support for ACE_HAS_SGIDLADD. - (dlerror): on WIN32, return a formatted message instead of 0. - Thanks to Kent Watsen for the diffs. - - * ace/config-irix6.x-sgic++-nothreads.h: added ACE_HAS_SGIDLADD. - Thanks to Kent Watsen for this addition. - - * Makefile: ACE-INSTALL is not a .PHONY target. - - * ace/Makefile: only regenerate Svc_Conf_[ly].cpp if at Wash. U. - -Thu Jun 18 20:46:46 1998 Nanbor Wang - - * performance_tests/Misc/childbirth_time.cpp: Changed to use the - variable MULTIPLY_FACTOR in statistic calculation. - - * ace/config-freebsd-pthread.h: Added the following definition: - #define ACE_HAS_SIGINFO_T - #define ACE_LACKS_SIGINFO_H - #define ACE_LACKS_UCONTEXT_H - #define ACE_LACKS_SI_ADDR - - * include/makeinclude/platform_freebsd_pthread.GNU: Changed to - invoke linker directly using g++. Added -pthread flag for - linker. This implies programs will link against libc_r - automatically now. Removed -lc_r. Other minor changes. - - Thanks very much for lots of help from FreeBSD team esp. Amancio - Hasty and John Birrell - . - -Thu Jun 18 19:32:30 1998 David L. Levine - - * ace/Token.cpp (dump): commented out print of owner_. Is - there a portable way to print an ACE_thread_t via ACE_DEBUG? - -Thu Jun 18 18:46:00 1998 Carlos O'Ryan - - * ace/Timeprobe.h: - * ace/Timeprobe_T.h: - * ace/Timeprobe_T.cpp: - Added methods to print the absolute values, this can be used to - mix the results of several processes: por example on Sparcs the - high-res timer is a CPU register so the value is consistent - across processes, there are some potential problems with - multiple CPUs, but that's not our case. - -Thu Jun 18 16:25:28 1998 Nanbor Wang - - * examples/Threads/task_five.cpp (main): Extracted out the body of - the test loop so that the delete[] gets called everytime the - body gets executed. - - * ace/Thread_Manager.cpp (ACE_EXECUTE_OP,kill): We need to guard - against non-existing target thread after searching the thread - table. Thanks to Savas Parastatidis - for noticing the problem. - -Thu Jun 18 09:23:39 1998 Irfan Pyarali - - * ace/config-win32-common.h: Fixed the inclusion of winsock - related files. Thanks to Ernesto Guisado - for suggesting this. - -Wed Jun 17 22:47:50 1998 David L. Levine - - * ace/OS.i (rw_trywrlock_upgrade): moved declaration of - local "result" before the ACE_PTHREAD_CLEANUP_PUSH. - PTHREAD_CLEANUP_PUSH/POP are macros that contain open/ - close braces on some platforms. So, any declarations - between them are not visible after the POP. - -Wed Jun 17 19:01:53 1998 Nanbor Wang - - The following changes provide an interface for ACE programmers - of more finer control over how Win32 structured exceptions are - handled. Thanks to Detlef Becker - for contemplating the idea and passing it to us. - - * ace/Log_Msg.{h,cpp} (seh_except_{selector,handler}): Added - new methods to retrieve/set structured exception handling - behavior. is used to determine the "proper" action a - thread should take upon a structured exception and - performs the actual exception handling routine. They are - structured as below in ace_thread_adapter: - - __except (ACE_LOG_MSG->seh_except_selector () (0)) - { - ACE_LOG_MSG->seh_except_handler () (0); - } - - * ace/OS.{h,cpp} (ACE_SEH_EXCEPT_HANDLER): New typedef used to - define user win32 structured exception handler. - - (ACE_SEH_Exception_{Selector,Handler}): Default structured - exception handler. Two handlers ACE_Log_Msg are initialized to - them by default. - - (ACE_Thread_Adapter,inherit_log_msg): Added initializing and - inheriting code to pass the spawning thread's structured - exception handling behaviors. - - * ace/config-win32-common.h - (ACE_SEH_DEFAULT_EXCEPTION_HANDLING_ACTION): This macro defines - the default action taken by ACE when a win32 structured - exception occurs. It is by default defined to - EXCEPTION_CONTINUE_SEARCH, which does not handle the exception - but simply pass the exception out. Users can overwrite the - default behavior by defining the macro in their config.h files. - -Wed Jun 17 17:30:11 1998 Michael Kircher - - * ace/OS.h: Added a condition variable and a flag to - the definition of reader/writer locks. - - * ace/OS.i: Implemented ACE_OS::rw_trywrlock_upgrade properly - using one condition variable and a flag. The condition - variable is used to get in front of all the possible - waiting writers and to wait on still working readers - on the rw_lock. The flag is used to indicate, that - a reader is upgrading its lock. rw_unlock obeys one more - case now. - - * ace/OS.cpp: The constructor for the Reader/writer locks - has changed slightly to initialize and destroy the - new members. - - * tests/Reader_Writer_Test.cpp: Added the use of the - rw_mutex.tryacquire_write_upgrade () method to the test. - -Wed Jun 17 07:34:11 1998 David L. Levine - - * tests/IOStream_Test.cpp (server): fixed sign of constant - used to check for valid double. Thanks to Mark Kettner - for reporting this. - - * performance-tests/UDP/udp_test.cpp: added a few - ACE_U64_TO_U32 explicit conversions. - - * tests/Priority_Buffer_Test.cpp (consumer): re-enabled the - statement to suppress the ghs warning about unused variable - cur_priority. - -Tue Jun 16 20:29:32 1998 Steve Huston - - * ACE-INSTALL.html: Added some comments concerning MSVC 5.0 and SP3. - Thanks to Bill Fulton for the excellent detective work. - -Tue Jun 16 16:08:23 1998 Irfan Pyarali - - * ace/Timeprobe_T.h (class ACE_Timeprobe): Fixed copy constructor - signature. Thanks to Chuck R. Gehr - (GehrCR@LOUISVILLE.STORTEK.COM) for pointing this out. - -Tue Jun 16 16:18:08 1998 Douglas C. Schmidt - - * ace/FILE_Addr.cpp (operator=): Check to make sure we - NUL-terminate the memcpy'd filename correctly. Thanks to Istvan - Buki for reporting this. - -Tue Jun 16 15:43:55 1998 Nanbor Wang - - * ACE-INSTALL.html: Changed to instruct users to #include - "ace/config-win32.h" instead of "config-win32.h" directly. - Thanks to Gonzo for noticing this. - -Tue Jun 16 10:33:20 1998 David L. Levine - - * os-patches/linux-patches.html: added RedHat 5.1 success - report from Chanaka Liyanaarachchi . - - * ace/Basic_Types.h,High_Res_Timer.cpp, - performance-tests/Misc/basic_perf.cpp: - added explicit ACE_U64_TO_U32 conversion macro. WIN32's __int64 - and ACE_U_LongLong need an explicit narrowing to 32 bits. This - macro provides a consistent way to do that on all platforms. - - * ace/Asynch_IO.*: added trailing $ to CVS keyword string. - - * ace/Asynch_IO.cpp: fixed so that it will compile with Sun CC - on Solaris 2.6. Thanks to Frederic ANDRES - for reporting this. - - * ACE-INSTALL.html: updated Linux RedHat info. - -Mon Jun 15 23:17:27 1998 David L. Levine - - * Makefile: added os-patches/ to distribution. - -Mon Jun 15 23:07:45 1998 David L. Levine - - * ACE version 4.5.12 released. - -Mon Jun 15 13:58:17 1998 David L. Levine - - * ace/config-chorus.h: replaced comment that said that the - config is for CHORUS using MIT threads with comment that says - that it uses the CHORUS POSIX threads interface. Thanks to - Leo Modica for questioning this, and Wei - Chiang for confirming it. - - * os-patches/linux-patches.html: updated glibc info. Thanks - to Bob Scott for pointing out the - glibc-2.0.7-7 is not available from sunsite. - -Sat Jun 13 13:10:05 1998 David L. Levine - - * tests/XtReactor_Test.cpp: moved explicit template instantiations - inside ACE_HAS_XT, because the #includes are all inside - ACE_HAS_XT also. - - * tests/XtReactor_Test.cpp: without ACE_HAS_XT, replaced - ACE_ERROR_RETURN with ACE_ERROR. This makes it consistent - with other tests, and allows the following ACE_END_TEST - statement to be reached. - - * tests/Process_Mutex_Test.cpp (main): specify full path to - spawned children. Removed Solaris/i386-specific code because - it should no longer be needed now that the test is fixed by - specifying the full path. (acquire_release): removed printout - at top. - - * ACE+TAO.tgz,ACE.tgz,ACE-lib.tgz,FSU-threads.tgz: added these - symlinks to their corresponding .tar.gz files. Thanks to - Gonzo and Darrell for suggesting this. - - * ace/RB_Tree.i (clear): removed extraneous ";" following the - function definition. - - * ace/Process.cpp (spawn): added an ACE_DEBUG printout before each - call to ACE_OS::exit (). - - * ace/Synch_T.cpp: removed the #pragma define_template for - ACE_Condition on __osf__ with cxx. It's no longer - needed, and was causing multiply defined instantiations with - cxx 6.1. - -Fri Jun 12 17:04:14 1998 Alexander Babu Arulanthu - - * ace/OS.h: Moved the #define's and typedef's (related to Proactor - stuff, things like TRANSMIT_BUFFERS etc) under '#if defined - (WIN32)' before OS.i. They were at the end of the file. - -Fri Jun 12 16:31:13 1998 Aniruddha Gokhale - - * ace/OS.h: (ACE_NTOHL, ACE_HTONL): Added macros for conversion - between network and host byte order. Thanks to James Hu for - contributing these. - -Fri Jun 12 14:29:40 1998 Douglas C. Schmidt - - * ace/OS.i (sema_wait): Changed the code so that it always treats - the time value argument in absolute time, even for Win32. - Thanks to Chuck Gehr for reporting this. - -Fri Jun 12 14:12:25 1998 Carlos O'Ryan - - * include/makeinclude/wrapper_macros.GNU: - The inclusion of the XtReactor is controlled on the - platform_macros file (or the command line). - Users simply type make xt_reactor=1 to enable this feature, or - set xt_reactor to 1 in the platform_macros.GNU file. - Some extra macros were added for platforms that require special - CPP, LD or libraries when linking against X/Windows. The macros - are described in this file. - The platforms that already had XtReactor compiled by default - still do. - - * ace/config-irix6.x-sgic++-nothreads.h: - * include/makeinclude/platform_irix6.x-sgic++.GNU: - Now the XtReactor configuration is controlled on the platform - file. - - * ACE-INSTALL.html: - Updated documentation for make flags. - - * tests/XtReactor_Test.cpp: - Fixed a few typos. - - * tests/Conn_Test.cpp: - Fixed some template instantiation pragmas. - -Thu Jun 11 22:05:31 1998 David L. Levine - - * tests/Process_Mutex_Test.cpp (main): kill children on - Solaris/i386 instead of waiting for them. (acquire_release): - added printout at top. It never appears, at least on - g++/Solaris/i386. - - * ace/Malloc.cpp (instance): wrap declaration of local "assertion" - with ifndef ACE_NDEBUG, to avoid warning about unused variable - with debug=0. - -1998-06-11 Alexander Babu Arulanthu - - * ace/Proactor.h (ACE_Proactor): Put insert_aiocb_list () under - ACE_HAS_AIO_CALLS so that it doesnt break in NT. - -Thu Jun 11 1998 Alexander Babu Arulanthu - - * ace/OS.h: Added typedef's, #define's and #include's under the - definition ACE_HAS_AIO_CALLS for the proactor porting. - - * ace/config-sunos5.6.h: Defined ACE_HAS_AIO_CALLS for - solaris2.6. - - * ace/Asynch_IO.h: - * ace/Asynch_IO.cpp: Added aio call support for Asynch_Read_File. See - the code under #if defined (ACE_HAS_AIO_CALLS) - - * ace/Proactor.h: - * ace/Proactor.cpp: Added support for AIO calls in Proactor. See - the code under #if defined (ACE_HAS_AIO_CALLS) - - * examples/Reactor/Proactor/test_proactor_with_aio.cpp: The test - program for Proactor doing aio stuff. - -Thu Jun 11 13:34:26 1998 Darrell Brunsch - - * ace/OS.cpp: Made change to uname to use a different structure - if certain Borland compilers are being used. Thanks to - Valik Solorzano for this fix. - - * bin/make_release: create .zip files in addition to .tar.gz files. - -Thu Jun 11 11:15:26 1998 Carlos O'Ryan - - * ace/XtReactor.cpp: - The notify_handler_ open method requires an extra argument. - -Wed Jun 10 14:31:55 1998 David L. Levine - - * ace/Strategies_T.cpp (ACE_Recyclable ctors): reordered - initializers to match declaration order. - - * tests/Conn_Test.cpp: fixed template instantiations: - ACE_SYNCH_MUTEX instead of ACE_SYNCH_RW_MUTEX. - - * tests/XtReactor_Test.cpp (main): added ACE_UNUSED_ARGS for - argc and argv without ACE_HAS_XT. - -Wed Jun 10 12:34:25 1998 Irfan Pyarali - - * ace/Strategies_T: Added two new template classes: ACE_Recyclable - and ACE_Hash_Recyclable. ACE_Recyclable adds a recyclable flag - to the class it is instantiated with. ACE_Hash_Recyclable - inherits from ACE_Recyclable and forces the class it is - instantiated with to have a hash() method. - - Also, the Hash_Addr was fixed so that it does not have the - recyclable flag anymore, since the Hash_Addr can be used even - when there is no recycling. - - Also updated the ACE_Cached_Connect_Strategy to reflect these - changes. - - * tests/Conn_Test.cpp: Fixed the template instantiations in lieu - of the changes to Hash_Addr. - -Wed Jun 10 11:05:39 1998 David L. Levine - - * bin/make_release: replaced ACE_wrappers-repository/ with - ACE_wrappers/ in diffs. Thanks to James Risinger - for reporting this. - -Wed Jun 10 01:31:46 1998 Gonzalo Diethelm - - * tests/Tokens_Test.cpp: - Changed how the Borland template instantiations are protected. - - * tests/XtReactor_Test.cpp: - test_config.h must be included before asking for ACE_HAS_XT. - Was missing the Borland non-sense. - - * tests/UPIPE_SAP_Test.cpp: - Protected the Borland template instantiations. - - * tests/Timeprobe_Test.cpp: - * tests/Time_Value_Test.cpp: - Added the Borland non-sense. - - * tests/Reactor_Timer_Test.cpp: - Added a couple of casts to avoid warnings. - - * tests/Priority_Buffer_Test.cpp: - Got rid of a (seemingly) useless piece of code. - - * tests/Naming_Test.cpp: - Modified a test so that it won't give warnings. - - * tests/Conn_Test.cpp: - Was missing the Borland non-sense. - Modified an #if-protected section to get rid of a warning. - Added a few extra Borland template instantiations. - - * ace/WFMO_Reactor.cpp: - * ace/SOCK_Dgram.cpp: - Under Borland, a couple of comparisons were always true (with a - warning) because of unsignedness. - - * ace/Malloc.cpp: - Assigned the consition of an assertion to a temporary variable to - avoid a misleading warning. - - * ace/Get_Opt.cpp: - Added an explicit comparison against 0 to avoid a warning. - - * ace/ACED.cpp: - * ace/ACER.cpp: - These files had been commited with ^M at the end of lines. - - * ace/ACE.cpp: - Changed a couple of run time checks for - ACE_DIRECTORY_SEPARATOR_CHAR into compile time tests; that got rid - of a couple of warnings under BCB3 (Borland C++ Builder 3.0). - - * ace/ACE.cpp: - * tests/Conn_Test.cpp: - Used ACE_NOTREACHED to avoid further warnings. - - * ace/OS.h: - Added Borland to the empty definition of ACE_NOTREACHED. - The definition of ACE_SEH_FINALLY for the case of Borland C++ - Builder 3.0 now uses __finally. This allowed most of the tests - that were hanging to complete ok. Thanks to David Tallman - for pointing this out. - -Tue Jun 9 19:35:26 1998 Douglas C. Schmidt - - * ace/XtReactor: Integrated the new XtReactor, which should now - work for Windows NT! Thanks to Kirill Rybaltchenko - for this. - - * tests: Added the new XtReactor_Test.cpp to test the features of - the XtReactor. Thanks to Kirill Rybaltchenko - for this test. - -Tue Jun 09 16:18:54 1998 David L. Levine - - * Makefile: removed old release targets. They're no longer - used, or maintained. - - * include/makeinclude/platform_sunos5_x86_g++.GNU: removed. - Use platform_sunos5_g++.GNU instead, on both sparcs and x86. - -Tue Jun 09 15:25:13 1998 David L. Levine - - * ACE version 4.5.11 released. - -Tue Jun 9 14:59:15 1998 Darrell Brunsch - - * ace/OS.cpp: Made it so both Borland and Microsoft use the - x.wProcessorArchitecture structure for system info. - -Tue Jun 09 14:35:28 1998 David L. Levine - - * tests/Tokens_Test.cpp,UPIPE_SAP_Test.cpp: only need the - template instantiations with Borland C++. - - * bin/make_release: create version diffs, in background, - when creating releases. - -Tue Jun 09 12:50:49 1998 Nanbor Wang - - * ace/ACE_Library.mak: Added Stats.cpp. - -Tue Jun 09 11:51:17 1998 Chris Gill - - * tests/MM_Shared_Memory_Test: added a null pointer check so - test complains rather than crashing when shared allocator fails. - -Mon Jun 8 21:03:23 1998 Douglas C. Schmidt - - * ace/Select_Reactor.cpp (any_ready): Fixed a more unrighteous bug - where we were assigning the values in the wait_set_ rather than - the ready_set_. Thanks to Stefan Ericsson - for reporting this bug. - -Mon Jun 8 19:15:38 1998 Nanbor Wang - - * ace/Malloc.h: - * ace/Malloc_Base.h (ACE_Allocator): Moved the definition of - abstract class ACE_Allocator from Malloc.h to a new file called - Malloc_Base.h to resolve a circular dependency among a bunch of - header files when compiling with UNICODE and inline enabled. - - * ace/SString.i: Changed to include "ace/Malloc_Base.h" to avoid - circular inclusion. - -Mon Jun 08 18:35:23 1998 Steve Huston - - * ACE-INSTALL.html: Added some updated HP-UX info (and a pointer to - Riverace's HP-UX hints page) and removed the warning to not use - MSVC 5.0 SP3 - per results from ace-users discussions last week, - SP3 is getting used successfully. - -Mon Jun 08 13:22:47 1998 David L. Levine - - * ace/Basic_Types.h: set ACE_SIZEOF_LONG_DOUBLE to 12 if - LDBL_MAX_EXP is 16384 and LDBL_DIG is 18. Thanks to - Sree Oggu for reporting this, on - SolarisX86 with Sun C++. - - * ace/Malloc.cpp (instance): cleaned up comments. - -Mon Jun 8 12:12:39 1998 Carlos O'Ryan - - * tests/UPIPE_SAP_Test.cpp: - Template instantiation was not using the ACE_SYNCH macros. - -Mon Jun 8 02:17:54 1998 Gonzalo Diethelm - - * ACE-INSTALL.html: - Added a comment regarding the new port to Borland C++ Builder. - - * ace/ACE.bpg: - * ace/ACED.bpr: - * ace/ACED.cpp: - * ace/ACER.bpr: - * ace/ACER.cpp: - - - * ace/ACE.cpp: - Got rid of unused const int MAX_STRING_SZ = 4096. - - * ace/Asynch_Acceptor.cpp: - * ace/Asynch_IO.cpp: - * ace/Msg_WFMO_Reactor.cpp: - * ace/config-win32-common.h: - Replaced the use of _WIN32_WINNT with ACE_HAS_WINNT4. Borland C++ - Builder doesn't handle _WIN32_WINNT very well when building under - Win95. - - * ace/Asynch_IO.h: - Now ACE_Asynch_Result inherits publicly from OVERLAPPED; - otherwise, Borland C++ Builder refuses to access OVERLAPPED - members. I'm not sure who's right or wrong here. - - * ace/CORBA_Ref.h: - Added an #include "ace/ACE.h". - - * ace/Future.h: - Two cosmetic changes. - - * ace/LOCK_SOCK_Acceptor.cpp: - Added an #include /**/ "ace/LOCK_SOCK_Acceptor.h". - - * ace/Log_Msg.cpp: - Borland C++ Builder doesn't like extern int sys_nerr, so I - protected against it. - - * ace/OS.cpp: - A couple of hacks to handle FILETIMEs and SYSTEM_INFO structs, - which are defined a little different under Borland C++ Builder. - - * ace/OS.h: - Added support for Borland C++ Builder. - - * ace/OS.i: - Borland C++ Builder handles a few functions differently: close, - SetFilePointer, wfdopen. - - * ace/Synch_T.h: - A comment on an #else spanned several lines and mixed // and /**/ - styles; hard to read. - - * ace/TTY_IO.cpp: - A switch was not properly indented and, as a result, had an extra - break that made Borland C++ Builder complain. - - * ace/WFMO_Reactor.cpp: - Got rid of a couple of unused local variables called result. - - * ace/config-win32-common.h: - Added a few defines for Borland C++ Builder. Don't know if - this is the proper way to do it, but there it is. - - * tests/Aio_Platform_Test.bpr: - * tests/Atomic_Op_Test.bpr: - * tests/Barrier_Test.bpr: - * tests/Basic_Types_Test.bpr: - * tests/Buffer_Stream_Test.bpr: - * tests/Conn_Test.bpr: - * tests/Enum_Interfaces_Test.bpr: - * tests/Env_Value_Test.bpr: - * tests/Future_Test.bpr: - * tests/Handle_Set_Test.bpr: - * tests/Hash_Map_Manager_Test.bpr: - * tests/IOStream_Test.bpr: - * tests/MM_Shared_Memory_Test.bpr: - * tests/MT_Reactor_Timer_Test.bpr: - * tests/MT_SOCK_Test.bpr: - * tests/Map_Manager_Test.bpr: - * tests/Mem_Map_Test.bpr: - * tests/Message_Block_Test.bpr: - * tests/Message_Queue_Notifications_Test.bpr: - * tests/Message_Queue_Test.bpr: - * tests/Naming_Test.bpr: - * tests/Notify_Performance_Test.bpr: - * tests/OrdMultiSet_Test.bpr: - * tests/Pipe_Test.bpr: - * tests/Priority_Buffer_Test.bpr: - * tests/Priority_Reactor_Test.bpr: - * tests/Priority_Task_Test.bpr: - * tests/Process_Mutex_Test.bpr: - * tests/Process_Strategy_Test.bpr: - * tests/Reactor_Exceptions_Test.bpr: - * tests/Reactor_Notify_Test.bpr: - * tests/Reactor_Performance_Test.bpr: - * tests/Reactor_Timer_Test.bpr: - * tests/Reactors_Test.bpr: - * tests/Reader_Writer_Test.bpr: - * tests/Recursive_Mutex_Test.bpr: - * tests/SOCK_Connector_Test.bpr: - * tests/SOCK_Test.bpr: - * tests/SPIPE_Test.bpr: - * tests/SString_Test.bpr: - * tests/SV_Shared_Memory_Test.bpr: - * tests/Semaphore_Test.bpr: - * tests/Service_Config_Test.bpr: - * tests/Sigset_Ops_Test.bpr: - * tests/Simple_Message_Block_Test.bpr: - * tests/TSS_Test.bpr: - * tests/Task_Test.bpr: - * tests/Thread_Manager_Test.bpr: - * tests/Thread_Mutex_Test.bpr: - * tests/Thread_Pool_Test.bpr: - * tests/Time_Service_Test.bpr: - * tests/Time_Value_Test.bpr: - * tests/Timer_Queue_Test.bpr: - * tests/Tokens_Test.bpr: - * tests/UPIPE_SAP_Test.bpr: - * tests/tests.bpg: - Added these Borland C++ Builder project files. - - * tests/Aio_Platform_Test.cpp: - * tests/Atomic_Op_Test.cpp: - * tests/Barrier_Test.cpp: - * tests/Basic_Types_Test.cpp: - * tests/Buffer_Stream_Test.cpp: - * tests/Enum_Interfaces_Test.cpp: - * tests/Env_Value_Test.cpp: - * tests/Future_Test.cpp: - * tests/Handle_Set_Test.cpp: - * tests/Hash_Map_Manager_Test.cpp: - * tests/IOStream_Test.cpp: - * tests/MM_Shared_Memory_Test.cpp: - * tests/MT_Reactor_Timer_Test.cpp: - * tests/MT_SOCK_Test.cpp: - * tests/Map_Manager_Test.cpp: - * tests/Mem_Map_Test.cpp: - * tests/Message_Block_Test.cpp: - * tests/Message_Queue_Notifications_Test.cpp: - * tests/Message_Queue_Test.cpp: - * tests/Naming_Test.cpp: - * tests/Notify_Performance_Test.cpp: - * tests/OrdMultiSet_Test.cpp: - * tests/Pipe_Test.cpp: - * tests/Priority_Buffer_Test.cpp: - * tests/Priority_Reactor_Test.cpp: - * tests/Priority_Task_Test.cpp: - * tests/Process_Mutex_Test.cpp: - * tests/Process_Strategy_Test.cpp: - * tests/Reactor_Exceptions_Test.cpp: - * tests/Reactor_Notify_Test.cpp: - * tests/Reactor_Performance_Test.cpp: - * tests/Reactor_Timer_Test.cpp: - * tests/Reactors_Test.cpp: - * tests/Reader_Writer_Test.cpp: - * tests/Recursive_Mutex_Test.cpp: - * tests/SOCK_Connector_Test.cpp: - * tests/SOCK_Test.cpp: - * tests/SPIPE_Test.cpp: - * tests/SString_Test.cpp: - * tests/SV_Shared_Memory_Test.cpp: - * tests/Semaphore_Test.cpp: - * tests/Service_Config_Test.cpp: - * tests/Sigset_Ops_Test.cpp: - * tests/Simple_Message_Block_Test.cpp: - * tests/TSS_Test.cpp: - * tests/Task_Test.cpp: - * tests/Thread_Manager_Test.cpp: - * tests/Thread_Mutex_Test.cpp: - * tests/Thread_Pool_Test.cpp: - * tests/Time_Service_Test.cpp: - * tests/Time_Value_Test.cpp: - * tests/Timer_Queue_Test.cpp: - * tests/Tokens_Test.cpp: - * tests/UPIPE_SAP_Test.cpp: - Added the Borland non-sense to allow the tests to link against the - ACE library under Borland C++ Builder. Major pain in the rear - end... - - * tests/test_config.h: - Added a couple of includes for the case of Borland C++ Builder. - - * tests/Hash_Map_Manager_Test.cpp: - Changed variable name allocator to alloc, to avoid conflicts with - STL allocators under Borland C++ Builder. - - * tests/Reactors_Test.cpp: - Changed variable name tm to thr_mgr, to avoid conflicts with - std::tm under Borland C++ Builder. - - * tests/Tokens_Test.cpp: - * tests/UPIPE_SAP_Test.cpp: - Added a few explicit template instantiations. - -Sun Jun 07 09:51:02 1998 David L. Levine - - * ace/Timeprobe_T.cpp: added #include of ace/Timeprobe.h. - It wouldn't compile on GreenHills without it. - - * STL/bool.h: only #define bool, etc., if _MSC_VER is #defined. - Thanks to Stanley Leeson for - reporting this. - - * tests/Timeprobe_Test.cpp: added #include of ace/Timeprobe.cpp - to pick up template instantiations, if ACE_COMPILE_TIMEPROBES - was not defined. This allows the test to build on platforms - that have explicit template instantiation when libACE was - built without timeprobes enabled. - -Sun Jun 7 01:06:12 1998 Douglas C. Schmidt - - * ace/config-freebsd-pthread.h: Added the - ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS flag to work around problems - with pthreads on FreeBSD. Thanks to Amancio Hasty - for reporting this. - -Sat Jun 6 22:00:54 1998 Douglas C. Schmidt - - * ace/Message_Queue.cpp: Added code so that advance() is more - thread-safe. - - * apps/gperf/src/Options.cpp (operator): Changed ACE_OS::exit() - to ACE_OS::_exit() so we'll leave no trace... - - * apps/gperf/src/Key_List.cpp (output_switch): Fixed another bug - where strcmp() should be generated instead of strncmp(). - - * apps/gperf/src: We no longer call the inline option "GNU" but - now call it "INLINE". - - * apps/gperf/src/{Options.h,Key_List.cpp,Gen_Perf.cpp}: Revised - the LARGE_STACK_ARRAY code so that it only gets compiled if - we're using GCC. - - * apps/gperf/src/Key_List.cpp (output_switch): Fixed a bug where - strcmp() was being used instead of strncmp(). Thanks to C++ - for finding this! - - * apps/gperf/src/Key_List.cpp: Removed all uses of "register" - since C++ compilers can do this automagically... - - * apps/gperf/tests/test.cpp (main): Modified the test program to - use C++ rather than C (ugh!). - - * ace: Added two new files: Timeprobe_T.h and Timeprobe_T.cpp in - order to solve problems with multiply defined symbols. Thanks - to Brian Mendel, David Levine, and Irfan for tracing this down. - -Sat Jun 6 19:10:54 1998 Sergio Flores - - * ace/config-vxworks5.x.h: changes the default thread priority - from 6 to 101. - -Sat Jun 06 16:43:01 1998 David L. Levine - - * ace/Timeprobe.cpp (dtor): inserted missing "[]" in delete of - array. - -Fri Jun 5 11:53:18 1998 Darrell Brunsch - - * ace/Log_Msg.{h,cpp}: Added enable_debug_messages() to do - the opposite of disable_debug_messages(). - - * ace/Parse_Node.cpp: Got rid of all the checks of the - Service Configurator's debug flag. Instead, the checking - will occur in the Service Configurator. - - * ace/Service_Config.cpp: Added to Stephen Coy's changes so - that debug messages are turned back on after the Service - Configurator is done. That way, other code can still use - debug messages. - -Thu Jun 4 12:25:48 1998 Rajiv C. Gandhi - - * apps/gperf/src/Options.h: removing the option to stack - allocate some large arrays as CC does not seem to like it. - - * apps/gperf/src/Key_List.cpp (output_lookup_array): removing - the option to stack allocate some large arrays as CC does - not seem to like it. - - * apps/gperf/src/Gen_Perf.cpp: removing the option to stack - allocate some large arrays as CC does not seem to like it. - -Thu Jun 04 05:03:09 1998 Douglas C. Schmidt - - * ACE version 4.5.10 released. - -Wed Jun 3 02:24:47 1998 Nanbor Wang - - * ace/config-win32-common.h: Instead of defining _MT for users if - it's not defined, spit out an error message and stop the - compilation. Thanks to Barney Dalton - for suggesting this. - -Tue Jun 02 20:03:51 1998 Steve Huston - - * ace/config-hpux-1[01].x-hpc++.h: Added ACE_HAS_USING_KEYWORD for - aC++ on both platforms. - -Tue Jun 02 12:19:29 1998 Nanbor Wang - - * ace/Thread_Manager.cpp (wait_grp,wait_task): These two were - still copying thread_descriptors and deleting the copies - directly. This corrupted the cached thread_descriptor. - Changing them to use Thread_Descriptor_Base solved the problem. - Thanks to Zoran Ivanovic for finding - this. - -Tue Jun 02 08:29:20 1998 David L. Levine - - * include/makeinclude/wrapper_macros.GNU,ACE-INSTALL.html: - moved probe=1 support from individual Makefiles to - wrapper_macros.GNU. - -Tue Jun 02 08:09:41 1998 Steve Huston - - * ace/config-aix-4.1.x.h: Removed ACE_HAS_THREAD_SELF. It was - causing compile failure. Thanks to Lee Nash - for helping to work this out. - -Mon Jun 01 16:19:52 1998 Steve Huston - - * examples/Reactor/Dgram/Dgram.mdp, Dgram.mak: Added these files - to build the examples with MSVC 4.2. - -Mon Jun 01 13:01:14 1998 Irfan Pyarali - - * examples/Reactor/Dgram/Dgram.cpp (run_test): Because of the - delayed de-registration in WFMO_Reactor, WFMO_Reactor was trying - to call handle_close on the Event Handler after it was - destroyed. Solution: dynamically created the Event Handler and - call "delete this" in handle_close. The other alternative was - to call remove_handler with the DONT_CALL flag and to close the - socket in the Event Handler's destructor. - - * ace/Timeprobe: The vxworks compiler is lame as it cannot handle - operator placement new for arrays. Therefore, ACE_Allocator was - removed in favor of regular new and delete. - -Mon Jun 01 09:54:51 1998 David L. Levine - - * tests/Timeprobe_Test.cpp: removed trailing ; from template - instantation pragmas. - - * tests/Conn_Test.cpp,MM_Shared_Memory_Test.cpp, - Priority_Reactor_Test.cpp,SOCK_Test.cpp: replaced - !defined (ACE_WIN32) && !defined (VXWORKS) with - !defined (ACE_LACKS_FORK). - -Sun May 31 23:05:10 1998 David L. Levine - - * ACE-INSTALL.html,include/makeinclude/wrapper_macros.GNU: - added repo=1 make option support. It only helps when - building ACE applications. ACE and TAO still use explicit - instantiation when building their libraries, because it's - easiest to avoid link collisions that way. And it already - works. - -Sun May 31 18:31:24 1998 James C Hu - - * ace/RB_Tree.i: - * ace/RB_Tree.cpp: Changes suggested by Sergio to make it work - with older version of GCC. Referred to RB_Tree_Node_Color - through the parent class RB_Tree_Node_Base. - -Sat May 30 13:14:18 1998 James C Hu - - * ace/RB_Tree.h: Try to put enum into a class again. This time, - created a dummy base class to hold the RED and BLACK enums. - -Sat May 30 08:01:31 1998 David L. Levine - - * ace/RB_Tree.h (RB_Tree_Iterator::operator =): Added explicit - return type to the declaration. Wrapped with - ACE_UNIMPLEMENTED_FUNC. - -Fri May 29 23:06:02 1998 David L. Levine - - * ace/RB_Tree.{h,i}: moved enum RB_Tree_Node_Color out of the - (template) class declaration because g++ 2.7.2.3 couldn't - find it there. - - * ace/Thread_Manager.cpp (remove_thr, VxWorks only): added [] to - delete of tid array. Thanks to Arturo Montes - for reporting this. - - * ace/RB_Tree.h (RB_Tree_Iterator::operator =): added explicit - return type to the declaration. Wrapped with - ACE_UNIMPLEMENTED_FUNC. - -Fri May 29 21:59:01 1998 James C Hu - - * RB_Tree.h: - * RB_Tree.i: - * RB_Tree.cpp: Debugged some minor typo errors, and changes - related to internalizing the RED and BLACK enums. - -Fri May 29 21:55:11 1998 David L. Levine - - * ace/High_Res_Timer.cpp: don't use ACE_HAS_PENTIUM code on - Solaris (ACE_HAS_HI_RES_TIMER) because it uses ::gethrtime (). - (dump): on Solaris, print 64-bit ints with %llu format. Other - platforms may need that, also. - - * ace/Makefile: replaced .o with $(OBJEXT) in gethrtime.o target, - so that make depend doesn't munge it. - - * ace/OS.h: only use the null versions of the - ACE_DES_FREE_TEMPLATE* macros with LynxOS 3.0.0. - - * include/makeinclude/platform_lynxos.GNU: commented out -Winline, - because it complains too much with -O2, and that's now the default. - -Fri May 29 17:52:37 1998 Douglas C. Schmidt - - * ACE version 4.5.9 released. - -Fri May 29 16:19:34 1998 Douglas C. Schmidt - - * ace/Synch_T.h (class ACE_Guard): ACE_Guard's destructor was - changing the errno value. Fixed this to avoid doing so... - Thanks to Arturo Montes for reporting - this. - -Fri May 29 15:33:41 1998 David L. Levine - - * performance-tests/Misc/context_switch_time.cpp: - added Synchronized Suspend-Resume Test. - -Fri May 29 14:46:49 1998 James C Hu - - * ace/Makefile - * ace/RB_Tree.h - * ace/RB_Tree.cpp: Added changes to RB_Tree to enable overloading - of the comparison method. Added class RB_Tree to the UNIX - Makefile. - - * ace/OS.cpp: Added some minor fixes to the difftime implementation. - - * ace/OS.cpp: - * ace/OS.i: - * ace/README: - * ace/config-sunos4*: - Added ACE_LACKS_DIFFTIME macro because SunOS4 does not support - the Standard C difftime function. Added a difftime - implementation for when such is the case. - -Fri May 29 08:22:36 1998 Steve Huston - - * ace/Log_Msg.cpp, Trace.cpp: Changed decision for - order-of-include/inline from ACE_WIN32 to - ACE_HAS_ONE_DEFINITION_RULE. This completes the changes needed - to be able to use the newer versions of HP aC++. - - * ace/config-win32.h: Set ACE_HAS_ONE_DEFINITION_RULE. - -Thu May 28 16:17:41 1998 Steve Huston - - * ace/README: Added ACE_HAS_ONE_DEFINITION_RULE. - * ace/config-hpux-10.x-hpc++.h: - * ace/config-hpux-11.x-hpc++.h: Added ACE_HAS_ONE_DEFINITION_RULE - for aC++. This is part of a set of changes to make ACE work - with HP aC++ A.01.09 (10.20) and A.03.05 (11.00). The other - changes are being tested still. Thanks _very_ much to Steve Coy - for digging through this with HP and working out a solution! - -Thu May 28 15:55:48 1998 Douglas C. Schmidt - - * Added new configuration files for SCO. Thanks to Arturo for - this. - -Thu May 28 13:57:50 1998 David L. Levine - - * ace/Filecache.cpp: removed redundant template instantiations. - - * ace/config-lynxos.cpp: added undef ACE_HAS_TEMPLATE_SPECIALIZATION - for LynxOS 3.0.0. - - * ace/Hash_Map_Manager.cpp,Map_Manager.cpp: replaced bare explicit - destructor calls with ACE_DES_FREE_TEMPLATE{,2} macro invocations. - - * ace/OS.h: #define ACE_DES_FREE_TEMPLATE to be null on LynxOS. - Without it, the g++ that's distributed with LynxOS 3.0.0 hopelessly - chokes on explicit calls to template class destructors. This - hack could cause memory leaks, though currently ACE_DES_FREE_TEMPLATE - is only used to call empty, non-virtual destructors (in - Containers.cpp, Hash_Map_Manager.cpp, and Map_Manager.cpp). - Also, added ACE_DES_FREE_TEMPLATE2 macro for use with two - template arguments. There's got to be a better way. - - * include/makeinclude/platform_lynxos.GNU: added LynxOS Version 3.0.0 - support. It's optional at this point: add VERSION=3.0.0 to your - make invocation to enable. Disabled -Wall with LynxOS 3.0.0. - Enabled optimization. - -Thu May 28 07:47:41 1998 Steve Huston - - * tests/SOCK_Connector_Test.cpp: Changed the "should succeed" test - from port 25 (smtp) to 7 (echo) to try and get a higher success - rate. Thanks to David Levine for this suggestion. - -Wed May 27 13:45:24 1998 Steve Huston - - * ace/ACE.cpp (handle_timed_complete): Fixed problem where - successful connect was being reported as a failure (P90). - - * tests/SOCK_Connector_Test.cpp: Added a test for a successful - non-blocking connect (tests fix from above). - -Wed May 27 07:04:42 1998 David L. Levine - - * ace/Service_Config.cpp: default debug_ to 1 instead - of 0. And the -d option now disables debug messages, - instead of enabling them. Thanks to Irfan for reporting - that LM_DEBUG messages were lost without this fix. - - * ace/High_Res_Timer (calibrate): added calibrate () method - to calculate the global scale factor on Pentiums. It's - called by the constructor for the first instantiation - in a process. (On WIN32, get_registry_scale_factor () is - called instead of calibrate ().) - - * ace/Stats.cpp (sample): continue aggregating data even - if there is overflow. This allows, e.g., a mean to be - calculated even if the standard deviation calculation overflow. - - * performance-tests/Misc/context_switch_time.cpp: don't run the - Yield_Test on VxWorks because it takes too long. - - * ace/High_Res_Timer.*: moved calibration from constructor to - global_scale_factor () accessor. - - * ace/Timeprobe.cpp: no longer need to explicitly calibrate the - High_Res_Timer. - -Tue May 26 22:25:18 1998 Stephen Coy - - * ace/Log_Msg.{h,cpp},Service_Config.cpp: added support for - -d in Service_Config files to enable/disable LM_DEBUG messages. - -Tue May 26 14:53:21 1998 Steve Huston - - * ace/SOCK_Dgram_Mcast.cpp (subscribe): Fixed use of uninitialized - variable, nr_subscribed. Thanks to Nanbor for finding this. - -Tue May 26 13:39:21 1998 Carlos O'Ryan - - * ace/Timeprobe.cpp: - * tests/Timeprobe_Test.cpp: - Now egcs and Sun/CC are happy with this files. - -Tue May 26 00:35:49 1998 Irfan Pyarali - - * tests/Timeprobe_Test.cpp: Added new test. - - * ace/Timeprobe: Added the ability to have multiple event tables - for time probes. Multiple maps can be used to chunk up the time - probes. Each one can be added by calling event_descriptions(). - Different tables are used internally by consulting the - minimum_id for each table. It is up to the user to make sure - that multiple tables do not share the same event id range. - -Sat May 23 21:52:49 1998 Carlos O'Ryan - - * ace/Message_Block.h: - * ace/Message_Block.i: - The rd_ptr() and wr_ptr() are const methods now. - -Sat May 23 00:18:58 1998 Nanbor Wang - - * ace/ace_ce_dll.dsp: Updated settings for MIPS CPU. - - * tests/WinCE/*.dsp: Updated settings for MIPS CPU. - -Fri May 22 16:00:03 1998 Douglas C. Schmidt - - * tests/MT_SOCK_Test.cpp (spawn): We must check for !defined - (ACE_LACKS_FORK) rather test for VxWorks or Win32. Thanks to - Steven Coy for reporting this. - -Fri May 22 20:01:40 1998 David L. Levine - - * ace/OS.h: moved ACE_IO_Vector declaration ahead of OS.i #include. - - * ace/OS.i (ACE_IO_Vector::buffer): added static cast of new_buffer - to char *. - - * ace/OS.i (writev): changed return type from int to ssize_t to - match declaration in OS.h. - -Fri May 22 12:20:11 1998 Irfan Pyarali - - * ace: Other parts of ACE were modified to use the new - ACE_IO_Vector class. - - * ace/OS.h (ACE_IO_Vector): Added a new class that inherits from - the correct IO_Vector class provided by the platform. - - writev() and readv() were being emulated on Win32 in ACE. A new - ACE_OS::writev() and ACE_OS::readv() has been added to ACE - that uses WSASend() and WSARecv() respectively. However, in - order for you to exploit these new functions, you must use - ACE_IO_Vector instead of iovec. The ideal situation would have - been to totally replace iovec with ACE_IO_Vector but that would - break too much code. So, if you keep using iovec, you will use - the expenses and slow emulations. If you want to use WSASend() - and WSARecv(), switch over to ACE_IO_Vector. It will work on - both Win32 and non-Win32 platforms. - -Fri May 22 07:53:03 1998 David L. Levine - - * ace/config-linux-pthread.h: removed two - ACE_LACKS_CONDATTR_PSHARED #defines. That leaves just - one, that's commented out. - - * performance-tests/Misc/context_switch_time.cpp: create all - threads as detached so they don't have to be joined. They - test was using up resources on LynxOS, if a high -c option - was used, without this change. - - * ace/config-sunos5.5-{g++,sunc++-4.x}.h,config-sunos5.5.h: - merged config-sunos5.5-g++.h and config-sunos5.5-sunc++-4.x.h - into config-sunos5.5.h. That new file should be maintained - for both compilers from now on. The old files have been - retained for backward compatibility. The just #include - config-sunos5.5.h. - - * ace/config-sunos5.6.h: #include config-sunos5.5.h instead - of the separate Sun C++ and g++ configs. - - * include/makeinclude/platform_sunos5_sunc++.GNU: - updated comment to reflect change to config-sunos5.5.h. - -Fri May 22 07:30:23 1998 David L. Levine - - * ACE version 4.5.8 released. - -Fri May 22 07:26:06 1998 David L. Levine - - * ace/Stats.cpp: added some casts to avoid MSVC++ warnings - about narrowing. - - * ace/config-osf1-4.0.h: removed commented-out - ACE_LACKS_{COND,MUTEX}ATTR_PSHARED. - -Fri May 22 00:09:15 1998 Nanbor Wang - - * ace/Local_Tokens.{h,cpp} (ACE_Null_Token): Only defined default - ctor/dtor explicitly when ACE_LACKS_INLINE_FUNCTIONS. - - * ace/Stats.cpp: Defined ACE_BUILD_DLL at the beginning. - Win32 needs to define ULONGLONG literals as 999ui64. - This is the only place that uses i64 literals. - -Thu May 21 21:55:09 1998 David L. Levine - - * ACE version 4.5.7 released. - -Thu May 21 17:36:37 1998 David L. Levine - - * ace/config-sunos5.6.h: added support for POSIX 199506 - extensions. Thanks to J. Russell Noseworthy - for providing this support. - - * ace/Local_Tokens.{h,i}: inlined ACE_Null_Token ctor and dtor - in class header because the clone () method needs the ctor - inlined, and it's too difficult to get it right with macros. - - * tests/SString_Test.cpp (main): added ACE_ASSERT with s4 in - it, because it was unused otherwise. - - * performance-tests/Synch-Benchmarks/Options.cpp (print_results): - changed #else to #elif, because it has a condition after it. - -Thu May 21 15:28:07 1998 Nanbor Wang - - * tests/test_config.h: Modified to write output from tests into - log file. Notice that log files on CE have extension name - ".txt" instead of ".log". - - * ace/OS.i (strrchr): Added UNICODE version of this function. - - * ace/Log_Record.{h,cpp}: Generalized message formatting on CE by - adding a new method format_msg(). - - * ace/Reactor_Impl.h: Removed an extra comma. - - * ace/XtReactor.cpp: Include "ace/Reactor.h" - - * tests/Recursive_Mutex_Test.cpp: - * tests/Future.cpp: Removed iteration restriction on CE. - -Thu May 21 12:13:36 1998 Nanbor Wang - - * ace/ace_{dll,lib}.dsp: Added Stats.cpp into projects. - -Wed May 20 23:02:41 1998 Steve Huston - - * ace/SOCK_Dgram_Mcast.cpp (subscribe): On Win32, if - ACE::get_ip_interfaces finds less than 2 interfaces, call - subscribe with "0.0.0.0". This is sort of a hack and is meant - only to help get things working again until ACE::get_ip_interfaces - can be made to work correctly in all cases. - -Wed May 20 10:42:12 1998 David L. Levine - - * ace/config-mvs.h: enabled ACE_LACKS_CONDATTR_PSHARED and - ACE_LACKS_MUTEXATTR_PSHARED. Thanks to Chuck Gehr - for advising on this. - - * ace/config-linux-lxpthreads.h,config-lynxos.h: removed - commented-out ACE_LACKS_{COND,MUTEX}ATTR_PSHARED #defines. - - * ace/config-sunos5.5-{sunc++-4.x,g++}.h: removed - commented-out ACE_LACKS_{COND,MUTEX}ATTR_PSHARED. Enabled - ACE_HAS_CLOCK_GETTIME, because we always link with -lposix4. - Thanks to J. Russell Noseworthy - for inspiring the ACE_HAS_CLOCK_GETTIME enable. - - * ace/config-osf1-4.0.h: removed uncommented - ACE_LACKS_CONDATTR_PSHARED, so that we can test whether - it's necessary. - - * ace/Stats.*,Makefile: added ACE_Stats class. - - * performance-tests/Misc/context_switch_time.cpp: use - ACE_Stats to calculate standard deviations. - -Tue May 19 21:24:50 1998 Nanbor Wang - - * tests/Future_Test.cpp: Reduced the number of iterations on CE. - - * ace/Synch.i: Added #ifdef (ACE_HAS_THREADS) to make it compile - on non-threaded platforms. - -Tue May 19 10:05:07 1998 Irfan Pyarali - - * ace/SString.cpp (strlen): Renamed ACE_WString::wstrlen to - ACE_WString::strlen. - - * ace/SString.i: Reordered functions to make g++ happy. - - * ace/ACE.cpp (hash_pjw): Changed ACE_OS::strlen to - ACE_WString::strlen. - -Tue May 19 09:52:08 1998 Carlos O'Ryan - - * ace/config-irix6.x-g++.h: - * ace/config-irix6.x-sgic++-nothreads.h: - * ace/config-irix6.x-sgic++.h: - Added ACE_LACKS_MUTEXATTR_PSHARED - -Mon May 18 16:37:36 1998 Irfan Pyarali - - * ace/SString.h (ACE_CString): Added the ability to hold on to - user supplied character strings without having to make a copy. - - * ace/OS.h (ACE_OS): Added implementations for strrchr, strnchr, - strnstr, and strstr. - - * ace/ACE.cpp (hash_pjw): Added new versions of these that work - with user specified string length. - -Mon May 18 12:24:40 1998 Douglas C. Schmidt - - * ace/config-*.h: Commented out most of the - ACE_LACKS_CONDATTR_PSHARED so we can see what platforms really - DON'T support this... - - * ace/OS.i (mutex_init): Added support for - pthread_mutexattr_setpshared() so we can initialize POSIX - pthreads process-wide mutexes. Thanks to Ki-hyun Yoon - for suggesting this. - - * ace/config-sunos5.6.h: Added an #define for - ACE_THREAD_POSIX_SEM. Thanks to Ki-hyun Yoon - for reporting this. - - * ace/config-sunos5*.h: Removed the ACE_LACKS_RWLOCK_T stuff since - it's unnecessary. Thanks to Chris Lahey for reminding me of - this... - -Mon May 18 13:48:14 1998 Nanbor Wang - - * ace/Synch.i: Added #ifdef (ACE_HAS_THREADS) to make it compile - on non-threaded platforms. - -Mon May 18 12:31:32 1998 Darrell Brunsch - - * ace/Service_Config.{h,i,cpp}: Added an accessor debug() for - external access to the variable. More debug messages - check this before displaying. - - * ace/Parse_Node.cpp: Checks Service_Config's debug flag before - outputting debug messages. - -Sun May 17 23:14:32 1998 Nanbor Wang - - * tests/Wince/*.dsp: Disabled precompiled headers. They ate up - all my disk space. - - * ace/Service_Config.cpp: takes a string of - type ASYS_TCHAR. Use ACE_WIDE_STRING to do the conversion. - - * ace/Log_Msg.{h,cpp} (ACE_ASSERT): Use unicode in ACE_ASSERT. - (log): Don't exit the program for now. Exiting program here - destroys all debugging message in the window. - - * tests/Reader_Writer_Test.cpp: Reduced the number of iterations - on WinCE. - - * ace/OS.i: Added ACE_OS::time () implementation for CE. - -Sun May 17 21:45:07 1998 David L. Levine - - * performance-tests/Misc/childbirth_time.cpp: changed type of - MULTIPLY_FACTOR from int to size_t to avoid signed/unsigned - comparison. - - * tests/Tokens_Test.cpp: synchronize start of thread svc () - routines. Occasionally, the first thread would finish before - any others had started. The TSS objects would get cleaned - up. Then, the remaining threads would start up and make a big - mess. - -Sat May 16 15:10:46 1998 Douglas C. Schmidt - - * ace/Service_Config.h (ACE_Service_Config): Moved the - process_directive() into the public part of the class so this - can be called by applications one the Service Configurator is - open. Thanks to Tom Arbuckle - for suggesting this. - -Sat May 16 14:12:09 1998 Nanbor Wang - - * ace/Thread_Manager.{h,i,cpp} (class ACE_Thread_Descriptor_Base): - Extract thread handle and thread creation flags out from - Thread_Descriptor into this new class. This is necessary - because after my last round of changes to improve - ACE_Thread_Manager, I changed the from - holding Thread_Descriptor's to holding pointers to descriptor. - This was a bad move because the address of these pointers had - already been "freed." The now holds - ACE_Thread_Descriptor_Base which contains only the information - needed for manipulating . Thanks to Arturo - for noticing this. - -Sat May 16 03:23:35 1998 Nanbor Wang - - * performance-tests/Misc/childbirth_time.cpp (main): Added a new - function to test the performance of ACE_Thread_Mutex in single - thread _without_ any contention. - -Fri May 15 22:55:51 1998 Nanbor Wang - - * tests/Recursive_Mutex_Test.cpp: Only iterate the test 50 times - on CE as on Chorus. Otherwise, as I'm using a CEdit to hold the - test output, CEdit would overflow. - - * ace/OS.i (thr_getspecific): Don't check for return value of - TlsGetValue on CE because CE doesn't seem to set the LastError - correspondingly. - (strchr): Added implementation on CE. - - * Added Activation_Queue.i and Strategies.i. - - * Combed thru all these files and added difinitions for ctor/dtor - for a bunch of classes explicitly. CE needs them. - - Activation_Queue.cpp Activation_Queue.h Dynamic.h Dynamic.i - Event_Handler.h Event_Handler.i Get_Opt.h Get_Opt.i Handle_Set.h - Handle_Set.i High_Res_Timer.h High_Res_Timer.i INET_Addr.h - INET_Addr.i IO_SAP.h IO_SAP.i IPC_SAP.h IPC_SAP.i Local_Tokens.h - Local_Tokens.i Log_Record.h Log_Record.i Malloc.h Malloc.i OS.h - OS.i Obstack.cpp Obstack.h Obstack.i Parse_Node.h Parse_Node.i - Pipe.h Pipe.i Process_Manager.h Process_Manager.i SOCK.h SOCK.i - SOCK_Acceptor.cpp SOCK_Acceptor.h SOCK_Acceptor.i SOCK_CODgram.h - SOCK_CODgram.i SOCK_Connector.h SOCK_Connector.i SOCK_Dgram.h - SOCK_Dgram.i SOCK_Dgram_Bcast.h SOCK_Dgram_Bcast.i - SOCK_Dgram_Mcast.h SOCK_Dgram_Mcast.i SOCK_IO.h SOCK_IO.i - SOCK_Stream.h SOCK_Stream.i SString.h SString.i Sched_Params.h - Sched_Params.i Select_Reactor.h Select_Reactor.i - Service_Manager.h Service_Manager.i Service_Repository.h - Service_Repository.i Service_Types.h Service_Types.i - Shared_Object.h Shared_Object.i Signal.h Signal.i Strategies.cpp - Strategies.h Strategies.i Strategies_T.cpp Strategies_T.h - Synch.cpp Synch.h Synch.i Synch_Options.cpp Synch_Options.h - Synch_Options.i Timer_Heap_T.cpp Timer_Heap_T.h Timer_List_T.cpp - Timer_List_T.h Timer_Queue_T.cpp Timer_Queue_T.h - Timer_Wheel_T.cpp Timer_Wheel_T.h. - -Fri May 15 16:55:34 1998 Douglas C. Schmidt - - * ace/config-sunos5*.h: Automatically enable ACE_LACKS_RWLOCK_T if - we're NOT using Solaris threads (since pthreads doesn't support - readers/writer locks). - - * ace/Service_Config.cpp: Removed a duplicate template - instantiation of template class - ACE_Unbounded_Queue_Iterator. Thanks to Ben Eng - for reporting this. - - * ace/OS: Fixed a number of problems that occurred when trying to - use the PTHREAD implementation on Solaris without using - ACE_HAS_STHREADS. The problems related primarily to the - ACE_OS::rw*() functions. To fix the problems, the following - changes were made. - - Remove the #if defined (ACE_HAS_STHREADS) from the case where we - have the native rw*() functions. We just use the - ACE_LACKS_RWLOCK_T compile flag to determine whether we have the - native functions. - - Without the ACE_HAS_STHREAD flag, ACE_rwlock_t comes up - undefined. To fix this, moved the definition at approx. line - 1868 above the #else at approx. line 1865 as the following: - - #if ! defined (ACE_LACKS_RWLOCK_T) - #include - typedef rwlock_t ACE_rwlock_t; - #endif // ! ACE_LACKS_RWLOCK_T - - Finally, the ACE_idtype_t type was also undefined. To fix this, - moved the typedef from within the #if defined (ACE_HAS_STHREADS) || - defined (DIGITAL_UNIX) block and create a new ifdef block: - - #if defined (ACE_HAS_IDTYPE_T) - typedef idtype_t ACE_idtype_t; - #else - typedef int ACE_idtype_t; - #endif - - Thanks to Chris Lahey for his through help at - recognizing and fixing these problems. - -Fri May 15 09:38:37 1998 David L. Levine - - * bin/make_release: redirect cvs tag output to /dev/null. - - * performance-tests/Misc/context_switch_time (main): fixed - printout of yield test time for other than the default - number of iterations. - -Fri May 15 09:29:57 1998 David L. Levine - - * ACE version 4.5.6 released. - -Fri May 15 08:25:19 1998 David L. Levine - - * ace/Service_Config.cpp: fixed and added template instantations. - - * ace/Svc_Conf_y.cpp,etc/Svc_Conf_y.cpp.diff: removed compile - warnings. - - * include/makeinclude/platform_sunos5_g++.GNU: use PIC instead of pic, - because the TAO orbsvcs lib needs it. - - * Makefile: added .PHONY for phony targets. - -Fri May 15 02:47:35 1998 Douglas C. Schmidt - - * ACE version 4.5.5 released. - -Fri May 15 02:42:06 1998 Douglas C. Schmidt - - * ACE version 4.5.4 released. - -Thu May 14 15:28:42 1998 Douglas C. Schmidt - - * ace/config-kcc-common.h: Added the ACE_HAS_USING_KEYWORD to the - config file. Thanks to Ben Eng for reporting - this. - - * examples/Service_Configurator/Misc: Updated the Timer_Service - test to demonstrate the new service configurator feature. It's - AWESOME! - - * ace/Svc_Conf.h, - ace/Svc_Conf.l: - Added a super-cool new feature that allows us to parse service - configurator directives from a string rather than from a - svc.conf file. - - * ace/Svc_Conf.l (yywrap): Free up ace_yy_current_buffer in yywrap - to prevent a memory leak. Thanks to Paul Motuzenko - for reporting this. - - * examples/IPC_SAP/SOCK_SAP/CPP-inserver-poll.cpp: Enhanced the - implementation to make it easier to follow and to support the - latest features of CPP-inclient.cpp. - - * ace/OS.h (ACE_OS): Added a wrapper for strcspn(3s). - - * examples/IPC_SAP/SOCK_SAP/CPP-inserver-fancy.cpp: Added more - cool changes to the CPP-inserver.cpp example and renamed it. - -Thu May 14 14:46:02 1998 Irfan Pyarali - - * ace/OS.h: Moved the definition of ACE_Export before it is used. - -Thu May 14 13:22:46 1998 Carlos O'Ryan - - * ace/Message_Block.h: - * ace/Message_Block.cpp: - The static duplicate() method can take pointer to a const - Message_Block. - -Wed May 13 18:46:28 1998 Douglas C. Schmidt - - * examples/IPC_SAP/SOCK_SAP/CPP-{inserver,inclient}.cpp: Added - profile timing to the server so we can compute socket - performance metrics. Also generalized the tests so we can - experiment with both oneway and twoway calls. - -Wed May 13 19:20:27 1998 James C Hu - - * ace/OS.h: - * ace/OS.i: - * ace/OS.cpp: Added a substitute gets implementation for when - ACE_LACKS_GETS. The substitute is actually safer than gets, so - I may end up making gets call the new routine instead of - Standard C's. - - * ace/config-g++-common.h: Changed the g++ common file so that - 2.8.1 acts like EGCS does. This worked on Solaris 2.5.1. We'll - see how other's fare. - -Wed May 13 18:13:12 1998 Douglas C. Schmidt - - * ACE version 4.5.3 released. - -Wed May 13 11:29:56 1998 Nanbor Wang - - * performance-tests/Synch-Benchmarks/Options.cpp (print_results): - My previous change to add print_results functionality when - ACE_HAS_GETRUSAGE broke this on Win32. - - * ace/config-g++-common.h (ACE_HAS_GNUC_BROKEN_TEMPLATE_INLINE_FUNCTIONS): - Made this macro defined for all versions of g++. - -Wed May 13 09:26:48 1998 David L. Levine - - * many *.{h,i,cpp,idl} files: inserted RCS keyword string. - -Wed May 13 00:35:25 1998 Irfan Pyarali - - * ace: Added ACE_Export to a bunch of class in ACE. Thanks to - Gonzalo A. Diethelm (gonzo@ing.puc.cl) for pointing this out. - -Tue May 12 15:16:04 1998 Nanbor Wang - - * ace/config-WinCE.h: - * ace/OS.h: Stopped using non-static object manager for CE. This - is causing some problem at process shutdown. - - * ace/Acceptor.cpp: Made CE friendly. - - * ace/Process.cpp ([~]ACE_Process_Options): Moved things around to - avoid compilation errors on CE. Secret: CE doesn't have - environment variables. - -Tue May 12 13:28:05 1998 Carlos O'Ryan - - * ace/OS.h: - The ACE_INLINE_FOR_GNUC macro must be defined (as the null - token) if ACE_HAS_GNUC_BROKEN_TEMPLATE_INLINE_FUNCTION is not - defined. - -Tue May 12 12:30:55 1998 Nanbor Wang - - * ace/README: - * ace/config-g++-common.h (ACE_HAS_GNUC_BROKEN_TEMPLATE_INLINE_FUNCTIONS): - Added this new macro to get around a bug which only happens in - GNUC 2.7.xx. It mistakenly refers to the template definition as - the place where a function is used. - - * ace/OS.h (ACE_INLINE_FOR_GNUC): Added the macro to fix the GNUC - bug. - - * ace/Thread_Manager.h: Added above macro to set_next and - get_next. - -Tue May 12 12:11:36 1998 Bob Laferriere - - * ace/Process.{h,cpp}: modifications to make the environment buffer - and number of environment variables tunable in the constructor. - I also fixed a logic error which previously attempted to write - beyond an array bounds of the array of pointers into the - environment buffer. I made the environment_argv_ buffer tunable - as well. The new constructor takes the old hardcoded static sizes - as the default dynamic sizes for backwards compatiblity. - The behavior is to return -1 if the maximum buffer size or - maximum number of environment arguments has been reached in - following with the prior behavior. I opted not to make the members - grow as needed so the class would still follow it's prior behavior. - This would be simple to add, however. - -Tue May 12 08:29:50 1998 David L. Levine - - * ace/Malloc.cpp (ACE_Allocator::instance): replaced dynamic - allocation of the default ACE_Allocator with allocation from - the data segment. Thanks to Ben Eng for - providing the stack trace that revealed the problem. - - * ace/Malloc.h: added comments to not add data members to - ACE_Allocator or ACE_New_Allocator. - - * bin/g++dep: changed PATH to pick up /project/doc/pkg/gnu/bin/g++, - and removed GNUG_INCLUDE. Thanks to Ganesh Pai - for reporting problems with the old version on Linux. - -Tue May 12 02:59:27 1998 Nanbor Wang - - * performance-tests/Misc/childbirth_time.cpp: Added ACE_OS::sleep - (0) before all timing sections start. This ensures we own a - fresh time slice when the timing begin and reduce the chances of - getting preempted - -Tue May 12 00:42:05 1998 Nanbor Wang - - * bin/dsp2dsp.pl: This file clones a new MSVC 5.0 dsp file based - on setting from another dsp file. It is most useful in adding - new project files into tests/. - - * tests/WinCE/*: New project files. Updated the workspace. - Please see CE-status for the current progress. - - * tests/Buffer_Stream_Test.cpp: - * tests/Conn_Test.cpp: - * tests/Enum_Interfaces_Test.cpp: - * tests/Handle_Set_Test.cpp: - * tests/Hash_Map_Manager_Test.cpp: - * tests/Message_Block_Test.cpp: - * tests/Reactors_Test.cpp: - * tests/Thread_Manager_Test.cpp: - * tests/Thread_Mutex_Test.cpp: Made CE friendly. - - * tests/test_config.h: Moved some common definitions shared among - CE and other platforms out. - - * ace/Acceptor.cpp: - * ace/Acceptor.h: - * ace/Connector.cpp: - * ace/Connector.h: - * ace/Stream.cpp: - * ace/Svc_Handler.cpp: - * ace/Svc_Handler.h: - * ace/Synch.h: - * ace/Synch.i: CE stuff. - - * ace/config-WinCE.h: Defined ACE_DEFAULT_SERVER_HOST in UNICODE - here to overwrite the default setting. - - * ace/Synch.i (ACE_Lock): CE needs a default ctor here. - -Mon May 11 15:43:01 1998 Nanbor Wang - - * tests/WinCE/ce_tests.dsw: - * tests/WinCE/Atomic_Op_Test.dsp: - * tests/WinCE/Barrier_Test.dsp: - * tests/WinCE/Basic_Types_Test.dsp: - * tests/WinCE/Map_Manager_Test.dsp: Added/Updated project files. - - * tests/Atomic_Op_Test.cpp: - * tests/Barrier_Test.cpp: - * tests/Basic_Types_Test.cpp: Made them CE friendly. - - * ace/config-WinCE.h: Only define ACE_LACKS_INLINE_FUNCTIONS when - building debug version of ACE for SH series CPU. - - * WindozeCE/WindozeCEDlg.cpp: Updated the initial message after the - display window but before ACE console progrm started. - - -Mon May 11 15:43:01 1998 Nanbor Wang - - * ace/OS.{i,cpp}: Moved CE's impelmentation of ACE_OS::fprintf to - cpp file. - -Mon May 11 15:15:24 1998 Carlos O'Ryan - - * ace/Thread_Manager.h: - Removed bogus ACE_INLINE macros in class declaration, they were - making the SGI compiler *very* unhappy. - -Mon May 11 15:11:11 1998 Nanbor Wang - - * ace/OS.cpp (ctime_r): Renamed the fmtstr to - ACE_OS_CTIME_R_FMTSTR for we may need to use similar scheme to - fix other bugs in the future. - -Mon May 11 14:50:47 CDT 1998 Everett Anderson - - * ace/Name_Proxy.cpp: Changed one last recv to recv_n. - -Mon May 11 13:14:22 1998 Chris Gill - - * ace/RB_Tree.{cpp,h,i}: (new) Red-Black Tree data structure - implementation. A Red-Black Tree is an efficient - self-balancing binary tree that uses recoloring to - minimize rotations while rebalancing on insertion or - deletion of a tree node. Items in the tree are stored - according to a key provided at insertion. This - implementation is an OO rendition of the ADT described - in Cormen, Leiserson, Rivest, "Introduction to Algorithms" - (c) 1990, MIT. - -Mon May 11 12:31:41 1998 Steve Huston - - * ace/OS.h: Made ACE_LD_SEARCH_PATH, ACE_LD_SEARCH_PATH_SEPARATOR_STR, - ACE_DLL_PREFIX, ACE_DLL_SUFFIX settable via config.h. - - * ace/config-hpux-10.x.h: - ace/config-hpux11.h: Set ACE_LD_SEARCH_PATH, ACE_DLL_SUFFIX. - Thanks to Kirill Rybaltchenko and David Levine for identifying - this problem. - -Mon May 11 12:27:05 1998 David L. Levine - - * ace/ACE.cpp (send_n): retry if ACE::send () fails due to - EWOULDBLOCK. Thanks to Dave Brackman - for reporting this. - - * tests/Env_Value_Test.cpp (main): check return values of - options.setenv () calls. Thanks to Bob Laferriere - for recommending this. - - * include/makeinclude/platform_vxworks5.x_ghs.GNU: instead of - using GNU ranlib386 after using GHS ax for i386 targets, just - use GNU ar386. - - * ace/gethrtime.cpp: added some comments about GHS asm support. - - * java/netsvcs/{Logger,Time}/Makefile, - java/tests/netsvcs/Logger/Makefile: - replaced WRAPPER_ROOT with ACE_ROOT. - -Mon May 11 05:14:18 1998 Nanbor Wang - - * ace/config-WinCE.h: Added ACE_HAS_NON_STATIC_OBJECT_MANAGER. CE - console programs have to set this flag because the main - functions is actually renamed and running in a threads. - - * tests/test_config.h: Excluded class and macros to redirect - debugging messages to files under CE. This make debugging a bit - easier but we should eventually put them back under CE. - - * tests/Map_Manager_Test.cpp: Made CE friendly. - - * ace/Hash_Map_Manager.cpp: Some ACE_ERROR were not CE friendly. - - * ace/Profile_Timer.{h,i}: - * ace/Synch.{h,i}: Moved inline function definitions to Synch.i - file. Windows CE can't grok any inline at all. - -Mon May 11 02:43:45 1998 Nanbor Wang - - * performance-tests/Misc/childbirth_time.cpp (main): Added - a new method for benchmarking ACE_Thread_Manager::spawn_n. - Added other cosmetic changes. - -Sun May 10 23:20:36 1998 Irfan Pyarali - - * ace/Token.cpp: Adding more debugging statements. - - * ace/Asynch_Acceptor.cpp (should_reissue_accept): Added template - method that decides whether a new asynchronous accept should be - issued. - -Sun May 10 23:28:57 1998 Nanbor Wang - - * ace/OS.cpp(inherit_log_msg): - * ace/Log_Msg.cpp (thr_desc): Wait on Thread_Descriptor's lock - instead of the "global" Thread_Manager lock. - - * ace/Thread_Manager.cpp: Moved acquire_release() from - ACE_Thread_Manager to ACE_Thread_Descriptor. This method is - called from ACE_Log_Msg::thr_desc to prevent a thread from using - its thread descriptor before it is fully built. The change - relieve spwaned threads from waiting for other threads created - in the same spwan_n call to be created before it can start - running. - - (insert): Added an extra argument to control whether we want to - insert the newly created thread into ACE_Thread_Manager's thread - table or not. Notice that it is default to 1 to remain the - original behavior in case anyone is using this class/function - directly in their code. However, in ACE_Thread_Manager, we - always prevent it from inserting because we always register - thread descriptors from spawn_i. - -Sun May 10 01:51:29 1998 Nanbor Wang - - * ace/OS.h: Renamed ACE_OS::Time_To_The_Beginning to - ACE_OS::FILETIME_to_timval_skew. - - * ace/OS.cpp: Found the problem in ACE_OS::ctime_r. An internal - compiler bug (?) caused the bug. The solution: move the format - string out as a const string instead of putting it in sprintf - directly. Weird. - - * ace/Log_Record.{h,cpp}: Made priority_name_ and its access - function CE friendly. - -Sat May 9 20:09:13 1998 Nanbor Wang - - * ace/Thread_Manager.h: Changed the type of lock used by - to ACE_SYNCH_MUTEX. Or else, it won't - compile on platforms that doesn't support thread. Thanks to - Woody Zenfell for reporting this. - -Fri May 08 22:29:01 1998 Nanbor Wang - - * ace/SOCK_Dgram_Mcast.cpp (subscribe): CE UNICODE related fix. - -Fri May 8 14:18:46 1998 Nanbor Wang - - * ace/Thread_Manager.h (ACE_Thread_Descriptor): Added ACE_INLINE - to declarations of set_next and get_next to get around a bug in - a version of g++. - -Fri May 8 11:57:23 1998 Douglas C. Schmidt - - * ace/Map_Manager.cpp: Fixed a bug where we weren't calling - close_i() when resizing the buffer. - - * ace/Thread_Manager.cpp (set_grp): In - ACE_Thread_Manager::{get,set}_grp we must check to see that we - have a valid pointer after the ACE_FIND. Otherwise a seg fault - occurs. Thanks to Chris Lahey for reporting - this. - -Fri May 08 09:47:50 1998 David L. Levine - - * ace/config-linux-common.h: only use ACE_HAS_POLL with glibc2. - Thanks to Saneyasu for reporting - this. - - * ace/OS.i (sleep): On Linux without ::poll () (prior to glibc), - copy the ACE_Time_Value argument because the system modifies it. - - * include/makeinclude/platform_osf1_4.0.GNU: moved -lm from LIBS - to MATHLIB. - - * performance-tests/UDP/Makefile: added $(MATHLIB) to LDLIBS. - - * tests/Aio_Platform_Test.cpp (have_asynchio): use - _SC_LISTIO_AIO_MAX instead of _SC_AIO_LISTIO_MAX if it's - #defined. It is on DU 4.0. - -Fri May 08 08:43:42 1998 Steve Huston - - * include/makeinclude/platform_hpux_gcc.GNU: Added $(PIC) to - definition of SOFLAGS. Thanks to Kirill Rybaltchenko - for this fix. - - * ace/SOCK_Dgram_Mcast.cpp (subscribe): Added code for Win32 so that - if a subscribe is done without specifying an interface, the mcast - address is subscribed to on each non-loopback interface. This works - around a bug in NT's winsock in the presence of multiple IP - interfaces. Won't hurt 95 - will just run a bit slower than it - otherwise would. - - * examples/Reactor/Multicast/Multicast.{mdp,mak}: Added MSVC 4.2 - workspace for this example. - -Fri May 8 03:43:25 1998 Nanbor Wang - - * ace/Thread_Manager.{h,cpp}: Added yet one more member variable - into Thread_Descriptor to keep track of registration of - Thread_Descriptors. By adding this variable, we can avoid an - extra locking in remove_thr for most cases (normal cases ;-). - Thanks to the inspiration from Arturo Montes - . - -Thu May 07 22:06:13 1998 Ben Eng - - * ace/config-kcc-common.h,config-linux-{common,kcc}.h: updated - KCC/Linux support, and integrated into config-linux-common.h. - -Thu May 7 20:32:20 1998 Douglas C. Schmidt - - * examples/Service_Configurator/IPC-tests/client/local_dgram_client_test.cpp - (main): Oops, we need to move the unlink() AFTER we create the - file... Thanks to Sandro Doro for - reporting this. - -Thu May 07 19:08:22 1998 Douglas C. Schmidt - - * ACE version 4.5.2 released. - -Thu May 7 14:10:41 1998 Carlos O'Ryan - - * ace/Timer_Hash_T.h: - * ace/Timer_Hash_T.cpp: - * ace/Timer_Heap_T.cpp: - * ace/Timer_Wheel_T.cpp: - The classes had a INHERITED typedef for the base class, but - Solaris defines a macro by the same name. This causes very weird - problems with EGCS (and probably other g++ versions). - -Thu May 07 04:15:23 1998 Nanbor Wang - - * ace/Profile_Timer.cpp (elapsed_time): Treat Win32 differently - so I can use this function with WinCE Emulation build. The - problem is that Win32 can't convert __int64 to double. - - * ace/OS.{h,cpp} (ACE_Time_Value): (Win32 only) Added a new static - const member (Time_To_The_Beginning) of type DWORDLONG (unsigned - _int64) to adjust the time skew between FILETIME and POSIX time. - Changed the type of _100ns to ULARGE_INTEGER to eliminate - unnecessary computation. - -Wed May 6 23:58:40 1998 Carlos O'Ryan - - * ace/XtReactor.cpp: - The signature for the open() method of the notify pipe has been - modified. - -Wed May 6 23:28:47 1998 Douglas C. Schmidt - - * examples/Service_Configurator/IPC-tests/client/local_dgram_client_test.cpp: - Fixed a couple of mistakes that were causing the UNIX domain - sockets not to work. Thanks to Sandro Doro - for recommending this. - - * performance-tests/Misc/context_switch_time.cpp (svc): An 'i' - was being defined twice, gorp! It's fixed now! - -Wed May 06 22:00:14 1998 David L. Levine - - * ace/config-linux-common.h: only #define - ACE_HAS_4_4BSD_SENDMSG_RECVMSG with __GLIBC__. Thanks - to Chanaka Liyanaarachchi for - reporting the lack of CMSG_DATA support on RedHat 4.2. - -Wed May 06 18:35:21 1998 Steve Huston - - * ace/ACE.cpp (get_ip_interfaces): Reset buf_len before each call to - get_reg_key to get registry value for device's IP address. It gets - overwritten on each call to get_reg_key. - - * include/makeinclude/platform_mvs.GNU: Added definition for PIC. - Though not related to position-independent-code, it is a switch that - makes shared lib builds work right. Removed the old SOBUILD def. - Thanks to Chuck Gehr for helping with this strategy. - -Wed May 06 16:32:53 1998 Nanbor Wang - - * ace/Filecache.h (ACE_Filecache_Handle): Removed - ACE_EXPORT_DECLARE and specified ACE_Export directly for - ACE_Filecache_Handle and ACE_Filecache in calss declarations. - - * ace/Thread_Manager.{h,i,cpp}: A bug was found by Arturo Montes - who noticed that when a thread was - spawned and then exited immediately, its thread descriptor might - get freed before even get registered into the thread table kept - by the Thread_Manager. Although it doesn't make any sense to - spawn a thread just to let it return immediately, a middleware - shouldn't restrict the way how users want to use it. - - I got around this problem by adding a lock into - Thread_Descriptor. Before spawning a thread, the Thread Manager - will first grab the lock. It won't release the lock until - calling append thread, at which point, the Thread_Descriptor of - the thread has been stashed into the table. Removing the - Thread_Descriptor also requires to hold this lock and release - the lock before the Thread_Descriptor is "freed." Therefore, - if a thread exit before its Thread_Manager ever gets a chance to - register it, it will block and waiting. - - The type of the lock is defined by ACE_DEFAULT_THREAD_MANAGER_LOCK - which, by default, is ACE_Thread_Mutex. User can change the - definition by defining in their config.h file. For example, if - you can be sure that all your threads will run for an extended - long time (which, in most case, should be true,) you can disable - this feature by defining this as a ACE_Null_Mutex to speed up - spawning and termination of threads. - - (thread_desc_freelist_): Added a free list to Thread_Manager to - recycle Thread_Descriptor. By default, this free list - pre-allocate 0 Thread_Descriptor and has low-water-mark of 1, - increment count 1 and a huge (25000) high water mark. That is, - if you use a Thread_Manager for an extended period of time, you - won't have to dynamically allocate memory for Thread_Descriptor - for every thread after your system is stable (the thread count - fluctuates between some certain values.) - - There are two ways to change the settings. First, by defining - ACE_DEFAULT_THREAD_MANAGER_LWM, ACE_DEFAULT_THREAD_MANAGER_HWM, - ACE_DEFAULT_THREAD_MANAGER_INC, and - ACE_DEFAULT_THREAD_MANAGER_PREALLOC in your file. - This changes the default setting of your ACE. (The global - Thread_Manager use this setting.) Or, you can specify these - values when creating a Thread_Manager. - - * ace/Free_List.cpp (alloc,dealloc): Don't grab the lock in these - two functions. They only get called from add() and remove() - which hold the lock before making the call. Actually, they also - gets called from the constructor and destructor. But that - shouldn't be a problem. - - * tests/Reactor_Notify_Test.cpp (run_test): Moved the #endif of - ACE_HAS_THREADS down to avoid compilation error on non-threaded - platforms. - -Tue May 5 14:12:08 1998 Douglas C. Schmidt - - * include/makeinclude/platform_sco5.0.0-fsu-pthread.GNU: Added a - platform config file courtesy of Arturo Montes - . - -Tue May 05 08:35:18 1998 David L. Levine - - * ace/config-irix6.x-sgic++-nothreads.h: updated the determination - of ACE_SIZEOF_LONG_DOUBLE. Thanks to Bob Laferriere - for providing the fix. - - * include/makeinclude/platform_sunos5_g++.GNU: use -gstabs+ instead - of -g on Solaris86. - - * etc/Svc_Conf_l.cpp.diff: updated. It's magic, Nanbor :-) - The problem seems to be due to an old version left in - /tmp/Svc_Conf_l.cpp, which confuses flex. - - * ace/config-linux-common.h,config-g++-common.h: moved - ACE_HAS_PENTIUM (with i386) from config-linux-common.h - to config-g++-common.h. - - * ace/config-linux-common.h: added ACE_HAS_POLL, so we - don't use ::select () in ACE_OS::sleep (). Linux's - ::select () modifies its timeout argument! - - * ace/OS.i (gethrtime): added RDTSC support for all g++ - _and_ ACE_HAS_PENTIUM platforms. - - * ace/config-vxworks5.x.h: added ACE_HAS_PENTIUM with GHS - on Intel platforms. - - * ace/Makefile: for GHS on Intel 8086, build gethrtime.cpp. - It's used to provide a high-resolution time using the - Pentium RDTSC instruction. I don't know how to get - GHS' asm to do it, so it uses g++. - - * ACE-INSTALL.html: added note about carefully installing - egcs on Linux. Thanks to Kurt Sussman for - tracking down the cause of mysterious link failures. - -Tue May 05 02:15:49 1998 Nanbor Wang - - * ace/Svc_Conf_l.cpp: I know, I know. I shouldn't mess with this - file directly. But I couldn't manufacture this file even with - the stock Svc_Conf.l using Doug's flex. So, I reckon I'll just - check this in now and fix the Svc_Conf_l.diff later. - - * ace/Service_Config.{h,cpp} (process_directive): Standard CE - stuff. - - * WindozeCE/WinAdapter*.*: - * WindozeCE/WindozeCE*.*: Replaced the old adapter for CE with a - new one. The new version allows uses to scroll thru the - "console" output. - -Mon May 04 17:09:39 1998 David L. Levine - - * performance-tests/Misc/context_switch_time.cpp: lots of - cleanup. The main changes were the use of ACE_THR_PRI_FIFO_DEF - for the default therad priority, and removal of some - unnecessary thr_yield () calls. - - * tests/Aio_Platform_Test.cpp: added arguments to main (), - removed #includes that are already in ace/OS.h, and added - ACE_START_TEST/ACE_END_TEST calls. - -Mon May 4 13:08:18 1998 Douglas C. Schmidt - - * ace/config-sunos5.6.h: Removed a mysterious "30" at the end of - an #undef. Thanks to J. Russell Noseworthy - for reporting this problem. - -Mon May 04 08:49:09 1998 David L. Levine - - * ace/OS.cpp (ACE_Thread_Adapter::invoke): with ACE_NEEDS_LWP_PRIO_SET, - added the call to ACE_OS::thr_setprio () so that the LWP priority - will be set if running in the RT class. Applications no longer - have to be concerned with this. - - * performance-tests/Misc/preempt.cpp (svc): removed - ACE_OS::thr_setprio () calls to set LWP priority, now that ACE - handles that internally. - - * include/makeinclude/platform_*linux.GNU: added "s" to - ARFLAGS, so that ranlib is no longer necessary. - -Sun May 03 22:37:38 1998 Nanbor Wang - - * ace/Parse_Node.cpp (open_handle): WinCE doesn't support - ExpandEnvironmentStringA. - - * ace/config-win32-common.h: Only define ACE_HAS_GETRUSAGE when - ACE_HAS_WINNT4 != 0. Thanks to Paul Motuzenko - for reporting this. - -Sun May 03 01:58:47 1998 Douglas C. Schmidt - - * ACE version 4.5.1 released. - -Sat May 2 14:35:04 1998 Douglas C. Schmidt - - * tests/Reactor_Notify_Test.cpp: Factored out some common code to - make the test more concise. - - * tests/Reactor_Notify_Test.cpp: Modified the test to check - whether our new mechanism for disabling the notify pipe works - correctly. - - * ace/{WFMO,Select}_Reactor[_Impl]: Added the - "disable_notify_pipe" flag in the constructor in order to - disable this feature and save on descriptors if they aren't - required. Thanks to Tom Venturella for - motivating this. - -Sat May 02 Alexander Babu Arulanthu - - * tests/Aio_Platform_Test.cpp: Included this test program for - testing a platform for Asynchronous I/O options. - * tests/Makefile (BIN): Added Aio_Platform_Test. - -Fri May 01 17:52:32 1998 Nanbor Wang - - * ace/Arg_Shifter.{h,cpp}: Added macros ACE_Export and - ACE_BUILD_DLL respectively. - - * ace/ACE_Library.mak: - * ace/ace_{dll,lib}.dsp: Added Arg_Shifter.cpp into project. - -Fri May 1 13:52:32 1998 Douglas C. Schmidt - - * ace/Addr: Made the destructor for ACE_Addr virtual so that - subclasses can be deleted correctly. Thanks to Wei Chiang - for reporting this. - - * ace: Added Arg_Shifter from TAO and renamed it to - ACE_Arg_Shifter. - - * ace/IOStream_T.i (recv_n): ACE_IOStream::eof (void) had - a subtle bug if it is called when a get operation (>>) has not - failed. Thanks to James CE Johnson for - reporting this bug. - - * examples/Connection/misc/Connection_Handler.cpp: Make sure to - activate() each active object using THR_DETACHED so we don't run - out of threading resources. Thanks to Brad Walton - for reporting this. - - * ace/Timer_Queue_Adapters.cpp: Rather than returning the result - of schedule_ualarm(), the - ACE_Async_Timer_Queue_Adapter::schedule() method should - return the timer id. Thanks to James Garrison - for reporting this. - - * examples/System_V_IPC/SV_Message_Queues: Renamed the so-called - "ACE_Message_Block" to "Message_Block" so it wouldn't be as - confusing. Thanks to Ganapathi for this - suggestion. - -Fri May 01 17:52:32 1998 Nanbor Wang - - * ace/ACE_Library.mak: - * ace/ace_{dll,lib}.dsp: Added Arg_Shifter.cpp into project. - -Fri May 01 14:09:21 1998 Steve Huston - - * ace/OS.h: Changed ACE_hrtime_t from signed to unsigned on Win32 - to insure correct results from ACE_High_Res_Timer::elapsed_time - calculations. Fixes bug P87. - -Fri May 01 11:52:47 1998 Nanbor Wang - - * ace/OS.h: Forgot to redefine ASYS_INLINE after #undef it. - - * ace/OS.i (last_error): On Win32, this should also update errno - after calling SetLastError (). Thanks to Steve for pointing - this out. Fixes bug P88. - -Fri May 01 10:01:09 1998 David L. Levine - - * ace/config-sunos5.6.h: replaced config-sunos5.6-sunc++-4.x.h - with this config file, which supports both Sun C++ and g++. - - * ace/OS.i (gethrtime): for the default (::gettimeofday) case, - use 64-bit instead of 32-bit arithmetic by casting to ACE_hrtime_t. - - * ace/Basic_Types.{h,i}: added ACE_U_LongLong::operator *. - - * ace/Env_Value_T.cpp: added #include of Env_Value_T.h. - -Fri May 1 00:35:40 1998 Nanbor Wang - - * include/makeinclude/wrapper_macros.GNU - (ACE_LDSO_Version_Number): Fixed the problem of not able to - parse a formal release number from ace/VERSION. - -Thu Apr 30 15:53:58 1998 Nanbor Wang - - * ACE.{h,i,cpp}: - * DEV.{h,i,cpp}: - * DEV_Connector.{h,i,cpp}: - * DEV_IO.{h,i,cpp}: - * Date_Time.{h,i,cpp}: - * FIFO_Recv.{h,i,cpp}: - * FIFO_Recv_Msg.{h,i,cpp}: - * FIFO_Send.{h,i,cpp}: - * FIFO_Send_Msg.{h,i,cpp}: - * FILE.{h,i,cpp}: - * FILE_Connector.{h,i,cpp}: - * FILE_IO.{h,i,cpp}: - * IO_SAP.{h,i,cpp}: - * IPC_SAP.{h,i,cpp}: - * LSOCK.{h,i,cpp}: - * LSOCK_CODgram.{h,i,cpp}: - * LSOCK_Connector.{h,i,cpp}: - * LSOCK_Dgram.{h,i,cpp}: - * LSOCK_Stream.{h,i,cpp}: - * Log_Record.{h,i,cpp}: - * Pipe.{h,i,cpp}: - * SOCK.{h,i,cpp}: - * SOCK_CODgram.{h,i,cpp}: - * SOCK_Connector.{h,i,cpp}: - * SOCK_Dgram.{h,i,cpp}: - * SOCK_Dgram_Bcast.{h,i,cpp}: - * SOCK_Dgram_Mcast.{h,i,cpp}: - * SOCK_IO.{h,i,cpp}: - * SOCK_Stream.{h,i,cpp}: - * SPIPE.{h,i,cpp}: - * SPIPE_Connector.{h,i,cpp}: - * SPIPE_Stream.{h,i,cpp}: - * SV_Message_Queue.{h,i,cpp}: - * SV_Semaphore_Complex.{h,i,cpp}: - * SV_Semaphore_Simple.{h,i,cpp}: - * UPIPE_Acceptor.{h,i,cpp}: - * UPIPE_Connector.{h,i,cpp}: Added inline control for these - supposedly default inline functions. - - * ace/config-WinCE.h: Added ACE_LACKS_INLINE_FUNCTIONS. - - * ace/OS.h: Added a new macro ASYS_INLINE for platforms that don't - support inline properly. This is controlled by the macro - ACE_LACKS_INLINE_FUNCTIONS. - - Walked thru all macros and indented them properly. - - * ace/README: Added documentation for ACE_LACKS_INLINE_FUNCTIONS. diff --git a/ChangeLog-99a b/ChangeLog-99a deleted file mode 100644 index 06bc00f2d45..00000000000 --- a/ChangeLog-99a +++ /dev/null @@ -1,13412 +0,0 @@ -Sat Jul 31 20:29:17 1999 Nanbor Wang - - * ace/OS.cpp: Moved the comment regarding *printf to where it - belongs. - - * ace/OS.h: Removed an extra trailing semicolon following - IPPROTO_TCP. - -Sat Jul 31 19:27:50 1999 Douglas C. Schmidt - - * examples/Shared_Malloc/test_position_independent_malloc.cpp: - Now that position-independent malloc works, I finished - integrating all the features in this test. - -Sat Jul 31 19:06:05 1999 Carlos O'Ryan - - * ace/Pipe.cpp: - The third argument to ACE_OS::setsockopt() is a "const char*" no - sense in casting it to void*! - -Sat Jul 31 18:55:34 1999 Kirthika Parameswaran - - * ace/Asynch_IO_Impl.{h, cpp}: - Fixed compiler errors: redefinition of destructors of the - classes in this file. Removed inline declaration of destructors - and defined those which hadnt been defined. - -Sat Jul 31 17:54:32 1999 Carlos O'Ryan - - * etc/enforce_ace_try.diff: - Apply this patch file and then compile to enforce the correct - use of ACE_TRY macros. It renames the exception(), clear() and - print_exception() methods in the CORBA::Environment class. - -Sat Jul 31 17:39:42 1999 Carlos O'Ryan - - * ace/Timeprobe_T.cpp: - Print timeprobe results with higher precision (3 decimal - digits), this is useful for extremely fine grained analysis - where just microseconds won't cut it. - -Sat Jul 31 12:07:48 1999 Douglas C. Schmidt - - * ace: Updated comments in all the header files so that references - to method names like ACE_Event_Handler::handle_input() were - changed to . This change - enables the class2man scripts to use the appropriate "code" font - for these names in the auto-generated documentation. - - * ace/Asynch_IO_Impl: Moved the - virtual destructors for all the ACE_Asynch_*_Impl classes into - the *.cpp file, which is where they belong. - - * ace/Functor_T.h: Moved the destructor of ACE_Command_Callback - out of the header file and into the *.cpp file. - - * ace/Sched_Params.h: Updated the documentation a bit to mention - the ACE_SCHED_{FIFO,RR,OTHER} policies explicitly. Thanks to - Peter Mueller for motivating this. - - * ace/Synch_T: Moved the implementations of ACE_Read_Guard and - ACE_Write_Guard out of the class header and into the *.i file, - which is where they belong. - - * ace/Based_Pointer_T.i (operator *): In order to distinquish a - "NULL" pointer we keep a value of -1 in target. - - * ace/Based_Pointer_T.i: I was forgetting to check if - rhs == 0 for the ACE_Based_Pointer<> class. This leads to weird - behavior when assigning a "NULL" pointer. - - * examples/Reactor/Misc/notification.cpp: Cleaned up the program so - that it looks better and doesn't crash and burn when signals occur. - - * ace/Pipe.cpp (open): We now set the default size of the - ACE_Pipes that are implemented as Internet or UNIX-domain - sockets to ACE_DEFAULT_MAX_SOCKET_BUFSIZ. This will speed up - the Reactor's notify() method and prevent it from deadlocking as - quickly. Thanks to Detlef Becker - for testing this out. - - * ace/OS.h: Added a new macro called ACE_IPPROTO_TCP that factors - out the differences between PHARLAPs and "normal" systems. - - * ace/Strategies_T.{i,cpp}: Added some additional ACE_ERROR printouts - if open() methods fail in constructors. - - * ace/Strategies_T: The logic for creating a new Singleton wasn't - dynamic enough. It's now intelligent enough to create a new - SVC_HANDLER if it's not given one. Thanks to Hao Ruan - for reporting this. - -Sat Jul 31 15:57:16 1999 Carlos O'Ryan - - * ACE version 5.0 released. Party on Wayne. - -Sat Jul 31 12:20:59 1999 Nanbor Wang - - * tests/version_tests/version_tests.dsw: - * tests/version_tests/Hash_Map_Bucket_Iterator_Test.dsp: - * tests/version_tests/Cached_Conn_Test.dsp: - * tests/version_tests/Cached_Accept_Conn_Test.dsp: Added three - missing version_tests project files. - -Sat Jul 31 00:22:46 1999 Nanbor Wang - - * tests/Basic_Types_Test.dsp: - * tests/Collection_Test.dsp: - * tests/Dynamic_Priority_Test.dsp: - * tests/New_Fail_Test.dsp: - * tests/Reverse_Lock_Test.dsp: - * tests/SOCK_Connector_Test.dsp: - * tests/SOCK_Send_Recv_Test.dsp: - * tests/Thread_Mutex_Test.dsp: - * tests/Timeprobe_Test.dsp: - * tests/Upgradable_RW_Test.dsp: Rebuilt. ACE_Init_Test.dsp is - still broken. - -Fri Jul 30 10:27:31 1999 Steve Huston - - * ace/config-hpux-10.x.h: Allow building w/o threads - set _REENTRANT - if not set, to pick up _r functions; move - ACE_HAS_NONCONST_SELECT_ TIMEVAL out of the threads-only - section. - -Fri Jul 30 08:36:43 1999 Douglas C. Schmidt - - * ace/OS.i: Commented out the ACE_TRACE calls in ACE_OS::mutex_lock() - and ACE_OS::thread_mutex_lock() to avoid infinite recursion. Thanks - to Ulf Jaehrig for reporting this. - -Fri Jul 30 03:33:14 1999 Carlos O'Ryan - - * bin/auto_compile: - * bin/auto_compile_wrapper: - * bin/run_all_list.pm: - Added options to run only the tests that do not require threads - (-single_threaded) and that do not require the full corba - profile (-minimum_corba). Also added options to disable the cvs - update, to execute realclean before compiling and to print some - debugging info. - -Thu Jul 29 20:44:56 1999 Ossama Othman - - * include/makeinclude/wrapper_macros.GNU: - - Override minimum_corba variable if it isn't set to 1 (i.e. if - minimum_corba is not enabled). This change was needed to make - it easier to disable some TAO ORB services, examples and tests - that rely on CORBA features that aren't supported in the minimum - CORBA specification. - -Thu Jul 29 19:04:12 1999 Ossama Othman - - * ace/Atomic_Op.i: - * ace/Filecache.cpp: - - Replaced raw ACE_*_Guards with their corresponding - ACE_GUARD_RETURN macros. This corrects "unused variable" - warnings when building ACE without thread support. See David's - ChangeLog entry from Fri May 14 16:10:29 1999 for a better - description of why this was necessary. - -Thu Jul 29 18:29:46 1999 Nanbor Wang - - * bin/run_all_list.pm: Moved the RUN_LIST definition from - auto_compile to this file to reduce the work to maintain the - list and allow auto_compile and run_all_win32.pl to synchronize - the tests being run. - - * bin/auto_compile: - * bin/run_all_win32.pl: Removed definition of RUN_LIST and use the - run_all_list module. - -Thu Jul 29 17:30:14 1999 Douglas C. Schmidt - - * ace/Makefile[.am] (pkginclude_HEADERS): Removed Future_Node.* - Thanks to John Tucker and Michael Garvin - for reporting this. - -Thu Jul 29 14:47:10 1999 Ossama Othman - - * ace/Select_Reactor_T.cpp (dispatch_notification_handlers): - - This code is used for picking up updates from non-owner threads. - However, it is also useful for picking up notifications from the - notify pipe (even though the notify is part of the I/O handle - set in the Select_Reactor). Therefore, we have enabled this - code for the single-threaded case also. Thanks to Irfan for - this fix. - -Thu Jul 29 14:32:28 1999 Carlos O'Ryan - - * ace/ACE.cpp: - Linux without returns a different errno (EOPNOTSUPP) if the - connector or acceptor runs out of file descriptors. - - * ace/OS.i: - The Errno_Guard constructor was not using an argument in - platforms without exceptions. - -Thu Jul 29 13:59:15 1999 Douglas C. Schmidt - - * ACE version 4.6.47 released. - -Thu Jul 29 12:32:01 1999 Nanbor Wang - - * ace/WFMO_Reactor.cpp (ACE_WFMO_Reactor): - * ace/Select_Reactor_T.cpp (ACE_Select_Reactor_T): I forgot to - initialize flag in one of the two ctors. Thanks - to Ruediger Franke for catching - this one. - -Thu Jul 29 01:04:03 1999 Carlos O'Ryan - - * bin/auto_compile: - * bin/auto_compile_wrapper: - Updated to include the latest round of changes, new tests and - several improvements to send email and stuff. - -Wed Jul 28 18:29:46 1999 Jeff Parsons - - * ace/config-win32.h: - Removed ACE_HAS_STD_TEMPLATE_SPECIALIZATION - definition. See below. - - * ace/config-win32-common.h: - Added ACE_HAS_STD_TEMPLATE_SPECIALIZATION - definition, since there is a place for MSVC 6.0 stuff like this. - Also added ACE_HAS_BROKEN_IMPLICIT_CONST_CAST - definition for a generated code bug fix that just didn't have one version - that would satisfy both SunCC and MSVC. - -Wed Jul 28 18:26:53 1999 Carlos O'Ryan - - * ace/CDR_Stream.cpp: - * ace/Message_Block.h: - * ace/Message_Block.cpp: - * ace/Message_Block_T.h: - * ace/Message_Block_T.cpp: - Re-implemented the clone() method without data copies in a - backwards compatible way, a new clone_nocopy() method was added - so classes that inherit from Data_Block and only override - clone() will work correctly. - Also fixed the implementation of Locked_Data_Blocked because it - is used in TAO and we need zero-copy clone() operations in that - case. - -Wed Jul 28 16:16:27 1999 Nanbor Wang - - * ace/OS.cpp (set): Fixed a unsigned/signed conversion problem - that caused negative usec value in ACE_Time_Value. Thanks to - Jerry D. De Master for reporting the bug. - (FILETIME): Removed some unused macros for dealing with older - Borland C++ compilers. Thanks to Jody and Gonzo for confirming - this. - -Wed Jul 28 13:44:15 1999 Nanbor Wang - - * ACE-INSTALL.html: Remind users to pick the right configurations - when building from MSVC project files. Thanks to Jerry D. De - Master for suggesting this. - -Wed Jul 28 13:26:36 1999 David L. Levine - - * ACE-INSTALL.html: for VxWorks (thru Tornado 1.0.1), - -fno-implicit-templates is broken for x86 targets, - not all targets. - -Wed Jul 28 13:09:26 1999 David L. Levine - - * docs/ACE-subsets.html: updated libACE size breakdown. - -Wed Jul 28 12:08:56 1999 Ossama Othman - - * ace/CDR_Stream.cpp (reset_contents): - - Modified call to clone() so that it uses the newly added - zero-copy semantics. A data copy was already being made in - ACE_InputCDR::steal_from(), which also calls - ACE_InputCDR::reset_contents(). Two data copies were being - performed. This change reduces the number of data copies to - one. Thanks to Carlos for this change. - -Wed Jul 28 11:23:36 1999 Ossama Othman - - * ace/Message_Block.h: - * ace/Message_Block.cpp (clone): - - Added argument that allows the characteristics of an - ACE_Data_Block to be copied without copying the data that the - ACE_Data_Block holds. This modification is part of a zero-copy - optimization for TAO. Thanks to Carlos for implementing this - change. - -Wed Jul 28 09:48:37 1999 David L. Levine - - * docs/ACE-guidelines.html: added guideline about testing - for definition of a macro before using it. Thanks to - Susan Liebeskind for - providing this guideline. - -Wed Jul 28 00:06:32 1999 Douglas C. Schmidt - - * ace: Added a new Makefile.bor file for BCB4. Thanks to Christopher - Kohlhoff for contributing this. - -Tue Jul 27 23:25:18 1999 Douglas C. Schmidt - - * netsvcs/lib/Server_Logging_Handler_T.cpp (open): Updated a - comment to point out that we use a thread-per-connection - concurrency model. Thanks to Raghu Nambiath - for reporting this. - -Tue Jul 27 21:05:23 1999 David L. Levine - - * include/makeinclude/platform_tru64_cxx.GNU (ACE_DU_SUBVERSION): - fixed typo: -v instead of v-. Thanks to - Doug Anderson for reporting this. - -Tue Jul 27 16:58:54 1999 Kirthika Parameswaran - - * ace/ACE.cpp (out_of_handles): Added bug-fixes for RedHat5.2 and - FreeBSD. Thanks to James Megquier for discovering - and testing out the bug-fix on RedHat5.2 and Russell.L.Carter - for sending in a patch for FreeBSD. These - bug fixes are for: $ACE_ROOT/tests/ - Cached_Conn_Test and Cached_Accept_Conn_Test. - -Tue Jul 27 16:55:44 1999 Nanbor Wang - - * include/makeinclude/platform_sunos5_kcc.GNU (MATHLIB): KCC needs - to have this defined. - -Tue Jul 27 16:18:21 1999 David L. Levine - - * ACE-INSTALL.html: updated note about shared libraries - on VxWorks. In particular, they don't provide copies - of global (static) variables in the library. So, "programs" - that share a library will also share the static variables in - the library. [Bug 86] - -Tue Jul 27 14:26:37 1999 Douglas C. Schmidt - - * ace/SOCK_Dgram: Removed the QoS_Params from open() and - ACE_SOCK_Dgram since they don't appear to be useful. Thanks to - Vidya Narayanan for suggesting - this. - -Tue Jul 27 14:41:26 1999 Steve Huston - - * ace/Codeset_IBM1047.cpp: Added a static variable only for HP aC++ - to make it stop warning of an empty translation unit. - -Tue Jul 27 14:16:55 1999 Nanbor Wang - - * ace/Thread_Manager.cpp (cancel_thr): This method should return - the result of thread cancel operation if async_cancel is used. - Thanks to Peter Mueller for suggesting - the fix. - -Mon Jul 26 20:50:37 1999 Douglas C. Schmidt - - * ace/OS: Addded a new pair of priority() fields as place - holders for the forthcoming DiffServ QoS features. Thanks to - Vidya Narayanan for suggesting - this. - -Tue Jul 27 13:28:48 1999 David L. Levine - - * ace/OS.i (getuid): removed extra ACE_TRACE with - ACE_WIN32 or CHORUS. Thanks to Jerry D. De Master - for reporting this. - -Tue Jul 27 11:10:39 1999 David L. Levine - - * examples/System_V_IPC/Makefile: on VxWorks only, fixed - so that make all, etc., work properly (by just printing - the message that these examples aren't used on VxWorks). - -Tue Jul 27 10:25:41 1999 Steve Huston - - * ACE-INSTALL.html: Added a note about required HP-UX 10.20 - patch. Updated aC++ versions. - - * ace/Process.{h cpp} (ACE_Process_Options::command_line): Added - 'const' to make the entire array and contents const. Restores - ability for users of pre-5.0 to still pass char **. Thanks to - Bill Tovrea for reporting this. - - * examples/Connection/non_blocking/Makefile: Re-added LIBS += $(ACELIB) - (see ChangeLog, 23-Jul-1999) but did it in the section for AIX - C Set++ and IBM C/C++ only (ifdef TEMPINCDIR). This is needed to - generate the shared library (libConn) using those compilers. - -Mon Jul 26 20:50:37 1999 Douglas C. Schmidt - - * ace/Future.h: Moved the static methods until the bottom - of the ACE_Future_Rep class (again) to workaround a bug with - Borland's C++ Builder. Thanks to Christopher Kohlhoff - for reporting this (again). - -Mon Jul 26 20:59:23 1999 Carlos O'Ryan - - * websvcs/README: - Added a brief description of the directory and its current - contents. Thanks to Will Skunk - for motivating this. - -Mon Jul 26 20:50:37 1999 Douglas C. Schmidt - - * ace/Log_Msg.cpp: Added support for the 'W' (UNICODE) option for - Win32. Thanks to Valery Arkhangorodsky - for contributing this. - -Mon Jul 26 20:58:35 1999 Alexander Babu Arulanthu - - * ace/POSIX_Asynch_IO.cpp: - * ace/WIN32_Asynch_IO.cpp: Fixed the double deletion problem of - the result classes. Thanks to David Digby - and Timothy Schimke - for reporting this. - -Mon Jul 26 18:09:09 1999 Irfan Pyarali - - * tests/run_tests.sh (Cached_Conn_Test and - Cached_Accept_Conn_Test): These two tests are known to leak - memory when compiled with old gcc (g++). Therefore, we skip - these tests when using purify and old gcc (g++). A -p option - was added to the script to indicate that we want to run with - purify. - -Mon Jul 26 17:09:09 1999 David L. Levine - - * ace/Object_Manager.{h,cpp},Makefile: don't create the - ACE_TOKEN_MANAGER_CREATION_LOCK and - ACE_TOKEN_INVARIANTS_CREATION_LOCK preallocated objects - if the Token component isn't build. This gets rid of - unresolved references to the ACE_Token_Proxy compoents - on VxWorks/g++ when Token isn't built. Thanks to - Stephane Chatre for reporting this. - -Mon Jul 26 17:02:08 1999 David L. Levine - - * include/makeinclude/wrapper_macros.GNU: don't override - OBJDIRS on VxWorks with shared libs. This allows - make realclean to work properly on VxWorks, when shared - lib builds are enabled. - -Mon Jul 26 15:06:23 1999 Jeff Parsons - - * ace/CDR_Stream.i: - * ace/Map_Manager.i: - Had to cast some return values to avoid MSVC signed/unsigned - mismatch type warnings (level 4). - - * ace/config-win32.h: - Added ACE_HAS_STD_TEMPLATE_SPECIALIZATION define, so that - ACE_TEMPLATE_SPECIALIZATION macro adds the necessart - 'template <>' for MSVC, and so averts many many level 4 - warnings. - -Mon Jul 26 14:10:56 1999 Kirthika Parameswaran - - * ace/DLL.cpp (get_handle): Changed the check of - flag to now reset only if the - is set. Thanks to Bob McWhirter - for pointing this out. - -Mon Jul 26 12:32:41 1999 Douglas C. Schmidt - - * ACE version 4.6.46 released. - -Fri Jul 23 18:20:11 1999 Carlos O'Ryan - - * ace/config-irix6.x-sgic++-nothreads.h: - Enabled namespaces with MIPSPro 7.2 or higher. - -Fri Jul 23 16:40:15 1999 Carlos O'Ryan - - * ace/ACE.cpp: - Fixed typos in error return values for ACE::execname() - -Fri Jul 23 14:51:48 1999 Douglas C. Schmidt - - * examples/Service_Configurator/IPC-tests/Handle_L_CODgram, - examples/Service_Configurator/IPC-tests/Handle_L_Dgram, - examples/Service_Configurator/IPC-tests/Handle_L_Pipe: - Cleaned this stuff up so that it builds correctly when - ACE_LACKS_UNIX_DOMAIN_SOCKETS is enabled. Thanks to - David for reporting this. - - * examples/Service_Configurator/IPC-tests/server/Handle_L_Pipe: - Made upper_case() a method in the Handle_L_Pipe class. - - * examples/Service_Configurator/IPC-tests/server/Handle_L_Pipe.cpp, - examples/Service_Configurator/IPC-tests/server/Handle_L_CODgram.cpp: - Removed the bizarre hacks for SunOS4. This stuff probably - hasn't been tested since 1992! - -Fri Jul 23 14:16:22 1999 Steve Huston - - * ace/OS.i (ACE_OS::read): (only non-Win32), if call fails and - errno is EAGAIN, change it to EWOULDBLOCK. Improve portability for - platforms where EAGAIN and EWOULDBLOCK are different values and - both used, like HP-UX. - - * ace/Malloc_T.cpp (ACE_Malloc<> ctor): Added missing newline in error - message. - -Fri Jul 23 12:09:18 1999 Nanbor Wang - - * ace/OS.i: Fixed some mismatched ifdef/endif comments. - - * ace/ACE.cpp (execname): Fixed some misuses of ACE_HAS_WIN32 - macros where they should have been ACE_WIN32. Thanks to Andy - for noticing this. - -Fri Jul 23 11:28:17 1999 Douglas C. Schmidt - - * ace/Memory_Pool.cpp (init_acquire): shmat() returns -1 on - failure, not 0. Thanks to Kevin Liu - for reporting this. - -Fri Jul 23 11:35:31 1999 David L. Levine - - * examples/Connection/non_blocking/tests_lsock_{acceptor, - connector.cpp}: disabled if ACE_LACKS_UNIX_DOMAIN_SOCKETS. - Thanks to Alain Magloire for reporting this. - - * examples/Connection/non_blocking/Makefile: removed unneeded - LIBS (=$(ACELIB)) and BUILD macro definitions. - -Fri Jul 23 10:07:05 1999 David L. Levine - - * include/makeinclude/platform_qnx_neutrino.GNU: added - CROSS-COMPILE macro definition. Thanks to - Alain Magloire for reporting this. - -Fri Jul 23 08:58:56 1999 Douglas C. Schmidt - - * ace/Service_Config.h: Clarified the fact that the - ACE_Service_Config uses the Monostate pattern, so there can only - be one of them per-process. Thanks to Ralf Kluthe - for reporting this. - -Fri Jul 23 07:49:31 1999 David L. Levine - - * include/makeinclude/platform_sunos5_sunc++.GNU: added - comment about options for producing 64-bit binaries. - Thanks to Jeff Franks for - raising this issue. - -Fri Jul 23 03:10:31 1999 Irfan Pyarali - - * ace/Strategies_T.cpp (find_or_create_svc_handler_i): - * ace/Cached_Connect_Strategy_T.cpp (cached_connect): - - I had added the new_connection() method that lets go of the lock - for the duration of the connect(), but forgot to use it in the - above functions ;) It should be fine now. - - * tests/Cached_Conn_Test.cpp (cached_connect): - * tests/Cached_Accept_Conn_Test.cpp (cached_connect): - - Host of the remote address should be ACE_LOCALHOST instead of - ACE_DEFAULT_SERVER_HOST. - -Thu Jul 22 23:23:26 1999 Irfan Pyarali - - * ace/Handle_Gobbler.h (class ACE_Handle_Gobbler): Inlined - declaration of the functions. - -Thu Jul 22 20:03:54 1999 Douglas C. Schmidt - - * ace/Acceptor.cpp: For sanity's sake, initialize all the data - members to 0 in the ACE_Strategy_Acceptor constructor. Thanks - to Jody Hagins for reporting this. - - * ace/Acceptor.cpp: The service_port_ data member in the - ACE_Strategy_Acceptor wasn't being initialized to 0. Thanks to - Jody Hagins for reporting this. - - * ace/Acceptor.cpp: Modified the dump() and info() methods so that - don't do bad things if service_name_ and service_description_ - are NULL. Thanks to Jody Hagins for this - suggestion. - - * ace/Message_Queue_T.h: Clarified what the errnos get set to when - timeouts occur or queues are deactivated. Thanks to - John Forest for suggesting this. - -Thu Jul 22 16:55:14 1999 Carlos O'Ryan - - * ace/Stats.cpp: - Fixed message that had a %s but no argument! - -Thu Jul 22 15:12:18 1999 David L. Levine - - * ace/Codeset_IBM1047.{h,cpp}: wrapped with #ifdef ACE_MVS - so that the code doesn't occupy any space on platforms - other than MVS. - -Thu Jul 22 14:22:41 1999 David L. Levine - - * examples/Shared_Malloc/Malloc.cpp: fixed explicit - template instantiations so that there are no duplications - with ACE_LACKS_SBRK and ACE_LACKS_SYSV_SHMEM. - -Thu Jul 22 12:17:26 1999 David L. Levine - - * ace/config-lynxos.h: removed ACE_LACKS_FORK on PowerPC. - All of the ACE tests that fork now succeed. - -Thu Jul 22 11:54:58 1999 David L. Levine - - * tests/SV_Shared_Memory_Test.cpp (child): added a one - second sleep to give the parent a chance to create the - semaphore. This allows the test to succeed on LynxOS/PPC - (with fork ()). - - * tests/Process_Mutex_Test.cpp,Process_Strategy_Test.cpp (main): - added a one second sleep after spawning each server, to give it - a chance to start. Also, wrapped some string literals with - ASYS_TEXT. Again, success on LynxOS/PPC with fork (). - -Thu Jul 22 10:42:06 1999 Clarence M. Weaver - - * ACE-INSTALL.html: added steps for running the ACE tests - on VxWorks platforms that lack NFS. - -Thu Jul 22 10:25:31 1999 David L. Levine - - * ace/Log_Record.cpp,SString.cpp: wrapped #include of - ace/streams.h with #ifndef ACE_LACKS_IOSTREAMS_TOTALLY. - [Bug 84] - -Thu Jul 22 09:55:10 1999 David L. Levine - - * docs/ACE-guidelines.html: updated commit message guideline - to show ChangeLogTag example. - -Thu Jul 22 02:15:46 1999 Irfan Pyarali - - * ace/Handle_Gobbler (class ACE_Handle_Gobbler): New class that - gobbles up handles :) This class is useful when we need to - control the number of handles available for a process. Mostly - used for testing purposes. - - Note that even though the new files are in the ace directory, - they are not part of the ace library. The files only contain - inline functions and Handle_Gobbler.h is only included where - needed. - - * tests/Cached_Conn_Test.cpp: - * tests/Cached_Accept_Conn_Test.cpp: - - Added Handle_Gobbler to the test to reduce the iterations - required before handles run out and purging starts. - -Wed Jul 21 21:45:22 1999 Nanbor Wang - - * ace/Reactor.cpp: Applied ACE_NOTREACHED to several - run_*_event_loop methods. - - * docs/ACE-guidelines.html: Updated ASYS_TEXT usage. - - * ace/RB_Tree.cpp: - * tests/Cache_Map_Manager_Test.cpp: Applied ASYS_TEXT liberally. - -Wed Jul 21 21:19:36 1999 David L. Levine - - * ACE-INSTALL.html: added note about ACE support for - shared libraries on VxWorks. It's still under - development. - -Wed Jul 21 18:38:00 1999 Irfan Pyarali - - * ace/Strategies_T.h (ACE_Cached_Connect_Strategy): Renamed - to . - - * ace/Hash_Cache_Map_Manager_T.cpp (find): Finding and updating - the attributes is faster through the find() that uses an entry. - Therefore, for find (key, value) and find (key) we go to - find (key, entry) instead of going to the base class. - - * ace/Cached_Connect_Strategy_T.cpp: - - - ACE_Cached_Connect_Strategy_Ex::check_hint_i - - ACE_Cached_Connect_Strategy_Ex::find - - Update the caching attributes directly since we don't do a - find() on the cache map. - -Wed Jul 21 15:54:25 1999 Nanbor Wang - - * ace/DLL.cpp: ACE_HAS_MOSTLY_UNICODE_APIS fixes. - - * ace/OS.i (ctime): - * ace/OS.cpp (ctime): One copy should only be available when - ACE_HAS_MOSTLY_UNICODE_APIS is defined. Thanks to Steve for - reporting this. - -Wed Jul 21 15:21:32 1999 David L. Levine - - * tests/Env_Value_Test.cpp (main): use the single-process - version if ACE_LACKS_FORK, in addition to if - ACE_HAS_NONSTATIC_OBJECT_MANAGER. - - * tests/Time_Service_Test.cpp (main): neuter if ACE_LACKS_FORK, - because the test uses ACE_Process::spawn (). - - Thanks to Riaz Syed for reporting these. - -Wed Jul 21 11:48:53 1999 David L. Levine - - * include/makeinclude/platform_vxworks5.x_g++.GNU: - use full path to $(CC) in egcs version check, to avoid - warning if it is not on the user's PATH. - -Wed Jul 21 11:44:19 1999 Carlos O'Ryan - - * ace/OS.h: - Simplified the definition of the ACE_THR_PRI_*_DEF macros from - (MIN+(MAX-MIN)/2) to ((MIN+MAX)/2), the new definition is not - only easier to read, makes less operations (and function calls) - but it is also safer when the the priorities are "backwards" and - PRI_MAX < PRI_MIN - -Wed Jul 21 11:40:31 1999 Steve Huston - - * include/makeinclude/platform_aix4_cset++.GNU: - * include/makeinclude/platform_hpux_aCC.GNU: Replaced lines like - "debug=1" with ifeq (,$(debug)) debug=1 endif. - - * include/makeinclude/platform_aix4_g++.GNU: - Above change for variables, also added -Wl,-bbigtoc when linking - TAO_IDL, else it runs out of toc space. Don't do it for all links - because bigtoc introduces a run-time performance penalty. - -Wed Jul 21 10:25:07 1999 David L. Levine - - * ace/OS.{h,cpp} (tss_base,tss_open): with TSS emulation, - no longer return indication of whether tss_base allocated - the ts_storage array. Instead, added an (optional) - argument that tss_open can use for that purpose. This - allows threads that haven't been spawned by ACE to use - ACE's TSS emulation. Thanks to David Hauck - for reporting this and testing - the fix on NT. And, thanks to Terry Rosenbaum - for originally reporting it. - -Wed Jul 21 09:34:09 1999 David L. Levine - - * examples/Shared_Malloc/test_position_independent_malloc.cpp (main): - removed declarations of unused argc and argv. - -Wed Jul 21 04:32:20 1999 Nanbor Wang - - * ace/Reactor.cpp: - * ace/Reactor.h: - * ace/Reactor.i: - * ace/Reactor_Impl.h: - * ace/Select_Reactor_T.cpp: - * ace/Select_Reactor_T.h: - * ace/Select_Reactor_T.i: - * ace/TP_Reactor.cpp: - * ace/WFMO_Reactor.cpp: - * ace/WFMO_Reactor.h: - * ace/WFMO_Reactor.i: The change was motivated by removing a race - condition in TP_Reactor during shutdown. There was a small time - gap between a thread running TP_Reactor event loop checking its - end_event_loop flag to the thread actually grabing the token in - TP_Reactor. Since the token return to its "normal" state after - broadcasting, this thread has no chance to notice that the - reactor has already been shutdowned and thus a deadlock occured. - In order to fix the problem, we must keep a state indicating - whether the reactor has been shutdowned or not in the reactor. - - An added benefit of adding this state is that every reactor now - has its own run_reactor_event_loop which mimic the behavior of - the static ACE_Reactor::run_event_loop but instead of working on - the singleton reactor, the added function work on an instance of - reactor object. In fact, all event_loop control functions have - been added. They are named *_reactor_event_loop to - differentiate their behavior. These newly added function use - the added state in the reactor to control the looping of event - handling. All run_reactor_event_loop methods take an extra - argument of a function pointer. The function will be called in - every iteration if it is set. - - Notice that the singleton event loop control functions are still - available. Although these function merely forward the call to - the singleton reactor's *_reactor_event_loop functions, you can - still use them to control the "main" event loop. In fact, it is - required that you use these functions to run the main event loop - because it facilitates Service_Configurator's "reconfigure" - feature. - - All reactors now also have two extra functions namely - "deactivated" which is used to query whether the reactor will - handle more incoming event or not, and "deactivate" which is - used to control this new feature. - - An side effect of the change is that, once a reactor get - deactivated, calls to handle_events will return -1 immediately. - You can use the "deactivated" method to check if there's - actually an error in the handle_events method or it simply - returned because the reactor has been deactivated. This is also - how the various "run_reactor_event_loop" handle the situation. - Notice that this should not cause any backward compatibility - problem becuase if a user is using his own end_event_loop flag, - he will not (and should not) invoke any more handle_events after - the flag has been set. Also, if he is using the global - run_event_loop methods (for controling singleton reactor,) they - should still behave the same. - - To summarize the change: - - 1. The run_event_loop control logic has been "pushed" down into - each individual reactor. The methods supporting the logic are - defined in ACE_Reactor and are: - - run_reactor_event_loop () - run_alertable_reactor_event_loop () - end_reactor_event_loop () - reactor_event_loop_done () - reset_reactor_event_loop () - - 2. The origianl run_event_loop methods in ACE_Reactor are still - working but they now use the run_reactor_event_loop methods in - the implementation of the reactor. - - 3. Reactors now keep a state to indicate handle_events should be - called or not. They can be controlled thru: - - deactivated () - deactivate () - - methods. - -Tue Jul 20 21:31:50 1999 Jim Rogers jrogers@viasoft.com - - * ace/config-mvs.h: added ACE_HAS_EXCEPTIONS. - -Tue Jul 20 21:23:19 1999 David L. Levine - - * ace/OS.* (next_key,total_keys): with TSS_EMULATION, - added guard (using preallocated ACE_TSS_KEY_LOCK) - to access of next_key_. Uninlined both of these - functions because they now have the guards. Thanks - to Jake Hamby for reporting this. - -Tue Jul 20 21:11:02 1999 David L. Levine - - * include/makeinclude/platform_vxworks5.x_g++.GNU: - fixed test of g++ for whether it's egcs. Thanks to - Erik Johannes for reporting this. - (The symptom was that TAO's IORManipulation.cpp wouldn't - compile due to an internal compiler error. Adding - -fno-exceptions works around that.) - -Tue Jul 20 18:30:22 1999 Irfan Pyarali - - * ace/Cached_Connect_Strategy_T.h: All functions in - ACE_Cached_Connect_Strategy_Ex and ACE_Cached_Connect_Strategy - that contain specific information about the map used by the - class should not be virtual. - - * ace/Future_Set.cpp (next_readable): Removed extra code that was - left behind from a debugging stage. Thanks to author John - Tucker for helping with this. - -Tue Jul 20 12:02:47 1999 David L. Levine - - * examples/Threads/task_five.cpp (main): removed - ACE_NOTREACHED wrapper around the final return statement. - It's reachable now. - -Tue Jul 20 11:46:09 1999 Douglas C. Schmidt - - * examples/Shared_Malloc/test_position_independent_malloc.cpp: - Completely #ifdef'd this example out until we get it working. - Thanks to David Levine for reporting this. - -Tue Jul 20 11:15:23 1999 David L. Levine - - * ACE-INSTALL.html: updated memory requirements discussions. - -Tue Jul 20 09:43:36 1999 Ossama Othman - - * ace/Future_Set.cpp (next_readable): - - Fixed unused variable warnings. - -Tue Jul 20 09:33:02 1999 David L. Levine - - * ace/OS.{h,i} (sigwait): only use the DIGITAL_UNIX sigwait - massaging with cxx, not with any other compiler. Thanks to - Doug Anderson for suggesting this, because - egcs issued warnings with it. - -Tue Jul 20 07:06:28 1999 David L. Levine - - * include/makeinclude/platform_osf1_4.0.GNU: - removed -ptr ptrepository. Let the compiler use its - default template repository. - - * include/makeinclude/rules.local.GNU (realclean): added - cxx_repository, for DU cxx. - -Tue Jul 20 07:01:57 1999 Doug Anderson - - * ace/OS.i (sigwait,thr_sigsetmask): added support for - Cray UNICOS 9. - -Mon Jul 19 22:46:54 1999 Irfan Pyarali - - * ace/Strategies_T.cpp - (ACE_Cached_Connect_Strategy::new_connection):: We use a reverse - lock to let go of the lock for the duration of the actual - connect. This will allow other threads to hack on the - connection cache while this thread creates the new connection. - Thanks to James Whitledge for - suggesting this. - - * tests/Cached_Accept_Conn_Test.cpp - * tests/Cached_Conn_Test.cpp - * tests/Conn_Test.cpp - - Added reverse lock template instantiations. - - * ace/Synch_T: Since the reverse lock constructor that created the - regular lock was removed, there was no need for the - variable, and could be changed into a - reference (instead of pointer). - -Mon Jul 19 23:04:15 1999 Douglas C. Schmidt - - * netsvcs/lib/Logging_Strategy.cpp (init): The ACE_LOG_MSG->open() - call at the end of the ACE_Logging_Strategy::init() method - *must* specify the flags and logger key or an application will - not connect to the client logger daemon automatically when the - ACE_Log_Msg::LOGGER flag is set in a svc.conf file. Thanks to - Jerry De Master for reporting this. - -Mon Jul 19 22:11:13 1999 David L. Levine - - * ACE-INSTALL.html: cleaned up instructions for building - on NT for VxWorks target. Thanks to Stephane Chatre - for reporting that the instructions - were out of date. - -Mon Jul 19 21:38:16 1999 Carlos O'Ryan - - * tests/run_tests.vxworks: - Re-enable the Cached_Conn_Test and Cached_Accept_Conn_Test, it - works on Linux, NT, Solaris, IRIX and HP-UX so we should be - pretty close. Thanks to Irfan for fixing the problems with this - test. - -Mon Jul 19 21:26:57 1999 David L. Levine - - * ace/OS.{h,i}: reverted sigwait () changes on Digital - Unix. They cause examples/Threads/process_manager.cpp - to not compile on DU 5.0 with cxx 6.2-021. See - Mon Jul 19 21:13:16 1999 Doug Anderson . - -Mon Jul 19 21:13:16 1999 Doug Anderson - - * ace/ACE.cpp,ace/Basic_Types.h,ace/CDR_Stream.{h,cpp}, - ace/SOCK_Dgram_Bcast.cpp,ace/config-cray.h, - tests/Basic_Types_Test.cpp,tests/Handle_Set_Test.cpp, - include/makeinclude/platform_cray.GNU - - I finally managed to get the latest and greatest to work on - the Cray. Still no CDR support, but that will be post 5.0. - - * ace/OS.{h,i}: added support for egcs on Digital Unix (4.0d & e). - Fixe problem with legacy workarounds in OS.* for sigwait() and - cxx/GNU that don't appear to be necessary on 4.0d/e/f with - neither cxx nor GNU. - - * include/makeinclude/platform_tru64_g++.GNU: added. Works - with ace/config-tru64.h. - -Mon Jul 19 19:46:50 1999 Irfan Pyarali - - * ace/OS.h: Added ACE_*_cast_*_ptr and ACE_*_cast_*_ref for const, - static, and reinterpret casts. - - * ace/Strategies_T.cpp (find): - * ace/Cached_Connect_Strategy_T.cpp (find): - - The comparison should be between ACE_PEER_CONNECTOR_ADDR and not - REFCOUNTED_HASH_RECYCLABLE_ADDRESS. - - * ace/Svc_Handler: Changed to . - was too generic and in some cases a method was already - present in classes deriving from Svc_Handler. - - Also, added a accessor. - - The following files were effected: - - - ace/Cached_Connect_Strategy_T.cpp - - ace/Cached_Connect_Strategy_T.h - - ace/Caching_Utility_T.cpp - - ace/Strategies.h - - ace/Strategies.i - - ace/Strategies_T.cpp - - ace/Strategies_T.h - - ace/Strategies_T.i - - tests/Cached_Accept_Conn_Test.cpp - - tests/Cached_Conn_Test.cpp - -Mon Jul 19 20:08:15 1999 Carlos O'Ryan - - * ace/Strategies_T.cpp: - Fixed lookup of connections in the Cached_Connect_Strategy, - thanks to Irfan for providing this fix. - -Mon Jul 19 12:26:20 1999 David L. Levine - - * include/makeinclude/platform_vxworks5.x_g++.GNU, - ace/config-g++-common.h: - don't #define ACE_HAS_GNUG_PRE_2_8 with Tornado II's - g++. It's egcs, though it's version identifier says - it's 2.7. Thanks to Thomas Lockhart - for reporting this. [Bug 80] - -Mon Jul 19 09:50:31 1999 Steve Huston - - * ace/Future.cpp: Added ACE_TYPENAME to template-qualified types. - * ace/Future.cpp: Added #include "ace/Containers.h" to be sure the - types necessary for this class is available at template link - time. - - * apps/gperf/src/Options.h: If on PharLap ETS, clear out its definition - of EOS to avoid compile errors. Thanks to David Hauck - for this fix. - -Mon Jul 19 08:12:30 1999 David L. Levine - - * include/makeinclude/platform_tru64_cxx.GNU: added support - for DU 4.0E and D. - -Mon Jul 19 08:08:25 1999 Steve Huston - - * ace/config-hpux-(10 11).x-hpc++.h: In the aC++ section, if __HP_aCC - is not set, set it. Some parts of TAO rely on it, but it's not set - until the most recent versions of the compiler. Thanks to Brian - Wallis for helping figure this out. - -Mon Jul 19 07:53:59 1999 David L. Levine - - * ace/SOCK_Dgram_Mcast.cpp (open): added unnecessary const_cast - of mcast_addr to ACE_Addr &, so that Sun C++ 4.2 will compile - without error. Thanks to Andy for this fix. - -Sun Jul 18 21:36:04 1999 David L. Levine - - * OS.cpp (sched_params): wrapped DIGITAL_UNIX preprocessor - symbol in parenthesis. - -Sun Jul 18 14:30:54 1999 Douglas C. Schmidt - - * tests/run_tests.sh: Reenabled the Future_Set_Test. Hopefully, - this will work on Solaris and the other platforms now! - - * ace/Future*: Added some fixes for Future_Set that should prevent - it from hanging indefinitely on certain platforms. Also, - removed the Future_Node.h and Future_Node.cpp files since they - are no longer used. Thanks to John Tucker - for contributing these fixes. - - * ace/SOCK_Dgram_Mcast: Finished implementing the QoS-enabled APIs for - socket datagram multicast. This required refactoring quite a - bit of code and adding some new methods that take the - ACE_QoS_Params. - - * ace/SOCK_Dgram.cpp: Finished integrating the QoS support - for SOCK dgrams. - - * ace/SOCK_Dgram.cpp: Factored out common code in the - ACE_SOCK_Dgram constructors. - - * ace/SOCK_Connector: Finished implementing the QoS-enabled - connect() methods. To make this cleaner, I've created a new - "shared_open()" method that factors out the common code. - - * ace/SOCK_Acceptor: Finished implementing the QoS-enabled open() - method. To make this cleaner, I've created a new - "shared_open()" method that factors out the common code. - -Sat Jul 17 13:36:03 1999 Ossama Othman - - * ace/High_Res_Timer.cpp (get_cpuinfo): - - Removed extra `FILE *cpuinfo' declaration. - -Sat Jul 17 12:20:25 1999 Douglas C. Schmidt - - * ace/High_Res_Timer: Added integrated support for Alpha and - Pentium that will eliminate the 5sec startup delay for Linux/PII - clients using the ACE high resolution timer. Thanks to Thomas - Lockhart for these fixes. - - * netsvcs/servers/main.cpp (main): Fixed a typo caused by recent - integration of Jerry De Master's fixes. - -Fri Jul 16 19:41:05 1999 Irfan Pyarali - - * ace/ACE.cpp (out_of_handles): Added a function to check if a - process is out of handles (file descriptors). This is required - to avoid repeating this code in many places. Also, note that - all platform specific quirks can be captured in this function. - - * ace/Cached_Connect_Strategy_T.cpp (cached_connect): - * tests/Cached_Conn_Test.cpp (out_of_sockets_handler): - * tests/Cached_Accept_Conn_Test.cpp (out_of_sockets_handler): - - Changed the above to use the new ACE::out_of_handles() function. - - * ace/OS.h (ENFILE): Added ENFILE if missing on platform. In that - case, ENFILE will equal to EMFILE. - -Fri Jul 16 13:55:34 1999 Douglas C. Schmidt - - * include/makeinclude/{build_dll.bor,build_exe.bor,compiler.bor}, - ace/{Makefile.bor,ace.rc}: - Updated these files to add version information to the DLLs so - when you right click them in windows explorer you can see what - version the file is (e.g., "4.6.45"). Thanks to Christopher - Kohlhoff for contributing this. - - * netsvcs/servers/main.cpp (main): Disable debugging messages - if the -d option isn't given to ACE_Service_Config. Thanks to - Jerry De Master for reporting this. - - * ace/config-win32-borland.h: Updated this file to enable some - necessary macros. Thanks to Christopher Kohlhoff - for reporting this. - - * tests/DLL_Test.cpp, - tests/run_test.bat: Updated these to handle the appropriate - directory where the Borland tests are built. Thanks to - Christopher Kohlhoff for reporting this. - - * netsvcs/lib/Logging_Strategy.cpp (init): When the application - program is started, none of the log output is sent to the - Client_Logging_Service. Further investigation shows that the - ACE_Log_Msg::open() method is responsible for connecting to the - client logger if the ACE_Log_Msg::LOGGER flag is set. However, - the connections never attempted because the ACE_Log_Msg::open() - method is called before the Logging_Strategy flags have been - parsed. This problem was fixed by rearranging the point at - which the ACE_LOG_MSG->open() method was called. Thanks to - Jerry De Master for contributing this. - - * netsvcs/lib/Client_Logging_Handler.cpp (send), - netsvcs/lib/Log_Message_Receiver.cpp (log_output): - All log message output in ACE is done through one of the - ACE_Log_Record::print() methods. Each of the overloaded methods - has a argument as the second argument. However, all - uses of the ACE_Log_Record::print() method in - Log_Message_Receiver.cpp and Client_Logging_Handler.cpp pass - zero for the flags argument. To fix this, simply pass - ACE_Log_Msg::instance()->flags() instead of 0. Thanks to Jerry - De Master for contributing this. - - * ace/Log_Record.cpp (format_msg): Added code for the new - ACE_Log_Record::format_msg() method that adds the date/time - stamp to the ACE_Log_Msg::VERBOSE_LITE output. Thanks to Jerry - De Master for contributing this. - - * netsvcs/lib/Logging_Strategy.cpp (init): Make sure the - ACE_Log_Msg::VERBOSE_LITE flag is OR'd into the clr_flags() - call. Thanks to Jerry De Master for - reporting this. - - * netsvcs/lib/Logging_Strategy.cpp (tokenize): Make sure that - the ACE_Log_Msg::VERBOSE_LITE flag is correctly parsed. Thanks - to Jerry De Master for reporting this. - - * ace/Memory_Pool.h: Added a way to set the segment_size in - ACE_Shared_Memory_Pool_Options and ACE_Shared_Memory_Pool. - Thanks to Serge Kolgan for this fix. [This - feature was actually added a couple of beta releases ago, but - somehow the ChangeLog entry got lost.] - -Fri Jul 16 16:41:22 1999 Ossama Othman - - * ace/Stats.cpp (print_summary): - - Fixed format specifier that was expecting an integer argument. - It needed an additional percent specifier. - -Fri Jul 16 09:20:42 1999 Arturo Montes - - * ace/OS.i: Patch the dl* family to keep ACE - compatible in SCO OpenServer 5.0.0, 5.0.2, 5.0.4 with 5.0.5 - - * ace/config-sco-5.0.0.h: Bring OpenServer up to date. - - * include/makeinclude/platform_sco5.0.0-fsu-pthread.GNU: - Use gcc-2.95. - -Fri Jul 16 11:50:24 1999 Nanbor Wang - - * ace/Log_Msg.cpp (log): - * tests/Basic_Types_Test.cpp (main): Reverted my previous - change. It was not a safe assumption. - -Fri Jul 16 02:28:10 1999 Nanbor Wang - - * ace/Log_Msg.cpp (log): Changed (*va_arg (argp,PTF))(), which - extracts a function pointer from va_list and makes a call using - the pointer pointer to ACE_reinterpret_cast (PTF, va_arg (argp, - long))(). This assumes the sizeof (long) is exactly equal to - the size of a function pointer. - - * tests/Basic_Types_Test.cpp (main): Narrow down the check to - ensure sizeof(long) == sizeof (a function pointer) (which is - true for all the platforms that ACE runs on.) - -Fri Jul 16 00:07:23 1999 Irfan Pyarali - - * tests/Cached_Accept_Conn_Test.cpp (test_connection_management): - Changed the test to allow for both one listen endpoint or - multiple listen endpoints. - -Thu Jul 15 22:42:36 1999 Nanbor Wang - - * ace/Message_Queue.h: (ACE_MESSAGE_QUEUE_DEFAULT_TYPE): - * ace/Future_Set.{h,cpp} (ACE_Future_Set): Typedef'ed the - ACE_Message_Queue to ACE_MESSAGE_QUEUE_DEFAULT_TYPE and use the - typedef'ed name in ACE_Future_Set's contstructor to get around a - bug in vxworks' g++ compiler. - -Thu Jul 15 22:14:18 1999 Irfan Pyarali - - * ace/Cached_Connect_Strategy_T.cpp - * ace/Cached_Connect_Strategy_T.h - * ace/Strategies_T.cpp - * ace/Strategies_T.h - - Changed find()'s signature to help g++. - - * tests/Cached_Accept_Conn_Test.cpp - * tests/Conn_Test.cpp - - Added template instantiations. - -Thu Jul 15 21:32:26 1999 David L. Levine - - * bin/create_ace_build: removed # -*- perl -*- on first - line so that t/csh users don't trip over it. Thanks - to Irfan for reporting this. - -Thu Jul 15 20:23:39 1999 Irfan Pyarali - - * tests/Cached_Conn_Test.cpp (test_connection_management): Changed - the test to allow for both one listen endpoint or multiple - listen endpoints. - - * ace/Cached_Connect_Strategy_T.cpp: - * ace/Strategies_T.cpp - - - find: Since the comparison of - REFCOUNTED_HASH_RECYCLABLE_ADDRESS doesn't work very well when - trying to find an idle connection (because there are many idle - states), we now use the new backet iterator to find a idle - connection. - - - check_hint_i: Explicitly checks for idleness; previously it - was simple checking !closed. - - * ace/Strategies.h (ACE_Recyclable): Changed ACE_Recyclable::State - to ACE_Recyclable_State. - - * ace/Strategies_T.h (ACE_Refcounted_Hash_Recyclable): - - - Added operator!=(ACE_Refcounted_Hash_Recyclable) - - Removed operator==(T) - - Added T &subject() - - Change operator==(ACE_Refcounted_Hash_Recyclable) to check - for equality in state and subject. - - * ace/Caching_Utility_T.cpp (minimum): Entries marked - ACE_RECYCLABLE_PURGABLE_BUT_NOT_IDLE should also be considered - for purging. - - * ace/Cleanup_Strategies_T.cpp (cleanup): The hash map of the - connection cache may contain duplicates. Therefore, we are not - exactly sure which map entry will be removed when calling - unbind(). Therefore, we use the other unbind() which gives us - back the value of the entry that was removed. This way will - close the correct handler. - - * ace/Svc_Handler.cpp (state): Added a new method that allows the - user to explcitly set the state of the Svc_Handler. If the - Svc_Handler does not have a recycler, this method will have no - effect. - -Thu Jul 15 16:39:06 1999 Ossama Othman - - * Makefile: - * NEWS: - - The NEWS file is no longer a generated file so it was added to - the list of controlled files. - -Thu Jul 15 16:20:43 1999 Nanbor Wang - - * ace/Service_Manager.cpp (init): Check to see the acceptor handle - is ACE_INVALID_HANDLE before the actual initialization to - prevent this service from being initialized twice. - (fini): Must call remove_handler with - ACE_Event_Handler::DONT_CALL since the service manager won't be - around when the reactor is being destroyed. Thanks to Gheorghe - Aprotosoaie for reporting this. - -Thu Jul 15 16:26:28 1999 David L. Levine - - * ace/OS.cpp (spa): use ACE_NEEDS_HUGE_THREAD_STACKSIZE - instead of hard-coded value. - - * ace/config-vxworks5.x.h: added default - ACE_NEEDS_HUGE_THREAD_STACKSIZE of 64000. - -Thu Jul 15 16:08:48 1999 Nanbor Wang - - * ace/config-win32-common.h: Moved ACE_HAS_IP_MULTICAST down - *after* ACE_HAS_WINSOCK2 is defined. Thanks to Marina for - reporting this. - -Thu Jul 15 16:11:04 1999 David L. Levine - - * ace/Basic_Types.h (ACE_U_LongLong): removed user-defined - conversion to ptr_arith_t. Replaced with new macro, - ACE_LONGLONG_TO_PTR. - -Thu Jul 15 15:31:49 1999 Ossama Othman - - * ace/ACE.cpp (timestamp): - * ace/High_Res_Timer.cpp (print_ave): - * ace/Local_Tokens.cpp (open): - * ace/Log_Msg.cpp (log): - * ace/Log_Record.cpp (format_msg): - * ace/Naming_Context.cpp (parse_args): - * ace/OS.cpp (unique_name): - - Fixed warnings and generated by gcc 2.95; mostly due to format - specifier mismatches and inefficient conversion operator usage. - -Thu Jul 15 14:21:32 1999 David L. Levine - - * docs/ACE-guidelines.html: reverted to the original - perl magic that goes at the top of every script. The - fix that was supposed to work on HP/UX doesn't. See - Thu Jul 08 22:15:50 1999 David L. Levine - -Thu Jul 15 12:19:44 1999 David L. Levine - - * bin/make_release: added -u option, to allow updating the - version stamps from any directory. Also, added suppression - of cvs checkout warning about empty ("New") directories. - - * Makefile: added -u to make_release invocations. - -Thu Jul 15 11:39:44 1999 David L. Levine - - * ACE version 4.6.45 released. - -Thu Jul 15 11:26:43 1999 David L. Levine - - * Makefile: made NEWS a dependency of release. - -Thu Jul 15 10:05:40 1999 David L. Levine - - * docs/ACE-guidelines.html: removed reference to - ACE_OS::scanf (). No such thing. - -Thu Jul 15 10:01:31 1999 Steve Huston - - * ace/OS.h: TRANSMIT_FILE_BUFFERS are not defined on PharLap ETS - - it's a Microsoft-specific extension to Winsock 1.1. - - * ace/config-win32-common.h: ACE_HAS_IP_MULTICAST is only set for - Winsock 2. - - Thanks to David Hauck for these fixes. - -Thu Jul 15 09:28:32 1999 David L. Levine - - * include/makeinclude/platform_tru64_cxx.GNU: changed - 4.0f to 4.0F, because that's what sizer -v returns - on DU 4.0F. Thanks to Doug Anderson - for reporting this. - - * ace/config-tru64.h: only #define _LIBC_POLLUTION_H_ - with DU >= 5.0. Thanks to Doug Anderson - for reporting that it's not necessary on DU 4.0F. - -Thu Jul 15 09:15:11 1999 Steve Huston - - * ace/config-aix-4.x.h: Corrected template settings for IBM C/C++ - 3.6 compiler. It does not get ACE_HAS_STD_TEMPLATE_SPECIALIZATION. - - * include/makeinclude/platform_aix4_cset++.GNU: Delete the - testAIXCompilerVersion.cpp file after getting the compiler version. - -Thu Jul 15 07:33:30 1999 David L. Levine - - * ace/config-tru64.h,config-osf1.h,config-osf1-4.0.h, - include/makeinclude/platform_tru64_cxx.GNU,platform_osf1_cxx.GNU, - ACE-INSTALL.html: moved config-osf1.h to config-tru64.h, - and platform_osf1_cxx.GNU to platform_tru64_cxx.GNU. - Thanks to Doug Anderson for this suggestion. - -Wed Jul 14 22:23:10 1999 David L. Levine - - * ace/config-cray.h: replaced ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA - with ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION. The standard - "template class" explicit instantiations work with version - 3.2.0.1 of the compiler. Thanks to Doug Anderson - for reporting this. - - * ace/config-ghs-common.h: use - ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION with Green Hills 1.8.9 - and later. Thanks to Carlos for suggesting that we give it - whirl. It worked :-) - -Wed Jul 14 22:03:08 1999 David L. Levine - - * ace/config-osf1-4.0.h: enable pragma message disable declbutnotref - with Digital Unix 4.0f, as well as 5.0. Thanks to - Doug Anderson for reporting that - it's necessary. - - * ACE-INSTALL.html: updated config/platform info for - Digital UNIX 4.0f (and 5.0). - - [Bug 65] - -Wed Jul 14 19:44:21 1999 Steve Huston - - * ace/Thread_Manager.cpp (spawn_i): Defer acquiring the thread - descriptor's lock until just before attempting to start the thread - to avoid places where the thread descriptor could be destroyed - while holding the lock (doing that is an undefined operation in - pthreads, and has particularly bad results on HP-UX 11). If the - thread creation does fail, release the lock before returning - the error indication (taking care to guard errno). Removed an - unreachable block of code which put the thread descriptor on the - wrong list anyway. - Removed the #if 1, #else, #endif around the auto_ptr for - new_thr_desc - if it's still working this close the ACE 5 release, - it wins. Besides, the use of the auto_ptr was ingrained in the - rest of the function, without the #if checks. - -Wed Jul 14 19:03:57 1999 David L. Levine - - * etc/purify.solaris2: added another UMR suppression for - __sigprocmask in the Solaris 2.6 threads library. Thanks - to Andy for reporting this. - -Wed Jul 14 16:30:48 1999 Irfan Pyarali - - * ace/Hash_Map_Manager_T.h (class ACE_Hash_Map_Bucket_Iterator): - Added a new class that allows the iteration over the entries of - a of a particular bucket in a hash map. - - * tests/Hash_Map_Bucket_Iterator_Test.cpp: A test for the new - ACE_Hash_Map_Bucket_Iterator class. - -Wed Jul 14 16:37:33 1999 Ossama Othman - - * Makefile: - - Added Makefile.am and NEWS to the list of controlled files. The - file `NEWS' will get generated when a release is made. - - * TODO: - * acconfig.h: - * configure.in: - * configure: - - Minor ACE Configuration Project related updates and fixes. - -Wed Jul 14 13:38:12 1999 Steve Huston - - * tests/Cached_Accept_Conn_Test.cpp: Moved defs of Client_Svc_Handler - and Server_Svc_Handler classes to new file, Cached_Accept_Conn_Test.h - to make AIX xlC happy. - - * tests/Cached_Conn_Test.cpp: Moved definition of Svc_Handler class - new file, Cached_Conn_Test.h to make AIX xlC happy. - - * tests/Cached_Accept_Conn_Test.cpp, Cached_Conn_Test.cpp: Don't - even try to build these on AIX C Set++ 3.1. It can't hack the - auto template instantiation - overwrites a template generator - file and tosses its cookies. ACE is still the best C++ compiler - test on the planet. - -Wed Jul 14 16:24:38 1999 Carlos O'Ryan - - * ace/CDR_Stream.h: - * ace/CDR_Stream.cpp: - Added new method to efficiently steal the contents of a CDR - stream and store them in another. - -Wed Jul 14 12:05:13 1999 David L. Levine - - * include/makeinclude/rules.local.GNU (LN_S): on WIN32 - hosts, use cp -p instead of ln -s, because symbolic - links aren't supported. - -Wed Jul 14 11:22:31 1999 David L. Levine - - * include/makeinclude/platform_vxworks5.x_g++.GNU, - ACE_INSTALL.html: with egcs (Tornado II) and without - exception handling, add -Wno-uninitialized to CCFLAGS. - The version of egcs that is provided with Tornado II - produces some spurious warnings about uninitialized - variables (including "this" :-). This was a problem - in older versions of egcs, but has since been fixed. - To avoid the warning, we always disable the warning - with VxWorks' egcs. - -Wed Jul 14 11:20:31 1999 Steve Huston - - * ace/config-aix-4.x.h: Add ACE_LACKS_SETSCHED for pre-4.3 AIX. - -Wed Jul 14 11:15:24 1999 David L. Levine - - * examples/Shared_Malloc/Malloc.cpp: only explicitly - instantiate ACE_Read_Guard and - ACE_Write_Guard ifndef ACE_HAS_THREADS. - With threads, they're explicitly instantiated in - ace/Synch.cpp. - -Wed Jul 14 10:58:30 1999 Carlos O'Ryan - - * ace/CDR_Stream.h: - * ace/CDR_Stream.cpp: - Clarified the relationship between this implementation and the - original SunSoft version. - -Wed Jul 14 10:47:45 1999 David L. Levine - - * include/makeinclude/platform_qnx_neutrino.GNU: - added ACE_HAS_GNUG_PRE_2_8 := 0, so that exception - handling will be disabled by default. - -Wed Jul 14 10:34:37 1999 David L. Levine - - * examples/IPC_SAP/SOCK_SAP/FD-unclient.cpp: fixed typo, - ACE_LACKS_UNIX_DOMAIN_SOCKETS instead of - ACE_HAS_UNIX_DOMAIN_SOCKETS. - -Wed Jul 14 10:22:29 1999 David L. Levine - - * ace/Singleton.*: added ACE_Unmanaged_Singleton and - ACE_Unmanaged_TSS_Singleton template class. They're - identical to ACE_Singleton and ACE_TSS_Singleton, - respectively, except that they don't register for - cleanup with the ACE_Object_Manager. Therefore, - the application is responsible for explicitly destroying - the instance after it is no longer needed (if it wants to - avoid memory leaks, at least). The close () static member - function must be used to explicitly destroy the Singleton. - Thanks to Valery Arkhangorodsky - for suggesting this and providing the code. - -Wed Jul 14 10:01:47 1999 David L. Levine - - * ace/OS.h (ACE_{,U_}ONE_SECOND_IN*): made the trailing - L or U upper case, for readability. Thanks to Chris - for noticing this. - -Wed Jul 14 09:40:37 1999 David L. Levine - - * include/makeinclude/wrapper_macros.GNU: when setting - ACE_HAS_GNUG_PRE_2_8, if not g++: don't override - the value to null if it was non-null. Also, clarified - use of ACE_HAS_GNUG_PRE_2_8: 1 for g++ < 2.8.0, - 0 for g++ >= 2.8.0, undefined for non-g++. - -Wed Jul 14 09:29:57 1999 David L. Levine - - * tests/Makefile (realclean): remove log/compilations.log*. - -Tue Jul 13 22:25:18 1999 Carlos O'Ryan - - * include/makeinclude/wrapper_macros.GNU: - Disable the "unitialized" warnings with EGCS+exceptions, it - gives too many bogus warnings to take care of them. - -Tue Jul 13 22:16:17 1999 Carlos O'Ryan - - * bin/ACEutils.pm: - Wait for non empty files, sometimes the process creates the - files but does not have enough time to fill its contents. - -Tue Jul 13 21:32:44 1999 Ossama Othman - - * acconfig.h: - * ltconfig: - * ltmain.sh: - * ace/Makefile.am: - * tests/Makefile.am: - - ACE Configuration Project updates. Synchronized with current - version of ACE in CVS repository. - -Tue Jul 13 15:22:51 1999 David L. Levine - - * include/makeinclude/platform_vxworks5.x_g++.GNU: - set ACE_HAS_GNUG_PRE_2_8 to 0 with egcs (Tornado II). - -Tue Jul 13 15:15:43 1999 Steve Huston - - * ace/ace-dll.icc, ace-lib.icc: Corrected source file set; now builds - (still with some warnings) on AIX, Visual Age C++ 4. - -Tue Jul 13 15:11:28 1999 Nanbor Wang - - * bin/run_all_win32.pl: Fixed program output redirection problem. - Unfortunately, the fix requires one to have either 'sh' or '4nt' - to redirect output from another perl script correctly. - -Tue Jul 13 15:04:35 1999 David L. Levine - - * include/makeinclude/platform_qnx_neutrino.GNU: - removed full paths from commands, because they're - prefixed with i386-nto-. - - * ace/config-qnx-neutrino.h: updated to build with egcs. - -Tue Jul 13 15:03:01 1999 David L. Levine - - * ace/Pipe.cpp (open): moved declaration of local variable - "one" inside the ACE_LACKS_TCP_NODELAY #ifndef block. - -Tue Jul 13 14:57:56 1999 David L. Levine - - * ace/SV_Semaphore_Simple.{h,cpp} (init,open,name_2_key): - added static cast of ACE_INVALID_SEM_KEY to key_t. key_t - is unsigned on QNX Neutrino, but we want to keep - ACE_INVALID_SEM_KEY as -1. - -Tue Jul 13 11:57:53 1999 Nanbor Wang - - * ace/config-win32.h: Changed CApplication to CWinApp. Thanks to - John Morey for pointing this out. - -Tue Jul 13 11:13:52 1999 Steve Huston - - * ACE_INSTALL.html: Added some info for building on AIX with - Visual Age C++. - - * ace/config-aix-4.3.x.h: New file - these version-specific configs - are particularly useful with Visual Age C++, which has its own - funky make system that doesn't use the platform_macros.GNU files, - and so doesn't pick up the ACE_AIX_MAJOR/MINOR_VERS settings which - are used in config-aix-4.x.h. - - * ace/config-aix-4.x.h: Corrected template settings for Visual Age C++ - and added ACE_HAS_TYPENAME for VAC++ also. - -Tue Jul 13 10:40:31 1999 Irfan Pyarali - - * ace/Cached_Connect_Strategy_T.cpp (purge_connections): There is - no need to set the purge percentage again. - -Tue Jul 13 10:39:57 1999 Matthew J Braun - - * ace/Containers_T.h,i: Altered private member list_ of - DLList_Iterator to be a pointer rather than a reference. This - allows the reset method to work because it was overwriting the - contents of list_ rather than iterating over a different list - -Tue Jul 13 09:14:31 1999 Steve Huston - - * ace/Cached_Connect_Strategy_T.cpp (dtor): Added ACE_TYPENAME - to 'iter' declaration since its type depends on template parameters. - -Tue Jul 13 09:11:24 1999 David L. Levine - - * include/makeinclude/platform_vxworks5.x_ghs.GNU: - moved LIBS setting for Green Hills 1.8.9 from - x86-only to all targets. Thanks to Dale Wood - for confirming that this - is necessary for PowerPC targets. - -Tue Jul 13 08:18:56 1999 David L. Levine - - * ace/config-osf1.h,config-osf1-4.0.h, - include/makeinclude/platform_osf1_cxx.GNU: - added another significant figure to the version identifer, - e.g., 0x40F and 0x500. [Bug 65] - -Tue Jul 13 06:45:53 1999 Steve Huston - - * examples/Shared_Malloc/test_position_independent_malloc.cpp: Moved - definition of Dummy_Data to test_position_independent_malloc.h, a - new file, to satisfy AIX IBM C++ template instantiation. - - * include/makeinclude/platform_aix4_cset++.GNU: Turn on/off warnings - based on compiler version, not OS version. Thanks to Craig - Rodrigues for sending the code in! - - * THANKS: Added Craig Rodrigues to the hall of fame. - - * ace/config-aix-4.1.x.h, config-aix-4.2.x.h: Added setting for - ACE_AIX_MAJOR_VERS and ACE_AIX_MINOR_VERS if they weren't set - already. Eases backwards compatibility for those who don't use - the ACE build macros (horrors! :-). Thanks to Jeff Donner - for this suggestion. - -Mon Jul 12 18:24:34 1999 Kirthika Parameswaran - - * tests/Cached_Accept_Conn_Test.cpp: - This tests explicit purging from the server's point of view. - When the acceptor in either its accept_svc_handler () or open () - runs out of descriptors, purging of unused svc_handlers from the - connecton cache is requested. - - * tests/Cached_Conn_Test.cpp: - Defined ACE_HAS_BROKEN_EXTENDED_TEMPLATES for the - Caching_Strategy_Adapter. If this condition is true, then only - Least Recently Used Caching Strategy is available. This was - necessary for compilers which dont accept long template lists, - for example GNUC version < 8.0. Total credit for this hack - to get through the old GNUC compiler goes to Irfan - of the DOC group. - - * tests/Makefile: - Added Cached_Accept_Conn_Test.cpp. - - * tests/Makefile: - * tests/run_tests.sh: - * tests/run_pharlap_tests.bat: - * tests/run_tests.bat: - * tests/run_tests.psosim: - * tests/run_tests.vxworks: - Added Cached_Conn_Test, Map_Manager_Test and - Cache_Map_Manager_Test to the above. - -Mon Jul 12 17:31:28 1999 Nanbor Wang - - * bin/run_all_win32.pl: Fixed the missing execution output problem - and simplified how the script gets invoked. See comments for - more details. - - * ace/config-win32.h: - * ace/Object_Manager.h: Updated some unclear comments regarding - the use and instantiation of non-static object manager. Thanks - to John Morey and David for pointing this out. - - * ace/ace_dll.dsp: Merged additional MFC configuration. Thanks to - John Morey for submitting the patch. - -Mon Jul 12 15:27:37 1999 David L. Levine - - * ace/config-osf1.h,config-osf1-4.0.h, - include/makeinclude/platform_osf1_cxx.GNU, - ACE-INSTALL.html: added support for DU 4.0f. It needs the - same #defines that we use on DU 5.0. [Bug 65] - -Mon Jul 12 14:41:14 1999 David L. Levine - - * ace/config-win32.h,Object_Manager.h: cleaned up comments - about the non-static ACE_Object_Manager. Thanks to - John Morey for reporting this. - -Mon Jul 12 13:54:34 1999 Kirthika Parameswaran - - * ace/Cache_Map_Manager_T.{h,i,cpp}: - Defined ACE_T1 and ACE_T2 which contain the template parameter - list and added ACE_HAS_BROKEN_EXTENDED_TEMPLATES macro where - needed. This takes care of the template list for compilers which - cant accept a long template list, for example: GCC 2.7.2. - Also changed the purge() to now call the for - purging entries form the cache. - - * ace/Hash_Cache_Map_Manager_T.h: - Added ACE_HAS_BROKEN_EXTENDED_TEMPLATES to complement the - Cache_Map_Manager class changes. - - * ace/Cached_Connect_Strategy_T.cpp: - Changed dtor to take care of the - ACE_HAS_BROKEN_EXTENDED_TEMPLATES definition. - - * ace/Cached_Connect_Strategy_T.h: - Removed CONNECTION_CACHE_ITERATOR typedef. - - * ace/Caching_Strategies_T.{h,i,cpp}: - Changed template parameter list and removed dependency on the - CONTAINER. Removed clear_cache() method. - - * ace/Caching_Utility_T.{h,i,cpp}: - Added default cleanup strategies to every kind of - caching_utiltity. ACE_Recyclable_Hanlder_Caching_Utility no - longer derives form ACE_Pair_Caching_Utility. - - * ace/Cleanup_Strategies_T.{h,i,cpp}: - Changed ACE_Svc_Cleanup_Strategy to - ACE_Recyclable_Handler_Cleanup_Strategy. - - * tests/Cache_Map_Manager_Test.cpp: - * tests/Map_Manager_Test.cpp: - Made changes to template instantiations. - - * tests/Cached_Conn_Test.cpp: - Added out_of_sockets_handler() which will do the purging. - Added a check for ENOBUFS which arose on NT and ENOENT which - arose on Linux + Solaris. Defined - ACE_HAS_BROKEN_EXTENDED_TEMPLATES for GCC versions < GCC 2.8. - -Mon Jul 12 12:14:45 1999 David L. Levine - - * docs/ACE-development-process.html: added this page, as - a start towards a less chaotic development process. - -Mon Jul 12 10:05:31 1999 Steve Huston - - * ace/Event_Handler_T.i: Added ACE_TYPENAME on template-dependent types - in function signatures. Quiets HP-UX aC++. - - * ace/Based_Pointer_Repository.h: - * ace/Based_Pointer_T.h: Added #include "ace/OS.h" to pick up def. of - ACE_Export when instantiating templates with AIX IBM C++. - - * include/makeinclude/platform_hpux_aCC.GNU: Removed definition for - CPP_LOCATION - use aCC - cpp has too many problems, and a fix for - the pragma warnings was checked into TAO_IDL. - -Mon Jul 12 09:26:29 1999 David L. Levine - - * testsr/Makefile: don't build libDLL_Test.so if not building - shared libraries. This simplifies the build on static-libs - only platforms, and can be used by run_tests.sh, below. - [Bug 62] - - * tests/run_tests.sh: don't run DLL_Test if libDLL_Test.so - was not built. - -Mon Jul 12 07:48:04 1999 David L. Levine - - * docs/ACE-guidelines.html: updated guideline under CVS - section to match the other one about always testing - on egcs. - -Sun Jul 11 23:59:52 1999 nanbor - - * ACE version 4.6.44 released. - -Sat Jul 10 18:05:41 1999 Nanbor Wang - - * ace/config-kcc-common.h: Added ACE_NEW_THROWS_EXCEPTIONS. - Thanks to David for pointing this out. - -Sat Jul 10 16:22:00 1999 Chris Gill - - * ace/config-win32-common.h: wrapped ACE_HAS_TYPENAME_KEYWORD so it is - only set for MSVC++ 6.0 or higher. This is to work around a compiler - bug in MSVC++ 5.0 when trying to compile certain forms with the - typename keyword in a template method argument list. - -Sat Jul 10 13:16:50 1999 Douglas C. Schmidt - - * ace/Malloc: Changed the type of pointer used by ACE_Name_Node - from void * to char * so that we can integrate this cleanly with - ACE_Based_Pointer<>, which will fail if we use void since we - can't return from a "void" function! - - * tests/Thread_Pool_Test.cpp (open): Fixed another somewhat bogus - warning from EGCS related to initialization of loop variables. - - * tests/New_Fail_Test.cpp (main): Make sure to initialize pointers - so that EGCS doesn't complain. - - * tests/MT_Reactor_Timer_Test.cpp (main): Fixed a signed/unsigned - mismatch. - - * tests: Added appropriate header comments for all the *.h files. - - * tests/Cache_Map_Manager_Test.cpp: Capitlized the hash_key - class to be Hash_Key, which is standard ACE programming style. - - * ace/Service_Config.cpp: Added yet another set of - changes to open_i() so that the -d option is handled - appropriately. Thanks to Jonathan Reis - for this fix. - - * ace/SOCK_Acceptor.h: Clarified the parameters for - ACE_SOCK_Acceptor's constructor and open() methods. Thanks to - Ron MacKenzie for motivating this. - -Sat Jul 10 13:56:30 1999 Nanbor Wang - - * tests/MT_Reactor_Timer_Test.cpp (main): Fixed signed/unsigned - comparison. - -Sat Jul 10 08:01:36 1999 David L. Levine - - * docs/ACE-guidelines.html: THANKS instead of README. - -Fri Jul 9 20:54:30 1999 Ossama Othman - - * ace/UNIX_Addr.{h,i} (hash): - - Implemented a hash function for ACE_UNIX_Addr instead of relying - on the base class no-op hash function. Thanks to Irfan for - explaining the best way to do this. - -Fri Jul 9 20:39:47 1999 Kirthika Parameswaran - - * tests/Cached_Conn_Test.cpp: Added an Svc_Handler class which - helped in verifying the course of the program execution. - - * ace/Caching_Utility_T.cpp (minimum): Cleaned up code by removing - redundant else if statement. - - * tests/Cache_Map_Manager_Test.cpp: Resolved some template typos - which surfaced on compiling with VxWorks. - -Fri Jul 09 20:14:13 1999 Irfan Pyarali - - * tests/MT_Reactor_Timer_Test.cpp (main): Added fixes so that test - can work with WFMO_Reactor (WFMO_Reactor needs an extra - handle_events() to get started). - - * tests/Conn_Test.cpp (spawn_processes): Only printing reaping - message when result is not -1. - - * ace/Strategies_T.i (ACE_Refcounted_Hash_Recyclable::operator==): - The check should be for "and", not "or". - - * tests/Conn_Test.cpp: Since timed accept is implemented using - select(), and we use timed accepts with threads, we need a real - lock when using timed accepts even if the OS has thread-safe - accept. - - Also changed the default number of clients to 5. Hopefully, - this won't overrun the backlog on the listen socket. - - * ace/Svc_Handler.cpp (shutdown): Remove self from Reactor only - when we have a valid handle. Otherwise, we lose our current - errno, since the failed remove_handler will set the errno to - EINVAL. - -Fri Jul 9 14:02:52 1999 Steve Huston - - * ace/config-aix-4.x.h: Re-enabled ACE_LACKS_SETSCHED for AIX 4.3. - The OS defs are not aligned/matched correctly with what they mean - in this area, but will need to wait til after ACE 5.0 is done - before straightening it out. - - * ace/WFMO_Reactor.cpp (ACE_WFMO_Reactor_Handler_Repository::bind_i): - Set errno to EMFILE if the max number of handles is registered, - instead of leaving a stale errno for the user to figure out. - - * tests/MT_Reactor_Timer_Test.h (Dispatch_Count_Handler): Changed - type of timers_fired_ from int to size_t so it matches type of - ACE_MAX_TIMERS. - -Fri Jul 9 14:27:10 1999 Douglas C. Schmidt - - * ace/Service_Config.cpp (open_i): Be default, disable debugging - messages. Only reenable them if the -d option is given. Thanks - to Jerry De Master for reporting this. - - * ace/Based_Pointer_T: Factored out all but the operator-> into - a new class called ACE_Based_Pointer_Basic so that we can use - this for "basic types" like char *. Thanks to Irfan for - pointing this out. - - * ace/Based_Pointer_Repository.cpp (unbind): Fixed a - bug in the unbind() loop. Thanks to David Levine and DEC UNIX - C++ for noticing this! - - * ace/Reactor.i (schedule_wakeup): Fixed a misplaced assignment - of Event_Handler->reator (). Thanks to Carlos for reporting - this. - -Fri Jul 09 13:11:33 1999 Nanbor Wang - - * tests/Conn_Test.cpp (spawn_threads): ACE_OS::perror takes a - wchar_t string on CE. - - * tests/test_config.h (set_output): We should use non-unicode - version of ACE_OS::getenv to initialize test_dir on "regular" - UNICODE compilation. Thanks to Steve for reporting this. - - Added more WinCE/UNICODE fixes. - -Fri Jul 9 12:16:00 1999 Kirthika Parameswaran - - * ace/Caching_Utility_T.cpp (minimum): - Modified minimum () of ACE_Recyclable_Handler_Utility class so - that the minimum value is also an entry which is purgable. - - * tests/Cache_Map_Manager_Test.cpp: - SunC++4.0 compiler doesnt accept typedefs with templates and - having ::, for example: HASH_MAP::iterator. One has to typedef - HASH_MAP::iterator and use it to typedef something else. Fixed - this problem in the above test. - -Fri Jul 9 11:39:40 1999 Douglas C. Schmidt - - * ace/Dirent.i: Added a pair of checks to open() and close() - to avoid double deletes. Thanks to Tom Arbuckle - for pointing this out. - - * ace/Reactor.i: For schedule_timer() and schedule_wakeup(), - make sure that the Event_Handler is assigned "this" Reactor - upon successful completion of the operation. Thanks to - Dirk Broer for suggesting this. - -Fri Jul 9 11:10:23 1999 Steve Huston - - * include/makeinclude/platform_hpux_aCC.GNU: Re-suppress warning - 829 on 10.x because there's an offending system header file. - - * tests/test_config.h (ACE_Test_Output::set_output): Change test_dir - to be const because it's initialized with a string literal. - -Fri Jul 9 10:52:45 1999 Kirthika Parameswaran - - * ace/Caching_Utility_T.cpp (minimum): Checked the state of the - Refcounted_Hash_Address with ACE_Recyclable::IDLE_AND_PURGABLE. - -Fri Jul 09 10:49:40 1999 David L. Levine - - * tests/Message_Queue_Test.cpp (main): changed success - message from timed dequeue test to not contain "timedout", - because that trips run_tests.check. - -Fri Jul 09 10:25:42 1999 Irfan Pyarali - - * ace/Shared_Memory_MM.h (ACE_Shared_Memory_MM): Changed the - filename parameter from a non-const string to a const string. - Thanks to Ulf Jaehrig for pointing out this - problem. - -Fri Jul 09 03:31:34 1999 David L. Levine - - * ace/Basic_Types.i: added const to each of the static casts. - -Fri Jul 09 01:45:25 1999 Nanbor Wang - - * bin/auto_compile_win32.pl: A lot of projects changed names - recently and thus the file was not working properly. - -Thu Jul 8 23:15:06 1999 Alexander Babu Arulanthu - - * Merging the "ami_phase3" branch on to the main branch. Change - was done to the CDR_Stream{h,i} files to add the method - to the CDR class. Other than that, no change was - done to ACE. - -Thu Jul 08 22:15:50 1999 David L. Levine - - * docs/ACE-guidelines.html: changed the perl magic that - goes at the top of every perl script, to pick up perl - from the users path. This new version works on HP/UX. - Thanks to Carlos for divining it. - -Thu Jul 08 22:05:31 1999 David L. Levine - - * ace/config-linux-common.h: added #define of - ACE_DEFAULT_BASE_ADDR to 0x40000000 on __powerpc__ - only. - - * ace/config-linuxppcr5.h: removed. LinuxPPC can - now use config-linux-lxpthreads.h. - - * ACE-INSTALL.html: added LinuxPPC info. - - Thanks to Andreas Tobler for helping - to factor out the code from config-linuxppcr5.h. - -Thu Jul 8 21:57:17 1999 Carlos O'Ryan - - * ace/Malloc_T.h: - * ace/Malloc_T.cpp: - Changed the Cached_Allocator class to use a char* as the memory - source. - It was allocated as char* and deallocated as a char*, but casted - to T* to use placement new; this was actually unneeded and - actually an error: the memory does not become a T* until - placement new is invoked on it. [BUGID:40] - -Thu Jul 08 21:34:42 1999 David L. Levine - - * ace/config-lynxos.h: on PowerPC, set - ACE_NEEDS_HUGE_THREAD_STACKSIZE to 32000, instead of - its apparent default of 15000. On both x86 and ppc, - #define ACE_MAP_FIXED to 0 and ACE_DEFAULT_BASE_ADDR to - 0 to try to get the OS to always pick shared memory addresses. - - Thanks to Dan Butler for - suggesting the use of ACE_NEEDS_HUGE_THREAD_STACKSIZE here. - - * tests/Recursive_Mutex_Test.cpp (main): removed explicit - stack size setting, now that we're using - ACE_NEEDS_HUGE_THREAD_STACKSIZE on LynxOS/PPC. - -Thu Jul 08 18:47:23 1999 Kirthika Parameswaran - - * ace/Cached_Connect_Strategy_T.cpp: - Changed: - entry->ext_id_.state (ACE_Recyclable::IDLE); - to - entry->ext_id_.state (ACE_Recyclable::IDLE_AND_PURGABLE); - - * ace/Caching_Utility_T.{h,cpp}: - Added ACE_Recyclable_Handler_Caching_Utility which takes care - that the svc_handler to be purged is in the IDLE_AND_PURGABLE - state. - Made method minimum () virtual. - - * ace/Strategies.h: - Added IDLE_AND_PURGABLE and IDLE_BUT_NOT_PURGABLE states and - removed IDLE state from the enum. This change was necessary to - take care of AMI using the Mux Strategy. - - * ace/Strategies_T.cpp (cache_i): - Made entry state ACE_Recyclable::IDLE_AND_PURGABLE. - - * ace/Startegies_T.i (operator==): - Added checks for the ACE_Recyclable::IDLE_AND_PURGABLE and - ACE_Recyclable::IDLE_BUT_NOT_PURGABLE states. - - Thanks to Irfan of the DOC group for - helping with this. - -Thu Jul 08 18:47:23 1999 Irfan Pyarali - - * tests/Cache_Map_Manager_Test.cpp: Simplified code and output. - -Thu Jul 08 14:56:22 1999 David L. Levine - - * ace/Basic_Types.{h,i} (ACE_U_LongLong): added operators - that take ACE_UINT32 arguments corresponding to each of - the operators that take ACE_U_LongLong & arguments. This - solves some more overload resolution ambiguities. - - * ace/Stats.cpp: changed comparisons of ACE_U_LongLong with - ints to unsigned ints, to avoid overload resolution ambiguity. - -Thu Jul 08 14:29:42 1999 David L. Levine - - * ace/OS.i (gethrtime): cast ts.tv_nsec explicitly to - ACE_hrtime_t, instead of ACE_UINT32, to avoid overload - resolution ambiguity now that we have that ACE_U_LongLong - implicit conversion to ptr_arith_t. - -Thu Jul 8 13:50:14 1999 Steve Huston - - * ace/Reactor_Impl.h (dispatch_notifications): Changed ACE_Handle_Set - arg from const to non-const. Fix in ACE_Select_Reactor_Notify - requires the ability to change the handle set. - - * ace/WFMO_Reactor.{h cpp}: Corresponding removal of 'const' from - ACE_WFMO_Reactor_Notify::dispatch_notifications. Signature change - only - the function is a no-op in this class. - - * ace/Select_Reactor_Base.{h cpp}: In ACE_Select_Reactor_Notify, - dispatch_notifications(), remove the notify pipe's handle from the - dispatch handle set when handling a notification. Else it remained - set and dispatchng I/O handlers came back and ran through it - again, which artificially increased the count of dispatched - handlers, and left some input unhandled when it was ready. - - * tests/MT_Reactor_Timer_Test.cpp: Added some verification checks to - be sure that timer, notify, and input events all are handled at the - right time. - -Thu Jul 08 12:35:23 1999 Nanbor Wang - - * tests/test_config.h: Reorganized WinCE's macros and fix some - minor unicode problems. - -Thu Jul 8 11:33:50 1999 Douglas C. Schmidt - - * Rebuilt the ACE+TAO.tar.gz file. For some reason, there - was a ^M at the end of each line! Thanks to Bruce Edge - for reporting this. - - * ace/Based_Pointer_Repository.cpp (unbind): Rearranged the - iterator code a bit to see if that'll make DEC C++ happy. - - * ace/OS.h: Moved the ACE_MALLOC_ALIGN macro into OS.h. - - * config-aix-4.x.h, - config-lynxos.h, - config-psos-diab-mips.h, - config-psos-diab-ppc.h, - config-psos-diab.h, - config-psos-tm.h, - config-psosim-g++.h, - config-sunos5.5.h: - Added the ACE_MALLOC_ALIGN macro back since it's used in - an ACE test program. - - * ace/Malloc.cpp: Removed the trailing ';' on the #pragma - instantiate. Thanks to David Levine for reporting this. - -Thu Jul 08 11:35:53 1999 David L. Levine - - * ACE-INSTALL.html: added note about IP multicast support - with Tornado II/VxWorks 5.4. It's not enabled by default - in ACE. - -Thu Jul 8 11:31:13 1999 Steve Huston - - * tests/Message_Queue_Test.cpp: Added a test to see the correct errno - is set for a timed-out dequeue operation. - -Thu Jul 08 11:30:43 1999 David L. Levine - - * ACE-INSTALL.html: added note about the uninitialized - variable warnings from (the old) egcs that is - distributed with Wind River's Tornado II. - -Thu Jul 08 10:40:02 1999 David L. Levine - - * ace/config-linuxppcr5.h: use config-linux-lxpthreads.h - because thread support works. - - * ace/config-linuxppcr5.h, config-linux-common.h: use an - ACE_DEFAULT_BASE_ADDR of 0x40000000, because that allows - Naming_Test to work. - - With these two changes, all ACE tests pass on LinuxPPC. - Thanks to Andreas Tobler for the - fixes and testing. - -Thu Jul 08 10:25:55 1999 David L. Levine - - * ace/OS.h,Basic_Types.h: added ACE_U_LongLong conversion operator - to ptr_arith_t. Moved ptr_arith_t typedef from OS.h to - Basic_Types.h, so that it can be used by ACE_U_LongLong. - Thanks to Chris for helping to figure this out. - -Thu Jul 8 08:34:22 1999 Steve Huston - - * ace/Log_Msg.cpp (log): Don't special-case the %t handling on AIX - 4.3 - just 4.2 and earlier. - -Thu Jul 8 00:23:02 1999 Douglas C. Schmidt - - * ace/Malloc_T.cpp: Updated all the methods that check - cp_ptr_ to return immediately if it's 0. Thanks to Dieter for - suggesting this. - - * ace/Malloc.cpp (dump): Added a cast to trigger operator void - * for freep_ (which may be a smart pointer in some - configurations). - - * ace/Based_Pointer_Repository: Revised the implementation of - this class to use the "Cheshire-Cat" technique to hide the - implementation to avoid circular #include dependencies. - - * ace/Token.h (ACE_Token): Clarified that the timeouts are in - "absolute" time, not relative time. Thanks to Everett Anderson - for reporting this. - - * ace/config-win32-borland.h: Only enable - ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION if we're running on - older versions of Borland. Thanks to Christopher Kohlhoff - for reporting this. - -Wed Jul 07 22:44:22 1999 David L. Levine - - * tests/Recursive_Mutex_Test.cpp (main): added comment - explaining why the stack size is now set. - - * tests/test_config.h: removed special ACE_MAX_PROCESSES - and ACE_MAX_THREADS values for LynxOS, because most - tests don't need them. - - * tests/Process_Mutex_Test.cpp: use only 4 processes - instead of ACE_MAX_PROCESSES, on LynxOS only. Otherwise, - the test's ACE_LOG_MSG->op_status assertion fails. - - * ACE-INSTALL.html: removed statements about some tests - failing on LynxOS/PPC. Just Naming_Test and - MM_Shared_Memory_Test fail now. - -Wed Jul 07 19:51:00 1999 Chris Gill - - * ace/config-ghs-common.h: removed use of native auto_ptrs, as they - implement an older specification which lacks the reset method. - -Wed Jul 7 17:17:10 1999 Ossama Othman - - * ace/ARGV.cpp (ACE_ARGV): - * ace/OS.cpp (ACE_OS_Recursive_Thread_Mutex_Guard): - * ace/Sched_Params.i (ACE_Sched_Priority_Iterator): - - Added some class members to the member initializer lists to fix - some "Effective C++" warnings from EGCS. - -Wed Jul 7 16:33:29 1999 Kirthika Parameswaran - - * tests/Cached_Conn_Test.cpp (main): Added default testing of LRU, - LFU, FIFO caching strategies. - - * tests/Cached_Conn_Test.cpp (parse_args): - * tests/Cache_Map_Manager_Test (parse_args): - Runtime selection of different caching strategies - (lru/lfu/fifo/null) made possible. - - * Caching_Strategies_T.{i,cpp}: - Removed typos and also definied the virtual destructor for - ACE_Caching_Strategy. - - * tests/Map_Manager_Test.cpp (test_cache_map_manager): - Added to the construction of - and objects to make - it in sync with the changes made below. - -Wed Jul 07 16:06:45 1999 David L. Levine - - * tests/Recursive_Mutex_Test.cpp: explicitly set the - stack size. This solves the problem on LynxOS/PPC, below, so - the 65-iteration workaround was removed. Thanks to Doug for - this suggestion. - -Wed Jul 7 13:27:53 1999 Douglas C. Schmidt - - * ace/config-win32-borland.h, - ace/config-win32.h: Added support for the ACE::major_versions(), etc. - for PC versions of ACE, as well as UNIX. Thanks to - Jeff Hellzen for suggesting this. - - * ace: Added a new Based_Pointer_T.i file that inlines the - small methods. - - * ace/Malloc[_T]: Cleaned up the code so that we can use the - ACE_Based_Pointer<> consistently when - ACE_HAS_POSITION_INDEPENDENT_MALLOC is enabled and disable. - - * ace/Malloc.h: By default, ACE_MALLOC_PADDING is set to 1 so that - we don't get "divide by zero" errors. However, it's only used - in the computation of the ACE_Malloc_Header if it's > 1. - - * config-aix-4.x.h, - config-lynxos.h, - config-psos-diab-mips.h, - config-psos-diab-ppc.h, - config-psos-diab.h, - config-psos-tm.h, - config-psosim-g++.h, - config-sunos5.5.h: - Removed the ACE_MALLOC_ALIGN macro since it should no longer - be necessary. - - * ace/Malloc.h: Changed the use of macro ACE_MALLOC_ALIGN to - ACE_MALLOC_PADDING, which is more descriptive. - - * Fixed a typo in the TAO-mail.html program where ace-* - should have been tao-*. Thanks to Pedro Alves Ferreira - for reporting this. - - * Fixed all vestiages of "BUG-REPORT-FORM" to say - "PROBLEM-REPORT-FORM." Thanks to Neil B. Cohen - for reporting this. - -Wed Jul 07 12:27:32 1999 David L. Levine - - * ace/config-lynxos.h: added ACE_LACKS_FORK for PowerPC - only. This cleans up most of the remaining test problems - on LynxOS/PPC. - -Wed Jul 07 11:26:06 1999 Nanbor Wang - - * ace/Malloc_T.cpp: Added ASYS_TEXT macros. - -Wed Jul 7 09:05:32 1999 Steve Huston - - * ace/Caching_Strategies_T.i (ACE_Caching_Strategy_Adapter<>::purge_ - percent): Don't return a value from a void function. - -Wed Jul 07 08:35:24 1999 Irfan Pyarali - - * examples/Threads/future1.cpp - * examples/Threads/future2.cpp - * tests/Future_Set_Test.cpp - * tests/Future_Test.cpp - - Fixed some template instantiations. - -Wed Jul 7 03:27:16 1999 Douglas C. Schmidt - - * examples/Shared_Malloc: Added a new file called - test_position_independent_malloc.cpp that exercises the new - "position-independent" features of the ACE_Malloc< class. - - * ace/Malloc_T.cpp: All the ACE_Malloc constructors were calling - open() without checking the results. Now, if failure occurs we - print a message. In addition, we weren't checking in - shared_malloc() to make sure that we'd been properly initialized - by the constructor. Now, if we aren't initialized correctly we - return 0. Thanks to Dietrich Quehl - for reporting these problems. - - * ace/Memory_Pool: Added a new feature to ACE_Shared_Memory_Pool - and ACE_Shared_Memory_Pool_Options that makes it possible to - tailor the size of System V shared memory segments without - breaking any existing ACE code. Thanks to Serge Kolgan - for contributing this enhancement. - - * ace/Makefile.bor (OBJFILES): Updated this file to include - the new Based_Pointer_Repository.obj entry. - - * ace/Makefile: Reran make depend. - - * ace/Makefile: Added the Based_Pointer_Repository.{h,cpp} and - Based_Pointer_T.{h,cpp} files to the Makefile. - - * ace/Malloc.h: Added the first support for the new "Based Pointer - Malloc" feature that's described below. - - * ace: Added the Based_Pointer_Repository.{h,cpp} and - Based_Pointer_T.{h,cpp} files to the release. These classes - make it possible to transparently use "pointers" in shared - memory without having to ensure that the base addresses of all - the pointers are mapped into separate processes at the same - absolute memory base address. Thanks to Dietrich Quehl - for contributing this software. - -Wed Jul 07 01:28:40 1999 Nanbor Wang - - * ace/ace_dll.dsp: - * ace/ace_lib.dsp: Added the Based_Pointer_Repository.{h,cpp} and - Based_Pointer_T.{h,cpp} files to the project files. - - * ace/Based_Pointer_Repository.cpp: Added define ACE_BUILD_DLL. - -Tue Jul 06 22:47:04 1999 David L. Levine - - * bin/check_build_logs: filter out Purify warning about - non-pic R_SPARC_*. - - * ace/config-linuxppcr5.h: commented out #define __USE_XOPEN - because it's not necessary with glibc 2.1.1. Thanks to - Andreas Tobler for reporting this. - - * ace/OS.i (thr_kill, thr_setprio, sema_destroy, sema_wait, chdir, - unlink, sema_post, thr_continue, thr_getprio, thr_suspend, - ioctl): on VxWorks only, removed ACE_ADAPT_RETVAL wrapper from - system call, because it returns OK/ERROR (except for ioctl, - which returns driver number/ERROR). Thanks to Elias Sreih - for reporting this. - - * tests/SOCK_Send_Recv_Test.cpp (server): added 5 second - sleep so that the code agrees with the comments :-) It now - passes on LynxOS. Thanks to Steve Huston for the fix. Also, - changed an exit () call to ACE_OS::exit (), and changed a few - C-style casts to ANSI-style casts. - -Tue Jul 6 19:20:16 1999 Steve Huston - - * ace/Cache_Map_Manager_T.h: Removed extra "ace/" from #pragma - implementation directive. - - * tests/Cache_Map_Manager_Test.cpp: Changed typedefs for KEY and - VALUE from size_t to ACE_UINT32 to they always pick up the - specializations for ACE_Hash, etc. On HP-UX and AIX, size_t is - not the same as ACE_UINT32, and this caused build errors. - - * tests/Conn_Test.cpp: Restrict range of the test on PharLap ETS, - else it runs out of resources with default configuration. - -Tue Jul 6 18:21:37 1999 Everett Anderson - - * ace/Token_Request_Reply.{h,i,cpp}: Added - ACE_TOKEN_REQUEST_HEADER_SIZE for the fixed-length portion of - ACE_Token_Request's Transfer struct, changing length - calculations accordingly. Added two bytes to the buffer to - accomodate '\0' values after the token name and client ID. - - * ace/Remote_Tokens.cpp: Changed the check for failure when - receiving a reply in request_reply. - -Tue Jul 6 18:21:36 1999 Douglas C. Schmidt - - * ace/Map_Manager.cpp: Made this file conform to the ACE programming - guidelines. - -Tue Jul 6 18:31:34 1999 Carlos O'Ryan - - * include/makeinclude/platform_irix6.x_sgic++.GNU: - Removed pesky warnings about functions to big to optimize - because it would be slow. - -Tue Jul 6 18:15:31 1999 Steve Huston - - * ACE_INSTALL.html: Added a further note re PharLap ETS builds. - - * ace/config-pharlap.h: Added ACE_TIMER_SKEW of 10ms. - - * tests/Atomic_Op_Test.dsp: - * tests/Barrier_Test.dsp: - * tests/Cache_Map_Manager_Test.dsp: - * tests/Future_Set_Test.dsp: - Changed PharLap ETS configurations to put intermediate files in - ETS_LIB\Debug (like all the others), not in ETS_DLL\Debug. - - * tests/test_config.h: Set ACE_MAX_CLIENTS to 4 for PharLap ETS. - - * tests/run_pharlap_tests.bat: Disabled some tests of unsupported - facilities. - - * tests/SOCK_Test.cpp: Replaced "localhost" with ACE_LOCALHOST. - -Tue Jul 6 17:54:52 1999 Kirthika Parameswaran member. - - * ace/Cache_Map_Manager_T.{h, cpp}: - * ace/Hash_Cache_Map_Manager_T.{h,cpp}: - Changed the signature of the constructor.This was needed to be - able to use the External Polymorphism pattern. - - * tests/Cache_Map_Manager_Test.cpp: - * tests/Cached_Conn_Test.cpp: - Made necessary changes to reflect the changes above. - Thanks to Irfan of the DOC group for helping with this. - -Tue Jul 6 17:34:52 1999 Steve Huston - - * ace/config-aix-4.x.h: Enabled ACE_HAS_PTHREADS_UNIX98_EXT and - removed ACE_LACKS_RWLOCK_T for AIX 4.3. Moved some other - ACE_LACKS settings to the pre-4.3 threads section to allow - taking advantage of more capability on AIX 4.3. - -Tue Jul 06 16:29:32 1999 Nanbor Wang - - * ace/OS.h: Moved the string conversion macros before including - OS.i because we also use them in the file. Thanks to Carlos for - reporting this. - - * OS.{h,i,cpp}: - * Parse_Node.cpp: Windows CE fixes. - -Tue Jul 06 15:56:19 1999 David L. Levine - - * ace/ACE.h,Object_Manager.{h,cpp},OS.{h,cpp} - (ACE_Object_Manager*::init () and fini ()): return 1 instead - of -1 after the first call, per program invocation. Thanks - to Jody Hagins for this suggestion. - -Tue Jul 6 15:04:49 1999 Douglas C. Schmidt - - * ace/OS.i (sigwait): Fixed a problem with macro-itis and GCC. The - following macro - - # if (__FreeBSD__ < 3) || defined (CHORUS) || defined (ACE_PSOS) - - was always evaluating to true, even when we're not on FreeBSD!. - The following macro works around this: - - # if (defined (__FreeBSD__) && (__FreeBSD__ < 3)) || - defined (CHORUS) || defined (ACE_PSOS) - - Thanks to Elias Sreih for - reporting this and Carlos for suggesting the workaround. - -Tue Jul 6 11:39:59 1999 Douglas C. Schmidt - - * ace/OS.i: Updated the comment for ACE_ADAPT_RETVAL to - clarify why it is needed. Thanks to Elias Sreih - for motivating this clarification. - -Tue Jul 6 10:42:02 1999 Nanbor Wang - - * tests/test_config.h (ACE_INIT_LOG): Fixed a typo in VxWorks' - definition of ACE_INIT_LOG. Thanks to David for reporting - this. - -Tue Jul 6 10:17:19 1999 Douglas C. Schmidt - - * include/makeinclude/ace_flags.bor: Removed an extraneous - "\orbsvcs". Thanks to Eugene Surovegin (surovegin@softlab.ru) - for reporting this. - -Tue Jul 06 10:17:12 1999 David L. Levine - - * bin/check_build_logs: use mhmail instead of mailx on Suns. - mailx loses the subject, when run from my cron job. Thanks - to Naga for reporting this. - -Mon Jul 5 20:45:21 1999 Steve Huston - - * ace/OS.(h i): Added code for support of pthread suspend/resume and - pthreads reader-writer locks. These features are enabled by setting - the ACE_HAS_PTHREADS_UNIX98_EXT and removing ACE_LACKS_RWLOCK_T. - - * ace/config-hpux11.h: Added ACE_HAS_PTHREADS_UNIX98_EXT and removed - ACE_LACKS_RWLOCK_T - this enables native reader/writer locks as well - as thread suspend and reusme. - - * ace/README: Added ACE_HAS_PTHREADS_UNIX98_EXT. - - * apps/JAWS/server/HTTP_Config.(h cpp): - * apps/JAWS/server/HTTP_Response.( h cpp): const-corrected char *. - -Mon Jul 5 16:39:50 1999 Douglas C. Schmidt - - * ACE-INSTALL.html: Updated the discussion to point out - our support for KAI C++ 3.3, Borland C++ Builder 4.0, and the - IBM VisualAge C++ compiler. - - * ace/Future.h: Moved the static methods until the bottom - of the ACE_Future_Rep class to workaround a bug with Borland's - C++ Builder. Thanks to Christopher Kohlhoff - for testing this fix. - - * ace/Timer_Heap_T.cpp (grow_heap): Removed an extra memory - allocation that snuck in whilst integrating the IBM VisualAge - C++ compiler patches. Thanks to David Levine for reporting - this. - - * Added new Borland Makefiles. Thanks to Christopher Kohlhoff - for these. - - * include/makeinclude: Added several new platform configuration - files for Borland C++ Builder. Thanks to Christopher Kohlhoff - for these. - -Mon Jul 5 13:08:36 1999 Kirthika Parameswaran - - * tests/Cache_Map_Manager_Test.cpp: Added ACE_UNUSED_ARG macros - for to ward off warnings. - -Mon Jul 05 13:00:19 1999 Irfan Pyarali - - * ace/Malloc.i (free): Fixed unused arg warning for . - - * examples/Threads/future1.cpp: - * examples/Threads/future2.cpp: - - Fixed template instantiations. - -Mon Jul 5 12:25:11 1999 Carlos O'Ryan - - * ace/OS.i (strspn): - This function cannot return -1 to indicate errors, the function - returns an unsigned integral type. - -Mon Jul 05 12:14:56 1999 Nanbor Wang - - * ace/OS.i: Wchat_t version of strenvdup should only be available - on Win32. Thanks to Bala, Carlos, and David for noticing this. - (strspn): Ditto to this function. - -Mon Jul 05 09:58:07 1999 David L. Levine - - * ACE-INSTALL.html: in example config.h for VxWorks on NT, - use "" style #includes instead of <>. <> should only be - used for system headers. - -Mon Jul 05 04:11:05 1999 Nanbor Wang - - * tests/version_tests/Future_Set_Test.dsp: - * tests/version_tests/version_tests.dsw: Added Future_Set_Test - into version tests workspace. - - * ace/ACE.cpp: - * ace/ACE.h: - * ace/DLL.cpp: - * ace/DLL.h: - * ace/Env_Value_T.h: - * ace/Env_Value_T.i: - * ace/FIFO.cpp: - * ace/FIFO.h: - * ace/FIFO.i: - * ace/FIFO_Recv.cpp: - * ace/FIFO_Recv.h: - * ace/FIFO_Recv_Msg.cpp: - * ace/FIFO_Recv_Msg.h: - * ace/FIFO_Send.cpp: - * ace/FIFO_Send.h: - * ace/FIFO_Send_Msg.cpp: - * ace/FIFO_Send_Msg.h: - * ace/FILE_Connector.i: - * ace/Filecache.cpp: - * ace/Get_Opt.cpp: - * ace/INET_Addr.cpp: - * ace/Local_Name_Space_T.cpp: - * ace/Log_Record.cpp: - * ace/Message_Queue_T.cpp: - * ace/Name_Proxy.cpp: - * ace/Naming_Context.cpp: - * ace/Naming_Context.h: - * ace/OS.cpp: - * ace/OS.h: - * ace/OS.i: - * ace/Parse_Node.cpp: - * ace/Parse_Node.h: - * ace/Proactor.cpp: - * ace/Process.cpp: - * ace/RB_Tree.cpp: - * ace/Registry_Name_Space.cpp: - * ace/Remote_Name_Space.cpp: - * ace/Remote_Name_Space.h: - * ace/Remote_Tokens.cpp: - * ace/Remote_Tokens.h: - * ace/Remote_Tokens.i: - * ace/SOCK_Dgram_Mcast.cpp: - * ace/SPIPE_Connector.cpp: - * ace/SV_Message_Queue.cpp: - * ace/SV_Semaphore_Simple.cpp: - * ace/SV_Shared_Memory.cpp: - * ace/Stats.cpp: - * ace/Stats.h: - * ace/Strategies_T.cpp: - * ace/Strategies_T.i: - * ace/Svc_Conf.h: - * ace/Svc_Conf.y: - * ace/Svc_Conf_y.cpp: - * ace/Token_Collection.cpp: - * ace/Token_Collection.h: - * ace/Token_Collection.i: - * ace/Token_Invariants.cpp: - * ace/Token_Invariants.h: - * ace/UPIPE_Acceptor.cpp: - * ace/UPIPE_Connector.cpp: - * ace/UPIPE_Connector.i: - * ace/WFMO_Reactor.cpp: - * ace/WIN32_Asynch_IO.cpp: - * ace/WIN32_Proactor.cpp: - * ace/config-win32-common.h: - * tests/CDR_Test.cpp: - * tests/Cache_Map_Manager_Test.cpp: - * tests/Collection_Test.cpp: - * tests/DLL_Test.cpp: - * tests/DLL_Test.h: - * tests/DLList_Test.cpp: - * tests/Dynamic_Priority_Test.cpp: - * tests/Env_Value_Test.cpp: - * tests/Handle_Set_Test.cpp: - * tests/High_Res_Timer_Test.cpp: - * tests/IOStream_Test.cpp: - * tests/MT_Reactor_Timer_Test.cpp: - * tests/Map_Manager_Test.cpp: - * tests/Map_Test.cpp: - * tests/Message_Queue_Test.cpp: - * tests/Naming_Test.cpp: - * tests/New_Fail_Test.cpp: - * tests/Pipe_Test.cpp: - * tests/Priority_Reactor_Test.cpp: - * tests/Process_Mutex_Test.cpp: - * tests/Process_Strategy_Test.cpp: - * tests/Process_Strategy_Test.h: - * tests/Reactor_Performance_Test.cpp: - * tests/SOCK_Connector_Test.cpp: - * tests/SPIPE_Test.cpp: - * tests/SV_Shared_Memory_Test.cpp: - * tests/Service_Config_Test.cpp: - * tests/Thread_Manager_Test.cpp: - * tests/Time_Service_Test.cpp: - * tests/Tokens_Test.cpp: - * tests/UPIPE_SAP_Test.cpp: - * tests/Upgradable_RW_Test.cpp: - * tests/test_config.h: Changes to make it possible to write pure - UNICODE programs on NT. Now it is possible to compile ACE on NT - with ACE_HAS_MOSTLY_UNICODE_APIS defined. Most tests passed - without trouble. However, Future_Set_Test is not yet included - in the version_tests and Dynamic_Priority_Test also - failed. Thanks to Valery Arkhangorodsky - for providing a preliminary patch for - ACE to motivate the change. - -Sun Jul 04 18:57:13 1999 David L. Levine - - * ACE-INSTALL.html: when building tao_idl on NT to be - used for generating code for VxWorks, build without - ACE_HAS_EXCEPTIONS. Otherwise, TAO_IDLFLAGS must - be overridden to be null instead of -Ge 1. Thanks to - Carlos for this suggestion. - -Sun Jul 4 17:06:17 1999 Douglas C. Schmidt - - * tests/Notify_Performance_Test.cpp, - tests/Message_Block_Test.cpp, - tests/Priority_Task_Test.cpp, - tests/Thread_Pool_Reactor_Test.cpp: Fixed a couple of - warnings related to initializing char *'s with const char *'s. - Thanks to SunC++ 5.0 for reporting this. - -Sun Jul 04 16:07:33 1999 David L. Levine - - * ACE-INSTALL.html: updated instructions for building on - NT host for VxWorks. - -Sun Jul 04 15:41:34 1999 David L. Levine - - * many Makefiles: call ace_components via sh, instead of - directly in the make $(shell) command. This allows it - to work on platforms that don't have /bin/sh, such as NT. - -Sun Jul 4 12:34:24 1999 Douglas C. Schmidt - - * ace/Timer_Hash_T.cpp (cancel): Reversed a comparison from - <= to > to make the ACE_ASSERT replacement work properly. - Thanks to David Levine for reporting this. - - * tests/Thread_Pool_Test.cpp (open): We need to define 'int i' - outside of the for loop to keep EGCS from complaining for some - reason. - - * ace/Timer_Heap_T.cpp: Reformatted this code to conform to - the ACE programming guidelines. - - * ace/Timer_Heap_T.cpp (schedule): Replaced an ad hoc check for - allocator failure with the ACE_ALLOCATOR_RETURN macro. - - * ace/RB_Tree.cpp: Modified Carlo's change so that we add an - extra set of parens in a special way, rather than using a new - macro. This is more consistent with how we deal with this - problem in other parts of ACE. - - * ace/RB_Tree.cpp (insert_i): Removed an unreachable statement. - Thanks to David Levine for reporting this. - -Sat Jul 3 22:12:07 1999 Carlos O'Ryan - - * ace/Object_Manager.cpp (get_singleton_lock): - Fixed one of the ACE_Thread_Mutex version of this method. One of - the braces after an if() statement got "accidentaly" removed; - binding the "else" part of the statement to the previous if() - instead. - -Sat Jul 3 18:54:18 1999 Carlos O'Ryan - - * ace/RB_Tree.cpp: - If the "constructor" parameter in an ACE_NEW_RETURN macro has a - comma in it (such as Foo(x,y,z)) we need to replace it with a - macro, so it is seen as a single token by the pre-processor. - Otherwise it (the pre-processor) gets confused and uses - the comma as separator. Thanks to David for detecting this one. - -Sat Jul 3 15:57:40 1999 Carlos O'Ryan - - * ace/SOCK_Dgram_Mcast.cpp: - Fixed error code return, it should be -1 not ACE_INVALID_HANDLE - - * ace/SOCK_Connector.cpp: - Fixed stray comment characters. - -Sat Jul 03 14:04:10 1999 David L. Levine - - * ace/Makefile: call ace_components via sh, and use single - instead of double quotes, so that it works with Cygwin - on NT host. - -Sat Jul 3 12:05:46 1999 Douglas C. Schmidt - - * ace/SOCK_Dgram_Mcast: Modified the subscribe() method to return - 0 or -1 rather than ACE_HANDLE. Thanks to Vidya Narayanan - for suggesting this. - - * ace/SOCK_Acceptor, - ace/SOCK_Connector, - ace/SOCK: Added the ACE_Protocol_Info *, ACE_SOCK_GROUP, and - flags parameters to these classes so we can pass down the GQoS - information. Thanks to Vidya Narayanan - for suggesting this. - - * ace/SOCK.h: Added the reuse_addr parameter to open() and the - ACE_SOCK constructor. - - * tests/Future_Set_Test.cpp (main): We were casting a - const ASYS_TCHAR * to u_int, yikes! - - * ace/RB_Tree.cpp: Cleaned up the code so it's conformant with the - ACE programming style, particularly for dynamic memory - allocation (which wasn't using ACE_NEW). - - * ace/ACE.cpp (get_ip_interfaces): Cleaned up the code so it conforms - to the ACE programming guidelines. - - * ace/Timer_Hash_T.cpp: Fixed a number mistakes where the return - value of new wasn't being checked. - - * ace/Timer_Heap_T.cpp, - ace/Timer_Wheel_T.cpp: Removed the apparently extraneous parens - used in the ACE_NEW* macros in order to keep EGCS 2.95 happy. - Thanks to Jody Hagins and Arturo Montes - for reporting this. BTW, if this - causes problems on any compilers please let me know. - - * ace: Reformatted all the ACE_NEW* macros so they conform to - ACE programming style. - - * ace/Priority_Reactor.cpp: Cleaned up the code to conform to - the ACE programming style. - - * ace/OS.cpp (tss_base): Cleaned up a loop a bit so it conforms - to the ACE programming style. - -Sat Jul 3 11:09:51 1999 Alexander Babu Arulanthu - - * ace/WIN32_Asynch_IO.cpp - * ace/WIN32_Proactor.cpp - Addressed Doug's @@ Alex comments. It was simply making some - debug statements conditional upon ACE::debug () flag. - -Fri Jul 2 19:50:29 1999 Douglas C. Schmidt - - * ace/OS.h: There was a typo in the ACE_WIN32CALL_RETURN() macro - for Borland C++. Thanks to Jody Hagins for - reporting this. - - * ace/config-win32-borland.h: Clarified the fact that this file - shouldn't be #included directly. Thanks to Thaddeus Olczyk - for motivating this. - -Fri Jul 02 22:22:12 1999 Steve Huston - - * ace/config-hpux-11.x-hpc++.h: Added - ACE_HAS_STD_TEMPLATE_METHOD_SPECIALIZATION for aC++. - - * include/makeinclude/platform_hpux_aCC.GNU: Removed the suppression - of warning 829 (auto convert of string literal to char * deprecated). - With the exception of some JAWS code, all of ACE has been rid of the - offenders. - - * websvcs/tests/Makefile: Replace VLDLIBS with correct LDLIBS. Now - works on AIX. - -Fri Jul 2 19:37:16 1999 Carlos O'Ryan - - * tests/Future_Test.cpp: - The timeout variable was declared in one scope but used in - another one. Added another timeout variable to keep it happy. - - * tests/Message_Queue_Test.cpp: - A pointer was initialize using "0x" i think it was a typo and - should be "0". - -Fri Jul 02 18:28:31 1999 Steve Huston - - * ace/config-hpux11.h: Added ACE_HAS_BROKEN_T_ERROR. - Enable threads by default, unless site config explicitly turns it - off by setting ACE_HAS_THREADS to 0. Thanks to Brian Wallis - for motivating this change. - - * ace/config-hpux-11.x-hpc++.h: Added - ACE_HAS_STD_TEMPLATE_SPECIALIZATION. - - * include/makeinclude/platform_hpux_aCC.GNU: If on 11.00 and the - user requests a build w/o threads, set ACE_HAS_THREADS to 0 to - override the config default (see config-hpux11.h, above). - -Fri Jul 2 11:49:12 1999 Kirthika Parameswaran - - * tests/Cached_Conn_Test.cpp: This is a test which shows how the - Strategy Connector can automagically as well as explicitly cache - and purge connection from its connection cache using different - caching strategies. - - * ace/Cached_Connect_Strategy_T.{h, cpp}: Added a method - "purge_connections ()" which allows explicit purging of - connnections from the connection cache. - -Fri Jul 2 13:54:14 1999 Douglas C. Schmidt - - * ace/Future_Set.cpp, - ace/Future.cpp: Added ACE_TYPENAME at a couple of places - to make HP/UX aCC happy. Thanks to Eric Mitchell - for reporting this. - - * ace/SOCK_Dgram: Added send() and recv() methods that take - ACE_OVERLAPPED structures. Thanks to Vidya Narayanan - for suggesting this. - - * ace/OS.h: Added an ACE_OVERLAPPED_FLAG that's used to abstract - away from the WSA_FLAG_OVERLAPPED macro on Win32. Thanks to - Vidya Narayanan for suggesting - this. - - * ace/OS.cpp: Removed unnecessary ';' after ACE_BEGINTHREADEX() and - ACE_ENDTHREADEX(). Thanks to Kris Johnson - for reporting this. - - * ace/Service_Config.cpp (open_i): It appears that - - if (ACE::debug ()) - ACE_Log_Msg::disable_debug_messages (); - - should really be - - if (ACE::debug () == 0) - ACE_Log_Msg::disable_debug_messages (); - - Thanks to Jonathan Reis for - reporting this. - - * tests/Future_Test.cpp (main): Make sure to use absolute time - rather than relative time for the timeouts. Thanks to Peter - Brandstrom for reporting this. - -Fri Jul 02 13:44:17 1999 Irfan Pyarali - - * tests/Thread_Pool_Reactor_Test.cpp (worker): Added const fix to - and . - - * tests/Priority_Task_Test.cpp: Added const fix to . - - * tests/Notify_Performance_Test.cpp (print_results): Added const - fix to . - - * tests/Message_Block_Test.cpp: Added const fix to . - -Fri Jul 2 11:49:12 1999 Irfan Pyarali - - * Initialized some variables to zero to avoid some silly warnings - from egcs (with exceptions): - - - ace/Free_List.cpp - - ace/Malloc.i - - tests/DLL_Test.cpp - - tests/Mem_Map_Test.cpp - - tests/Message_Queue_Test.cpp - - tests/Reactor_Notify_Test.cpp - -Fri Jul 2 11:49:12 1999 Kirthika Parameswaran - - * ace/Strategies_T.h (ACE_Cached_Connect_Strategy): Made "virtual" - methods which were getting overriden in the derived - Cached_Connect_Strategy_Ex class. - - * ace/Cached_Connect_Strategy_T.{h, cpp}: Added a method - "purge_connections ()" which allows explicit purging of - connnections from the connection cache. - - * tests/Cached_Conn_Test.cpp: This is a test which shows how the - Strategy Connector can automagically as well as explicitly cache - and purge connection from its connection cache using different - caching strategies. - -Fri Jul 2 11:49:12 1999 Kirthika Parameswaran - - * tests/Cached_Conn_Test.cpp: This is a test which shows how the - Strategy Connector can automagically as well as explicitly cache - and purge connection from its connection cache using different - caching strategies. - - * ace/Cached_Connect_Strategy_T.{h, cpp}: Added a method - "purge_connections ()" which allows explicit purging of - connnections from the connection cache. - -Fri Jul 02 11:50:21 1999 Steve Huston - - * ace/ace_lib.dsp: Added Pharlap ETS configurations for Debug and - Release. - - * ace/config-pharlap.h: Added ACE_LACKS_* definitions to avoid some - unimplemented memory mapped things. Added a definition for - ACE_PAGE_SIZE because it's not obvious how to get it at run time. - Include because some of the OS functions call ETS - kernel functions for low-level system info gathering. - Set ACE_HAS_TSS_EMULATION. The PharLap TSS leaves some to be - desired, according to TSS_Test. - - * ace/config-win32-common.h: In building for PharLap, don't bring in - the OS-supplied wsock32.lib - need to use the PharLap one. - - * ace/ACE.cpp: PharLap ETS changes: - ACE::ldfind: PharLap doesn't have expand environment strings. - ACE::get_ip_interfaces: Use PharLap kernel functions to find - interfaces and learn their addresses. - ACE::terminate_process: Unsupported on PharLap. - ACE::handle_timed_open: If the open times out, set errno to - ETIMEDOUT, not ETIME. - ACE::handle_timed_accept: If the select times out, set errno to - ETIMEDOUT, not ETIME. - ACE::sock_error: If not a known error, format a message with the - error number in it - this is the only chance for a PharLap - system error to indicate the error number. - - * ace/OS.h: Changed def of ACE_DEFAULT_SERVER_HOST to ACE_LOCALHOST. - - * ace/OS.cpp (ACE_OS::uname): PharLap: Use ETS kernel functions to get - target processor class. PharLap doesn't do GetSystemInfo. - - * ace/OS.i (ACE_OS::hostname): PharLap: Attempt gethostname if using - RT version, though this isn't too reliable (requires ethernet and - BOOTP). - (ACE_OS::dlerror): PharLap doesn't support FormatMessage, - so format the error number. - (ACE_OS::mmap, ACE_OS::mprotect, ACE_OS::msync): PharLap doesn't - do memory-mapped files. - (ACE_OS::getpagesize): PharLap - use page size set from config.h. - Don't know a way to get this info at run time. - (ACE_OS::hostname (whar_t *, size_t)): PharLap - no wide chars. - - * ace/Log_Msg.cpp (log): PharLap doesn't do FormatMessage, so print - = %d for %p. - - * ace/Pipe.cpp (open): The protocol level for TCP_NODELAY on PharLap - is SOL_SOCKET, as opposed to Win32, where it's IPPROTO_TCP. - - * ace/SPIPE_Connector.cpp (connect): PharLap doesn't have the - SetNamedPipeHandleState function. - - * ace/WFMO_Reactor.cpp: PharLap ETS changes, because PharLap doesn't - implement async I/O, or WaitForMultipleObjectsEx. - register_handler_i: (This is a general Winsock 1.1 change) Creating - an event handle for a socket is not supported. - ok_to_wait, wait_for_multiple_events: Use WaitForMultipleObjects, - not WaitForMultipleObjectsEx. Should be fine since the big - difference is alertable, and that's not supported on ETS anyway. - - * tests/test_config.h: On PharLap, direct all logging to host console. - - * tests/tests_pharlap_msvc.lnk: Cleaned things up; extended stack size - from 8K to 32K. Change the starting load offset to - 0x100000 - the tests don't all fit in the default range. - Disabled the target screen driver to make all the test output from - all threads go to the host, thereby getting saved in the log files. - - * tests/run_pharlap_tests.bat: Fixed names of the executables. - - * tests/Atomic_Op_Test.dsp: - * tests/Barrier_Test.dsp: - * tests/Basic_Types_Test.dsp: - * tests/Buffer_Stream_Test.dsp: - * tests/CDR_Test_Test.dsp: - * tests/Collection_Test.dsp: - * tests/Conn_Test.dsp: - * tests/DLList_Test.dsp: - * tests/Dynamic_Priority_Test.dsp: - * tests/Enum_Interfaces_Test.dsp: - * tests/Env_Value_Test.dsp: - * tests/Future_Test.dsp: - * tests/Handle_Set_Test.dsp: - * tests/Hash_Map_Manager_Test.dsp: - * tests/High_Res_Timer_Test.dsp: - * tests/IOStream_Test.dsp: - * tests/Map_Manager_Test.dsp: - * tests/Map_Test.dsp: - * tests/Mem_Map_Test.dsp: - * tests/Message_Block_Test.dsp: - * tests/Message_Queue_Notifications_Test.dsp: - * tests/Message_Queue_Test.dsp: - * tests/MM_Shared_Memory_Test.dsp: - * tests/MT_Reactor_Timer_Test.dsp: - * tests/MT_SOCK_Test.dsp: - * tests/Naming_Test.dsp: - * tests/New_Fail_Test.dsp: - * tests/Notify_Performance_Test.dsp: - * tests/OrdMultiSet_Test.dsp: - * tests/Pipe_Test.dsp: - * tests/Priority_Buffer_Test.dsp: - * tests/Priority_Reactor_Test.dsp: - * tests/Priority_Task_Test.dsp: - * tests/Process_Mutex_Test.dsp: - * tests/Process_Strategy_Test.dsp: - * tests/RB_Tree_Test.dsp: - * tests/Reactor_Exceptions_Test.dsp: - * tests/Reactor_Notify_Test.dsp: - * tests/Reactor_Performance_Test.dsp: - * tests/Reactor_Timer_Test.dsp: - * tests/Reactors_Test.dsp: - * tests/Reader_Writer_Test.dsp: - * tests/Recursive_Mutex_Test.dsp: - * tests/Reverse_Lock_Test.dsp: - * tests/Semaphore_Test.dsp: - * tests/Service_Config_Test.dsp: - * tests/Sigset_Ops_Test.dsp: - * tests/Simple_Message_Block_Test.dsp: - * tests/SOCK_Connector_Test.dsp: - * tests/SOCK_Send_Recv_Test.dsp: - * tests/SOCK_Test.dsp: - * tests/SPIPE_Test.dsp: - * tests/SString_Test.dsp: - * tests/SV_Shared_Memory_Test.dsp: - * tests/Svc_Handler_Test.dsp: - * tests/Task_Test.dsp: - * tests/Thread_Manager_Test.dsp: - * tests/Thread_Mutex_Test.dsp: - * tests/Thread_Pool_Reactor_Test.dsp: - * tests/Thread_Pool_Test.dsp: - * tests/Time_Service_Test.dsp: - * tests/Time_Value_Test.dsp: - * tests/Timeprobe_Test.dsp: - * tests/Timer_Queue_Test.dsp: - * tests/Tokens_Test.dsp: - * tests/TSS_Test.dsp: - * tests/Upgradeable_RW_Test.dsp: - * tests/UPIPE_SAP_Test.dsp: - Fixed settings for PharLap ETS configurations. - - * tests/Conn_Test.cpp (server): If the acceptor fails, do not try to - close the svc_handler - the failed ACE_Oneshot_Acceptor already - closed it. - - * tests/SOCK_Send_Recv_Test.cpp: Use ACE_LOCALHOST, not "localhost". - -Thu Jul 1 21:49:39 1999 Matthew J Braun - - * ace/Containers_T.i,h,cpp - Added reset () methods to the derived classes of - ACE_Double_Linked_List_Iterator because the behavior of the base - class's version was not sufficient (and would cause way fun - segfaults when used). - - * tests/Map_Manager_Test.cpp - * tests/DLList_Test.cpp - ACE_const_cast'ed some string literals to char *'s to appease - the evil monstrosity that is SC 5.0. - -Wed Jun 30 18:11:41 1999 Ossama Othman - - * ace/OS.i (strncasecmp): - - Corrected ACE_TRACE statement to contain "strncasecmp" instead - of "strcasecmp." - -Thu Jul 01 21:07:22 1999 Douglas C. Schmidt - - * ACE version 4.6.43 released. - -Thu Jul 01 10:53:33 1999 David L. Levine - - * include/makeinclude/platform_vxworks5.x_ghs.GNU: - set INCLDIRS, so that wrapper_macros.GNU doesn't insert -I. - Otherwise, with GHS on NT host, ACE's Signal.h gets #included - instead of VxWorks' signal.h by target/h/private/sigLibP.h. - Thanks to Dale Wood and - Dave Steele for helping to figure - this out. - - * include/makeinclude/platform_vxworks5.x_g++.GNU, - bin/ace_ld: changed -c option to -C [...] --, so - that its arguments don't need to be quoted. I - couldn't figure out a way to quote on NT host. Thanks - to Dale Wood for enlightening me - on some of the intricacies of NT. - -Thu Jul 01 10:47:41 1999 David L. Levine - - * bin/libsize.pl: always use `pwd`, because the PWD environment - variable doesn't appear to get updated by recursive makes. - -Thu Jul 01 08:46:10 1999 David L. Levine - - * bin/check_build_logs: filter out lines from IDL_Cubit - that contain "0 errors". - -Thu Jul 01 00:24:52 1999 Nanbor Wang - - * docs/ACE-guidelines.html: Added a table explaining how to use - all the different ACE_*_STRING macros. - - * tests/DLList_Test.cpp: - * tests/Hash_Map_Manager_Test.cpp: - * tests/Map_Manager_Test.cpp: - * tests/Message_Block_Test.cpp: - * tests/Notify_Performance_Test.cpp: - * tests/Priority_Task_Test.cpp: - * tests/Thread_Pool_Reactor_Test.cpp: - * tests/test_config.h: UNICODE fixes. The usage of ASYS_TCHAR and - LPCTSTR were mistaken in many places. - -Wed Jun 30 16:13:58 1999 Irfan Pyarali - - * tests/Future_Set_Test.cpp: Added missing template instantiation - for ACE_Hash_Map_Reverse_Iterator_Ex. Also, added some fixes - from John Tucker . - -Wed Jun 30 12:09:22 1999 Nanbor Wang - - * ace/ace_bcc.ide: - * tests/tests_bcc.ide: - * *.{bpr,bpg}: Removed unused BCB project files. - -Tue Jun 29 23:12:58 1999 Carlos O'Ryan - - * ace/OS.i: - Use ACE_CAST_CONST to keep the silly Sun/CC 4.2 from - complaining. - -Tue Jun 29 22:48:43 1999 Irfan Pyarali - - * ace/OS.i (strncasecmp): Changed to . - -Tue Jun 29 22:33:55 1999 Carlos O'Ryan - - * ace/OS.i: - Fixed warnings in green hills and possibly othre EDG-based - compilers. - - * tests/run_tests.sh: - * tests/run_tests.vxworks: - Take Future_Set_Test out, it does not work in too many - platforms. - -Tue Jun 29 21:24:13 1999 Douglas C. Schmidt - - * ace/SOCK.cpp (open): Removed an unused variable. Thanks - to Carlos for reporting this. - -Tue Jun 29 20:53:41 1999 Carlos O'Ryan - - * ace/config-irix5.3-g++.h: - IRIX 5.3 (!) has a DIRENT structure, thanks to Isaac Stoddard - for providing this fix. - -Tue Jun 28 20:19:11 1999 Darrell Brunsch - - * ace/ace_dll.dsp: - * ace/ace_lib.dsp: - Manually cleaned up these projects and fixed them so they should - work on NT Alpha again. - -Tue Jun 29 18:48:22 1999 Irfan Pyarali - - * ace/Functor_T.h (class ACE_Pointer_Hash): Added new class for - hashing pointers on their values. - - * ace/Future_Set: Restored future map to be a - ACE_Hash_Map_Manager_Ex. - -Tue Jun 29 14:45:38 1999 Irfan Pyarali - - * tests/run_tests.bat: Removed New_Fail_Test from the - run_tests.bat (the script for NT). This tests takes too long to - run and swaps out the entire machine making is impossible to do - useful things while the test is running. Note that the test is - still there and can be run by hand (i.e., on its own, without - the run_tests.bat script). - - * ace/Future: Changed the observer collection to be an unbounded - set and changed the future map to map manager. These are - temporary changes to get things compiling again. Once we figure - out the correct hashing functions, we can restore the original - code. - -Tue Jun 29 13:38:52 1999 Ossama Othman - - * AUTHORS: - - Added an AUTHORS file to bring ACE closer to recent software - distribution conventions. - - * Makefile: - - Added Carlos' websvcs directory to the release, in addition to - the missing top-level ACE Configuration project files and - directories. - - * config.guess: - * config.sub: - * ltconfig: - * ltmain.sh: - * missing: - * mkinstalldirs: - - Updated from latest GNU libtool and GNU automake. - -Tue Jun 29 12:07:08 1999 Ossama Othman - - * README: - * THANKS: - - Moved list of contributors to the file `THANKS' to bring the - distribution closer to conventional distribution standards. - - * Makefile: - - Added the THANKS file to the list of controlled files so that it - gets distributed with ACE. - -Tue Jun 29 11:27:23 1999 Matthew J Braun - - * ace/Containers_T.i: Modified next method in ACE_DLList_Iterator - to avoid segfaults (a bad thing). - -Tue Jun 29 10:54:15 1999 Carlos O'Ryan - - * ace/OS.i: - Sun/CC was not pleased with a cast from "void* const" to "const - char*", and rightly so. - -Tue Jun 29 09:21:06 1999 Carlos O'Ryan - - * ace/OS.h: - * ace/OS.i: - * ace/SOCK_Dgram.h: - * ace/SOCK_Dgram.i: - Fixed the unix version ACE_OS::sendto() call. - Also fixed the Win32 version and the Win32 version of - ACE_OS::recvfrom, had to change the signatures to make them safe - and fit the WinSock2 interfaces. - -Tue Jun 29 07:07:30 1999 David L. Levine - - * bin/check_build_logs: allow _ with -l and -m options, and - @ and . with -m option. - -Mon Jun 28 21:31:58 1999 Douglas C. Schmidt - - * ace/OS: Added a constructor to ACE_Flow_Spec to initialize - its various fields wholesale. Thanks to Kumar Surender - for this suggestion. - - * ace/SOCK: Added a new constructor and a new open() method - that pass through the QoS information required by WSASocket(). - - * ace/{OS,SOCK_Connector,SOCK_Dgram,SOCK_Dgram_Mcast}: Renamed - ACE_Connect_QoS_Params to ACE_QoS_Params since (1) it's used in - ACE_OS::connect() *and* ACE_OS::join_leaf() and (2) it's used - for Dgrams, which aren't connection oriented. Thanks to Kumar - Surender for this suggestion. - - * ace/OS: Added set/get methods for time-to-live on the - ACE_Flow_Spec classes. This is necessary since RAPI defines - this. - - * ace/OS: Added a new ACE_OS::recvfrom() method that's a wrapper - for the WSARecvFrom() on Win32 and (will be) an "emulation" on - non-Win32 platforms. - - * ace/OS: Added a new ACE_OS::sendto() method that's a wrapper - for the WSASendTo() on Win32 and an "emulation" on non-Win32 - platforms. - - * ace/OS.h: Updated the QoS documentation to clarify that these - features are appropriate for IntServ (RSVP) *and* DiffServ. - Thanks to Kumar Surender , Vidya - Narayanan and Pradeep Avasthi - suggesting this. - - * ace/SOCK_Dgram.h: Added send() and recv() methods for - ACE_SOCK_Dgram that take overlapped I/O parameters. This is - needed for the GQoS WinSock API. - -Mon Jun 28 21:53:06 1999 David L. Levine - - * bin/libsize.pl: added support for liborbsvcs, and - for shared libs (with -s option). - - * bin/check_build_logs: fixed command-line argument processing. - -Mon Jun 28 17:30:08 1999 Nanbor Wang - - * ace/OS.i (recvv): We must not passed a null pointer to - but a pointer pointing to a real flag. This fixed the - SOCK_Send_Recv_Test failing on NT problem. Thanks to Jody - Hagins for reporting this. - -Mon Jun 28 15:10:50 1999 Irfan Pyarali - - * ace/Strategies_T: Removed ACE_Hash_Addr which was no longer used - in ACE and is not necessary given the new - ACE_Hash_Map_Manager_Ex class. - -Mon Jun 28 15:00:01 1999 Carlos O'Ryan - - * ace/CDR_Stream.h: - * ace/CDR_Stream.cpp: - Added new method to reset the state of a CDR stream without need - for any memory allocations. - -Mon Jun 28 12:48:35 1999 David L. Levine - - * bin/check_build_logs: added this script, which checks build - logs named *.log, of current day. - -Mon Jun 28 09:32:59 1999 Douglas C. Schmidt - - * ace/{Future_Set,Future}: Integrated new enhancements to use - the ACE_Hash_Map_Manager rather than the ACE_DLL_Linked_List to - speed up notifications for the Future Set. Thanks to John - Tucker for this enhancement. - - * tests: Integrated the Future_Set_Test into this directory and the - various batch files. Thanks to John Tucker - for this test. - - * ace/Map_Manager.i: Added an ACE_const_cast to the lock_ used - in the newly const total_size() and current_size() methods. - - * ace/Map_T, - * ace/Map_Manager, - * ace/Cache_Map_Manager_T, - * ace/Active_Map_Manager_T, - * ace/Hash_Map_Manager_T: The current_size() and total_size() methods - must be const. - - * ace/OS.i: Fixed a type inconsistency where wchar_t should have been - char and added a missing ';'. - - * ace/OS.i: Fixed a typo where last_error should have been - lerror. Thanks to Chris Gill for reporting this. - - * ace/OS.cpp (ACE_BEGINTHREADEX): Oops, mistyped "_beginthreadex()" - as "_beingthreadex()". I must be going through an existential - phase ;-). Thanks to Chris Gill for reporting this. - - * ace/OS.i: Fixed a typo where last_error should have been - lerror. Thanks to Chris Gill for reporting this. - - * ace/OS.cpp (ACE_BEGINTHREADEX): Oops, mistyped "_beginthreadex()" - as "_beingthreadex()". I must be going through an existential - phase ;-). Thanks to Chris Gill for reporting this. - -Sun Jun 27 18:03:24 1999 Douglas C. Schmidt - - * ACE-INSTALL.html: Updated the discussion for Borland C++ - Building 4.0 and IBM's VisualAge C++ compiler to reference the - appropriate maintainers. - - * ace/WIN32_Proactor.cpp, ace/WIN32_Asynch_IO.cpp: Added back some - initializers to keep EGCS happy. - - * ace/config-g++-common.h: Added ACE_LACKS_AUTO_PTR to work around - an omission within the EGCS standard library. - - * ace/Auto_Ptr.h: If ACE_LACKS_AUTO_PTR is enabled then use our - version of auto_ptr. This is necessary to work around problems - with EGCS. - - * ace/config-g++-common.h: Define ACE_HAS_STANDARD_CPP_LIBRARY so - that #include will work properly. However, this - required that we also set ACE_USES_OLD_IOSTREAMS, as well. - Thanks to Carlos for help with this. - - * ace/config-g++-common.h: The EGCS 1.1.1 compiler supports the - template<> syntax. If this breaks older EGCS or GCC compilers - we'll have to handle each of those cases. - - * ace/config-win32-borland.h: - Added ACE_HAS_STD_TEMPLATE_METHOD_SPECIALIZATION. - - * ace/OS.h: Replaced the const's for ACE_DEFAULT_SHLIB_MODE and - ACE_SHLIB_INVALID_HANDLE with #defines since it's more portable. - - * ace/OS.i: All the strcasecmp() and strncasecmp() methods were - broken. Thanks to David Levine for reporting this. - - * ace/WFMO_Reactor.cpp: Updated the programming style a bit to - conform to the ACE guidelines. - -Sun Jun 27 20:50:02 1999 Douglas C. Schmidt - - Added support for IBM's VisualAge C++ compiler. - - * ace: Added a new config-visualage.h file that automatically - includes the proper configurations for IBM's VisualAge C++ - compiler on Win32 and AIX. - - * ace/OS.i: The IBM VisualAge C++ compiler's prototypes for _chdir(), - _mkdir(), and _tempnam() are broken, so we must add a cast to - char *. - - * ace/OS.cpp: Added new macros ACE_ENDTHREADEX and - ACE_BEGINTHREADEX to work around a bugs with _endthreadex() and - _beginthreadex() on IBM's VisualAge C++ compiler. - - * ace/OS.cpp (ACE_Time_Value::set): Replaced this expression: - - this->tv_.tv_usec = long ((_100ns.QuadPart % (10000 * 1000)) / 10); - - with this expression: - - this->tv_.tv_usec = long ((long (_100ns.QuadPart) % long (10000 * 1000)) / 10); - - to work around a bug with IBM's VisualAge C++ compiler. - - * ace/OS.cpp: Replaced a hard-coded MSVC++'ism for signed long long - with a use of the ACE_UINT64_LITERAL macro, which works for all - Win32 C++ compilers. - - * ace/config-win32-visualage.h, - ace/config-aix-4.x.h: Added a workaround for an IBM VisualAge - C++ bug with the WIFEXITED and WEXITSTATUS macro. - - * ace/OS.h: Added workarounds for bugs with IBM's VisualAge C++ compiler - as it pertains to the ACE_DES_FREE_TEMPLATE and - ACE_DES_FREE_TEMPLATE2 macros. - - * ace/Map_T.h: Added a workaround for a bug with IBM's VisualAge C++ - compiler. I think this workaround should help with other C++ - compilers, as well. Also reformated the code to make it - consistent with the ACE programming guidelines. - - * ace/Hash_Purgable_Map_Manager_T.cpp: Added a workaround for a - VisualAge C++ bug. - - * ace/config-aix-4.x.h: Added VisualAge C++ compiler support. - - * ace/Timer_Heap_T.cpp: We must hard code numbers like - 1024 for an array size to workaround bugs with the IBM VisualAge - C++ compiler. - - * ace/Basic_Types.h: Added #defines for ACE_INT64_LITERAL. - - * ace/config-win32-common.h: #include the - config-win32-visualage.h file. - - * ace: Added the following files for the IBM VisualAge C++ compiler: - - ace-lib.icc - WinNT configuration file to create a static library - ace-dll.icc - WinNT configuration file to create a dynamic library - config-win32-visualage.h - VisualAge C++ defines - - * tests: Added the icc.bat and makeicc.pl files, which build the - tests for the IBM VisualAge C++ compiler. - - * tests: Added the *.icc project files for the IBM VisualAge C++ compiler. - -Sun Jun 27 18:17:43 1999 Carlos O'Ryan - - * ace/CORBA_macros.h: - On platforms with native C++ exceptions we use ACE_UNUSED_ARG() - in the throw macros to avoid warnings about the unused - ACE_TRY_ENV variable. - -Sun Jun 27 14:56:16 1999 Nanbor Wang - - * tests/run_tests.bat: Added the patch for running tests compiled - with Borland C++. Thanks to Jody Hagins for - the patch. - - * tests/Cache_Map_Manager_Test.dsp: The project file was - mis-configured. - - * tests/version_tests/version_tests.dsw: - * tests/version_tests/Cache_Map_Manager_Test.dsp: Added this new - project file. - -Sun Jun 27 12:36:00 1999 Chris Gill - - * ace/RB_Tree.{h, i}: Moved non-deprecated iterator base class - method next (RB_Tree_Node<...>) down into derived forward and - reverse iterator classes due to method resolution conflict - with deprecated next (void) method in forward iterator class. - When the deprecated next method is removed, these will be - moved out of the derived classes and into the base class. - Thanks to Matt Braun and Carlos O'Ryan for pointing out - this problem. - -Sat Jun 26 16:22:07 1999 Marina Spivak - - * ace/ace_lib.dsp - * ace/ace_dll.dsp: - Updated to include Hash_Map_With_Allocator_T.* files. - -Sat Jun 26 16:05:29 1999 Ossama Othman - - * acconfig.h: - * configure.in: - - Added support/test for ACE_HAS_MEMCHR macro. - - * ace/Makefile.am: - * tests/Makefile.am: - - Synchronized with latest version of ACE. - - * m4/features.m4: - - Updated asynchronous IO tests. - -Sat Jun 26 14:41:31 1999 Marina Spivak - - * ace/Event_Handler_T.h - Removed "ACE_Export" - it is not necessary for a template class. - - * ace/Hash_Map_With_Allocator.{h,i,cpp}: - Added these files to ACE. These files contain a thin wrapper - around ACE_Hash_Map_Manager, which is useful when - ACE_Hash_Map_Manager is used with a shared memory (or memory - mapped file) allocator (e.g., ACE Naming Service, and TAO Naming - Service are example use cases). Please see header file for more - details. - -Sat Jun 26 12:45:26 1999 Douglas C. Schmidt - - * tests/Cache_Map_Manager_Test.cpp: Fixed this test so that it - compiles with SunC++ 4.2 and its broken C++ templates... Thanks - to David Levine for reporting this. - - * ace/Malloc_T.i: Make sure to put ACE_INLINE on all the methods - in the .i files. Thank to Marina for reporting this. - - * ace/Hash_Map_Manager_T.h: Fixed the programming style a bit. - - * ace/Arg_Shifter.cpp (ACE_Arg_Shifter): Reformatted this - stuff a bit. - -Sat Jun 26 12:45:26 1999 Jody Hagins - - This is a change log for the modifications made to support - Borland C++Builder 4.0, Patch 1. Thanks to - Christopher Kohlhoff and Chris Uzdavinis - for helping with this. - - First, I did not get integrate the makefiles to the BCB environment - as it requires alot of tools and more time. I hope to fet to this - in the somewhat near future. However, each directory that has stuff - that I built and tested has a Makefile.bor, which will make whatever - is there with BCB4. Note that the makefiles do not, at present, - have a clean or anything except the default make. - - To build, make sure config.h points to, or simply includes - ace/config-win32.h. - - Finally, not all the programs and exampales have BCB makefiles. - However, it should not be too difficult to adapt the ones that are - there. In addition, the .bpr files should NOT be used to build - the libraries, or any examples. If you want to build examples, - you will need to start with a fresh project in BCB. - - At present (4.6.42) all tests, except SOCK_Send_Recv_Test run - successfully, and some of my own tests run. Also, the TAO services - and programs seem to be operating as well. - - * ace/Asynch_Acceptor.cpp: Need CancelIO for BCB as well - - * ace/Atomic_Op.i: Need ACE_TEMPLATE_SPECIALIZE on specializations. - - * ace/CDR_Stream.h: Need LongLong for BCB as well - - * ace/Functor.i: Need ACE_TEMPLATE_SPECIALIZE on specializations. - - * ace/Future.h: Work around a BCB4 bug which causes the create() - method from being seen. - - * ace/IOStream.h: Only want CString stuff for MSC. - - * ace/IOStream_T.cpp: Only want CString stuff for MSC. - - * ace/OS.cpp: _fdopen, in BCB, takes a non-const pointer - - * ace/OS.h: Differentiate between mode masks and user mode masks. - - BCB doesn't like initialized data in precompiled header files so - define certain constants instead. A bug in BCB prevents calling - a destructor explicitly on a typedef declared inside a class. - So, TEMPLATE3 and TEMPLATE4 versions of ACE_DES_FREE are - necessary for destruction of templates with more parameters. - - BCB4 has a bug in the RTL that resets the GetLastError() value - to zero when errno is accessed. Thus, setting errno to - ::GetLastError requires a copy. To keep from having the code - everywhere, I added ACE_OS::set_errno_to_last_error () and - ACE_OS::set_errno_to_wsa_last_error (), and used it everywhere - errno was being set to GetLastError() or WSAGetLastError(). - - BCB4 has a bug in the optimizer that screws up the return from - certain expressions when a variable is set on both sides of an - assignment. Thus, the definition of ACE_WIN32CALL_RETURN needed - to change. - - * ace/OS.i: Use ACE_set_errno_to_last_error where appropriate. - BCB4 bug requires splitting FILETIME dummy_1, dummy_2; into - separate declarations. - - * ace/Select_Reactor.h: Need ACE_TEMPLATE_SPECIALIZE on - specializations. - - * ace/WFMO_Reactor.cpp: Use ACE_set_errno_to_last_error where - appropriate. Likewise, fix the use of auto_ptr copy ctor, which - can not take a const ref. - - * ace/WIN32_Asynch_IO.cpp: Use ACE_set_errno_to_last_error - where appropriate. Need CancelIo for BCB as well. - - * ace/WIN32_Proactor.cpp: Use ACE_set_errno_to_last_error - where appropriate. - - * ace/config-win32-borland.h: Specific build stuff for BCB - - * ace/config-win32-common.h: Differences between BCB and MSC - - * apps/JAWS/PROTOTYPE/JAWS/Cache_Hash_T.cpp: BCB4 bug prevents - using typedef inside class for explicit dextructor. - - * apps/JAWS/PROTOTYPE/JAWS/Cache_List_T.cpp: - BCB4 bug prevents using typedef inside class for explicit - dextructor. - - * apps/JAWS/PROTOTYPE/JAWS/Cache_Manager_T.cpp: BCB4 bug prevents - using typedef inside class for explicit dextructor. - - * apps/JAWS/PROTOTYPE/JAWS/IO.cpp: Get rid of const warning - - * tests/DLL_Test.cpp: The get_hello function has calling - convention __cdecl (by default since the calling convention is - not mentioned). However, BCB decorates __cdecl with a leading - underscore (and doesn't decorate __stdcall). Thus, we needed to - add some decoration to find the function. Also, added prefix to - find the executable. - - * tests/Message_Queue_Test.cpp: BCB4 defines a "messages" and by - default sucks that namespace into the global namespace, so a new - variable name was needed. - - * tests/Reactor_Exceptions_Test.cpp: The test throws a structured - exception. The ISO does not require non C++ exceptions to be - caught by catch (...). MSVC catches it but BCB4 does not. So, - the code needed to be changed to catch a structured exception as - well. - - * tests/run_tests.bat: Changed to allow running the BCB tests, - when in another directory. - -Sat Jun 26 08:40:01 1999 David L. Levine - - * ace/Proactor.cpp: fixed template instantiation pragmas - (to match explicit template instantiation directives). - -Sat Jun 26 08:21:52 1999 David L. Levine - - * ace/Signal.h: reordered #includes to avoid warning about - #pragma once. - -Fri Jun 25 22:30:24 1999 David L. Levine - - * docs/ACE-guidelines.html: always test on egcs before - commiting. It catches real problems that are missed - by some of the other compilers we (well, some of us :-) - use. - -Fri Jun 25 22:20:16 1999 David L. Levine - - * ace/Future.cpp (detach): changed equality comparison of - curr_observer from itself to the observer argument. - Thanks to egcs -W for snagging this. - -Fri Jun 25 21:46:46 1999 David L. Levine - - * ace/OS.h,ace/Signal.h,ace/config-psos-tm.h - (ACE_DONT_INCLUDE_ACE_SIGNAL_H): added this interlock - diagnostic to inform the user when ace/Signal.h gets #included - instead of signal.h. Thanks to Dale Wood - and Timothy Canham for tripping - over it, on the same day, and reporting it. - -Fri Jun 25 17:22:02 1999 Nanbor Wang - - * ace/Select_Reactor_T.cpp (close): Don't call close() on the - if there isn't one. - - * ace/SOCK_Acceptor.cpp (open): The error status was not set - correctly if listen() failed. - - Thanks to Irfan for helping with this. - -Fri Jun 25 16:48:17 1999 David L. Levine - - * ace/OS.h: don't #include directly on VxWorks. - When cross-compiling on NT host, the GreenHills compiler - #includes ace's Signal.h instead of VxWorks' signal.h. - No comment. OS.h doesn't need to #include signal.h directly, - because it gets indirectly #included through sigLib.h. Thanks - to Dale Wood for reporting this. - -Fri Jun 25 16:03:59 1999 Douglas C. Schmidt - - * ace/Future.cpp: Fixed a couple of places where the set() method - didn't have the new *this parameter added. - - * ace: Added Future_Set.{h,cpp} and Future_Node.{h,cpp}, as well - as the new Future.{h,cpp} files to the ACE release. Thanks to - John Tucker for contributing these. - - * ace/Synch.h: Added a comment pointing out that Solaris - threads do not support timed acquire(). Thanks to Darren - DeRidder for reporting - this. - -Fri Jun 25 15:07:00 1999 John Tucker - - The following describes the changes to ACE_Future_Set: - - * I followed the Observer Pattern where the ACE_Future_Set is the - "Observer" and the ACE_Future_Rep is the "Subject". - - * I created an abstract base class called ACE_Future_Observer - which contains a single pure virtual member function "update()". - - * The ACE_Future_Rep is modified so that it contains a list of - ACE_Future_Observer pointers and an interface for attaching - and detaching ACE_Future_Observer Observer objects. The - "attach(...)" member function allows objects which implement the - ACE_Future_Observer interface to attach themselves to - ACE_Future_Rep objects so that they will be notified of - changes to the ACE_Future_Rep Subject. The "detach(...)" - member function allows objects which implement the - ACE_Future_Observer interface to detach themselves from - ACE_Future_Rep objects so that they will no longer be - notified of changes to the ACE_Future_Rep Subject. - - * The ACE_Future_Rep::set() method is modified so that it invokes the - "update()" method of each ACE_Future_Observer object stored - in its list of attached ACE_Future_Observer Observer - objects. It also removes each ACE_Future_Observer Observer - object from its list. - - * The ACE_Future_Set class derives from the ACE_Future_Observer - class. - - * The ACE_Future_Set class contains its own ACE_Message_Queue - attribute which will be used by writer threads to notify reader - threads that an ACE_Future is readable. - - * The ACE_Future_Set class contains a list of ACE_Future - Subject objects which clients in the reader threads insert into - it. When an ACE_Future is inserted into an - ACE_Future_Set, the ACE_Future_Set attaches itself to the - specified ACE_Future, keeping in mind the ACE_Future_Set - implements the ACE_Future_Observer interface, and also - inserts the specified ACE_Future object into its list of - ACE_Future objects. - - * The ACE_Future_Set class implements its "update()" method to - just enqueue an ACE_Message_Block with Null data onto its - ACE_Message_Queue. Since this "ACE_Future_Set::update()" - method will be invoked by the ACE_Future_Rep::set() method in - the writer thread, it will allow the ACE_Future_Set in the - writer thread to signal itself that an ACE_Future has become - readable. - - * The "int ACE_Future_Set::next_readable(ACE_Future &future, - ACE_Time_Value *)" method in the reader thread will block via a - call to "dequeue()" on its ACE_Message_Queue until is awakened - by a call to "ACE_Future_Set::update()" in the writer thread. - Once awakened, the ACE_Future_Set object iterates through its - list of ACE_Future objects until it encounters a readable - one. This readable ACE_Future will be removed from its list - and assigned to the specified "future" parameter". - - * The ACE_Future_Set destructor detaches itself from all - ACE_Future objects remaining in its list. - - * I did not use the ACE_Reactor since I could foresee the - ACE_Future_Set being used by applications which did not run,or - want to run, the event loop. - -Fri Jun 25 14:28:05 1999 Ossama Othman - - * ace/UNIX_Addr.cpp (ACE_UNIX_Addr): Moved base_set() call in - constructor to member initializer list. This is cleaner coding - style. The original code, before a bug fix was made, was like - that. I just forgot to put it back in the member initializer - list after the fix. - -Fri Jun 25 15:15:32 1999 Steve Huston - - * performance-tests/Misc/Makefile: set static_libs_only so the library - selection gets done right on AIX. Clean out the tempinc dir - between binaries on AIX. - - * performance-tests/Misc/test_singleton.cpp: Moved def of DC_Singleton - to new file, test_singleton.h so it works on AIX w/ xlC. - - * ace/Hash_Cache_Map_Manager_T.h: Removed the "ace/" from the - #pragma implementation line. The compiler remembers the directory - it came from. - - * examples/ASX/UPIPE_Event_Server/Peer_Router.h: - * examples/Connection/non_blocking/CPP-connector.h: - * examples/Connection/non_blocking/CPP-acceptor.h: - Added #pragma implementation, for AIX IBM C++. - - * examples/IPC_SAP/SOCK_SAP/CPP-inclient.cpp: - * examples/IPC_SAP/SOCK_SAP/CPP-inserver-fancy.cpp: - Split the Options class to a new file, CPP-inclient.h, to make - IBM C++ (xlC) like it. - - * examples/IOStream/server/iostream_server.cpp: Split the Handler - class off to new iostream_server.h file, to make IBM C++ (xlC) - like it. - - * examples/Logger/Acceptor-server/server_loggerd.cpp: Moved the - Options and handler classes' definitions to new server_loggerd.h - file to build with AIX IBM C++. - - * examples/Misc/testr_dump.cpp: Moved the program's classes' - definitions to new server_loggerd.h file to build with AIX IBM - C++. - - * examples/IPC_SAP/SOCK_SAP/Makefile: - * examples/Connection/non_blocking/Makefile: - * examples/Misc/Makefile: - On AIX w/ IBM C++, delete the tempinc directory before compiling - each new program. Keeps the template instantiations from one - program from conflicting with the others. - - * include/makeinclude/rules.lib.GNU: On AIX using IBM C++ only, don't - try to link in the auto-instantiated template object modules if - there aren't any. - - * include/platform_aix4_cset++.GNU: Removed TMPL_OBJS - not needed now. - * examples/Misc/Makefile: On AIX w/ IBM C++, delete the tempinc - directory before compiling each new program. Keeps the template - instantiations from one program from conflicting with the - others. - -Fri Jun 25 12:40:29 1999 David L. Levine - - * ACE-INSTALL.html: added/expanded/moved discussions of - enabling/increasing virtual memory on Linux and LynxOS. Thanks - to Fabrice Podlyski for providing - detailed information for LynxOS. - -Fri Jun 25 11:16:32 1999 Kirthika Parameswaran - - * tests/Makefile: Updated dependencies for Cache_Map_Manager_Test - and Map_Manager_Test. - -Fri Jun 25 07:41:05 1999 David L. Levine - - * docs/ACE-guidelines.html: added guideline to include - directories containing files with template definitions in a -I. - -Thu Jun 24 22:42:44 1999 David L. Levine - - * ace/SOCK_Dgram_Mcast.cpp (subscribe): fixed UNICOS - preprocessor usage so that it's not in the middle of the - ACE_reintepret_cast. - -Thu Jun 24 22:18:52 1999 Doug Anderson - - * ace/CDR_Stream.*,ace/SOCK_Dgram_Mcast.cpp,ace/config-cray.h: - updates for Cray UNICOS port. - -Thu Jun 24 21:33:11 1999 Kirthika Parameswaran - - * ace/Caching_Strategies_T.{h, cpp} (class ACE_FIFO_Caching_Strategy): - * ace/Caching_Strategies_T.{h, cpp} (class ACE_LRU_Caching_Strategy): - * ace/Caching_Strategies_T.{h, cpp} (class ACE_LFU_Caching_Strategy): - Removed the overloaded clear_cache () method with entries as an - formal argument. - - * ace/Caching_Strategy_Utility_T.{h,i,cpp}: Renamed as - Caching_Utiltity.{h, i, cpp}. Also, removed formal - argument from the clear_cache() method, and made purge_percent - of type double instead of unsigned int. - - * tests/Cache_Map_Manager_Test.cpp: Changed the purge_test and - added a test for the Cache_Map_Manager using the Map_Manager. - - * tests/Map_Manager_Test.cpp: Changed the template instantiation - in vein with the changes to the names of the Caching_Utility - classes. - - * tests/Cache_Map_Manager_test.dsp: - * tests/tests.dsw: - Made NT project for the test and added it to the tests workspace. - -Thu Jun 24 20:43:54 1999 Irfan Pyarali - - * examples/Reactor/WFMO_Reactor/test_multithreading.cpp - (Task_Handler): Change loop to go from 1 to number_of_handles - instead of 0 to number_of_handles - 1. - -Thu Jun 24 18:36:22 1999 Douglas C. Schmidt - - * ace/Signal.h: Removed the still-born - ACE_Sig_Action (struct sigaction *) method. Thanks to Umar - Syyid for reporting this. - -Thu Jun 24 15:47:32 1999 Steve Huston - - * tests/run_pharlap_tests.bat: One-button script for running the tests - built for PharLap ETS. - - * tests/tests_pharlap_msvc.lnk: PharLap ETS LinkLoc input file for - building test for ETS. Very possible that local sites will need to - adjust this for the target environment. - - * tests/Atomic_Op_Test.dsp: - * tests/Barrier_Test.dsp: - * tests/Basic_Types_Test.dsp: - * tests/Buffer_Stream_Test.dsp: - * tests/CDR_Test_Test.dsp: - * tests/Collection_Test.dsp: - * tests/Conn_Test.dsp: - * tests/DLList_Test.dsp: - * tests/Dynamic_Priority_Test.dsp: - * tests/Enum_Interfaces_Test.dsp: - * tests/Env_Value_Test.dsp: - * tests/Future_Test.dsp: - * tests/Handle_Set_Test.dsp: - * tests/Hash_Map_Manager_Test.dsp: - * tests/High_Res_Timer_Test.dsp: - * tests/IOStream_Test.dsp: - * tests/Map_Manager_Test.dsp: - * tests/Map_Test.dsp: - * tests/Mem_Map_Test.dsp: - * tests/Message_Block_Test.dsp: - * tests/Message_Queue_Notifications_Test.dsp: - * tests/Message_Queue_Test.dsp: - * tests/MM_Shared_Memory_Test.dsp: - * tests/MT_Reactor_Timer_Test.dsp: - * tests/MT_SOCK_Test.dsp: - * tests/Naming_Test.dsp: - * tests/New_Fail_Test.dsp: - * tests/Notify_Performance_Test.dsp: - * tests/OrdMultiSet_Test.dsp: - * tests/Pipe_Test.dsp: - * tests/Priority_Buffer_Test.dsp: - * tests/Priority_Reactor_Test.dsp: - * tests/Priority_Task_Test.dsp: - * tests/Process_Mutex_Test.dsp: - * tests/Process_Strategy_Test.dsp: - * tests/RB_Tree_Test.dsp: - * tests/Reactor_Exceptions_Test.dsp: - * tests/Reactor_Notify_Test.dsp: - * tests/Reactor_Performance_Test.dsp: - * tests/Reactor_Timer_Test.dsp: - * tests/Reactors_Test.dsp: - * tests/Reader_Writer_Test.dsp: - * tests/Recursive_Mutex_Test.dsp: - * tests/Reverse_Lock_Test.dsp: - * tests/Semaphore_Test.dsp: - * tests/Service_Config_Test.dsp: - * tests/Sigset_Ops_Test.dsp: - * tests/Simple_Message_Block_Test.dsp: - * tests/SOCK_Connector_Test.dsp: - * tests/SOCK_Send_Recv_Test.dsp: - * tests/SOCK_Test.dsp: - * tests/SPIPE_Test.dsp: - * tests/SString_Test.dsp: - * tests/SV_Shared_Memory_Test.dsp: - * tests/Svc_Handler_Test.dsp: - * tests/Task_Test.dsp: - * tests/Thread_Manager_Test.dsp: - * tests/Thread_Mutex_Test.dsp: - * tests/Thread_Pool_Reactor_Test.dsp: - * tests/Thread_Pool_Test.dsp: - * tests/Time_Service_Test.dsp: - * tests/Time_Value_Test.dsp: - * tests/Timeprobe_Test.dsp: - * tests/Timer_Queue_Test.dsp: - * tests/Tokens_Test.dsp: - * tests/TSS_Test.dsp: - * tests/Upgradeable_RW_Test.dsp: - * tests/UPIPE_SAP_Test.dsp: - Added "PharLap ETS Debug" configurations. - - * ACE-INSTALL.html: Added some info about the PharLap TNT ETS port. - -Thu Jun 24 14:10:20 1999 David L. Levine - - * bin/libsize.pl: use appropriate size command for all of - our cross-compile platforms. - -Thu Jun 24 14:00:27 1999 David L. Levine - - * ace/config-sunos5.7.h: with ghs only, undef ACE_HAS_PROC_FS - and ACE_HAS_PRUSAGE_T because the Sun's sys/procfs_isa - requires 64-bit ints. - -Thu Jun 24 13:53:53 1999 David L. Levine - - * ace/Proactor.cpp: added missing backslash to one of - the instantiation pragmas. - -Thu Jun 24 12:53:22 1999 Steve Huston - - * ace/OS.(h i): Added check for ACE_HAS_WINSOCK2 != 0 wherever - the check was only for ifdef ACE_HAS_WINSOCK2. Allows building on - Winsock 1.1. - - * ace/config-pharlap.h: New config file for use with PharLap TNT - Embedded ToolSuite. This is not really tested yet - that activity - continues. - -Thu Jun 24 07:05:17 1999 David L. Levine - - * ace/config-osf1-4.0.h,include/makeinclude/platform_osf1_4.0.GNU, - include/makeinclude/platform_osf1_cxx.GNU: use pragmas instead of - command line arguments to disable specific warning messages. - This cleans up the command line, and makes it easier to control - warning message suppression (because the compiler version is - available in __DECCXX_VER to the preprocessor.) - -Wed Jun 23 21:27:45 1999 David L. Levine - - * ACE-INSTALL.html: removed space from "resource requirements" - tag to avoid problems with web browers. - -Wed Jun 23 20:18:42 1999 Douglas C. Schmidt - - * ace/WFMO_Reactor: Added a no-op work_pending() - implementation until we figure out how to implement this. - - * ace/Reactor_Impl.h, - * ace/Reactor.{cpp,h}, - * ace/Select_Reactor_T.{h,cpp}: Added a work_pending() method - that just checks if there are I/O events "ready" for - dispatching, but doesn't actually dispatch event handlers. This - is needed for TAO's work_pending() API. Thanks to Irfan for - suggesting this. - -Wed Jun 23 15:27:48 1999 David L. Levine - - * bin/libsize.pl: added this script, which provide a size - breakdown of either the ACE or TAO libraries. - -Wed Jun 23 14:34:27 1999 David L. Levine - - * ACE-INSTALL.html: added link to ACE Library Size Breakdown - in System Resource Requirements discussion. - -Wed Jun 23 14:09:27 1999 Kirthika Parameswaran - - * ace/Caching_Strategies_T.cpp (ACE_LRU_Caching_Strategy): - Checked and modified the creation and deletion logic of the - caching utility object. - * ace/Cache_Map_Manager_T.cpp (~Cache_Map_Manager): - Added the close method call to avoid memory leaks. - * tests/run_test.pl: - * tests/run_test.bat: - Added Cache_Map_Manager_Test. - * tests/Cache_Map_Manager_Test: Removed extra comma. - * ace/Caching_Strategies_T.{h, i, cpp} - * ace/Cache_Map_Manager_T.{i,h,cpp} - * ace/Caching_Strategy_Utility_T.{h,i,cpp} - * ace/Cleanup_Strategies_T.{h, i,cpp} - * ace/Hash_Cache_Map_Manager_T.{h, i,cpp} - * ace/ace_dll.dsp: - Added above caching related files into the NT ace workspace. - -Wed Jun 23 10:09:06 1999 David L. Levine - - * ACE-INSTALL.html: updated System Resource requirements discussion. - All of ACE+TAO requires well over 1 Gb of disk now :-/. - -Wed Jun 23 00:03:31 1999 Douglas C. Schmidt - - * ace/SOCK_Dgram.cpp (ACE_SOCK_Dgram): Fixed an unused args - warning. Thanks to David for reporting this. - - * ace/Service_Config.h (ACE_Service_Config): Moved the - documentation for the open() method's "argv" parameters *to* the - open() method. Also clarified that by default we don't install - the "statically configured services" (such as ACE_Svc_Manager). - Thanks to Ian MacDonald for motivating this. - - * ace/OS.i (accept): Added a new workaround for platforms - like VxWorks that can't handle NULL addrs to accept(). Thanks - to James Hu and John Weald - for this fix. - - * ace/config-vxworks5.x.h: Added a new macro - ACE_HAS_BROKEN_ACCEPT_ADDR to work around VxWorks problems - with NULL addrs to accept(). - -Tue Jun 22 21:17:49 1999 Kirthika Parameswaran - - * tests/Cache_Map_Manager_Test.cpp: Tests the Cache_Map_Manager - as well as the Hash_Cache_Map_Manager which has additional - features of caching and purging of entries along with the map - properties. - * tests/Makefile: Added Cache_Map_Manager_Test.cpp - -Tue Jun 22 15:20:53 1999 David L. Levine - - * tests/Thread_Manager_Test.cpp (main): removed THR_DETACHED. - That seems to solve the libthread panic problem on Solaris, - even with group signalling enabled. Thanks to Carlos for - suggesting this. - -Tue Jun 22 15:11:34 1999 Matthew J Braun - - * ace/Containers_T.h,i - Added new next(T *&) methods to the ACE_DLList_Iterator - classes and marked the old versions as DEPRECATED. - -Tue Jun 22 13:40:22 1999 David L. Levine - - * docs/tutorials/*/Makefile: replace rm -f with $(RM). - -Tue Jun 22 13:07:19 1999 Carlos O'Ryan - - * tests/Message_Block_Test.cpp: - * websvcs/lib/URL_Addr.i: - * websvcs/lib/URL_Addr.cpp: - Removed more g++ -W warnings - -Tue Jun 22 11:12:42 1999 David L. Levine - - * ACE-INSTALL.html: added System Resource Requirements - section. Thanks to Hakan Kallberg - and Eric Mitchell for the - Linux swap space and -pipe removal suggestions. - -Tue Jun 22 07:45:59 1999 David L. Levine - - * ace/Event_Handler_T.i: fixed some occurrences of - ACE_INLINE that were after the function return type. - -Tue Jun 22 07:30:12 1999 David L. Levine - - * ace/Stats.cpp: fixed for ACE_LACKS_LONGLONG_T platforms. - (sample): replace return statement with an else branch, to - make it easier to see what the code is doing. - -Mon Jun 21 23:36:02 1999 Carlos O'Ryan - - * websvcs/lib/URL_Addr.cpp: - Fixed warnings about unused variables. - -Mon Jun 21 23:27:01 1999 Darrell Brunsch - - * ace/SString.h: Added ACE_TString typdef that is either a - ACE_CString or ACE_WString, depending on whether UNICODE - is defined. - -Mon Jun 21 23:22:46 1999 Douglas C. Schmidt - - * examples/Misc/test_trace.cpp: Improved this test so it will - work more effectively on single-threaded *and* multi-threaded - platforms. Thanks to Hao Ruan for reporting - this. Also fixed a warnng in this test caused by failure to - return a value on every return path. Thanks to David Levine for - reporting this. - -Mon Jun 21 14:17:22 1999 Carlos O'Ryan - - * ace/Stats.h: - * ace/Stats.cpp: - Added new class to keep latency and throughput statistics. - -Mon Jun 21 13:24:41 1999 David L. Levine - - * include/makeinclude/platform_freebsd.GNU,platform_linux.GNU, - platform_linux_lxpthread.GNU,platform_psosim_g++.GNU, - platform_qnx_neutrino.GNU,platform_sunos5_g++.GNU, - platform_vxworks5.x_g++.GNU: added -W to CFLAGS. -Wall - doesn't include the -W checks, at least with egcs 1.1.2. - -Mon Jun 21 10:18:01 1999 David L. Levine - - * ace/Makefile: moved FlReactor, Msg_WFMO_Reactor, TkReactor, - and XtReactor from OTHER to DEMUX_FILES because TAO uses - them in some configurations. They add negligible size - overhead when not used. Thanks to Nanbor for pointing this - out. - -Mon Jun 21 10:11:15 1999 Carlos O'Ryan - - * ace/Makefile: - The TP_Reactor is used by TAO, but was listed in the OTHER - component. Moved to the DEMUX component to make it always - available. Thanks to David Levine for pointing this out. - -Mon Jun 21 09:58:42 1999 Joe Hoffert - - * ace/QoS.{h,cpp}: Removed these files from ACE since they have a - lot of problems. Will add back later when they compile and are - tested. - -Mon Jun 21 08:40:14 1999 Steve Huston - - * examples/Connection/misc/Connection_Handler.cpp (handle_input): - Corrected signed/unsigned mismatch I accidentally put in last week. - - * ace/CORBA_macros.h: Added __HP_aCC to the compilers that need - special handling for throwing an exception from a value-returning - function. - - * include/makeinclude/platform_hpux_aCC.GNU: Added +DAportable - to CCFLAGS if no architecture specified. Added -z to LDFLAGS - to force SEGV on dereference 0 pointer. Added definition for - CPP_LOCATION to not use aCC - it displays warnings for unrecognized - #pragmas and this dirties the TAO builds. Thanks to Brian Wallis - for these ideas. - -Sat Jun 19 22:28:35 1999 Carlos O'Ryan - - * bin/auto_compile: - Updated the list of tests run every night. - -Sat Jun 19 18:15:48 1999 Carlos O'Ryan - - * ace/OS.h: - * ace/CORBA_macros.h: - The ACE_GUARD macros needed some blanks to work with a template - as the lock type parameter. - -Sat Jun 19 10:34:55 1999 Douglas C. Schmidt - - * ace/Acceptor.cpp, - ace/Connector.cpp: Modified the make_svc_handler() hook method - in these classes to set the Reactor of the newly created - SVC_HANDLER to the same reactor that the Acceptor or Connector - is using. Thanks to John Aughey for - this suggestion. - - * man/{html,man3}: Zapped the Ace_Export.* files since - they don't belong here. Thanks to Zoran Ivanovic - for reporting this. - -Fri Jun 18 20:49:09 1999 Irfan Pyarali - - * ace/Synch.cpp: Added template instantiations for - ACE_Write_Guard. - -Fri Jun 18 19:30:09 1999 Douglas C. Schmidt - - * ACE version 4.6.42 released. - -Fri Jun 18 18:49:39 1999 Carlos O'Ryan - - * tests/Makefile: - * tests/run_tests.psosim: - * tests/run_tests.sh: - * tests/run_tests.vxworks: - Disabled Map_Manager_Test, it does not work with too many - platforms and the features it tests are not used (yet). - -Fri Jun 18 16:54:43 1999 Irfan Pyarali - - * tests/Message_Queue_Test.cpp: - * tests/Message_Block_Test.cpp: - Removed template instantiations for ACE_Message_Queue_Iterator - and ACE_Message_Queue_Reverse_Iterator. They are already - available in the ace library. - - * ace/Service_Types.cpp: Added explicit instantiations for - ACE_Message_Queue_Reverse_Iterator. ACE_Message_Queue and - ACE_Message_Queue_Iterator were already there. This addition - will complete the set. - -Fri Jun 18 12:12:59 1999 Douglas C. Schmidt - - * ace/SOCK_Dgram: Added the first set of hooks to support - QoS-enabled data grams for Win2K GQoS. - -Fri Jun 18 11:37:31 1999 Nanbor Wang - - * *.{mdp,mak}: Removed all MSVC++ 4.x workspaces and makefiles. - We are no longer supporting this version of MSVC++. If you need - support for MSVC++ 4.x please contact Steve Huston - of Riverace to arrange a support - contract. - -Fri Jun 18 12:19:42 1999 Matthew J Braun - - * tests/DLList_Test.cpp: Removeed unnecessary explicit template - instantiation that mirrored ones in ace/Containers.cpp to fix - compile errors on VxWorks. Why this _ever_ worked, I don't - know... - -Fri Jun 18 11:37:31 1999 Nanbor Wang - - * ace/Service_Config.h (class ACE_Static_Svc_Descriptor): Changed - the type of from LPTCSTR to 'const ASYS_TCHAR*'. - -Thu Jun 17 12:46:30 1999 Douglas C. Schmidt - - * tests/Conn_Test.cpp: Fixed a problem with explicit template - instantiations so that this test will compile even if ACE isn't - built with threads. - - * netsvcs/lib/Server_Logging_Handler.cpp: Fixed the explicit - template instantiations so hopefully they'll work when ACE is - compiled without threads. Thanks to Carlos for reporting this. - - * ace/SOCK_Dgram_Mcast.cpp: We needed to modify the return values - of subscribe_i() so that we'd have the ability to differentiate - a "short-circuit" return on NT. Thanks to Marina for reporting - this. - - * ace/OS.h: Added an automatic test to check if we're running on - an EBCDIC character set, and if so, set - ACE_STANDARD_CHARACTER_SET_SIZE to 256 rather than 128. Thanks - to Jim Rogers for this suggestion. - - * performance-tests/TTCP/Makefile: Zapped the Orbix and ORBeline - directories from the Makefile. These are *way* out of date and - have been superceeded by the versions in - $TAO_ROOT/performance-tests/Thruput/. Thanks to Youzhong Liu - for reporting this. - -Thu Jun 17 12:59:24 1999 Carlos O'Ryan - - * ace/CDR_Stream.h: - * ace/CDR_Stream.i: - Added accessors for the codeset translators. - -Thu Jun 17 00:33:57 1999 Nanbor Wang - - * include/makeinclude/platform_freebsd.GNU (VERSION): Applied the - patch to automatically detect FreeBSD version. Thanks to - Goldshtain Dmitry for providing the - patch. - - * bin/Process_Win32.pm (TimedWait): - Get and return the exit status from the waited process. - -Wed Jun 16 22:03:29 1999 Irfan Pyarali - - * ace/OS.h (ACE_OS): Removed ACE_WIDE_DL_TYPE and the wide char - versions of dlopen(), dlsym(), and dlerror(). Even Win32 - doesn't support them. - - Also changed the argument type of ACE_OS::dlopen(), - ACE_OS::dlsym(), ACE_DLL::ACE_DLL(), ACE_DLL::open(), and - ACE_DLL::symbol() from ACE_DL_TYPE to const char *. Now the - ACE_OS wrappers do the correct const cast before calling the OS - function. Note that since this change is only adding constness - to the argument, the change is backward compatible. - -Wed Jun 16 20:47:27 1999 Carlos O'Ryan - - * bin/Process_Win32.pm: - The wait time for a process seems to be in milliseconds. - -Wed Jun 16 20:03:41 1999 Steve Huston - - * ace/Containers_T.cpp: Qualify dllist_ with 'this->' to get the - template types looked up correctly. This is what fixes the pesky - future error 641 on HP-UX aC++. - - * ace/RB_Tree.i: Qualify node_ and tree_ with 'this->' to get the - template types looked up correctly. aC++ is really happy now, - and so is Steve :-) - -Wed Jun 16 18:50:38 1999 Carlos O'Ryan - - * ace/OS.i: - Fixed typos in single threaded code. - -Wed Jun 16 18:14:45 1999 Kirthika Parameswaran - - * ace/Cached_Connect_Strategy_T.{h, cpp}: Added ATTRIBUTES to - the template list for the Cached_Connect_Strategy_Ex class to - ward off g++ compiler errors. - -Wed Jun 16 15:54:08 1999 Carlos O'Ryan - - * ace/OS.h: - * ace/OS.i: - * ace/config-win32.h: - Auto-detect if we are using MSVC5.0 or MSVC6.0 and define the - ACE_HAS_WINSOCK_GQOS macro in that case. This macro is used in - the places where the QoS data structure of both compilers are - different. - -Mon Jun 14 22:52:48 1999 Kirthika Parameswaran - - * tests/Map_Manager_Test.cpp: Removed template instantiation - regarding ACE_Read_Mutex. Added template - instantiations for ACE_Pair and - ACE_Reference_Pair to make sunc++5.0 happy. - - * ace/Caching_Strategy_Utility_T.{h.cpp}: Removed math.h from the - include list since it caused problems when native exceptions were - enabled. - -Mon Jun 14 21:41:40 1999 Douglas C. Schmidt - - * ace/Connector.h: Added a comment to clarify that if - Connector::connect() fails the close() hook of the Svc_Handler - is called to prevent resource leaks. Thanks to V. Lakshmanan - for motivating this. - -Mon Jun 14 20:54:09 1999 Kirthika Parameswaran - - * ace/Synch.cpp: Declared template definitions for - ACE_Read_Mutex to get around compiler errors - while building $ACE_ROOT/tests. Thanks to Dr.Schmidt for - suggesting this. - -Mon Jun 14 19:33:04 1999 Douglas C. Schmidt - - * ace/SOCK_Acceptor.cpp (accept): Fixed a bizarre problem with - Win32 where it's imperative that the third parameter to - must be a NULL pointer if we want to ignore the client address. - - * ace/OS.i: Cleaned up warnings in join_leaf() and ioctl() due to - unused args. Thanks to Marina for reporting this. - -Mon Jun 14 15:56:27 1999 David L. Levine - - * ace/config-qnx-neutrino.h, - include/makeinclude/platform_qnx_neutrino.GNU: added config - files for QNX Neutrino. They support cross-compiling on a - QNX4 host for Neutrino target. Builds are almost (but not - completely) clean. - - * include/makeinclude/platform_qnx_neutrino.GNU: only - build static libs, because they seem to work better. Many - of the ACE tests pass with this configuration! (Some of - the usual suspects, such as Conn_Test, don't.) - - * ace/config-qnx-neutrino.h: don't need ACE_HAS_PENTIUM here, - because it's in config-g++-common.h. Removed - ACE_HAS_USING_KEYWORD, because g++ 2.8.1 doesn't support - namespaces. - -Mon Jun 14 14:33:29 1999 David L. Levine - - * tests/Reactor_Performance_Test.cpp (handle_input): removed - printout when result == 0. It happens when the client finishes - first, which I think is OK. - -Mon Jun 14 11:55:31 1999 Steve Huston - - * include/makeinclude/platform_aix4_g++.GNU: New platform file for AIX - 4.x using GNU compiler. Been tested w/ egcs 1.1.2. - - * include/makeinclude/platform_aix4_cset++.GNU: Make shared libs - correctly and without building the static one first. - Also, for cset++, disable warnings on AIX 4.3 to shut up the - 0-valued preprocessor warnings. This is not a great - long-term general solution, but it'll do the job. - - * include/makeinclude/wrapper_macros.GNU: - * include/makeinclude/rules.lib.GNU: On AIX, build shared lib w/o - requiring static one first. When building shared libs, also link - against them and install the proper files when done. The correct - files built for libfoo are: - libfoo.a: archive/static library - libfoo.so: shared library, but not set up for run-time linker. - This is the one loaded by ACE dynamic loading. - libfooshr.a: an archive library with libfoo.so as its only - member. This is what to link against when building - a program/library that uses libfoo. - - Silly? Uh-huh. But that's life in AIX land. I tried to get things - building/running clean using the run-time linker (-brtl) but had - no end of trouble. And, since no other libs in /usr/lib want to - do it that way either, it's like this. - -Mon Jun 14 09:58:02 1999 Douglas C. Schmidt - - * ace/OS.i: Added ACE_UNUSED_ARG() macros for all the non-WINSOCK2 - cases in the ACE_Flow_Spec and ACE_QoS methods. Thanks to David - for reporting this. - - * ace/OS.i: Moved the definition of ACE_Errno_Guard's methods to - earlier in the file to avoid problems with inline ordering. - Thanks to David for reporting this. - - * ACE-INSTALL.html: Updated Barry Hoggard's CORBA page URL. - -Mon Jun 14 07:17:23 1999 David L. Levine - - * docs/ACE-guidelines.html: fixed typo: exceptions. - -Sun Jun 13 14:22:54 1999 Douglas C. Schmidt - - * ace/LSOCK_Acceptor.cpp: Rewrote the accept() method to use the - same new technique that's used in ACE_SOCK_Acceptor::accept(). - This is necessary since there's no longer a shared_accept(). - - * ace/SOCK_Acceptor: Removed shared_accept() since it's been split - into two parts to make the QoS features easier to maintain. - - * ace/SOCK_Acceptor: Added the new ACE_Accept_QoS_Params parameter - to the ACE_SOCK_Acceptor::accept(). Also created two new - private methods, shared_accept_start() and - shared_accept_finish(), that factor out common code. - - * ace/SOCK_Connector: Added the new ACE_Connect_QoS_Params - parameter to ACE_SOCK_Connector::connect(). Also created two - new private methods, shared_connect_start() and - shared_connect_finish(), that factor out common code. - - * ace/SOCK_Connector.cpp: Cleaned up the logic that checks for - various types of errors and updated the code to use the new - ACE_Errno_Guard features. - - * ace/OS.h: Added an equality and in-equality operator for - ACE_Errno_Guard and moved all the methods into OS.i rather than - OS.h. Also added an ACE_Export to the ACE_Errno_Guard class so - that it can be used outside of the ACE library. - - * ace/OS.h: For Win32, added support for the WinSock2 QoS - functions WSAAccept(), WSAConnect(), WSAJoinLeaf(), and - WSAIoctl(). - - * ace/OS.h: For Win32, added thin wrappers ACE_Flow_Spec and - ACE_QoS that encapsulate the WinSock2 FLOWSPEC and QOS structs, - respectively. - - * ace/OS.h: For Win32, added an implicit conversion operator from - iovec to WSABUF since they are structurally equivalent. - -Sun Jun 13 14:22:54 1999 Douglas C. Schmidt - - * bin/README.html: Updated the information about the ACE - documentation tools to be more helpful. - -Fri Jun 11 20:04:37 1999 Carlos O'Ryan - - * bin/Process_Unix.pm: - Fixed problems on TimedWait(). - -Fri Jun 11 15:28:44 1999 Douglas C. Schmidt - - * ace/OS.h: Need to add #include before - since pthread.h doesn't include signal.h on SunOS 5.7. Thanks - to Rick Weisner for reporting this. - - * ace/OS: ACE_OS::memchr() should return a const void * rather - than a void *. Thanks to Rick Weisner - for reporting this. - - * ace/Dirent.i: Don't call closedir() on a NULL dirp because some - platforms (such as SunOS 5.7) will segfault! Thanks to Tom - Arbuckle for pointing - this out. - -Fri Jun 11 14:47:47 1999 Carlos O'Ryan - - * bin/auto_compile: Does not compile all the directories in TAO, - because it takes too much space (and time). Run several more - tests in TAO that are stable. Improve output. - - * ace/Log_Msg.cpp: Use ACE_HAS_THR_C_DEST for TSS "destructors", - not ACE_HAS_THR_C_FUNC. - - * bin/ACEutils.pm: - * bin/Process_Unix.pm: - * bin/Process_Win32.pm: Added new routines to wait for a process - with a timeout, ditto for the ACE::waitforfile() routine. They - can be used to write more reliable test drivers. - -Fri Jun 11 14:40:49 1999 David L. Levine - - * bin/create_ace_build: run the directory mode value through eval, - to convert it from octal to decimal, if necessary. Thanks to - Russ Noseworthy for providing the patch. - - * include/makeinclude/platform_sunos5_sunc++.GNU: only set - TEMPLATE_REPOSITORY for Sun C++ 4.2. 5.0 doesn't need it. - Thanks to Dennis C. De Mars for - reporting this. - - * tests/Reactor_Performance_Test.cpp (main): return error status - from run_event_loop () call. And, added a few ACE_ERROR - printouts. Thanks to Steve for mentioned this. - - * ace/config-sunos5.5.h: properly reverted all the changes of - today. The comments are more helpful this way. - - * include/makeinclude/platform_linux_lxpthread.GNU: changed - PLATFORM_AIO_SUPPORT to use := instead of =, so that it only - invokes the shell once. Thanks to Lothar Werzinger - for suggesting this. - -Fri Jun 11 12:10:00 1999 Chris Gill - - * tests/RB_Tree_Test.{cpp, h (new)}: factored out class template - declaration into a .h file to make AIX C++ happy. - -Thu Jun 10 23:11:36 1999 Kirthika Parameswaran - - * ace/Cache_Map_Manager_T.{h, i, cpp}: Added Iterator - implementations to the template parameters to be able to build - using the g++ compiler. Also removed unnecessary HASH_KEY and - COMPARE_KEYS from the template list. - - * ace/Hash_Cache_Map_Manager_T.{h, i, cpp}: Made appropriate - changes to support changes made to Cache_Map_Manager. - - * ace/Caching_Strategies_T.{h, i, cpp}: Added an overloaded - clear_cache method which allows the user to specify the total - number of entries in the cache. Also added the - Caching_Strategy_Utility parameter which decouples the actual - purging from the caching strategy. - - * ace/Caching_Strategy_Utility.{h,i,cpp}: Added a Null version of - the utility to be used with the Null strategy. - - * ace/Cleanup_Strategies_T.{h,i,cpp}: Added the ACE_UNSED_ARGS - macro to ward of g++ warnings. - - * tests/Map_Manager_Test.cpp: Added performance tests for the - Cache_Map_Manager and the Hash_Cache_Map_Manager. - -Thu Jun 10 20:29:00 1999 Chris Gill - - * ace/RB_Tree.h: Made constructors for iterator base class - protected instead of protected, so the the base class can only - be constructed by the derived forward and reverse iterator - classes. Thanks to Matt Braun for pointing this out. - - * tests/RB_Tree_Test.cpp: Major overhaul of the test to use a test - class template that encapsulates the test details and makes the - code much more readable. Then, the main program merely - instantiates a test for each of the four possible combinations - of key/item type parameterization over int and const char *, and - calls the run_test () method of each test instance. - -Thu Jun 10 12:44:22 1999 Steve Huston - - * tests/UPIPE_SAP_Test.cpp: Disable for Win32 if !ACE_HAS_WINNT4. - The test relies on ACE_SPIPE_Acceptor which requires NT4 to - work. - -Thu Jun 10 12:47:52 1999 David L. Levine - - * ace/config-linux-lxpthreads.h: removed ACE_HAS_AIO_CALLS. It's - now enabled in the platform_macros.GNU file: - - * include/makeinclude/platform_linux_lxpthread.GNU: added - automatic detection of AIO support, based on existence of - /usr/lib/librt.so. - - * include/makeinclude/platform_linux_lxpthread.GNU: add -lrt to - LIBS only if $(PLATFORM_AIO_SUPPORT) is equal to - -DACE_HAS_AIO_CALLS. - - Thanks to Jake Hamby for reporting that not - all Linux platforms have AIO support. - -Thu Jun 10 10:17:08 1999 David L. Levine - - * ace/config-sunos5.5.h: with Sun C++ 5.0, #define - _RWSTD_NO_EXCEPTIONS 1 if exceptions are not enabled. This - avoids a warning about throw expressions being ignored with - -noex. See /opt/SUNWspro_5.0/SC5.0/include/CC/stdcomp.h for - more information. - - * ace/os-patches/vxworks-5.1.txt,ACE-INSTALL.html: added these - notes for using ACE with VxWorks 5.1. - - * docs/ACE-guidelines.html: avoid source code filenames that - include "Error". Avoid #include . - -Wed Jun 9 21:45:24 1999 Douglas C. Schmidt - - * tests/Svc_Handler_Test.cpp (main): Revised the test a bit to - make it more clear what's going on. - - * ace/Svc_Handler.cpp: Fixed a typo in flush() -- we need to - update the temp pointer with temp->cont() *not* entry->cont(). - - * ace/Svc_Handler.cpp (dump): Fixed a typo -- I wasn't comparing - the pointer to 0, I was comparing the ACE_Time_Value! - -Wed Jun 9 21:10:00 1999 Chris Gill - - * ace/config-psos-diab-ppc.h: added - ACE_HAS_NONCONST_SELECT_TIMEVAL - - * tests/RB_Tree_Test.cpp: fixed constness issues revealed by - SunC++ 5.0, added return value assertions for insert calls, - added typedefs. - -Wed Jun 9 20:40:50 1999 Carlos O'Ryan - - * ace/CDR_Stream.h: - * ace/CDR_Stream.cpp: Added new methods to support message - reassembly in GIOP 1.1 - -Wed Jun 9 15:32:37 1999 Douglas C. Schmidt - - * ace/Message_Queue_T: Added a lock() accessor method so that - other components can access the lock used by a Message Queue. - - * ace/Svc_Handler.cpp: Added better support for timeout handling - for the ACE_Buffered_Svc_Handler. - - * ace/Svc_Handler: Split the buffering portion of ACE_Svc_Handler - off into a separate class called ACE_Buffered_Svc_Handler to - avoid adding extra space and complexity to the existing - ACE_Svc_Handler. Thanks to Irfan for suggesting this, as well - as also suggesting ways to improve the performance by caching - the current size of the buffer. - - * ace/OS.h: Added a patch to work around some problems with macros - for USYNCH_THREAD. Thanks to David Levine and Russ Noseworthy - for this. - - * examples/Threads/task_five.cpp (main): Improved the form and - content of this example a bit. - - * include/makeinclude/platform_sunos5_sunc++.GNU, - * include/makeinclude/platform_sunos5_g++.GNU, - * include/makeinclude/platform_irix6.x_g++.GNU, - * include/makeinclude/platform_linux_lxpthread.GNU, - * include/makeinclude/platform_irix6.x_sgic++.GNU: - Added support to make it easier to override various settings - in platform_macros files. Thanks to Dave Meyer - for contributing this. - - * ace/SPIPE_Stream: Added sendv(), sendv_n(), and recvv_n() - methods to SPIPE_Stream. Thank to Carlos for pointing this out. - - * ace/config-mvs.h: Changed the size of the ACE_SIZEOF_DOUBLE and - ACE_SIZEOF_LONG_DOUBLE from 4 and to 8 and 16, respectively. - Thanks to Jim Rogers for reporting this. - - * ace/config-mvs.h: Added ACE_HAS_NONCONST_SELECT_TIMEVAL on the - advice of Jim Rogers . - - * ace/OS.h (class ACE_Errno_Guard): Propagate the return value of - the assignment operator to allow chaining. Thanks to Jeff for - reporting this. - - - * ace/OS.i: Fixed a bizzarre problem with lower-case ace_os::. - Thanks to Andy for pointing this out. - - * ace/Svc_Conf.y: Don't enable YYDEBUG by default so that we can - save some space in the generated code. - - * ace/OS: Added several more uses of ACE_Errno_Guard, which has - been enhanced to support assignment. Thanks to Irfan for - suggesting this. - - * tests/Svc_Handler_Test.cpp: Added a simple test for the new - buffering feature in ACE_Svc_Handler. - - * ace/Strategies.cpp: Added an explicit template instantiation for - ACE_Message_Queue_Iterator since this is now - used in ACE_Svc_Handler. - - * ace/Svc_Handler: Added a "buffering" feature to the - ACE_Svc_Handler. This feature makes it possible to queue up - ACE_Message_Blocks in an ACE_Message_Queue until (1) the queue - is "full" or (2) a period of time elapses, at which point the - queue is "flushed" via sendv_n() to the peer. - -Wed Jun 9 12:23:30 1999 Jeff Parsons - - * tests/version_tests/version_tests.dsw: - * tests/run_tests.bat: - * tests/run_tests.psosim: - * tests/run_tests.vxworks: - Added Svc_Handler_Test to these. - - * tests/tests.dsw: - Added Svc_Handler_Test.dsp (created and checked in by - Nanbor) to the workspace. - -Wed Jun 9 10:46:07 1999 Carlos O'Ryan - - * ace/Strategies.cpp: - Moved template instantiations to ace/Service_Types.cpp - - * ace/Service_Types.cpp: - Added missing template instantiations for - ACE_Message_Queue_Iterator<> - - * ace/Svc_Handler.cpp (flush): - Removed extra characters and the end of a #endif - Fixed warning about unused variable - Use right iterator for the Message_Queue - -Wed Jun 09 10:11:29 1999 David L. Levine - - * ace/config-g++-common.h: added #define of - ACE_NEW_THROWS_EXCEPTIONS, with egcs if ACE_HAS_EXCEPTIONS is - #defined. That allows ACE's New_Fail_Test to pass. Thanks - to Jake Hamby for providing the fix. - -Tue Jun 8 22:44:18 1999 Douglas C. Schmidt - - * Hacked BYACC to generate a parser that doesn't have any - incorrect const char *'s. This clears the last major const - issue in libACE. - -Tue Jun 8 20:46:05 1999 Matthew J Braun - - * ace/Functor.i,h: - Migrated ACE_Hash template specializations to the ace type - wrappers (ACE_UINT16, etc). - -Tue Jun 8 15:47:06 1999 Douglas C. Schmidt - - * ace: Updated most of the places in ACE that can benefit from the - new ACE_Errno_Guard class. - - * ace/OS.h: Added a new ACE_Errno_Guard class that improves - performance when thread-specific errno must be saved/restored in - a block of code. Thanks to Serge Kolgan for - motivating this and to Rick Weisner - for explaining the technique to Serge. - - * ace/Env_Value_T.h: Added a new ACE_Convert() function that works - for const char *'s. Thanks to David for reporting this. - -Tue Jun 08 18:08:41 1999 Steve Huston - - * ace/OS.h: Added new overridable macro, ACE_LOCALHOST. This allows - overriding of the string used to do a loopback IP socket to the - local host. Some systems (e.g. PharLap ETS) don't have a host table - out of the box, and require an IP address string. - - * ace/Pipe.cpp: Use the new ACE_LOCALHOST macro instead of a hard - "localhost" when using a socket to emulate a pipe. Thanks to - Bruce Trask for working to get this - ironed out for PharLap ETS. - - * README: Added Bruce Trask to the Hall of Fame ;-) - - * tests/SOCK_Connector_Test.cpp: Check for failed host lookup - before trying to connect. Changed the way sethostent is done on - AIX 4.3 to work around an apparent bug in AIX 4.3. - -Tue Jun 08 13:46:38 1999 Nanbor Wang - - * ace/OS.h (wmain): Added a new macro to tweak the wchat_t version - of main program entry point to create the non-static - Object_Manager. This is only enabled if UNICODE and ACE_WIN32 - is defined (although you can also use wmain under non-UNICODE - environment). - -Mon Jun 07 14:34:53 1999 Nanbor Wang - - * ace/CORBA_macros.h: The member function for dumping - TAO_Exception is changed to _tao_print_exception. - -Tue Jun 08 14:44:07 1999 David L. Levine - - * tests/Thread_Manager_Test.cpp (main): on Sun only, added 5 - second sleep before the "main thread finished" printout. It - might help (but certainly doesn't prevent) avoid an occasional - thread lib panic on SunOS 5.5 through 5.7. - -Tue Jun 08 14:01:51 1999 David L. Levine - - * ACE version 4.6.41 released. - -Tue Jun 8 12:42:56 1999 Douglas C. Schmidt - - * Fixed lots of brokens URL links. Thanks to Eric S Rosenthal - for reporting these. - -Mon Jun 7 17:09:56 1999 Douglas C. Schmidt - - * examples/Naming/test_multiple_contexts.cpp (main): Added a cast - to resolve const problems. Thanks to David for reporting this. - - * examples/Naming/test_writers.cpp (main): Fixed a typo. Thanks - to David for reporting this. - -Mon Jun 7 14:21:48 1999 Kirthika Parameswaran - - * tests/DLL_Test.cpp (main): ANSI C++ spec doesnt allow void * to - be typecasted to a function_pointer. Hence made changes to - remove the warning due to this. Thanks to Nanbor - for pointing it out. - -Mon Jun 7 14:12:02 1999 Nanbor Wang - - * ACE-INSTALL.html: Added a general section explaining the order - of user defined macros and platform config file. Thanks to - Stephen E Blake for pointing - this out. - -Mon Jun 07 10:55:12 1999 David L. Levine - - * ace/config-osf1-4.0.h: added #define ACE_HAS_BROKEN_T_ERROR - to permit building again. Thanks to Doug for this fix. - -Mon Jun 7 12:35:17 1999 Douglas C. Schmidt - - * examples/Service_Configurator/IPC-tests/client: Fixed some more - warnings related to const-correctness. I believe that ACE is - now just about completely const-correct. - - * examples/Service_Configurator/Misc/main.cpp (main): Cast to - (ASYS_TCHAR **) rather than (ASYS_THCAR *[]). Thanks to David - for reporting this. - - * examples/IPC_SAP/DEV_SAP/writer/writer.cpp (main): Fixed a stray - comma. Thanks to David for reporting this. - - * tests/Hash_Map_Manager_Test.cpp: Changed the use of ASYS_TCHAR * - to LPCTSTR to ensure const-correctness. - - * netsvcs/lib: Reformatted all the *.h files to conform to the ACE - programming guidelines. - -Sun Jun 6 22:02:43 1999 Douglas C. Schmidt - - * ace/OS.i (t_error): Fixed the broken t_error() usage on SunOS - 5.5 and 5.6... - - * ace/README: Added a new macro called ACE_HAS_BROKEN_T_ERROR to - workaround the frigging broken prototype for t_error() on - Solaris 2.5. Note that this macro is required for SunOS 2.5 and - 2.6, but not SunOS 2.7 (thank goodness). - - * Fixed gazillions of incorrect usages of char * (which should - have been const char *) throughout ACE. - - * netsvcs/clients/Tokens: Fixed some const char * inconsistencies. - - * netsvcs/lib/Name_Handler.h: Fixed another inconsistent use of - char * that should have been const char *. - - * ace/Service_Config.h: Fixed a const incorrectness in the - ACE_Static_Svc_Descriptor. - - * ace/Process.h (ACE_Process_Options): The parameter type of - command_line() should be LPCTSTR argv[] *not* LPTSTR argv[]. - This fix should be ok as a further extension to what Carlos did - below. - -Sun Jun 06 20:33:00 1999 Carlos O'Ryan - - * ace/SString.h: - Added missing ACE_Export macro - -Sun Jun 6 20:34:40 1999 Carlos O'Ryan - - * ace/Synch.h: - * ace/Timer_Queue_T.h: - * ace/Timer_Queue.cpp: - * ace/Select_Reactor.cpp: - Moved explicit template instantiations around, now ACE compiles - and links with Sun/CC and inlining enabled. TAO does not. - -Sun Jun 6 18:05:48 1999 Carlos O'Ryan - - * ace/Process.h: - * ace/Process.cpp: - Added const-correct version of the command_line() method, in the - future we should remove the non-const version, but I don't feel - like breaking an interface today. - - -Sun Jun 06 09:08:48 1999 David L. Levine - - * PROBLEM-REPORT-FORM: added requests to not send - as attachment, or tar'red, compressed, and/or - uuencoded, or with line lengths >= 80 characters. - -Sun Jun 06 08:08:11 1999 David L. Levine - - * ace/Functor.{h,i} (ACE_Hash::operator ()): - conditionally compile only if ACE_SIZEOF_LONG is not 8, - to avoid conflict with ACE_HASH on 64-bit - platforms (alphas). - -Sat Jun 5 23:34:21 1999 Douglas C. Schmidt - - * ace/Containers_T: Changed all uses of "index" to "slot" to avoid - conflicts with broken C++ compilers that define macros named - "index." - -Sat Jun 5 22:57:31 1999 Carlos O'Ryan - - * ace/OS.h: - Added new macro (ACE_TEMPLATE_SPECIALIZATION) to handle the - differences between compilers supporting the standard way to - specialize a template (i.e. template<> class Foo) vs. the - old style (just saying class Foo). - Also added new macro ACE_HAS_STD_TEMPLATE_SPECIALIZATION that - platforms must define if they want the new style. - - * ace/Filecache.cpp: - * ace/Functor.h: - Use the new ACE_TEMPLATE_SPECIALIZATION macro - - * ace/config-sunos5.5.h: - Define the new ACE_HAS_STD_TEMPLATE_SPECIALIZATION for Sun/CC - 5.0 - - * ACE-INSTALL.html: - Added some notes about our success with Sun/CC 5.0 - -Sat Jun 5 16:48:47 1999 Carlos O'Ryan - - * ace/config-irix6.x-common.h - * ace/config-irix6.x-sgic++-nothreads.h - * ace/config-irix6.x-sgic++.h - * include/makeinclude/platform_irix6.x-sgic++.GNU - * include/makeinclude/platform_irix6.x_common.GNU - * include/makeinclude/platform_irix6.x_g++.GNU - * include/makeinclude/platform_irix6.x_kcc.GNU - * include/makeinclude/platform_irix6.x_sgic++.GNU: On IRIX 6.5 we - must not define ACE_LACKS_NETDB_REENTRANT_FUNCTIONS, thanks to - Bob Laferriere for pointing this out. - Created a new platform_*.GNU file that auto detects the IRIX - version (couldn't find a pre-processor macro to do it); also - renamed the platform_irix6.x-sgic++.GNU file to use underscore - instead of '-'; that way it is more consistent with the other - files. - -Sat Jun 5 13:29:07 1999 Douglas C. Schmidt - - * ace/Codeset_IBM1047: Minor reformatting to conform to ACE - programming guidelines. - -Sat Jun 5 13:00:46 1999 Carlos O'Ryan - - * ace/CDR_Stream.h: - * ace/CDR_Stream.i: - * ace/CDR_Stream.cpp: - New methods added to the InputCDR class to simplify the process - of reading a buffer from a socket or file. - -Fri Jun 4 23:52:19 1999 Carlos O'Ryan - - * ace/CDR_Stream.h: - * ace/CDR_Stream.i: - * ace/CDR_Stream.cpp: - Added support for codeset translators. - Many thanks to Jim Rogers for providing - these fixes. - - * ace/Makefile: - * ace/Codeset_IBM1047.h: - * ace/Codeset_IBM1047.cpp: - A pair of codeset translators between IBM1047 (aka EBCDIC) and - ISO8859-1 (aka ISO-Latin-1) - - * ace/config-mvs.h: - Define an ACE_MVS macro - -Fri Jun 4 15:23:18 1999 Kirthika Parameswaran - - * ace/Cached_Connect_Strategy_T.{h,i,cpp}: Removed common code by - making Cached_Connect_Strategy_Ex derive from - Cached_Connect_Strategy class. - -Fri Jun 04 09:59:58 1999 Irfan Pyarali - - * docs/tutorials/tutorials.dsw: Fixed "_" to "-". Thanks to Tom - Bradley for pointing - out this problem. - -Fri Jun 4 09:02:35 1999 Aniruddha Gokhale - - * ace/POSIX_Asynch_IO.cpp: Fixed a syntax error. There were two - consecutive commas in the ACE_DEBUG statement which were causing - syntax errors while compiling. - -Fri Jun 4 00:28:07 1999 Alexander Babu Arulanthu - - * ace/POSIX_Asynch_IO.cpp: Fixed the Linux egcs warning. - -Thu Jun 3 17:05:36 1999 Kirthika Parameswaran - - * ace/Cached_Connect_Strategy_T.h - * ace/Cached_Connect_Strategy_T.i - * ace/Cached_Connect_Strategy_T.cpp - - Caching connection strategy used by the Strategy Connector. - - * ace/Cache_Map_Manager_T.h - * ace/Cache_Map_Manager_T.i - * ace/Cache_Map_Manager_T.cpp - - Map Manager which performs caching depending on the caching - strategy used. - - * ace/Hash_Cache_Map_Manager_T.h - * ace/Hash_Cache_Map_Manager_T.i - * ace/Hash_Cache_Map_Manager_T.cpp - - Hash_Map used as a specialised form of the Cache Map. - - * ace/Caching_Strategies_T.h - * ace/Caching_Strategies_T.i - * ace/Caching_Strategies_T.cpp - - Strategies used for caching purposes, example: Least Recently - Used. - - * ace/Caching_Strategy_Utility_T.h - * ace/Caching_Strategy_Utility_T.i - * ace/Caching_Strategy_Utility_T.cpp - - Helper class for the caching strategy classes which does the - purging of entries. - - * ace/Cleanup_Strategies_T.h - * ace/Cleanup_Strategies_T.i - * ace/Cleanup_Strategies_T.cpp - - Strategy which deals with destruction and cleanup in general. - - * ace/Makefile - - Added the above under the TEMPLATE_FILES. - - * examples/Web_Crawler/Optimal_Cache_Map_Manager_T.h - * examples/Web_Crawler/Optimal_Cache_Map_Manager_T.i - * examples/Web_Crawler/Optimal_Cache_Map_Manager_T.cpp - * examples/Web_Crawler/Cached_Connect_Strategy_T.h - * examples/Web_Crawler/Cached_Connect_Strategy_T.i - * examples/Web_Crawler/Cached_Connect_Strategy_T.cpp - * examples/Web_Crawler/Caching_Strategies_T.h - * examples/Web_Crawler/Caching_Strategies_T.i - * examples/Web_Crawler/Caching_Strategies_T.cpp - - Removed these files and added them to the ace library itself. - - * examples/Web_Crawler/Command_Processor.cpp - * examples/Web_Crawler/Command_Processor.h - * examples/Web_Crawler/HTTP_URL.cpp - * examples/Web_Crawler/HTTP_URL.h - * examples/Web_Crawler/Iterators.h - * examples/Web_Crawler/Makefile - * examples/Web_Crawler/Mem_Map_Stream.cpp - * examples/Web_Crawler/Mem_Map_Stream.h - * examples/Web_Crawler/Options.h - * examples/Web_Crawler/URL.h - * examples/Web_Crawler/URL_Addr.h - * examples/Web_Crawler/URL_Status.h - * examples/Web_Crawler/URL_Visitor.cpp - * examples/Web_Crawler/URL_Visitor.h - * examples/Web_Crawler/URL_Visitor_Factory.h - * examples/Web_Crawler/Web_Crawler.h - * examples/Web_Crawler/main.cpp - - Changed to include files pertaining to Caching and Connection - management from ace library. - -Thu Jun 03 15:57:43 1999 Irfan Pyarali - - * ace/Strategies_T (ACE_Cached_Connect_Strategy): Allowed the user - to pass in a mutex. This allows the user to pass in a - preconfigured mutex of his/her liking. Since the parameters - default appropriately, no existing code should break. - - * ace/Functor: Changed ACE_Hash specialization - to ACE_Hash. - -Thu Jun 3 10:36:35 Matthew J Braun - - * ace/Functor.i - * ace/Functor.h: - Added ACE_Hash . It truncates the ULongLong - to a ULong and returns it. Nothing major... - -Wed Jun 2 17:50:23 1999 Carlos O'Ryan - - * include/makeinclude/platform_mvs.GNU: - Debugging info was not generated on the C++ files. - The -+ flag should be added to CPPFLAGS using += - Thanks to Jim Rogers for these fixes. - -Wed Jun 02 16:11:34 1999 Nanbor Wang - - * ace/TTY_IO.cpp (control): Commented out odd baud rates (56000, - 128000, 256000) which don't seem to be supported on FreeBSD. - -Wed Jun 02 00:07:44 1999 - - * tao/test_cancel.dsp - * tao/post_completions. - * tao/test_end_event_lo - * tao/test_multiple_loo - * tao/test_proactor.dsp - * tao/test_proactor.dsw - * tao/test_timeout.dsp - - * examples/Reactor/Proactor/test_cancel.cpp: - * examples/Reactor/Proactor/README: - * examples/Reactor/Proactor/Makefile: - - Related to ChangeLog : Tue Jun 1 16:48:58 1999 Alexander Babu - Arulanthu - -Tue Jun 1 21:44:05 1999 Carlos O'Ryan - - * include/makeinclude/platform_linux_lxpthread.GNU: - Added the rt library to the command line, ACE uses aynchronous - I/O by default on linux. - -Tue Jun 1 16:48:58 1999 Alexander Babu Arulanthu - - Ported to POSIX platforms based - on API. Made the return values consistent in both - WIN32 and POSIX platforms as follows. - - All completion notifications for the I/O operations will occur - normally. - - = Return Values: - - -1 : Operation failed. (can get only in POSIX). - 0 : All the operations were cancelled. - 1 : All the operations were already finished in this - handle. Unable to cancel them. - 2 : Atleast one of the requested operations cannot be - cancelled. - - * ace/Asynch_IO.cpp - * ace/Asynch_IO.h - * ace/POSIX_Asynch_IO.cpp - * ace/POSIX_Asynch_IO.h - * ace/POSIX_Proactor.h - * ace/WIN32_Asynch_IO.cpp: - * ace/POSIX_Proactor.cpp: - - * ace/config-linux-lxpthreads.h: Enabled the ACE_HAS_AIO_CALLS - flag for this platform. - - -Tue Jun 1 15:02:34 1999 Carlos O'Ryan - - * ace/Connector.h: - Documented the new connect() method - -Tue Jun 01 11:18:03 1999 - - * examples/Reactor/Proactor/test_end_event_loop.cpp: - * tao/post_completions.cpp - * tao/test_end_event_loop.cpp - * tao/test_end_event_loop.dsp - * tao/test_proactor.dsw - Fixed the link problems. - -Tue Jun 1 09:57:42 1999 Douglas C. Schmidt - - * ace/TTY_IO.cpp (control), - * ace/config-freebsd.h, - ace/config-freebsd-pthread.h: Attached is a patch that will - allow the ACE_TTY_IO class to work with FreeBSD tty devices. - Thanks to John Aughey for contributing these. - - * ACE-INSTALL.html: Updated the list of platforms that ACE is - supported on. - -Tue Jun 01 10:00:29 1999 David L. Levine - - * ACE-INSTALL.html: updated Sun C++ and DU versions in fully - supported platforms list. - -Mon May 31 22:45:18 1999 David L. Levine - - * ace/config-lynxos.h: added ACE_HAS_GPERF. - -Mon May 31 16:28:27 1999 Jeff Parsons - - * ace/CDR_Stream.h: - Added and updated some comments. - -Mon May 31 16:13:21 1999 David L. Levine - - * ace/Makefile: if ACE_COMPONENTS is equal to FOR_TAO, - override it with the proper component values. The - override allows it to be set on the command line, e.g., - make ACE_COMPONENTS=FOR_TAO. Thanks to Carlos for - reporting this. - -Mon May 31 14:00:21 1999 Steve Huston - - * ace/RB_Tree.i: Reverted changes from May 21. It broke the LynxOS - build of tests/RB_Tree_Test. - -Mon May 31 11:51:03 1999 Douglas C. Schmidt - - * ace/CORBA_Handler.h: Updated the comments to clarify how to use - this class. Thanks to Ram Vishnuvajjala - for motivating this. - - * ace/Service_Config: Added a static variable called is_initialized - that keeps track of whether the is already - initialized. If it is, we can't allow to be called - since it's not reentrant... - -Sun May 30 14:08:48 1999 Ossama Othman - - * ace/Makefile: - * ace/Vector.{h,i,cpp}: - * tests/Makefile: - * tests/Vector_Test.cpp: Removed the ACE_Vector implementation - from the distribution. - -Sat May 29 14:14:37 1999 Ossama Othman - - * ace/Vector.{h,i,cpp}: Added STL Vector-style insert() and - erase() methods. Also added a new constructor that creates an - ACE_Vector from a specified range of iterators. ACE_Vector - class is now Purify clean (i.e. fixed any and all memory leaks). - - * tests/Vector_Test.cpp: Added tests for the newly added - ACE_Vector::insert() and ACE_Vector::erase() methods. - -Fri May 28 20:19:50 1999 Ossama Othman - - * ace/Vector.{h,i,cpp}, - tests/Vector_Test.cpp: Implemented an ACE_Vector class based on - the ACE_Array class. It is not derived from it, however. The - ACE_Vector class provides an STL Vector-like interface. The - Vector_Test tests the important features of the ACE_Vector class - and sends output to `logs/Vector_Test.log'. - - * ace/Makefile, - tests/Makefile: Added ACE_Vector related files to the makefiles - and updated the dependencies. - -Thu May 27 15:50:17 1999 Ossama Othman - - * ace/UNIX_Addr.cpp (set), Explicitly set the sun_family to - AF_UNIX, otherwise it will be zero by a previous call to - memset(). AF_UNSPEC, which is zero, is what the call to - memset() cause the sun_family to be. - -Wed May 26 01:46:27 1999 Nanbor Wang - - * include/makeinclude/platform_freebsd.GNU: - * include/makeinclude/platform_freebsd_pthread.GNU: Consolidated - platform macro files for FreeBSD. - - * ace/config-freebsd-pthread.h: - * ace/config-freebsd.h: Added ACE_HAS_NONCONST_SELECT_TIMEVAL. - -Tue May 25 21:38:40 1999 Carlos O'Ryan - - * ace/UNIX_Addr.cpp: The default constructor was not setting the - address family to AF_UNIX. Now that we do so we can let the OS - select a ephemeral UNIX domain endpoint for us. - -Tue May 25 19:20:15 1999 Steve Huston - - * tests/run_tests.(sh bat): Added SOCK_Send_Recv_Test. - -Tue May 25 16:54:41 1999 Jeff Parsons - - * tests/SOCK_Send_Recv_Test.cpp: - Fixed a signed/unsigned mismatch warning and - changed several uses of static_cast to - reinterpret_cast. This is a belated entry, I put it - first in TAO/ChangeLog by mistake. - -Tue May 25 15:19:06 1999 David L. Levine - - * include/makeinclude/platform_sunos5_ghs.GNU: added - -Xleaveg7 to CFLAGS with threads=1. It's necessary - to avoid execution problems in multithreaded programs. - Thanks to Stefaan Kiebooms for providing - this fix. - -Tue May 25 13:40:10 1999 Ossama Othman - - * ace/LSOCK_Acceptor.cpp (get_local_addr): - - Only the base class members of ACE_UNIX_Addr were being copied - since the assignment lacked a dynamic cast. Thanks to Carlos and - Irfan for clarifying this. - -Tue May 25 11:41:28 1999 Irfan Pyarali - - * ace/Timeprobe_T.h (class ACE_Timeprobe): Moved the default size - from Timeprobe_T.h to OS.h, where it can easily be redefined by - the user. - -Tue May 25 07:37:47 1999 David L. Levine - - * include/makeinclude/platform_osf1_4.0.GNU: removed suppression - of warning 839: no_corresponding_delete. - -Mon May 24 14:04:11 1999 Steve Huston - - * tests/SOCK_Send_Recv_Test.cpp: New test to exercise ACE_SOCK send - and receive variations. It concentrates on recvv/sendv-like things - now in order to shake out Winsock 1.1 issues. To be complete, it - should be added to over time. - - * tests/Makefile: - * tests/version_tests/{SOCK_Send_Recv_Test.dsp, version_tests.dsw}: - * tests/{SOCK_Send_Recv_Test.dsp, tests.dsw}: Add new test. - -Mon May 24 12:11:03 1999 Irfan Pyarali - - * ace/OS.i (ACE_SOCKCALL_RETURN): Fixed macro by comparing against - FAILVALUE rather than SOCKET_ERROR. Some winsock calls don't - return SOCKET_ERROR. Thanks to Christopher Kohlhoff - for reporting this problem. - -Sun May 23 11:33:07 1999 Alexander Babu Arulanthu - - Changes for the following enhancement in the Proactor - implementation. Enhanced the semantics of the , - so that when it is called, it wakes up all the threads blocked on - waiting for completions and end the event loop. Thanks to Edwin - D. Windes for reporting the issue. - - * ace/Proactor.h: - * ace/Proactor.cpp: Added static helper methods and states to post - the wakeup completions to the CompletionPort. - - * ace/Asynch_IO.h: - * ace/Asynch_IO.cpp: Added a method to the - ACE_Handler. - - * ace/Object_Manager.cpp - * ace/Object_Manager.h: Added a new Thread_Mutex called - to protect the thread count in - the event loop. - - * ace/POSIX_Asynch_IO.cpp - * ace/POSIX_Proactor.cpp - * ace/POSIX_Proactor.h - * ace/Proactor.cpp - * ace/Proactor.h - * ace/Proactor_Impl.h - * ace/WIN32_Proactor.cpp - * ace/WIN32_Proactor.h: - Changes for posting wakeup completions. - - * examples/Reactor/Proactor/test_end_event_loop.cpp: - * examples/Reactor/Proactor/test_end_event_loop.dsp: - * examples/Reactor/Proactor/post_completions.dsp: - * examples/Reactor/Proactor/Makefile: Test file the - enhancement. - -Sat May 22 16:57:38 1999 Carlos O'Ryan - - * ace/FlReactor.cpp: Sun/CC doesn't like reinterpret cast when - converting from an int into an int; this is silly, but I cannot - use static_cast because on NT reinterpret_cast is the right - thing. Use old-style casts for the moment. - - * tests/FlReactor_Test.cpp: Minor cosmetic fixes. - -Sat May 22 16:36:14 1999 Chris Gill - - * ACE version 4.6.40 released. - -Sat May 22 14:53:47 1999 David L. Levine - - * ace/Filecache.cpp: snagged another "template <>". Thanks to - Bala for reporting it. - -Sat May 22 07:30:44 1999 David L. Levine - - * ace/config-chorus.h,ace/config-lynxos.h: added - ACE_HAS_NONCONST_SELECT_TIMEVAL. - - * ace/Filecache.cpp: commented out "template<>" for now. Not all - compilers can cope with it. - -Fri May 21 21:12:37 1999 Irfan Pyarali - - * ace/Map_Manager.i (operator==): Since is a pointer - now, we must compare by value, rather than by address. - -Fri May 21 12:56:38 1999 David L. Levine - - * examples/IPC_SAP/SOCK_SAP/CPP-inclient.cpp: fixed to - build without threads: #ifdef ACE_MT_SAFE is insufficient. - Must also check if it is 0. - -Fri May 21 12:45:32 1999 Carlos O'Ryan - - * ace/Map_Manager.i: - Fixed minor error in previous commit. Thanks to Irfan for - helping out with this. - -Fri May 21 11:18:21 1999 Steve Huston - - * ace/config-hpux11.h: Added ACE_HAS_NONCONST_SELECT_TIMEVAL. - - * ace/RB_Tree.i: Fully template-qualified references to node_ and - tree_ in iterators; makes HP aC++ happy. - -Fri May 21 11:27:44 1999 Irfan Pyarali - - * ace/Map_Manager.h (class ACE_Map_Iterator_Base): Changed the - ACE_Map_Manager reference to a pointer. This way there is no - problem in reinitializing , and hence the compiler - will not have a problem in providing us a default assignment - operator. Thanks to Knut Johannessen for - pointing out this problem. - - * ace/Process: A nifty ACE::fork was added several months ago - which offers the option to avoid zombies, but it is not used in - ACE_Process::spawn. - - Mark L. Boriack provided patches which - adds an data member to ACE_Process_Options, - appropriate accessor functions, and changes the ACE_OS::fork - call to ACE::fork in ACE_Process::spawn, making use of the - option. The default behavior is left unchanged, i.e., you get - zombies. Thanks Mark. - -Fri May 21 10:34:10 1999 David L. Levine - - * ace/gethrtime.cpp,Makefile (gethrtime on Green - Hills/VxWorks): reverted to building gethrtime.cpp with g++, because - the ghs assembly code didn't work properly. - -Fri May 21 10:10:13 1999 Ossama Othman - - * ACE-INSTALL.html: Updated information about building egcs' C++ - shared libraries with an example, and emphasized the fact that - the `--enable-shared' configuration option is not an egcs - run-time option. Thanks to Wallace Owen for - motivating this. - -Fri May 21 09:15:08 1999 Carlos O'Ryan - - * ace/config-sunos5.5.h: - Added ACE_HAS_NONCONST_SELECT_TIMEVAL here too - -Fri May 21 07:53:58 1999 Steve Huston - - * ace/config-vxworks5.x.h, config-osf1-4.0.h: Added - ACE_HAS_NONCONST_SELECT_TIMEVAL. - -Thu May 20 18:01:24 1999 Steve Huston - - * ace/Filecache.cpp: Added "template<>" to specializations. - - * ace/OS.i (ACE_OS::select, ACE_OS::sleep): Removed implicit - dependency on binary object layout with regard to using an - ACE_Time_Value object as a struct timeval; use the timeval* - operator instead. On platforms with ACE_HAS_NONCONST_SELECT_TIMEVAL - don't just cast away const-ness of the ACE_Time_Value - modification - of the timeval by select() is not consistent, and Linux is not the - only one that modifies it (Solaris 7 does also, as well as AIX and - possibly HP; Solaris 2.5/6 don't specify). So, play it safe. - Inlining and optimization should prevent this from having any - affect on performance. - - * ace/config-sunos5.5.h, config-hpux-10.x.h, config-aix-4.x.h: - Added #define ACE_HAS_NONCONST_SELECT_TIMEVAL. - -Thu May 20 17:47:35 1999 Irfan Pyarali - - * ace/OS.h (ACE_DES_ARRAY_FREE_*): Added new macros to facilitate - proper destruction of arrays. - - * ace/Containers_T.cpp (ACE_Array_Base): Changed ACE_Array_Base to - use the new ACE_DES_ARRAY_FREE_* macros in order to prevent the - memory leaks. - -Thu May 20 17:46:02 1999 Nanbor Wang - - * ace/ace_dll.dsp: - * ace/ace_lib.dsp: Fixed Alpha configurations. Thanks to - Christian Schuderer for - reporting this. - -Thu May 20 15:35:23 1999 Carlos O'Ryan - - * tests/TkReactor_Test.cpp: - It was not compiling if ACE_HAS_TK was not defined. - -Thu May 20 15:33:21 1999 David L. Levine - - * include/makeinclude/platform_vxworks5.x_ghs.GNU: - added (and default to) LIBS for Green Hills 1.8.9. - -Thu May 20 14:34:59 1999 David L. Levine - - * ace/config-sunos5.5.h: with Green Hills only, added - ACE_LACKS_ACE_IOSTREAM. ACE's IOStream_Test never halts - when built with Green Hills 1.8.9. - -Thu May 20 14:21:44 1999 David L. Levine - - * ace/OS.i: (t_getname): fixed comment after #endif, to - agree with the #ifdef. - -Thu May 20 13:51:20 1999 Nanbor Wang - - * ace/config-win32-common.h: I forgot to put '/**/' between - #include and which caused MSVC to generate warnings - when checking file dependencies. Thanks to Christian Schuderer - for reporting this. - -Thu May 20 13:52:04 1999 David L. Levine - - * ace/config-sunos5.5.h: build with threads if - _POSIX_C_SOURCE >= 199506L or #ifdef _POSIX_PTHREAD_SEMANTICS. - Added #define ACE_LACKS_RWLOCK_T if _POSIX_PTHREAD_SEMANTICS - is #defined (and therefore ACE_HAS_STHREADS is not #defined). - The rwlock functions are a Solaris threads interface, and - are not POSIX. - - * include/makeinclude/platform_sunos5_ghs.GNU: default to - building without threads support, because Green Hills 1.8.9 - is incompatible with the SunOS threads libraries. - -Thu May 20 12:12:01 1999 David L. Levine - - * ace/OS.{h,cpp},Sched_Params.cpp: with ACE_HAS_PRIOCNTL, - moved #include of sys/{rt,ts}priocntl.h from OS.cpp and - Sched_Params.cpp to OS.h, so that USYNC_THREAD and USYNC_PROCESS - #defines can be protected effectively. - -Thu May 20 11:19:45 1999 Joe Hoffert - - * ace/ATM_Addr.cpp: Added ACE_UNUSED_ARG for selector parameter - when appropriate. - -Thu May 20 09:57:57 1999 Bill Rizzi - - * ace/Log_Msg.{h,cpp},examples/Log_Msg/test_log_msg.cpp - (priority_mask): added optional support for process priority - mask, in addition to the (now default) thread priority mask. - -Thu May 20 09:42:54 1999 David L. Levine - - * ace/OS.h (fcntl): changed type of last argument from int to - long, to permit safer casting from pointer types. - - * ace/OS.i (flock_*): use ACE_OS::fcntl instead of ::fcntl. - - * ace/OS.cpp (ftruncate): use ACE_OS::fcntl instead of ::fcntl. - - Thanks to an anonymous ACE user for reporting that - these functions weren't using ACE_OS::fcntl. - -Wed May 19 23:50:18 1999 Nagarajan Surendran - - * ace/TkReactor.{h,cpp}: - * ace/Makefile: - Added a new reactor implementation based on the Tcl/Tk Event - loop and event handling mechanism. - - * ace/tests/TkReactor_Test.{cpp,tcl}: - * ace/tests/Makefile: - The Tk Reactor test and the tcl script for the GUI. This is - similar to the XtReactor_Test. - - * ace/include/makeinclude/wrapper_macros.GNU: - * ace/include/makeinclude/platform_sunos5_sunc++.GNU - Added changes to Makefile flags for XtReactor. - -Wed May 19 21:56:49 1999 David L. Levine - - * ace/Message_Queue.h: fixed typo in comment: interrupt. - -Wed May 19 21:34:29 1999 David L. Levine - - * include/makeinclude/platform_osf1_4.0.GNU: removed these - warning suppressions: - 174: expr_has_no_effect - 610: nonoverriding_function_decl - They're certainly not needed with cxx 6.2-020, and - hopefully not needed with earlier versions. - -Wed May 19 10:52:15 1999 Irfan Pyarali - - * examples/DLL/test_dll.cpp (main): Fixed auto pointer use. It - was causing "Temporary used for non-const reference" warnings. - -Wed May 19 10:04:54 1999 Jeff Parsons - - * ace/SString.i: - Changed the default constructor to set rep_ to the - empty string instead of the null string. Thanks to - Knut Johannessen for pointing - this out. - -Wed May 19 06:34:58 1999 David L. Levine - - * ace/config-minimal.h: added #define ACE_USE_THREAD_MANAGER_ADAPTER, - so that ACE_Thread_Exit isn't needed in the ACE_OS layer. - -Tue May 18 22:03:49 1999 David L. Levine - - * include/makeinclude/platform_osf1_4.0.GNU,platform_osf1_cxx.GNU: - removed suppression of warning 9 (nested comment not allowed) on - Digital Unix 5.0 and later. - -Tue May 18 15:01:39 1999 Steve Huston - - * ace/ACE.cpp: Added #include "ace/SString.h" to catch def for - ACE_Tokenizer in Winsock 1.1 mode. - -Tue May 18 13:30:55 1999 Nanbor Wang - - * include/makeinclude/rules.nested.GNU: FOR is not an excutable on - Win32, therefore, we must bring in the command processor in to - use FOR. Thanks to David Hooker for - reporting the bug. - -Tue May 18 11:46:55 1999 Douglas C. Schmidt - - * ace/FILE_Connector.h: Changed the default perms from 0 to - ACE_DEFAULT_FILE_PERMS. - -Tue May 18 11:28:32 1999 Joe Hoffert - - * examples/IPC_SAP/TLI_SAP/CPP-ATM-server.cpp: forced - ACE_TLI_Stream's recv method to call ACE_OS::t_rcv rather than - ACE_OS::read to be compatible with XTI. - -Tue May 18 11:00:15 1999 Douglas C. Schmidt - - * ace/Task_T: Moved the ACE_Buffered_Task logic out of the Task - abstraction since it doesn't belong there. - - * ace/Makefile: Regenerated the dependencies. - - * ace/FlReactor.cpp: We should be including rather than - "FL/Fl.h". - -Tue May 18 10:42:47 1999 David L. Levine - - * include/makeinclude/platform_osf1_4.0.GNU: removed - suppression of warning 1180, statement causes unreachable - return, because it's no longer necessary. - -Tue May 18 10:38:53 1999 David L. Levine - - * tests/Thread_Manager_Test.cpp: replaced Hash_Map_Manager - with a simple array. This avoids dynamic allocation in - the signal handler. And, it avoids having to specialize - ACE_Hash on platforms that have a pthread_t - struct. - -Tue May 18 09:33:46 1999 Douglas C. Schmidt - - * ace/FILE_IO: Added new sendv()/recvv() and sendv_n()/recvv_n() - methods to be consistent with SOCK_IO and SOCK_Stream. - - * ace/SOCK_IO.cpp (recvv): Make sure to 0-out the iov_base so that - it's always ok to delete it, even if any of the internal - operations fail! - -Tue May 18 10:14:47 1999 Carlos O'Ryan - - * ace/Makefile: - * ace/FlReactor.h: - * ace/FlReactor.i: - * ace/FlReactor.cpp: - * include/makeinclude/platform_linux_lxpthread.GNU: - * include/makeinclude/wrapper_macros.GNU: - * tests/Makefile: - * tests/FlReactor_Test.cpp: - Added new reactor implementation based on the event loop of the - Fast-Light toolkit, similar to the XtReactor. - FLTK is a GUI toolkit that works on UNIX/X-Windows and on Win32, - it is integrated to OpenGL and is pure C++. - Check http://fltk.easysw.org for more details. - -Tue May 18 09:35:00 1999 David L. Levine - - * tests/Thread_Manager_Test.{h,cpp},Makefile: - removed Thread_Manager_Test.h. - -Mon May 17 22:39:06 1999 David L. Levine - - * tests/Thread_Manager_Test.cpp: added a couple more - explicit template instantiations. Thanks to Carlos - for reporting that they're needed on Irix. And, - added an ACE_Hash specialization to - keep DU cxx happy. - -Mon May 17 16:31:16 1999 Douglas C. Schmidt - - * ace/Task_T.cpp, - ace/OS.h: Removed ACE_DEFAULT_WRITEV_MAX and replaced it - with IOV_MAX. - -Mon May 17 15:49:48 1999 David L. Levine - - * config-dgux-4.x-ghs.h,config-vxworks5.x.h,config-ghs-common.h: - factored ACE_LACKS_SIGNED_CHAR to config-ghs-common.h. - - * config-dgux-4.x-ghs.h: removed ACE_LACKS_ACE_IOSTREAM. - It should work now, though we don't have that platform - to verify it. - -Mon May 17 15:08:45 1999 Carlos O'Ryan - - * ace/CORBA_macros.h: - Fixed implementation of the ACE_READ_GUARD_THROW_EX and - ACE_WRITE_GUARD_THROW_EX macros. - -Mon May 17 15:12:54 1999 David L. Levine - - * test/Thread_Manager_Test.cpp: use a hash map, instead of - TSS, to store each thread's indication of whether it has - been signalled. That way, the signal handler doesn't have - to access TSS. Increased the delay from 1 to 2 seconds after - the signal test, which also seems to help avoid thread lib - panics on Solaris. - -Mon May 17 14:02:01 1999 David L. Levine - - * tests/Conn_Test.cpp (handler): added comment saying that even - the ACE_OS::exit () call isn't safe. - -Mon May 17 10:31:04 1999 Nanbor Wang - - * ace/Service_Repository.cpp (find_i): A missing pointer check was - causing the remove method to segfault. Thanks to Tom Arbuckle - for pointing this out. - -Mon May 17 10:21:29 1999 David L. Levine - - * tests/TSS_Test.cpp: removed the signal handler. It - wasn't used for the test, and contained an ACE_DEBUG. - -Mon May 17 10:12:45 1999 David L. Levine - - * ace/config-chorus.h,config-dgux-4.x-ghs.h,config-sunos5.5.h, - config-vxworks5.x.h,config-ghs-common.h: - factored out Green Hill-specific #defines to config-ghs-common.h. - -Mon May 17 09:07:41 1999 David L. Levine - - * tests/Conn_Test.cpp (handler): commented out unused arg - "signum". - -Sun May 16 20:38:58 1999 Nanbor Wang - - * ace/CDR_Stream.{h,i} (current): Added this accesor function for - Flick IDL compiler. Thanks to Tim Stack for - recommending this. - -Sun May 16 20:08:41 1999 David L. Levine - - * tests/Thread_Manager_Test.cpp (handler,worker): - moved ACE_DEBUG out of signal handler. It was - causing occasional lockups on SunOS. Signal - handlers must never do anything that could cause - a lock to be acquired. - - * tests/Conn_Test.cpp (handler): removed ACE_DEBUG. - -Sun May 16 20:04:09 1999 David L. Levine - - * ace/OS.h: moved #include of ace/Trace.h to before #include of - ace/OS.i. - - * ace/OS.{i,cpp}: enabled ACE_TRACE for most functions (except - those that are used by ACE_TRACE). - -Sun May 16 19:54:10 1999 Alexander Babu Arulanthu - - * ace/config-sunos5.7.h: Comments - * ace/config-sunos5.6.h: Comments - - * ace/POSIX_Asynch_IO.cpp: - * ace/POSIX_Proactor.h: - * ace/POSIX_Proactor.cpp: - Using ACE_dynamic_cast to get - from gives build errors on - egcs. is not the correct solution for - this. Solved this problem by having one more list of - so that we dont have to do any - casting. - * ace/Proactor.cpp (ACE_Proactor): Indentation. - * examples/Reactor/Proactor/post_completions.cpp: Added template - pragma's. - -Sun May 16 18:35:59 1999 Douglas C. Schmidt - - * ACE version 4.6.39 released. - -Sun May 16 12:34:48 1999 David L. Levine - - * ace/Log_Msg.cpp (ACE_Log_Msg_Manager::lock_): changed - the lock type from ACE_Thread_Mutex to - ACE_Recursive_Thread_Mutex. This allows ACE_Log_Msg's - methods to be called after calling ACE_Log_Msg::acquire (), - without deadlock. Thanks to Bill Rizzi - for suggesting this. - -Sat May 15 08:30:43 1999 David L. Levine - - * ace/Containers.h: added #include of ace/Malloc_Base.h. - It's needed for the definition of ACE_Allocator when - instantiating container classes. - -Sat May 15 03:32:02 1999 Nanbor Wang - - * ace/CDR_Stream.h: Added #include of ace/SString.h. - -Fri May 14 23:05:32 1999 David L. Levine - - * ace/Log_Record.h: removed unnecessary #include of ace/SString.h. - -Fri May 14 21:11:46 1999 Carlos O'Ryan - - * ace/Task_T.h: - * ace/Task_T.cpp: - Fixed syntax errors in ACE_Buffered_Task - -Fri May 14 21:03:30 1999 Carlos O'Ryan - - * netsvcs/lib/Log_Message_Receiver.cpp: - Changed ACE_Guard instantiations with ACE_GUARD() macros to - avoid some warnings with egcs, similar to the problem that David - had with Message_Queue_T.cpp - -Fri May 14 19:31:04 1999 Ossama Othman - - * ace/Message_Block.cpp (total_size): - - Corrected warning caused by assignment to non-const from const. - - * ace/Message_Queue_T.cpp (close): - - Temporary variable wasn't declared. - - * ace/Message_Queue_T.cpp (remove_messages): - - Removed unused variable. - -Fri May 14 19:16:06 1999 Ossama Othman - - * ace/Task_T.cpp (put, flush): - - Corrected syntax errors where return type was placed before - template keyword. - -Fri May 14 16:46:42 1999 Douglas C. Schmidt - - * ace/Task_T: Added a new class called ACE_Buffered_Task that - buffers up its ACE_Message_Blocks until (1) the buffer is full - or (2) a timeout elapses, at which point the buffers are written - out using some type of writev()-like mechanism. - - * ace/OS.h: Added a new macro called ACE_DEFAULT_WRITEV_MAX, which - defaults to the maximum value that writev() can have. - - * ace/Message_Block.cpp: Added a new method called total_size() - that returns the total number of bytes in a composite - Message_Block (i.e., a Message_Block that has a chain of - Message_Blocks). - - * ace/Message_Queue_T.cpp: Reimplemented all the hand-coded loops - to use the new ACE_Message_Block::total_size() method. - -Fri May 14 16:17:27 1999 Nanbor Wang - - * ace/Synch.h (ACE_Null_Mutex>): Conditionally compiles ~ACE_Guard() - destructor. Win32 needs this definition. - -Fri May 14 16:10:29 1999 David L. Levine - - * ace/Message_Queue_T.cpp: replaced raw ACE_Read_Guards - with ACE_READ_GUARD_RETURN macros. That avoids a compiler - warning (egcs 1.1.1/SunOS 5.7) now that the ACE_Guard - destructor has been removed. Thanks to Irfan and Carlos - for suggesting this fix. - -Fri May 14 15:35:50 1999 Irfan Pyarali - - * ace/ACE.cpp (clr_flags and set_flags): We should use ioctl() - calls to implement on vxworks this rather than fcntl(). Thanks - to Joseph A. Condlin for reporting this. - -Fri May 14 13:15:02 1999 Joe Hoffert - - * examples/IPC_SAP/TLI_SAP/Makefile: Took out FORE specific - information. Somehow my local changes got checked in - this is - to undo that. - -Fri May 14 12:58:02 1999 Joe Hoffert - - * ace/ATM_Addr.h: - * ace/ATM_Addr.i: - * ace/ATM_Addr.cpp: Added accessor methods for the selector byte - of an ATM address. - - * examples/IPC_SAP/TLI_SAP/CPP-ATM-client.cpp: - * examples/IPC_SAP/TLI_SAP/CPP-ATM-server.cpp: Modify example code - to have the user optionally specify the selector byte. - -Fri May 14 12:47:38 1999 David L. Levine - - * ace/Addr.cpp,ace/Synch_Options.cpp: added comments about - the static objects. - -Fri May 14 11:36:05 1999 Carlos O'Ryan - - * ace/SString.h: - * ace/SString.i: Added new class to auto destroy dynamically - allocated strings, sort of a mixing between auto_ptr and - CString. Auto_Ptr_Array was not useful because we need to free - using ACE_OS::free() (and in the future allocators). - -Fri May 14 10:37:49 1999 Douglas C. Schmidt - - * ace/OS.i: Fixed a deadlock in cond_timedwait()/cond_broadcast(). - Thanks to Brian C. Olson for reporting - this. - - * ace/Synch.h (ACE_Null_Mutex>): Commented out the ~ACE_Guard() - destructor to prevent segfaults on certain versions of SunC++. - Thanks to Russ Noseworthy for reporting this bizarre bug! - -Fri May 14 09:51:55 1999 Carlos O'Ryan - - * ace/Message_Block.h: - * ace/Message_Block.cpp: - Modified default constructor and constructor taking a Data_Block - to also take an Allocator. - -Fri May 14 09:14:55 1999 David L. Levine - - * include/makeinclude/platform_osf1_cxx.GNU: - added $(ACELIB) to SOFLAGS for DU 5.x. It should - have been there all along. - -Thu May 13 17:27:14 1999 Nanbor Wang - - * netsvcs/servers/svc.conf: - * netsvcs/clients/Naming/Client/svc2.conf: - * netsvcs/clients/Naming/Client/svc2.conf: Removed relative paths - from all DLL's. They were hard-coded which was not portable. - ACE should figure out the correct path automatically. - - * netsvcs/lib/Name_Handler.cpp: Replaced several calls to - ACE_WString::rep with ACE_WString::fast_rep to avoid memory - leaks. Thanks to Valery Arkhangorodsky - for reporting this. - - * ace/Registry.cpp (close): Only close when we do own a - key. - - * netsvcs/lib/Name_Handler.cpp (resolve): The atype string needs - to be delete[]'ed once we are done with it. Thanks to Valery - Arkhangorodsky for pointing this out. - -Thu May 13 09:39:17 1999 David L. Levine - - * tests/Makefile: added Tokens_Test to BIN2 if Tokens component - is not configured in. This ensures that Tokens_Test gets - cleaned up, even if the ace directory was realcleaned first - (and ACE_BUILD_COMPONENTS is therefore empty). - -Thu May 13 07:24:41 1999 David L. Levine - - * ace/POSIX_Proactor.cpp (handle_events): replaced - incorrect dynamic_cast with a reinterpret cast. - -Wed May 12 17:42:09 1999 Carlos O'Ryan - - * ace/Message_Block.h: - * ace/Message_Block.cpp: - The message blocks can be obtained from an allocator now. Thanks - to John Aughey for this cool feature. - -Wed May 12 16:24:17 1999 Alexander Babu Arulanthu - - * examples/Reactor/Proactor/Makefile: - * examples/Reactor/Proactor/test_proactor.cpp: - * ace/POSIX_Proactor.cpp: - * ace/POSIX_Proactor.h: - * ace/Proactor.cpp : - * ace/POSIX_Asynch_IO.cpp: Fixed the problem with terminating the - Timer thread. Also, fixed the places where conversion between - void * and ACE_POSIX_Asynch_Result. Used ACE_reinterpret_cast at - these places. - -Wed May 12 12:14:09 1999 Ossama Othman - - * COPYING: Additional updates/clarifications suggested by Richard - Stallman. - -Wed May 12 00:25:57 1999 Nanbor Wang - - * ace/Thread_Manager.h (ACE_Thread_Manager): Added clarification - for the semantics differences among wait(), wait_grp() and - wait_task(). - -Tue May 11 18:11:51 1999 James C. Hu - - * ace/config-sunos5.7.h: SunOS 5.7 (aka Solaris 7) does not have a - limited select. - -Tue May 11 17:11:51 1999 David L. Levine - - * tests/Conn_Test.cpp (spawn_threads): changed some ACE_NEW - statements to ACE_NEW_RETURN. - -Tue May 11 15:43:30 1999 David L. Levine - - * ace/OS.h: added ACE_THR_PRI_OTHER_DEF for NT, because MT_Cubit - uses it. - -Tue May 11 14:45:08 1999 David L. Levine - - * tests/Conn_Test.cpp: fixed use of status on platforms that lack - fork. - -Tue May 11 14:10:29 1999 David L. Levine - - * ace/config-osf-4.0.h: added #define of - ACE_NEW_THROWS_EXCEPTIONS, if exception handling is enabled. - - * tests/New_Fail_Test.cpp: removed workaround for DEC cxx, and - modified error message to mention ACE_NEW_THROWS_EXCEPTIONS. - -Tue May 11 12:02:03 1999 David L. Levine - - * ace/config-win32-common.h: set __ACE_INLINE__ to 1 if not - #defined. It's scary when I trip over syntax errors on Win32 - :-) - -Tue May 11 10:00:00 1999 Chris Gill - - * ace/OS.i: fixed name of unused argument for pSOS - - * ace/RB_Tree.{cpp, h}: moved enumerated type from template to - non-templatized base class to make old g++ happy. - -Mon May 10 22:59:46 1999 David L. Levine - - * include/makeinclude/wrapper_macros.GNU: don't set VDIR to - .shobj/ for VxWorks, because it uses the same .o files for - static and shared libs. - - * include/makeinclude/platform_vxworks5.x_g++.GNU: disable RTTI - for egcs, because the Tornado 1.0.x libs don't support it. No - harm in disabling for old g++. - -Mon May 10 15:33:56 1999 Douglas C. Schmidt - - * ace/INET_Addr.cpp (string_to_addr): Fixed a mistake that - occurred when integrating Jerry D. De Master - fix. Thanks to Zoran and Jerry for - reporting this. - -Mon May 10 15:00:31 1999 Nanbor Wang - - * ACE-INSTALL.html: Changed to use ACE_NO_INLINE to supress - inlining to match with the recent dsp file changes. Added a - link to Barry Hoggard's CORBA page which contains ACE related - MSVC setting hints. - - * ace/Select_Reactor_Base.cpp (unbind): We need to make sure the - reactor's suspend_set_ also gets cleaned up when unbinding a - handler. Thanks to Casey Lucas for pointing - this out. - -Mon May 10 17:08:29 1999 James C. Hu - - * ace/ACE.cpp: - * ace/config-sunos5.6.h: - * ace/README: Added support to enter_recv_timedwait, - enter_send_timedwait, handle_timed_complete, and - handle_timed_accept to use poll() instead of select() if poll() - is available and select() is known to have problems. Created - ACE_HAS_LIMITED_SELECT macro. Certain versions of SunOS 5.6 do - not correctly select on file descriptors that are larger than - 1023. - -Mon May 10 13:32:11 1999 David L. Levine - - * tests/Conn_Test.cpp (spawn_threads): wait a maximum of 200 - seconds. Carlos reported that the test sometimes hangs on Irix. - -Mon May 10 12:14:00 1999 Chris Gill - - * ace/RB_Tree.cpp: fixed a dangling pointer bug in - RB_Tree::delete_fixup. Added pointer tests to all dereferences - in this piece of code. - -Mon May 10 11:35:18 1999 Ossama Othman - - * COPYING: Made some updates suggested by Richard Stallman - of the Free Software Foundation - (http://www.fsf.org/). - -Mon May 10 11:01:58 1999 David L. Levine - - * tests/New_Fail_Test.cpp: DEC cxx catches its default, - NoNamedException. OK, I guess. - - * tests/Upgradable_RW_Test.cpp: added -f option, which enables - FIFO thread scheduling. Some platforms require superuser - privilege to use it. Also, wait a maximum of 1 second per - iteration. And, replaced some u_longs with u_ints. - - * tests/Thread_Manager_Test.cpp (main): wait a maximum of 60 - seconds, because the test sometimes hangs on SunOS 5.5.1 and - SunOS 5.7. - -Mon May 10 08:26:44 1999 David L. Levine - - * bin/g++dep: added support for our Solaris 7 machines. - -Sun May 9 18:07:24 1999 Ossama Othman - - * acconfig.h: - * configure.in: Added support/tests for - ACE_LACKS_CHAR_RIGHT_SHIFTS and - ACE_LACKS_CHAR_STAR_RIGHT_SHIFTS. - - * ace/README: Fixed typo. ACE_LACKS_LINEBUFFERED_STREAMBUF was - used twice. Corrected the appropriate one to - ACE_LACKS_UNBUFFERED_STREAMBUF. - -Sun May 09 11:45:00 1999 Chris Gill - - * ace/RB_Tree.cpp added explicit scoping to RB_SearchResult - parameter in RB_Tree<...>::find_node (). - -Sun May 09 11:30:00 1999 Chris Gill - - * ace/Makefile - examples/Connection/non_blocking/Makefile - examples/IPC_SAP/SPIPE_SAP/Makefile - examples/IPC_SAP/TLI_SAP/Makefile - examples/Reactor/Misc/Makefile - examples/Service_Configurator/IPC-tests/client/Makefile - examples/Service_Configurator/IPC-tests/server/Makefile - netsvcs/lib/Makefile - netsvcs/servers/Makefile - tests/Makefile: ran make depend after adding new RB_Tree - interface. - -Sat May 08 19:30:00 1999 Chris Gill - - * ace/RB_Tree.{cpp, h, i} - tests/RB_Tree_Test.cpp: finished implementing all methods for - the ACE_Hash_Map_Manager_Ex compliant interface, fixed a bug in - the internal tree search method (thanks to David Levine for - pointing this out), and added a new section to the test that - exercises the new bind and unbind methods. - -Sat May 08 17:09:10 1999 David L. Levine - - * apps/Gateway/Gateway/Event_Channel.cpp (bind_proxy,subscribe): - wrapped final return statement with ACE_NOTREACHED, to please DU - cxx 6.2. - -Sat May 08 08:49:44 1999 David L. Levine - - * ace/CDR_Stream.h: only use unsigned long for Boolean with Green - Hills 1.8.8 on Chorus, not 1.8.9. - - * ace/IOStream.h,README: added ACE_LACKS_CHAR_STAR_RIGHT_SHIFTS - and ACE_LACKS_CHAR_RIGHT_SHIFTS support. - - * ace/config-chorus.h: added ACE_LACKS_CHAR_STAR_RIGHT_SHIFTS - #define for g++. - - * ace/config-vxworks5.x.h: added ACE_LACKS_CHAR_RIGHT_SHIFTS - #define for Green Hills 1.8.9. - -Sat May 08 08:44:00 1999 Chris Gill - - * ace/RB_Tree.{cpp, h, i} - tests/RB_Tree_Test.cpp - apps/JAWS/PROTOTYPE/HTTPU/http_headers.cpp: Added more - implementation code and necessary template instantiations for - migration of RB_Tree class templates to conform to the - ACE_Hash_Map_Manager API. - -Sat May 08 03:59:52 1999 Nanbor Wang - - * ace/config-win32-common.h: Re-ordered __ACE_INLINE__ macro check - and definition so users can turn of inlining correctly. - However, the right thing to do is to define ACE_NO_INLINE macro. - - * ace/ace_{dll,lib}.dsp: Moved RB_Tree.cpp to template folder and - excluded it from being built. - - * ace/ace_lib.dsp: - * performance-tests/Misc/basic_perf.dsp: - * performance-tests/Misc/context_switch_time.dsp: - * tests/version_tests/*.dsp: We should have used ACE_NO_INLINE - instead of defining __ACE_INLINE__=0 to supress the use of - inlining. Thanks to Nick Sawadsky - for reporting this. - -Fri May 07 23:05:24 1999 David L. Levine - - * ace/config-vxworks5.x.h: added ACE_LACKS_LINEBUFFERED_STREAMBUF - for Green Hills 1.8.9. - - * ace/README: added ACE_LACKS_LINEBUFFERED_STREAMBUF. - -Fri May 7 19:39:43 1999 Carlos O'Ryan - - * ace/Message_Block_T.i: Found little buf in - ACE_Locked_Data_Block<> default constructor. - -Fri May 07 16:54:00 1999 Chris Gill - - * ace/RB_Tree.{cpp, h, i}: Reorganized and optimized internal - methods, added read and write guards, implemented all public - find and unbind methods for the interface comparable to - ACE_Hash_Map_Manager_Ex. - -Fri May 07 14:40:12 1999 David L. Levine - - * include/makeinclude/platform_osf1_cxx.GNU: added, to support - uniform use of cxx across different OS versions. - - * ace/config-osf1-4.0.h: conditionally #define DIGITAL_UNIX, to - support definition in CFLAGS. - - * ace/config-osf1.h: added, to support easy migration to DU 5.0. - -Fri May 07 11:00:52 1999 David L. Levine - - * ACE-INSTALL.html: OK on RedHat 6.0 Linux. - -Fri May 07 08:58:47 1999 David L. Levine - - * ace/OS.{h,i}: added some QNX support. In OS.i, this mostly - consisted of adding a !defined (ACE_LACKS_MUTEXATTR_PSHARED) - check to _POSIX_THREAD_PROCESS_SHARED. Thanks to Alain Magloire - for providing this support. - -Thu May 6 21:48:26 1999 Ossama Othman - - * acconfig.h: - * configure.in: - * ace/OS.h: - * ace/README: - * ace/config-hpux11.h: - * ace/config-irix6.x-g++.h: - * ace/config-irix6.x-kcc.h: - * ace/config-irix6.x-sgic++.h: - * ace/config-linux-lxpthreads.h: - * ace/config-osf1-4.0.h: - * ace/config-sco-5.0.0-mit-pthread.h: - * ace/config-sunos5.5.h: Removed all references to - ACE_HAS_PTHREAD_SIGMASK. This macro has been deprecated. - -Thu May 6 20:12:57 1999 Ossama Othman - - * acconfig.h: - * configure.in: Added tests/support for ACE_LACKS_PTHREAD_SIGMASK, - ACE_LACKS_TCP_NODELAY and ACE_LACKS_NULL_PTHREAD_STATUS. Thanks - to David for providing a test for ACE_LACKS_NULL_PTHREAD_STATUS. - -Thu May 06 14:26:54 1999 David L. Levine - - * ace/README,ace/Pipe.cpp (open): added support for - ACE_LACKS_TCP_NODELAY. Thanks to Alain Magloire - for providing the patch. - -Thu May 6 14:23:14 1999 Carlos O'Ryan - - * ace/Synch_T.cpp: Removed ACE_ALLOC_HOOK_DEFINE macros for the - Guard<> objects, they don't need them (because they are - allocated on the stack) and the HOOK_DECLARE macros where not - used in the header file. - - * bin/count_lines: Several new file types, fixed computations when - multiple modules are used. - -Thu May 06 12:28:54 1999 David L. Levine - - * docs/ACE-FMM.html: replaced a > with > and added RCS Id - string. - - * ACE-INSTALL.html: added link to docs/ACE-FMM.html. - -Thu May 06 12:23:51 1999 Steve Huston - - * ace/OS.i (recvv, sendv): Added code to make these functions work - on Win32 w/ Winsock 1.1. - -Wed May 05 15:10:37 1999 David L. Levine - - * ace/OS.h: added ACE_U_ONE_SECOND_IN_*SECS. They're typed and - unsigned. The old ACE_ONE_SECOND_IN_*SECS macros are retained - for backward compatibility. - -Wed May 5 13:58:25 1999 Carlos O'Ryan - - * ace/OS.i: Don't use poll() for the implementation of - ACE_OS::sleep(), it has bad resolution and it gives wrong - results on Linux. - - * tests/High_Res_Timer_Test.cpp: Added new option to run several - iterations of each interval. - -Wed May 05 13:14:52 1999 Steve Huston - - * ace/ACE.cpp: Removed DllMain - Win32 does not have the gusto to - handle the initialization/finalization in this way. It causes - DLL dependency problems which result in early detachment of - winsock, and possible network data loss in some cases. - - * ace/OS.cpp, Object_Manager.cpp: Clarified some comments - regarding multiple ACE_OS_Object_Manager and ACE_Object_Manager - objects in existence and how they're handled. - - * tests/ACE_Init_Test.cpp: Always does ACE::init and ACE::fini - now. This is one example of how to handle a non-console program - in Win32. - -Wed May 05 13:07:49 1999 David L. Levine - - * bin/Makefile: replaced /bin/rm with $(RM) and removed clean - pseudotarget. - -Tue May 04 20:38:00 1999 Chris Gill - - * tests/RB_Tree_Test.cpp: Added missing explicit template - instantiations for ACE_RB_Tree_Iterator_Base. Thanks to Carlos - O'Ryan for reporting this. - - * include/makeinclude/platform_psos_diab_ppc.GNU: added -g flag - back into debug flags since it can easily be deactivated via - make debug=0. - -1999-05-04 Seth Widoff - - * ace/Containers_T.cpp (ACE_Array_Base::max_size): When - resizing the array to be larger, the max_size method was copying - in the contents of the older, smaller array, but not - initializing the new elements. - -Tue May 4 17:37:30 1999 Kirthika Parameswaran - - * examples/Web_Crawler/Options.cpp (parse_args): Change the - default options from "www.cs.wustl.edu" to "tao.cs.wustl.edu". - -Tue May 04 16:24:00 1999 Chris Gill - - * ace/RB_Tree.{cpp, h, i}: Added deprecation comments to methods - that are going to be replaced by the new Hash_Map_Manager - compliant interface. Factored out iterator base class, added - reverse iterator. Interim checkin since it all compiles and - RB_Tree_Test runs clean. - -Tue May 04 15:56:41 1999 Steve Huston - - * ace/ACE.cpp: Re-enabled DllMain (see Mon May 3 entry from Chris - Gill). - - * ace/OS.cpp, Object_Manager.cpp: In ACE_OS_Object_Manager and - ACE_Object_Manager, differentiate between The singleton instance - and other instances when allocating and freeing per-process - information. - - * tests/run_tests.bat: Added ACE_Init_Test. - -Mon May 3 18:04:32 1999 Alexander Babu Arulanthu - - * examples/Reactor/Proactor/test_aiocb_ace.cpp: Added this - file. If this test is sucessful, ACE_POSIX_AIOCB_PROACTOR could - be defined for a platform. - -Mon May 03 09:35:00 1999 Chris Gill - - * ace/RB_Tree.cpp: fixed bug in ACE_RB_Tree::RB_delete_fixup in - which a null pointer was dereferenced while trying to determine - the color of the node that was being pointed to. Per the RB - Tree discussion in Cormen Lieserson and Rivest's "Introduction - to Algorithms", after which this implementation is modeled, a - nil node is implicity treated as having been colored BLACK. - Thanks to Long Hoang for reporting - the problem and providing a test program that showed the bug. - -Mon May 03 15:53:15 1999 David L. Levine - - * include/makeinclude/platform_vxworks5.x_g++.GNU, - tests/run_tests.vxworks,ACE-INSTALL.html: added support for - shared lib builds. Thanks to Ramiro Penataro Blanco - and James D. Rucker - for figuring this out, and - providing detailed instructions for others to follow. - -Mon May 03 15:20:00 1999 Kirthika Parameswaran - - * examples/Web_Crawler/main.cpp: - * examples/Web_Crawler/Web_Crawler.{h,cpp}: - * examples/Web_Crawler/Cached_Connect_Strategy_T.{h,i,cpp}: - * examples/Web_Crawler/Caching_Strategies_T.{h,i,cpp}: - * examples/Web_Crawler/Command_Processor.{h,cpp}: - * examples/Web_Crawler/HTTP_URL.{h,cpp}: - * examples/Web_Crawler/Iterators.{h,cpp}: - * examples/Web_Crawler/Mem_Map_Stream.{h,cpp}: - * examples/Web_Crawler/Optimal_Cache_Map_Manager_T.{h,i,cpp}: - * examples/Web_Crawler/Options.{h,cpp}: - * examples/Web_Crawler/URL.{h,cpp}: - * examples/Web_Crawler/URL_Addr.{h,cpp}: - * examples/Web_Crawler/URL_Status.{h,cpp}: - * examples/Web_Crawler/URL_visitor.{h,cpp}: - * examples/Web_Crawler/URL_Visitor_Factory.{h,cpp}: - * examples/Web_Crawler/Makefile - * examples/Web_Crawler/README - - This example is a HTTP client which crawls over the link provided - and checks whether the links recusively are valid or not. - This example was used to test teh auto-purging feature where the - connections are removed from the connection cache when the process - runs out of file descriptors. - -Mon May 03 14:46:28 1999 Steve Huston - - * tests/ACE_Init_Test.dsp: Fixed to build on all configurations (for - Intel anyway). - -Mon May 03 10:30:37 1999 David L. Levine - - * ACE version 4.6.38 released. - -Mon May 3 09:56:06 1999 Douglas C. Schmidt - - * ace/INET_Addr.cpp (get_host_name): Make sure to check if - get_host_name() fails and do something useful in this case. - Thanks to Frank O'Dwyer for reporting this. - -Mon May 03 09:35:00 1999 Chris Gill - - * ace/ACE.cpp: disabled BOOL APIENTRY DllMain(HANDLE hModule, - DWORD ul_reason_for_call, LPVOID lpReserved) by having it - just return TRUE. This function is used only on NT. This - is a temporary workaround for the problem of tao_idl - crashing on NT, and will be replaced ASAP with a more - complete fix to Object Manager initialization/cleanup at - DLL load/unload time on NT. Thanks to David Levine for - suggesting this fix. - -Mon May 03 09:27:54 1999 David L. Levine - - * docs/ACE-guidelines.html: added guideline to put - spaces around comment delimiters. Thanks to Chris - Gill for suggesting this. - -Sun May 02 14:36:43 1999 David L. Levine - - * ace/OS.h: Added ghs back to the list of compilers for which - ACE_NOTREACHED disappears. It was causing warnings for - many ACE and TAO files. - -Sun May 02 08:21:13 1999 David L. Levine - - * ace/OS.i (pthread_sigmask): added ACE_UNUSED_ARGs to - NOTSUP case. - - * ace/OS.i (pthread_sigmask),ace/config-chorus.h,ace/README: - added ACE_LACKS_PTHREAD_SIGMASK. - -Sat May 01 17:33:04 1999 David L. Levine - - * ace/OS.cpp,Object_Manager.cpp: reverted this change because - it causes a seg fault on NT: - - Thu Apr 29 13:41:52 1999 Steve Huston - - * ace/{OS.cpp Object_Manager.cpp}: Fixed leaking ACE_Object_Manager - when config has #define ACE_HAS_NONSTATIC_OBJECT_MANAGER 0. - -Sat May 01 12:06:57 1999 Nanbor Wang - - * ace/ACE.cpp: - * ace/config-win32.h: Reverted my previous change. I didn't - notice David had already fixed it. Thanks David. - -Sat May 01 01:48:29 1999 Nanbor Wang - - * ace/ACE.cpp (DllMain): Only use DllMain to control - Object_Manager's lifecycle when - ACE_USES_DLL_TO_MANAGE_THE_LIFECYCLE_OF_OBJECT_MANAGER is - defined and we are building ACE as a DLL. - - * ace/config-win32.h: Defining - ACE_USES_DLL_TO_MANAGE_THE_LIFECYCLE_OF_OBJECT_MANAGER =1, when - compiling DLL version of ACE will cause then ACE::init/fini be - called automatically for you in DllMain when ACE gets linked - in/unlinked. - - Defining ACE_USES_DLL_TO_MANAGE_THE_LIFECYCLE_OF_OBJECT_MANAGER - =1 automatically define ACE_HAS_NONSTATIC_OBJECT_MANAGER to 1 - and define ACE_DOESNT_INSTANTIATE_NONSTATIC_OBJECT_MANAGER. - -Fri Apr 30 22:53:01 1999 David L. Levine - - * ace/OS.h: put Object_Manager back on the stack of main, - instead of using ACE::init () and ACE::fini (). It - should be functionally equivalent, and then some: if - the user's main () returns, the Object_Manager will get - properly destroyed if it's on the stack. And, it's better - for subset support if we avoid class ACE calls from OS.h. - - * include/makeinclude/rules.lib.GNU: cleaned up a bit. - -Fri Apr 30 17:42:11 1999 Alexander Babu Arulanthu - - * ace/OS.i (pthread_sigmask): - * ace/OS.h (ACE_OS): Added wrapper for to get - the Proactor code compile on LynxOS. - - * ace/config-lynxos.h (ACE_HAS_AIO_CALLS): - Enabled ACE_HAS_AIO_CALLS for LynxOS. Also enabled - ACE_HAS_AIOCB_PROACTOR since LynxOS 3.0.0 has not got - yet, so signal proactor cannot work correctly. - - * ace/POSIX_Proactor.cpp: - * examples/Reactor/Proactor/test_aiosig_ace.cpp - (setup_signal_delivery): Added ACE_OS:: scope to pthread_sigmask - so that it works (fails!!) correctly on LynxOS. - - * examples/Reactor/Proactor/post_completions.cpp: - * examples/Reactor/Proactor/test_timeout.cpp: Added 'main' - function for platforms where only AIOCB_Proactor is enabled so - that the test prints out a message. - - * examples/Reactor/Proactor/Makefile: - -Fri Apr 30 14:44:12 1999 Darrell Brunsch - - * ACE-INSTALL.html: Added a note about manually cleaning out the - ACE_wrappers directories on Win32, which could be required for a - true start from scratch build. Thanks to David Hooker - for this insight. - -Fri Apr 30 14:06:41 1999 Douglas C. Schmidt - - * COPYING: Updated the COPYING file to reflect the use new of - ACE(TM) and TAO(TM). - -Fri Apr 30 13:23:22 1999 Steve Huston - - * docs/tutorials/017/Barrier_i.cpp: - * docs/tutorials/018/token.cpp: Added explicit template - instantiations. - -Fri Apr 30 12:11:36 1999 Ossama Othman - - * ace/OS.i (gethostbyname2): - - Added an IPv4-only implementation. If ACE_HAS_IP6 is not defined, - the IPv4-only implementation will be used. - -Fri Apr 30 12:11:50 1999 Nanbor Wang - - * tests/Basic_Types_Test.cpp: Added checks for sizeof(long) == - sizeof(void*) and sizeof(long) >= sizeof (a_function_pointer). - Certain code in ACE depends on the assumptions. - -Fri Apr 30 11:24:26 1999 Steve Huston - - * tests/ACE_Init_Test.cpp: Added compile-time change to adapt to - build w/ static ACE lib and ACE_HAS_NONSTATIC_OBJECT_MANAGER. - * tests/version_tests/ACE_Init_Test.dsp: Changes to build clean on - all configurations. - -Fri Apr 30 02:06:53 1999 Nanbor Wang - - * ace/Parse_Node.cpp (symbol): According to the new ANSI C++ - specification, casting a void* pointer to a function pointer is - not allowed. However, casting a void* pointer to an integer - type that is large enough to hold the pointer value is legal. I - chose to cast the return value to long since it should be large - enough to hold the void* pointer's value on most platforms. I am - not sure if casting a long value to a function pointer is legal - or not (can't find a good explanation in spec) but it prevent - SunC++ 5.0 compilers from complaining about illegal pointer - conversion. - - * ace/OS.h: Removed ACE_non_function_ptr_to_function_ptr_cast, - it is no longer needed. - -Fri Apr 30 00:36:23 1999 Ossama Othman - - - * ace/Get_Opt.cpp: - * ace/TLI_Acceptor.cpp: - * ace/TLI_Connector.cpp: - - Cast away const from string literals using ACE_const_cast to make - Sun C++ 5.0 happier. - -Thu Apr 29 18:32:43 1999 Irfan Pyarali - - * ace/OS.h: Removed ghs from the list of compilers for which - ACE_NOTREACHED disappears. It was causing warnings for - TAO/orbsvcs/orbsvcs/Naming/Persistent_Context_Index_T.cpp. - -Thu Apr 29 19:48:25 1999 Ossama Othman - - * ace/OS.{h,i} (ACE_OS): - - More IPv6 support. Added support for the new IPv4/IPv6 - inet_ntop() and inet_pton() calls. If ACE_HAS_IP6 is not - defined, these calls will use IPv4 implementations (see - Stevens' book "UNIX Network Programming - Volume I") and - return an error if a family other than AF_INET is passed to - them. - - * ace/OS.h: - - Define INET_ADDRSTRLEN and INET6_ADDRSTRLEN if they don't - get defined after including . - -Thu Apr 29 18:32:43 1999 Ossama Othman - - * ace/README: - * ace/OS.h (ACE_OS): - * ace/OS.i (gethostbyname2): - - Added support for the gethostbyname2() system call. It is only - enabled if ACE_HAS_IP6 is defined. When I have time, I'll add - more IPv6 support. - -Thu Apr 29 15:30:04 1999 Douglas C. Schmidt - - * ace/INET_Addr.cpp (string_to_addr): Added support to check for - both "port numbers" and "port names". Thanks to Jerry D. De - Master for suggesting this. - - * ace/Select_Reactor_T.h, - ace/Reactor.h, - ace/Select_Reactor_T.h, - ace/TP_Reactor.h (ACE_TP_Reactor): Updated the documentation to - clarify the purpose of the flag. Thanks to Susan - Liebeskind for reporting this. - -Thu Apr 29 13:41:52 1999 Steve Huston - - * ace/{OS.cpp Object_Manager.cpp}: Fixed leaking ACE_Object_Manager - when config has #define ACE_HAS_NONSTATIC_OBJECT_MANAGER 0. Now - both ACE_OS_Object_Manager and ACE_Object_Manager remember if they - were dynamically allocated whether the above #define is used or not - and correctly clean up and track the singleton properly. - Thanks to David and Irfan for identifying this and helping with the - solution. - -Wed Apr 28 20:21:12 1999 Irfan Pyarali - - * ace/Synch_T.h (class ACE_Anti_*_Guard): I had accidentally - checked in the anti guard classes. These are not needed since - we decided to stick with the reverse lock class rather than the - anti guard classes. - -Wed Apr 28 18:02:36 1999 Nanbor Wang - - * ace/OS.h: Added a new macro called - ACE_non_function_ptr_to_function_ptr_cast to get around some - compiler constrain. In face, ANSI C++ standard prevents casting - from a non-function pointer (e.g., void *) to a function - pointer. Currently, only egcs check for this condition. - - * ace/Parse_Node.cpp (symbol): Changed to use the new - ACE_non_function_ptr_to_function_ptr_cast. - -Wed Apr 28 16:53:16 1999 Alexander Babu Arulanthu - - * examples/Reactor/Proactor/Aio_Platform_Test_C.cpp: Added this - file, a simple C version of the - $ACE_ROOT/tests/Aio_Platforms_Test.cpp. Useful for submitting bug - reports etc. - - * ace/Proactor.cpp: - * ace/POSIX_Asynch_IO.cpp: Fixed old g++ warnings - -Wed Apr 28 15:39:14 1999 Nanbor Wang - - * ace/Parse_Node.cpp (symbol): Use reinterpret_cast to cast - dlsym's return value. - -Wed Apr 28 12:40:26 1999 David L. Levine - - * ace/Synch_T.{i,cpp} (~ACE_Reverse_Lock): uninlined destructor. - See docs/ACE-guidelines.html for an explanation of why a - class should have at least one non-inline, non-pure virtual - function if it has any virtual functions. egcs 1.1.1b - needed this one. - -Wed Apr 28 09:02:26 1999 Douglas C. Schmidt - - * ace/config-sunos5.5.h: It appears that SunC++ 5.0 wants - ACE_HAS_THR_C_DEST to be defined. - - * ace/SString: Clarified the comments a bit to avoid confusion. - Also, moved the definition of ACE_SString to AFTER ACE_CString - and ACE_WString since they are more general. Thanks to Kevin - Lyda for reporting this. - -Tue Apr 27 20:59:52 1999 Douglas C. Schmidt - - * netsvcs/clients/Naming: Moved the README file into the Client/ - directory since that's what it described. - - * netsvcs/clients/Naming/Client/Client_Test.cpp: Reformatted some - code to conform to ACE programming guidelines. - - * ace/Naming_Context.cpp (parse_args): Oops, fixed a braino - related to strcmp(). Thanks to Valery Arkhangorodsky - for reporting this. - -Tue Apr 27 18:00:31 1999 Steve Huston - - * ace/OS.cpp (ACE_OS_CString, ACE_OS_WString): Fixed one-off error - in allocating new string's memory. - -Tue Apr 27 17:36:28 1999 Ossama Othman - - * m4/threads.m4: - - Restructured thread detection test so that it properly detects - threads on platforms that provide PTHREADS backward compatibility - macros, such as Digital Unix 4.0 and 5.0. - -Tue Apr 27 18:56:00 1999 Chris Gill - - * ace/Containers_T.{cpp, h} - tests/OrdMultiSet_Test.cpp: added a workaround for a problem with - implicit template instantiation and a do-nothing destructor - definition. Thanks to Sarmeesha Reddy and - Steven Tine for reporting this. - - * include/makeinclude/platform_psos_diab_ppc.GNU: changes to use - the board support package linker file. Thanks to Sarmeesha - Reddy and Steven Tine - for contributing this change. - -Tue Apr 27 16:30:57 1999 Ossama Othman - - * ace/UNIX_Addr.h (ACE_UNIX_Addr): - - Corrected typographical error in comment. - -Tue Apr 27 12:57:06 1999 Ossama Othman - - * configure.in: - - Removed `tests/log/Makefile' from the list of files to - generate (i.e. removed from AC_OUTPUT macro call). - - * tests/Makefile.am: - - Corrected a typo. I neglected to add "_SOURCES" to the end - of the Collection_Test source variable variable. Also added - more missing tests to the list of test programs. Commented out - Cache_Manager_Test. It appears to need a header that doesn't - exist. - - * ace/Makefile.am (pkginclude_HEADERS): - - Removed `Timer_Queue.i' from the list of headers. - - * bin/autogen: - * bin/bootstrap: - - Renamed the `autogen' script to `bootstrap'. - -Tue Apr 27 11:54:53 1999 Ossama Othman - - * configure.in: - - Temorarily removed my experimental C++ libtool support so that - I can get a semi-working test distribution out on the net. - - * ltconfig: - * ltmain.sh: - - Reverted to more stable version, i.e. w/o my C++ support. - - * m4/threads.m4: - - Added KAI C++ thread flag check. - -Tue Apr 27 11:45:40 1999 Irfan Pyarali - - * tests/Collection_Test.cpp (main): Added some additional array - tests and fixed template instantiation errors. Thanks to David - Levine for pointing them out. - - * ace/OS.h (ACE_DES_FREE): Changed all the ACE_DES* macros to - check for zero pointers. Thanks to Torsten Kuepper - for pointing this bug out. - -Tue Apr 27 11:08:35 1999 Nanbor Wang - - * ace/Basic_Types.h: Forced KAI compiler to use ACE_U_LongLong if - ACE_LACKS_LONGLONG_T is defined. - - * ace/DLL.cpp: - * ace/Service_Config.i: - * ace/Service_Object.i: - * ace/INET_Addr.cpp: Some CE related changes. - -Tue Apr 27 00:03:16 1999 Irfan Pyarali - - * tests/Collection_Test.cpp (main): Added test code for ACE_Array. - -Mon Apr 26 23:55:43 1999 Irfan Pyarali - - * ace/Synch_T.h (class ACE_Reverse_Lock): Removed constructor that - created the lock. There were two reasons for this: (a) it was - unrealistic that the reverse lock would own and create the - regular lock and (b) this constructor made it impossible that - ACE_Reverse_Lock can be used with ACE_Lock (the abstract - class). Thanks to Carlos for pointing this out. - -Mon Apr 26 21:43:23 1999 Ossama Othman - - * ace/Makefile.am (pkginclude_HEADERS, libACE_IPC_la_SOURCES): - - Added ATM_Addr sources to these variables. - - * ace/Makefile.am (EXTRA_libACE_la_SOURCES): - - Accidentally removed this variable. It is needed for - conditionally built sources, such as `gethrtime.cpp'. - - * tests/Makefile.am: - - Added newly added tests to the list of test programs to be built. - Changed "noinst_PROGRAMS" variable to "check_PROGRAMS" so that - tests only get built when a `make check' is issued by the user. - -Mon Apr 26 19:29:25 1999 Ossama Othman - - * tests/Reverse_Lock_Test.cpp (main): - - ACE_START_TEST macro had "Thread_Mutex_Test" instead of - "Reverse_Lock_Test." - -Mon Apr 26 17:01:22 1999 Steve Huston - - * ace/ACE.cpp (DllMain): Re-enabled this for use on Win32. - - * ace/OS.h (main): On non-pSoS, use ACE::init, ACE::fini rather than - creating object manager instances on the stack. Allows a single - instance regardless of program type; especially helpful on Win32. - - * ace/OS.cpp (ACE_OS_Object_Manager ctor): - * ace/Object_Manager.cpp (ACE_Object_Manager ctor): - Don't set instance_ if it was already set. So if two - ACE_Object_Manager instances end up getting created, the first one - stays The Instance, and the second gets used privately by its - creator. Previously, the original was forgotten. Thanks to David - Levine for working out this and the above details with me to get the - Win32 crowd in business without platform-specific hacks. - -Mon Apr 26 16:43:32 1999 Nanbor Wang - - * ace/Asynch_IO_Impl.h (ACE_Asynch_[Read|Write]_File_Impl): - Declared the read/write pure virtual methods of - ACE_Asynch_[Read|Write]_Stream_Impl again in these class to - avoid KAI compiler's overwriting pure virtual function - warnings. - -Mon Apr 26 10:54:23 1999 Carlos O'Ryan - - * ace/High_Res_Timer.h: - Moved the static method hrtime_to_tv to the public section. It - is useful outside this class. - - * ace/Synch_T.cpp: - The default constructor for ACE_Reverse_Lock should not allocate - the locking mechanism, otherwise it cannot work with ACE_Lock. - -Mon Apr 26 07:30:51 1999 Nanbor Wang - - * ace/OS.i (fstat): Changed to use CE's implementation and added - some features that're supported on other Win32 platforms. The - original implementation for Win32 closed down the file handle - accidentally which is not a "Good Thing[TM]". Thanks to Dominic - Williams for pointing this out. - -Sun Apr 25 21:35:37 1999 David L. Levine - - * ace/ACE.{h,cpp},OS.{h,cpp},Object_Manager.{h,cpp} (init,fini): - moved init_fini_count_ from ACE Object_Managers to ACE, so that - it is only used via ACE::init () and ACE::fini (). Thanks - to Steve Huston for pointing out that the old way didin't work - if an Object_Manager was created prior to starting main (), - and there were ACE::init ()/ACE::fini () calls in main (). - -Sun Apr 25 16:59:21 1999 Nanbor Wang - - * include/makeinclude/platform_sunos5_kcc.GNU: Fixed incorrect - compiler flags. - - * ace/config-sunos5.7.h: Added definition of uint64_t on KAI. - - * ace/config-kcc-common.h: Changed to use non-static object - manager. - Defined ACE_SIZEOF_LONGLONG. KAI compiler has type long long. - - * ace/OS.h: ACE_NOTREACHED should expand to nothing on KAI - compiler. - - * ace/CDR_Stream.h (ACE_CDR): KAI compiler doesn't have - longlong_t. - - * ace/Basic_Types.h: KAI compiler should define ACE_UINT64 as - unsigned long long. - -Sun Apr 25 14:52:18 1999 Douglas C. Schmidt - - * COPYING, - TAO/COPYING: Updated the ACE+TAO COPYING information to - emphasize the relationship to open source. Thanks to Malcolm - Spence for suggesting the wording. - -Sat Apr 24 23:03:31 1999 Alexander Babu Arulanthu - - * ACE_wrappers/ace/POSIX_Asynch_IO.cpp - * ACE_wrappers/ace/POSIX_Asynch_IO.h - * ACE_wrappers/ace/POSIX_Proactor.cpp - * ACE_wrappers/ace/POSIX_Proactor.h - * ACE_wrappers/ace/Proactor.cpp - * ACE_wrappers/ace/Proactor.h - * ACE_wrappers/ace/Proactor_Impl.h - - * ACE_wrappers/examples/Reactor/Proactor/Makefile - * ACE_wrappers/examples/Reactor/Proactor/README - * ACE_wrappers/examples/Reactor/Proactor/test_aiocb.cpp - * ACE_wrappers/examples/Reactor/Proactor/test_aiosig.cpp - * ACE_wrappers/examples/Reactor/Proactor/test_aiosig_ace.cpp - * ACE_wrappers/examples/Reactor/Proactor/test_proactor.cpp - * ACE_wrappers/examples/Reactor/Proactor/test_timeout.cpp - - - Completed Multithreading of POSIX_SIG_Proactor. - - - Introduced another constructor for ACE_POSIX_SIG_Proactor for taking - signal mask to be used with the Proactor. - - - Thanks to Dave Butenhof for helping a lot to - understand the various things in the POSIX4 standard. - - - Thanks to Dave suggestion of keeping null_handler for the sigaction - to real-time signals. With this and a couple of other correct POSIX - things SIG proactor is now working with in Solaris 2.7. - - - Lynx OS doesnt support , so it couldnt be - multithreaded. Enabled AIOCB_Proactor for this platform. - - - Added an example to make use of the real-time signal numbers for the - asynchronous I/O calls. - - * examples/Reactor/Proactor/test_posix_sig_proactor.cpp: This - program demonstrates how to post fake completions to The - Proactor. It also shows the how to specify the particular - real-time signals to post completions. - - * ace/config-lynxos.h: Enabled ACE_POSIX_AIOCB_PROACTOR for this - platform, since was not available. Without - , SIG_Proactor can not work correctly. - - * ace/config-linux-lxpthreads.h: Removed ACE_HAS_AIO_CALLS. Even - simple aio calls test is hanging. - -Sat Apr 24 13:09:27 1999 Douglas C. Schmidt - - * ace/Containers_T.h: Added allocator support to ACE_Array. - Thakns to Paul Francis for contributing this. - - * ace/Future.h (class ACE_Future): Make sure to mention that - get()'s ACE_Time_Value must be in absolute, not relative, time. - Thanks to Ian MacDonald for reporting this. - -Sat Apr 24 07:24:51 1999 David L. Levine - - * tests/Reverse_Lock_Test.cpp: removed ACE_Guard - instantiation because it's in ace/Synch.cpp. - - * ace/config-vxworks5.x.h: added ACE_THR_PRI_OTHER_DEF - #define, for use by MT_Cubit. - - * ace/Object_Manager.cpp, OS.cpp (fini): unconditionally set - instance_ to 0 at the end. This allows init () to - work properly if called after fini (), such as for - repeated test on VxWorks. Thanks to Todd Mullanix - for reporting this. - -Fri Apr 23 17:53:24 1999 David L. Levine - - * include/makeinclude/platform_vxworks5.x_g++.GNU: - for PPC860, changed -m=860 to -mcpu=860. Thanks to - Todd Mullanix for reporting this. - -Fri Apr 23 15:48:31 1999 James Hu - - * ace/OS.h: - * ace/OS.i: - * ace/README: - * ace/config-sunos5.5.h: added support for the memchr - library call, and created ACE_HAS_MEMCHR macro. - -Fri Apr 23 10:48:31 1999 David L. Levine - - * tests/New_Fail_Test.cpp (main): added uses of the - two static functions when they're not otherwise used, - to prevent g++ warnings. - -Fri Apr 23 09:11:24 1999 Carlos O'Ryan - - * tests/Reverse_Lock_Test.cpp: - Fixed template instantiation problems. - -Thu Apr 22 21:39:44 1999 Ossama Othman - - * tests/Makefile.am: - - Added support to create the `tests/log' directory after - the tests have been built. - - * tests/log/Makefile.am - - The above change deprecates this Makefile.am file. Thanks to - Nanbor for motivating this change. - -Thu Apr 22 20:50:30 1999 Jeff Parsons - - * ace/CDR_Stream.i: Modified reset() to reset all the message - blocks, instead of just the first one as it had previously done. - Thanks to Jerry D. De Master for pointing - out the problem and suggesting a fix. - -Thu Apr 22 19:40:52 1999 Steve Huston - - * ace/OS.h: Adjust exception thrown at out-of-memory for HP-UX, aC++. - - * ace/config-hpux-10.x-hpc++.h: Add ACE_NEW_THROWS_EXCEPTIONS. - -Thu Apr 22 19:30:01 1999 Irfan Pyarali - - * ace/Synch_T.h (class ACE_Reverse_Lock): Added an interesting - adapter class that changes a lock into a reverse lock, i.e., - acquire() on this class calls release() on the lock, and - release() on this class calls acquire() on the lock. - - One motivation for this class is when we temporarily want to - release a lock (which we have already acquired) but then - reaquire it soon after. An alternative design would be to add a - Anti_Guard or Reverse_Guard class which would release() on - construction and acquire() destruction. However, there are - *many* varieties of the Guard class and this design choice would - lead to at least 6 new classes. One new ACE_Reverse_Lock class - seemed more reasonable. - - * tests/Reverse_Lock_Test.cpp: Test for the new ACE_Reverse_Lock - class. - - * tests/Env_Value_Test.cpp (main): Fixed UNICODE string - concatenation problem. - - * tests/version_tests: Added a bunch of missing project files. - - * ace/ace_lib.dsp: Added missing files. - -Thu Apr 22 19:10:52 1999 Steve Huston - - * ace/ATM_Addr.cpp: Put in class's consts for non-FORE platforms. - -Thu Apr 22 17:05:36 1999 Nanbor Wang - - * bin/auto_compile_win32.pl: Added version_tests. - - * include/makeinclude/platform_sunos5_kcc.GNU: Makefile macros for - KAI C++ compiler. - - * ace/config-sunos5.5.h: Added KAI C++ compiler support. - - * docs/exceptions.html: Explicitly state that ACE try macros will - replace TAO try macros and advise users to take action if they - are still using TAO try macros. Thanks to Don Busch - for pointing this out. - -Thu Apr 22 15:07:10 1999 David L. Levine - - * include/makeinclude/platform_vxworks5.x_g++.GNU: - added PPC860 support. Thanks to Todd Mullanix - figuring out how to - support it, with help from Thomas Mehrkam - and Hai Vu . - -Thu Apr 22 13:26:26 1999 Irfan Pyarali - - * ace/XtReactor.cpp (remove_handler_i): In the registration phase, - we registered first with ACE_Select_Reactor and then with X. - Now we are now doing things in reverse order. Thanks to JM - Strauss for contributing these changes. - -Thu Apr 22 13:23:00 1999 Chris Gill - - * include/makeinclude/platform_psos_diab_ppc.GNU: commented out -g - switch which was triggering a bug in the Diab 4.2b compiler when - compiling in debug information. This is supposed to be fixed in - the 4.3a release of the Diab compiler. The ACE tests all compile - now for pSOS/PPC. Thanks to Sarmeesha Reddy - for reporting the bug to Diab and obtaining the workaround. - -Thu Apr 22 10:46:17 1999 Steve Huston - - * apps/JAWS/server: Added $(ACELIB) to LDLIBS to build libJAWS on AIX - with xlC. - - * tests/New_Fail_Test.cpp: Added __GNUG__ to the platforms which do not - actually perform the test; added some more explanation and a better - log message for when it doesn't actually run. - -Thu Apr 22 10:28:39 1999 David L. Levine - - * ace/config-minimal.h: removed suppression of ACE_TSS_EMULATION - and enable of ACE_USE_THREAD_MANAGER_ADAPTER. They're no - longer necessary with the clean OS.cpp. - -Thu Apr 22 08:52:48 1999 Steve Huston - - * tests/New_Fail_Test.cpp: Fixed to compile clean without exceptions. - - * tests/run_tests.{sh bat}: Added New_Fail_Test. - -Wed Apr 21 16:41:08 1999 David L. Levine - - * tests/Reactor_Performance_Test.cpp (main): added 10 second - time limit to run_event_loop () call. That prevents the - test from hanging forever if some of the connections - are lost. - - * tests/Priority_Reactor_Test.cpp: default to 5 children - instead of 10 on LynxOS. Beyond 8, the test seems to - take forever on LynxOS 3.0.0. - - * tests/run_tests.sh: enabled Reactor_Performance_Test, - Priority_Reactor_Test, Time_Service_Test, and Tokens_Test - on LynxOS. - -Wed Apr 21 16:35:21 1999 Steve Huston - - * tests/New_Fail_Test.cpp: Test to be sure that the ACE_NEW[_RETURN] - stuff works correctly when heap is exhausted. - * tests/Makefile: Added New_Fail_Test. - * tests/tests.dsw, New_Fail_Test.dsp: Add new test to MSVC. - -Wed Apr 21 15:35:44 1999 Steve Huston - - * ace/ACE.cpp: On Win32, with ACE_HAS_NONSTATIC_OBJECT_MANAGER, use - DllMain to do ACE::init() and ACE::fini(). - - * tests/ACE_Init_Test.dsp, - * tests/ACE_Init_Test.{cpp h}, - * tests/ACE_Init_TestDlg.{cpp h}, - * tests/ACE_Init_Test.(ico rc rc2 res}, - * tests/ACE_Init_Test_(Resource StdAfx}.h: New test to be sure that - ACE DLL is initialized properly from an MFC app. - - * tests/tests.dsw: Added ACE_Init_Test.dsp project. - -Wed Apr 21 14:59:04 1999 David L. Levine - - * ace/OS.cpp (ACE_OS_Object_Manager::fini): on LynxOS only, - disabled ACE_{recursive/thread}_mutex_destroy () calls, because - they failed on LynxOS in forked children. The prevents - the failure message from being printed, with no apparent - ill effect. - -Wed Apr 21 10:06:11 1999 Steve Huston - - * include/makeinclude/platform_sunos5_sunc++.GNU: Moved -lthread from - the all-Orbix section to the MT-Orbix section for LIBS. - -Wed Apr 21 09:25:16 1999 David L. Levine - - * tests/Upgradable_RW_Test.cpp (main): replaced ACE_SCHED_FIFO - with THR_SCHED_FIFO in activate call. Thanks to Carlos for - finding this subtle error. - -Wed Apr 21 03:34:18 1999 Douglas C. Schmidt - - * ACE version 4.6.37 released. - -Tue Apr 20 22:55:18 1999 David L. Levine - - * ace/OS.i (thr_join): ifdef ACE_LACKS_PTHREAD_NULL_STATUS, - provide the address of a temporary variable for the status - argument of ::pthread_join (), if the caller passed 0. - - * ace/config-lynxos.h,README: added ACE_LACKS_PTHREAD_NULL_STATUS. - LynxOS 3.0.0 fails ::pthread_join () calls with EFAULT - if the second (status) argument is 0. - -Tue Apr 20 21:53:32 1999 Joe Hoffert - - * examples/IPC_SAP/TLI_SAP/Makefile: Had inadvertently checked in - local changes. Now undoing these changes. - -Tue Apr 20 18:25:45 1999 Douglas C. Schmidt - - * ace/{SOCK,TLI,LSOCK,Asynch}_Acceptor.h: Replaced the use of the - hard-coded backlog value of 5 with ACE_DEFAULT_BACKLOG. Thanks - to Irfan for motivating this. - - * ace/OS.h: Added a new (overriddable) macro called - ACE_DEFAULT_BACKLOG that's used to control the default number of - connections that can be accepted by an OS. The default value is - 5. - -Tue Apr 20 18:22:00 1999 Chris Gill - - * ace/Map_T.i - ace/config-psos-diab-mips.h - ace/config-psos-diab-ppc.h - ace/config-psos-diab.h - include/makeinclude/platform_psos_diab_ppc.GNU - tests/Handle_Set_Test.cpp - tests/Process_Strategy_Test.cpp: fixed the remaining tests - for which compiler bug workarounds were available for pSOS - PPC with the Diab 4.2b compiler. - -Tue Apr 20 16:41:39 1999 Nanbor Wang - - * ace/Thread_Manager.cpp (num_tasks_in_group): Make sure we are - not searching for a null task. Thanks to Umar Syyid - for pointing this out. - -Tue Apr 20 15:10:33 1999 Irfan Pyarali - - * tests/Reactor_Performance_Test.cpp: Changed the default number - of connections () from 20 to 5 for NT. This - seems reasonable since the default backlog is 5. Once we have - the ability to set the backlog from the ACE_Acceptor class, we - can increase this number. - -Tue Apr 20 13:55:34 1999 Joe Hoffert - - * ace/OS.i: Fixed ACE_OS::t_free to free memory if pointer is not - null. - - * ace/TLI.h: Added default ACE_XTI_ATM_DEVICE. - - * ace/TLI_Connector.cpp: Disabled non-blocking connects for XTI/ATM - since FORE's drivers have problems with this. Also, fixed t_alloc - memory leaks. - - * ace/ATM_Addr.cpp: Added code formatting change. - - * examples/IPC_SAP/TLI_SAP/CPP-ATM-{server,client}.cpp: Added - the use of ACE_XTI_ATM_DEVICE - -Tue Apr 20 13:30:51 1999 Douglas C. Schmidt - - * ace/ace.icc: Added a configuration file for creating a shared - library with Visual Age C++. - -Mon Apr 19 23:50:25 1999 Irfan Pyarali - - * tests/Time_Service_Test.cpp (main): Fixed error message. - - * ace/Connector.cpp (handle_close): Removed unused argument - . - -Mon Apr 19 17:17:47 1999 Steve Huston - - * docs/tutorials/tutorials.dsw: Fixed project file name for 019-021. - -Mon Apr 19 17:02:42 1999 Irfan Pyarali - - * ace/Connector.cpp (handle_close): There is no need to call - cancel_timer() or remove_handler() from handle_close(). Removal - of all svc tuples from the is done by . - -Mon Apr 19 16:45:54 1999 David L. Levine - - * ace/OS.{h,cpp},Object_Manager.{h,cpp} (ACE_OS_Object_Manager, - ACE_Object_Manager: added static counter to match init ()/fini () - calls. Don't destroy Object_Managers until final fini () call. - Thanks to Ian MacDonald for tracking down - the problem with multiple DLLs in a process. This change - delays destruction of the ACE_Object_Manager until the final - fini () call. - -Mon Apr 19 15:24:55 1999 Douglas C. Schmidt - - * ace/TLI_Stream.cpp (ACE_TLI_Stream): Make sure to set the value - of rwflag_ to 0 so that purify is happy. Thanks to Joe Hoffert - for reporting this. - -Mon Apr 19 14:35:42 1999 Irfan Pyarali - - * examples/IPC_SAP/UPIPE_SAP/ex2.cpp (supplier): - * examples/IPC_SAP/UPIPE_SAP/ex3.cpp (consumer): - - Avoided annoying g++ warning about by explicitly - making a temporary. Thanks to David for pointing this out. - -Sun Apr 18 21:52:43 1999 David L. Levine - - * ace/config-linux-common.h: moved ACE_LACKS_MADVISE to - non-glibc section. Thanks to JM Strauss - for reporting that it wasn't on a Linux system with a - 2.0.35 kernel. - -Sun Apr 18 16:36:30 1999 Ossama Othman - - * ace/config-linux-common.h (ACE_LACKS_MADVISE): - - Re-enabled #define ACE_LACKS_MADVISE. Linux doesn't appear - to have an madvise() system call. - - * configure.in: - * tests/Makefile.am: - - Added libtool support for modules (dlopened libraries). - -Sun Apr 18 08:48:37 1999 David L. Levine - - * ace/Auto_Ptr.i: reordered inline methods to avoid use before - definition. Fixed a few ACE_TRACE comments. - -Sun Apr 18 00:26:28 1999 Irfan Pyarali - - * tests/Notify_Performance_Test.cpp (main): - * tests/Reactor_Performance_Test.cpp (main): - * tests/Priority_Reactor_Test.cpp (main): - - Avoided annoying g++ warning about by explicitly - making a temporary. Thanks to David for pointing this out. - -Sat Apr 17 18:52:38 1999 Irfan Pyarali - - * ace/Memory_Pool.cpp (acquire): Changed use of auto_ptr. - - * ace/Auto_Ptr.i (operator=): Changed to . Thanks to - David Levine and Jean-Marc Strauss - for reporting this. - -Sat Apr 17 08:34:22 1999 David L. Levine - - * examples/Naming/Makefile,performance-tests/Misc/Makefile, - tests/Makefile,all netsvcs Makefiles: - updated for proper support of ACE subsets, with BIN2/LIB2/SHLIB2. - -Fri Apr 16 22:14:36 1999 Irfan Pyarali - - * ace/Auto_Ptr: Made several changes to bring the implementation - up to the specification: - - - Made the constructors take non-const parameters. - - Made release() non-const. - - Added reset(). - - Thanks to Simeon Simeonov , Rainer Blome - , Jody Hagins , and John - Mulhern for helping. - - * tests/Reactor_Performance_Test.cpp: Updated to work with new - auto pointer implementation. - -Fri Apr 16 19:36:35 1999 Alexander Babu Arulanthu - - * ace/Proactor.h (ACE_Proactor): Switched the order of TIMER_QUEUE - and delete_implementation in the constructor. - - * examples/Reactor/Proactor/test_multiple_loops.cpp: Fixed to work - on the WIN32 correctly. This can work only on WIN32 (combining - Proactor with Reactor's event loop). So I have put a #if defined - around the file. - -Fri Apr 16 18:09:44 1999 Irfan Pyarali - - * tests/Conn_Test.cpp (server): If we timeout on accept(), it is - not an error, and should not be reported as one. Thanks to - Thomas Mehrkam for pointing this out. - -Fri Apr 16 13:08:49 1999 David L. Levine - - * ace/OS.{h,cpp},ACE.{h,cpp}: (read_n,send_n,write_n): moved - from ACE to ACE_OS, so that the uses in OS.cpp could be localized. - The ACE versions are now just wrappers over the ACE_OS - versions, for backward compatibility. Thanks to - Erik Ivanenko for reporting - that OS.cpp used a couple of the ACE static member functions. - -Fri Apr 16 10:13:14 1999 David L. Levine - - * include/makeinclude/rules.nested.GNU,ACE-INSTALL.html: added - support for recursive make invocations with Windows NT's shell. - Thanks to Dave Steele for diagnosing the - problem, and Tres Seaver for providing - the wild NT FOR command. Check it out, Darrell. - -Fri Apr 16 07:52:11 1999 Darrell Brunsch - - * ace/High_Res_Timer.cpp: Fixed my previous fix with - calibrate being called on Windows NT when a high-res - timer of 1 Mhz was being found. Calibrate should not - be called on NT now. Thanks to Zoran Ivanovic - for noticing this. - - * ace/Profile_Timer.cpp: Integrated the patch from Andy - Marchewka for returning rusage information - from elapsed_time. - -Thu Apr 15 16:50:21 1999 David L. Levine - - * ACE-INSTALL.html: updated discussion of "dir unexpected" - error when building for VxWorks on NT. Thanks to - Dave Steele for providing the - insight. - -Thu Apr 15 14:04:36 1999 David L. Levine - - * include/makeinclude/rules.lib.GNU: don't call $(RANLIB) - if it is null. - - * include/makeinclude/platform_vxworks5.x_{g++,ghs}.GNU: removed - RANLIB definition, so that it will be null. This prevents - calling "true" on NT hosts. - - Thanks to Thomas Mehrkam for reporting - that his NT host doesn't have "true". - -Thu Apr 15 14:00:00 1999 Chris Gill - - * ace/OS.{h, i}: simplified the conditional compilation logic - for a couple of the pSOS-specific ACE_OS methods, removed a - handful of marker comments, added a conditional compilation - branch for pid_t declaration. - -Wed Apr 14 22:40:08 1999 David L. Levine - - * tests/run_tests.sh: call run_tests.check via sh, to support - platforms that don't have /bin/sh. Thanks to Thomas Mehrkam - for reporting that his NT host doesn't - have /bin/sh. - -Wed Apr 14 18:56:00 1999 Chris Gill - - * ace/OS.{h, i} - ace/config-psos-diab-ppc.h - include/makeinclude/platform_psos_diab_ppc.GNU: changes to adapt - the pSOS Diab 68k/MIPS port to PPC. Many thanks to Sarmeesha - Reddy and Steven Tine - for contributing these changes. - -Wed Apr 14 17:06:22 1999 David L. Levine - - * ace/config-vxworks5.x.h: added #define ACE_HAS_DLL 0. - Thanks to Thomas Mehrkam for - reporting that it's necessary on NT hosts. - -Wed Apr 14 13:10:48 1999 Alexander Babu Arulanthu - - * ace/config-sunos5.7.h: - Enabled ACE_HAS_AIO_CALLS for Solaris - 7. ACE_POSIX_AIOCB_PROACTOR works now on this. - * examples/Reactor/Proactor/test_aiocb.cpp: Updated comments. - * ace/config-sunos5.6.h: Removed the ACE_AIORETURN/ERROR macros. - * ace/Proactor.cpp (ACE_Proactor): Removed debug print statments. - * ace/config-lynxos.h: Removed the ACE_AIORETURN/ERROR macros. - * ace/POSIX_Proactor.cpp: - * ace/WIN32_Asynch_IO.h: - * ace/WIN32_Asynch_IO.cpp: - * ace/WIN32_Proactor.h: - * ace/WIN32_Proactor.cpp: - * ace/Proactor_Impl.h: - Completed committing changes related to the - additions done earlier. - -Wed Apr 14 09:07:38 EDT 1999 Aniruddha Gokhale - - * ace/POSIX_Proactor.cpp: - - Several methods were missing the "int signal_number" parameter - that was added as mentioned in the log entry below. In addition, - an undefined ACE_SIG_AIO flag was used. I found a log entry in - ChangeLog-98b which says that ACE_SIG_AIO is ACE_SIGRTMIN. So I - replaced the 5 occurrences of ACE_SIG_AIO with ACE_SIGRTMIN. - -Wed Apr 14 02:34:13 1999 Alexander Babu Arulanthu - - Added additional parameter to all the Asynchronos - Operation method so that we can specify which real-time signal should - be used for each of the Asynchronous Operation. This only makes sense - in the ACE_SIG_Proactor configuration. - - * ace/Asynch_IO_Impl.h: - * ace/Asynch_IO.h: - * ace/Asynch_IO.cpp: - * ace/POSIX_Asynch_IO.h: - * ace/POSIX_Asynch_IO.cpp: - * ace/POSIX_Proactor.h: - - - For each asynchronous call issued, the real-time signal is - registered with the Proactor so that it can wait for the completions - using that signal. Previously, the signal number for all the - operations was the same signal and it was hard coded. - - - method which earlier existed only for - has been added to - also. just takes the from the result - object and registers the signal number. Registering involves, - masking the signal, setting the signal delivery for that RT signal - etc. - - - Allowing to specify signal number for each operation can be useful, - since the order in which the completions are delivered from the - completion queue, is based on the signal numbers in addition to the - priority. Applications might want to leverage this. - - * ace/OS.h: - OS.h has been defined with ACE_SIGRTMIN and ACE_SIGRTMAX, which are - defined to SIGRTMIN and SIGRTMAX respectively, for POSIX4 - platforms. For others, they are 0. - -Tue Apr 13 15:29:37 1999 David L. Levine - - * ace/Object_Manager.cpp: moved ACE_Service_Config signal - handler allocation from constructor to init (). Tidy, - tidy, tidy. - -Tue Apr 13 14:52:15 1999 Joe Hoffert - - * ace/ATM_Addr.cpp: Fixed g++ warnings of unused parameters. - -Tue Apr 13 14:47:18 1999 David L. Levine - - * tests/Basic_Types_Test.cpp (main): replaced call to sysconf () - with ACE_OS::sysconf (). Thanks to Erik Ivanenko - for noticing this. - -Tue Apr 13 14:17:48 1999 David L. Levine - - * ace/OS.cpp: replaced use of ACE_TSS with ACE_WIN32 or - ACE_HAS_TSS_EMULATION with native use of ACE_OS TSS, to remove - dependency on ace/Synch.h. Also, changed ACE_OS::NULL_key to - be -1 instead of 0 with ACE_HAS_TSS_EMULATION. - -Tue Apr 13 09:05:25 1999 David L. Levine - - * ace/Sched_Params.i (ACE_Sched_Priority_Iterator): removed - ACE_TRACE's, because Sched_Param is in the ACE_OS (lowest) - component. Thanks to Erik Ivanenko - for reporting this. - -Tue Apr 13 08:21:41 1999 Steve Huston - - * include/makeinclude/platform_sunos5_sunc++.GNU - * include/makeinclude/platform_sunos5_sunc++_orbix.GNU: Added a make - option, mt_orbix, to control whether the MT or non-MT variant of - Orbix is used. Default is MT; to use non-MT, "make mt_orbix=0". - - * ace/config-sunos5.x-sunc++-4.x-orbix.h: Include correct config-sunos5 - file based on OS version at compile time. Allow site config to - specify ACE_HAS_MT_ORBIX 0. - -Mon Apr 12 14:24:28 1999 David L. Levine - - * include/makeinclude/rules.local.GNU (realclean.local): - added BIN2, LIB2, SHLIB2, and SHLIBA2 to support - subsetting. It allows realclean to remove old BIN, - LIB, SHLIB, and SHLIBA targets after remove the - ace_components information file. Also, removed explicit - -f following $(RM). -f should be included in the RM macro - if appropriate for the platform. - -Mon Apr 12 13:01:32 1999 David L. Levine - - * ace/gethrtime.cpp (ACE_gethrtime),Makefile: added support for - rdtsc instruction with GHS on Intel targets. Thanks to - Andy Alvarez for providing the assembly - instructions to do this! - -Mon Apr 12 12:04:20 1999 Joe Hoffert - - * ace/Makefile,ATM_Addr.cpp: - Added ACE_ATM_Addr class back into Makefile since it's working - now. Fixed address initialization problem in ACE_ATM_Addr. - NOTE: This code currently only works with Solaris 2.5/2.6. Will - need to update the code for FORE's implementation on Solaris 2.7. - NOTE: To use FORE's XTI/ATM implementation the following #defines - need to be included (typically in ace/config.h): - #define ACE_HAS_FORE_ATM_XTI - #define ACE_HAS_TIUSER_H_BROKEN_EXTERN_C - #define ACE_TLI_TCP_DEVICE "/dev/xtisvc*" //(e.g., /dev/xtisvc0) - AND the following flags are needed to build the ace library - (typically in include/makeinclude/platform_macros.GNU): - CPPFLAGS += -I$(FORE_ROOT)/include - -Mon Apr 12 10:04:31 1999 Carlos O'Ryan - - * include/makeinclude/rules.local.GNU: - The default rule to compile .idl files is only enabled if - TAO_ROOT is not defined, otherwise we should use the rule in - $TAO_ROOT/rules.tao.GNU - -Mon Apr 12 00:18:23 1999 Douglas C. Schmidt - - * ACE version 4.6.36 released. - -Sun Apr 11 17:06:53 1999 Alexander Babu Arulanthu - - * examples/IPC_SAP/SOCK_SAP/CPP-inclient.cpp (run_client): Fixed - the warnings on Linux (config-linux.h). - -Sun Apr 11 16:09:16 1999 Douglas C. Schmidt - - * examples/IPC_SAP/SOCK_SAP/CPP-inclient.cpp (run_client): Made - some fixes if ACE_MT_SAFE is false... Thanks to Alex for - reporting these. - -Sun Apr 11 16:02:49 1999 Alexander Babu Arulanthu - - * examples/IPC_SAP/SOCK_SAP/CPP-inserver-fancy.cpp (create_handler): - Fixed the warnings (control reaching end of block) and error (passing - u_long to close) which showed up on Linux(with config-linux.h) - - * performance-tests/Misc/preempt.cpp, - * examples/Threads/task_five.cpp: Replaced ACE_MT_SYNCH by - ACE_SYNCH to get it compile on Linux. - -Sun Apr 11 14:38:22 1999 Ossama Othman - - * configure.in: Added test for ACE_NEEDS_FUNC_DEFINITIONS. - Corrected bug in ACE_TEMPLATES_REQUIRE_SOURCE test. - -Sat Apr 10 14:02:11 1999 Douglas C. Schmidt - - * ace/Malloc[_Base]: Added a new no-op constructor for - ACE_Allocator to hopefully work around a problem with DEC UNIX - C++. - -Fri Apr 09 10:08:49 1999 David L. Levine - - * include/makeinclude/platform_vxworks5.x_g++.GNU: - enable -fno-implicit-templates for targets other than - Intel. It appears to work for PPC targets, and is necessary - to avoid compiler warnings about different symbol sizes - in object files. Thanks to Thomas Mehrkam - for tracking down the source of the warnings, and verifying - that -fno-implicit-templates works for PPC targets. - -Fri Apr 09 08:14:55 1999 David L. Levine - - * include/makeinclude/rules.local.GNU: replaced "ln -s" with - $(LN_S), and set that to "ln -s" by default. Thanks to - Rainer Blome for suggesting this. - -Fri Apr 9 00:38:03 1999 Douglas C. Schmidt - - * ace/SOCK_Acceptor.cpp (shared_accept): Make sure to disable - ACE_NONBLOCK on the newly accepted socket since otherwise - applications can have weird behavior. Thanks to Margaret Reitz - and Irfan for helping to track this down. - -Thu Apr 08 13:47:03 1999 David L. Levine - - * BUG-REPORT-FORM,PROBLEM-REPORT-FORM, - README,VERSION,Makefile,Makefile.am,bin/make_release, - docs/ACE-bug-process.html: moved BUG-REPORT-FORM - to PROBLEM-REPORT-FORM. Thanks to Thomas Lockhart - for suggesting this. - - * docs/ACE-guidelines.html: added checklist for ACE/TAO changes, - including commit with a meaningful message, update a - ChangeLog, and ack and respond to the requestor. - -Thu Apr 8 13:18:22 1999 Alexander Babu Arulanthu - - * ace/SString.h: Updated the documentation to show that "Memory is - _not_ allocated/freed if is 0". - -Wed Apr 7 20:24:48 1999 Nanbor Wang - - * ace/CORBA_macros.h (ACE_DECLARE_NEW_CORBA_ENV): Removed the - trailing semi-column. Thanks to Marina for the reminder. - -Wed Apr 7 19:09:05 1999 Douglas C. Schmidt - - * ace/Containers_T: Replaced all Foo &Foo::operator=() with void - Foo::operator=() to avoid nasty problems with propagation of - errors. Thanks to Chris Schleicher for - reporting this. - -Wed Apr 07 17:25:07 1999 Nanbor Wang - - * apps/Gateway/Gateway/connection_config: Changed the connection 1 - and 2 to use localhost since it would probably be the most - common test case. - - * apps/Gateway/README: Replaced all references of proxy_config - to connection_config. Also change the example port number to - 10011 and 10012 which are the default port number used by the - gatewayd. - - Thanks to Sam Rhine for reporting - this. - -Wed Apr 7 16:36:41 1999 Darrell Brunsch - - * ACE-INSTALL.html: Put a note in saying to rebuild all - when upgrading releases. - -Wed Apr 07 14:25:47 1999 Joe Hoffert - - * ace/ATM_Addr.{h,cpp}: modified files to compile for - machines without FORE XTI/ATM support. - - * examples/IPC_SAP/TLI_SAP/CPP-{server,client}.cpp: - modified files to take out XTI/ATM code. - - * examples/IPC_SAP/TLI_SAP/Makefile,CPP-ATM-{server,client}.cpp: - added separate test files for XTI/ATM - -Wed Apr 7 14:20:59 1999 Jeff Parsons - - * ace/Basic_Types.h: - Added a signed companion to David's - ACE_UINT64_LITERAL, to avoid MSVC warnings. If - the platform has no 8-byte integer, this is - useless, but we must keep all compilers happy. - Also modified ACE_INT64_MAX tp use this, and - added a signed companion to - ACE_UINT64_FORMAT_SPECIFIER. - -Wed Apr 07 13:57:33 1999 David L. Levine - - * ACE-INSTALL.html: updated egcs shared library discussion - with information from Tim Rose - that egcs 1.1.1 statics libs work fine on Solaris 2.6. - -Wed Apr 07 13:14:34 1999 Nanbor Wang - - * ace/Service_Object.{h,i} (fini_called): Accessor to the - underlying fini_already_called_ flag. - - * ace/Service_Repository.cpp (find_i): Disallowed returning a - service which fini() has been called upon. - -Wed Apr 7 11:30:09 1999 Carlos O'Ryan - - * bin/auto_compile: - Added more tests to the script. - -Wed Apr 07 09:54:28 1999 David L. Levine - - * include/makeinclude/rules.local.GNU: instead of trying to - overwrite an existing symlink with ln -f, remove it first. - Thanks to Keith Rohrer for reporting that - Solaris' ln -f doesn't work. - - * ace/config-vxworks_5.x.h: added ACE_HAS_RECURSIVE_MUTEXES. - Thanks to Tom Venturella - for suggesting this, because the VxWorks semaphores that - ACE uses for mutexes are recursive. - - * ace/Synch.i (set_thread_id): added ACE_UNUSED_ARG (t), with - ACE_HAS_RECURSIVE_MUTEXES. - -Wed Apr 07 09:37:34 1999 David L. Levine - - * include/makeinclude/platform_osf1_4.0.GNU: disable warning - 1016 when optimization is enabled. That gets rid of the - "D:incint" warning about bzero in sys/select.h. - - * docs/ACE-guidelines.html: always use $(RM) instead of rm or - rm -f in Makefiles. - -Wed Apr 07 02:42:50 1999 Douglas C. Schmidt - - * ACE version 4.6.35 released. - -Wed Apr 07 02:04:30 1999 Douglas C. Schmidt - - * ACE version 4.6.34 released. - -Tue Apr 6 21:09:32 1999 Douglas C. Schmidt - - * ace/ATM_Addr: Added the ATM_Addr.* files into the CVS - respository. However, we're not going to enable this in the - Makefile or project files until they are tested. - -Tue Apr 6 20:48:16 1999 Jeff Parsons - - * ace/Basic_Types.h: - Added max and min #defines for various ACE data types. Now, - when using the ACE or ACE_CDR data types, we need not - depend on the vagaries of limits.h and float. - -Tue Apr 6 20:39:01 1999 Ossama Othman - - * ace/Log_Record.cpp (format_msg): - * ace/Log_Record.cpp (print): - - Changed host_name[] to *host_name since null pointers were being - passed into the host_name array. Strictly speaking, host_name - should thus be a pointer, not an array. Also cleaned up - ternary operator in format_msg() by parenthesizing some - expressions. - -Tue Apr 6 20:19:23 1999 Douglas C. Schmidt - - * ace/Makefile: Removed the ATM_Addr files until Joe can - get them checked in. - -Tue Apr 06 19:36:24 1999 Irfan Pyarali - - * ace/Active_Map_Manager.h (ACE_Active_Map_Manager_Key): Added a - separate structure that holds the fields of the key. This - separate structure makes it easier to manage copying the index - and the generation to and from the user buffer. - -Tue Apr 6 16:07:29 1999 Douglas C. Schmidt - - * ace/Synch.cpp (get_thread_id): If we have recursive mutexes then - it's not possible to get the id of the thread that's currently - holding the mutex. Thanks to David for reporting this. - -Tue Apr 6 15:50:14 1999 Balachandran Natarajan - - * docs/exceptions.html: - Updated the documentation. - -Tue Apr 6 15:25:56 1999 Darrell Brunsch - - * ace/High_Res_Timer.{h,i,cpp}: On Win32, don't call calibrate if - we cannot get the scale factor. Instead, just automatically - fall back on ACE_OS::gettimeofday (). - - Also added another static variable to represent the conditions - where the global scale factor is not set yet or high resolution - timers are not supported. - -Tue Apr 06 15:14:29 1999 David L. Levine - - * ace/Basic_Types.h: added ACE_UINT64_LITERAL for platforms - with ACE_LACKS_U_LONGLONG_T. - - * tests/Basic_Types_Test.cpp: added test of ACE_UINT64_LITERAL. - -Tue Apr 06 14:54:56 1999 Nanbor Wang - - * tests/Message_Queue_Test.cpp (performance_test): - * tests/Message_Queue_Notifications_Test.cpp (producer): Unicode - related change. - - * ace/ace_ce_dll.dsp: Added Active_Map_Manager.cpp. - - * ace/OS.h: - * ace/config-WinCE.h: CE now uses non-static object manager. - - * WindozeCE/WindozeCE.h: Instantiate the non-static object manager - within the class. - - * WindozeCE/WindozeCEDlg.cpp: We should register the bridge window - using its HANDLE so it would work no matter we build ACE with or - without MFC support. - -Tue Apr 6 14:17:06 1999 Joe Hoffert - - * ace/OS.h: Added support for the FORE ATM XTI interface. - - * ace/TLI_{Acceptor,Connector}: Added support for the FORE ATM XTI - interface. - - * ace/ATM_Addr: Added support for ATM address for the XTI ATM - driver. Eventually, this class will be generalized to work on - WinSock 2 ATM support, as well. - -Tue Apr 06 13:56:18 1999 Thomas Lockhart - - * include/makeinclude/rules.local.GNU: added -f to ln -s commands, - to force overwrite of old symlink. This eases moving of - installed ACE code trees. - -Tue Apr 6 00:17:59 1999 Kirthika Parameswaran - - * ace/DLL {.h, .cpp} (set_handle): Added the set_handle () method - which allows the user to set the ACE_SHLIB_HANDLE for the DLL. - Thanks to Bob McWhirter for bringing up this point. - -Mon Apr 5 22:27:02 1999 Douglas C. Schmidt - - * ace/config-irix6.x-sgic++-nothreads.h: Added - - #if !defined (ACE_HAS_NETDB_REENTRANT_FUNCTIONS) - #define ACE_LACKS_NETDB_REENTRANT_FUNCTIONS - #endif /* ACE_HAS_NETDB_REENTRANT_FUNCTIONS */ - - to fix a problem with SGI 6.5. Thanks to Bob Laferrie - for reporting this. - -Mon Apr 5 19:42:11 1999 Ossama Othman - - * configure.in: - * m4/acinclude.m4: - - Created the macro ACE_CHECK_FOR_CVS_DIR to prevent the configure - script from continuing the configuration if the current - configuration directory is in a CVS controlled directory. The - idea is to prevent automatically generated files from being - checked into the repository. This will prevent accidental - overwrites of ACE's current Makefiles by the automatically - generated ones, for example. - - In addition, this should ease the transition from the current - Makefile scheme to the new Auto{conf,make}/libtool scheme since - the current Makefiles can remain under CVS control without - the generate Makefiles interfering with them. - -Mon Apr 05 17:02:46 1999 David L. Levine - - * ace/High_Res_Timer.cpp (global_scale_factor ()): removed - comment that said we use BogoMIPS on Linux/Intel. We - only use it on Linux/alpha. Thanks to - Thomas Lockhart for - reporting this. - -Mon Apr 5 15:54:57 1999 Darrell Brunsch - - * ace/Profile_Timer.i: Removed ACE_OS::gettimeofday () - calls from start and stop. - -Mon Apr 05 15:09:49 1999 David L. Levine - - * ace/OS.h: removed second #include of netdb.h. Thanks to - John H Aughey for reporting this. - -Mon Apr 05 14:17:31 1999 David L. Levine - - * ace/Trace.cpp: removed unnecessary (and complicated) - #include of ace/ACE.h. - -Mon Apr 5 13:21:49 1999 Alexander Babu Arulanthu - - * ace/Proactor.cpp: - (svc): - * ace/POSIX_Proactor.cpp: - * ace/POSIX_Proactor.h: - * ace/Proactor.h: - * ace/Proactor_Impl.h: - * ace/WIN32_Proactor.cpp: - * ace/WIN32_Proactor.h: - * examples/Reactor/Proactor/test_timeout.cpp: - Completed Timers implementation for POSIX platforms. Timers - implementation is now common for POSIX and WIN32. Portable - ACE_Auto_Event is used in the auxillary thread to wait for the - Timer events. - The Timer's code in WIN32 has been removed and the common code exists - in Proactor.{h,cpp} only. - A new factory method called create_asynch_timer has been created to - create the Timer Result class. This is used internally by the Proactor - to post timer completions to the Proactor completion - queue. Application may want to use this directly to fake - completions. - -Mon Apr 05 12:05:01 1999 David L. Levine - - * ace/OS.*,Thread_Manager.{h,cpp}: moved flags members from - ACE_Thread_Descriptor to a new ACE_OS_Thread_Descriptor base - class, to remove dependency of OS.cpp on Thread_Manager.h. - -Sun Apr 4 18:19:05 1999 Ossama Othman - - * configure.in: - - Changed ANSI C++ cast test to fail on warnings. Currently, - only g++ and Sun C++ warning/error conversion is supported. - - Moved the ACE_SET_COMPILER_FLAGS macro after the AC_ARG_ENABLE - and AC_ARG_WITH calls so that user settings can influence what - compiler flags get set. - - Removed some M4 comments (`dnl') that were inside of the - template specialization test header block. The test was failing - since `dnl' was being quoted by M4 and actually placed inside - the test program source during test source compilation. Also - corrected a typo in the same test. - - Changed test for ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION so - that it attempts to link instead of just compile. Hopefully - this will make the test "tougher." - - * m4/compiler.m4: - - Added `-features=castop' compiler flag and completed support for - `-features=rtti' via `--enable-rtti'. These flags only work for - Sun C++ 4.2. Added support for the `-noex' Sun C++ compiler flag - when the user disables exception handling. - - * m4/platform.m4: Minor comment updates. - -Sat Apr 3 19:41:36 1999 Nanbor Wang - - * ace/TTY_IO.cpp (control): Disabled support for higher baudrate - for non-NT platforms. - -Sat Apr 3 19:37:07 1999 Douglas C. Schmidt - - * ace/TTY_IO.cpp (control): Added support for more modem speeds. - Thanks to Valery Arkhangorodsky for - reporting this. - -Sat Apr 3 17:02:48 1999 James CE Johnson - - * docs/tutorials/*: Regenerated all the HTML to get the hyperlinks - into the various headers. I'm sure somebody will let me know if I - munged it all. - - * docs/tutorials/(019|020|021) : Finally made myself sit down and - add Kirthika's last abstracts. - -Sat Apr 3 15:27:07 1999 Ossama Othman - - * Makefile.am - * ace/Makefile.am - * netsvcs/clients/Naming/Client/Makefile.am - * netsvcs/clients/Tokens/manual/Makefile.am - * netsvcs/lib/Makefile.am - * tests/Makefile.am - - Added targets to clean up files and directories created during - compilation. Automake will setup the `clean-local' targets to - run automatically whenever a `make clean' is done. - -Fri Apr 02 23:25:11 1999 David L. Levine - - * bin/make_release: added TAO/tao/Version.h. Thanks to - Nanbor for suggesting this. - - * ace/OS.cpp: removed use of ACE_Array with WIN32 and - TSS_EMULATION. In doing this, fixed an off-by-one error: - ACE_TSS_Cleanup::remove () would try to remove key value - "n" from an ACE_Array of size "n". - -Fri Apr 2 19:19:09 1999 Ossama Othman - - * bin/autogen: Update NEWS file by copying VERSION. Temporary - hack to make Automake happy when doing a `make dist'. - -Fri Apr 2 18:37:29 1999 Ossama Othman - - * configure.in: Placed the asynchronous IO checks right after - the thread library checks. This was done to make sure the - library with AIO support gets added to the link list before - the rest of the tests start, and to make sure that it doesn't - get added if AIO isn't supported or isn't working. - - * Makefile.am (ACE_EXTRA_DIST): Changed directory names to use - `$(top_srcdir)' instead of the current directory `.'. This - allows a distribution to be made from a directory other than - ACE's top level source directory. - - * m4/compiler.m4: Explicitly add the `-xildoff' flag to Sun CC's - LDFLAGS. This is just a precautionary measure. It shouldn't - be needed. - -Fri Apr 2 12:41:09 1999 Ossama Othman - - * ace/Containers_T.h (all of the classes listed below): - * ace/Containers_T.i (ACE_Array): - * ace/Containers_T.i (ACE_DLList): - * ace/Containers_T.cpp (ACE_Bounded_Stack): - * ace/Containers_T.cpp (ACE_Fixed_Stack): - * ace/Containers_T.cpp (ACE_Unbounded_Stack): - * ace/Containers_T.cpp (ACE_Unbounded_Queue): - * ace/Containers_T.cpp (ACE_Double_Linked_List): - * ace/Containers_T.cpp (ACE_Fixed_Set): - * ace/Containers_T.cpp (ACE_Bounded_Set): - * ace/Containers_T.cpp (ACE_Unbounded_Set): - * ace/Containers_T.cpp (ACE_Ordered_MultiSet): - * ace/Handle_Set.h (ACE_Handle_Set): - * ace/Handle_Set.i (ACE_Handle_Set): - - Changed assignment operators (operator=) to return a reference - to `*this' so that assignments may be chained. - -Thu Apr 1 23:41:56 1999 Jeff Parsons - - * ace/CDR_Stream.cpp: - Fixed write_array() to memcpy if doing a byte-swap - and size = 1. Previously, it was falling through - without writing anything. Thanks to Jerry De Master - for pointing this out. - -Thu Apr 01 22:38:25 1999 Douglas C. Schmidt - - * ACE version 4.6.33 released. - -Thu Apr 01 21:09:00 1999 Irfan Pyarali - - * Sequence.h (TAO_Base_Sequence): Made the copy constructor and - the assignment operator public since making them protected was - breaking some compilers. - - * ace/Filecache.cpp (ACE_Filecache_Object): Fixed typo: - should be . - -Thu Apr 1 19:41:26 1999 Ossama Othman - - * ace/IPC_SAP.h (ACE_IPC_SAP): - * ace/SOCK.h (ACE_SOCK): - * ace/SOCK_IO.h (ACE_SOCK_IO): - * ace/SV_Semaphore_Simple.h (ACE_SV_Semaphore_Simple): - * ace/Synch.h (ACE_Barrier): - * ace/Synch.h (ACE_Event): - * ace/Synch.h (ACE_Guard): - * ace/Synch.h (ACE_Null_Mutex): - * ace/Synch.h (ACE_RW_Mutex): - * ace/Synch.h (ACE_Semaphore): - Reverted the changes that made these base class destructors - virtual. They don't need to be virtual for the way they are - being used. - -Thu Apr 01 19:01:20 1999 Irfan Pyarali - - * ace/Containers.h (ACE_DLList_Node): - * ace/Containers_T.h (ACE_Double_Linked_List_Iterator): - * ace/Containers_T.h (ACE_Unbounded_Set_Iterator): - * ace/Event_Handler.h (ACE_Event_Handler): - * ace/Event_Handler.h (ACE_Notification_Buffer): - * ace/Filecache.h (ACE_Filecache_Handle): - * ace/Filecache.h (ACE_Filecache_Object): - * ace/Local_Tokens.h (ACE_TPQ_Iterator): - * ace/Local_Tokens.h (ACE_Token_Proxy): - * ace/Local_Tokens.h (ACE_Token_Proxy_Queue): - * ace/Malloc.h (ACE_Name_Node): - * ace/Malloc.h (ACE_Static_Allocator_Base): - * ace/Memory_Pool.h (ACE_MMAP_Memory_Pool): - * ace/Memory_Pool.h (ACE_MMAP_Memory_Pool_Options): - * ace/Memory_Pool.h (ACE_Shared_Memory_Pool): - * ace/Memory_Pool.h (ACE_Shared_Memory_Pool_Options): - * ace/OS.h (ACE_Countdown_Time): - * ace/OS.h (ACE_Thread_Adapter): - * ace/OS.h (ACE_Thread_Control): - * ace/OS.h (ACE_Thread_Exit): - * ace/Service_Object.h (ACE_Service_Type): - * ace/Signal.h (ACE_Sig_Adapter): - * ace/Synch.h (ACE_Adaptive_Lock): - * ace/Synch.h (ACE_TSS_Adapter): - - In some cases, classes with pointers *can* use the default copy - constructor and the assignment operator. A more careful - screening of the egcs -Weffc++ flag need to be done before a - copy constructor and assignment operator can be considered - harmful/dangerous. For now, the changes Ossama made have been - reverted. - - * ace/Filecache.cpp (ACE_Filecache_Object): - * ace/Signal.i (ACE_Sig_Action): - * ace/OS.i (ACE_Time_Value): - - Removed default contruction of structs. Old g++ is broken. - - * ace/Filecache.cpp (ACE_Filecache_Object): Fixed incorrect - initialization of . - -Thu Apr 1 16:22:18 1999 Ossama Othman - - * ace/Containers_T.h (ACE_Unbounded_Set_Iterator): - * ace/Containers_T.cpp (ACE_Unbounded_Set_Iterator): - The signatures for the prefix and postfix operators were - switched. Prefix operators take a void and return a - a reference and postfix operators take an int and returns a - copy. - - * ace/Containers.h (ACE_DLList_Node): - * ace/Containers_T.h (ACE_Double_Linked_List_Iterator): - * ace/Containers_T.h (ACE_Unbounded_Set_Iterator): - * ace/Event_Handler.h (ACE_Event_Handler): - * ace/Event_Handler.h (ACE_Notification_Buffer): - * ace/Filecache.h (ACE_Filecache_Handle): - * ace/Filecache.h (ACE_Filecache_Object): - * ace/Local_Tokens.h (ACE_TPQ_Iterator): - * ace/Local_Tokens.h (ACE_Token_Proxy): - * ace/Local_Tokens.h (ACE_Token_Proxy_Queue): - * ace/Malloc.h (ACE_Name_Node): - * ace/Malloc.h (ACE_Static_Allocator_Base): - * ace/Memory_Pool.h (ACE_MMAP_Memory_Pool): - * ace/Memory_Pool.h (ACE_MMAP_Memory_Pool_Options): - * ace/Memory_Pool.h (ACE_Shared_Memory_Pool): - * ace/Memory_Pool.h (ACE_Shared_Memory_Pool_Options): - * ace/OS.h (ACE_Countdown_Time): - * ace/OS.h (ACE_Thread_Adapter): - * ace/OS.h (ACE_Thread_Control): - * ace/OS.h (ACE_Thread_Exit): - * ace/Service_Object.h (ACE_Service_Type): - * ace/Signal.h (ACE_Sig_Adapter): - * ace/Synch.h (ACE_Adaptive_Lock): - * ace/Synch.h (ACE_TSS_Adapter): - Explicitly disallow use of implicitly generated copy - constructor and assignment operator to prevent inadvertent - memory leaks. - - * ace/Filecache.cpp (ACE_Filecache_Object): - * ace/OS.i (ACE_Time_Value): - * ace/Signal.i (ACE_Sig_Action): - * ace/Signal.i (ACE_Sig_Guard): - * ace/Signal.i (ACE_Sig_Set): - * ace/Synch_T.i (ACE_Guard): - Added base member initializers for class members that weren't - initialized. Better style and helps avoid some warnings. - - * ace/IPC_SAP.h (ACE_IPC_SAP): - * ace/SOCK.h (ACE_SOCK): - * ace/SOCK_IO.h (ACE_SOCK_IO): - * ace/SV_Semaphore_Simple.h (ACE_SV_Semaphore_Simple): - * ace/Synch.h (ACE_Barrier): - * ace/Synch.h (ACE_Event): - * ace/Synch.h (ACE_Guard): - * ace/Synch.h (ACE_Null_Mutex): - * ace/Synch.h (ACE_RW_Mutex): - * ace/Synch.h (ACE_Semaphore): - Made base class destructor virtual to ensure that it gets - called by derived class destructor. - -Thu Apr 1 13:31:56 1999 Jeff Parsons - - * ace/CDR_Stream.{i,cpp}: - Moved the destructors and a couple of short output CDR - functions from .cpp to .i. - -Thu Apr 1 03:30:19 1999 Nanbor Wang - - * bin/tao_svcconf.pl: New perl script to help converting TAO's - svc.conf file to use static services. - -Wed Mar 31 14:30:28 1999 Nanbor Wang - - * ace/OS.h: Fixed mis-matched #endif comments. Thanks to Eric - Eide for pointing this out. - -Thu Mar 31 14:30:20 Douglas C. Schmidt - - * tests/Message_Block_Test.cpp: updated some printouts. - -Wed Mar 31 10:46:31 1999 Steve Huston - - * ace/Message_Block_T.h: Add template arg to operator = definition for - ACE_Locked_Data_Block<>. - - * ace/config-aix-4.x.h: Don't set _BSD for AIX 4.2 (or 4.3). Setting - it works ok on AIX 4.2, but breaks TAO builds. Not setting it has - caused no regressions on 4.2, and allows TAO to build more. - -Tue Mar 30 23:28:41 1999 Irfan Pyarali - - * ace/Message_Block.cpp (init_i): This function was not releasing - the old data block (if was non-zero). Fixed this - problem and avoided the memory leak. Thanks to Sangwoo Jin - for reporting this leak. - - Also changed the constructors to set to zero. - - * tests/Message_Queue_Test.cpp (receiver): Fixed hacked use of - init() to prevent memory leak. The new init_i() fixes the leak. - -Tue Mar 30 23:24:02 1999 Ossama Othman - - * configure.in: - * m4/features.m4: - * m4/threads.m4: - Updated several library checks to use a single call of my - re/implementation of the new autoconf AC_SEARCH_LIBS test instead - of having several AC_CHECK_LIB calls in a row. Nice! - - The thread detection tests were overhauled. They are now - simpler but retain the same functionality as the previous - tests. They were greatly reduced in size so debugging, updating - and enhancing should be much easier now. - - * m4/acinclude.m4: - Reimplemented Autoconf's AC_SEARCH_LIBS into ACE_SEARCH_LIBS. - The functionality is the same but the ACE reimplementation - actually works when C++ is the test language. For some reason - Autoconf's test isn't being generated properly by GNU M4. - -Tue Mar 30 22:04:49 1999 Nanbor Wang - - * ace/config-win32-common.h: Added definition of - ACE_DEFAULT_THREAD_PRIORITY as 0. Thanks to John Morey - for reporting this. - -Tue Mar 30 21:31:01 1999 David L. Levine - - * Makefile (RELEASE_LIB_FILES): added bin/ and etc/. - Thanks to John Lindal - for reporting that the ACE library Makefile needs - bin/ace_components. - -Tue Mar 30 18:49:58 1999 Darrell Brunsch - - * bin/make_release: Added .ico to binary file types. - -Tue Mar 30 12:23:23 1999 Douglas C. Schmidt - - * ACE version 4.6.32 released. - -Tue Mar 30 11:03:31 1999 Douglas C. Schmidt - - * ace/Synch.h (ACE_Adaptive_Lock): Clarified a comment about how - to define a constructor in a subclass that initializes the - lock_. Thanks to Michael Kircher for reporting this. - -Tue Mar 30 10:37:43 1999 Ossama Othman - - * ace/OS.i (getpwnam_r): Added patch contributed by Roland Gigler - for getpwnam_r on SCO UnixWare 7. - -Mon Mar 29 20:22:44 1999 Ossama Othman - - * configure.in: - * m4/features.m4: - Added new M4 macro include file, and moved asynchronous IO tests - to `m4/features.m4'. The asynchronous IO tests were improved by - making them run-time tests. Cross-compiled platforms will fall - back to a compile-time test. Thanks to Alex for providing - run-time tests. The tests are based on his AIO tests found in - the examples/Reactor/Proactor directory. - -Sun Mar 28 18:02:54 1999 Ossama Othman - - * configure.in: - Enabled the C++ libtool support mentioned below. Removed all - references to CXXCPPFLAGS since the CPPFLAGS variable is used - by autoconf for both C and C++. - - * ltconfig: - Added my experimental libtool C++ support. The hacks I made - allow it to build C++ shared libraries. - - * m4/acinclude.m4: - * m4/threads.m4: - Renamed some variables. Namespace pollution was breaking most - of the tests. - -Sun Mar 28 12:20:44 1999 Nanbor Wang - - * ace/OS.h: - * ace/CORBA_macros.h: Moved ACE_NEW_THROW* and ACE_GUARD_THROW* - macros from OS.h to CORBA_macros.h. Also added - ACE_*GUARD_THROW_EX which has the new ACE try macros semantics. - CORBA_macros.h needs to include "OS.h" to source in the correct - platform configuration macros. - -Sun Mar 28 13:27:15 1999 Balachandran Natarajan - - * docs/exceptions.html: - Added a new example - -Fri Mar 26 23:35:28 1999 Nanbor Wang - - * ace/config-freebsd-pthread.h: Added ACE_NEEDS_SCHED_H. - - * ace/config-irix6.x-g++.h: - * ace/config-irix6.x-kcc.h: - * ace/config-irix6.x-sgic++.h: - * ace/OS.h: Reverted changes about ACE_LASKS_SCHED_H. - - * ace/config-dgux-4.x-ghs.h: - * ace/config-irix6.x-sgic++.h: - * ace/README: - * ace/OS.h: Renamed ACE_LACKS_SCHED_H with ACE_NEEDS_SCHED_H to - refect what it really means. The original name was quite - confusing. - -Fri Mar 26 18:16:25 1999 Carlos O'Ryan - - * ace/config-irix6.x-g++.h: - * ace/config-irix6.x-kcc.h: - * ace/config-irix6.x-sgic++.h: - There is no need to explicitly include or to define - ACE_LACKS_SCHED_H the file is present in IRIX 6.4. - -Fri Mar 26 17:57:25 1999 Nanbor Wang - - * ace/config-freebsd-pthread.h: Defined cuserid as an extern "C" - function. - - * ace/OS.h: should only be included when !defined - (ACE_LACKS_SCHED_H). - - Thanks to Eric Eide for sending the patch. - -Fri Mar 26 17:12:21 1999 Darrell Brunsch - - * ace/Profile_Timer.{h,i,cpp}: On Win32 platforms that - support RUsage, Profile_Timer will use both that and - High Resolution Timers for measurements. Depending - on the method, one or the other will be used. - -Fri Mar 26 17:02:00 1999 Ossama Othman - - * configure.in: - Improved ACE_HAS_USING_KEYWORD test so that it works for platforms - that support the `using' keyword but don't have the `std' namespace. - - Updated ACE_HAS_TEMPLATE_SPECIALIZATION test so that it works for - compilers that require the "template<>" syntax for specialization. - - Improved ACE_HAS_ONLY_SCHED_OTHER by checking for run time errors - when a thread scheduling policy other than SCHED_OTHER is set. - Thanks to David for suggesting this modification. - - * m4/acinclude.m4: - Added support for converting warnings to errors for Sun C++. - - * m4/threads.m4: - Added test to check if `-Kthread' compiler flag enables thread - support. SCO UnixWare 7 uses this flag. - -Fri Mar 26 07:21:33 1999 David L. Levine - - * tests/Reactor_Performance_Test.cpp (handle_input): wrapped - final return statement with ACE_NOTREACHED. - -Thu Mar 25 20:16:49 1999 Darrell Brunsch - - * bin/make_release: I wasn't using $bin_files for the - ACE+TAO.zip creation, so now that is fixed. Thanks to - Greg Ross for pointing this out. - -Thu Mar 25 16:31:27 1999 Carlos O'Ryan - - * ace/OS.h: - Added new macros for byte swapping, this are rather evil. They - add the correct padding to use a single long to represent a - short or char, but in such a way that the first bytes of the - long contain the required data. - Nobody should need that, but the IDL compiler does. - -Thu Mar 25 16:25:46 1999 Ossama Othman - - * configure.in: Added test for ACE_HAS_BROKEN_MAP_FAILED. - - * ace/OS.h: Added __USLC__ to list of macros in the conditional that - keeps the compiler from complaining about parameters which are not - used. This is needed for the C++ compiler on SCO UnixWare 7. - Thanks to Roland for letting me know about this. - -Thu Mar 25 14:55:37 1999 David L. Levine - - * tests/Basic_Types_Test.cpp: print out ACE version - information even with ACE_HAS_MINIMAL_ACE_OS. - -Thu Mar 25 13:52:57 1999 Irfan Pyarali - - * tests/Reactor_Performance_Test.cpp (handle_input): This code - wasn't entirely correct. Well actually, I think where was some - change in the semantics of Windows. Previously, once the handle - was close, it seems that the application still got notified if - there was data on the socket. With WinNT SP4, it seems that - once the handle was closed, no additional FD_READs were issued - by the OS, even if data was available on the socket. - - In ACE, both FD_READ and FD_CLOSE get mapped to handle_input(). - The way to know when the connection was closed is to do a recv() - in handle_input() and check for a zero return. When told of new - data, the old code in handle_input() only did one recv() of - BUFSIZ bytes. If there was more than BUFSIZ bytes of data on the - socket, there would be some data left on the socket. Hence, - when notified of FD_CLOSE, it did another recv() which - succeeded, and handle_input() never returned -1, making the test - hang. - - The change made was to make handle_input() call recv() until - EWOULDBLOCK occurs (note that the socket is in non-blocking - mode). Hence, when FD_CLOSE occurred, the socket did not have - any data left, recv() returned 0 and handle_input() returned -1, - which finally closed the test down correctly. - -Thu Mar 25 13:13:51 1999 Ossama Othman - - * Makefile.am (ACE.ifnames): - Placed rule generation of ACE.ifnames within a MAINTAINER_MODE - automake conditional. If a `--enable-maintainer-mode' option - isn't given on the configure script command line then don't - generate a new `ACE.ifnames' file. - - * configure.in: - Added AM_MAINTAINER_MODE so that maintainer level Makefile - features are disabled by default. - - * acconfig.h: - * ace/OS.h: - * ace/README: - Added ACE_HAS_BROKEN_MAP_FAILED macro for platforms that do not - cast MAP_FAILED to a (void *). Defining this macro prevents - compilers on those platforms from complaining about assigning - an int to a (void *). Thanks to Roland Gigler - for providing feedback about this. - -Thu Mar 25 11:30:44 1999 Balachandran Natarajan - - * docs/exceptions.html: - Corrected a couple of links... - -Thu Mar 25 01:04:00 1999 Alexander Babu Arulanthu - - * ace/OS.h (ACE_OS): Added ACE_DEFAULT_TEMP_DIR_ENV to be "TEMP" - for WIN32 and "TMP" for Unix. - -Wed Mar 24 18:30:18 1999 Douglas C. Schmidt - - * performance-tests/TTCP/ACE-C++/wrapper-new-ttcp.cpp: Added a new - version of this program that fixes a number of bugs with the old - one. Thanks to Hao Ruan for these fixes. - -Wed Mar 24 15:31:27 1999 Darrell Brunsch - - * High_Res_Timer.cpp: - * High_Res_Timer.h: - * OS.i: - - Changed the implementation of the High Resolution Timer on - Win32 to use QueryPerformanceCounter instead of assembly code. - The docs also say that this is MP-safe. Thanks to Gregory D. - Fee for suggesting this. - - * Profile_Timer.cpp: - * Profile_Timer.h: - * Profile_Timer.i: - - Now uses the High Res Timer on Win32 instead of rusage. - -Wed Mar 24 14:36:12 1999 Ossama Othman - - * ace/OS.cpp (ACE_OS_PREALLOCATE_OBJECT): Initialized obj_p to zero - to make egcs happy. - -Wed Mar 24 13:23:36 1999 David L. Levine - - * ACE-INSTALL.html: removed note about building netsvcs before - running the one-button test on WIN32. Thanks to Nanbor for - hacking run_tests.bat :-) - -Wed Mar 24 13:16:17 1999 Nanbor Wang - - * ace/WFMO_Reactor.i (handler): - * ace/Select_Reactor_T.cpp (handler_i): Made sure we can safely - pass out the event handler before we do so. Thanks to Michael - Preobrazhensky for reporting this. - - * tests/run_tests.bat: Do not run Time_Service_Test if - netsvcs/servers/main.exe doesn't exist. Thanks to - Jeffrey_Franks@i-o.com for reporting the problem and David for - suggesting the fix. - -Wed Mar 24 12:47:56 1999 David L. Levine - - * ACE-INSTALL.html: added note to build netsvcs on Win32 - before running run_tests.bat. Thanks to Jeff Franks - for suggesting this. - -Wed Mar 24 06:53:57 1999 David L. Levine - - * ace/OS.cpp (thr_create): SunOS 5.7 allows thread priority of 0, - so we no longer need to work around that. - -Tue Mar 23 22:49:15 1999 Ossama Othman - - * configure.in: Added a test for ACE_NEEDS_DEV_IO_CONVERSION. - -Tue Mar 23 22:29:20 1999 David L. Levine - - * ace/config-sunos5.7.h: undef ACE_HAS_ONLY_SCHED_OTHER, because - other scheduling policies are supported by SunOS 5.7. Thanks - to Ossama and autoconf for noticing this. - -Tue Mar 23 20:42:44 1999 Ossama Othman - - * tests/Cache_Manager_Test.cpp (main): Added missing ACE_START_TEST - and ACE_END_TEST macros. - - * m4/threads.m4: Modified UNIX International threads check to include - check for rwlock_destroy() in -lthread since thr_create() was - found without explicitly linking to -lthread on Solaris 2.5.1. - rwlock_destroy() should be found only by linking to -lthread which - will cause the configure script to add -lthread to the library link - list. - -Tue Mar 23 16:25:39 1999 David L. Levine - - * docs/ACE-subsets.html: added FOR_TAO subset sizes. - -Tue Mar 23 15:15:20 1999 Nanbor Wang - - * ace/Map_Manager.{i,cpp} (ACE_Map_Iterator_Base::operator*): - Moved this function to .cpp file to avoid compilation problem on - SunOS 5.6 with SunCC 4.2. Once we know a patch that will fix - the problem, we should move it back to .i file again. Thanks to - James Megquier for reporting the problem. - -Tue Mar 23 14:56:58 1999 Ossama Othman - - * acconfig.h: - * configure.in: - * ace/OS.h: - * ace/TLI.cpp: - * ace/config-osf1-4.0.h: Removed all references to - ACE_HAS_BROKEN_T_ERRNO and removed the definition of the _terrno() - function from TLI.cpp since it isn't a standard TLI function (at - least not the Steven's books that I've read). This also fixes a - problem on Solaris that was causing an autoconfigured build of - TLI.cpp to fail. - - * ace/Makefile.am: Make sure template source files get installed for - all cases. Previously, they only got installed if the template - source is required by the compiler. However, they are still needed - by compilers that don't explicitly require template sources to - be included in a file that references them. - - * configure.in: Fixed the test for ACE_TEMPLATES_REQUIRE_SOURCE. - Thanks to Carlos for his help on this. Removed the test for - ACE_HAS_BROKEN_T_ERRNO since it is no longer needed due to the - above change. - - * README: Added Konstantinos Margaritis to the - ACE contributor list. - -Tue Mar 23 12:57:40 1999 Douglas C. Schmidt - - * netsvcs/lib/Client_Logging_Handler.cpp: Split off the logging to - an ostream from the logging for STDERR. Thanks to Bill Rizzi - (rizzi@softserv.com) for pointing out this problem. - - * netsvcs/lib/Client_Logging_Handler.cpp: Changed the default from - ACE_STDOUT to ACE_STDERR to be consistent. Thanks to Bill Rizzi - (rizzi@softserv.com) for pointing out the problem. - -Tue Mar 23 12:06:04 1999 Nanbor Wang - - * ace/OS.h (ACE_THROW_SPEC): Added prgama to disable reporting - warning 4290 on MSVC. MSVC "supports" the exception - specification but doesn't provide an implementation for it. - Instead, it warns you the specification is ignored. - -Mon Mar 22 21:34:06 1999 David L. Levine - - * include/makeinclude/platform_sunos5_g++.GNU: use -m uname - option instead of -i, because GNU uname doesn't support -i. - -Mon Mar 22 18:59:55 1999 Steve Huston - - * ace/NT_Service.cpp (state): Changed the (DWORD *, ACE_Time_Value *) - version to reliably return -1 on any error. Thanks to Martin - Krumpolec for keeping me honest here, and for - sending in better code. - -Mon Mar 22 14:16:04 1999 David L. Levine - - * ace/OS.{h,cpp} (cleanup_tss): added tss_close (), to enable - deleting the native key on program termination. That's not - implemented yet, because it requires a separate - ACE_OS::thr_keyfree (ACE_OS_thread_key_t). - - * ace/OS.cpp (fini), README, ace/config-linux-lxpthreads.h: - removed ACE_FINI_HOOK support. It wasn't helping. - -Mon Mar 22 11:14:16 1999 Ossama Othman - - * Makefile.am: - Various minor updates. - - * configure.in: - * m4/platform.m4 - Moved known platform specific macro checks from `configure.in' - to `platform.m4'. - - * tests/Makefile.am: - Updated to build the DLL_Test shared library. Support for the - test is still broken (my fault :). - - * aclocal.m4: - * configure: - These are automatically generated so they shouldn't be under - CVS control. I Removed them from the CVS repository. - -Mon Mar 22 09:42:26 1999 David L. Levine - - * docs/ACE-subsets.html: added current status section. - -Mon Mar 22 01:04:23 1999 Nanbor Wang - - * ace/OS.cpp (free_all_keys_left): Changed to remove left-over - keys using TlsFree on Win32. We can't use ACE_OS::thr_keyfree - here because it tries to update the TSS in_use_ information - which has already been deleted at this point. - (cleanup_tss): Uncommented free_all_keys_left. - -Sun Mar 21 21:26:46 1999 David L. Levine - - * bin/make_release: fixed error status when building ACE+TAO. - Thanks to Doug for reporting this. - -Sun Mar 21 21:16:02 1999 Douglas C. Schmidt - - * ACE version 4.6.31 released. - -Sun Mar 21 20:45:57 1999 Douglas C. Schmidt - - * ACE version 4.6.30 released. - -Sun Mar 21 18:39:16 1999 Ossama Othman - - * ACE.ifnames: - - Updated with new macro list. - - * Makefile.am: - - Added the m4 directory to the distribution list and made some - minor updates. - - * ace/Makefile.am: - * m4/subsets.m4: - - Subsetting updates/corrections. - - * configure.in: - - Added work around for buggy glibc2.1 when including both - and . Added check for auto_ptr class - declaration since some platforms have but may not - declare the auto_ptr class. Shortened some of the "checking" - messages. - - * ace-config.1.in: ace-config script man page template - * aceConf.sh.in: ace-config "unknown" library script - - Added these files to the CVS repository. - - * config.guess: - * config.sub: - * ltconfig: - * ltmain.sh: - - Updated these files to the ones in the latest libtool. - - * libtool: - - Removed this since it is automatically generated for each platform. - It shouldn't be under CVS control. - -Sun Mar 21 17:59:22 1999 Carlos O'Ryan - - * ace/CDR_Stream.cpp: - Fixed a problem with ACE_OutputCDR::write_octet_array_mb, thanks - to Dave Meyer for isolating and reporting - this bug again [it was fixed in TAO and somehow it crept to the - ACE version of the CDR classes]. - -Sun Mar 21 17:42:08 1999 Ossama Othman - - * netsvcs/lib/Server_Logging_Handler_T.cpp (handle_logging_record): - Use ACE_NTOHL macro instead of system ntohl() to get around bug - in egcs-2.91.6x. - -Sun Mar 21 16:07:24 1999 Ossama Othman - - * ace/config-g++-common.h (ACE_HAS_USING_KEYWORD): - Define ACE_HAS_USING_KEYWORD for egcs 1.1.x. - -Sun Mar 21 09:44:30 1999 David L. Levine - - * tests/Timeprobe_Test.cpp: don't test ACE_Singleton - creation during static construction if ACE_HAS_PURIFY - is enabled, because it notices the memory-in-use. - - * examples/Naming/Makefile: changed SRC to PSRC. - - * examples/Naming/Makefile,performance-tests/Misc/Makefile, - tests/Makefile: - Use ace_components instead of the current ACE_COMPONENTS - setting to determine what should be built. - -Sat Mar 20 19:10:37 1999 Carlos O'Ryan - - * ace/Connector.h: - * ace/Connector.cpp: - * ace/Strategies_T.h: - * ace/Strategies_T.cpp: - Added new methods to the ACE_Connector, ACE_Strategy_Connector, - ACE_Connect_Strategy and ACE_Cached_Connect_Strategy. - The motivation for this new method is a bit convoluted: - In TAO we store the Svc_Handler returned from connect() as a - hint for later Cached_Connector lookups. But the location - where we store it could be shared between multiple threads. - To minimize the number of locks this hint is only modified and - examined by the Cached_Connector, while the lock in the - connection map is beign held. - - The problem arises when the hint is returned: another thread - could try to use the same hint location, detect that the hint - is in use and replace it before the thread that just requested - the object has a chance to read the hint value. - The solution is to use two variables: one is the hint - location, carefully protected by the Cached_Connector lock, - the other is a variable in the thread stack, they return the - same thing, but the second variable is not affected by changes - done by other threads. - - In short: we addeda connect() method that takes two arguments, - the first is just intented to update the cached connector - hint, the second is where the real connection gets returned. - - * tests/Makefile: - David discovered that using SRC to list the sources does not - work under some platforms. But using PSRC does. - -Sat Mar 20 15:51:14 1999 Ossama Othman - - * configure.in: - Added tests for: ACE_HAS_BROKEN_NAMESPACES - ACE_HAS_BROKEN_CONVERSIONS - ACE_HAS_BROKEN_CONDITIONAL_STRING_CASTS - ACE_HAS_PTHREAD_CONDATTR_SETKIND_NP - ACE_HAS_PTHREAD_MUTEXATTR_SETKIND_NP - ACE_HAS_PTHREAD_PROCESS_ENUM - - Added some minor updates and corrections. - -Sat Mar 20 09:06:10 1999 David L. Levine - - * tests/Map_Manager_Test.cpp: changed index () to slot_index () - and generation () to slot_generation (), to correspond to - Active_Map_Manager interface change. - - * examples/ASX/Message_Queue/Makefile: changed LSRC to PSRC. - - * ace/Object_Manager.{h,cpp}: removed complex support from - ACE_Object_Manager for cleanup of some ACE_Singleton locks - during static construction/destruction, only. The affected - lock types are ACE_Thread_Mutex, ACE_Mutex, and - ACE_RW_Thread_Mutex. ACE_Recursive_Thread_Mutex and - ACE_Null_Mutex will still be cleaned up if used to create - ACE_Singletons during static construction/destruction. As - noted in ace/Singleton.h, those are the best type of locks - to use with ACE_Singleton, anyways. - - This support was tricky to get right, and increased the size of - the Object_Manager object file by 46 to 59 percent. Now, if - ACE_Singletons are created during static construction or - destruction, with either an ACE_Thread_Mutex, ACE_Mutex, or - ACE_RW_Thread_Mutex lock, those locks will be dynamically - allocated and leaked. - -Sat Mar 20 02:03:53 1999 Ossama Othman - - * acinclude.m4: - - Split acinclude.m4 into several M4 macro files and moved those - files into the new `m4' subdirectory, includind acinclude.m4. - - * m4/acinclude.m4: - * m4/compiler.m4: - * m4/subsets.m4: - * m4/threads.m4: - - Added these M4 files. - - * bin/autogen: - - Script to regenerate auto{conf,make} and libtool related files. - Additional functionality may be added to this script in the - future. - - * Makefile.am: - * ace/Makefile.am: - * apps/gperf/src/Makefile.am: - * apps/gperf/tests/Makefile.am: - * apps/gperf/Makefile.am: - * apps/Makefile.am: - * netsvcs/clients/Logger/Makefile.am: - * netsvcs/clients/Naming/Client/Makefile.am: - * netsvcs/clients/Naming/Dump_Restore/Makefile.am: - * netsvcs/clients/Naming/Makefile.am: - * netsvcs/clients/Tokens/collection/Makefile.am: - * netsvcs/clients/Tokens/deadlock/Makefile.am: - * netsvcs/clients/Tokens/invariant/Makefile.am: - * netsvcs/clients/Tokens/manual/Makefile.am: - * netsvcs/clients/Tokens/mutex/Makefile.am: - * netsvcs/clients/Tokens/rw_lock/Makefile.am: - * netsvcs/clients/Tokens/Makefile.am: - * netsvcs/clients/Makefile.am: - * netsvcs/lib/Makefile.am: - * netsvcs/servers/Makefile.am: - * netsvcs/Makefile.am: - * man/man3/Makefile.am: ( NOT ADDED YET ) - * man/Makefile.am: ( NOT ADDED YET ) - * tests/log/Makefile.am: - * tests/Makefile.am: - - Added Automake makefile templates for ACE. - - * configure.in: - * m4/subsets.m4: - * ace/Makefile.am: - - Added support for David's ACE subsetting work. - -Fri Mar 19 23:36:37 1999 Irfan Pyarali - - * ace/Active_Map_Manager.h (ACE_Active_Map_Manager_Key): Changed - method index() to slot_index() and generation() to - slot_generation(). These changes were motivated by the - OpenEdition platform/compiler, which defines a macro called - index(). Also, changed the type of and - from u_long to ACE_UINT32 to get consistent size across - platforms. - -Fri Mar 19 22:50:19 1999 David L. Levine - - * bin/ace_ld: inserted ^['"]? at beginning of patterns that check - for -l and -L, to make sure they're at the beginning of arguments. - Thanks to Henric Jungheim for - suggesting this. - - * tests/Makefile: removed SRC, because it caused link problems - on DU 4.0. - -Fri Mar 19 18:56:26 1999 Carlos O'Ryan - - * Fixed several makefiles that did not have a SRC or LSRC variable - defined. - - * Re-generated the dependencies for both ACE and TAO, this time on - a platform that includes the template code. - - * include/makeinclude/rules.local.GNU: - Now we can run make depend inside a build directory. - Removed any $(ACE_ROOT)/ace/config*.h files from the dependency - list, those are not used. - -Fri Mar 19 18:05:27 1999 Ossama Othman - - * netsvcs/lib/Server_Logging_Handler_T.cpp (handle_logging_record): - Reverted change that was thought to work around egcs compiler bug. - The call to ntohl() within the templates still causes the compiler - to complain. - -Fri Mar 19 17:31:57 1999 Carlos O'Ryan - - * ace/CDR_Stream.cpp: - Fixed silly error in the InputCDR constructor taking an - ACE_Message_Block. - -Fri Mar 19 15:41:30 1999 Irfan Pyarali - - * ace/config-win32-common.h: Added CE fix. - -Fri Mar 19 15:03:54 1999 Carlos O'Ryan - - * ace/CDR_Stream.h: - * ace/CDR_Stream.i: - * ace/CDR_Stream.cpp: - Changed CDR to ACE_CDR. - Fixed ACE_InputCDR constructor when receiving a linked list of - Message_Blocks. - - * tests/CDR_Test.cpp: - Added a test for the constructor above. - -Fri Mar 19 10:29:17 1999 David L. Levine - - * ace/Singleton.cpp (instance): removed at_exit () calls - from both ACE_Singleton and ACE_TSS_Singleton, only - when the ACE_Object_Manager hasn't started or has already - shutdown. In those cases, the singletons will leak. - - * ace/Object_Manager.cpp (ACE_Object_Manager ctor), - ace/OS.cpp (ACE_OS_Object_Manager ctor): allow - newer instances to overwrite older ones, in case an application - #defines ACE_HAS_NONSTATIC_OBJECT_MANAGER and uses the - Object_Manager during construction of static objects. - - * tests/Timeprobe_Test.cpp: added test of ACE_Singleton - creation during construction of static objects. Timeprobes - can do that, when they're enabled. - - * ace/OS.cpp (fini), README: added ACE_FINI_HOOK support. - Applications can #define ACE_FINI_HOOK to any executable code, - and it will be executed on program termination. - - * ace/config-linux-lxpthreads.h: with ACE_HAS_TSS_EMULATION, - #define ACE_FINI_HOOK to insert a one-second sleep at - program termination. It's necessary to avoid occasional - segfaults of unknown origin, but they appear to be in the - LinuxThreads library. - - * bin/ace_components: added. It is used to record/access - which components were built into the ACE library. See next - entry for files that have been updated to use it. - - * ace/Makefile,tests/Makefile,tests/run_tests.sh: use - ace_components to record which components are in the ACE library. - Suppress build/run of tests that use Token and Other. - - * netsvcs/{clients,servers}/Makefile: use ace_components instead of - the current ACE_COMPONENTS setting to determine what should be built. - -Fri Mar 19 03:24:34 1999 Irfan Pyarali - - * ace/Singleton.cpp (instance): Commented out the call to - ACE_Object_Manager::at_exit(). Currently, this is causing - multiple instances of ACE_Object_Manager to get created, and - hence causing all sorts of problems. - - * ace/OS.cpp (cleanup_tss): Removed the call to - free_all_keys_left() (WIN32 only), because it causes - segmentation faults at shutdown. - -Fri Mar 19 00:15:21 1999 Nanbor Wang - - The following changes are specific to WindowsCE. They are - required to remove MFC dependency from CE port. Thanks to Eric - Covington for motivating this. - - * ace/config-WinCE.h: We no longer enfoce the use of MFC with ACE - CE port anymore. - - * ace/config-win32-common.h: When not using MFC, CE needs to - include and explicitly. - - * ace/Log_Record.cpp (print): - * ace/OS.{h,cpp} (ACE_CE_Bridge): Changed to use HWND to record - target window handle instead of CWnd. Also, we stop passing - output string in a CString anymore. The string is now created - using ACE_OS::strdup and must be released by the target window - using ACE_OS::free.. A small smart pointer class will be added - later. Notice that if you used ACE CE port before, the wParam - can no longer be casted to a CString*, it should be casted to - LPTSTR now. - - * WindozeCE/WindozeCEDlg.cpp: should be casted to LPTSTR - and it should be freed using ACE_OS::free. - - * ace/ace_ce_dll.dsp: CE programs (or DLL only?) not using MFC - must specify all libraries used by the program, even msvcrt. - -Thu Mar 18 22:21:39 1999 David L. Levine - - * include/makeinclude/platform_vxworks5.x_g++.GNU: changed - ACE_QUOTE to '"', instead of "", on win32 hosts. "" just - evaporates to nothing; we really need one double quote. - Thanks to Hans Rohnert for verifying this. - -Thu Mar 18 18:49:32 1999 Marina Spivak - - * ace/SString.i (compare): fixed the function to work properly in - case strings have different lenghts. - - * ace/SString.cpp: fixed code to gracefully handle failed memory - allocations. - - * ace/SString.h: added comments about strings with release=0, not - necessarily being null terminated. - -Thu Mar 18 14:31:29 1999 Steve Huston - - * tests/DLL_Test.cpp: Use the new DLL_Test.h file that contains the - class defs - needed for AIX xlC. This should have been done - with the Mar 15 changes but slipped through the cracks. - - * include/makeinclude/platform_hpux_aCC.GNU: Added support for - building HP-UX 11 distributions with both 32 and 64 bits. - - * docs/tutorials/006/client_handler.cpp (Client_Handler::open): Changed - arg name to void_acceptor to avoid redefining it inside the function. - - * docs/tutorials/007/client_acceptor.cpp (Client_Acceptor(Thread_Pool&) - Fixed initialization of concurrency_. - - * docs/tutorials/018/Test_T.cpp (open): Fix ACE_UNUSED_ARG(arg). - - * ace/Message_Queue.h (ACE_Message_Queue_Base): Removed "= 0" from - ~ACE_Message_Queue_Base. AIX xlC warns that pure virtual dtor - needs an out-of-line definition to be a base of another class. - There is already a definition for the dtor in Message_Queue.i. - -Thu Mar 18 14:30:04 1999 Nanbor Wang - - * ace/OS.i (timezone): Removed the leading '::' to cope with VC - 5. Thanks to Lan Yaolong for reporting - this. - -Wed Mar 17 17:23:43 1999 Vishal Kachroo - - * ace/OS.i (timezone): Added support for timezone () on CHORUS - -Wed Mar 17 14:06:24 1999 Ossama Othman - - * acconfig.h: Some characters got removed so I put them back. - -Wed Mar 17 13:59:42 1999 Ossama Othman - - * configure.in: - * acconfig.h: - Added autoconf check for rename() system call. - -Wed Mar 17 07:55:38 1999 Nanbor Wang - - * include/makeinclude/platform_freebsd_pthread.GNU: Made some - adjustment for building ELF executables which are the default on - FreeBSD 3 and above. I'll incoporate Russell's LinuxThread - change later. - -Wed Mar 17 13:36:32 1999 David L. Levine - - * bin/make_release: return non-zero exit status on failure. - -Wed Mar 17 12:47:04 1999 Nanbor Wang - - * ace/Service_Config.cpp (open_i): Also delete the parse buffer - before exiting the function for it is no longer needed. We - still need to deallocate the buffer at close method to prevent - the case when uses manipulate Service_Config directly using - process_directives. - -Wed Mar 17 12:33:35 1999 Douglas C. Schmidt - - * ace/OS.i: Reenabed ACE_OS::rename() and we'll see which - platforms need to have ACE_LACKS_RENAME. Thanks to Susan - Liebeskind for reporting this. - -Wed Mar 17 10:46:26 1999 Ossama Othman - - * ace/Message_Block.i (space): Moved ACE_Message_Block::space() - after inline declarations of ACE_Message_Block::end() and - ACE_Message_Block::wr_ptr() to prevent "used before it was - declared inline" warnings on end() and wr_ptr(). - -Wed Mar 17 10:24:26 1999 David L. Levine - - * ace/OS.cpp (argv_to_string): initialized temp to 0 to avoid warnings - from VxWorks g++. - ace/OS.i (strenvdup): initialized temp to 0 to avoid warnings from - VxWorks g++. Thanks to Hans Rohnert for reporting these. - - * include/makeinclude/platform_vxworks5.x_g++.GNU (RANLIB): - replaced /bin/true with @true, to avoid build warning on - NT hosts. Thanks to Hans Rohnert for reporting this. - -Wed Mar 17 09:58:43 1999 Douglas C. Schmidt - - * ace/Svc_Conf.l (yy_delete_parse_buffer): Added a check for NULL - to avoid freeing buffers multiple times. Thanks to Tom Arbuckle - for this fix and to - Nanbor for noticing the problem in the first place! - -Wed Mar 17 08:30:58 1999 David L. Levine - - * ACE version 4.6.29 released. - -Wed Mar 17 03:12:43 1999 James C. Hu - - * ace/Message_Block.i: Changed the definition of space () to be - something more useful than it was. Thanks to Bill Rizzi - (rizzi@softserv.com) for pointing out the problem. - - * ace/Cache_*: Removed by popular decree. Can be found in - JAWS/PROTOTYPE. - -Wed Mar 17 03:06:20 1999 Nanbor Wang - - * ace/Service_Config.cpp (close): Re-enabled cleaning up the lex - buffer. - - * ace/Svc_Conf_l.cpp (ace_yy_delete_parse_buffer): We should not - remove uninitialize buffer. - -Tue Mar 16 19:48:57 1999 Irfan Pyarali - - * ace/Makefile and tests/Makefile: Reverted these files to the - pre-Cache_Manager state. The Cache_Manager files don't compile - on g++ and vxworks and we need to make a release now. - - * ace/Map_T.h (class ACE_Noop_Key_Generator): Added new class. - This class makes it easy to use the map adapters when you don't - care about generating new keys. - -Tue Mar 16 11:36:41 1999 Nanbor Wang - - * ace/config-freebsd-pthread.h: FreeBSD 2.2 and above also support - threads, but siginfo_t is only supported on FreeBSD 3.0 and - above. Thanks to Goldshtain Dmitry - for pointing these out. - -Tue Mar 16 16:46:04 1999 David L. Levine - - * ace/Hash_Bucket_T.h: added class to friend - ACE_Hash_Bucket_DLCStack_Iterator declaration. - -Tue Mar 16 16:35:39 1999 David L. Levine - - * docs/ACE-guidelines.html: never use TRUE, true, FALSE, false, etc. - -Tue Mar 16 15:58:07 1999 Nanbor Wang - - * ace/Service_Config.cpp (close): Don't call the - ace_yy_delete_parse_buffer for now. It is causing access - violation. - -Tue Mar 16 15:15:00 1999 Chris Gill - - * ace/ACE.{cpp, i} - ace/OS.{cpp, h, i} - ace/FIFO.cpp - ace/Log_Record.cpp - ace/SOCK_Dgram_Mcast.cpp - ace/SPIPE_Connector.cpp - ace/TLI_Acceptor.cpp - ace/config-psos-diab-mips.h (new) - ace/config-psos-diab.h - ace/config-psos-tm.h - ace/streams.h: integrated pSOS/MIPS changes into ACE. Thanks to - Jaepil Kim (jpkim@lgsoft.com) for completing the ACE pSOS port - for the MIPS platform, and for sending these modifications. - -Tue Mar 16 14:25:03 1999 Steve Huston - - * ace/ACE.cpp (get_ip_interfaces, count_interfaces, get_bcast_addr): - On AIX, use CSIOCGIFCONF instead of SIOCGIFCONF to retrieve - interface information. Thanks to Eric Newton for - figuring this out. - -Tue Mar 16 12:20:53 1999 Balachandran Natarajan - - * ace/Service_Config.h (ACE_Service_Config): - Added documentation for the parse_args () method. This was in - request to Bill Rizzi . - -Tue Mar 16 10:57:46 1999 Douglas C. Schmidt - - * ace/Svc_Conf.l: Added a new method ace_yy_delete_parse_buffer() - that frees up FLEX buffers when the program is done. Thanks to - Tom Arbuckle for - this fix. - - * examples/ASX/Message_Queue/buffer_stream.cpp (main): Changed pm - to cm and vice versa to be consistent. Thanks to Rainer Blome - for reporting this. - -Tue Mar 16 10:50:42 1999 Steve Huston - - * include/makeinclude/platform_aix4_cset++.GNU: New file to cover - all AIX 4.x versions with the C Set++ (xlC) compiler. - - * include/makeinclude/platform_aix.GNU, platform_aix4.2.GNU: These - files are deprecated; they simply include the new file above, - platform_aix4_cset++.GNU. - -Tue Mar 16 10:38:35 1999 Carlos O'Ryan - - * ace/Hash_Bucket_T.cpp: - Removed default parameter declaration from the constructor for - ACE_Hash_Bucket_Manager definition. Default parameter - declarations can only show up in the function declaration. - -Tue Mar 16 10:25:53 1999 Steve Huston - - * ace/config-aix-4.1.x.h, config-aix-4.2.x.h: These now simply - include config-aix-4.x.h. All further changes for any AIX 4.x - version should go in config-aix-4.x.h. - -Tue Mar 16 08:12:54 1999 Steve Huston - - * ace/Thread_Manager.cpp: In thread_within(ACE_thread_t), replaced use - of '==' with ACE_OS::thr_equal. In hthread_within (ACE_hthread_t), - replaced use of '==' with ACE_OS::thr_cmp. Thanks very much to - Peter Windle for pointing this out. - - * README: Added Peter Windle to the list of distinguished contributors. - -Tue Mar 16 03:05:22 1999 James Hu - - * ace/Cache_Hash_T.{cpp,h}: - * ace/Cache_Heap_T.{cpp,h}: - * ace/Cache_List_T.{cpp,h}: - * ace/Cache_Manager.{cpp,h}: - * ace/Cache_Manager_T.{cpp,h}: - * ace/Cache_Object.{cpp,h}: - * ace/Hash_Bucket_T.{cpp,h}: - Incorporated fixes from purify and benchmarking sessions at Entera. - Cosmetic changes coming soon (documentation strings and removal - of magic numbers). - - * ace/Makefile: Added above files to Makefile. - - * ace/OS.i: FreeBSD does not support the timezone() function as - documented by Vishal below. Using Chris Gill's implementation - for LynxOS. - - * tests/Makefile: - * tests/Cache_Manager_Test.cpp: Added this test to illustrate - Cache_Manager. Still needs changes to use ACE_DEBUG instead of - cerr. - -Mon Mar 15 19:05:22 1999 Steve Huston - - * ace/config-aix-4.x.h: New config file that covers all of the AIX 4.x - versions with C Set++ (xlC) and g++. Many thanks to Susan - Liebeskind for doing to port to AIX 4.3 and - testing, providing needed changes! - - * ace/OS.i (wait): Fixed to handle ACE_HAS_UNION_WAIT case correctly, - without depending on AIX - thanks to Susan Liebeskind for this too! - - * ace/ACE.cpp (fork, with zombie avoidance): Fixed to work right - with ACE_HAS_UNION_WAIT (ala AIX 4.2). - - * include/makeinclude/rules.lib.GNU: New template instantiation - scheme for AIX with C Set++ (xlC); goes with... - * etc/xlc_dummy.cpp: New file, purpose of which is to help with AIX - xlC template instantiation. This is the new, improved method from - IBM suport. It still generates a zillion duplicate definition - warnings, but IBM doesn't have any better solution. - - * include/makeinclude/platform_aix4.2.GNU: This will work with both - AIX 4.2 and 4.3 now. I'll take care of the naming soon. - - * tests/Map_Test.(cpp h): Moved template defs to new file, Map_Test.h - to satisfy AIX xlC. Thanks to Susan for this too. - - * tests/DLL_Test.(cpp h): Moved template defs to new file, DLL_Test.h - to satisfy AIX xlC. - - * tests/Makefile, Makefile.DLL: Fixed to build libDLL_Test correctly - on AIX w/ xlC. - - * tests/run_tests.sh: Sets LIBPATH correctly for AIX (4.2 at least). - -Mon Mar 15 00:26:31 1999 Douglas C. Schmidt - - * netsvcs/ACE-netsvcs.html: Updated this to document the current - version. Thanks to Bill Rizzi for - reporting this. - - * netsvcs/lib/Client_Logging_Handler.cpp: Make sure that debug - messages go to stderr and log messages go to stdout. Thanks to - Bill Rizzi for reporting this. - - * netsvcs/lib/Client_Logging_Handler.cpp (fini): Oops, fixed a - minor buglet with return values. Thanks to David for reporting - this. - - * netsvcs/lib/Client_Logging_Handler.cpp (send): Added a check to - make sure we don't crash if the ostream is NULL. Thanks to Bill - Rizzi for reporting this. - -Sun Mar 14 22:54:41 1999 Douglas C. Schmidt - - * netsvcs/lib/Client_Logging_Handler.cpp (init): Added an - ACE_OS::unlink() to prevent STREAM pipes from getting confused - if this application doesn't shutdown gracefully. Thanks to Bill - Rizzi for reporting this. - -Sun Mar 14 19:51:25 1999 Ossama Othman - - * configure.in: Added real-time support library `-lrt' check to - asynchronous IO functions/libraries checks. - - GNU glibc 2.1 adds support for the POSIX 1b real-time - specification in the library `librt'. The POSIX asynchronous IO - functions may be found in that library. Currently, `-lpthread' - must also be linked to in addition to `-lrt'. - -Sun Mar 14 17:20:09 1999 Douglas C. Schmidt - - * ace/Log_Msg: Generalized the enable_debug_messages() and - disable_debug_messages() methods so they can be used to enable - or disable arbitrary priorities. Thanks to Susan Liebeskind - for suggesting this. - -Sun Mar 14 14:46:00 1999 Chris Gill - - * ace/OS.i (tzset,timezone): pSOS doesn't support these two - functions. - - * ace/OS.{cpp, h}: added comments clarifying usage for - ACE_Time_Value::max_time, use of ACE_PSOS_TM in ACE_OS::signal (). - -Sun Mar 14 01:30:43 1999 Nanbor Wang - - * ace/OS.i (tzset,timezone): WinCE doesn't support these two - functions. - -Sat Mar 13 12:14:34 1999 Douglas C. Schmidt - - * ace/Thread_Manager: Changed the following methods: - - int task_list (..) - int thread_list (...) - int hthread_list (..) - int thread_grp_list (...) - int hthread_grp_list (...) - - to return actual number of fetched values. - - * ace/Thread_Manager: Added two new methods, task_all_list() and - thread_all_list(), which return lists of all the tasks and - threads in a Thread_Manager, respectively. Thanks to Zoran - Ivanovic for contributing this. - - * ace/Shared_Memory_{MM,SV}.h: Clarified the relationship of - these classes to the more powerful ACE_Malloc<> abstraction. - Thanks to Ti Z for suggesting this. - -Sat Mar 13 13:27:55 1999 David L. Levine - - * ace/OS.i (timezone,tzset): not supported on VxWorks. - - * include/makeinclude/ platform_osf1_4.0.GNU: added suppression - of msg 1180, statement causes unreachble return, with cxx 6.2 - and later. It doesn't like ACE_OSCALL_RETURN and - ACE_NOTSUP_RETURN, though it seems to be going overboard. - The warnings appeared with cxx 6.2-009. If someone uses - 6.2-007, they might have to manually remove the 1180 suppression. - - * examples/IPC_SAP/SOCK_SAP/CPP-inserver-fancy.cpp (handle_events), - C-inserver.cpp (main), - netsvcs/lib/Server_Logging_Handler_T.cpp (handle_logging_record), - apps/Gateway/Gateway/Concrete_Connection_Handlers.cpp (svc): - replaced NOTREACHED comment with ACE_NOTREACHED macro. DU cxx - started complaining about the unreached return statement. - -Sat Mar 13 16:16:13 1999 James CE Johnson - - * docs/tutorials/021: Added some comments to page04 about the - template parameters and the use of the ACE_LOCK parameter in - particular. (Thanks to Bala for the suggestion.) - -Sat Mar 13 00:37:17 1999 Douglas C. Schmidt - - * ACE version 4.6.28 released. - -Fri Mar 12 20:17:47 1999 Irfan Pyarali - - * ace/Select_Reactor_Base.cpp (handle_input): - * ace/WFMO_Reactor.cpp (handle_signal): Added support for - dispatching QOS_MASK and GROUP_QOS_MASK. - -Fri Mar 12 19:13:11 1999 Carlos O'Ryan - - * ace/OS.i: - Implemented ACE_OS::timezone() for LynxOS. - -Fri Mar 12 16:31:19 1999 Ossama Othman - - * ACE-INSTALL.html (Linux): added note about non-thread safe - glibc 2.0 dynamic loader. The dynamic loader in glibc 2.1 is - thread safe. - -Fri Mar 12 13:44:54 1999 Kirthika Parameswaran - - * tests/DLL_Test.cpp (main): Fixed the errors on VxWorks and - LynxOS by shifting the START_TEST before the #ifdefs began. - -Fri Mar 12 12:53:17 1999 David L. Levine - - * ace/config-sunos5.5.h: with CC 5.0, replaced ACE_LACKS_ACE_IOSTREAMS - with ACE_USES_OLD_IOSTREAMS. - - * include/makeinclude/platform_sunos5.5_sunc++.GNU: with CC 5.0, - added -library=iostream,no%Cstd to CCFLAGS. - - Thanks to Diethard Ohrt for the - above two updates to support CC 5.0. - -Fri Mar 12 12:09:14 1999 David L. Levine - - * ace/OS.h: fixed comment after #endif to match its #ifdef. - -Fri Mar 12 11:46:55 1999 Vishal Kachroo - - Added two new functions tzset () and timezone (). The former sets the - timezone information based on an environment variable TZ which is - set when the user logs on. (For St. Louis TZ=US/Central and - timezone = 360 minutes or 6 hrs. from GMT.). timezone () retrieves - the timezone value in seconds. - - * ace/OS.h (ACE_OS): Added a wrapper for timezone () and tzset (). - * ace/OS.i (ACE_OS): Added Implementation for the above functions. - - The timezone information is being used in the Time Service. - -Thu Mar 11 20:11:13 1999 Douglas C. Schmidt - - * ace/Get_Opt.cpp (operator): Reverted the following change since - it will break documented behavior. Thanks to Jon Biggar for - reporting this. - - * ace/Get_Opt.cpp (operator): When the getopt encountered an - unknown option or an option with a missing required argument, it - returned '?' and continues to allow processing with the next - argument (no problem so far). However, if it encountered an - argument that is not an option (i.e. no '-' in front) or if it - encounters a double dash (i.e. '--') it returns EOF which - disallows further processing. Now, it returns a '?' after - advancing optind to allow further processing. Thanks to Mark - Laffoon for reporting this. - -Thu Mar 11 15:34:24 1999 David L. Levine - - * ace/ACE.cpp: removed unnecessary #includes of ace/IPC_SAP.h, - ace/Process.h, and ace/SString.h. Thanks to Elias Sreih - and Liang Chen - for suggesting this. - - * ace/OS.cpp (ACE_OS::thr_setspecific): on ACE_WIN32 with - ACE_HAS_TSS_EMULATION, don't register the one native key - with ACE_TSS_Cleanup::instance (). There's no need, because - it doesn't have a destructor. And, it prevents startup - because the ACE_TSS_Cleanup structures haven't been set up - completely when it is called. Thanks to Terry Rosenbaum - for reporting this. - - Thu Mar 11 14:04:15 1999 David L. Levine - - * include/makeinclude/platform_chorus_ghs.GNU: added protection - to not reset exceptions flag if it was defined. - -Thu Mar 11 12:53:41 1999 Carlos O'Ryan - - * ace/Thread_Manager.i: - The method to return the number of threads was using thr_lists_ - as a pointer, but it isn't. - -Thu Mar 11 10:12:51 1999 Douglas C. Schmidt - - * ace/Thread_Manager: Added a method to return the current number - of threads in the ACE_Thread_Manager. Thanks to Zoran Ivanovic - for suggesting this. - -Thu Mar 11 10:27:51 1999 Kirthika Parameswaran - - * tests/DLL_Test.cpp (main): Allowed the main to be accessible on - all platforms by shifting the #ifdefs inside the main. The - problem arose due to the main being declared an undefined - reference on LynxOS. - -Wed Mar 10 13:31:37 1999 Ossama Othman - - * ace/config-linux-common.h: - Commented out ACE_HAS_DLFCN_H_BROKEN_EXTERN_C, ACE_LACKS_MSYNC and - ACE_LACKS_MADVISE. They are no longer needed for recent revisions - of glibc 2.x. Thanks to for pointing this out. - -Wed Mar 10 11:05:39 1999 David L. Levine - - * ace/Thread.h,ace/Thread_Manager.h (exit): added comment - that exit () should not be called by main thread. - - * ace/OS.h: added an ACE_OS_thread_key_t typedef on WIN32 - with ACE_HAS_TSS_EMULATION. Thanks to Terry Rosenbaum - for reporting that - it was missing. - - * include/makeinclude/platform_osf1_4.0.GNU: disable msg 1136 with - cxx 6.1-029. Thanks to Doug Anderson for - reporting this. - -Wed Mar 10 10:57:16 1999 Carlos O'Ryan - - * ace/Basic_Types.h: - Fixed minor problem that would show up if sizeof(int)==2; thanks - to Cristian Ferretti for reporting this - problem. - -Wed Mar 10 10:13:52 1999 Nanbor Wang - - * ace/Message_Block.i (reference_count): Made sure the inline - function is defined before used. Thanks to David for noticing - this. - -Wed Mar 10 08:52:59 1999 David L. Levine - - * include/makeinclude/platform_chorus.GNU: fixed - exceptions=1 support. Thanks to Wei Chiang for - reporting this. - - * include/makeinclude/wrapper_macros.GNU: added exceptions=1 - support for pre-2.8 g++. It's not recommended, because pre-2.8 - g++ doesn't support exceptions well. It's provided for - completeness. - - * include/makeinclude/platform_chorus.GNU: removed - exceptions=1 support, because now it's in wrapper_macros.GNU. - -Tue Mar 09 21:54:39 1999 David L. Levine - - * netsvcs/Makefile,netsvcs/clients/Makefile: updated - ACE_COMPONENTS check to allow everything to be built - in the default case, when ACE_COMPONENTS isn't set. - Thanks to Carlos for noticing this. - - * netsvcs/Makefile,netsvcs/servers/Makefile: moved - netsvcs/server build suppression, when ACE_COMPONENTS - lacks Other, from netsvcs/Makefile to netsvcs/servers/Makefile. - - * examples/Naming/Makefile: suppress build if ACE_COMPONENTS - is defined and doesn't contain Other. - - * performance-tests/Misc/Makefile: don't build test_naming - if ACE_COMPONENTS is defined and doesn't contain Other. - - * ace/Log_Record.i (length): cast the long argument to ACE_UINT32, - to avoid warning message if long is greater than 4 bytes. - Thanks to Hao Ruan for reporting this. - -Tue Mar 9 20:56:35 1999 Carlos O'Ryan - - * include/makeinclude/rules.nested.GNU: - If the DIRS macro is not set we simply do not recurse. Before - this change we got an error from the shell. - - * bin/auto_compile: - If there are no errors then send a message when a warning was - detected during compilation. - -Tue Mar 09 15:15:19 1999 David L. Levine - - * bin/create_ace_build: check for ace/ and include/ directories - in top level directory, instead of ace/, examples/ and netsvcs/. - This allows use with trimmed-down workspaces. Thanks to Jeff - for suggesting this. - - * include/makeinclude/platform_chorus_ghs.GNU: added exceptions - make option support. Thanks to Wei Chiang for reporting that - it wasn't supported. - -Tue Mar 9 12:59:09 1999 Douglas C. Schmidt - - * docs/ACE-subsets.html: Updated the subsets to reflect what's - actually in the ACE Makefile. - - * ace/Message_Block.h: Changed the private section in both - ACE_Message_Block and ACE_Data_Block to protected allowing - derived classes to access data members of the parent class; - Thanks to Alexander Davidovich for suggesting - this. - - * ace/Message_Block: Added new reference counting accessor methods - to Message_Block and Data_Block. Thanks to Alexander Davidovich - for suggesting this. - -Tue Mar 09 11:21:49 1999 Nanbor Wang - - * ace/Message_Block.h: For some reason, default ctor and operator= - must be declared private instead of protected if they are not to - be accessable. Otherwise, VC complains. - -Tue Mar 09 01:06:44 1999 Douglas C. Schmidt - - * ACE version 4.6.27 released. - -Tue Mar 09 00:39:23 1999 Douglas C. Schmidt - - * ACE version 4.6.26 released. - -Mon Mar 08 23:23:35 1999 Nanbor Wang - - * ace/Thread_Manager.{h,cpp} (thread_within,hthread_within, - thread_grp_list,hthread_grp_list): Added new functions to - check if a thread is managed by the thread manager and collect - the thread ids/handles in a thread group. Thanks to XuYifeng - for motivating the addition. - -Mon Mar 08 22:23:33 1999 David L. Levine - - * ace/Makefile: added FOR_TAO short-cut to ACE_COMPONENTS. - If the ACE_COMPONENTS variable is set to FOR_TAO, then - only the components necessary to support TAO will be - built into libACE. - - * netsvcs/clients/Makefile: suppress build if Other - ACE_COMPONENT isn't built. - - * netsvcs/Makefile: suppress server build if Other and Token - ACE_COMPONENT aren't built. - -Mon Mar 8 17:35:04 1999 Gonzalo Diethelm - - * ace/NT_Service.cpp: - * ace/NT_Service.h: - Now the handle_control method calls separate protected virtual - methods to do its work. That way, it is easier to override what - must be done on each case, just by overriding one of the new - methods. - -Mon Mar 08 15:41:08 1999 Steve Huston - - * include/makeinclude/platform_hpux.GNU: Added -DACE_LACKS_PRAGMA_ONCE. - Thanks to Hao Ruan for reporting this. - - * README: Added Hao Ruan to the list of contributors. - -Mon Mar 08 12:27:54 1999 David L. Levine - - * ace/Service_Config.cpp (handle_signal): added ACE_UNUSED_ARG (sig) - if ACE_NDEBUG is defined, to avoid compilation warning about - unused argument with debug=0. - - * docs/ACE-subsets.html: added subset characterizations on - several platforms. - - * include/makeinclude/platform_sunos5_ghs.GNU: fixed AR and - ARFLAGS to use CC to build static libs. It looks like GreenHills - no longer supplies a separate archiver with 1.8.9. - -Mon Mar 08 11:58:03 1999 Nanbor Wang - - * ace/Task.cpp (activate): Made sure we don't mess with the passed - in grp_id if the task was not previously actived. Thanks to - XuYifeng for noticing this. - -Fri Mar 05 14:15:46 1999 David L. Levine - - * ace/OS.cpp (ACE_TSS_Cleanup (),free_all_keys_left ()): - with ACE_TSS_Emulation only, don't free the TSS key that - ACE_TSS_Cleanup uses internally for its in_use_ member. - The key doesn't get freed in ACE_OS::thr_key_detach (), - because that gets called during shutdown. So, - free_all_keys_left () would attempt to free it. But, - the dynamic memory associated with it had already been - deleted by ACE_TSS_Cleanup::exit (). And, there - aren't any other resources associated with it. So, - free_all_keys_left () can just skip over it. - - * ace/OS.cpp (cleanup_tss): disabled call to - free_all_keys_left () with ACE_HAS_TSS_EMULATION, because - we can't safely access the TSS values that were created by - the main thread. They were destroyed when the ACE_TSS_Cleanup - instance exit () function was called. There don't seem to - be any leaks if free_all_keys_left () isn't called, anyways. - -Fri Mar 5 11:05:04 1999 Nanbor Wang - - * examples/Log_Msg/Log_Msg.dsw: Fixed the path to Callback.dsp. - Thanks to Zoran Ivanovic for reporting - this. - - * performance-tests/Misc/Makefile: Removed test_guard from the - Makefile. This test requires having - ACE_USES_OBSOLETE_GUARD_CLASSES defined in order to compare - ACE_Guard to ACE_Thread_Mutex_Guard (obsolete). - - * ace/OS.h: Removed ACE_THREAD_GUARD*. - - * ace/config-psos-{diab,tm}.h: Removed - ACE_LACKS_METHOD_DEFINITIONS_IN_CLASS_TEMPLATE. It is no longer - needed. - - * ace/Synch_T.{h,i}: One would assume compilers are smart enough - to treat _all_ in-class functions as inline. Not for template - member functions. This is true at least for SunCC, egcs, gcc, - and MSVC. These functions seems to impose extra overhead. - After removing the in-class definitions for ACE_Guard, the cost - of using ACE_Guard is now as good as using - ACE_Thread_Mutex_Guard (which, by the way, is depricated.) So, - there's no need for a ACE_THREAD_MUTEX_GUARD class. Afterall, - the "ACE Way[TM]" of defining inline functions is the "Right - Way[TM]". The motto of the change is, always put inline - functions in .i files (even for template specialization) - otherwise, they'll become regular functions. If you really need - to put function definitions within class definitions, mark - inline function explicitly. - - Thanks to Andy Marchewka for noticing the - performance differences between ACE_Thread_Mutex_Guard and (old) - ACE_Guard. - -Fri Mar 5 11:06:12 1999 Douglas C. Schmidt - - * ace/Svc_Conf.y: Always print out an error message when we - increment yyerror. Thanks to Ulf Jaehrig - for reporting this. - -Thu Mar 4 12:26:47 1999 Nanbor Wang - - * tests/Message_Queue_Notifications_Test.cpp (svc): Made increment - of thread-safe. - -Thu Mar 04 07:00:20 1999 David L. Levine - - * ace/config-aix-4.2.x.h: added ACE_LACKS_PRAGMA_ONCE - to xlC section. Thanks to Rainer Blome - for reporting this. - - * ace/config-osf1-4.0.h: added ACE_LACKS_PRAGMA_ONCE to - cxx section, with __DECCXX_VER < 60090010. This should - help avoid compilation warnings from cxx 5.x. Thanks - to Oliver M. Kellogg for - reporting this. - - * ACE-INSTALL.html: corrected name of ace/config-linux-lxpthreads.h. - Thanks to Barry Hoggard for reporting this. - - * tests/Makefile,Makefile.DLL: instead of always running a - recursive make to build libDLL_Test.so, only do that if it - needs to be built. And, added dependencies to Makefile.DLL. - - * ace/Makefile: commented out use of TEMPLATE_FILES. I don't - believe that it's needed. - - * ace/CLASSIX/Makefile: removed unused TEMPLATE_FILES and - LSRC2 macros, and gethrtime build rule. - - * docs/ACE-subsets.html: updated, and added documentation for - ACE_COMPONENTS and the ACE_OS adapation layer. - -Wed Mar 3 22:30:02 1999 James CE Johnson - - * ace/IOStream_T.{cpp|h|i}: Those last changes break (at least) - examples/IOStream/server. I'm backing them out and restoring - the 4.6.25 versions of these files until Chris can get back to - me about what's going on. - -Wed Mar 03 21:49:58 1999 David L. Levine - - * ace/OS.cpp (socket_init,socket_fini): replaced use of - cerr with ACE_OS::fprintf. - - * ace/OS.h: conditionally #include Object_Manager.h, only - if ACE_HAS_MINIMAL_ACE_OS is not defined. Merged main () - #defines for Unix/NT and WinCE, to ease maintenance. - - * ace/config-minimal.h: removed undef of - ACE_HAS_NONSTATIC_OBJECT_MANAGER, because OS.h now conditionally - #includes Object_Manager.h. Added ACE_MAIN_OBJECT_MANAGER #define, - to only instantiate the ACE_OS_Object_Manager. - - * ace/config-WinCE.h: added ACE_MAIN and ACE_MAIN_OBJECT_MANAGER - #defines, to support merging of the main () #defines in OS.h. - - * ace/OS.{h,cpp}: added ACE_OS_Object_Manager::starting_up () - and shutting_down (). (ACE_TSS_Cleanup::remove): replaced - use of ACE_Object_Manager::shutting_down () with - ACE_OS_Object_Manager::shutting_down (). Thanks to Irfan - for reporting that, otherwise, ace/Object_Manager.h had - to be #included by OS.cpp on NT, if ACE_NONSTATIC_OBJECT_MANAGER - wasn't #defined. - - * tests/Basic_Types_Test.cpp: hacked a bit to support building, - and running, with ACE_HAS_MINIMAL_ACE_OS. Don't look, - unless you want to forever ruin all of your good coding habits. - -Wed Mar 03 19:08:52 1999 Irfan Pyarali - - * ace/Map_T.h (ACE_Map): Further degraded my code to make it - compile with lame compilers ;-) This time it was the lame pSOS - diab compiler that could not recongnize a typedef in the base - template class. - -Wed Mar 03 11:31:00 1999 David L. Levine - - * docs/ACE-guidelines.html: added guideline to try to limit - the length of source code lines to less than 80 characters. - And, reverted to the previous version of the file. The - last version was apparently committed by mistake. - - * include/makeinclude/wrapper_macros.GNU (ACE_HAS_GNUG_PRE_2_8): - added support for eg++. Assume that it's egcs, and therefore - ACE_HAS_GNUG_PRE_2_8 is set to 0. Thanks to Russell L. Carter - for supplying a patch. - -Wed Mar 3 09:35:20 1999 Ossama Othman - - * ace/Memory_Pool.cpp (handle_signal): Added a check to see if the - current mapping is up to date so that faults caused by other - mappings will be passed on. Thanks to - Joseph Weihs for reporting this and for - providing a fix. - -Wed Mar 3 05:48:24 1999 Douglas C. Schmidt - - * ace/ACE.cpp (fork): Added an extra pair of parens within the - WIFE*() macros to work around GCC bugs. Thanks to Alexandre - Karev and Andre Folkers - for reporting this. - -Tue Mar 2 22:50:18 1999 Alexander Babu Arulanthu - - * ace/POSIX_Asynch_IO.h: - * ace/POSIX_Proactor.cpp: - Added forward declaration for ACE_Proactor_Impl. Using static cast - to down cast from to - . Thanks to John.Mulhern@lawson.com for - reporting the warnings in HP UX. - -Tue Mar 02 21:17:19 1999 David L. Levine - - * ace/OS.{h,cpp},Object_Manager.{h,cpp}: changed Object_Manager - state to be per-instance, instead of global. This makes - it easier to enforce startup and shutdown ordering, - regardless of whether the Object_Managers are static, - created on the stack of main (), or dynamically allocated. - - * ace/IOStream_T.h: fixed a couple more line breaks. - - * Makefile: added support for suppressing man page regeneration - on make release command line. - - * include/makeinclude/platform_osf1_4.0.GNU: added automated - support for warning 1136. It's only supported by cxx 6.2. - Thanks to James CE Johnson for reporting - this, and to Andrew Hobson for - diagnosing the problem. - - * ace/OS.i (thr_getspecific): added #else clause w/ACE_NOTSUP_RETURN - to support ACE_HAS_MINIMAL_ACE_OS. - - * ace/config-minimal.h: added #undef of - ACE_HAS_NONSTATIC_OBJECT_MANAGER, to avoid #include of - Object_Manager.h. And, added #define ACE_USE_THREAD_MANAGER_ADAPTER - so that ACE_Thread_Adapter::invoke () won't use any - ACE_Thread_Exit functions. - - * ace/OS.cpp (ACE_Thread_Adapter::invoke): removed - ACE_HAS_MINIMAL_ACE_OS conditional compilation, because - config-minimal.h now #defines ACE_USE_THREAD_MANAGER_ADAPTER. - And, added #else clauses to three TSS-related functions. - -Tue Mar 02 14:43:29 1999 Steve Huston - - * ace/Map_T.(h i): Qualified types inherited from template base - classes; qualified with ACE_TYPENAME where needed. Now aC++ - is happy. - - * ace/config-hpux-10.x-hpc++.h: Added ACE_HAS_TYPENAME_KEYWORD for - aC++. - - * tests/DLL_Test.cpp: Enable on HP-UX. Generalize the library - prefix/suffix with the platform definitions from OS.h. - -Tue Mar 2 12:41:00 1999 Chris Gill - - * ace/IOStream_T.{cpp, h}: Fixed some line breaks that were - inadvertently introduced when these files were last checked in. - -Tue Mar 2 10:54:16 1999 Nanbor Wang - - * Cache_{Hash,Heap}_T.{h,cpp}: - * Cache_Manager[_T].{h,cpp}: - * Cache_Object.cpp: - * Hash_Bucket_T.{h,cpp}: Fixed erroneous include directives. - Thanks to Christian.Destor@alcatel.fr for reporting this. - -Tue Mar 2 10:33:47 1999 James CE Johnson - - * ace/IOStream_T.{cpp|h|i}: Christopher Healey - noticed occasional core dumps from - ~ACE_IOStream on heavily loaded systems. It turns out that - streambuf_ was being deleted out from under the object. These - three files include his patches for this problem. - -Tue Mar 2 02:28:54 1999 Nanbor Wang - - * ace/CDR_Stream.h (do_byte_swap): This accessor function should - be public accessible. Otherwise it's useless. Reorder class - declaration so the protected members appear before private - members/functions. - -Mon Mar 1 23:26:41 1999 Kirthika Parameswaran - - * tests/DLL_Test.cpp (ACE_HAS_SVR4_DYNAMIC_LINKING): - Added this check to prevent this test from being run - separately. - -Mon Mar 01 17:02:48 1999 David L. Levine - - * ACE version 4.6.25 released. - -Mon Mar 01 16:54:02 1999 David L. Levine - - * ace/OS.cpp,Object_Manager.cpp: fixed ObjMan state logic to - ensure that the ACE_Object_Manager is fini'd before the - ACE_OS_Object_Manager, even when both are static objects. - Thanks to Carlos for reporting this problem. - -Mon Mar 01 14:05:46 1999 David L. Levine - - * ACE version 4.6.24 released. - -Mon Mar 01 13:04:53 1999 David L. Levine - - * ace/OS.*,Object_Manager.{h,cpp},ACE.cpp: added class - ACE_OS_Object_Manager. It manages the three preallocated - locks that ACE_OS uses. Many thanks to Nanbor for - suggesting the scheme to avoid dependency on Synch_T.h - for the ACE_Guard instantiations: OS.cpp now has a - couple of lightweight guards for its internal use. - - * ace/ACE.{i,cpp},OS.*: moved ACE::strecpy () and - ACE::unique_name () from class ACE to ACE_OS. That - allows ACE_OS to be self-contained. The ACE versions - were left for backward compatibility; they now just - wrap the ACE_OS versions. - - With these changes, a stand-alone ACE OS adaptation layer - can now be built. The ace/config-minimal.h config file - should be included in ace/config.h if you want to build - the ACE OS adaptation layer. - - Two deficiencies remain with the ACE OS adaptation layer: - the dependencies on ACE_Log_Msg have been conditionally - compiled out by config-minimal.h. Similarly, there is - a conditional dependency of ACE_Thread_Adapter::invoke () - on ACE_Thread_Exit. It would probably be best to move - that to ACE Thread_Manager, if possible. - - * ace/config-minimal.h: suppress ACE_HAS_TSS_EMUATION, because - it requires other ACE headers to be #included. - - * ace/Synch.{i,cpp} (~ACE_Recursive_Thread_Mutex): added - a call to this->remove (). Without it, the mutex wasn't - being destroyed. Uninlined both the destructor to avoid - code bloat if there are multiple returns in a function - that instantiates an ACE_Recursive_Thread_Mutex locally. - And, uninlined the remove () function, to save code space, - because it's non-trivial and not expected to be time critical. - -Sun Feb 28 20:21:05 1999 Kirthika Parameswaran - - * tests/Makefile.DLL (realclean): Added the realclean target to - the makefile. - - * tests/run_tests.sh (ace_version): Disabled DLL_Test for chorus, - LynxOS, Unicos platforms as they dont support shared libraries. - -Sun Feb 28 20:08:54 1999 Alexander Babu Arulanthu - - * ace/POSIX_Proactor.cpp: - * ace/POSIX_Asynch_IO.h: - * ace/POSIX_Asynch_IO.cpp: - Fixed to pass wherever is being - passed, since it is ok to pass the derived class pointer in place of - base class pointer. - Defined the fields and in - so that they can be used instead of - and . Because and - fields are not supported on HP yet. - -Sun Feb 28 14:22:38 1999 David L. Levine - - * include/makeinclude/platform_linux_kcc.GNU: added - -D_GNU_SOURCE to CFLAGS, because it's needed with - glibc 2.1. It can't go into the config file, because - it needs to be #defined before the #include of - features.h. But, features.h #defines the glibc version. - Thanks to Ben Eng for reporting this. - - * ace/config-minimal.h: disable ACE_ASSERT, ACE_DEBUG, and ACE_ERROR. - -Sun Feb 28 12:57:53 1999 Nanbor Wang - - * ace/Thread_Manager.cpp (terminate): The condition for handling - joining thread was wrong. Thanks to Terry Rosenbaum - for reporting the bug. - -Sun Feb 28 08:37:44 1999 David L. Levine - - * ace/OS.cpp (ACE_Thread_Adapter::invoke): replaced call - to ACE_Thread::self () with call to ACE_OS::thr_self (), - so that we don't need to #include ace/Thread.h. Thanks - to Russ Noseworthy for reporting this. - -Sat Feb 27 17:25:52 1999 David L. Levine - - * ace/Makefile: updated dependencies. They didn't have - any .shobj dependencies, just .obj. - - * tests/Makefile: ran make depend. It didn't have any - dependencies. - - * include/makeinclude/platform_linux_kcc.GNU: added note that - evaluation copies of KCC might come with libraries that were - built with exception handling support. To use them, ACE must be - built with exception handling support - (exceptions=1). Thanks to John Lindal - for reporting this. - - Also, added support for the exceptions make flag. - -Sat Feb 27 13:31:17 1999 Douglas C. Schmidt - - * ace/OS.i: Fixed the remaining problems with ACE_OSCALL_RETURN - macro usage for sem_wait(), sem_post(), and sem_trywait(). - Thanks to David Levine for reporting this. - - * ace/OS.h: Added a set of ACE_THREAD_GUARD macros that use - ACE_Thread_Mutex_Guard. These seem to be faster on many - platforms than the ACE_Guard. Thanks to - Andy Marchewka for reporting this. - - * ace/Dump.cpp: Moved the explicit template instantiation of - ACE_Guard out of dump and put it into - Synch.cpp, where it's with the other instantiations. - -Fri Feb 26 23:58:46 1999 Jeff Parsons - - * ace/CDR_Stream.{h,i,cpp}: - Added some read- and write-pointer alignment - functions, as proposed by Carlos. Also deleted some - ACE_OutputCDR members that weren't being used. - Checked the build on NT and suncc. Must come up with - some kind of test for these new functions. - -Fri Feb 26 21:56:05 1999 David L. Levine - - * ace/Makefile: moved ACE_COMPONENTS to after include - of wrapper_macros.GNU, so that users can set it in - their platform_macros.GNU. Also, added ACE_LACKS_ACE_OTHER - to CFLAGS if Other ACE_COMPONENT is not built. - -Fri Feb 26 17:48:32 1999 Steve Huston - - * include/makeinclude/platform_hpux_aCC.GNU: Added OCFLAGS - value for optimize=1 builds; added support for distrib=1 - builds to build for off-site distribution. - -Fri Feb 26 12:38:00 1999 David L. Levine - - * ace/OS.cpp: added #include "ace/Thread_Manager.h" on - WIN32, for ACE_Thread_Descriptor declaration. Thanks - to Barry Hoggard for reporting this. - - * ace/Managed_Object.h: fixed comments in description. - -Fri Feb 26 11:56:08 1999 Ossama Othman - - * ace/Log_Priority.h (ACE_Log_Priority): Removed all references to - ACE_HAS_BROKEN_ENUMS since it has been deprecated (see David's - ChangeLog entries from Feb 5). - -Fri Feb 26 11:09:47 1999 Ossama Othman - - * ace/OS.i (sema_destroy): ACE_OSCALL and ACE_OSCALL_RETURN macro - calls for sem_destroy, sem_unlink and sem_close had too few - arguments. Added the missing arguments for the macros. - -Fri Feb 26 10:59:45 1999 Alexander Babu Arulanthu - - * examples/Reactor/WFMO_Reactor/test_talker.cpp (main): Fixed to - use the new proactor interface. - -Thu Feb 25 22:17:58 1999 David L. Levine - - * ace/OS.cpp (spa, for VxWorks only): updated comment about - ::sp () default values, and added comments for each argument - to ::taskSpawn (). Thanks to Tad Jarosinski - for asking about spa (). - -Thu Feb 25 20:10:06 1999 Ossama Othman - - * ace/Synch.h: - * ace/Synch.i: - * ace/Synch_T.h: - - Added an ACE_Null_Semaphore class. Thanks to Irfan for his guidance - on this. Also fixed ACE_SYNCH_SEMAPHORE to be ACE_Null_Semaphore - when ACE is built without thread support. - -Thu Feb 25 18:37:27 1999 Irfan Pyarali - - * ace/WFMO_Reactor (cancel_wakeup and masks_ops): Fixed the - cancel_wakeup() method. It was doing too much, i.e., if the - masks were reduced to null, it was removing the event handler - entry. The new version behaves more like the Select Reactor in - that it simply plays with the masks without removing the event - handler. - - Also, implemented the mask_ops() operation. - - Thanks to Douglas C. Schmidt and Zoran - Ivanovic for helping in pinpointing the - problem. - - * ace/Service_Config.cpp (fini_svcs and close): Since the reactor - and proactor singletons potentially call user code (in - handle_close()), we must shut them down *before* the log msg is - destroyed. Therefore, moved the close_singletons() call from - close() to fini_svcs(). - - * ace/Select_Reactor_Base.cpp (bit_ops): Since we return the old - masks everytime, find the old reactor masks at the start of the - method. This automatically does the work of the GET_MASK - operation. - - * ace/Proactor.cpp: Added #include "ace/Object_Manager.h" - - * examples/Reactor/WFMO_Reactor/test_prerun_state_changes.cpp: - handle_close() was getting called twice; changed code to prevent - double deletion. - - * examples/Reactor/WFMO_Reactor/test_handle_close.cpp: Added the - ability to cancel reads, change masks, and check for existing - reactor masks. - -Thu Feb 25 17:35:10 1999 Kirthika Parameswaran - - * tests/DLL_Test.cpp: - Changed the OBJ_SUFFIX to ".so" as on Linux the .o file cannot - be a shared object. Also the OBJ_PREFIX is now "./lib" for - non-Win32 platforms. - * tests/Makefile: - Additional option DLL_TEST added so that a .so can be produced - for DLL_Test. - * tests/Makefile.DLL: - This is the makefile which produces libDLL_Test.so for DLL_Test. - -Wed Feb 24 23:47:22 1999 Alexander Babu Arulanthu - - * examples/Reactor/Proactor/test_proactor.cpp: - * ace/WIN32_Asynch_IO.h: - * ace/Proactor.cpp: - * ace/WIN32_Proactor.cpp: - * ace/Proactor.h: - * ace/Proactor_Impl.h: - * ace/POSIX_Proactor.h: - Changed the return values of the API to - return -1 on error, 0 on timeout, 1 on success. This has been done so - that it looks like the . Previously - was returning -1 on error, 0 on success - and 0 on timeout also. - - Fixed the and - to do indefinite blocking when - ACE_INFINITE is passed. is used instead of - . - - Renamed the class to more appropriate - . - -Wed Feb 24 22:08:50 1999 Douglas C. Schmidt - - * ace/OS.i: Fixed all the sem_* calls so that they no longer use - the ACE_ADAPT_RETVAL() macro, which was broken since these calls - all return -1 on failure. Thanks to John E. Bossom - for reporting this. - -Wed Feb 24 17:40:49 1999 James CE Johnson - - * docs/tutorials/combine: - * docs/tutorials/colorize: - A few enhancements to make the colorization better. Also, when - #include "ace/something.h" is seen by the colorizer, it will - create a link to ../../../ace/something.h. That should give - direct links from the tutorial pages to the ACE headers. - -Wed Feb 24 16:56:51 1999 James CE Johnson - - * docs/tutorials/017/barrier2.cpp: Added this to show how you can - change the thread count while threads are still active. - - * docs/tutorials/017/*.html: Regenerated due to the new file. - - * docs/tutorials/018/*.html: Added Kirthika's abstract & - regenerated. - - * docs/tutorials/018/token.cpp: Typo in the comments... - -Wed Feb 24 14:57:10 1999 Nanbor Wang - - * ace/OS.h (ASYS_ONLY_WIDE_STRING): New UNICODE macros to convert - char* to wchar* when UNICODE is defined but not on CE. - - * ace/Service_Config.cpp (parse_args): Convert getopt.optarg using - ASYS_ONLY_WIDE_STRING. - -Wed Feb 24 13:54:15 1999 David L. Levine - - * ace/config-minimal.h: changed #include protection to - ACE_CONFIG_MINIMAL_H, so that this config can be #included - by others. - - * ace/OS.{h,cpp},Thread_Manager.h: moved ACE_Thread_Control and - ACE_Thread_Exit class definitions from Thread_Manager.h to OS.h, - so that Task.h no longer needs to be #included by OS.cpp. - - * ace/OS.cpp: protected #include of Containers_T.h with - defined (ACE_WIN32) || defined (ACE_HAS_TSS_EMULATION). - -Wed Feb 24 05:30:59 1999 Douglas C. Schmidt - - * ace/Message_Queue_T.i (dequeue): Replaced the improper - self-recursive call to dequeue() with dequeue_head(). Thanks to - Marc Engel for reporting this. - -Tue Feb 23 20:58:17 1999 Douglas C. Schmidt - - * ace/OS.i: Make sure to do the right thang if we're compiling the - ACE recursive thread mutexes on platforms that lack threading. - - * ace/Service_Object: Added a new ACE_Service_Object constructor - that takes an ACE_Reactor * and passes this down to the - ACE_Event_Handler base class. - - * ace/Event_Handler: Added a new ACE_Event_Handler constructor - that takes an ACE_Reactor * and an int priority that default to - the right values. - -Tue Feb 23 21:53:32 1999 David L. Levine - - * ace/OS.h,README: added ACE_HAS_MINIMAL_ACE_OS support. - - * ace/config-minimal.h: added this config file. It defines - ACE_HAS_MINIMAL_ACE_OS. It is designed to build only - the minimal ACE_OS adaptation layer. - -Tue Feb 23 20:28:45 1999 Marina Spivak - - * ace/SString.{h,i,cpp}: Added a private member to the - ACE_CString class to keep track of the size of data buffer, and - avoid unnecessary memory reallocations. Updated class methods - to use buf_len_. - -Tue Feb 23 19:54:55 1999 Alexander Babu Arulanthu - - * ace/POSIX_Asynch_IO.h: - * ace/POSIX_Asynch_IO.cpp: - Fixed the potential dominance warnings in POSIX - implementation. Updated the documentation. - -Tue Feb 23 18:11:11 1999 Kirthika Parameswaran - - * examples/DLL/DLL.dsw: - examples/DLL/Main.dsp: - examples/DLL/Newsweek.dsp: - examples/DLL/Today.dsp: - Added extra include and linker options to the projects. - - * tests/DLL_Test: - Added OBJ_PREFIX to cater to the problem which arose due to the fact - that the .o is produced under the .obj directory on SunOS. - - * tests/run_tests.sh: - tests/run_tests.bat: - Made an entry for DLL_Test. - -Tue Feb 23 16:54:33 1999 Irfan Pyarali - - * ace/OS.i (recursive_mutex_trylock and recursive_mutex_lock): - Removed the "abandoned" versions of these routines. Abandoned - mutexes are only supported for process mutexes, but not for - thread mutexes. - -Tue Feb 23 15:50:40 1999 Alexander Babu Arulanthu - - * ace/Proactor.cpp: - * ace/Proactor.h: - * ace/Proactor_Impl.h: - * ace/POSIX_Proactor.h: - * ace/POSIX_Proactor.cpp: - * ace/POSIX_Asynch_IO.h: - * ace/POSIX_Asynch_IO.cpp: - * ace/WIN32_Proactor.cpp: - Implemented for POSIX platforms. Thanks to Irfan - for the cool design. This API has been changed a little bit for - portability. API now exists at - class. To post completions, users will have - to get hold of an class (either get it from - the predefined factory methods at the Proactor or derive from - or , then call - on it passing in the which can - be got through method in the . - The need for RTTI has been avioded in this design. - -Tue Feb 23 15:19:33 1999 Steve Huston - - * ace/NT_Service.(h cpp): Added two new methods: - state (DWORD *, ACE_Time_Value * = 0) as an alternate way to get the - service's state, with definite indication of error. Also changed - comments on the other state() method to clarify the return value. - test_access (DWORD) tests caller's access to the service. - Thanks to Martin Krumpolec for these ideas and - suggestions! - -Tue Feb 23 14:12:52 1999 Irfan Pyarali - - * ace/Active_Map_Manager_T.h (npos): Added a new static member - function that returns a key that cannot be found in the map. - Thanks to Fernando D. Mato Mira for - suggesting this. - -Tue Feb 23 12:15:09 1999 Nanbor Wang - - * ace/Svc_Conf.y: - * ace/Svc_Conf_y.cpp: - * ace/Parse_Node.cpp (symbol): - * ace/OS.cpp (fork_exec): - * ace/INET_Addr.cpp (ACE_INET_Addr): More Unicode fixes. - -Tue Feb 23 12:00:21 1999 Steve Huston - - * examples/NT_Service/main.cpp: Allow -i option without a value, and - default to AUTO_START. Also, added a README file to explain how to - use the program. Thanks to Zoran Ivanovic for - the change and the README file! - -Mon Feb 22 22:03:47 1999 Nanbor Wang - - * bin/auto_compile_win32.pl: Perl script for compiling all the - million different config. combination on Win32. Hey, it also - works on Alpha. Thanks to Darrell Brunsch for testing it on - Alpha/NT. - - * ace/ace_{dll,lib}.dsp: Fixed broken project settings. - -Mon Feb 22 21:56:27 1999 David L. Levine - - * ace/Sched_Params.cpp: removed #include of ACE.h because it's - not necessary. - - * ace/Makefile: added ACE_COMPONENTS default definition. - Moved Sched_Params from THREADS_FILES to OS_FILES because - OS.cpp needs it. It only contributes 172 bytes to libACE - on VxWorks and 248 on LynxOS. - -Sun Feb 21 18:52:17 1999 Douglas C. Schmidt - - * ACE version 4.6.23 released. - -Sun Feb 21 08:46:09 1999 David L. Levine - - * ace/OS.i (recursive_mutex_{init,lock,trylock}: added some - ACE_UNUSED_ARGS. - - * ace/OS.{i,cpp} (cond_*): uninlined the ACE_OS:cond_* function - versions with ACE_LACKS_COND_T. Most are too big to be - good candidates for inlining. And the others cause use-before- - definition problems in OS.i. - -Sun Feb 21 00:17:58 1999 Darrell Brunsch - - * websvcs/lib/URL_Addr.i: Can now copy null Addrs. Also added - hash function implementation. - - * websvcs/lib URL_Addr.h: Added hash function. - - * websvcs/lib/URL_Addr.cpp: Fixed a bug with - ACE_HTTP_Addr::create_relative_address and urls beginning with - "/". It used to copy the first '/', which wasn't needed. - -Sat Feb 20 15:39:16 1999 David L. Levine - - * ace/OS.{h,cpp},Object_Manager.{h,cpp}: changed ACE_OS::exit () - to call an exit hook that is registered by the ACE_Object_Manager, - instead of directly calling ACE_Object_Manager::fini (). - - * ace/OS.i (thr_self): moved definitions to before first use. - -Sat Feb 20 11:50:30 1999 Nanbor Wang - - * ace/OS.i (thr_equal): Moved the body of ACE_OS::thr_equal before - recursive_mutex methods to avoid "function redefined as inline" - problem. Thanks to David Levine for reporting this. - -Sat Feb 20 09:05:20 1999 Douglas C. Schmidt - - * ace/OS.cpp: Changed the ACE_static_cast() in ACE_OS_Wstring to - first use an ACE_const_cast(). Thanks to Andy Gokhale for - reporting this. - -Sat Feb 20 02:53:38 1999 Nanbor Wang - - * ace/OS.cpp (ACE_OS_WString): Need to add a statis cast when - converting from wchar to char to eliminate a warning from Win98. - - * ace/config-win32-common.h: Do not check for library type on CE. - - * ace/config-WinCE.h: Defined ACE_HAS_WINCE as 1. - -Fri Feb 19 22:54:18 1999 Carlos O'Ryan - - * ace/OS.h: - Fixed the return types for ACE_OS_WString and ACE_OS_CString - assignment operators, even though they are not defined they - should be declared to return something, otherwise egcs give us a - ton of warnings. - -Fri Feb 19 21:02:49 1999 Douglas C. Schmidt - - * ace/config-win32-common.h: #define'd ACE_HAS_RECURSIVE_MUTEXES - for Win32. - - * ace/OS.cpp: Removed the SString.h dependency in OS.cpp! - -Fri Feb 19 21:44:31 1999 Darrell Brunsch - - * ace/OS.i: Was using two many arguments to thread_mutex_lock () - and ACE_OS::thread_mutex_trylock (). - - * ace/Synch.i: Typo in comment - -Fri Feb 19 18:18:13 1999 Nanbor Wang - - * ace/OS.{h,i,cpp}: Added ACE_OS_WString and ACE_OS_CString which - should only be used within ACE_OS to perform conversion between - wchar strings and char string. - Changed the wide/multibyte conversion macros to use - ACE_OS_?String classes and removed dependencies to Auto_Ptr.h - and SString.h. - - * ace/config-win32-common.h: Removed checked for (_DLL) if - ACE_HAS_DLL = 0. Otherwise, the static build won't compile. - - * ace/Token_Manager.cpp (release_token): - * ace/Service_Manager.cpp (list_services): Changed - ASYS_MULTIBYTE_STRING to ASYS_ONLY_MULTIBYTE_STRING. Because - the new conversion classes have stronger type checking, these - errors weren't found until now. - -Fri Feb 19 17:01:08 1999 David L. Levine - - * ace/Makefile: moved ACE from OS_FILES to UTILS_FILES. - -Fri Feb 19 15:44:23 1999 Douglas C. Schmidt - - * ace/OS, - ace/Synch: Moved the implementation of the - ACE_Recursive_Thread_Mutex from the Synch.* files to - the OS.* files in order to reduce coupling in OS.* and - other parts of ACE. - -Fri Feb 19 12:36:43 1999 Carlos O'Ryan - - * ace/OS.i: - Fixed missing ACE_INLINE for ACE_OS::strenvdup() - -Fri Feb 19 11:35:57 1999 Steve Huston - - * include/makeinclude/platform_sunos5_sunc++.GNU: Added new option - "distrib". If you do a "make distrib=1" the -R options won't be - given when linking, which produces dynamic load records requiring - objects/libraries in standard places, or use of LD_LIBRARY_PATH. - The default is distrib=0, which is the existing behavior. - -Fri Feb 19 11:22:48 1999 Nanbor Wang - - * ace/OS.cpp (open): Don't call CreateFileA with FILE_SHARE_DELETE - when compiled on Win95 because it doesn't support the flag. The - implication of this change is that unlink before close will not - work on Win95. So programs that are targeted to both NT and - Win95 cannot depend on it. Thanks to Rod Joseph - for reporting the bug. - -Thu Feb 18 21:10:45 1999 Douglas C. Schmidt - - * ace/OS.cpp (string_to_argv): We no longer have to special case - for WinCE since this logic has been moved into - ACE_OS::strenvdup(). - - * ace/ACE.cpp: Implemented ACE::strenvdup() using - ACE_OS::strenvdup(). - - * ace/OS: Move the implementation of strenvdup() from ACE to - ACE_OS to remove another dependency from the OS wrappers. - - * ace/ARGV.cpp: Rewrote the ACE_ARGV::string_to_argv() and - ACE_ARGV::argv_to_string() methods to use the new - ACE_OS::string_to_argv() and ACE_OS::argv_to_string(). - - * ace/OS.h: Added string_to_argv() and argv_to_string() methods to - ACE_OS to remove the dependency on ACE_ARGV. - -Thu Feb 18 19:21:03 1999 James CE Johnson - - * docs/tutorials/005/client_handler.cpp: Replaced the leading '_' - in the open() method so that we can cast _acceptor to acceptor. - -Thu Feb 18 14:12:28 1999 Nanbor Wang - - * netsvcs/clients/Naming/Client/svc.conf: Changed to start up - ACE_Naming_Context as dynamic service. Thanks to Darren - Whobrey for reporting this problem. - - * ace/Name_Proxy.cpp (open): The timeout value was set upp - ACE_Time_Value::zero accidentally when we want blocking - connect. Thanks to Darren Whobrey for - reporting the bug. - - * ace/CDR_Stream.{h,i} (ACE_InputCDR::do_byte_swap): Added - accessor function for Flick. - - * ace/CORBA_macros.h (ACE_THROW_INT): This should return a new - instance of the exception. Thanks to Andy for pointing this - out. - -Wed Feb 17 16:40:56 1999 Nanbor Wang - - * ace/OS.h (ACE_NEW_THROW_EX): A new ACE_NEW_THROW macro which - makes ACE_NEW_THROW_EX behave like a exception-throwing - function. I.e., you need to follow ACE_NEW_THOW_EX with - appropriate ACE_CHECK* macros. The use of ACE_NEW_THROW, - ACE_NEW_THROW_RETURN, ACE_NEW_TRY_THROW are deprecated. - - * docs/exceptions.html: Added documentation for - ACE_DECLARE_NEW_CORBA_ENV. - - * ace/config-WinCE.h: Automatically define ACE_HAS_WINCE if it is - not already defined. - - * ace/Synch.cpp: I had to shuffle the location of .i file around - to avoid a warning from SH compiler for CE. - - * ace/config-win32-common.h: Disabled checking for DLL run-time, - WIN32, and multi-threaded run-time on Windows CE. - - * ace/CORBA_macros.h (ACE_DECLARE_NEW_CORBA_ENV): Added this macro - for declaring a new CORBA_Environment called ACE_TRY_ENV. - ACE_TRY_NEW_ENV should now be avoided because it won't work if - multiple try blocks are needed in the top-most functions. - Instead, you can use the new macro to define the environment - variable and use ACE_TRY/ACE_TRY_EX as usually. This is even - more intuitive than ACE_TRY_NEW_ENV. ;) Thanks to Andy for - reporting the problem. - -Wed Feb 17 10:44:29 1999 Alexander Babu Arulanthu - - * examples/Reactor/Proactor/test_proactor.dsp: - * examples/Reactor/Proactor/test_proactor.cpp: - * examples/Reactor/Proactor/Makefile: - rtagged these files with "new_proactor" - -Tue Feb 16 17:08:53 1999 Steve Huston - - * examples/ASX/Event_Server/Transceiver: Moved Event_Transceiver - class definition to new file, transceiver.h, to build ok on AIX (P15) - and fixed core dump if ctor fails to connect. - - * examples/Connection/misc: Moved some class definitions from - test_upipe.cpp to new file test_upipe.h to build ok on AIX (P17). - Same thing with Connection_Handler - new file Connection_Handler.h. - - * examples/Connection/misc/Makefile: Clean out tempinc directory - between program compiles so AIX xlC doesn't freak out. - -Tue Feb 16 16:42:23 1999 Nanbor Wang - - * ace/CORBA_macros.h (ACE_PRINT_EXCEPTION): A new macro that deal - with printing out the exception for debugging. Thanks to Lothar - Werzinger for suggesting this. - - * docs/exceptions.html: Added documentation for the new macro - ACE_PRINT_EXCEPTION. Since there's no portable way to print out - the content of a CORBA_Exception, we use this macro to deal with - differences among various ORB implementations. This macro is - user definable. - - Thanks to Eric Covington for figuring out the - following. - - * ace/ace_ce_dll.dsp: Added Functor.cpp and Message_Queue.cpp. - - * ace/High_Res_Timer.cpp (dump): Fixed Unicode problem. - - * ace/OS.i (truncate): WinCE does not have char* version of - truncate. - -Tue Feb 16 00:39:35 1999 Alexander Babu Arulanthu - * ace/ace_dll.dsp: - * examples/Reactor/Proactor/test_proactor.dsp: - * examples/Reactor/Proactor/test_proactor.cpp: - Updated the files. - * ace/WIN32_Asynch_IO.h: - * ace/WIN32_Asynch_IO.cpp: - * ace/WIN32_Asynch_IO.i: - Added the files - * ace/ace_dll.dsp: - * ace/ace_lib.dsp: - Updated these files - * examples/Reactor/Proactor/Makefile: - New make file which also compiles the test_aiosig_ace.cpp - program. - * ace/POSIX_Asynch_IO.i: - Added the file. - - - rTagged the ACE_wrappers repository with - After the following changes rtagged the repository with - - - * ace/ - Proactor.h - Asynch_IO.cpp - Asynch_IO.h - Makefile - Proactor.cpp - Proactor.h - config-lynxos.h - config-sunos5.6.h - config-sunos5.7.h - POSIX_Asynch_IO.{h,CPP} - POSIX_Proactor.{h,cpp} - WIN32_Asynch_IO.{h,cpp} - Asynch_IO_Impl.{h,cpp,i} - Proactor_Impl.h - Applied Bridge pattern to the POSIX implementation of the Proactor - code. ACE_POSIX_AIOCB_Proactor works fine on Solaris - 2.6. ACE_POSIX_SIG_Proactor works on LynxOS. Take a look at the tests - at the $(ACE_ROOT)/examples/Reactor/Proactor/ and the README. - - * tests/ - Aio_Platform_Test.cpp - *examples/Reactor/Proactor/: - test_proactor.cpp - test_aiocb.cpp - test_aiosig.cpp - test_aiosig_ace.cpp - README - Test files for testing out the platforms. - -Mon Feb 15 13:17:15 1999 Douglas C. Schmidt - - * ACE version 4.6.22 released. - -Sun Feb 14 15:25:27 1999 Ossama Othman - - * ACE-configuration.txt: - * ACE.ifnames: - * acconfig.h: - * ace-config.in: - * ace-diff-config.in: - * acinclude.m4: - * aclocal.m4: - * config.guess: - * config.sub: - * configure: - * configure.in: - * install-sh: - * libtool: - * ltconfig: - * ltmain.sh: - * missing: - * mkinstalldirs: - * ace/config.h.in: - - Started to introduce the work done by the ACE Configuration - Project into the official ACE distribution. - - To help speed development, the work being done by the ACE - Configuration Project is being slowly introduced into the official - ACE distribution. Some of the functionality in the work created by - the ACE Configuration Project has been removed so that ACE may be - built in the usual fashion. Once the ACE Configuration Project - work stabilizes on more platforms that removed functionality may be - added to ACE. - - Currently the configure script contains most of the tests that are - necessary to properly configure ACE on most platforms. However, - there are still some autoconf tests that are missing. As such, you - may encounter and most likely will have compilation problems. - - The `configure' script that is currently being used has been - modified from the ACE Configuration Project's `configure' script to - prevent makefiles from being automatically generated since there are - still some issues that must be addressed before automatically - generated makefiles are incorporated into the official ACE - distribution. - -Sun Feb 14 14:09:11 1999 James CE Johnson - - * docs/tutorials/015/server.cpp (main): Force the singleton to use - the Select Reactor instead of the OS-default. This should fix the - problem this tutorial has on Win32 due to blocking vs non-blocking - socket configuration. - - * docs/tutorials/015/Protocol_Task.h : Removed the ability to - activate this task. The code is now a little simpler and less - likely to behave in unpredicatable ways. - - * docs/tutorials/015/* : A few typos fixed but mostly fallout from - removing the ability to activate the Protocol_Task. - - * docs/tutorials/016/page01.html : Added Kirthika's abstract. - - * docs/tutorials/016/condition.cpp : Made max_threads_ a - non-static member variable that is set by open(). - - * docs/tutorials/017/page01.html : Added Kirthika's abstract. - -Sun Feb 14 12:47:03 1999 Carlos O'Ryan - - * ace/CDR_Stream.h: - * ace/CDR_Stream.i: - * ace/CDR_Stream.cpp: - Minor cosmetic changes, mostly trailing spaces. - -Sat Feb 13 22:06:17 1999 Nanbor Wang - - The following changes are based on the patch Eric Covington - submitted. Thanks very much to Eric for - bringing ACE/CE up-to-date. - - * ace/ace_ce_dll.dsp: Updated. - - * ace/OS.cpp: (open): CE doesn't support opening files with - attribute FILE_SHARE_DELETE. - - * ace/OS.i (abort): CE doesn't support abort. - - * ace/Stats.cpp (print_summary): CE doesn't support strerror. - - * ace/Stats.i (dump): Changed to use ACE_DEBUG. - - * tests/Thread_Manager_Test.cpp (main): - * ace/tests/SOCK_Connector_Test.cpp (find_another_host): - * ace/Log_Msg.cpp (log): - * ace/INET_Addr.cpp (addr_to_string): Fixed Unicode problems. - -Fri Feb 12 16:14:47 1999 Douglas C. Schmidt - - * ace/Remote_Tokens.cpp: Replaced the typedef for - ACE_TSS_CONNECTION_MUTEX with #define ACE_TSS_CONNECTION_MUTEX. - Thanks to Arturo for reporting this. - -Fri Feb 12 18:41:22 1999 Steve Huston - - * ace/SString.cpp: Added "ace/" to #include "Auto_Ptr.h" to conform - to conding guidelines. - -Fri Feb 12 17:16:17 1999 David L. Levine - - * tests/run_tests.vxworks: commented out Message_Queue_Test and - Timeprobe_Test, because they lockup the machine. And, - fixed string length of DLL_Test printout. - -Fri Feb 12 17:06:30 1999 Arturo Montes - - * ace/config-sco-5.0.0-CC-fsu-pthread.h: removed this config - file, because it's not used. - -Fri Feb 12 16:36:55 1999 Nanbor Wang - - * ace/SOCK_IO.{h,i,cpp} (send,recv): Added back the iovec version - of send/recv back to maintain backward compatibility. Thanks to - Steve for pointing this out. - -Fri Feb 12 15:37:10 1999 David L. Levine - - * ace/Makefile: split FILES up into subsets. See - docs/ACE-subsets.html for more information. - -Fri Feb 12 12:31:29 1999 Ossama Othman - - * ace/Makefile: Removed blank line that was added when troubleshooting - the cvs log problem. The extra line cause Digital Unix's make to - complain about a missing separator. - -Fri Feb 12 09:19:21 1999 David L. Levine - - * ace/config-sunos5.5.h: added ACE_HAS_STANDARD_CPP_LIBRARY and - ACE_USES_STD_NAMESPACE_FOR_STDCPP_LIB #defines with Sun CC 5.0. - Thanks to Diethard Ohrt for - providing these. - -Thu Feb 11 15:05:42 1999 Darrell Brunsch - - * ACE-INSTALL.html: Reworded the first step of the Windows - NT installation to be a bit clearer. - -Thu Feb 11 14:30:35 1999 Darrell Brunsch - - * ace/ace_dll.dsp: Fixed Alpha Configuration. - -Thu Feb 11 03:48:50 1999 Nanbor Wang - - * ace/CORBA_macros.h: Added #pragma once and ACE_CORBA_MACROS_H to - prevent duplicate inclusion of this file. - - Added a new macro ACE_ANY_EXCEPTION to denote the name of the - CORBA exception caught by the ACE_CATCHANY. Thanks to Lothar - Werzinger for suggesting this. - -Wed Feb 10 23:01:16 1999 Darrell Brunsch - - * ace/config-win32-common.h: Made a better effort at finding out - if the files are compiled against the correct run-time - libraries. Now _DLL is checked to see if it is defined for - ACE_HAS_DLL != 0 builds, and if it is not defined for static - builds. - - This should help diagnose the problem of not using (Debug) - Multithreaded DLL run-time libraries in clients that use DLL - versions of ace (one symptom of this mistake is errno not - working correctly because of one copy being defined in the DLL - and one in the program itself). - -Wed Feb 10 22:19:33 1999 James CE Johnson - - * docs/tutorials/014/stream.cpp : Removed the __LINE__ displays. - * docs/tutorials/014/page01.html : Added Kirthika's abstract - - * docs/tutorials/015/page01.html : Added Kirthika's abstract - * docs/tutorials/015/page12.html : Oops... Wrong intro text. - * docs/tutorials/015/Protocol_Stream.cpp : Typos fixed - * docs/tutorials/015/Protocol_Task.cpp : Typos fixed - -Wed Feb 10 15:04:26 1999 Ossama Othman - - * ace/Makefile: added Pair_T.cpp and Template_Instantiations.cpp - to the TEMPLATE_FILES list/variable. They were missing. - * tests/Conn_Test.cpp (spawn_processes): initialized - pid_t *children_ptr to zero to prevent "uninitialized" - warnings from egcs 1.1.1. - -Wed Feb 10 14:16:25 1999 Ossama Othman - - * tests/Message_Queue_Test.cpp (performance_test): initialized - ACE_Message_Block **send_block to zero to prevent "uninitialized" - warnings from egcs 1.1.1. - -Wed Feb 10 14:02:46 1999 Ossama Othman - - * ace/ACE.cpp (get_ip_interfaces): initialized struct ifreq * ifs - to zero to prevent "uninitialized" warnings from egcs 1.1.1. - -Wed Feb 10 10:53:59 1999 Carlos O'Ryan - - * examples/IPC_SAP/TLI_SAP/ftp-server.cpp: - Fixed several minor syntax errors. - -Tue Feb 09 16:54:10 1999 Jeff Parsons - - * ace/CDR_Stream.cpp: - Put the 'XXX_DISABLE_SWAP_ON_READ' code back into the - ACE_INputCDR methods read_array(), read_2(), read_4(), - read_8() and read_16(). I didn't realize at first how - crucial that is to the Boeing folks. Thanks to Carlos - for bringing this to my attention. - -Tue Feb 09 16:07:32 1999 Nanbor Wang - - * ace/Synch.{h,i,cpp}: Removed classes ACE_Null_Mutex_Guard and - ACE_Thread_Mutex_Guard since there doesn't seem any need for - them any more. They should be replaced by - ACE_Guard and ACE_Guard. If - by any chance you still need to use them, add - ACE_USES_OBSOLETE_GUARD_CLASSES into your config.h file. - - * ace/Local_Tokens.h: Replaced ACE_Null_Mutex_Guard and - ACE_Thread_Mutex_Guard with ACE_Guard and - ACE_Guard. - -Tue Feb 9 16:12:42 1999 James CE Johnson - - * docs/tutorials/{010|011}/task.{h|cpp} : barrier_ doesn't need to be a - pointer since Doug moved n_threads to the ctor. Minor typos - corrected also. - - * docs/tutorials/010/message_queue.cpp : Typos... - - * docs/tutorials/002/server.cpp: Added call to notify() in the - signal handler so that ^C will exit as expected. - -Tue Feb 09 13:57:23 1999 Nanbor Wang - - * tests/DLList_Test.cpp (main): The test should log the result to - DLList_Test.log, not ACE_DLList_Test.log. - - * tests/run_tests.{sh,vxworks,psosim}: Added DLList_Test. - - * tests/run_tests.bat: Removed DLL_Test. - - * ace/ACE.cpp (ldfind): Win32 only. Made sure we always look for - the DLL at the current directory first on Win32 which is the - default behavior on Win32. - - * ace/ace_{dll,lib}.dsp: Removed entries of Service_Record.{h,i}. - Thanks to David for noticing this. - -Tue Feb 09 10:21:33 1999 David L. Levine - - * ace/Service_Types.{i,cpp},README: removed obsolete references to - Service_Record. - - * tests/MT_Reactor_Timer_Test.cpp (main): added printout with numbers - of expected and actual events, if result is not ACE_MAX_TIMERS + 2 - - * include/makeinclude/wrapper_macros.GNU: added BUILD line with both - shared_libs and static_libs enabled, so that individual Makefiles - don't need a BUILD line. - - * docs/ACE-subsets.html: updated to reflect current ACE status. - -Mon Feb 08 14:32:43 1999 Nanbor Wang - - * docs/exceptions.html: Added guidelines of switching from TAO try - macros to ACE try macros. Other cosmetic changes. - -Mon Feb 8 13:54:32 1999 Yamuna Krishnamurthy - - * docs/tutorials/011/task.cpp : - In the open return this->activate (THR_NEW_LWP, - this->n_threads_); was taking an udefined variable threads. - - * docs/tutorials/011/message_queue.cpp: - Corrected Compilation error due to a typo (static misspelt as - statuc!!!) - -Mon Feb 8 09:21:10 1999 Douglas C. Schmidt - - * ace/Map_T.h, - ace/Pair_T.h: Aded parens around the #pragma implementation file - names so the AIX compiler would be happy. Thanks to Martin - Krumpolec for reporting this. - -Mon Feb 08 00:39:49 1999 Douglas C. Schmidt - - * ACE version 4.6.21 released. - -Sun Feb 7 22:48:01 1999 Nanbor Wang - - * ace/CORBA_macros.h (ACE_THROW_RETURN): The second macro argument - was missing. - -Sun Feb 7 22:32:21 1999 Douglas C. Schmidt - - * ace/CORBA_macros.h: It wasn't clear why the ACE_THROW_RETURN - macro for non-NT platforms wasn't taking a second RETV - parameter. I've fixed this, however. - -Sun Feb 07 13:55:15 1999 David L. Levine - - * include/makeinclude/platform_sunos5_sunc++.GNU: added - comment about possibly needing -compat=4 with Sun CC 5.0. - Thanks to Sush Bankapura for - reporting success with it. - -Sun Feb 7 00:43:32 1999 Jeff Parsons - - * ace/CDR_Stream.cpp: - Turns out that read_boolean_array was declared, but - the body was missing (?). - -Sat Feb 6 22:38:40 1999 Jeff Parsons - - * ACE_wrappers/tests/CDR_Test.cpp: - Changed #include file name to ace/CDR_Stream.h (the new - source file name). - -Sat Feb 6 22:21:14 1999 Carlos O'Ryan - - * ace/CDR_Stream.h: - * ace/CDR_Stream.cpp: - Fixed the write_boolean_array() method; it only needs a const - array of booleans. - -Sat Feb 6 22:07:45 1999 Jeff Parsons - - * ace/CDR.{h,i,cpp}: Renamed these as... - * ace/CDR_Stream.{h,i,cpp}: Mustn't have files with the - same name (the TAO files) for the sake of some compilers. - * Makefile: - * ace_dll.dsp: - Changed to reflect the renaming above. - -Sat Feb 6 20:30:51 1999 Carlos O'Ryan - - * ace/CDR.h: - * ace/CDR.i: - * ace/CDR.cpp: - Fixed some indentation and style problems. - -Sat Feb 06 07:47:20 1999 David L. Levine - - * tests/test_config.h (~ACE_Test_Output): wrapped use of - cerr with #ifndef ACE_LACKS_IOSTREAM_TOTALLY. - -Sat Feb 06 02:41:07 1999 Irfan Pyarali - - * tests/Map_Test.cpp: The hell of explicit template instantiation. - Someone please save me from these stupid compilers. - - * ace/Map: Broken g++ (2.7) has deformed my beautiful code based - on typedefs and forced me to use their basic form. However, - users should continue to use the typedefs provided as I do in - the Map_Test. - -Fri Feb 05 21:57:24 1999 Irfan Pyarali - - * ace/Map_T: Added a new Map mini framework to ACE. The classes - in this mini framework allows the Map interface to be used - without caring about the specific Map implementation being used. - There is the class hierarchy of the framework: - - forwards - ACE_Iterator --------> ACE_Iterator_Impl (abstract) - - ACE_Iterator_Impl is subclassed by: - - - ACE_Map_Impl_Iterator_Adapter - - ACE_Active_Map_Manager_Iterator_Adapter - - ACE_Hash_Map_Manager_Ex_Iterator_Adapter - - ACE_Map_Manager_Iterator_Adapter - - forwards - ACE_Reverse_Iterator --------> ACE_Reverse_Iterator_Impl (abstract) - - ACE_Reverse_Iterator_Impl is subclassed by: - - - ACE_Map_Impl_Reverse_Iterator_Adapter - - ACE_Active_Map_Manager_Reverse_Iterator_Adapter - - ACE_Hash_Map_Manager_Ex_Reverse_Iterator_Adapter - - ACE_Map_Manager_Reverse_Iterator_Adapter - - ACE_Map is subclassed by: - - - ACE_Map_Impl - - ACE_Active_Map_Manager_Adapter - - ACE_Hash_Map_Manager_Ex_Adapter - - ACE_Map_Manager_Adapter - - Also included in the framework is a Key Generator class and a - Key Adapter class. The Key Generator class is used by some map - adapters to generate keys since the maps they adapt do not - generate keys. The Key Adapter class is used by the active map - adapter to allow encoding and decoding of active keys into user - keys. - - Note that the iterators use the bridge pattern while the map - class uses an abstract base class based inheritance approach. - The reason for this is that STL containers return the iterators - by value. An abstract base class cannot be returned by value. - - An alternative design would be to add an abstract base class - that the ACE maps would derive from. Unfortunately, this would - break many things including the ability to add these maps to - shared memory and explicit template instantiations. - - This mini framework would have been idle to apply the external - polymorphism pattern. However, the ACE map classes are - different enough that adaption was necessary. This turned out - to be a blessing in disguise since I was able to add extra - common functionality such as the key generator and key adapter - to the map adapters. I did add the external polymorphic - subclasses to the framework for future use. - - The classes in this framework are as close STL containers as I - would dare to make them ;) Thanks to Carlos for helping design - them. - - * tests/Map_Test: New test to illustrate and test the workings of - the new ACE Map classes. There are two aspect to this test: - (a) functionality testing includes testing the iterators and - various operations, and (b) performance testing to compare the - relative performance of the maps. - - * ace/Pair: Added new Pair class to ACE that holds instances of - the template arguments. Also, added a Reference_Pair class that - only hold references of the template arguments. - - * ace/Hash_Map_Manager_T.* (ACE_Hash_Map_Manager_Ex): - * ace/Map_Manager.* (Map_Manager): - Added new rebind() methods to make interface compatible with - other maps. Also, fixed the constness of some functions. - - * ace/Hash_Map_Manager.h: Fixed order of inclusion of template - code. - - * ace/Active_Map_Manager_T.h (ACE_Active_Map_Manager): Added new - versions of bind, find, and unbind to reduce the number of data - copies. - - * ace/Active_Map_Manager.h (ACE_Active_Map_Manager_Key): Added the - ability for the active key to encode and decode into and out of - a data stream. This relieves the developer from concerning - herself about the internal structure of the active key. - - * ace/config-win32-common.h: Define WIN32 if not already defined. - - * tests/SString_Test.cpp: Added testing for substring creation and - comparisons. - - * ace/OS.h (ACE_dynamic_cast_*_ptr and ACE_dynamic_cast_*_ref): - Added new macros to handle casting of template class. - - * tests/test_config.h: Removed global KEY class that was not being - used anymore anyway. - -Fri Feb 05 21:12:56 1999 Douglas C. Schmidt - - * ACE version 4.6.20 released. - -Fri Feb 05 12:02:31 1999 Steve Huston - - * tests/run_tests.sh: Added SHLIB_PATH support for HP-UX. Fixed - the LD_LIBRARY_PATH setting to work if there was no path set - on entry to the script. - - * ace/config-hpux-9.x.h, config-hpux-(10,11).x-hpc++.h: - Removed ACE_HAS_BROKEN_ENUMS. This affects the HP C++ compiler, not - aC++. I made this change based on David's experience with the - enums and Green Hills, below. If it causes any problems, let me - know and I'll reset it. - -Fri Feb 05 10:11:18 1999 David L. Levine - - * ace/Log_Priority.h: changed ENSURE_32_BITS to LM_ENSURE_32_BITS, - and its value from 0xffffffff to 0x7fffffff. Green Hills 1.8.9 - properly complained that 0xffffffff doesn't fit into an int. - - * ace/config-sco-5.0.0-CC-fsu-pthread.h,config-sunos5.5.h, - config-vxworks5.x.h: removed ACE_HAS_BROKEN_ENUMS, because - it's not necessary with 0x7fffffff. - -Thu Feb 4 23:11:26 1999 Carlos O'Ryan - - * websvcs/lib/URL_Addr.h: - * websvcs/lib/URL_Addr.i: - Added operator= to the ACE_URL_Addr classes. - - * websvcs/lib/URL_Addr.cpp: - Fixed minor memory allocation problem for invalid HTTP - addresses. - It removes './' when creating relative addresses. - -Wed Feb 03 21:50:09 1999 David L. Levine - - * ace/config-vxworks5.x.h: added ACE_HAS_BROKEN_ENUMS with - Green Hills, because it's needed with 1.8.9. And, added - ACE_HAS_STANDARD_CPP_LIBRARY #define to 1, for Green Hills 1.8.9 - (with __STANDARD_CXX #defined) only, because it doesn't work with - 1.8.8. Thanks to Jacob Jones for - reporting these. - - * ace/config-sunos5.5.h: with Green Hills 1.8.9 (with - __STANDARD_CXX #defined), added ACE_HAS_STANDARD_CPP_LIBRARY - #define to 1. - -Wed Feb 03 14:57:21 1999 Nanbor Wang - - * ace/Thread_Manager.h (ACE_At_Thread_Exit[_Func]): Added - ACE_Export keywords. Thanks to Terry Rosenbaum - for pointing this out. - - * ace/Service_Config.{h,i,cpp}: Added one more argument to open - methods that allows ignoring the default svc.conf file. You can - still open svc.conf files using the -f option. - -Wed Feb 03 10:12:14 1999 David L. Levine - - * bin/make_release: fixed release_filter so that it doesn't put - CVS files into the release. - - * ace/Object_Manager.h: updated comments to reflect that - ACE_HAS_NONSTATIC_OBJECT_MANAGER is now #defined in - several ace/config files, including that for Win32. - Thanks to Dave Meyer for pointing - that out. - -Wed Feb 3 09:30:11 1999 Carlos O'Ryan - - * websvcs/lib/URL_Addr.cpp: - Fixed some memory leaks. - HTTP_Addr::create_relative_address supports the #label syntax. - -Wed Feb 03 07:02:49 1999 David L. Levine - - * tests/CDR_Test.cpp: commented out ACE_Auto_Basic_Array_Ptr - explicit instantiation, because it's in ace/Memory_Pool.cpp. - -Tue Feb 2 21:35:21 1999 James CE Johnson - - * docs/tutorials/007/client_handler.h: - * docs/tutorials/007/thread_pool.h: - A couple of syntax goofs. I'm surprised it compiled for anyone! - - * docs/tutorials/007/thread_pool.h: - Changed ACE_Time_Value(0.25) to ACE_Time_Value(0,250000) - - * docs/tutorials/*/Makefile: - Added '.depend' to the list of files removed by the CLEAN - target. I shoulda' done this the other day. - -Tue Feb 2 20:02:22 1999 Darrell Brunsch - - * bin/make_release: Added .gz to the list of binary file extensions. - -Tue Feb 2 19:28:46 1999 Douglas C. Schmidt - - * docs/tutorials: ACE-ified the first 11 tutorials. I hope - James still recognizes this stuff now ;-) - -Tue Feb 2 19:12:50 1999 James CE Johnson - - * docs/tutorials/001/logger.h (class Logging_Handler): - Incorporated Pradeep's suggestion to get rid of the memset() and - use the recv() return value to drop in the null-termination. - -Tue Feb 2 14:19:30 1999 Darrell Brunsch - - * websvcs/websvcs.dsw: - * websvcs/lib/websvcs.dsw: - * websvcs/lib/websvcs.dsp: - * websvcs/tests/tests.dsw: - * websvcs/tests/Test_URL_Addr.dsp: - Added MSVC project files for the websvcs library. - - * websvcs/lib/URL_addr.cpp: - Now correctly exports classes in DLLs. - -Tue Feb 2 12:48:34 1999 Jeff Parsons - - * tests/CDR_Test.cpp: - Changed the template type of the auto_ptr for char. We were - getting a Purify FMR message on Unix. - -Tue Feb 2 12:27:13 1999 Douglas C. Schmidt - - * ace/ACE.cpp: Added an ACE_UNUSED_ARG for program_name for - ACE::daemonize(). Thanks to David Levine for reporting this. - - * ace/OS.h: Generalized the WIF* macros so that they will be - defined on any platform that lacks them, not just NT. Thanks to - David Levine for reporting this. - -Tue Feb 02 08:58:32 1999 Steve Huston - - * tests/MT_Reactor_Timer_Test.cpp: Moved definition of status outside - of ACE_HAS_THREADS condition since it's used in either case. Thanks - to Frederic Andres for this fix. - -Mon Feb 01 23:16:34 1999 Douglas C. Schmidt - - * ACE version 4.6.19 released. - -Mon Feb 01 22:06:40 1999 David L. Levine - - * bin/make_release (create_kit): fixed typo, bin_files - instead of binfiles. - -Mon Feb 01 21:24:45 1999 Douglas C. Schmidt - - * ACE version 4.6.18 released. - -Mon Feb 1 21:02:26 1999 Darrell Brunsch - - * ace/ace_dll.dsp: Some template files were being compiled - in the Release/Unicode/Alpha configs. This is now not the - case. - -Mon Feb 1 13:49:11 1999 Carlos O'Ryan - - * ace/config-linux-common.h: - Added a definition for ACE_TIMER_SKEW, apparently it is only - needed in multiple CPU machines (with SMP enabled); but it did - solve the problems with MT_Reactor_Timer_Test. - -Mon Feb 01 13:08:11 1999 Jeff Parsons - - * tests/CDR_Test.cpp: - Used an auto_ptr to manage a string sent to string_read(). I - had included the .h file for auto ptrs (Carlos corrected my - typo, see below), but had never checked in the code using - auto_ptr. - -Mon Feb 01 12:54:11 1999 Steve Huston - - * ace/NT_Service.(h i): Some fixes provided by Martin Krumpolec - - thanks to Martin for these! - - Supplied missing ctor for name/desc variant. - - svc() method is not pure virtual any longer to prevent SCP-type - applications from having to override it and never use it. - -Mon Feb 1 12:04:35 1999 Darrell Brunsch - - * bin/make_release: Added zip and gif to the binary files in - zips. - -Mon Feb 01 12:00:55 1999 David L. Levine - - * ace/config-sunos5.5.h: With CC 5.0, enabled explicit template - instantiation and added ACE_LACKS_ACE_IOSTREAM. Early versions - of CC 5.0 seem to have problems with automatic template - instantiation and ACE_IOStream. - - * include/makeinclude/platform_sunos5_sunc++.GNU: added CC 5.0 - support to enable explicit template instantiation, and disable - inlining by default. - - Thanks to Diethard Ohrt for confirming - that above fixes allow ACE and TAO to build with CC 5.0. - - * include/makeinclude/platform_sunos5_{g++,ghs}.GNU: removed -lw - from libs. It's not necessary, and apparently causes problems - on Solaris 2.6, because libc now includes the code that was - formerly in libw. Thanks to Steve Coleman - for reporting this. - -Mon Feb 1 10:41:09 1999 Carlos O'Ryan - - * tests/CDR_Test.cpp: - There was a typo in a included filename. - -Mon Feb 1 08:39:15 1999 Douglas C. Schmidt - - * ace/Synch.h: Clarified that the ACE_Semaphore::acquire() is in - absolute, rather than relative, time. Thanks to Jacques - Salerian for reporting this. - -Sun Jan 31 20:10:23 1999 Jeff Parsons - - * ace/OS.h: - Just renamed the CDR byte order macros to something more - reasonable. - -Sun Jan 31 18:19:45 1999 Douglas C. Schmidt - - * docs/tutorials/Makefile: Now we can build the UNSHAR SHAR HTML - right from the top-level. Thanks James! - - * tests/Process_Strategy_Test: Updated the test to use ACE::fork() - and the new "avoid zombies" feature of ACE_Process_Strategy. - - * ace/ACE: Added a new version of fork() that can avoid creating - zombies. Thanks to Garry Brother for - this code. - - * ace/Strategies_T: Changed the ACE_Process_Strategy so that - programmers can designate to not create zombies. Thanks to - Garry Brother for this suggestion. - - * ace/ACE.cpp (daemonize): Only do a chdir if pathname != 0. - - * ace/ACE: Added a "program_name" argument to daemonize() so that - we can set the program name. - - * docs/tutorials: Reformatted all the header files to conform - to the ACE programming style. - -Sun Jan 31 16:09:55 1999 Jeff Parswons >parsons@cs.wustl.edu> - - * ACE_wrappers/tests/CDR_Test.cpp: - Plugged a memory leak in a string read from the CDR stream. - Thanks to Sangwoo Jin for pointing this out. - - * ace/CDR.{h,i,cpp}: - Changed the name of the "base" class holding the constants to - 'CDR' from 'ACE_CDR'. In leveraging this code in the TAO cdr - classes, I've discovered that there are many files that - use these constants, so probably best to keep the original - name. Also made minor changes to read_string, read_wstring, - append_string and append_wstring to prevent a memeory leak - if the operation fails. - -Sun Jan 31 11:58:32 1999 James CE Johnson - - * docs/tutorials/{010|011|012|013|017}: - In all of these, I'd overridden open() as open(int) to specify - the number of threads in a thread-pool. Steve Huston pointed - out that this causes grief with some compilers. I've changed - all of these open(int) overrides to start(int) instead. - - * docs/tutorials/017/Barrier_i.cpp (threads): - The thr_equal() call was changed to !thr_equal(). - - * docs/tutorials/010/taks.cpp: - Vishal recommended some extra commentation to make things a bit - more clear WRT barrier synch. - - * docs/tutorials/013/page01.html: - Added Kirthika's abstract. - -Sat Jan 30 16:03:23 1999 Carlos O'Ryan - - * websvcs/lib/URL_Addr.h: - * websvcs/lib/URL_Addr.cpp: - The HTTP address class can create an URL_Addr from a path - relative to it. This is useful when interpreting an address - inside an HTML document. - -Sat Jan 30 13:34:00 1999 Nanbor Wang - - * examples/Connection/non_blocking/test_sock_connector.cpp (main): - Prevent the program from executing if compiled on non-NT Win32 - platform without Winsock2 installed. Thanks to Greg Harrison - for reporting ths problem. - -1999-01-29 Irfan Pyarali - - * ace/Mem_Map.cpp (map_it): NT makes no claims about replacing - previous mapping at the specified address. Therefore, I have - added a new macro ACE_LACKS_AUTO_MMAP_REPLACEMENT which is - defined if there is no system support for replacing any previous - mappings. In this case, we unmap() before (potentially) mapping - to the same location. ACE_LACKS_AUTO_MMAP_REPLACEMENT is - defined on NT. - -Fri Jan 29 17:40:34 1999 Carlos O'Ryan - - * websvcs/lib/URL_Addr.h: - * websvcs/lib/URL_Addr.cpp: - We were not checking against nil strings in several places, also - fixed some uninitialized members in the HTTP_Addr constructors. - - * bin/auto_compile: - Added protection against simultaneous executions of the script; - it checks for .disable file on the $LOGDIR directory, if present - it does not execute; if not present it creates one; the file is - deleted at program termination. - -Fri Jan 29 16:25:22 1999 Steve Huston - - * ace/config-hpux-10.x-hpc++.h: Added ACE_HAS_GPERF. - * apps/gperf/src/List_Node.cpp (ctor): Added ACE_const_cast to - a char * initializer. - * apps/gperf/src/Options.cpp: Fixed -j processing (typo). - - * docs/tutorials/017/barrier.cpp: Can't init a long with a thread ID. - On HP-UX 10.20, it's a struct. - * docs/tutorials/017/Barrier_i.cpp: Use ACE_OS::thr_equal to check - equality of thread IDs. - - * docs/tutorials/019/server/cpp: Removed redefinition of char *s from - 'for' loop. Works around a compiler issue, but isn't needed anyway. - - * include/makeinclude/platform_hpux_aCC.GNU: On HP-UX 10.20, suppress - (future)error 667 and warning 495 to stop hearing about the problems - with the system-supplied header files. The compiler still says - there was 1 future error, but at least it's easy to scan the output - for real errors now. - -Fri Jan 29 14:49:37 1999 Carlos O'Ryan - - * ace/ACE.cpp: - * ace/Basic_Types.h: - * ace/INET_Addr.cpp: - * ace/Memory_Pool.cpp: - * ace/OS.cpp: - * ace/OS.h: - * ace/OS.i: - * ace/SOCK_Dgram_Bcast.cpp: - * ace/config-cray.h: - * examples/IPC_SAP/SOCK_SAP/C-inserver.cpp: - * examples/System_V_IPC/SV_Semaphores/Semaphores_1.cpp: - * examples/System_V_IPC/SV_Semaphores/Semaphores_2.cpp: - * include/makeinclude/platform_cray.GNU: - * tests/Basic_Types_Test.cpp: - * tests/Handle_Set_Test.cpp: - * tests/Message_Queue_Test.cpp: - * tests/SV_Shared_Memory_Test.cpp: - * tests/run_tests.sh: - Thanks to Doug Anderson for this port of ACE to - Cray machines. - -Fri Jan 29 13:51:40 1999 Nanbor Wang - - * ace/OS.h: Removed definition of ACE_Thread_State. - - * ace/Thread_Manager.*: Changed the ACE_Thread_State as a bunch of - bit-masks so we don't overwrite the thread states accidentally. - Thanks to Tom Dobridge for reporting - the bug. - -1999-01-28 Irfan Pyarali - - * ace/Hash_Map_Manager_T.cpp (open): this->close_i() must be - called *before* the allocators are changed. - - * ace/Map_Manager.cpp (open): Close the old map (if any) before - creating the new map. This also make open() reentrant. Thanks - to Zoran Ivanovic for reporting this bug. - -Thu Jan 28 19:08:25 1999 Carlos O'Ryan - - * ace/Active_Map_Manager_T.h: - Steve's change didn't make it, so I changed BASE to - ACE_AMM_BASE, I don't know about the pragma. - -Thu Jan 28 16:43:17 1999 Steve Huston - - * ace/Active_Map_Manager_T.(h i): Renamed BASE to ACE_AMM_BASE - BASE - conflicted with something in AIX xlC. Also fixed #pragma - implementatation to work on xlC. - -Thu Jan 28 10:04:39 1999 Carlos O'Ryan - - * ace/Hash_Map_Manager_T.cpp: - Reverted to version 4.2, thanks to Kirthika for helping find - this one. - -Thu Jan 28 09:11:29 1999 Andreas Tobler - - * ace/config-linuxppcr5.h: added this config file, for - LinuxPPC R5 platforms. - -Thu Jan 28 08:55:21 1999 David L. Levine - - * ace/config-mklinux.h: replaced ACE_HAS_SOCKLEN_T, removed - __USE_XOPEN. Thanks to Andreas Tobler for - these clarifying this. - -Wed Jan 27 19:12:48 1999 James CE Johnson - - * docs/tutorials/008/*: - * docs/tutorials/009/*: - * docs/tutorials/011/*: - * docs/tutorials/012/*: - Updates from the reviewers. - -Wed Jan 27 17:06:38 1999 David L. Levine - - * ace/Makefile: removed some unprintable characters. - -Wed Jan 27 16:31:01 1999 Ossama Othman - - * ace/Makefile: Added LOCK_SOCK_Acceptor to TEMPLATE_FILES list. - -Wed Jan 27 14:50:13 1999 Nanbor Wang - - * examples/Service_Configurator/Misc/main.cpp: Changed to open the - Service_Config object with ignore_static_svc set to 0. That - allows this example to use static service. (By default, static - services are not loaded.) Thanks to Arturo Montes - for reporting this. - -Wed Jan 27 13:47:00 1999 David L. Levine - - * include/makeinclude/platform_vxworks5.x_g++.GNU: use - double double quotes around COMPILE argument to ace_ld, - but only on WIN32 hosts. Thanks to Peter Weat - for figuring this out. - -Wed Jan 27 13:04:55 1999 David L. Levine - - * ACE version 4.6.17 released. - -Wed Jan 27 12:32:22 1999 David L. Levine - - * ACE-INSTALL.html,include/makeinclude/platform_vxworks5.x_g++.GNU: - default PERL_PATH to "perl", and added notes to set it to the full - perl path if perl is not on your path. - -Wed Jan 27 10:16:06 1999 Carlos O'Ryan - - * docs/ACE-guidelines.html: - Added an entry for the creation of files containing template - code. - -Tue Jan 26 20:44:36 1999 Nanbor Wang - - * ace/SOCK_IO.cpp (send,recv): Changed to use sendv/recvv to - handle variable arguments send/recv. - - * ACE-INSTALL.html: Fixed the dead link to CE-status. Thanks to - Mike Preradovic for reporting - this. - -Tue Jan 26 14:38:11 1999 David L. Levine - - * include/makeinclude/platform_vxworks5.x_g++.GNU: expanded - the information on the PERL_PATH environment variable for - NT hosts. Thanks to Peter Weat for - reporting this. - -Tue Jan 26 13:40:51 1999 Nanbor Wang - - * ace/High_Res_Timer.cpp (elapsed_time_incr): Rearranged the - formula to avoid compilation errors for platforms without - ULONGLONG. Thanks to David for the tip. - -Tue Jan 26 12:01:19 1999 Jeff Parsons - - * ACE_wrappers/tests/CDR_Test.dsp: - * ACE_wrappers/tests/CDR_Test.cpp: - Added lines to the test code to send the output to - the log file, and deleted the unnecessary Header - Files folder in the project. - * ace/CDR.{i,cpp}: - Relocated the longdouble comparison operators' - definitions, and moved a misplaced '}', which - were causing build errors. - -Tue Jan 26 10:55:02 1999 Carlos O'Ryan - - * ace/Active_Map_Manager.h: - The _T.h file has to be included *after* the inclusion of the .i - file, otherwise the template may not see the inline functions; - the problem only showed up on IRIX. - -Mon Jan 25 22:11:36 1999 Jeff Parsons - - * ACE_wrappers/tests/CDR_Test.dsp: - * ACE_wrappers/tests/tests.dsw: - * ACE_wrappers/tests/versions_tests/CDR_Test.dsp: - * ACE_wrappers/tests/versions_tests/version_tests.dsw: - * ACE_wrappers/tests/run_tests.sh: - * ACE_wrappers/tests/run_tests.psosim: - * ACE_wrappers/tests/run_tests.bat: - * ACE_wrappers/tests/run_tests.vxworks: - Fixed the project files (they had incorrrect project - settings, I think) and updated the workspace files. - Also, on a tip from Nanbor, added CDR_Test to the - various run_tests files. - -Mon Jan 25 20:22:01 1999 Jeff Parsons - - * ace/CDR.{h,i,cpp}: - * ace/Basic_Types.h: - * ACE_Wrappers/tests/CDR_Test.cpp: - Better design of ACE CDR, compiles and runs on NT, g++ - and CC. - -Mon Jan 25 09:35:42 1999 Steve Huston - - * ace/ACE.cpp (handle_timed_complete): If connect times out, set - errno to ETIMEDOUT, not ETIME. Matches what will happen if a - simple blocking connect times out. - - * ace/OS.i (ACE_OS::accept, ACE_OS::recv): (only non-Win32), if - call fails and errno is EAGAIN, change it to EWOULDBLOCK. - - * tests/MT_SOCK_Test.cpp: Remove EAGAIN hacks; above changes fix - this for all programs. - -Sun Jan 24 22:04:42 1999 David L. Levine - - * docs/ACE-guidelines.html: added operator==/!= guideline. - -Sun Jan 24 20:25:44 1999 Irfan Pyarali - - * ace: When a class provides operator==, it must also provide - operator!=. Also, both these operators should be const. - - Fixed the above violations in: - - ACE_TSS_Ref - ACE_Thread_ID - ACE_Registry::Binding - ACE_Registry::Name_Component - ACE_Active_Map_Manager_Key - - * ace/Map_Manager: Renamed methods that may become identical if - INT_ID is the same as size_t. Thanks to Ossama for helping with - this. - -Sun Jan 24 19:46:55 1999 Jeff Parsons - - * ace/CDR.{h,i,cpp}: - * ace/Basic_Types.h: - Made some fixes to make DEC cxx happy, but I'm going to - undo many of the typedefs and change the design. These - changes will hopefully lead to a clean build with cxx, - but the CDR classes are not yet in finished form. - -Sun Jan 24 19:26:34 1999 Irfan Pyarali - - * ace/SString.cpp (set): Fixed usage case of when the incoming - string is not zero but the length specified is zero. - - * tests/SString_Test.cpp (main): Added zero sized strings and - single character strings to the test. - -Sun Jan 24 19:09:45 1999 Nanbor Wang - - * ace/config-win32-common.h - (ACE_HAS_WORKING_EXPLICIT_TEMPLATE_DESTRUCTOR): VC apparently - does it right. - -Sun Jan 24 17:22:02 1999 Ossama Othman - - * ace/SString.cpp (substring): the variable "length" was misspelled - on one of the lines in the method. - -Sun Jan 24 16:17:58 1999 Nanbor Wang - - * ace/README: - * ace/OS.h: - * ace/config-g++-common.h: - * ace/config-osf1-4.0.h: - * ace/config-psos-diab.h: - * ace/config-psos-tm.h: Replace ACE_HAS_BROKEN_EXPLICIT_DESTRUCTOR - with ACE_HAS_WORKING_EXPLITCIT_TEMPLATE_DESTRUCTOR to reflect - the true problem. Thanks to Ossama for suggesting the name. - -Sun Jan 24 16:20:17 1999 James CE Johnson - - * docs/ACE-FMM: - Added an entry about the DONT_CALL flag to remove_handler(). - - * docs/tutorials/00[45789]: - * docs/tutorials/01[012]: - Many changes from Yamuna, Pradeep, Kirthika and Ossama. In all, - there were 62 files changed. Mostly the .html's due to - recombination and colorization. - -Sun Jan 24 14:23:07 1999 Douglas C. Schmidt - - * ace/SString.cpp: The substring() method did not check for zero - length. Thanks to Mike Goldman for this fix. - -Sun Jan 24 02:08:57 1999 Carlos O'Ryan - - * websvcs/lib/URL_Addr.cpp: - * websvcs/lib/URL_Addr.h: - * websvcs/lib/URL_Addr.i: - * websvcs/tests/Test_URL_Addr.cpp: - Added support for mailto: URLs - -Sat Jan 23 23:53:29 1999 Carlos O'Ryan - - * websvcs/Makefile: - * websvcs/lib/Makefile: - * websvcs/lib/URL_Addr.h: - * websvcs/lib/URL_Addr.i: - * websvcs/lib/URL_Addr.cpp: - * websvcs/tests/Makefile: - * websvcs/tests/Test_URL_Addr.cpp: - Added a small library to keep basic Web related wrappers. The - first set is a small collection of URL address classes, - including HTTP and FTP representations. - -Sat Jan 23 23:26:17 1999 Nanbor Wang - - * ace/High_Res_Timer.{h,cpp} (elapsed_time_incr): Added a new - function to access the incremental timer in nanosecond. - -Sat Jan 23 23:08:27 1999 Jeff Parsons - - * ace/CDR.{h,i,cpp}: - Caught numerous inline ordering errors and mistakes in - long double functions (not defined on NT) with g++. - -Sat Jan 23 21:13:47 1999 Jeff Parsons - - * tests/tests.dsw: - * tests/CDR_Test.dsp: - * tests/Makefile: - * tests/CDR_Test.cpp: - New test in the suite for the new ACE CDR classes (see below). - - * TAO/TAOACE.dsw: - * TAO/TAOACE_static.dsw: - * ace/Makefile: - * ace/CDR.{h,i,cpp}: - * ace/OS.h: - * ace/Basic_Types.h: - CDR stuff modified from TAO library. Typedefs, default - constants and macros added to OS.h and Basic_Types.h. - There is now complete CDR functionality in ACE, except - for the interpreter, and thus also no handling of Any - or TypeCode types. - -Sat Jan 23 17:50:22 1999 Steve Huston - - * tests/MT_SOCK_Test.cpp: 1. Check for EAGAIN as well as EWOULDBLOCK - after an accept fail (this change will probably be removed at some - point when we figure out how to handle EAGAIN/EWOULDBLOCK). - 2. Close the ACE_SOCK_Acceptor in the server before going into - the "reap children" loop so any half-connected clients will get - closed. - -Sat Jan 23 17:25:48 1999 Kirthika Parameswaran - - * ace/Hash_Map_Manager_T.{h,cpp}: Reverted changes made since the - ACE_Hash_Map_Manager_Ex was getting used in shared memory and - hence could not have "virtual" methods. - -Sat Jan 23 04:53:12 1999 Irfan Pyarali - - * ace/Active_Map_Manager: Added a new associative container (map - abstraction) that associates system generated keys with user - specified values. Since the key is system generated, searches - are very fast and take a constant amount of time. This map uses - a key that keeps information of the index and the generation - count of the slot it represents. Since the index information is - part of the key, lookups are super fast and predictable. - - This performance of this map is truely awesome: - - - inserts O(1) worse case - - lookups O(1) worse case - - deletes O(1) worse case - - * ace/Map_Manager: Completely reworked the internals of the - Map_Manager. A number of problems were addressed: - - (a) Finding an empty slot took O(n). New code takes O(1). - - (b) Resizing was lame as it increased by ACE_DEFAULT_MAP_SIZE - everytime. The new scheme is cool since it grows - exponentially up to 64K and after that grow in chunks of - 32K. - - (c) Old scheme used a simple but inefficient flag. - The new scheme uses two doubly linked list to track used and - free slots. Note that this scheme still uses an array to - manage the search structure but manages the two linked list - on top of the array. Thanks to Carlos for this cool idea. - - (d) current_size() was broken. This is fixed in the new code. - - (e) Inlined a bunch of small functions. - - * tests/SString_Test.cpp: Added empty string test. - - * ace/Containers_T.h (operator=): ACE_Array_Base must be fully - qualified: ACE_Array_Base. Thanks to Susan Liebeskind - for pointing this out. - - * tests/Map_Manager_Test.cpp (test_map_manager): Added - Active_Map_Manager to the test. - -Fri Jan 22 21:27:14 1999 Kirthika Parameswaran - - * ace/Hash_Map_Manager_T.h - (class ACE_Hash_Map_Entry): Modified the destructor to be - "virtual" so that it gets invoked on the destruction of its - derived class objects. - (class ACE_Hash_Map_Manager_Ex): Modified the destructor to be - "virtual" so that it gets invoked on the destruction of its - derived class objects. - Modified shared_find () to be "virtual" so that it can be - defined in its derived classes. - Declared a virtual method for creating new entries for the map - called create_entry (). - - * ace/Hash_Map_Manager_T.cpp - (create_entry): Added this virtual method which creates a new - map entry. This is necessary to allow the map to contain various - types of map entries. - (bind_i): - (trybind_i): - (unbind_i): - Used create_entry () to obtain a new entry object. - - * ace/Hash_Purgable_Map_Manager_T.{h,i,cpp}: - The ACE_Hash_Purgable_Map_Manager_Ex derives from - ACE_Hash_Map_Manager_Ex and provides the feature of purging - K entries from the map. The default purging algorithm is Least - Recently Used, which has been implemented using a virtual timer - that increments whenever an entry is looked up or used. Each - entry has a purge_tag which is the timestamp updated by the - timer value whenever it is referenced. The entry is an object of - ACE_Hash_Purgable_Map_Entry class which is derived from - ACE_Hash_Map_Entry. - (purge): This is the method which flushes K entries from the - map. Locks are held. - (purge_i): This method also flushes K entries but w.o. locks - being held. - (create_entry): Creates an ACE_Hash_Purgable_Map_Entry object. - (shared_find): This method is used to lookup and verify whether - an entry is present in the map. Also, the purge_tag of the entry - is updated with the current timer value. - - * tests/Purgable_Map_Manager.cpp: Added this test which - illustrates the use of the Hash_Purgable_Map_Manager to maintain - a cache map. Also displays the change in the map size on - purging. - -Fri Jan 22 16:10:35 1999 Steve Huston - - * ace/Select_Reactor_Base.cpp (ACE_Select_Reactor_Notify::handle_input) - EAGAIN is also a legit errno value (not only EWOULDBLOCK) for end - of data on pipe. Makes count of dispatches returned from - ACE_Select_Reactor's handle_events correct in the presence of - notifications. - - * ace/OS.i (ACE_OS::sema_init): Always init s->name_ to 0, else it - might be non-zero (and junk) when deleted. - - * ace/config-hpux11.h: Added an overrideable ACE_TIMER_SKEW of 10 msec. - -Fri Jan 22 15:07:08 1999 Douglas C. Schmidt - - * ace/Containers_T.cpp: Yikes, don't delete the fixed stack since - it wasn't allocated dynamically! Thanks to Mike Goldman - for this fix! - -Fri Jan 22 13:08:00 1999 Chris Gill - - * ace/ACE.{cpp, h}: added static methods ACE::gcd, which computes the - greatest common divisor of two u_longs using Euclid's algorithm, and - ACE::minimum_frame size, which computes the minimum enclosing frame - size for two u_longs. - -Thu Jan 21 20:45:09 1999 James CE Johnson - - * docs/tutorials/006/client_acceptor.h - * docs/tutorials/006/client_handler.cpp - * docs/tutorials/006/client_handler.h - * docs/tutorials/006/page01.html - * docs/tutorials/006/page02.html - * docs/tutorials/006/page03.html - * docs/tutorials/006/page04.html - * docs/tutorials/006/page05.html - Integrated changes from Vishal and Kirthika - - * docs/tutorials/008/combine.shar - * docs/tutorials/008/page02.html - * docs/tutorials/008/page03.html - * docs/tutorials/008/page04.html - * docs/tutorials/009/combine.shar - * docs/tutorials/009/directed_client.cpp - * docs/tutorials/009/page01.html - * docs/tutorials/009/page02.html - * docs/tutorials/009/page03.html - * docs/tutorials/009/page04.html - * docs/tutorials/009/page05.html - * docs/tutorials/009/server.cpp - Changes from Kirthika plus colorization. - - -Thu Jan 21 16:01:50 1999 James CE Johnson - - * docs/tutorials/007/Makefile: - * docs/tutorials/007/combine.shar: - * docs/tutorials/007/page01.html: - * docs/tutorials/007/page02.html: - * docs/tutorials/007/page03.html: - * docs/tutorials/007/page04.html: - * docs/tutorials/007/page05.html: - * docs/tutorials/007/page06.html: - * docs/tutorials/007/page07.html: - * docs/tutorials/007/page08.html: - * docs/tutorials/007/page09.html: - * docs/tutorials/007/thread_pool.cpp: - * docs/tutorials/008/Makefile: - * docs/tutorials/008/combine.shar: - * docs/tutorials/008/directed_client.cpp: - * docs/tutorials/008/page01.html: - * docs/tutorials/008/page02.html: - * docs/tutorials/008/page03.html: - * docs/tutorials/008/page04.html: - * docs/tutorials/008/page05.html: - * docs/tutorials/008/server.cpp: - * docs/tutorials/009/Makefile: - Included Kirthika's abstract. - Colorized both tutorials & convereted to new format. - -Thu Jan 21 14:25:58 1999 David L. Levine - - * ace/SString.h: changed !ACE_HAS_WINCE wrap of ostream - operators to !ACE_LACKS_IOSTREAM_TOTALLY. - - * ace/OS.i (getuid): added static cast of -1 to uid_t on - Chorus, to avoid compiler warning about change in sign. - - * ace/OS.h: moved (protected) MAXHOSTNAMELEN #define from - pSOS and NT-only code to where its visible on all platforms. - When we removed the #include of rpc.h, we lost the - #define of MAXHOSTNAMELEN on Chorus. - -Thu Jan 21 15:19:26 1999 James CE Johnson - - * docs/tutorials/001/Makefile: - * docs/tutorials/001/page01.html: - * docs/tutorials/001/page02.html: - * docs/tutorials/001/page03.html: - * docs/tutorials/001/page04.html: - * docs/tutorials/001/page05.html: - * docs/tutorials/005/client_handler.cpp: - * docs/tutorials/005/page02.html: - * docs/tutorials/005/page03.html: - * docs/tutorials/005/page04.html: - * docs/tutorials/005/page05.html: - * docs/tutorials/005/page06.html: - * docs/tutorials/006/client_handler.cpp: - * docs/tutorials/006/page01.html: - * docs/tutorials/006/page02.html: - * docs/tutorials/006/page03.html: - * docs/tutorials/006/page04.html: - * docs/tutorials/006/page05.html: - Incorporated new comments from Vishal, Yamuna and Pradeep. - -Thu Jan 21 13:05:31 1999 Steve Huston - - * docs/tutorials/Makefile: Removed include .depend to allow the - whole set of tutorials to be built from the top. Thanks to James - Johnson for guiding this fix. - -Wed Jan 20 19:47:16 1999 Nanbor Wang - - * ace/OS.{h,i,cpp} (fopen): Reimplement fopen using Win32 APIs so - ACE_OS::unlink behaves the same as it does on UNIX platforms. - Both ACE_OS::open and ACE_OS::fopen have been corrected. - There's also a ACE::open_temp_file which should be the prefered - method to open temp files when ACE_HANDLE is used. That's - because Win32 tries to map the file opened by - ACE::open_temp_file to memory. - - * ace/Parse_Node.cpp (symbol): need to be initialized. - Thanks to David for reporting the bug. - -Wed Jan 20 17:37:21 1999 Steve Huston - - * ace/Log_Msg.h: Added "do {} while (0)" as defs for ACE_HEX_DUMP, - ACE_ERROR, ACE_DEBUG when ACE_NLOGGING is defined. Having null defs - for these caused MSVC some problems. Thanks to Doug Schmidt for - giving (and explaining) the correct definitions. - -Wed Jan 20 13:38:03 1999 David L. Levine - - * ace/OS.i (readdir_r): added ACE_UNUSED_ARG (entry) - without ACE_HAS_REENTRANT_FUNCTIONS. - - * docs/ACE-guidelines.html: added guideline for calling - ACE_OS::unlink () immediately after opening a temporary file. - - * *.h: replaced () around #pragma implementation argument. Thanks - to Susan Liebeskind and - Steve Huston for reporting and confirming that it's necessary - on AIX. - -Wed Jan 20 01:48:21 1999 Nanbor Wang - - * ace/Parse_Node.cpp (symbol): Remembered to pass down the - "gobbler" in a Static_Function_Node. Thanks to Eric C. Newton - for reporting and providing the fix. - -Tue Jan 19 17:52:49 1999 Douglas C. Schmidt - - * ace/SString.h: Clarified the role of the argument for - the method. Thanks to Sudhanshu Garg - for suggesting this. - -Tue Jan 19 16:15:26 1999 David L. Levine - - * OS.i,README,config-cygwin32-common.h,config-linux-common.h, - config-psos-diab.h,config-psos-tm.h,config-psosim-g++.h, - config-sco-5.0.0-mit-pthread.h,config-sco-5.0.0.h, - config-tandem.h: removed removed include of rpc/rpc.h, and - ACE_LACKS_RPC_H. Thanks to Susan Liebeskind - for initially suggesting this, - and to Russ Noseworthy for reporting another problem (on - SunOS 5.6 w/o threads) with it. ACE doesn't need it. - - * bin/g++dep: removed /project/doc/pkg/gnu/bin from PATH so that - I can run make depend on Linux. - -Tue Jan 19 12:14:09 1999 Douglas C. Schmidt - - * Makefile (CONTROLLED_FILES): Added ChangeLog-98b to the - CONTROLLED_FILES macro. Thanks to Susan Liebeskind - for suggesting this. - -Tue Jan 19 10:24:00 1999 Chris Gill - - * apps/JAWS/PROTOTYPE/HTTPU/HTTPU.{dsp, dsw}: converted to MSVC++ 6.0 - (and backward compatible) format. - - * apps/JAWS/PROTOTYPE/HTTPU/http_headers.{cpp, h}: fixed ACE_RB_Tree - templates, template instantiations. Thanks to Sridhar Sabella - (ssabbella@cemax.com) for pointing this out. - -Tue Jan 19 00:42:44 1999 Irfan Pyarali - - * examples/Log_Msg/test_callback.cpp (log): Removed the use of - cerr and used ACE_OS::printf() instead. - - * ace/Log_Record.cpp (print): Fixed comparison between signed and - unsigned. Thanks to David Levine for pointing this out. - -Mon Jan 18 23:55:03 1999 Darrell Brunsch - - * ACE-INSTALL.html: Added more info on Alpha configuration - problems and fixes. - -Mon Jan 18 23:07:38 1999 Nanbor Wang - - * ace/OS.cpp (open): Files opened with CreateFileA (on Win32 of - course,) are now opened with FILE_SHARE_DELETE flag set. This - allows ACE_OS::unlink to work as it should. However, I haven't - figured out how to make unlink work with file opened with fopen - yet. Apparently, fopen does not open file with - FILE_SHARE_DELETE. - -Mon Jan 18 22:54:18 1999 Darrell Brunsch - - * ace/ace_dll.dsp: - * ace/ace_lib.dsp: - Updated NT Alpha configurations. - - * apps/gperf/src/gperf.dsp: - * apps/gperf/src/gperf_lib.dsp: - Added NT Alpha configurations. - -Mon Jan 18 22:14:00 1999 James CE Johnson - - * docs/tutorials/011/message_queue.cpp: - * docs/tutorials/011/page02.html: - ACE_Message_Block::copy() will advance the wr_ptr() for us. - Previously, I was doing that myself in run_test(). The test only - worked because I never wrote data to the block after that. If I - had, things would have broken horribly. - -Mon Jan 18 20:41:48 1999 Douglas C. Schmidt - - * ace/Message_Block.h: Clarified that the wr_ptr() is incremented - by n as a result of the copy operation. Thanks to Zoran - Ivanovic for suggesting this. - - * ace/INET_Addr.h (ACE_INET_Addr): Changed the default for - ipaddr_format to 1 (which is what it had been originally) rather - than 0 since the original way is faster since it doesn't use - DNS. Thanks to Zoran Ivanovic for finding - this. - -Mon Jan 18 20:31:47 1999 James CE Johnson - - * docs/tutorials/006/client_handler.cpp: - Typo... - - * docs/tutorials/006/*.html: - * docs/tutorials/006/combine.shar: - Colorized, added Kirthika's abstract. - -Mon Jan 18 16:19:56 1999 Nanbor Wang - - * ace/OS.cpp (open): If a file is open with _O_TEMPORARY flag set - on Win32, we also set the FILE_ATTRIBUTE_TEMPORARY so OS will - try to cache it in memory to speed up access. - - * ace/ACE.cpp (open_temp_file): On Win32, temporary file should be - opened with _O_TEMPORARY flag set, not FILE_DELETE_ON_CLOSE. - - * include/makeinclude/wrapper_macros.GNU: My previous fix of - avoiding multiple definition of ACE_NDEBUG was not correct. Now - the macro check where should the definition go to. Thanks to - David for showing me the right way to do this. - -Mon Jan 18 11:23:06 1999 Carlos O'Ryan - - * include/makeinclude/platform_irix6.x-sgic++.GNU: - Added the -multigot flag when building shared libraries, - otherwise TAO/orbsvcs is too big. - -Mon Jan 18 09:54:54 1999 David L. Levine - - * ace/config-sunos5.5.h: moved ACE_HAS_PRIOCNTL #define so - that it's defined even without threads. Thanks to - Russ Noseworthy for reporting this. - - * ace/OS.cpp (lwp_getparams): removed ACE_MT_SAFE check - that Doug added Saturday. It's not necessary with the - above fix to config-sunos5.5.h. - - * examples/Log_Msg/test_ostream.cpp: don't try to create the - ofstream if ACE_LACKS_IOSTREAM_TOTALLY. Also, removed - declarations of unused argc/argv arguments because some - g++ versions complain about them. - -Mon Jan 18 08:17:49 1999 Douglas C. Schmidt - - * ace/SOCK_IO.cpp, - ace/SOCK_Dgram.cpp: Added - - ACE_UNUSED_ARG (timeout); - - to the #else part of the recv (iovec *) methods. Thanks to Mike - Goldman for reporting this. - -Mon Jan 18 01:13:57 1999 Nanbor Wang - - * ace/CORBA_macros.h: ACE_TRY_NEW_ENV also needs to define a new - CORBA::Environment even with native exceptions. Mark exception - caught by ACE_CATCH as unused arg to avoid compilation warnings. - -Mon Jan 18 00:12:13 1999 Douglas C. Schmidt - - * ACE version 4.6.16 released. - -Sun Jan 17 16:40:22 1999 Douglas C. Schmidt - - * tests/Reactor_Exceptions_Test.cpp (main): Changed the LM_INFO - message to indicate that C++ exception support isn't ENABLED on - a platform, rather than saying that it's not supported at all... - -Sun Jan 17 15:16:35 1999 Nanbor Wang - - * ace/SString.cpp (operator<<): The operator<< used to print out - ACE_WString caused an infinite loop on platform without UNICODE - defined because we didn't convert the wide string on these - platform. However, since an ACE_WString always contains a wide - string, the conversion from wide string to char string should - always be done here. Thanks to Scott Snyder - for noticing this bug. - - (operator<<): Changed the ACE_SString and ACE_CString version to - check against the case when the internal contains 0. - The ACE_CString version was printing out the string one char a - time. Can't see any reason why this is done like this. Changed - to print out the underlying directly. - -Sun Jan 17 14:42:39 1999 James CE Johnson - - * docs/tutorials/001/*: - * docs/tutorials/002/*: - * docs/tutorials/003/*: - * docs/tutorials/004/*: - * docs/tutorials/005/*: - Converted to the new (colorized) format used by T13 and beyond. - I will convert the remaining tutorials (6-12) as each is reviewed. - - * docs/tutorials/005/fix.Makefile: - * docs/tutorials/006/fix.Makefile: - * docs/tutorials/007/fix.Makefile: Replaced by ../fix.Makefile. - - * docs/tutorials/010/Makefile: - * docs/tutorials/011/Makefile: - * docs/tutorials/012/Makefile: - * docs/tutorials/013/Makefile: - * docs/tutorials/014/Makefile: - * docs/tutorials/016/Makefile: - * docs/tutorials/017/Makefile: - These all referenced ../007/fix.Makefile. They now reference - ../fix.Makefile instead. - -Sun Jan 17 13:50:16 1999 James CE Johnson - - * docs/tutorials/002/handler.h: - * docs/tutorials/002/handler.h: - * docs/tutorials/002/page03.html: - * docs/tutorials/003/client.cpp: - * docs/tutorials/003/page01.html: - * docs/tutorials/004/page01.html: - * docs/tutorials/005/client_handler.h: - * docs/tutorials/005/page02.html: - * docs/tutorials/005/page04.html: - * docs/tutorials/005/page05.html: - * docs/tutorials/005/server.cpp: - - More improvements from Doug's class (and Ossama). Each "page2" - includes an abstract by Kirthika. - - Reviewers to date: - Yamuna Krishnamurthy - Kirthika Parameswaran - Balachandran Natarajan - Pradeep Gore - Ossama Othman - -Sat Jan 16 19:08:12 1999 Douglas C. Schmidt - - * ace/High_Res_Timer.cpp: Added #ifdef so high-res timers work - correctly on KCC. Thanks to Scott Snyder - for contributing this. - - * tests/test_config.h: Updated randomize() so that it uses a - "fixed" seed, so that it will produce "reusable" random numbers. - - * include/makeinclude/platform_linux_kcc.GNU (LD): Added the -lm - flag. Thanks to Scott Snyder for - contributing this. - - * tests/run_tests.sh: Added an - LD_LIBRARY_PATH=../netsvcs/lib:$LD_LIBRARY_PATH so that we can - use a relative name for the svc.conf files used in the - Time_Service_Test and Tokens_Test. - - * ace/config-irix6.x-common.h: Added support for long double for - KCC. Thanks to Scott Snyder for - contributing this. - - * ace/config-irix6.x-kcc.h: Added KCC support. Thanks to Scott - Snyder for contributing this. - - * ace/config-osf1-4.0.h: Added KCC support. Thanks to Scott - Snyder for contributing this. - - * ace/IOStream.h: Fixed up the PUT_CODE and GET_CODE macros so - that they work with KCC. Thanks to Scott Snyder - for contributing this. - - * ace/Env_Value_T.h (ACE_Convert): Added a new ACE_Convert - constructor for u_int so that TAO compiles correctly with KCC. - Thanks to Scott Snyder for contributing - this. - - * include/makeinclude/platform_osf1_4.0_kcc.GNU: Added a new - platform config file for KCC. Thanks to Scott Snyder - for contributing this. - -Sat Jan 16 18:13:29 1999 Nanbor Wang - - * include/makeinclude/wrapper_macros.GNU: Commented out adding - ACE_NDEBUG to CCFLAGS to avoid defining it twice. Most (if not - all) platforms include CFLAGS into CCFLAGS. So, if "make - debug=0" no longer work on your platform, then, you may need to - add "CCFLAGS += $(CFLAGS)" into your platform_xxx.GNU. - -Sat Jan 16 13:40:40 1999 Douglas C. Schmidt - - * ace/Proactor.cpp (schedule_timer): Had to add an - ACE_SYNCH_RECURSIVE_THREAD_MUTEX in place of - ACE_Recursive_Thread_Mutex to avoid problems when threads=0. - - * ace/OS.cpp (lwp_getparams): For some reason we had to - add - - # if defined (ACE_HAS_STHREADS) || (defined (sun) && (ACE_MT_SAFE != 0)) - - instead of - - # if defined (ACE_HAS_STHREADS) || defined (sun) - - to avoid problems when threads=0. - - * ace/Asynch_IO.cpp: Replaced some ACE_Thread_Mutex decls with - ACE_SYNCH_MUTEX to avoid problems with threads=0. - - * ace/config-sunos5.6.h: If defined(_POSIX_C_SOURCE) && - _POSIX_C_SOURCE >= 199506L) || defined (__EXTENSIONS__) then - #define ACE_HAS_SIGWAIT to avoid compilation errors. Thanks to - Russ Noseworthy for reporting this. - - * ace/OS.i: Fixed the ACE_OS::readdir_r() so that it doesn't fail - if threads are disabled via "make threads=0". Thanks to Russ - Noseworthy for reporting this. - - * ace/FILE_Connector.h (ACE_FILE_Connector): Added the O_CREAT - flag to the list of flags passed to connect(). This ensures - that the file is created if it doesn't already exist. Thanks to - Pradeep Gore for reporting this. - -Fri Jan 15 21:28:04 1999 Irfan Pyarali - - * ace/Log_Msg (ACE_Log_Msg_Callback): Added an interface class - used for getting logging callbacks. Users who are interested in - getting the logging messages directly, can subclass this - interface and override the log() method. They must then register - their subclass with the Log_Msg class and make sure that they - turn on the ACE_Log_Msg::MSG_CALLBACK flag. - - Your log() routine is called with an instance of - ACE_Log_Record. From this class, you can get the log - message, the verbose log message, message type, message - priority, and so on. - - Remember that there is one Log_Msg object per thread. - Therefore, you may need to register your callback object with - many Log_Msg objects (and have the correct synchronization in - the log() method) or have a separate callback object per - Log_Msg object. - - Thanks to Chris Lahey for suggesting this - and send patches. - - * examples/Log_Msg/test_callback.cpp: Added new example for - Log_Msg. This program tests the Log_Msg abstraction wrt writing - to user defined callback objects. - -Fri Jan 15 21:10:25 1999 Nanbor Wang - - * ace/CORBA_macros.h: Made sure ACE_CORBA_HAS_EXCEPTIONS always - gets set properly. Added ACE_ADPOT_CORBA_ENV to reuse a - existing CORBA::Environment variable. - -Fri Jan 15 17:05:12 1999 Irfan Pyarali - - * ace/Log_Record: Factored out the redundant formatting code. The - new scheme also allows the end user to get to verbose formatted - string. Thanks to Nanbor for helping out with this. - -Fri Jan 15 17:15:18 EST 1999 James CE Johnson - - * docs/tutorials/templates.html - docs/tutorials/001/acceptor.h - docs/tutorials/001/logger.h - docs/tutorials/001/page01.html - docs/tutorials/001/page02.html - docs/tutorials/001/page03.html - docs/tutorials/001/page04.html - docs/tutorials/001/page05.html - docs/tutorials/001/server.cpp - docs/tutorials/003/page01.html - - Many changes from Ossama plus a new abstract (for T3) from - Kirthika. - -Fri Jan 15 14:40:26 1999 Douglas C. Schmidt - - * ace/SOCK_IO, - ace/SOCK_Dgram: Modified the recv(iovec *) and recvv(iovec *) - methods so that they use select() to avoid spinning if no data - is available. Thanks to Mike Goldman for this - fix. - -Fri Jan 15 10:47:26 1999 Douglas C. Schmidt - - * ace/Service_Repository.cpp: If a service being removed from the - Service_Repository used the Service_Repository while being - removed it could access objects that had already been deleted. - Fix this by decrementing the current_size_ member in - "real-time". Thanks to Eric Newton for reporting this. - -Fri Jan 15 08:08:31 1999 Douglas C. Schmidt - - * ACE version 4.6.15 released. - -Fri Jan 15 07:20:46 1999 Chris Gill - - * ace/OS.i: Fixed variable names in isatty () on NT - -Fri Jan 15 03:45:46 1999 Nanbor Wang - - * docs/exceptions.html: Rewrote the exception handling guildlines - based on ACE's try macros. - -Fri Jan 15 01:32:55 1999 Douglas C. Schmidt - - * ACE version 4.6.14 released. - -Fri Jan 15 00:03:32 1999 Irfan Pyarali - - * examples/Log_Msg/test_ostream.cpp: Added new example for - Log_Msg. This program tests the Log_Msg abstraction wrt writing - to stderr and to a file. - -Thu Jan 14 21:50:22 1999 Nanbor Wang - - * ace/CORBA_macros.h: Added a new set of try macros which help - application developers write portable code that handles - CORBA::Exception portably. The macros will work with any ORB. - - The total number of macros has reduces significantly and they - should be much easier to use because the rules all follow the - same style. - - The new try macros should be prefered over the original try - macro in $TAO_ROOT/TAO/try_macros.h because those macros will - soon be *DEPRICATED* once we finished convert TAO to use the new - macros. - - Please see ACE_wrappers/docs/exceptions.html for guidelines and - rules of using ACE's try macros. - -Thu Jan 14 20:41:33 1999 Douglas C. Schmidt - - * ace/OS: Moved some code around to consolidate the getuid() and - isatty() functions. - - * ace/OS: Added support for the setuid() call. Thanks to Susan - Liebeskind for suggesting - this. - -Thu Jan 14 16:18:37 EST 1999 James CE Johnson - - * docs/tutorials/001/page02.html: - docs/tutorials/001/page03.html: - - Included Kirthika Parameswaran's - abstract and analogy. Thanks Kirthika! - - * docs/tutorials/001/Source.tgz: - docs/tutorials/001/acceptor.h: - docs/tutorials/001/logger.h: - docs/tutorials/001/server.cpp: - docs/tutorials/001/page[345].html: - * docs/tutorials/002/page0[23].html: - docs/tutorials/002/handler.h: - - Added improvements from Kirthika, Pradeep and Yamuna - -Thu Jan 14 11:46:25 1999 Douglas C. Schmidt - - * ace/Synch_T.h: Pointed out that we can only parameterize - ACE_Condition<> with ACE_Thread_Mutex and ACE_...Null_Mutex. - Thanks to Knut-Havard Aksnes for reporting - this. - -Thu Jan 14 02:33:37 1999 Douglas C. Schmidt - - * ACE version 4.6.13 released. - -Thu Jan 14 00:07:34 1999 Irfan Pyarali - - * docs/tutorials/014/stream.cpp: Added #include "ace/streams.h". - -Wed Jan 13 23:18:03 1999 Nanbor Wang - - * ace/OS.h: - * config-g++-common.h: - * config-osf1-4.0.h: - * config-psos-diab.h: - * config-psos-tm.h: Revert my previous change. Removed the - ChangeLog entry about the change. - -Wed Jan 13 22:30:49 1999 David L. Levine - - * include/makeinclude/platform_chorus_ghs.GNU: removed - explicit link with libedgnoe.a, because GreenHills adds - that implicitly. - - * ace/OS.h: added quick hack to ACE_HAS_BROKEN_EXPLICIT_DESTRUCTOR - logic to allow compilation with g++. - -Wed Jan 13 18:48:30 EST 1999 James CE Johnson - - * docs/tutorials/004/client.cpp: - docs/tutorials/010/message_queue.cp: - docs/tutorials/011/message_queue.cpp: - docs/tutorials/012/message_queue.cpp: - docs/tutorials/013/message_queue.cpp: - docs/tutorials/014/EndTask.h: - docs/tutorials/019/client.cpp: - docs/tutorials/019/client2.cpp: - docs/tutorials/019/server.cpp: - docs/tutorials/019/server2.cpp: - docs/tutorials/019/shmem.cpp: - docs/tutorials/020/client.cpp: - docs/tutorials/020/server.cpp: - docs/tutorials/021/client.cpp: - docs/tutorials/021/mpool.cpp: - docs/tutorials/021/mpool.h: - docs/tutorials/021/server.cpp: - Fixed many NT issues found by Irfan. Most are related to the - fact that NT doesn't have SysV shared memory. - -Wed Jan 13 04:45:59 1999 James C Hu - - * ace/Cache_Object.{h,cpp}: - * ace/Cache_Manager.{h,cpp}: - * ace/Cache_Manager_T.{h,cpp}: - * ace/Cache_Hash_T.{h,cpp}: - * ace/Cache_Heap_T.{h,cpp}: - * ace/Hash_Bucket_T.{h,cpp}: - Supporting infrastructure for the new Filecache. These classes - form the basis of a generic in memory cache engine. - -Wed Jan 13 02:17:57 1999 Irfan Pyarali - - * ace/OS.cpp (writev): This function should use ACE::write_n - instead of ACE::send_n. Similarly, readv() should use - ACE::read_n instead of ACE::recv_n. - - * ace/ACE.cpp (send): This function should use ACE_OS::sendv - instead of ACE_OS::writev. Similarly, recv() should use - ACE_OS::recvv instead of ACE_OS::readv. - - * docs/tutorials: Fixed all the NT project files. - -Tue Jan 12 22:41:05 1999 Nanbor Wang - - * ace/config-freebsd.h: Uncommented ACE_HAS_SIGWAIT. This is - required for FreeBSD 2.2.8. Thanks to John Aughey - for reporting this. - - * ace/SOCK_IO.{h,i}: - * ace/SOCK_Stream.{h,i} (sendv_n/recvv_n): Moved these functions - from SOCK_IO to SOCK_Stream where it makes more sense to have - the semantic of sending/receiving bytes. - -Tue Jan 12 19:52:26 1999 Nanbor Wang - - * ACE-INSTALL.html: Added more info on dynamically linking - run-time libraries. - - * ace/SOCK_IO.{h,i,cpp} (sendv,recvv,sendv_n,recvv_n): Renamed - vector send_n/recv_n. There were name clashing since these - methods have similar signatures to some send_n/recv_n in - ACE_SOCK_Stream, they got hidden by the derived methods. - Renaming them solve the problem. - -Tue Jan 12 10:59:58 1999 David L. Levine - - * include/makeinclude/platform_chorus_ghs.GNU: fixed location of - libedgenoe.a, so that a symlink in $(GHS_DIR) is no longer necessary. - Thanks to Steve Kay for reporting this. - - * ace/config-mklinux.h: removed ACE_HAS_SOCKLEN_T, added __USE_XOPEN. - Thanks to Andreas Tobler for these updates. - -Tue Jan 12 08:44:11 EST 1999 Aniruddha Gokhale - - * ace/Acceptor.cpp (handle_close): - - Since the reactor_ data member is made private, we need to use - its accessor method to retrieve it. - -Tue Jan 12 02:12:38 1999 Nanbor Wang - - * ace/OS.h (ACE_DES_NO_FREE,ACE_DES_FREE): These two macros - shouldn't be treated differently no matter - ACE_HAS_BROKEN_EXPLICIT_DESTRUCTOR is defined or not. - Otherwise, virtual destructor won't work in one of the original - definitions. - - There shouldn't be different different definitions for calling - template destructor explicitly either. However, we need to find - that out. The meaning of ACE_HAS_BROKEN_EXPLICIT_DESTRUCTOR - seems to be reversed. That needs to be fixed also. - -Tue Jan 12 00:18:15 1999 Douglas C. Schmidt - - * ace/Event_Handler.h: Moved the priority_ and reactor_ data - members into the private section of the class since these can - always be accessed via their accessor methods. Thanks to Mike - Goldman for reporting this. - -Mon Jan 11 15:30:26 1999 Nanbor Wang - - * ace/Process.{h,i} (get_process_attributes,get_thread_attributes): - Removed the constness from the return value to avoid Intel C++ - warnings. Thanks to Karel Zuiderveld - for reporting this. - - * bin/ADDIDL.DSM: A VB script to add new IDL files into DevStudio - projects. Thanks to Peter for contributing - this nice tool. - -Mon Jan 11 12:54:26 1999 Douglas C. Schmidt - - * ace/SOCK_IO: Added const qualifiers to all the send*() and - recv*() methods that take ACE_Time_Value values. Thanks to Jody - Hagins for reporting this. - - * ace/SOCK_IO: Added a new send_n() method that uses the new - ACE::sendv_n() method! - - * ace/ACE: Added a new sendv_n() and writev_n() method that sends - all the bytes in the iovec! - - * ace/ACE.h (ACE): Added default values of 0 for ACE::writev() and - ACE::readv(). - - * examples/NT_Service: Tidied up the formatting to conform to the - ACE programming guidelines. - -Mon Jan 11 10:23:06 1999 Nanbor Wang - - * ace/config-freebsd-pthread.h: Added ACE_LACKS_READDIR_R. - * ace/config-freebsd.h: Added ACE_LACKS_READDIR_R, - ACE_HAS_NONCONST_MSGSND, ACE_LACKS_MALLOC_H. ACE_HAS_SIGINFO_T - only applies to 3.0 and above. Thanks to Ivan Pascal - for reporting the change. - -Sun Jan 10 21:52:57 1999 David L. Levine - - * tests/Message_Queue_Notifications_Test.cpp (iterator_test): - added comment explaining why a message queue size of 32 Kb - is used, instead of the default of 16 Kb. - - * docs/ACE-guidelines.html: added guidelines for boolean types - and function return values. - -Sun Jan 10 17:33:29 1999 Douglas C. Schmidt - - * tests/Message_Queue_Notifications_Test.cpp: Replaced delete mb - with mb->release(). Thanks to Susan Liebeskind - for reporting this - inconsistency. - - * ace/Task_T.h, - ace/Message_Queue_T.h: Clarified the fact that the - ACE_Time_Value arguments to the Message_Queue methods - use absolute, rather than relative, time. Thanks to - Stanford S. Guillory for pointing out - the need for this clarification. - -Sun Jan 10 09:18:41 1999 Martin Krumpolec - - * ace/Log_Msg.cpp (log): only re-enable tracing if it had - not been explicitly disabled. - -Sun Jan 10 01:06:18 1999 Irfan Pyarali - - * ace/Log_Msg.cpp (log): Change call from exit() to abort(). - - * ace/OS.i (abort): Added new function. - -Sat Jan 9 22:05:07 1999 Nanbor Wang - - * bin/tao_env.pl: A new perl script that help you translate _env - to TAO_IN_ENV. - -Sat Jan 09 10:53:37 1999 David L. Levine - - * ace/Name_Proxy.cpp (open): swapped branches of conditional - so that options.time_value () is used if USE_TIMEOUT is enabled. - Thanks to Mike Goldman for reporting this. - -Fri Jan 08 19:19:17 1999 Nanbor Wang - - * ace/OS.h: Applied ACE_TEXT to the definition of - ACE_DEFAULT_TEMP_FILE on Win32. Thanks to - for reporting this. - -Fri Jan 08 13:24:12 1999 David L. Levine - - * ace/Synch.h (ACE_Process_Mutex): made data members - private instead of public. Thanks to Peter Gross - for reporting this. - - * examples/Threads/reader_writer.cpp: removed volatile - qualifier from declaration of "shared_thr_id", so that - the file will compile on DU 4.0 with DCE threads. The - volatile qualifier caused a type mismatch with - ACE_thread_t. And, it's not necessary, because all - access of the shared_thr_id is guarded. - - * include/makeinclude/platform_chorus_ghs.GNU: added gnuch68 - to -alttools, and removed bin from AR; use libedgnoe.a instead - of libedg.a with GHS 1.8.9.1. - - * ace/config-sunos5.5.h: don't define ACE_HAS_XPG4_MULTIBYTE_CHAR - with ghs, because its version 1.8.9 doesn't seem to support it. - Also, with ghs, replaced the __ctype [] declaration with an - #include of , because that's cleaner. Finally, - added ACE_HAS_BROKEN_ENUMS for ghs (1.8.9). - -Thu Jan 07 09:05:27 1999 David L. Levine - - * ace/config-sunos5.5.h: added ACE_HAS_SIG_C_FUNC with - Sun CC >= 4.2. Sun CC 5.0 needs it; Sun CC 4.2 doesn't - object to it on SunOS 5.5.1, 5.6, and 5.7. Thanks to - Neil Cohen for figuring out how to - compile ACE with Sun CC 5.0. - - * include/makeinclude/platform_sunos5_sunc++.GNU: only - use -features=castop and -rtti with Sun CC 4.2. CC 5.0 - doesn't support them; I assume that it enables RTTI by - default. Thanks to Neil Cohen for - reporting this. - - * ACE-INSTALL.html: added ACE_HAS_REGEX #undef suggestion for - shared lib link problems with egcs 1.1.x on Solaris 2.5.x. - Thanks to Bob McWhirter for reporting this - problem. - -Thu Jan 07 04:45:36 1999 Douglas C. Schmidt - - * ACE version 4.6.12 released. - -Thu Jan 07 04:01:08 1999 Irfan Pyarali - - * ace/Containers_T.cpp (max_size): No need to reallocate if the - new size is the same. Thanks to Mike Goldman for - pointing this out. - - * ace/Strategies_T.cpp (check_hint_i and cleanup_hint_i): - purge_i() should be called after the entry is closed. - - * Select_Reactor_Base.cpp (unbind): The next - should be calculated not only based on the but also - the . - - Thanks to Mark L. Boriack for providing - a description of this bug. - -Wed Jan 06 21:42:11 1999 David L. Levine - - * ace/OS.cpp (thr_create): moved #endif /* ACE_LACKS_SETDETACH */ - outside of }, to allow compilation on DU 4.0/cxx with DCE threads. - - * ace/config-osf1-4.0.h: with DCE threads only, added - ACE_LACKS_THREAD_PROCESS_SCOPING. - -Wed Jan 06 16:36:21 1999 David L. Levine - - * ACE version 4.6.11 released. - -Wed Jan 06 15:15:37 1999 Nanbor Wang - - * ace/Service_Config.cpp (process_directive,close): Moved the - deletion of into close method. - Otherwise, there's no way to reconfigure the service - configuration once it get started. Thanks to Mike Goldman - for reporting the problem. - -Wed Jan 6 14:27:24 EST 1999 James CE Johnson tutorial. It could be a lot better - than it is but I'm still new to ACE_Malloc... - - * docs/tutorials/021/online-tutorials.html: - Added the link for #21 - -Tue Jan 05 22:55:07 1999 Irfan Pyarali - - * ace/Strategies_T.cpp (cleanup_hint_i and check_hint_i): Since we - are holding the connection cache lock in these methods, the - Svc_Handler should not call purge(). If it does, a deadlock - will occur (unless we have recursive locks) since we are already - holding the connection cache lock. Therefore, we zero out the - recycler before calling svc_handler->close() and purge out the - svc_handler entry ourself (through purge_i()). - - Thanks to Mark L. Boriack for providing - a precise example illustrating this bug. - -Tue Jan 5 18:48:47 James CE Johnson - - * docs/tutorials/templates.html: Fixed a number of problems here. - Thanks to Amos Shapira for pointing - them out. - - * docs/tutorials/colorize: I pulled out the colorization code from - combine into this standalone script. One of these days I'll fix - combine so that the code isn't duplicated... - -Tue Jan 5 16:14:00 1999 Carlos O'Ryan - - * ace/config-irix6.x-common.h: - Added ACE_TIMER_SKEW definition. - - * ace/FILE.cpp: - Fixed the seek() prototype, is was declared as taking a "off_t" - argument, but is was defined with a "long" argument, - unfortunately in most platforms this was not a problem. - -Tue Jan 05 13:15:35 1999 Nanbor Wang - - * ace/Service_Config.i (open): Be sure to pass down the - argument down to the real open method. - -Tue Jan 05 08:08:06 1999 David L. Levine - - * tests/MM_Shared_Memory_Test.cpp (spawn): fixed syntax error - by moving ) to end of ACE_ERROR invocation. - - * ace/config-osf1-4.0.h: added 10 ms ACE_TIMER_SKEW, so that - MT_Reactor_Timer_Test passes. - - * ace/config-lynxos.h: added 10 ms ACE_TIMER_SKEW, so that - MT_Reactor_Timer_Test comes closer to passing. It now - chokes on the wait () near the end. - - * ace/OS.i (thr_getspecific): moved return 0 statement inside - the Draft 7/STD #else block, to avoid warning about unreachable - statement with Draft 4/6. - - * ace/config-osf1-4.0.h: with Draft 4 pthreads, added - ACE_LACKS_READDIR_R. - - * tests/MT_Reactor_Timer_Test.cpp (main): added printout if - wait () fails. - -Tue Jan 5 00:59:04 1999 Douglas C. Schmidt - - * ace/Synch: Changed the remove() method of ACE_Thread_Mutex, - ACE_Mutex, ACE_Semaphore, ACE_RW_Mutex, ACE_Event, - ACE_Thread_Condition_Mutex, ACE_File_Lock, and - ACE_Recursive_Thread_Mutex so that they check a flag to see if - remove() has already been called. If it has, then the remove() - call does nothing. This avoids nasty problems on platforms like - Win95 that fail mysteriously if locks are destroyed multiple - times. Note that our solution isn't perfect since it won't - protect against race conditions if multiple threads call - remove() simultaneously. However, if this happens it's a sign - that the application was designed incorrectly... Thanks to Paul - Felix and Irfan for tracking this down.... - - * ace/FILE: Added new methods, seek() and tell(), that are more - intuitively named than the existing position() methods. The - position() methods have been retained for backwards - compatiblity, but are now marked as deprecated. - - * ace/OS.h: Added a macro for ACE_DEFAULT_HTTP_PORT, which - is 80 of course... - - * ace/INET_Addr.cpp: Make sure that addr_to_string() correctly - checks the length of its buffer before doing a sprintf(). In - addition, added an option to print the results in either ip-addr - format or ip-name format. - - * ace/Mem_Map.cpp (map): where ace/Mem_Map.cpp mmap() will succeed - if the length of the file mapping is 0, which will be the case - if we've just created the file. This was the wrong place to - make this check. - - * tests/MM_Shared_Memory_Test.cpp: Cleaned up a few things - in this test so that it'll be easier to maintain. - -Mon Jan 04 08:45:45 1999 David L. Levine - - * ace/config-sunos5.7.h: only use the g++ hacks if the - g++ version is prior to 2.8. Assume that later versions - were built on SunOS 5.7 host, and/or don't have header - files that are incompatible with the system headers. - - * bin/create_ace_build: changed symlink creation failure from - error (with termination) to warning create_ace_build. - -Mon Jan 4 03:15:57 1999 Douglas C. Schmidt - - * ace/Mem_Map: If we're remapping an already-mapped file - (i.e., the base_addr_ != 0) && the addr parameter IS 0 (i.e., - the user isn't trying to respecify where to map this file), then - we'll try to map over top of the existing region, which implies - "MAP_FIXED". - -Sun Jan 03 23:21:46 1999 Nanbor Wang - - * ace/Service_Config.cpp (initialize): Both initialize methods now - remove the service object from the repository if its init() - method failed. - -Sun Jan 3 14:39:49 1999 Douglas C. Schmidt - - * ace/ACE: Added a simple dirname() wrapper method. - - * ace/SString: The set(const char *, size_t, int = 1) and - set(const char *, int) methods were inherently ambiguous. - I've fixed this by changing removing the default parameters. - Thanks to Irfan for suggesting this fix. - - * ace/Mem_Map.cpp: mmap() will fail if the length of the file - mapping is 0, which will be the case if we've just created the - file. Therefore, don't even bother trying to mmap() in this - case and return a successful result. - - * ace/FILE: Moved the get_remote_addr() and get_local_addr() - methods from the FILE_IO class to the FILE class since that's - more properly where they belong. Also added a new remove() - method that unlinks the file. - - * tests/Priority_Reactor_Test.cpp, - tests/Conn_Test.cpp, - tests/Notify_Performance_Test.cpp, - Priority_Reactor_Test.cpp, - Reactor_Performance_Test.cpp: Since the default is to skip argv0 - there's no sense explicitly saying this in the constructor of - ACE_Get_Opt. - - * ace/FILE_Connector.h: Updated the comments to reflect recent - changes. - - * ace/FILE.h: Added a new get_info() method that takes a reference - to an ACE_FILE_Info rather than a pointer. This is a cleaner - API, IMHO. - - * ace/FILE_Connector.cpp (connect): When the argument - is ACE_Addr::sap_any, then connect will select a temporary - filename using the new feature of ACE_FILE_Addr described below. - - * ace/FILE_Addr.cpp (set): When the address is ACE_Addr::sap_any, - then we'll select a new temporary filename using the new - ACE_DEFAULT_TEMP_FILE macro and ACE_OS::mktemp(). - - * ace/OS.h: Added a new ACE_DEFAULT_TEMP_FILE macro that defaults - to "/tmp/ace-file-XXXXXX" and is used by the ACE_FILE_Connector - to create a temporary file when it's given an ACE_Addr::sap_any. - - * ace/FILE_Addr.h: The accessor should return an int to be - consistent. - - * ace/OS.h: Added a new ACE_sap_any_cast macro, which makes it - much easier to cast the ACE_Addr::sap_any to the right subclass. - - * tests/Reactor_Performance_Test.cpp, - tests/Reactor_Exceptions_Test.cpp, - tests/Process_Strategy_Test.cpp, - tests/Priority_Reactor_Test.cpp, - tests/IOStream_Test.cpp, - tests/Conn_Test.cpp: Replaced all the C-style casts for - ACE_Addr::sap_any with the new ACE_sap_any_cast macro. - -Sun Jan 03 21:48:37 1999 Irfan Pyarali - - * ace/Asynch_Acceptor.cpp: Since this is a template file, I - removed it from the ace library build on NT. - - * ace/Asynch_Acceptor.cpp (open): Changed C-style cast to use the - new ACE_sap_any_cast macro from Dr. Schmidt. - -Sun Jan 03 09:12:23 1999 David L. Levine - - * ace/config-sunos5.5.h: with GreenHills, added - ACE_LACKS_LINEBUFFERED_STREAMBUF and ACE_LACKS_SIGNED_CHAR. - - * ace/Basic_Types.* (ACE_U_LongLong): unioned the data members - with a double, to ensure alignment on 8-byte boundaries. It - could matter when an ACE_U_LongLong is used as a true 8-byte - quantity, such as in a call to Solaris ::gethrtime (). - - * tests/Time_Value_Test.cpp: replaced remaining #ifdef - ACE_HAS_STHREADS with #ifdef sun. - -Sat Jan 2 23:48:44 1999 James CE Johnson - - * docs/ACE-tutorials.html - * docs/tutorials/guide-tutorials.html - * docs/tutorials/new-tutorials.html - * docs/tutorials/online-tutorials.html - Converted some of the absolute URLs to relative. I only have the - docs/tutorials tree here at home so I couldn't do any more than - these. - - * docs/tutorials/021/* - New tutorial on ACE_Malloc<>. I haven't begun the documentation - yet but wanted to get the code commited so it doesn't get lost. - -Sat Jan 02 08:34:27 1999 David L. Levine - - * examples/ASX/Event_Server/Event_Server/event_server.cpp - (handle_input), - examples/Reactor/Misc/test_early_timeouts.cpp (main): - added ACE_UNUSED_ARG (n), to avoid compile warning with ACE_NDEBUG. - - * performance-tests/Misc/test_naming.cpp (find): moved function - call w/side effect out of ACE_ASSERT. Thanks to DU 4.0 cxx - for noticiing it, with ACE_NDEBUG. - -Fri Jan 01 18:57:22 1999 David L. Levine - - * ace/Containers_T.i (ACE_Array,ACE_Array::operator=): - added missing ACE_INLINE's. - - * ace/OS.{h,cpp} (ACE_TSS_Info::operator{==,!=}): added - constness. It's necessary with the ACE_Array changes, - with ACE_HAS_TSS_EMULATION. - -Fri Jan 1 12:22:14 1999 Carlos O'Ryan - - * ace/Containers_T.h: - * ace/Containers_T.i: - * ace/Containers_T.cpp: - * bin/Array_Helper: - * bin/Array.pl: - Moved most of the implementation of ACE_Array into - ACE_Array_Base this class does not require == or != operators - defined for the template parameter. - I also added methods to access and manipulate the capacity of - the array (max_size) as opposed to always changing its size (the - portion actually used). - - * ace/Object_Manager.cpp: - * ace/Template_Instantiations.cpp: - * ace/OS.cpp: - * apps/JAWS/clients/Caching/URL_Properties.cpp: - Fixed ACE_Array instantiations. diff --git a/ChangeLog-99b b/ChangeLog-99b deleted file mode 100644 index 4567a96b775..00000000000 --- a/ChangeLog-99b +++ /dev/null @@ -1,4139 +0,0 @@ -Mon Oct 11 10:09:56 1999 David L. Levine - - * ACE version 5.0.6 released. - -Mon Oct 11 07:34:34 1999 Douglas C. Schmidt - - * ace/OS.h: Removed a stray '>' that was causing OS.h not to - compile. Thanks to Marvin Allen Wolfthal - for reporting this. - -Fri Oct 8 07:47:08 1999 Douglas C. Schmidt - - * ace/OS.h: Removed the word "defined" since that was breaking - SunCC 4.2. Thanks to Andy Gokhale for reporting this. - -Thu Oct 07 18:47:03 1999 Irfan Pyarali - - * ace/OS.h (ACE_NOTSUP): Added new macro. This one is similar to - ACE_NOTSUP_RETURN, except that there is no return value (similar - to ACE_GUARD and ACE_GUARD_RETURN). - - * ace/Message_Queue (message_length): Returns the total length on - the queue, i.e., sum of the message block lengths. - - Since manual changes to these stats might be necessary, - specially when queued message blocks change size or lengths - (without dequeuing the messages from the queue), we also provide - methods for setting these stats. - - * ace/Message_Block.i (total_length): This new method is similar - to except that it deals with the length of the - message blocks and not the size of the message blocks. It - returns the length of the message blocks, including chained - message blocks. - -Thu Oct 7 13:17:29 1999 Douglas C. Schmidt - - * ACE-INSTALL.html: Changed the word "compiler" to - "linker". Thanks to George Ball - for reporting this. - -Thu Oct 07 11:35:13 1999 Steve Huston - - * ace/streams.h: Added #include in the non-Win32 - section of the !ACE_HAS_STANDARD_CPP_LIBRARY section, for systems - like Solaris w/ SC4.2. - -Wed Oct 6 21:36:18 1999 Douglas C. Schmidt - - * ace/Log_Msg.cpp (log): Forgot to remove a stray %s. - Thanks to Kitty Krishnakumar for - reporting this. - -Wed Oct 06 16:42:56 1999 Nanbor Wang - - * examples/Reactor/Misc/Misc.dsw: - * examples/Reactor/Misc/demuxing.dsp: Added the demuxing test - project file. - - * examples/Reactor/Misc/test_demuxing.cpp: MS Windows only - supports a limited set of signals. Made sure we use them in the - examples. - -Wed Oct 06 16:20:28 1999 David L. Levine - - * tests/CDR_File_Test.cpp (run_test): when reading, ensure - that the message block has sufficient space to properly - align the 64-bit double on LynxOS and Neutrino. Thanks - to Jeff for helping to track this down, and for Carlos - for providing the fix. - -Wed Oct 6 15:40:11 1999 Vishal Kachroo - - * ace/OS.i : Initialised the qos_len variable to sizeof (QOS) - within the ioctl () method for ACE_SIO_GET_QOS. - - * ACE_wrappers/examples/QOS/client.cpp: - * ACE_wrappers/examples/QOS/server.cpp: Added a test for the - ACE_SIO_GET_QOS io control code. The Sending and Receiving - QOS flowspec parameters are extracted and printed for both the - sender and receiver using this control code. - -Wed Oct 6 08:36:17 1999 Douglas C. Schmidt - - * ace/OS.h: Changed - - # if defined (__SUNPRO_CC < 0x500) - - to this - - # if defined (__SUNPRO_CC < 0x500) || ((__SUNPRO_CC == 0x500 && > __SUNPRO_CC_COMPAT == 4)) - - to work around compilation problems with Sun CC 5.0 when used in - Sun CC 4 compatibilty mode. Thanks to Erik Koerber - for this fix. - - * ace/Log_Msg.cpp (log): Added support for a %m option that - behaves like strerror() rather than perror(). Thanks to Kitty - Krishnakumar for this feature. - - * ace/OS.i (event_wait): We need to put the call to - ACE_OS::cond_wait() in a loop to guard against spurious wakeups. - Thanks to Sergey Nemanov and Vladimir - Kondratiev for reporting this - and suggesting a fix. - - * tests/Malloc_Test.cpp: Don't run the Malloc_Test on LynxOS. - - * tests/MM_Shared_Memory_Test.cpp: Fixed the code so that it'll - compile correctly on platforms that lack fork(), such as - VxWorks. Thanks to David Levine for reporting this. - -Tue Oct 5 16:17:57 1999 Douglas C. Schmidt - - * tests/MM_Shared_Memory_Test.cpp (spawn): Make sure to - delete the synchronizer in both the parent and the child - processes since otherwise we get a memory leak! Thanks to David - Levine for pointing this out. - - * tests/Task_Test.cpp (main): Make sure to delete the thread hook - before exiting the process to avoid a memory leak. Thanks to - David Levine for pointing this out. - -Tue Oct 5 15:04:03 1999 Douglas C. Schmidt - - * ace/[Active_|Hash_]Map_Manager: Modified these classes so that the - find() methods are all "const". Thanks to Jody Hagins - for reporting this. - -Tue Oct 05 21:58:06 1999 Nanbor Wang - - * ace/config-WinCE.h: Reenabled ACE_HAS_MFC. This should be the - most portable configuration. If you insist not to use MFC at - all, define ACE_HAS_MFC=0 in your config.h file. - - * ace/OS.h: - * ace/OS.cpp (set_window): Removed the MFC specific set_window - method so we can use ACE in both MFC and non-MFC applications. - - * ace/INET_Addr.h: Applied ASYS_TEXT to several default - string literals. - - * ace/DLL.h: - * ace/DLL.cpp: Changed the type of in ctor and the open - method to ASYS_TCHAR to minimize string conversion. - - * tests/DLL_Test.cpp: Applied ASYS_TEXT to the name of the DLL - file. - -Tue Oct 5 19:01:43 1999 Jeff Parsons - - * ace/CDR_Stream.i: - Changed << for bounded (w)strings to marshal only 'length' - bytes, instead of 'bound' bytes. The previous method could - cause an access violation if the string fits near the end - of a system page, but the 'bound' extends beyond it. Thanks - to Brian Wright for reporting this - bug. - -Mon Oct 4 08:31:58 1999 Douglas C. Schmidt - - * examples/Shared_Malloc/test_persistence.cpp: Enhanced the - list_employees() method so that it'll print the contents of - ACE_Malloc<> in FIFO and LIFO order. - - * ace/Malloc[_T].{h,cpp}: Added a new iterator for ACE_Malloc<> - called ACE_Malloc_FIFO_Iterator, which prints out the - ACE_Name_Node entries in FIFO order. In addition, renamed - ACE_Malloc_Iterator to be ACE_Malloc_LIFO_Iterator because it - prints the ACE_Name_Node entries in LIFO order. Also added a - #define of ACE_Malloc_Iterator to ACE_Malloc_LIFO_Iterator to - ensure backwards compatibility. Thanks to Wenli Bai - for this enhancements. - - * tests/MM_Shared_Memory_Test.cpp: Fixed the test so that it should - work correctly for platforms that use either processes or - threads. Also, make sure to call remove() on the - ACE_Process_Semaphore so that stray semaphores aren't left - around. Thanks to David Levine for helping to track this down. - - * ace/Synch.h: Updated the documentation for the - ACE_Process_Semaphore destructor to indicate that it doesn't - remove the semaphore. Instead, you must call remove() - explicitly. Thanks to David Levine for helping to track this - down. - - * ace/Malloc_T.cpp (print_stats): Added a cast for the ACE_LOCK to - work around the fact that the print_stats() method is const. - Thanks to Jean-Marc Strauss for - reporting this. - - * ace/INET_Addr.cpp (set): Added ACE_UNUSED_ARG - so the compiler won't complain about the protocol paraemter in - parts of the code where it's not used. - - * tests/MM_Shared_Memory_Test.cpp (spawn): Added ACE_UNUSED_ARG - so the compiler won't complain about process_synchronizer in - parts of the code where it's not used. - -Sun Oct 3 12:47:35 1999 Douglas C. Schmidt - - * tests/Process_Mutex_Test.cpp (main): Renamed the confusing "server" stuff - to "parent" where appropriate. - - * tests/MM_Shared_Memory_Test.cpp: Don't call ACE_OS::exit() - in the child since this won't clean up the Object_Manager - correctly. Thanks to David Levine for reporting this. However, - we'll still have two "end" statements, but only one begin - statement, which is confusing. I'm not sure how to solve this, - but it won't break anything. - - * tests/MM_Shared_Memory_Test.cpp: Oops, only do the - acquire()/release() of the Process_Semaphore if we have fork()! - - * tests/MM_Shared_Memory_Test.cpp: Added an ACE_Process_Semaphore - so we no longer need to sleep in order to wait for the server to - be initialized. - - * tests/Process_Strategy_Test.cpp (main): Switched the processes - in which the client and server are run so that the server is now - run in the parent and the client is run in the child. This made - it possible to remove the ACE_OS::sleep(1) call because the - acceptor is created before the fork, so the client should always - be able to connect to the server, even if the server isn't - scheduled to run again before the client. - - * tests/Process_Mutex_Test.cpp, - * tests/SV_Shared_Memory_Test.cpp: - Fixed some improper style problems with these tests. - -Sun Oct 03 10:34:19 1999 David L. Levine - - * tests/SV_Shared_Memory_Test.cpp (main): only delete - parent_mutex and parent_synch in the parent, to prevent - double deletion by the child. [Bug 91] - -Sun Oct 03 10:21:15 1999 David L. Levine - - * tests/SV_Shared_Memory_Test.cpp: create parent_mutex and - parent_synch before forking, to avoid race condition between - their creation in the parent and use in the child. This - allowed us to remove the sleep (1) in the child. [Bug 91] - -Sun Oct 03 10:17:21 1999 David L. Levine - - * ace/OS.cpp (ACE_Thread_Adapter::invoke): added casts of - func (to ACE_THR_FUNC) and its return value (to void *) - so that this function will compile for VxWorks and pSOS. - -Sat Oct 2 18:54:38 1999 Vishal Kachroo - - * ace/SOCK_Dgram_Mcast.{cpp,h}: Added ACE_Protocol_info as a - parameter to the QoS enabled private method subscribe_ifs. This - allows the use of ACE_Protocol_Info->iAddressFamily in the call - to join_leaf (). Thanks to Vidya Narayanan - for pointing this out. - -Sat Oct 2 16:20:33 1999 Nanbor Wang - - * ace/config-kcc-common.h: The macro __KCC_VERSION was not - available in 3.3e so we switched to check the existence of this - macro to decide the availability of auto_ptr::reset(). Thanks - to Ossama for noticing this bug. - -Sat Oct 2 16:10:26 1999 Ossama Othman - - * ace/config-linux-common.h: - - Linux (glibc 2.x) has lseek64() so define ACE_HAS_LLSEEK. - - * ace/OS.i (llseek): - - Removed external declaration for llseek() on Linux. Linux uses - lseek64(), not llseek(). Updated macro checks to use lseek64() - for Linux. [Bug 276] - -Sat Oct 2 16:01:50 1999 Douglas C. Schmidt - - * ace/INET_Addr.h (ACE_INET_Addr): Removed an unnecessary "protocol" - string. Thanks to Jeff and Ossama for reporting this. - -Sat Oct 2 12:50:43 1999 Douglas C. Schmidt - - * ace/INET_Addr: Previous, it was not possible to specify the - proto argument in the ACE_INET_Addr constructor because it was - hard-coded to "tcp". Now, this can be passed as a parameter. - Thanks to Jaymes Galvin for this suggestion. - -Fri Oct 1 14:44:12 1999 Vishal Kachroo - - * ace/OS.h : Added the Winsock2 GQOS related #defines to this - file. The #defines are limited to the ones used in the ACE QOS - example. - - * ACE_wrappers/examples/QOS/server.cpp: - * ACE_wrappers/examples/QOS/client.cpp: - * ACE_wrappers/examples/QOS/QosEvent.h: - Changed the QOS example to use the ACE flags instead of Windows - flags. Removed the #defines from the example and moved them to - OS.h - -Fri Oct 1 13:14:17 1999 Douglas C. Schmidt - - * ChangeLog: Added more Borland support. Thanks to - Christopher Kohlhoff for this. - -Fri Oct 01 13:05:24 1999 David L. Levine - - * Makefile: move instructions for creating kits down in - the file, and added note that they're intended for - ACE+TAO developers and maintainers, only. Thanks to - Rick Hess for pointing out that - that wasn't clear. - -Fri Oct 1 08:23:36 1999 Joe Hoffert - - * ace/ATM_Connector.{h,i}: Added add_leaf method and functionality. - -Thu Sep 30 16:55:41 1999 Douglas C. Schmidt - - * tests/Task_Test.cpp (main): Added a short example illustrating - how the new ACE_Thread_Hook mechanism works. - - * ace/OS.cpp: Added new support for the thread_hook to - ACE_OS_Object_Manager. - - * ace/OS.cpp (invoke): Added support for a virtual "start_hook()" - method in a new ACE_Thread_Hook class. This makes it possible - for users to subclass ACE_Thread_Hook perform initialization - operations before the thread entry point method is called back. - Thanks to Chris Hafey for this - suggestion. - -Thu Sep 30 20:40:42 1999 Marina Spivak - - * bin/run_all_list.pm: - Added TAO/examples/Load_Balancing demo to the list of daily - executed tests. - -Thu Sep 30 11:36:20 1999 Charles Frasch - - * include/makeinclude/wrapper_macros.GNU: in checks for - ACE_HAS_GNUG_PRE_2_8, use $(notdir $(CXX)) to properly - handle case where CXX has a directory part. - -Thu Sep 30 11:13:14 1999 Douglas C. Schmidt - - * ace/Pipe.cpp (open): Don't use socketpair() for pipes on LynxOS - since this doesn't work for some reason. Instead, use the - socket emulation. Thanks to David Levine for reporting this. - -Thu Sep 30 10:30:00 1999 Kirthika Parameswraan - - * ace/README: Added documentation for: - ACE_HAS_BROEN_EXTENDED_TEMPLATES Thanks to Fritz Bosch - for suggesting this. - -Thu Sep 30 10:07:38 1999 Douglas C. Schmidt - - * ace/Strategies_T.h: Added - - #define ACE_Refcounted_Hash_Recyclable ARHR - - to work around broken linkers that can't handle long - symbol names. Thanks to Fritz Bosch - for this suggestion. - -Wed Sep 29 20:58:45 1999 Darrell Brunsch - - * ace/config-win32.h: - * ace/config-win32-common.h: - Winsock2.h wasn't being included before my checks of the - winsock version, so I moved it to -common.h instead. - -Wed Sep 29 16:40:45 1999 Nanbor Wang - - The following changes fix the Service_Configurator on Windows - CE. Thanks very much to Kirthika for her help on making this - work. - - * tests/WinCE/DLL_Test.dsp: - * tests/WinCE/ce_tests.dsw: Added the DLL_Test project. - - * ace/ace_ce_dll.dsp: Added DLL.cpp into the project. - - * ace/Service_Types.i (name): - * ace/Service_Object.i (name): Changed to use ACE::strnew to - duplicate the name string. - - * ace/Parse_Node.cpp: Changed all the ACE_*_Node classes to make - copies of all string variables and release when they get - destructed. This is necessary because on Windows CE, the - strings passed into these classes are very short-lived (we use - ASCII to UNICODE conversion macros which make temporary copies - only.) The change shouldn't affect the performance of ACE since - parsing the svc.conf entries should never be in the critical - path. - - * ace/Parse_Node.h: The comments for in - ACE_Location_Node is completely outdated. It now specifies - whether the Service_Object generated by this Location_Node - should be removed or not when it is no longer in use, not the - . - - * ace/OS.i (access): Added a temporary implementation for CE here. - ACE::ldfind check the file accessibility using this function. - Currently, we hard-code the method to check for read-access only - (i.e., the argument is not used) which needs to be - fixed. - - * ace/OS.cpp (fopen): Check for invalid handle and return NULL if - handle is invalid on CE. Otherwise, CE programs get totally - confused. - - * ace/Malloc.cpp (dump): I added some more operations in the dump - methods but forgot to make them UNICODE friendly. - - * ace/config-WinCE.h: Added the macro definition for - ACE_DEFAULT_LD_SEARCH_PATH since CE doesn't support environment - variables at all and we need to hard-code the search path on - CE. - - * ace/README: Added documentation for ACE_DEFAULT_LD_SEARCH_PATH. - - * ace/ACE.cpp (ldfind): When the macro ACE_DEFAULT_LD_SEARCH_PATH is - defined, we should use the hard-coded search path instead of - trying to use getenv to acquire the search path. - - * examples/Service_Configurator/Misc/Timer_Service.cpp: - * examples/Service_Configurator/Misc/Timer_Service.h: Made the - services UNICODE and CE friendly by applying ASYS_TEXT and using - ASYS_TCHAR liberally. - - * examples/Service_Configurator/Misc/README: Added instructions on - how to run the example on Windows CE. - -Tue Sep 28 15:46:23 1999 Darrell Brunsch - - * ace/OS.i: Fixed some GQOS stuff for the older versions of - WinSock 2. - - * ace/config-win32.h: Uses a better detection technique to - figure out whether we are compiling with WinSock 2's newer - headers or not. - -Tue Sep 28 14:48:26 1999 Irfan Pyarali - - * ace/WFMO_Reactor.cpp (handler): Implemented previously - unimplemented function. - -Tue Sep 28 15:02:33 1999 Vishal Kachroo - - * ace/OS.i (ioctl): Added the #if def ACE_HAS_WINSOCK2_GQOS for - the extra fields in struct _flowspec. - -Mon Sep 27 19:16:34 1999 Douglas C. Schmidt - - * ace/OS.i (timezone): SunOS 4 needs to use gettimeofday() to find - the current timezone. Thanks to Kamen Penev - for reporting this fix. - -Mon Sep 27 19:30:54 1999 Carlos O'Ryan - - * THANKS: - Added Dennis to the hall of fame list. - -Mon Sep 27 17:12:51 1999 Vishal Kachroo - - * ace/OS.i: - * ace/OS.h: - Added an overloaded ioctl () that is used when the io control - code is one of SIO_SET_QOS or SIO_GET_QOS. Thanks to Vidya - Narayanan for help with this - feature. - - * ACE_wrappers/examples/QOS/server.cpp: - * ACE_wrappers/examples/QOS/client.cpp: - Made changes to the usage of ioctl () in the above files to - reflect the corresponding changes in ACE. - -Mon Sep 27 13:11:02 1999 Douglas C. Schmidt - - * ace/config-sunos5.5.h: Wrap the define statement in a - conditional that prevents declaration of #define - ACE_HAS_STL_QUEUE_CONFLICT for gcc 2.95. We don't know if this - is a problem in newer versions of Solaris but this will get rid - of it for 5.5.1. Thanks to Siegurd Weber - for this fix. - -Mon Sep 27 16:56:10 1999 Carlos O'Ryan - - * ace/OS.cpp: - ACE_OS::cond_init() has two completely separate versions, i - forgot to fix the NT version too, thanks to Vishal for pointing - this out. - -Mon Sep 27 16:05:35 1999 Darrell Brunsch - - * tests/Object_Manager_Test.dsp: - * tests/run_tests.bat: - * tests/tests.dsw: - * tests/version_tests/Object_Manager_Test.dsp: - * tests/version_tests/version_tests.dsw: - Added Object_Manager_Test support on Win32 and MSVC. - -Mon Sep 27 15:23:47 1999 Carlos O'Ryan - - * ace/OS.h: - * ace/OS.i: - Fixed overloading problems for cond_init() under LynxOS and - Chorus, thanks to John K. Black - for reporting the problem and providing a fix. - This fixes [BUGID:342] - -Mon Sep 27 13:11:02 1999 Douglas C. Schmidt - - * ace/SString.h: Added the default value for the ACE_CString - method set (const char *, int = 1). We had removed the default - values from both the set() methods in order to remove an - ambiguity. However, it appears that it's ok to give just this - method a default value. Moreover, this prevents existing code - from breaking. Thanks to Giga Giguashvili - and Ivan Murthy - for reporting this. - -Sat Sep 25 17:09:57 1999 Carlos O'Ryan - - * ACE version 5.0.5 released. - -Fri Sep 24 17:20:41 1999 Nanbor Wang - - * ace/config-kcc-common.h: KCC does support auto_ptr::reset - after 3.4. Made sure we don't define ACE_AUTO_PTR_LACKS_RESET - for newer version of KCC. Thanks to Ossama for reporting the - problem. - -Fri Sep 24 08:59:13 1999 Douglas C. Schmidt - - * ace/config-sunos4-g++.h: Added ACE_HAS_DIRENT. - Thanks to Kamen Penev for reporting this. - - * tests/Handle_Set_Test.cpp (test_boundaries): Added some casts - and parens so that the code will compile with MSVC++ 5.0. - Thanks to Carlos O'Ryan for reporting this. - - * examples/Connection/blocking/SPIPE-{acceptor,connector}.cpp: - Reformatted some of the code. - -Fri Sep 24 08:27:28 1999 David L. Levine - - * ace/OS.*,Synch.cpp: reverted changes of: - - Thu Sep 23 11:13:38 1999 Wei Chiang - - because Bug 342 proposes a more general fix. - -Thu Sep 23 19:02:47 1999 Vishal Kachroo - - * examples/QOS/server.cpp (main): - * examples/QOS/server.cpp (main): - - Removed the instantiation of ACE_OS_Object_Manager from - the above files. This is done automagically in ACE. - - * examples/QOS/Sender_QOS_Event_Handler.h: - Fixed a warning regarding the #def of MY_DEFPORT. - -Thu Sep 23 14:12:58 1999 Carlos O'Ryan - - * bin/auto_compile: - It was reporting success even when things failed. - -Thu Sep 23 11:13:38 1999 Wei Chiang - - * ace/OS.*,Synch.cpp: Chorus compiler (g++) seems to be - confused by "int" and "int&" in overloaded operations. - A dummy variables to full Chorus compiler is added to - cond_init (ACE_cond_t*, ACE_condattr_t&, LPCTSTR void*). - - * include/makeinclude/rules.bin.GNU,platform_chorus.GNU: - updated to support linking of TAO executables for Chorus. - -Wed Sep 22 19:30:49 1999 Randall Sharo - - * ace/OS.i (sema_wait): on VxWorks, update tv to return - the wait time. [Bug 339] - - * ace/Synch.h (ACE_Semaphore::acquire): updated comment - to show that the absolute acquisition time is returned, - not the elapsed time while waiting. - -Wed Sep 22 16:59:19 1999 Nanbor Wang - - * ace/config-win32-common.h: Added definition of - ACE_AUTO_PTR_LACKS_RESET when ACE_HAS_STANDARD_CPP_LIBRARY is - defined. Thanks to Ossama for the quick hint. - -Wed Sep 22 13:05:55 1999 Jim Rogers - - * ace/Codeset_IBM1047.cpp: added #include "ace/inc_user_config.h" - at the beginning, to properly pick up the ACE_MVS #define - on MVS. - -Wed Sep 22 11:20:39 1999 David L. Levine - - * ace/Basic_Types.h: use u_long for ptr_arith_t, even - with 64-bit ints, with Sun CC. For unknown reasons, - Sun CC 5.0 won't allow a reintepret cast of a 64-bit - pointer to a 64-bit int (with -xtarget=ultra -xarch=v9a). - Thanks to Giga Giguashvili for - reporting this. - -1999-09-21 James CE Johnson - - * docs/tutorials/Makefile - * docs/tutorials/???/* - Added a number of notes about proper usage of THR_NEW_LWP and - THR_DETACHED. Rebuilt all of the .html and .shar files. Probably - touched too many along the way but better safe than sorry. - -Tue Sep 21 21:56:10 1999 David L. Levine - - * docs/ACE-subsets.html: replaced absolute link to - ../ACE-INSTALL.html#repo with a relative link. And, - added "typically" to the 25 percent size reduction figure. - -Tue Sep 21 16:49:36 1999 Douglas C. Schmidt - - * docs/ACE-subsets.html,ACE-INSTALL.html: Updated the document - to point to the -frepo discussion. Thanks to Timothy Canham - for motivating this. - -Tue Sep 21 16:07:26 1999 David L. Levine - - * docs/ACE-subsets.html: fixed size comparison chart; the - For TAO entry was missing for SunOS 5.7/egcs 2.91.60. - Thanks to Timothy Canham - for reporting this. - -Tue Sep 21 15:34:16 1999 Douglas C. Schmidt - - * ace/Service_Config.cpp (process_directives_i): Added a fix - so that the Service_Config allows one level of reentrancy. - Thanks to Jonathan Reis for - suggesting this. - -Tue Sep 21 11:35:57 1999 Douglas C. Schmidt - - * examples/Threads/tss1.cpp (main): Need to rearrange where the - explicit template instantiations are to make certain compilers - happy. Thanks to Jeffrey Franks for - reporting the problem. - - * tests/Makefile.bor: Updated ACE tests makefile to build (almost) - all of the tests. Thanks to Christopher Kohlhoff - for this fix. - - * examples/Reactor/Misc/test_signals_2.cpp (main), - * examples/Reactor/WFMO_Reactor/test_talker.cpp (STDIN_Handler): - Preemptively fixed a couple more potential problems that might - trigger the type of problem reported in the next entry below. - -Tue Sep 21 11:41:33 1999 Ossama Othman - - * apps/Gateway/Gateway/Event_Channel.cpp (open): - Changed cast style to make gcc 2.95.1 happy. Thanks to Jeffrey - Franks for reporting the problems. - -Tue Sep 21 11:25:32 1999 Carlos O'Ryan - - * bin/auto_compile: - Print the most recent ChangeLog entries in the log file. - Report successful builds by default. - Reformat email to make Darrell happier, btw, he made most of - these suggestions. - -Tue Sep 21 11:13:21 1999 Steve Huston - - * ace/streams.h: Added includes/using to pick up strstream for - istrstream, ostrstream classes when ACE_HAS_STD_CPP_LIBRARY is set. - -Tue Sep 21 09:38:20 1999 David L. Levine - - * tests/run_tests.lst: disabled Signal_Test. [Bug 309] - -Tue Sep 21 08:33:21 1999 David L. Levine - - * ACE-INSTALL.html: use shared_libs=1, not shared_libs_only=1, - to build shared libs on VxWorks. That avoids missing libACE.a, - for example, when linking other libraries. Thanks to - Uwe Landrock for reporting this. - -Mon Sep 20 10:52:37 1999 Douglas C. Schmidt - - * ACE-INSTALL.html: Clarified that the --unix flag must be given for - Cygwin tools on Vxworks and NT. Thanks to Uwe Landrock - for reporting this. - -Mon Sep 20 10:34:51 1999 Steve Huston - - * ACE-INSTALL.html: Fixed broken link to Riverace's HP-UX info. - Thanks to Doug for finding this. - -Sun Sep 19 12:48:31 1999 Douglas C. Schmidt - - * tests/Signal_Test.cpp: Only send outselves a signal if we're - running the signal handler in a separate thread. - -Sun Sep 19 10:39:30 1999 Douglas C. Schmidt - - * tests/Signal_Test.cpp: Changed the type of shut_down indicator from - ACE_Atomic_Op<> to sig_atomic_t. This prevents some nasty - deadlocks. - - * tests/run_tests.lst: Reenabled Signal_Test so we can see if it's - still working. - - * tests/Signal_Test.cpp: Changed the worker_child() function so that - just before its thread exits, it will sent its process a signal - to the signal handling thread to dislodge it if it hasn't - shutdown on its own accord yet. Thanks to David Levine for - reporting this. This fixes [BUGID:309]. - - * ACE/Handle_Set.h: Updated the documentation to point out that it's - the *caller's* responsibility to ensure handles aren't - added/cleared from the set if their values are larger than - ACE_DEFAULT_SELECT_REACTOR_SIZE. This behavior is necessary to - ensure efficiency. - - * tests/Handle_Set_Test.cpp (test_boundaries): Fixed the test so - that it will correctly ignore any handle values >= - ACE_DEFAULT_SELECT_REACTOR_SIZE. Thanks to David Levine for - reporting this. This fixes [BUGID:315]. - -Sat Sep 18 18:49:31 1999 Jeff Parsons - - * ace/config-win32-borland.h: - Undefined ACE_HAS_BROKEN_IMPLICIT_CONST_CAST as - suggested by Christopher Kohlhoff . - -Sat Sep 18 17:31:52 1999 Douglas C. Schmidt - - * examples/QOS: Improved the conformance to ACE programming - guidelines a bit. - - * ace/Message_Block.cpp: Whenever a ACE_Message_Block accepts a - ACE_Data_Block that was produced by someone else, it should - verify that the allocator is non-NULL and if it is, then it - should allocate the ACE_ALLOCATOR_RETURN on it. Thanks to - Pierre Grondin for reporting - this. - - * docs/tutorials/006: Fixed the activate() method so that it uses - THR_DETACHED. Thanks to Shafiek Savahl - for reporting this. - -Sat Sep 18 16:17:34 1999 Carlos O'Ryan - - * bin/auto_compile: - The messages include the build name in the subject line. Thanks - to Darrell for suggesting this idea. - -Sat Sep 18 12:00:28 1999 Douglas C. Schmidt - - * ace/Message_Block.h: Changed all the ACE_Message_Block constructors - so that the priority parameter defaults to - ACE_DEFAULT_MESSAGE_BLOCK_PRIORITY, rather than 0. Thanks to - Detlef Becker for this suggestion. - - * ace/OS.h: Added a new macro called - ACE_DEFAULT_MESSAGE_BLOCK_PRIORITY, which defaults to 0 but - which can be overridden in a config.h file to a different value - so it's possible to transparently choose default priorities that - are > 0. Thanks to Detlef Becker - for this suggestion. - -Fri Sep 17 19:49:15 1999 Kirthika Parameswaran - - * tests/Hash_Map_Manager_Test.cpp: Repositioned template - instantiations and static variables to make the debug=0 build - happy with SunCC5.0. - -Fri Sep 17 15:34:46 1999 Nanbor Wang - - * ace/Malloc.cpp (dump): - * ace/Malloc_T.cpp (dump): Enriched various dump methods a bit. - -Thu Sep 16 17:53:57 CDT 1999 Loren Rittle - - * bin/update-ace+tao.sh: Added force option. - -Thu Sep 16 17:43:02 CDT 1999 Loren Rittle - - * bin/update-ace+tao.sh: Improve portability. - -Thu Sep 16 11:08:45 1999 Ossama Othman - - * ace/Makefile: - * tests/Makefile: - - Updated dependencies. - -Wed Sep 15 21:42:08 1999 Carlos O'Ryan - - * ace/OS.h: - Removed extra "typedef" in the declaration of the - ACE_Protocol_Info structure, it was causing a large number of - warnings in several platforms. - -Wed Sep 15 15:08:33 1999 Ossama Othman - - * bin/run_all_list.pm: - - Run the newly added TAO/tests/ORB_init/run_test.pl script when - executing the ORB_init test. - -Wed Sep 15 14:49:50 1999 Balachandran Natarajan - - * ace/Hash_Map_With_Allocator_T.h: - * ace/Hash_Map_With_Allocator_T.i: Added a method unbind () which - unbinds an entry by only taking a key. - -Wed Sep 15 13:19:36 1999 Nanbor Wang - - * ace/Service_Config.cpp (process_directive): Added ace_yyrestart - to make sure the service config parser has a valid buffer to - work on. Thanks to Lothar Werzinger - for reporting this. - -Wed Sep 15 10:50:21 1999 James Hu - - * ace/TP_Reactor.{cpp,h,i} (mask_ops): Fixed a problem where - cancel_wakeup would fail. Since an event handler is suspended - for the duration of the up-call, the wait_mask_ was being - over-written by the suspend_mask_ when the event handler was - resumed. This fixes the problem by extending TP_Reactor with - its own implementations of mask_ops that operate on both - wait_mask_ and suspend_mask_. - -Wed Sep 15 10:14:21 1999 Ossama Othman - - * docs/exceptions.html: - - Corrected some ACE_TRY_THROW examples. The exception being - thrown must have a parameter list, even if it is empty - (e.g.: ACE_TRY_THROW (CORBA::BAD_PARAM ());) - -Tue Sep 14 22:10:24 1999 Kristopher Johnson - - * ace/Process_Manager.cpp (wait): changed array index from - i to idx. Thanks to Dave Madden for confirming this fix. - - Reverted this change: - Tue Sep 14 16:01:04 1999 Christopher Kohlhoff - because it's no longer necessary. - -Tue Sep 14 21:00:45 1999 Vishal Kachroo - - * ace/OS.h: Added a typedef for ACE_Protocol_Info for non-Win32 - platforms. Defined it as a struct (with limited fields) instead - of u_long because applications using ACE_Protocol_Info on - non-Win32 platforms expect this to be a structure instead of a - u_long. - - * ACE_wrappers/examples/QOS/Makefile: Added this for the test to - compile on non-Win32 platforms. - - * ACE_wrappers/examples/QOS/server.cpp: - * ACE_wrappers/examples/QOS/client.cpp: - * ACE_wrappers/examples/QOS/QosEvent.h: - * ACE_wrappers/examples/QOS/Sender_QOS_Event_Handler.cpp: - - Removed the last remains of win32isms from the test. The QoS - test now compiles clean on non-Win32 platforms. - -Tue Sep 14 17:49:33 1999 Luther J Baker - - * ace/Arg_Shifter.cpp (get_the_parameter): removed an errant - return 0; - -Tue Sep 14 16:01:04 1999 Christopher Kohlhoff - - * ace/Process_Manager.cpp (wait): moved declaration of - loop index i out of the loop, because it is used outside - the scope of the loop. - -Tue Sep 14 15:03:21 1999 Ossama Othman - - * bin/run_all_list.pm: - - Added ORB_init test to the list of tests to run. - - * configure.in: - * configure: - - Do not define ACE_USE_POLL, even if system poll() works. - -Tue Sep 14 11:02:06 1999 Balachandran Natarajan - - * ace/Hash_Map_With_Allocator_T.h: - * ace/Hash_Map_With_Allocator_T.cpp:Added a find () method that - would lookup at the underlying Hash_Map_Manager_Ex to do the - find. - -Sat Sep 11 12:18:22 1999 Douglas C. Schmidt - - * ace/Pipe.cpp: Make sure to use SOCK_STREAM rather than SOCK_DGRAM - when creating a socketpair. Thanks to Dave Madden for reporting - this. - -Mon Sep 13 13:31:23 1999 Luther J Baker - - * ace/Arg_Shifter.cpp (get_the_parameter): continued -ORB parsing - fixes. Allows one simple method to return a parameter value for - defined flag is it exists. - -Mon Sep 13 11:01:24 1999 Nanbor Wang - - * examples/Shared_Malloc/test_persistence.cpp: Added comments on - the use of scanf. Thanks to Wenli Bai for - reporting the problem. - -Sun Sep 12 19:23:51 1999 Nanbor Wang - - * ACE version 5.0.4 released. - -Sat Sep 11 12:18:22 1999 Douglas C. Schmidt - - * ace/Process_Manager.cpp: Reverted the following change so that we - just add a fake "friend" to keep G++ happy... Also, fixed a - typo where we should have allocated an ACE_Managed_Process - rather than an ACE_Process. Thanks to Dave Madden for reporting - this. - - * ace/Process_Manager.cpp: Added the ACE_CLASS_IS_NAMESPACE method - to ACE_Managed_Process to make G++ happy. Also, removed the - trailing '_' since we don't need this because we've prefixed - "ACE_" already. - -Fri Sep 10 16:58:34 1999 Nanbor Wang - - * ace/Malloc_T.cpp (open,shared_malloc): Added several placement - new's if position independent malloc is enabled to avoid reading - uninitialized memory. - -Fri Sep 10 16:39:13 1999 Vishal Kachroo - - * examples/QOS/README: - * examples/QOS/server.cpp: - * examples/QOS/client.cpp: - * examples/QOS/Sender_QOS_Event_Handler.h: - * examples/QOS/Sender_QOS_Event_Handler.cpp: - - Removed the Win32-isms from the above files and used cleaner ACE - interfaces. Added a README file that describes the test. - -Fri Sep 10 16:38:51 1999 Nanbor Wang - - * tests/WinCE/*.dsp: VC 6 changed all the dsp files format. - -Fri Sep 10 11:20:47 1999 Douglas C. Schmidt - - * ace/SOCK_Acceptor.h, - ace/SOCK_Connector.h: Updated the documentation to clarify what - happens wrt blocking vs. non-blocking connects and accepts. - Thanks to Jose Rubio for motivating - this change. - -Thu Sep 9 16:27:56 1999 Douglas C. Schmidt - - * ace/Process_Manager, - ace/Process: Added some new patches from Dave Madden to obtain - greater control over the spawn() behavior. - -Fri Sep 10 14:30:17 1999 Vishal Kachroo - - * ace/SOCK_Dgram_Mcast.i: - * ace/SOCK_Dgram_Mcast.h: - - Added two send () functions using overlapped I/O to the - ACE_SOCK_Dgram_Mcast class. These simply call the parent - class functions with the same signature. The recv () functions - need not be added as there is currently no recv () function - within SOCK_Dgram_Mcast class to hide any parent class recv () - functions. - -Fri Sep 10 12:24:17 1999 Carlos O'Ryan - - * THANKS: - Added Joerg Pommnitz to the list of contributors. - -Thu Sep 9 22:48:56 1999 Darrell Brunsch - - * ace/config-hpux-10.x-hpc++.h: - * ace/config-hpux-11.x-hpc++.h: - Fixed spelling of ACE_PREPROCESSOR_ARGS to - ACE_CC_PREPROCESSOR_ARGS. - -Thu Sep 9 18:22:21 CDT 1999 Carlos O'Ryan - - * ace/Future.cpp: - HP/aCC was giving bogus warning about function without a return - statement (the function only has a throw). - -Thu Sep 09 14:56:29 1999 David L. Levine - - * ACE-INSTALL.html: we now fully support QNX Neutrino 2.0. - - * ACE-INSTALL.html: expanded repo=1 discussion. [Bug 248] - -Thu Sep 09 13:21:03 1999 Nanbor Wang - - * ace/ace_ce.dsw: - * ace/ace_ce_dll.dsp: Changed to use the project file format for - CE Toolkit for VC 6. - - * ace/config-WinCE.h: Added some macros definitons for POSIX error - codes. They are removed for Palm-size CE v2.01. This - configuration is still not working because its compilers don't - support placement new, which I don't know how to work around. - - * ace/Process_Manager.cpp (wait): Applied ASYS_TEXT macros. - - * ace/OS.cpp (init,fini): Applied ACE_TEXT macros around error - message print out. - (print_error_message): Added a WinCE specialized - implementation. - -Thu Sep 09 12:45:06 1999 David L. Levine - - * ace/config-qnx-neutrino.h: added ACE_HAS_SIGISMEMBER_BUG. - Sigset_Ops_Test passes with that. - -Thu Sep 09 12:31:51 1999 David L. Levine - - * tests/Handle_Set_Test (handle_vector[]): - limit the maximum handle in handle_vector to 31, 63, 127, and - 254 if ACE_DEFAULT_REACTOR_SIZE is less than or equal to - 32, 64, 128, and 256, respectively. [Bug 315] - -Thu Sep 9 09:39:46 1999 Kirthika Parameswaran - - * etc/purify.solaris2: Added suppression for MLK due to OS accept - call. [Bug 227] - -Thu Sep 09 09:24:29 1999 David L. Levine - - * tests/run_tests.lst: disabled Signal_Test. [Bug 309] - -Thu Sep 9 08:46:58 1999 Douglas C. Schmidt - - * tests/Lazy_Map_Manager_Test.cpp (main): ACEified this a bit - and fixed a typo for the argv argument in main(). - - * Updated the ACE-mail.html file to put the *-request addresses - first. Thanks to Lorin Hochstein for this - suggestion. - -Wed Sep 08 23:01:22 1999 Nanbor Wang - - * examples/Service_Configurator/Misc/Timer_Service.h: Added - ACE_Svc_Export specifiers. - - * examples/Service_Configurator/Misc/Misc.dsw: - * examples/Service_Configurator/Misc/Timer.dsp: Added a new - project file for the dll file. - -Wed Sep 08 22:19:47 1999 David L. Levine - - * ace/config-qnx-neutrino.h: added some magic to allow - compilation to succeed when optimization is enabled, - for x86 targets. The egcs 1.1.2 string.h #includes - x86/string.h, which has anti-social #defines for - memcmp, memcpy, and memset. Therefore, they can't be - used as C++ member functions, such as in ACE_OS. The - hack is to disable optimization just when #including - string.h. - - * include/makeinclude/platform_qnx_neutrino.GNU: default - both optimize and repo to 1. - -Wed Sep 8 17:25:07 1999 Douglas C. Schmidt - - * ace/OS.h (ACE_FACTORY_DEFINE): It shouldn't be necessary - to use ACE_dynamic_cast() or ACE_static_cast() for the - ACE_FACTORY_DEFINE macro because ACE_Service_Object's destructor - is virtual. Thanks to Carlos for pointing this out. - -Wed Sep 8 16:51:45 1999 Kirthika Parameswaran - - * ace/Acceptor.cpp (handle_close): Removed a unnecessary check - for which was causing UMR to occur. - -Wed Sep 08 16:48:55 1999 David L. Levine - - * include/makeinclude/wrapper_macros.gnu (purify): moved - -ignore-signals option to tests/Makefile, because that's - where it's needed. - - * tests/Makefile (purify): added SIGHUP and SIGTERM to - -ignore-signals, to prevent warnings from Signal_Test. - [Bug 309] - -Wed Sep 8 15:58:07 1999 Douglas C. Schmidt - - * tests/Log_Msg_Test.cpp (test_ostream): Make sure to add 1 - to the buffer we allocate dynamically so we can put a NUL at the - end of it! Thanks to David Levine for reporting this. [Bug 312] - - * examples/Service_Configurator/Misc/main.cpp (main): Changed the - test of the -f Service Configurator option so that it links two - different svc.conf files to avoid reentrancy problems. - - * examples/Service_Configurator/Misc/svc.conf: Revised this - svc.conf file (and the application) to illustrate the use of - both static *and* dynamic service. Thanks to Amir Bahmanyari - for motivating this. - -Wed Sep 8 14:05:00 1999 Kirthika Parameswaran - - * ace/Log_Msg.cpp: Shifted the instantiations to the top to keep - SunCC5.0 debug=0 build happy. - - * tests/Cached_Accept_Conn_Test.cpp: Repositioned global - declarations to ward off compilation errors on HP-UX. - -Wed Sep 8 13:13:18 1999 Douglas C. Schmidt - - * ace/Process.h (ACE_Process): Made the spawn() method virtual - so code can be executed just before and/or after the actual - fork(). Thanks to Dave Madden for this fix. - -Tue Sep 07 19:55:52 1999 Irfan Pyarali - - * ace/Map_Manager.h (ACE_Map_Manager): The old map manager (the - one before the changes made to support the active map manager) - used to allow deletion of entries from the map during iteration - (note that this feature was accidental since typically changes - to container invalidates the iterators). The new design did not - support this "feature". However, some users had come to depend - on this feature. - - The solution was to delay the movement of freed slots from the - occupied list to the free list until we run out of free slots in - the free list when binding new entries into the map. However, - this change requires additional state in each entry that keeps - track of whether this entry has been freed. Also, the time - required for binding new entries is less predictable since the - bind may require moving of freed slots from the occupied list to - the free list because of the initial lazy unbind. - - Changes were also required to the Active_Map_Manager since it - directly depends on the internals of the Map_Manager. - - Since this lazy feature is not required in the majority of cases - and results in increased memory consumption, this feature is - only support if ACE_HAS_LAZY_MAP_MANAGER is defined. - - A new test Lazy_Map_Manager_Test.cpp was added to check the new - changes. - - Thanks for Dr. Schmidt for helping with this solution and to - Murphy Ivan for pointing out this - problem. - - Bug fixed: id 228. - -Tue Sep 7 15:19:33 1999 Douglas C. Schmidt - - * tests/Log_Msg_Test.cpp (test_ostream): NUL-terminated the buffer - to avoid an array bounds overflow! Thanks to David Levine for - reporting this. - -Tue Sep 7 12:38:37 1999 Darrell Brunsch - - * tests/Reactor_Timer_Test.cpp: Purify was showing an UMR in - test_registering_one_handler(). This was because Time_Handler - didn't have a constructor that initialized its timer_id_ member - and it wasn't being set in this method (like the others). I - added a default constructor to Time_Handler. [Bug 249] - -Tue Sep 7 08:04:41 1999 Douglas C. Schmidt - - * ace/OS.i (isatty): Fixed this code so that it doesn't use - osf_handle() anymore on NT, but instead just casts the - ACE_HANDLE to an int. Thanks to Mark Winrock - for suggesting this fix and - testing it out. - - * tests/run_tests.lst: Added Signal_Test. - -1999-09-07 Douglas C. Schmidt - - * tests/Signal_Test.cpp (main): Fixed the test so that it won't - try to run the "synchronous signal handler in a separate thread" - on Linux because Linux threads are non-standard wrt signals. - -Mon Sep 6 21:19:27 1999 Douglas C. Schmidt - - * tests/Signal_Test.cpp (run_test): Added an ACE_UNUSED_ARG - for the synchronous_signal_handler pointer-to-function for the - case where ACE_HAS_THREADS is disabled. Otherwise, we get a - warning. - -Mon Sep 6 18:47:18 1999 Darrell Brunsch - - * ace/Process_Manager.h: Moved handle_signal outside of a !defined - ACE_WIN32 block and moved handle_input inside of it, and this - fixes some errors on MSVC. - -Mon Sep 6 14:19:14 1999 Douglas C. Schmidt - - * tests/Reactor_Notify_Test.cpp (main): Added a hyphen to - the ACE_DEBUG printout "with timeout =" so that it says "with - time-out =" to avoid confusing the run_tests.sh script! Thanks - to David Levine for reporting this. - - * ace/Process_Manager.cpp: Integrated more patches from - Dave Madden so that the correct - register_handler() method is used on Win32. - -Mon Sep 06 15:05:17 1999 David L. Levine - - * ace/Makefile: moved ACELIB setting (to null) to before include - of rules.lib.GNU. That way, rules.lib.GNU can use the value of - $(ACELIB) to determine whether the ACE library object files - should be linked into the library, with repo=1. [Bug 248] - - * include/makeinclude/rules.lib.GNU: with repo=1 when building - static libs, except for libACE, include all of the ACE lib's - object files. The prevents multiple instantiations, by GNU - repo, of templates that are used in the ACE library. See the - gcc info pages, Template Instantiation node, for more information. - [Bug 248] - -Mon Sep 6 08:45:31 1999 Douglas C. Schmidt - - * examples/Reactor/WFMO_Reactor: Cleaned up some of the coding in - the examples. - - * ace/Profile_Timer.cpp: Reformatted the code a bit. - - * examples/Threads/process_manager.cpp (main): Fixed some warnings - and errors. Thanks to David for reporting this. - - * ace/OS.i: Fixed ACE_UNUSED_ARG(options) to be - ACE_UNUSED_ARG(wait_options). Thanks to David's build logs for - reporting this. - - * tests/Signal_Test.cpp: Changed the types of parameters passed - to run_test() from int to long so that we can safely cast them - to and from void *'s. Thanks to David Levine for pointing this - out. - - * ace/Process_Manager.cpp (notify_proc_handler): Removed - the now unused parameter h. Thanks to David for pointing this - out. - -Mon Sep 06 07:25:01 1999 David L. Levine - - * ace/OS.h: added ACE_Export to ACE_OS_Exit_Info class - declaration. It shouldn't be necessary, but - Dmitry Goldshtain reports that - Builder 4 needs it. - -Mon Sep 06 03:31:34 1999 Nanbor Wang - - * tests/Signal_Test.cpp (run_test): Removed a redundant use of - ACE_UNUSED_ARG (synchronous_signal_handler). Thanks to KCC 3.3e - for pointing this out. - -Mon Sep 6 01:03:03 1999 Douglas C. Schmidt - - * examples/Threads/Makefile (BIN): Added process_manager.cpp - back into the list of programs that get built automagically. - - * ace/Process_Manager: Added some new patches from Dave Madden - that continue to improve the - ACE_Process_Manager and make it portable between NT and UNIX. - - * examples/Threads: Readded process_manager.cpp now that - Dave Madden has updated it. - -Sun Sep 05 23:52:16 1999 Nanbor Wang - - * ace/OS.h (WIFEXITED,WEXITSTATUS): On platforms that do not - define these macros, we should always assume the child process - exit properly because the return status does not tell us how the - process exited. Likewise, the WEXITSTATUS macro should simply - return the status we got from ACE_OS::wait because it only - contains the exit status of child process. - -Sun Sep 5 23:40:25 1999 Douglas C. Schmidt - - * examples/QOS: Continued to improve the coding style so it'll - look like normal "ACE" code. - -Sun Sep 05 21:32:40 1999 David L. Levine - - * ace/Synch.cpp: removed unnecessary #include of ace/Object_Manager.h. - -1999-09-05 Vishal Kachroo - - Made the receiver of QOS test portable by removing - Win32-isms from it. Files modified : - - * examples/QOS/QosEvent.h: - * examples/QOS/server.cpp: - -Sun Sep 5 13:40:18 1999 Michael Kircher - - * ace/ACE.cpp: Made the status code to be of type - ACE_exitcode instead of int. This is necessary - because of the change on waitpid (). - -Sun Sep 5 10:59:18 1999 Douglas C. Schmidt - - * ace/Process.i (wait): Removed the ACE_static_cast() Michael - had added recently because the change below makes it - unnecessary. - - * ace/OS.h (ACE_OS): Modified the 3-arg wait() and the waitpid() - methods to take an ACE_exitcode* rather than int* so this will - work on Win32. - - * ace/Log_Msg.cpp: Added a new explicit template instantiation - for template class - - ACE_Guard >; - - to fix compiler errors that showed up with EGCS. - - * tests/Signal_Test.cpp (run_test): Added ACE_UNUSED_ARG macros - for several symbols that aren't used when the test is compiled - single threaded. - -Sat Sep 05 02:05:00 1999 Michael Kircher - - * ace/OS.cpp: Fixed a missing "#else". - - * ace/Process.i, - ace/Process_Manager.h, - ace/Process_Manager.cpp: - Fixed an "int" versus "ACE_exitcode" conversion - problem. - -Sat Sep 4 23:37:29 1999 Douglas C. Schmidt - - * ace/config-win32-common.h: Missing a '&&' that was causing - problems on Win32. Thanks to Michael Kircher - for reporting this. - -Sat Sep 04 20:24:32 1999 David L. Levine - - * ace/Handle_Gobbler.i (close_remaining_handles,free_handles): - moved the function definitions ahead of their first use in - the file. - -Sat Sep 04 20:17:49 1999 David L. Levine - - * ace/Pipe.cpp (open): added ACE_UNUSED_ARG (buffer_size) - for all platforms that #define ACE_LACKS_SOCKET_BUFSIZ. - -Sat Sep 4 14:43:36 1999 Douglas C. Schmidt - - * tests/Signal_Test.cpp: Finished off the test so that it now - works for all the various combinations of synchronous and - asynchronous tests. Now, to make it work on Linux... - - * ace/OS.h: The use of ACE_static_cast in the ACE_FACTORY_DEFINE macro - didn't make any sense, so I've replaced it with - ACE_dynamic_cast. - - * ace/Process_Manager.*, - * ace/Process.*, - * ace/OS.h: - Created a new typedef called ACE_exitcode that factors out the - difference between Win32 and UNIX exit codes from wait() - operations. Thanks to Dave Madden for - suggesting this. - -Sat Sep 04 12:22:38 1999 David L. Levine - - * ace/OS.i (shm_open,close,filesize,ftruncate,mmap): moved - these functions up in the file so that they're defined before - being used by ACE_OS::sema_init (). - -Fri Sep 3 11:57:24 1999 Douglas C. Schmidt - - * ace/Event_Handler.h (ACE_Event_Handler): Added the new - handle_exit() method, which is called by the ACE_Process_Manager - when a process exits. Thanks to Dave Madden - for contributing this. - - * ace/Process.*, - ace/Process_Manager.*: Integrated a new round of changes from - Dave Madden that factor out most of the - remaining differences between Win32 and UNIX. - - * ace/OS.h, - * ace/config-win32-common.h: Added a #ifndef for __IBMCPP__ to - make things work for Visual Age C++. Thanks to Boris Kaminer - for reporting this. - - * ace/{ACE,OS}: Added ACE_HAS_UNICODE to conditionally compile the - strnew() definition. Thanks to Boris Kaminer - for reporting this. - - * ace: Added a new optimized ace-dll.icc file so that ACE will - build better with IBM's Visual Age C++. Thanks to Boris Kaminer - for contributing this. - - * ace/OS.h, - * ace/config-win32-common.h: Added a #ifndef for __IBMCPP__ to - make things work for Visual Age C++. Thanks to Boris Kaminer - for reporting this. - - * ace/{ACE,OS}: Added ACE_HAS_UNICODE to conditionally compile the - strnew() definition. Thanks to Boris Kaminer - for reporting this. - - * ace: Added a new optimized ace-dll.icc file so that ACE will - build better with IBM's Visual Age C++. Thanks to Boris Kaminer - for contributing this. - -1999-09-03 Vishal Kachroo - - * ace/OS.i: - * ace/OS.h: Added a new overloaded ACE_OS::ioctl () function that - takes in ACE_QoS as one of the parameters, constructs a windows - QOS from it and passes it to WSAIoctl (). This function can be - used when the I/O control code is SIO_SET_QOS. - -Fri Sep 3 14:58:51 1999 Darrell Brunsch - - * config-aix-4.x.h: - * config-hpux-10.x-hpc++.h: - * config-hpux-11.x-hpc++.h: - * config-mvs.h: - * config-win32-borland.h: - * config-win32.h: - Moved many of the preprocessor information for various - platforms from TAO_IDL to here (in ACE_CC_PREPROCESSOR and - ACE_CC_PREPROCESSOR_ARGS). - -Fri Sep 3 13:52:43 1999 Carlos O'Ryan - - * bin/auto_compile: - Fixed the implementation of the -dont_run option. - -Fri Sep 3 09:05:20 1999 Kirthika Parameswaran - - * ace/Containers_T.cpp (delete_nodes): Removed the redundant check - which was verifying that was always > 0. But - itself is unsigned so thsi check was redundant - causing warnings with egcs. - -Thu Sep 2 23:54:49 1999 Nanbor Wang - - * ace/Containers_T.h (class ACE_Double_Linked_List): Added more - comments to stress that this is not a general purpose container - class. Thanks to Rusty Conover for - suggesting this. - -Thu Sep 2 18:39:23 1999 Douglas C. Schmidt - - * ace/Process_Manager.cpp (handle_close): Did a better job of - fixing the use of ACE_UNUSED_ARG to make EGCS happy. - -Thu Sep 2 12:21:41 1999 Douglas C. Schmidt - - * ace/Select_Reactor_Base: Renamed the notify_set_, alloc_set_, - and free_set_ to *_queue_ since that's what they really are! - -Thu Sep 2 17:42:22 1999 Carlos O'Ryan - - * ace/Malloc_T.cpp: - Eliminated UMR problem with the position independent malloc - support. Thanks to Doug for figuring this stuff out. - -Thu Sep 2 12:21:41 1999 Douglas C. Schmidt - - * tests/Log_Msg_Test.cpp (test_log_msg_features): Changed the - use of %p to prevent an error message from being printed that'll - confuse the run_tests script. - - * Just added the 700th non-DOC group individual who has contributed - to ACE+TAO over the years. In the last year, we've gone from - 400 to 700 contributors, which is great! - - * tests/CDR_File_Test.cpp (main): Fixed a signed/unsigned warning - and removed the unreferenced argc/argv parameters. - - * tests{run_tests.lst,Makefile}: Added the new ACE_Log_Msg.cpp - test. - - * tests: Added a new test called Log_Msg_Test.cpp. This exercises - the many features of the ACE_Log_Msg class. - - * tests/Object_Manager_Test.cpp (main): Just reformatted some - stuff. - -Thu Sep 2 14:42:31 1999 Kirthika Parameswaran - - * tests/Cached_Accept_Conn_Test.cpp: Repositioned - ACE_HAS_BROKEN_EXTENDED_TEMPLATES macro before the inclusion of - the header since thats where the typedefs had been shifted. - Also, to keep both gcc2.7.3 and sunCC5.0 w.o debugging symbols - happy it was necessary to move the definitions of - methods before the instantiations. - -Thu Sep 2 12:21:41 1999 Douglas C. Schmidt - - * ace/OS.h: Added an ACE_static_cast in the ACE_FACTORY_DEFINE macro - to let the compiler catch "bad casts," i.e., when X isn't allow - to be cast from an ACE_Service_Object. Thanks to Jody Hagins - for suggesting this. - - * ace/config-win32-common.h: Deleted - - #define ACE_LACKS_STRPTIME - - and added - - #define ACE_HAS_STRPTIME - #define ACE_LACKS_NATIVE_STRPTIME - - In addition, I removed the wday and yday stuff in - ACE_OS::strptime(). Thanks to Kevin Lyda - for suggesting this. - - * ace/OS.h: Make sure to add a cast to ACE_Service_Object * in the - ACE_FACTORY_DEFINE macro so that the offset will be corrected - automagically. Thanks to Eric C. Newton for - reporting this and suggesting a fix. - - * ace/Log_Msg: Modified the msg_callback(ACE_Log_Msg_Callback *) - method to return the existing ACE_Log_Msg_Callback * so we can - support "chaining". - - * ace/Log_Msg.cpp: Added explicit template instantiations for - ACE_Reverse_Lock. - - * ace/Log_Msg.cpp: Changed the implementation described below to - use an ACE_Reverse_Lock, which is cool ;-). Thanks to Carlos - for explaining how this worked. - - * ace/Log_Msg.cpp: Don't hold the lock during a msg_callback() to - avoid deadlock. Thanks to Matthew Davis - for reporting this. - - * tests/Cached_Accept_Conn_Test.cpp: Removed a "static" from - int debug so that the friggin' SunC++ compiler will link... - -Thu Sep 02 11:04:18 1999 David L. Levine - - * bin/check_build_logs: added /dev/null to egrep invocation - so that it always shows the file name. Thanks to Doug for - reporting this. - -Thu Sep 02 11:02:25 1999 David L. Levine - - * ace/config-qnx-neutrino.h: added ACE_LACKS_SOCKET_BUFSIZ. - -Thu Sep 2 08:56:39 1999 Jeff Parsons - - * ace/CDR_Stream.h: - * ace/CDR_Stream.i: - Added << and >> operators for ACE_CDR::Char. These are not - to be used by TAO or the IDL compiler, they are solely for - use with the ACE library, so that 1-byte values can be - streamed without using the CORBAisms to_char and from_char. - Otherwise, if a 1-byte value were on the rhs of a CDR operator, - the compiler will probably promote the operator to the one - using ACE_CDR::Short, which is not at all what we want. - -Wed Sep 1 21:37:59 1999 Douglas C. Schmidt - - * tests/Makefile (BIN): Added the new CDR_File_Test.cpp to - the list of files that are automatically built. Also, added - this to run_tests.lst. - - * tests: Added a new test called CDR_File_Test, which - exercises the ACE_CDR_Stream features in conjunction with file - I/O. Thanks to Giga Giguashvili . - - * tests/CDR_Test.cpp: Moved the main() function to the end - of the file. - - * ace/OS.i: Moved the new ACE_OS::filesize() method down in - this file until *after* the ACE_OS::close() method to prevent a - "used before being inlined" error on DU. Thanks to David for - reporting this. - -Wed Sep 1 20:41:03 1999 Carlos O'Ryan - - * tests/run_tests.lst: - Disabled the Time_Service_Test, it was crashing the parent - process. - -Wed Sep 01 19:46:30 1999 David L. Levine - - * bin/check_build_logs: allow log directory (-l option argument) - to start with anything except -. - -Wed Sep 1 17:15:25 1999 Kirthika Parameswaran - - * ace/Arg_Shifter.cpp (get_current_parameter): Removed egcs - warnings by making int and also cleaned up the - code. - -Wed Sep 1 15:51:41 1999 Douglas C. Schmidt - - * examples/Timer_Queue/Thread_Timer_Queue_Test.cpp: Fixed a typo - where ACE_reinterpret_cast() was misspelled. Thanks to - David for reporting this. - - * examples/QOS/server.cpp: "ACE"-ified this example. - - * ace/OS: Added a new method called ACE_OS::filesize() that - takes a LPCTSTR so that we can pass a file name to this. - - * ace/config-win32-borland.h: Changed ACE_CC_COMPILER to - CPP32.EXE on the recommendation of Christopher Kohlhoff - . - - * ace/Synch.h: Updated the documentation of ACE_Semaphore::remove() - to clarify that it should only be called by one thread to avoid - race conditions. Thanks to Clarence Bishop - for mentioning this. - -1999-09-01 Vishal Kachroo - - * ACE_wrappers/ace/OS.h: - * ACE_wrappers/ace/OS.i: - Added a wrapper ACE_OS::enum_protocols () for WSAEnumProtocols(). - Tested this function with the ACE QOS test. - - * examples/QOS/client.cpp: - * examples/QOS/server.cpp: - Replaced the occurences of WSAEnumProtocols with - ACE_OS::enum_protocols () and successfully ran the QOS test. - -Wed Sep 1 15:51:41 1999 Douglas C. Schmidt - - * ace/OS.i: Ensure that ACE_OS::localtime_r() does the "Right - Thing"[TM], i.e., returns the pointer in the buffer provided by - the user, even if there's no native support for localtime_r() on - the OS platform. In addition, added an ACE_OS_GUARD for this - use-case so that we don't have race conditions in MT programs. - This necessitated moving the localtime_r() wrapper facade into - the OS.cpp file. Thanks to Jody Hagins for - these suggestions. - - * ace/SV_Semaphore_Complex: Improved the documentation a bit - based on comments from Herbert . - -Wed Sep 1 15:15:00 1999 Luther Baker - - * ace/Arg_Shifter.h: Added function (get_current_parameter(offset) - to return parameters that may be mangled with flags. - - * ace/Arg_Shifter.cpp: Implemented function above. - -Wed Sep 1 14:50:48 1999 Nanbor Wang - - * ace/OS.h: Added definitions for _O_BINARY, _O_TEXT, and _O_RAW - if they are not defined. Thanks to Kevin Lyda - for pointing this out. - -Wed Sep 1 14:30:58 1999 Darrell Brunsch - - * ace/Process_Manager.cpp: Typo fixed. - -Wed Sep 1 11:18:26 1999 Douglas C. Schmidt - - * tests/Reactor_Notify_Test.cpp: Fixed an erroneous use of = - rather than != and added another pair of explicit template - instantiations for ACE_Auto_Basic_Ptr<>. Thanks to Carlos for - reporting this. - - * ace/Process_Manager.cpp (handle_close): Removed a warning - about unused parameter. Thanks to David for reporting this. - - * tests/Reactor_Notify_Test.cpp: I needed to add - - #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) - - rather than - - #else - -Wed Sep 01 11:55:31 1999 Steve Huston - - * ace/CORBA_Handler.{h cpp} (ACE_ST_CORBA_Handler): Made the - ACE_ST_CORBA_Handler instance get cleaned up via object manager - at rundown, giving it a chance to clean up it's reactor - registrations and reset its Orbix callbacks. Also added a new - capability of allowing the ACE_ST_CORBA_Handler to daisy-chain - the Orbix callbacks - this is only enabled if - ACE_TAKEOVER_ORBIX_CALLBACKS is set in the config.h file, and - its use is highly discouraged unless you really know what you're - doing and can account for all of the callbacks. - -Wed Sep 1 11:18:26 1999 Douglas C. Schmidt - - Thanks to David for reporting this. - - * tests/run_tests.lst: Disabled the Process_Manager_Test - until it's stable. Thanks to David for reporting this. - -Wed Sep 1 00:05:04 1999 Douglas C. Schmidt - - * ace/config-win32-borland.h: Added a #define for ACE_CC_COMPILER - so that things will work properly on Borland. Thanks to - Goldshtain Dmitry and Adrian - Mercieca for reporting this. - -Wed Sep 01 10:45:15 1999 David L. Levine - - * ace/OS.{h,cpp} (ACE_OS_Object_Manager::init,fini): replaced - use of ACE_ERROR with a new, private method (print_error_message). - If one of the operations in init () fails, then the Log_Msg - instance might not work properly. Thanks to Alain Magloire - for noting this. - - print_error_message also consolidates the common const char - strings into one place. This entire changes reduces the size - of OS.o by about 900 bytes. - -Wed Sep 1 00:05:04 1999 Douglas C. Schmidt - - * tests/Reactor_Notify_Test.cpp: Only run the iterations in - this test for 2000 times, not 10000 times. - -Wed Sep 1 07:41:58 1999 Jeff Parsons - - * ace/Process_Manager.cpp (wait): - An ACE_NEW_RETURN needed ACE_INVALID_PID for the return - value instead of ACE_INVALID_HANDLE. - -Wed Sep 1 00:05:04 1999 Douglas C. Schmidt - - * tests/Process_Manager_Test.cpp: Made some minor changes in - this test so that it'll compile. We still need to update it so - it'll run correctly with the new version of ACE_Process_Manager, - however. - - * ace/Process_Manager: Integrated the latest and greatest - ACE_Process_Manager from Dave Madden . This - should now work relatively transparently on all OS platforms - that support processes. We'll be adding a new - Process_Manager_Test.cpp shortly... - - * tests/Reactor_Notify_Test.cpp: Modified this test to exercise - the new user-level notification queueing in the ACE_Reactor. - -Tue Aug 31 16:05:14 1999 Douglas C. Schmidt - - * ace/Process_Manager.cpp (handle_close): Added an ACE_UNUSED_ARG - to keep the compiler from warning that the "handle" parameter - isn't used. - - * ace/OS.h: Added a new #defined called - ACE_REACTOR_NOTIFICATION_ARRAY_SIZE that designates the size of - the array of ACE_Notification_Buffers used by the new Reactor - user-level notification queue feature. - - * ace/Select_Reactor_Base: Added support for a user-level - notification queue that can buffer very large amounts of pending - notifications, i.e., well beyond the 64 kbyte limit imposed by - the use of a socket. This feature is only enabled if - ACE_HAS_REACTOR_NOTIFICATION_QUEUE is enabled in a config.h - file. Thanks to Detlef Becker - for suggesting this and contributing a prototype implementation. - -Tue Aug 31 20:10:49 1999 Yamuna Krishnamurthy - - * ace/OS.h: Added the ACE_HAS_NO_THROW_SPEC check in order to - suppress the generation of throw specs to placate some compilers - and make it easier for CORBA developers to by lazy wrt C++ - exception throw specs ;-). Thank to Andreas Geisler - for suggesting this addition - -1999-08-31 Vishal Kachroo - - Modified the ACE GQoS test to use a single handler registered - for QOS_MASK|READ_MASK instead of two separate handlers. Had to - remove the following files and add other files. - - * ACE_wrappers/examples/QOS/QOS_Event_Handler.cpp - * ACE_wrappers/examples/QOS/Read_Handler.h - * ACE_wrappers/examples/QOS/QOS_Event_Handler.h - * ACE_wrappers/examples/QOS/Read_Handler.cpp - - Added the following files : - - The Sender event handler is only registered for QOS events. It - uses the ACE_OS::sendto () as soon as it receives a QOS event. - - * ACE_wrappers/examples/QOS/Sender_QOS_Event_Handler.cpp - * ACE_wrappers/examples/QOS/Sender_QOS_Event_Handler.h - - The Receiver event handler is registered for both QOS as well as - READ events since it has to initially wait for a PATH RSVP - message from the sender (QOS event, finally!!) and then read - from the same QOS enabled socket. - - * ACE_wrappers/examples/QOS/Receiver_QOS_Event_Handler.cpp - * ACE_wrappers/examples/QOS/Receiver_QOS_Event_Handler.cpp - - The client and server have been modified to subscribe to the - same multicast session. The RSVP SP on the receiver side sends - RESV messages at the earliest indication of QOS parameters AND - existence of a matching PATH state. This state is found only if - a multicast socket has been created (by the sender) with a - matching "multicast session" address. - - * ACE_wrappers/examples/QOS/server.cpp: - * ACE_wrappers/examples/QOS/client.cpp: - - Modified the following to incorporate the removal and addition - of files listed above. - - * ACE_wrappers/examples/QOS/QOS.dsw - * ACE_wrappers/examples/QOS/client.dsp - * ACE_wrappers/examples/QOS/server.dsp - -Tue Aug 31 16:05:14 1999 Douglas C. Schmidt - - * ace/Malloc_T, - * ace/Malloc: For historical reasons, we'd had a nested class - called ACE_Malloc_Control_Block within ACE_Malloc_Header. This - was redundant and confusing, so I merged the fields of - ACE_Malloc_Control_Block into ACE_Malloc_Header. In addition, I - also added a constructor that initialized the fields to 0 so - that we won't have problems with Purify complaining about - uninitialized memory reads. Thanks to Carlos for reporting - this. - -Tue Aug 31 15:54:56 1999 Douglas C. Schmidt - - * ace/Process_Manager.h: There was a bizarre default value - for the pid parameter, which was helping to cause ambiguity - warnings from the C++ compiler. I've removed this. - -Tue Aug 31 00:16:34 1999 Douglas C. Schmidt - - * build/egcs/tests/Cached_Accept_Conn_Test.h: Moved the template - class into the header file so that IBM C++ will be happy. - - * tests/Cached_*_Test.h: Updated these files to include the proper - descriptive information. - - * tests/Upgradable_RW_Test.h: Cleaned up the formatting for this - test. - - * tests/Cached_Accept_Conn_Test.cpp, - * tests/Cached_Conn_Test.cpp, - * tests/Conn_Test.cpp, - * tests/DLList_Test.cpp, - * tests/Hash_Map_Manager_Test.cpp: - Fixed some "order of definition" problems caused by the - workarounds for SunC++ 5.0 -g bugs. Also replaced the use of - ADDR and STRING with ACE_ADDR and ACE_STRING to avoid potential - clashes with symbols in the global name space. Thanks to David - for reporting this. - -1999-08-31 Vishal Kachroo - - * ACE_wrappers/examples/QOS/server.cpp - * ACE_wrappers/examples/QOS/client.cpp - * ACE_wrappers/examples/QOS/QOS_Event_Handler.cpp - * ACE_wrappers/examples/QOS/QosEvent.h - * ACE_wrappers/examples/QOS/Read_Handler.h - * ACE_wrappers/examples/QOS/QOS_Event_Handler.h - * ACE_wrappers/examples/QOS/Read_Handler.cpp - * ACE_wrappers/examples/QOS/QOS.dsw - * ACE_wrappers/examples/QOS/client.dsp - * ACE_wrappers/examples/QOS/server.dsp: - These files test the new ACE GQoS features, which - implement IntServ features over WinNT 2000. - -Tue Aug 31 14:47:54 1999 Kirthika Parameswaran - - * ACE-INSTALL.html: Added a note on building egcs with the - -fsquangle option contributed by Skye Sweeney - . - -Tue Aug 31 00:16:34 1999 Douglas C. Schmidt - - * bin/clone.cpp: Modified this program so that it'll work more - flexibly with symbolic links. In particular, clone can now - generate symbolic links with relative pathnames to the source. - Thus, you can now call it like this: - - % clone -s ../../foo . - - and all of the cloned links will properly refer to ../../foo - (adding the appropriate number of extra '..'s to handle - directory nesting). Thanks to Jonathan Biggar - for these fixes. - - * ace/Process.cpp: Need to #include "ace/Signal.h". - - * Added a series of fixes that allow ACE to build and - run cleanly with SunC++ 5.0 and Solaris 7 even when debugging is - NOT enabled. These changes require moving the explicit template - instantiations from the BOTTOM of the *.cpp files to near the - top. Thanks to Robert Shewan for reporting - this. - - * ace/Process_Manager.cpp: Fixed some warnings. Thanks to - Carlos for reporting this. - -Mon Aug 30 21:14:46 1999 Douglas C. Schmidt - - * ace/Process_Manager.cpp: Added the destructor for - ACE_Process_Descriptor. Thanks to David for reporting this. - -Mon Aug 30 17:20:56 1999 David L. Levine - - * ace/config-qnx-neutrino.h: added ACE_LACKS_MUTEXATTR_PSHARED. - - * ace/OS.i (mutex_init): enable the ACE_UNUSED_ARG (type) - statement with ACE_LACKS_MUTEXATTR_PSHARED. - -Mon Aug 30 17:10:00 1999 Kirthika Parameswaran - - * ACE-INSTALL.html: Added a note about the "-fsquangle" option - to be used with egcs to shorten long symbol names. - -Mon Aug 30 16:12:36 1999 Douglas C. Schmidt - - * ace/Process.i: Oops, the implementation of gethandle() was - in a Win32-specific part of the code... - - * ace/Msg_WFMO_Reactor.h: Fixed a problem that was causing - ACE_Msg_WFMO_Reactor from being included in the documentation - windex files. Thanks to Jody Hagins for reporting this. - -Mon Aug 30 16:16:46 1999 Ossama Othman - - * PROBLEM-REPORT-FORM: - - Updated to point to refer reports ace-bugs mailing list. - -Mon Aug 30 14:27:26 1999 David L. Levine - - * tests/Cached_Accept_Conn_Test.cpp,Cached_Conn_Test.cpp, - Map_Manager.cpp: - use the explicit template instantiations even with - ACE_HAS_GNU_REPO. g++ 2.91.66 misses some of them with -frepo. - -Mon Aug 30 15:23:12 1999 Douglas C. Schmidt - - * ace/Process_Manager: Integrated the new features that make it - possible to notify a Reactor when a process exits. Thanks to - Dave Madden for contributing this. - - * ace/Process: Added a more portable timed wait() operation for - UNIX platforms. However, this method has the following two - limitations: (1) on UNIX platforms this function uses , - i.e., it overwrites any existing alarm and (2) it steals all - SIGCHLDs during the timeout period, which will break another - ACE_Process_Manager in the same process that's expecting SIGCHLD - to kick off process reaping. If you know a good solution to - this please let us know. Thanks to Dave Madden - for contributing this. - - * ace/Process: Added setgroup() and getgroup() methods to - ACE_Process_Options so that we can manage groups of processes. - Thanks to Dave Madden for contributing this. - - * examples/OS/Process/process.cpp: Added a new version that - tests the various wait() methods on ACE_Process. Thanks to Dave - Madden for contributing this. - - * config-chorus.h, - config-cray.h, - config-cygwin32-common.h, - config-freebsd-pthread.h, - config-freebsd.h, - config-hpux-9.x.h, - config-hpux-9.x.h, - config-lynxos.h, - config-netbsd.h, - config-sunos4-g++.h, - config-sunos4-lucid3.2.h, - config-sunos4-sun3.x.h, - config-sunos4-sun4.1.4.h, - config-sunos4-sun4.x-orbix.h, - config-sunos4-sun4.x.h, - config-win32-common.h: - Added ACE_LACKS_SETPGID on the assumption that platforms lacking - getpgid() won't have setpgid() either. If this turns out to be - incorrect, please let me know. - - * ace/OS: Added a new wrapper facade method for setpgid(). Thanks to - Dave Madden for contributing this. - - * ace/OS.h: Added a new macro called ACE_INVALID_PID. Thanks to - Dave Madden for contributing this. - - * ace/Local_Tokens.h: Added a comment explaining that these locking - classes aren't intended as general-purpose synchronization - mechanisms. Thanks to Brian Wright - - * examples/Misc/test_trace.cpp (main): Added a call to - ACE_OS::atexit() to make sure we test this someplace. - -Mon Aug 30 12:11:06 1999 Carlos O'Ryan - - * ace/Strategies.i: - Once a Recyclable object reaches the ACE_RECYCLABLE_CLOSED state - its state cannot change. This eliminates a nasty race condition - where one thread detects that the connection is closed (and sets - the state accordingly), but another thread changes the state to - IDLE, based on old information. - Thanks to Mark L Boriack for reporting - this problem and helping us debug it. - -Mon Aug 30 10:43:08 1999 Carlos O'Ryan - - * ace/config-irix6.x-common.h: - Added ACE_HAS_SIGSUSPEND and ACE_HAS_TIMEDWAIT - -Mon Aug 30 10:18:52 1999 Ossama Othman - - * PROBLEM-REPORT-FORM: - - Fixed typo. - - * acconfig.h: - * configure.in: - - Removed ACE_LACKS_ATEXIT test since the macro no longer exists. - - Added test for ACE_HAS_SIGSUSPEND. - -Mon Aug 30 07:38:11 1999 David L. Levine - - * tests/Message_Block_Test.cpp, - examples/Reactor/Misc/test_event_handler_t.cpp: - use the explicit template instantiations even with - ACE_HAS_GNU_REPO. g++ 2.91.66 misses some of them with -frepo. - -Sun Aug 29 22:57:26 1999 Douglas C. Schmidt - - * tests/Signal_Test.cpp (worker_parent): Revised the test - so that we transmit the parent process ID in argv so that the - child doesn't have to "guess." This solves the annoying - problems with Linux threads... - -Sun Aug 29 21:35:17 1999 David L. Levine - - * ace/config-g++-common.h: - 1) Don't #define ACE_HAS_EXPLICIT_INSTANTIATION with - ACE_HAS_GNU_REPO, so that -frepo can do its thing. [Bug 248] - 2) #undef ACE_HAS_STRING_CLASS with ACE_HAS_GNU_REPO, because - egcs 2.91.66 can't build IOStream test (due to an unresolved - basic_string method instantiation) otherwise. - - * ace/config-aix-4.x.h,ace/config-cygwin32-common.h, - ace/config-hpux-10.x-g++.h,ace/config-irix5.3-g++.h, - ace/config-irix6.x-g++.h,ace/config-linux-common.h, - ace/config-lynxos.h,ace/config-osf1-4.0.h,ace/config-sunos4-g++.h, - ace/config-sunos5.4-g++.h,ace/config-sunos5.5.h, - ace/config-unixware-2.*-g++.h: - moved ACE_HAS_STRING_CLASS #define before #include of - config-g++common.h, so that config-g++-common.h can #undef - it with ACE_HAS_GNU_REPO. - - * include/makeinclude/rules.lib.GNU: when ace_lib_prelink is - enabled, add a link step before building a library. This is - used, for example, to insert template instantiations into - object files. [Bug 248] - - * include/makeinclude/wrapper_macros.GNU: set ace_lib_prelink - to 1 when repo is enabled. Added ACE_NUL and ACE_NUL_STDERR - macros, for internal use to support the prelink step. [Bug 248] - -Sun Aug 29 07:53:33 1999 Douglas C. Schmidt - - * tests/Signal_Test.cpp: Linux threads are problematic because - getppid() isn't the process id of your parent PROCESS, it's the - "process" id of your parent THREAD. Yikes! Therefore, I had to - rearrange this test so that it'll work on Linux. - - * ace/config-qnx-neutrino.h, - * ace/config-vxworks5.x.h, - * ace/config-osf1-4.0.h, - * ace/config-sunos5.5.h, - * ace/config-linux-common.h: Added support for - the ACE_HAS_SIGTIMEDWAIT and ACE_HAS_SIGSUSPEND macros. - - * ace/OS: Added a new sigsuspend() wrapper to class ACE_OS. This - implementation is "smarter" than the default behavior of - sigsuspend(2) because it'll handle NULL sigset_t *'s gracefully. - - * ace/Signal: Make the use of ACE_Sig_Set & parameters - const-correct. - - * ace/Signal: Added a new method for ACE_Sig_Action that'll register - an ACE_Sig_Set's worth of signals simultaneously. - - * ace/Signal: Updated the documentation to explain what the various - constructors do. - - * ace/Process.h: Updated the documentation for ACE_Process::spawn() - to explain what the return values are. - - * tests/Makefile: Added Signal_Test to the list of tests that are - built automatically. - - * tests: Added a new test, Signal_Test.cpp, that exercises the - various signal handling capabilities supported by ACE on various - OS platforms. - - * ace/OS.h, - * ace/README, - * ace/config-vxworks5.x.h: - Removed all mention of the ACE_LACKS_ATEXIT feature. This is - now the default behavior because we ACE_OS_Object_Manager::at_exit() - to get consistent semantics, as described below. Thanks to David - for pointing this out. - - * ace/OS.i: Changed the implementation of ACE_OS::atexit() to always - use the ACE_OS_Object_Manager::instance ()->at_exit() method so - that we get consistent semantics across platforms. - -Sun Aug 29 18:27:38 1999 Ossama Othman - - * ACE.ifnames: - * ace-diff-config.in: - - Removed ace-diff-config.in and ACE.ifnames from the repository. - They are only used for internal ACE Configuration Project - testing. - - * Makefile.am: - * configure.in: - - Removed references to ace-diff-config.in and ACE.ifnames. - - * acconfig.h: - * configure.in: - - Added entries and tests for the following macros: - - ACE_AUTO_PTR_LACKS_RESET - ACE_HAS_LLSEEK - ACE_HAS_EXPLICIT_KEYWORD - ACE_HAS_MUTABLE_KEYWORD - ACE_HAS_STD_TEMPLATE_SPECIALIZATION - ACE_HAS_STD_TEMPLATE_METHOD_SPECIALIZATION - ACE_HAS_SIGTIMEDWAIT - ACE_LACKS_ATEXIT - ACE_LACKS_GETPPID - - * configure.in: - - Fixed auto_ptr test. auto_ptr was being used incorrectly. - -Sun Aug 29 07:53:33 1999 Douglas C. Schmidt - - * tests/Process_Manager_Test.cpp: Changed the names of the signal - handlers to one_child_synchronous_signal_handler() and - multiple_children_synchronous_signal_handler() to reflect how - they are used. - - * ace/OS.[hi]: Added a new wrapper for sigtimedwait() so that - we can encapsulate this. To make programming more consistent, - the encapsulation uses an ACE_Time_Value, rather than a struct - timespec. - - * ace/config-linux-pthread.h, - * ace/config-linux-lxpthreads.h: Removed the - - #define ACE_HAS_SIGWAIT - - macro since this was already defined in config-linux-common.h. - - * tests/Malloc_Test.cpp: Improved the test by printing out - additional diagnostic information. Also validated that it works - when ACE_DEFAULT_BASE_ADDR == 0 on Solaris using SunCC (with - purify) and EGCS. - - * ace/Malloc: Added a dump() method to ACE_Malloc_Header. - - * ace/Process_Manager.cpp (ACE_Process_Descriptor): Changed - a -1 to a 0 to prevent a compiler warning. Thanks to - David Levine and DEC UNIX for reporting this. - -Sun Aug 29 00:14:09 1999 Luther Baker - - * ace/Arg_Shifter.h (cur_arg_strncasecmp): Removed and replaced earlier - method 'is_or_contains_ignore_case' with 'cur_arg_strncasecmp.' - This method does less and it is more self-contained, adding protection - and greater flexibility for the program program using it. - - * ace/Arg_Shifter.cpp (cur_arg_strncasecmp): Implementation - corresponding with changes in ACE_Arg_Shifter class. - -Sun Aug 29 00:13:35 1999 Douglas C. Schmidt - - * ace/Process_Manager.i: Moved the destructor for - ACE_Process_Descriptor out of the *.i file since it's always - called by vector delete and therefore inlining it is pointless. - -Sat Aug 28 23:46:55 1999 Douglas C. Schmidt - - * ace/Process_Manager.cpp (resize): The loop should run - from 0 < this->current_count_ rather than 0 < - this->max_process_table_size_. - -Sat Aug 28 16:28:33 1999 David L. Levine - - * ace/Synch_T.i: reordered some methods to avoid - use before definition. - -Fri Aug 27 18:52:00 1999 Luther Baker - - * ace/Arg_Shifter.h (is_or_contains_ignore_case): added method - to facilitate CORBA spec in ORB_init. - - * ace/Arg_Shifter.cpp (is_or_contains_ignore_case): implemented - the method added. Part of a larger project to implement CORBA - spec regarding -ORB parsing in ORB_init. - -Fri Aug 27 18:58:50 1999 Douglas C. Schmidt - - * tests/run_tests.lst: Reenabled the Process_Manager_Test since - it now seems to work fine with EGCS after the fix noted below. - -Fri Aug 27 18:39:14 1999 Douglas C. Schmidt - - * ace/Process_Manager.cpp (wait): Fixed a mistake in the coding - logic whereby we were returning from the function in a loop even - when there was no error. Thanks to David Levine and DEC UNIX - for pointing this out. - -Fri Aug 27 16:05:49 1999 David L. Levine - - * ace/OS.*,Log_Msg.cpp,Synch_T.i: reverted changes of - Fri Aug 27 11:29:21 1999 David L. Levine - to see if they caused problems on NT. Thanks to Michael - and Jeff for reporting this. - -Fri Aug 27 12:01:37 1999 David L. Levine - - * ace/OS.cpp (mktime): added static cast of -1 return value - to time_t to avoid warnings on VxWorks. - -Fri Aug 27 11:38:36 1999 Nanbor Wang - - * ace/Service_Config.cpp (process_directives): Remember to close - down the svc.conf file pointers once they are processed. Thanks - to Lothar Werzinger for pointing - this out. - -Fri Aug 27 11:29:21 1999 David L. Levine - - * ace/OS.*: moved ACE_OS_Recursive_Thread_Mutex_Guard from - OS.cpp to OS.h so that Log_Msg.cpp can use it. - - * ace/Log_Msg.cpp: replaced use of ACE_Guards with - ACE_OS_Thread_Recursive_Mutex. [Bug 262] - - * ace/OS.h (ACE_OS_Recursive_Thread_Mutex_Guard::lock): - added this method. - - * ace/OS.cpp (ACE_OS_GUARD,ACE_TSS_CLEANUP_GUARD, - ACE_TSS_BASE_GUARD): fixed to use - ACE_OS_Recursive_Thread_Mutex_Guard::lock. Added - _RETURN versions. - - * ace/Synch_T.i: reordered some methods to avoid - use before definition. - -Fri Aug 27 09:53:09 1999 Joe Hoffert - - * ace/ATM_Stream.{h,cpp}: added get_vpi_vci method. - * examples/IPC_SAP/ATM_SAP/CPP-{client,server}.cpp: Changed tests to - print out VPI and VCI after connected. - -Fri Aug 27 10:50:10 1999 David L. Levine - - * ACE version 5.0.3 released. - -Fri Aug 27 09:32:26 1999 David L. Levine - - * bin/make_release: added some diagnostics to see why - diffs aren't being created. - -Fri Aug 27 07:17:58 1999 Toshio Hori - - * ACE-INSTALL.html: fixed a typo, missing ; after - < and >. - -Thu Aug 26 21:01:02 1999 Jim Rucker - - * ace/Thread_Manager.cpp (spawn_i): on VxWorks, if t_handle - is non-0, set it with thr_handle. - -Thu Aug 26 16:33:42 1999 David L. Levine - - * ace/Log_Msg.cpp: removed unnecessary #include "ace/Synch_T.h". - [Bug 262] - -Thu Aug 26 13:49:00 1999 David L. Levine - - * examples/Threads/Makefile: removed process_manager from BIN. - See Sat Aug 21 12:36:40 1999 Douglas C. Schmidt. - -Thu Aug 26 12:22:55 1999 David L. Levine - - * ace/config-ghs-common.h: on Sun, added - ACE_HAS_NONSTATIC_OBJECT_MANAGER. It's necessary - to prevent seg fault on startup. Thanks to - David Sunwall for - reporting this problem. - -Thu Aug 26 12:11:09 1999 David L. Levine - - * docs/ACE-guidelines.html: added guidelines to avoid - default arguments, and favor narrow interfaces. - -Thu Aug 26 11:44:26 1999 David L. Levine - - * tests/Time_Value_Test.cpp (main): added static casts - of the doubles to longs. g++ 2.7.2.3 warned about - passing a double to a long :-) - -Thu Aug 26 11:20:55 1999 David L. Levine - - * tests/Time_Value_Test.cpp (main): added a test showing - that ACE_Time_Value (2.5) == ACE_Time_Value (2). - The 2.5 gets coerced to a long with value 2. Beware . . . - -Thu Aug 26 10:43:04 1999 Carlos O'Ryan - - * ace/config-sunos5.6.h: - egcs-2.95 under Solaris 5.6 does not need - ACE_HAS_STL_QUEUE_CONFLICT, thanks to Krishnakumar - B. for reporting this problem. - This fixes [BUGID:264] - -Thu Aug 26 07:29:42 1999 David L. Levine - - * ace/OS.{h,i} (ACE_Time_Value): reverted - Wed Aug 25 22:05:54 1999 David L. Levine - change. It caused overload ambiguity when the types of - sec and usec didn't match, and on Sun CC 4.2/SunOS 5.6. - Thanks to Andy for reporting that. - -Wed Aug 25 22:05:54 1999 David L. Levine - - * ace/OS.{h,i} (ACE_Time_Value): added four new - constructors. One takes a double, to avoid surprises - (truncation) when constructing an ACE_Time_Value from - a double. The other three constructors take two - unsigned longs, ints, and unsigned ints. They avoid - the ambiguity introduced by the new double constructor. - Thanks to Dave Meyer for starting this :-) - - The double constructor is wrapped with - #ifndef ACE_LACKS_FLOATING_POINT. - - * tests/Time_Value_Test.cpp (main): removed cast of - 2.0 to long. - -Wed Aug 25 16:15:07 1999 David L. Levine - - * docs/ACE-subsets.html: removed spurious LOGGING_FILES - text. - -Wed Aug 25 15:55:05 1999 David L. Levine - - * ace/OS.{h,cpp},Object_Manager.*,Signal.i (default_mask): moved - the default_mask () static method from ACE_Object_Manager - to ACE_OS_Object_Manager, so that it can be used by - Log_Msg.cpp without layer inversion. (Left a deprecated, - inline ACE_Object_Manager::default_mask (), for backward - compatibility.) default_mask () now returns a sigset_t * - instead of an ACE_Sig_Set *, again to avoid layer inversion. - - * ace/Log_Msg.cpp (log): replaced use of ACE_Sig_Guard - with a bare-bones ACE_Log_Msg_Sig_Guard. [Bug 262] - -Wed Aug 25 14:53:58 1999 Carlos O'Ryan - - * bin/run_all.pl: - * bin/auto_compile: - The script did not start with the canonical trick to run perl - from [t]csh, [ba]sh or perl itself. - -Wed Aug 25 14:45:06 1999 Ossama Othman - - * tests/Process_Manager_Test.cpp: - - Explicitly include "ace/Signal.h" to make declaration of - ACE_Sig_Set class visible. - - return statement at end of multiple_children_sig_handler() - function is never reached. It was commented out to prevent - compiler warnings. - -Wed Aug 25 13:34:07 1999 Narendra Ravi - - * ACE-INSTALL.html: added information about -j GNU make option. - -Wed Aug 25 12:26:49 1999 Carlos O'Ryan - - * ace/OS.h: - On Borland C++ (and other platforms) we should use - std::bad_alloc instead of bad_alloc for the ACE_bad_alloc - exception. We use the ACE_USES_STD_NAMESPACE_FOR_STDCPP_LIB - macro to detect this. Thanks to Jody Hagins - for this fix. - - * tests/run_tests.lst: - Disabled the Token test, it is more trouble that it is worth. It - hangs and tends to freeze the complete testsuite. - -Wed Aug 25 12:09:32 1999 Carlos O'Ryan - - * Makefile: - Include (conditionally) the $TAO_ROOT/tao/tao_targets.GNU file, - that defines the targets required to compile just TAO. - -Tue Aug 24 21:47:44 1999 David L. Levine - - * ace/Synch_Options.{h,cpp} (timeout): added const to - ACE_Time_Value & argument, because it's not modified. - Thanks to John Lindal for suggesting this. - -Tue Aug 24 10:02:51 1999 Douglas C. Schmidt - - * tests/Process_Manager_Test.cpp: Fixed a number of warnings - caused by unused args and signed/unsigned mismatches. Thanks to - David Levine for reporting this. - - * ace/Service_Repository.h, - ace/Service_Config.h, - ace/OS.h: - Changed the default number of entries in the - ACE_Service_Repository from ACE_DEFAULT_SELECT_REACTOR_SIZE - to ACE_DEFAULT_SERVICE_REPOSITORY_SIZE, which defaults to - 1024. Thanks to Ivan Murthy for - suggesting this. - - -Tue Aug 24 16:23:07 1999 Carlos O'Ryan - - * bin/make_release: - Use an explicit temporary file to create the ChangeLog, i had - some problems with the previous scheme, but it could be my - shell. - When tagging TAO we have to change directories. - -Tue Aug 24 12:19:29 1999 Carlos O'Ryan - - * tests/Makefile: - Updated dependencies - - * performance-tests/TCP/tcp_test.cpp: - Fixed argument parsing. - -Tue Aug 24 10:37:02 1999 David L. Levine - - * bin/cvslog (find_changelogs): one more time: append /$file - to `pwd`, so that we can find ChangeLogs in child directories. - Always call basename (), again. - -Tue Aug 24 09:10:58 1999 David L. Levine - - * bin/cvslog (find_changelogs): don't call basename () immediately - after calling `pwd`, so that ChangeLogs in current directory - will be found. - -Tue Aug 24 07:11:52 1999 David L. Levine - - * ace/OS.*,Object_Manager.{h,cpp},README: with ACE_LACKS_ATEXIT, - use ACE_OS_Object_Manager::at_exit () to emulate atexit (). - [Bug 246] - - * tests/Object_Manager_Test.cpp,tests/Makefile, - tests/run_pharlap_tests.bat,tests/run_tests.bat, - tests/run_tests.lst,tests/run_tests.psosim, - tests/run_tests.vxworks,tests/t.icc,tests/icc.bat: - added Object_Manager_Test. - -Mon Aug 23 22:03:24 1999 Carlos O'Ryan - - * include/makeinclude/rules.lib.GNU: - * include/makeinclude/rules.local.GNU: - When compiling both shared and static libraries only one of them - was installed. Thanks to Paul Calabrese - for providing this fix. - -Mon Aug 23 21:41:43 1999 Carlos O'Ryan - - * tests/run_tests.pl: - We search for "Starting" instead of "starting" because that's - what the tests print out now. - -Mon Aug 23 21:20:28 1999 Carlos O'Ryan - - * docs/ACE-guidelines.html: - Added new guidelines relevant to ACE+TAO. - -Mon Aug 23 16:57:13 1999 Carlos O'Ryan - - * performance-tests/RPC/README: - * performance-tests/RPC/client.cpp: - Changed the options to make it more consistent with other tests - like this one. - Added a README file - -Mon Aug 23 16:53:00 1999 Carlos O'Ryan - - * performance-tests/Makefile: - * performance-tests/TCP/README: - Added a README file for the test - - * performance-tests/TCP/tcp_test.cpp: - Added options to pace the events and to control the message size - on the server side. - - * performance-tests/RPC/Makefile: - * performance-tests/RPC/client.cpp: - * performance-tests/RPC/ping.x: - * performance-tests/RPC/server.c: - Added a simple RPC test to compare sockets (ACE), RPC and TAO. - -Mon Aug 23 13:30:32 1999 Nanbor Wang - - * include/makeinclude/platform_sunos5_kcc.GNU: The optimization - flag for KCC should be +K3, not -K2. - -Mon Aug 23 10:56:40 1999 David L. Levine - - * bin/cvslog: added this wrapper around cvs log. It - expands ChangeLogTags to their ChangeLog entries. - Thanks to Luther for helping greatly with it. - -Mon Aug 23 08:46:37 1999 David L. Levine - - * ace/Object_Manager.{h,cpp}: replaced the use of - ACE_Unbounded_Queue with a new - ACE_Cleanup_Info_Node private helper class. The reduces - the size of libACE by over 4 Kb, and is the first step - towards moving the Object_Manager's atexit () support to - OS. [Bug 246] - -Mon Aug 23 07:28:02 1999 David L. Levine - - * tests/run_tests.check: changed "starting" to "Starting", - to match a recent change to test_config.h. - - * tests/test_config.h: changed one remaining "starting" to - "Starting", to be consistent. - -Mon Aug 23 07:08:17 1999 David L. Levine - - * tests/run_tests.lst: disabled Process_Manager_Test, - because it never terminates when built with egcs - on both Solaris 7 and Linux. - -Sun Aug 22 21:15:13 1999 David L. Levine - - * ace/Makefile: with Green Hills for x86 target, use - $(MAKE) instead of make to build .obj/gethrtime.o. - Thanks to Cliff_H_Campbell - for reporting this. - -Sun Aug 22 21:02:26 1999 David L. Levine - - * ace/config-vxworks5.x.h: added ACE_LACKS_ATEXIT. - -Sun Aug 22 21:01:18 1999 David L. Levine - - * ace/README: added ACE_LACKS_ATEXIT. - -Sun Aug 22 14:51:56 1999 Vishal Kachroo - - * ace/OS.i (join_leaf): Constructed a winsock2 QOS structure - within ACE_OS::join_leaf () from the corresponding ACE QOS - classes. Passed this QOS structure to WSAJoinLeaf (). - -Sun Aug 22 12:18:42 1999 Nanbor Wang - - * ace/Process.i (wait): Fixed a typo. - - * ace/Process.cpp (ACE_Process): Removed an extra underscore. - - * ace/OS.i (getppid): Removed undefined variable . - -Sat Aug 21 12:36:40 1999 Douglas C. Schmidt - - * ace/OS.h: Moved the ACE_OS::set_exit_hook() static method - into the OS.i file so be more consistent with the other ACE_OS - methods. Also, changed the signature of extern "C" void - ACE_OS_Object_Manager_Internal_Exit_Hook () to void - ACE_OS_Object_Manager_Internal_Exit_Hook (void) so that this - will match the type declaration for ACE_EXIT_HOOK. - [NOTE: that's not really a signature change. g++ needs the - "void", however, to avoid a bug without -pedantic.] - - * ace/Process_Manager.cpp: Use the new ACE_OS::wait() method, - which is portable to Win32, rather than ACE_OS::waitpid(). - - * tests/Process_Manager_Test.cpp: Completed the first major - enhancement to the test that exercises the new - ACE_Process_Manager features. This test builds and runs cleanly - on Solaris using CC and should run on other versions of UNIX - that support threads and processes. It would be great if - someone could improve it to run on Win32, as well. - - * ace/Process_Manager: Added support for the spawn_n() method, - which creates N new processes. - - * tests: Cleaned up the use of ACE_INIT_LOG/ACE_APPEND_LOG in - Process_Manager_Test.cpp and Malloc_Test.cpp so we don't lose - information. Both these tests now write their child processes' - output to "-child.log". - - * ace/Thread_Manager.h: Added a default value of 0 to the - exit() method since this is a common return status. - - * ace/config-win32-common.h: Added ACE_LACKS_GETPPID. - - * ace: Added a new wrapper for getppid(). For platforms that - don't support this system call, please add ACE_LACKS_GETPPID. - - * tests: Moved the $ACE_ROOT/examples/Threads/process_manager.cpp - example into the $ACE_ROOT/tests directory, renamed it to - Process_Manager_Test.cpp, and revised the test to illustrate the - new ACE_Process_Manager features. - - * tests/run_tests.lst: Added the Process_Manager_Test to the - list of tests to run. - - * tests/Malloc_Test.cpp (main): Added some necessary ASYS_TEXT - macros. - - * ace/Process.i: Rather than replicate the #ifdef logic in - ACE_OS::kill() within ACE_Process:kill(), we just forward to - ACE_OS::kill() and let it sort this out! - - * ace/Process: Moved several of the short wait() methods from the - *.cpp file to the *.i file and inlined them. - - * ace/Process_Manager.cpp: The logic for the implementation of - terminate() was incorrect, i.e., the process table entry should - be removed *if* ACE::terminate_process() succeeds but *not* if - it fails! - - * ace/OS.h: Added a new method called wait() that works portably - on Win32 and UNIX/POSIX platforms. - - * ace/Process: Added an optional "options" parameter to the former - "blocking" wait() method on ACE_Process. This allows clients to - use the WNOHANG option to avoid blocking if the child process - hasn't exited yet. Also changed the type of the return value to - pid_t rather than int. Finally, added an optional status - pointer to the "timed" wait() method (which only works on - Win32). - - * ace/OS.h: On platforms that do not define WNOHANG natively, - changed #ifdef of WNOHANG to 0100 (which can be used in bitmask - comparisons) rather than Douglas Adams favorite constant: 42. - -Sat Aug 21 14:13:46 1999 Carlos O'Ryan - - * ACE version 5.0.2 released. - -Sat Aug 21 11:52:51 1999 Carlos O'Ryan - - * Makefile: - Fixed small problem in the releaseall target. - - * bin/make_release: - The shell did not like the embedded script to print the - ChangeLog entry. - -Fri Aug 20 15:40:58 1999 Douglas C. Schmidt - - * ace/Process_Manager: Added a new method called wait() that's - just syntactic sugar for ACE_Process_Manager::reap(). Thanks to - Dave Madden for suggesting this. - - * ace/OS: Added support for ACE_OS::atexit(), which necessitated - changing the extern "C" signature for ACE_EXIT_HOOK to typedef - void (*ACE_EXIT_HOOK) (void) so that this will be consistent - with the signature expected by the ISO/ANSI C atexit() call. At - the moment, ACE_OS::atexit just calls ::atexit() (unless a - platform's config.h file #defines ACE_LACKS_ATEXIT). - Ultimately, we might want to have this hook into the - ACE_OS_Object_Manager's at_exit() support, which may be more - portable and reliable. - - * ace/ACE_Process_Manager.h: Made the destructor virtual so it's - possible to subclass from this class. - - * ace/Process_Manager.h: Updated the comments on the wait() - method to indicate that a signal handler must be used to keep - track of the number of remaining child processes. Thanks to - Dave Binder for motivating this. - -Thu Aug 19 18:45:00 1999 Chris Gill - - * ace/Auto_Ptr.h: modified ACE_AUTO_PTR_RESET macro, to pass the - type of the pointer. This is needed for the case where - ACE_AUTO_PTR_LACKS_RESET is defined, in order to explicitly - convert the pointer into an auto_ptr for assignment. - -Thu Aug 19 17:26:50 1999 John Heitmann - - * docs/ACE-SSL.html: Cleaned up the auto generated errors. - -Thu Aug 19 16:47:21 1999 Douglas C. Schmidt - - * ACE-INSTALL.html: Added a reference to $ACE_ROOT/docs/ACE-SLL.html. - - * docs: Added a new ACE-SSL.html file that explains how to participate in the - ACE SSL project. Thanks to John Heitmann - for adding this. - -Thu Aug 19 15:31:58 1999 Nanbor Wang - - * ace/OS.h (ACE_OSTREAM_TYPE): Removed the redundant trailing * - for the defintion when ACE_LACKS_IOSTREAM_TOTALLY is defined. - -Thu Aug 19 14:16:37 1999 David L. Levine - - * include/makeinclude/rules.nested.GNU: added ACE_NESTED_COMMAND - hook. Users can set it to whatever they like (preferably in - include/makeinclude/platform_macros.GNU). One example is - to set it to: - - ACE_NESTED_COMMAND := || break $? - - to terminate building if a build in one subdirectory fails. - Thanks to Lothar Werzinger for - suggesting this addition. - -Thu Aug 19 13:06:00 1999 Michael Kircher - - * ace/Read_Buffer.cpp: Fixed a bug in rec_read () method - which prohibited reading more than 1024 bytes at once. - -Thu Aug 19 13:03:07 1999 Douglas C. Schmidt - - * ace/ACE.h (ACE): Fixed a "cut & paste" error in the comment -- - basename should have been dirname. Thanks to Mark Hyett - for reporting this. - - * ace/ACE.cpp: Fixed a bug in ACE::dirname() that was causing problems - if the pathname didn't have a delim character. Thanks to Russ - Noseworthy for reporting this and providing a fix. - -Thu Aug 19 12:59:56 1999 Carlos O'Ryan - - * ace/Message_Block.i: - Moved ACE_Message_Block::replace_data_block() down in the file - because it was using inline functions that were defined after it - was. Thanks to David for pointing this out. - -Thu Aug 19 10:53:50 1999 David L. Levine - - * ace/OS.i (setuid): added ACE_UNUSED_ARG (uid) for VxWorks, - pSOS, WIN32, and Chorus. Thanks to Garry Brother - for reporting this. - -Thu Aug 19 10:04:12 1999 David L. Levine - - * include/makeinclude/platform_vxworks5.x_g++.GNU: added - trap to cause builds to fail if the exceptions flag is - enabled. The VxWorks libraries don't support exceptions. - And, exceptions give the (Tornado II) compiler fits, e.g., - with ACE_wrappers/TAO/tao/IORManipulation.cpp. Thanks to - Erik Johannes for this nifty preemptive - solution, and to Nick Sawadsky - for motivating its implementation. - -Thu Aug 19 09:34:41 1999 Douglas C. Schmidt - - * ace/WFMO_Reactor.h, - * ace/WFMO_Reactor.cpp, - * ace/Select_Reactor_T.h, - * ace/Select_Reactor_T.cpp, - * ace/Reactor_Impl.h, - * ace/Reactor.h, - * ace/Reactor.cpp: - Added a pair of restart() methods that can be used to set/get - the restart_ flag, which controls whether the handle_events() - event loop is restarted automatically when select() is - interrpted. Thanks to Erik Koerber - for suggesting this. - - * ace/Service_Config: Updated the failure result comment for - open() and cleaned up the return value and errno propagation for - open_i() when process_commandline_directives() fails. Thanks to - Jerry D. De Master for reporting the bug - and suggesting a fix. - - * ace/Service_Config.h: Moved the process_directives() method - used to parse the svc.conf files out of the protected part of - the class to the public part so that application programmers can - call this directly to reconfigure services from the svc.conf - files. Thanks to John Mink for - suggesting this. - -Wed Aug 18 22:45:24 1999 Douglas C. Schmidt - - * ace/WFMO_Reactor.h, - * ace/WFMO_Reactor.cpp, - * ace/XtReactor.h, - * ace/XtReactor.cpp, - * ace/TkReactor.h, - * ace/TkReactor.cpp, - * ace/FlReactor.h, - * ace/FlReactor.cpp, - * ace/Select_Reactor_T.h, - * ace/Select_Reactor_T.cpp, - * ace/Reactor_Impl.h, - * ace/Reactor.h, - * ace/Reactor.cpp: - * ace/Timer_Hash_T.h: - * ace/Timer_Heap_T.h: - * ace/Timer_List_T.h: - * ace/Timer_Queue_T.h: - * ace/Timer_Wheel_T.h: - * ace/Timer_Hash_T.cpp: - * ace/Timer_Heap_T.cpp: - * ace/Timer_List_T.cpp: - * ace/Timer_Wheel_T.cpp: - Changed all uses of const long to long... - -Wed Aug 18 22:15:58 1999 Carlos O'Ryan - - * tests/run_tests.sh: - It was running the DISABLED tests, thanks to David for pointing - this out. - -Wed Aug 18 21:48:52 1999 David L. Levine - - * ACE-INSTALL.html: added Toshio Hori - suggestions (in a new section) on building just what's - needed for TAO, and his tips for reducing disk space - usage on Unix platforms. - -Wed Aug 18 21:32:56 1999 Ossama Othman - - * docs/usage-bugzilla.html: - - Added a simple document explaining basic usage of our - installation of bugzilla. - - * ACE-INSTALL.html: - * PROBLEM-REPORT-FORM: - - Updated with information about the bugzilla usage - documentation. - -Wed Aug 18 20:28:23 1999 David L. Levine - - * bin/check_build_logs: check for just Stop, not [Ss]top, - to avoid snagging top output. Gnu make says "Stop" when - it can't find a dependency. - -Wed Aug 18 19:08:08 1999 David L. Levine - - * ace/OS.{h,cpp},Object_Manager.{h,cpp},Log_Msg.cpp: - moved ACE_LOG_MSG_INSTANCE_LOCK from ACE_Object_Manager - to ACE_OS_Object_Manager, so that Log_Msg.cpp needn't - to depend on Object_Manager for it. - -Wed Aug 18 18:20:11 1999 Carlos O'Ryan - - * tests/SOCK_Send_Recv_Test.cpp: - Fixed typo. - -Wed Aug 18 17:58:06 1999 Carlos O'Ryan - - * THANKS: - * ace/README: - * ace/config-irix6.x-common.h: - Added new macro (ACE_HAS_BROKEN_DGRAM_SENDV) to handle platforms - where using sendmsg with exactly IOV_MAX elements in the iovec - fails (normally the number of elements can be up to and - including IOV_MAX). Thanks to Tobin Bergen-Hill - for tracking this down. - -Wed Aug 18 16:08:46 1999 Douglas C. Schmidt - - * tests/SOCK_Send_Recv_Test.cpp: Reformatted this test so - that it conforms to ACE programming guidelines. - -Wed Aug 18 13:49:30 1999 David L. Levine - - * ace/Makefile: if ACE_COMPONENTS = FOR_TAO, don't include - Filecache in UTILS_FILES. TAO doesn't need Filecache. - And, its ACE_Hash and ACE_Equal_To - explicit template instantiations collide with those in - ACE_wrappers/TAO/tao/POA.cpp. That precludes building - a shared libTAO for VxWorks, for example. And, it costs 14 Kb. - Thanks to Erik Johannes for helping - to find this solution. And reminding me to implement it :-) - -Wed Aug 18 13:16:09 1999 David L. Levine - - * ACE-INSTALL.html: clarify that PERL_PATH must include - the full path, including the perl.exe filename. Thanks - to Walter Welzel for - reporting this. - -Wed Aug 18 13:11:30 1999 Carlos O'Ryan - - * ace/OS.h: - * ace/OS.i: - The new methods to manipulate condition variable attributes - were not compiling on single threaded platforms. - -Wed Aug 18 13:09:36 1999 David L. Levine - - * tests/Makefile: don't add libDLL_Test.$(SOEXT) to BUILD - on VxWorks. Thanks to Walter Welzel - for reporting that it did get build for VxWorks with - shared libs enabled, but not successfully (or usefully). - -Wed Aug 18 10:36:16 1999 Nanbor Wang - - * ACE-INSTALL.html: Updated all references to MSVC 4.x. We no - longer support the compiler. Thanks to Welzel Walter - for pointing this out. - -Wed Aug 18 10:42:13 1999 Douglas C. Schmidt - - * ace/Timer_List_T.cpp (reset_interval): Added a constcast to - make SunC++ 4.2 happy. Thanks to Andy for reporting this. - - * ace/WFMO_Reactor.i (reset_timer_interval): The return type - was incorrect... Thanks to Andy and Jeff for reporting this. - -Wed Aug 18 09:47:51 1999 Carlos O'Ryan - - * tests/run_tests.pl: - The disabled tests were executed anyway, thanks to David for - pointing this out. - -Wed Aug 18 09:34:46 1999 Carlos O'Ryan - - * ace/FlReactor.cpp: - * ace/XtReactor.cpp: - Fixed typos in the code, this is only used in a few platforms, - that's why it didn't show up before. - -Tue Aug 17 20:02:55 1999 Douglas C. Schmidt - - * tests/Reactor_Timer_Test.cpp: Enhanced this test to exercise - the new reset_timer_interval() feature that Darrell added. It - appears to work quite well. Also, make the test easier to - understand by adding more structure. - - * ace/WFMO_Reactor.h, - * ace/WFMO_Reactor.cpp, - * ace/XtReactor.h, - * ace/XtReactor.cpp, - * ace/TkReactor.h, - * ace/TkReactor.cpp, - * ace/FlReactor.h, - * ace/FlReactor.cpp, - * ace/Select_Reactor_T.h, - * ace/Select_Reactor_T.cpp, - * ace/Reactor_Impl.h, - * ace/Reactor.h, - * ace/Reactor.cpp: - Exposed the new reset_interval() method Darrell added to all the - Timer mechanisms via a method in each of these Reactor's called - reset_timer_interval(). - - * ace/Timer_Hash_T.h: - * ace/Timer_Heap_T.h: - * ace/Timer_List_T.h: - * ace/Timer_Queue_T.h: - * ace/Timer_Wheel_T.h: - * ace/Timer_Hash_T.cpp: - * ace/Timer_Heap_T.cpp: - * ace/Timer_List_T.cpp: - * ace/Timer_Wheel_T.cpp: - Changed the return values of to be (1) - consistent (i.e., to return a value through all paths in the - method) and (2) to return -1 on failure and 0 on success. - Also replaced a number of C-style casts with - ACE_reinterpret_casts. - -Tue Aug 17 20:51:35 1999 Carlos O'Ryan - - * ace/TP_Reactor.h: - * ace/TP_Reactor.cpp: - The TP Reactor also experiences a performance hit if signal - masking is enabled. Therefore, we can now make this optional. - -Tue Aug 17 19:10:00 1999 Darrell Brunsch - - * ace/OS.cpp: Fixed typo. - - * ace/Stats.cpp: Removed some warnings showing up in MSVC when - assigning ACE_UINT64 values to ACE_UINT32 variables. Used - ACE_U64_TO_U32 to remove these warnings. - - * ace/Timer_Hash_T.h: - * ace/Timer_Heap_T.h: - * ace/Timer_List_T.h: - * ace/Timer_Queue_T.h: - * ace/Timer_Wheel_T.h: - * ace/Timer_Hash_T.cpp: - * ace/Timer_Heap_T.cpp: - * ace/Timer_List_T.cpp: - * ace/Timer_Wheel_T.cpp: - Added a new method, which can be used to - change the interval of a timer represented by a timer_id. - -Tue Aug 17 18:43:53 1999 Jeff Parsons - - * ace/OS.h: - * ace/OS.i: - Added wscmp and wsncmp functions to go with the existing - wslen and wscpy functions. These all use WChar*, so arg - size is independent of platform. These are to be used for - all manipulations of CORBA::WString. The two that were - added were needed for wstring tests in Param_Test. WChar* - versions of the other string manipulation functions will - be added as needed. - -Tue Aug 17 17:49:33 1999 Douglas C. Schmidt - - * ace/config-sunos5.5.h: If (_LARGEFILE_SOURCE) || (_FILE_OFFSET_BITS==64) - are enabled then #undef ACE_HAS_PROC_FS and ACE_HAS_PRUSAGE_T to - work around problems with Solaris 7. Thanks to Sridhara Rao - Dasu for reporting this. - - * ace/OS.i: Updated the readdir_r() conditional compilation so that - it'll work when _FILE_OFFSET_BITS == 64. Thanks to Sridhara Rao - Dasu for reporting this. - -Tue Aug 17 17:17:13 1999 Carlos O'Ryan - - * ace/OS.h: - * ace/OS.i: - * ace/OS.cpp: - Added new data type to handle condition variable attributes - (ACE_condattr_t). New methods to manipulate that data type - (ACE_OS::cond_attr_init and destroy) Add new method to create a - condition variable from a pre-initialized attribute. - - * ace/Synch.h: - * ace/Synch.i: - * ace/Synch.cpp: - Added new wrapper for the ACE_condattr_t structure. - - * ace/Token.h: - * ace/Token.cpp: - Use ACE_Condition_Attributes to minimize the number of memory - allocations and locks in the critical path of the TP_Reactor. - -Tue Aug 17 15:55:17 1999 Nanbor Wang - - * performance-tests/TCP/TCP.{dsw,dsp}: - * performance-tests/TCP/Makefile: - * performance-tests/TCP/tcp_test.cpp: Added the new test modified - by Carlos and a bit further by me. The test measures TCP - performance of a platform. We can also use it to test the - performance of various reactors. - -Tue Aug 17 14:52:40 1999 Darrell Brunsch - - * ace/config-win32.h: Added ACE_CC_COMPILER definition for MSVC. - ACE_CC_COMPILER is a string containing the compiler program. - -Tue Aug 17 13:48:27 CDT 1999 Loren Rittle - - * bin/update-ace+tao.sh: Use authoritative name list instead of - ad hoc list to update file. - -Tue Aug 17 06:33:05 1999 Douglas C. Schmidt - - * ace/Task.h: Clarified the comment regarding - open() and close() on ACE_Task_Base. Thanks to Jeff Franks - for suggesting this. - -Tue Aug 17 11:56:33 1999 Carlos O'Ryan - - * ace/Select_Reactor_T.h: - * ace/Select_Reactor_T.cpp: - Added option in the constructor to disable the signal handling - features in the select reactor. This eliminates a couple of - kernel level locks that are not needed in all applications. - - * ace/Stats.h: - * ace/Stats.cpp: - Now we keep track of the iteration where the minimum and maximum - latencies were achieved. - -Tue Aug 17 06:33:05 1999 Douglas C. Schmidt - - * bin: Added a new shell script called update-ace+tao.sh - that updates the ACE/TAO source tree to the latest - numeric-assigned version. Thanks to Loren Rittle - for contributing this. - -Mon Aug 16 20:09:12 1999 Carlos O'Ryan - - * ace/CDR_Stream.h: - * ace/CDR_Stream.i: - * ace/CDR_Stream.cpp: - Added new method to transfer the contents of one CDR stream into - another. This is used in the implementation of the ORB to - minimize the number of data copies, memory allocations and - locks. - - * ace/Message_Block.h: - * ace/Message_Block.i: - Added new method to replace the Data_Block, this method returns - the old one, letting the user decide how to deallocated the Data - block, possibly transfering it to another Message_Block. - -Mon Aug 16 15:58:12 1999 Steve Huston - - * ace/config-sunos5.5.h: - * include/makeinclude/platform_sunos5_sunc++.GNU: Added support - for using "compat=4" mode for Sun CC 5. To use this, do - "make compat4=1", or equivalent. Compat 4 uses -compat=4 with - its old iostreams, but the newer Sun CC 5 scheme of explicit - template instantiation. - -Mon Aug 16 11:59:18 1999 Vishal Kachroo - - * ace/SOCK_Dgram_Mcast.cpp (subscribe): Constructed and passed a - complete sockaddr_in to the ACE_OS::join_leaf () call. This was - just being passed sockaddr_in.sin_addr.s_addr. - -Sat Aug 14 18:01:27 1999 Carlos O'Ryan - - * tests/run_tests.pl: - Fixed some output messages that were going to stdout. - -Sat Aug 14 15:20:27 1999 Douglas C. Schmidt - - * ace/SOCK_Dgram_Mcast.cpp (subscribe): It looks like there - was a bug where we were passing an s_addr to ACE_OS::join_leaf() - rather than a sockaddr *. Fixing this also cleaned up some code - that was #ifdef'd for UNICOS. Thanks to Vishal for reporting - this. - - * ace/Process.h: Added a virtual to ~ACE_Process so that it - can be used for subclassing more readily. Thanks to Zoran - Ivanovic for suggesting this. - -Sat Aug 14 14:11:25 1999 Everett Anderson - - * ace/Remote_Tokens.cpp (tryacquire): Fixed so that it uses - ACE_Token_Request::TRY_ACQUIRE instead of RELEASE. - -Fri Aug 13 18:55:51 1999 Douglas C. Schmidt - - * ace/Handle_Set.h (ACE_Handle_Set): Clarified the meaning of the - nbits_ array. Thanks to Hao Ruan for - motivating this. - -Fri Aug 13 21:18:40 1999 David L. Levine - - * ace/OS.i (llseek): on Linux, moved extern "C" llseek () - declaration out of the function. Thanks to Tal Lev-Ami - for this fix. - -Fri Aug 13 20:50:02 1999 Nanbor Wang - - * ace/Select_Reactor_T.cpp (handle_events): Added a deactivation - check for non-threaded case. The original check was mixed with - thread owner check and thus got disabled under single-threaded - configurations. Thanks to Kirthika for reporting the problem. - -Fri Aug 13 13:11:16 1999 David L. Levine - - * bin/make_release: moved ACE_wrappers/TAO addition to - $release_files so that it's only done for the ACE+TAO kit. - -Fri Aug 13 12:44:08 1999 David L. Levine - - * Makefile,bin/make_release: added support (and documentation) - for creating kits with or without new tags, or using an old - tag; generated man pages; installation to the public ftp/http - site on ace; and zip files. - -Fri Aug 13 07:58:12 1999 David L. Levine - - * ace/OS.{h,i},README,config-osf1-4.0.h (llseek): added - ACE_HAS_LLSEEK support. Thanks to Tal Lev-Ami - for providing this. - -Thu Aug 12 22:05:37 1999 Douglas C. Schmidt - - * ace/OS.i (sema_wait, rw_tryrdlock, rw_trywrlock): - Replaced more ad hoc uses of the - - int error = 0; - ... - error = errno; - ... - errno = error; - - idiom with the ACE_Errno_Guard. - - * ace/Synch.h: Updated the comment to remind folks who would - like to have a working ACE_Process_Condition to contact us if - they know how to do this. Thanks to Craig Anderson - for motivating this. - - * tests/Process_Strategy_Test.cpp (open): Clarified the behavior - of the code that's run when fork() is used. Thanks to Umar - Syyid for motivating this. - -Thu Aug 12 21:30:09 1999 Alexander Babu Arulanthu - - * include/makeinclude/platform_vxworks5.x_g++.GNU: - added SIMNT support. - -Thu Aug 12 20:54:40 1999 David L. Levine - - * ace/config-osf1-4.0.h: added ACE_HAS_USING_KEYWORD - for cxx and Rational compilers. [Bug 163] - -Thu Aug 12 20:47:13 1999 Carlos O'Ryan - - * tests/Cached_Accept_Conn_Test.cpp: - Made the and variables global - instead of static, because otherwise Sun/CC automatic template - instantiation cannot find them at link time. The variables are - used in template code that is defined and used in the same file, - but Sun/CC does not seem to understand that. - -Thu Aug 12 17:14:35 1999 Jeff Parsons - - * ace/OS.h: - Changed typedef of WChar to ACE_UINT16. The CDR operations - are already using write_2, read_2 and SHORT_SIZE, and - in the process of implementing wchars and wstrings in - IDL, it's going to be important to optimize for the - Unicode common case. - -Thu Aug 12 16:24:16 1999 David L. Levine - - * bin/make_release: chdir up a level before removing the - staging directory. Thanks to Carlos for pointing out - that it's necessary, because we had chdir'd into it. - And for noticing that $build_commands got clobbered in - create_kit (). Obey $generate_man_pages setting. - -Thu Aug 12 16:03:03 1999 David L. Levine - - * ACE version 5.0.1 released. - -Thu Aug 12 15:49:00 1999 David L. Levine - - * Makefile,bin/make_release: build kits in /tmp staging - area, and copy to ace's ftp pub/ACE directory. - -Thu Aug 12 11:36:46 1999 Carlos O'Ryan - - * ace/OS.h: - * ace/Svc_Handler.cpp: - * ace/Future.cpp: - Some platforms require arguments in the exception thrown from - operator new. The standard (std::bad_alloc) does not require - any. - Added a new macro (ACE_throw_bad_alloc) that takes care of these - differences, including platforms that don't throw exceptions but - return something. - -Wed Aug 11 17:00:00 1999 Kirthika Parameswaran - - * tests/Cached_Accept_Conn_Test.cpp: - Removed run_event_loop and end_event_loop and put in - handle_events with a flag to stop the loop. This is a bug fix - for Bug183. - -Wed Aug 11 15:49:37 1999 David L. Levine - - * docs/ACE-guidelines.html: cleaned up ACE doc tool discussion. - Added Carlos' inlining heuristics. - -Wed Aug 11 13:53:20 1999 David L. Levine - - * ace/config-win32.h,config-win32-borland.h: added - ACE_HAS_MUTABLE_KEYWORD. Thanks to Jody for this request. - -Wed Aug 11 13:15:26 1999 David L. Levine - - * ace/config-g++-common.h,config-win32.h,config-win32-borland.h: - added ACE_HAS_EXPLICIT_KEYWORD - (for egcs only, in config-g++-common.h). Thanks to Jody Hagins - for this update. - - * ace/config-g++-common.h: added ACE_HAS_MUTABLE_KEYWORD. - -Wed Aug 11 13:10:32 1999 David L. Levine - - * ace/OS.h,README: added ACE_HAS_MUTABLE_KEYWORD support. - Thanks to Jody Hagins for providing it. - -Wed Aug 11 12:55:23 1999 Carlos O'Ryan - - * ace/Svc_Handler.cpp: - * ace/Future.cpp: - The throw expressions require a constructor, not just the type, - thanks to David for pointing this out. - -Wed Aug 11 10:12:11 1999 David L. Levine - - * ace/OS.h,Auto_Ptr.h,SString.h,README: added support for - ACE_HAS_EXPLICIT_KEYWORD. Thanks to Jody Hagins - for suggesting this. - -Wed Aug 11 10:07:36 1999 Carlos O'Ryan - - * ace/Future.cpp: - * ace/Local_Tokens.cpp: - * ace/Log_Msg.cpp: - * ace/Log_Record.cpp: - * ace/Svc_Handler.cpp: - * netsvcs/lib/Token_Handler.cpp: - Fixed several warnings and errors with gcc-2.95 - - * include/makeinclude/wrapper_macros.GNU: - Add -fcheck-new to the command-line of g++ when compiling with - exceptions disabled. In that case new operators could return 0 - and without this option the constructor will surely be invoked - on invalid data. - - * bin/auto_compile: - Use LOGNAME instead of USER to get the username because it is - more portable. - -Tue Aug 10 23:47:32 1999 Kirthika Parameswaran - - * ace/Cached_Connect_Strategy_T.h: - * ace/Caching_Utility_T.h: - * ace/Caching_Strategies_T.h: - * ace/Cleanup_Strategies_T.h: - * ace/Cache_Map_Manager_T.h: - * ace/Hash_Cache_Map_Manager_T.h: - - Defined macros to shorten lengthy class names for linkers which - couldnt grok long names (example: Sun Linker). Thanks to - Dr.Schmidt for this cool idea. - -Tue Aug 10 19:07:32 1999 Carlos O'Ryan - - * tests/run_tests.sh: - * tests/run_tests.pl: - * tests/run_tests.lst: - Move the list of tests to a separate file. This file is used to - drive both a perl version of the script and the old shell - version. - The new perl version is able to terminate programs that hang, - but still has problem with processes that fork children who then - hang for some reason. The perl script has to be ported to Win32 - too. - - * bin/run_all_list.pm: - Use the new tests/run_tests.pl script on Unix. - - * bin/run_all.pl: - Run all the test scripts in ACE and TAO, much like run_all_win32 - but for unix systems. - - * bin/auto_compile: - Remember to remove the disable file in case of errors. - -Tue Aug 10 18:08:30 1999 Jeff Parsons - - * ace/CDR_Stream.h: - * ace/CDR_STream.i: - Added all the necessary stuff for wstrings. - -Tue Aug 10 15:36:02 1999 David L. Levine - - * tests/Malloc_Test.cpp (main): removed unused argc - declaration, with ACE_LACKS_FORK && ! ACE_HAS_WIN32. - -Tue Aug 10 15:26:43 1999 David L. Levine - - * ace/OS.cpp (strptime): removed unreachable break after - return statement, in default case of switch statement. - -Tue Aug 10 14:46:12 1999 David L. Levine - - * ace/OS.{h,cpp},README: Changed support for ACE_OS::strptime () - to be configurable. VxWorks, LynxOS, and Chorus, for example, - don't have a native ::strptime (). The current emulation cost - 2 Kb, which will be objectionable to some embedded systems - developers. - - Replaced ACE_LACKS_STRPTIME with a combination - ACE_HAS_STRPTIME/ACE_LACKS_NATIVE_STRPTIME. ACE_HAS_STRPTIME - enables ACE_OS::strptime () support. ACE_LACKS_NATIVE_STRPTIME - lets ACE know that there's no native ::strptime (), so it then - uses its emulation. - - This has two advantages: it minimizes footprint in the default - case, and doesn't break builds on platforms that don't have - ::strptime (). It easily allows developers to configure ACE - identically, with respect to strptime, on their Unix, NT, and - embedded platforms. [Bug 219] - - * ace/config-sunos5.5.h,config-linux-common.h,config-osf1-4.0.h, - config-irix6.x-common.h: - added #define ACE_HAS_STRPTIME. [Bug 219] - -Tue Aug 10 12:28:54 1999 Jeff Parsons - - * bin/run_all_list.pm: - Added IDL test to the list. - -Mon Aug 09 16:49:45 1999 Nanbor Wang - - * ace/Process.{h,cpp} (wait): Re-visited the implementation so it - behaves the same on both UNIX and Win32. Thanks to Doug for - suggesting this. - -Mon Aug 09 16:30:24 1999 David L. Levine - - * docs/ACE-guidelines.html: added note to follow the - ACE documentation tools guidelines and restrictions. - Thanks to Doug for pointing this out. - -Mon Aug 09 16:06:01 1999 Nanbor Wang - - * include/makeinclude/wrapper_macros.GNU: Applied smart eg++ - recognizer. Thanks to Craig Anderson for - providing the patch. - -Mon Aug 9 11:29:36 1999 Douglas C. Schmidt - - * bin: Fixed html-windex so that it works when class names contain - the digit '3' in them, e.g., ACE_WIN32_Asynch_Accept, etc. - Thanks to Jody Hagins for reporting this - problem. - -Mon Aug 09 15:10:27 1999 Nanbor Wang - - * ace/Process.h (wait): Rewrote comments. - - * ace/Service_Config.h (open): Revised the comments for several - service_config flags. Thanks to Doug for pointing this out. - -Mon Aug 9 11:29:36 1999 Douglas C. Schmidt - - * examples/Reactor/Misc/test_demuxing.cpp: Added a destructor - to ~STDIN_Handler that will remove the event handler for STDIN - and the registered timer. - -Mon Aug 9 10:45:24 1999 Douglas C. Schmidt - - * ace/Memory_Pool.cpp (handle_signal): When working with an MMAP - memory pool, a "real" segmentation fault (not related to - updating the memory mapping) will cause the process to fail but - not write a core file. This is because that on linux (and - possibly other flavours of UNIX) core file writing is a default - behaviour which is disabled once you register a signal handler. - Even if the signal handler returns a bad return value which - crashes the program, a core file will not be written. - - The fix for this is to modify the mmap() signal handler so that - it de-registers the signal handler when detecting a segfault - with the mapping up to date and return an "ok" answer. the - program will attempt to access the illegal address again and - dump core. Thanks to Joseph Weihs for - contributing this fix. - - * ace/Signal: Changed the new handle_i() and register_handler_i() - methods to be static member functions so they can be called from - the static dispatch() member function. Thanks to Andreas - Geisler for reporting this. - -Mon Aug 9 10:33:50 1999 Douglas C. Schmidt - - * examples/ASX/CCM_App/SC_Server.cpp: Make sure to enable - the appropriate parameter for ACE_Service_Config::open() so that - static services will be enabled. Thanks to Michael Roth - for reporting this. - -Mon Aug 09 10:21:37 1999 David L. Levine - - * include/makeinclude/wrapper_macros.GNU (INCLDIRS): - removed "-I.". It's not necessary, because the preprocessor - will first look for headers in the current directory, when - appropriate. It causes trouble, for example, on NT for - VxWorks with Green Hills. Instead of including the system's - Signal.h, ACE's signal.h gets #included with "-I.". Thanks - to Dale Wood for helping to track - this down. [Bug 35] - - * include/makeinclude/platform_vxworks5.x_ghs.GNU: no longer - need to override INCLDIRS, now that it doesn't contain "-I.". - [Bug 35] - -Mon Aug 09 10:09:57 1999 David L. Levine - - * ace/OS.h,streams.h: moved ACE_OSTREAM_TYPE #define from - streams.h to OS.h, so that it is seen with - ACE_LACKS_IOSTREAM_TOTALLY. And, provide default value - for ACE_DEFAULT_LOG_STREAM. [Bug 208] - - * ace/Log_Msg.cpp: changed a couple remaining ostream occurrences - to ACE_OSTREAM_TYPE. Replaced conditional use of - ACE_DEFAULT_LOG_STREAM/&cerr with ACE_DEFAULT_LOG_STREAM, - now that it's always defined. [Bug 208] - -Mon Aug 09 09:47:06 1999 David L. Levine - - * ace/Log_Msg.{h,cpp}: replaced the ACE_Log_Msg_key_created_ - and ACE_Log_Msg_key_ file static variables with static - class members ACE_Log_Msg::key_created_ and - ACE_Log_Msg::log_msg_tss_key_, respectively. Only declare - ACE_Log_Msg::log_msg_tss_key_ if the platform supports TSS - (native or emulated). Replaced the ACE_Log_Msg_message_queue - file static variable with ACE_Log_Msg_Manager::message_queue_. - Cleaned up Log_Msg.cpp. [Bug 86] - - Thanks to Umar Syyid for suggesting that - we remove the file static variables. - -Mon Aug 09 09:33:43 1999 David L. Levine - - * ace/OS.h: #define ECOMM (to ECONNABORTED) if it's not - already #defined. This allows support on NT. Thanks to - Andy for reporting this. - -Mon Aug 9 07:45:19 1999 Douglas C. Schmidt - - * ace/Signal.h: Modified the behavior of the - ACE_Sig_Handler::dispatch() method so that on Win32 it'll - automagically re-register the signal handler after the - handler_signal() method returns with a non -1 value. Thanks to - Andreas Geisler for suggesting - this. - - * tests/Malloc_Test.cpp: Win32 didn't seem to like a 32k - offset for the virtual address. Let's try 64k instead. Thanks - to Nanbor for reporting this. - - * tests/Malloc_Test.cpp: Changed the sense of the conditional - compilation test from && !defined (ACE_WIN32) to || defined - (ACE_WIN32) so that this will run on Win32. Thanks to - Nanbor for reporting this. - - * ace/OS.i: Cleaned up the coding style for the sigset* - wrapper functions. - -Sun Aug 08 21:19:42 1999 David L. Levine - - * ace/config-osf1-4.0.h: removed unreferenced_function_param - warning suppression. It's no longer needed with the fixes - to avoid unreferenced function parameters. [Bug 217] - -Fri Aug 06 15:20:00 1999 Kirthika Parameswaran - - * ACE-INSTALL.html: added information about compilation on - SunOS5.6 using egcs1.1.2. - -Fri Aug 06 13:47:51 1999 David L. Levine - - * ACE-INSTALL.html: added note about disabling optimization - for some files with Tornado II. - -Fri Aug 06 13:39:48 1999 David L. Levine - - * ACE-INSTALL.html: updated VxWorks build information, - specifically, the instructions for building on NT host. - And, added information about linking libACE.so and libTAO.so - into the VxWorks kernel. Thanks to - Erik Johannes and Stephane Chatre - for helping to clarify and verify. - -Fri Aug 06 12:10:19 1999 Nanbor Wang - - * ace/config-win32-common.h: Added - ACE_HAS_POSITION_INDEPENDENT_MALLOC. - - * ace/OS.cpp (strptime_getnum): getnum should be strptim_getnum. - - * ace/config-win32-common.h: Added ACE_LACKS_STRPTIME. Thanks to - Andy for pointing this out. - -Fri Aug 06 11:13:27 1999 David L. Levine - - * ace/streams.h,OS.h,Log_Msg.h: with ACE_LACKS_IOSTREAM_TOTALLY, - removed the hack that re-#defined ostream. Replaced that - with an ACE_OSTREAM_TYPE macro. [Bug 208] - -Fri Aug 06 10:49:34 1999 David L. Levine - - * ACE-INSTALL.html: updated egcs versions that we use - (1.1.1 and 1.1.2). - -Fri Aug 6 08:43:22 1999 Douglas C. Schmidt - - * examples/Log_Msg/test_log_msg.cpp (main): Changed this - test so that it no longer abort()s, but instead calls - ACE_OS::_exit(). This should help avoid confusion when it's - run. Thanks to Kevin Lyda for - reporting this. This fixes [BUGID:211]. - - * ace/SOCK_Dgram_Mcast: The QoS-enabled subscribe() call must - call the QoS-enabled open() call, rather than the "regular" - open() call because otherwise QoS information isn't initialized! - Thanks to Vishal for pointing this out. - -Fri Aug 06 08:22:00 1999 David L. Levine - - * ace/Object_Manager.cpp: with ACE_SHOULD_MALLOC_STATIC_OBJECT_LOCK, - made the ACE_Static_Object_Lock_lock instance static, to - match the non-ACE_SHOULD_MALLOC_STATIC_OBJECT_LOCK behavior. - Thanks to Jody for this change. - - Also, consolidated the code to alway use the - ACE_Static_Object_Lock_Type typedef. - -Fri Aug 06 06:55:49 1999 Jody Hagins - - * include/makeinclude/rules.local.GNU (depend.local): added - ACE_DEPEND_SED_CMD hook, so that users can add sed scripts. - An example is to use relative instead of absolute paths - in dependencies. I put this into it to get the desired - (site-specific) functionality: - - USER_DEPEND_SED_CMD=-e "s;$(PRISM_ROOT);\$$(PRISM_ROOT);g" - -Thu Aug 5 22:26:18 1999 Douglas C. Schmidt - - * ace/OS.h (ACE_OS): Added support for strptime() for platforms that - lack it. Thanks to Kevin Lyda for - contributing this. Note that if a platform fails to compile - because it doesn't support this function, please enable - ACE_LACKS_STRPTIME in the config.h file and send us email. - -Thu Aug 05 21:37:05 1999 David L. Levine - - * ace/Object_Manager.cpp (ACE_Static_Object_Lock_lock, - ACE_Static_Object_Lock::instance, cleanup_lock): - added support for ACE_SHOULD_MALLOC_STATIC_OBJECT_LOCK. - It's not (currently) used by ACE. But, applications may - find it useful for avoiding recursive calls if they have - overridden operator new. Thanks to Jody Hagins - for contributing it. - -Thu Aug 05 21:04:20 1999 David L. Levine - - * ace/streams.h: removed #includes of istream.h and ostream.h - with ACE_HAS_STD_CPP_LIBRARY and ACE_USES_OLD_IOSTREAMS. - Those headers aren't available with Sun CC. I think that - they might be unnecessary with egcs for Tornado II. Thanks - to Doug for reporting this. Ref. - Thu Aug 05 14:31:48 1999 David L. Levine . - -Thu Aug 5 16:43:29 1999 Douglas C. Schmidt - - * tests/Malloc_Test.cpp: Rearranged the #ifdefs so that - we don't do much of anything if the platform doesn't support - processes. Thanks to David Levine for reporting this. - -Thu Aug 5 16:27:15 1999 Carlos O'Ryan - - * include/makeinclude/rules.lib.GNU: - * include/makeinclude/wrapper_macros.GNU: - Added new macro (ACE_SHLIBS) to control the final link line of - shared libraries. Use this macro to list the -l options - required by your shared library that are *not* included in the - system LIBS macro, for example "-lTAO -lACE"; the system will - automagically change that to be "-lTAOshr -lACEshr" on AIX. - This also decouples the shared library link line from the - binaries, which use LDLIBS and ACELIB, allowing the application - developers to easily mix shared libraries and binaries in the - same directory, even if the binaries depend on the generated - shared library. - -Thu Aug 05 15:44:39 1999 David L. Levine - - * include/makeinclude/platform_vxworks5.x_g++.GNU: on - WIN32 host, assume that $(CC) is on the user's path (or is a - full pathname). That way, we don't need to determine ACE_CC - dynamically, which causes trouble with the WIN32 shell. Thanks - to Erik Johannes for reporting this. - [NOTE: this had been committed on a branch, but never on the - main line.] - -Thu Aug 05 15:35:21 1999 Nanbor Wang - - * apps/gperf/src/gperf.dsp: - * apps/gperf/src/gperf_lib.dsp: - * ace/ace_lib.dsp: - * ace/ace_dll.dsp: Changed the default configuration to Win32 - Debug so if anyone doesn't know what he is doing, he'll most - likely to success. - -Thu Aug 05 15:30:32 1999 David L. Levine - - * ace/streams.h: with ACE_LACKS_IOSTREAMS_TOTALLY, always - #define ostream FILE *. [Bug 208] - -Thu Aug 05 15:13:01 1999 David L. Levine - - * ace/config-lynxos.h: added note on why we don't #define - ACE_HAS_POSIX_SEM for LynxOS. [Bug 164] - -Thu Aug 05 14:53:44 1999 David L. Levine - - * ace/config-vxworks5.x.h: added support for the Diab - compiler, version 4.2a or later. Compilation succeeds but links - still have unresolved symbols related to new and delete. [Bug - 207] - - * ace/OS.h,README: added support for ACE_LACKS_NEW_H. [Bug 207] - - * ace/OS.h: for VxWorks, use the ANSI prototypes for - inet_ntoa.h, etc., for all VxWorks compilers, not just Green - Hills. This allows compilation to succeed with Diab 4.2a. [Bug - 207] - - Thanks to Erik Johannes for helping with - this quick port to Diab 4.2a for VxWorks. - -Thu Aug 05 14:31:48 1999 David L. Levine - - * ace/iosfwd.h: #include iosfwd with - ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION as well as without - ACE_HAS_OLD_IOSTREAMS. This allows builds to succeed for - Tornado II with its egcs. [Bug 206] - - * ace/streams.h: added #includes of istream.h, ostream.h, - and iomanip.h with ACE_HAS_STD_CPP_LIBRARY and - ACE_USES_OLD_IOSTREAMS. It's necessary for builds for Tornado - II, but should be harmless and helpful on other platforms. [Bug - 206] - - Thanks to Matthias Schumann for - first reporting the solution to the build problem for Tornado II. - -Thu Aug 5 13:03:28 1999 Douglas C. Schmidt - - * ace/Malloc_T.cpp (shared_free): Looks like ACE_reinterpret_cast - isn't the right thing to do... Let's just use good ol' - fashioned C-style casts instead. Thanks to Bala for reporting - this. - -Thu Aug 05 12:05:42 1999 David L. Levine - - * include/makeinclude/wrapper_macros.GNU: moved minimum_corba - make flag support from wrapper_macros.GNU to TAO/rules.tao.GNU. - Thanks to Bala for noticing this. [Bug 204] - -Thu Aug 05 12:01:14 1999 Nanbor Wang - - * ace/Malloc_T.cpp (shared_free): Applied - ACE_reinterpret_cast (ACE_Malloc_Header*, yadda) to serveral - pointer comparisons. MSVC was complaining because the pointers are - of different types. - -Thu Aug 5 11:57:23 1999 Balachandran Natarajan - - * include/makeinclude/wrapper_macros.GNU (YACC): Removed the - definition of interface_repo a command line option with 'make' - to $TAO_ROOT/rules.tao.GNU as per Dr.Levine's suggestions. - -Thu Aug 05 08:43:27 1999 David L. Levine - - * include/makeinclude/platform_vxworks5.x_diab.GNU: added. - Thanks to Erik Johannes for - helping to figure out its contents. Note that compiles - succeed with Diab 4.2a for VxWorks, but links do not, yet. - -Thu Aug 05 08:37:09 1999 David L. Levine - - * ACE-INSTALL.html: added Kirk Davies' notes for running - the ACE tests on Tornado II, without NFS installed. - -Thu Aug 5 00:15:45 1999 Douglas C. Schmidt - - * ace/Based_Pointer_T: Changed the type of index for operator[] - and operator+= to be int instead of long so that it'll work - correctly when constant values are used. Thanks to - Nanbor and KCC for pointing this out! - -Wed Aug 4 19:46:33 1999 Carlos O'Ryan - - * tests/run_tests.sh: - Disabled the New_Fail_Test because it breaks other - compilations. - -Wed Aug 4 15:56:51 1999 Douglas C. Schmidt - - * tests/Malloc_Test.cpp: Make this test work even if - ACE_HAS_POSITION_INDEPENDENT_MALLOC isn't set for a particular - platform. - - * tests/Malloc_Test.h: Added a #include for - "ace/Based_Pointer_T.h". Thanks to Carlos for pointing out the - need for this. - -Wed Aug 4 17:07:12 1999 Balachandran Natarajan - - * include/makeinclude/wrapper_macros.GNU : Made the interface - repository files to be compiled by default. If the user does not - want these files to be compiled he can turn it off by issuing - interface_repo=1 with the 'make' command. - -Wed Aug 4 15:56:51 1999 Douglas C. Schmidt - - * ace/Task.h (ACE_Task_Base): Changed the parameter name - to , which is more descriptive. - Thanks to John Forest for - motivating this. - -Wed Aug 4 15:54:51 1999 Carlos O'Ryan - - * netsvcs/clients/Naming/Client/Makefile: - * netsvcs/clients/Naming/Dump_Restore/Makefile: - If the libraries are specified as dependencies then they don't - need to be listed in LDLIBS - -Wed Aug 4 13:20:54 1999 Douglas C. Schmidt - - * ace/Malloc.h: Ok, let's try this again ;-). Removed the - forward declarations and typedefs and replaced them with - #defines. Hopefully, this will make all the compilers happy! - -Wed Aug 04 12:58:53 1999 Nanbor Wang - - * tests/*.dsp: Fixed Alpha configurations. - -Wed Aug 4 12:26:53 1999 Carlos O'Ryan - - * ace/Malloc.h: - Added more forward declarations for the compilations that - enabled PIM. - -Wed Aug 4 11:59:57 1999 Carlos O'Ryan - - * ace/Malloc.h: - The previous fix did not work, i used forward declarations to - make it work. - -Wed Aug 4 09:28:35 1999 Douglas C. Schmidt - - * ace/Malloc.h: Replaced the use of typedefs for macros - to define ACE_MALLOC_HEADER_PTR ACE, ACE_NAME_NODE_PTR, - ACE_CHAR_PTR to try to avoid "incomplete type" messages from - certain versions of G++. Macros are "later binding" than - typedefs for this situation. - - * ace/Asynch_Acceptor.cpp (handle_accept): Fixed an expression - that had incorrect parentheses. Thanks to David Digby - for reporting this. - -Wed Aug 04 02:40:45 1999 Nanbor Wang - - * tests/run_tests.bat: * tests/tests.dsw: - * tests/Malloc_Test.dsp: - * tests/version_tests/Malloc_Test.dsp: Added project files for the - Malloc_Test and added the test in run_test.bat. - -Tue Aug 3 22:39:34 1999 Douglas C. Schmidt - - * tests/{Makefile,run_tests.sh}: Added support for the new - Malloc_Test. - - * tests/Malloc_Test.cpp: Added a new test that exercises the new - position-independent ACE_Malloc with ACE_MMAP_Memory_Pool and - ACE_Process_Mutex. - - * ace/Malloc_T: Added an accessor called mutex() to allow - applications to acquire()/release() the lock used to provide - mutual exclusion to an allocator. - - * tests/SV_Shared_Memory_Test.cpp: Reformatted this test to - conform to ACE programming guidelines. - - * ace/Memory_Pool: The void * and char * arguments to the various - ACE_*_Memory_Pool_Options constructors should be const; now they - are! - - * examples/Shared_Malloc/test_position_independent_malloc.cpp (main): - Added auto_ptr support to this test, as well. - - * examples/Shared_Malloc/test_multiple_mallocs.cpp: Enhanced - this test so that it uses auto pointers and also now takes - advantage of position-independent malloc, when possible. - - * examples/Shared_Malloc/test_position_independent_malloc.cpp: - Finished integrating all the features of this test. It's pretty - cool now! - - * examples/Shared_Malloc/Makefile: Updated the LSRC target so - 'make depend' works correctly... - - * ace/Select_Reactor_Base.cpp (find): Don't set errno = ENOENT - if we find a valid mapping of handle to Event_Handler. Thanks - to Hao Ruan for reporting this. - - * ace/Based_Pointer_T: Added support for operator= (const - ACE_Based_Pointer_Basic &). - - * ace/Based_Pointer_T: Added definitions for - ACE_Based_Pointer::operator= and - ACE_Based_Pointer_Basic::operator= to make EGCS happy. - - * ace/Malloc.h: Factored out the common code for - ACE_Based_Pointer<> and the underlying types, thereby reducing - the number of #ifdef's. - - * ace/Based_Pointer_T: Added an operator CONCRETE *() method - - * ace/Based_Pointer_Repository.cpp: The original implementation - of this classes stored a pointer to the size of each mapped - address, rather than just the value. This was causing problems - when used for shared memory because the memory was allocated in - one process and freed in another. This is now fixed by not - storing a pointer, but by storing the value instead. Thanks to - Nanbor for reporting this. - -Tue Aug 3 23:43:47 1999 Carlos O'Ryan - - * netsvcs/clients/Naming/Client/Makefile: - * netsvcs/clients/Naming/Dump_Restore/Makefile: - Fixed dependencies so parallel compilations (using the -j - option) will work correctly. This fixes [BUGID:187] - -Tue Aug 3 23:23:18 1999 Kirthika Parameswaran - - * ace/Cached_Connect_Strategy_T.{h,cpp} (cleanup): - Added a specialised method to prevent memory leaks with old - versions of g++. This method calls the underlying iterator - and does the cleanup. - - * ace/run_tests.sh: - Removed purify check over Cached_Accept_Conn_Test and - Cached_Conn_Test since they no longer leak memory when built - using old version of g++. - -Tue Aug 3 22:23:18 1999 Balachandran Natarajan - - * include/makeinclude/wrapper_macros.GNU: Added an ifeq flag for - the interface repository. Compiling with interface_repo=1 will - compile the files for interface repository. - -Tue Aug 03 21:17:00 1999 Nanbor Wang - - * tests/SOCK_Connector_Test.cpp (host_is_up): Added a time out - value of 5 second to spped up the test. Thanks to Jody Hagins - for submitting the patch. - -Tue Aug 03 18:30:47 1999 Kirthika Parameswaran - - * ace/Strategies.h (ACE_Connection_Recycling_Strategy): - Added a new pure virtual method which will - provide a non-locking implementation of the - method. - - * ace/Strategies_T.h (ACE_Cached_Connect_Strategy): - * ace/Cached_Connect_Strategy_T.h (ACE_Cached_Connect_Strategy_Ex): - Made public. - - * ace/Caching_Utility_T.{h,cpp} - (ACE_Refcounted_Recyclable_Caching_Utility): Added this class - which caters to purging of refcounted and recyclable handlers. - - * ace/Cleanup_Strategy_T.{h,cpp}: - (ACE_Refcounted_Recyclable_Cleanup_Strategy): Added this class - which caters to the cleanup of handlers which are refcounted and - recyclable. Heres where the necessity of making the non-locking - version of public arose in the first place. - - * ace/OS.h (ACE_Recyclable_State): - Removed hardcoded values and left the enum values to the - discretion of the compiler. - -Tue Aug 03 16:58:08 1999 Joe Hoffert - - * ace/ATM_Acceptor.{h,cpp}: - * ace/ATM_Connector.{h,cpp}: - * ace/ATM_Stream.{h,i,cpp}: - * ace/ATM_Params.cpp: - * ace/ATM_QoS.cpp: - * ace/XTI_ATM_Mcast.{h,i,cpp}: - Fixed inlining errors. - -Tue Aug 03 16:15:00 1999 Chris Gill - - * ace/Auto_Ptr.h: created ACE_AUTO_PTR_RESET macros, which depend on - whether or not ACE_AUTO_PTR_LACKS_RESET is defined. - - * ace/config-kcc-common.h: defined ACE_AUTO_PTR_LACKS_RESET, because - KCC native auto_ptr support is difficult to disable, and implements - an older version of auto_ptr (without the reset method). - -Tue Aug 03 13:26:47 1999 Nanbor Wang - - * ace/Service_Repository.cpp (instance): Check to see if - the ACE_Object_Manager is being shutting down before creating a - new instance of Service_Repository. Otherwise, we may be - creating a new service repository just for shutting it down. - Thanks to Doug for noticing this. - - * ace/Service_Config.cpp (fini_svcs): Since it is now possible for - ACE_Service_Repository::instance to return 0 during program - shutdown, we must check its value before using it. - - Notice that the change assumes people don't do stupid things - like initializing the Service_Config during program shutdown. - -Mon Aug 2 23:21:01 1999 Carlos O'Ryan - - * bin/auto_compile: - Added several flags to: disable test execution, specify the list - of build directories on the command line, send email on - successful compilation, keep a more detailed history, etc. - -Mon Aug 02 18:38:37 1999 Joe Hoffert - - * ace/ATM_Acceptor.{h,i,cpp} : - * ace/ATM_Connector.{h,i,cpp} : - * ace/ATM_Params.{h,i,cpp} : - * ace/ATM_QoS.{h,i,cpp} : - * ace/ATM_Stream.{h,i,cpp} : - * ace/XTI_ATM_Mcast.{h,i,cpp} : - * ace/ATM_Addr.{h,cpp}: - * ace/Makefile: - * ace/TLI_Connector.i: - Added new ATM wrapper files to make the mechanism of sockets or - XTI transparent when using the ATM protocol. Modified existing - files to take advantage of these wrapper classes. - - * examples/IPC_SAP/ATM_SAP : - * examples/IPC_SAP/ATM_SAP/CPP-client.cpp : - * examples/IPC_SAP/ATM_SAP/CPP-server.cpp : - * examples/IPC_SAP/ATM_SAP/Makefile : - Added new test directory and programs to test ATM wrapper classes. - - * examples/IPC_SAP/TLI_SAP/CPP-ATM-client.cpp: - Modified existing test program to utilize new ATM_QoS class. - -Mon Aug 02 17:24:05 1999 Nanbor Wang - - * ace/OS.h (ACE_DL_TYPE): Only WinCE uses wchar_t DL type, we'll - just deal with this in ACE_OS::dlsym instead of defining - different types here. - - * ace/OS.i (dlsym): GetProcAddress is defined differently on - Windows CE and other Win32 platforms so we need to treat them - differently. - - * ace/Malloc.h (ACE_Malloc_Header): Added a dummy member function - to prevent egcs from complaining "all member functions are - private." - - * ace/Based_Pointer_Repository.cpp: Fixed the use of map - iterators. - - * examples/Shared_Malloc/test_position_independent_malloc.cpp - (main): Delete the allocator before exiting from main. - - * ace/Malloc.h (ACE_Malloc_Header,ACE_Name_Node,ACE_Control_Block): - Added an unimplemented assignment operator for this class. - Otherwise, some compilers will try to use - ACE_Based_Pointer_Base::operator= which is not implemented. - -Mon Aug 2 09:58:20 1999 Ossama Othman - - * netsvcs/lib/Name_Handler.cpp (init): - * netsvcs/lib/Server_Logging_Handler_T.cpp (init): - * netsvcs/lib/TS_Clerk_Handler.cpp (init): - - Changed cast to ACE_SignalHandler to allow it to compile under - gcc 2.95. Thanks to Jeffrey Franks for - reporting the problem. - -Sun Aug 1 15:58:39 1999 James CE Johnson - - * docs/tutorials/colorize: - Added
     wrapper around generated output.
    -
    -        * docs/tutorials/Chap_03/Makefile:
    -        * docs/tutorials/Chap_03/README:
    -        * docs/tutorials/Chap_03/mm.cpp:
    -        * docs/tutorials/Chap_03/ex03.html: mm.cpp (and ex03.html) are a
    -          slightly modified version of ex02.html that uses a memory mapped
    -          file instead of SYSV SHMEM.  To work around the lack of fork()
    -          in Win32, the app must be executed once in server mode
    -          (argv[1] == 's') and again in client mode.
    -
    -Sun Aug  1 15:58:39 1999  Douglas C. Schmidt  
    -
    -        * ace/Memory_Pool.cpp: If the base_addr is 0 for the
    -          ACE_MMAP_Memory_Pool_Options, then we will disable the
    -          "use_fixed_addr" option since it's going to cause big trouble to
    -          mmap() at location 0!  Plus, when 0 is used it's intended as an
    -          indication that the application wants the OS to choose the
    -          appropriate mapping.  This minor change in semantics works
    -          particularly well with the new
    -          ACE_HAS_POSITION_INDEPENDENT_MALLOC feature, because we can now
    -          let the OS choose the mapping location with out fear of begin
    -          mapped to a different location!
    -
    -        * ace  /Memory_Pool.cpp: Conditionally include
    -          ace/Based_Pointer_Repository.h when
    -          ACE_HAS_POSITION_INDEPENDENT_MALLOC is defined.
    -
    -        * ace/config-sunos5.5.h: Enabled the
    -          ACE_HAS_POSITION_INDEPENDENT_MALLOC macro by default.  Let's see
    -          whether this breaks lots of stuff ;-).
    -
    -        * ace/OS.h: Moved the definition of ACE_IPPROTO_TCP down
    -          further in this file so that the IPPROTO_TCP macro would be
    -          defined.
    -
    -        * ace/Based_Pointer_T.cpp: Removed an inappropriate use of
    -          ACE_INLINE in the *.cpp file.  Thanks to DEC UNIX C++ for
    -          reporting this!
    -
    -Sun Aug 01 02:41:44 1999  Nanbor Wang  
    -
    -        * examples/Shared_Malloc/Shared_Malloc.dsw
    -        * examples/Shared_Malloc/position_independent_malloc.dsp: Added
    -          this new project file for position independent malloc test.
    diff --git a/FAQ b/FAQ
    deleted file mode 100644
    index 3eb0a5feeed..00000000000
    --- a/FAQ
    +++ /dev/null
    @@ -1,1863 +0,0 @@
    -There are many changes and improvements in the new version of ACE.
    -The ChangeLog file contains complete details about all of them.
    -
    -I've tested ACE thoroughly on Solaris 2.3 and 2.4 with the SunC++ 4.x
    -compiler and Centerline 2.x.  I've also tested it with the SunC++ 3.x
    -compiler on the SunOS 4.x platform.  However, I've not been able to
    -test it on other platforms.  If anyone has time to do that, and can
    -report the results back to me I'd appreciate that.
    -
    -Please let me know if you have any questions or comments.
    -
    -	Doug
    -
    -----------------------------------------
    -
    -1. SIGHUP
    -
    -> 1) Where the heck does the HUP signal get registered for the 
    -> $ACE_ROOT/tests/Service_Configurator/server stuff? I looked there and
    -> in $ACE_ROOT/libsrc/Service_Configurator. No luck. I guess I am
    -> just blind from reading.
    -
    -	Take a look in ./libsrc/Service_Configurator/Service_Config.h.
    -The constructor for Service_Config is where it happens:
    -
    -  Service_Config (int ignore_defaults = 0, 
    -		  size_t size = Service_Config::MAX_SERVICES, 
    -		  int signum = SIGHUP);
    -
    -----------------------------------------
    -2. Multi-threaded Signal_Handler support
    -
    -> It appears Signal_Handler is
    -> not setup for multi-threaded apps.  How do you handle signals
    -> in different threads? Do I have to put in the hooks in my app or should
    -> it go in the Threads arena?
    -
    -	Ah, good question...  My design follows the approach espoused
    -by Sun.  Basically, they suggest that you implement per-thread signal
    -handling atop of the basic UNIX signal handlers (or in the case of
    -ACE, the handle_signal() callbacks on Event_Handler subclasses) by
    -using the thread id returned by thr_self() to index into a search
    -structure containing the handlers.  This should be pretty straight
    -forward to layer atop the existing ACE Signal_Handler mechanisms.
    -However, you might ask yourself whether you really want (1) separate
    -signal handler *functionality* in different threads or (2) different
    -threads that mask out certain signals.  The latter might be easier to
    -implement and reason about!
    -
    -----------------------------------------
    -3. Problems compiling ACE with G++
    -
    -> I substituted -lg++ for -lC in macro_wrappers.GNU and ran make.
    -> 
    -> Most stuff seemed to build.  Continually got messages like the following:
    -> ld: /usr2/tss/jvm/ACE_wrappers/lib/libASX.a: warning: archive has no table of c
    -> ontents; add one using ranlib(1)
    -> ld: /usr2/tss/jvm/ACE_wrappers/lib/libThreads.a: warning: archive has no table 
    -> of contents; add one using ranlib(1)
    -> ld: /usr2/tss/jvm/ACE_wrappers/lib/libSPIPE.a: warning: archive has no table of
    ->  contents; add one using ranlib(1)
    -> ld: /usr2/tss/jvm/ACE_wrappers/lib/libASX.a: warning: archive has no table of c
    -> ontents; add one using ranlib(1)
    -> ld: /usr2/tss/jvm/ACE_wrappers/lib/libThreads.a: warning: archive has no table 
    -> of contents; add one using ranlib(1)
    -> ld: /usr2/tss/jvm/ACE_wrappers/lib/libSPIPE.a: warning: archive has no table of
    ->  contents; add one using ranlib(1)
    -
    -> no matter how many times I used ranlib or removed the libraries and re-compiled
    -> or whatever.  Perhaps these are System V specific and will not work on 4.1.3?
    -
    -	Yes, that's exactly right.  If you look at the files, they all
    -contain ifdef's for features that aren't included in the
    -./include/makeinclude/wrapper_macros.GNU file.  To make this more
    -obvious, I've enclosed the following message in the ACE-INSTALL.html file:
    -
    -	* Sun OS 4.1.x
    -
    -		  Note that on SunOS 4.x you may get warnings from the 
    -		  linker that "archive has no table of contents; add
    -		  one using ranlib(1)" for certain libraries (e.g.,
    -		  libASX.a, libThreads.a, and libSPIPE.a).  This 
    -		  occurs since SunOS 4.x does not support these features.
    -
    -> never able to get .so -- assume these are shared libraries that gcc can not
    -> deal with.
    -
    -	Yes, if you use the stock gcc/gas/gnu ld
    -compiler/assembler/linker, you won't get shared libraries to work.  It
    -is possible to hack this by using the "collect" version of g++.
    -However, as usual, I strongly advise people to stay away from g++ if
    -you want to use shared libraries or templates.
    -
    -> got some linker errors as follows:
    -> 
    -> g++ -g  -DACE_NTRACE  -DACE_HAS_MT_SAFE_SOCKETS -DACE_HAS_NO_T_ERRNO -DACE_HAS_
    -> OLD_MALLOC -DACE_HAS_POLL -DACE_HAS_SEMUN -DACE_HAS_SETOWN -DACE_HAS_STRBUF_T -
    -> DACE_HAS_STREAMS -DACE_HAS_SVR4_DYNAMIC_LINKING -DACE_HAS_TIUSER_H -DACE_HAS_SY
    -> S_FILIO_H -DACE_PAGE_SIZE=4096 -DACE_HAS_ALLOCA -DACE_HAS_CPLUSPLUS_HEADERS -DA
    -> CE_HAS_SVR4_SIGNAL_T -DACE_HAS_STRERROR -DMALLOC_STATS -I/usr2/tss/jvm/ACE_wrap
    -> pers/include  -I/usr2/tss/jvm/ACE_wrappers/libsrc/Shared_Malloc  -o test_malloc
    ->  .obj/test_malloc.o -L/usr2/tss/jvm/ACE_wrappers/lib  -Bstatic -lSemaphores -lS
    -> hared_Malloc -lShared_Memory -lReactor -lThreads -lMem_Map -lLog_Msg -lFIFO -lI
    -> PC_SAP -lMisc -lnsl -lg++
    -> ld: /usr2/tss/jvm/ACE_wrappers/lib/libThreads.a: warning: archive has no table 
    -> of contents; add one using ranlib(1)
    -> ld: Undefined symbol 
    ->    _free__t6Malloc2Z18Shared_Memory_PoolZ13PROCESS_MUTEXPv 
    ->    _free__t6Malloc2Z17Local_Memory_PoolZ10Null_MutexPv 
    ->    _malloc__t6Malloc2Z18Shared_Memory_PoolZ13PROCESS_MUTEXUl 
    ->    _malloc__t6Malloc2Z17Local_Memory_PoolZ10Null_MutexUl 
    ->    _remove__t6Malloc2Z17Local_Memory_PoolZ10Null_Mutex 
    ->    ___t6Malloc2Z17Local_Memory_PoolZ10Null_Mutex 
    ->    _print_stats__t6Malloc2Z17Local_Memory_PoolZ10Null_Mutex 
    ->    _remove__t6Malloc2Z18Shared_Memory_PoolZ13PROCESS_MUTEX 
    ->    ___t6Malloc2Z18Shared_Memory_PoolZ13PROCESS_MUTEX 
    ->    _print_stats__t6Malloc2Z18Shared_Memory_PoolZ13PROCESS_MUTEX 
    -> collect2: ld returned 2 exit status
    -> gcc: file path prefix `static' never used
    -> make[2]: *** [test_malloc] Error 1
    -> make[2]: Leaving directory `/usr2/tss/jvm/ACE_wrappers/tests/Shared_Malloc'
    -> <========     End all: /usr2/tss/jvm/ACE_wrappers/tests/Shared_Malloc
    -
    -	That looks like a problem that G++ has with templates.  I
    -don't know of any reasonable solution to this problem using g++.
    -
    -> Finally decided there was enough stuff that it looked like I might have some
    -> thing so I tried to run some tests and could not find so much as one piece
    -> of documentation that might give me some clue about running tests.
    -
    -You should take a look at ./tests/Service_Configurator/server/README
    -file.  That explains how to run the more complicated tests.  As for
    -the other tests, it is pretty straight forward if you look at the
    -./tests/IPC_SAP/SOCK_SAP and ./tests/Reactor/* directory code to
    -figure out how to run the tests.  I don't have a Q/A department, so
    -any documentation has to come from volunteers.
    -
    -----------------------------------------
    -4. Is there any docs or man pages on the Log_Record class?
    -
    -There is a paper in the C++_wrappers_doc.tar.Z file on ics.uci.edu
    -called reactor2.ps that has some examples of using Log_Record.  The
    -./apps/Logger directories show several examples using Log_Record.  
    -Finally, the source code for Log_Record is pretty short (though it
    -clearly could be commented better ;-)).
    -
    -----------------------------------------
    -5. Signal handling prototypes
    -
    -> According to the man page on sigaction on our system, that line
    -> should look something like the following:
    -> 
    ->       sa.sa_handler = SIG_DFL;
    -
    -	The problem is that most versions of UNIX I've come across
    -don't have a correct prototype for this field of struct sigaction.
    -That's why I define two variants of signal handler typedefs: one that
    -is a typedef of the "correct version" (which I call SignalHandler) and
    -one of which is a typedef of the "incorrect version" (which I call
    -SignalHandlerV).  You might check out the sysincludes.h file to see
    -how it is defining SignalHandlerV and make sure this matches what your
    -OS/Compiler defines in 
    -
    -----------------------------------------
    -6. Omitting shared libraries
    -
    -> Can anyone tell me a way to turn off the creation of the shared libraries
    -> in the ACE build.
    -
    -You can simply comment out the LIB target in the $ACE_ROOT/ace/Makefile
    -or change the BUILD target from
    -
    -BUILD	= $(VLIB) $(VSHLIB) $(SHLIBA)
    -
    -to
    -
    -BUILD	= $(VSHLIB) $(SHLIBA)
    -
    -----------------------------------------
    -7. DCE threading and signal handling
    -
    ->Reading the DCE docs leaves me confused as to how to make everyone
    ->work together in a happy hormonious whole. May basic need is to catch
    ->asynchronous signals so i can release some global resources before
    ->the process exits.
    -
    -You need to spawn a separate thread to handle signals.  As part of
    -your init, do this:
    -	pthread_create(&tid, thread_attr, signal_catcher, NULL);
    -	pthread_detach(&tid);
    -
    -Where signal_catcher is like this:
    -static void *
    -signal_catcher(void *arg)
    -{
    -    static int		catch_sigs[] = {
    -	SIGHUP, SIGINT, SIGQUIT, SIGTERM, SIGCHLD
    -    };
    -    sigset_t		catch_these;
    -    int			i;
    -    error_status_t	st;
    -
    -    for ( ; ; ) {
    -	sigemptyset(&catch_these);
    -	for (i = 0; i < sizeof catch_sigs / sizeof catch_sigs[0]; i++)
    -	    sigaddset(&catch_these, catch_sigs[i]);
    -	i = sigwait(&catch_these);
    -	/* Note continue below, to re-do the loop. */
    -	switch (i) {
    -	default:
    -	    fprintf(stderr, "Caught signal %d.  Exiting.\n", i);
    -	    CLEANUP_AND_EXIT();
    -	    /* NOTREACHED */
    -#if	defined(SIGCHLD)
    -	case SIGCHLD:
    -	    srvrexec__reap();
    -	    continue;
    -#endif	/* defined(SIGCHLD) */
    -	}
    -    }
    -    return NULL;
    -}
    -----------------------------------------
    -8.
    -
    -> I have installed ACE2.15.5 on SunOS 4.1.3 with gcc2.6.0. I run the test program
    -> ---server_test. The static is OK, but error found when I commented out the first
    -> one and uncommented out the second one in the svc.conf file: 
    -> 
    -> #static Svc_Manager "-d -p 3912"
    -> dynamic Remote_Brdcast Service_Object * .shobj/Handle_Broadcast.so:remote_broad
    -> cast "-p 10001"
    -> 
    -> The error goes like this:
    -> 
    -> -----------
    -> jupiter[12] %server_test -d
    -> starting up daemon server_test
    -> opening static service Svc_Manager
    -> did static on Svc_Manager, error = 0
    -> signal signal 1 occurred
    -> beginning reconfiguration at Sat Feb 25 13:40:29 1995
    -> Segmentation fault (core dumped)
    -> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    -
    -My guess is that the code generated by GCC on SunOS 4.x does not
    -correctly initialize static variables from shared libraries.  The
    -SunC++ 4.0.x compiler does this correctly on Solaris 2.x (though I
    -believe that on SunOS 4.x it doesn't work without some extra coaxing).
    -
    -In general, I try to avoid using ACE's explicit dynamic linking
    -mechanisms on SunOS 4.x and GCC.  You can write plenty of interesting
    -and useful code with ACE without using those features.  Those tests
    -are mostly there to illustrate the "proof of concept."
    -----------------------------------------
    -9. 
    -
    -> a) I noticed the default constructor for the reactor does an open w/ defaults.
    ->    Does this mean I need to close it if I wish to re-open it with different
    ->    size and restart values?
    -
    -	No.  With the latest versions of ACE, you can now just call
    -open() with a new size and it will correctly resize the internal
    -tables to fit.
    -
    -> b) What is the usage difference between the normal FD_Set objects 
    ->    (rd/wr/ex_handle_mask_) and the ready FD_Set objects 
    ->    (rd/wr/ex_handle_mask_ready)?
    -
    -	The normal FD_Sets (now called Handle_Set in ACE 3.0.5) holds
    -the "waitable" descriptors (these are the descriptors given to
    -select() or poll()).  In contrast, the ready FD_Sets may be set by
    -Event_Handler subclasses (by called the set_ready() API) to indicate
    -to the Reactor that they want to be redispatched on the next go-round
    -*without* blocking.  If you look at the Reactor code, you'll see that
    -the wait_for() method checks the ready sets first and doesn't block if
    -there are any bits set in those masks.  This features makes it
    -possible for Event_Handlers to control subsequent dispatching policies
    -of the Reactor.
    -
    -> c) What does the positive return value do from an event handler callback:
    ->   -1 detaches the event handler for that mask
    ->    0 does nothing - keeps the event handler registered for that mask
    ->   >0 resets a bit in the current dispatching mask (I think) - does this mean 
    ->    this event will be called again before the current dispatch cycle is done?
    -
    -Almost...  (it's tied in with my description of the ready sets above).
    -It means that once the Reactor finishes cycling through the set of
    -descriptors it got back from select() or poll(), it will redispatch
    -the ready set descriptors before sleeping.
    -
    ->    Without direct access to the bit masks in X, I'm not sure I could emulate
    ->    this activity - what do you think?
    -
    -I'm not sure.  I'm not enough of an X guru.  Maybe someone else on the
    -list knows the answer to this?
    -
    -> d) If I let X do the select blocking, will that have any affect on 
    ->    the Reactor performing signal handling? 
    -
    -	Yes, I think that will cause problems since the Reactor relies
    -on a "handshake" between its Signal_Handler component and its
    -handle_events loop to properly handle signals.
    -
    -> e) Is the Poll method preferred over Select if it is available - why?
    -
    -For systems that implement select() in terms of poll() (e.g., Solaris
    -2.x) then it may be somewhat faster.  Otherwise, it doesn't really
    -matter since (1) they (should) do the same thing and (2) the end user
    -shouldn't notice any change in behavior.
    -
    -----------------------------------------
    -10. 
    -
    -> I would very much like to evaluate/use the ACE Toolkit,
    -> but am limited as to disk space on our system.
    -> What is the total disk space required for a compiled,
    -> usable toolkit?
    -
    -The source code itself is around 2 Meg, uncompressed.  
    -
    -The compiled version of ACE is around 90 Meg compiled with the SunC++
    -4.x compiler (naturally, this will differ with other compilers).
    -However, of this amount, about 40 meg are for the libraries, and
    -another 50 meg are for the test programs.  Naturally, you don't need
    -to keep the test programs compiled.
    -
    -The postscript documentation is around 5 Meg, compressed.
    -
    -----------------------------------------
    -11.
    -
    -> This is regarding the newer release of ACE and pertaining to the library
    -> archive file. My question is, if all the ".o" files are archived into one
    -> single "libACE.a", does it increase the size of the executable program?
    -
    -No.  The use of a *.a file allows the linker to extract out only those
    -*.o files that are actually used by the program.
    -
    -> If it does, then does a large executable program mean possibility of it being 
    -> slower?
    -
    -	No.
    -
    -----------------------------------------
    -12.
    -
    -> What happens if I have several reactors in a process (e.g. in different 
    -> threads)?
    -> 
    -> Programmer 1 decides to register at reactor 1 in his thread 1 a signal handler 
    -> for SIGUSR.
    -> Programmer 2 decides to register at reactor 2 in his thread 2 a signal handler
    -> for SIGUSR.
    -
    -	Naturally, the behavior of this all depends on the semantics
    -of the threads package...  In Solaris 2.x, signal handlers are shared
    -by all threads.  Moreover, the Reactor uses a static table to hold the
    -thread handlers.  Thus, only one of the handler's would be registered
    -(i.e., whichever one was registered second).
    -
    -> Programmer 3 designs the process and decides to have thread 1 and thread 2
    -> running in the same process and also makes use of a third party software library
    -> that internally has also registered a signal handler (not at the reactor) for
    -> SIGUSR.
    -
    -	Now you've got big problems!  This is an example of a
    -limitation with UNIX signal handlers...  In general, it's a bad idea
    -to use signal handlers if you can avoid it.  This is yet another
    -reason why.
    -
    -> When looking into Ace/ACE_wrappers/tests/Reactor/misc/signal_tester.C you
    -> have shown a way to do this by marking the dummy file_descriptor of the
    -> Sig_Handler object ready for reading asynchronously. The handle_input()
    -> routine of Sig_Handler object will then be dispatched synchronously.
    -> But what happens if I have several reactors. 
    -> The asynchronously dispatched
    -> handle_signal() routine does not know via which reactor it has been registered
    -> so in which reactor to modify the dummy file_descriptor.
    -> Is your suggestion to have just one process global reactor in such a case?
    -
    -	Yes, precisely.  I would *strongly* recommend against using
    -several reactors within separate threads within the same process if
    -you are going to be having them handle signals.  Can you use 1
    -reactor and/or have one reactor handle signals within a process?
    -
    -> One thing we want to do is the priorization of Event_Handlers. I.e. in case
    -> of concurrent events the sequence in which the Event_Handler methods will be
    -> activated depends on their priority relative to each other. 
    -> We have two choices:
    -> - complete priorization, which means a high priority Input Event_Handler may
    ->   be activated prior to a lower prioritized Output Event_Handler (and doing
    ->   so violating the 'hardcoded rule' that output must be done prior to input).
    -> - priorization only in categories, which means all Output Event_handler are
    ->   ordered by their priority regardless of priorities for the category of Input
    ->   Event_Handlers. The priority is fixed between the categories, i.e. first
    ->   output then input then out-of-band.
    -> 
    -> Right now I would think that we have to use the second choice if we want to
    -> use the feature of asynchronous output with automatical re-queueing. Am I right
    -> ?
    -
    -	Hum, that's an interesting problem.  It might be better to
    -subclass the Reactor to form a new class called Priority_Reactor.
    -This subclass would override the Reactor's dispatch method and
    -dispatch the event handlers in "priority" order.  I've never done
    -that, but I don't think it would be all that difficult.
    -
    -----------------------------------------
    -13. 
    -
    -> 	Is the non CORBA version still aroung? I think I still need it from the
    -> follow error, or is something else?
    -
    -Aha, there are two ways to get around this problem:
    -
    -1. Set your ORBIX_ROOT environment variable to the location of the
    -   Orbix release (e.g., /opt/Orbix).  Naturally, this only works
    -   if you've got Orbix installed on your machine.
    -
    -2. If you don't have Orbix, then to get rid of that problem all you
    -   need to do is change the symbolic links on the 
    -
    -./include/config.h
    -./include/makeinclude/platform_macros.GNU
    -
    -files to 
    -
    -./include/config-sunos5-sunc++-4.x
    -./include/makeinclude/platform_sunos5_sunc++.GNU
    -
    -rather than the *-orbix* versions, which they point to by default.
    -And then recompile ACE.
    -----------------------------------------
    -14. 
    -> We are using your ACE software and ran into a problem which may or may not
    -> be related to the mutex locks.  The question may have more to do with how 
    -> mutex locks should be used.  We had a class which was using your mutex 
    -> lock wrapper.  Each member function of the class acquired the lock before 
    -> processing and released on exiting the function.  Some member functions may 
    -> call other member functions.  The following is an example:
    -> 
    -> class foo {
    -> 
    -> void a()
    -> {
    ->   MT( Mutex_Block m( this->lock_ ));
    -> 
    ->   if( cond )
    ->     b();
    -> }
    -> 
    -> void b()
    -> {
    ->   MT( Mutex_Block m( this->lock_ ));
    -> 
    ->   if( cond )
    ->     a();
    -> }
    -> 
    -> };
    -> 
    -> Is this valid ?  My assumtpion is that the mutex lock is recursive and 
    -> the same thread can acquire the lock multiple times in different member
    -> functions.
    -
    -	Ah, that's a great question since there are subtle and
    -pernicious problems lurking in the approach you are trying above.
    -Basically, Solaris mutex locks are *not* recursive (don't ask why...)
    -Thus, if you want to design an application like the one above you'll
    -need to use one or more of the following patterns:
    -
    -----------------------------------------
    -A. Use recursive mutexes.  Although these are not available in
    -   Solaris directly they are supported in the later versions
    -   of ACE.  You might want to take a look at the latest
    -   version (./gnu/ACE-3.1.9.tar.Z).  It's got lots of new
    -   support for threading and synchronization.  In that case,
    -   you simply do the following:
    -
    -	class Foo 
    -	{
    -	  public:
    -	  void a()
    -	  {
    -	    MT( Guard > m( this->lock_ ));
    -	    b ();
    -	  }
    -
    -	  void b()
    -	  {
    -	    MT( Guard > m( this->lock_ ));
    -	    b_i ();
    -	  }
    -
    -	};
    -
    -   The advantage with this is that it requires almost no
    -   changes to existing code.  The disadvantage is that
    -   recursive locks are just slightly more expensive.
    -
    -B. Have two layers of methods (a) which are public and acquire
    -   the Mutex and then call down to methods in layer (b), which
    -   are private and do all the work.  Methods in layer b assume
    -   that the locks are held.  This avoids the deadlock problem
    -   caused by non-recursive mutexes.  Here's what this approach
    -   looks like (using the more recent ACE class names):
    -
    -	class Foo 
    -	{
    -	  public:
    -	  void b()
    -	  {
    -	    MT( Guard m( this->lock_ ));
    -	    b_i ();
    -	  }
    -
    -	  void b_i()
    -	  {
    -	    if( cond )
    -	      a_i();
    -	  }
    -
    -	  void a_i()
    -	  {
    -	    if( cond )
    -	      b_i();
    -	  }
    -
    -	  void a()
    -	  {
    -	    MT( Guard m( this->lock_ ));
    -	    a_i ();
    -	  }
    -
    -	};
    -
    -    The advantage here is that inline functions can basically
    -    remove all performance overhead.  The disadvantage is that
    -    you need to maintain two sets of interfaces.
    -
    -C. Yet another approach is to release locks when calling
    -   other methods, like this:
    -
    -	class Foo 
    -	{
    -	  public:
    -	  void b()
    -	  {
    -	    MT( Guard m( this->lock_ ));
    -	    m.release ();
    -	    a ();
    -	    m.acquire ();
    -	  }
    -
    -	  void a()
    -	  {
    -	    MT( Guard m( this->lock_ ));
    -	    m.release ();
    -	    b ();
    -	    m.acquire ();
    -	  }
    -
    -	};
    -
    -   The disadvantage with this, of course, is that you
    -   greatly increase your locking overhead.  In addition,
    -   you need to be very careful about introducing race
    -   conditions into the code.  The primary reason for
    -   using this approach is if you need to call back to
    -   code that you don't have any control over (such as
    -   OS I/O routines) and you don't want to hold the 
    -   lock for an indefinite period of time.
    -----------------------------------------
    -	   
    -	BTW, all three of these patterns are used in the ACE Reactor
    -class category.  The Reactor has a number of fairly complex
    -concurrency control and callback issues it must deal with and I've
    -found it useful to use all three of these patterns jointly.
    -
    -	I'd be interested to hear any comments on these approaches.
    -	
    -	Doug
    -----------------------------------------
    -15. 
    -
    -> I am working on Solaris 2.3 and trying to understand how to get around
    -> the problem of trying to open a Socket connection to a remote host that
    -> is "dead".  Of course you get a nice long process block if the socket
    -> is in Blocking mode (TCP lets you know when you can continue - how polite). 
    ->
    -> So how does a non-blocking connect work with respect to using
    -> the Reactor and a SOCK_Stream object to coordinate the opening
    -> of the connection? Do I wait on the OUTPUT event for the FD?
    -> How do I know if the connect worked or possibly timed-out?  Is
    -> this a reliable approach (I read somewhere that this will only
    -> work if the STREAMS module is at the top of the protocol stack
    -> - MAN page I think)?
    -
    -An example of implementing this is in the Gateway sample application
    -in the new ACE.  It's also encapsulated in the Connector<> pattern of
    -the Connection class category in ./libsrc/Connection.  You may want to
    -take a look at those two things for concrete usage examples.
    -
    -However, the basics of getting non-blocking to work are:
    -- set socket to non-blocking
    -- initiate connect() request
    -- if connect() returned 0 you're connected
    -- if connect() returned -1 and errno is EWOULDBLOCK (or EAGAIN, depending  
    -on where you are), then register an event handler for read and write events  
    -on the socket
    -- any other errno value is fatal
    -
    -When an event is returned
    -- no matter which event you get back (read or write), you may have gotten  
    -the event out of error.  Thus, re-attempt the connect() and check to see if  
    -errno is EISCONN (if it's not there's a problem!)
    -- if errno was EISCONN, the connection is ready to go, otherwise you must  
    -handle an error condition
    -
    -If you want to "time out" after a certain period of time, consider  
    -registering for a timer event with Reactor.  If the timer goes off before  
    -the connection succeeds, close down the appropriate socket.
    -
    -> Is using a separate thread to make the connection a better way to avoid
    -> the potentialy long block in the main thread during the connect call?
    -
    -You could do that, but it can all be accomplised in a single process using  
    -the facilities available.
    -----------------------------------------
    -16. 
    -
    -> I was wondering, does the Reactor class have the ability to prioritize 
    -> activity on the registered event handlers?
    -
    -	The default strategy for the Reactor's dispatch routine
    -(Reactor::dispatch) does not prioritize dispatching other than to
    -dispatch callbacks in ascending order from 0 -> maxhandlep1.
    -
    -> We have a requirment to be able to process both real-time, as well as, stored
    -> telemetry and ERMs concurrently.  Real-time needs to be processed at a higher
    -> priority than stored data.  Our design is based on both real-time and stored 
    -> data coming into our process via separate sockets.  
    -
    -	I can think of several ways to do this:
    -	
    -	1. Use dup() or dup2() to organize your sockets such that the
    -	   higher priority sockets come first in the Handle_Sets that
    -	   the Reactor uses to dispatch sockets.  This is pretty easy
    -	   if you don't want to muck with the Reactor code at all.
    -
    -	2. You could subclass Reactor::dispatch() and revise it so
    -	   that it dispatches according to some other criteria that
    -	   you define in order to ensure your prioritization of
    -	   sockets.
    -
    -BTW, I'm not sure what you mean by "real-time" but I assume that you
    -are aware that there is no true "real-time" scheduling for network I/O
    -in Solaris.  However, if by "real-time" you mean "higher priority"
    -then either of the above strategies should work fine.  
    -----------------------------------------
    -17. 
    -
    -> 	I compiled the new ACE 3.2.0 's apps/Gateway. The compiling went
    -> through without any errors. But I could not get it running,  neither single
    -> threaded nor multi-threaded. The cc_config and rt_config files entries are given
    -> below. Also the machine configurations are given below. Does it need some more 
    -> settings or some patch !!??
    -
    -	I believe you are seeing the effects of the dreaded Sun MP bug
    -with non-blocking connects.  The easy work around for now is simply to
    -give the "-b" option to the Gateway::init() routine via the svc.conf
    -file:
    -
    -dynamic Gateway Service_Object *.shobj/Gateway.so:_alloc_gatewayd() active 
    -				"-b -d -c cc_config -f rt_config"
    -
    -If you check line 137 of the Gateway::parse_args() method you'll see
    -what this does.
    -----------------------------------------
    -18.
    -
    -How to get ACE to work with GCC C++ templates.
    -
    -The first and foremost thing to do is to get the latest version of GCC
    -(2.7.2) and also get the template repository patches from
    -
    -ftp://ftp.cygnus.com/pub/g++/gcc-2.7.1-repo.gz
    -
    -This will get the ball rolling...
    -
    -Here is some more info on G++ templates courtesy of Medhi TABATABAI
    -:
    -
    -Where's the Template?
    -=====================
    -
    -   C++ templates are the first language feature to require more
    -intelligence from the environment than one usually finds on a UNIX
    -system.  Somehow the compiler and linker have to make sure that each
    -template instance occurs exactly once in the executable if it is
    -needed, and not at all otherwise.  There are two basic approaches to
    -this problem, which I will refer to as the Borland model and the
    -Cfront model.
    -
    -Borland model
    -     Borland C++ solved the template instantiation problem by adding
    -     the code equivalent of common blocks to their linker; template
    -     instances are emitted in each translation unit that uses them, and
    -     they are collapsed together at run time.  The advantage of this
    -     model is that the linker only has to consider the object files
    -     themselves; there is no external complexity to worry about.  This
    -     disadvantage is that compilation time is increased because the
    -     template code is being compiled repeatedly.  Code written for this
    -     model tends to include definitions of all member templates in the
    -     header file, since they must be seen to be compiled.
    -
    -Cfront model
    -     The AT&T C++ translator, Cfront, solved the template instantiation
    -     problem by creating the notion of a template repository, an
    -     automatically maintained place where template instances are
    -     stored.  As individual object files are built, notes are placed in
    -     the repository to record where templates and potential type
    -     arguments were seen so that the subsequent instantiation step
    -     knows where to find them.  At link time, any needed instances are
    -     generated and linked in.  The advantages of this model are more
    -     optimal compilation speed and the ability to use the system
    -     linker; to implement the Borland model a compiler vendor also
    -     needs to replace the linker.  The disadvantages are vastly
    -     increased complexity, and thus potential for error; theoretically,
    -     this should be just as transparent, but in practice it has been
    -     very difficult to build multiple programs in one directory and one
    -     program in multiple directories using Cfront.  Code written for
    -     this model tends to separate definitions of non-inline member
    -     templates into a separate file, which is magically found by the
    -     link preprocessor when a template needs to be instantiated.
    -
    -   Currently, g++ implements neither automatic model.  The g++ team
    -hopes to have a repository working for 2.7.0.  In the mean time, you
    -have three options for dealing with template instantiations:
    -
    -  1. Do nothing.  Pretend g++ does implement automatic instantiation
    -     management.  Code written for the Borland model will work fine, but
    -     each translation unit will contain instances of each of the
    -     templates it uses.  In a large program, this can lead to an
    -     unacceptable amount of code duplication.
    -
    -  2. Add `#pragma interface' to all files containing template
    -     definitions.  For each of these files, add `#pragma implementation
    -     "FILENAME"' to the top of some `.C' file which `#include's it.
    -     Then compile everything with -fexternal-templates.  The templates
    -     will then only be expanded in the translation unit which
    -     implements them (i.e. has a `#pragma implementation' line for the
    -     file where they live); all other files will use external
    -     references.  If you're lucky, everything should work properly.  If
    -     you get undefined symbol errors, you need to make sure that each
    -     template instance which is used in the program is used in the file
    -     which implements that template.  If you don't have any use for a
    -     particular instance in that file, you can just instantiate it
    -     explicitly, using the syntax from the latest C++ working paper:
    -
    -          template class A;
    -          template ostream& operator << (ostream&, const A&);
    -
    -     This strategy will work with code written for either model.  If
    -     you are using code written for the Cfront model, the file
    -     containing a class template and the file containing its member
    -     templates should be implemented in the same translation unit.
    -
    -     A slight variation on this approach is to use the flag
    -     -falt-external-templates instead; this flag causes template
    -     instances to be emitted in the translation unit that implements
    -     the header where they are first instantiated, rather than the one
    -     which implements the file where the templates are defined.  This
    -     header must be the same in all translation units, or things are
    -     likely to break.
    -
    -     *See Declarations and Definitions in One Header: C++ Interface,
    -     for more discussion of these pragmas.
    -
    -  3. Explicitly instantiate all the template instances you use, and
    -     compile with -fno-implicit-templates.  This is probably your best
    -     bet; it may require more knowledge of exactly which templates you
    -     are using, but it's less mysterious than the previous approach,
    -     and it doesn't require any `#pragma's or other g++-specific code.
    -     You can scatter the instantiations throughout your program, you
    -     can create one big file to do all the instantiations, or you can
    -     create tiny files like
    -
    -          #include "Foo.h"
    -          #include "Foo.cc"
    -          
    -          template class Foo;
    -
    -     for each instance you need, and create a template instantiation
    -     library from those.  I'm partial to the last, but your mileage may
    -     vary.  If you are using Cfront-model code, you can probably get
    -     away with not using -fno-implicit-templates when compiling files
    -     that don't `#include' the member template definitions.
    -
    -4. Placing a function that looks like this near the top of a .C file
    -   that uses any inline template member functions permits proper inlining:
    -
    -   // #ifdef __GNUG__
    -   // This function works around the g++ problem with inline template member
    -   // calls not being inlined ONLY in the first block (in a compilation
    -   // unit) from which they are called.
    -   // This function is inline and is never called, so it does not produce
    -   // any executable code.  The "if" statements avoid compiler warnings about
    -   // unused variables.
    -   inline
    -   void
    -   gcc_inline_template_member_function_instantiator()
    -   {
    -       if ( (List *) 0 );
    -   }
    -   // #endif  // __GNUG__
    -
    -   other prerequisites:
    -   -- All inline template member functions should be defined in
    -      the template class header.  Otherwise, g++ will not inline
    -      nested inline template member function calls.
    -   -- Template .h and .C files should NOT include iostream.h
    -      (and therefore debugging.h).
    -      This is because iostream.h indirectly includes other
    -      GNU headers that have unprotected #pragma interface,
    -      which is incompatible with -fno-implicit-templates and optimal
    -      space savings.
    -   -- inline virtual destructors will not be inlined, unless necessary,
    -      if you want to save every last byte
    -   -- be sure that -Winline is enabled
    -
    -----------------------------------------
    -19.
    -
    -> 	1. when are dynamically loaded objects removed from the Service_Config.
    -
    -The Service Configurator calls dlclose() when a "remove Service_Name"
    -directive is encountered in the svc.conf file (or programmatically
    -when the Service_Config::remove() method is invoked).  Check out the
    -code in ./libsrc/Service_Config/Service_Repository.i and
    -./libsrc/Service_Config/Service_Config.i to see exactly what happens.
    -
    -> 	2. In the Service Configurator, when an item is entered in the svc.conf
    -> 		how dow you know which items will be invoked as threads and 
    -> 		which items are forked. I know that static items are executed 
    -> 		internally. 
    -
    -	No!  It's totally up to the subclass of Service_Object to
    -decide whetehr threading/forking/single-threading is used.  Check out
    -the ./apps/Logger/Service_Configurator_Logger for examples of
    -single-threaded and multi-threaded configuration.
    -----------------------------------------
    -20. 
    -
    -> I have been reading the Service Configurator Logger. I was wondering about 
    -> cleanup of new objects. In the handle_input method for the Acceptor a new
    -> svc_handler is allocated for each new input request and deleted in the 
    -> handle_close. I was wondering how handle close was called when a client who
    -> has created a socket terminates the connection (i.e., when is handle_close
    -> called).
    -
    -handle_close() is automatically called by the Reactor when a
    -handle_input()/handle_output()/etc. method returns -1.  This is the
    -"hook" that instructs the Reactor to call handle_**() and then remove
    -the Event_Handler object from its internal tables.
    -
    -----------------------------------------
    -21. 
    -
    -> How does the Logger know to remove the client socket and the svc_handler object.
    -> Does he recieve an exception. 
    -
    -	No.  when the client terminates the underlying TCP/IP
    -implementation sends a RESET message to the logger host.  This is
    -delivered to the logger process as a 0-sized read().  It then knows to
    -close down.
    -
    -> What I am worried about is a leak. Where by alot of clients connect and 
    -> disconnect and the server does not cleanup correctly. Such as a core dump
    -> from the client where he cannot close correctly.
    -
    -	That's handled by the underlying TCP (assuming it is
    -implemented correctly...).
    -
    -> What I am doing is attempting to convert the logger example into an alarm
    -> manager for remote nodes. In this application a node may be powered down
    -> there by terminating a Logger/Alarm server connection abnormally, this could
    -> leave the Logger with many dangling sockets and allocated svc_handler objects.
    -
    -	If the TCP implementation doesn't handle this correctly then
    -the standard way of dealing with it is to have an Event_Handler use a
    -watchdog timer to periodically "poll" the client to make sure it is
    -still connected.  BTW, PCs tend to have more problems with this than
    -UNIX boxes since when they are turned off the TCP implementation may
    -not be able to send a RESET...
    -----------------------------------------
    -22. 
    -
    -Using templates with Centerline.
    -
    -Centerline uses ptlink to process the C++ templates. ptlink expect the
    -template declarations and definitions (app.h and app.C) to reside in
    -the same directory. This works fine for the ACE hierarchy since
    -everything is a link to the appropriate src directory (include/*.[hi]
    ---> ../src/). When a users of the ACE distribution attempts to include
    -the ACE classes in an existing application hierarchy this problem will
    -arise if ptlink is used.
    -
    -The solution is to create a link to the declaration file from the
    -definition file directory and use the "-I" to point to the definition
    -directory.
    -
    -----------------------------------------
    -
    -23. 
    -
    -> When I try to compile $ACE_ROOT/src/Message_Queue.C on a Solaris
    -> 5.3 system using SUNPro CC 4.0, the compiler aborts with a Signal 10
    -> (Bus Error).  Our copy of CC 4.0 is over a year old and I do not
    -> know if any patches or upgrades exist for it.  If they do, then we
    -> have not applied them to our compiler.
    -
    -	Several other people have run across this as well.  It turns
    -out that there is a bug in the Sun 4.0.0 C++ compiler that will get a
    -bus error when -g is used.  If you compilg Message_Queue.C *without*
    --g then it works fine.  The later versions of SunC++ don't have this
    -bug.  I'd recommend that you upgrade as soon as possible.
    -
    -----------------------------------------
    -
    -24. 
    -
    -> I have added a dynamic service to the Service Configurator. This new service
    -> fails on the load because it uses application libraries that are not shared 
    -> object libraries (i.e., objects in libApp.a). I am assuming from the error
    -> message that the problem is the mix match of shared and non-shared objects.
    -
    -	Right, exactly.
    -
    -> I was wondering if there is an easy way to add static services to the 
    -> Service Configurator. The example directory listing static service is
    -> very tightly coupled with the Service_Config object. Is there another
    -> way of adding static services.
    -
    -	Sure, that's easy.  The best way to do this is to use the
    -interfaces of the Service_Respository class to configure static
    -services into the Service_Config.  A good example of how to do this is
    -in Service_Config.[Chi]:
    -
    -int
    -Service_Config::load_defaults (void)
    -{
    -  for (Static_Svc_Descriptor *sl = Service_Config::service_list_; sl->name_ != 0; sl++)
    -    {
    -      Service_Type *stp = ace_create_service_type (sl->name_, sl->type_, 
    -						   (const void *) (*sl->alloc_)(),
    -						   sl->flags_);
    -      if (stp == 0)
    -	continue;
    -
    -      const Service_Record *sr = new Service_Record (sl->name_, stp, 0, sl->active_);
    -
    -      if (Service_Config::svc_rep->insert (sr) == -1)
    -	return -1;
    -    }
    -  return 0;
    -}
    -
    -----------------------------------------
    -25. 
    -
    -> 8. Do you have examples of the SYNC/ASYNC pattern?
    -
    -	Yes.  Check out the following:
    -	
    -	1. The latest version of ./apps/Gateway/Gateway has
    -	   an example of this when you compile with the USE_OUTPUT_MT 
    -	   flag.  In this case, the Reactor performs the "Async"
    -	   processing, which multiplexes all incoming messages from peers
    -	   arriving on Input_Channels.  These messages are then queued
    -	   up at the appropriate Output_Channels.  Each Output_Channel
    -	   runs in a separate thread, performing the "Sync"
    -	   processing.
    -	   
    -	2. Also, the latest version of the OOCP-tutorial4.ps.gz
    -	   file available from wuarchive.wustl.edu in the
    -	   directory /languages/c++/ACE/ACE-documentation shows
    -	   an example of using the Half-Sync/Half-Async pattern
    -	   to build an Image Server.  I'm using this as an
    -	   example in my tutorials these days.
    -
    -----------------------------------------
    -26.
    -
    -> We had a discussion about something we saw in the new ACE code.
    -> I thing there was a member function of a class that was doing a 
    -> "delete this".  Is this safe?
    -
    -In general it is safe as long as (1) the object has been allocated
    -dynamically off the heap and (2) you don't try to access the object
    -after it has been deleted.  You'll note that I tend to use this idiom
    -in places where an object is registered with the Reactor, which must
    -then must ensure the object cleans itself up when handle_close() is
    -called.  Note that to ensure (1) I try to declare the destructor
    -"private" or "protected" so that the object must be allocated off the
    -heap (some compilers have a problem with this, so I may not be as
    -consistent as I ought to...).
    -
    -----------------------------------------
    -27. 
    -
    -> 5. What is the correct way for building a modified ACE library?
    -> 	Changing in "libsrc" or in "include" directory?
    -> 	When I make a complete new directory, how can I get introduced
    -> 	the dependencies within my new makefile, can you give a short hint?
    -
    -Sure, no problem.  For instance, here's what I did tonight when I
    -added the new Thread_Specific.[hiC] files to ACE:
    -
    -	1. Created three new files Thread_Specific.[hiC] in
    -	   ./libsrc/Threads. 
    -
    -	2. cd'd to ../../include/ace and did a
    -	
    -	   % ln -s ../../libsrc/Threads/Thread_Specific.[hi] .
    -	   
    -	3. cd'd to ../../src and did a 	   
    -
    -	   % ln -s ../../libsrc/Threads/Thread_Specific.C .
    -
    -	4. then I did
    -	
    -	   % make depend
    -
    -	   on the ./src directory, which updated the dependencies. 
    -
    -----------------------------------------
    -28. The following is from Neil B. Cohen (nbc@metsci.com), who is
    -    writing about how to work around problems he's found with HP/UX.
    -
    -I've been trying to compile the latest beta (3.2.9) on an HP running
    -HPUX9.05 for the past week or so. I've had problems with templates up
    -and down the line. I finally discovered (after some discussions with
    -the HP support people) that they have made numerous changes to their
    -C++ compiler recently to fix problems with templates and
    -exceptions. If you are trying to compile ACE under HPUX with anything
    -less than version 3.70 of the HP compiler, you may have serious
    -problems (we were using v3.50 which came with the machine when we
    -bought it a few months ago).
    -
    -Also, unlike earlier ACE versions, I was forced to add the following
    -line to the rules.lib.GNU file to "close" the library - ie. force the
    -various template files to be instantiated and linked to the ACE
    -library itself. I don't know if this is necessary, or the only way to
    -make things work, but it seems to do the job for my system.
    -
    -in rules.lib.GNU...
    -
    -$(VLIB): $(VOBJS)
    -    - CC -pts -pth -ptb -ptv -I$(ACE_ROOT)/include $(VOBJS)
    -    $(AR) $(ARFLAGS) $@ $? ./ptrepository/*.o
    -    -$(RANLIB) $@
    -    -chmod a+r $@
    -
    -I added the CC line, and added the "./ptrepository/*.o" to the $(AR)
    -cmd.  Sun has an -xar option, I believe that does something similar to
    -this.  Also - note that I'm not sure that the "-ptb" option is
    -necessary. I added that before we upgraded the compiler, so it may not
    -be needed now...
    -
    -----------------------------------------
    -29. 
    -
    -> I just ran my program with Purify, and it is telling me that there
    -> is at least one large (~4k) memory leak in
    -> ACE_Thread_Specific.  This may or may not be serious,
    -> but it is probably worth looking into.
    -
    -Right, that's ok.  This is data that's allocated on a "per-thread"
    -basis the first time a thread makes a call using the LM_ERROR or
    -LM_DEBUG macros.  The data isn't freed-up until the thread exits.
    -
    -----------------------------------------
    -
    -30. 
    -
    ->     In my trying to use the Reactor pattern for my application I
    -> noticed that I had to couple my eventHandler derived objects with a
    -> specific IPC_SAP mechanism. To use some of your own examples your
    -> Client_Stream object contains a TLI_Stream object to use in data
    -> transfer. My application calls for determining the communication
    -> mechanism at run time. To do this my eventHandler must be able to
    -> create the appropriate IPC_Stream object at run time and use its
    -> methods through a super class casting. The problem is that there is no
    -> super class with the virtual methods for send, recv, etc. To solve my
    -> problem I will create that super class and have the TLI ( as well as
    -> other wrapper objects) inherit from it instead of IPC_SAP. My question
    -> is I am suspicious of why ACE wasn't designed with that in mind? Is my
    -> application that unique ? or is there a better way to do this that I
    -> am not aware of ?  Your help in this matter will be much appreciated.
    -
    -ACE was developed using static binding for IPC_SAP in order to
    -emphasize speed of execution over dynamic flexibility *in the core
    -infrastructure*.  To do otherwise would have penalized the performance
    -of *all* applications in order to handle the relatively infrequent
    -case where you want to be able to swap mechanisms at run-time.
    -
    -Since it is straightforward to create an abstract class like the one
    -you describe above I decided to make this a "layered" service rather
    -than use this mechanism in the core of ACE.
    -
    -BTW, I would not modify TLI_SAP and SOCK_SAP to inherit from a new
    -class. Instead, I would use the Bridge and Adapter patterns from the
    -"Gang of Four" patterns catalog and do something like this:
    -
    -----------------------------------------
    -// Abstract base class
    -class ACE_IPC_Stream
    -{
    -public:
    -	virtual ssize_t recv (void *buf, size_t bytes) = 0;
    -	virtual ssize_t send (const void *buf, size_t bytes) = 0;
    -	virtual ACE_HANDLE get_handle (void) const = 0;
    -	// ...
    -};
    -----------------------------------------
    -
    -and then create new classes like 
    -
    -----------------------------------------
    -template 
    -class ACE_IPC_Stream_T : public ACE_IPC_Stream
    -{
    -public:
    -	virtual ssize_t recv (void *buf, size_t bytes)
    -	{
    -		return this->ipc_.recv (buf, bytes);
    -	}
    -
    -	virtual ssize_t send (const void *buf, size_t bytes)
    -	{
    -		return this->ipc_.send (buf, bytes);
    -	}
    -
    -	virtual ACE_HANDLE get_handle (void)
    -	{
    -		return this->ipc_.get_handle ();
    -	}
    -	// ...
    -
    -private:
    -	IPC ipc_;
    -	// Target of delegation 
    -	// (e.g., ACE_SOCK_Stream or ACE_TLI_Stream).
    -}
    -----------------------------------------
    -
    -Then you could write code that operated on ACE_SAP *'s to get a
    -generic interface, but that reused existing code like SOCK_SAP and
    -TLI_SAP, e.g.,
    -
    -----------------------------------------
    -class My_Event_Handler : public ACE_Event_Handler
    -{
    -public:
    -	My_Event_Handler (void) {
    -		// Figure out which IPC mechanism to use somehow:
    -		
    -		if (use_tli)
    -			this->my_ipc_ = new ACE_SAP_IPC;
    -		else if (use_sockets)
    -			this->my_ipc_ = new ACE_SAP_IPC;
    -		else
    -			...
    -	}
    -
    -private:
    -	ACE_IPC_Stream *my_ipc_;
    -};
    -----------------------------------------
    -
    -There are obviously details left out here, but this is the general idea.
    -
    -----------------------------------------
    -31. 
    -
    -> I was trying to view your 'Writting example applications in CORBA' article
    -> /tutorial using ghostview but the .ps file seems to be corrupted ( I tried to
    -> ftp it more than once). Any help would be much appreciated.
    -
    -There are two solutions to this problem (which seems to be caused by a
    -weird interaction between ghostview and the "psnup" program I use to
    -generate the slides 4-up on a page):
    -
    -	1. If you want to print them or view them 1-up on a page you
    -	   can edit the postscript file and remove the first 551
    -	   lines or so (which are generated by the psnup script).
    -	   This will cause the document to be printed 1-up rather than
    -	   4-up.
    -
    -	2. You can try to print the 4-up file on a postscript printer. 
    -	   Believe it or not, this typically works, even though ghostview
    -	   can't handle it!
    -
    -----------------------------------------
    -32.
    -
    -> We would like to use the Reactor class as a static member on some of
    -> our classes (one per process) so that we can see and use the Reactor
    -> witnin each process on a global level.  We are using it to set
    -> timers several levels down in our class trees and don't want to pass
    -> a pointer to it through all of our constructors.  My question is:
    -> are there any static initialization dependencies that you know of
    -> when using the default "do nothing" constructor of the Reactor that
    -> could prevent use from using it as a static member variable?  Thanks
    -> for any advice on this issue.
    -
    -The only problems you'll have are the typical ones about "order of
    -initialization" of statics in separate files.  You'll also have to
    -live with the default size of the I/O handler table, which probably
    -isn't a problem since the max is something like 1024 or so.
    -
    -BTW, I solve this problem in ACE via the Service_Config::reactor,
    -which is a static *pointer* to a Reactor.  If you really wanted to
    -make this work nicely, you could use the Singleton pattern from the
    -"Gang of Four" patterns catalog.  That should solve your problem even
    -more elegantly!
    -
    -----------------------------------------
    -33. 
    -> I just got the ACE-3.3 version and am trying it on the HP-UX.
    -> I run into a small problem while cloning the directories that
    -> might be worth fixing.
    -> 
    -> I made a directory called ACE_WRAPPERS/HP-UXA.09.05-g1, cd to it
    -> and run "make -f ../Makefile clone".  when I look in src, I have:
    -> Acceptor.C@ -> ../libsrc/Connection/Acceptor.C
    -> 
    -> However, ../libsrc does not exist.  It is not one of the CLONE
    -> variables in ACE_WRAPPERS/Makefile.  I don't think you'd want to
    -> clone libsrc too, since its files don't change.
    -
    -I think you can solve this problem as follows:
    -
    -% cd ACE_WRAPPERS
    -% setenv ACE_ROOT $cwd
    -% cd HP-UXA.09.05-g1
    -% make -f ../Makefile clone
    -% setenv ACE_ROOT $cwd
    -% make
    -
    -That should build the links correctly since they'll point to the
    -absolute, rather than relative, pathnames!
    -
    -----------------------------------------
    -34.
    -
    -> Our quality personal has asked me the following questions for which
    -> I think you are the right guy for answering that:
    -
    -> o How long is ACE used in industrial products?
    -
    -It was first used at Ericsson starting in the fall of 1992, so that
    -makes it about 3 years now.
    -
    -> o What are reference projects comparable to ours that use ACE?
    -
    -The ones I have directly worked with include:
    -
    -Motorola -- satellite communication control
    -Kodak Health Imaging Systems -- enterprise medical imaging
    -Siemens -- enterprise medical imaging
    -Ericsson/GE Mobile Communications -- telecommunication switch management
    -Bellcore -- ATM switch signal software
    -
    -In addition, there are probably about 100 or more other companies that
    -have used ACE in commercial products.  The current mailing list has
    -about 300 people from about 230 different companies and universities.
    -If you'd like additional info, please let me know.
    -
    -> o How many persons have contributed on testing and writing error
    -> reports for ACE?
    -
    -Around 60 or so.  All the contributors are listed by name and email
    -address at the end of the README file distributed with the ACE release.
    -
    -> o How many bug fixes have been made since ACE was public domain?
    -
    -All information related to bug fixes is available in the ChangeLog
    -file distributed with the ACE release (I could count these for you if
    -you need that level of detail).
    -
    -> o How many literature is there on ACE?
    -
    -All articles published about ACE are referenced in the BIBLIOGRAPHY
    -file in the top-level directory of ACE.
    -
    -----------------------------------------
    -
    -35.
    -
    -> We are currently evaluating ACE for use on a new telecom switch.
    -> Many of us like ACE but are having trouble convincing some team
    -> members that wrappers are better than using the direct Unix
    -> system calls.
    -
    -> I have read your papers that came with ACE, but was wondering if there
    -> are other papers that address the benefits (or problems) of wrappers?
    -
    -This topic has been discussed in other places, most notably the book
    -by Erich Gamma and Richard Helm and Ralph Johnson and John Vlissides
    -called "Design Patterns: Elements of Reusable Object-Oriented
    -Software" (Addison-Wesley, 1994), where it is described in terms of
    -the "Adapter" pattern.
    -
    -Very briefly, there are several key reasons why you should *not* use
    -UNIX system calls directly (regardless of whether you use ACE or not).
    -
    -1. Portability -- 
    -
    -   	Unless you plan to develop code on only 1 UNIX platform (and
    -   	you never plan to upgrade from that platform as it goes
    -   	through new releases of the OS) you'll run across many, many
    -   	non-portable features.   It's beyond the scope of this
    -        FAQ to name them all, but just take a look at ACE sometime
    -        and you'll see all the #ifdefs I've had to add to deal with
    -	non-compatible OSs and compilers.  Most of these are centralized
    -	in one place in ACE (in the ace/OS.*files), but it took a lot
    -	of work to factor this out.  By using wrappers, you can avoid
    -	most of this problem in the bulk of your application code
    -	and avoid revisiting all of these issues yourself.
    -
    -        In addition, ACE is now ported to other platforms (e.g.,
    -        Windows NT and Windows 95).  If you want to write code that
    -        is portable across platforms, wrappers are a good way to
    -        accomplish this. 
    -
    -2. Ease of programming --
    -
    -	I'd go as far as to say that anyone who wants to program
    -   	applications using C-level APIs like sockets or TLI is not
    -   	serious about developing industrial strength, robust, and easy
    -   	to maintain software.  Sockets and TLI are *incredibly*
    -   	error-prone and tedious to use, in addition to being
    -   	non-portable.  I've got a paper that discusses this in detail
    -	at URL http://www.cs.wustl.edu/~schmidt/COOTS-95.ps.gz.
    -	
    -3. Incorporation with higher-level patterns and programming methods -- 
    -
    -	Here's where the Adapter pattern stuff really pays
    -	off.  For example, by making all the UNIX network
    -	programming interfaces and synchronization mechanisms
    -	have the same API I can write very powerful higher-level
    -	patterns (e.g., Connector and Acceptor) that generalize
    -	over these mechanisms.  For proof of this, take a look
    -	at the ./tests/Connection/non_blocking directory
    -	in the latest ACE-beta.tar.gz at wuarchive.wustl.edu
    -	in the /languages/c++/ACE directory.  It implements
    -	the same exact program that can be parameterized
    -	with sockets, TLI, and STREAM pipes *without*
    -	modifying any application source code.  It is 
    -	literally impossible to do this without wrappers.
    -
    -----------------------------------------
    -36.
    -
    -> How can I use a kind of "Reactor" in such a way that a reading
    -> thread can notice the arrival of new data on several shared memory
    -> areas ?
    -
    -Ah, that is a tricky issue!  The underlying problem is that UNIX is
    -inconsistent with respect to the ability to "wait" on different
    -sources of events.  In this case, Windows NT is much more consistent
    -(but it has its own set of problems...).
    -
    -> Poll, Select and Reactor (so far I read) assume that file
    -> descriptors are present, which is not the case with shared memory.
    -
    -That's correct (though to be more precise, the Reactor can also deal
    -with signals, as I discuss below).  
    -
    -> Is there a common and efficient way to deal with that kind of
    -> situation, or do I have to insert extra ipc mechanisms (based on
    -> descriptors) ?
    -
    -There are several solutions:
    -
    -1. Use the Reactor's signal handling capability (see the
    -   ./tests/Reactor/misc/signal_tester.C for an example)
    -   and have the process/thread that writes to shared 
    -   data send a signal to the reader process(es).  The
    -   disadvantage of this is that your code needs to 
    -   be signal-safe now...
    -
    -2. Use a combination of SPIPE_Streams and the Reactor
    -   to implement a simple "notification protocol," e.g.,
    -   the receiver process has an Event_Handler with a
    -   SPIPE_Stream in it that can be notified when the
    -   sender process writes data to shared memory.
    -   The disadvantage here is that there's an extra
    -   trip through the kernel, though the overhead
    -   is very small since you only need to send 1 byte.
    -
    -3. Use threads and either bypass the Reactor altogether
    -   or integrate the threads with the Reactor using its
    -   Reactor::notify() mechanism (see the 
    -   ./tests/Reactor/misc/notification.C file for an
    -   example of how Reactor::notify() works).  The
    -   disadvantage of this approach is that it won't
    -   work for platforms that lack threads.
    -
    -----------------------------------------
    -37.
    -
    -> What do you think about wrapping communication methodologies in C++ streams?
    -> What I mean is having defining a stream and extractor/insertor functions
    -> which the underlying implementation reads/writes on comm mechanisms instead of
    -> files.  I would think this to be a very general interface for all comms
    -> implementations.  All user code would look the same, but the underlying stream
    -> implementations would be different.  Whether the stream functionality would
    -> be defined by the stream itself (eg tcpstream) or with manipulators
    -> (eg commstream cs; cs << tcp;) is up for grabs in my mind.
    -> 
    -> Anyhow, I was wondering your input...
    -
    -That technique has been used for a long time.  In fact, there are
    -several freely available versions of iostreams that do this and
    -RogueWave also sells a new product (Net.h++) that does this.  I think
    -this approach is fine for simple applications.
    -
    -However, it doesn't really work well if you need to write
    -sophisticated distributed applications that must use features like
    -non-blocking I/O, concurrency, or that must be highly robust against
    -the types of errors that occur in a distributed system.
    -
    -For these kinds of systems you either need some type of ORB, or you
    -need to write the apps with lower-level C++ wrappers like the ones
    -provided by ACE.
    -
    -----------------------------------------
    -
    -38.
    -
    -> What is the difference between cont() and next() in an ACE_Message_Block?
    -
    -Ah, good question.  cont() gives you a pointer to the next
    -Message_Block in a chain of Message_Block fragments that all belong to
    -the same logical message.  In contrast, next() (and prev()) return
    -pointers to the next (and previous) Message_Block in the doubly linked
    -list of Message_Blocks on a Message_Queue.  
    -
    -BTW, this is *exactly* the same structure as in System V Streams...
    -
    -> Which would I use if I wanted to add a header and a trailer, each stored in
    -> ACE_Message_Blocks of their own, to another ACE_Message_Block?
    -
    -You should use cont() for that.  Does that make sense?
    -----------------------------------------
    -
    -39.
    -
    -> I think that your site is cool, but it's being a terrible tease in
    -> that I really want to read the contents, but don't know anything
    -> about x-gzip formatting.  I'm running Netscape 2.0 under MS Windows
    -> NT.
    -
    -To view PostScript files under Win32 you will need a PostScript 
    -viewer such as GSview.  You can find GSview and Ghostscript (which is
    -needed to run GSview) at http://www.cs.wisc.edu/~ghost/.  
    -
    -It seems that both Netscape and Internet Explorer mangles the names 
    -of downloaded files to reflect their content type, so *.ps.gz files 
    -are saved as *_ps.ps instead.  Fortunately, GSview as of version 2.2
    -supports gzip compressed postscript.  When set up as a viewer for
    -Postscript files, files with mangled names can be viewed by GSview 
    -without any preprocessing.
    -
    -----------------------------------------
    -
    -40. 
    -
    -> What I am doing is
    -> 1. Making an ACE_SOCK_Dgram and let it choose the next available port number.
    -> 2. Making a message that will be broadcasted to X number of servers. This
    ->    message has a port number which the server will use to send its reply.
    -> 3. Broadcast the message to a fixed port number.
    -> 4. Wait for replies from the servers.
    -> 
    -> 
    -> It looks like I need "ACE::bind_port" to return the port number that
    -> it picked and "ACE_SOCK_Dgram::shared_open" will need it store the
    -> port number so I could call some function like
    -> ACE_SOCK_Dgram::get_port_number or it would need to return the port
    -> number instead of the handle(I could always call
    -> ACE_SOCK_Dgram::get_handle if I needed the handle).
    -> 
    -> Is there I way to get the port number that I have missed?
    -
    -Sure, can't you just do this:
    -
    -// Defaults to all "zeros", so bind will pick port.
    -ACE_INET_Addr dg_addr;
    -
    -ACE_SOCK_Dgram dg;
    -
    -dg.open (dg_addr);
    -
    -dg.get_local_addr (dg_addr);
    -
    -dg_addr.get_port_number ();
    -
    -----------------------------------------
    -
    -41. How can you rename a core file?
    -
    -new_disposition.sa_handler = &Handle_Coredump_Signal;
    -sigemptyset(&new_disposition.sa_mask);
    -sigaddset(&new_disposition.sa_mask,SIGCHLD);
    -new_disposition.sa_flags = 0;
    -sigaction(SIGSEGV,&new_disposition,&old_disposition);
    -
    -*****************
    -
    -void
    -Handle_Coredump_Signal(void)
    -{
    -    int   status;
    -    pid_t child;
    -    char  new_core_name[64];
    -    
    -    if(0 == (child = fork()))
    -    {
    -	abort();
    -    }
    -    else
    -    {
    -	if(-1 == waitpid(child,&status,NULL))
    -	{
    -	    exit(-1);
    -	}
    -	sprintf(new_core_name,"core_%d",getpid());
    -	rename("core",new_core_name);
    -	exit(0);
    -    }
    -}
    -
    -----------------------------------------
    -
    -42. 
    -
    -> I have seen 2 different inlining policies in ACE
    -> 
    -> 1) The .i file is included unconditionally by both the .h and .C file
    ->    and all functions in the .i file carry the "inline" keyword.
    -
    -Right.  Those are for cases where I *always* want to inline those
    -methods.  I do this mostly for very short wrapper methods (e.g.,
    -read() or write()) that are likely to be on the "fast path" of an
    -application.
    -
    -> 2) The .i file is included by the .h file ONLY if __INLINE__ is defined
    ->    for the compile.  This causes the functions in the .i file to be
    ->    compiled as inline functions (INLINE translates to inline in this case).
    ->    If __INLINE__ is not defined, the .i file is only included by the .C
    ->    file and the functions do NOT carry the "inline" keyword.
    -
    -I do this for cases where it's really not essential to have those
    -methods inline, but some users might want to compile ACE that was if
    -they want to eliminate all the wrapper function-call overhead.  For
    -instance, I'll typically do this when I'm running benchmarks.
    -
    -----------------------------------------
    -
    -43. Integrating ACE and CORBA
    -
    -> Our goal is to implement a CORBA-II compliant application.  I am
    -> trying to conceptually visualize the applicability to ACE to this
    -> attempt (which we're pretty excited about), and I was hoping you'd
    -> offer any opinions / observations that you might have.
    -
    -We've successfully integrated ACE with several implementations of
    -CORBA (in particular Orbix 1.3 and 2.0) and used it in a number of
    -commercial applications.  In these systems, we use ACE for a number of
    -tasks, including the following:
    -
    -1. Intra-application concurrency control, threading, and
    -   synchronization via the ACE_Thread_Manager and Synch* classes. 
    -   
    -2. Dynamic linking of services via the ACE_Service_Config.
    -
    -3. Integration of event loops via the ACE_Reactor.
    -
    -4. Management of shared memory via ACE_Malloc.
    -
    -5. High-performance network I/O via the ACE_SOCK* wrappers.
    -
    -plus many more.
    -
    -You can find out more info about the ACE/CORBA integration and the
    -performance issues associated with it in the following paper:
    -
    -http://www.cs.wustl.edu/~schmidt/COOTS-96.ps.gz
    -
    -----------------------------------------
    -
    -44. 
    -
    -> Can the Reactor's event loop be called recursively?
    -
    -This is not advisable.  The Reactor's dispatch() method is not
    -reentrant (though it is thread-safe) since it maintains state about
    -the active descriptors it is iterating over.  Therefore, depending on
    -the descriptors you're selecting on, you could end up with spurious
    -handle_*() callbacks if you make nested calls to the
    -Reactor::handle_events() method.
    -
    -> For example, if I have a program that sets up some event handlers
    -> and then calls, in an infinite loop, ACE_Reactor::handle_events().
    -> Can one of the event handlers call handle_events() again if it needs
    -> to block, while allowing other event handlers a chance to run?
    -
    -I'm not sure if this is really a good idea, even if the Reactor were
    -reentrant.  In particular, what good does it do for one Event_Handler
    -to "block" by calling handle_events() again?  The event the handler is
    -waiting for will likely be dispatched by the nested handle_events()
    -call!  So when you returned back from the nested call to
    -handle_events() it will be tricky to know what state you were in and
    -how to proceed.
    -
    -Here's how I design my single-threaded systems that have to deal with
    -this:
    -
    -  	1. I use a single event loop based on the Reactor, which acts
    -	   a cooperative multi-tasking scheduler/dispatcher.
    -	   
    -	2. I then program all Event_Handler's as non-blocking I/O
    -	   objects.  This is straightforward to do for both input and
    -	   output using the ACE_Reactor::schedule_wakeup() and
    -	   ACE_Reactor::cancel_wakeup() methods (available with the
    -	   latest version of ACE).  
    -	   
    -	3. Then, whenever an Event_Handler must block on I/O, it 
    -	   queues up its state on an ACE_Message_Queue, calls
    -	   ACE_Reactor::schedule_wakeup(), and returns to the 
    -	   main event loop so that other Event_Handlers can be
    -	   dispatched.  When the I/O is ready, the Reactor will
    -	   call back to the appropriate handle_* method, which
    -	   can pick up the state it left in the Message_Queue and
    -	   continue. 
    -
    -There are a number of places to find more information on this sort of
    -design:
    -
    -	1. $ACE_ROOT/apps/Gateway/Gateway/Channel.cpp --
    -	   This Gateway application example shows the C++ code.
    -
    -	2. http://www.cs.wustl.edu/~schmidt/TAPOS-95.ps.gz --
    -	   This paper describes the underlying patterns.
    -
    -	3. http://www.cs.wustl.edu/~schmidt/OONP-tutorial4.ps.gz 
    -	   -- This tutorial explains the source code and 
    -	   the patterns.
    -
    -BTW, I'll be describing patterns for this type of design challenge in
    -my tutorial at USENIX COOTS in June.  Please check out
    -http://www.cs.wustl.edu/~schmidt/COOTS-96.html for more info.
    -
    -----------------------------------------
    -
    -45. 
    -
    ->   In one of my programs, a process needs to receive input from
    -> multiple input sources. One of the input sources is a file
    -> descriptor while another is a message queue. Is there a clean way to
    -> integrate this a message queue source into the Reactor class so that
    -> both inputs are handled uniformly?
    -
    -Do you have multiple threads on your platform?  If not, then life will
    -be *very* tough and you'll basically have to use multiple processes to
    -do what you're trying to do.  There is *no* portable way to combine
    -System V message queues and file descriptors on UNIX, unfortunately.
    -
    -If you do have threads, the easiest thing to do is to have a thread
    -reading the message queue and redirecting the messages into the
    -Reactor via its notify() method.  
    -
    -Please take a look at the program called
    -
    -examples/Reactor/Misc/notification.cpp
    -
    -for an example.
    -
    -----------------------------------------
    -
    -46. 
    -
    -> I'm writing a program to find out the address for a socket.  The
    -> idea is that we open an ACE_Acceptor (and will eventually perform
    -> accept() on it.)  Before we can do that we need to find out the
    -> address of the ACE_Acceptor so that we can publish it (for others to
    -> be able to connect to it.)  The trouble is that the call
    -> ACE_INET_Addr::get_host_name () prints "localhost" as the host name
    -> while I would like to principal host name to be printed instead.
    -
    -All ACE_INET_Addr::get_host_name() is doing is calling
    -ACE_OS::gethostbyaddr(), which in turn will call the socket
    -gethostbyaddr() function.  I suspect that what you should do is
    -something like the following:
    -
    -ACE_Acceptor listener (ACE_Addr::sap_any);
    -
    -ACE_INET_Addr addr;
    -
    -listener.get_local_addr (addr);
    -
    -char *host = addr.get_host_name ();
    -
    -if (::strcmp (host, "localhost") == 0)
    -{
    -  char name[MAXHOSTNAMELEN];
    -  ACE_OS::hostname (name, sizeof name);
    -  cerr << name << endl;
    -}
    -else
    -  cerr << host << endl;
    -
    -----------------------------------------
    -
    -47. 
    -
    -> Could you please point me to stuff dealing with asynchronous cross
    -> platform socket calls. I want to use non blocking socket calls on
    -> both UNIX and NT.
    -
    -Sure, no problem.  Take a look at the
    -
    -./examples/Connection/non_blocking/
    -
    -directory.  There are a number of examples there.  In addition, there
    -are examples of non-blocking connections in 
    -
    -./examples/IPC_SAP/SOCK_SAP/CPP-inclient.cpp
    -
    -The code that actually enables the non-blocking socket I/O is in
    -ace/IPC_SAP.cpp
    -
    -----------------------------------------
    -
    -48.
    -
    -> Is ACE exception-safe?  If I throw an exception out of event 
    -> handler, will the Reactor code clean itself?
    -
    -Yes, that should be ok.  In general, the two things to watch out for
    -with exceptions are:
    -
    -	1. Memory leaks -- There shouldn't be any memory leaks internally
    -	   to the Reactor since it doesn't allocate any memory when 
    -	   dispatching event handlers.
    -	  
    -	2. Locks -- In the MT_SAFE version of ACE, the Reactor acquires
    -	   an internal lock before dispatching Event_Handler callbacks.
    -	   However, this lock is controlled by an ACE_Guard, whose
    -	   destructor will release the lock if exceptions are thrown
    -	   from an Event_Handler.
    -
    -----------------------------------------
    -
    -49.
    -
    ->   I am building a Shared memory manager object using MMAP and MALLOC
    -> basically as:
    -> 
    -> typedef ACE_Malloc SHMALLOC;
    -> 
    -> I noticed that the ACE_MMAP_Memory_Pool class provides for the users
    -> to specify a Semaphore key. However, once I use it via the
    -> ACE_Malloc<..>::ACE_Malloc(const char* poolname) constructor, I lose
    -> this option. 
    -
    -Yes, that is correct.  That design decision was made to keep a clean
    -interface that will work for all the various types of memory pools.
    -
    -> Is there any recommended way to specialize ACE classes to allow this
    -> key to be overridden?
    -
    -Yes indeed, you just create a new subclass (e.g., class
    -My_Memory_Pool) that inherits from ACE_MMAP_Memory_Pool and then you
    -pass in the appropriate key to the constructor of ACE_MMAP_Memory_Pool
    -in the constructor of My_Memory_Pool.  Then you just say:
    -
    -typedef ACE_Malloc SHMALLOC;
    -
    -Please check out the file:
    -
    -examples/Shared_Malloc/Malloc.cpp 
    -
    -which illustrates more or less how to do this.
    -
    -----------------------------------------
    -
    -50.
    -
    -> What is the best way to turn on TRACE output in ACE.  I commented
    -> out the #define ACE_NTRACE 1 in config.h and rebuilt ACE and the
    -> examples.
    -
    -The best way to do this is to say
    -
    -#define ACE_NTRACE 0
    -
    -in config.h.
    -
    -> When I run the CPP-inserver example in examples/IPC_SAP/SOCK_SAP, I
    -> get some trace output but not everything I would expect to see.
    -
    -Can you please let me know what you'd expect to see that you're not
    -seeing?  Some of the ACE_TRACE macros for the lower-level ACE methods
    -are commented out to avoid problems with infinite recursion (i.e.,
    -tracing the ACE_Trace calls...).  I haven't had a chance to go over
    -all of these indepth, but I know that it should be possible to turn
    -many of them back on.
    -
    -> It would be nice to have a runtime option for turning trace on and
    -> off.
    -
    -There already is.  In fact, there are two ways to do it.
    -If you want to control tracing for the entire process, please check
    -out ACE_Trace::start_tracing() and ACE_Trace::stop_tracing().  
    -
    -If you want to control tracing on a per-thread basis please take a
    -look at the ACE_Log_Msg class.  There are methods called
    -stop_tracing() and start_tracing() that do what you want.
    -
    -----------------------------------------
    -
    -51. 
    -
    -> I've been using an acceptor and a connector in one (OS-) process.
    -> What does happen, if a signal is sent to this process? Is the signal
    -> processed by every ACE_Event_Handler (or its descendants) that is
    -> around?  The manual page simply states that handle signal is called
    -> as soon as a signal is triggered by the OS.
    -
    -How this signal is handled depends on several factors:
    -
    -1. Whether your using ACE_Sig_Handler or ACE_Sig_Handlers to register
    -   the signal handlers.
    -
    -2. If you're using ACE_Sig_Handler, then the ACE_Event_Handler * that
    -   you've most recently registered to handle the signal will
    -   have it's handle_signal() method called back by the Reactor.
    -
    -3. If you're using ACE_Sig_Handlers, then all of the ACE_Event_Handler *
    -   that you've register will be called back.
    -
    -For examples of how this works, please check out
    -
    -$ACE_ROOT/examples/Reactor/Misc/test_signals.cpp
    -
    -This contains a long comment that explains precisely how everything
    -works!
    diff --git a/Makefile b/Makefile
    deleted file mode 100644
    index 18312a5bbfe..00000000000
    --- a/Makefile
    +++ /dev/null
    @@ -1,231 +0,0 @@
    -#----------------------------------------------------------------------------
    -#       $Id$
    -#
    -#       Top-level Makefile for the ACE toolkit libraries, tests, and
    -#       applications
    -#----------------------------------------------------------------------------
    -
    -#### Please see ACE-INSTALL.html for build information.
    -
    -#----------------------------------------------------------------------------
    -#       Local macros
    -#----------------------------------------------------------------------------
    -
    -INFO    = README \
    -          THANKS \
    -          VERSION
    -
    -DIRS    = ace \
    -          netsvcs \
    -          tests \
    -          apps \
    -          examples \
    -          performance-tests \
    -          websvcs
    -
    -CLONE   = Makefile \
    -          ace \
    -          apps \
    -          bin \
    -          etc \
    -          examples \
    -          include \
    -          netsvcs \
    -          performance-tests \
    -          TAO \
    -          tests \
    -          websvcs
    -
    -#----------------------------------------------------------------------------
    -#       Include macros and targets
    -#----------------------------------------------------------------------------
    -
    -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
    -include $(ACE_ROOT)/include/makeinclude/macros.GNU
    -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU
    -include $(ACE_ROOT)/include/makeinclude/rules.nested.GNU
    -include $(ACE_ROOT)/include/makeinclude/rules.nolocal.GNU
    -
    -# Optional TAO targets.
    --include $(ACE_ROOT)/TAO/tao_targets.GNU
    -
    -# For the following to work you need to compile the
    -# $(ACE_ROOT)/bin/clone.cpp file and install it in your ~/bin
    -# directory (or some place similar).
    -
    -.PHONY: clone
    -clone:
    -	@for dir in $(CLONE); \
    -        do \
    -                (clone -s $(ACE_ROOT)/$$dir $$dir) \
    -        done
    -
    -#### NOTE:  The following comments describe how to create kits.
    -####        It's intended for use by ACE+TAO developers and
    -####        maintainers only.  ACE+TAO users need not be concerned
    -####        with creating kits, just unpacking and using them.
    -
    -#### The "release" and "releaseall" targets can be used to create
    -#### the ACE and ACE+TAO kits.  By default, each creates a new beta
    -#### release.  To create a new minor or major release, add REL=minor
    -#### or REL=major, respectively, to the make invocation.
    -####
    -#### NOTE: the REL modifier applies to _both_ ACE and TAO in
    -#### releaseall!
    -####
    -#### To create a new ACE minor release and a TAO beta release:
    -####   % make release REL=minor
    -####   % cd TAO
    -####   % make release
    -####
    -#### There are some other release/releaseall options [default value is in
    -#### brackets]:
    -####   ACE_TAG [ACE version in your workspace]: prepend tag with -ta
    -####   TAO_TAG [TAO version in your workspace]: prepend tag with -tt
    -####
    -####   NOTE: the ACE and TAO versions will be updated automatically
    -####   by release/releaseall.  ACE_TAG and TAO_TAG can be overridden
    -####   to kit a particular version.
    -####
    -####   APPLY_NEW_TAG [enabled]: set to null to disable
    -####   CHECK [disabled]: set to -n to see what make_release will do, but not
    -####     do it
    -####   GENERATE_MAN_PAGES [enabled]: set to null to disable regeneration of
    -####     the ACE_wrappers/man/ hierarchy
    -####   INSTALL_KIT [enabled]: set to null to not install in public
    -####     ftp/http directory on host ace
    -####   REL [beta]: set to minor or major, optionally, when applying a new tag
    -####   ZIP_FILES [enabled]: set to -z to disable creation of .zip files
    -####
    -#### Example creation of ACE-only kit, version ACE-5_0_1 from current
    -#### workspace:
    -#### make release ACE_TAG='-ta ACE-5_0_1' APPLY_NEW_TAG= \
    -####   GENERATE_MAN_PAGES= INSTALL_KIT= ZIP_FILES=-z
    -
    -CONTROLLED_FILES = \
    -        ACE-INSTALL.html \
    -        ACE-install.sh \
    -        ASNMP \
    -        AUTHORS \
    -        BIBLIOGRAPHY \
    -        COPYING \
    -        ChangeLog \
    -        ChangeLog-98a \
    -        ChangeLog-98b \
    -        ChangeLog-97b \
    -        ChangeLog-97a \
    -        ChangeLog-96b \
    -        ChangeLog-96a \
    -        ChangeLog-95 \
    -        ChangeLog-94 \
    -        ChangeLog-93 \
    -        FAQ \
    -        Makefile \
    -        Makefile.am \
    -        NEWS \
    -        PROBLEM-REPORT-FORM \
    -        README \
    -        THANKS \
    -        TODO \
    -        VERSION \
    -        WindozeCE \
    -        acconfig.h \
    -        aclocal.m4 \
    -        ace \
    -        ace-config.1.in \
    -        ace-config.in \
    -        aceConf.sh.in \
    -        apps \
    -        bin \
    -        config.guess \
    -        config.sub \
    -        configure \
    -        configure.in \
    -        docs \
    -        etc \
    -        examples \
    -        include \
    -        install-sh \
    -        ltconfig \
    -        ltmain.sh \
    -        m4 \
    -        missing \
    -        mkinstalldirs \
    -        netsvcs \
    -        os-patches \
    -        performance-tests \
    -        tests \
    -        websvcs
    -
    -RELEASE_FILES = \
    -        $(addprefix ACE_wrappers/,$(CONTROLLED_FILES)) \
    -        ACE_wrappers/ACE-INSTALL \
    -        ACE_wrappers/man
    -
    -ALL_RELEASE_FILES = \
    -        $(RELEASE_FILES) \
    -        ACE_wrappers/TAO
    -
    -RELEASE_LIB_FILES = \
    -        ACE_wrappers/VERSION \
    -        ACE_wrappers/ace \
    -        ACE_wrappers/bin \
    -        ACE_wrappers/etc \
    -        ACE_wrappers/include \
    -        ACE_wrappers/m4 \
    -        ACE_wrappers/netsvcs \
    -        ACE_wrappers/tests \
    -        ACE_wrappers/websvcs
    -
    -.PHONY: release releasetao releaseall tag
    -
    -ACE_TAG_VALUE = $(shell head -1 VERSION | perl -ne \
    -                's/.* ([\d\.]+),.*\n/$$1/; tr/./_/; print "ACE-$$_";')
    -ACE_TAG       = -ta $(ACE_TAG_VALUE)
    -TAO_TAG_VALUE = $(shell head -1 TAO/VERSION | perl -ne \
    -                's/.* ([\d\.]+),.*\n/$$1/; tr/./_/; print "TAO-$$_";')
    -TAO_TAG       = -tt $(TAO_TAG_VALUE)
    -APPLY_NEW_TAG      = tag
    -CHECK              =
    -GENERATE_MAN_PAGES = -g
    -INSTALL_KIT        = -i
    -REL                = beta
    -ZIP_FILES          =
    -
    -#### The release target creates the ACE (only) kit.
    -release: $(APPLY_NEW_TAG)
    -	@$(ACE_ROOT)/bin/make_release -k ace $(ACE_TAG) \
    -         $(INSTALL_KIT) $(GENERATE_MAN_PAGES) $(ZIP_FILES) $(CHECK)
    -
    -tag:
    -	@$(ACE_ROOT)/bin/make_release $(CHECK) -k ace -v $(REL) -u
    -
    -#### The following target is for use by the TAO Makefile.  It should not
    -#### be called directly from the command line.  The releasetao target
    -#### creates the combined ACE-TAO kit.
    -releasetao:
    -	@$(ACE_ROOT)/bin/make_release -k ace+tao $(ACE_TAG) $(TAO_TAG) \
    -         $(INSTALL_KIT) $(GENERATE_MAN_PAGES) $(ZIP_FILES) $(CHECK)
    -
    -#### The releaseall target:
    -####   1) Creates the ACE kit.
    -####   2) Updates the TAO release (VERSION, ChangeLog, and tag) by
    -####      recursively invoking make release in the TAO directory.
    -####      The make then recursively invokes make releasetao in this
    -####      directory to create the combined ACE-TAO kit.
    -releaseall: $(APPLY_NEW_TAG)
    -	@cd TAO  &&  $(MAKE) -s release REL=$(REL)
    -
    -.PHONY: show_controlled_files show_release_files show_release_lib_files
    -
    -show_controlled_files:
    -	@echo $(CONTROLLED_FILES)
    -
    -show_release_files:
    -	@echo $(RELEASE_FILES)
    -
    -show_release_lib_files:
    -	@echo $(RELEASE_LIB_FILES)
    -
    -ACE-INSTALL: ACE-INSTALL.html
    -	@lynx -dump $< > $@
    diff --git a/Makefile.am b/Makefile.am
    deleted file mode 100644
    index 2a54460adda..00000000000
    --- a/Makefile.am
    +++ /dev/null
    @@ -1,117 +0,0 @@
    -##---------------------------------------------------------------------------
    -##       $Id$
    -##
    -##       Top-level Makefile for the ACE toolkit libraries, tests, and
    -##       applications
    -##
    -##---------------------------------------------------------------------------
    -
    -##
    -##  Process this file with automake to create Makefile.in
    -##
    -
    -## The number in AUTOMAKE_OPTIONS is the minimum required version automake
    -## needed to process this file.
    -AUTOMAKE_OPTIONS = 1.4 #check-news
    -
    -bin_SCRIPTS = ace-config
    -
    -man_MANS = ace-config.1
    -
    -## Build the library directories first.
    -## The docs directory is currently handled by the "dist-hook" makefile target.
    -SUBDIRS = ace \
    -          netsvcs \
    -          tests \
    -          apps \
    -          man
    -
    -##SUBDIRS = \
    -##          docs \
    -##          apps \
    -##          examples \
    -##          performance-tests \
    -##          bin \
    -##          ASNMP \
    -##          os-patches \
    -##          etc \
    -##          includes
    -
    -## For some reason, automake doesn't include acconfig.h in the distribution
    -EXTRA_DIST = \
    -        ACE-INSTALL.html \
    -        ACE-install.sh \
    -        ACE.DSW \
    -        BIBLIOGRAPHY \
    -        ChangeLog-93 \
    -        ChangeLog-94 \
    -        ChangeLog-95 \
    -        ChangeLog-96a \
    -        ChangeLog-96b \
    -        ChangeLog-97a \
    -        ChangeLog-97b \
    -        ChangeLog-98a \
    -        ChangeLog-98b \
    -        FAQ \
    -        PROBLEM-REPORT-FORM \
    -        README.aceconf \
    -        VERSION \
    -        acconfig.h \
    -        ace-config.in \
    -        ace-config.1.in \
    -        aceConf.sh.in
    -
    -DISTCLEANFILES = ace-config aceConf.sh ace-config.1 
    -
    -## release:
    -##         $(MAKE) dist distdir=$(PACKAGE)$(VERSION)
    -release:
    -	$(MAKE) dist
    -
    -## Put `exec' in the name because this should be installed by
    -## `install-exec', not `install-data'.
    -confexecdir=$(libdir)
    -confexec_DATA = aceConf.sh
    -
    -## We create aceConf.sh here and not from configure because we want
    -## to get the paths expanded correctly.  Macros like srcdir are given
    -## the value NONE in configure if the user doesn't specify them (this
    -## is an autoconf feature, not a bug).
    -aceConf.sh: aceConf.sh.in Makefile
    -## Use sed and then mv to avoid problems if the user interrupts.
    -	sed -e 's,\@ACE_LIBDIR\@,$(ACE_LIBDIR),g' \
    -            -e 's,\@ACE_INCLUDEDIR\@,$(ACE_INCLUDEDIR),g' \
    -            -e 's,\@ACE_LIBS\@,$(ACE_LIBS),g' \
    -            -e 's,\@CXXFLAGS\@,$(CXXFLAGS),g' \
    -              < $(srcdir)/aceConf.sh.in > aceConf.tmp \
    -          && mv aceConf.tmp aceConf.sh
    -
    -ace-config.1: ace-config.1.in Makefile
    -## Use sed and then mv to avoid problems if the user interrupts.
    -	sed -e 's,\@libdir\@,$(libdir),g' \
    -              < $(srcdir)/ace-config.1.in > ace-config.1.tmp \
    -          && mv ace-config.1.tmp ace-config.1
    -
    -## Directories to include in the distribution but which I am too lazy to
    -## create Makefile.am files for.  A Makefile.am for these directories isn't
    -## needed anyway.
    -ACE_EXTRA_DIST = bin docs m4
    -
    -## Clean up some additional files/directories possibly created during
    -## the configure script tests.
    -clean-local:
    -	-rm -f *.bak *.rpo *.sym lib*.*_pure_* Makefile.old core
    -	-rm -rf ptrepository Templates.DB gcctemp.c gcctemp so_locations
    -
    -## Make sure config.h doesn't get into the distribution
    -## since it may later intefere with the newly generated
    -## config.h when doing VPATH builds.
    -## We don't want it in the distribution, anyway, since
    -## config.h is platform specific.
    -dist-hook:
    -	-rm -f $(distdir)/ace/config.h
    -	(cd $(top_srcdir); tar cf - $(ACE_EXTRA_DIST)) | (cd $(distdir); \
    -          tar xfBp -)
    -	list=`find $(distdir) -type d -name CVS -print`; for p in $$list; do \
    -          rm -rf $$p; \
    -        done
    diff --git a/Makefile.bor b/Makefile.bor
    deleted file mode 100644
    index 3b660adfa5c..00000000000
    --- a/Makefile.bor
    +++ /dev/null
    @@ -1,26 +0,0 @@
    -!ifdef DEBUG
    -DEBUG_FLAG = -DDEBUG 
    -!endif
    -      
    -!ifdef STATIC
    -STATIC_FLAG = -DSTATIC
    -!endif
    -     
    -!ifdef PASCAL
    -PASCAL_FLAG = -DPASCAL
    -!endif
    -     
    -FLAGS = $(DEBUG_FLAG) $(STATIC_FLAG) $(PASCAL_FLAG)
    - 
    -all:
    -        cd $(ACE_ROOT)\ace
    -        $(MAKE) -f Makefile.bor $(FLAGS)
    -        cd $(ACE_ROOT)\netsvcs
    -        $(MAKE) -f Makefile.bor $(FLAGS)
    -        cd $(ACE_ROOT)\tests
    -        $(MAKE) -f Makefile.bor $(FLAGS)
    -        cd $(ACE_ROOT)\apps
    -        $(MAKE) -f Makefile.bor $(FLAGS)
    -        cd $(ACE_ROOT)\TAO
    -        $(MAKE) -f Makefile.bor $(FLAGS)
    -
    diff --git a/NEWS b/NEWS
    deleted file mode 100644
    index 7908c020206..00000000000
    --- a/NEWS
    +++ /dev/null
    @@ -1,12 +0,0 @@
    -Please see the release notes in the docs directory and the ChangeLog for
    -information about what has changed between releases.
    -
    -If you have any problems with or questions about ACE, please send
    -email to the ACE mailing list (ace-users@cs.wustl.edu), using the form
    -found in the file PROBLEM-REPORT-FORM.  To ensure that you see responses,
    -please do one of the following:
    -
    -    1) Subscribe to the ace-users mail list, by sending email with
    -       contents "subscribe ace-users" to majordomo@cs.wustl.edu.
    -
    -    2) Or, monitor the comp.soft-sys.ace newsgroup for responses.
    diff --git a/PROBLEM-REPORT-FORM b/PROBLEM-REPORT-FORM
    deleted file mode 100644
    index a1a3131445d..00000000000
    --- a/PROBLEM-REPORT-FORM
    +++ /dev/null
    @@ -1,64 +0,0 @@
    -[Please use the form below to submit bug reports, problem
    - reports, etc., to the ACE developers and interested users.
    - Send to ace-bugs@cs.wustl.edu.  Please send it as plain
    - ASCII test, _not_ uuencoded or as an attachment.
    -
    - Alternatively, you can submit a bug report or enhancement request
    - through our bug tracking system. See $ACE_ROOT/docs/usage-bugzilla.html
    - for more information about how to do this.
    -
    - To ensure that you see responses, please do one of the following:
    -
    -    1) Subscribe to the ace-bugs mail list, by sending email with
    -       contents "subscribe ace-bugs" to majordomo@cs.wustl.edu.
    -
    -    2) Or, monitor the comp.soft-sys.ace newsgroup for responses.
    -
    - Replace/remove all the explanatory text in brackets before mailing.
    -
    - Please send this form as ASCII text only.  Do _not_ send it as an
    - attachment, or as tar'ed, compressed and/or uuencoded text.  And
    - limit line lengths to less than 80 characters.
    -
    - PLEASE make your Subject: line as descriptive as possible.
    - Subjects like "ACE bug" or "bug report" are not helpful!
    - Also, do _not_ include the word "help" in the Subject!]
    -
    -8<----------8<----------8<----------8<----------8<----------8<----------8<----
    -
    -To: ace-bugs@cs.wustl.edu
    -Subject: [area]: [synopsis]
    -
    -    ACE VERSION: 5.0.6
    -
    -    HOST MACHINE and OPERATING SYSTEM:
    -    TARGET MACHINE and OPERATING SYSTEM, if different from HOST:
    -    COMPILER NAME AND VERSION (AND PATCHLEVEL):
    -
    -    AREA/CLASS/EXAMPLE AFFECTED:
    -[What example failed?  What module failed to compile?]
    -
    -    DOES THE PROBLEM AFFECT:
    -        COMPILATION?
    -            If so, what do your $ACE_ROOT/ace/config.h and
    -            $ACE_ROOT/include/makeinclude/platform_macros.GNU contain?
    -        LINKING?
    -            On Unix systems, did you run make realclean first?
    -        EXECUTION?
    -        OTHER (please specify)?
    -[Please indicate whether ACE, your application, or both are affected.]
    -
    -    SYNOPSIS:
    -[Brief description of the problem]
    -
    -    DESCRIPTION:
    -[Detailed description of problem.  Don't just say "
    -doesn't work, here's a fix," explain what your program does
    -to get to the  state. ]
    -
    -    REPEAT BY:
    -[What you did to get the error; include test program or session
    -transcript if at all possible.  ]
    -
    -    SAMPLE FIX/WORKAROUND:
    -[If available ]
    diff --git a/README b/README
    deleted file mode 100644
    index 9d862053b62..00000000000
    --- a/README
    +++ /dev/null
    @@ -1,225 +0,0 @@
    -This document is also available at the following URL:
    -
    -http://www.cs.wustl.edu/~schmidt/ACE.html.
    -
    -All software and documentation is available via both anonymous ftp and
    -the World Wide Web.]
    -
    -THE ADAPTIVE COMMUNICATION ENVIRONMENT (ACE)
    -
    -An Object-Oriented Network Programming Toolkit
    -
    -----------------------------------------
    -
    -Overview of ACE
    -
    -The ADAPTIVE Communication Environment (ACE) is an object-oriented
    -(OO) toolkit that implements fundamental design patterns for
    -communication software.  ACE provides a rich set of reusable C++
    -wrappers and frameworks that perform common communication software
    -tasks across a range of OS platforms, including Win32 (i.e., WinNT
    -3.5.x/4.x, Win95, and WinCE), most versions of UNIX (e.g., SunOS 4.x
    -and 5.x, SGI IRIX 5.x and 6.x, HP-UX 9.x, 10.x, and 11.x, DEC UNIX
    -4.x, AIX 4.x, Linux, SCO, UnixWare, NetBSD, and FreeBSD), real-time
    -operating systems (e.g., VxWorks, Chorus, LynxOS, and pSoS), and MVS
    -OpenEdition.  A single source tree is used for all these platforms and
    -porting ACE to other platforms is relatively easy.
    -
    -The communication software components provided by ACE include event
    -demultiplexing and event handler dispatching, service initialization,
    -interprocess communication, shared memory management, message routing,
    -dynamic (re)configuration of distributed services, multi-threading,
    -and concurrency control.  There are both C++ and Java versions of ACE
    -available.
    -
    -ACE is targeted for developers of high-performance and real-time
    -communication services and applications on UNIX, POSIX, and Win32
    -platforms.  ACE simplifies the development of OO network applications
    -and services that utilize interprocess communication, event
    -demultiplexing, explicit dynamic linking, and concurrency.  ACE
    -automates system configuration and reconfiguration by dynamically
    -linking services into applications at run-time and executing these
    -services in one or more processes or threads.
    -
    -ACE is currently used in commercial projects and products by dozens of
    -companies including Ericsson, Bellcore, Siemens, Motorola, Kodak,
    -Boeing, Lucent, DEC, Lockheed Martin, and SAIC.  Commercial support
    -for ACE is available at http://www.riverace.com.
    -
    -----------------------------------------
    -
    -C++ Wrappers for OS Interfaces
    -
    -The lower-level portions of ACE provide a set of portable and
    -type-secure C++ wrappers that encapsulate the following C language OS
    -interfaces:
    -
    -        . IPC mechanisms
    -                -- e.g., Internet- and UNIX-domain sockets, TLI, Named
    -                   Pipes (for UNIX and Win32) and STREAM pipes;
    -
    -        . Event demultiplexing
    -                -- e.g., select(), poll(), and Win32
    -                   WaitForMultipleObjects and I/O completion ports;
    -
    -        . Multi-threading and synchronization
    -                -- e.g., Solaris threads, POSIX Pthreads, and Win32
    -                   threads;
    -
    -        . Explicit dynamic linking
    -                -- e.g., dlopen/dlsym on UNIX and LoadLibrary/GetProc
    -                   on Win32;
    -
    -        . Memory-mapped files and shared memory management
    -                -- e.g., BSD mmap(), SYSV shared memory, and Win32
    -                   shared memory;
    -
    -        . System V IPC
    -                -- e.g., shared memory, semaphores, message queues.
    -
    -The OS Adaptation Layer shields the upper levels of ACE from platform
    -dependencies associated with the underlying OS interfaces.
    -
    -----------------------------------------
    -
    -Frameworks and Class Categories
    -
    -ACE also contains a higher-level network programming framework that
    -integrates and enhances the lower-level C++ wrappers.  This framework
    -supports the dynamic configuration of concurrent distributed services
    -into applications.  The framework portion of ACE contains the
    -following class categories:
    -
    -        . The Reactor
    -                -- Supports both Reactive and Proactive I/O;
    -
    -        . The Service Configurator
    -                -- Support dynamic (re)configuration of objects;
    -
    -        . The ADAPTIVE Service Executive
    -                -- A user-level implementation of System V STREAMS,
    -                   that supports modular integration of
    -                   hierarchically-related communicaion services;
    -
    -        . Concurrency
    -                -- Various types of higher-level concurrency
    -                   control and synchronization patterns (such as
    -                   Polymorphic Futures and Active Objects);
    -
    -        . Shared Malloc
    -                -- Components for managing dynamically allocation
    -                   of shared and local memory;
    -
    -        . CORBA integration
    -                -- Integrates ACE with CORBA implementations
    -                   (such as single-threaded and multi-threaded
    -                   Orbix and Visibroker for C++).
    -
    -----------------------------------------
    -
    -Distributed Services and Components
    -
    -Finally, ACE provides a standard library of distributed services that
    -are packaged as components.  These service components play two roles
    -in ACE:
    -
    -        1. They provide reusable components for common distributed
    -           system tasks such as logging, naming, locking, and time
    -           synchronization.
    -
    -        2. They illustrate how to utilize ACE features such as the
    -           Reactor, Service Configurator, Service Initialization,
    -           Concurrency, and IPC components.
    -
    -----------------------------------------
    -
    -Middleware Applications
    -
    -ACE has been used in research and development projects at many
    -universities and companies.  For instance, it has been used to build
    -avionics systems at Boeing, telecommunication systems at Bellcore,
    -Ericsson, Motorola, and Lucent; medical imaging systems at Siemens and
    -Kodak; and many academic research projects.  Two example middleware
    -applications provided with the ACE release include:
    -
    -        1. The ACE ORB (TAO) -- TAO is a real-time implementation of
    -           CORBA built using the framework components and patterns
    -           provided by ACE.
    -
    -        2. JAWS -- JAWS is a high-performance, adaptive Web server
    -           built using the components in ACE.
    -
    -----------------------------------------
    -
    -OBTAINING ACE
    -
    -The current ACE release is provided as a tar file that is around 3 Meg
    -compressed using GNU gzip.  ACE may be obtained electronically from
    -http://www.cs.wustl.edu/~schmidt/ACE-obtain.html.  This release
    -contains the source code, test drivers, and example applications
    -(including JAWS) for C++ wrapper libraries and the higher-level ACE
    -network programming framework developed as part of the ADAPTIVE
    -project at the University of California, Irvine and at Washington
    -University, St. Louis.
    -
    -You can get The ACE ORB (TAO) in a companion release at
    -http://www.cs.wustl.edu/~schmidt/TAO.html.
    -
    -----------------------------------------
    -
    -ACE DOCUMENTATION AND TUTORIALS
    -
    -Many of the C++ wrappers and higher-level components have been
    -described in issues of the C++ Report, as well as in proceedings of
    -many journals, conferences, and workshops.
    -
    -A collection of white papers and tutorial handouts are included at
    -ftp://wuarchive.wustl.edu/languages/c++/ACE/ACE-documentation.  This
    -directory contains postscript versions of various papers that describe
    -different aspects of ACE.
    -
    -I update these papers periodically to reflect changes to the ACE
    -architecture.  Therefore, you might want to check the date on the
    -files to make sure that you have read the most recent versions of
    -these papers.
    -
    -This material is also available available via the WWW at URL:
    -
    -http://www.cs.wustl.edu/~schmidt/ACE.html
    -
    -----------------------------------------
    -
    -ACE MAILING LIST AND NEWSGROUP
    -
    -A mailing list, ace-users@cs.wustl.edu, is available for discussing
    -bug fixes, enhancements, and porting issues regarding ACE.  Please
    -send mail to me at the ace-users-request@cs.wustl.edu if you'd like to
    -join the mailing list.  There is also a USENET newsgroup called
    -comp.soft-sys.ace.
    -
    -----------------------------------------
    -
    -BUILDING AND INSTALLING ACE
    -
    -Please refer to the http://www.cs.wustl.edu/~schmidt/ACE-install.html
    -file for information on how to build and test the ACE wrappers.  The
    -BIBLIOGRAPHY file contains information on where to obtain articles
    -that describe the ACE wrappers and the ADAPTIVE system in more detail.
    -
    -The current release has been tested extensively, but if you find any
    -bugs, please report them to the ACE mailing list
    -ace-users@cs.wustl.edu using the $ACE_ROOT/PROBLEM-REPORT-FORM.
    -Please use the same form to submit questions, comments, etc.
    -To ensure that you see responses, please do one of the following:
    -
    -    1) Subscribe to the ace-users mail list, by sending email with
    -       contents "subscribe ace-users" to majordomo@cs.wustl.edu.
    -
    -    2) Or, monitor the comp.soft-sys.ace newsgroup for responses.
    -
    -----------------------------------------
    -
    -ACKNOWLEDGEMENTS
    -
    -Please see the file `THANKS' for a list of people who have contributed
    -to ACE and TAO over the years.
    diff --git a/STL/ACE_Changes b/STL/ACE_Changes
    deleted file mode 100644
    index 902fb94c94c..00000000000
    --- a/STL/ACE_Changes
    +++ /dev/null
    @@ -1,53 +0,0 @@
    -This version of STL was obtained from
    -http://www.rahul.net/terris/.  This is a modified version of the
    -implementation that comes with VC++4.0.  Please see readme2.stl for
    -details. 
    -
    -The following modification have been made for compilation with VC++4.x
    -
    -________________________________________
    -
    -vector.h (line 85)
    -________________________________________
    -
    -
    -    /*
    -     *  This is cause the VC++ compiler sucks
    -     *  and does not recognize nested classes properly
    -     *       
    -     */
    -#if !defined (VC_PLUS_PLUS_NESTED_CLASS_PROBLEM)
    -    vector(size_type n, const T& value = T()) {
    -	start = static_allocator.allocate(n);
    -	uninitialized_fill_n(start, n, value);
    -	finish = start + n;
    -	end_of_storage = finish;
    -    }
    -#endif /* VC_PLUS_PLUS_NESTED_CLASS_PROBLEM */
    -
    -
    -________________________________________
    -
    -bstring.h (line 1102)
    -________________________________________
    -
    -
    -    /* 
    -     * This should be correctly scoped
    -     *
    -     * if (cap == ::reserve)
    -     */
    -
    -    if (cap == std::reserve)
    -    {
    -       len = 0;
    -       res = size;
    -       ptr = new charT [res];
    -    }
    -    /* 
    -     * This should be correctly scoped
    -     *
    -     *     else if ((cap == ::default_size) && (size != NPOS))
    -     */
    -
    -    else if ((cap == std::default_size) && (size != NPOS))
    diff --git a/STL/readme2.stl b/STL/readme2.stl
    deleted file mode 100644
    index 5132bc1189b..00000000000
    --- a/STL/readme2.stl
    +++ /dev/null
    @@ -1,272 +0,0 @@
    -STL2.ZIP
    -
    -Standard Template Library for Visual C++ 4.0 
    -and Related Classes
    -
    -Revised 10/15/96 - Bug fixes and change to bit_vector.
    -
    -This version supports DLLs and threading.  You must use critical
    -sections around code that uses the same container in different
    -threads.  These features come at a price -- since memory
    -usage is not optimal, this code may use more memory and
    -may be slower.
    -
    -+ General strategy: Remove all statics except the
    -  static allocator objects.  
    -+ Vectors were not affected.
    -+ Major changes made to tree.h
    -+ Stability: Very stable.
    -
    -This code should be considered for experimental use only.  There
    -are still statics lurking in some functions; these functions
    -are not thread-safe.
    -
    --------------------------
    -Fix for bit_vector
    --------------------------
    -This version also has a fix for bit_vector, which doesn't really
    -work with VC++ 4.x.  Please include bvector.cpp in your
    -project if you use bit_vector.  This fixes the linker errors
    -that occur if you use bector.h in multiple .cpp files.
    -
    --------------------------
    -Disclaimer
    --------------------------
    -Code is provided without warranty, liability, or technical support.
    -
    -STL.H and PTR.H are freely distributable and can be 
    -modified in any way.
    -
    ---------------------------------
    -STRING.H does not compile.
    ---------------------------------
    -
    -"D. Pirzadeh"  Explains how to fix:
    -
    -First, I got compile errors in "bstring.h"
    -and changed it as follows to correct:
    -        line 1104               "::reserve" -> "std::reserve"
    -        line 1110               "::default_size" -> "std::default_size"
    -
    -Also, I got an INTERNAL COMPILER ERROR with Visual C++ v4.0 when I did the fol-
    -lowing:
    -        class xyz : public std::string { }
    -
    -I fixed it with:
    -        typedef std::string XyzString;
    -        class xyz : public XyzString { }
    -
    ---------------------------------
    -Changes made to STL distribution
    ---------------------------------
    -
    -These files were modified from the STL distribution shipped with 
    -Microsoft Visual C++ 4.0.  The files here are a complete,
    -working version of the STL.  These files have been tested with
    -MFC applications.
    -
    -Changes were made to practically all header files.  Look for
    -comments like:
    -
    -*Added by...
    -*Changed by...
    - 
    -------------------
    -Usage Instructions
    -------------------
    -
    -Set the preprocessor variable NOMINMAX.
    -
    -As Microsoft recommends, the STL is compiled in the std namespace.
    -
    -When including these files, do **not** do this:
    -
    -	namespace std
    -	{
    -	  #include 
    -	}
    -
    -Instead, do this:
    -
    -	#include 
    -
    -Recommended usage:
    -
    -	First, include:
    -
    -	#include 
    -	#include 
    -	#include 
    -
    -	Then include the STL header files.
    -
    --------------------
    -Support for CString
    --------------------
    -The stl.h file contains code written by me.  The file contains
    -operators that will allow you to use CString objects with STL
    -containers and functions.
    -
    -!!!! CString will not work with STL unless you include  !!!!
    -
    --------------------------------------------
    -Helper functions for pointers-in-containers
    --------------------------------------------
    -There is a file called stl.h which contains two functions:
    -  SequenceDelete
    -  MapDelete
    -These functions send "delete" to all of the objects in a container.
    -
    -If you don't like this approach, you can use a supplied "pointer
    -wrapper" class.
    -
    -There is a file called ptr.h which contains a class called Ptr 
    -that can be used exactly like a pointer.  The object has a pointer 
    -inside it that points to an object of any class.  When a Ptr object 
    -is deleted, "delete" is sent to its underlying pointer.  Ptr can be 
    -used with any STL container, as it has a copy constructor and 
    -assignment operator, which transfers "ownership" of the pointer from 
    -the source object to the destination object.  Ptr is from the book 
    -Design Patterns by Gamma et al -- see the Proxy pattern.  
    -
    -The Ptr class makes memory leaks impossible, because it deletes
    -objects automatically when the container is deleted, or when 
    -functions like "delete" are used.
    -
    -Example:
    -
    -  This is a vector of CStrings:
    -
    -  std::vector< Ptr > StringVector;
    -
    -  StringVector.push_back( Ptr( new CString( "hello" ) ) );
    -  StringVector.push_back( Ptr( new CString( "This is another string" ) ) );
    -
    -------------------------
    -Common Problems with STL
    -------------------------
    -
    -1) Compiler error: != is ambiguous
    -
    -   Solution: put the following line at the beginning of the method
    -             that caused the error:
    -
    -   using namespace std;
    -
    -2) When using maps, the debugger crashes.
    -
    -   This is because symbols for maps (actually, for the "pair")
    -   get truncated to 255 characters.  Solution:  Turn off the
    -   variables window in the debugger.  Don't try to look at
    -   a symbol that has been truncated.  This is not an STL-specific
    -   bug --  It's a bug in the debugger.
    -
    -3) All sorts of compile errors in STL header files
    -
    -   Make sure the preprocessor variable NOMINMAX is defined
    -
    -
    -4) Compiler errors about "operator < is not available", etc.
    -   The class involved has global comparison operators.
    -
    -   Solution:
    -   Write "routers" in the std namespace to the global namespace.
    -   Example (see also stl.h - this is how CString is able
    -   to work with STL):
    -
    -	namespace std
    -	{
    -		BOOL operator < ( const MyClass & rLhs,
    -				  const AnotherClass & rRhs )
    -		{
    -		return ::operator < ( rLhs, rRhs );
    -		}
    -	}
    -
    -   See also 5.
    -
    -5) When you use find() or another algorithm, the compiler
    -   complains that it cannot find the == or < operators.
    -
    -If your code compiles without any error messages, then disregard
    -this section.  However, if you get errors like "cannot convert
    -first argument from const class X" then read on. 
    -
    -I am assuming that your code is calling an STL algorithm like
    -std::sort() or std::find().  If you're not, I can't help
    -you.
    -
    -There is apparently a bug in the Microsoft compiler regarding
    -namespaces.  Namespaces cannot locate global 
    -functions that reside in the global namespace.  For example, 
    -the binary == operator.
    -
    -Maybe this is a bug, maybe it isn't.  This is not clear
    -to me.  However, I do know what works and have tried many other
    -approaches that do not work.  If you have a better solution I
    -would appreciate it if you could let me know about it. 
    -
    -So, if you declare your own class and want to use algorithms 
    -like find() on an STL container, you have two choices:
    -
    -(1) Declare == as a member function.
    -(2) Declare global operators == and !=.
    -
    -(1) simply works.  There will come a time, however, when (1)
    -won't satisfy your needs.  If A == B, then B == A.  You can't
    -do this using member functions if A and B are from different 
    -classes.
    -
    -If you choose (2), you must add the != operator to the std
    -namespace.  There are two ways to do this.  First, you can do
    -this:
    -   namespace std
    -   { 
    -     inline operator != ( const MyClass &rLhs, const MyClass &rRhs )
    -     {
    -       return ::operator != ( rLhs, rRhs );
    -     }
    -   }
    -This "routes" != from the std namespace to the global namespace.
    -
    -Note that ( lhs != rhs ) can be derived from the == operator
    -as !( lhs == rhs ).  There is a macro in STL.H, 
    -STL_DECLARE_GLOBAL_NE, that does this derivation. 
    -This derivation will not work when for whatever reason, !(lhs == rhs)
    -is not the same as ( lhs != rhs ).
    -
    -The following example shows what you have to do for find().  Other
    -algorithms require you to declare <, <=, and >= too.  See the
    -macros STL_DECLARE_GLOBAL_GE, STL_DECLARE_GLOBAL_LT, and
    -STL_GLOBAL_LE.  These macros derive new comparison operators
    -from "operator <( const T&, const T& )".
    -
    -class MyClass
    -{
    -  public:
    -  
    -  int units;
    -  CString description;
    -};
    -
    -// We want to be able to test two MyClass objects against each other
    -// in STL.  Need to create a global operator for this purpose.
    -// Since we use find(), we need to declare not-equal too.
    -bool operator == ( const MyClass &, const MyClass & );
    -STL_DECLARE_GLOBAL_NE( MyClass, MyClass )
    -
    -// These operators test for a matching description.
    -// We do A == B and B == A to be consistent.
    -bool operator == ( const MyClass&, const CString & );
    -bool operator == ( const CString&, const MyClass & );
    -STL_DECLARE_GLOBAL_NE( MyClass, CString )
    -STL_DECLARE_GLOBAL_NE( CString, MyClass )
    -
    -6. Errors when creating vectors that have vectors and deques
    -   that have deques.
    -
    -   Solution:  Provide atruments to the constructor.
    -
    -    std::vector< std::vector >
    -      TwoDimensional( 0, std::vector() );
    -
    diff --git a/Static_Performance.dsw b/Static_Performance.dsw
    deleted file mode 100644
    index 1deb961ea3c..00000000000
    --- a/Static_Performance.dsw
    +++ /dev/null
    @@ -1,193 +0,0 @@
    -Microsoft Developer Studio Workspace File, Format Version 6.00
    -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
    -
    -###############################################################################
    -
    -Project: "ACE dynamic library"=.\ace\ace_dll.dsp - Package Owner=<4>
    -
    -Package=<5>
    -{{{
    -}}}
    -
    -Package=<4>
    -{{{
    -}}}
    -
    -###############################################################################
    -
    -Project: "ACE static library"=.\ace\ace_lib.dsp - Package Owner=<4>
    -
    -Package=<5>
    -{{{
    -}}}
    -
    -Package=<4>
    -{{{
    -}}}
    -
    -###############################################################################
    -
    -Project: "IDL_Cubit Client"=".\TAO\performance-tests\Cubit\TAO\IDL_Cubit\client.dsp" - Package Owner=<4>
    -
    -Package=<5>
    -{{{
    -}}}
    -
    -Package=<4>
    -{{{
    -}}}
    -
    -###############################################################################
    -
    -Project: "IDL_Cubit Server"=".\TAO\performance-tests\Cubit\TAO\IDL_Cubit\server.dsp" - Package Owner=<4>
    -
    -Package=<5>
    -{{{
    -}}}
    -
    -Package=<4>
    -{{{
    -}}}
    -
    -###############################################################################
    -
    -Project: "MT_Cubit Client"=".\TAO\performance-tests\Cubit\TAO\MT_Cubit\client.dsp" - Package Owner=<4>
    -
    -Package=<5>
    -{{{
    -}}}
    -
    -Package=<4>
    -{{{
    -}}}
    -
    -###############################################################################
    -
    -Project: "MT_Cubit Server"=".\TAO\performance-tests\Cubit\TAO\MT_Cubit\server.dsp" - Package Owner=<4>
    -
    -Package=<5>
    -{{{
    -}}}
    -
    -Package=<4>
    -{{{
    -}}}
    -
    -###############################################################################
    -
    -Project: "TAO"=.\TAO\tao\TAO.dsp - Package Owner=<4>
    -
    -Package=<5>
    -{{{
    -}}}
    -
    -Package=<4>
    -{{{
    -    Begin Project Dependency
    -    Project_Dep_Name ACE dynamic library
    -    End Project Dependency
    -}}}
    -
    -###############################################################################
    -
    -Project: "TAO Static"=.\TAO\tao\TAO_Static.dsp - Package Owner=<4>
    -
    -Package=<5>
    -{{{
    -}}}
    -
    -Package=<4>
    -{{{
    -    Begin Project Dependency
    -    Project_Dep_Name ACE static library
    -    End Project Dependency
    -}}}
    -
    -###############################################################################
    -
    -Project: "TAO_IDL Compiler"=.\TAO\TAO_IDL\tao_idl.dsp - Package Owner=<4>
    -
    -Package=<5>
    -{{{
    -}}}
    -
    -Package=<4>
    -{{{
    -    Begin Project Dependency
    -    Project_Dep_Name ACE dynamic library
    -    End Project Dependency
    -    Begin Project Dependency
    -    Project_Dep_Name gperf
    -    End Project Dependency
    -    Begin Project Dependency
    -    Project_Dep_Name gperf_lib
    -    End Project Dependency
    -}}}
    -
    -###############################################################################
    -
    -Project: "basic_perf"=".\performance-tests\Misc\basic_perf.dsp" - Package Owner=<4>
    -
    -Package=<5>
    -{{{
    -}}}
    -
    -Package=<4>
    -{{{
    -}}}
    -
    -###############################################################################
    -
    -Project: "context_switch_time"=".\performance-tests\Misc\context_switch_time.dsp" - Package Owner=<4>
    -
    -Package=<5>
    -{{{
    -}}}
    -
    -Package=<4>
    -{{{
    -}}}
    -
    -###############################################################################
    -
    -Project: "gperf"=.\apps\gperf\src\gperf.dsp - Package Owner=<4>
    -
    -Package=<5>
    -{{{
    -}}}
    -
    -Package=<4>
    -{{{
    -    Begin Project Dependency
    -    Project_Dep_Name ACE dynamic library
    -    End Project Dependency
    -}}}
    -
    -###############################################################################
    -
    -Project: "gperf_lib"=.\apps\gperf\src\gperf_lib.dsp - Package Owner=<4>
    -
    -Package=<5>
    -{{{
    -}}}
    -
    -Package=<4>
    -{{{
    -    Begin Project Dependency
    -    Project_Dep_Name ACE dynamic library
    -    End Project Dependency
    -}}}
    -
    -###############################################################################
    -
    -Global:
    -
    -Package=<5>
    -{{{
    -}}}
    -
    -Package=<3>
    -{{{
    -}}}
    -
    -###############################################################################
    diff --git a/TAO/orbsvcs/orbsvcs/AVStreams_Full.idl b/TAO/orbsvcs/orbsvcs/AVStreams_Full.idl
    deleted file mode 100644
    index 2f04c91261e..00000000000
    --- a/TAO/orbsvcs/orbsvcs/AVStreams_Full.idl
    +++ /dev/null
    @@ -1,252 +0,0 @@
    -// $Id$ 
    -
    -// IDL for Control and Management of Audio/Video Streams
    -// Revised Submission
    -
    -// Additional IDL for full profile
    -#include "AVStreams.idl"
    -
    -#pragma prefix "omg.org"
    -
    -module AVStreams_Full
    -{
    -  exception protocolNotSupported{};
    -  exception formatNotSupported{};
    -  exception formatMismatch{};
    -  exception FEPMismatch{};
    -  exception alreadyConnected{};
    -  exception invalidSettings{string settings;};
    -  exception notConnected{};
    -  exception deviceQosMismatch{};
    -  exception failedToConnect{string reason;};
    -  exception failedToListen{string reason;};
    -
    -
    -  interface FlowProducer;
    -  interface FlowConsumer;
    -  interface FlowEndPoint;
    -  interface FDev;
    -
    -  interface FlowConnection : PropertyService::PropertySet
    -    {
    -      void stop();
    -      void start();
    -      void destroy();
    -
    -      boolean modify_QoS(
    -		
    -                         inout AVStreams::QoS new_qos)
    -        raises (AVStreams::QoSRequestFailed);
    -
    -      boolean use_flow_protocol(
    -                                in string fp_name,
    -                                in any fp_settings)
    -        raises (AVStreams::FPError, AVStreams::notSupported);
    -
    -      oneway void push_event(in AVStreams::streamEvent the_event);
    -
    -      boolean connect_devs(in FDev a_party, in FDev b_party,
    -                           inout AVStreams::QoS the_qos)
    -        raises (AVStreams::streamOpFailed, 
    -                AVStreams::streamOpDenied, 
    -                AVStreams::QoSRequestFailed);
    -
    -      boolean connect(
    -                      in FlowProducer flow_producer,
    -                      in FlowConsumer flow_consumer,
    -                      inout AVStreams::QoS the_qos)
    -        raises (formatMismatch, FEPMismatch, alreadyConnected);
    -
    -      boolean disconnect();
    -
    -      // The notSupported exception is raised where
    -      // flow cannot have multiple producers
    -      boolean add_producer(in FlowProducer flow_producer,
    -                           inout AVStreams::QoS the_qos)
    -        raises (alreadyConnected, AVStreams::notSupported);
    -
    -      boolean add_consumer(in FlowConsumer flow_consumer,
    -                           inout AVStreams::QoS the_qos)
    -        raises (alreadyConnected);
    -
    -      boolean drop(in FlowEndPoint target)
    -        raises (notConnected);
    -    };
    -
    -  interface FlowEndPoint : PropertyService::PropertySet
    -    {
    -      boolean lock();
    -      void unlock();
    -
    -      void stop();
    -      void start();
    -      void destroy();
    -
    -      // Default is a nil object reference
    -      attribute AVStreams::StreamEndPoint related_sep;
    -      attribute FlowConnection related_flow_connection;
    -
    -      FlowEndPoint get_connected_fep()
    -        raises (notConnected,
    -                AVStreams::notSupported);
    -
    -      // syntax of fp_name is 
    -      boolean use_flow_protocol(in string fp_name,
    -                                in any fp_settings)
    -        raises (AVStreams::FPError, AVStreams::notSupported);
    -
    -      // set_format() initializes 'format' 
    -      // as current media format e.g. MPEG.
    -      void set_format(in string format)
    -        raises (AVStreams::notSupported);
    -
    -      void set_dev_params(
    -                          in PropertyService::Properties new_settings)
    -        raises (PropertyService::PropertyException, 
    -                AVStreams::streamOpFailed);
    -
    -      void set_protocol_restriction(in AVStreams::protocolSpec 
    -                                    the_spec)
    -        raises (AVStreams::notSupported);
    -
    -      boolean is_fep_compatible(in FlowEndPoint fep) 
    -        raises (formatMismatch, deviceQosMismatch);
    -
    -      boolean set_peer(
    -                       in FlowConnection the_fc,
    -		
    -                       in FlowEndPoint the_peer_fep,
    -                       inout AVStreams::QoS the_qos)
    -        raises (AVStreams::QoSRequestFailed,
    -                AVStreams::streamOpFailed);
    -
    -      boolean set_Mcast_peer(
    -                             in FlowConnection the_fc,
    -                             in AVStreams::MCastConfigIf a_mcastconfigif,
    -                             inout AVStreams::QoS the_qos)
    -        raises (AVStreams::QoSRequestFailed);
    -
    -    };
    -
    -  interface FlowProducer : FlowEndPoint
    -    {
    -      boolean connect_to_peer(inout AVStreams::QoS the_qos,
    -                              in string address,
    -
    -                              in string use_flow_protocol) // syntax 
    -        raises(failedToConnect,
    -               AVStreams::FPError, AVStreams::QoSRequestFailed);
    -
    -      string connect_mcast(inout AVStreams::QoS the_qos,
    -                           out boolean is_met,
    -                           in string address,
    -                           in string use_flow_protocol)
    -        raises (failedToConnect,
    -                AVStreams::notSupported,
    -                AVStreams::FPError,
    -                AVStreams::QoSRequestFailed);
    -
    -      string get_rev_channel(in string pcol_name);
    -
    -      void set_key(in AVStreams::key the_key);
    -      void set_source_id(in long source_id);
    -    };
    -
    -  interface FlowConsumer : FlowEndPoint
    -    {
    -
    -
    -      // Needs to know its peer to choose its protocol correctly
    -      // Also to ask for a reverse channel for credit-based flow
    -      // control, if one is required
    -      string go_to_listen(
    -                          inout AVStreams::QoS the_qos,
    -                          in boolean is_mcast,
    -                          in FlowProducer peer,
    -                          inout string flowProtocol)// syntax 
    -        raises(failedToListen, AVStreams::FPError, 
    -               AVStreams::QoSRequestFailed);
    -    };
    -
    -  interface FDev : PropertyService::PropertySet {
    -    FlowProducer create_producer(
    -                                 in FlowConnection the_requester,
    -                                 inout AVStreams::QoS the_qos,
    -                                 out boolean met_qos,
    -                                 inout string named_fdev)
    -      raises(AVStreams::streamOpFailed,
    -             AVStreams::streamOpDenied,
    -             AVStreams::notSupported,
    -             AVStreams::QoSRequestFailed);
    -
    -    FlowConsumer create_consumer(
    -                                 in FlowConnection the_requester,
    -                                 inout AVStreams::QoS the_qos,
    -                                 out boolean met_qos,
    -                                 inout string named_fdev)
    -      raises(AVStreams::streamOpFailed,
    -             AVStreams::streamOpDenied,
    -             AVStreams::notSupported,
    -             AVStreams::QoSRequestFailed);
    -
    -    FlowConnection bind(in FDev peer_device,
    -                        inout AVStreams::QoS the_qos,
    -                        out boolean is_met)
    -      raises (AVStreams::streamOpFailed,
    -              AVStreams::QoSRequestFailed);
    -
    -    FlowConnection bind_mcast(in FDev first_peer,
    -                              inout AVStreams::QoS the_qos,
    -                              out boolean is_met)
    -      raises (AVStreams::streamOpFailed,
    -              AVStreams::QoSRequestFailed);
    -
    -    void destroy(in FlowEndPoint the_ep, in string fdev_name)
    -      // ie FDev not found
    -      raises (AVStreams::notSupported);
    -  };
    -
    -  enum PositionOrigin {
    -    AbsolutePosition, RelativePosition, ModuloPosition
    -  };
    -
    -  enum PositionKey {
    -    ByteCount, SampleCount, MediaTime
    -  };
    -
    -  struct Position {
    -    PositionOrigin origin;
    -    PositionKey key;
    -    long value;
    -  };
    -
    -  exception PostionKeyNotSupported { PositionKey key;};
    -  exception InvalidPosition { PositionKey key;};
    -
    -  // MediaControl interface is similar to
    -  // ControlledStream interface in MSS.
    -  // It can be inherited by flow endpoints or
    -  // FlowConnection interfaces.
    -  interface MediaControl{
    -
    -    exception PostionKeyNotSupported { PositionKey key;};
    -
    -    Position get_media_position(
    -                                in PositionOrigin an_origin,
    -                                in PositionKey a_key)
    -      raises (PostionKeyNotSupported);
    -
    -    void set_media_position(in Position a_position)
    -      raises (PostionKeyNotSupported, InvalidPosition);
    -
    -    void start(in Position a_position)
    -      raises(InvalidPosition);
    -    void pause(in Position a_position)
    -      raises(InvalidPosition);
    -    void resume(in Position a_position)
    -      raises(InvalidPosition);
    -    void stop(in Position a_position)
    -      raises(InvalidPosition);
    -  };
    -};
    -
    diff --git a/TAO/tao/factories.h b/TAO/tao/factories.h
    deleted file mode 100644
    index 5e9d5a0001f..00000000000
    --- a/TAO/tao/factories.h
    +++ /dev/null
    @@ -1,146 +0,0 @@
    -// This may look like C, but it's really -*- C++ -*-
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    TAO
    -//
    -// = FILENAME
    -//     factories.h
    -//
    -// = AUTHOR
    -//     Chris Cleeland
    -//
    -// = VERSION
    -//     $Id$
    -// ============================================================================
    -
    -#ifndef TAO_FACTORIES_H
    -#  define TAO_FACTORIES_H
    -
    -#if 0
    -#  include "ace/SOCK_Acceptor.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#  include "ace/SOCK_Connector.h"
    -#  include "ace/Strategies_T.h"
    -#  include "ace/Connector.h"
    -#  include "ace/Synch.h"
    -
    -#  include "tao/params.h"
    -#  include "tao/connect.h"
    -#  include "tao/objtable.h"
    -#endif
    -
    -class TAO_Client_Connection_Handler : public ACE_Svc_Handler
    -  // = TITLE
    -  //       used on the client side and returned
    -  //      by the .
    -{
    -public:
    -  TAO_Client_Connection_Handler (ACE_Thread_Manager* = 0);
    -  // Do-nothing constructor
    -
    -  virtual int open (void*);
    -  // Initialization hook
    -
    -  void in_use (CORBA::Boolean);
    -  // Set the in-use flag.
    -
    -  CORBA::Boolean in_use (void);
    -  // Return state of the in-use flag.
    -
    -private:
    -  CORBA::Boolean in_use_;
    -  // True value indicates that something is using this handler.
    -};
    -
    -class TAO_Client_Factory
    -  // = TITLE
    -  //    Abstract factory used by the client to turn out various
    -  //    strategies used on the client side.
    -{
    -public:
    -  typedef ACE_Strategy_Connector
    -          CONNECTOR;
    -  typedef ACE_NOOP_Creation_Strategy
    -          NULL_CREATION_STRATEGY;
    -  typedef ACE_Cached_Connect_Strategy
    -          CACHED_CONNECT_STRATEGY;
    -
    -#if defined (TAO_HAS_CLIENT_CONCURRENCY)
    -  CONCURRENCY_STRATEGY *concurrency_strategy (void);
    -#endif
    -
    -  CONNECTOR *connector (void);
    -  // Return a pointer to a connector using appropriate strategies.
    -
    -  TAO_Client_Factory (void);
    -  ~TAO_Client_Factory (void);
    -
    -private:
    -#if defined (TAO_HAS_CLIENT_CONCURRENCY)
    -  CONCURRENCY_STRATEGY *concurrency_strategy_;
    -#endif
    -  CONNECTOR connector_;
    -  NULL_CREATION_STRATEGY null_creation_strategy_;
    -  CACHED_CONNECT_STRATEGY caching_connect_strategy_;
    -};
    -
    -class TAO_Server_Factory
    -  // = TITLE
    -  //    Abstract factory used by the server side to turn out various
    -  //    strategies of special utility to it.
    -{
    -public:
    -  // = SERVER-SIDE
    -  typedef ACE_Creation_Strategy CREATION_STRATEGY;
    -  typedef ACE_Accept_Strategy ACCEPT_STRATEGY;
    -  typedef ACE_Concurrency_Strategy CONCURRENCY_STRATEGY;
    -  typedef ACE_Scheduling_Strategy SCHEDULING_STRATEGY;
    -
    -  CREATION_STRATEGY *creation_strategy (void);
    -  // return concrete creation strategy
    -
    -  ACCEPT_STRATEGY *accept_strategy (void);
    -  // return concrete acceptor strategy
    -
    -  CONCURRENCY_STRATEGY *concurrency_strategy (void);
    -  // return the concurrency strategy used
    -
    -  SCHEDULING_STRATEGY *scheduling_strategy (void);
    -  // return the scheduling strategy used
    -
    -  TAO_Object_Table *object_lookup_strategy (void);
    -  // return the concrete object lookup strategy
    -
    -  TAO_Server_Factory (void);
    -  // constructor
    -
    -private:
    -  // = COMMON
    -  ACE_Thread_Strategy threaded_strategy_;
    -  // The threaded strategy used for passively establishing connections.
    -  ACE_Reactive_Strategy reactive_strategy_;
    -  // A strategy for passively establishing connections which utilizes the Reactor.
    -
    -  // = SERVER
    -  CONCURRENCY_STRATEGY *concurrency_strategy_;
    -  // concrete concurrency strategy
    -
    -  TAO_Object_Table *objtable_;
    -  // instance of object table
    -#if 0
    -  // Someday we'll need these!
    -  CREATION_STRATEGY *creation_strategy_;
    -  ACCEPT_STRATEGY *accept_strategy_;
    -  SCHEDULING_STRATEGY *scheduling_strategy_;
    -#endif
    -};
    -
    -#endif /* TAO_FACTORIES_H */
    diff --git a/THANKS b/THANKS
    deleted file mode 100644
    index 1da685ac884..00000000000
    --- a/THANKS
    +++ /dev/null
    @@ -1,817 +0,0 @@
    -ACKNOWLEDGEMENTS
    -
    -ACE and TAO have been deeply influenced and improved by the following
    -members of my research group at Washington University:
    -
    -Everett Anderson 
    -Alexander Babu Arulanthu 
    -Shawn Atkins 
    -Matt Braun 
    -Darrell Brunsch 
    -Chris Cleeland 
    -Sergio Flores-Gaitan 
    -Chris Gill 
    -Aniruddha Gokhale 
    -Pradeep Gore 
    -Tim Harrison 
    -John Heitmann  
    -James Hu 
    -Prashant Jain 
    -Vishal Kachroo 
    -Michael Kircher 
    -Yamuna Krishnamurthy 
    -Fred Kuhns 
    -David Levine 
    -Mike Moran 
    -Sumedh Mungee 
    -Balachandran Natarajan 
    -Kirthika Parameswaran 
    -Carlos O'Ryan 
    -Ossama Othman 
    -Jeff Parsons 
    -Irfan Pyarali 
    -Marina Spivak 
    -Nagarajan Surendran 
    -Nanbor Wang 
    -Seth Widoff 
    -Torben Worm 
    -
    -I would also like to thank all the following people who have also
    -contributed to ACE and TAO over the years:
    -
    -Paul Stephenson 
    -Olaf Kruger 
    -Ed Brown 
    -Lee Baker 
    -Alex Ranous 
    -Mark Patton 
    -Steffen Winther Sorensen  for
    -Troy Warner 
    -Stacy Mahlon 
    -Charles Eads 
    -Mark Frutig 
    -Todd Hoff 
    -George 
    -Brad Needham 
    -Leslee Xu 
    -Detlef Becker 
    -Bruce Worden 
    -Chris Tarr 
    -Bill Sears 
    -Greg Lavender 
    -Steve Warwick 
    -Mats Sundvall 
    -Andreas Ueltschi 
    -Nigel Hooke 
    -Medhi Tabatabai 
    -Stuart Powell 
    -Bin Mu 
    -Andrew McGowan 
    -Ken Konecki 
    -John P. Hearn 
    -Giang Hoang Nguyen 
    -Carlos Garcia Braschi 
    -Jam Hamidi 
    -Eric Vaughan 
    -Karlheinz Dorn ,
    -Steve Ritter 
    -Chandra Venkatapathy 
    -Matt Stevens 
    -Bob Vistica 
    -David Trumble 
    -George Reynolds 
    -Hans Rohnert 
    -Alex V. Maclinovsky 
    -Todd Blanchard 
    -Rob Clairmont 
    -Christian Millour 
    -Neil B. Cohen 
    -Dieter Quehl 
    -Reginald S. Perry 
    -James Morris 
    -Mark Seaborn 
    -Phil Brooks 
    -E. Jason Scheck 
    -Daniel Proulx 
    -Bill Tang 
    -John Huchinson 
    -Jack Erickson 
    -Byron Walton 
    -Bill Lear 
    -Mark Zusman 
    -Aurelio Nocerino 
    -Walt Akers 
    -Greg Baker 
    -Alexandre Karev 
    -Pramod Kumar Singh 
    -Bryon Rigg 
    -Brad Brown 
    -Patty Genualdi 
    -Eshel Liran 
    -Mick Adams 
    -Chris Eich 
    -Mike Flinn 
    -Audun Tornquist 
    -Sandeep Joshi 
    -Bernd Hofner 
    -Craig Perras 
    -Kirk Sinnard 
    -Matthew Newhook 
    -Gerolf Wendland 
    -Phil Mesnier 
    -Ross Dargahi 
    -Richard Orr 
    -Rich Ryan 
    -Jan Rychter 
    -Tom Marrs <0002104588@mcimail.com>
    -Bob Olson 
    -Jean-Francois Ripouteau 
    -Ajit Sagar 
    -Ashish Singhai 
    -David Sames 
    -Gonzalo Diethelm 
    -Raj 
    -Darrin Edelman 
    -Steve Weismuller 
    -Eric C. Newton 
    -Andres Kruse 
    -Ramesh Nagabushnam 
    -Antonio Tortorici 
    -Nigel Lowe 
    -Tom Leith 
    -Michael Fortinsky 
    -Marco Sommerau 
    -Gary Salsbery 
    -Eric Beser 
    -Alfred Keller 
    -John Lu 
    -James Mansion 
    -Jesper S. M|ller 
    -Chris Lahey 
    -Michael R"uger 
    -Istvan Buki 
    -Greg Wilson 
    -Garrett Conaty 
    -Brad Flood 
    -Marius Kjeldahl 
    -Steve Huston 
    -Eugene K. Plaude 
    -Joseph DeAngelis 
    -Kim Gillies 
    -Luca Priorelli 
    -Alan Stewart 
    -Hani Yakan 
    -William L. Gerecke 
    -Craig Johnston 
    -Pierre-Yves Duval 
    -Rochi Febo Dommarco 
    -Jonathan Biggar 
    -Scott Shupe 
    -Chuck Gehr 
    -Avi Nash 
    -Padhu Ramalingam 
    -Jay Denkberg 
    -Ayman Farahat 
    -Tilo Christ 
    -Ari Erev 
    -Hamutal Yanay 
    -Vital Aza 
    -Alex Villazon 
    -David Artus 
    -Todd Barkalow 
    -Alexander Smundak 
    -Thilo Kielmann 
    -Matthias Kerkhoff 
    -Fred LaBar 
    -Hanan Herzog 
    -Eric Parker 
    -James Michael Dwyer 
    -Arun Katkere 
    -Bob Dunmire 
    -Sandro Doro 
    -Robert Lyng 
    -Phil Logan 
    -John Cosby 
    -Wayne Vucenic 
    -Harry Gunnarsson 
    -James CE Johnson 
    -Samuel_Bercovici 
    -Per Andersson 
    -Anthony McConnell 
    -Mark Rabotnikov 
    -John Bossom 
    -Rino Simioni 
    -Slawomir Kuzniar 
    -Rob Jordan 
    -Michael Maxie 
    -John Cosby 
    -Nigel Owen 
    -Jorn Jensen 
    -Paul Roman 
    -Dave Mayerhoefer 
    -Bert Craytor  
    -Joey Zhu 
    -Arthur J. Lewis 
    -Michael R. MacFaden 
    -Paul Han 
    -Jeff Morgan 
    -Arturo Montes 
    -Elliot Lau 
    -Mark Wright 
    -Michael Newton 
    -Kumar Neelakantan 
    -Scott Halstead 
    -Jean-Marc Strauss 
    -Adam Porter 
    -Hakan Kallberg 
    -Eric Dean Russell 
    -Daniel Montalibet 
    -Norbert Rapp 
    -Ganesh Pai 
    -Berni Merkle 
    -Tom Wright 
    -Torbjorn Lindgren 
    -Mike Bernat 
    -Brian Mendel 
    -Jeremy Buch 
    -Kevin Boyle 
    -Kevin Martindale 
    -Luis Lopes 
    -Adrian Salt 
    -Hongbo Xu 
    -Michael Hartman 
    -Tom Dobridge 
    -Rich Christy 
    -Satoshi Ueno 
    -Eugene R. Somdahl 
    -Robert Head 
    -Ivan Murphy 
    -Jan Perman 
    -Shankar Krishnamoorthy 
    -Reza Roodsari 
    -Jim Crossley 
    -Johannes Gutleber 
    -Marina Spivak 
    -Yigong Liu 
    -Erik Urdang 
    -Mike Schweiger 
    -Anthony Mutiso 
    -Jeff R. Hayes 
    -David Brackman 
    -Dave Moore 
    -Joseph Cross 
    -Cherif Sleiman 
    -Stefan Ericsson 
    -Wei Chiang 
    -Thanh Ma 
    -Oleg Krivosheev 
    -Stephen Coy 
    -Bob Laferriere 
    -Satheesh Kumar MG 
    -Karen Amestoy 
    -Jeff Richard 
    -Samuel Melamed 
    -Vladimir Schipunov 
    -Felix Popp 
    -Billy Quinn 
    -Michael McKnight 
    -Huiying Shen 
    -Alex Chan 
    -Aaron Valdivia 
    -Edan Ayal 
    -Jeffrey Peterson 
    -Neil Lavelle 
    -Steven Wohlever 
    -Manojkumar Acharya 
    -Evgeny Beskrovny 
    -Kirill Rybaltchenko 
    -Laura Paterno 
    -Ben Eng 
    -Mike Kamrad 
    -Marios Zikos 
    -Mark L Boriack 
    -Mark Hyett 
    -Caleb Epstein 
    -Valik Solrzano Barboza 
    -John Connett 
    -Tom Arbuckle 
    -Stephen Henry 
    -Dani Flexer 
    -Michael Hoffman 
    -John Lindal 
    -Dustin Laurence 
    -Ernie Makris 
    -Timothy A. Brown 
    -Patrick J. McNerthney 
    -Lori Anderson 
    -Erik Margraf 
    -Bryan Doerr 
    -Adam Miller 
    -Thomas Jordan 
    -Keith Nicewarner 
    -Frederic Andres 
    -Achint Sandhu 
    -Mitch Kuninsky 
    -Alex Chan 
    -Jeff Hellzen 
    -Thomas Venturella 
    -Philippe O'Reilly 
    -Stan Leeson 
    -Richard Keizer 
    -Edgar Villanueva 
    -Oliver Kellogg 
    -Dave Meyer 
    -Thomas Hampson 
    -Jay Kistler 
    -Scott Snyder 
    -Mark Evans 
    -Todd Pack 
    -Mark Maris 
    -Jason Katz 
    -Jim Penny 
    -Chris Ryan 
    -J. Russell Noseworthy 
    -Carol Sanders 
    -Jerry Bickle 
    -Paul von Behren 
    -Sudish Joseph 
    -Loren Rittle 
    -Alexander Ovsiankin 
    -Fred Kuhns 
    -Ravi Nagabhyru 
    -Tom Brusehaver 
    -Dave Tallman 
    -Monish Rajpal 
    -Garry Brother 
    -Andreas Schuelke 
    -Ganapathi 
    -James Garrison 
    -Brad Walton 
    -Paul Motuzenko 
    -Kurt Sussman 
    -Rob Thornton 
    -Chanaka Liyanaarachchi 
    -Saneyasu 
    -Steve Kay 
    -Greg White 
    -Ki-hyun Yoon 
    -Umar Syyid 
    -Bill Fulton 
    -Amancio Hasty 
    -Zoran Ivanovic 
    -Sree Oggu 
    -James Risinger 
    -Leo Modica 
    -Bob Scott 
    -Mark Kettner 
    -Kent Watsen 
    -Chris Healey 
    -Philippe Klein 
    -William S. Lear 
    -John Geiss 
    -Ernesto Guisado 
    -Stuart Myles 
    -Lothar Werzinger 
    -Andrew Harbick 
    -Pavel Motuzenko 
    -Ross J. Lillie 
    -Sam Hauer 
    -Frank. J. Hodum 
    -David Miron 
    -Anton van Straaten 
    -Joe Covalesky 
    -Bill Backstrom 
    -Jeff Franks 
    -John Mulhern <9107@mn3.lawson.lawson.com>
    -Johan Lundin 
    -Eric Powers 
    -Zheng Han 
    -Gabriel Lima 
    -Doug Anderson 
    -Hongyin Quan 
    -Maximilian Hoferer 
    -Kevin Stanley 
    -Jeff Greif 
    -Jeff McDaniel 
    -Andreas Geisler 
    -Bob McWhirter 
    -Daniel Winder 
    -Zheng Han 
    -Christa Schwanninger 
    -Byron Harris 
    -Barney Dalton 
    -Peter Gorgia 
    -Dirk Broer 
    -Joseph E. LaPrade 
    -Goran Lowkrantz 
    -Susan Liebeskind 
    -Dana Hackman 
    -Margherita Vittone Wiersma 
    -Priya Narasimhan 
    -Jeff Hopper 
    -Mats Nilsson 
    -Dongwook Kim 
    -Don Davis 
    -Alberto Villarica 
    -XuYifeng 
    -Ossama Othman 
    -Tom Shields 
    -Krishna Padmasola 
    -Andre Folkers 
    -Paul Sexton 
    -Marc Lehmann 
    -Anne Blankert 
    -Raja Ati 
    -Clinton Carr 
    -Peter Liqun Na 
    -Frank Adcock 
    -Xu Yifeng 
    -Valery Arkhangorodsky 
    -Alan Scheinine 
    -Andrew G. Harvey 
    -Dann Corbit 
    -James 
    -Jason Milley 
    -Ulf Jaehrig 
    -Peter Nordlund 
    -Mark Weel 
    -Tres Seaver 
    -Erik Koerber 
    -Eric R. Medley 
    -David O'Farrell 
    -Amir Bahmanyari 
    -Ian Wright 
    -David Janello 
    -Rich Wellner 
    -Fernando D. Mato Mira 
    -Jonathan Reis 
    -Seung-Lee Hoon 
    -Russell L. Carter 
    -Bill Hall 
    -Brian Gilstrap 
    -Balaji Srinivasan 
    -Anders W. Tell 
    -Larry Lachman 
    -Terry Rosenbaum 
    -Rainer Blome 
    -Kirk Ellett 
    -Sunil Kumar 
    -T Stach 
    -Ron Barack 
    -Daniel Nieten 
    -Paul K. Fisher 
    -Jim Buck 
    -Olivier Lau 
    -Achim Stindt 
    -Fredrik Lindahl 
    -Joseph Weihs 
    -Serge Kolgan 
    -James Megquier 
    -Martin Krumpolec 
    -Michael Thomas 
    -Vicentini Emanuele 
    -Bob Price 
    -Ramiro Penataro Blanco 
    -Sigg Pascal 
    -Ivan Leong 
    -Virginie Amar
    -Tom Ziomek 
    -Hamish Friedlander 
    -Mark De Jong 
    -Knut Johannessen 
    -Leif Jakobsmeier 
    -Jon Lindgren 
    -Steve Vinoski 
    -Christian Mueffling 
    -Victor Yu 
    -Jeff Donner 
    -Joe Loyall 
    -Stanislav Meduna 
    -Christian Korn 
    -Ron Barack 
    -Steve Totten 
    -Faron Dutton 
    -Gary York 
    -Patty Hair 
    -Ivan Pascal 
    -William A. Hoffman 
    -Mark Lucovsky 
    -Greg Holtmeyer 
    -Jody Hagins 
    -Patrice Bensoussan 
    -Keith Brown 
    -Barry Hoggard 
    -Peter J. Mason 
    -Jerry De Master 
    -Greg Gallant 
    -wym 
    -Karel Zuiderveld 
    -Mike Goldman 
    -Peter Gross 
    -Greg Ross 
    -Stanford S. Guillory 
    -Peter Weat 
    -Magnus Karlsson 
    -Andreas Tobler 
    -John Aughey 
    -Knut-Havard Aksnes 
    -Eric Mitchell 
    -Tommy Andreasen 
    -Slava Galperin 
    -Jeff Olszewski 
    -Sudhanshu Garg 
    -Mike Preradovic 
    -Greg Harrison 
    -Sangwoo Jin 
    -Jacques Salerian 
    -Steve Coleman 
    -Diethard Ohrt 
    -Jacob Jones 
    -Phil Ruelle 
    -Sush Bankapura 
    -Eric Covington 
    -Darren Whobrey 
    -Mason Taube 
    -Rod Joseph 
    -Hans Horsmann 
    -Kevin Royalty 
    -Souhad Mcheik 
    -Mark Little 
    -Tim Stack 
    -Marc Engel 
    -Uma Markandu 
    -Henrik Nordberg 
    -Tad Jarosinski 
    -Andy Marchewka 
    -Neal Norwitz 
    -Frederic Maria 
    -David Hooker 
    -Christian.Destor 
    -Andrew Hobson 
    -Andre Folkers 
    -Torsten Kuepper 
    -Hao Ruan 
    -Alexander Davidovich 
    -Cristian Ferretti 
    -N Becker 
    -Yaolong Lan 
    -Elias Sreih 
    -Liang Chen 
    -Mark Laffoon 
    -Ti Z 
    -Brian Dance 
    -Alexey Gadzhiev 
    -Francois Bernier 
    -Bill Rizzi 
    -Peter Windle 
    -Andy Alvarez 
    -Jaepil Kim 
    -Dmitry Goldshtain 
    -Carl Grinstead 
    -Henric Jungheim 
    -Konstantinos Margaritis 
    -Michael Preobrazhensky 
    -Gregory D. Fee 
    -Roland Gigler 
    -Frank Buschmann 
    -Eric Eide 
    -Don Busch 
    -Thomas Lockhart 
    -David Hauck 
    -Joe Hoffert  
    -Keith Rohrer 
    -Tim Rose 
    -Sam Rhine 
    -Chris Schleicher 
    -Margaret Reitz 
    -Thomas Mehrkam 
    -Erik Ivanenko 
    -Sarmeesha Reddy 
    -Steven Tine 
    -Dave Steele 
    -Simeon Simeonov 
    -David H. Whittington 
    -Ian MacDonald 
    -Hans Ridder 
    -Todd Mullanix 
    -Hai Vu 
    -Paul Francis 
    -Kristopher Johnson 
    -Dave Butenhof 
    -Dominic Williams 
    -Srikumar Kareti 
    -Ian Pepper 
    -Kevin Lyda 
    -James D. Rucker 
    -Brian Wallis 
    -Sandeep Goyal 
    -englishmalc@my-dejanew.com
    -Frank O'Dwyer 
    -Long Hoang 
    -Steven D. Chen 
    -Alain Magloire 
    -Jim Rogers 
    -Nick Sawadsky 
    -David Brownell 
    -Richard Stallman 
    -Casey Lucas 
    -Brian C. Olson 
    -Joseph A. Condlin 
    -Serge Du 
    -Mike Mazurek 
    -Christian Schuderer 
    -John R. Taylor 
    -Bill Tovrea 
    -Wallace Owen 
    -Vyacheslav A. Batenin 
    -Edwin D. Windes 
    -Christopher Kohlhoff 
    -Andreas Terstegge 
    -Stefaan Kiebooms 
    -Keith Nichol 
    -Rebecca Sanford 
    -Ram Vishnuvajjala 
    -Tom Bradley 
    -Shaun Ohagan 
    -Dale Wood 
    -Robert Flanders 
    -Gul Onural 
    -Stephen E Blake 
    -Eric S Rosenthal 
    -Sridevi Subramanian 
    -Bruce Trask 
    -Jake Hamby 
    -Rick Weisner 
    -Dennis C. De Mars 
    -V. Lakshmanan 
    -Hata Yoshiaki 
    -Vidya Narayanan 
    -Sean Landis 
    -Youzhong Liu 
    -John Weald 
    -Gilbert Roulot 
    -Gildo Medeiros Junior 
    -Brian Peterson 
    -Fabrice Podlyski 
    -Darren DeRidder 
    -John Tucker 
    -Oleg Orlov 
    -Timothy Canham 
    -Chris Uzdavinis 
    -Randy Heiland 
    -Joyce Fu 
    -Surender Kumar 
    -Pradeep Avasthi 
    -Guicheney Christophe 
    -Madhu Konety 
    -Isaac Stoddard 
    -Alvarez 
    -Peter Brandstrom 
    -Eugene Surovegin 
    -Thaddeus Olczyk 
    -John Chludzinski 
    -Pedro Alves Ferreira 
    -Bruce Edge 
    -Dan Butler 
    -Ron MacKenzie 
    -Craig Rodrigues 
    -Surovegin Eugene 
    -Phil Y. Wang 
    -David Brock 
    -John Morey 
    -Dwayne Burns 
    -Denis Ouellet 
    -Stefan Ullrich 
    -Brian Raven 
    -Gheorghe Aprotosoaie 
    -Carsten Zerbst 
    -Paul Calabrese 
    -Stephane Chatre 
    -James Whitledge 
    -Erik Johannes 
    -Alex Hornby 
    -Riaz Syed 
    -Clarence M. Weaver 
    -John Forest 
    -Roger Egbers 
    -Ralf Kluthe 
    -Ruud Diterwich
    -Bill Nesbitt 
    -Will Skunk 
    -David Digby 
    -Timothy Schimke 
    -Jim Robinson 
    -Peter Mueller 
    -Raghu Nambiath 
    -Mike Gingell 
    -David McCann 
    -Ruediger Franke 
    -Brian Jones 
    -Michael Garvin 
    -Mike Vitalo 
    -Kirk Davies 
    -Arno Pernozzoli 
    -Trey Grubbs 
    -Matthias Schumann 
    -John Gathright 
    -Alexander Villatora 
    -Hoang Duong 
    -Michael Roth 
    -Craig Anderson 
    -Mitsuhiko Hara 
    -Weihai Yu 
    -Tal Lev-Ami 
    -Chris Zimman 
    -Rick Wesson 
    -Sridhara Rao Dasu 
    -Walter Welzel 
    -Anthony Shipman 
    -Tobin Bergen-Hill 
    -Toshio Hori 
    -John Mink 
    -Duane Binder 
    -Randall Sharo 
    -Dave Madden 
    -Cliff_H_Campbell 
    -Narendra Ravi 
    -Krishnakumar B. 
    -David Sunwall 
    -Brian Wright 
    -Yosi Sarusi 
    -Robert Shewan 
    -Skye Sweeney 
    -Lars Immisch 
    -Adrian Mercieca 
    -Stefan Wendt 
    -Herbert 
    -Clarence Bishop 
    -Giga Giguashvili 
    -Philipp Slusallek 
    -Matthew Davis 
    -Janusz Stopa 
    -Rusty Conover 
    -Alex Mintz 
    -Phillippe Merle 
    -Mark Winrock 
    -Boris Kaminer 
    -Martin Botzler 
    -Lorin Hochstein 
    -Wenli Bai 
    -Harry Forry 
    -Jose Rubio 
    -Joerg Pommnitz 
    -Mogens Hansen 
    -Shafiek Savahl 
    -Pierre Grondin 
    -John Masiyowski 
    -Uwe Landrock 
    -Klaus Banzer 
    -Probal Bhattacharjya 
    -Dmitri Katchalov 
    -Alok Gupta 
    -Chien Yueh 
    -John K. Black 
    -Kamen Penev 
    -Gregory Yarmit 
    -Jarek Tomaszewski 
    -Siegurd Weber 
    -Dennis D Noll 
    -Fabrizio Giannotti 
    -Harald Finster 
    -Fritz Bosch 
    -Charles Frasch 
    -Chris Hafey 
    -Rick Hess 
    -David Dunn 
    -Jaymes Galvin 
    -Marat 
    -Sergey Nemanov 
    -Vladimir Kondratiev 
    -John Glynn 
    -Raymond Wiker 
    -Michael Pitman 
    -Joseph Jefferson 
    -Engelbert Staller 
    -George Ball 
    -Ronald Fischer 
    -Marvin Allen Wolfthal 
    -
    -I would particularly like to thank Paul Stephenson, who worked with me
    -at Ericsson.  Paul devised the recursive Makefile scheme that
    -underlies this distribution and also spent countless hours with me
    -discussing object-oriented techniques for developing distributed
    -application frameworks.
    -
    -Finally, I'd also like to thank Todd L. Montgomery ,
    -fellow heavy metal head, for fulfilling his quest to get ACE to
    -compile with GCC!
    -
    -In conclusion, my goal is to see ACE continue to evolve and become a
    -more comprehensive, robust, and well-documented C++ class library that
    -is freely available to researchers and developers.  If you have any
    -improvements, suggestions, and or comments, I'd like to hear about it.
    -
    -        Thanks,
    -
    -                Douglas C. Schmidt
    -                schmidt@cs.wustl.edu
    diff --git a/TODO b/TODO
    deleted file mode 100644
    index 43d7d388bba..00000000000
    --- a/TODO
    +++ /dev/null
    @@ -1,272 +0,0 @@
    -============================================================================
    -                              ACE/TAO TODO List
    -============================================================================
    -
    -ACE and TAO
    ------------
    -For notes about what things need to be done for ACE and TAO, see their
    -respective release notes.
    -
    -
    -ACE/TAO Configuration Project
    ------------------------------
    -1.	Add support for Linux netdb reentrant functions  (LOW PRIORITY)
    -2.	Add support for Linux sysinfo().   (LOW PRIORITY)
    -3.	Change tests that need ACE_CONVERT_WARNINGS_TO_ERRORS and possibly
    -	others to use regular expression searches instead.    (MAYBE NOT)
    -4.	Process all of the remaining TODOs and FIXMEs in configure.in.
    -5.	Ensure the configure script will work for cross-compiled platforms.
    -6.	Make sure failed autoconf test programs in config.log failed for
    -	the "right" reasons, not due to some typo, for example.
    -7.	Figure out the best way to choose interface numbers for the libACE.la
    -	-version-info libtool flag.
    -8.	Integrate the remaining ACE subdirectories into the automake scheme.
    -9.	Verify that the new automake build scheme works, i.e. everything
    -	gets built correctly.
    -10.	Really test the configure script and automake build scheme; really
    -        "pound" on them.  (e.g. test and make sure everything works on
    -	as many platforms as possible).
    -11.	Write documentation on how to maintain the Autoconf and Automake files.
    -	HOWTOs/tutorials on how to use Auto{conf,make} and libtool would be
    -	good, too.
    -12.	Implement remaining configure script options (e.g. --enable-optimize,
    -	--with-orbix).
    -13.	Make sure all of the ACE feature macros are supported by the configure
    -	script.
    -14.	Modify ace/Makefile.am and tao/Makefile.am so that the template
    -	sources are always included in the distribution (though not
    -	necessarily the installation).
    -15.	Verify that the contents of the `AUTHORS' file is correct.
    -16.	Add some information to the `NEWS' file.
    -17.     Add subset dependencies to subsets.m4 for libACE_Token and
    -        libACE_Other.
    -18.     Add ACE subset library support to the ace-config script.
    -19.     Fix/check the minimum/maximum thread priority test.
    -20.     Verify that the asynchronous IO checks actually work properly.
    -21.     ACE_TEMPLATES_REQUIRE_SOURCE test fails for the wrong reasons
    -        Solaris' linker claims that the function Foo::Foo (int)
    -        doesn't exist.  Where is it getting function Foo::Foo (int)
    -        from?  It should be getting function Foo::Foo (int).
    -22.     Fix tests/Makefile.am to conditionally build some of the tests
    -        since some of the ACE components that are needed for the tests
    -        may not have been built.
    -23.     Repeat #22 for other binaries in ACE.
    -24.	Need to implement and/or verify tests for the following ACE macros:
    -
    -/* Define this if you don't want debug version ACE search for debug version
    -   DLLs first before looking for the DLL names specified. */
    -#undef ACE_DISABLE_DEBUG_DLL_CHECK
    -
    -+ACE_DONT_INCLUDE_ACE_SIGNAL_H
    -
    -+ACE_HAS_BROKEN_ACCEPT_ADDR
    -
    -/* Platform doesn't cast MAP_FAILED to a (void *). */
    -#undef ACE_HAS_BROKEN_MAP_FAILED
    -
    -/* Compiler/platform has the wrong prototype for t_error(), i.e.,
    -   t_error(char *) rather than t_error(const char *). */
    -#undef ACE_HAS_BROKEN_T_ERROR
    -
    -/* Platform has Fast-Light (FL) toolkit installed */
    -#undef ACE_HAS_FL
    -
    -+ACE_HAS_FORE_ATM_WS2
    -+ACE_HAS_FORE_ATM_XTI
    -+ACE_HAS_IP6
    -+ACE_HAS_LIMITED_SELECT
    -+ACE_HAS_PHARLAP_RT
    --ACE_HAS_PTHREAD_SIGMASK
    -+ACE_HAS_STD_TEMPLATE_SPECIALIZATION
    -+ACE_HAS_TK
    -+ACE_HAS_WINSOCK2_GQOS
    -+ACE_LACKS_CHAR_RIGHT_SHIFTS
    -+ACE_LACKS_CHAR_STAR_RIGHT_SHIFTS
    -+ACE_LACKS_NULL_PTHREAD_STATUS
    -+ACE_LACKS_PTHREAD_SIGMASK
    --ACE_LACKS_SCHED_H
    -+ACE_LACKS_TCP_NODELAY
    -+ACE_NEEDS_SCHED_H
    -+ACE_USES_HIGH_BAUD_RATES
    -+ACE_USES_OLD_TERMIOS_STRUCT
    -
    -
    -
    -/* Compiler enforces C++ One Definition Rule */
    -#undef ACE_HAS_ONE_DEFINITION_RULE
    -
    -/* Platform also has __TEXT defined */
    -#undef ACE_HAS_TEXT_MACRO_CONFLICT
    -
    -/* Platform has void (*)(...) prototype for pthread_key_create() destructor
    -   (e.g., LynxOS). */
    -#undef ACE_HAS_STDARG_THR_DEST
    -
    -/* Platform/compiler supports Win32 structural exceptions */
    -#undef ACE_HAS_WIN32_STRUCTURAL_EXCEPTIONS
    -
    -/* Platform, such as AIX4, needs to wrap #include of sys/socket.h with
    -   #undef/#define of __cplusplus. */
    -#undef ACE_HAS_AIX_BROKEN_SOCKET_HEADER
    -
    -/* Compiler/platform correctly calls init()/fini() for shared libraries */
    -#undef ACE_HAS_AUTOMATIC_INIT_FINI
    -
    -/* Compiler has integer overflow problem with bit-shift operations. */
    -#undef ACE_HAS_BROKEN_BITSHIFT
    -
    -/* Earlier versions of HP/UX C++ are damned... */
    -#undef ACE_HAS_BROKEN_HPUX_TEMPLATES
    -
    -/* FIXME: What does this do and what do we test for? */
    -#undef ACE_HAS_BROKEN_IF_HEADER
    -
    -/* TODO: WE HAVE A TEST FOR THIS, BUT WE NEED TO KNOW IF IT WORKS! */
    -/* Platform headers don't support  prototypes */
    -#undef ACE_HAS_BROKEN_MSG_H
    -
    -/* MSVC has trouble with defining STL containers for nested structs and
    -   classes */
    -#undef ACE_HAS_BROKEN_NESTED_TEMPLATES
    -
    -/* Platform has a bug with non-blocking connects (e.g., WinNT 4.0) */
    -#undef ACE_HAS_BROKEN_NON_BLOCKING_CONNECTS
    -
    -/* OS/compiler's header files are inconsistent with libC definition of
    -   rand_r(). */
    -#undef ACE_HAS_BROKEN_RANDR
    -
    -/* OS/Compiler's header files are not consistent with readv() definition. */
    -#undef ACE_HAS_BROKEN_READV
    -
    -/* OS header files have some problems with XTI (HP/UX 11). */
    -#undef ACE_HAS_BROKEN_XTI_MACROS
    -
    -/* Build ACE using the frigging PC DLL nonsense... */
    -#undef ACE_HAS_DLL
    -
    -/* Needed for pSoS -- FIXME: need a better description */
    -#undef ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_FILE
    -
    -/* Optimize ACE_Handle_Set::count_bits for select() operations (common case) */
    -#undef ACE_HAS_HANDLE_SET_OPTIMIZED_FOR_SELECT
    -
    -/* Platform supports IP multicast */
    -#undef ACE_HAS_IP_MULTICAST
    -
    -/* Platform supports IPv6 */
    -#undef ACE_HAS_IP6
    -
    -/* Causes the ACE_Object_Manager instance to be created in
    -   main (int, char *[]), instead of as a static (global) instance. */
    -#undef ACE_HAS_NONSTATIC_OBJECT_MANAGER
    -
    -/* Compiler/platform has "big" fd_set, i.e. large number of bits set
    -   in fd_set passed back from select(). */
    -#undef ACE_HAS_BIG_FD_SET
    -
    -/* Platform supports MT safe mktime() call (do any of them?) */
    -#undef ACE_HAS_MT_SAFE_MKTIME
    -
    -/* Sockets may be called in multi-threaded programs */
    -#undef ACE_HAS_MT_SAFE_SOCKETS
    -
    -/* Use the semaphore implementation of ACE_Message_Queue rather than the
    -   emulated condition variable (NT and VxWorks). */
    -#undef ACE_HAS_OPTIMIZED_MESSAGE_QUEUE
    -
    -/* Platform has Orbix CORBA implementation */
    -#undef ACE_HAS_ORBIX
    -
    -/* Purify'ing.  Defined on command line. */
    -#undef ACE_HAS_PURIFY
    -
    -/* Quantify'ing.  Defined on command line. */
    -#undef ACE_HAS_QUANTIFY
    -
    -/* Platform will recurse infinitely on thread exits from TSS cleanup routines
    -   (e.g., AIX) */
    -#undef ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS
    -
    -/* Compiler typedefs wchar with char. */
    -#undef ACE_HAS_WCHAR_TYPEDEFS_CHAR
    -
    -/* For Win32: Use Select_Reactor as default implementation of Reactor instead
    -   of WFMO_Reactor. */
    -#undef ACE_USE_SELECT_REACTOR_FOR_REACTOR_IMPL
    -
    -/* Platform has bug with sigismember() (HP/UX 11). */
    -#undef ACE_HAS_SIGISMEMBER_BUG
    -
    -/* Compiler requires extern "C" functions for signals. */
    -#undef ACE_HAS_SIG_C_FUNC
    -
    -/* Use the STRICT compilation mode on Win32. */
    -#undef ACE_HAS_STRICT
    -
    -/* Compiler/platform has strange hostent API for socket *_r() calls */
    -#undef ACE_HAS_STRUCT_NETDB_DATA
    -
    -/* HP/UX has an undefined syscall for GETRUSAGE... */
    -#undef ACE_HAS_SYSCALL_GETRUSAGE
    -
    -/* Platform allows multiple threads to call accept() on the same port
    -   (e.g., WinNT). */
    -#undef ACE_HAS_THREAD_SAFE_ACCEPT
    -
    -/* The pthread_keycreate() routine *must* take extern C functions. */
    -#undef ACE_HAS_THR_C_DEST
    -
    -/* The pthread_create() routine *must* take extern C functions. */
    -#undef ACE_HAS_THR_C_FUNC
    -
    -/* Platform/compiler supports UNICODE */
    -#undef ACE_HAS_UNICODE
    -
    -/* The Win32 platform supports WinSock 2.0 */
    -#undef ACE_HAS_WINSOCK2
    -
    -/* No system support for replacing any previous mappings. */
    -#undef ACE_LACKS_AUTO_MMAP_REPLACEMENT
    -
    -/* pthread_cond_timedwait does *not* reset the time argument when
    -   the lock is acquired. */
    -#undef ACE_LACKS_COND_TIMEDWAIT_RESET
    -
    -/* Platform forgot const in cond_timewait (e.g., HP/UX). */
    -#undef ACE_LACKS_CONST_TIMESPEC_PTR
    -
    -/* Platform lacks SYSV message queue prototypes */
    -#undef ACE_LACKS_SYSV_MSQ_PROTOS
    -
    -/* Required by platforms with small default stacks. */
    -#undef ACE_NEEDS_HUGE_THREAD_STACKSIZE
    -
    -///// FIX THIS TEST /////
    -/* Platform needs regexpr.h for regular expression support */
    -#undef ACE_NEEDS_REGEXPR_H
    -
    -///// FIX THIS TEST /////
    -/* Platform needs to #include  to get thread scheduling defs. */
    -#undef ACE_NEEDS_SCHED_H
    -
    -/* OS has LWPs, and when the priority of a bound thread is set, then the LWP
    -   priority must be set also. */
    -#undef ACE_NEEDS_LWP_PRIO_SET
    -
    -/* Platform redefines the t_... names (UnixWare) */
    -#undef ACE_REDEFINES_XTI_FUNCTIONS
    -
    -/* Compiler's template mechanism must use a pragma.  This is used for AIX's
    -   C++ compiler. */
    -#undef ACE_TEMPLATES_REQUIRE_PRAGMA
    -
    -/* Platform uses assembly symbols instead of C symbols in dlsym() */
    -#undef ACE_USES_ASM_SYMBOL_IN_DLSYM
    -
    -/* When linking MFC as a static library is desired */
    -#undef ACE_USES_STATIC_MFC
    -
    -/* A parameter list indicating the version of WinSock (e.g., "1, 1" is
    -   version 1.1). */
    -#undef ACE_WSOCK_VERSION
    diff --git a/VERSION b/VERSION
    deleted file mode 100644
    index 3790d3e8a94..00000000000
    --- a/VERSION
    +++ /dev/null
    @@ -1,11 +0,0 @@
    -This is ACE version 5.0.6, released Mon Oct 11 10:09:56 1999.
    -
    -If you have any problems with or questions about ACE, please send
    -email to the ACE mailing list (ace-users@cs.wustl.edu), using the form
    -found in the file PROBLEM-REPORT-FORM.  To ensure that you see responses,
    -please do one of the following:
    -
    -    1) Subscribe to the ace-users mail list, by sending email with
    -       contents "subscribe ace-users" to majordomo@cs.wustl.edu.
    -
    -    2) Or, monitor the comp.soft-sys.ace newsgroup for responses.
    diff --git a/WindozeCE/ACEApp.cpp b/WindozeCE/ACEApp.cpp
    deleted file mode 100644
    index 3d7ab6722ca..00000000000
    --- a/WindozeCE/ACEApp.cpp
    +++ /dev/null
    @@ -1,17 +0,0 @@
    -// $Id$
    -
    -#include "stdafx.h"
    -#include "ace/OS.h"
    -#include "ACEApp.h"
    -
    -#if 0
    -int
    -main (int argc, ASYS_TCHAR *argv[])
    -{
    -  Sleep (500);
    -  for (int i = 0; i < argc; i++, Sleep (700))
    -    ACE_DEBUG ((LM_DEBUG, TEXT ("The %d command arg is \"%s\""),
    -                i, argv [i]));
    -  return 0;
    -}
    -#endif
    diff --git a/WindozeCE/ACEApp.h b/WindozeCE/ACEApp.h
    deleted file mode 100644
    index 6d5107dedbf..00000000000
    --- a/WindozeCE/ACEApp.h
    +++ /dev/null
    @@ -1,14 +0,0 @@
    -// $Id$
    -
    -#if !defined (ACE_APP_H)
    -#define ACE_APP_H
    -
    -#if !defined (NC_ACE_NOTIRY)
    -#define NC_ACE_NOTIFY 2
    -#define INC_ACE_LOGMSG 0
    -#endif
    -
    -#endif /* ACE_APP_H */
    -
    -  
    -
    diff --git a/WindozeCE/README b/WindozeCE/README
    deleted file mode 100644
    index 9d5d184e3db..00000000000
    --- a/WindozeCE/README
    +++ /dev/null
    @@ -1,35 +0,0 @@
    -        CE specific files, may not run on 95/NT.
    -
    -What is this directory:
    -
    -        This directory contains a collection of files for a template
    -        windows program.  It is written with Microsoft's MFC classes.
    -        They also demonstrate a simple method to pass ACE_Log_Msg's
    -        output to a window program with PostMessage.
    -
    -How to use this directory:
    -
    -        I was planning to make this a DLL so that we can integrate CE
    -        project files with the current Win32 project files.  However,
    -        the CE toolkit still seems very rudimentary and, certainly, I
    -        am not familiar with it.  
    -
    -        To use these files, simply include all .cpp and .rc files in
    -        your original text-based program.  Compile them with "using
    -        Shared MFC library" set (important.)
    -
    -Running the programs:
    -        
    -        Start the program.  Key in command line parameters in the edit
    -        box and tap on start button.  The button displays "Running.."
    -        when the program is executing and "Stopped" after the ACE
    -        program has finished execution.
    -
    -Future works:
    -     
    -        * We need to allow scrollable output.
    -
    -        * Make this a DLL?
    -
    -        * Get the command line automatically.  (This may need to
    -          rewrite the program using native Win32 APIs.)
    diff --git a/WindozeCE/StdAfx.cpp b/WindozeCE/StdAfx.cpp
    deleted file mode 100644
    index ee3447570e6..00000000000
    --- a/WindozeCE/StdAfx.cpp
    +++ /dev/null
    @@ -1,7 +0,0 @@
    -// $Id$
    -// stdafx.cpp : source file that includes just the standard includes
    -//	WindozeCE.pch will be the pre-compiled header
    -//	stdafx.obj will contain the pre-compiled type information
    -
    -#include "stdafx.h"
    -
    diff --git a/WindozeCE/StdAfx.h b/WindozeCE/StdAfx.h
    deleted file mode 100644
    index cb29f2a1b1f..00000000000
    --- a/WindozeCE/StdAfx.h
    +++ /dev/null
    @@ -1,26 +0,0 @@
    -// $Id$
    -// stdafx.h : include file for standard system include files,
    -//  or project specific include files that are used frequently, but
    -//      are changed infrequently
    -//
    -
    -#if !defined(AFX_STDAFX_H__37544C6D_E3BC_11D1_968E_0040054CF0F0__INCLUDED_)
    -#define AFX_STDAFX_H__37544C6D_E3BC_11D1_968E_0040054CF0F0__INCLUDED_
    -
    -#if _MSC_VER >= 1000
    -#pragma once
    -#endif // _MSC_VER >= 1000
    -
    -#define VC_EXTRALEAN		// Exclude rarely-used stuff from Windows headers
    -
    -#include          // MFC core and standard components
    -#include          // MFC extensions
    -#ifndef _AFX_NO_AFXCMN_SUPPORT
    -#include 			// MFC support for Windows Common Controls
    -#endif // _AFX_NO_AFXCMN_SUPPORT
    -
    -
    -//{{AFX_INSERT_LOCATION}}
    -// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
    -
    -#endif // !defined(AFX_STDAFX_H__37544C6D_E3BC_11D1_968E_0040054CF0F0__INCLUDED_)
    diff --git a/WindozeCE/WindozeCE.aps b/WindozeCE/WindozeCE.aps
    deleted file mode 100644
    index 0f2688cf3cd..00000000000
    Binary files a/WindozeCE/WindozeCE.aps and /dev/null differ
    diff --git a/WindozeCE/WindozeCE.clw b/WindozeCE/WindozeCE.clw
    deleted file mode 100644
    index eca2fb8b2d8..00000000000
    --- a/WindozeCE/WindozeCE.clw
    +++ /dev/null
    @@ -1,41 +0,0 @@
    -; CLW file contains information for the MFC ClassWizard
    -
    -[General Info]
    -Version=1
    -LastClass=CWindozeCEDlg
    -LastTemplate=CDialog
    -NewFileInclude1=#include "stdafx.h"
    -NewFileInclude2=#include "WindozeCE.h"
    -
    -ClassCount=2
    -Class1=CWindozeCEApp
    -Class2=CWindozeCEDlg
    -
    -ResourceCount=3
    -Resource2=IDR_MAINFRAME
    -Resource3=IDD_WINDOZECE_DIALOG
    -
    -[CLS:CWindozeCEApp]
    -Type=0
    -HeaderFile=WindozeCE.h
    -ImplementationFile=WindozeCE.cpp
    -Filter=N
    -
    -[CLS:CWindozeCEDlg]
    -Type=0
    -HeaderFile=WindozeCEDlg.h
    -ImplementationFile=WindozeCEDlg.cpp
    -Filter=D
    -BaseClass=CDialog
    -VirtualFilter=dWC
    -LastObject=IDC_RUN
    -
    -
    -[DLG:IDD_WINDOZECE_DIALOG]
    -Type=1
    -Class=CWindozeCEDlg
    -ControlCount=3
    -Control1=IDC_PROGRAM_OUTPUT,edit,1352730692
    -Control2=IDC_RUN,button,1342242817
    -Control3=IDC_PROGRAM_ARGUMENTS,edit,1350631552
    -
    diff --git a/WindozeCE/WindozeCE.cpp b/WindozeCE/WindozeCE.cpp
    deleted file mode 100644
    index a08128041f4..00000000000
    --- a/WindozeCE/WindozeCE.cpp
    +++ /dev/null
    @@ -1,70 +0,0 @@
    -// $Id$
    -// WindozeCE.cpp : Defines the class behaviors for the application.
    -//
    -
    -#include "stdafx.h"
    -#include "WindozeCE.h"
    -#include "WindozeCEDlg.h"
    -
    -#ifdef _DEBUG
    -#define new DEBUG_NEW
    -#undef THIS_FILE
    -static char THIS_FILE[] = __FILE__;
    -#endif
    -
    -/////////////////////////////////////////////////////////////////////////////
    -// CWindozeCEApp
    -
    -BEGIN_MESSAGE_MAP(CWindozeCEApp, CWinApp)
    -	//{{AFX_MSG_MAP(CWindozeCEApp)
    -		// NOTE - the ClassWizard will add and remove mapping macros here.
    -		//    DO NOT EDIT what you see in these blocks of generated code!
    -	//}}AFX_MSG
    -END_MESSAGE_MAP()
    -
    -/////////////////////////////////////////////////////////////////////////////
    -// CWindozeCEApp construction
    -
    -CWindozeCEApp::CWindozeCEApp(LPCTSTR lpszAppName)
    -	: CWinApp(lpszAppName)
    -{
    -	// TODO: add construction code here,
    -	// Place all significant initialization in InitInstance
    -}
    -
    -/////////////////////////////////////////////////////////////////////////////
    -// The one and only CWindozeCEApp object
    -
    -// WCE MFC apps require the application name to be specified in the CWinApp 
    -// constructor. A help contents filename may also be specified.
    -
    -CWindozeCEApp theApp(_T("WindozeCE"));
    -
    -/////////////////////////////////////////////////////////////////////////////
    -// CWindozeCEApp initialization
    -
    -BOOL CWindozeCEApp::InitInstance()
    -{
    -	// Standard initialization
    -	// If you are not using these features and wish to reduce the size
    -	//  of your final executable, you should remove from the following
    -	//  the specific initialization routines you do not need.
    -
    -	CWindozeCEDlg dlg;
    -	m_pMainWnd = &dlg;
    -	int nResponse = dlg.DoModal();
    -	if (nResponse == IDOK)
    -	{
    -		// TODO: Place code here to handle when the dialog is
    -		//  dismissed with OK
    -	}
    -	else if (nResponse == IDCANCEL)
    -	{
    -		// TODO: Place code here to handle when the dialog is
    -		//  dismissed with Cancel
    -	}
    -
    -	// Since the dialog has been closed, return FALSE so that we exit the
    -	//  application, rather than start the application's message pump.
    -	return FALSE;
    -}
    diff --git a/WindozeCE/WindozeCE.dsp b/WindozeCE/WindozeCE.dsp
    deleted file mode 100644
    index c0008c5bc50..00000000000
    --- a/WindozeCE/WindozeCE.dsp
    +++ /dev/null
    @@ -1,377 +0,0 @@
    -# Microsoft Developer Studio Project File - Name="WindozeCE" - Package Owner=<4>
    -# Microsoft Developer Studio Generated Build File, Format Version 6.00
    -# ** DO NOT EDIT **
    -
    -# TARGTYPE "Win32 (WCE x86em) Application" 0x0b01
    -# TARGTYPE "Win32 (WCE MIPS) Application" 0x0a01
    -# TARGTYPE "Win32 (WCE SH) Application" 0x0901
    -
    -CFG=WindozeCE - Win32 (WCE MIPS) Debug
    -!MESSAGE This is not a valid makefile. To build this project using NMAKE,
    -!MESSAGE use the Export Makefile command and run
    -!MESSAGE 
    -!MESSAGE NMAKE /f "WindozeCE.mak".
    -!MESSAGE 
    -!MESSAGE You can specify a configuration when running NMAKE
    -!MESSAGE by defining the macro CFG on the command line. For example:
    -!MESSAGE 
    -!MESSAGE NMAKE /f "WindozeCE.mak" CFG="WindozeCE - Win32 (WCE MIPS) Debug"
    -!MESSAGE 
    -!MESSAGE Possible choices for configuration are:
    -!MESSAGE 
    -!MESSAGE "WindozeCE - Win32 (WCE MIPS) Release" (based on\
    - "Win32 (WCE MIPS) Application")
    -!MESSAGE "WindozeCE - Win32 (WCE MIPS) Debug" (based on\
    - "Win32 (WCE MIPS) Application")
    -!MESSAGE "WindozeCE - Win32 (WCE x86em) Release" (based on\
    - "Win32 (WCE x86em) Application")
    -!MESSAGE "WindozeCE - Win32 (WCE x86em) Debug" (based on\
    - "Win32 (WCE x86em) Application")
    -!MESSAGE "WindozeCE - Win32 (WCE SH) Release" (based on\
    - "Win32 (WCE SH) Application")
    -!MESSAGE "WindozeCE - Win32 (WCE SH) Debug" (based on\
    - "Win32 (WCE SH) Application")
    -!MESSAGE 
    -
    -# Begin Project
    -# PROP Scc_ProjName ""
    -# PROP Scc_LocalPath ""
    -# PROP WCE_Configuration "H/PC Ver. 2.00"
    -
    -!IF  "$(CFG)" == "WindozeCE - Win32 (WCE MIPS) Release"
    -
    -# PROP BASE Use_MFC 2
    -# PROP BASE Use_Debug_Libraries 0
    -# PROP BASE Output_Dir "WMIPSRel"
    -# PROP BASE Intermediate_Dir "WMIPSRel"
    -# PROP BASE Target_Dir ""
    -# PROP Use_MFC 2
    -# PROP Use_Debug_Libraries 0
    -# PROP Output_Dir "WMIPSRel"
    -# PROP Intermediate_Dir "WMIPSRel"
    -# PROP Target_Dir ""
    -CPP=clmips.exe
    -# ADD BASE CPP /nologo /MT /W3 /GX- /O2 /D _WIN32_WCE=$(CEVersion) /D "$(CEConfigName)" /D "NDEBUG" /D "MIPS" /D "_MIPS_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_AFXDLL" /Yu"stdafx.h" /QMRWCE  /c
    -# ADD CPP /nologo /MT /W3 /GX- /O2 /D _WIN32_WCE=$(CEVersion) /D "$(CEConfigName)" /D "NDEBUG" /D "MIPS" /D "_MIPS_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_AFXDLL" /Yu"stdafx.h" /QMRWCE  /c
    -RSC=rc.exe
    -# ADD BASE RSC /l 0x409 /r /d "MIPS" /d "_MIPS_" /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CEConfigName)" /d "UNICODE" /d "NDEBUG" /d "_AFXDLL"
    -# ADD RSC /l 0x409 /r /d "MIPS" /d "_MIPS_" /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CEConfigName)" /d "UNICODE" /d "NDEBUG" /d "_AFXDLL"
    -MTL=midl.exe
    -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
    -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
    -BSC32=bscmake.exe
    -# ADD BASE BSC32 /nologo
    -# ADD BSC32 /nologo
    -LINK32=link.exe
    -# ADD BASE LINK32 /nologo /entry:"wWinMainCRTStartup" /machine:MIPS /subsystem:$(CESubsystem)
    -# SUBTRACT BASE LINK32 /pdb:none /nodefaultlib
    -# ADD LINK32 /nologo /entry:"wWinMainCRTStartup" /machine:MIPS /subsystem:$(CESubsystem)
    -# SUBTRACT LINK32 /pdb:none /nodefaultlib
    -PFILE=pfile.exe
    -# ADD BASE PFILE COPY
    -# ADD PFILE COPY
    -
    -!ELSEIF  "$(CFG)" == "WindozeCE - Win32 (WCE MIPS) Debug"
    -
    -# PROP BASE Use_MFC 2
    -# PROP BASE Use_Debug_Libraries 1
    -# PROP BASE Output_Dir "WMIPSDbg"
    -# PROP BASE Intermediate_Dir "WMIPSDbg"
    -# PROP BASE Target_Dir ""
    -# PROP Use_MFC 2
    -# PROP Use_Debug_Libraries 1
    -# PROP Output_Dir "WMIPSDbg"
    -# PROP Intermediate_Dir "WMIPSDbg"
    -# PROP Target_Dir ""
    -CPP=clmips.exe
    -# ADD BASE CPP /nologo /MTd /W3 /GX- /Zi /Od /D _WIN32_WCE=$(CEVersion) /D "$(CEConfigName)" /D "DEBUG" /D "MIPS" /D "_MIPS_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_AFXDLL" /Yu"stdafx.h" /QMRWCE  /c
    -# ADD CPP /nologo /MTd /W3 /GX- /Zi /Od /D _WIN32_WCE=$(CEVersion) /D "$(CEConfigName)" /D "DEBUG" /D "MIPS" /D "_MIPS_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_AFXDLL" /Yu"stdafx.h" /QMRWCE  /c
    -RSC=rc.exe
    -# ADD BASE RSC /l 0x409 /r /d "MIPS" /d "_MIPS_" /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CEConfigName)" /d "UNICODE" /d "DEBUG" /d "_AFXDLL"
    -# ADD RSC /l 0x409 /r /d "MIPS" /d "_MIPS_" /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CEConfigName)" /d "UNICODE" /d "DEBUG" /d "_AFXDLL"
    -MTL=midl.exe
    -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
    -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
    -BSC32=bscmake.exe
    -# ADD BASE BSC32 /nologo
    -# ADD BSC32 /nologo
    -LINK32=link.exe
    -# ADD BASE LINK32 /nologo /entry:"wWinMainCRTStartup" /debug /machine:MIPS /subsystem:$(CESubsystem)
    -# SUBTRACT BASE LINK32 /pdb:none /nodefaultlib
    -# ADD LINK32 /nologo /entry:"wWinMainCRTStartup" /debug /machine:MIPS /subsystem:$(CESubsystem)
    -# SUBTRACT LINK32 /pdb:none /nodefaultlib
    -PFILE=pfile.exe
    -# ADD BASE PFILE COPY
    -# ADD PFILE COPY
    -
    -!ELSEIF  "$(CFG)" == "WindozeCE - Win32 (WCE x86em) Release"
    -
    -# PROP BASE Use_MFC 2
    -# PROP BASE Use_Debug_Libraries 0
    -# PROP BASE Output_Dir "x86emRel"
    -# PROP BASE Intermediate_Dir "x86emRel"
    -# PROP BASE Target_Dir ""
    -# PROP Use_MFC 2
    -# PROP Use_Debug_Libraries 0
    -# PROP Output_Dir "x86emRel"
    -# PROP Intermediate_Dir "x86emRel"
    -# PROP Target_Dir ""
    -CPP=cl.exe
    -# ADD BASE CPP /nologo /MT /W3 /GX- /O2 /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "STRICT" /D _WIN32_WCE=$(CEVersion) /D "$(CEConfigName)" /D "_WIN32_WCE_EMULATION" /D "INTERNATIONAL" /D "USA" /D "INTLMSG_CODEPAGE" /D "NDEBUG" /D "x86" /D "i486" /D "_x86_" /D "_AFXDLL" /Yu"stdafx.h" /c
    -# ADD CPP /nologo /MT /W3 /GX- /O2 /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "STRICT" /D _WIN32_WCE=$(CEVersion) /D "$(CEConfigName)" /D "_WIN32_WCE_EMULATION" /D "INTERNATIONAL" /D "USA" /D "INTLMSG_CODEPAGE" /D "NDEBUG" /D "x86" /D "i486" /D "_x86_" /D "_AFXDLL" /Yu"stdafx.h" /c
    -RSC=rc.exe
    -# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "WIN32" /d "STRICT" /d _WIN32_WCE=$(CEVersion) /d "$(CEConfigName)" /d "_WIN32_WCE_EMULATION" /d "INTERNATIONAL" /d "USA" /d "INTLMSG_CODEPAGE" /d "NDEBUG" /d "_AFXDLL"
    -# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "WIN32" /d "STRICT" /d _WIN32_WCE=$(CEVersion) /d "$(CEConfigName)" /d "_WIN32_WCE_EMULATION" /d "INTERNATIONAL" /d "USA" /d "INTLMSG_CODEPAGE" /d "NDEBUG" /d "_AFXDLL"
    -MTL=midl.exe
    -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
    -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
    -BSC32=bscmake.exe
    -# ADD BASE BSC32 /nologo
    -# ADD BSC32 /nologo
    -LINK32=link.exe
    -# ADD BASE LINK32 /nologo /entry:"wWinMainCRTStartup" /subsystem:windows /machine:I386 /windowsce:emulation
    -# ADD LINK32 /nologo /entry:"wWinMainCRTStartup" /subsystem:windows /machine:I386 /windowsce:emulation
    -EMPFILE=empfile.exe
    -# ADD BASE EMPFILE -COPY
    -# ADD EMPFILE -COPY
    -
    -!ELSEIF  "$(CFG)" == "WindozeCE - Win32 (WCE x86em) Debug"
    -
    -# PROP BASE Use_MFC 2
    -# PROP BASE Use_Debug_Libraries 1
    -# PROP BASE Output_Dir "x86emDbg"
    -# PROP BASE Intermediate_Dir "x86emDbg"
    -# PROP BASE Target_Dir ""
    -# PROP Use_MFC 2
    -# PROP Use_Debug_Libraries 1
    -# PROP Output_Dir "x86emDbg"
    -# PROP Intermediate_Dir "x86emDbg"
    -# PROP Target_Dir ""
    -CPP=cl.exe
    -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX- /Zi /Od /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "STRICT" /D _WIN32_WCE=$(CEVersion) /D "$(CEConfigName)" /D "_WIN32_WCE_EMULATION" /D "INTERNATIONAL" /D "USA" /D "INTLMSG_CODEPAGE" /D "_DEBUG" /D "x86" /D "i486" /D "_x86_" /D "_AFXDLL" /Yu"stdafx.h" /c
    -# ADD CPP /nologo /MTd /W3 /Gm /GX- /Zi /Od /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "STRICT" /D _WIN32_WCE=$(CEVersion) /D "$(CEConfigName)" /D "_WIN32_WCE_EMULATION" /D "INTERNATIONAL" /D "USA" /D "INTLMSG_CODEPAGE" /D "_DEBUG" /D "x86" /D "i486" /D "_x86_" /D "_AFXDLL" /Yu"stdafx.h" /c
    -RSC=rc.exe
    -# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "WIN32" /d "STRICT" /d _WIN32_WCE=$(CEVersion) /d "$(CEConfigName)" /d "_WIN32_WCE_EMULATION" /d "INTERNATIONAL" /d "USA" /d "INTLMSG_CODEPAGE" /d "_DEBUG" /d "x86" /d "i486" /d "_x86_" /d "_AFXDLL"
    -# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "WIN32" /d "STRICT" /d _WIN32_WCE=$(CEVersion) /d "$(CEConfigName)" /d "_WIN32_WCE_EMULATION" /d "INTERNATIONAL" /d "USA" /d "INTLMSG_CODEPAGE" /d "_DEBUG" /d "x86" /d "i486" /d "_x86_" /d "_AFXDLL"
    -MTL=midl.exe
    -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
    -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
    -BSC32=bscmake.exe
    -# ADD BASE BSC32 /nologo
    -# ADD BSC32 /nologo
    -LINK32=link.exe
    -# ADD BASE LINK32 /nologo /entry:"wWinMainCRTStartup" /subsystem:windows /debug /machine:I386 /windowsce:emulation
    -# ADD LINK32 /nologo /entry:"wWinMainCRTStartup" /subsystem:windows /debug /machine:I386 /windowsce:emulation
    -EMPFILE=empfile.exe
    -# ADD BASE EMPFILE -COPY
    -# ADD EMPFILE -COPY
    -
    -!ELSEIF  "$(CFG)" == "WindozeCE - Win32 (WCE SH) Release"
    -
    -# PROP BASE Use_MFC 2
    -# PROP BASE Use_Debug_Libraries 0
    -# PROP BASE Output_Dir "WCESHRel"
    -# PROP BASE Intermediate_Dir "WCESHRel"
    -# PROP BASE Target_Dir ""
    -# PROP Use_MFC 2
    -# PROP Use_Debug_Libraries 0
    -# PROP Output_Dir "WCESHRel"
    -# PROP Intermediate_Dir "WCESHRel"
    -# PROP Target_Dir ""
    -CPP=shcl.exe
    -# ADD BASE CPP /nologo /MT /W3 /GX- /O2 /D _WIN32_WCE=$(CEVersion) /D "$(CEConfigName)" /D "NDEBUG" /D "SHx" /D "SH3" /D "_SH3_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_AFXDLL" /Yu"stdafx.h" /c
    -# ADD CPP /nologo /MT /W3 /GX- /O2 /D _WIN32_WCE=$(CEVersion) /D "$(CEConfigName)" /D "NDEBUG" /D "SHx" /D "SH3" /D "_SH3_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_AFXDLL" /Yu"stdafx.h" /c
    -RSC=rc.exe
    -# ADD BASE RSC /l 0x409 /r /d "SHx" /d "SH3" /d "_SH3_" /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CEConfigName)" /d "UNICODE" /d "NDEBUG" /d "_AFXDLL"
    -# ADD RSC /l 0x409 /r /d "SHx" /d "SH3" /d "_SH3_" /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CEConfigName)" /d "UNICODE" /d "NDEBUG" /d "_AFXDLL"
    -MTL=midl.exe
    -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
    -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
    -BSC32=bscmake.exe
    -# ADD BASE BSC32 /nologo
    -# ADD BSC32 /nologo
    -LINK32=link.exe
    -# ADD BASE LINK32 /nologo /entry:"wWinMainCRTStartup" /machine:SH3 /subsystem:$(CESubsystem)
    -# SUBTRACT BASE LINK32 /pdb:none /nodefaultlib
    -# ADD LINK32 /nologo /entry:"wWinMainCRTStartup" /machine:SH3 /subsystem:$(CESubsystem)
    -# SUBTRACT LINK32 /pdb:none /nodefaultlib
    -PFILE=pfile.exe
    -# ADD BASE PFILE COPY
    -# ADD PFILE COPY
    -
    -!ELSEIF  "$(CFG)" == "WindozeCE - Win32 (WCE SH) Debug"
    -
    -# PROP BASE Use_MFC 2
    -# PROP BASE Use_Debug_Libraries 1
    -# PROP BASE Output_Dir "WCESHDbg"
    -# PROP BASE Intermediate_Dir "WCESHDbg"
    -# PROP BASE Target_Dir ""
    -# PROP Use_MFC 2
    -# PROP Use_Debug_Libraries 1
    -# PROP Output_Dir "WCESHDbg"
    -# PROP Intermediate_Dir "WCESHDbg"
    -# PROP Target_Dir ""
    -CPP=shcl.exe
    -# ADD BASE CPP /nologo /MTd /W3 /GX- /Zi /Od /D _WIN32_WCE=$(CEVersion) /D "$(CEConfigName)" /D "DEBUG" /D "SHx" /D "SH3" /D "_SH3_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_AFXDLL" /Yu"stdafx.h" /c
    -# ADD CPP /nologo /MTd /W3 /GX- /Zi /Od /D _WIN32_WCE=$(CEVersion) /D "$(CEConfigName)" /D "DEBUG" /D "SHx" /D "SH3" /D "_SH3_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_AFXDLL" /Yu"stdafx.h" /c
    -RSC=rc.exe
    -# ADD BASE RSC /l 0x409 /r /d "SHx" /d "SH3" /d "_SH3_" /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CEConfigName)" /d "UNICODE" /d "DEBUG" /d "_AFXDLL"
    -# ADD RSC /l 0x409 /r /d "SHx" /d "SH3" /d "_SH3_" /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CEConfigName)" /d "UNICODE" /d "DEBUG" /d "_AFXDLL"
    -MTL=midl.exe
    -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
    -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
    -BSC32=bscmake.exe
    -# ADD BASE BSC32 /nologo
    -# ADD BSC32 /nologo
    -LINK32=link.exe
    -# ADD BASE LINK32 /nologo /entry:"wWinMainCRTStartup" /debug /machine:SH3 /subsystem:$(CESubsystem)
    -# SUBTRACT BASE LINK32 /pdb:none /nodefaultlib
    -# ADD LINK32 /nologo /entry:"wWinMainCRTStartup" /debug /machine:SH3 /subsystem:$(CESubsystem)
    -# SUBTRACT LINK32 /pdb:none /nodefaultlib
    -PFILE=pfile.exe
    -# ADD BASE PFILE COPY
    -# ADD PFILE COPY
    -
    -!ENDIF 
    -
    -# Begin Target
    -
    -# Name "WindozeCE - Win32 (WCE MIPS) Release"
    -# Name "WindozeCE - Win32 (WCE MIPS) Debug"
    -# Name "WindozeCE - Win32 (WCE x86em) Release"
    -# Name "WindozeCE - Win32 (WCE x86em) Debug"
    -# Name "WindozeCE - Win32 (WCE SH) Release"
    -# Name "WindozeCE - Win32 (WCE SH) Debug"
    -# Begin Group "Source Files"
    -
    -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
    -# Begin Source File
    -
    -SOURCE=.\StdAfx.cpp
    -
    -!IF  "$(CFG)" == "WindozeCE - Win32 (WCE MIPS) Release"
    -
    -# ADD CPP /Yc"stdafx.h"
    -
    -!ELSEIF  "$(CFG)" == "WindozeCE - Win32 (WCE MIPS) Debug"
    -
    -# ADD CPP /Yc"stdafx.h"
    -
    -!ELSEIF  "$(CFG)" == "WindozeCE - Win32 (WCE x86em) Release"
    -
    -# ADD CPP /Yc"stdafx.h"
    -
    -!ELSEIF  "$(CFG)" == "WindozeCE - Win32 (WCE x86em) Debug"
    -
    -# ADD CPP /Yc"stdafx.h"
    -
    -!ELSEIF  "$(CFG)" == "WindozeCE - Win32 (WCE SH) Release"
    -
    -# ADD CPP /Yc"stdafx.h"
    -
    -!ELSEIF  "$(CFG)" == "WindozeCE - Win32 (WCE SH) Debug"
    -
    -# ADD CPP /Yc"stdafx.h"
    -
    -!ENDIF 
    -
    -# End Source File
    -# Begin Source File
    -
    -SOURCE=.\WindozeCE.cpp
    -
    -!IF  "$(CFG)" == "WindozeCE - Win32 (WCE MIPS) Release"
    -
    -!ELSEIF  "$(CFG)" == "WindozeCE - Win32 (WCE MIPS) Debug"
    -
    -!ELSEIF  "$(CFG)" == "WindozeCE - Win32 (WCE x86em) Release"
    -
    -!ELSEIF  "$(CFG)" == "WindozeCE - Win32 (WCE x86em) Debug"
    -
    -!ELSEIF  "$(CFG)" == "WindozeCE - Win32 (WCE SH) Release"
    -
    -!ELSEIF  "$(CFG)" == "WindozeCE - Win32 (WCE SH) Debug"
    -
    -!ENDIF 
    -
    -# End Source File
    -# Begin Source File
    -
    -SOURCE=.\WindozeCE.rc
    -
    -!IF  "$(CFG)" == "WindozeCE - Win32 (WCE MIPS) Release"
    -
    -!ELSEIF  "$(CFG)" == "WindozeCE - Win32 (WCE MIPS) Debug"
    -
    -!ELSEIF  "$(CFG)" == "WindozeCE - Win32 (WCE x86em) Release"
    -
    -!ELSEIF  "$(CFG)" == "WindozeCE - Win32 (WCE x86em) Debug"
    -
    -!ELSEIF  "$(CFG)" == "WindozeCE - Win32 (WCE SH) Release"
    -
    -!ELSEIF  "$(CFG)" == "WindozeCE - Win32 (WCE SH) Debug"
    -
    -!ENDIF 
    -
    -# End Source File
    -# Begin Source File
    -
    -SOURCE=.\WindozeCEDlg.cpp
    -
    -!IF  "$(CFG)" == "WindozeCE - Win32 (WCE MIPS) Release"
    -
    -!ELSEIF  "$(CFG)" == "WindozeCE - Win32 (WCE MIPS) Debug"
    -
    -!ELSEIF  "$(CFG)" == "WindozeCE - Win32 (WCE x86em) Release"
    -
    -!ELSEIF  "$(CFG)" == "WindozeCE - Win32 (WCE x86em) Debug"
    -
    -!ELSEIF  "$(CFG)" == "WindozeCE - Win32 (WCE SH) Release"
    -
    -!ELSEIF  "$(CFG)" == "WindozeCE - Win32 (WCE SH) Debug"
    -
    -!ENDIF 
    -
    -# End Source File
    -# End Group
    -# Begin Group "Header Files"
    -
    -# PROP Default_Filter "h;hpp;hxx;hm;inl"
    -# Begin Source File
    -
    -SOURCE=.\Resource.h
    -# End Source File
    -# Begin Source File
    -
    -SOURCE=.\StdAfx.h
    -# End Source File
    -# Begin Source File
    -
    -SOURCE=.\WindozeCE.h
    -# End Source File
    -# Begin Source File
    -
    -SOURCE=.\WindozeCEDlg.h
    -# End Source File
    -# End Group
    -# Begin Group "Resource Files"
    -
    -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
    -# Begin Source File
    -
    -SOURCE=.\res\WindozeCE.ico
    -# End Source File
    -# Begin Source File
    -
    -SOURCE=.\res\WindozeCE.rc2
    -# PROP Exclude_From_Scan -1
    -# PROP BASE Exclude_From_Build 1
    -# PROP Exclude_From_Build 1
    -# End Source File
    -# End Group
    -# Begin Source File
    -
    -SOURCE=.\ReadMe.txt
    -# End Source File
    -# End Target
    -# End Project
    diff --git a/WindozeCE/WindozeCE.h b/WindozeCE/WindozeCE.h
    deleted file mode 100644
    index ba860d6a0ee..00000000000
    --- a/WindozeCE/WindozeCE.h
    +++ /dev/null
    @@ -1,53 +0,0 @@
    -// $Id$
    -// WindozeCE.h : main header file for the WINDOZECE application
    -//
    -
    -#if !defined(AFX_WINDOZECE_H__37544C69_E3BC_11D1_968E_0040054CF0F0__INCLUDED_)
    -#define AFX_WINDOZECE_H__37544C69_E3BC_11D1_968E_0040054CF0F0__INCLUDED_
    -
    -#if _MSC_VER >= 1000
    -#pragma once
    -#endif // _MSC_VER >= 1000
    -
    -#ifndef __AFXWIN_H__
    -	#error include 'stdafx.h' before including this file for PCH
    -#endif
    -
    -#include "resource.h"		// main symbols
    -#include "ace/OS.h"
    -
    -/////////////////////////////////////////////////////////////////////////////
    -// CWindozeCEApp:
    -// See WindozeCE.cpp for the implementation of this class
    -//
    -
    -class CWindozeCEApp : public CWinApp
    -{
    -public:
    -	CWindozeCEApp(LPCTSTR lpszAppName);
    -
    -// Overrides
    -	// ClassWizard generated virtual function overrides
    -	//{{AFX_VIRTUAL(CWindozeCEApp)
    -	public:
    -	virtual BOOL InitInstance();
    -	//}}AFX_VIRTUAL
    -
    -// Implementation
    -
    -	//{{AFX_MSG(CWindozeCEApp)
    -		// NOTE - the ClassWizard will add and remove member functions here.
    -		//    DO NOT EDIT what you see in these blocks of generated code !
    -	//}}AFX_MSG
    -	DECLARE_MESSAGE_MAP()
    -          private:
    -            ACE_Object_Manager obj_mgr_;
    -};
    -
    -
    -/////////////////////////////////////////////////////////////////////////////
    -
    -//{{AFX_INSERT_LOCATION}}
    -// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
    -
    -#endif // !defined(AFX_WINDOZECE_H__37544C69_E3BC_11D1_968E_0040054CF0F0__INCLUDED_)
    diff --git a/WindozeCE/WindozeCE.plg b/WindozeCE/WindozeCE.plg
    deleted file mode 100644
    index 5eec2c4acbd..00000000000
    --- a/WindozeCE/WindozeCE.plg
    +++ /dev/null
    @@ -1,18 +0,0 @@
    ---------------------Configuration: WindozeCE - Win32 (WCE x86em) Debug--------------------
    -Begining build with project "C:\Nanbor\WinCE\WindozeCE\WindozeCE.dsp", at root.
    -Active configuration is Win32 (WCE x86em) Application (based on Win32 (WCE x86em) Application)
    -
    -Project's tools are:
    -			"32-bit C/C++ Compiler for 80x86em" with flags "/nologo /MTd /W3 /Gm /Zi /Od /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "STRICT" /D _WIN32_WCE=$(CEVersion) /D "$(CEConfigName)" /D "_WIN32_WCE_EMULATION" /D "INTERNATIONAL" /D "USA" /D "INTLMSG_CODEPAGE" /D "_DEBUG" /D "x86" /D "i486" /D "_x86_" /D "_AFXDLL" /Fp"x86emDbg/WindozeCE.pch" /Yu"stdafx.h" /Fo"x86emDbg/" /Fd"x86emDbg/" /c "
    -			"Win32 Resource Compiler" with flags "/l 0x409 /fo"x86emDbg/WindozeCE.res" /d UNDER_CE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "WIN32" /d "STRICT" /d _WIN32_WCE=$(CEVersion) /d "$(CEConfigName)" /d "_WIN32_WCE_EMULATION" /d "INTERNATIONAL" /d "USA" /d "INTLMSG_CODEPAGE" /d "_DEBUG" /d "x86" /d "i486" /d "_x86_" /d "_AFXDLL" "
    -			"OLE Type Library Maker" with flags "/nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 "
    -			"Browser Database Maker" with flags "/nologo /o"x86emDbg/WindozeCE.bsc" "
    -			"COFF Linker for 80x86em" with flags "/nologo /entry:"wWinMainCRTStartup" /subsystem:windows /incremental:yes /pdb:"x86emDbg/WindozeCE.pdb" /debug /machine:I386 /out:"x86emDbg/WindozeCE.exe" /windowsce:emulation "
    -			"Empfile Utility" with flags "-COPY "
    -			"Custom Build" with flags ""
    -			"" with flags ""
    -
    -
    -
    -
    -WindozeCE.exe - 0 error(s), 0 warning(s)
    diff --git a/WindozeCE/WindozeCE.rc b/WindozeCE/WindozeCE.rc
    deleted file mode 100644
    index ff78591cb9c..00000000000
    --- a/WindozeCE/WindozeCE.rc
    +++ /dev/null
    @@ -1,176 +0,0 @@
    -//Microsoft Developer Studio generated resource script.
    -//
    -#include "resource.h"
    -
    -#define APSTUDIO_READONLY_SYMBOLS
    -/////////////////////////////////////////////////////////////////////////////
    -//
    -// Generated from the TEXTINCLUDE 2 resource.
    -//
    -#include "afxres.h"
    -
    -/////////////////////////////////////////////////////////////////////////////
    -#undef APSTUDIO_READONLY_SYMBOLS
    -
    -/////////////////////////////////////////////////////////////////////////////
    -// English (U.S.) resources
    -
    -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
    -#ifdef _WIN32
    -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
    -#pragma code_page(1252)
    -#endif //_WIN32
    -
    -#ifdef APSTUDIO_INVOKED
    -/////////////////////////////////////////////////////////////////////////////
    -//
    -// TEXTINCLUDE
    -//
    -
    -1 TEXTINCLUDE DISCARDABLE 
    -BEGIN
    -    "resource.h\0"
    -END
    -
    -2 TEXTINCLUDE DISCARDABLE 
    -BEGIN
    -    "#include ""afxres.h""\r\n"
    -    "\0"
    -END
    -
    -3 TEXTINCLUDE DISCARDABLE 
    -BEGIN
    -    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
    -    "#define _AFX_NO_OLE_RESOURCES\r\n"
    -    "#define _AFX_NO_TRACKER_RESOURCES\r\n"
    -    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"
    -    "\r\n"
    -    "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
    -    "#ifdef _WIN32\r\n"
    -    "LANGUAGE 9, 1\r\n"
    -    "#pragma code_page(1252)\r\n"
    -    "#endif\r\n"
    -    "#include ""res\\WindozeCE.rc2""  // non-Microsoft Visual C++ edited resources\r\n"
    -    "#include ""afxres.rc""         // Standard components\r\n"
    -    "#include ""wceres.rc""         // WCE-specific components\r\n"
    -    "#endif\0"
    -END
    -
    -#endif    // APSTUDIO_INVOKED
    -
    -
    -/////////////////////////////////////////////////////////////////////////////
    -//
    -// Icon
    -//
    -
    -// Icon with lowest ID value placed first to ensure application icon
    -// remains consistent on all systems.
    -IDR_MAINFRAME           ICON    DISCARDABLE     "res\\WindozeCE.ico"
    -
    -/////////////////////////////////////////////////////////////////////////////
    -//
    -// Dialog
    -//
    -
    -IDD_WINDOZECE_DIALOG DIALOGEX 0, 0, 285, 111
    -STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
    -EXSTYLE WS_EX_APPWINDOW | WS_EX_CAPTIONOKBTN
    -CAPTION "WindozeCE"
    -FONT 8, "Tahoma"
    -BEGIN
    -    EDITTEXT        IDC_PROGRAM_OUTPUT,7,7,271,79,ES_MULTILINE | 
    -                    ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL
    -    DEFPUSHBUTTON   "Run",IDC_RUN,7,90,50,14
    -    EDITTEXT        IDC_PROGRAM_ARGUMENTS,61,90,217,14,ES_AUTOHSCROLL
    -END
    -
    -
    -#ifndef _MAC
    -/////////////////////////////////////////////////////////////////////////////
    -//
    -// Version
    -//
    -
    -VS_VERSION_INFO VERSIONINFO
    - FILEVERSION 1,0,0,1
    - PRODUCTVERSION 1,0,0,1
    - FILEFLAGSMASK 0x3fL
    -#ifdef _DEBUG
    - FILEFLAGS 0x1L
    -#else
    - FILEFLAGS 0x0L
    -#endif
    - FILEOS 0x4L
    - FILETYPE 0x1L
    - FILESUBTYPE 0x0L
    -BEGIN
    -    BLOCK "StringFileInfo"
    -    BEGIN
    -        BLOCK "040904B0"
    -        BEGIN
    -            VALUE "CompanyName", "\0"
    -            VALUE "FileDescription", "WindozeCE WCE MFC Application\0"
    -            VALUE "FileVersion", "1, 0, 0, 1\0"
    -            VALUE "InternalName", "WindozeCE\0"
    -            VALUE "LegalCopyright", "Copyright (C) 1998\0"
    -            VALUE "LegalTrademarks", "\0"
    -            VALUE "OriginalFilename", "WindozeCE.EXE\0"
    -            VALUE "ProductName", "WindozeCE Application\0"
    -            VALUE "ProductVersion", "1, 0, 0, 1\0"
    -        END
    -    END
    -    BLOCK "VarFileInfo"
    -    BEGIN
    -        VALUE "Translation", 0x409, 1200
    -    END
    -END
    -
    -#endif    // !_MAC
    -
    -
    -/////////////////////////////////////////////////////////////////////////////
    -//
    -// DESIGNINFO
    -//
    -
    -#ifdef APSTUDIO_INVOKED
    -GUIDELINES DESIGNINFO DISCARDABLE 
    -BEGIN
    -    IDD_WINDOZECE_DIALOG, DIALOG
    -    BEGIN
    -        LEFTMARGIN, 7
    -        RIGHTMARGIN, 278
    -        TOPMARGIN, 7
    -        BOTTOMMARGIN, 104
    -    END
    -END
    -#endif    // APSTUDIO_INVOKED
    -
    -#endif    // English (U.S.) resources
    -/////////////////////////////////////////////////////////////////////////////
    -
    -
    -
    -#ifndef APSTUDIO_INVOKED
    -/////////////////////////////////////////////////////////////////////////////
    -//
    -// Generated from the TEXTINCLUDE 3 resource.
    -//
    -#define _AFX_NO_SPLITTER_RESOURCES
    -#define _AFX_NO_OLE_RESOURCES
    -#define _AFX_NO_TRACKER_RESOURCES
    -#define _AFX_NO_PROPERTY_RESOURCES
    -
    -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
    -#ifdef _WIN32
    -LANGUAGE 9, 1
    -#pragma code_page(1252)
    -#endif
    -#include "res\WindozeCE.rc2"  // non-Microsoft Visual C++ edited resources
    -#include "afxres.rc"         // Standard components
    -#include "wceres.rc"         // WCE-specific components
    -#endif
    -/////////////////////////////////////////////////////////////////////////////
    -#endif    // not APSTUDIO_INVOKED
    -
    diff --git a/WindozeCE/WindozeCEDlg.cpp b/WindozeCE/WindozeCEDlg.cpp
    deleted file mode 100644
    index 8a9e03358a1..00000000000
    --- a/WindozeCE/WindozeCEDlg.cpp
    +++ /dev/null
    @@ -1,155 +0,0 @@
    -// $Id$
    -// WindozeCEDlg.cpp : implementation file
    -//
    -
    -#include "stdafx.h"
    -#include "WindozeCE.h"
    -#include "WindozeCEDlg.h"
    -#include "ace/ARGV.h"
    -#include "ACEApp.h"
    -
    -#ifdef _DEBUG
    -#define new DEBUG_NEW
    -#undef THIS_FILE
    -static char THIS_FILE[] = __FILE__;
    -#endif
    -
    -static CWnd *host_window_ = 0;
    -
    -UINT worker (void * arg)
    -{
    -  ACE_ARGV cmd_line ((TCHAR *) arg);
    -  extern int ace_ce_main (int, ASYS_TCHAR *[]);
    -
    -  int retv =  ace_ce_main (cmd_line.argc (), cmd_line.argv ());
    -  host_window_->SetDlgItemText (IDC_RUN, TEXT ("Stopped"));
    -
    -  return retv;
    -
    -  //   Sleep (500);
    -  //   for (size_t i = 0; i < cmd_line.argc (); i++, Sleep (500))
    -  //     ACE_DEBUG ((LM_DEBUG, TEXT ("The %d command arg is \"%s\""),
    -  //                 i, cmd_line.argv ()[i]));
    -
    -  //   return 0;
    -  //   CString *msg = 0;
    -  //   while (1)
    -  //     {
    -  //       Sleep (500);
    -  //       msg = new CString;
    -  //       SYSTEMTIME curtime;
    -  //       GetLocalTime (&curtime);
    -  //       msg->Format (TEXT ("Time: %02d:%02d:%02d.%03d"), curtime.wHour,
    -  //                    curtime.wMinute, curtime.wSecond,
    -  //                    curtime.wMilliseconds);
    -  //       ACE_DEBUG ((LM_DEBUG, TEXT ("(%P|%t) Test logging: %s\n"), *msg));
    -  //       delete msg;
    -  //     }
    -  //   return 0;
    -}
    -
    -
    -/////////////////////////////////////////////////////////////////////////////
    -// CWindozeCEDlg dialog
    -
    -CWindozeCEDlg::CWindozeCEDlg(CWnd* pParent /*=NULL*/)
    -  : CDialog(CWindozeCEDlg::IDD, pParent)
    -{
    -  //{{AFX_DATA_INIT(CWindozeCEDlg)
    -  // NOTE: the ClassWizard will add member initialization here
    -  //}}AFX_DATA_INIT
    -  // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
    -  m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    -}
    -
    -void CWindozeCEDlg::DoDataExchange(CDataExchange* pDX)
    -{
    -  CDialog::DoDataExchange(pDX);
    -  //{{AFX_DATA_MAP(CWindozeCEDlg)
    -  // NOTE: the ClassWizard will add DDX and DDV calls here
    -  //}}AFX_DATA_MAP
    -}
    -
    -BEGIN_MESSAGE_MAP(CWindozeCEDlg, CDialog)
    -  //{{AFX_MSG_MAP(CWindozeCEDlg)
    -  ON_WM_TIMER()
    -  ON_BN_CLICKED(IDC_RUN, OnStart)
    -  //}}AFX_MSG_MAP
    -  END_MESSAGE_MAP()
    -
    -  /////////////////////////////////////////////////////////////////////////////
    -  // CWindozeCEDlg message handlers
    -
    -  BOOL CWindozeCEDlg::OnInitDialog()
    -{
    -  CDialog::OnInitDialog();
    -
    -  // Set the icon for this dialog.  The framework does this automatically
    -  //  when the application's main window is not a dialog
    -  SetIcon(m_hIcon, TRUE);			// Set big icon
    -  SetIcon(m_hIcon, FALSE);		// Set small icon
    -
    -  this->SetDlgItemText (IDC_PROGRAM_OUTPUT,
    -                        TEXT ("Fill in the command line arguments you want to pass to the program below:"));
    -  CenterWindow(GetDesktopWindow());	// center to the hpc screen
    -
    -  this->ace.set_window (this->m_hWnd, NC_ACE_NOTIFY, INC_ACE_LOGMSG);
    -  this->ace.set_self_default ();
    -  host_window_ = this;
    -  return TRUE;  // return TRUE  unless you set the focus to a control
    -}
    -
    -BOOL CWindozeCEDlg::OnCommand(WPARAM wParam, LPARAM lParam)
    -{
    -  static BOOL got_cmd = FALSE;
    -  int notify = HIBYTE (wParam);
    -  int id = LOBYTE (wParam);
    -
    -  if (notify == NC_ACE_NOTIFY && id == INC_ACE_LOGMSG)
    -    {
    -      LPTSTR head = (LPTSTR) lParam ;
    -      CString newbuf;
    -
    -      LPTSTR newline;
    -
    -      while ((newline = ACE_OS::strchr (head, '\n')) != NULL)
    -        {
    -          *newline = 0;
    -          newbuf += head;
    -          newbuf += "\r\n";
    -          head = newline+1;
    -        }
    -
    -      newbuf += head;
    -
    -      CEdit *editor = (CEdit *) GetDlgItem (IDC_PROGRAM_OUTPUT);
    -      editor -> ReplaceSel (newbuf);
    -
    -      ACE_OS::free (head);
    -      return TRUE;
    -    }
    -  return CDialog::OnCommand(wParam, lParam);
    -}
    -
    -void CWindozeCEDlg::OnTimer(UINT nIDEvent)
    -{
    -  //   CWnd *text = this->GetDlgItem (IDC_TEXT_DISP);
    -  //   text->ModifyStyle (WS_VISIBLE, SS_CENTER, 0);
    -  //   this->UpdateWindow ();
    -
    -  CDialog::OnTimer(nIDEvent);
    -}
    -
    -void CWindozeCEDlg::OnStart()
    -{
    -  static BOOL once = FALSE;
    -
    -  if (! once)
    -    {
    -      CString cmdline;
    -      this->GetDlgItemText (IDC_PROGRAM_ARGUMENTS, cmdline);
    -      AfxBeginThread (worker, (void *) (LPCTSTR) cmdline);
    -      this->SetDlgItemText (IDC_RUN, TEXT ("Running..."));
    -      once = TRUE;
    -    }
    -}
    diff --git a/WindozeCE/WindozeCEDlg.h b/WindozeCE/WindozeCEDlg.h
    deleted file mode 100644
    index d141e218117..00000000000
    --- a/WindozeCE/WindozeCEDlg.h
    +++ /dev/null
    @@ -1,54 +0,0 @@
    -// $Id$
    -// WindozeCEDlg.h : header file
    -//
    -
    -#include "ace/OS.h"
    -
    -#if !defined(AFX_WINDOZECEDLG_H__37544C6B_E3BC_11D1_968E_0040054CF0F0__INCLUDED_)
    -#define AFX_WINDOZECEDLG_H__37544C6B_E3BC_11D1_968E_0040054CF0F0__INCLUDED_
    -
    -#if _MSC_VER >= 1000
    -#pragma once
    -#endif // _MSC_VER >= 1000
    -
    -/////////////////////////////////////////////////////////////////////////////
    -// CWindozeCEDlg dialog
    -
    -class CWindozeCEDlg : public CDialog
    -{
    -  // Construction
    -public:
    -  CWindozeCEDlg(CWnd* pParent = NULL);	// standard constructor
    -
    -  // Dialog Data
    -  //{{AFX_DATA(CWindozeCEDlg)
    -  enum { IDD = IDD_WINDOZECE_DIALOG };
    -  // NOTE: the ClassWizard will add data members here
    -  //}}AFX_DATA
    -
    -	// ClassWizard generated virtual function overrides
    -	//{{AFX_VIRTUAL(CWindozeCEDlg)
    -protected:
    -  virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
    -  virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
    -  //}}AFX_VIRTUAL
    -
    -// Implementation
    -protected:
    -  HICON m_hIcon;
    -
    -  ACE_CE_Bridge ace;
    -
    -  // Generated message map functions
    -  //{{AFX_MSG(CWindozeCEDlg)
    -  virtual BOOL OnInitDialog();
    -  afx_msg void OnTimer(UINT nIDEvent);
    -  afx_msg void OnStart();
    -  //}}AFX_MSG
    -  DECLARE_MESSAGE_MAP()
    -    };
    -
    -//{{AFX_INSERT_LOCATION}}
    -// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
    -
    -#endif // !defined(AFX_WINDOZECEDLG_H__37544C6B_E3BC_11D1_968E_0040054CF0F0__INCLUDED_)
    diff --git a/WindozeCE/res/WindozeCE.ico b/WindozeCE/res/WindozeCE.ico
    deleted file mode 100644
    index b9204c1c06d..00000000000
    Binary files a/WindozeCE/res/WindozeCE.ico and /dev/null differ
    diff --git a/WindozeCE/res/WindozeCE.rc2 b/WindozeCE/res/WindozeCE.rc2
    deleted file mode 100644
    index 65f376ac843..00000000000
    --- a/WindozeCE/res/WindozeCE.rc2
    +++ /dev/null
    @@ -1,13 +0,0 @@
    -// $Id$
    -// WindozeCE.RC2 - resources Microsoft Visual C++ does not edit directly
    -//
    -
    -#ifdef APSTUDIO_INVOKED
    -	#error this file is not editable by Microsoft Visual C++
    -#endif //APSTUDIO_INVOKED
    -
    -
    -/////////////////////////////////////////////////////////////////////////////
    -// Add manually edited resources here...
    -
    -/////////////////////////////////////////////////////////////////////////////
    diff --git a/WindozeCE/resource.h b/WindozeCE/resource.h
    deleted file mode 100644
    index 174cf16aba9..00000000000
    --- a/WindozeCE/resource.h
    +++ /dev/null
    @@ -1,21 +0,0 @@
    -// $Id$
    -//{{NO_DEPENDENCIES}}
    -// Microsoft Developer Studio generated include file.
    -// Used by WindozeCE.rc
    -//
    -#define IDD_WINDOZECE_DIALOG            102
    -#define IDR_MAINFRAME                   128
    -#define IDC_PROGRAM_OUTPUT              1001
    -#define IDC_RUN                         1003
    -#define IDC_PROGRAM_ARGUMENTS           1004
    -
    -// Next default values for new objects
    -// 
    -#ifdef APSTUDIO_INVOKED
    -#ifndef APSTUDIO_READONLY_SYMBOLS
    -#define _APS_NEXT_RESOURCE_VALUE        129
    -#define _APS_NEXT_COMMAND_VALUE         32771
    -#define _APS_NEXT_CONTROL_VALUE         1005
    -#define _APS_NEXT_SYMED_VALUE           101
    -#endif
    -#endif
    diff --git a/acconfig.h b/acconfig.h
    deleted file mode 100644
    index 89941d6b7b2..00000000000
    --- a/acconfig.h
    +++ /dev/null
    @@ -1,1422 +0,0 @@
    -/* -*- C++ -*- */
    -#ifndef ACE_CONFIG_H
    -#define ACE_CONFIG_H
    -
    -/* ACE configuration header file */
    -
    -/*   @TOP@  */
    -/* All lines above "@TOP@" will be placed at the top of config.h.in. */
    -
    -/*
    -  $Id$
    -
    -  This file, "acconfig.h," contains additional preprocessor symbols that
    -  autoheader may encounter.
    -*/
    -
    -
    -/* Define _REENTRANT if reentrant functions should be used. */
    -#ifndef _REENTRANT
    -# undef _REENTRANT
    -#endif
    -
    -#ifndef _POSIX_THREADS
    -# undef _POSIX_THREADS
    -#endif
    -
    -#ifndef _POSIX_THREAD_SAFE_FUNCTIONS
    -# undef _POSIX_THREAD_SAFE_FUNCTIONS
    -#endif
    -
    -/* Some platforms need _POSIX_PTHREAD_SEMANTICS to make some functions work */
    -#ifndef _POSIX_PTHREAD_SEMANTICS
    -# undef _POSIX_PTHREAD_SEMANTICS
    -#endif
    -
    -/* Some platforms require _GNU_SOURCE to be defined to make some function
    -   prototypes "visible." */
    -#ifndef _GNU_SOURCE
    -# undef _GNU_SOURCE
    -#endif
    -
    -/* ACE currently doesn't use these; however the configure script does */
    -#undef ACE_LACKS_SYSTIMES_H
    -#undef ACE_LACKS_UNBUFFERED_STREAMBUF
    -#undef ACE_HAS_STDCPP_STL_INCLUDES
    -
    -#undef ACE_HAS_LIBC_H
    -#undef ACE_HAS_OSFCN_H
    -#undef ACE_HAS_NEW_NO_H
    -#undef ACE_HAS_NEW_H
    -#undef ACE_HAS_STDEXCEPT_NO_H
    -#undef ACE_HAS_EXCEPTION_H
    -#undef ACE_HAS_IOMANIP_NO_H
    -
    -/* Platform provides  header */
    -#undef ACE_HAS_SYS_IOCTL_H
    -
    -/*
    - * Deprecated! (or soon to be?)
    - */
    -#undef ACE_HAS_OSF1_GETTIMEOFDAY /* timezone* 2nd parameter & no prototype */
    -#undef ACE_HAS_LYNXOS_SIGNALS
    -#undef ACE_HAS_TANDEM_SIGNALS
    -#undef ACE_HAS_IRIX_53_SIGNALS
    -
    -/*
    - * TODO: These two next #defines have an #undef before them, in
    - * case the variable being defined already had a value.
    - * The #undefs are being picked up by configure, and are commented out!
    - */
    -#undef ACE_THREAD_MIN_PRIORITY
    -#if defined (ACE_THREAD_MIN_PRIORITY)
    -# undef PTHREAD_MIN_PRIORITY
    -# define PTHREAD_MIN_PRIORITY ACE_THREAD_MIN_PRIORITY
    -#endif  /* #if defined (ACE_THREAD_MIN_PRIORITY) */
    -
    -#undef ACE_THREAD_MAX_PRIORITY
    -#if defined (ACE_THREAD_MAX_PRIORITY)
    -# undef PTHREAD_MAX_PRIORITY
    -# define PTHREAD_MAX_PRIORITY ACE_THREAD_MAX_PRIORITY
    -#endif  /* #if defined (ACE_THREAD_MAX_PRIORITY) */
    -
    -#undef PTHREAD_STACK_MIN
    -#undef PTHREAD_STACK_MAX
    -
    -/* ///////////////////// OSSAMA'S NEW STUFF ////////////////// */
    -/* 
    - THIS STUFF WILL REPLACE THE ABOVE OLDER STUFF AND/OR WILL BE MERGED INTO IT
    -*/
    -
    -/* results from checks for programs */
    -/* results from checks for libraries */
    -/* results from checks for header files */
    -/* results from checks for typedefs */
    -/* results from checks for structures */
    -/* results from checks for variables */
    -/* results from checks for compiler characteristics */
    -/* results from checks for library functions */
    -/* results from checks for system services */
    -
    -/* AIX specific configuration parameters */
    -#undef AIX
    -#undef _BSD
    -#undef _BSD_INCLUDES
    -
    -/* Cray specific configuration parameters */
    -/*
    - *  The following predefined macros are used within ACE ifdefs.  
    - *  These are defined when using the Cray compilers.  _CRAYMPP
    - *  is defined, for example, if you are running on a Cray T3E
    - *  massively parallel machine.  Moreover, in the case of the T3E,
    - *  _CRAYT3E will be defined.  This is used to determine the
    - *  ACE_SIZEOF defines for primitive types.  
    - *
    - *  _UNICOS is defined as either the major version of UNICOS being run,
    - *  e.g. 9 or 10 on the vector machines (e.g. C90, T90, J90, YMP, ...)
    - *  or the major+minor+level UNICOS/mk version, e.g. 2.0.3 => 203,
    - *  being run on an MPP machine.
    - *
    - *  Summary:
    - *
    - *  _CRAYMPP  (defined only if running on MPP machine, e.g. T3E, UNICOS/mk)
    - *  _CRAYT3E  (defined specifically if compiling on a Cray T3E)
    - *  _UNICOS   (defined if running UNICOS or UNICOS/mk)
    - *
    - *  Tested on UNICOS 10.0.0.2, UNICOS/mk 2.0.3.10
    - *
    - *  Contributed by Doug Anderson 
    - */
    -#undef _CRAYMPP
    -#undef _CRAYT3E
    -#undef _UNICOS
    -
    -/* DG/UX specific configuration parameters */
    -#undef ACE_DGUX
    -#undef _DGUX_SOURCE
    -#undef _POSIX4A_DRAFT10_SOURCE
    -#undef _POSIX4_DRAFT_SOURCE
    -
    -/* FreeBSD specific configuration parameters */
    -/* Nothing yet */
    -
    -/* HP/UX specific configuration parameters */
    -#undef HPUX
    -#undef HPUX_10
    -#undef HPUX_11
    -#undef _HPUX_SOURCE
    -
    -/* Irix specific configuration parameters */
    -#undef IRIX5
    -#undef IRIX6
    -#undef _BSD_TYPES
    -#undef _SGI_MP_SOURCE
    -#undef _MODERN_C_
    -
    -/* Linux specific configuration parameters */
    -/* Nothing yet */
    -
    -/* LynxOS specific configuration parameters */
    -#undef __NO_INCLUDE_WARN__
    -#undef _POSIX_THREADS_CALLS
    -
    -/* M88K specific configuration parameters */
    -#undef m88k
    -#undef __m88k__
    -
    -/* MVS specific configuration parameters */
    -/* Nothing yet */
    -
    -/* NetBSD specific configuration parameters */
    -#undef ACE_NETBSD
    -
    -/* OSF/1 and Digital Unix specific configuration parameters */
    -#undef DEC_CXX
    -#undef DIGITAL_UNIX
    -
    -/* pSOS specific configuration parameters */
    -#undef ACE_PSOS
    -#undef ACE_PSOSIM
    -#undef ACE_PSOSTBD
    -
    -/* SCO specific configuration parameters */
    -#undef SCO
    -#undef _SVID3
    -
    -/* SunOS / Solaris specific configuration parameters */
    -/* Nothing yet */
    -
    -/* Tandem specific configuration parameters */
    -/* Nothing yet */
    -
    -/* UnixWare specific configuration parameters */
    -#undef UNIXWARE
    -#undef UNIXWARE_2_0
    -#undef UNIXWARE_2_1
    -
    -/* VXWorks specific configuration parameters */
    -#undef VXWORKS
    -
    -/* Win32 specific configuration parameters */
    -#undef ACE_WIN32
    -
    -/* ACE internals */
    -#undef ACE_DEFAULT_BASE_ADDR
    -#undef ACE_DEFAULT_BASE_ADDRL
    -#undef ACE_DEFAULT_CLOSE_ALL_HANDLES
    -#undef ACE_DEFAULT_MAX_SOCKET_BUFSIZ
    -#undef ACE_DEFAULT_SELECT_REACTOR_SIZE
    -#undef ACE_MALLOC_ALIGN
    -#undef ACE_MAP_PRIVATE
    -#undef ACE_THR_PRI_FIFO_DEF
    -#undef ACE_TIMER_SKEW
    -#undef ACE_UINT64_FORMAT_SPECIFIER
    -#undef ACE_USE_RCSID
    -#undef IP_ADD_MEMBERSHIP
    -#undef IP_DROP_MEMBERSHIP
    -
    -/* Specify sizes of given built-in types.  If a size isn't defined here,
    -   then ace/Basic_Types.h will attempt to deduce the size. */
    -/* #undef ACE_SIZEOF_CHAR */
    -#undef ACE_SIZEOF_SHORT
    -#undef ACE_SIZEOF_INT
    -#undef ACE_SIZEOF_LONG
    -#undef ACE_SIZEOF_LONG_LONG
    -#undef ACE_SIZEOF_VOID_P
    -#undef ACE_SIZEOF_FLOAT
    -#undef ACE_SIZEOF_DOUBLE
    -#undef ACE_SIZEOF_LONG_DOUBLE
    -
    -/* typedef for ACE_UINT64 */
    -/*
    -   We only make the typedef if ACE_UINT64_TYPEDEF is defined.  Otherwise,
    -   let ace/Basic_Types.h do the work for us.
    -*/
    -#undef ACE_UINT64_TYPEDEF
    -#if defined(ACE_UINT64_TYPEDEF)
    -   typedef ACE_UINT64_TYPEDEF ACE_UINT64;
    -#endif /* ACE_UINT64_TYPEDEF && !ACE_DISABLE_AUTOCONF_UINT64 */
    -
    -/* Enable ACE inlining */
    -#undef __ACE_INLINE__
    -
    -/* Explicitly disable ACE inlining */
    -#undef ACE_NO_INLINE
    -
    -/* Enable ACE_Timeprobes */
    -#undef ACE_COMPILE_TIMEPROBES
    -
    -/* Enable use of GNU template repositories.  GNU C++ w/repo patch
    -   and EGCS only */
    -#undef ACE_HAS_GNU_REPO
    -
    -/* Define this if you don't want debug version ACE search for debug version
    -   DLLs first before looking for the DLL names specified. */
    -#undef ACE_DISABLE_DEBUG_DLL_CHECK
    -
    -/* Platform supports new C++ style casts (dynamic_cast, static_cast,
    -   reinterpret_cast and const_cast) */
    -#undef ACE_HAS_ANSI_CASTS
    -
    -/* Platform supports Asynchronous IO calls */
    -#undef ACE_HAS_AIO_CALLS
    -
    -/* Number of TSS keys, with ACE_HAS_TSS_EMULATION _only_.  Defaults to 64.  */
    -#undef ACE_DEFAULT_THREAD_KEYS
    -
    -/* Specify this if you don't want threads to inherit parent thread's
    -   ACE_Log_Msg properties. */
    -#undef ACE_THREADS_DONT_INHERIT_LOG_MSG
    -
    -/* Compiler enforces C++ One Definition Rule */
    -#undef ACE_HAS_ONE_DEFINITION_RULE
    -
    -/* OS has priocntl (2) */
    -#undef ACE_HAS_PRIOCNTL
    -
    -/* Platform has the MIT pthreads APIs for timed send/recv operations */
    -#undef ACE_HAS_RECV_TIMEDWAIT
    -#undef ACE_HAS_RECVFROM_TIMEDWAIT
    -#undef ACE_HAS_RECVMSG_TIMEDWAIT
    -#undef ACE_HAS_SEND_TIMEDWAIT
    -#undef ACE_HAS_SENDTO_TIMEDWAIT
    -#undef ACE_HAS_SENDMSG_TIMEDWAIT
    -#undef ACE_HAS_READ_TIMEDWAIT
    -#undef ACE_HAS_READV_TIMEDWAIT
    -#undef ACE_HAS_WRITE_TIMEDWAIT
    -#undef ACE_HAS_WRITEV_TIMEDWAIT
    -
    -/* Platform has enum instead of int for first argument to ::{get,set}rlimit ().
    -   The value of this macro is the enum definition, e.g.,
    -   enum __rlimit_resource, for Linux glibc 2.0. */
    -#undef ACE_HAS_RLIMIT_RESOURCE_ENUM
    -
    -/* Platform has enum instead of int for first argument to ::getrusage ().  The
    -   value of this macro is the enum definition, e.g., enum __rusage_who, for
    -   Linux glibc 2.0. */
    -#undef ACE_HAS_RUSAGE_WHO_ENUM
    -
    -/* Platform also has __TEXT defined */
    -#undef ACE_HAS_TEXT_MACRO_CONFLICT
    -
    -/* Platform has void (*)(...) prototype for pthread_key_create() destructor
    -   (e.g., LynxOS). */
    -#undef ACE_HAS_STDARG_THR_DEST
    -
    -/* Used when users want to compile ACE with STL and STL map class conflicts
    -   with  map struct. */
    -#undef ACE_HAS_STL_MAP_CONFLICT
    -
    -/* Used when users want to compile ACE with STL and STL queue class conflicts
    -   with  queue struct. */
    -#undef ACE_HAS_STL_QUEUE_CONFLICT
    -
    -/* Platform/compiler supports Win32 structural exceptions */
    -#undef ACE_HAS_WIN32_STRUCTURAL_EXCEPTIONS
    -
    -/* Platform has BSD 4.4 sendmsg()/recvmsg() APIs. */
    -#undef ACE_HAS_4_4BSD_SENDMSG_RECVMSG
    -
    -/* Platform has pread() and pwrite() support */
    -#undef ACE_HAS_P_READ_WRITE
    -
    -/* Platform, such as AIX4, needs to wrap #include of sys/socket.h with
    -   #undef/#define of __cplusplus. */
    -#undef ACE_HAS_AIX_BROKEN_SOCKET_HEADER
    -
    -/* Platform has AIX4 ::read_real_time () */
    -#undef ACE_HAS_AIX_HI_RES_TIMER
    -
    -/* Compiler/platform supports alloca() */
    -#undef ACE_HAS_ALLOCA
    -
    -/* Compiler/platform has  */
    -#undef ACE_HAS_ALLOCA_H
    -
    -/* CPU is an Alpha, with the rpcc instruction to read the tick timer. */
    -#undef ACE_HAS_ALPHA_TIMER
    -
    -/* Compiler/platform correctly calls init()/fini() for shared libraries */
    -#undef ACE_HAS_AUTOMATIC_INIT_FINI
    -
    -/* Compiler handles explicit calling of template destructor correctly.
    -   See "ace/OS.h" for details. */
    -#undef ACE_HAS_WORKING_EXPLICIT_TEMPLATE_DESTRUCTOR
    -
    -/* Platform doesn't cast MAP_FAILED to a (void *). */
    -#undef ACE_HAS_BROKEN_MAP_FAILED
    -
    -/* Compiler/platform doesn't support namespaces (or the support is not fully
    -   implemented.) */
    -#undef ACE_HAS_BROKEN_NAMESPACES
    -
    -/* Compiler has integer overflow problem with bit-shift operations. */
    -#undef ACE_HAS_BROKEN_BITSHIFT
    -
    -/* Compiler can't handle const char * as rvalue in conditional operator. */
    -#undef ACE_HAS_BROKEN_CONDITIONAL_STRING_CASTS
    -
    -/* Compiler can't handle calls like foo->operator T *() */
    -#undef ACE_HAS_BROKEN_CONVERSIONS
    -
    -/* Compiler/platform uses macro for ctime (e.g., MVS) */
    -#undef ACE_HAS_BROKEN_CTIME
    -
    -/* Platform sendv() does not work properly with datagrams, i.e. it
    -   fails when the iovec size is IOV_MAX. */
    -#undef ACE_HAS_BROKEN_DGRAM_SENDV
    -
    -/* Earlier versions of HP/UX C++ are damned... */
    -#undef ACE_HAS_BROKEN_HPUX_TEMPLATES
    -
    -/* Platform headers don't support  prototypes */
    -#undef ACE_HAS_BROKEN_MSG_H
    -
    -/* HP/UX does not wrap the mmap(2) header files with extern "C". */
    -#undef ACE_HAS_BROKEN_MMAP_H
    -
    -/* MSVC has trouble with defining STL containers for nested structs and
    -   classes */
    -#undef ACE_HAS_BROKEN_NESTED_TEMPLATES
    -
    -/* Platform has a bug with non-blocking connects (e.g., WinNT 4.0) */
    -#undef ACE_HAS_BROKEN_NON_BLOCKING_CONNECTS
    -
    -/* Platform defines struct timespec in  */
    -#undef ACE_HAS_BROKEN_POSIX_TIME
    -
    -/* Platform defines ctime_r, asctime_r, rand_r and getpwnam_r as macros */
    -#undef ACE_HAS_BROKEN_R_ROUTINES
    -
    -/* OS/compiler's header files are inconsistent with libC definition of
    -   rand_r(). */
    -#undef ACE_HAS_BROKEN_RANDR
    -
    -/* OS/Compiler's header files are not consistent with readv() definition. */
    -#undef ACE_HAS_BROKEN_READV
    -
    -/* Compiler can't handle the static ACE_Addr::sap_any construct. */
    -#undef ACE_HAS_BROKEN_SAP_ANY
    -
    -/* OS/compiler omits the const from the sendmsg() prototype. */
    -#undef ACE_HAS_BROKEN_SENDMSG
    -
    -/* OS/compiler omits the const from the rlimit parameter in the setrlimit()
    -   prototype. */
    -#undef ACE_HAS_BROKEN_SETRLIMIT
    -
    -/* Compiler/platform has the wrong prototype for t_error(), i.e.,
    -   t_error(char *) rather than t_error(const char *). */
    -#undef ACE_HAS_BROKEN_T_ERROR
    -
    -/* platform define struct timespec members as ts_sec and ts_nsec instead of
    -   tv_sec and tv_nsec.  This is highly non-portable.  Currently only
    -   FreeBSD 2.1.x uses it. */
    -#undef ACE_HAS_BROKEN_TIMESPEC_MEMBERS
    -
    -/* OS/compiler omits the const from the iovec parameter in the writev()
    -   prototype. */
    -#undef ACE_HAS_BROKEN_WRITEV
    -
    -/* OS header files have some problems with XTI (HP/UX 11). */
    -#undef ACE_HAS_BROKEN_XTI_MACROS
    -
    -/* Platform has  (which contains bzero() prototype) */
    -#undef ACE_HAS_BSTRING
    -
    -/* Platform has . */
    -#undef ACE_HAS_BYTESEX_H
    -
    -/* Platform supports the Win32 CancelIO() function (WinNT 4.0 and beyond). */
    -#undef ACE_HAS_CANCEL_IO
    -
    -/* OS/platform uses char * for dlopen/dlsym args, rather than const char *. */
    -#undef ACE_HAS_CHARPTR_DL
    -
    -/* OS/platform uses char * for sockopt, rather than const char * */
    -#undef ACE_HAS_CHARPTR_SOCKOPT
    -
    -/* sprintf() returns char * rather than int (e.g., SunOS 4.x)  */
    -#undef ACE_HAS_CHARPTR_SPRINTF
    -
    -/* Platform supports POSIX 1.b clock_gettime () */
    -#undef ACE_HAS_CLOCK_GETTIME
    -
    -/* Prototypes for both signal() and struct sigaction are consistent. */
    -#undef ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES
    -
    -/* Compiler/platform has correctly prototyped header files */
    -#undef ACE_HAS_CPLUSPLUS_HEADERS
    -
    -/* Platform has cygwin32 socket.h */
    -#undef ACE_HAS_CYGWIN32_SOCKET_H
    -
    -/* Platform supports operations on directories via struct dirent,
    -   readdir_r, etc. */
    -#undef ACE_HAS_DIRENT
    -
    -/* For platforms, e.g., RedHat 4.2/Linux 2.0.30/Alpha, that don't declare dl*
    -   functions as extern "C" in dlfcn.h.*/
    -#undef ACE_HAS_DLFCN_H_BROKEN_EXTERN_C
    -
    -/* Build ACE using the frigging PC DLL nonsense... */
    -#undef ACE_HAS_DLL
    -
    -/* Compiler supports C++ exception handling */
    -#undef ACE_HAS_EXCEPTIONS
    -
    -/* Platform has Fast-Light (FL) toolkit installed */
    -#undef ACE_HAS_FL
    -
    -/* Platform supports getpagesize() call (otherwise, ACE_PAGE_SIZE must be
    -   defined, except on Win32) */
    -#undef ACE_HAS_GETPAGESIZE
    -
    -/* Platform supports the getrusage() system call. */
    -#undef ACE_HAS_GETRUSAGE
    -
    -/* Platform has a getrusage () prototype in sys/resource.h that differs from
    -   the one in ace/OS.i. */
    -#undef ACE_HAS_GETRUSAGE_PROTO
    -
    -/* GNUC 2.7.3 mistakenly takes the template definition as the place where an
    -   inline function of an argument class is first used. */
    -#undef ACE_HAS_GNUC_BROKEN_TEMPLATE_INLINE_FUNCTIONS
    -
    -/* Denotes that GNU has cstring.h as standard which redefines memchr() */
    -#undef ACE_HAS_GNU_CSTRING_H
    -
    -/* The GPERF utility is compiled for this platform */
    -#undef ACE_HAS_GPERF
    -
    -/* Optimize ACE_Handle_Set::count_bits for select() operations (common case) */
    -#undef ACE_HAS_HANDLE_SET_OPTIMIZED_FOR_SELECT
    -
    -/* Platform supports ::llseek() */
    -#undef ACE_HAS_LLSEEK
    -
    -/* Compiler/platform supports SunOS high resolution timers */
    -#undef ACE_HAS_HI_RES_TIMER
    -
    -/* Compiler/platform supports idtype_t. */
    -#undef ACE_HAS_IDTYPE_T
    -
    -/* Inline all the static class OS methods to remove call overhead */
    -/* Note: This gets defined by OS.h if __ACE_INLINE__ is defined */
    -#undef ACE_HAS_INLINED_OSCALLS
    -
    -/* Platform supports IP multicast */
    -#undef ACE_HAS_IP_MULTICAST
    -
    -/* Platform supports IPv6 */
    -#undef ACE_HAS_IP6
    -
    -/* Platform supports the very odd IRIX 6.2 threads... */
    -#undef ACE_HAS_IRIX62_THREADS
    -
    -/* Causes the ACE_Object_Manager instance to be created in
    -   main (int, char *[]), instead of as a static (global) instance. */
    -#undef ACE_HAS_NONSTATIC_OBJECT_MANAGER
    -
    -/* Platform supports thr_keydelete (e.g,. UNIXWARE) */
    -#undef ACE_HAS_THR_KEYDELETE
    -
    -/* Platform calls thr_minstack() rather than thr_min_stack() (e.g., Tandem). */
    -#undef ACE_HAS_THR_MINSTACK
    -
    -/* The rusage_t structure has only two fields. */
    -#undef ACE_HAS_LIMITED_RUSAGE_T
    -
    -/* Compiler/platform has "big" fd_set, i.e. large number of bits set
    -   in fd_set passed back from select(). */
    -#undef ACE_HAS_BIG_FD_SET
    -
    -/* Platform defines MAP_FAILED as a long constant. */
    -#undef ACE_HAS_LONG_MAP_FAILED
    -
    -/* Enabled malloc statistics collection. */
    -#undef ACE_HAS_MALLOC_STATS
    -
    -/* Use native implementation of memchr(). */
    -#undef ACE_HAS_MEMCHR
    -
    -/* Avoid #including ace/streams.h in OS.h.  Users must include ace/streams.h,
    -   , or  explicitly in their code.  Some platforms, such
    -   as g++/VxWorks, have trouble compiling templates and iostreams header
    -   because of static variables in the stream headers.  This flag will also
    -   avoid extra compilation and runtime overheads on some platforms. */
    -#undef ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION
    -
    -/* Some files, such as ace/streams.h, want to include new style C++ stream
    -   headers.  These headers are iomanip, ios, iostream, istream, ostream,
    -   fstream and streambuf.  If _all_ of these headers aren't available, then
    -   assume that only iostream.h and fstream.h are available. */
    -#undef ACE_USES_OLD_IOSTREAMS
    -
    -/* Platform supports Microsoft Foundation Classes */
    -#undef ACE_HAS_MFC
    -
    -/* Platform supports recvmsg and sendmsg */
    -#undef ACE_HAS_MSG
    -
    -/* Platform supports MT safe mktime() call (do any of them?) */
    -#undef ACE_HAS_MT_SAFE_MKTIME
    -
    -/* Sockets may be called in multi-threaded programs */
    -#undef ACE_HAS_MT_SAFE_SOCKETS
    -
    -/* Platform uses non-const char * in calls to gethostbyaddr, gethostbyname,
    -   getservbyname */
    -#undef ACE_HAS_NONCONST_GETBY
    -
    -/* Platform has a non-const parameter to msgsnd() (e.g., SCO). */
    -#undef ACE_HAS_NONCONST_MSGSND
    -
    -/* Platform's select() uses non-const timeval* (only found on Linux right
    -   now) */
    -#undef ACE_HAS_NONCONST_SELECT_TIMEVAL
    -
    -/* Platform has "old" GNU compiler,  i.e. does not completely support
    -   standard C++. (compiling with g++ prior to version 2.8.0) */
    -#undef ACE_HAS_GNUG_PRE_2_8
    -
    -/* Compiler/platform uses old malloc()/free() prototypes (ugh) */
    -#undef ACE_HAS_OLD_MALLOC
    -
    -/* Uses ctime_r & asctime_r with only two parameters vs. three. */
    -#undef ACE_HAS_2_PARAM_ASCTIME_R_AND_CTIME_R
    -
    -/* Platform, e.g., Solaris 2.5, only supports SCHED_OTHER POSIX scheduling
    -   policy. */
    -#undef ACE_HAS_ONLY_SCHED_OTHER
    -
    -/* Use the semaphore implementation of ACE_Message_Queue rather than the
    -   emulated condition variable (NT and VxWorks). */
    -#undef ACE_HAS_OPTIMIZED_MESSAGE_QUEUE
    -
    -/* Platform has Orbix CORBA implementation */
    -#undef ACE_HAS_ORBIX
    -
    -/* Platform supports the OSF TLI timod STREAMS module */
    -#undef ACE_HAS_OSF_TIMOD_H
    -
    -/* Platform is an Intel Pentium microprocessor. */
    -#undef ACE_HAS_PENTIUM
    -
    -/* Platform contains  */
    -#undef ACE_HAS_POLL
    -
    -/* Platform supports POSIX O_NONBLOCK semantics */
    -#undef ACE_HAS_POSIX_NONBLOCK
    -
    -/* Platform supports POSIX real-time semaphores (e.g., VxWorks and Solaris) */
    -#undef ACE_HAS_POSIX_SEM
    -
    -/* Platform supports the POSIX struct timespec type */
    -#undef ACE_HAS_POSIX_TIME
    -
    -/* Platform supports the /proc file system and defines tid_t
    -   in  */
    -#undef ACE_HAS_PROC_FS
    -
    -/* Platform supports PowerPC time-base register. */
    -#undef ACE_HAS_POWERPC_TIMER
    -
    -/* Platform supports the prusage_t struct */
    -#undef ACE_HAS_PRUSAGE_T
    -
    -/* Platform supports POSIX Threads */
    -#undef ACE_HAS_PTHREADS
    -
    -/* Platform supports POSIX Threads .4a Draft 4 */
    -#undef ACE_HAS_PTHREADS_DRAFT4
    -
    -/* Platform supports POSIX Threads .4a Draft 6 */
    -#undef ACE_HAS_PTHREADS_DRAFT6
    -
    -/* Platform supports POSIX Threads .1c Draft 7 */
    -#undef ACE_HAS_PTHREADS_DRAFT7
    -
    -/* Platform supports POSIX.1c-1995 threads */
    -#undef ACE_HAS_PTHREADS_STD
    -
    -/* Platform has pthread_condattr_setkind_np(). */
    -#undef ACE_HAS_PTHREAD_CONDATTR_SETKIND_NP
    -
    -/* Platform has pthread_mutexattr_setkind_np(). */
    -#undef ACE_HAS_PTHREAD_MUTEXATTR_SETKIND_NP
    -
    -/* pthread.h declares an enum with PTHREAD_PROCESS_PRIVATE and
    -   PTHREAD_PROCESS_SHARED values */
    -#undef ACE_HAS_PTHREAD_PROCESS_ENUM
    -
    -/* Purify'ing.  Defined on command line. */
    -#undef ACE_HAS_PURIFY
    -
    -/* Quantify'ing.  Defined on command line. */
    -#undef ACE_HAS_QUANTIFY
    -
    -/* Platform will recurse infinitely on thread exits from TSS cleanup routines
    -   (e.g., AIX) */
    -#undef ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS
    -
    -/* Platform supports reentrant functions (i.e., all the POSIX *_r
    -   functions). */
    -#undef ACE_HAS_REENTRANT_FUNCTIONS
    -
    -/* Compiler typedefs wchar with char. */
    -#undef ACE_HAS_WCHAR_TYPEDEFS_CHAR
    -
    -/* Solaris for intel uses macros for fstat() and stat(), these are wrappers for
    -   _fxstat() and _xstat() uses of the macros.  Causes compile and runtime
    -   problems. */
    -#undef ACE_HAS_X86_STAT_MACROS
    -
    -/* Platform has support for multi-byte character support compliant with the
    -   XPG4 Worldwide Portability Interface wide-character classification. */
    -#undef ACE_HAS_XPG4_MULTIBYTE_CHAR
    -
    -/* No system support for replacing any previous mappings. */
    -#undef ACE_LACKS_AUTO_MMAP_REPLACEMENT
    -
    -/* Platform lacks support for the standard C++ auto_ptr class */
    -#undef ACE_LACKS_AUTO_PTR
    -
    -/* Compiler/platform standard C++ auto_ptr implementation lacks
    -   reset() method */
    -#undef ACE_AUTO_PTR_LACKS_RESET
    -
    -/* Compiler/platform lacks the standard C library bsearch() function  */
    -#undef ACE_LACKS_BSEARCH
    -
    -/* Platform has ACE_HAS_4_4BSD_SENDMSG_RECVMSG but does not define
    -   CMSG_DATA (cmsg) macro. */
    -#undef ACE_LACKS_CMSG_DATA_MACRO
    -
    -/* Platform has ACE_HAS_4_4BSD_SENDMSG_RECVMSG but its cmsghdr structure does
    -   not contain an 'unsigned char cmsg_data[0]' member.  (This may be
    -   'unsigned char __cmsg_data[0]' on some platforms, in which case we need
    -   another macro.) */
    -#undef ACE_LACKS_CMSG_DATA_MEMBER
    -
    -/* Compiler/platform lacks the standard C library qsort() function */
    -#undef ACE_LACKS_QSORT
    -
    -/* Platform lacks POSIX-style fcntl () */
    -#undef ACE_LACKS_FCNTL
    -
    -/* Platform lacks fsync() */
    -#undef ACE_LACKS_FSYNC
    -
    -/* Compiler does not support dynamic_cast.  Usually used
    -   with ACE_HAS_ANSI_CASTS */
    -#undef ACE_LACKS_RTTI
    -
    -/* Platform lacks readdir_r() */
    -#undef ACE_LACKS_READDIR_R
    -
    -/* Platform lacks seekdir() */
    -#undef ACE_LACKS_SEEKDIR
    -
    -/* Platform lacks telldir() */
    -#undef ACE_LACKS_TELLDIR
    -
    -/* Platform can't handle "inline" keyword correctly. */
    -#undef ACE_LACKS_INLINE_FUNCTIONS
    -
    -/* Iostreams are not supported adequately on the given platform. */
    -#undef ACE_LACKS_IOSTREAM_TOTALLY
    -
    -/* Platform does not support reentrant netdb functions (getprotobyname_r,
    -   getprotobynumber_r, gethostbyaddr_r, gethostbyname_r, getservbyname_r). */
    -#undef ACE_LACKS_NETDB_REENTRANT_FUNCTIONS
    -
    -/* Platform supports the POSIX regular expression library */
    -#undef ACE_HAS_REGEX
    -
    -/* Platform has special header for select(). */
    -#undef ACE_HAS_SELECT_H
    -
    -/* For Win32: Use Select_Reactor as default implementation of Reactor instead
    -   of WFMO_Reactor. */
    -#undef ACE_USE_SELECT_REACTOR_FOR_REACTOR_IMPL
    -
    -/* Compiler/platform defines a union semun for SysV shared memory */
    -#undef ACE_HAS_SEMUN
    -
    -/* Platform has a function to set t_errno (e.g., Tandem). */
    -#undef ACE_HAS_SET_T_ERRNO
    -
    -/* Platform has shm_open() */
    -#undef ACE_HAS_SHM_OPEN
    -
    -/* Platform supports SVR4 extended signals */
    -#undef ACE_HAS_SIGINFO_T
    -
    -/* Platform has bug with sigismember() (HP/UX 11). */
    -#undef ACE_HAS_SIGISMEMBER_BUG
    -
    -/* Platform/compiler has macros for sig{empty,fill,add,del}set (e.g., SCO and
    -   FreeBSD) */
    -#undef ACE_HAS_SIG_MACROS
    -
    -/* Platform supports the Win32 SignalObjectAndWait() function (WinNT 4.0 and
    -   beyond). */
    -#undef ACE_HAS_SIGNAL_OBJECT_AND_WAIT
    -
    -/* Automatically restart OS system calls when EINTR occurs */
    -#undef ACE_HAS_SIGNAL_SAFE_OS_CALLS
    -
    -/* Platform has the sigsuspend() system call */
    -#undef ACE_HAS_SIGSUSPEND
    -
    -/* Platform has the sigtimedwait() system call */
    -#undef ACE_HAS_SIGTIMEDWAIT
    -
    -/* Platform/compiler has the sigwait(2) prototype */
    -#undef ACE_HAS_SIGWAIT
    -
    -/* Compiler/platform defines the sig_atomic_t typedef */
    -#undef ACE_HAS_SIG_ATOMIC_T
    -
    -/* Compiler requires extern "C" functions for signals. */
    -#undef ACE_HAS_SIG_C_FUNC
    -
    -/* Platform supports new BSD inet_addr len field. */
    -#undef ACE_HAS_SIN_LEN
    -
    -/* OS/compiler uses size_t * rather than int * for socket lengths */
    -#undef ACE_HAS_SIZET_SOCKET_LEN
    -
    -/* Platform requires (struct sockaddr *) for msg_name field of
    -   struct msghdr. */
    -#undef ACE_HAS_SOCKADDR_MSG_NAME
    -
    -/* Compiler/platform provides the sys/sockio.h file */
    -#undef ACE_HAS_SOCKIO_H
    -
    -/* Platform provides socklen_t type, such as Linux with glibc2. */
    -#undef ACE_HAS_SOCKLEN_T
    -
    -/* Compiler has brain-damaged SPARCwork SunOS 4.x signal prototype... */
    -#undef ACE_HAS_SPARCWORKS_401_SIGNALS
    -
    -/* Compiler supports the ssize_t typedef */
    -#undef ACE_HAS_SSIZE_T
    -
    -/* Platform supports UNIX International Threads */
    -#undef ACE_HAS_STHREADS
    -
    -/* Platform has thr_yield() */
    -#undef ACE_HAS_THR_YIELD
    -
    -/* Platform/compiler supports Standard C++ Library */
    -#undef ACE_HAS_STANDARD_CPP_LIBRARY
    -
    -/* Compiler/platform supports struct strbuf */
    -#undef ACE_HAS_STRBUF_T
    -
    -/* Platform/compiler lacks strdup() (e.g., VxWorks, Chorus, WinCE) */
    -#undef ACE_HAS_STRDUP_EMULATION
    -
    -/* Platform supports STREAMS */
    -#undef ACE_HAS_STREAMS
    -
    -/* Platform supports STREAM pipes */
    -#undef ACE_HAS_STREAM_PIPES
    -
    -/* Compiler/platform supports strerror () */
    -#undef ACE_HAS_STRERROR
    -
    -/* Use the STRICT compilation mode on Win32. */
    -#undef ACE_HAS_STRICT
    -
    -/* Platform/Compiler supports a String class (e.g., GNU or Win32). */
    -#undef ACE_HAS_STRING_CLASS
    -
    -/* Platform has  (which contains bzero() prototype) */
    -#undef ACE_HAS_STRINGS
    -
    -/* Compiler/platform has strange hostent API for socket *_r() calls */
    -#undef ACE_HAS_STRUCT_NETDB_DATA
    -
    -/* Platform has void * as second parameter to gettimeofday and a has a
    -   prototype */
    -#undef ACE_HAS_SUNOS4_GETTIMEOFDAY
    -
    -/* Compiler has horrible SunOS 4.x signal handlers... */
    -#undef ACE_HAS_SUNOS4_SIGNAL_T
    -
    -/* Compiler/platform supports SVR4 dynamic linking semantics */
    -#undef ACE_HAS_SVR4_DYNAMIC_LINKING
    -
    -/* Compiler/platform supports SVR4 gettimeofday() prototype but doesn't have
    -   a prototype */
    -#undef ACE_HAS_SVR4_GETTIMEOFDAY
    -
    -/* Compiler/platform supports SVR4 signal typedef */
    -#undef ACE_HAS_SVR4_SIGNAL_T
    -
    -/* Compiler/platform supports SVR4 TLI (in particular, T_GETNAME stuff)... */
    -#undef ACE_HAS_SVR4_TLI
    -
    -/* HP/UX has an undefined syscall for GETRUSAGE... */
    -#undef ACE_HAS_SYSCALL_GETRUSAGE
    -
    -/* Compiler/platform contains the  file. */
    -#undef ACE_HAS_SYSCALL_H
    -
    -/* Platform provides  header */
    -#undef ACE_HAS_SYSENT_H
    -
    -/* Platform supports system configuration information */
    -#undef ACE_HAS_SYSINFO
    -
    -/* Platform supports System V IPC (most versions of UNIX, but not Win32) */
    -#undef ACE_HAS_SYSV_IPC
    -
    -/* Platform/compiler supports _sys_errlist symbol */
    -#undef ACE_HAS_SYS_ERRLIST
    -
    -/* Platform provides  header */
    -#undef ACE_HAS_SYS_FILIO_H
    -
    -/* Compiler/platform supports _sys_siglist array */
    -#undef ACE_HAS_SYS_SIGLIST
    -
    -/* Platform provides  header */
    -#undef ACE_HAS_SYS_XTI_H
    -
    -/* Compiler implements template specialization */
    -#undef ACE_HAS_TEMPLATE_SPECIALIZATION
    -
    -/* Compiler supports standard C++ template specializations
    -   (e.g. "template <>" syntax.) */
    -#undef ACE_HAS_STD_TEMPLATE_SPECIALIZATION
    -
    -/* Compiler supports standard C++ template method specializations
    -   (e.g. "template <>" syntax.) */
    -#undef ACE_HAS_STD_TEMPLATE_METHOD_SPECIALIZATION
    -
    -/* Compiler implements templates that support typedefs inside of classes used
    -   as formal arguments to a template class. */
    -#undef ACE_HAS_TEMPLATE_TYPEDEFS
    -
    -/* Platform has terminal ioctl flags like TCGETS and TCSETS. */
    -#undef ACE_HAS_TERM_IOCTLS
    -
    -/* Platform supports threads */
    -#undef ACE_HAS_THREADS
    -
    -/* Platform allows multiple threads to call accept() on the same port
    -   (e.g., WinNT). */
    -#undef ACE_HAS_THREAD_SAFE_ACCEPT
    -
    -/* Platform has thread_self() rather than pthread_self() (e.g., DCETHREADS
    -   and AIX) */
    -#undef ACE_HAS_THREAD_SELF
    -
    -/* Compiler/platform has thread-specific storage */
    -#undef ACE_HAS_THREAD_SPECIFIC_STORAGE
    -
    -/* The pthread_keycreate() routine *must* take extern C functions. */
    -#undef ACE_HAS_THR_C_DEST
    -
    -/* The pthread_create() routine *must* take extern C functions. */
    -#undef ACE_HAS_THR_C_FUNC
    -
    -/* Platform/compiler supports timezone * as second parameter to
    -   gettimeofday() and has a prototype*/
    -#undef ACE_HAS_TIMEZONE_GETTIMEOFDAY
    -
    -/* Platform supports TLI timod STREAMS module */
    -#undef ACE_HAS_TIMOD_H
    -
    -/* Platform supports TLI tiuser header */
    -#undef ACE_HAS_TIUSER_H
    -
    -/* Platform does not protect  with extern "C" */
    -#undef ACE_HAS_TIUSER_H_BROKEN_EXTERN_C
    -
    -/* Platform supports TLI.  Also see ACE_TLI_TCP_DEVICE. */
    -#undef ACE_HAS_TLI
    -
    -/* Platform provides TLI function prototypes */
    -#undef ACE_HAS_TLI_PROTOTYPES
    -
    -/* ACE provides TSS emulation.  See also ACE_DEFAULT_THREAD_KEYS. */
    -#undef ACE_HAS_TSS_EMULATION
    -
    -/* Platform supports ualarm() */
    -#undef ACE_HAS_UALARM
    -
    -/* Platform supports ucontext_t (which is used in the extended signal API). */
    -#undef ACE_HAS_UCONTEXT_T
    -
    -/* The wait() system call takes a (union wait *) rather than int * */
    -#undef ACE_HAS_UNION_WAIT
    -
    -/* Has inconsistent SVR4 signal stuff, but not the same as the other
    -   platforms */
    -#undef ACE_HAS_UNIXWARE_SVR4_SIGNAL_T
    -
    -/* Platform/compiler supports UNICODE */
    -#undef ACE_HAS_UNICODE
    -
    -/* Platform has  header file */
    -#undef ACE_HAS_UTIME
    -
    -/* Most APIs in platform/compiler supports UNICODE. (No char version
    -   available.) */
    -#undef ACE_HAS_MOSTLY_UNICODE_APIS
    -
    -/* Compiler supports explicit constructors. */
    -#undef ACE_HAS_EXPLICIT_KEYWORD
    -
    -/* Compiler supports the C++ `mutable' keyword. */
    -#undef ACE_HAS_MUTABLE_KEYWORD
    -
    -/* Compiler supports the C++ typename keyword */
    -#undef ACE_HAS_TYPENAME_KEYWORD
    -
    -/* Compiler supports the new using keyword for C++ namespaces. */
    -#undef ACE_HAS_USING_KEYWORD
    -
    -/* Prints out console message in ACE_NOTSUP.  Useful for tracking down origin
    -   of ACE_NOTSUP. */
    -#undef ACE_HAS_VERBOSE_NOTSUP
    -
    -/* Platform requires void * for mmap(). */
    -#undef ACE_HAS_VOIDPTR_MMAP
    -
    -/* OS/compiler uses void * arg 4 setsockopt() rather than const char * */
    -#undef ACE_HAS_VOIDPTR_SOCKOPT
    -
    -/* The Win32 platform support TryEnterCriticalSection() (WinNT 4.0 and
    -   beyond) */
    -#undef ACE_HAS_WIN32_TRYLOCK
    -
    -/* The Win32 platform supports WinSock 2.0 */
    -#undef ACE_HAS_WINSOCK2
    -
    -/* Platform has the XLI version of TLI */
    -#undef ACE_HAS_XLI
    -
    -/* Platform has Xt Intrinsics Toolkit */
    -#undef ACE_HAS_XT
    -
    -/* Platform does not have Motif X toolkit available */
    -#undef ACE_LACKS_MOTIF
    -
    -/* Platform has XTI (X/Open-standardized superset of TLI).  Implies
    -   ACE_HAS_TLI but uses a different header file. */
    -#undef ACE_HAS_XTI
    -
    -/* Platform lacks access() (e.g., VxWorks and Chorus) */
    -#undef ACE_LACKS_ACCESS
    -
    -/* Platform can not build ace/IOStream{,_T}.cpp.  This does not necessarily
    -   mean that the platform does not support iostreams. */
    -#undef ACE_LACKS_ACE_IOSTREAM
    -
    -/* Platform lacks condition variables (e.g., Win32 and VxWorks) */
    -#undef ACE_LACKS_COND_T
    -
    -/* pthread_cond_timedwait does *not* reset the time argument when
    -   the lock is acquired. */
    -#undef ACE_LACKS_COND_TIMEDWAIT_RESET
    -
    -/* Platform has no implementation of pthread_condattr_setpshared(), even
    -   though it supports pthreads! */
    -#undef ACE_LACKS_CONDATTR_PSHARED
    -
    -/* Platform uses struct strbuf * rather than const struct strbuf * (e.g.,
    -   HP/UX 10.x) */
    -#undef ACE_LACKS_CONST_STRBUF_PTR
    -
    -/* Platform forgot const in cond_timewait (e.g., HP/UX). */
    -#undef ACE_LACKS_CONST_TIMESPEC_PTR
    -
    -/* Platform lacks difftime() implementation */
    -#undef ACE_LACKS_DIFFTIME
    -
    -/* Platform lacks the exec() family of system calls (e.g., Win32, VxWorks,
    -   Chorus) */
    -#undef ACE_LACKS_EXEC
    -
    -/* Platform lacks file locking mechanism */
    -#undef ACE_LACKS_FILELOCKS
    -
    -/* Platform does not support floating point operations */
    -#undef ACE_LACKS_FLOATING_POINT
    -
    -/* Platform lacks the fork() system call (e.g., Win32, VxWorks, Chorus) */
    -#undef ACE_LACKS_FORK
    -
    -/* Platform lacks the getopt() prototype (e.g., LynxOS) */
    -#undef ACE_LACKS_GETOPT_PROTO
    -
    -/* Platform lacks getpgid() call (e.g., Win32, Chorus, and FreeBSD). */
    -#undef ACE_LACKS_GETPGID
    -
    -/* Platform lacks getppid() call. */
    -#undef ACE_LACKS_GETPPID
    -
    -/* Platforms lacks getservbyname() (e.g., VxWorks and Chorus). */
    -#undef ACE_LACKS_GETSERVBYNAME
    -
    -/* iostream header does not declare ipfx (), opfx (), etc. */
    -#undef ACE_LACKS_IOSTREAM_FX
    -
    -/* Platform lacks streambuf "linebuffered ()". */
    -#undef ACE_LACKS_LINEBUFFERED_STREAMBUF
    -
    -/* Compiler/platform does not support the unsigned long long datatype. */
    -#undef ACE_LACKS_LONGLONG_T
    -
    -/* Platform lacks the lstat() function. */
    -#undef ACE_LACKS_LSTAT
    -
    -/* Platform does not have u_longlong_t typedef */
    -#undef ACE_LACKS_U_LONGLONG_T
    -
    -/* Platform lacks madvise() (e.g., Linux) */
    -#undef ACE_LACKS_MADVISE
    -
    -/* Platform lacks malloc.h */
    -#undef ACE_LACKS_MALLOC_H
    -
    -/* Platform lacks memory.h (e.g., VxWorks and Chorus) */
    -#undef ACE_LACKS_MEMORY_H
    -
    -/* Platform lacks mkfifo(), e.g. VxWorks, Chorus, pSoS, and WinNT. */
    -#undef ACE_LACKS_MKFIFO
    -
    -/* ACE has no mktemp() */
    -#undef ACE_LACKS_MKTEMP
    -
    -/* The platform doesn't have mmap(2) (e.g., SCO UNIX). */
    -#undef ACE_LACKS_MMAP
    -
    -/* Platform/compiler doesn't have open() mode masks. */
    -#undef ACE_LACKS_MODE_MASKS
    -
    -/* The platform doesn't have mprotect(2) (e.g., EPLX real time OS from CDC
    -   (based on LYNX)) */
    -#undef ACE_LACKS_MPROTECT
    -
    -/* Platform defines ACE_HAS_MSG, but lacks msg_accrights{,len}. */
    -#undef ACE_LACKS_MSG_ACCRIGHTS
    -
    -/* Platform lacks struct msgbuf (e.g., NT and MSV). */
    -#undef ACE_LACKS_MSGBUF_T
    -
    -/* Platform lacks msync() */
    -#undef ACE_LACKS_MSYNC
    -
    -/* Platform doesn't support "sync" third argument to msync (?) */
    -#undef ACE_HAS_BROKEN_NETBSD_MSYNC
    -
    -/* Platform doesn't support tempnam */
    -#undef ACE_LACKS_TEMPNAM
    -
    -/* Platform lacks pthread_mutexattr_setpshared(). */
    -#undef ACE_LACKS_MUTEXATTR_PSHARED
    -
    -/* OS requires non-null status pointer for ::pthread_join () */
    -#undef ACE_LACKS_NULL_PTHREAD_STATUS
    -
    -/* Platform lacks  (e.g., MVS) */
    -#undef ACE_LACKS_PARAM_H
    -
    -/* Platform lacks named POSIX semaphores (e.g., Chorus) */
    -#undef ACE_LACKS_NAMED_POSIX_SEM
    -
    -/* Platform/compiler lacks {get,set}rlimit() function (e.g., VxWorks, Chorus,
    -   and SCO UNIX) */
    -#undef ACE_LACKS_RLIMIT
    -
    -/* Platform/compiler lacks {get,set}rlimit() prototypes (e.g., Tandem) */
    -#undef ACE_LACKS_RLIMIT_PROTOTYPE
    -
    -/* Platform lacks POSIX prototypes for certain System V functions like shared
    -   memory and message queues. */
    -#undef ACE_LACKS_POSIX_PROTOTYPES
    -
    -/* Platform lacks POSIX prototypes for certain System V functions like shared
    -   memory and message queues. */
    -#undef ACE_LACKS_SOME_POSIX_PROTOTYPES
    -
    -/* Compiler complains about use of obsolete "#pragma once" */
    -#undef ACE_LACKS_PRAGMA_ONCE
    -
    -/* Platform lacks pri_t (e.g., Tandem NonStop UNIX). */
    -#undef ACE_LACKS_PRI_T
    -
    -/* Platform lack pthread_attr_setstackaddr() */
    -#undef ACE_LACKS_THREAD_STACK_ADDR
    -
    -/* Platform lacks pthread_cancel() */
    -#undef ACE_LACKS_PTHREAD_CANCEL
    -
    -/* Platform lacks pthread_sigmask () */
    -#undef ACE_LACKS_PTHREAD_SIGMASK
    -
    -/* Platform lacks pthread_thr_sigsetmask (e.g., MVS, HP/UX, and OSF/1 3.2) */
    -#undef ACE_LACKS_PTHREAD_THR_SIGSETMASK
    -
    -/* Platfrom lack pthread_yield() support. */
    -#undef ACE_LACKS_PTHREAD_YIELD
    -
    -/* Platform lacks, getpwnam(), etc. */
    -#undef ACE_LACKS_PWD_FUNCTIONS
    -
    -/* Platform lacks getpwnam_r() methods (e.g., SGI 6.2). */
    -#undef ACE_LACKS_PWD_REENTRANT_FUNCTIONS
    -
    -/* Platform lacks the readlink() function. */
    -#undef ACE_LACKS_READLINK
    -
    -/* Platform lacks the rename() function. */
    -#undef ACE_LACKS_RENAME
    -
    -/* Platform lacks recvmsg() */
    -#undef ACE_LACKS_RECVMSG
    -
    -/* Platform lacks readers/writer locks. */
    -#undef ACE_LACKS_RWLOCK_T
    -
    -/* Platform lacks a working sbrk() (e.g., Win32 and VxWorks) */
    -#undef ACE_LACKS_SBRK
    -
    -/* Platform lacks struct sembuf (e.g., Win32 and VxWorks) */
    -#undef ACE_LACKS_SEMBUF_T
    -
    -/* Platform lacks pthread_attr_setdetachstate() (e.g., HP/UX 10.x) */
    -#undef ACE_LACKS_SETDETACH
    -
    -/* Platform lacks pthread_attr_setsched() (e.g. MVS) */
    -#undef ACE_LACKS_SETSCHED
    -
    -/* Platform lacks struct sigaction (e.g., Win32 and Chorus) */
    -#undef ACE_LACKS_SIGACTION
    -
    -/* Platform lacks "signed char" type (broken!) */
    -#undef ACE_LACKS_SIGNED_CHAR
    -
    -/* Platform lacks signal sets (e.g., Chorus and Win32) */
    -#undef ACE_LACKS_SIGSET
    -
    -/* Platform/compiler lacks strrchr () function. */
    -#undef ACE_LACKS_STRRCHR
    -
    -/* Platforms/compiler lacks the sys_nerr variable (e.g., VxWorks and MVS). */
    -#undef ACE_LACKS_SYS_NERR
    -
    -/* Platform lacks sys/msg.h (e.g., Chorus and VxWorks) */
    -#undef ACE_LACKS_SYSV_MSG_H
    -
    -/* Platform lacks SYSV message queue prototypes */
    -#undef ACE_LACKS_SYSV_MSQ_PROTOS
    -
    -/* Platform lacks key_t (e.g., Chorus, VxWorks, Win32) */
    -#undef ACE_LACKS_KEY_T
    -
    -/* Platform lacks sendmsg() */
    -#undef ACE_LACKS_SENDMSG
    -
    -/* Platform lacks the si_addr field of siginfo_t (e.g., VxWorks and
    -   HP/UX 10.x) */
    -#undef ACE_LACKS_SI_ADDR
    -
    -/* Platform lacks System V shared memory (e.g., Win32 and VxWorks) */
    -#undef ACE_LACKS_SYSV_SHMEM
    -
    -/* Platform lacks the siginfo.h include file (e.g., MVS) */
    -#undef ACE_LACKS_SIGINFO_H
    -
    -/* Platform doesn't support SO_SNDBUF/SO_RCVBUF (used in TAO) */
    -#undef ACE_LACKS_SOCKET_BUFSIZ
    -
    -/* Platform lacks the socketpair() call (e.g., SCO UNIX) */
    -#undef ACE_LACKS_SOCKETPAIR
    -
    -/* Compiler doesn't support static data member templates */
    -#undef ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES
    -
    -/* Compiler/platform lacks strcasecmp() (e.g., DG/UX, UNIXWARE, VXWORKS) */
    -#undef ACE_LACKS_STRCASECMP
    -
    -/* Platform doesn't define struct strrecvfd. */
    -#undef ACE_LACKS_STRRECVFD
    -
    -/* Platform doesn't have syscall() prototype */
    -#undef ACE_LACKS_SYSCALL
    -
    -/* Platform lacks  header file */
    -#undef ACE_LACKS_SYS_TYPES_H
    -
    -/* Header files lack t_errno for TLI */
    -#undef ACE_LACKS_T_ERRNO
    -
    -/* Platform doesn't have netinet/tcp.h */
    -#undef ACE_LACKS_TCP_H
    -
    -/* OS does not support TCP_NODELAY */
    -#undef ACE_LACKS_TCP_NODELAY
    -
    -/* Platform lacks pthread_attr_setscope() */
    -#undef ACE_LACKS_THREAD_PROCESS_SCOPING
    -
    -/* Platform lacks pthread_attr_setstacksize() (e.g., Linux pthreads) */
    -#undef ACE_LACKS_THREAD_STACK_SIZE
    -
    -/* MIT pthreads platform lacks the timedwait prototypes */
    -#undef ACE_LACKS_TIMEDWAIT_PROTOTYPES
    -
    -/* Platform does not define timepec_t as a typedef for struct timespec. */
    -#undef ACE_LACKS_TIMESPEC_T
    -
    -/* Platform doesn't have truncate() (e.g., vxworks) */
    -#undef ACE_LACKS_TRUNCATE
    -
    -/* Platform/compiler lacks the ualarm() prototype (e.g., Solaris) */
    -#undef ACE_LACKS_UALARM_PROTOTYPE
    -
    -/* Compiler does not have any istream operator>> for chars, u_chars, or
    -   signed chars. */
    -#undef ACE_LACKS_CHAR_RIGHT_SHIFTS
    -
    -/* Compiler does not have operator>> (istream &, u_char *) or
    -   operator>> (istream &, signed char *) */
    -#undef ACE_LACKS_CHAR_STAR_RIGHT_SHIFTS
    -
    -/* Platform lacks the ucontext.h file */
    -#undef ACE_LACKS_UCONTEXT_H
    -
    -/* Platform lacks the unistd.h file (e.g., VxWorks and Win32) */
    -#undef ACE_LACKS_UNISTD_H
    -
    -/* ACE platform has no UNIX domain sockets */
    -#undef ACE_LACKS_UNIX_DOMAIN_SOCKETS
    -
    -/* Platform lacks full signal support (e.g., Win32 and Chorus). */
    -#undef ACE_LACKS_UNIX_SIGNALS
    -
    -/* Platform lacks struct utsname (e.g., Win32 and VxWorks) */
    -#undef ACE_LACKS_UTSNAME_T
    -
    -/* Platform lacks wchar_t typedef */
    -#undef ACE_LACKS_WCHAR_T
    -
    -/* The bind() call will not select the port if it's 0. */
    -#undef ACE_LACKS_WILDCARD_BIND
    -
    -/* Renames "main (int, char *[])", for platforms such as g++/VxWorks that
    -   don't allow main.  Requires the use of ACE_HAS_NONSTATIC_OBJECT_MANAGER. */
    -#undef ACE_MAIN
    -
    -/* Compile using multi-thread libraries */
    -#undef ACE_MT_SAFE
    -
    -/* Turns off debugging features */
    -#undef ACE_NDEBUG
    -
    -/* Necessary with some compilers to pass ACE_TTY_IO as parameter to
    -   DEV_Connector. */
    -#undef ACE_NEEDS_DEV_IO_CONVERSION
    -
    -/* Required by platforms with small default stacks. */
    -#undef ACE_NEEDS_HUGE_THREAD_STACKSIZE
    -
    -/* OS has LWPs, and when the priority of a bound thread is set, then the LWP
    -   priority must be set also. */
    -#undef ACE_NEEDS_LWP_PRIO_SET
    -
    -/* Platform doesn't define readv, so use our own */
    -#undef ACE_LACKS_READV
    -
    -/* Platform doesn't define writev, so use our own */
    -#undef ACE_LACKS_WRITEV
    -
    -/* Platform needs regexpr.h for regular expression support */
    -#undef ACE_NEEDS_REGEXPR_H
    -
    -/* Platform needs to #include  to get thread scheduling defs. */
    -#undef ACE_NEEDS_SCHED_H
    -
    -/*  doesn't automatically #include  */
    -#undef ACE_LACKS_SYSTIME_H
    -
    -/* Compiler's 'new' throws exception on failure (ANSI C++ behavior). */
    -#undef ACE_NEW_THROWS_EXCEPTIONS
    -
    -/* Turns off the LM_DEBUG and LM_ERROR logging macros... */
    -#undef ACE_NLOGGING
    -
    -/* Turns off the tracing feature. */
    -#undef ACE_NTRACE
    -
    -/* Defines the page size of the system (not used on Win32 or with
    -   ACE_HAS_GETPAGESIZE). */
    -#undef ACE_PAGE_SIZE
    -
    -/* Platform redefines the t_... names (UnixWare) */
    -#undef ACE_REDEFINES_XTI_FUNCTIONS
    -
    -/* Platform uses int for select() rather than fd_set */
    -#undef ACE_SELECT_USES_INT
    -
    -/* Compiler's template mechanism must use a pragma.  This is used for AIX's
    -   C++ compiler. */
    -#undef ACE_TEMPLATES_REQUIRE_PRAGMA
    -
    -/* Compiler's template mechanim must see source code (i.e., .cpp files).  This
    -   is used for GNU G++. */
    -#undef ACE_TEMPLATES_REQUIRE_SOURCE
    -
    -/* Compiler's template instantiation mechanism supports the use of explicit
    -   C++ specializations for all used templates. This is also used for GNU G++
    -   if you don't use the "repo" patches. */
    -#undef ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION
    -
    -/* Compiler's template instantiation mechanism supports the use of
    -   "#pragma instantiate".  Edison Design Group compilers, e.g., SGI C++ and
    -   Green Hills 1.8.8 and later, support this. */
    -#undef ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA
    -
    -/* Compiler requires a definition for a "hidden" function, e.g., a private,
    -   unimplemented copy constructor or assignment operator.  The SGI C++
    -   compiler needs this, in template classes, with
    -   ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA. */
    -#undef ACE_NEEDS_FUNC_DEFINITIONS
    -
    -/* Device the platform uses for TCP on TLI.  Only needed if not /dev/tcp. */
    -#undef ACE_TLI_TCP_DEVICE
    -
    -/* The OS/platform supports the poll() event demultiplexor */
    -#undef ACE_USE_POLL
    -
    -/* Platform has broken poll() */
    -#undef ACE_POLL_IS_BROKEN
    -
    -/* Platform uses assembly symbols instead of C symbols in dlsym() */
    -#undef ACE_USES_ASM_SYMBOL_IN_DLSYM
    -
    -/* When linking MFC as a static library is desired */
    -#undef ACE_USES_STATIC_MFC
    -
    -/* Platform has its standard c++ library in the namespace std. */
    -#undef ACE_USES_STD_NAMESPACE_FOR_STDCPP_LIB
    -
    -/* A parameter list indicating the version of WinSock (e.g., "1, 1" is
    -   version 1.1). */
    -#undef ACE_WSOCK_VERSION
    -
    -
    -
    -/*   @BOTTOM@   */
    -/* All lines below "@BOTTOM@" will be placed at the bottom of config.h.in. */
    -
    -
    -#endif /* ACE_CONFIG_H */
    diff --git a/ace-config.1.in b/ace-config.1.in
    deleted file mode 100644
    index 1b3c0dd5f61..00000000000
    --- a/ace-config.1.in
    +++ /dev/null
    @@ -1,58 +0,0 @@
    -.\" Process this file with
    -.\" groff -man -Tascii ace-config.1
    -.\"
    -.TH ace-config 1 "DECEMBER 1998" "Library Configuration" "User Manuals"
    -.SH NAME
    -ace-config \- Display ACE Library Configuration
    -.SH SYNOPSIS
    -.B ace-config 
    -.I OPTION 
    -.B [
    -.I OPTION
    -.B ... ] 
    -.B [
    -.I LIBRARY
    -.B ]
    -.SH DESCRIPTION
    -.B ace-config
    -is a script that is used to display what compiler flags and libraries were
    -used when ACE was built.
    -.SH OPTIONS
    -.IP --version
    -ACE version information
    -.IP --help
    -display help message and exit
    -.IP --cxx
    -C++ compiler used for compiling
    -.IP --cxxflags
    -C++ pre-processor and compiler flags
    -.IP --libs
    -library linking information
    -.IP --libs-only-L
    -the -L/-R part of
    -.I --libs
    -.IP --libs-only-l
    -the -l part of 
    -.I --libs
    -.SH LIBRARY
    -.I LIBRARY
    -refers to the library for which the specified configuration is desired.  Valid
    -libraries are:
    -.IP ace
    -the ACE library
    -.IP netsvcs
    -the ACE net services library
    -.IP tao
    -the ACE ORB (TAO) library
    -.SH FILES
    -.I @libdir@/aceConf.sh
    -.RS
    -Additional ACE related library configuration information.
    -.RE
    -.SH BUGS
    -No option to display which C++ compiler was used to compile ACE currently
    -exists.
    -.SH AUTHOR
    -Ossama Othman 
    -.SH "SEE ALSO"
    -.BR tao-config (1)
    diff --git a/ace-config.in b/ace-config.in
    deleted file mode 100644
    index 25e92e47fef..00000000000
    --- a/ace-config.in
    +++ /dev/null
    @@ -1,209 +0,0 @@
    -#!/bin/sh
    -#
    -# $Id$
    -
    -set -e
    -
    -prefix=@prefix@
    -exec_prefix=@exec_prefix@
    -
    -bindir=@bindir@
    -sbindir=@sbindir@
    -libexecdir=@libexecdir@
    -datadir=@datadir@
    -sysconfdir=@sysconfdir@
    -sharedstatedir=@sharedstatedir@
    -localstatedir=@localstatedir@
    -libdir=@libdir@
    -infodir=@infodir@
    -mandir=@mandir@
    -includedir=@includedir@
    -
    -pkgdatadir=${datadir}/@PACKAGE@
    -pkglibdir=${libdir}/@PACKAGE@
    -pkgincludedir=${includedir}/@PACKAGE@
    -
    -usage()
    -{
    -    cat <Conf.sh
    -
    -is looked in for the necessary information. 
    -EOF
    -
    -    exit $1
    -}
    -
    -if test $# -eq 0; then
    -    usage 1
    -fi
    -
    -cxx=false
    -cxxflags=false
    -libs_L=false
    -libs_l=false
    -
    -while test $# -gt 0; do
    -    case "$1" in
    -    -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
    -    *) optarg= ;;
    -    esac
    -
    -    case $1 in
    -    --version)
    -	echo @PACKAGE@ @VERSION@
    -	exit 0
    -	;;
    -    --exec-prefix)
    -	echo $exec_prefix
    -	exit 0
    -	;;
    -    --prefix)
    -	echo $prefix
    -	exit 0
    -	;;
    -    --*dir)
    -	dirname=\$`echo $1 | sed -e 's,^--,,'`
    -	dirname=`eval echo $dirname`
    -	test -z "$dirname" && exit 1
    -	echo $dirname
    -	exit 0
    -	;;
    -    --help)
    -	usage 0
    -	;;
    -    --cxx)
    -        cxx=true
    -        ;;
    -    --cxxflags)
    -       	cxxflags=true
    -       	;;
    -    --libs)
    -       	libs_L=true
    -	libs_l=true
    -       	;;
    -    --libs-only-L)
    -	libs_L=true
    -	;;
    -    --libs-only-l)
    -	libs_l=true
    -	;;
    -    --*)
    -	usage 1
    -	;;
    -    ace)
    -        the_compiler="@CXX@"
    -       	the_libs="$the_libs @ACE_LIBDIR@ @ACE_LIBS@"
    -  	the_flags="$the_flags @ACE_INCLUDEDIR@ @CXXFLAGS@"
    -	;;
    -    netsvcs)
    -        echo "Currently unsupported."
    -        exit 1
    -#      	the_libs="$the_libs @ACE_LIBDIR@ @NETSVCS_LIBS@"
    -#  	the_flags="$the_flags @ACE_INCLUDEDIR@ @CXXFLAGS@"
    -	;;
    -    tao)
    -        # The TAO compiler should be the same as ACE's compiler!
    -        the_compiler="`tao-config --cxx tao`"
    -        the_libs="$the_libs `tao-config --libs tao`"
    -        the_flags="$the_flags `tao-config --cxxflags tao`"
    -	;;
    -    *)
    -	cnf_sh=${libdir}/${1}Conf.sh
    -	if test -f ${cnf_sh}; then
    -	    . ${cnf_sh}
    -	    up_name=`echo $1 | tr a-z A-Z`
    -            cnf_compiler=\$${up_name}_COMPILER
    -	    cnf_libdir=\$${up_name}_LIBDIR
    -	    cnf_libs=\$${up_name}_LIBS
    -	    cnf_flags=\$${up_name}_INCLUDEDIR
    -            the_compiler="`eval echo $cnf_compiler`"
    -	    the_libs="$the_libs `eval echo $cnf_libdir` `eval echo $cnf_libs`"
    -	    the_flags="$the_flags `eval echo $cnf_flags`"
    -	else
    -	    echo Unknown library \`$1\' 1>&2
    -	fi
    -	;;
    -    esac
    -    shift
    -done
    -
    -if $cxx; then
    -    all_flags="$the_compiler"
    -fi
    -
    -if $cxxflags; then
    -    all_flags="$all_flags $the_flags"
    -fi
    -
    -if $libs_L || $libs_l; then
    -    all_flags="$all_flags $the_libs"
    -fi
    -
    -if test -z "$all_flags" || test "x$all_flags" = "x "; then
    -    exit 1
    -fi
    -
    -# Straight out any possible duplicates, but be careful to
    -# get `-lfoo -lbar -lbaz' for `-lfoo -lbaz -lbar -lbaz'
    -other_flags=
    -lib_L_flags=
    -rev_libs=
    -for i in $all_flags; do
    -    case "$i" in
    -    # a library, save it for later, in reverse order
    -    -l*) rev_libs="$i $rev_libs" ;;
    -    -L*|-R*)
    -	if $libs_L; then
    -	    case " $lib_L_flags " in
    -	    *\ $i\ *) ;;			# already there
    -	    *) lib_L_flags="$lib_L_flags $i" ;;	# add it to output
    -	    esac 
    -	fi;;
    -    *)
    -	case " $other_flags " in
    -	*\ $i\ *) ;;				# already there
    -	*) other_flags="$other_flags $i" ;;	# add it to output
    -        esac ;;
    -    esac
    -done
    -
    -ord_libs=
    -if $libs_l; then
    -    for i in $rev_libs; do
    -	case " $ord_libs " in
    -	*\ $i\ *) ;;			# already there
    -	*) ord_libs="$i $ord_libs" ;;	# add it to output in reverse order
    -	esac
    -    done
    -fi
    -
    -echo $other_flags $lib_L_flags $ord_libs
    -
    -exit 0
    diff --git a/ace/ACE.cpp b/ace/ACE.cpp
    deleted file mode 100644
    index fc052e328b9..00000000000
    --- a/ace/ACE.cpp
    +++ /dev/null
    @@ -1,3549 +0,0 @@
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/ACE.h"
    -#include "ace/Handle_Set.h"
    -#include "ace/Auto_Ptr.h"
    -#include "ace/INET_Addr.h"
    -#include "ace/Object_Manager.h"
    -#include "ace/SString.h"
    -#include "ace/Version.h"
    -
    -#if defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/ACE.i"
    -#endif /* ACE_LACKS_INLINE_FUNCTIONS */
    -
    -ACE_RCSID(ace, ACE, "$Id$")
    -
    -// Static data members.
    -u_int ACE::init_fini_count_ = 0;
    -
    -// Keeps track of whether we're in some global debug mode.
    -char ACE::debug_ = 0;
    -
    -// Hex characters.
    -const char ACE::hex_chars_[] = "0123456789abcdef";
    -
    -// Size of a VM page.
    -size_t ACE::pagesize_ = 0;
    -
    -// Size of allocation granularity.
    -size_t ACE::allocation_granularity_ = 0;
    -
    -int
    -ACE::out_of_handles (int error)
    -{
    -  // EMFILE is common to all platforms.
    -  if (error == EMFILE ||
    -#if defined (ACE_WIN32)
    -      // On Win32, we need to check for ENOBUFS also.
    -      error == ENOBUFS ||
    -#elif defined (HPUX)
    -      // On HPUX, we need to check for EADDRNOTAVAIL also.
    -      error == EADDRNOTAVAIL ||
    -#elif defined (linux)
    -      // On linux, we need to check for ENOENT also.
    -      error == ENOENT ||
    -      // For RedHat5.2, need to check for EINVAL too.
    -      error == EINVAL ||
    -      // Without threads check for EOPNOTSUPP
    -      error == EOPNOTSUPP ||
    -#elif defined (sun)
    -      // On sun, we need to check for ENOSR also.
    -      error == ENOSR ||
    -#elif defined (__FreeBSD__)
    -      // On FreeBSD we need to check for EOPNOTSUPP (LinuxThreads) or
    -      // ENOSYS (libc_r threads) also.
    -       error == EOPNOTSUPP ||
    -       error == ENOSYS ||
    -#endif /* ACE_WIN32 */
    -      error == ENFILE)
    -    return 1;
    -  else
    -    return 0;
    -}
    -
    -int
    -ACE::init (void)
    -{
    -  // Don't use ACE_TRACE, because Object_Manager might not have been
    -  // instantiated yet.
    -  // ACE_TRACE ("ACE::init");
    -
    -  ++init_fini_count_;
    -
    -  return ACE_Object_Manager::instance ()->init ();
    -}
    -
    -int
    -ACE::fini (void)
    -{
    -  ACE_TRACE ("ACE::fini");
    -
    -  if (init_fini_count_ > 0)
    -    {
    -      if (--init_fini_count_ == 0)
    -        return ACE_Object_Manager::instance ()->fini ();
    -      else
    -        // Wait for remaining fini () calls.
    -        return 1;
    -    }
    -  else
    -    // More ACE::fini () calls than ACE::init () calls.  Bad
    -    // application!
    -    return -1;
    -}
    -
    -u_int
    -ACE::major_version (void)
    -{
    -  return ACE_MAJOR_VERSION;
    -}
    -
    -u_int
    -ACE::minor_version (void)
    -{
    -  return ACE_MINOR_VERSION;
    -}
    -
    -u_int
    -ACE::beta_version (void)
    -{
    -  return ACE_BETA_VERSION;
    -}
    -
    -const char*
    -ACE::compiler_name (void)
    -{
    -#ifdef ACE_CC_NAME
    -  return ACE_CC_NAME;
    -#else
    -  return "";
    -#endif
    -}
    -
    -u_int
    -ACE::compiler_major_version (void)
    -{
    -#ifdef ACE_CC_MAJOR_VERSION
    -  return ACE_CC_MAJOR_VERSION;
    -#else
    -  return 0;
    -#endif
    -}
    -
    -u_int
    -ACE::compiler_minor_version (void)
    -{
    -#ifdef ACE_CC_MINOR_VERSION
    -  return ACE_CC_MINOR_VERSION;
    -#else
    -  return 0;
    -#endif
    -}
    -
    -u_int
    -ACE::compiler_beta_version (void)
    -{
    -#ifdef ACE_CC_BETA_VERSION
    -  return ACE_CC_BETA_VERSION;
    -#else
    -  return 0;
    -#endif
    -}
    -
    -int
    -ACE::terminate_process (pid_t pid)
    -{
    -#if defined (ACE_HAS_PHARLAP)
    -  ACE_UNUSED_ARG (pid);
    -  ACE_NOTSUP_RETURN (-1);
    -#elif defined (ACE_WIN32)
    -  // Create a handle for the given process id.
    -  ACE_HANDLE process_handle =
    -    ::OpenProcess (PROCESS_TERMINATE,
    -                   FALSE, // New handle is not inheritable.
    -                   pid);
    -
    -  if (process_handle == ACE_INVALID_HANDLE
    -      || process_handle == 0)
    -    return -1;
    -  else
    -    {
    -      // Kill the process associated with process_handle.
    -      BOOL terminate_result =
    -        ::TerminateProcess (process_handle, 0);
    -      // Free up the kernel resources.
    -      ACE_OS::close (process_handle);
    -      return terminate_result;
    -    }
    -#elif defined (CHORUS)
    -  KnCap cap_;
    -
    -  // Use the pid to find out the actor's capability, then kill it.
    -  if (::acap (AM_MYSITE, pid, &cap_) == 0)
    -    return ::akill (&cap_);
    -  else
    -    return -1;
    -#else
    -  return ACE_OS::kill (pid, 9);
    -#endif /* ACE_WIN32 */
    -}
    -
    -int
    -ACE::process_active (pid_t pid)
    -{
    -#if !defined(ACE_WIN32)
    -  int retval = ACE_OS::kill (pid, 0);
    -
    -  if (retval == 0)
    -    return 1;
    -  else if (errno == ESRCH)
    -    return 0;
    -  else
    -    return -1;
    -#else
    -  // Create a handle for the given process id.
    -  ACE_HANDLE process_handle =
    -    ::OpenProcess (PROCESS_QUERY_INFORMATION, FALSE, pid);
    -  if (process_handle == ACE_INVALID_HANDLE
    -      || process_handle == 0)
    -    return 0;
    -  else
    -    {
    -      DWORD status;
    -      if (::GetExitCodeProcess (process_handle,
    -                                &status) == 0
    -          || status != STILL_ACTIVE)
    -        return 0;
    -      else
    -        return 1;
    -    }
    -#endif /* ACE_WIN32 */
    -}
    -
    -// Split a string up into 'token'-delimited pieces, ala Perl's
    -// "split".
    -
    -char *
    -ACE::strsplit_r (char *str,
    -                 const char *token,
    -                 char *&next_start)
    -{
    -  char *result = 0;
    -
    -  if (str != 0)
    -    next_start = str;
    -
    -  if (next_start != 0)
    -    {
    -      char *tok_loc = ACE_OS::strstr (next_start, token);
    -
    -      if (tok_loc != 0)
    -        {
    -          // Return the beginning of the string.
    -          result = next_start;
    -
    -          // Insure it's terminated.
    -          *tok_loc = '\0';
    -          next_start = tok_loc + ACE_OS::strlen (token);
    -        }
    -      else
    -        {
    -          result = next_start;
    -          next_start = (char *) 0;
    -        }
    -    }
    -
    -  return result;
    -}
    -
    -const char *
    -ACE::execname (const char *old_name)
    -{
    -#if defined (ACE_WIN32)
    -  if (ACE_OS::strstr (old_name, ".exe") == 0)
    -    {
    -      char *new_name;
    -
    -      size_t size =
    -        ACE_OS::strlen (old_name)
    -        + ACE_OS::strlen (".exe")
    -        + 1;
    -
    -      ACE_NEW_RETURN (new_name,
    -                      char[size],
    -                      0);
    -      char *end = new_name;
    -
    -      end = ACE_OS::strecpy (new_name, old_name);
    -
    -      // Concatenate the .exe suffix onto the end of the executable.
    -      ACE_OS::strcpy (end, ".exe");
    -
    -      return new_name;
    -    }
    -#endif /* ACE_WIN32 */
    -  return old_name;
    -}
    -
    -#if defined (ACE_HAS_UNICODE)
    -size_t
    -ACE::strrepl (wchar_t *s, wchar_t search, wchar_t replace)
    -{
    -  ACE_TRACE ("ACE::strrepl");
    -
    -  size_t replaced = 0;
    -
    -  for (size_t i = 0; s[i] != '\0'; i++)
    -    if (s[i] == search)
    -      {
    -        s[i] = replace;
    -        replaced++;
    -      }
    -
    -  return replaced;
    -}
    -
    -wchar_t *
    -ACE::strsplit_r (wchar_t *str,
    -                 const wchar_t *token,
    -                 wchar_t *&next_start)
    -{
    -  wchar_t *result = 0;
    -
    -  if (str != 0)
    -    next_start = str;
    -
    -  if (next_start != 0)
    -    {
    -      wchar_t *tok_loc = ACE_OS::strstr (next_start, token);
    -
    -      if (tok_loc != 0)
    -        {
    -          // Return the beginning of the string.
    -          result = next_start;
    -
    -          // Insure it's terminated.
    -          *tok_loc = '\0';
    -          next_start = tok_loc + ACE_OS::strlen (token);
    -        }
    -      else
    -        {
    -          result = next_start;
    -          next_start = (wchar_t *) 0;
    -        }
    -    }
    -
    -  return result;
    -}
    -
    -const wchar_t *
    -ACE::execname (const wchar_t *old_name)
    -{
    -#if defined (ACE_WIN32)
    -  if (ACE_OS::strstr (old_name, L".exe") == 0)
    -    {
    -      wchar_t *new_name;
    -
    -      size_t size =
    -        ACE_OS::strlen (old_name)
    -        + ACE_OS::strlen (L".exe")
    -        + 1;
    -
    -      ACE_NEW_RETURN (new_name,
    -                      wchar_t[size],
    -                      0);
    -      wchar_t *end = new_name;
    -
    -      end = ACE_OS::strecpy (new_name, old_name);
    -
    -      // Concatenate the .exe suffix onto the end of the executable.
    -      ACE_OS::strcpy (end, L".exe");
    -
    -      return new_name;
    -    }
    -#endif /* ACE_WIN32 */
    -  return old_name;
    -}
    -#endif /* ACE_HAS_UNICODE */
    -
    -u_long
    -ACE::hash_pjw (const char *str, size_t len)
    -{
    -  u_long hash = 0;
    -
    -  for (size_t i = 0; i < len; i++)
    -    {
    -      const char temp = str[i];
    -      hash = (hash << 4) + (temp * 13);
    -
    -      u_long g = hash & 0xf0000000;
    -
    -      if (g)
    -        {
    -          hash ^= (g >> 24);
    -          hash ^= g;
    -        }
    -    }
    -
    -  return hash;
    -}
    -
    -u_long
    -ACE::hash_pjw (const char *str)
    -{
    -  return ACE::hash_pjw (str, ACE_OS::strlen (str));
    -}
    -
    -#if !defined (ACE_HAS_WCHAR_TYPEDEFS_CHAR)
    -u_long
    -ACE::hash_pjw (const wchar_t *str, size_t len)
    -{
    -  u_long hash = 0;
    -
    -  for (size_t i = 0; i < len; i++)
    -    {
    -      const wchar_t temp = str[i];
    -      hash = (hash << 4) + (temp * 13);
    -
    -      u_long g = hash & 0xf0000000;
    -
    -      if (g)
    -        {
    -          hash ^= (g >> 24);
    -          hash ^= g;
    -        }
    -    }
    -
    -  return hash;
    -}
    -
    -u_long
    -ACE::hash_pjw (const wchar_t *str)
    -{
    -  return ACE::hash_pjw (str, ACE_OS::strlen (str));
    -}
    -#endif /* ACE_HAS_WCHAR_TYPEDEFS_CHAR */
    -
    -#if !defined (ACE_HAS_WCHAR_TYPEDEFS_USHORT)
    -u_long
    -ACE::hash_pjw (const ACE_USHORT16 *str, size_t len)
    -{
    -  u_long hash = 0;
    -
    -  for (size_t i = 0; i < len; i++)
    -    {
    -      const ACE_USHORT16 temp = str[i];
    -      hash = (hash << 4) + (temp * 13);
    -
    -      u_long g = hash & 0xf0000000;
    -
    -      if (g)
    -        {
    -          hash ^= (g >> 24);
    -          hash ^= g;
    -        }
    -    }
    -
    -  return hash;
    -}
    -
    -u_long
    -ACE::hash_pjw (const ACE_USHORT16 *str)
    -{
    -  return ACE::hash_pjw (str, ACE_OS::strlen (str));
    -}
    -#endif /* ! ACE_HAS_WCHAR_TYPEDEFS_USHORT */
    -
    -// The CRC routine was taken from the FreeBSD implementation of cksum,
    -// that falls under the following license:
    -/*-
    - * Copyright (c) 1991, 1993
    - *      The Regents of the University of California.  All rights reserved.
    - *
    - * This code is derived from software contributed to Berkeley by
    - * James W. Williams of NASA Goddard Space Flight Center.
    - *
    - * Redistribution and use in source and binary forms, with or without
    - * modification, are permitted provided that the following conditions
    - * are met:
    - * 1. Redistributions of source code must retain the above copyright
    - *    notice, this list of conditions and the following disclaimer.
    - * 2. Redistributions in binary form must reproduce the above copyright
    - *    notice, this list of conditions and the following disclaimer in the
    - *    documentation and/or other materials provided with the distribution.
    - * 3. All advertising materials mentioning features or use of this software
    - *    must display the following acknowledgement:
    - *      This product includes software developed by the University of
    - *      California, Berkeley and its contributors.
    - * 4. Neither the name of the University nor the names of its contributors
    - *    may be used to endorse or promote products derived from this software
    - *    without specific prior written permission.
    - *
    - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
    - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    - * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
    - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
    - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
    - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    - * SUCH DAMAGE.
    - */
    -
    -u_long ACE::crc_table_[] =
    -{
    -  0x0,
    -  0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b,
    -  0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6,
    -  0x2b4bcb61, 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd,
    -  0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9, 0x5f15adac,
    -  0x5bd4b01b, 0x569796c2, 0x52568b75, 0x6a1936c8, 0x6ed82b7f,
    -  0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3, 0x709f7b7a,
    -  0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039,
    -  0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58,
    -  0xbaea46ef, 0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033,
    -  0xa4ad16ea, 0xa06c0b5d, 0xd4326d90, 0xd0f37027, 0xddb056fe,
    -  0xd9714b49, 0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95,
    -  0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, 0xe13ef6f4,
    -  0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0,
    -  0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5,
    -  0x2ac12072, 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16,
    -  0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca, 0x7897ab07,
    -  0x7c56b6b0, 0x71159069, 0x75d48dde, 0x6b93dddb, 0x6f52c06c,
    -  0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1,
    -  0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba,
    -  0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b,
    -  0xbb60adfc, 0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698,
    -  0x832f1041, 0x87ee0df6, 0x99a95df3, 0x9d684044, 0x902b669d,
    -  0x94ea7b2a, 0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e,
    -  0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2, 0xc6bcf05f,
    -  0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34,
    -  0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80,
    -  0x644fc637, 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb,
    -  0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f, 0x5c007b8a,
    -  0x58c1663d, 0x558240e4, 0x51435d53, 0x251d3b9e, 0x21dc2629,
    -  0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5, 0x3f9b762c,
    -  0x3b5a6b9b, 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff,
    -  0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e,
    -  0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65,
    -  0xeba91bbc, 0xef68060b, 0xd727bbb6, 0xd3e6a601, 0xdea580d8,
    -  0xda649d6f, 0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3,
    -  0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, 0xae3afba2,
    -  0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71,
    -  0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74,
    -  0x857130c3, 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640,
    -  0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c, 0x7b827d21,
    -  0x7f436096, 0x7200464f, 0x76c15bf8, 0x68860bfd, 0x6c47164a,
    -  0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e, 0x18197087,
    -  0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec,
    -  0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d,
    -  0x2056cd3a, 0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce,
    -  0xcc2b1d17, 0xc8ea00a0, 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb,
    -  0xdbee767c, 0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18,
    -  0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, 0x89b8fd09,
    -  0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662,
    -  0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf,
    -  0xa2f33668, 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4
    -};
    -
    -// Compute a POSIX 1003.2 checksum.  The routine takes an string and
    -// computes the CRC for it (it stops on the first '\0' character).
    -
    -// UNICOS UINT32's are 64-bit on the Cray PVP architecture
    -#if !defined(_UNICOS)
    -#  define COMPUTE(var, ch) (var) = ((var) << 8) ^ ACE::crc_table_[((var) >> 24) ^ (ch)]
    -#else /* ! _UNICOS */
    -#  define COMPUTE(var, ch) (var) = ( 0x00000000ffffffff & ((var) << 8)) ^ ACE::crc_table_[((var) >> 24) ^ (ch)]
    -#endif /* ! _UNICOS */
    -
    -u_long
    -ACE::crc32 (const char *string)
    -{
    -  register ACE_UINT32 crc = 0;
    -
    -  u_long len = 0;
    -
    -  for (const char *p = string;
    -       *p != 0;
    -       ++p)
    -    {
    -      COMPUTE (crc, *p);
    -      ++len;
    -    }
    -
    -  // Include the length of the string.
    -
    -  for (; len != 0; len >>= 8)
    -    COMPUTE (crc, len & 0xff);
    -
    -  return ~crc;
    -}
    -
    -u_long
    -ACE::crc32 (const char *buffer, ACE_UINT32 len)
    -{
    -  register ACE_UINT32 crc = 0;
    -
    -  for (const char *p = buffer;
    -       p != buffer + len;
    -       ++p)
    -    {
    -      COMPUTE (crc, *p);
    -    }
    -
    -  // Include the length of the string.
    -
    -  for (; len != 0; len >>= 8)
    -    COMPUTE (crc, len & 0xff);
    -
    -  return ~crc;
    -}
    -
    -#undef COMPUTE
    -
    -size_t
    -ACE::strrepl (char *s, char search, char replace)
    -{
    -  ACE_TRACE ("ACE::strrepl");
    -
    -  size_t replaced = 0;
    -
    -  for (size_t i = 0; s[i] != '\0'; i++)
    -    if (s[i] == search)
    -      {
    -        s[i] = replace;
    -        replaced++;
    -      }
    -
    -  return replaced;
    -}
    -
    -#if !defined (ACE_HAS_WINCE)
    -ASYS_TCHAR *
    -ACE::strenvdup (const ASYS_TCHAR *str)
    -{
    -  ACE_TRACE ("ACE::strenvdup");
    -
    -  return ACE_OS::strenvdup (str);
    -}
    -#endif /* ACE_HAS_WINCE */
    -
    -/*
    -
    -Examples:
    -
    -Source               NT                    UNIX
    -==================================================================
    -netsvc               netsvc.dll            libnetsvc.so
    -                     (PATH will be         (LD_LIBRARY_PATH
    -                      evaluated)            evaluated)
    -
    -libnetsvc.dll        libnetsvc.dll         libnetsvc.dll + warning
    -netsvc.so            netsvc.so + warning   libnetsvc.so
    -
    -..\../libs/netsvc    ..\..\libs\netsvc.dll ../../libs/netsvc.so
    -                     (absolute path used)  (absolute path used)
    -
    -*/
    -
    -#if ! defined (ACE_PSOS_DIAB_MIPS)
    -int
    -ACE::ldfind (const ASYS_TCHAR filename[],
    -             ASYS_TCHAR pathname[],
    -             size_t maxpathnamelen)
    -{
    -  ACE_TRACE ("ACE::ldfind");
    -
    -#if defined (ACE_WIN32) && !defined (ACE_HAS_WINCE) && \
    -    !defined (ACE_HAS_PHARLAP)
    -  ASYS_TCHAR expanded_filename[MAXPATHLEN];
    -#if !defined (ACE_HAS_MOSTLY_UNICODE_APIS)
    -  if (::ExpandEnvironmentStringsA (filename,
    -                                   expanded_filename,
    -                                   sizeof expanded_filename))
    -#else
    -  if (::ExpandEnvironmentStringsW (filename,
    -                                   expanded_filename,
    -                                   sizeof expanded_filename))
    -#endif /* ACE_HAS_MOSTLY_UNICODE_APIS */
    -    filename = expanded_filename;
    -#endif /* ACE_WIN32 && !ACE_HAS_WINCE && !ACE_HAS_PHARLAP */
    -
    -  ASYS_TCHAR tempcopy[MAXPATHLEN + 1];
    -  ASYS_TCHAR searchpathname[MAXPATHLEN + 1];
    -  ASYS_TCHAR searchfilename[MAXPATHLEN + 2];
    -
    -  // Create a copy of filename to work with.
    -  if (ACE_OS::strlen (filename) + 1
    -      > (sizeof tempcopy / sizeof (ASYS_TCHAR)))
    -    {
    -      errno = ENOMEM;
    -      return -1;
    -    }
    -  else
    -    ACE_OS::strcpy (tempcopy, filename);
    -
    -  // Insert canonical directory separators.
    -  ASYS_TCHAR *separator_ptr;
    -
    -#if (ACE_DIRECTORY_SEPARATOR_CHAR != '/')
    -  // Make all the directory separators ``canonical'' to simplify
    -  // subsequent code.
    -  ACE::strrepl (tempcopy, ACE_DIRECTORY_SEPARATOR_CHAR, '/');
    -#endif /* ACE_DIRECTORY_SEPARATOR_CHAR */
    -
    -  // Separate filename from pathname.
    -  separator_ptr = ACE_OS::strrchr (tempcopy, '/');
    -
    -  // This is a relative path.
    -  if (separator_ptr == 0)
    -    {
    -      searchpathname[0] = '\0';
    -      ACE_OS::strcpy (searchfilename, tempcopy);
    -    }
    -  else // This is an absolute path.
    -    {
    -      ACE_OS::strcpy (searchfilename, separator_ptr + 1);
    -      separator_ptr[1] = '\0';
    -      ACE_OS::strcpy (searchpathname, tempcopy);
    -    }
    -
    -  int got_suffix = 0;
    -
    -  // Check to see if this has an appropriate DLL suffix for the OS
    -  // platform.
    -  ASYS_TCHAR *s = ACE_OS::strrchr (searchfilename, '.');
    -
    -  const ASYS_TCHAR *dll_suffix =
    -    ASYS_TEXT (ACE_DLL_SUFFIX);
    -
    -  if (s != 0)
    -    {
    -      // If we have a dot, we have a suffix
    -      got_suffix = 1;
    -
    -      // Check whether this matches the appropriate platform-specific
    -      // suffix.
    -      if (ACE_OS::strcmp (s, dll_suffix) != 0)
    -        {
    -          ACE_ERROR ((LM_WARNING,
    -                      ASYS_TEXT ("Warning: improper suffix for a ")
    -                      ASYS_TEXT ("shared library on this platform: %s\n"),
    -                      s));
    -        }
    -    }
    -
    -  // Make sure we've got enough space in searchfilename.
    -  if (ACE_OS::strlen (searchfilename)
    -      + ACE_OS::strlen (ACE_DLL_PREFIX)
    -      + got_suffix ? 0 : ACE_OS::strlen (dll_suffix) >= (sizeof searchfilename /
    -                                                         sizeof (ASYS_TCHAR)))
    -    {
    -      errno = ENOMEM;
    -      return -1;
    -    }
    -
    -#if defined (ACE_WIN32) && defined (_DEBUG) && !defined (ACE_DISABLE_DEBUG_DLL_CHECK)
    -  size_t len_searchfilename = ACE_OS::strlen (searchfilename);
    -  if (! got_suffix)
    -    {
    -      searchfilename [len_searchfilename] = 'd';
    -      searchfilename [len_searchfilename+1] = 0;
    -    }
    -
    -  for (int tag = 1; tag >= 0; tag --)
    -    {
    -      if (tag == 0)
    -        searchfilename [len_searchfilename] = 0;
    -
    -#endif /* ACE_WIN32 && _DEBUG && !ACE_DISABLE_DEBUG_DLL_CHECK */
    -  // Use absolute pathname if there is one.
    -  if (ACE_OS::strlen (searchpathname) > 0)
    -    {
    -      if (ACE_OS::strlen (searchfilename)
    -          + ACE_OS::strlen (searchpathname) >= maxpathnamelen)
    -        {
    -          errno = ENOMEM;
    -          return -1;
    -        }
    -      else
    -        {
    -#if (ACE_DIRECTORY_SEPARATOR_CHAR != '/')
    -          // Revert to native path name separators.
    -          ACE::strrepl (searchpathname,
    -                        '/',
    -                        ACE_DIRECTORY_SEPARATOR_CHAR);
    -#endif /* ACE_DIRECTORY_SEPARATOR_CHAR */
    -          // First, try matching the filename *without* adding a
    -          // prefix.
    -#if defined (ACE_HAS_BROKEN_CONDITIONAL_STRING_CASTS)
    -          ACE_OS::sprintf (pathname,
    -                           ASYS_TEXT ("%s%s%s"),
    -                           searchpathname,
    -                           searchfilename,
    -                           got_suffix ? ACE_static_cast (char *,
    -                                                         ASYS_TEXT (""))
    -                                      : ACE_static_cast (char *,
    -                                                         dll_suffix));
    -#else /* ! defined (ACE_HAS_BROKEN_CONDITIONAL_STRING_CASTS) */
    -          ACE_OS::sprintf (pathname,
    -                           ASYS_TEXT ("%s%s%s"),
    -                           searchpathname,
    -                           searchfilename,
    -                           got_suffix ? ASYS_TEXT ("") : dll_suffix);
    -#endif /* ! defined (ACE_HAS_BROKEN_CONDITIONAL_STRING_CASTS) */
    -          if (ACE_OS::access (pathname, F_OK) == 0)
    -            return 0;
    -
    -          // Second, try matching the filename *with* adding a prefix.
    -#if defined (ACE_HAS_BROKEN_CONDITIONAL_STRING_CASTS)
    -          ACE_OS::sprintf (pathname,
    -                           ASYS_TEXT ("%s%s%s%s"),
    -                           searchpathname,
    -                           ACE_DLL_PREFIX,
    -                           searchfilename,
    -                           got_suffix ? ACE_static_cast (char *,
    -                                                         ASYS_TEXT (""))
    -                                      : ACE_static_cast (char *,
    -                                                         dll_suffix));
    -#else /* ! defined (ACE_HAS_BROKEN_CONDITIONAL_STRING_CASTS) */
    -          ACE_OS::sprintf (pathname,
    -                           ASYS_TEXT ("%s%s%s%s"),
    -                           searchpathname,
    -                           ACE_DLL_PREFIX,
    -                           searchfilename,
    -                           got_suffix ? ASYS_TEXT ("") : dll_suffix);
    -#endif /* ! defined (ACE_HAS_BROKEN_CONDITIONAL_STRING_CASTS) */
    -          if (ACE_OS::access (pathname, F_OK) == 0)
    -            return 0;
    -        }
    -    }
    -
    -  // Use relative filenames via LD_LIBRARY_PATH or PATH (depending on
    -  // OS platform).
    -  else
    -    {
    -      char *ld_path =
    -#if defined ACE_DEFAULT_LD_SEARCH_PATH
    -        ACE_DEFAULT_LD_SEARCH_PATH;
    -#else
    -        ACE_OS::getenv (ACE_LD_SEARCH_PATH);
    -#endif /* ACE_DEFAULT_LD_SEARCH_PATH */
    -
    -#if defined (ACE_WIN32)
    -      char *ld_path_temp = 0;
    -      if (ld_path != 0)
    -        {
    -          ld_path_temp = (char *) ACE_OS::malloc (ACE_OS::strlen (ld_path) + 2);
    -          if (ld_path_temp != 0)
    -            {
    -              ACE_OS::strcpy (ld_path_temp, ACE_LD_SEARCH_PATH_SEPARATOR_STR);
    -              ACE_OS::strcat (ld_path_temp, ld_path);
    -              ld_path = ld_path_temp;
    -            }
    -          else
    -            {
    -              ACE_OS::free ((void *) ld_path_temp);
    -              ld_path = ld_path_temp = 0;
    -            }
    -        }
    -#endif /* ACE_WIN32 */
    -
    -      if (ld_path != 0
    -          && (ld_path = ACE_OS::strdup (ld_path)) != 0)
    -        {
    -          // strtok has the strange behavior of not separating the
    -          // string ":/foo:/bar" into THREE tokens.  One would expect
    -          // that the first iteration the token would be an empty
    -          // string, the second iteration would be "/foo", and the
    -          // third iteration would be "/bar".  However, this is not
    -          // the case; one only gets two iterations: "/foo" followed
    -          // by "/bar".
    -
    -          // This is especially a problem in parsing Unix paths
    -          // because it is permissible to specify 'the current
    -          // directory' as an empty entry.  So, we introduce the
    -          // following special code to cope with this:
    -
    -          // Look at each dynamic lib directory in the search path.
    -
    -          char *nextholder = 0;
    -          const char *path_entry =
    -            ACE::strsplit_r (ld_path,
    -                             ACE_LD_SEARCH_PATH_SEPARATOR_STR,
    -                             nextholder);
    -          int result = 0;
    -
    -          for (;;)
    -            {
    -              // Check if at end of search path.
    -              if (path_entry == 0)
    -                {
    -                  errno = ENOENT;
    -                  result = -1;
    -                  break;
    -                }
    -              else if (ACE_OS::strlen (path_entry)
    -                       + 1
    -                       + ACE_OS::strlen (searchfilename)
    -                       >= maxpathnamelen)
    -                {
    -                  errno = ENOMEM;
    -                  result = -1;
    -                  break;
    -                }
    -              // This works around the issue where a path might have
    -              // an empty component indicating 'current directory'.
    -              // We need to do it here rather than anywhere else so
    -              // that the loop condition will still work.
    -              else if (path_entry[0] == '\0')
    -                path_entry = ".";
    -
    -              // First, try matching the filename *without* adding a
    -              // prefix.
    -#if defined (ACE_HAS_BROKEN_CONDITIONAL_STRING_CASTS)
    -              ACE_OS::sprintf (pathname,
    -                               ASYS_TEXT ("%s%c%s%s"),
    -                               path_entry,
    -                               ACE_DIRECTORY_SEPARATOR_CHAR,
    -                               searchfilename,
    -                               got_suffix ? ACE_static_cast (char *,
    -                                                             ASYS_TEXT (""))
    -                                          : ACE_static_cast (char *,
    -                                                             dll_suffix));
    -#else /* ! defined (ACE_HAS_BROKEN_CONDITIONAL_STRING_CASTS) */
    -              ACE_OS::sprintf (pathname,
    -                               ASYS_TEXT ("%s%c%s%s"),
    -                               path_entry,
    -                               ACE_DIRECTORY_SEPARATOR_CHAR,
    -                               searchfilename,
    -                               got_suffix ? ASYS_TEXT ("") : dll_suffix);
    -#endif /* ! defined (ACE_HAS_BROKEN_CONDITIONAL_STRING_CASTS) */
    -              if (ACE_OS::access (pathname, F_OK) == 0)
    -                break;
    -
    -              // Second, try matching the filename *with* adding a
    -              // prefix.
    -#if defined (ACE_HAS_BROKEN_CONDITIONAL_STRING_CASTS)
    -              ACE_OS::sprintf (pathname,
    -                               ASYS_TEXT ("%s%c%s%s%s"),
    -                               path_entry,
    -                               ACE_DIRECTORY_SEPARATOR_CHAR,
    -                               ACE_DLL_PREFIX,
    -                               searchfilename,
    -                               got_suffix ? ACE_static_cast (char *,
    -                                                            ASYS_TEXT (""))
    -                                          : ACE_static_cast (char *,
    -                                                             dll_suffix));
    -#else /* ! defined (ACE_HAS_BROKEN_CONDITIONAL_STRING_CASTS) */
    -              ACE_OS::sprintf (pathname,
    -                               ASYS_TEXT ("%s%c%s%s%s"),
    -                               path_entry,
    -                               ACE_DIRECTORY_SEPARATOR_CHAR,
    -                               ACE_DLL_PREFIX,
    -                               searchfilename,
    -                               got_suffix ? ASYS_TEXT ("") : dll_suffix);
    -#endif /* ! defined (ACE_HAS_BROKEN_CONDITIONAL_STRING_CASTS) */
    -              if (ACE_OS::access (pathname, F_OK) == 0)
    -                break;
    -
    -              // Fetch the next item in the path
    -              path_entry = ACE::strsplit_r (0,
    -                                            ACE_LD_SEARCH_PATH_SEPARATOR_STR,
    -                                            nextholder);
    -            }
    -
    -#if defined (ACE_WIN32)
    -          if (ld_path_temp != 0)
    -            ACE_OS::free (ld_path_temp);
    -#endif /* ACE_WIN32 */
    -          ACE_OS::free ((void *) ld_path);
    -#if defined (ACE_WIN32) && defined (_DEBUG) && !defined (ACE_DISABLE_DEBUG_DLL_CHECK)
    -          if (result == 0 || tag == 0)
    -#endif /* ACE_WIN32 && _DEBUG && !ACE_DISABLE_DEBUG_DLL_CHECK */
    -            return result;
    -        }
    -    }
    -#if defined (ACE_WIN32) && defined (_DEBUG) && !defined (ACE_DISABLE_DEBUG_DLL_CHECK)
    -    }
    -#endif /* ACE_WIN32 && _DEBUG && !ACE_DISABLE_DEBUG_DLL_CHECK */
    -
    -  errno = ENOENT;
    -  return -1;
    -}
    -
    -FILE *
    -ACE::ldopen (const ASYS_TCHAR *filename,
    -             const ASYS_TCHAR *type)
    -{
    -  ACE_TRACE ("ACE::ldopen");
    -
    -  ASYS_TCHAR buf[MAXPATHLEN + 1];
    -  if (ACE::ldfind (filename,
    -                   buf,
    -                   sizeof (buf) /sizeof (ASYS_TCHAR)) == -1)
    -    return 0;
    -  else
    -    return ACE_OS::fopen (buf, type);
    -}
    -
    -ACE_HANDLE
    -ACE::open_temp_file (const char *name, int mode, int perm)
    -{
    -#if defined (ACE_WIN32)
    -  return ACE_OS::open (name,
    -                       mode | _O_TEMPORARY);
    -#else
    -  // Open it.
    -  ACE_HANDLE handle = ACE_OS::open (name, mode, perm);
    -
    -  if (handle == ACE_INVALID_HANDLE)
    -    return ACE_INVALID_HANDLE;
    -
    -  // Unlink it so that the file will be removed automatically when the
    -  // process goes away.
    -  if (ACE_OS::unlink (name) == -1)
    -    return -1;
    -  else
    -    // Return the handle.
    -    return handle;
    -#endif /* ACE_WIN32 */
    -}
    -#endif /* ! ACE_PSOS_DIAB_MIPS */
    -
    -const char *
    -ACE::basename (const char *pathname, char delim)
    -{
    -  ACE_TRACE ("ACE::basename");
    -  const char *temp = ACE_OS::strrchr (pathname, delim);
    -
    -  if (temp == 0)
    -    return pathname;
    -  else
    -    return temp + 1;
    -}
    -
    -const char *
    -ACE::dirname (const char *pathname, char delim)
    -{
    -  ACE_TRACE ("ACE::basename");
    -  static char return_dirname[MAXPATHLEN + 1];
    -
    -  const char *temp = ACE_OS::strrchr (pathname, delim);
    -
    -  if (temp == 0)
    -    {
    -      return_dirname[0] = '.';
    -      return_dirname[1] = '\0';
    -
    -      return return_dirname;
    -    }
    -  else
    -    {
    -      ACE_OS::strncpy (return_dirname,
    -                       pathname,
    -                       MAXPATHLEN);
    -      return_dirname[temp - pathname] = '\0';
    -      return return_dirname;
    -    }
    -}
    -
    -#if defined (ACE_HAS_UNICODE)
    -const wchar_t *
    -ACE::basename (const wchar_t *pathname, wchar_t delim)
    -{
    -  ACE_TRACE ("ACE::basename");
    -  const wchar_t *temp = ACE_OS::strrchr (pathname, delim);
    -
    -  if (temp == 0)
    -    return pathname;
    -  else
    -    return temp + 1;
    -}
    -#endif /* ACE_HAS_UNICODE */
    -
    -// Send N char *ptrs and int lengths.  Note that the char *'s precede
    -// the ints (basically, an varargs version of writev).  The count N is
    -// the *total* number of trailing arguments, *not* a couple of the
    -// number of tuple pairs!
    -
    -ssize_t
    -ACE::send (ACE_HANDLE handle, size_t n, ...)
    -{
    -  ACE_TRACE ("ACE_SOCK_IO::send");
    -
    -  va_list argp;
    -  size_t total_tuples = n / 2;
    -  iovec *iovp;
    -#if defined (ACE_HAS_ALLOCA)
    -  iovp = (iovec *) alloca (total_tuples * sizeof (iovec));
    -#else
    -  ACE_NEW_RETURN (iovp,
    -                  iovec[total_tuples],
    -                  -1);
    -#endif /* !defined (ACE_HAS_ALLOCA) */
    -
    -  va_start (argp, n);
    -
    -  for (size_t i = 0; i < total_tuples; i++)
    -    {
    -      iovp[i].iov_base = va_arg (argp, char *);
    -      iovp[i].iov_len = va_arg (argp, ssize_t);
    -    }
    -
    -  ssize_t result = ACE_OS::sendv (handle, iovp, total_tuples);
    -#if !defined (ACE_HAS_ALLOCA)
    -  delete [] iovp;
    -#endif /* !defined (ACE_HAS_ALLOCA) */
    -  va_end (argp);
    -  return result;
    -}
    -
    -// This is basically an interface to ACE_OS::readv, that doesn't use
    -// the struct iovec explicitly.  The ... can be passed as an arbitrary
    -// number of (char *ptr, int len) tuples.  However, the count N is the
    -// *total* number of trailing arguments, *not* a couple of the number
    -// of tuple pairs!
    -
    -ssize_t
    -ACE::recv (ACE_HANDLE handle, size_t n, ...)
    -{
    -  ACE_TRACE ("ACE_SOCK_IO::recv");
    -
    -  va_list argp;
    -  size_t total_tuples = n / 2;
    -  iovec *iovp;
    -#if defined (ACE_HAS_ALLOCA)
    -  iovp = (iovec *) alloca (total_tuples * sizeof (iovec));
    -#else
    -  ACE_NEW_RETURN (iovp,
    -                  iovec[total_tuples],
    -                  -1);
    -#endif /* !defined (ACE_HAS_ALLOCA) */
    -
    -  va_start (argp, n);
    -
    -  for (size_t i = 0; i < total_tuples; i++)
    -    {
    -      iovp[i].iov_base = va_arg (argp, char *);
    -      iovp[i].iov_len = va_arg (argp, ssize_t);
    -    }
    -
    -  ssize_t result = ACE_OS::recvv (handle, iovp, total_tuples);
    -#if !defined (ACE_HAS_ALLOCA)
    -  delete [] iovp;
    -#endif /* !defined (ACE_HAS_ALLOCA) */
    -  va_end (argp);
    -  return result;
    -}
    -
    -// Miscellaneous static methods used throughout ACE.
    -
    -ssize_t
    -ACE::send_n (ACE_HANDLE handle,
    -             const void *buf,
    -             size_t len,
    -             int flags)
    -{
    -  ACE_TRACE ("ACE::send_n");
    -  size_t bytes_written;
    -  ssize_t n;
    -
    -  for (bytes_written = 0; bytes_written < len; bytes_written += n)
    -    {
    -      n = ACE_OS::send (handle,
    -                        (const char *) buf + bytes_written,
    -                        len - bytes_written,
    -                        flags);
    -      if (n == -1)
    -        {
    -          if (errno == EWOULDBLOCK)
    -            n = 0; // Keep trying to send.
    -          else
    -            return -1;
    -        }
    -    }
    -
    -  return bytes_written;
    -}
    -
    -ssize_t
    -ACE::recv_n (ACE_HANDLE handle, void *buf, size_t len)
    -{
    -  ACE_TRACE ("ACE::recv_n");
    -  size_t bytes_read;
    -  ssize_t n;
    -
    -  for (bytes_read = 0; bytes_read < len; bytes_read += n)
    -    {
    -      n = ACE::recv (handle,
    -                     (char *) buf + bytes_read,
    -                     len - bytes_read);
    -      if (n == -1)
    -        {
    -          if (errno == EWOULDBLOCK)
    -            n = 0; // Keep trying to read.
    -          else
    -            return -1;
    -        }
    -      else if (n == 0)
    -        break;
    -    }
    -
    -  return bytes_read;
    -}
    -
    -ssize_t
    -ACE::recv_n (ACE_HANDLE handle, void *buf, size_t len, int flags)
    -{
    -  ACE_TRACE ("ACE::recv_n");
    -  size_t bytes_read;
    -  ssize_t n;
    -
    -  for (bytes_read = 0; bytes_read < len; bytes_read += n)
    -    {
    -      n = ACE::recv (handle,
    -                     (char *) buf + bytes_read,
    -                     len - bytes_read,
    -                     flags);
    -
    -      if (n == -1)
    -        {
    -          if (errno == EWOULDBLOCK)
    -            n = 0; // Keep trying to read.
    -          else
    -            return -1;
    -        }
    -      else if (n == 0)
    -        break;
    -    }
    -
    -  return bytes_read;
    -}
    -
    -int
    -ACE::enter_recv_timedwait (ACE_HANDLE handle,
    -                           const ACE_Time_Value *timeout,
    -                           int &val)
    -{
    -  // Give value a default value to keep Purify happy!
    -  val = 0;
    -
    -  if (timeout == 0)
    -    return 0;
    -
    -#if defined (ACE_HAS_POLL) && defined (ACE_HAS_LIMITED_SELECT)
    -
    -  struct pollfd fds;
    -
    -  fds.fd = handle;
    -  fds.events = POLLIN;
    -  fds.revents = 0;
    -
    -  int a = ACE_OS::poll (&fds, 1, *timeout);
    -
    -#else
    -  ACE_Handle_Set handle_set;
    -  handle_set.set_bit (handle);
    -
    -  // Wait for input to arrive or for the timeout to elapse.
    -  int a = ACE_OS::select (int (handle) + 1,
    -                          (fd_set *) handle_set, // read_fds.
    -                          (fd_set *) 0, // write_fds.
    -                          (fd_set *) 0, // exception_fds.
    -                          timeout);
    -#endif /* ACE_HAS_POLL && ACE_HAS_LIMITED_SELECT */
    -
    -   switch ( a )
    -   {
    -   case 0:  // Timer expired.  return -1
    -      errno = ETIME;
    -      /* FALLTHRU */
    -   case -1: // we got here directly - select() returned -1.
    -      return -1;
    -   case 1: // OK to read now.
    -      /* FALLTHRU */
    -   default: // default is case a > 0; return a
    -      // really should assert if a != 1
    -      //assert( a == 1 );
    -      // We need to record whether we are already *in* nonblocking
    -      // mode, so that we can correctly reset the state when we're
    -      // done.
    -      val = ACE::get_flags (handle);
    -
    -      if (ACE_BIT_DISABLED (val, ACE_NONBLOCK))
    -        // Set the handle into non-blocking mode if it's not
    -        // already in it.
    -        ACE::set_flags (handle, ACE_NONBLOCK);
    -      return a;
    -   }
    -}
    -
    -void
    -ACE::leave_recv_timedwait (ACE_HANDLE handle,
    -                           const ACE_Time_Value *timeout,
    -                           int val)
    -{
    -  if (timeout != 0
    -      && ACE_BIT_DISABLED (val,
    -                           ACE_NONBLOCK))
    -    {
    -      // Save/restore errno.
    -      ACE_Errno_Guard error (errno);
    -      // Only disable ACE_NONBLOCK if we weren't in non-blocking mode
    -      // originally.
    -      ACE::clr_flags (handle, ACE_NONBLOCK);
    -    }
    -}
    -
    -int
    -ACE::enter_send_timedwait (ACE_HANDLE handle,
    -                           const ACE_Time_Value* timeout,
    -                           int &val)
    -{
    -  // Give value a default value to keep Purify happy!
    -  val = 0;
    -
    -  if (timeout==0)
    -    return 0;
    -
    -#if defined (ACE_HAS_POLL) && defined (ACE_HAS_LIMITED_SELECT)
    -
    -  struct pollfd fds;
    -
    -  fds.fd = handle;
    -  fds.events = POLLOUT;
    -  fds.revents = 0;
    -
    -  int a = ACE_OS::poll (&fds, 1, *timeout);
    -
    -#else
    -  ACE_Handle_Set handle_set;
    -  handle_set.set_bit (handle);
    -
    -  // On timed writes we always go into select(); only if the
    -  // handle is available for writing within the specified amount
    -  // of time do we put it in non-blocking mode
    -
    -  int a = ACE_OS::select (int (handle) + 1,
    -                          (fd_set *) 0,
    -                          (fd_set *) handle_set,
    -                          (fd_set *) 0,
    -                          timeout);
    -#endif /* ACE_HAS_POLL && ACE_HAS_LIMITED_SELECT */
    -
    -   switch ( a )
    -   {
    -   case 0: // Timer expired.
    -      errno = ETIME;
    -      /* FALLTHRU */
    -   case -1: // we got here directly - select() returned -1.
    -      return -1;
    -   case 1: // Ok to write now.
    -      /* FALLTHRU */
    -   default: // default is case a > 0; return a
    -      // really should assert if a != 1
    -      //assert( a == 1 );
    -      // We need to record whether we are already *in* nonblocking
    -      // mode, so that we can correctly reset the state when we're
    -      // done.
    -      val = ACE::get_flags (handle);
    -
    -      if (ACE_BIT_DISABLED (val, ACE_NONBLOCK))
    -        // Set the handle into non-blocking mode if it's not
    -        // already in it.
    -        ACE::set_flags (handle, ACE_NONBLOCK);
    -      return a;
    -    }
    -}
    -
    -void
    -ACE::leave_send_timedwait (ACE_HANDLE handle,
    -                           const ACE_Time_Value *timeout,
    -                           int val)
    -{
    -  if (timeout != 0
    -      && ACE_BIT_DISABLED (val, ACE_NONBLOCK))
    -    {
    -      // Save/restore errno.
    -      ACE_Errno_Guard error (errno);
    -      // Only disable ACE_NONBLOCK if we weren't in non-blocking mode
    -      // originally.
    -      ACE::clr_flags (handle, ACE_NONBLOCK);
    -    }
    -}
    -
    -ssize_t
    -ACE::sendto (ACE_HANDLE handle,
    -             const char *buf,
    -             int len,
    -             int flags,
    -             const struct sockaddr *addr,
    -             int addrlen,
    -             const ACE_Time_Value *timeout)
    -{
    -  // ACE_TRACE ("ACE::sendto");
    -#if defined (ACE_HAS_SENDTO_TIMEDWAIT)
    -  if (timeout == 0)
    -     return ACE_OS::sendto (handle, buf, len, flags, addr, addrlen);
    -  else
    -    {
    -      ACE_Time_Value copy = *timeout;
    -      copy += ACE_OS::gettimeofday ();
    -      timespec_t ts = copy;
    -      return ::sendto_timedwait (handle,
    -                                 buf,
    -                                 len,
    -                                 flags,
    -                                 addr,
    -                                 addrlen,
    -                                 &ts);
    -    }
    -#else
    -  int val;
    -  if (ACE::enter_send_timedwait (handle, timeout, val) == -1)
    -    return -1;
    -  else
    -    {
    -      int bytes_written = ACE_OS::sendto (handle,
    -                                          buf,
    -                                          len,
    -                                          flags,
    -                                          addr,
    -                                          addrlen);
    -      ACE::leave_send_timedwait (handle, timeout, val);
    -      return bytes_written;
    -    }
    -#endif /* ACE_HAS_SENDTO_TIMEDWAIT */
    -}
    -
    -ssize_t
    -ACE::sendmsg (ACE_HANDLE handle,
    -              const struct msghdr *msg,
    -              int flags,
    -              const ACE_Time_Value *timeout)
    -{
    -  // ACE_TRACE ("ACE::sendmsg");
    -#if defined (ACE_HAS_SENDMSG_TIMEDWAIT)
    -  if (timeout == 0)
    -     return ACE_OS::sendmsg (handle, msg, flags);
    -  else
    -    {
    -      ACE_Time_Value copy = *timeout;
    -      copy += ACE_OS::gettimeofday ();
    -      timespec_t ts = copy;
    -      return ::sendmsg_timedwait (handle, msg, flags, &ts);
    -    }
    -#else
    -  int val;
    -  if (ACE::enter_send_timedwait (handle, timeout, val) == -1)
    -    return -1;
    -  else
    -    {
    -      int bytes_written = ACE_OS::sendmsg (handle, msg, flags);
    -      ACE::leave_send_timedwait (handle, timeout, val);
    -      return bytes_written;
    -    }
    -#endif /* ACE_HAS_SENDMSG_TIMEDWAIT */
    -}
    -
    -ssize_t
    -ACE::readv (ACE_HANDLE handle,
    -            iovec *iov,
    -            int iovcnt,
    -            const ACE_Time_Value *timeout)
    -{
    -  // ACE_TRACE ("ACE::readv");
    -#if defined (ACE_HAS_READV_TIMEDWAIT)
    -  if (timeout == 0)
    -     return ACE_OS::readv (handle, iov, iovcnt);
    -  else {
    -     ACE_Time_Value copy = *timeout;
    -     copy += ACE_OS::gettimeofday ();
    -     timespec_t ts = copy;
    -     return ::readv_timedwait (handle, iov, iovcnt, &ts);
    -  }
    -#else
    -  int val;
    -  if (ACE::enter_recv_timedwait (handle, timeout, val) == -1)
    -     return -1;
    -  else
    -    {
    -      ssize_t bytes_read = ACE_OS::readv (handle, iov, iovcnt);
    -      ACE::leave_recv_timedwait (handle, timeout, val);
    -      return bytes_read;
    -    }
    -#endif /* ACE_HAS_READV_TIMEDWAIT */
    -}
    -
    -ssize_t
    -ACE::writev (ACE_HANDLE handle,
    -             const iovec *iov,
    -             int iovcnt,
    -             const ACE_Time_Value *timeout)
    -{
    -  // ACE_TRACE ("ACE::writev");
    -#if defined (ACE_HAS_WRITEV_TIMEDWAIT)
    -  if (timeout == 0)
    -     return ACE_OS::writev (handle, iov, iovcnt);
    -  else {
    -     ACE_Time_Value copy = *timeout;
    -     copy += ACE_OS::gettimeofday ();
    -     timespec_t ts = copy;
    -     return ::writev_timedwait (handle, iov, iovcnt, &ts);
    -  }
    -#else
    -  int val;
    -  if (ACE::enter_send_timedwait (handle, timeout, val) == -1)
    -     return -1;
    -  else
    -    {
    -      ssize_t bytes_written = ACE_OS::writev (handle, iov, iovcnt);
    -      ACE::leave_send_timedwait (handle, timeout, val);
    -      return bytes_written;
    -    }
    -#endif /* ACE_HAS_WRITEV_TIMEDWAIT */
    -}
    -
    -ssize_t
    -ACE::writev_n (ACE_HANDLE h,
    -               const iovec *i,
    -               int iovcnt)
    -{
    -  ssize_t writelen = 0;
    -  iovec *iov = ACE_const_cast (iovec *, i);
    -
    -  for (int s = 0;
    -       s < iovcnt;
    -       )
    -    {
    -      ssize_t n = ACE_OS::writev (h,
    -                                  iov + s,
    -                                  iovcnt - s);
    -      if (n == -1)
    -        return n;
    -      else
    -        {
    -          for (writelen += n;
    -               s < iovcnt
    -                 && n >= ACE_static_cast (ssize_t,
    -                                          iov[s].iov_len);
    -               s++)
    -            n -= iov[s].iov_len;
    -
    -          if (n != 0)
    -            {
    -              char *base = ACE_reinterpret_cast (char *,
    -                                                 iov[s].iov_base);
    -              iov[s].iov_base = base + n;
    -              iov[s].iov_len = iov[s].iov_len - n;
    -            }
    -        }
    -    }
    -
    -  return writelen;
    -}
    -
    -ssize_t
    -ACE::sendv_n (ACE_HANDLE h,
    -              const iovec *i,
    -              int iovcnt)
    -{
    -  ssize_t writelen = 0;
    -  iovec *iov = ACE_const_cast (iovec *, i);
    -
    -  for (int s = 0;
    -       s < iovcnt;
    -       )
    -    {
    -      ssize_t n = ACE_OS::sendv (h,
    -                                 iov + s,
    -                                 iovcnt - s);
    -      if (n == -1)
    -        return n;
    -      else
    -        {
    -          for (writelen += n;
    -               s < iovcnt
    -                 && n >= ACE_static_cast (ssize_t,
    -                                          iov[s].iov_len);
    -               s++)
    -            n -= iov[s].iov_len;
    -
    -          if (n != 0)
    -            {
    -              char *base = ACE_reinterpret_cast (char *,
    -                                                 iov[s].iov_base);
    -              iov[s].iov_base = base + n;
    -              iov[s].iov_len = iov[s].iov_len - n;
    -            }
    -        }
    -    }
    -
    -  return writelen;
    -}
    -
    -// Format buffer into printable format.  This is useful for debugging.
    -// Portions taken from mdump by J.P. Knight (J.P.Knight@lut.ac.uk)
    -// Modifications by Todd Montgomery.
    -
    -int
    -ACE::format_hexdump (const char *buffer, int size,
    -                     ASYS_TCHAR *obuf, int obuf_sz)
    -{
    -  ACE_TRACE ("ACE::format_hexdump");
    -
    -  u_char c;
    -  ASYS_TCHAR textver[16 + 1];
    -
    -  int maxlen = (obuf_sz / 68) * 16;
    -
    -  if (size > maxlen)
    -    size = maxlen;
    -
    -  int i;
    -
    -  for (i = 0; i < (size >> 4); i++)
    -    {
    -      int j;
    -
    -      for (j = 0 ; j < 16; j++)
    -        {
    -          c = (u_char) buffer[(i << 4) + j];
    -          ACE_OS::sprintf (obuf, ASYS_TEXT ("%02x "), c);
    -          obuf += 3;
    -          if (j == 7)
    -            {
    -              ACE_OS::sprintf (obuf, ASYS_TEXT (" "));
    -              obuf++;
    -            }
    -          textver[j] = (c < 0x20 || c > 0x7e) ? '.' : c;
    -        }
    -
    -      textver[j] = 0;
    -
    -      ACE_OS::sprintf (obuf, ASYS_TEXT ("  %s\n"), textver);
    -
    -      while (*obuf != '\0')
    -        obuf++;
    -    }
    -
    -  if (size % 16)
    -    {
    -      for (i = 0 ; i < size % 16; i++)
    -        {
    -          c = (u_char) buffer[size - size % 16 + i];
    -          ACE_OS::sprintf (obuf, ASYS_TEXT ("%02x "),c);
    -          obuf += 3;
    -          if (i == 7)
    -            {
    -              ACE_OS::sprintf (obuf, ASYS_TEXT (" "));
    -              obuf++;
    -            }
    -          textver[i] = (c < 0x20 || c > 0x7e) ? '.' : c;
    -        }
    -
    -      for (i = size % 16; i < 16; i++)
    -        {
    -          ACE_OS::sprintf (obuf, ASYS_TEXT ("   "));
    -          obuf += 3;
    -          textver[i] = ' ';
    -        }
    -
    -      textver[i] = 0;
    -      ACE_OS::sprintf (obuf, ASYS_TEXT ("  %s\n"), textver);
    -    }
    -  return size;
    -}
    -
    -// Returns the current timestamp in the form
    -// "hour:minute:second:microsecond."  The month, day, and year are
    -// also stored in the beginning of the date_and_time array.  Returns 0
    -// if unsuccessful, else returns pointer to beginning of the "time"
    -// portion of .
    -
    -ASYS_TCHAR *
    -ACE::timestamp (ASYS_TCHAR date_and_time[], int date_and_timelen)
    -{
    -  //ACE_TRACE ("ACE::timestamp");
    -
    -  if (date_and_timelen < 35)
    -    {
    -      errno = EINVAL;
    -      return 0;
    -    }
    -
    -#if defined (WIN32)
    -  // @@ Jesper, I think Win32 supports all the UNIX versions below.
    -  // Therefore, we can probably remove this WIN32 ifdef altogether.
    -  SYSTEMTIME local;
    -  ::GetLocalTime (&local);
    -
    -  ACE_OS::sprintf (date_and_time,
    -                   ASYS_TEXT ("%02d/%02d/%04d %02d.%02d.%02d.%06d"),
    -                   (int) local.wMonth, // new, also the %02d in sprintf
    -                   (int) local.wDay,   // new, also the %02d in sprintf
    -                   (int) local.wYear,  // new, also the %02d in sprintf
    -                   (int) local.wHour,
    -                   (int) local.wMinute,
    -                   (int) local.wSecond,
    -                   (int) local.wMilliseconds * 1000);
    -#else  /* UNIX */
    -  char timebuf[26]; // This magic number is based on the ctime(3c) man page.
    -  ACE_Time_Value cur_time = ACE_OS::gettimeofday ();
    -  time_t secs = cur_time.sec ();
    -  ACE_OS::ctime_r (&secs,
    -                   timebuf,
    -                   sizeof timebuf);
    -  ACE_OS::strncpy (date_and_time,
    -                   timebuf,
    -                   date_and_timelen);
    -  ACE_OS::sprintf (&date_and_time[19],
    -                   ".%06ld",
    -                   cur_time.usec ());
    -#endif /* WIN32 */
    -  date_and_time[26] = '\0';
    -  return &date_and_time[11];
    -}
    -
    -// This function rounds the request to a multiple of the page size.
    -
    -size_t
    -ACE::round_to_pagesize (off_t len)
    -{
    -  ACE_TRACE ("ACE::round_to_pagesize");
    -
    -  if (ACE::pagesize_ == 0)
    -    ACE::pagesize_ = ACE_OS::getpagesize ();
    -
    -  return (len + (ACE::pagesize_ - 1)) & ~(ACE::pagesize_ - 1);
    -}
    -
    -size_t
    -ACE::round_to_allocation_granularity (off_t len)
    -{
    -  ACE_TRACE ("ACE::round_to_allocation_granularity");
    -
    -  if (ACE::allocation_granularity_ == 0)
    -    ACE::allocation_granularity_ = ACE_OS::allocation_granularity ();
    -
    -  return (len + (ACE::allocation_granularity_ - 1)) & ~(ACE::allocation_granularity_ - 1);
    -}
    -
    -ACE_HANDLE
    -ACE::handle_timed_complete (ACE_HANDLE h,
    -                            ACE_Time_Value *timeout,
    -                            int is_tli)
    -{
    -  ACE_TRACE ("ACE::handle_timed_complete");
    -
    -#if !defined (ACE_WIN32) && defined (ACE_HAS_POLL) && defined (ACE_HAS_LIMITED_SELECT)
    -
    -  struct pollfd fds;
    -
    -  fds.fd = h;
    -  fds.events = POLLIN | POLLOUT;
    -  fds.revents = 0;
    -
    -#else
    -  ACE_Handle_Set rd_handles;
    -  ACE_Handle_Set wr_handles;
    -
    -  rd_handles.set_bit (h);
    -  wr_handles.set_bit (h);
    -#endif /* !ACE_WIN32 && ACE_HAS_POLL && ACE_HAS_LIMITED_SELECT */
    -
    -#if defined (ACE_WIN32)
    -  ACE_Handle_Set ex_handles;
    -  ex_handles.set_bit (h);
    -#endif /* ACE_WIN32 */
    -
    -  int need_to_check;
    -
    -#if defined (ACE_WIN32)
    -  int n = ACE_OS::select (int (h) + 1,
    -                          rd_handles,
    -                          wr_handles,
    -                          ex_handles,
    -                          timeout);
    -#else
    -# if defined (ACE_HAS_POLL) && defined (ACE_HAS_LIMITED_SELECT)
    -
    -  int n = ACE_OS::poll (&fds, 1, timeout);
    -
    -# else
    -  int n = ACE_OS::select (int (h) + 1,
    -                          rd_handles,
    -                          wr_handles,
    -                          0,
    -                          timeout);
    -# endif /* ACE_HAS_POLL && ACE_HAS_LIMITED_SELECT */
    -#endif /* ACE_WIN32 */
    -
    -  // If we failed to connect within the time period allocated by the
    -  // caller, then we fail (e.g., the remote host might have been too
    -  // busy to accept our call).
    -  if (n <= 0)
    -    {
    -      if (n == 0 && timeout != 0)
    -        errno = ETIMEDOUT;
    -      return ACE_INVALID_HANDLE;
    -    }
    -
    -  // Check if the handle is ready for reading and the handle is *not*
    -  // ready for writing, which may indicate a problem.  But we need to
    -  // make sure...
    -#if defined (ACE_WIN32)
    -  need_to_check = rd_handles.is_set (h) || ex_handles.is_set (h);
    -#elif defined (VXWORKS)
    -  ACE_UNUSED_ARG (is_tli);
    -
    -  // Force the check on VxWorks.  The read handle for "h" is not set,
    -  // so "need_to_check" is false at this point.  The write handle is
    -  // set, for what it's worth.
    -  need_to_check = 1;
    -#else
    -  if (is_tli)
    -
    -# if defined (ACE_HAS_POLL) && defined (ACE_HAS_LIMITED_SELECT)
    -    need_to_check = (fds.revents & POLLIN) && !(fds.revents & POLLOUT);
    -# else
    -    need_to_check = rd_handles.is_set (h) && !wr_handles.is_set (h);
    -# endif /* ACE_HAS_POLL && ACE_HAS_LIMITED_SELECT */
    -
    -  else
    -#if defined(AIX)
    -    // AIX is broken... both success and failed connect will set the
    -    // write handle only, so always check.
    -    need_to_check = 1;
    -#else
    -# if defined (ACE_HAS_POLL) && defined (ACE_HAS_LIMITED_SELECT)
    -    need_to_check = (fds.revents & POLLIN);
    -# else
    -    need_to_check = rd_handles.is_set (h);
    -# endif /* ACE_HAS_POLL && ACE_HAS_LIMITED_SELECT */
    -#endif /* AIX */
    -#endif /* ACE_WIN32 */
    -
    -  if (need_to_check)
    -    {
    -      char dummy;
    -
    -      // The following recv() won't block provided that the
    -      // ACE_NONBLOCK flag has not been turned off .
    -      n = ACE::recv (h, &dummy, 1, MSG_PEEK);
    -
    -      // If no data was read/peeked at, check to see if it's because
    -      // of a non-connected socket (and therefore an error) or there's
    -      // just no data yet.
    -      if (n <= 0)
    -        {
    -          if (n == 0)
    -            {
    -              errno = ECONNREFUSED;
    -              h = ACE_INVALID_HANDLE;
    -            }
    -          else if (errno != EWOULDBLOCK && errno != EAGAIN)
    -            h = ACE_INVALID_HANDLE;
    -        }
    -    }
    -
    -  // 1. The HANDLE is ready for writing and doesn't need to be checked or
    -  // 2. recv() returned an indication of the state of the socket - if there is
    -  // either data present, or a recv is legit but there's no data yet,
    -  // the connection was successfully established.
    -  return h;
    -}
    -
    -ACE_HANDLE
    -ACE::handle_timed_open (ACE_Time_Value *timeout,
    -                        LPCTSTR name,
    -                        int flags,
    -                        int perms)
    -{
    -  ACE_TRACE ("ACE::handle_timed_open");
    -
    -  if (timeout != 0)
    -    {
    -      // Open the named pipe or file using non-blocking mode...
    -      ACE_HANDLE handle = ACE_OS::open (name,
    -                                        flags | ACE_NONBLOCK,
    -                                        perms);
    -      if (handle == ACE_INVALID_HANDLE
    -          && (errno == EWOULDBLOCK
    -              && (timeout->sec () > 0 || timeout->usec () > 0)))
    -        // This expression checks if we were polling.
    -        errno = ETIMEDOUT;
    -
    -      return handle;
    -    }
    -  else
    -    return ACE_OS::open (name, flags, perms);
    -}
    -
    -// Wait up to  amount of time to accept a connection.
    -
    -int
    -ACE::handle_timed_accept (ACE_HANDLE listener,
    -                          ACE_Time_Value *timeout,
    -                          int restart)
    -{
    -  ACE_TRACE ("ACE::handle_timed_accept");
    -  // Make sure we don't bomb out on erroneous values.
    -  if (listener == ACE_INVALID_HANDLE)
    -    return -1;
    -
    -#if defined (ACE_HAS_POLL) && defined (ACE_HAS_LIMITED_SELECT)
    -
    -  struct pollfd fds;
    -
    -  fds.fd = listener;
    -  fds.events = POLLIN;
    -  fds.revents = 0;
    -
    -#else
    -  // Use the select() implementation rather than poll().
    -  ACE_Handle_Set rd_handle;
    -  rd_handle.set_bit (listener);
    -#endif /* ACE_HAS_POLL && ACE_HAS_LIMITED_SELECT */
    -
    -  // We need a loop here if  is enabled.
    -
    -  for (;;)
    -    {
    -#if defined (ACE_HAS_POLL) && defined (ACE_HAS_LIMITED_SELECT)
    -
    -      int n = ACE_OS::poll (&fds, 1, timeout);
    -
    -#else
    -      int n = ACE_OS::select (int (listener) + 1,
    -                              rd_handle, 0, 0,
    -                              timeout);
    -#endif /* ACE_HAS_POLL && ACE_HAS_LIMITED_SELECT */
    -
    -      switch (n)
    -        {
    -        case -1:
    -          if (errno == EINTR && restart)
    -            continue;
    -          else
    -            return -1;
    -          /* NOTREACHED */
    -        case 0:
    -          if (timeout != 0
    -              && timeout->sec () == 0
    -              && timeout->usec () == 0)
    -            errno = EWOULDBLOCK;
    -          else
    -            errno = ETIMEDOUT;
    -          return -1;
    -          /* NOTREACHED */
    -        case 1:
    -          return 0;
    -          /* NOTREACHED */
    -        default:
    -          errno = EINVAL;
    -          return -1;
    -          /* NOTREACHED */
    -        }
    -    }
    -  ACE_NOTREACHED (return 0);
    -}
    -
    -// Bind socket to an unused port.
    -
    -int
    -ACE::bind_port (ACE_HANDLE handle,
    -                ACE_UINT32 ip_addr)
    -{
    -  ACE_TRACE ("ACE::bind_port");
    -
    -  sockaddr_in sock_addr;
    -
    -  ACE_OS::memset ((void *) &sock_addr, 0, sizeof sock_addr);
    -  sock_addr.sin_family = AF_INET;
    -#if defined (ACE_HAS_SIN_LEN)
    -  sock_addr.sin_len = sizeof sock_addr;
    -#endif /* ACE_HAS_SIN_LEN */
    -  sock_addr.sin_addr.s_addr = ip_addr;
    -
    -#if !defined (ACE_LACKS_WILDCARD_BIND)
    -  // The OS kernel should select a free port for us.
    -  sock_addr.sin_port = 0;
    -  return ACE_OS::bind (handle,
    -                       ACE_reinterpret_cast(sockaddr *, &sock_addr),
    -                       sizeof sock_addr);
    -#else
    -  static u_short upper_limit = ACE_MAX_DEFAULT_PORT;
    -  int round_trip = upper_limit;
    -  int lower_limit = IPPORT_RESERVED;
    -
    -  // We have to select the port explicitly.
    -
    -  for (;;)
    -    {
    -      sock_addr.sin_port = htons (upper_limit);
    -
    -      if (ACE_OS::bind (handle,
    -                        ACE_reinterpret_cast(sockaddr *, &sock_addr),
    -                        sizeof sock_addr) >= 0)
    -        {
    -#if defined (ACE_WIN32)
    -          upper_limit--;
    -#endif /* ACE_WIN32 */
    -          return 0;
    -        }
    -      else if (errno != EADDRINUSE)
    -        return -1;
    -      else
    -        {
    -          upper_limit--;
    -
    -          // Wrap back around when we reach the bottom.
    -          if (upper_limit <= lower_limit)
    -            upper_limit = ACE_MAX_DEFAULT_PORT;
    -
    -          // See if we have already gone around once!
    -          if (upper_limit == round_trip)
    -            {
    -              errno = EAGAIN;
    -              return -1;
    -            }
    -        }
    -    }
    -#endif /* ACE_HAS_WILDCARD_BIND */
    -}
    -
    -// Make the current process a UNIX daemon.  This is based on Stevens
    -// code from APUE.
    -
    -int
    -ACE::daemonize (const char pathname[],
    -                int close_all_handles,
    -                const char program_name[])
    -{
    -  ACE_TRACE ("ACE::daemonize");
    -#if !defined (ACE_LACKS_FORK)
    -  pid_t pid = ACE_OS::fork ();
    -
    -  if (pid == -1)
    -    return -1;
    -  else if (pid != 0)
    -    ACE_OS::exit (0); // Parent exits.
    -
    -  // 1st child continues.
    -  ACE_OS::setsid (); // Become session leader.
    -
    -  ACE_OS::signal (SIGHUP, SIG_IGN);
    -
    -  pid = ACE_OS::fork (program_name);
    -
    -  if (pid != 0)
    -    ACE_OS::exit (0); // First child terminates.
    -
    -  // Second child continues.
    -
    -  if (pathname != 0)
    -    // change working directory.
    -    ACE_OS::chdir (pathname);
    -
    -  ACE_OS::umask (0); // clear our file mode creation mask.
    -
    -  // Close down the files.
    -  if (close_all_handles)
    -    for (int i = ACE::max_handles () - 1; i >= 0; i--)
    -      ACE_OS::close (i);
    -
    -  return 0;
    -#else
    -  ACE_UNUSED_ARG (pathname);
    -  ACE_UNUSED_ARG (close_all_handles);
    -  ACE_UNUSED_ARG (program_name);
    -
    -  ACE_NOTSUP_RETURN (-1);
    -#endif /* ACE_LACKS_FORK */
    -}
    -
    -pid_t
    -ACE::fork (const char *program_name,
    -           int avoid_zombies)
    -{
    -  if (avoid_zombies == 0)
    -    return ACE_OS::fork (program_name);
    -  else
    -    {
    -      // This algorithm is adapted from an example in the Stevens book
    -      // "Advanced Programming in the Unix Environment" and an item in
    -      // Andrew Gierth's Unix Programming FAQ.  It creates an orphan
    -      // process that's inherited by the init process; init cleans up
    -      // when the orphan process terminates.
    -      //
    -      // Another way to avoid zombies is to ignore or catch the
    -      // SIGCHLD signal; we don't use that approach here.
    -
    -      pid_t pid = ACE_OS::fork ();
    -      if (pid == 0)
    -        {
    -          // The child process forks again to create a grandchild.
    -          switch (ACE_OS::fork (program_name))
    -            {
    -            case 0: // grandchild returns 0.
    -              return 0;
    -            case -1: // assumes all errnos are < 256
    -              ACE_OS::_exit (errno);
    -            default:  // child terminates, orphaning grandchild
    -              ACE_OS::_exit (0);
    -            }
    -        }
    -
    -      // Parent process waits for child to terminate.
    -#if defined (ACE_HAS_UNION_WAIT)
    -      union wait status;
    -      if (pid < 0 || ACE_OS::waitpid (pid, &(status.w_status), 0) < 0)
    -#else
    -      ACE_exitcode status;
    -      if (pid < 0 || ACE_OS::waitpid (pid, &status, 0) < 0)
    -#endif /* ACE_HAS_UNION_WAIT */
    -        return -1;
    -
    -      // child terminated by calling exit()?
    -      if (WIFEXITED ((status)))
    -        {
    -          // child terminated normally?
    -          if (WEXITSTATUS ((status)) == 0)
    -            return 1;
    -          else
    -            errno = WEXITSTATUS ((status));
    -        }
    -      else
    -        // child didn't call exit(); perhaps it received a signal?
    -        errno = EINTR;
    -
    -      return -1;
    -    }
    -}
    -
    -int
    -ACE::max_handles (void)
    -{
    -  ACE_TRACE ("ACE::max_handles");
    -#if defined (RLIMIT_NOFILE) && !defined (ACE_LACKS_RLIMIT)
    -  rlimit rl;
    -  ACE_OS::getrlimit (RLIMIT_NOFILE, &rl);
    -# if defined (RLIM_INFINITY)
    -  if (rl.rlim_cur != RLIM_INFINITY)
    -    return rl.rlim_cur;
    -#else
    -    return rl.rlim_cur;
    -# endif /* RLIM_INFINITY */
    -# if defined (_SC_OPEN_MAX)
    -  return ACE_OS::sysconf (_SC_OPEN_MAX);
    -# elif defined (FD_SETSIZE)
    -  return FD_SETSIZE;
    -# else
    -  ACE_NOTSUP_RETURN (-1);
    -# endif /* _SC_OPEN_MAX */
    -#else
    -  ACE_NOTSUP_RETURN (-1);
    -#endif /* defined (RLIMIT_NOFILE) && !defined (ACE_LACKS_RLIMIT) */
    -}
    -
    -// Set the number of currently open handles in the process.
    -//
    -// If NEW_LIMIT == -1 set the limit to the maximum allowable.
    -// Otherwise, set it to be the value of NEW_LIMIT.
    -
    -int
    -ACE::set_handle_limit (int new_limit)
    -{
    -  ACE_TRACE ("ACE::set_handle_limit");
    -  int cur_limit = ACE::max_handles ();
    -  int max_limit = cur_limit;
    -
    -  if (cur_limit == -1)
    -    return -1;
    -
    -#if !defined (ACE_LACKS_RLIMIT) && defined (RLIMIT_NOFILE)
    -  struct rlimit rl;
    -
    -  ACE_OS::memset ((void *) &rl, 0, sizeof rl);
    -  ACE_OS::getrlimit (RLIMIT_NOFILE, &rl);
    -  max_limit = rl.rlim_max;
    -#endif /* ACE_LACKS_RLIMIT */
    -
    -  if (new_limit == -1)
    -    new_limit = max_limit;
    -
    -  if (new_limit < 0)
    -    {
    -      errno = EINVAL;
    -      return -1;
    -    }
    -  else if (new_limit > cur_limit)
    -    {
    -#if !defined (ACE_LACKS_RLIMIT) && defined (RLIMIT_NOFILE)
    -      rl.rlim_cur = new_limit;
    -      return ACE_OS::setrlimit (RLIMIT_NOFILE, &rl);
    -#else
    -      // Must return EINVAL errno.
    -      ACE_NOTSUP_RETURN (-1);
    -#endif /* ACE_LACKS_RLIMIT */
    -    }
    -  else
    -    {
    -#if !defined (ACE_LACKS_RLIMIT) && defined (RLIMIT_NOFILE)
    -      rl.rlim_cur = new_limit;
    -      return ACE_OS::setrlimit (RLIMIT_NOFILE, &rl);
    -#else
    -      // We give a chance to platforms without RLIMIT to work.
    -      // Instead of ACE_NOTSUP_RETURN (0), just return 0 because
    -      // new_limit is <= cur_limit, so it's a no-op.
    -      return 0;
    -#endif /* ACE_LACKS_RLIMIT */
    -    }
    -
    -  // Irix complains without this return statement.  DEC cxx
    -  // (correctly) says that it's not reachable.  ACE_NOTREACHED won't
    -  // work here, because it handles both platforms the same.
    -  // IRIX does not complain anymore [7.2]
    -  ACE_NOTREACHED (return 0);
    -}
    -
    -// Flags are file status flags to turn on.
    -
    -int
    -ACE::set_flags (ACE_HANDLE handle, int flags)
    -{
    -  ACE_TRACE ("ACE::set_flags");
    -#if defined (ACE_WIN32) || defined (VXWORKS) || defined (ACE_LACKS_FCNTL)
    -  switch (flags)
    -    {
    -    case ACE_NONBLOCK:
    -      // nonblocking argument (1)
    -      // blocking:            (0)
    -      {
    -        u_long nonblock = 1;
    -        return ACE_OS::ioctl (handle, FIONBIO, &nonblock);
    -      }
    -    default:
    -      ACE_NOTSUP_RETURN (-1);
    -    }
    -#else
    -  int val = ACE_OS::fcntl (handle, F_GETFL, 0);
    -
    -  if (val == -1)
    -    return -1;
    -
    -  // Turn on flags.
    -  ACE_SET_BITS (val, flags);
    -
    -  if (ACE_OS::fcntl (handle, F_SETFL, val) == -1)
    -    return -1;
    -  else
    -    return 0;
    -#endif /* ACE_WIN32 || ACE_LACKS_FCNTL */
    -}
    -
    -// Flags are the file status flags to turn off.
    -
    -int
    -ACE::clr_flags (ACE_HANDLE handle, int flags)
    -{
    -  ACE_TRACE ("ACE::clr_flags");
    -
    -#if defined (ACE_WIN32) || defined (VXWORKS) || defined (ACE_LACKS_FCNTL)
    -  switch (flags)
    -    {
    -    case ACE_NONBLOCK:
    -      // nonblocking argument (1)
    -      // blocking:            (0)
    -      {
    -        u_long nonblock = 0;
    -        return ACE_OS::ioctl (handle, FIONBIO, &nonblock);
    -      }
    -    default:
    -      ACE_NOTSUP_RETURN (-1);
    -    }
    -#else
    -  int val = ACE_OS::fcntl (handle, F_GETFL, 0);
    -
    -  if (val == -1)
    -    return -1;
    -
    -  // Turn flags off.
    -  ACE_CLR_BITS (val, flags);
    -
    -  if (ACE_OS::fcntl (handle, F_SETFL, val) == -1)
    -    return -1;
    -  else
    -    return 0;
    -#endif /* ACE_WIN32 || ACE_LACKS_FCNTL */
    -}
    -
    -int
    -ACE::map_errno (int error)
    -{
    -  switch (error)
    -    {
    -#if defined (ACE_WIN32)
    -    case WSAEWOULDBLOCK:
    -      return EAGAIN; // Same as UNIX errno EWOULDBLOCK.
    -#endif /* ACE_WIN32 */
    -    }
    -
    -  return error;
    -}
    -
    -ssize_t
    -ACE::send (ACE_HANDLE handle,
    -           const void *buf,
    -           size_t n,
    -           int flags,
    -           const ACE_Time_Value *timeout)
    -{
    -#if defined (ACE_HAS_SEND_TIMEDWAIT)
    -  if (timeout == 0)
    -    return ACE::send (handle, buf, n, flags);
    -  else
    -    {
    -      ACE_Time_Value copy = *timeout;
    -      copy += ACE_OS::gettimeofday();
    -      timespec_t ts = copy;
    -      return ::send_timedwait (handle, buf, n, flags, &ts);
    -    }
    -#else
    -  int val;
    -
    -  if (ACE::enter_send_timedwait (handle, timeout, val) == -1)
    -    return -1;
    -  else
    -    {
    -      ssize_t bytes_written = ACE::send (handle, buf, n, flags);
    -      ACE::leave_send_timedwait (handle, timeout, val);
    -      return bytes_written;
    -    }
    -#endif /* ACE_HAS_SEND_TIMEDWAIT */
    -}
    -
    -ssize_t
    -ACE::send (ACE_HANDLE handle,
    -           const void *buf,
    -           size_t n,
    -           const ACE_Time_Value *timeout)
    -{
    -  // ACE_TRACE ("ACE_OS::write");
    -#if defined (ACE_HAS_WRITE_TIMEDWAIT)
    -  if (timeout == 0)
    -    return ACE::send (handle, buf, n);
    -  else
    -    {
    -      ACE_Time_Value copy = *timeout;
    -      copy += ACE_OS::gettimeofday ();
    -      timespec_t ts = copy;
    -      return ::write_timedwait (handle, buf, n, &ts);
    -    }
    -#else
    -  int val;
    -
    -  if (ACE::enter_send_timedwait (handle, timeout, val) == -1)
    -    return -1;
    -  else
    -    {
    -      ssize_t bytes_written = ACE::send (handle, buf, n);
    -      ACE::leave_send_timedwait (handle, timeout, val);
    -      return bytes_written;
    -    }
    -#endif /* ACE_HAS_WRITE_TIMEDWAIT */
    -}
    -
    -ssize_t
    -ACE::send_n (ACE_HANDLE handle,
    -             const void *buf,
    -             size_t len,
    -             int flags,
    -             const ACE_Time_Value *timeout)
    -{
    -  // Total number of bytes written.
    -  size_t bytes_written;
    -
    -  // Actual number of bytes written in each  attempt.
    -  ssize_t n;
    -
    -  for (bytes_written = 0;
    -       bytes_written < len;
    -       bytes_written += n)
    -    {
    -      n = ACE::send (handle,
    -                     (char *) buf + bytes_written,
    -                     len - bytes_written,
    -                     flags,
    -                     timeout);
    -      if (n == -1)
    -        if (errno == EWOULDBLOCK)
    -          n = 0; // Keep trying to send.
    -        else
    -          return -1;
    -    }
    -
    -  return bytes_written;
    -}
    -
    -ssize_t
    -ACE::send_n (ACE_HANDLE handle,
    -             const void *buf,
    -             size_t len,
    -             const ACE_Time_Value *timeout)
    -{
    -  // Total number of bytes written.
    -  size_t bytes_written;
    -
    -  // Actual number of bytes written in each  attempt.
    -  ssize_t n;
    -
    -  for (bytes_written = 0;
    -       bytes_written < len;
    -       bytes_written += n)
    -    {
    -      n = ACE::send (handle, (char *) buf + bytes_written,
    -                     len - bytes_written, timeout);
    -      if (n == -1)
    -        if (errno == EWOULDBLOCK)
    -          n = 0; // Keep trying to send.
    -        else
    -          return -1;
    -    }
    -
    -  return bytes_written;
    -}
    -
    -ssize_t
    -ACE::recvfrom (ACE_HANDLE handle,
    -               char *buf,
    -               int len,
    -               int flags,
    -               struct sockaddr *addr,
    -               int *addrlen,
    -               const ACE_Time_Value *timeout)
    -{
    -  // ACE_TRACE ("ACE::recvfrom");
    -#if defined (ACE_HAS_RECVFROM_TIMEDWAIT)
    -  if (timeout == 0)
    -     return ACE_OS::recvfrom (handle,
    -                              buf,
    -                              len,
    -                              flags,
    -                              addr,
    -                              addrlen);
    -  else
    -    {
    -      ACE_Time_Value copy = *timeout;
    -      copy += ACE_OS::gettimeofday ();
    -      timespec_t ts = copy;
    -      return ::recvfrom_timedwait (handle,
    -                                   buf,
    -                                   len,
    -                                   flags,
    -                                   addr,
    -                                   addrlen,
    -                                   &ts)a
    -;
    -    }
    -#else
    -  int val;
    -  if (ACE::enter_recv_timedwait (handle,
    -                                 timeout,
    -                                 val) == -1)
    -     return -1;
    -  else
    -    {
    -      int bytes_read = ACE_OS::recvfrom (handle,
    -                                         buf,
    -                                         len,
    -                                         flags,
    -                                         addr,
    -                                         addrlen);
    -      ACE::leave_recv_timedwait (handle,
    -                                 timeout,
    -                                 val);
    -      return bytes_read;
    -    }
    -#endif /* ACE_HAS_RECVFROM_TIMEDWAIT */
    -}
    -
    -ssize_t
    -ACE::recvmsg (ACE_HANDLE handle,
    -              struct msghdr *msg,
    -              int flags,
    -              const ACE_Time_Value *timeout)
    -{
    -  // ACE_TRACE ("ACE::recvmsg");
    -#if defined (ACE_HAS_RECVMSG_TIMEDWAIT)
    -  if (timeout == 0)
    -     return ACE_OS::recvmsg (handle, msg, flags);
    -  else
    -    {
    -      ACE_Time_Value copy = *timeout;
    -      copy += ACE_OS::gettimeofday ();
    -      timespec_t ts = copy;
    -      return ::recvmsg_timedwait (handle, msg, flags, &ts);
    -    }
    -#else
    -  int val;
    -  if (ACE::enter_recv_timedwait (handle, timeout, val) == -1)
    -    return -1;
    -  else
    -    {
    -      int bytes_read = ACE_OS::recvmsg (handle, msg, flags);
    -      ACE::leave_recv_timedwait (handle, timeout, val);
    -      return bytes_read;
    -    }
    -#endif /* ACE_HAS_RECVMSG_TIMEDWAIT */
    -}
    -
    -ssize_t
    -ACE::recv (ACE_HANDLE handle,
    -           void *buf,
    -           size_t n,
    -           const ACE_Time_Value *timeout)
    -{
    -  // ACE_TRACE ("ACE::read");
    -#if defined (ACE_HAS_READ_TIMEDWAIT)
    -  if (timeout == 0)
    -     return ACE::recv (handle, buf, n);
    -  else
    -    {
    -      ACE_Time_Value copy = *timeout;
    -      copy += ACE_OS::gettimeofday ();
    -      timespec_t ts = copy;
    -      return ::read_timedwait (handle, buf, n, &ts);
    -    }
    -#else
    -  int val;
    -
    -  if (ACE::enter_recv_timedwait (handle, timeout, val) == -1)
    -    return -1;
    -  else
    -    {
    -      ssize_t bytes_read = ACE::recv (handle, buf, n);
    -      ACE::leave_recv_timedwait (handle, timeout, val);
    -      return bytes_read;
    -    }
    -#endif /* ACE_HAS_READ_TIMEDWAIT */
    -}
    -
    -ssize_t
    -ACE::recv (ACE_HANDLE handle,
    -           void *buf,
    -           size_t len,
    -           int flags,
    -           const ACE_Time_Value *timeout)
    -{
    -  // ACE_TRACE ("ACE::recv");
    -#if defined (ACE_HAS_RECV_TIMEDWAIT)
    -  if (timeout == 0)
    -     return ACE::recv (handle, buf, len, flags);
    -  else
    -    {
    -      ACE_Time_Value copy = *timeout;
    -      copy += ACE_OS::gettimeofday ();
    -      timespec_t ts = copy;
    -      return ::recv_timedwait (handle, buf, len, flags, &ts);
    -    }
    -#else
    -  int val;
    -  if (ACE::enter_recv_timedwait (handle, timeout, val)==-1)
    -     return -1;
    -  else
    -    {
    -      ssize_t bytes_recv = ACE::recv (handle, buf, len, flags);
    -      ACE::leave_recv_timedwait (handle, timeout, val);
    -      return bytes_recv;
    -    }
    -#endif /* ACE_HAS_RECV_TIMEDWAIT */
    -}
    -
    -ssize_t
    -ACE::recv_n (ACE_HANDLE handle,
    -             void *buf,
    -             size_t len,
    -             int flags,
    -             const ACE_Time_Value *timeout)
    -{
    -  size_t bytes_received;
    -
    -  // Actual number of bytes read in each attempt.
    -  ssize_t n;
    -
    -  for (bytes_received = 0;
    -       bytes_received < len;
    -       bytes_received += n)
    -    {
    -      n = ACE::recv (handle,
    -                     (char *) buf + bytes_received,
    -                     len - bytes_received,
    -                     flags,
    -                     timeout);
    -      if (n == -1 || n == 0)
    -        break;
    -    }
    -
    -  return bytes_received;
    -}
    -
    -ssize_t
    -ACE::recv_n (ACE_HANDLE handle,
    -             void *buf,
    -             size_t len,
    -             const ACE_Time_Value *timeout)
    -{
    -  size_t bytes_received;
    -
    -  // Actual number of bytes read in each attempt.
    -  ssize_t n;
    -
    -  for (bytes_received = 0;
    -       bytes_received < len;
    -       bytes_received += n)
    -    {
    -      n = ACE::recv (handle,
    -                     (char *) buf + bytes_received,
    -                     len - bytes_received,
    -                     timeout);
    -      if (n == -1 || n == 0)
    -        break;
    -    }
    -
    -  return bytes_received;
    -}
    -
    -
    -// Euclid's greatest common divisor algorithm.
    -u_long
    -ACE::gcd (u_long x, u_long y)
    -{
    -  if (y == 0)
    -  {
    -    return x;
    -  }
    -  else
    -  {
    -    return ACE::gcd (y, x % y);
    -  }
    -}
    -
    -
    -// Calculates the minimum enclosing frame size for the given values.
    -u_long
    -ACE::minimum_frame_size (u_long period1, u_long period2)
    -{
    -  // if one of the periods is zero, treat it as though it as
    -  // uninitialized and return the other period as the frame size
    -  if (0 == period1)
    -  {
    -    return period2;
    -  }
    -  if (0 == period2)
    -  {
    -    return period1;
    -  }
    -
    -  // if neither is zero, find the greatest common divisor of the two periods
    -  u_long greatest_common_divisor = ACE::gcd (period1, period2);
    -
    -  // explicitly consider cases to reduce risk of possible overflow errors
    -  if (greatest_common_divisor == 1)
    -  {
    -    // periods are relative primes: just multiply them together
    -    return period1 * period2;
    -  }
    -  else if (greatest_common_divisor == period1)
    -  {
    -    // the first period divides the second: return the second
    -    return period2;
    -  }
    -  else if (greatest_common_divisor == period2)
    -  {
    -    // the second period divides the first: return the first
    -    return period1;
    -  }
    -  else
    -  {
    -    // the current frame size and the entry's effective period
    -    // have a non-trivial greatest common divisor: return the
    -    // product of factors divided by those in their gcd.
    -    return (period1 * period2) / greatest_common_divisor;
    -  }
    -}
    -
    -
    -u_long
    -ACE::is_prime (const u_long n,
    -               const u_long min_factor,
    -               const u_long max_factor)
    -{
    -  if (n > 3)
    -    for (u_long factor = min_factor;
    -         factor <= max_factor;
    -         ++factor)
    -      if (n / factor * factor == n)
    -        return factor;
    -
    -  return 0;
    -}
    -
    -const ASYS_TCHAR *
    -ACE::sock_error (int error)
    -{
    -#if defined (ACE_WIN32)
    -  static ASYS_TCHAR unknown_msg[64];
    -
    -  switch (error)
    -    {
    -    case WSAVERNOTSUPPORTED:
    -      return ASYS_TEXT ("version of WinSock not supported");
    -      /* NOTREACHED */
    -    case WSASYSNOTREADY:
    -      return ASYS_TEXT ("WinSock not present or not responding");
    -      /* NOTREACHED */
    -    case WSAEINVAL:
    -      return ASYS_TEXT ("app version not supported by DLL");
    -      /* NOTREACHED */
    -    case WSAHOST_NOT_FOUND:
    -      return ASYS_TEXT ("Authoritive: Host not found");
    -      /* NOTREACHED */
    -    case WSATRY_AGAIN:
    -      return ASYS_TEXT ("Non-authoritive: host not found or server failure");
    -      /* NOTREACHED */
    -    case WSANO_RECOVERY:
    -      return ASYS_TEXT ("Non-recoverable: refused or not implemented");
    -      /* NOTREACHED */
    -    case WSANO_DATA:
    -      return ASYS_TEXT ("Valid name, no data record for type");
    -      /* NOTREACHED */
    -      /*
    -        case WSANO_ADDRESS:
    -        return "Valid name, no MX record";
    -          */
    -    case WSANOTINITIALISED:
    -      return ASYS_TEXT ("WSA Startup not initialized");
    -      /* NOTREACHED */
    -    case WSAENETDOWN:
    -      return ASYS_TEXT ("Network subsystem failed");
    -      /* NOTREACHED */
    -    case WSAEINPROGRESS:
    -      return ASYS_TEXT ("Blocking operation in progress");
    -      /* NOTREACHED */
    -    case WSAEINTR:
    -      return ASYS_TEXT ("Blocking call cancelled");
    -      /* NOTREACHED */
    -    case WSAEAFNOSUPPORT:
    -      return ASYS_TEXT ("address family not supported");
    -      /* NOTREACHED */
    -    case WSAEMFILE:
    -      return ASYS_TEXT ("no file handles available");
    -      /* NOTREACHED */
    -    case WSAENOBUFS:
    -      return ASYS_TEXT ("no buffer space available");
    -      /* NOTREACHED */
    -    case WSAEPROTONOSUPPORT:
    -      return ASYS_TEXT ("specified protocol not supported");
    -      /* NOTREACHED */
    -    case WSAEPROTOTYPE:
    -      return ASYS_TEXT ("protocol wrong type for this socket");
    -      /* NOTREACHED */
    -    case WSAESOCKTNOSUPPORT:
    -      return ASYS_TEXT ("socket type not supported for address family");
    -      /* NOTREACHED */
    -    case WSAENOTSOCK:
    -      return ASYS_TEXT ("handle is not a socket");
    -      /* NOTREACHED */
    -    case WSAEWOULDBLOCK:
    -      return ASYS_TEXT ("socket marked as non-blocking and SO_LINGER set not 0");
    -      /* NOTREACHED */
    -    case WSAEADDRINUSE:
    -      return ASYS_TEXT ("address already in use");
    -      /* NOTREACHED */
    -    case WSAECONNABORTED:
    -      return ASYS_TEXT ("connection aborted");
    -      /* NOTREACHED */
    -    case WSAECONNRESET:
    -      return ASYS_TEXT ("connection reset");
    -      /* NOTREACHED */
    -    case WSAENOTCONN:
    -      return ASYS_TEXT ("not connected");
    -      /* NOTREACHED */
    -    case WSAETIMEDOUT:
    -      return ASYS_TEXT ("connection timed out");
    -      /* NOTREACHED */
    -    case WSAECONNREFUSED:
    -      return ASYS_TEXT ("connection refused");
    -      /* NOTREACHED */
    -    case WSAEHOSTDOWN:
    -      return ASYS_TEXT ("host down");
    -      /* NOTREACHED */
    -    case WSAEHOSTUNREACH:
    -      return ASYS_TEXT ("host unreachable");
    -      /* NOTREACHED */
    -    case WSAEADDRNOTAVAIL:
    -      return ASYS_TEXT ("address not available");
    -      /* NOTREACHED */
    -    default:
    -      ACE_OS::sprintf (unknown_msg, ASYS_TEXT ("unknown error: %d"), error);
    -      return unknown_msg;
    -      /* NOTREACHED */
    -    }
    -#else
    -  ACE_UNUSED_ARG (error);
    -  ACE_NOTSUP_RETURN (0);
    -#endif /* ACE_WIN32 */
    -}
    -
    -int
    -ACE::get_bcast_addr (ACE_UINT32 &bcast_addr,
    -                     const char *host_name,
    -                     ACE_UINT32 host_addr,
    -                     ACE_HANDLE handle)
    -{
    -  ACE_TRACE ("ACE::get_bcast_addr");
    -
    -#if !defined(ACE_WIN32)
    -  ACE_HANDLE s = handle;
    -
    -  if (s == ACE_INVALID_HANDLE)
    -    s = ACE_OS::socket (AF_INET, SOCK_STREAM, 0);
    -
    -  if (s == ACE_INVALID_HANDLE)
    -    ACE_ERROR_RETURN ((LM_ERROR,
    -                       ASYS_TEXT ("%p\n"),
    -                       ASYS_TEXT ("ACE_OS::socket")),
    -                      -1);
    -
    -  struct ifconf ifc;
    -  char buf[BUFSIZ];
    -
    -  ifc.ifc_len = sizeof buf;
    -  ifc.ifc_buf = buf;
    -
    -  // Get interface structure and initialize the addresses using UNIX
    -  // techniques
    -#if defined (AIX)
    -  int cmd = CSIOCGIFCONF;
    -#else
    -  int cmd = SIOCGIFCONF;
    -#endif /* AIX */
    -  if (ACE_OS::ioctl (s, cmd, (char *) &ifc) == -1)
    -    ACE_ERROR_RETURN ((LM_ERROR,
    -                       ASYS_TEXT ("%p\n"),
    -                       ASYS_TEXT ("ACE::get_bcast_addr:")
    -                       ASYS_TEXT ("ioctl (get interface configuration)")),
    -                      -1);
    -
    -  struct ifreq *ifr = ifc.ifc_req;
    -
    -  struct sockaddr_in ip_addr;
    -
    -  // Get host ip address if necessary.
    -  if (host_name)
    -    {
    -      hostent *hp = ACE_OS::gethostbyname (host_name);
    -
    -      if (hp == 0)
    -        return -1;
    -      else
    -#if !defined(_UNICOS)
    -        ACE_OS::memcpy ((char *) &ip_addr.sin_addr.s_addr,
    -                        (char *) hp->h_addr,
    -                        hp->h_length);
    -#else /* _UNICOS */
    -        {
    -          ACE_UINT64 haddr;  // a place to put the address
    -          char * haddrp = (char *) &haddr;  // convert to char pointer
    -          ACE_OS::memcpy(haddrp,(char *) hp->h_addr,hp->h_length);
    -          ip_addr.sin_addr.s_addr = haddr;
    -        }
    -#endif /* ! _UNICOS */
    -    }
    -  else
    -    {
    -      ACE_OS::memset ((void *) &ip_addr, 0, sizeof ip_addr);
    -#if !defined(_UNICOS)
    -      ACE_OS::memcpy ((void *) &ip_addr.sin_addr,
    -                      (void*) &host_addr,
    -                      sizeof ip_addr.sin_addr);
    -#else /* _UNICOS */
    -      ip_addr.sin_addr.s_addr = host_addr;   // just copy to the bitfield
    -#endif /* ! _UNICOS */
    -    }
    -
    -  for (int n = ifc.ifc_len / sizeof (struct ifreq);
    -       n > 0;
    -       n--, ifr++)
    -    {
    -      struct sockaddr_in if_addr;
    -
    -      // Compare host ip address with interface ip address.
    -      ACE_OS::memcpy (&if_addr,
    -                      &ifr->ifr_addr,
    -                      sizeof if_addr);
    -
    -      if (ip_addr.sin_addr.s_addr != if_addr.sin_addr.s_addr)
    -        continue;
    -
    -      if (ifr->ifr_addr.sa_family != AF_INET)
    -        {
    -          ACE_ERROR ((LM_ERROR,
    -                      ASYS_TEXT ("%p\n"),
    -                      ASYS_TEXT ("ACE::get_bcast_addr:")
    -                      ASYS_TEXT ("Not AF_INET")));
    -          continue;
    -        }
    -
    -      struct ifreq flags = *ifr;
    -      struct ifreq if_req = *ifr;
    -
    -      if (ACE_OS::ioctl (s, SIOCGIFFLAGS, (char *) &flags) == -1)
    -        {
    -          ACE_ERROR ((LM_ERROR,
    -                      ASYS_TEXT ("%p\n"),
    -                      ASYS_TEXT ("ACE::get_bcast_addr:")
    -                      ASYS_TEXT (" ioctl (get interface flags)")));
    -          continue;
    -        }
    -
    -      if (ACE_BIT_DISABLED (flags.ifr_flags, IFF_UP))
    -        {
    -          ACE_ERROR ((LM_ERROR,
    -                      ASYS_TEXT ("%p\n"),
    -                      ASYS_TEXT ("ACE::get_bcast_addr:")
    -                      ASYS_TEXT ("Network interface is not up")));
    -          continue;
    -        }
    -
    -      if (ACE_BIT_ENABLED (flags.ifr_flags, IFF_LOOPBACK))
    -        continue;
    -
    -      if (ACE_BIT_ENABLED (flags.ifr_flags, IFF_BROADCAST))
    -        {
    -          if (ACE_OS::ioctl (s,
    -                             SIOCGIFBRDADDR,
    -                             (char *) &if_req) == -1)
    -            ACE_ERROR ((LM_ERROR,
    -                        ASYS_TEXT ("%p\n"),
    -                        ASYS_TEXT ("ACE::get_bcast_addr:")
    -                        ASYS_TEXT ("ioctl (get broadaddr)")));
    -          else
    -            {
    -              ACE_OS::memcpy (ACE_reinterpret_cast(sockaddr_in *, &ip_addr),
    -                              ACE_reinterpret_cast(sockaddr_in *, &if_req.ifr_broadaddr),
    -                              sizeof if_req.ifr_broadaddr);
    -
    -              ACE_OS::memcpy ((void *) &host_addr,
    -                              (void *) &ip_addr.sin_addr,
    -                              sizeof host_addr);
    -
    -              if (handle == ACE_INVALID_HANDLE)
    -                ACE_OS::close (s);
    -
    -              bcast_addr = host_addr;
    -              return 0;
    -            }
    -        }
    -      else
    -        ACE_ERROR ((LM_ERROR,
    -                    ASYS_TEXT ("%p\n"),
    -                    ASYS_TEXT ("ACE::get_bcast_addr:")
    -                    ASYS_TEXT ("Broadcast is not enable for this interface.")));
    -
    -      if (handle == ACE_INVALID_HANDLE)
    -        ACE_OS::close (s);
    -
    -      bcast_addr = host_addr;
    -      return 0;
    -    }
    -
    -  return 0;
    -#else
    -  ACE_UNUSED_ARG (handle);
    -  ACE_UNUSED_ARG (host_addr);
    -  ACE_UNUSED_ARG (host_name);
    -  bcast_addr = (ACE_UINT32 (INADDR_BROADCAST));
    -  return 0;
    -#endif /* !ACE_WIN32 */
    -}
    -
    -// Helper routine for get_ip_interfaces, differs by UNIX platform so
    -// put into own subroutine.  perform some ioctls to retrieve ifconf
    -// list of ifreq structs.
    -
    -int
    -ACE::count_interfaces (ACE_HANDLE handle,
    -                       size_t &how_many)
    -{
    -#if defined (sparc) && defined (SIOCGIFNUM)
    -  if (ACE_OS::ioctl (handle,
    -                     SIOCGIFNUM,
    -                     (caddr_t) &how_many) == -1)
    -    ACE_ERROR_RETURN ((LM_ERROR,
    -                       ASYS_TEXT ("ACE::get_ip_interfaces:")
    -                       ASYS_TEXT ("ioctl - SIOCGIFNUM failed")),
    -                      -1);
    -   return 0;
    -#elif defined (__unix) || defined (__Lynx__) || defined (_AIX)
    -   // Note: DEC CXX doesn't define "unix".  BSD compatible OS: HP UX,
    -   // AIX, SunOS 4.x perform some ioctls to retrieve ifconf list of
    -   // ifreq structs no SIOCGIFNUM on SunOS 4.x, so use guess and scan
    -   // algorithm
    -
    -   // Probably hard to put this many ifs in a unix box..
    -  const int MAX_IF = 50;
    -
    -  // HACK - set to an unreasonable number
    -  int num_ifs = MAX_IF;
    -
    -  struct ifconf ifcfg;
    -  size_t ifreq_size = num_ifs * sizeof (struct ifreq);
    -  struct ifreq *p_ifs =
    -    (struct ifreq *) ACE_OS::malloc (ifreq_size);
    -
    -  if (!p_ifs)
    -    {
    -      errno = ENOMEM;
    -      return -1;
    -    }
    -
    -  ACE_OS::memset (p_ifs, 0, ifreq_size);
    -  ACE_OS::memset (&ifcfg, 0, sizeof (struct ifconf));
    -
    -  ifcfg.ifc_req = p_ifs;
    -  ifcfg.ifc_len = ifreq_size;
    -
    -#if defined (AIX)
    -  int cmd = CSIOCGIFCONF;
    -#else
    -  int cmd = SIOCGIFCONF;
    -#endif /* AIX */
    -  if (ACE_OS::ioctl (handle,
    -                     cmd,
    -                     (caddr_t) &ifcfg) == -1)
    -    {
    -      ACE_OS::free (ifcfg.ifc_req);
    -      ACE_ERROR_RETURN ((LM_ERROR,
    -                         ASYS_TEXT ("count_interfaces:ioctl:")
    -                         ASYS_TEXT ("SIOCGIFCONF failed")),
    -                        -1);
    -    }
    -
    -  int if_count = 0, i;
    -
    -  // get if address out of ifreq buffers.  ioctl puts a blank-named
    -  // interface to mark the end of the returned interfaces.
    -  for (i = 0;
    -       i < num_ifs;
    -       i++)
    -    {
    -      if (p_ifs->ifr_name[0] == '\0')
    -        break;
    -
    -      if_count++;
    -      p_ifs++;
    -    }
    -
    -  ACE_OS::free (ifcfg.ifc_req);
    -  how_many = if_count;
    -  return 0;
    -#else
    -   ACE_UNUSED_ARG (handle);
    -   ACE_UNUSED_ARG (how_many);
    -   ACE_NOTSUP_RETURN (-1);; // no implmentation
    -#endif /* sparc && SIOCGIFNUM */
    -}
    -
    -// Routine to return a handle from which ioctl() requests can be made.
    -
    -ACE_HANDLE
    -ACE::get_handle (void)
    -{
    -// Solaris 2.x
    -  ACE_HANDLE handle = ACE_INVALID_HANDLE;
    -#if defined (sparc)
    -  handle = ACE_OS::open ("/dev/udp", O_RDONLY);
    -#elif defined (__unix) || defined (__Lynx__) || defined (_AIX)
    -  // Note: DEC CXX doesn't define "unix" BSD compatible OS: HP UX,
    -  // AIX, SunOS 4.x
    -
    -  handle = ACE_OS::socket (PF_INET, SOCK_DGRAM, 0);
    -#endif /* sparc */
    -  return handle;
    -}
    -
    -#if defined (ACE_WIN32)
    -// Return value in buffer for a key/name pair from the Windows
    -// Registry up to buf_len size.
    -
    -static int
    -get_reg_value (const TCHAR *key,
    -               const TCHAR *name,
    -               TCHAR *buffer,
    -               DWORD &buf_len)
    -{
    -  HKEY hk;
    -  DWORD buf_type;
    -  LONG rc = ::RegOpenKeyEx (HKEY_LOCAL_MACHINE,
    -                            key,
    -                            0,
    -                            KEY_READ,
    -                            &hk);
    -  // 1. open key that defines the interfaces used for TCP/IP?
    -  if (rc != ERROR_SUCCESS)
    -    // print_error_string(TEXT("RegOpenKeyEx"), rc);
    -    return -1;
    -
    -  rc = ::RegQueryValueEx (hk,
    -                          name,
    -                          0,
    -                          &buf_type,
    -                          (u_char *) buffer,
    -                          &buf_len);
    -  if (rc != ERROR_SUCCESS)
    -    {
    -      // print_error_string(TEXT("RegEnumKeyEx"), rc);
    -      RegCloseKey (hk);
    -      return -2;
    -    }
    -
    -  ::RegCloseKey (hk);
    -  return 0;
    -}
    -#endif /* ACE_WIN32 */
    -
    -// return an array of all configured IP interfaces on this host, count
    -// rc = 0 on success (count == number of interfaces else -1 caller is
    -// responsible for calling delete [] on parray
    -
    -int
    -ACE::get_ip_interfaces (size_t &count,
    -                        ACE_INET_Addr *&addrs)
    -{
    -  ACE_TRACE ("ACE::get_ip_interfaces");
    -
    -  count = 0;
    -  addrs = 0;
    -
    -#if defined (ACE_WIN32)
    -  // Win32 can do this by a simple API call if MSVC 5 or later is the compiler.
    -  // Not sure if Borland supplies the needed header/lib, but it might.
    -# if defined (ACE_HAS_WINSOCK2) && (ACE_HAS_WINSOCK2 != 0)
    -#if 0
    -  // If this also needs to be predicated on MSVC 5 or later, add the
    -  // following condition to the #if above.  It tests ok at Riverace w/ 4.2,
    -  // but this isn't a virgin install of 4.2 so there's a minimal risk that
    -  // it may need work later.
    -     defined (_MSC_VER) && (_MSC_VER >= 1100)
    -#endif /* 0 */
    -
    -  int i, n_interfaces, status;
    -  INTERFACE_INFO info[64];
    -  LPINTERFACE_INFO lpii;
    -  SOCKET sock;
    -
    -  // Get an (overlapped) DGRAM socket to test with
    -  sock = socket (AF_INET, SOCK_DGRAM, 0);
    -  if (sock == INVALID_SOCKET)
    -    return -1;
    -
    -  DWORD bytes;
    -  status = WSAIoctl(sock,
    -                    SIO_GET_INTERFACE_LIST,
    -                    0, 0,
    -                    info, sizeof(info),
    -                    &bytes,
    -                    0,
    -                    0);
    -  closesocket (sock);
    -  if (status == SOCKET_ERROR)
    -      return -1;
    -
    -  n_interfaces = bytes / sizeof(INTERFACE_INFO);
    -  if (n_interfaces == 0)
    -    return 0;
    -
    -  ACE_NEW_RETURN (addrs,
    -                  ACE_INET_Addr[n_interfaces],
    -                  -1);
    -
    -  // Now go through the list and transfer the good ones to the list of
    -  // because they're down or don't have an IP address.
    -  for (count = 0, i = 0; i < n_interfaces; i++)
    -    {
    -      struct sockaddr_in *addrp;
    -
    -      lpii = &info[i];
    -      if (!(lpii->iiFlags & IFF_UP))
    -        continue;
    -
    -      // We assume IPv4 addresses here
    -      addrp = ACE_reinterpret_cast(struct sockaddr_in *, &(lpii->iiAddress));
    -      if (addrp->sin_addr.s_addr == INADDR_ANY)
    -        continue;
    -
    -      // Set the address for the caller.
    -      addrs[count].set(addrp, sizeof(lpii->iiAddress));
    -      ++count;
    -    }
    -
    -  if (count == 0)
    -    {
    -      delete [] addrs;
    -      addrs = 0;
    -    }
    -
    -  return 0;
    -
    -#else /* Winsock 2 && MSVC 5 or later */
    -
    -  // PharLap ETS has kernel routines to rummage through the device
    -  // configs and extract the interface info. Sort of a pain in the
    -  // butt, but better than trying to figure out where it moved to in
    -  // the registry... :-|
    -#  if defined (ACE_HAS_PHARLAP)
    -#    if !defined (ACE_HAS_PHARLAP_RT)
    -  ACE_NOTSUP_RETURN (-1);
    -#    endif /* ACE_HAS_PHARLAP_RT */
    -
    -  // Locate all of the IP devices in the system, saving a DEVHANDLE
    -  // for each. Then allocate the ACE_INET_Addrs needed and fetch all
    -  // the IP addresses.  To locate the devices, try the available
    -  // device name roots and increment the device number until the
    -  // kernel says there are no more of that type.
    -  const size_t ACE_MAX_ETS_DEVICES = 64;  // Arbitrary, but should be enough.
    -  DEVHANDLE ip_dev[ACE_MAX_ETS_DEVICES];
    -  EK_TCPIPCFG *devp;
    -  size_t i, j;
    -  char dev_name[16];
    -
    -  count = 0;
    -  for (i = 0; count < ACE_MAX_ETS_DEVICES; i++, ++count)
    -    {
    -      // Ethernet.
    -      ACE_OS::sprintf (dev_name,
    -                       "ether%d",
    -                       i);
    -      ip_dev[count] = EtsTCPGetDeviceHandle (dev_name);
    -      if (ip_dev[count] == 0)
    -        break;
    -    }
    -  for (i = 0; count < ACE_MAX_ETS_DEVICES; i++, ++count)
    -    {
    -      // SLIP.
    -      ACE_OS::sprintf (dev_name,
    -                       "sl%d",
    -                       i);
    -      ip_dev[count] = EtsTCPGetDeviceHandle (dev_name);
    -      if (ip_dev[count] == 0)
    -        break;
    -    }
    -  for (i = 0; count < ACE_MAX_ETS_DEVICES; i++, ++count)
    -    {
    -      // PPP.
    -      ACE_OS::sprintf (dev_name,
    -                       "ppp%d",
    -                       i);
    -      ip_dev[count] = EtsTCPGetDeviceHandle (dev_name);
    -      if (ip_dev[count] == 0)
    -        break;
    -    }
    -
    -  if (count > 0)
    -    ACE_NEW_RETURN (addrs,
    -                    ACE_INET_Addr[count],
    -                    -1);
    -  else
    -    addrs = 0;
    -
    -  for (i = 0, j = 0; i < count; i++)
    -    {
    -      devp = EtsTCPGetDeviceCfg (ip_dev[i]);
    -      if (devp != 0)
    -        {
    -          addrs[j].set (0,
    -                        devp->nwIPAddress,
    -                        0); // Already in net order.
    -          j++;
    -        }
    -      // There's no call to close the DEVHANDLE.
    -    }
    -
    -  count = j;
    -  if (count == 0 && addrs != 0)
    -    {
    -      delete [] addrs;
    -      addrs = 0;
    -    }
    -
    -  return 0;
    -
    -#  else /* ACE_HAS_PHARLAP */
    -
    -  const TCHAR *SVCS_KEY1 =
    -    ACE_TEXT ("SYSTEM\\CurrentControlSet\\Services\\");
    -  const TCHAR *LINKAGE_KEY1 =
    -    ACE_TEXT ("SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Linkage");
    -  const TCHAR *TCP_PARAM_SUBKEY = ACE_TEXT ("\\Parameters\\Tcpip");
    -  const TCHAR *BIND_NAME_ID =  ACE_TEXT ("Bind");
    -  const TCHAR *IPADDR_NAME_ID = ACE_TEXT ("IPAddress");
    -  const TCHAR *INVALID_TCPIP_DEVICE_ADDR = ACE_TEXT ("0.0.0.0");
    -
    -  TCHAR raw_buffer[ACE_MAX_FULLY_QUALIFIED_NAME_LEN + 1];
    -  DWORD raw_buflen = ACE_MAX_FULLY_QUALIFIED_NAME_LEN + 1;
    -  TCHAR buffer[ACE_MAX_FULLY_QUALIFIED_NAME_LEN + 1];
    -  DWORD buf_len = ACE_MAX_FULLY_QUALIFIED_NAME_LEN + 1;
    -
    -  if (::get_reg_value (LINKAGE_KEY1,
    -                       BIND_NAME_ID,
    -                       raw_buffer,
    -                       raw_buflen))
    -    return -1;
    -  // return buffer contains 0 delimited strings
    -
    -  ACE_Tokenizer dev_names (raw_buffer);
    -  dev_names.delimiter (ACE_TEXT('\0'));
    -  int n_interfaces = 0;
    -
    -  // Count the number of interfaces
    -  while (dev_names.next () != 0)
    -    n_interfaces ++;
    -
    -  // case 1. no interfaces present, empty string? OS version change?
    -  if (n_interfaces == 0)
    -    return 0;
    -
    -  ACE_NEW_RETURN (addrs,
    -                  ACE_INET_Addr[n_interfaces],
    -                  -2);
    -  count = 0;
    -  for (int i = 0; i < n_interfaces; i++)
    -    {
    -      // a. construct name to access IPAddress for this interface
    -      ACE_TEXT_STRING ifdevkey (SVCS_KEY1);
    -      ACE_TEXT_STRING the_dev = dev_names.next ();
    -
    -      // chop off the "\Device" and keep last name.
    -      if (the_dev.length() < 8)
    -        return -3;              // Something's wrong
    -      else
    -        {
    -          // rest of string from offset 8
    -          the_dev = the_dev.substring (8);
    -          ifdevkey += the_dev;
    -          ifdevkey += TCP_PARAM_SUBKEY;
    -
    -          // b. extract value
    -          // Gets overwritten on each call
    -          buf_len = sizeof(buffer);
    -          if (get_reg_value (ifdevkey.fast_rep (),
    -                             IPADDR_NAME_ID,
    -                             buffer,
    -                             buf_len))
    -            return -4;
    -
    -          if (ACE_OS::strcmp (buffer,
    -                              INVALID_TCPIP_DEVICE_ADDR) == 0)
    -            continue; // Don't count this device
    -
    -          // c. store in hostinfo object array and up the counter
    -          addrs[count++] =
    -            ACE_INET_Addr ((u_short) 0,
    -                           ASYS_MULTIBYTE_STRING (buffer));
    -        }
    -    }
    -  return 0;
    -#  endif /* ACE_HAS_PHARLAP */
    -# endif /* Winsock 2 && MSVC 5 or later */
    -
    -#elif defined (__unix) || defined (__Lynx__) || defined (_AIX)
    -  // COMMON (SVR4 and BSD) UNIX CODE
    -
    -  size_t num_ifs;
    -
    -  // Call specific routine as necessary.
    -  ACE_HANDLE handle = get_handle();
    -
    -  if (handle == ACE_INVALID_HANDLE)
    -    ACE_ERROR_RETURN ((LM_ERROR,
    -                       ASYS_TEXT ("%p\n"),
    -                       ASYS_TEXT ("ACE::get_ip_interfaces:open")),
    -                      -1);
    -  if (ACE::count_interfaces (handle, num_ifs))
    -    {
    -      ACE_OS::close (handle);
    -      return -1;
    -    }
    -
    -  // ioctl likes to have an extra ifreq structure to mark the end of
    -  // what it returned, so increase the num_ifs by one.
    -  ++num_ifs;
    -
    -  struct ifreq *ifs = 0;
    -  ACE_NEW_RETURN (ifs,
    -                  struct ifreq[num_ifs],
    -                  -1);
    -  ACE_OS::memset (ifs, 0, num_ifs * sizeof (struct ifreq));
    -
    -  ACE_Auto_Array_Ptr p_ifs (ifs);
    -
    -  if (p_ifs.get() == 0)
    -    {
    -      ACE_OS::close (handle);
    -      errno = ENOMEM;
    -      return -1;
    -    }
    -
    -  struct ifconf ifcfg;
    -  ACE_OS::memset (&ifcfg, 0, sizeof (struct ifconf));
    -  ifcfg.ifc_req = p_ifs.get ();
    -  ifcfg.ifc_len = num_ifs * sizeof (struct ifreq);
    -
    -#if defined (AIX)
    -  int cmd = CSIOCGIFCONF;
    -#else
    -  int cmd = SIOCGIFCONF;
    -#endif /* AIX */
    -  if (ACE_OS::ioctl (handle,
    -                     cmd,
    -                     (caddr_t) &ifcfg) == -1)
    -    {
    -      ACE_OS::close (handle);
    -      ACE_ERROR_RETURN ((LM_ERROR,
    -                         ASYS_TEXT ("%p\n"),
    -                         ASYS_TEXT ("is_address_local:")
    -                         ASYS_TEXT ("ioctl - SIOCGIFCONF failed")),
    -                        -1);
    -    }
    -
    -  ACE_OS::close (handle);
    -
    -  // Now create and initialize output array.
    -
    -  ACE_NEW_RETURN (addrs,
    -                  ACE_INET_Addr[num_ifs],
    -                  -1); // caller must free
    -
    -  struct ifreq *pcur = p_ifs.get ();
    -  // Pull the address out of each INET interface.  Not every interface
    -  // is for IP, so be careful to count properly.  When setting the
    -  // INET_Addr, note that the 3rd arg (0) says to leave the byte order
    -  // (already in net byte order from the interface structure) as is.
    -  count = 0;
    -
    -  for (size_t i = 0;
    -       i < num_ifs;
    -       i++)
    -    {
    -      if (pcur->ifr_addr.sa_family == AF_INET)
    -        {
    -#if !defined(_UNICOS)
    -          struct sockaddr_in *addr =
    -            ACE_reinterpret_cast(sockaddr_in *, &pcur->ifr_addr);
    -
    -          // Sometimes the kernel returns 0.0.0.0 as the interface
    -          // address, skip those...
    -          if (addr->sin_addr.s_addr != 0)
    -            {
    -              addrs[count].set ((u_short) 0,
    -                                addr->sin_addr.s_addr,
    -                                0);
    -              count++;
    -            }
    -#else /* ! _UNICOS */
    -          // need to explicitly copy on the Cray, since the bitfields kinda
    -          // screw things up here
    -          struct sockaddr_in inAddr;
    -
    -          inAddr.sin_len = pcur->ifr_addr.sa_len;
    -          inAddr.sin_family = pcur->ifr_addr.sa_family;
    -          memcpy((void *)&(inAddr.sin_addr),
    -                 (const void *)&(pcur->ifr_addr.sa_data[8]),
    -                 sizeof(struct in_addr));
    -
    -          if (inAddr.sin_addr.s_addr != 0)
    -            {
    -              addrs[count].set(&inAddr, sizeof(struct sockaddr_in));
    -              count++;
    -            }
    -#endif /* ! _UNICOS */
    -        }
    -
    -      pcur++;
    -    }
    -  return 0;
    -#else
    -  ACE_UNUSED_ARG (count);
    -  ACE_UNUSED_ARG (addrs);
    -  ACE_NOTSUP_RETURN (-1);;                      // no implementation
    -#endif /* ACE_WIN32 */
    -}
    -
    -char *
    -ACE::strndup (const char *str, size_t n)
    -{
    -  const char *t = str;
    -  size_t len;
    -
    -  // Figure out how long this string is (remember, it might not be
    -  // NUL-terminated).
    -
    -  for (len = 0;
    -       len < n && *t++ != '\0';
    -       len++)
    -    continue;
    -
    -  char *s;
    -  ACE_ALLOCATOR_RETURN (s,
    -                        (char *) ACE_OS::malloc (len + 1),
    -                        0);
    -  s[len] = '\0';
    -  return ACE_OS::strncpy (s, str, len);
    -}
    -
    -char *
    -ACE::strnnew (const char *str, size_t n)
    -{
    -  const char *t = str;
    -  size_t len;
    -
    -  // Figure out how long this string is (remember, it might not be
    -  // NUL-terminated).
    -
    -  for (len = 0;
    -       len < n && *t++ != '\0';
    -       len++)
    -    continue;
    -
    -  char *s;
    -  ACE_NEW_RETURN (s,
    -                  char[len + 1],
    -                  0);
    -  s[len] = '\0';
    -  return ACE_OS::strncpy (s, str, len);
    -}
    -
    -const char *
    -ACE::strend (const char *s)
    -{
    -  while (*s++ != '\0')
    -    continue;
    -
    -  return s;
    -}
    -
    -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) && (defined (__unix) || defined (__Lynx__) || defined (_AIX))
    -template class ACE_Auto_Array_Ptr;
    -template class ACE_Auto_Basic_Array_Ptr;
    -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
    -#pragma instantiate ACE_Auto_Array_Ptr
    -#pragma instantiate ACE_Auto_Basic_Array_Ptr
    -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION && (__unix || __Lynx_) */
    diff --git a/ace/ACE.h b/ace/ACE.h
    deleted file mode 100644
    index 7849ed77760..00000000000
    --- a/ace/ACE.h
    +++ /dev/null
    @@ -1,732 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    ACE.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -// This #include must come first to avoid recursive include problems.
    -#include "ace/OS.h"
    -
    -#ifndef ACE_ACE_H
    -#define ACE_ACE_H
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -// Forward declarations.
    -class ACE_Time_Value;
    -class ACE_INET_Addr;
    -
    -class ACE_Export ACE
    -{
    -  // = TITLE
    -  //     Contains value added ACE methods that extend the behavior
    -  //     of the UNIX and Win32 OS calls.
    -  //
    -  // = DESCRIPTION
    -  //     This class consolidates all these ACE static methods in a
    -  //     single place in order to manage the namespace better.  These
    -  //     methods are put here rather than in ACE_OS in order to
    -  //     separate concerns.
    -  ACE_CLASS_IS_NAMESPACE (ACE);
    -public:
    -  // Initialize ACE library services.
    -  static int init (void);
    -  // Returns 0 on success, -1 on failure, and 1 if it had already been called.
    -
    -  // Shut down ACE library services.
    -  static int fini (void);
    -  // Returns 0 on success, -1 on failure, and 1 if it had already been called.
    -
    -  // = ACE version information.
    -  static u_int major_version (void);
    -  // E.g., the "4" in ACE 4.3.19.
    -
    -  static u_int minor_version (void);
    -  // E.g., the "3" in ACE 4.3.19.
    -
    -  static u_int beta_version (void);
    -  // E.g., the "19" in ACE 4.3.19.  Returns 0 for "stable" (non-beta) releases.
    -
    -  // = C++ compiler version information.
    -  static const char* compiler_name (void);
    -  // E.g., the "SunPro C++" in SunPro C++ 4.32.0
    -
    -  static u_int compiler_major_version (void);
    -  // E.g., the "4" in SunPro C++ 4.32.0
    -
    -  static u_int compiler_minor_version (void);
    -  // E.g., the "32" in SunPro C++ 4.32.0
    -
    -  static u_int compiler_beta_version (void);
    -  // E.g., the "0" in SunPro C++ 4.32.0
    -
    -  static int out_of_handles (int error);
    -  // Check if error indicates the process being out of handles (file
    -  // descriptors).
    -
    -  // = Recv operations that factor out differences between Win32 and UNIX.
    -  static ssize_t recv (ACE_HANDLE handle,
    -                       void *buf,
    -                       size_t len,
    -                       int flags);
    -  // Receive up to  bytes into  from  (uses the
    -  //  call).
    -
    -  static ssize_t recv (ACE_HANDLE handle,
    -                       void *buf,
    -                       size_t len);
    -  // Receive up to  bytes into  from  (uses the
    -  //  system call on UNIX and the  call on
    -  // Win32).
    -
    -  // = Recv operations that receive exactly n bytes.
    -  static ssize_t recv_n (ACE_HANDLE handle,
    -                         void *buf,
    -                         size_t len,
    -                         int flags);
    -  // Receive  bytes into  from  (uses the
    -  //  call).  If  is set to non-blocking mode
    -  // this call will poll until all  bytes are received.
    -
    -  static ssize_t recv_n (ACE_HANDLE handle,
    -                         void *buf,
    -                         size_t len);
    -  // Receive  bytes into  from  (uses the
    -  //  system call on UNIX and the  call on
    -  // Win32).  If  is set to non-blocking mode this call will
    -  // poll until all  bytes are received.
    -
    -  // = Timed  operations.
    -  static ssize_t recv (ACE_HANDLE handle,
    -                       void *buf,
    -                       size_t len,
    -                       int flags,
    -                       const ACE_Time_Value *timeout);
    -  // Wait up to  amount of time to receive up to  bytes
    -  // into  from  (uses the  call).  The
    -  //  indicates how long to blocking trying to receive.  If
    -  //  == 0, the caller will block until action is possible,
    -  // else will wait until the relative time specified in *
    -  // elapses).  If  times out a -1 is returned with .  If it succeeds the number of bytes received is returned.
    -
    -  static ssize_t recv (ACE_HANDLE handle,
    -                       void *buf,
    -                       size_t len,
    -                       const ACE_Time_Value *timeout);
    -  // Wait up to  amount of time to receive up to  bytes
    -  // into  from  (uses the  call).  The
    -  //  indicates how long to blocking trying to receive.  If
    -  //  == 0, the caller will block until action is possible,
    -  // else will wait until the relative time specified in *
    -  // elapses).  If  times out a -1 is returned with .  If it succeeds the number of bytes received is returned.
    -
    -  static ssize_t recvmsg (ACE_HANDLE handle,
    -                          struct msghdr *msg,
    -                          int flags,
    -                          const ACE_Time_Value *timeout);
    -  // Wait up to  amount of time to receive  from
    -  //  (uses the  call).  The 
    -  // indicates how long to blocking trying to receive.  If 
    -  // == 0, the caller will block until action is possible, else will
    -  // wait until the relative time specified in * elapses).
    -  // If  times out a -1 is returned with .
    -  // If it succeeds the number of bytes received is returned.
    -
    -  static ssize_t recvfrom (ACE_HANDLE handle,
    -                           char *buf,
    -                           int len,
    -                           int flags,
    -                           struct sockaddr *addr,
    -                           int *addrlen,
    -                           const ACE_Time_Value *timeout);
    -  // Wait up to  amount of time to recv up to  bytes
    -  // into  from  (uses the  call).  The
    -  //  indicates how long to blocking trying to recv.  If
    -  //  == 0, the caller will block until action is possible,
    -  // else will wait until the relative time specified in *
    -  // elapses).  If  times out a -1 is returned with .  If it succeeds the number of bytes received is
    -  // returned.
    -
    -  static ssize_t recv_n (ACE_HANDLE handle,
    -                         void *buf,
    -                         size_t len,
    -                         int flags,
    -                         const ACE_Time_Value *timeout);
    -  // Try to recv exactly  bytes into  from  (uses
    -  // the  call).  The  indicates how long to
    -  // blocking trying to receive.  If  == 0, the caller will
    -  // block until action is possible, else will wait until the relative
    -  // time specified in * elapses).  If  blocks for
    -  // longer than  the number of bytes actually read is
    -  // returned with .  If a timeout does not occur,
    -  //  return  (i.e., the number of bytes requested to be
    -  // read).
    -
    -  static ssize_t recv_n (ACE_HANDLE handle,
    -                         void *buf,
    -                         size_t len,
    -                         const ACE_Time_Value *timeout);
    -  // Try to recv exactly  bytes into  from  (uses
    -  // the  call).  The  indicates how long to
    -  // blocking trying to receive.  If  == 0, the caller will
    -  // block until action is possible, else will wait until the relative
    -  // time specified in * elapses).  If  blocks for
    -  // longer than  the number of bytes actually read is
    -  // returned with .  If a timeout does not occur,
    -  //  return  (i.e., the number of bytes requested to be
    -  // read).
    -
    -  // = Send operations that factor out differences between Win32 and UNIX.
    -  static ssize_t send (ACE_HANDLE handle,
    -                       const void *buf,
    -                       size_t len,
    -                       int flags);
    -  // Send up to  bytes into  from  (uses the
    -  //  call).
    -
    -  static ssize_t send (ACE_HANDLE handle,
    -                       const void *buf,
    -                       size_t len);
    -  // Send up to  bytes into  from  (uses the
    -  //  system call on UNIX and the  call
    -  // on Win32).
    -
    -  // = Send operations that send exactly n bytes.
    -  static ssize_t send_n (ACE_HANDLE handle,
    -                         const void *buf,
    -                         size_t len,
    -                         int flags);
    -  // Send  bytes from  to  (uses the 
    -  // system call).  If  is set to non-blocking mode this call
    -  // will poll until all  bytes are sent.
    -
    -  // = Timed  operations.
    -  static ssize_t send (ACE_HANDLE handle,
    -                       const void *buf,
    -                       size_t len,
    -                       const ACE_Time_Value *timeout);
    -  // Wait up to  amount of time to send up to  bytes
    -  // into  from  (uses the  system call on
    -  // UNIX and the  call on Win32).  The 
    -  // indicates how long to blocking trying to send.  If  ==
    -  // 0, the caller will block until action is possible, else will wait
    -  // until the relative time specified in * elapses).  If
    -  //  times out a -1 is returned with .  If it
    -  // succeeds the number of bytes sent is returned.
    -
    -  static ssize_t send (ACE_HANDLE handle,
    -                       const void *buf,
    -                       size_t len,
    -                       int flags,
    -                       const ACE_Time_Value *timeout);
    -  // Wait up to  amount of time to send up to  bytes
    -  // into  from  (uses the  call).  The
    -  //  indicates how long to blocking trying to send.  If
    -  //  == 0, the caller will block until action is possible,
    -  // else will wait until the relative time specified in *
    -  // elapses).  If  times out a -1 is returned with .  If it succeeds the number of bytes sent is returned.
    -
    -  static ssize_t sendmsg (ACE_HANDLE handle,
    -                          const struct msghdr *msg,
    -                          int flags,
    -                          const ACE_Time_Value *timeout);
    -  // Wait up to  amount of time to send the  to 
    -  // (uses the  call).  The  indicates how
    -  // long to blocking trying to send.  If  == 0, the caller
    -  // will block until action is possible, else will wait until the
    -  // relative time specified in * elapses).  If 
    -  // times out a -1 is returned with .  If it succeeds
    -  // the number of bytes sent is returned.
    -
    -  static ssize_t sendto (ACE_HANDLE handle,
    -                         const char *buf,
    -                         int len,
    -                         int flags,
    -                         const struct sockaddr *addr,
    -                         int addrlen,
    -                         const ACE_Time_Value *timeout);
    -  // Wait up to  amount of time to send up to  bytes
    -  // into  from  (uses the  call).  The
    -  //  indicates how long to blocking trying to send.  If
    -  //  == 0, the caller will block until action is possible,
    -  // else will wait until the relative time specified in *
    -  // elapses).  If  times out a -1 is returned with .  If it succeeds the number of bytes sent is returned.
    -
    -  static ssize_t send_n (ACE_HANDLE handle,
    -                         const void *buf,
    -                         size_t len,
    -                         int flags,
    -                         const ACE_Time_Value *timeout);
    -  // Try to send exactly  bytes into  from  (uses
    -  // the  call).  The  indicates how long to
    -  // blocking trying to send.  If  == 0, the caller will
    -  // block until action is possible, else will wait until the relative
    -  // time specified in * elapses).  If  blocks for
    -  // longer than  the number of bytes actually sent is
    -  // returned with .  If a timeout does not occur,
    -  //  return  (i.e., the number of bytes requested to be
    -  // sent).
    -
    -  static ssize_t send_n (ACE_HANDLE handle,
    -                         const void *buf,
    -                         size_t len,
    -                         const ACE_Time_Value *timeout);
    -  // Try to send exactly  bytes into  from  (uses
    -  // the  call).  The  indicates how long to
    -  // blocking trying to send.  If  == 0, the caller will
    -  // block until action is possible, else will wait until the relative
    -  // time specified in * elapses).  If  blocks for
    -  // longer than  the number of bytes actually sent is
    -  // returned with .  If a timeout does not occur,
    -  //  return  (i.e., the number of bytes requested to be
    -  // sent).
    -
    -  // = Timed Scatter-read and gather-write functions.
    -
    -  static ssize_t sendv_n (ACE_HANDLE handle,
    -                          const iovec *iov,
    -                          int iovcnt);
    -  // Send all   structs to  (uses the
    -  //  call).  If it succeeds the number of bytes
    -  // written is returned, else -1 is returned.
    -
    -  static ssize_t writev (ACE_HANDLE handle,
    -                         const iovec *iov,
    -                         int iovcnt,
    -                         const ACE_Time_Value *timeout = 0);
    -  // Send   structs to  (uses the
    -  //  call).  If  == 0, the caller will block
    -  // until action is possible, else will wait until the relative time
    -  // specified in * elapses).  If  times out a -1 is
    -  // returned with .  If it succeeds the number of
    -  // bytes written is returned.
    -
    -  static ssize_t writev_n (ACE_HANDLE handle,
    -                           const iovec *iov,
    -                           int iovcnt);
    -  // Send all   structs to  (uses the
    -  //  call).  If it succeeds the number of bytes
    -  // written is returned, else -1 is returned.
    -
    -  static ssize_t readv (ACE_HANDLE handle,
    -                        iovec *iov,
    -                        int iovcnt,
    -                        const ACE_Time_Value *timeout = 0);
    -  // Read   structs from  (uses the
    -  //  call).  If  == 0, the caller will block
    -  // until action is possible, else will wait until the relative time
    -  // specified in * elapses).  If  times out a -1 is
    -  // returned with .  If it succeeds the number of
    -  // bytes receieved is returned.
    -
    -  static ssize_t send (ACE_HANDLE handle, size_t n, ...);
    -  // Send varargs messages to the  using .
    -
    -  static ssize_t recv (ACE_HANDLE handle, size_t n, ...);
    -  // Recv varargs messages to the  using .
    -
    -  // = File system I/O functions.
    -
    -  // These encapsulate differences between UNIX and Win32 and also
    -  // send and recv exactly n bytes.  The definitions have been moved
    -  // to ACE_OS; these remain for backward compatiblity.
    -
    -  static ssize_t send_n (ACE_HANDLE handle,
    -                         const void *buf,
    -                         size_t len);
    -  // Send  bytes from  to  (uses the 
    -  // system call on UNIX and the  call on Win32).  If
    -  //  is set to non-blocking mode this call will poll until
    -  // all  bytes are sent.
    -
    -  static ssize_t read_n (ACE_HANDLE handle,
    -                         void *buf,
    -                         size_t len);
    -
    -  static ssize_t write_n (ACE_HANDLE handle,
    -                          const void *buf,
    -                          size_t len);
    -
    -  // = Socket connection establishment calls.
    -
    -  static int bind_port (ACE_HANDLE handle,
    -                        ACE_UINT32 ip_addr = INADDR_ANY);
    -  // Bind a new unused port to .
    -
    -  static int get_bcast_addr (ACE_UINT32 &bcast_addr,
    -                             const char *hostname = 0,
    -                             ACE_UINT32 host_addr = 0,
    -                             ACE_HANDLE handle = ACE_INVALID_HANDLE);
    -  // Get our broadcast address based on our .  If
    -  //  is non-0 we'll use it to determine our IP address.  If
    -  //  is not  then we'll use this to
    -  // determine our broadcast address, otherwise we'll have to create a
    -  // socket internally (and free it).  Returns -1 on failure and 0 on
    -  // success.
    -
    -  static int get_ip_interfaces (size_t &count,
    -                                ACE_INET_Addr *&addr_array);
    -  // Return count and array of all configured IP interfaces on this
    -  // host, rc = 0 on success (count == number of interfaces else -1).
    -  // Caller is responsible for calling delete [] on .
    -
    -  static int count_interfaces (ACE_HANDLE handle,
    -                               size_t &how_many);
    -  // Helper routine for get_ip_interfaces, differs by UNIX platform so
    -  // put into own subroutine.  perform some ioctls to retrieve ifconf
    -  // list of ifreq structs.
    -
    -  static ACE_HANDLE get_handle (void);
    -  // Routine to return a handle from which  requests can be
    -  // made.  Caller must  the handle.
    -
    -  static int handle_timed_accept (ACE_HANDLE listener,
    -                                  ACE_Time_Value *timeout,
    -                                  int restart);
    -  // Wait up to  amount of time to passively establish a
    -  // connection.  This method doesn't perform the , it just
    -  // does the timed wait...
    -
    -  static ACE_HANDLE handle_timed_complete (ACE_HANDLE listener,
    -                                           ACE_Time_Value *timeout,
    -                                           int is_tli = 0);
    -  // Wait up to  amount of time to complete an actively
    -  // established non-blocking connection.  If  is non-0 then
    -  // we are being called by a TLI wrapper (which behaves slightly
    -  // differently from a socket wrapper).
    -
    -  // = Operations on HANDLEs.
    -
    -  static ACE_HANDLE handle_timed_open (ACE_Time_Value *timeout,
    -                                       LPCTSTR name,
    -                                       int flags,
    -                                       int perms);
    -  // Wait up to  amount of time to actively open a device.
    -  // This method doesn't perform the , it just does the timed
    -  // wait...
    -
    -  // = Set/get/clear various flags related to I/O HANDLE.
    -  static int set_flags (ACE_HANDLE handle,
    -                        int flags);
    -  // Set flags associated with .
    -
    -  static int clr_flags (ACE_HANDLE handle,
    -                        int flags);
    -  // Clear flags associated with .
    -
    -  static int get_flags (ACE_HANDLE handle);
    -  // Return the current setting of flags associated with .
    -
    -  static int set_handle_limit (int new_limit = -1);
    -  // Reset the limit on the number of open handles.  If  ==
    -  // -1 set the limit to the maximum allowable.  Otherwise, set it to
    -  // be the value of .
    -
    -  static int max_handles (void);
    -  // Returns the maximum number of open handles currently permitted in
    -  // this process.  This maximum may be extended using
    -  // .
    -
    -  // = String functions
    -#if !defined (ACE_HAS_WINCE)
    -  static ASYS_TCHAR *strenvdup (const ASYS_TCHAR *str);
    -  // Return a dynamically allocated duplicate of , substituting
    -  // the environment variable if .  Note that the
    -  // pointer is allocated with  and must be freed by
    -  // .
    -#endif /* ACE_HAS_WINCE */
    -
    -  static char *strecpy (char *des, const char *src);
    -  // Copies  to , returning a pointer to the end of the
    -  // copied region, rather than the beginning, as  does.
    -
    -  static const char *strend (const char *);
    -  // Returns a pointer to the "end" of the string, i.e., the character
    -  // past the '\0'.
    -
    -  static char *strnew (const char *s);
    -  // This method is just like , except that it uses  rather than .
    -
    -#   if defined (ACE_WIN32) && defined (ACE_HAS_UNICODE)
    -  static wchar_t *strnew (const wchar_t *s);
    -  // This method is just like , except that it uses  rather than .
    -#endif /* ACE_WIN32 && ACE_HAS_UNICODE */
    -
    -  static char *strndup (const char *str, size_t n);
    -  // Create a fresh new copy of , up to  chars long.  Uses
    -  //  to allocate the new string.
    -
    -  static char *strnnew (const char *str, size_t n);
    -  // Create a fresh new copy of , up to  chars long.  Uses
    -  //  to allocate the new string.
    -
    -  static char *strsplit_r (char *s,
    -                           const char *token,
    -                           char *&next_start);
    -  // Splits string  into pieces separated by the string .
    -  //  is an opaque cookie handed back by the call to store
    -  // its state for the next invocation, thus making it re-entrant.
    -  // This operates very similar to Perl's  function except that
    -  // it returns pieces one at a time instead of into an array.
    -
    -  static size_t strrepl (char *s, char search, char replace);
    -  // Replace all instances of  in  with .  Returns
    -  // the number of replacements made.
    -
    -  static const char *execname (const char *pathname);
    -  // On Win32 returns  if it already ends in ".exe,"
    -  // otherwise returns a dynamically allocated buffer containing
    -  // ".exe".  Always returns  on UNIX.
    -
    -  static const char *basename (const char *pathname,
    -                               char delim = ACE_DIRECTORY_SEPARATOR_CHAR_A);
    -  // Returns the "basename" of a  separated by .  For
    -  // instance, the basename of "/tmp/foo.cpp" is "foo.cpp" when
    -  //  is '/'.
    -
    -  static const char *dirname (const char *pathname,
    -                              char delim = ACE_DIRECTORY_SEPARATOR_CHAR_A);
    -  // Returns the "dirname" of a .  For instance, the dirname
    -  // of "/tmp/foo.cpp" is "/tmp" when  is '/'.  If 
    -  // has no  ".\0" is returned.  This method does not modify
    -  //  and is not reentrant.
    -
    -#if defined (ACE_HAS_UNICODE)
    -  // A collection of wide string functions.  See above for details.
    -
    -  static wchar_t *strecpy (wchar_t *s, const wchar_t *t);
    -
    -  static wchar_t *strsplit_r (wchar_t *s,
    -                              const wchar_t *token,
    -                              wchar_t *&next_start);
    -
    -  static size_t strrepl (wchar_t *s, wchar_t search, wchar_t replace);
    -
    -  static const wchar_t *execname (const wchar_t *pathname);
    -
    -  static const wchar_t *basename (const wchar_t *pathname,
    -                                  wchar_t delim = ACE_DIRECTORY_SEPARATOR_CHAR_W);
    -  // Returns the "basename" of a .
    -#endif /* ACE_HAS_UNICODE */
    -
    -  static ASYS_TCHAR *timestamp (ASYS_TCHAR date_and_time[],
    -                                int time_len);
    -  // Returns the current timestamp in the form
    -  // "hour:minute:second:microsecond."  The month, day, and year are
    -  // also stored in the beginning of the date_and_time array.  Returns
    -  // 0 if unsuccessful, else returns pointer to beginning of the
    -  // "time" portion of .
    -
    -  static pid_t fork (const char *program_name = "",
    -                     int avoid_zombies = 0);
    -  // if  == 0 call  directly, else create
    -  // an orphan process that's inherited by the init process; init
    -  // cleans up when the orphan process terminates so we don't create
    -  // zombies.
    -
    -  static int daemonize (const char pathname[] = "/",
    -                        int close_all_handles = ACE_DEFAULT_CLOSE_ALL_HANDLES,
    -                        const char program_name[] = "");
    -  // Become a daemon process using the algorithm in Richard Stevens
    -  // "Advanced Programming in the UNIX Environment."  If
    -  //  is non-zero then all open file handles are
    -  // closed.
    -
    -  // = Methods for searching and opening shared libraries.
    -
    -  static int ldfind (const ASYS_TCHAR *filename,
    -                     ASYS_TCHAR *pathname,
    -                     size_t maxlen);
    -  // Finds the file  either using an absolute path or using
    -  // a relative path in conjunction with ACE_LD_SEARCH_PATH (e.g.,
    -  // $LD_LIBRARY_PATH on UNIX or $PATH on Win32).  This function will
    -  // add appropriate suffix (e.g., .dll on Win32 or .so on UNIX)
    -  // according to the OS platform.  In addition, this function will
    -  // apply the appropriate prefix (e.g., "lib" on UNIX and "" on
    -  // Win32) if the  doesn't match directly.
    -
    -  static FILE *ldopen (const ASYS_TCHAR *filename,
    -                       const ASYS_TCHAR *type);
    -  // Uses  to locate and open the appropriate  and
    -  // returns a pointer to the file, else it returns a NULL
    -  // pointer.  specifies how the file should be open.
    -
    -  static ACE_HANDLE open_temp_file (const char *name,
    -                                    int mode,
    -                                    int perm = 0);
    -  // Opening the temp file.  File is automagically unlinked when it is
    -  // closed.  This is useful for have temp files.
    -
    -  // = Shield us from Win32's inability to select on STDIN.
    -
    -  // = Miscelleous functions.
    -  static size_t round_to_pagesize (off_t length);
    -  // Rounds the request to a multiple of the page size.
    -
    -  static size_t round_to_allocation_granularity (off_t len);
    -  // Rounds the request to a multiple of the allocation granularity.
    -
    -  static int format_hexdump (const char *buffer, int size,
    -                             ASYS_TCHAR *obuf, int obuf_sz);
    -  // Format buffer into printable format.  This is useful for
    -  // debugging.
    -
    -  static u_long hash_pjw (const char *str);
    -  // Computes the hash value of  using the ``Hash PJW'' routine.
    -
    -  static u_long hash_pjw (const char *str, size_t len);
    -  // Computes the hash value of  using the ``Hash PJW'' routine.
    -
    -#if !defined (ACE_HAS_WCHAR_TYPEDEFS_CHAR)
    -  static u_long hash_pjw (const wchar_t *str);
    -  // Computes the hash value of  using the ``Hash PJW'' routine.
    -
    -  static u_long hash_pjw (const wchar_t *str, size_t len);
    -  // Computes the hash value of  using the ``Hash PJW'' routine.
    -#endif /* ! ACE_HAS_WCHAR_TYPEDEFS_CHAR */
    -
    -#if !defined (ACE_HAS_WCHAR_TYPEDEFS_USHORT)
    -  static u_long hash_pjw (const ACE_USHORT16 *str);
    -  // Computes the hash value of  using the ``Hash PJW'' routine.
    -
    -  static u_long hash_pjw (const ACE_USHORT16 *str, size_t len);
    -  // Computes the hash value of  using the ``Hash PJW'' routine.
    -#endif /* ! ACE_HAS_WCHAR_TYPEDEFS_USHORT */
    -
    -  static u_long crc32 (const char *str);
    -  // Computes the ISO 8802-3 standard 32 bits CRC for the string
    -  // (not for a file).
    -
    -  static u_long crc32 (const char *buf, ACE_UINT32 len);
    -  // Computes the ISO 8802-3 standard 32 bits CRC for the given
    -  // buffer (the length is included in the CRC).
    -
    -  static u_long gcd (u_long x, u_long y);
    -  // Euclid's greatest common divisor algorithm.
    -
    -  static u_long minimum_frame_size (u_long period1, u_long period2);
    -  // Calculates the minimum enclosing frame size for the given values.
    -
    -  static u_long is_prime (const u_long n,
    -                          const u_long min_factor,
    -                          const u_long max_factor);
    -  // Function that can burn up noticeable CPU time:  brute-force
    -  // determination of whether number "n" is prime.  Returns 0 if
    -  // it is prime, or the smallest factor if it is not prime.  min_factor
    -  // and max_factor can be used to partition the work among threads.
    -  // For just one thread, typical values are 2 and n/2.
    -
    -  static int map_errno (int error);
    -  // Map troublesome win32 errno values to values that standard C
    -  // strerr function understands.  Thank you Microsoft.
    -
    -  static const ASYS_TCHAR *sock_error (int error);
    -  // Returns a string containing the error message corresponding to a
    -  // WinSock error.  This works around an omission in the Win32 API...
    -
    -  static int process_active (pid_t pid);
    -  // Checks if process with  is still alive.  Returns 1 if it is
    -  // still alive, 0 if it isn't alive, and -1 if something weird
    -  // happened.
    -
    -  static int terminate_process (pid_t pid);
    -  // Terminate the process abruptly with id .  On Win32 platforms
    -  // this uses  and on POSIX platforms is uses
    -  //  with the -9 (SIGKILL) signal, which cannot be caught or
    -  // ignored.  Note that this call is potentially dangerous to use
    -  // since the process being terminated may not have a chance to
    -  // cleanup before it shuts down.
    -
    -  static void unique_name (const void *object,
    -                           LPTSTR name,
    -                           size_t length);
    -  // This method uses process id and object pointer to come up with a
    -  // machine wide unique name.  The process ID will provide uniqueness
    -  // between processes on the same machine. The "this" pointer of the
    -  //  will provide uniqueness between other "live" objects in
    -  // the same process. The uniqueness of this name is therefore only
    -  // valid for the life of .
    -
    -  static u_long log2 (u_long num);
    -  // Computes the base 2 logarithm of .
    -
    -  static char nibble2hex (u_int n);
    -  // Hex conversion utility.
    -
    -  static u_char hex2byte (char c);
    -  // Convert a hex character to its byte representation.
    -
    -  // = Set/get the debug level.
    -  static char debug (void);
    -  static void debug (char d);
    -
    -private:
    -  static int enter_recv_timedwait (ACE_HANDLE handle,
    -                                   const ACE_Time_Value *timeout,
    -                                   int &val);
    -  // Wait for  before proceeding to a  operation.
    -  //  keeps track of whether we're in non-blocking mode or not.
    -
    -  static void leave_recv_timedwait (ACE_HANDLE handle,
    -                                    const ACE_Time_Value *timeout,
    -                                    int val);
    -  // Cleanup after a  operation (e.g., restore the appropriate
    -  // non-blocking status of ).
    -
    -  static int enter_send_timedwait (ACE_HANDLE handle,
    -                                   const ACE_Time_Value* timeout,
    -                                   int &val);
    -  // Wait for  before proceeding to a  operation.
    -  //  keeps track of whether we're in non-blocking mode or not.
    -
    -  static void leave_send_timedwait (ACE_HANDLE handle,
    -                                    const ACE_Time_Value *timeout,
    -                                    int val);
    -  // Cleanup after the  operation (e.g., restore the appropriate
    -  // non-blocking status of ).
    -
    -  static u_int init_fini_count_;
    -  // Counter to match / calls.   must increment it;
    -  //  must decrement it.   then does nothing until it
    -  // reaches 0.
    -
    -  static size_t pagesize_;
    -  // Size of a VM page.
    -
    -  static size_t allocation_granularity_;
    -  // Size of allocation granularity.
    -
    -  static u_long crc_table_[];
    -  // CRC table.
    -
    -  static const char hex_chars_[];
    -  // Hex characters.
    -
    -  static char debug_;
    -  // Are we debugging ACE?
    -};
    -
    -#if !defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/ACE.i"
    -#endif /* ACE_LACKS_INLINE_FUNCTIONS */
    -
    -#endif  /* ACE_ACE_H */
    diff --git a/ace/ACE.i b/ace/ACE.i
    deleted file mode 100644
    index a7f6e541661..00000000000
    --- a/ace/ACE.i
    +++ /dev/null
    @@ -1,175 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// Wrappers for methods that have been moved to ACE_OS.
    -
    -ASYS_INLINE ssize_t
    -ACE::read_n (ACE_HANDLE handle,
    -             void *buf,
    -             size_t len)
    -{
    -  ACE_TRACE ("ACE::read_n");
    -  return ACE_OS::read_n (handle, buf, len);
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE::send_n (ACE_HANDLE handle, const void *buf, size_t len)
    -{
    -  ACE_TRACE ("ACE::send_n");
    -  return ACE_OS::send_n (handle, buf, len);
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE::write_n (ACE_HANDLE handle,
    -              const void *buf,
    -              size_t len)
    -{
    -  ACE_TRACE ("ACE::write_n");
    -  return ACE_OS::write_n (handle, buf, len);
    -}
    -
    -// Miscellaneous static methods used throughout ACE.
    -
    -ASYS_INLINE ssize_t
    -ACE::send (ACE_HANDLE handle, const void *buf, size_t len)
    -{
    -  ACE_TRACE ("ACE::send");
    -
    -#if defined (ACE_WIN32) || defined (ACE_PSOS)
    -  return ACE_OS::send (handle, (const char *) buf, len);
    -#else
    -  return ACE_OS::write (handle, (const char *) buf, len);
    -#endif /* ACE_WIN32 */
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE::send (ACE_HANDLE handle, const void *buf, size_t len, int flags)
    -{
    -  ACE_TRACE ("ACE::send");
    -  return ACE_OS::send (handle, (const char *) buf, len, flags);
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE::recv (ACE_HANDLE handle, void *buf, size_t len)
    -{
    -  ACE_TRACE ("ACE::recv");
    -#if defined (ACE_WIN32) || defined (ACE_PSOS)
    -    return ACE_OS::recv (handle, (char *) buf, len);
    -#else
    -    return ACE_OS::read (handle, (char *) buf, len);
    -#endif /* ACE_WIN32 */
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE::recv (ACE_HANDLE handle, void *buf, size_t len, int flags)
    -{
    -  ACE_TRACE ("ACE::recv");
    -
    -  return ACE_OS::recv (handle, (char *) buf, len, flags);
    -}
    -
    -ASYS_INLINE char *
    -ACE::strecpy (char *s, const char *t)
    -{
    -  return ACE_OS::strecpy (s, t);
    -}
    -
    -#if defined (ACE_HAS_UNICODE)
    -ASYS_INLINE wchar_t *
    -ACE::strecpy (wchar_t *s, const wchar_t *t)
    -{
    -  return ACE_OS::strecpy (s, t);
    -}
    -#endif /* ACE_HAS_UNICODE */
    -
    -ASYS_INLINE void
    -ACE::unique_name (const void *object,
    -                  LPTSTR name,
    -                  size_t length)
    -{
    -  ACE_OS::unique_name (object, name, length);
    -}
    -
    -// Return flags currently associated with handle.
    -
    -ASYS_INLINE int
    -ACE::get_flags (ACE_HANDLE handle)
    -{
    -  ACE_TRACE ("ACE::get_flags");
    -
    -#if defined (ACE_LACKS_FCNTL)
    -  // ACE_OS::fcntl is not supported, e.g., on VxWorks.  It
    -  // would be better to store ACE's notion of the flags
    -  // associated with the handle, but this works for now.
    -  ACE_UNUSED_ARG (handle);
    -  return 0;
    -#else
    -  return ACE_OS::fcntl (handle, F_GETFL, 0);
    -#endif /* ACE_LACKS_FCNTL */
    -}
    -
    -ASYS_INLINE u_long
    -ACE::log2 (u_long num)
    -{
    -  u_long log = 0;
    -
    -  for (;
    -       num > 0;
    -       log++)
    -    num >>= 1;
    -
    -  return log;
    -}
    -
    -ASYS_INLINE char
    -ACE::nibble2hex (u_int n)
    -{
    -  return ACE::hex_chars_[n & 0x0f];
    -}
    -
    -ASYS_INLINE u_char
    -ACE::hex2byte (char c)
    -{
    -  if (isdigit (c))
    -    return (u_char) (c - '0');
    -  else if (islower (c))
    -    return (u_char) (10 + c - 'a');
    -  else
    -    return (u_char) (10 + c - 'A');
    -}
    -
    -ASYS_INLINE char
    -ACE::debug (void)
    -{
    -  return ACE::debug_;
    -}
    -
    -ASYS_INLINE void
    -ACE::debug (char c)
    -{
    -  ACE::debug_ = c;
    -}
    -
    -ASYS_INLINE char *
    -ACE::strnew (const char *s)
    -{
    -  // ACE_TRACE ("ACE::strnew");
    -  char *t = new char [::strlen(s) + 1];
    -  if (t == 0)
    -    return 0;
    -  else
    -    return ACE_OS::strcpy (t, s);
    -}
    -
    -#if defined (ACE_WIN32) && defined (ACE_HAS_UNICODE)
    -ASYS_INLINE wchar_t *
    -ACE::strnew (const wchar_t *s)
    -{
    -  // ACE_TRACE ("ACE_OS::strnew");
    -  wchar_t *t = new wchar_t[::wcslen (s) + 1];
    -  if (t == 0)
    -    return 0;
    -  else
    -    return ACE_OS::strcpy (t, s);
    -}
    -#endif /* ACE_WIN32 && ACE_HAS_UNICODE */
    diff --git a/ace/ACED.cpp b/ace/ACED.cpp
    deleted file mode 100644
    index 126fe326acf..00000000000
    --- a/ace/ACED.cpp
    +++ /dev/null
    @@ -1,193 +0,0 @@
    -// $Id$
    -
    -// This is the main CPP file associated with the
    -// debug non-unicode version of ACE.
    -
    -#if defined(__BORLANDC__) && __BORLANDC__ >= 0x0530
    -#include 
    -
    -ACE_RCSID(ace, ACED, "$Id$")
    -
    -int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
    -{
    -  return 1;
    -}
    -
    -USEUNIT("ACE.cpp");
    -USEUNIT("Activation_Queue.cpp");
    -USEUNIT("Acceptor.cpp");
    -USEUNIT("Addr.cpp");
    -USEUNIT("Arg_Shifter.cpp");
    -USEUNIT("ARGV.cpp");
    -USEUNIT("Array.cpp");
    -USEUNIT("Asynch_Acceptor.cpp");
    -USEUNIT("Asynch_IO.cpp");
    -USEUNIT("Auto_Ptr.cpp");
    -USEUNIT("Basic_Types.cpp");
    -USEUNIT("Connector.cpp");
    -USEUNIT("Containers.cpp");
    -USEUNIT("CORBA_Handler.cpp");
    -USEUNIT("CORBA_Ref.cpp");
    -USEUNIT("Date_Time.cpp");
    -USEUNIT("DEV.cpp");
    -USEUNIT("DEV_Addr.cpp");
    -USEUNIT("DEV_Connector.cpp");
    -USEUNIT("DEV_IO.cpp");
    -USEUNIT("Dump.cpp");
    -USEUNIT("Dump_T.cpp");
    -USEUNIT("Dynamic.cpp");
    -USEUNIT("Dynamic_Service.cpp");
    -USEUNIT("Env_Value_T.cpp");
    -USEUNIT("Event_Handler.cpp");
    -USEUNIT("Event_Handler_T.cpp");
    -USEUNIT("FIFO.cpp");
    -USEUNIT("FIFO_Recv.cpp");
    -USEUNIT("FIFO_Recv_Msg.cpp");
    -USEUNIT("FIFO_Send.cpp");
    -USEUNIT("FIFO_Send_Msg.cpp");
    -USEUNIT("FILE.cpp");
    -USEUNIT("FILE_Addr.cpp");
    -USEUNIT("FILE_Connector.cpp");
    -USEUNIT("FILE_IO.cpp");
    -USEUNIT("Filecache.cpp");
    -USEUNIT("Free_List.cpp");
    -USEUNIT("Future.cpp");
    -USEUNIT("Get_Opt.cpp");
    -USEUNIT("Handle_Set.cpp");
    -USEUNIT("Hash_Map_Manager.cpp");
    -USEUNIT("High_Res_Timer.cpp");
    -USEUNIT("INET_Addr.cpp");
    -USEUNIT("IO_Cntl_Msg.cpp");
    -USEUNIT("IO_SAP.cpp");
    -USEUNIT("IOStream.cpp");
    -USEUNIT("IOStream_T.cpp");
    -USEUNIT("IPC_SAP.cpp");
    -USEUNIT("Local_Name_Space.cpp");
    -USEUNIT("Local_Name_Space_T.cpp");
    -USEUNIT("Local_Tokens.cpp");
    -USEUNIT("LOCK_SOCK_Acceptor.cpp");
    -USEUNIT("Log_Msg.cpp");
    -USEUNIT("Log_Record.cpp");
    -USEUNIT("LSOCK.cpp");
    -USEUNIT("LSOCK_Acceptor.cpp");
    -USEUNIT("LSOCK_CODgram.cpp");
    -USEUNIT("LSOCK_Connector.cpp");
    -USEUNIT("LSOCK_Dgram.cpp");
    -USEUNIT("LSOCK_Stream.cpp");
    -USEUNIT("Malloc.cpp");
    -USEUNIT("Malloc_T.cpp");
    -USEUNIT("Managed_Object.cpp");
    -USEUNIT("Map_Manager.cpp");
    -USEUNIT("Mem_Map.cpp");
    -USEUNIT("Memory_Pool.cpp");
    -USEUNIT("Message_Block.cpp");
    -USEUNIT("Message_Queue.cpp");
    -USEUNIT("Method_Request.cpp");
    -USEUNIT("Module.cpp");
    -USEUNIT("Msg_WFMO_Reactor.cpp");
    -USEUNIT("Multiplexor.cpp");
    -USEUNIT("Name_Proxy.cpp");
    -USEUNIT("Name_Request_Reply.cpp");
    -USEUNIT("Name_Space.cpp");
    -USEUNIT("Naming_Context.cpp");
    -USEUNIT("Object_Manager.cpp");
    -USEUNIT("Obstack.cpp");
    -USEUNIT("OS.cpp");
    -USEUNIT("Parse_Node.cpp");
    -USEUNIT("Pipe.cpp");
    -USEUNIT("Priority_Reactor.cpp");
    -USEUNIT("Proactor.cpp");
    -USEUNIT("Process.cpp");
    -USEUNIT("Process_Manager.cpp");
    -USEUNIT("Profile_Timer.cpp");
    -USEUNIT("RB_Tree.cpp");
    -USEUNIT("Reactor.cpp");
    -USEUNIT("Read_Buffer.cpp");
    -USEUNIT("Registry.cpp");
    -USEUNIT("Registry_Name_Space.cpp");
    -USEUNIT("Remote_Name_Space.cpp");
    -USEUNIT("Remote_Tokens.cpp");
    -USEUNIT("Sched_Params.cpp");
    -USEUNIT("Select_Reactor.cpp");
    -USEUNIT("Service_Config.cpp");
    -USEUNIT("Service_Manager.cpp");
    -USEUNIT("Service_Object.cpp");
    -USEUNIT("Service_Repository.cpp");
    -USEUNIT("Service_Types.cpp");
    -USEUNIT("Shared_Memory.cpp");
    -USEUNIT("Shared_Memory_MM.cpp");
    -USEUNIT("Shared_Memory_SV.cpp");
    -USEUNIT("Shared_Object.cpp");
    -USEUNIT("Signal.cpp");
    -USEUNIT("Singleton.cpp");
    -USEUNIT("SOCK.cpp");
    -USEUNIT("SOCK_Acceptor.cpp");
    -USEUNIT("SOCK_CODgram.cpp");
    -USEUNIT("SOCK_Connector.cpp");
    -USEUNIT("SOCK_Dgram.cpp");
    -USEUNIT("SOCK_Dgram_Bcast.cpp");
    -USEUNIT("SOCK_Dgram_Mcast.cpp");
    -USEUNIT("SOCK_IO.cpp");
    -USEUNIT("SOCK_Stream.cpp");
    -USEUNIT("SPIPE.cpp");
    -USEUNIT("SPIPE_Acceptor.cpp");
    -USEUNIT("SPIPE_Addr.cpp");
    -USEUNIT("SPIPE_Connector.cpp");
    -USEUNIT("SPIPE_Stream.cpp");
    -USEUNIT("SString.cpp");
    -USEUNIT("Stats.cpp");
    -USEUNIT("Strategies.cpp");
    -USEUNIT("Strategies_T.cpp");
    -USEUNIT("Stream.cpp");
    -USEUNIT("Stream_Modules.cpp");
    -USEUNIT("SV_Message.cpp");
    -USEUNIT("SV_Message_Queue.cpp");
    -USEUNIT("SV_Semaphore_Complex.cpp");
    -USEUNIT("SV_Semaphore_Simple.cpp");
    -USEUNIT("SV_Shared_Memory.cpp");
    -USEUNIT("Svc_Conf_l.cpp");
    -USEUNIT("Svc_Conf_y.cpp");
    -USEUNIT("Svc_Handler.cpp");
    -USEUNIT("Synch.cpp");
    -USEUNIT("Synch_Options.cpp");
    -USEUNIT("Synch_T.cpp");
    -USEUNIT("System_Time.cpp");
    -USEUNIT("Task.cpp");
    -USEUNIT("Task_T.cpp");
    -USEUNIT("Thread.cpp");
    -USEUNIT("Thread_Manager.cpp");
    -USEUNIT("Timeprobe.cpp");
    -USEUNIT("Timeprobe_T.cpp");
    -USEUNIT("Time_Request_Reply.cpp");
    -USEUNIT("Timer_Hash.cpp");
    -USEUNIT("Timer_Hash_T.cpp");
    -USEUNIT("Timer_Heap.cpp");
    -USEUNIT("Timer_Heap_T.cpp");
    -USEUNIT("Timer_List.cpp");
    -USEUNIT("Timer_List_T.cpp");
    -USEUNIT("Timer_Queue.cpp");
    -USEUNIT("Timer_Queue_Adapters.cpp");
    -USEUNIT("Timer_Queue_T.cpp");
    -USEUNIT("Timer_Wheel.cpp");
    -USEUNIT("Timer_Wheel_T.cpp");
    -USEUNIT("TLI.cpp");
    -USEUNIT("TLI_Acceptor.cpp");
    -USEUNIT("TLI_Connector.cpp");
    -USEUNIT("TLI_Stream.cpp");
    -USEUNIT("Token.cpp");
    -USEUNIT("Token_Collection.cpp");
    -USEUNIT("Token_Invariants.cpp");
    -USEUNIT("Token_Manager.cpp");
    -USEUNIT("Token_Request_Reply.cpp");
    -USEUNIT("Trace.cpp");
    -USEUNIT("TTY_IO.cpp");
    -USEUNIT("Typed_SV_Message.cpp");
    -USEUNIT("Typed_SV_Message_Queue.cpp");
    -USEUNIT("UNIX_Addr.cpp");
    -USEUNIT("UPIPE_Acceptor.cpp");
    -USEUNIT("UPIPE_Connector.cpp");
    -USEUNIT("UPIPE_Stream.cpp");
    -USEUNIT("WFMO_Reactor.cpp");
    -USEUNIT("XtReactor.cpp");
    -//---------------------------------------------------------------------------
    -#endif
    diff --git a/ace/ACER.cpp b/ace/ACER.cpp
    deleted file mode 100644
    index 4cfe5b8b602..00000000000
    --- a/ace/ACER.cpp
    +++ /dev/null
    @@ -1,190 +0,0 @@
    -// $Id$
    -
    -// This is the main CPP file associated with the
    -// release non-unicode version of ACE.
    -
    -#if defined(__BORLANDC__) && __BORLANDC__ >= 0x0530
    -#include 
    -
    -ACE_RCSID(ace, ACER, "$Id$")
    -
    -int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
    -{
    -  return 1;
    -}
    -
    -USEUNIT("ACE.cpp");
    -USEUNIT("Activation_Queue.cpp");
    -USEUNIT("Acceptor.cpp");
    -USEUNIT("Addr.cpp");
    -USEUNIT("Arg_Shifter.cpp");
    -USEUNIT("ARGV.cpp");
    -USEUNIT("Array.cpp");
    -USEUNIT("Asynch_Acceptor.cpp");
    -USEUNIT("Asynch_IO.cpp");
    -USEUNIT("Auto_Ptr.cpp");
    -USEUNIT("Basic_Types.cpp");
    -USEUNIT("Connector.cpp");
    -USEUNIT("Containers.cpp");
    -USEUNIT("CORBA_Handler.cpp");
    -USEUNIT("CORBA_Ref.cpp");
    -USEUNIT("Date_Time.cpp");
    -USEUNIT("DEV.cpp");
    -USEUNIT("DEV_Addr.cpp");
    -USEUNIT("DEV_Connector.cpp");
    -USEUNIT("DEV_IO.cpp");
    -USEUNIT("Dump.cpp");
    -USEUNIT("Dump_T.cpp");
    -USEUNIT("Dynamic.cpp");
    -USEUNIT("Dynamic_Service.cpp");
    -USEUNIT("Env_Value_T.cpp");
    -USEUNIT("Event_Handler.cpp");
    -USEUNIT("Event_Handler_T.cpp");
    -USEUNIT("FIFO.cpp");
    -USEUNIT("FIFO_Recv.cpp");
    -USEUNIT("FIFO_Recv_Msg.cpp");
    -USEUNIT("FIFO_Send.cpp");
    -USEUNIT("FIFO_Send_Msg.cpp");
    -USEUNIT("FILE.cpp");
    -USEUNIT("FILE_Addr.cpp");
    -USEUNIT("FILE_Connector.cpp");
    -USEUNIT("FILE_IO.cpp");
    -USEUNIT("Filecache.cpp");
    -USEUNIT("Free_List.cpp");
    -USEUNIT("Future.cpp");
    -USEUNIT("Get_Opt.cpp");
    -USEUNIT("Handle_Set.cpp");
    -USEUNIT("Hash_Map_Manager.cpp");
    -USEUNIT("High_Res_Timer.cpp");
    -USEUNIT("INET_Addr.cpp");
    -USEUNIT("IO_Cntl_Msg.cpp");
    -USEUNIT("IO_SAP.cpp");
    -USEUNIT("IOStream.cpp");
    -USEUNIT("IOStream_T.cpp");
    -USEUNIT("IPC_SAP.cpp");
    -USEUNIT("Local_Name_Space.cpp");
    -USEUNIT("Local_Name_Space_T.cpp");
    -USEUNIT("Local_Tokens.cpp");
    -USEUNIT("LOCK_SOCK_Acceptor.cpp");
    -USEUNIT("Log_Msg.cpp");
    -USEUNIT("Log_Record.cpp");
    -USEUNIT("LSOCK.cpp");
    -USEUNIT("LSOCK_Acceptor.cpp");
    -USEUNIT("LSOCK_CODgram.cpp");
    -USEUNIT("LSOCK_Connector.cpp");
    -USEUNIT("LSOCK_Dgram.cpp");
    -USEUNIT("LSOCK_Stream.cpp");
    -USEUNIT("Malloc.cpp");
    -USEUNIT("Malloc_T.cpp");
    -USEUNIT("Managed_Object.cpp");
    -USEUNIT("Map_Manager.cpp");
    -USEUNIT("Mem_Map.cpp");
    -USEUNIT("Memory_Pool.cpp");
    -USEUNIT("Message_Block.cpp");
    -USEUNIT("Message_Queue.cpp");
    -USEUNIT("Method_Request.cpp");
    -USEUNIT("Module.cpp");
    -USEUNIT("Msg_WFMO_Reactor.cpp");
    -USEUNIT("Multiplexor.cpp");
    -USEUNIT("Name_Proxy.cpp");
    -USEUNIT("Name_Request_Reply.cpp");
    -USEUNIT("Name_Space.cpp");
    -USEUNIT("Naming_Context.cpp");
    -USEUNIT("Object_Manager.cpp");
    -USEUNIT("Obstack.cpp");
    -USEUNIT("OS.cpp");
    -USEUNIT("Parse_Node.cpp");
    -USEUNIT("Pipe.cpp");
    -USEUNIT("Priority_Reactor.cpp");
    -USEUNIT("Proactor.cpp");
    -USEUNIT("Process.cpp");
    -USEUNIT("Process_Manager.cpp");
    -USEUNIT("Profile_Timer.cpp");
    -USEUNIT("Reactor.cpp");
    -USEUNIT("Read_Buffer.cpp");
    -USEUNIT("Registry.cpp");
    -USEUNIT("Registry_Name_Space.cpp");
    -USEUNIT("Remote_Name_Space.cpp");
    -USEUNIT("Remote_Tokens.cpp");
    -USEUNIT("Sched_Params.cpp");
    -USEUNIT("Select_Reactor.cpp");
    -USEUNIT("Service_Config.cpp");
    -USEUNIT("Service_Manager.cpp");
    -USEUNIT("Service_Object.cpp");
    -USEUNIT("Service_Repository.cpp");
    -USEUNIT("Service_Types.cpp");
    -USEUNIT("Shared_Memory.cpp");
    -USEUNIT("Shared_Memory_MM.cpp");
    -USEUNIT("Shared_Memory_SV.cpp");
    -USEUNIT("Shared_Object.cpp");
    -USEUNIT("Signal.cpp");
    -USEUNIT("Singleton.cpp");
    -USEUNIT("SOCK.cpp");
    -USEUNIT("SOCK_Acceptor.cpp");
    -USEUNIT("SOCK_CODgram.cpp");
    -USEUNIT("SOCK_Connector.cpp");
    -USEUNIT("SOCK_Dgram.cpp");
    -USEUNIT("SOCK_Dgram_Bcast.cpp");
    -USEUNIT("SOCK_Dgram_Mcast.cpp");
    -USEUNIT("SOCK_IO.cpp");
    -USEUNIT("SOCK_Stream.cpp");
    -USEUNIT("SPIPE.cpp");
    -USEUNIT("SPIPE_Acceptor.cpp");
    -USEUNIT("SPIPE_Addr.cpp");
    -USEUNIT("SPIPE_Connector.cpp");
    -USEUNIT("SPIPE_Stream.cpp");
    -USEUNIT("SString.cpp");
    -USEUNIT("Stats.cpp");
    -USEUNIT("Strategies.cpp");
    -USEUNIT("Strategies_T.cpp");
    -USEUNIT("Stream.cpp");
    -USEUNIT("Stream_Modules.cpp");
    -USEUNIT("SV_Message.cpp");
    -USEUNIT("SV_Message_Queue.cpp");
    -USEUNIT("SV_Semaphore_Complex.cpp");
    -USEUNIT("SV_Semaphore_Simple.cpp");
    -USEUNIT("SV_Shared_Memory.cpp");
    -USEUNIT("Svc_Conf_l.cpp");
    -USEUNIT("Svc_Conf_y.cpp");
    -USEUNIT("Svc_Handler.cpp");
    -USEUNIT("Synch.cpp");
    -USEUNIT("Synch_Options.cpp");
    -USEUNIT("Synch_T.cpp");
    -USEUNIT("System_Time.cpp");
    -USEUNIT("Task.cpp");
    -USEUNIT("Task_T.cpp");
    -USEUNIT("Thread.cpp");
    -USEUNIT("Thread_Manager.cpp");
    -USEUNIT("Time_Request_Reply.cpp");
    -USEUNIT("Timer_Hash.cpp");
    -USEUNIT("Timer_Hash_T.cpp");
    -USEUNIT("Timer_Heap.cpp");
    -USEUNIT("Timer_Heap_T.cpp");
    -USEUNIT("Timer_List.cpp");
    -USEUNIT("Timer_List_T.cpp");
    -USEUNIT("Timer_Queue.cpp");
    -USEUNIT("Timer_Queue_Adapters.cpp");
    -USEUNIT("Timer_Queue_T.cpp");
    -USEUNIT("Timer_Wheel.cpp");
    -USEUNIT("Timer_Wheel_T.cpp");
    -USEUNIT("TLI.cpp");
    -USEUNIT("TLI_Acceptor.cpp");
    -USEUNIT("TLI_Connector.cpp");
    -USEUNIT("TLI_Stream.cpp");
    -USEUNIT("Token.cpp");
    -USEUNIT("Token_Collection.cpp");
    -USEUNIT("Token_Invariants.cpp");
    -USEUNIT("Token_Manager.cpp");
    -USEUNIT("Token_Request_Reply.cpp");
    -USEUNIT("Trace.cpp");
    -USEUNIT("TTY_IO.cpp");
    -USEUNIT("Typed_SV_Message.cpp");
    -USEUNIT("Typed_SV_Message_Queue.cpp");
    -USEUNIT("UNIX_Addr.cpp");
    -USEUNIT("UPIPE_Acceptor.cpp");
    -USEUNIT("UPIPE_Connector.cpp");
    -USEUNIT("UPIPE_Stream.cpp");
    -USEUNIT("WFMO_Reactor.cpp");
    -USEUNIT("XtReactor.cpp");
    -//---------------------------------------------------------------------------
    -#endif
    diff --git a/ace/ARGV.cpp b/ace/ARGV.cpp
    deleted file mode 100644
    index f01f3e87689..00000000000
    --- a/ace/ARGV.cpp
    +++ /dev/null
    @@ -1,322 +0,0 @@
    -// ARGV.cpp
    -// $Id$
    -
    -// Transforms a string BUF into an ARGV-style vector of strings. 
    -
    -#define ACE_BUILD_DLL
    -#include "ace/ARGV.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/ARGV.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, ARGV, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE (ACE_ARGV)
    -
    -void
    -ACE_ARGV::dump (void) const
    -{
    -  ACE_TRACE ("ACE_ARGV::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("argc_ = %d"), this->argc_));
    -
    -  for (size_t i = 0; i < this->argc_; i++)
    -    ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("\nargv_[%i] = %s"), i, this->argv_[i]));
    -
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("\nbuf = %s\n"), this->buf_));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("\n")));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -// Creates this->argv_ out of this->buf_.  New memory is allocated for
    -// each element of the array.  This is used by the array-to-string
    -// style constructor and for creating this->argv_ when in iterative
    -// mode.
    -
    -int
    -ACE_ARGV::string_to_argv (void)
    -{
    -  ACE_TRACE ("ACE_ARGV::string_to_argv");
    -
    -  return ACE_OS::string_to_argv (this->buf_,
    -                                 this->argc_,
    -                                 this->argv_,
    -                                 this->substitute_env_args_);
    -}
    -
    -int
    -ACE_ARGV::argv_to_string (ASYS_TCHAR **argv, ASYS_TCHAR *&buf)
    -{
    -  return ACE_OS::argv_to_string (argv, buf);
    -}
    -
    -ACE_ARGV::ACE_ARGV (const ASYS_TCHAR buf[],
    -		    int substitute_env_args)
    -  : substitute_env_args_ (substitute_env_args),
    -    state_ (TO_PTR_ARRAY),
    -    argc_ (0),
    -    argv_ (0),
    -    buf_ (0),
    -    length_ (0),
    -    queue_ ()
    -{
    -  ACE_TRACE ("ACE_ARGV::ACE_ARGV ASYS_TCHAR[] to ASYS_TCHAR *[]");
    -
    -  if (buf == 0 || buf[0] == 0)
    -    return;
    -
    -  // Make an internal copy of the string.
    -  ACE_NEW (this->buf_,
    -           ASYS_TCHAR[ACE_OS::strlen (buf) + 1]);
    -  ACE_OS::strcpy (this->buf_, buf);
    -
    -  // Create this->argv_.
    -  if (this->string_to_argv () == -1)
    -    ACE_ERROR ((LM_ERROR, 
    -                ASYS_TEXT ("%p\n"),
    -                ASYS_TEXT ("string_to_argv")));
    -}
    -
    -ACE_ARGV::ACE_ARGV (ASYS_TCHAR *argv[],
    -		    int substitute_env_args)
    -  : substitute_env_args_ (substitute_env_args),
    -    state_ (TO_STRING),
    -    argc_ (0),
    -    argv_ (0),
    -    buf_ (0),
    -    length_ (0),
    -    queue_ ()
    -{
    -  ACE_TRACE ("ACE_ARGV::ACE_ARGV ASYS_TCHAR*[] to ASYS_TCHAR[]");
    -
    -  if (argv == 0 || argv[0] == 0)
    -    return;
    -
    -  int buf_len = 0;
    -  
    -  // Determine the length of the buffer.
    -
    -  for (int i = 0; argv[i] != 0; i++)
    -    {
    -      ASYS_TCHAR *temp;
    -
    -      // Account for environment variables.
    -      if (this->substitute_env_args_
    -	  && (argv[i][0] == '$'
    -	  && (temp = ACE_OS::getenv (&argv[i][1])) != 0))
    -	buf_len += ACE_OS::strlen (temp);	
    -      else
    -	buf_len += ACE_OS::strlen (argv[i]);
    -
    -      // Add one for the extra space between each string.
    -      buf_len++;
    -    }
    -
    -  // Step through all argv params and copy each one into buf; separate
    -  // each param with white space.
    -
    -  ACE_NEW (this->buf_,
    -           ASYS_TCHAR[buf_len + 1]);
    -
    -  ASYS_TCHAR *end = this->buf_;
    -  int j;
    -
    -  for (j = 0; argv[j] != 0; j++)
    -    {
    -      ASYS_TCHAR *temp;
    -
    -      // Account for environment variables.
    -      if (this->substitute_env_args_
    -	  && (argv[j][0] == '$'
    -	  && (temp = ACE_OS::getenv (&argv[j][1])) != 0))
    -	end = ACE::strecpy (end, temp);
    -      else
    -	end = ACE::strecpy (end, argv[j]);
    -
    -      // Replace the null char that strecpy copies with white space as
    -      // a separator.
    -      *(end-1) = ' ';
    -    }
    -
    -  // Remember how many arguments there are
    -  this->argc_ = j;
    -
    -  // Null terminate the string.
    -  *end = '\0';
    -}
    -
    -ACE_ARGV::ACE_ARGV (ASYS_TCHAR *first_argv[], 
    -                    ASYS_TCHAR *second_argv[],
    -                    int substitute_env_args)
    -  : substitute_env_args_ (substitute_env_args),
    -    state_ (TO_STRING),
    -    argc_ (0),
    -    argv_ (0),
    -    buf_ (0),
    -    length_ (0),
    -    queue_ ()
    -{
    -  ACE_TRACE ("ACE_ARGV::ACE_ARGV ASYS_TCHAR*[] + ASYS_TCHAR *[] to ASYS_TCHAR[]");
    -
    -  int first_argc;
    -  int second_argc;
    -
    -  ASYS_TCHAR *first_buf;
    -  ASYS_TCHAR *second_buf;
    -
    -  // convert the first argv to a string
    -  first_argc = this->argv_to_string (first_argv,first_buf);
    -
    -  // convert the second argv to a string
    -  second_argc = this->argv_to_string (second_argv,second_buf);
    -
    -  // Add the number of arguments in both the argvs.
    -  this->argc_ = first_argc + second_argc;
    -
    -  int buf_len = ACE_OS::strlen (first_buf) + ACE_OS::strlen (second_buf) + 1;
    -
    -  // Allocate memory to the lenght of the combined argv string.
    -  ACE_NEW (this->buf_,
    -           ASYS_TCHAR[buf_len + 1]);
    -
    -  // copy the first argv string to the buffer
    -  ACE_OS::strcpy (this->buf_,first_buf);
    -
    -  // concatenate the second argv string to the buffer
    -  ACE_OS::strcat (this->buf_,second_buf);
    -
    -  //   Delete the first and second buffers
    -
    -  delete [] first_buf;
    -
    -  delete [] second_buf;
    -}
    -
    -
    -ACE_ARGV::ACE_ARGV (int substitute_env_args)
    -  : substitute_env_args_ (substitute_env_args),
    -    state_ (ITERATIVE),
    -    argc_ (0),
    -    argv_ (0),
    -    buf_ (0),
    -    length_ (0),
    -    queue_ ()
    -{
    -  ACE_TRACE ("ACE_ARGV::ACE_ARGV Iterative");
    -
    -  // Nothing to do yet -- the user puts in arguments via add ()
    -}
    -
    -int
    -ACE_ARGV::add (const ASYS_TCHAR *next_arg)
    -{
    -  // Only allow this to work in the "iterative" verion -- the
    -  // ACE_ARGVs created with the one argument constructor.
    -  if (this->state_ != ITERATIVE)
    -    return -1;
    -
    -  // Put the new argument at the end of the queue.
    -  if (this->queue_.enqueue_tail ((ASYS_TCHAR *) next_arg) == -1)
    -    ACE_ERROR_RETURN ((LM_ERROR,
    -                       ASYS_TEXT ("Can't add more to ARGV queue")),
    -                      -1);
    -
    -  this->length_ += ACE_OS::strlen (next_arg);
    -
    -  this->argc_++;
    -
    -  // Wipe argv_ and buf_ away so that they will be recreated if the
    -  // user calls argv () or buf ().
    -  if (this->argv_ != 0) 
    -    {
    -      for (int i = 0; this->argv_[i] != 0; i++)
    -	ACE_OS::free ((void *) this->argv_[i]);
    -
    -      delete [] this->argv_;
    -      this->argv_ = 0;
    -    }
    -
    -  delete [] this->buf_;
    -  this->buf_ = 0;
    -
    -  return 0;
    -}
    -
    -// Free up argv_ and buf_
    -
    -ACE_ARGV::~ACE_ARGV (void)
    -{
    -  ACE_TRACE ("ACE_ARGV::~ACE_ARGV");
    - 
    -  if (this->argv_ != 0)
    -    for (int i = 0; this->argv_[i] != 0; i++)
    -      ACE_OS::free ((void *) this->argv_[i]);
    -
    -  delete [] this->argv_;
    -  delete [] this->buf_;
    -}
    -
    -// Create buf_ out of the queue_.  This is only used in the
    -// "iterative" mode.
    -
    -int
    -ACE_ARGV::create_buf_from_queue (void)
    -{
    -  ACE_TRACE ("ACE_ARGV::create_buf_from_queue");
    -
    -  // If the are no arguments, don't do anything
    -  if (this->argc_ <= 0)
    -    return -1;
    -
    -  delete [] this->buf_;
    -
    -  ACE_NEW_RETURN (this->buf_,
    -                  ASYS_TCHAR[this->length_ + this->argc_],
    -                  -1);
    -
    -  // Get an iterator over the queue
    -  ACE_Unbounded_Queue_Iterator iter (this->queue_);
    -
    -  ASYS_TCHAR **arg;
    -  ASYS_TCHAR *ptr = this->buf_;
    -  size_t len;
    -  int more = 0;
    -
    -  while (!iter.done ()) 
    -    {
    -      // Get next argument from the queue.
    -      iter.next (arg);
    -
    -      more = iter.advance ();
    -
    -      len = ACE_OS::strlen (*arg);
    -
    -      // Copy the argument into buf_
    -      ACE_OS::memcpy ((void *) ptr,
    -                      (const void *) (*arg),
    -                      len);
    -      // Move the pointer down.
    -      ptr += len;
    -
    -      // Put in an argument separating space.
    -      if (more != 0) 
    -	*ptr++ = ' ';
    -    }
    -
    -  // Put in the NUL terminator
    -  *ptr = '\0';
    -
    -  return 0;
    -}
    -
    -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
    -template class ACE_Unbounded_Queue;
    -template class ACE_Unbounded_Queue_Iterator;
    -template class ACE_Node;
    -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
    -#pragma instantiate ACE_Unbounded_Queue
    -#pragma instantiate ACE_Unbounded_Queue_Iterator
    -#pragma instantiate ACE_Node
    -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
    diff --git a/ace/ARGV.h b/ace/ARGV.h
    deleted file mode 100644
    index 7edc64f0a9c..00000000000
    --- a/ace/ARGV.h
    +++ /dev/null
    @@ -1,147 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    ARGV.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt, Everett Anderson
    -//
    -// ============================================================================
    -
    -#ifndef ACE_ARGUMENT_VECTOR_H
    -#define ACE_ARGUMENT_VECTOR_H
    -
    -#include "ace/ACE.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Containers.h"
    -
    -class ACE_Export ACE_ARGV
    -{
    -  // = TITLE
    -  //     Transforms a string  into an  style vector of
    -  //     strings or an  style vector of string , performing
    -  //     environment variable substitutions if necessary.
    -public:
    -  // = Initialization and termination.
    -  ACE_ARGV (const ASYS_TCHAR buf[],
    -            int substitute_env_args = 1);
    -  // Converts  into an -style vector of strings.  If
    -  //  is enabled then we'll substitute the
    -  // environment variables for each $ENV encountered in the string.
    -  // The subscript and  operations are not allowed on an
    -  // ACE_ARGV created this way.
    -
    -  ACE_ARGV (ASYS_TCHAR *argv[],
    -            int substitute_env_args = 1);
    -  // Converts  into a linear string.  If 
    -  // is enabled then we'll substitute the environment variables for
    -  // each $ENV encountered in the string.  The  operation is not
    -  // allowed on an ACE_ARGV created this way.
    -
    -  ACE_ARGV (ASYS_TCHAR *first_argv[],
    -            ASYS_TCHAR *second_argv[],
    -            int substitute_env_args =1);
    -  // Creates an ACE_ARGV which is the concatenation of the first_argv
    -  // and the second argv. The argv arguments should be null pointer
    -  // terminated.
    -
    -  ACE_ARGV (int substitute_env_args = 1);
    -  // Entry point for creating an ASYS_TCHAR *[] command line
    -  // iteratively via the  method.  The  and  methods
    -  // are allowed, and the result is recreated when called multiple
    -  // times.  The subscript operator is not allowed.
    -
    -  ~ACE_ARGV (void);
    -  // Destructor.
    -
    -  // = Accessor arguments.
    -  const ASYS_TCHAR *operator[] (size_t index);
    -  // Returns the th string in the ARGV array.
    -
    -  ASYS_TCHAR **argv (void);
    -  // Returns the  array.  Caller should not delete this memory
    -  // since the  destructor will delete it.  If the caller
    -  // modifies the array in the iterative mode, the changes are not
    -  // saved to the queue.
    -
    -  size_t argc (void) const;
    -  // Returns .
    -
    -  const ASYS_TCHAR *buf (void);
    -  // Returns the .  Caller should not delete this memory since
    -  // the  destructor will delete it.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -  int add (const ASYS_TCHAR *next_arg);
    -  // Add another argument.  This only works in the ITERATIVE state.
    -
    -  int state (void) const;
    -  // What state is this ACE_ARGV in?
    -
    -  // These are the states possible via the different constructors.
    -  enum States
    -  {
    -    TO_STRING = 1,
    -    // ACE_ARGV converts buf[] to ASYS_TCHAR *argv[]
    -    TO_PTR_ARRAY = 2,
    -    // ACE_ARGV converts ASYS_TCHAR *argv[] to buf[]
    -    ITERATIVE = 3
    -    // Builds buf[] or ASYS_TCHAR *argv[] iteratively with .
    -  };
    -
    -private:
    -
    -  int create_buf_from_queue (void);
    -  // Creates buf_ from the queue, deletes previous buf_.
    -
    -  int string_to_argv (void);
    -  // Converts buf_ into the ASYS_TCHAR *argv[] format.
    -
    -  int argv_to_string (ASYS_TCHAR **argv, ASYS_TCHAR *&buf);
    -  // Returns the string created from argv in buf and
    -  // returns the number of arguments.
    -
    -  int substitute_env_args_;
    -  // Replace args with environment variable values?
    -
    -  int state_;
    -  // Current state marker.
    -
    -  size_t argc_;
    -  // Number of arguments in the ARGV array.
    -
    -  ASYS_TCHAR **argv_;
    -  // The array of string arguments.
    -
    -  ASYS_TCHAR *buf_;
    -  // Buffer containing the  contents.
    -
    -  size_t length_;
    -  // Total length of the arguments in the queue, not counting
    -  // separating spaces
    -
    -  ACE_Unbounded_Queue queue_;
    -  // Queue which keeps user supplied arguments.  This is only
    -  // active in the "iterative" mode.
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/ARGV.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_ARGUMENT_VECTOR_H */
    diff --git a/ace/ARGV.i b/ace/ARGV.i
    deleted file mode 100644
    index b14d0963274..00000000000
    --- a/ace/ARGV.i
    +++ /dev/null
    @@ -1,68 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// Return the number of args
    -ACE_INLINE size_t
    -ACE_ARGV::argc (void) const
    -{
    -  ACE_TRACE ("ACE_ARGV::argc");
    -  return this->argc_;
    -}
    -
    -// Return the state of this ACE_ARGV
    -ACE_INLINE int
    -ACE_ARGV::state(void) const
    -{
    -  ACE_TRACE ("ACE_ARGV::state");
    -  return this->state_;
    -}
    -
    -// Return the arguments in a space-separated string
    -ACE_INLINE const ASYS_TCHAR *
    -ACE_ARGV::buf (void)
    -{
    -  ACE_TRACE ("ACE_ARGV::buf");
    -
    -  if (this->buf_ == 0 && this->state_ == ITERATIVE) 
    -    this->create_buf_from_queue ();
    -
    -  return (const ASYS_TCHAR *) this->buf_;
    -}
    -
    -// Return the arguments in an entry-per-argument array
    -
    -ACE_INLINE ASYS_TCHAR **
    -ACE_ARGV::argv (void)
    -{
    -  ACE_TRACE ("ACE_ARGV::argv");
    -
    -  // Try to create the argv_ if it isn't there
    -  if (this->argv_ == 0) 
    -    {
    -      if (this->state_ == ITERATIVE && this->buf_ == 0)
    -        this->create_buf_from_queue ();
    -
    -      // Convert buf_ to argv_
    -      if (this->string_to_argv () == -1)
    -        return (ASYS_TCHAR **) 0;
    -    }
    -
    -  return (ASYS_TCHAR **) this->argv_;
    -}
    -
    -// Subscript operator.  
    -
    -ACE_INLINE const ASYS_TCHAR *
    -ACE_ARGV::operator[] (size_t i)
    -{
    -  ACE_TRACE ("ACE_ARGV::operator[]");
    -
    -  // Don't go out of bounds.
    -  if (i >= this->argc_)
    -    return 0;
    -
    -  return (const ASYS_TCHAR *) this->argv ()[i];
    -}
    -
    -
    -
    diff --git a/ace/ATM_Acceptor.cpp b/ace/ATM_Acceptor.cpp
    deleted file mode 100644
    index 0990c5a9df1..00000000000
    --- a/ace/ATM_Acceptor.cpp
    +++ /dev/null
    @@ -1,32 +0,0 @@
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/ATM_Acceptor.h"
    -
    -ACE_RCSID(ace, ATM_Acceptor, "$Id$")
    -
    -#if defined (ACE_HAS_ATM)
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/ATM_Acceptor.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_ATM_Acceptor)
    -
    -void
    -ACE_ATM_Acceptor::dump (void) const
    -{
    -  ACE_TRACE ("ACE_ATM_Acceptor::dump");
    -}
    -
    -ACE_ATM_Acceptor::ACE_ATM_Acceptor (void)
    -{
    -  ACE_TRACE ("ACE_ATM_Acceptor::ACE_ATM_Acceptor");
    -}
    -
    -ACE_ATM_Acceptor::~ACE_ATM_Acceptor (void)
    -{
    -  ACE_TRACE ("ACE_ATM_Acceptor::~ACE_ATM_Acceptor");
    -}
    -
    -#endif /* ACE_HAS_ATM */
    diff --git a/ace/ATM_Acceptor.h b/ace/ATM_Acceptor.h
    deleted file mode 100644
    index 6b8158d7a01..00000000000
    --- a/ace/ATM_Acceptor.h
    +++ /dev/null
    @@ -1,100 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    ATM_Acceptor.h
    -//
    -// = AUTHOR
    -//    Joe Hoffert
    -//
    -// ============================================================================
    -
    -#ifndef ACE_ATM_ACCEPTOR_H
    -#define ACE_ATM_ACCEPTOR_H
    -
    -#include "ace/Time_Value.h"
    -#include "ace/ATM_Stream.h"
    -#include "ace/ATM_Params.h"
    -#include "ace/ATM_QoS.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#if defined (ACE_HAS_ATM)
    -
    -#if defined (ACE_HAS_FORE_ATM_WS2)
    -#include "SOCK_Acceptor.h"
    -typedef ACE_SOCK_Acceptor ATM_Acceptor;
    -#elif defined (ACE_HAS_FORE_ATM_XTI)
    -#include "TLI_Acceptor.h"
    -typedef ACE_TLI_Acceptor ATM_Acceptor;
    -#endif
    -
    -class ACE_Export ACE_ATM_Acceptor
    -{
    -  // = TITLE
    -  //     Defines the member functions for ACE_ATM_Acceptor abstraction.
    -  //
    -  // = DESCRIPTION
    -  //     This class wraps up the ACE_SOCK_Acceptor and ACE_TLI_Acceptor
    -  //     to make the mechanism for the ATM protocol transparent.
    -public:
    -  // = Initialization and termination methods.
    -  ACE_ATM_Acceptor (void);
    -  // Default constructor.
    -
    -  ~ACE_ATM_Acceptor ();
    -
    -  ACE_ATM_Acceptor (const ACE_Addr &remote_sap,
    -                    int backlog = ACE_DEFAULT_BACKLOG,
    -                    ACE_ATM_Params params = ACE_ATM_Params());
    -  // Initiate a passive mode connection.
    -
    -  ACE_HANDLE open (const ACE_Addr &remote_sap,
    -                   int backlog = ACE_DEFAULT_BACKLOG,
    -                   ACE_ATM_Params params = ACE_ATM_Params());
    -  // Initiate a passive mode socket.
    -
    -  int close (void);
    -  // Close down the acceptor and release resources.
    -
    -  // = Passive connection acceptance method.
    -
    -  int accept (ACE_ATM_Stream &new_sap,
    -              ACE_Addr *remote_addr = 0,
    -              ACE_Time_Value *timeout = 0,
    -              int restart = 1,
    -              int reset_new_handle = 0,
    -              ACE_ATM_Params params = ACE_ATM_Params(),
    -              ACE_ATM_QoS qos = ACE_ATM_QoS());
    -  // Accept a new data transfer connection.  A  of 0 means
    -  // block forever, a  of {0, 0} means poll.   == 1
    -  // means "restart if interrupted."
    -
    -  // = Meta-type info
    -  typedef ACE_ATM_Addr PEER_ADDR;
    -  typedef ACE_ATM_Stream PEER_STREAM;
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  ATM_Acceptor acceptor_;
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/ATM_Acceptor.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_HAS_ATM */
    -#endif /* ACE_ATM_ACCEPTOR_H */
    diff --git a/ace/ATM_Acceptor.i b/ace/ATM_Acceptor.i
    deleted file mode 100644
    index 64cd5c562e5..00000000000
    --- a/ace/ATM_Acceptor.i
    +++ /dev/null
    @@ -1,95 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ATM_Acceptor.i
    -
    -
    -ACE_INLINE
    -ACE_HANDLE
    -ACE_ATM_Acceptor::open (const ACE_Addr &remote_sap,
    -                        int backlog,
    -                        ACE_ATM_Params params)
    -{
    -  ACE_TRACE ("ACE_ATM_Acceptor::open");
    -#if defined (ACE_HAS_FORE_ATM_XTI)
    -  ACE_HANDLE handle = acceptor_.open (remote_sap,
    -                                      params.get_reuse_addr(),
    -                                      params.get_oflag(),
    -                                      params.get_info(),
    -                                      backlog,
    -                                      params.get_device());
    -  return (handle == ACE_INVALID_HANDLE ? -1 : 0);
    -#elif defined (ACE_HAS_FORE_ATM_WS2)
    -  return (acceptor_.open (remote_sap,
    -                          params.get_reuse_addr(),
    -                          params.get_protocol_family(),
    -                          backlog,
    -                          params.get_protocol()));
    -#else
    -  ACE_UNUSED_ARG (remote_sap);
    -  ACE_UNUSED_ARG (backlog);
    -  ACE_UNUSED_ARG (params);
    -#endif /* ACE_HAS_FORE_ATM_XTI/ACE_HAS_FORE_ATM_WS2 */
    -}
    -
    -ACE_INLINE
    -ACE_ATM_Acceptor::ACE_ATM_Acceptor (const ACE_Addr &remote_sap,
    -                                    int backlog,
    -                                    ACE_ATM_Params params)
    -{
    -  ACE_TRACE ("ACE_ATM_Acceptor::ACE_ATM_Acceptor");
    -  open (remote_sap,
    -        backlog,
    -        params);
    -}
    -
    -ACE_INLINE
    -int
    -ACE_ATM_Acceptor::close (void)
    -{
    -#if defined (ACE_HAS_FORE_ATM_XTI) || defined (ACE_HAS_FORE_ATM_WS2)
    -  return (acceptor_.close());
    -#else
    -  return 0;
    -#endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 */
    -}
    -
    -ACE_INLINE
    -int
    -ACE_ATM_Acceptor::accept (ACE_ATM_Stream &new_sap,
    -                          ACE_Addr *remote_addr,
    -                          ACE_Time_Value *timeout,
    -                          int restart,
    -                          int reset_new_handle,
    -                          ACE_ATM_Params params,
    -                          ACE_ATM_QoS qos)
    -{
    -  ACE_TRACE ("ACE_ATM_Acceptor::accept");
    -#if defined (ACE_HAS_FORE_ATM_XTI)
    -  ATM_QoS optbuf = qos.get_qos();
    -                                        
    -  return (acceptor_.accept(new_sap.get_stream(),
    -                           remote_addr,
    -                           timeout,
    -                           restart,
    -                           reset_new_handle,
    -                           params.get_rw_flag(),
    -                           params.get_user_data(),
    -                           &optbuf));
    -#elif defined (ACE_HAS_FORE_ATM_WS2)
    -  return (acceptor_.accept(new_sap.get_stream(),
    -                           remote_addr,
    -                           timeoutm
    -                           restart,
    -                           reset_new_handle));
    -#else
    -  ACE_UNUSED_ARG(new_sap);
    -  ACE_UNUSED_ARG(remote_addr);
    -  ACE_UNUSED_ARG(timeout);
    -  ACE_UNUSED_ARG(restart);
    -  ACE_UNUSED_ARG(reset_new_handle);
    -  ACE_UNUSED_ARG(params);
    -  ACE_UNUSED_ARG(qos);
    -  return (0);
    -#endif /* ACE_HAS_FORE_ATM_XTI */
    -}
    diff --git a/ace/ATM_Addr.cpp b/ace/ATM_Addr.cpp
    deleted file mode 100644
    index 372eb573d0a..00000000000
    --- a/ace/ATM_Addr.cpp
    +++ /dev/null
    @@ -1,565 +0,0 @@
    -// $Id$
    -
    -// Defines the Internet domain address family address format.
    -
    -#define ACE_BUILD_DLL
    -#include "ace/ATM_Addr.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/ATM_Addr.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, ATM_Addr, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_ATM_Addr)
    -
    -#if defined (ACE_HAS_FORE_ATM_XTI) || defined (ACE_HAS_FORE_ATM_WS2)
    -#define BHLI_MAGIC "FORE_ATM"
    -// This is line rate in cells/s for an OC-3 MM interface.
    -const long ACE_ATM_Addr::LINE_RATE = 353207;
    -const int ACE_ATM_Addr::OPT_FLAGS_CPID = 0x1;
    -const int ACE_ATM_Addr::OPT_FLAGS_PMP = 0x2;
    -const int ACE_ATM_Addr::DEFAULT_SELECTOR = 0x99;
    -#else
    -const long ACE_ATM_Addr::LINE_RATE = 0L;
    -const int ACE_ATM_Addr::OPT_FLAGS_CPID = 0;
    -const int ACE_ATM_Addr::OPT_FLAGS_PMP = 0;
    -const int ACE_ATM_Addr::DEFAULT_SELECTOR = 0x0;
    -#endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 */
    -
    -// Default constructor
    -
    -ACE_ATM_Addr::ACE_ATM_Addr (unsigned char selector)
    -#if defined (ACE_HAS_FORE_ATM_XTI) || defined (ACE_HAS_FORE_ATM_WS2)
    -  : ACE_Addr (AF_ATM,
    -#else
    -  : ACE_Addr (AF_UNSPEC,
    -#endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 */
    -              sizeof this->atm_addr_)
    -{
    -  // ACE_TRACE ("ACE_ATM_Addr::ACE_ATM_Addr");
    -  (void) ACE_OS::memset ((void *) &this->atm_addr_,
    -                         0,
    -                         sizeof this->atm_addr_);
    -  this->init (selector);
    -}
    -
    -// Copy constructor.
    -
    -ACE_ATM_Addr::ACE_ATM_Addr (const ACE_ATM_Addr &sap,
    -                            unsigned char selector)
    -#if defined (ACE_HAS_FORE_ATM_XTI) || defined (ACE_HAS_FORE_ATM_WS2)
    -  : ACE_Addr (AF_ATM,
    -#else
    -  : ACE_Addr (AF_UNSPEC,
    -#endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 */
    -              sizeof this->atm_addr_)
    -{
    -  ACE_TRACE ("ACE_ATM_Addr::ACE_ATM_Addr");
    -  this->set (sap, selector);
    -}
    -
    -ACE_ATM_Addr::ACE_ATM_Addr (const ATM_Addr *sap,
    -                            unsigned char selector)
    -#if defined (ACE_HAS_FORE_ATM_XTI) || defined (ACE_HAS_FORE_ATM_WS2)
    -  : ACE_Addr (AF_ATM,
    -#else
    -  : ACE_Addr (AF_UNSPEC,
    -#endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 */
    -              sizeof this->atm_addr_)
    -{
    -  ACE_TRACE ("ACE_ATM_Addr::ACE_ATM_Addr");
    -  this->set (sap, selector);
    -}
    -
    -ACE_ATM_Addr::ACE_ATM_Addr (const ASYS_TCHAR sap[],
    -                            unsigned char selector)
    -#if defined (ACE_HAS_FORE_ATM_XTI) || defined (ACE_HAS_FORE_ATM_WS2)
    -  : ACE_Addr (AF_ATM,
    -#else
    -  : ACE_Addr (AF_UNSPEC,
    -#endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 */
    -              sizeof this->atm_addr_)
    -{
    -  ACE_TRACE ("ACE_ATM_Addr::ACE_ATM_Addr");
    -  this->set (sap, selector);
    -}
    -
    -void
    -ACE_ATM_Addr::init (unsigned char selector)
    -{
    -#if defined (ACE_HAS_FORE_ATM_XTI)
    -  // Note: this approach may be FORE implementation-specific.  When we
    -  // bind with tag_addr ABSENT and tag_selector PRESENT, only the
    -  // selector (i.e. address[19]) is used by the TP.  The rest of the
    -  // local address is filled in by the TP and can be obtained via the
    -  // 'ret' parameter or with t_getname()/t_getprotaddr().
    -
    -  atm_addr_.addressType = (u_int16_t) AF_ATM;
    -
    -  atm_addr_.sap.t_atm_sap_addr.SVE_tag_addr = (int8_t) T_ATM_ABSENT;
    -  atm_addr_.sap.t_atm_sap_addr.SVE_tag_selector = (int8_t) T_ATM_PRESENT;
    -
    -  atm_addr_.sap.t_atm_sap_addr.address_format = (u_int8_t) T_ATM_ENDSYS_ADDR;
    -  atm_addr_.sap.t_atm_sap_addr.address_length = ATMNSAP_ADDR_LEN;
    -  atm_addr_.sap.t_atm_sap_addr.address[ATMNSAP_ADDR_LEN - 1] = selector;
    -
    -  atm_addr_.sap.t_atm_sap_layer2.SVE_tag = (int8_t) T_ATM_ABSENT;
    -  atm_addr_.sap.t_atm_sap_layer3.SVE_tag = (int8_t) T_ATM_ABSENT;
    -
    -  atm_addr_.sap.t_atm_sap_appl.SVE_tag = (int8_t) T_ATM_PRESENT;
    -  atm_addr_.sap.t_atm_sap_appl.ID_type = (u_int8_t) T_ATM_USER_APP_ID;
    -
    -  ACE_OS::memcpy (atm_addr_.sap.t_atm_sap_appl.ID.user_defined_ID,
    -                  BHLI_MAGIC,
    -                  sizeof atm_addr_.sap.t_atm_sap_appl.ID);
    -#elif defined (ACE_HAS_FORE_ATM_WS2)
    -  atm_addr_.satm_number.Addr[ ATM_ADDR_SIZE - 1 ] = ( char )selector;
    -  atm_addr_.satm_family = AF_ATM;
    -  atm_addr_.satm_number.AddressType = ATM_NSAP;
    -  atm_addr_.satm_number.NumofDigits = ATM_ADDR_SIZE;
    -  atm_addr_.satm_blli.Layer2Protocol = SAP_FIELD_ABSENT;
    -  atm_addr_.satm_blli.Layer3Protocol = SAP_FIELD_ABSENT;
    -  atm_addr_.satm_bhli.HighLayerInfoType = SAP_FIELD_ABSENT;
    -
    -  // N2K the correspondence (Ruibiao)
    -  //atm_addr_.sap.t_atm_sap_appl.SVE_tag = (int8_t) T_ATM_PRESENT;
    -  //atm_addr_.sap.t_atm_sap_appl.ID_type = (u_int8_t) T_ATM_USER_APP_ID;
    -  //ACE_OS::memcpy (atm_addr_.sap.t_atm_sap_appl.ID.user_defined_ID,
    -  //                BHLI_MAGIC,
    -  //                sizeof atm_addr_.sap.t_atm_sap_appl.ID);
    -#else
    -  ACE_UNUSED_ARG (selector);
    -#endif /* ACE_HAS_FORE_ATM_XTI && ACE_HAS_FORE_ATM_WS2 */
    -}
    -
    -int
    -ACE_ATM_Addr::set (const ACE_ATM_Addr &sap,
    -                   unsigned char selector)
    -{
    -  ACE_TRACE ("ACE_ATM_Addr::set");
    -
    -  this->init (selector);
    -
    -  this->ACE_Addr::base_set (sap.get_type (),
    -                            sap.get_size ());
    -
    -#if defined (ACE_HAS_FORE_ATM_XTI) || defined (ACE_HAS_FORE_ATM_WS2)
    -  ACE_ASSERT (sap.get_type () == AF_ATM);
    -#endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 */
    -
    -  (void) ACE_OS::memcpy ((void *) &this->atm_addr_,
    -                         (void *) &sap.atm_addr_,
    -                         sizeof this->atm_addr_);
    -  return 0;
    -}
    -
    -int
    -ACE_ATM_Addr::set (const ATM_Addr *sap,
    -                   unsigned char selector)
    -{
    -  ACE_TRACE ("ACE_ATM_Addr::set");
    -
    -  this->init (selector);
    -
    -#if defined (ACE_HAS_FORE_ATM_XTI) || defined (ACE_HAS_FORE_ATM_WS2)
    -  this->ACE_Addr::base_set (AF_ATM,
    -#else
    -  this->ACE_Addr::base_set (AF_UNSPEC,
    -#endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 */
    -                            sizeof (*sap));
    -
    -  (void) ACE_OS::memcpy ((void *) &this->atm_addr_,
    -                         (void *) sap,
    -                         sizeof this->atm_addr_);
    -  return 0;
    -}
    -
    -int
    -ACE_ATM_Addr::set (const ASYS_TCHAR address[],
    -                   unsigned char selector)
    -{
    -  ACE_TRACE ("ACE_ATM_Addr::set");
    -
    -  this->init (selector);
    -
    -#if defined (ACE_HAS_FORE_ATM_XTI)
    -  atm_addr_.sap.t_atm_sap_addr.SVE_tag_addr =
    -    (int8_t) T_ATM_PRESENT;
    -#endif /* ACE_HAS_FORE_ATM_XTI */
    -  return this->string_to_addr (address);
    -}
    -
    -// Transform the string into the current addressing format.
    -
    -int
    -ACE_ATM_Addr::string_to_addr (const ASYS_TCHAR sap[])
    -{
    -  ACE_TRACE ("ACE_ATM_Addr::string_to_addr");
    -
    -#if defined (ACE_HAS_FORE_ATM_XTI) || defined (ACE_HAS_FORE_ATM_WS2)
    -  this->ACE_Addr::base_set (AF_ATM,
    -#else
    -  this->ACE_Addr::base_set (AF_UNSPEC,
    -#endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 */
    -                            sizeof this->atm_addr_);
    -#if defined (ACE_HAS_FORE_ATM_XTI)
    -  struct hostent *entry;
    -  struct atmnsap_addr *nsap;
    -
    -  // Yow, someone gave us a NULL ATM address!
    -  if (sap == 0)
    -    {
    -      errno = EINVAL;
    -      return -1;
    -    }
    -  else if ((entry = gethostbyname_atmnsap((ASYS_TCHAR *)sap)) != 0)
    -    {
    -      ACE_OS::memcpy (atm_addr_.sap.t_atm_sap_addr.address, 
    -                      entry->h_addr_list[0],
    -                      ATMNSAP_ADDR_LEN - 1);
    -    }
    -  else if ((nsap = atmnsap_addr (sap)) != 0)
    -    {
    -      ACE_OS::memcpy (atm_addr_.sap.t_atm_sap_addr.address,
    -                      nsap->atmnsap,
    -                      ATMNSAP_ADDR_LEN);
    -    }
    -  else
    -#elif defined (ACE_HAS_FORE_ATM_WS2)
    -  // WinSock2 part (Ruibiao)
    -   DWORD dwValue;
    -   HANDLE hLookup;
    -   WSAQUERYSETW qsRestrictions;
    -   CSADDR_INFO  csaBuffer;
    -   WCHAR  tmpWStr[100];
    -
    -   MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, sap, -1, tmpWStr, 100);  
    -   
    -   csaBuffer.LocalAddr.iSockaddrLength = sizeof (struct sockaddr_atm);
    -   csaBuffer.LocalAddr.lpSockaddr = (struct sockaddr *)atm_addr_;
    -   csaBuffer.RemoteAddr.iSockaddrLength = sizeof (struct sockaddr_atm);
    -   csaBuffer.RemoteAddr.lpSockaddr = (struct sockaddr *) atm_addr;
    -
    -   qsRestrictions.dwSize                  = sizeof (WSAQUERYSETW);
    -   qsRestrictions.lpszServiceInstanceName = NULL;
    -   qsRestrictions.lpServiceClassId        = &FORE_NAME_CLASS;
    -   qsRestrictions.lpVersion               = NULL;
    -   qsRestrictions.lpszComment             = NULL;
    -   qsRestrictions.dwNameSpace             = FORE_NAME_SPACE;
    -   qsRestrictions.lpNSProviderId          = NULL;
    -   qsRestrictions.lpszContext             = L"";
    -   qsRestrictions.dwNumberOfProtocols     = 0;
    -   qsRestrictions.lpafpProtocols          = NULL;
    -   qsRestrictions.lpszQueryString         = tmpWStr;
    -   qsRestrictions.dwNumberOfCsAddrs       = 1;
    -   qsRestrictions.lpcsaBuffer             = &csaBuffer;
    -   qsRestrictions.lpBlob                  = NULL; //&blob;
    -
    -   if (WSALookupServiceBeginW(&qsRestrictions, LUP_RETURN_ALL, &hLookup) == SOCKET_ERROR) {
    -       ACE_OS::printf("Error: WSALookupServiceBeginW failed! %d\n",WSAGetLastError());
    -	   return -1;
    -   }                
    -
    -   dwValue = sizeof (WSAQUERYSETW);
    -
    -   if (WSALookupServiceNextW ( hLookup, 0, &dwValue, &qsRestrictions) == SOCKET_ERROR) {
    -	   ACE_OS::printf ("Error: WSALookupServiceNextW failed! %d\n", WSAGetLastError());
    -	   return -1;
    -   }
    -
    -   if (WSALookupServiceEnd (hLookup) == SOCKET_ERROR) {
    -	  ACE_OS::printf("Error : WSALookupServiceEnd failed! %d \n", WSAGetLastError());
    -#else
    -  ACE_UNUSED_ARG (sap);
    -#endif /* ACE_HAS_FORE_ATM_XTI && ACE_HAS_FORE_ATM_WS2 */
    -    {
    -      errno = EINVAL;
    -      return -1;
    -    }
    -
    -#if defined (ACE_HAS_FORE_ATM_XTI) || defined (ACE_HAS_FORE_ATM_WS2)
    -  return 0;
    -#endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 */
    -}
    -
    -// Transform the current address into string format.
    -
    -int
    -ACE_ATM_Addr::addr_to_string (ASYS_TCHAR addr[],
    -                              size_t addrlen) const
    -{
    -  ACE_TRACE ("ACE_ATM_Addr::addr_to_string");
    -
    -#if defined (ACE_HAS_FORE_ATM_XTI)
    -  ASYS_TCHAR buffer[MAXNAMELEN + 1];
    -  struct atmnsap_addr nsap;
    -  ACE_OS::memcpy (nsap.atmnsap,
    -                  atm_addr_.sap.t_atm_sap_addr.address,
    -                  ATMNSAP_ADDR_LEN);
    -  ACE_OS::sprintf (buffer,
    -                   ASYS_TEXT ("%s"),
    -                   ASYS_WIDE_STRING (atmnsap_ntoa (nsap)));
    -
    -  size_t total_len = ACE_OS::strlen (buffer)
    -    + sizeof ('\0'); // For trailing '\0'.
    -
    -  if (addrlen < total_len)
    -    return -1;
    -  else
    -    ACE_OS::strcpy(addr, buffer);
    -
    -  return 0;
    -#elif defined (ACE_HAS_FORE_ATM_WS2)
    -  //WinSock2 part
    -  ASYS_TCHAR buffer[MAXNAMELEN + 1];
    -  int i;
    -
    -  if ( addrlen < ATM_ADDR_SIZE + 1 ) 
    -	return -1;
    -
    -  for ( i = 0; i < ATM_ADDR_SIZE; i++ )
    -	ACE_OS::sprintf( buffer, ASYS_TEXT( "%02x." ), atm_addr_.satm_number.Addr[ i ]);
    -  buffer[ ATM_ADDR_SIZE ] = '\0';
    -  ACE_OS::strcpy( addr, buffer );
    -
    -  return 0;
    -#else
    -  ACE_UNUSED_ARG (addr);
    -  ACE_UNUSED_ARG (addrlen);
    -  return -1;
    -#endif /* ACE_HAS_FORE_ATM_XTI && ACE_HAS_FORE_ATM_WS2 */
    -}
    -
    -const ASYS_TCHAR *
    -ACE_ATM_Addr::addr_to_string (void) const
    -{
    -  ACE_TRACE ("ACE_ATM_Addr::addr_to_string");
    -
    -  static ASYS_TCHAR addr[MAXHOSTNAMELEN + 1];
    -  this->addr_to_string (addr,
    -                        MAXHOSTNAMELEN + 1);
    -  return addr;
    -}
    -
    -// Set a pointer to the address.
    -void
    -ACE_ATM_Addr::set_addr (void *addr, int len)
    -{
    -  ACE_TRACE ("ACE_ATM_Addr::set_addr");
    -
    -#if defined (ACE_HAS_FORE_ATM_XTI) || defined (ACE_HAS_FORE_ATM_WS2)
    -  this->ACE_Addr::base_set (AF_ATM,
    -#else
    -  this->ACE_Addr::base_set (AF_UNSPEC,
    -#endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_WS2 */
    -                            len);
    -  ACE_OS::memcpy ((void *) &this->atm_addr_,
    -                  (void *) addr, len);
    -}
    -
    -// Compare two addresses for inequality.
    -
    -int
    -ACE_ATM_Addr::operator != (const ACE_ATM_Addr &sap) const
    -{
    -  ACE_TRACE ("ACE_ATM_Addr::operator !=");
    -  return !((*this) == sap);
    -}
    -
    -// Compare two addresses for equality.
    -
    -int
    -ACE_ATM_Addr::operator == (const ACE_ATM_Addr &sap) const
    -{
    -  ACE_TRACE ("ACE_ATM_Addr::operator ==");
    -
    -  return ACE_OS::memcmp (&atm_addr_,
    -                         &sap.atm_addr_,
    -                         sizeof (ATM_Addr)) == 0;
    -}
    -
    -void
    -ACE_ATM_Addr::dump (void) const
    -{
    -  ACE_TRACE ("ACE_ATM_Addr::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -
    -  ASYS_TCHAR s[ACE_MAX_FULLY_QUALIFIED_NAME_LEN + 16];
    -  ACE_OS::sprintf (s,
    -                   ASYS_TEXT ("%s"),
    -                   ASYS_WIDE_STRING (this->addr_to_string ()));
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("%s"), s));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -// char *
    -// ACE_ATM_Addr::construct_options(ACE_HANDLE fd,
    -//                                 int qos_kb,
    -//                                 int flags,
    -//                                 long *optsize)
    -// {
    -// #if defined (ACE_HAS_FORE_ATM_XTI)
    -//   struct t_opthdr *popt;
    -//   char *buf;
    -//   int qos_cells;
    -//   struct t_info info;
    -
    -//   if (ACE_OS::t_getinfo (fd, &info) == -1)
    -//     {
    -//       ACE_OS::t_error ("t_getinfo");
    -//       return 0;
    -//     }
    - 
    -//   buf = (char *) ACE_OS::malloc (info.options);
    -
    -//   if (buf == 0)
    -//     ACE_ERROR_RETURN ((LM_ERROR,
    -//                        ASYS_TEXT ("Unable to allocate %ld bytes for options\n"),
    -//                        info.options),
    -//                       0);
    -
    -//   popt = (struct t_opthdr *) buf;
    -
    -//   if (flags & OPT_FLAGS_CPID)
    -//     {
    -//       // This constructs the T_ATM_ORIG_ADDR option, which is used to
    -//       // signal the UNI 3.1 Calling Party ID Information Element.
    -//       t_atm_addr *source_addr;
    -
    -//       popt->len	= sizeof (struct t_opthdr) + sizeof (t_atm_addr);
    -//       popt->level = T_ATM_SIGNALING;
    -//       popt->name = T_ATM_ORIG_ADDR;
    -//       popt->status = 0;
    -
    -//       source_addr = 
    -//         (t_atm_addr *)((char *) popt + sizeof (struct t_opthdr));
    -
    -//       source_addr->address_format = T_ATM_ENDSYS_ADDR;
    -//       source_addr->address_length = ATMNSAP_ADDR_LEN;
    -
    -//       ACE_OS::memcpy(source_addr->address,
    -//                      atm_addr_.sap.t_atm_sap_addr.address,
    -//                      20);
    -//       //if (get_local_address (fd, source_addr->address))
    -//       //  {
    -//       //    ACE_ERROR ((LM_ERROR,
    -//       //                ASYS_TEXT ("Can't get local address!\n")));
    -//       //    ACE_OS::free (buf);
    -//       //    return 0;
    -//       //  }
    -
    -//       popt = T_OPT_NEXTHDR (buf, info.options , popt);
    -//     }
    -
    -//   // This constructs all options necessary (bearer cap., QoS, and
    -//   // Traffic Descriptor) to signal for a CBR connection with the
    -//   // specified QoS in kbit/sec., and/or specify a PMP connection.
    -
    -//   // For FORE 200e cards, the adapter shapes traffic to CBR with rate
    -//   // equal to PCR CLP=0+1 (traffic.forward.PCR_all_traffic)
    -
    -//   qos_cells = (qos_kb * 1000) / (48*8);
    -
    -//   if ((qos_cells > 0 && qos_cells < LINE_RATE) 
    -//       || (ACE_BIT_ENABLED (flags, OPT_FLAGS_PMP)))
    -//     {
    -//       struct t_atm_bearer *bearer;
    -//       struct t_atm_traffic *traffic;
    -
    -//       // T_ATM_BEARER_CAP: Broadband bearer capability
    -//       popt->len	= sizeof (struct t_opthdr) + sizeof (struct t_atm_bearer);
    -//       popt->level = T_ATM_SIGNALING;
    -//       popt->name = T_ATM_BEARER_CAP;
    -//       popt->status = 0;
    -
    -//       bearer = (struct t_atm_bearer *)((char *) popt + sizeof (struct t_opthdr));
    -//       bearer->bearer_class = T_ATM_CLASS_X;
    -
    -//       if (qos_cells)
    -//         {
    -//           bearer->traffic_type = T_ATM_CBR;
    -//           bearer->timing_requirements = T_ATM_END_TO_END;
    -//         }
    -//       else
    -//         {
    -//           bearer->traffic_type	 = 0; // UBR
    -//           bearer->timing_requirements = 0;
    -//         }
    -//       bearer->clipping_susceptibility = T_ATM_NULL;
    -
    -//       if (ACE_BIT_ENABLED (flags, OPT_FLAGS_PMP))
    -//         bearer->connection_configuration = T_ATM_1_TO_MANY;
    -//       else
    -//         bearer->connection_configuration = T_ATM_1_TO_1;
    -
    -//       popt = T_OPT_NEXTHDR (buf, info.options, popt);
    -
    -//       // T_ATM_TRAFFIC: traffic descriptor
    -//       popt->len	= sizeof (struct t_opthdr) + sizeof (struct t_atm_traffic);
    -//       popt->level = T_ATM_SIGNALING;
    -//       popt->name = T_ATM_TRAFFIC;
    -//       popt->status = 0;
    -
    -//       traffic = (struct t_atm_traffic *)((char *) popt + sizeof (struct t_opthdr));
    -
    -//       traffic->forward.PCR_high_priority = T_ATM_ABSENT;
    -//       traffic->forward.PCR_all_traffic = qos_cells ? qos_cells : LINE_RATE;
    -//       traffic->forward.SCR_high_priority = T_ATM_ABSENT;
    -//       traffic->forward.SCR_all_traffic = T_ATM_ABSENT;
    -//       traffic->forward.MBS_high_priority = T_ATM_ABSENT;
    -//       traffic->forward.MBS_all_traffic = T_ATM_ABSENT;
    -//       traffic->forward.tagging = T_NO;
    -
    -//       traffic->backward.PCR_high_priority = T_ATM_ABSENT;
    -//       traffic->backward.PCR_all_traffic	= 
    -//         (ACE_BIT_ENABLED (flags, OPT_FLAGS_PMP)) 
    -//         ? 0 : qos_cells ? qos_cells : LINE_RATE;
    -//       traffic->backward.SCR_high_priority = T_ATM_ABSENT;
    -//       traffic->backward.SCR_all_traffic	= T_ATM_ABSENT;
    -//       traffic->backward.MBS_high_priority = T_ATM_ABSENT;
    -//       traffic->backward.MBS_all_traffic	= T_ATM_ABSENT;
    -//       traffic->backward.tagging = T_NO;
    -
    -//       traffic->best_effort = qos_cells ? T_NO : T_YES;
    -
    -//       popt = T_OPT_NEXTHDR (buf,
    -//                             info.options,
    -//                             popt);
    -//     }
    -
    -//   if (qos_cells > 0 && qos_cells < LINE_RATE)
    -//     {
    -//       struct t_atm_qos *qos;
    -
    -//       // T_ATM_QOS: Quality of Service
    -//       popt->len	= sizeof (struct t_opthdr) + sizeof (struct t_atm_qos);
    -//       popt->level = T_ATM_SIGNALING;
    -//       popt->name = T_ATM_QOS;
    -//       popt->status = 0;
    -
    -//       qos = (struct t_atm_qos *)((char *) popt + sizeof (struct t_opthdr));
    -//       qos->coding_standard = T_ATM_ITU_CODING;
    -//       qos->forward.qos_class = T_ATM_QOS_CLASS_1;
    -//       qos->backward.qos_class = T_ATM_QOS_CLASS_1;
    -
    -//       popt = T_OPT_NEXTHDR (buf, info.options, popt);
    -//     }
    -
    -//   // return actual size of options and option buffer to user
    -//   *optsize = (char *) popt - buf;
    -
    -//   return buf;
    -// #elif defined (ACE_HAS_FORE_ATM_WS2)
    -//   // WinSock Part 
    -//   // Unlike XTI, WinSock does QoS with a QoS class passed into 
    -//   // connect call, so it may be better to do this in XXX_Connector 
    -// #else
    -//   ACE_UNUSED_ARG (fd);
    -//   ACE_UNUSED_ARG (qos_kb);
    -//   ACE_UNUSED_ARG (flags);
    -//   ACE_UNUSED_ARG (optsize);
    -//   return 0;
    -// #endif /* ACE_HAS_FORE_ATM_XTI && ACE_HAS_FORE_ATM_WS2 */
    -// }
    diff --git a/ace/ATM_Addr.h b/ace/ATM_Addr.h
    deleted file mode 100644
    index 360ef6eaa07..00000000000
    --- a/ace/ATM_Addr.h
    +++ /dev/null
    @@ -1,158 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    ATM_Addr.h
    -//
    -// = AUTHOR
    -//    Joe Hoffert 
    -//
    -// ============================================================================
    -
    -#ifndef ACE_ATM_ADDR_H
    -#define ACE_ATM_ADDR_H
    -
    -#include "ace/ACE.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Addr.h"
    -
    -#if defined (ACE_HAS_FORE_ATM_XTI)
    -typedef ATMSAPAddress ATM_Addr;
    -#elif defined (ACE_HAS_FORE_ATM_WS2)
    -#include 
    -#include 
    -typedef struct sockaddr_atm ATM_Addr;
    -#else
    -typedef int ATM_Addr;
    -#endif /* ACE_HAS_FORE_ATM_XTI/ACE_HAS_FORE_ATM_WS2 */
    -
    -class ACE_Export ACE_ATM_Addr : public ACE_Addr
    -{
    -  // = TITLE
    -  //    Defines the ATM domain address family address format.
    -public:
    -  // Constants used for ATM options
    -  static const long LINE_RATE;
    -  static const int OPT_FLAGS_CPID;
    -  static const int OPT_FLAGS_PMP;
    -  static const int DEFAULT_SELECTOR;
    -
    -  // = Initialization methods.
    -  ACE_ATM_Addr (unsigned char selector = DEFAULT_SELECTOR);
    -  // Default constructor.
    -
    -  ACE_ATM_Addr (const ACE_ATM_Addr &,
    -                unsigned char selector = DEFAULT_SELECTOR);
    -  // Copy constructor.
    -
    -  ACE_ATM_Addr (const ATM_Addr *,
    -                unsigned char selector = DEFAULT_SELECTOR);
    -  // Creates an  from an ATMSAPAddress structure. This
    -  // is vendor specific (FORE systems). May need to change when other
    -  // vendors are supported.
    -
    -  ACE_ATM_Addr (const ASYS_TCHAR sap[],
    -                unsigned char selector = DEFAULT_SELECTOR);
    -  // Initializes an  from the  which can be
    -  // "atm-address" (e.g.,
    -  // "47.0005.80.ffe100.0000.f20f.2200.0020480694f9.00") or "hostname"
    -  // (e.g., "frisbee.cs.wustl.edu").
    -
    -  ~ACE_ATM_Addr (void);
    -  // Default dtor.
    -
    -  // = Initialization methods (useful after object construction).
    -  void init (unsigned char selector = DEFAULT_SELECTOR);
    -  // Default initialization for non-address values (e.g.,
    -  // t_atm_sap_addr.SVE_tag_addr, t_atm_sap_addr.SVE_tag_selector)
    -
    -  int set (const ACE_ATM_Addr &,
    -           unsigned char selector = DEFAULT_SELECTOR);
    -  // Initializes from another .
    -
    -  int set (const ATM_Addr *,
    -           unsigned char selector = DEFAULT_SELECTOR);
    -  // Initializes an  from an ATMSAPAddress
    -  // structure. This is vendor specific (FORE systems). May need to
    -  // change when other vendors are supported.
    -
    -  int set (const ASYS_TCHAR sap[],
    -           unsigned char selector = DEFAULT_SELECTOR);
    -  // Initializes an  from the  which can be
    -  // "atm-address" (e.g.,
    -  // "47.0005.80.ffe100.0000.f20f.2200.0020480694f9.00") or "hostname"
    -  // (e.g., "frisbee.cs.wustl.edu").
    -
    -  virtual int string_to_addr (const ASYS_TCHAR sap[]);
    -  // Initializes an  from the  which can be
    -  // "atm-address" (e.g.,
    -  // "47.0005.80.ffe100.0000.f20f.2200.0020480694f9.00") or "hostname"
    -  // (e.g., "frisbee.cs.wustl.edu").
    -
    -  virtual int addr_to_string (ASYS_TCHAR addr[], 
    -                              size_t addrlen) const;
    -  // Return the character representation of the ATM address (e.g.,
    -  // "47.0005.80.ffe100.0000.f20f.2200.0020480694f9.00") storing it in
    -  // the  (which is assumed to be  bytes long). This
    -  // version is reentrant.  Returns -1 if the  of the 
    -  // is too small, else 0.
    -
    -  const ASYS_TCHAR *addr_to_string (void) const;
    -  // Return the character representation of the ATM address (e.g.,
    -  // "47.0005.80.ffe100.0000.f20f.2200.0020480694f9.00"). Returns -1
    -  // if the  of the  is too small, else 0.(This version
    -  // is non-reentrant since it returns a pointer to a static data
    -  // area.)
    -
    -  virtual void *get_addr (void) const;
    -  // Return a pointer to the underlying network address.
    -
    -  virtual void set_addr (void *, int);
    -  // Set a pointer to the address.
    -
    -  unsigned char get_selector (void) const;
    -  // Return the selector for network address.
    -
    -  void set_selector (unsigned char);
    -  // Set the selector for the network address.
    -
    -  int operator == (const ACE_ATM_Addr &SAP) const;
    -  // Compare two addresses for equality.  The addresses are considered
    -  // equal if they contain the same ATM address.  Q: Is there any
    -  // other check for equality needed for ATM?
    -
    -  int operator != (const ACE_ATM_Addr &SAP) const;
    -  // Compare two addresses for inequality.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -//   char *construct_options (ACE_HANDLE fd,
    -//                            int qos_kb,
    -//                            int flags,
    -//                            long *optsize);
    -//   // Construct options for ATM connections
    -
    -protected:
    -
    -private:
    -  ATM_Addr atm_addr_;
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/ATM_Addr.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_ATM_ADDR_H */
    diff --git a/ace/ATM_Addr.i b/ace/ATM_Addr.i
    deleted file mode 100644
    index bb0a215ddc6..00000000000
    --- a/ace/ATM_Addr.i
    +++ /dev/null
    @@ -1,45 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ATM_Addr.i
    -
    -// Default dtor.
    -ACE_INLINE
    -ACE_ATM_Addr::~ACE_ATM_Addr (void)
    -{
    -}
    -
    -// Return the address.
    -
    -ACE_INLINE void *
    -ACE_ATM_Addr::get_addr (void) const
    -{
    -  ACE_TRACE ("ACE_ATM_Addr::get_addr");
    -  return (void *) &this->atm_addr_;
    -}
    -
    -ACE_INLINE unsigned char
    -ACE_ATM_Addr::get_selector (void) const
    -{
    -  ACE_TRACE ("ACE_ATM_Addr::get_selector");
    -#if defined (ACE_HAS_FORE_ATM_XTI)
    -  return atm_addr_.sap.t_atm_sap_addr.address[ATMNSAP_ADDR_LEN - 1];
    -#elif defined (ACE_HAS_FORE_ATM_WS2)
    -  return atm_addr_.satm_number.Addr[ ATM_ADDR_SIZE - 1 ];
    -#else
    -  return 0;
    -#endif /* ACE_HAS_FORE_ATM_XTI && ACE_HAS_FORE_ATM_WS2 */
    -}
    -
    -ACE_INLINE void
    -ACE_ATM_Addr::set_selector (unsigned char selector)
    -{
    -  ACE_TRACE ("ACE_ATM_Addr::set_selector");
    -#if defined (ACE_HAS_FORE_ATM_XTI)
    -  atm_addr_.sap.t_atm_sap_addr.address[ATMNSAP_ADDR_LEN - 1] = selector;
    -#elif defined (ACE_FORE_ATM_WS2)
    -  atm_addr_.satm_number.Addr[ ATM_ADDR_SIZE - 1 ] = selector;
    -#else
    -  ACE_UNUSED_ARG (selector);
    -#endif /* ACE_HAS_FORE_ATM_XTI && ACE_HAS_FORE_ATM_WS2 */
    -}
    diff --git a/ace/ATM_Connector.cpp b/ace/ATM_Connector.cpp
    deleted file mode 100644
    index 2d4f03be550..00000000000
    --- a/ace/ATM_Connector.cpp
    +++ /dev/null
    @@ -1,29 +0,0 @@
    -// ATM_Connector.cpp
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Handle_Set.h"
    -#include "ace/ATM_Connector.h"
    -
    -ACE_RCSID(ace, ATM_Connector, "$Id$")
    -
    -#if defined (ACE_HAS_ATM)
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/ATM_Connector.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_ATM_Connector)
    -
    -void
    -ACE_ATM_Connector::dump (void) const
    -{
    -  ACE_TRACE ("ACE_ATM_Connector::dump");
    -}
    -
    -ACE_ATM_Connector::ACE_ATM_Connector (void)
    -{
    -  ACE_TRACE ("ACE_ATM_Connector::ACE_ATM_Connector");
    -}
    -
    -#endif /* ACE_HAS_ATM */
    diff --git a/ace/ATM_Connector.h b/ace/ATM_Connector.h
    deleted file mode 100644
    index b67b1bde63f..00000000000
    --- a/ace/ATM_Connector.h
    +++ /dev/null
    @@ -1,144 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    ATM_Connector.h
    -//
    -// = AUTHOR
    -//    Joe Hoffert
    -//
    -// ============================================================================
    -
    -#ifndef ACE_ATM_CONNECTOR_H
    -#define ACE_ATM_CONNECTOR_H
    -
    -#include "ace/ATM_Stream.h"
    -#include "ace/ATM_Params.h"
    -#include "ace/ATM_QoS.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#if defined (ACE_HAS_ATM)
    -
    -#if defined (ACE_WIN32)
    -#include "SOCK_Connector.h"
    -typedef ACE_SOCK_Connector ATM_Connector;
    -#else
    -#include "XTI_ATM_Mcast.h"
    -typedef ACE_XTI_ATM_Mcast ATM_Connector;
    -#endif
    -
    -class ACE_Export ACE_ATM_Connector 
    -{
    -  // = TITLE
    -  //     Defines an active connection factory for the ACE_ATM C++
    -  //     wrappers.
    -public:
    -  // = Initialization methods.
    -  ACE_ATM_Connector (void);
    -  // Default constructor.
    -
    -  ACE_ATM_Connector (ACE_ATM_Stream &new_stream,
    -                     const ACE_Addr &remote_sap,
    -                     ACE_ATM_Params params = ACE_ATM_Params(),
    -                     ACE_ATM_QoS options = ACE_ATM_QoS(),
    -                     ACE_Time_Value *timeout = 0,
    -                     const ACE_Addr &local_sap = ACE_Addr::sap_any,
    -                     int reuse_addr = 0,
    -#if defined (ACE_WIN32)
    -                     int flags = 0,
    -#else
    -                     int flags = O_RDWR,
    -#endif /* ACE_WIN32 */
    -                     int perms = 0);
    -  // Actively connect and produce a  if things go well.
    -  // The  is the address that we are trying to connect
    -  // with.  The  are the parameters needed for either socket
    -  // or XTI/ATM connections.  The  is the amount of time to
    -  // wait to connect. If it's 0 then we block indefinitely.  If
    -  // *timeout == {0, 0} then the connection is done using non-blocking
    -  // mode.  In this case, if the connection can't be made immediately
    -  // the value of -1 is returned with .  If
    -  // *timeout > {0, 0} then this is the amount of time to wait before
    -  // timing out.  If the time expires before the connection is made
    -  // .  The  is the value of local address
    -  // to bind to.  If it's the default value of  then
    -  // the user is letting the OS do the binding.  If  == 1
    -  // then the  is reused, even if it hasn't been cleanedup yet.
    -
    -  connect (ACE_ATM_Stream &new_stream,
    -           const ACE_Addr &remote_sap,
    -           ACE_ATM_Params params = ACE_ATM_Params(),
    -           ACE_ATM_QoS options = ACE_ATM_QoS(),
    -           ACE_Time_Value *timeout = 0,
    -           const ACE_Addr &local_sap = ACE_Addr::sap_any,
    -           int reuse_addr = 0,
    -#if defined (ACE_WIN32)
    -           int flags = 0,
    -#else
    -           int flags = O_RDWR,
    -#endif /* ACE_WIN32 */
    -           int perms = 0);
    -  // Actively connect and produce a  if things go well.
    -  // The  is the address that we are trying to connect
    -  // with.  The  are the parameters needed for either socket
    -  // or XTI/ATM connections.  The  is the amount of time to
    -  // wait to connect. If it's 0 then we block indefinitely.  If
    -  // *timeout == {0, 0} then the connection is done using non-blocking
    -  // mode.  In this case, if the connection can't be made immediately
    -  // the value of -1 is returned with .  If
    -  // *timeout > {0, 0} then this is the amount of time to wait before
    -  // timing out.  If the time expires before the connection is made
    -  // .  The  is the value of local address
    -  // to bind to.  If it's the default value of  then
    -  // the user is letting the OS do the binding.  If  == 1
    -  // then the  is reused, even if it hasn't been cleanedup yet.
    -
    -  int complete (ACE_ATM_Stream &new_stream,
    -                ACE_Addr *remote_sap,
    -                ACE_Time_Value *tv);
    -  // Try to complete a non-blocking connection.
    -  // If connection completion is successful then  contains
    -  // the connected ACE_SOCK_Stream.  If  is non-NULL then it
    -  // will contain the address of the connected peer.
    -
    -  int add_leaf (ACE_ATM_Stream ¤t_stream,
    -                const ACE_Addr &remote_sap,
    -                ACE_INT32 leaf_id,
    -                ACE_Time_Value *timeout = 0);
    -  // Actively add a leaf to the currently connected stream (i.e.,
    -  // multicast). The  is the address of the leaf that we
    -  // are trying to add. The  is the amount of time to wait to
    -  // connect. If it's 0 then we block indefinitely.  If *timeout ==
    -  // {0, 0} then the connection is done using non-blocking mode.  In
    -  // this case, if the connection can't be made immediately the value
    -  // of -1 is returned with .  If *timeout >
    -  // {0, 0} then this is the amount of time to wait before timing out.
    -  // If the time expires before the connection is made .
    -
    -  int reset_new_handle (ACE_HANDLE handle);
    -  // Resets any event associations on this handle
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  ATM_Connector connector_;
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/ATM_Connector.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_HAS_ATM */
    -#endif /* ACE_ATM_CONNECTOR_H */
    diff --git a/ace/ATM_Connector.i b/ace/ATM_Connector.i
    deleted file mode 100644
    index 54718b9b822..00000000000
    --- a/ace/ATM_Connector.i
    +++ /dev/null
    @@ -1,144 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ATM_Connector.i
    -
    -ACE_INLINE
    -ACE_ATM_Connector::ACE_ATM_Connector (ACE_ATM_Stream &new_stream, 
    -				      const ACE_Addr &remote_sap, 
    -                                      ACE_ATM_Params params,
    -                                      ACE_ATM_QoS options,
    -				      ACE_Time_Value *timeout,
    -				      const ACE_Addr &local_sap, 
    -				      int reuse_addr, 
    -				      int flags,
    -				      int perms)
    -{
    -  ACE_TRACE ("ACE_ATM_Connector::ACE_ATM_Connector");
    -  if (this->connect (new_stream,
    -                     remote_sap,
    -                     params,
    -                     options,
    -                     timeout,
    -                     local_sap,
    -                     reuse_addr, 
    -		     flags,
    -                     perms) == ACE_INVALID_HANDLE
    -      && timeout != 0 && !(errno == EWOULDBLOCK || errno == ETIME))
    -    ACE_ERROR ((LM_ERROR,  ASYS_TEXT ("%p\n"),  ASYS_TEXT ("ACE_ATM_Stream::ACE_ATM_Stream")));
    -}
    -
    -// Connect the  to the , waiting up to
    -//  amount of time if necessary.
    -
    -ACE_INLINE
    -int
    -ACE_ATM_Connector::connect (ACE_ATM_Stream &new_stream, 
    -			    const ACE_Addr &remote_sap, 
    -                            ACE_ATM_Params params,
    -                            ACE_ATM_QoS options,
    -			    ACE_Time_Value *timeout,
    -			    const ACE_Addr &local_sap, 
    -			    int reuse_addr,
    -			    int flags,
    -			    int perms)
    -{
    -  ACE_TRACE ("ACE_ATM_Connector::connect");
    -#if defined (ACE_HAS_FORE_ATM_XTI)
    -  return connector_.connect(new_stream.get_stream(),
    -                            remote_sap,
    -                            timeout,
    -                            local_sap,
    -                            reuse_addr,
    -                            flags,
    -                            perms,
    -                            params.get_device(),
    -                            params.get_info(),
    -                            params.get_rw_flag(),
    -                            params.get_user_data(),
    -                            &options.get_qos());
    -#elif defined (ACE_HAS_FORE_ATM_WS2)
    -  return connector_.connect(new_stream,
    -                            remote_sap,
    -                            options.get_option_params(),
    -                            timeout,
    -                            local_sap,
    -                            0 ??,
    -                            0 ??,
    -                            flags,
    -                            reuse_addr,
    -                            perms,
    -                            params.get_protocol_family(),
    -                            params.get_protocol());
    -#else
    -  ACE_UNUSED_ARG (new_stream);
    -  ACE_UNUSED_ARG (remote_sap);
    -  ACE_UNUSED_ARG (params);
    -  ACE_UNUSED_ARG (options);
    -  ACE_UNUSED_ARG (timeout);
    -  ACE_UNUSED_ARG (local_sap);
    -  ACE_UNUSED_ARG (reuse_addr);
    -  ACE_UNUSED_ARG (flags);
    -  ACE_UNUSED_ARG (perms);
    -  return 0;
    -#endif /* ACE_HAS_FORE_ATM_XTI/ACE_HAS_FORE_ATM_WS2 */
    -}
    -
    -// Try to complete a non-blocking connection.
    -
    -ACE_INLINE
    -int
    -ACE_ATM_Connector::complete (ACE_ATM_Stream &new_stream, 
    -			     ACE_Addr *remote_sap,
    -			     ACE_Time_Value *tv)
    -{
    -  ACE_TRACE ("ACE_ATM_Connector::complete");
    -#if defined (ACE_HAS_ATM)
    -  return connector_.complete(new_stream.get_stream(),
    -                             remote_sap,
    -                             tv);
    -#else
    -  ACE_UNUSED_ARG(new_stream);
    -  ACE_UNUSED_ARG(remote_sap);
    -  ACE_UNUSED_ARG(tv);
    -  return 0;
    -#endif
    -}
    -
    -ACE_INLINE
    -int
    -ACE_ATM_Connector::add_leaf (ACE_ATM_Stream ¤t_stream,
    -                             const ACE_Addr &remote_sap,
    -                             ACE_INT32 leaf_id,
    -                             ACE_Time_Value *timeout)
    -{
    -  ACE_TRACE ("ACE_ATM_Connector::add_leaf");
    -#if defined (ACE_HAS_FORE_ATM_XTI)
    -  return connector_.add_leaf(current_stream.get_stream(),
    -                             remote_sap,
    -                             leaf_id,
    -                             timeout);
    -#elif defined (ACE_HAS_FORE_ATM_WS2)
    -#else
    -  ACE_UNUSED_ARG(new_stream);
    -  ACE_UNUSED_ARG(remote_sap);
    -  ACE_UNUSED_ARG(tv);
    -  return 0;
    -#endif
    -}
    -
    -ACE_INLINE
    -int
    -ACE_ATM_Connector::reset_new_handle (ACE_HANDLE handle)
    -{
    -#if defined (ACE_HAS_WINSOCK2) && (ACE_HAS_WINSOCK2 != 0)
    -  // Reset the event association 
    -  return ::WSAEventSelect ((SOCKET) handle,
    -                           NULL,
    -                           0);    
    -#else /* !defined ACE_HAS_WINSOCK2 */
    -  ACE_UNUSED_ARG (handle);
    -  return 0;
    -#endif /* ACE_WIN32 */
    -}
    -
    diff --git a/ace/ATM_Params.cpp b/ace/ATM_Params.cpp
    deleted file mode 100644
    index 54a53ef03a1..00000000000
    --- a/ace/ATM_Params.cpp
    +++ /dev/null
    @@ -1,22 +0,0 @@
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/ATM_Params.h"
    -
    -ACE_RCSID(ace, ATM_Params, "$Id$")
    -
    -#if defined (ACE_HAS_ATM)
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/ATM_Params.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_ATM_Params)
    -
    -void
    -ACE_ATM_Params::dump (void) const
    -{
    -  ACE_TRACE ("ACE_ATM_Params::dump");
    -}
    -
    -#endif /* ACE_HAS_ATM */
    diff --git a/ace/ATM_Params.h b/ace/ATM_Params.h
    deleted file mode 100644
    index 6f563db94ae..00000000000
    --- a/ace/ATM_Params.h
    +++ /dev/null
    @@ -1,136 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    ATM_Params.h
    -//
    -// = AUTHOR
    -//    Joe Hoffert 
    -//
    -// ============================================================================
    -
    -#ifndef ACE_ATM_PARAMS_H
    -#define ACE_ATM_PARAMS_H
    -
    -#include "ace/ACE.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#if defined (ACE_HAS_ATM)
    -
    -#if defined (ACE_HAS_FORE_ATM_XTI)
    -#include "ace/TLI.h"
    -typedef struct t_info Param_Info;
    -typedef struct netbuf Param_Udata;
    -#else
    -typedef int Param_Info;
    -typedef int Param_Udata;
    -#endif
    -
    -class ACE_Export ACE_ATM_Params
    -{
    -  // = TITLE
    -  //   Wrapper class that simplifies the information passed to the ATM
    -  //   enabled  class.
    -public:
    -  ACE_ATM_Params (int rw_flag = 1,
    -                  const char device[] = ACE_XTI_ATM_DEVICE,
    -                  Param_Info *info = 0,
    -                  Param_Udata *udata = 0,
    -                  int oflag = O_RDWR,
    -                  int protocol_family = PF_INET,
    -                  int protocol = 0,
    -                  int type = 0,
    -                  int reuse_addr = 0);
    -  // Initialize the data members.  This class combines options from
    -  //  ACE_SOCK_Connector ( and ) and
    -  //  ACE_TLI_Connector (, , , , and )
    -  //  so that either mechanism can be used transparently for ATM.
    -
    -  ~ACE_ATM_Params ();
    -
    -  int get_protocol_family (void) const;
    -  void set_protocol_family (int);
    -  // Get/set protocol family.
    -
    -  int get_protocol (void) const;
    -  void set_protocol (int);
    -  // Get/set protocol.
    -
    -  int get_type (void) const;
    -  void set_type (int);
    -  // Get/set type.
    -
    -  int get_reuse_addr (void) const;
    -  void set_reuse_addr (int);
    -  // Get/set reuse_addr flag.
    -
    -  const char* get_device (void) const;
    -  // Get device.
    -
    -  Param_Info* get_info (void) const;
    -  void set_info (Param_Info *);
    -  // Get/set info.
    -
    -  int get_rw_flag (void) const;
    -  void set_rw_flag (int);
    -  // Get/set r/w flag.
    -
    -  Param_Udata* get_user_data (void) const;
    -  void set_user_data (Param_Udata*);
    -  // Get/set user data.
    -
    -  int get_oflag (void) const;
    -  void set_oflag (int);
    -  // /set open flag.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  int protocol_family_;
    -  // Protocol family for sockets connections.
    -
    -  int protocol_;
    -  // Protocol for sockets connections.
    -
    -  int type_;
    -  // Type for opening sockets.
    -
    -  int reuse_addr_;
    -  // Flag for reusing address for opening sockets.
    -
    -
    -  const char *device_;
    -  // Device name for XTI/ATM connections.
    -
    -  Param_Info *info_;
    -  // Info for XTI/ATM connections.
    -
    -  int rw_flag_;
    -  // R/W flag for XTI/ATM connections.
    -
    -  Param_Udata *udata_;
    -  // User data for XTI/ATM connections.
    -
    -  int oflag_;
    -  // Open flag for XTI/ATM connections.
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/ATM_Params.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_HAS_ATM */
    -
    -#endif /* ACE_ATM_PARAMS_H */
    diff --git a/ace/ATM_Params.i b/ace/ATM_Params.i
    deleted file mode 100644
    index 2c6ecea2f8a..00000000000
    --- a/ace/ATM_Params.i
    +++ /dev/null
    @@ -1,170 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ATM_Params.i
    -
    -ACE_INLINE
    -ACE_ATM_Params::ACE_ATM_Params (int rw_flag,
    -                                const char device[],
    -                                Param_Info *info,
    -                                Param_Udata *udata,
    -                                int oflag,
    -                                int protocol_family,
    -                                int protocol,
    -                                int type,
    -                                int reuse_addr)
    -  : protocol_family_(protocol_family),
    -    protocol_(protocol),
    -    type_(type),
    -    reuse_addr_(reuse_addr),
    -    device_(device),
    -    info_(info),
    -    rw_flag_(rw_flag),
    -    udata_(udata),
    -    oflag_(oflag)
    -{
    -  ACE_TRACE ("ACE_ATM_Params::ACE_ATM_Params");
    -}
    -
    -// Default dtor.
    -ACE_INLINE
    -ACE_ATM_Params::~ACE_ATM_Params (void)
    -{
    -  ACE_TRACE ("ACE_ATM_Params::~ACE_ATM_Params");
    -}
    -
    -ACE_INLINE
    -int
    -ACE_ATM_Params::get_protocol_family (void) const
    -{
    -  ACE_TRACE ("ACE_ATM_Params::get_protocol_family");
    -  return protocol_family_;
    -}
    -
    -ACE_INLINE
    -void
    -ACE_ATM_Params::set_protocol_family (int family)
    -{
    -  ACE_TRACE ("ACE_ATM_Params::set_protocol_family");
    -  protocol_family_ = family;
    -}
    -
    -ACE_INLINE
    -int
    -ACE_ATM_Params::get_protocol (void) const
    -{
    -  ACE_TRACE ("ACE_ATM_Params::get_protocol");
    -  return protocol_;
    -}
    -
    -ACE_INLINE
    -void
    -ACE_ATM_Params::set_protocol (int protocol)
    -{
    -  ACE_TRACE ("ACE_ATM_Params::set_protocol");
    -  protocol_ = protocol;
    -}
    -
    -ACE_INLINE
    -int
    -ACE_ATM_Params::get_type (void) const
    -{
    -  ACE_TRACE ("ACE_ATM_Params::get_type");
    -  return type_;
    -}
    -
    -ACE_INLINE
    -void
    -ACE_ATM_Params::set_type (int type)
    -{
    -  ACE_TRACE ("ACE_ATM_Params::set_type");
    -  type_ = type;
    -}
    -
    -ACE_INLINE
    -int
    -ACE_ATM_Params::get_reuse_addr (void) const
    -{
    -  ACE_TRACE ("ACE_ATM_Params::get_reuse_addr");
    -  return reuse_addr_;
    -}
    -
    -ACE_INLINE
    -void
    -ACE_ATM_Params::set_reuse_addr (int reuse_addr)
    -{
    -  ACE_TRACE ("ACE_ATM_Params::set_reuse_addr");
    -  reuse_addr_ = reuse_addr;
    -}
    -
    -ACE_INLINE
    -const char*
    -ACE_ATM_Params::get_device (void) const
    -{
    -  ACE_TRACE ("ACE_ATM_Params::get_device");
    -  return device_;
    -}
    -
    -ACE_INLINE
    -Param_Info*
    -ACE_ATM_Params::get_info (void) const
    -{
    -  ACE_TRACE ("ACE_ATM_Params::get_info");
    -  return info_;
    -}
    -
    -ACE_INLINE
    -void
    -ACE_ATM_Params::set_info (Param_Info* info)
    -{
    -  ACE_TRACE ("ACE_ATM_Params::set_info");
    -  info_ = info;
    -}
    -
    -ACE_INLINE
    -int
    -ACE_ATM_Params::get_rw_flag (void) const
    -{
    -  ACE_TRACE ("ACE_ATM_Params::get_rw_flag");
    -  return rw_flag_;
    -}
    -
    -ACE_INLINE
    -void
    -ACE_ATM_Params::set_rw_flag (int rw_flag)
    -{
    -  ACE_TRACE ("ACE_ATM_Params::set_rw_flag");
    -  rw_flag_ = rw_flag;
    -}
    -
    -ACE_INLINE
    -Param_Udata*
    -ACE_ATM_Params::get_user_data (void) const
    -{
    -  ACE_TRACE ("ACE_ATM_Params::get_user_data");
    -  return udata_;
    -}
    -
    -ACE_INLINE
    -void
    -ACE_ATM_Params::set_user_data (Param_Udata *udata)
    -{
    -  ACE_TRACE ("ACE_ATM_Params::set_user_data");
    -  udata_ = udata;
    -}
    -
    -ACE_INLINE
    -int
    -ACE_ATM_Params::get_oflag (void) const
    -{
    -  ACE_TRACE ("ACE_ATM_Params::get_oflag");
    -  return oflag_;
    -}
    -
    -ACE_INLINE
    -void
    -ACE_ATM_Params::set_oflag (int oflag)
    -{
    -  ACE_TRACE ("ACE_ATM_Params::set_oflag");
    -  oflag_ = oflag;
    -}
    diff --git a/ace/ATM_QoS.cpp b/ace/ATM_QoS.cpp
    deleted file mode 100644
    index c86c661b2d8..00000000000
    --- a/ace/ATM_QoS.cpp
    +++ /dev/null
    @@ -1,360 +0,0 @@
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/ATM_QoS.h"
    -
    -ACE_RCSID(ace, ATM_QoS, "$Id$")
    -
    -#if defined (ACE_HAS_ATM)
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/ATM_QoS.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#if defined (ACE_HAS_FORE_ATM_XTI) || defined (ACE_HAS_FORE_ATM_WS2)
    -#define BHLI_MAGIC "FORE_ATM"
    -// This is line rate in cells/s for an OC-3 MM interface.
    -const long ACE_ATM_QoS::LINE_RATE = 353207;
    -const int ACE_ATM_QoS::OPT_FLAGS_CPID = 0x1;
    -const int ACE_ATM_QoS::OPT_FLAGS_PMP = 0x2;
    -const int ACE_ATM_QoS::DEFAULT_SELECTOR = 0x99;
    -#else
    -const long ACE_ATM_QoS::LINE_RATE = 0L;
    -const int ACE_ATM_QoS::OPT_FLAGS_CPID = 0;
    -const int ACE_ATM_QoS::OPT_FLAGS_PMP = 0;
    -const int ACE_ATM_QoS::DEFAULT_SELECTOR = 0x0;
    -#endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 */
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_ATM_QoS)
    -
    -void
    -ACE_ATM_QoS::dump (void) const
    -{
    -  ACE_TRACE ("ACE_ATM_QoS::dump");
    -}
    -
    -void
    -ACE_ATM_QoS::set_rate (ACE_HANDLE fd,
    -                       int rate,
    -                       int flags)
    -{
    -  ACE_TRACE ("ACE_ATM_QoS::set_rate");
    -#if defined (ACE_HAS_FORE_ATM_WS2)
    -  ACE_UNUSED_ARG (rate);
    -#elif defined (ACE_HAS_FORE_ATM_XTI)
    -  long optlen = 0;
    -  qos_.buf = construct_options(fd,
    -                               rate,
    -                               flags,
    -                               &optlen);
    -  qos_.len = optlen;
    -#else
    -  ACE_UNUSED_ARG (rate);
    -#endif /* ACE_HAS_FORE_ATM_WS2 */
    -}
    -
    -void
    -ACE_ATM_QoS::set_cbr_rate (int rate)
    -{
    -  ACE_TRACE ("ACE_ATM_QoS::set_cbr_rate");
    -#if defined (ACE_HAS_FORE_ATM_WS2)
    -  AAL_PARAMETERS_IE ie_aalparams;
    -  ATM_TRAFFIC_DESCRIPTOR_IE ie_td;
    -  ATM_BROADBAND_BEARER_CAPBILITY_IE ie_bbc;
    -  ATM_QOS_CLASS_IE ie_qos;
    -  Q2931_IE *ie_ptr;
    -  int size;
    -
    -  ie_aalparams.AALType = AALTYPE_5;
    -  ie_aalparams.AALSpecificParameters.AAL5Parameters.ForwardMaxCPCSSDUSize =
    -    1516; 
    -  ie_aalparams.AALSpecificParameters.AAL5Parameters.BackwardMaxCPCSSDUSize =
    -    1516; 
    -  ie_aalparams.AALSpecificParameters.AAL5Parameters.Mode = AAL5_MODE_MESSAGE;
    -  ie_aalparams.AALSpecificParameters.AAL5Parameters.SSCSType = AAL5_SSCS_NULL;
    -
    -  size = sizeof(Q2931_IE_TYPE) + sizeof(ULONG) + sizeof(AAL_PARAMETERS_IE);
    -
    -  ie_td.Forward.PeakCellRate_CLP0 = SAP_FIELD_ABSENT;
    -  ie_td.Forward.PeakCellRate_CLP01 = cellRate;
    -  ie_td.Forward.SustainableCellRate_CLP0 = SAP_FIELD_ABSENT;
    -  ie_td.Forward.SustainableCellRate_CLP01 = SAP_FIELD_ABSENT;
    -  ie_td.Forward.MaxBurstSize_CLP0 = SAP_FIELD_ABSENT;
    -  ie_td.Forward.MaxBurstSize_CLP01 = SAP_FIELD_ABSENT;
    -  ie_td.Forward.Tagging = SAP_FIELD_ABSENT;
    -
    -  ie_td.Backward.PeakCellRate_CLP0 = SAP_FIELD_ABSENT;
    -  ie_td.Backward.PeakCellRate_CLP01 = cellRate;
    -  ie_td.Backward.SustainableCellRate_CLP0 = SAP_FIELD_ABSENT;
    -  ie_td.Backward.SustainableCellRate_CLP01 = SAP_FIELD_ABSENT;
    -  ie_td.Backward.MaxBurstSize_CLP0 = SAP_FIELD_ABSENT;
    -  ie_td.Backward.MaxBurstSize_CLP01 = SAP_FIELD_ABSENT;
    -  ie_td.Backward.Tagging = SAP_FIELD_ABSENT;
    -
    -  ie_td.BestEffort = 0; // Note: this must be set to zero for CBR
    -
    -  size +=
    -    sizeof(Q2931_IE_TYPE) + sizeof(ULONG) + sizeof(ATM_TRAFFIC_DESCRIPTOR_IE);
    -
    -  ie_bbc.BearerClass = BCOB_X;
    -  ie_bbc.TrafficType = TT_CBR;
    -  ie_bbc.TimingRequirements = TR_END_TO_END;
    -  ie_bbc.ClippingSusceptability = CLIP_NOT;
    -  ie_bbc.UserPlaneConnectionConfig = UP_P2P;
    -
    -  size += sizeof(Q2931_IE_TYPE) + sizeof(ULONG) 
    -    + sizeof(ATM_BROADBAND_BEARER_CAPABILITY_IE);
    -
    -  ie_qos.QOSClassForward = QOS_CLASS1;
    -  ie_qos.QOSClassBackward = QOS_CLASS1; 
    -
    -  size += sizeof(Q2931_IE_TYPE) + sizeof(ULONG) + sizeof(ATM_QOS_CLASS_IE);
    -
    -  qos_.ProviderSpecific.buf = (char *) malloc(size);
    -  qos_.ProviderSpecific.len = size;
    -  ACE_OS::memset(qos_.ProviderSpecific.buf,
    -                 0,
    -                 size);
    -
    -  ie_ptr = (Q2931_IE *) qos_.ProviderSpecific.buf;
    -  ie_ptr->IEType = IE_AALParameters;
    -  ie_ptr->IELength = sizeof(Q2931_IE_TYPE) + sizeof(ULONG) 
    -    + sizeof(AAL_PARAMETERS_IE);
    -  ACE_OS::memcpy(ie_ptr->IE,
    -                 &ie_aalparams,
    -                 sizeof(AAL_PARAMETERS_IE));
    -
    -  ie_ptr = (Q2931_IE *) ((char *)ie_ptr + ie_ptr->IELength);
    -  ie_ptr->IEType = IE_TrafficDescriptor;
    -  ie_ptr->IELength =
    -    sizeof(Q2931_IE_TYPE) + sizeof(ULONG) + sizeof(ATM_TRAFFIC_DESCRIPTOR_IE);
    -  ACE_OS::memcpy(ie_ptr->IE,
    -                 &ie_td,
    -                 sizeof(ATM_TRAFFIC_DESCRIPTOR_IE));
    -
    -  ie_ptr = (Q2931_IE *) ((char *)ie_ptr + ie_ptr->IELength);
    -  ie_ptr->IEType = IE_BroadbandBearerCapability;
    -  ie_ptr->IELength = sizeof(Q2931_IE_TYPE) + sizeof(ULONG) +
    -    sizeof(ATM_BROADBAND_BEARER_CAPABILITY_IE);
    -  ACE_OS::memcpy(ie_ptr->IE,
    -                 &ie_bbc,
    -                 sizeof(ATM_BROADBAND_BEARER_CAPABILITY_IE));
    -
    -  ie_ptr = (Q2931_IE *) ((char *)ie_ptr + ie_ptr->IELength);
    -  ie_ptr->IEType = IE_QOSClass;
    -  ie_ptr->IELength =
    -    sizeof(Q2931_IE_TYPE) + sizeof(ULONG) + sizeof(ATM_QOS_CLASS_IE);
    -  ACE_OS::memcpy(ie_ptr->IE,
    -                 &ie_qos,
    -                 sizeof(ATM_QOS_CLASS_IE));
    -
    -  qos_.SendingFlowspec.TokenRate = -1;
    -  qos_.SendingFlowspec.TokenBucketSize = -1;
    -  qos_.SendingFlowspec.PeakBandwidth = -1;
    -  qos_.SendingFlowspec.Latency = -1;
    -  qos_.SendingFlowspec.DelayVariation = -1;
    -  qos_.SendingFlowspec.LevelOfGuarantee = BestEffortService; 
    -  // will most probably be ignored by the service provider
    -  qos_.SendingFlowspec.CostOfCall = 0;
    -
    -  qos_.ReceivingFlowspec.TokenRate = -1;
    -  qos_.ReceivingFlowspec.TokenBucketSize = -1;
    -  qos_.ReceivingFlowspec.PeakBandwidth = -1;
    -  qos_.ReceivingFlowspec.Latency = -1;
    -  qos_.ReceivingFlowspec.DelayVariation = -1;
    -  qos_.ReceivingFlowspec.LevelOfGuarantee = BestEffortService; 
    -  // will most probably be ignored by the service provider
    -  qos_.ReceivingFlowspec.CostOfCall = 0;
    -#elif defined (ACE_HAS_FORE_ATM_XTI)
    -  ACE_UNUSED_ARG (rate);
    -#else
    -  ACE_UNUSED_ARG (rate);
    -#endif /* ACE_HAS_FORE_ATM_WS2 */
    -}
    -
    -char*
    -ACE_ATM_QoS::construct_options (ACE_HANDLE fd,
    -                                int rate,
    -                                int flags,
    -                                long *len)
    -{
    -#if defined (ACE_HAS_FORE_ATM_WS2)
    -  ACE_UNUSED_ARG (fd);
    -  ACE_UNUSED_ARG (rate);
    -  ACE_UNUSED_ARG (flag);
    -  ACE_UNUSED_ARG (len);
    -  return (0);
    -#elif defined (ACE_HAS_FORE_ATM_XTI)
    -  struct t_opthdr *popt;
    -  char *buf;
    -  int qos_cells;
    -  struct t_info info;
    -
    -  if (ACE_OS::t_getinfo (fd, &info) == -1)
    -    {
    -      ACE_OS::t_error ("t_getinfo");
    -      return 0;
    -    }
    - 
    -  buf = (char *) ACE_OS::malloc (info.options);
    -
    -  if (buf == 0)
    -    ACE_ERROR_RETURN ((LM_ERROR,
    -                       ASYS_TEXT ("Unable to allocate %ld bytes for options\n"),
    -                       info.options),
    -                      0);
    -
    -  popt = (struct t_opthdr *) buf;
    -
    -  if (flags & OPT_FLAGS_CPID)
    -    {
    -      // This constructs the T_ATM_ORIG_ADDR option, which is used to
    -      // signal the UNI 3.1 Calling Party ID Information Element.
    -      t_atm_addr *source_addr;
    -
    -      popt->len	= sizeof (struct t_opthdr) + sizeof (t_atm_addr);
    -      popt->level = T_ATM_SIGNALING;
    -      popt->name = T_ATM_ORIG_ADDR;
    -      popt->status = 0;
    -
    -      source_addr = 
    -        (t_atm_addr *)((char *) popt + sizeof (struct t_opthdr));
    -
    -      source_addr->address_format = T_ATM_ENDSYS_ADDR;
    -      source_addr->address_length = ATMNSAP_ADDR_LEN;
    -
    -      ATMSAPAddress local_addr;
    -      struct t_bind boundaddr;
    -
    -      boundaddr.addr.maxlen = sizeof(local_addr);
    -      boundaddr.addr.buf = (char *) &local_addr;
    -
    -      //if (ACE_OS::t_getprotaddr(fd, &boundaddr, NULL) < 0) {
    -      if (ACE_OS::t_getname(fd,
    -                            &boundaddr.addr,
    -                            LOCALNAME) < 0)
    -        {
    -          ACE_OS::t_error("t_getname (local_address)");
    -          ACE_ERROR ((LM_ERROR,
    -                      ASYS_TEXT ("Can't get local address!\n")));
    -          ACE_OS::free (buf);
    -          return 0;
    -        }
    -
    -      ACE_OS::memcpy(source_addr->address,
    -                     local_addr.sap.t_atm_sap_addr.address,
    -                     ATMNSAP_ADDR_LEN);
    -
    -      popt = T_OPT_NEXTHDR (buf, info.options , popt);
    -    }
    -
    -  // This constructs all options necessary (bearer cap., QoS, and
    -  // Traffic Descriptor) to signal for a CBR connection with the
    -  // specified QoS in kbit/sec., and/or specify a PMP connection.
    -
    -  // For FORE 200e cards, the adapter shapes traffic to CBR with rate
    -  // equal to PCR CLP=0+1 (traffic.forward.PCR_all_traffic)
    -
    -  qos_cells = (rate * 1000) / (48*8);
    -
    -  if ((qos_cells > 0 && qos_cells < LINE_RATE) 
    -      || (ACE_BIT_ENABLED (flags, OPT_FLAGS_PMP)))
    -    {
    -      struct t_atm_bearer *bearer;
    -      struct t_atm_traffic *traffic;
    -
    -      // T_ATM_BEARER_CAP: Broadband bearer capability
    -      popt->len	= sizeof (struct t_opthdr) + sizeof (struct t_atm_bearer);
    -      popt->level = T_ATM_SIGNALING;
    -      popt->name = T_ATM_BEARER_CAP;
    -      popt->status = 0;
    -
    -      bearer = (struct t_atm_bearer *)((char *) popt +
    -                                       sizeof (struct t_opthdr));
    -      bearer->bearer_class = T_ATM_CLASS_X;
    -
    -      if (qos_cells)
    -        {
    -          bearer->traffic_type = T_ATM_CBR;
    -          bearer->timing_requirements = T_ATM_END_TO_END;
    -        }
    -      else
    -        {
    -          bearer->traffic_type	 = 0; // UBR
    -          bearer->timing_requirements = 0;
    -        }
    -      bearer->clipping_susceptibility = T_ATM_NULL;
    -
    -      if (ACE_BIT_ENABLED (flags, OPT_FLAGS_PMP))
    -        bearer->connection_configuration = T_ATM_1_TO_MANY;
    -      else
    -        bearer->connection_configuration = T_ATM_1_TO_1;
    -
    -      popt = T_OPT_NEXTHDR (buf, info.options, popt);
    -
    -      // T_ATM_TRAFFIC: traffic descriptor
    -      popt->len	= sizeof (struct t_opthdr) + sizeof (struct t_atm_traffic);
    -      popt->level = T_ATM_SIGNALING;
    -      popt->name = T_ATM_TRAFFIC;
    -      popt->status = 0;
    -
    -      traffic = (struct t_atm_traffic *)((char *) popt +
    -                                         sizeof (struct t_opthdr));
    -
    -      traffic->forward.PCR_high_priority = T_ATM_ABSENT;
    -      traffic->forward.PCR_all_traffic = qos_cells ? qos_cells : LINE_RATE;
    -      traffic->forward.SCR_high_priority = T_ATM_ABSENT;
    -      traffic->forward.SCR_all_traffic = T_ATM_ABSENT;
    -      traffic->forward.MBS_high_priority = T_ATM_ABSENT;
    -      traffic->forward.MBS_all_traffic = T_ATM_ABSENT;
    -      traffic->forward.tagging = T_NO;
    -
    -      traffic->backward.PCR_high_priority = T_ATM_ABSENT;
    -      traffic->backward.PCR_all_traffic	= 
    -        (ACE_BIT_ENABLED (flags, OPT_FLAGS_PMP)) 
    -        ? 0 : qos_cells ? qos_cells : LINE_RATE;
    -      traffic->backward.SCR_high_priority = T_ATM_ABSENT;
    -      traffic->backward.SCR_all_traffic	= T_ATM_ABSENT;
    -      traffic->backward.MBS_high_priority = T_ATM_ABSENT;
    -      traffic->backward.MBS_all_traffic	= T_ATM_ABSENT;
    -      traffic->backward.tagging = T_NO;
    -
    -      traffic->best_effort = qos_cells ? T_NO : T_YES;
    -
    -      popt = T_OPT_NEXTHDR (buf,
    -                            info.options,
    -                            popt);
    -    }
    -
    -  if (qos_cells > 0 && qos_cells < LINE_RATE)
    -    {
    -      struct t_atm_qos *qos;
    -
    -      // T_ATM_QOS: Quality of Service
    -      popt->len	= sizeof (struct t_opthdr) + sizeof (struct t_atm_qos);
    -      popt->level = T_ATM_SIGNALING;
    -      popt->name = T_ATM_QOS;
    -      popt->status = 0;
    -
    -      qos = (struct t_atm_qos *)((char *) popt + sizeof (struct t_opthdr));
    -      qos->coding_standard = T_ATM_ITU_CODING;
    -      qos->forward.qos_class = T_ATM_QOS_CLASS_1;
    -      qos->backward.qos_class = T_ATM_QOS_CLASS_1;
    -
    -      popt = T_OPT_NEXTHDR (buf, info.options, popt);
    -    }
    -
    -  // return actual size of options and option buffer to user
    -  *len = (char *) popt - buf;
    -
    -  return buf;
    -#else
    -  ACE_UNUSED_ARG (fd);
    -  ACE_UNUSED_ARG (rate);
    -  ACE_UNUSED_ARG (flag);
    -  ACE_UNUSED_ARG (len);
    -  return (0);
    -#endif /* ACE_HAS_FORE_ATM_WS2 */
    -}
    -
    -#endif /* ACE_HAS_ATM */
    diff --git a/ace/ATM_QoS.h b/ace/ATM_QoS.h
    deleted file mode 100644
    index 57f3b257c6d..00000000000
    --- a/ace/ATM_QoS.h
    +++ /dev/null
    @@ -1,120 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    - 
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    ATM_QoS.h
    -//
    -// = AUTHOR
    -//    Joe Hoffert
    -//
    -// ============================================================================
    -
    -#ifndef ACE_ATM_QoS_H
    -#define ACE_ATM_QoS_H
    -
    -#include "ace/ACE.h"
    -
    -#if !defined(ACE_LACKS_PRAGMA_ONCE)
    -#pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#if defined (ACE_HAS_ATM)
    -
    -#if defined (ACE_HAS_FORE_ATM_WS2)
    -// just map to WS2 GQOS struct
    -typedef QOS ATM_QoS;
    -#elif defined (ACE_HAS_FORE_ATM_XTI)
    -// typedef enum {
    -//   BEST_EFFORT,
    -//   CONTROLLED_LOAD,
    -//   GUARANTEED
    -// } SERVICETYPE;
    -
    -// typedef struct _flowspec {
    -//   int TokeRate;
    -//   int TokenBucketSize;
    -//   int PeakBandwidth;
    -//   int Latency;
    -//   int DelayVariation;
    -//   SERVICETYPE ServiceType;
    -//   int MaxSduSize;
    -//   int MinimumPolicedSize;
    -// } FLOWSPEC;
    -
    -// typedef struct _BUF {
    -//   ulong len;
    -//   char *buf;
    -// } BUF;
    -
    -// typedef struct _QualityOfService {
    -//   FLOWSPEC SendingFlowspec;
    -//   FLOWSPEC ReceivingFlowspec;
    -//   BUF ProviderSpecific;
    -// } ATM_QoS;
    -typedef struct netbuf ATM_QoS;
    -#else
    -typedef int ATM_QoS;
    -#endif /* ACE_HAS_FORE_ATM_WS2 */
    -
    -class ACE_Export ACE_ATM_QoS
    -{
    -  // = TITLE
    -  //	Define the QoS parameters for ATM
    -  //
    -  // = DESCRIPTION
    -  //     This class wraps up QoS parameters for both ATM/XTI and
    -  //     ATM/WinSock2 to make the mechanism for the ATM protocol
    -  //     transparent.
    -public:
    -  // Constants used for ATM options
    -  static const long LINE_RATE;
    -  static const int OPT_FLAGS_CPID;
    -  static const int OPT_FLAGS_PMP;
    -  static const int DEFAULT_SELECTOR;
    -
    -  // = Initializattion and termination methods.
    -  ACE_ATM_QoS ();
    -  // Default constructor
    -
    -  ~ACE_ATM_QoS ();
    -
    -  void set_rate (ACE_HANDLE,
    -                 int,
    -                 int);
    -  // set the rate
    -
    -  void set_cbr_rate (int);
    -  // set CBR rate
    -
    -  ATM_QoS get_qos (void);
    -  // get ATM_QoS struct
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  char* construct_options(ACE_HANDLE,
    -                          int,
    -                          int,
    -                          long*);
    -  // Construct QoS options
    -
    -private:
    -  ATM_QoS qos_;
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/ATM_QoS.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_HAS_ATM */
    -#endif /* ACE_ATM_QoS_H */
    diff --git a/ace/ATM_QoS.i b/ace/ATM_QoS.i
    deleted file mode 100644
    index ed6dff5d803..00000000000
    --- a/ace/ATM_QoS.i
    +++ /dev/null
    @@ -1,24 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ATM_QoS.i
    -
    -ACE_INLINE
    -ACE_ATM_QoS::ACE_ATM_QoS ()
    -{
    -  ACE_TRACE ("ACE_ATM_QoS::ACE_ATM_QoS");
    -}
    -
    -ACE_INLINE
    -ACE_ATM_QoS::~ACE_ATM_QoS ()
    -{
    -  ACE_TRACE ("ACE_ATM_QoS::~ACE_ATM_QoS");
    -}
    -
    -ACE_INLINE
    -ATM_QoS
    -ACE_ATM_QoS::get_qos (void)
    -{
    -  ACE_TRACE ("ACE_ATM_QoS::get_qos");
    -  return qos_;
    -}
    diff --git a/ace/ATM_Stream.cpp b/ace/ATM_Stream.cpp
    deleted file mode 100644
    index f00e1aafc6a..00000000000
    --- a/ace/ATM_Stream.cpp
    +++ /dev/null
    @@ -1,162 +0,0 @@
    -// $Id$
    -
    -/* Defines the member functions for the base class of the ACE_ATM_Stream
    -   abstraction. */
    -
    -#define ACE_BUILD_DLL
    -#include "ace/ATM_Stream.h"
    -
    -ACE_RCSID(ace, ATM_Stream, "$Id$")
    -
    -#if defined (ACE_HAS_ATM)
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/ATM_Stream.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_ATM_Stream)
    -
    -void
    -ACE_ATM_Stream::dump (void) const
    -{
    -  ACE_TRACE ("ACE_ATM_Stream::dump");
    -}
    -
    -char*
    -ACE_ATM_Stream::get_peer_name (void) const
    -{
    -  ACE_TRACE ("ACE_ATM_Stream::get_peer_name");
    -#if defined (ACE_HAS_FORE_ATM_XTI)
    -//   // Use t_getprotaddr for XTI/ATM
    -//   struct t_bind *localaddr = (struct t_bind *) ACE_OS::t_alloc (get_handle (),
    -//                                                                 T_BIND,
    -//                                                                 T_ADDR);
    -//   struct t_bind *peeraddr = (struct t_bind *) ACE_OS::t_alloc (get_handle (),
    -//                                                                T_BIND,
    -//                                                                T_ADDR);
    -//   ::t_getprotaddr(get_handle (),
    -//                   localaddr,
    -//                   peeraddr);
    -
    -//   char* connected_name = (char*) ACE_OS::malloc(peeraddr->addr.len + 1);
    -//   ACE_OS::strcpy(connected_name,
    -//                  peeraddr->addr.buf);
    -//   ACE_OS::t_free ((char *) localaddr,
    -//                   T_BIND);
    -//   ACE_OS::t_free ((char *) peeraddr,
    -//                   T_BIND);
    -//   return (connected_name);
    -
    -#error "This doesn't seem to work. May need to jimmy-rig something with the"
    -#error "/etc/xti_hosts file - Ugh!"
    -  ACE_ATM_Addr sa;
    -  struct netbuf name;
    -  name.maxlen = sa.get_size ();
    -  name.buf = (char *) sa.get_addr ();
    -  ACE_OS::t_getname (this->get_handle (), &name, REMOTENAME);
    -  //  ACE_OS::ioctl (this->get_handle (),
    -  //               TI_GETPEERNAME,
    -  //               &name);
    -  return (name.buf);
    -
    -#elif defined (ACE_HAS_FORE_ATM_WS2)
    -  // Use getpeername for WinSock2
    -  struct sockaddr name;
    -  socklen_t nameSize = sizeof(name);
    -  if (ACE_OS::getpeername(this->get_handle (),
    -                          &name,
    -                          &nameSize) != 0)
    -    {
    -      return 0;
    -    }
    -  return ??
    -#else
    -  return 0;
    -#endif /* ACE_HAS_FORE_ATM_XTI */
    -}
    -
    -int
    -ACE_ATM_Stream::get_vpi_vci (ACE_UINT16 &vpi,
    -                             ACE_UINT16 &vci) const
    -{
    -  ACE_TRACE ("ACE_ATM_Stream::get_vpi_vci");
    -#if defined (ACE_HAS_FORE_ATM_XTI)
    -  struct t_atm_conn_prop conn_prop;
    -  char* connect_opts = (char *)&conn_prop;
    -  int opt_size = sizeof(t_atm_conn_prop);
    -  struct t_info info;
    -  struct t_optmgmt opt_req, opt_ret;
    -
    -  if (ACE_OS::t_getinfo(stream_.get_handle(),
    -                        &info) < 0)
    -    {
    -      ACE_OS::t_error("t_getinfo");
    -      return -1;
    -    }
    -
    -  char *buf_req = (char *) ACE_OS::malloc(info.options);
    -  if (buf_req == (char *) NULL)
    -    {
    -      ACE_OS::fprintf(stderr,
    -                      "Unable to allocate %ld bytes for options\n",
    -                      info.options);
    -      return -1;
    -    }
    -
    -  char *buf_ret = (char *) ACE_OS::malloc(info.options);
    -  if (buf_ret == (char *) NULL)
    -    {
    -      ACE_OS::fprintf(stderr,
    -                      "Unable to allocate %ld bytes for options\n",
    -                      info.options);
    -      return -1;
    -    }
    -
    -  ACE_OS::memset(&opt_req, 0, sizeof(opt_req));
    -  ACE_OS::memset(&opt_ret, 0, sizeof(opt_ret));
    -
    -  struct t_opthdr *popt = (struct t_opthdr *) buf_req;
    -  struct t_opthdr *popt_ret = (struct t_opthdr *) buf_ret;
    -
    -  popt->len= sizeof(struct t_opthdr) + opt_size;
    -
    -  // We are only concerned with SVCs so no other check or values are needed
    -  //  here.
    -  popt->level = T_ATM_SIGNALING;
    -  popt->name = T_ATM_CONN_PROP;
    -  popt->status = 0;
    -
    -  opt_req.opt.len = popt->len;
    -  opt_req.opt.buf = (char *)popt;
    -  opt_req.flags = T_CURRENT;
    -
    -  popt = T_OPT_NEXTHDR(buf_req,
    -                       info.options,
    -                       popt);
    -  opt_ret.opt.maxlen  = info.options;
    -  opt_ret.opt.buf = (char *)popt_ret;
    -
    -  if (ACE_OS::t_optmgmt(stream_.get_handle(),
    -                        &opt_req,
    -                        &opt_ret) < 0) {
    -    ACE_OS::t_error("t_optmgmt");
    -    return -1;
    -  }
    -
    -  ACE_OS::memcpy(connect_opts,
    -                 (char *)popt_ret + sizeof(struct t_opthdr),
    -                 opt_size);
    -
    -  ACE_OS::free(buf_ret);
    -  ACE_OS::free(buf_req);
    -
    -  vpi = conn_prop.vpi;
    -  vci = conn_prop.vci;
    -  return (0);
    -#elif defined (ACE_HAS_FORE_ATM_WS2)
    -#else
    -  return (-1);
    -#endif /* ACE_HAS_FORE_ATM_XTI */
    -}
    -
    -#endif /* ACE_HAS_ATM */
    diff --git a/ace/ATM_Stream.h b/ace/ATM_Stream.h
    deleted file mode 100644
    index 2e48f4b6b42..00000000000
    --- a/ace/ATM_Stream.h
    +++ /dev/null
    @@ -1,95 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    ATM_Stream.h
    -//
    -// = AUTHOR
    -//    Joe Hoffert
    -//
    -// ============================================================================
    -
    -#ifndef ACE_ATM_STREAM_H
    -#define ACE_ATM_STREAM_H
    -
    -#include "ace/ATM_Addr.h"
    -#include "ace/ATM_Params.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#if defined (ACE_HAS_ATM)
    -
    -#if defined (ACE_WIN32)
    -#include "SOCK_Stream.h"
    -typedef ACE_SOCK_Stream ATM_Stream;
    -#else
    -#include "TLI_Stream.h"
    -typedef ACE_TLI_Stream ATM_Stream;
    -#endif
    -
    -class ACE_Export ACE_ATM_Stream
    -{
    -  // = TITLE
    -  //     Defines the member functions for ACE_ATM_Stream abstraction.
    -public:
    -  // = Initialization and termination methods.
    -  ACE_ATM_Stream (void);
    -  // Default constructor.
    -
    -  // = ATM-specific open and shutdown operations.
    -  int open (ACE_ATM_Params params = ACE_ATM_Params());
    -  // open the stream.
    -  int close (void);
    -  // Close down and release resources.
    -
    -  ACE_HANDLE get_handle (void) const;
    -  // Get the underlying handle.
    -
    -  ATM_Stream& get_stream (void);
    -  // Get the underlying stream.
    -
    -  char* get_peer_name (void) const;
    -  // Get the name of the connected host.
    -
    -  int get_vpi_vci (ACE_UINT16 &vpi,
    -                   ACE_UINT16 &vci) const;
    -  // Get the VPI and VCI of the stream.
    -
    -  ssize_t recv (void *buf,
    -                size_t n,
    -                int *flags = 0) const;
    -  // Recv an n byte buffer from the connected transport mechanism
    -
    -  ssize_t send_n (const void *buf,
    -                  size_t n,
    -                  int flags) const;
    -  // Send exactly n bytes to the connected transport mechanism
    -
    -  // = Meta-type info
    -  typedef ACE_ATM_Addr PEER_ADDR;
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  ATM_Stream stream_;
    -  // Typedef'd to the appropriate stream mechanism above
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/ATM_Stream.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_HAS_ATM */
    -#endif /* ACE_ATM_STREAM_H */
    diff --git a/ace/ATM_Stream.i b/ace/ATM_Stream.i
    deleted file mode 100644
    index ab7c8804f68..00000000000
    --- a/ace/ATM_Stream.i
    +++ /dev/null
    @@ -1,108 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ATM_Stream.i
    -
    -ACE_INLINE
    -ACE_ATM_Stream::ACE_ATM_Stream (void)
    -{
    -  ACE_TRACE ("ACE_ATM_Stream::ACE_ATM_Stream");
    -}
    -
    -ACE_INLINE
    -int
    -ACE_ATM_Stream::open (ACE_ATM_Params params)
    -{
    -  ACE_TRACE ("ACE_ATM_Stream::open");
    -#if defined (ACE_HAS_FORE_ATM_XTI)
    -  ACE_HANDLE handle = stream_.open (params.get_device(),
    -                                    params.get_oflag(),
    -                                    params.get_info());
    -  return (handle == ACE_INVALID_HANDLE ? -1 : 0);
    -#elif defined (ACE_HAS_FORE_ATM_WS2)
    -  return stream_.open (params.get_type(),
    -                       params.get_protocol_family(),
    -                       params.get_protocol(),
    -                       params.get_reuse_addr());
    -#else
    -  ACE_UNUSED_ARG(params);
    -  return 0;
    -#endif /* ACE_HAS_FORE_ATM_XTI */
    -}
    -
    -ACE_INLINE
    -int
    -ACE_ATM_Stream::close (void)
    -{
    -  ACE_TRACE ("ACE_ATM_Stream::close");
    -#if defined (ACE_HAS_FORE_ATM_XTI) || defined (ACE_HAS_FORE_ATM_WS2)
    -  return stream_.close ();
    -#else
    -  return 0;
    -#endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 */
    -}
    -
    -ACE_INLINE
    -ACE_HANDLE
    -ACE_ATM_Stream::get_handle (void) const
    -{
    -  ACE_TRACE ("ACE_ATM_Stream::get_handle");
    -#if defined (ACE_HAS_FORE_ATM_XTI) || defined (ACE_HAS_FORE_ATM_WS2)
    -  return stream_.get_handle ();
    -#else
    -  return 0;
    -#endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 */
    -}
    -
    -ACE_INLINE
    -ATM_Stream&
    -ACE_ATM_Stream::get_stream (void)
    -{
    -  ACE_TRACE ("ACE_ATM_Stream::get_stream");
    -  return stream_;
    -}
    -
    -ACE_INLINE
    -ssize_t
    -ACE_ATM_Stream::recv (void *buf,
    -                      size_t n,
    -                      int *flags) const
    -{
    -  ACE_TRACE ("ACE_ATM_Stream::recv");
    -#if defined (ACE_HAS_FORE_ATM_XTI)
    -  return stream_.recv (buf,
    -                       n,
    -                       flags);
    -#elif defined (ACE_HAS_FORE_ATM_WS2)
    -  return stream_.recv (buf,
    -                       n);
    -#else
    -  ACE_UNUSED_ARG(buf);
    -  ACE_UNUSED_ARG(n);
    -  ACE_UNUSED_ARG(flags);
    -  return (0);
    -#endif /* ACE_HAS_FORE_ATM_XTI */
    -}
    -
    -ACE_INLINE
    -ssize_t
    -ACE_ATM_Stream::send_n (const void *buf,
    -                        size_t n,
    -                        int flags) const
    -{
    -  ACE_TRACE ("ACE_ATM_Stream::send_n");
    -#if defined (ACE_HAS_FORE_ATM_XTI)
    -  return stream_.send_n (buf,
    -                         n,
    -                         flags);
    -#elif defined (ACE_HAS_FORE_ATM_WS2)
    -  return stream_.send_n (buf,
    -                         n,
    -                         flags);
    -#else
    -  ACE_UNUSED_ARG(buf);
    -  ACE_UNUSED_ARG(n);
    -  ACE_UNUSED_ARG(flags);
    -  return (0);
    -#endif /* ACE_HAS_FORE_ATM_XTI */
    -}
    diff --git a/ace/Acceptor.cpp b/ace/Acceptor.cpp
    deleted file mode 100644
    index 206dcbcd32f..00000000000
    --- a/ace/Acceptor.cpp
    +++ /dev/null
    @@ -1,1151 +0,0 @@
    -// Acceptor.cpp
    -// $Id$
    -
    -#ifndef ACE_ACCEPTOR_C
    -#define ACE_ACCEPTOR_C
    -
    -#define ACE_BUILD_DLL
    -#include "ace/ACE.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Acceptor.h"
    -#include "ace/Handle_Set.h"
    -#include "ace/WFMO_Reactor.h"
    -
    -ACE_RCSID(ace, Acceptor, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Acceptor)
    -
    -template  void
    -ACE_Acceptor::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Acceptor::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  this->peer_acceptor_.dump ();
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -template 
    -ACE_Acceptor::operator ACE_PEER_ACCEPTOR & () const
    -{
    -  ACE_TRACE ("ACE_Acceptor::operator ACE_PEER_ACCEPTOR &");
    -  return (ACE_PEER_ACCEPTOR &) this->peer_acceptor_;
    -}
    -
    -template  ACE_PEER_ACCEPTOR &
    -ACE_Acceptor::acceptor (void) const
    -{
    -  ACE_TRACE ("ACE_Acceptor::acceptor");
    -  return (ACE_PEER_ACCEPTOR &) this->peer_acceptor_;
    -}
    -
    -// Returns ACE_HANDLE of the underlying Acceptor_Strategy.
    -
    -template  ACE_HANDLE
    -ACE_Acceptor::get_handle (void) const
    -{
    -  ACE_TRACE ("ACE_Acceptor::get_handle");
    -  return this->peer_acceptor_.get_handle ();
    -}
    -
    -// Initialize the appropriate strategies for creation, passive
    -// connection acceptance, and concurrency, and then register 
    -// with the Reactor and listen for connection requests at the
    -// designated .
    -
    -template  int
    -ACE_Acceptor::open
    -  (const ACE_PEER_ACCEPTOR_ADDR &local_addr,
    -   ACE_Reactor *reactor,
    -   int flags,
    -   int use_select,
    -   int reuse_addr)
    -{
    -  ACE_TRACE ("ACE_Acceptor::open");
    -  this->flags_ = flags;
    -  this->use_select_ = use_select;
    -
    -  // Must supply a valid Reactor to Acceptor::open()...
    -
    -  if (reactor == 0)
    -    {
    -      errno = EINVAL;
    -      return -1;
    -    }
    -
    -  if (this->peer_acceptor_.open (local_addr,
    -                                 reuse_addr) == -1)
    -    return -1;
    -
    -  int result = reactor->register_handler
    -    (this,
    -     ACE_Event_Handler::ACCEPT_MASK);
    -  if (result != -1)
    -    this->reactor (reactor);
    -
    -  return result;
    -}
    -
    -// Simple constructor.
    -
    -template 
    -ACE_Acceptor::ACE_Acceptor (ACE_Reactor *reactor,
    -                                                              int use_select)
    -  : use_select_ (use_select)
    -{
    -  ACE_TRACE ("ACE_Acceptor::ACE_Acceptor");
    -
    -  this->reactor (reactor);
    -}
    -
    -template 
    -ACE_Acceptor::ACE_Acceptor
    -  (const ACE_PEER_ACCEPTOR_ADDR &addr,
    -   ACE_Reactor *reactor,
    -   int flags,
    -   int use_select,
    -   int reuse_addr)
    -{
    -  ACE_TRACE ("ACE_Acceptor::ACE_Acceptor");
    -
    -  if (this->open (addr,
    -                  reactor,
    -                  flags,
    -                  use_select,
    -                  reuse_addr) == -1)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT ("%p\n"),
    -                ASYS_TEXT ("ACE_Acceptor::ACE_Acceptor")));
    -}
    -
    -template 
    -ACE_Acceptor::~ACE_Acceptor (void)
    -{
    -  ACE_TRACE ("ACE_Acceptor::~ACE_Acceptor");
    -  this->handle_close ();
    -}
    -
    -template  int
    -ACE_Acceptor::fini (void)
    -{
    -  ACE_TRACE ("ACE_Acceptor::fini");
    -  return ACE_Acceptor::handle_close ();
    -}
    -
    -// Hook called by the explicit dynamic linking facility.
    -
    -template  int
    -ACE_Acceptor::init (int, ASYS_TCHAR *[])
    -{
    -  ACE_TRACE ("ACE_Acceptor::init");
    -  return -1;
    -}
    -
    -template  int
    -ACE_Acceptor::info (ASYS_TCHAR **strp,
    -                                                      size_t length) const
    -{
    -  ACE_TRACE ("ACE_Acceptor::info");
    -  ASYS_TCHAR buf[BUFSIZ];
    -  ASYS_TCHAR addr_str[BUFSIZ];
    -  ACE_PEER_ACCEPTOR_ADDR addr;
    -
    -  if (this->acceptor ().get_local_addr (addr) == -1)
    -    return -1;
    -  else if (addr.addr_to_string (addr_str, sizeof addr_str) == -1)
    -    return -1;
    -
    -  ACE_OS::sprintf (buf,
    -                   ASYS_TEXT ("%s\t %s %s"),
    -                   ASYS_TEXT ("ACE_Acceptor"),
    -                   addr_str,
    -                   ASYS_TEXT ("# acceptor factory\n"));
    -
    -  if (*strp == 0 && (*strp = ACE_OS::strdup (buf)) == 0)
    -    return -1;
    -  else
    -    ACE_OS::strncpy (*strp, buf, length);
    -  return ACE_OS::strlen (buf);
    -}
    -
    -template  int
    -ACE_Acceptor::suspend (void)
    -{
    -  ACE_TRACE ("ACE_Acceptor::suspend");
    -  return this->reactor ()->suspend_handler (this);
    -}
    -
    -template  int
    -ACE_Acceptor::resume (void)
    -{
    -  ACE_TRACE ("ACE_Acceptor::resume");
    -  return this->reactor ()->resume_handler (this);
    -}
    -
    -// Perform termination activities when  is removed from the
    -// .
    -
    -template  int
    -ACE_Acceptor::close (void)
    -{
    -  ACE_TRACE ("ACE_Acceptor::close");
    -  return this->handle_close ();
    -}
    -
    -template  int
    -ACE_Acceptor::handle_close (ACE_HANDLE,
    -                                                              ACE_Reactor_Mask)
    -{
    -  ACE_TRACE ("ACE_Acceptor::handle_close");
    -  // Guard against multiple closes.
    -  if (this->reactor () != 0)
    -    {
    -      ACE_HANDLE handle = this->get_handle ();
    -
    -      this->reactor ()->remove_handler
    -        (handle,
    -         // We must pass the DONT_CALL flag here to avoid infinite
    -         // recursion.
    -         ACE_Event_Handler::ACCEPT_MASK | ACE_Event_Handler::DONT_CALL);
    -
    -      // Shut down the listen socket to recycle the handles.
    -      if (this->peer_acceptor_.close () == -1)
    -        ACE_ERROR ((LM_ERROR,
    -                    ASYS_TEXT ("close\n")));
    -      // Set the Reactor to 0 so that we don't try to close down
    -      // again.
    -      this->reactor (0);
    -    }
    -  return 0;
    -}
    -
    -// Bridge method for creating a SVC_HANDLER.  The strategy for
    -// creating a SVC_HANDLER are configured into the Acceptor via it's
    -// .  The default is to create a new SVC_HANDLER.
    -// However, subclasses can override this strategy to perform
    -// SVC_HANDLER creation in any way that they like (such as creating
    -// subclass instances of SVC_HANDLER, using a singleton, dynamically
    -// linking the handler, etc.).
    -
    -template  int
    -ACE_Acceptor::make_svc_handler (SVC_HANDLER *&sh)
    -{
    -  ACE_TRACE ("ACE_Acceptor::make_svc_handler");
    -
    -  if (sh == 0)
    -    ACE_NEW_RETURN (sh,
    -                    SVC_HANDLER,
    -                    -1);
    -
    -  // Set the reactor of the newly created  to the same
    -  // reactor that this  is using.
    -  if (this->reactor ())
    -    sh->reactor (this->reactor ());
    -
    -  return 0;
    -}
    -
    -// Bridge method for accepting the new connection into the
    -// .  The default behavior delegates to the
    -// PEER_ACCEPTOR::accept() in the Acceptor_Strategy.
    -
    -template  int
    -ACE_Acceptor::accept_svc_handler
    -  (SVC_HANDLER *svc_handler)
    -{
    -  ACE_TRACE ("ACE_Acceptor::accept_svc_handler");
    -
    -  // Try to find out if the implementation of the reactor that we are
    -  // using requires us to reset the event association for the newly
    -  // created handle. This is because the newly created handle will
    -  // inherit the properties of the listen handle, including its event
    -  // associations.
    -  int reset_new_handle = this->reactor ()->uses_event_associations ();
    -
    -  if (this->peer_acceptor_.accept (svc_handler->peer (), // stream
    -                                   0, // remote address
    -                                   0, // timeout
    -                                   1, // restart
    -                                   reset_new_handle  // reset new handler
    -                                   ) == -1)
    -    {
    -      // Close down handler to avoid memory leaks.
    -      svc_handler->close (0);
    -      return -1;
    -    }
    -  else
    -    return 0;
    -}
    -
    -// Bridge method for activating a  with the appropriate
    -// concurrency strategy.  The default behavior of this method is to
    -// activate the SVC_HANDLER by calling its open() method (which allows
    -// the SVC_HANDLER to define its own concurrency strategy).  However,
    -// subclasses can override this strategy to do more sophisticated
    -// concurrency activations (such as creating the SVC_HANDLER as an
    -// "active object" via multi-threading or multi-processing).
    -
    -template  int
    -ACE_Acceptor::activate_svc_handler
    -  (SVC_HANDLER *svc_handler)
    -{
    -  ACE_TRACE ("ACE_Acceptor::activate_svc_handler");
    -
    -  int result = 0;
    -
    -  // See if we should enable non-blocking I/O on the 's
    -  // peer.
    -  if (ACE_BIT_ENABLED (this->flags_,
    -                       ACE_NONBLOCK))
    -    {
    -      if (svc_handler->peer ().enable (ACE_NONBLOCK) == -1)
    -        result = -1;
    -    }
    -  // Otherwise, make sure it's disabled by default.
    -  else if (svc_handler->peer ().disable (ACE_NONBLOCK) == -1)
    -    result = -1;
    -
    -  if (result == 0 && svc_handler->open ((void *) this) == -1)
    -    result = -1;
    -
    -  if (result == -1)
    -    svc_handler->close (0);
    -
    -  return result;
    -}
    -
    -// Template Method that makes a SVC_HANDLER (using the appropriate
    -// creation strategy), accept the connection into the SVC_HANDLER, and
    -// then activate the SVC_HANDLER.
    -
    -template  int
    -ACE_Acceptor::handle_input (ACE_HANDLE listener)
    -{
    -  ACE_TRACE ("ACE_Acceptor::handle_input");
    -  ACE_Handle_Set conn_handle;
    -
    -  // Default is "timeout (0, 0)," which means "poll."
    -  ACE_Time_Value timeout;
    -
    -  // Accept connections from clients.  Note that a loop is used for two
    -  // reasons:
    -  //
    -  // 1. It allows us to accept all pending connections without an
    -  //    extra trip through the ACE_Reactor and without having to use
    -  //    non-blocking I/O...
    -  //
    -  // 2. It allows the TLI_SAP::ACE_Acceptor class to work correctly (don't
    -  //    ask -- TLI is *horrible*...).
    -
    -  // @@ What should we do if any of the substrategies fail?  Right
    -  // now, we just log an error message and return 0 (which means that
    -  // the Acceptor remains registered with the Reactor)...
    -  do
    -    {
    -      // Create a service handler, using the appropriate creation
    -      // strategy.
    -
    -      SVC_HANDLER *svc_handler = 0;
    -
    -      if (this->make_svc_handler (svc_handler) == -1)
    -        ACE_ERROR_RETURN ((LM_ERROR,
    -                           ASYS_TEXT ("%p\n"),
    -                           ASYS_TEXT ("make_svc_handler")),
    -                          0);
    -
    -      // Accept connection into the Svc_Handler.
    -
    -      else if (this->accept_svc_handler (svc_handler) == -1)
    -        ACE_ERROR_RETURN ((LM_ERROR,
    -                           ASYS_TEXT ("%p\n"),
    -                           ASYS_TEXT ("accept_svc_handler")),
    -                          0);
    -      // Activate the  using the designated concurrency
    -      // strategy (note that this method becomes responsible for
    -      // handling errors and freeing up the memory if things go
    -      // awry...).
    -
    -      else if (this->activate_svc_handler (svc_handler) == -1)
    -        ACE_ERROR_RETURN ((LM_ERROR,
    -                           ASYS_TEXT ("%p\n"),
    -                           ASYS_TEXT ("activate_svc_handler")),
    -                          0);
    -      conn_handle.set_bit (listener);
    -    }
    -
    -  // Now, check to see if there is another connection pending and
    -  // break out of the loop if there is none.
    -  while (this->use_select_
    -         && ACE_OS::select (int (listener) + 1,
    -                            conn_handle,
    -                            0,
    -                            0,
    -                            &timeout) == 1);
    -  return 0;
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Strategy_Acceptor)
    -
    -template  int
    -ACE_Strategy_Acceptor::suspend (void)
    -{
    -  ACE_TRACE ("ACE_Strategy_Acceptor::suspend");
    -
    -  // First suspend the SVC_HANDLER's we've created.
    -  if (this->scheduling_strategy_->suspend () == -1)
    -    return -1;
    -  else   // Then suspend ourselves.
    -    return ACE_Acceptor::suspend ();
    -}
    -
    -template  int
    -ACE_Strategy_Acceptor::resume (void)
    -{
    -  ACE_TRACE ("ACE_Strategy_Acceptor::resume");
    -
    -  // First resume ourselves.
    -  if (ACE_Acceptor::resume () == -1)
    -    return -1;
    -  else // Then resume the SVC_HANDLER's we've created.
    -    return this->scheduling_strategy_->resume ();
    -}
    -
    -template  void
    -ACE_Strategy_Acceptor::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Strategy_Acceptor::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_Acceptor::dump ();
    -  this->creation_strategy_->dump ();
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("delete_creation_strategy_ = %d"), delete_creation_strategy_));
    -  this->accept_strategy_->dump ();
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("delete_accept_strategy_ = %d"), delete_accept_strategy_));
    -  this->concurrency_strategy_->dump ();
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("delete_concurrency_strategy_ = %d"), delete_concurrency_strategy_));
    -  this->scheduling_strategy_->dump ();
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("delete_scheduling_strategy_ = %d"), delete_scheduling_strategy_));
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("\nservice_name_ = %s"),
    -              this->service_name_ == 0 ? ASYS_TEXT ("") : this->service_name_));
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("\nservice_description_ = %s"),
    -              this->service_description_ == 0 ? ASYS_TEXT ("") : this->service_description_));
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("\nservice_port_ = %d"), this->service_port_));
    -  this->service_addr_.dump ();
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -template  ACE_PEER_ACCEPTOR &
    -ACE_Strategy_Acceptor::acceptor (void) const
    -{
    -  ACE_TRACE ("ACE_Strategy_Acceptor::acceptor");
    -  return this->accept_strategy_->acceptor ();
    -}
    -
    -template 
    -ACE_Strategy_Acceptor::operator ACE_PEER_ACCEPTOR & () const
    -{
    -  ACE_TRACE ("ACE_Strategy_Acceptor::operator ACE_PEER_ACCEPTOR &");
    -  return this->accept_strategy_->acceptor ();
    -}
    -
    -// Returns ACE_HANDLE of the underlying Acceptor_Strategy.
    -
    -template  ACE_HANDLE
    -ACE_Strategy_Acceptor::get_handle (void) const
    -{
    -  ACE_TRACE ("ACE_Strategy_Acceptor::get_handle");
    -  return this->accept_strategy_->get_handle ();
    -}
    -
    -// Initialize the appropriate strategies for creation, passive
    -// connection acceptance, and concurrency, and then register 
    -// with the Reactor and listen for connection requests at the
    -// designated .
    -
    -template  int
    -ACE_Strategy_Acceptor::open
    -  (const ACE_PEER_ACCEPTOR_ADDR &local_addr,
    -   ACE_Reactor *reactor,
    -   ACE_Creation_Strategy *cre_s,
    -   ACE_Accept_Strategy *acc_s,
    -   ACE_Concurrency_Strategy *con_s,
    -   ACE_Scheduling_Strategy *sch_s,
    -   const ASYS_TCHAR *service_name,
    -   const ASYS_TCHAR *service_description,
    -   int use_select)
    -{
    -  ACE_TRACE ("ACE_Strategy_Acceptor::open");
    -
    -  if (this->service_name_ == 0 && service_name != 0)
    -    ACE_ALLOCATOR_RETURN (this->service_name_,
    -                          ACE_OS::strdup (service_name),
    -                          -1);
    -  if (this->service_description_ == 0 && service_description != 0)
    -    ACE_ALLOCATOR_RETURN (this->service_description_,
    -                          ACE_OS::strdup (service_description),
    -                          -1);
    -  this->reactor (reactor);
    -
    -  // Must supply a valid Reactor to Acceptor::open()...
    -  if (reactor == 0)
    -    {
    -      errno = EINVAL;
    -      return -1;
    -    }
    -
    -  // Initialize the creation strategy.
    -
    -  if (cre_s == 0)
    -    {
    -      ACE_NEW_RETURN (cre_s,
    -                      CREATION_STRATEGY,
    -                      -1);
    -      this->delete_creation_strategy_ = 1;
    -    }
    -  this->creation_strategy_ = cre_s;
    -
    -  // Initialize the accept strategy.
    -
    -  if (acc_s == 0)
    -    {
    -      ACE_NEW_RETURN (acc_s,
    -                      ACCEPT_STRATEGY (this->reactor ()),
    -                      -1);
    -      this->delete_accept_strategy_ = 1;
    -    }
    -  this->accept_strategy_ = acc_s;
    -
    -  if (this->accept_strategy_->open (local_addr, 1) == -1)
    -    return -1;
    -
    -  // Initialize the concurrency strategy.
    -
    -  if (con_s == 0)
    -    {
    -      ACE_NEW_RETURN (con_s,
    -                      CONCURRENCY_STRATEGY,
    -                      -1);
    -      this->delete_concurrency_strategy_ = 1;
    -    }
    -  this->concurrency_strategy_ = con_s;
    -
    -  // Initialize the scheduling strategy.
    -
    -  if (sch_s == 0)
    -    {
    -      ACE_NEW_RETURN (sch_s,
    -                      SCHEDULING_STRATEGY,
    -                      -1);
    -      this->delete_scheduling_strategy_ = 1;
    -    }
    -  this->scheduling_strategy_ = sch_s;
    -
    -  this->use_select_ = use_select;
    -
    -  return this->reactor ()->register_handler
    -    (this,
    -     ACE_Event_Handler::ACCEPT_MASK);
    -}
    -
    -// Simple constructor.
    -
    -template 
    -ACE_Strategy_Acceptor::ACE_Strategy_Acceptor
    -  (const ASYS_TCHAR service_name[],
    -   const ASYS_TCHAR service_description[],
    -   int use_select)
    -    : creation_strategy_ (0),
    -      delete_creation_strategy_ (0),
    -      accept_strategy_ (0),
    -      delete_accept_strategy_ (0),
    -      concurrency_strategy_ (0),
    -      delete_concurrency_strategy_ (0),
    -      scheduling_strategy_ (0),
    -      delete_scheduling_strategy_ (0),
    -      service_name_ (0),
    -      service_description_ (0),
    -      service_port_ (0)
    -{
    -  ACE_TRACE ("ACE_Strategy_Acceptor::ACE_Strategy_Acceptor");
    -
    -  if (service_name != 0)
    -    ACE_ALLOCATOR (this->service_name_,
    -                   ACE_OS::strdup (service_name));
    -  if (service_description != 0)
    -    ACE_ALLOCATOR (this->service_description_,
    -                   ACE_OS::strdup (service_description));
    -  this->use_select_ = use_select;
    -}
    -
    -template 
    -ACE_Strategy_Acceptor::ACE_Strategy_Acceptor
    -  (const ACE_PEER_ACCEPTOR_ADDR &addr,
    -   ACE_Reactor *reactor,
    -   ACE_Creation_Strategy *cre_s,
    -   ACE_Accept_Strategy *acc_s,
    -   ACE_Concurrency_Strategy *con_s,
    -   ACE_Scheduling_Strategy *sch_s,
    -   const ASYS_TCHAR service_name[],
    -   const ASYS_TCHAR service_description[],
    -   int use_select)
    -    : creation_strategy_ (0),
    -      delete_creation_strategy_ (0),
    -      accept_strategy_ (0),
    -      delete_accept_strategy_ (0),
    -      concurrency_strategy_ (0),
    -      delete_concurrency_strategy_ (0),
    -      scheduling_strategy_ (0),
    -      delete_scheduling_strategy_ (0),
    -      service_name_ (0),
    -      service_description_ (0),
    -      service_port_ (0)
    -{
    -  ACE_TRACE ("ACE_Strategy_Acceptor::ACE_Strategy_Acceptor");
    -
    -  if (this->open (addr,
    -                  reactor,
    -                  cre_s,
    -                  acc_s,
    -                  con_s,
    -                  sch_s,
    -                  service_name,
    -                  service_description,
    -                  use_select) == -1)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT ("%p\n"),
    -                ASYS_TEXT ("ACE_Strategy_Acceptor::ACE_Strategy_Acceptor")));
    -}
    -
    -// Perform termination activities when  is removed from the
    -// .
    -
    -template  int
    -ACE_Strategy_Acceptor::handle_close (ACE_HANDLE,
    -                                                                       ACE_Reactor_Mask)
    -{
    -  ACE_TRACE ("ACE_Strategy_Acceptor::handle_close");
    -  // Guard against multiple closes.
    -  if (this->reactor () != 0)
    -    {
    -      ACE_HANDLE handle = this->get_handle ();
    -
    -      if (this->delete_creation_strategy_)
    -        delete this->creation_strategy_;
    -      this->delete_creation_strategy_ = 0;
    -      this->creation_strategy_ = 0;
    -
    -      if (this->delete_accept_strategy_)
    -        delete this->accept_strategy_;
    -      this->delete_accept_strategy_ = 0;
    -      this->accept_strategy_ = 0;
    -
    -      if (this->delete_concurrency_strategy_)
    -        delete this->concurrency_strategy_;
    -      this->delete_concurrency_strategy_ = 0;
    -      this->concurrency_strategy_ = 0;
    -
    -      if (this->delete_scheduling_strategy_)
    -        delete this->scheduling_strategy_;
    -      this->delete_scheduling_strategy_ = 0;
    -      this->scheduling_strategy_ = 0;
    -
    -      // We must use the  obtained *before* we deleted the
    -      // accept_strategy_...
    -
    -      this->reactor ()->remove_handler
    -        (handle,
    -         ACE_Event_Handler::ACCEPT_MASK | ACE_Event_Handler::DONT_CALL);
    -
    -      // Set the Reactor to 0 so that we don't try to close down
    -      // again.
    -      this->reactor (0);
    -    }
    -  return 0;
    -}
    -
    -// Bridge method for creating a .  The strategy for
    -// creating a  are configured into the Acceptor via it's
    -// .  The default is to create a new
    -// .  However, subclasses can override this strategy to
    -// perform  creation in any way that they like (such as
    -// creating subclass instances of , using a singleton,
    -// dynamically linking the handler, etc.).
    -
    -template  int
    -ACE_Strategy_Acceptor::make_svc_handler (SVC_HANDLER *&sh)
    -{
    -  ACE_TRACE ("ACE_Strategy_Acceptor::make_svc_handler");
    -  return this->creation_strategy_->make_svc_handler (sh);
    -}
    -
    -// Bridge method for accepting the new connection into the
    -// .  The default behavior delegates to the
    -//  in the Acceptor_Strategy.
    -
    -template  int
    -ACE_Strategy_Acceptor::accept_svc_handler
    -  (SVC_HANDLER *svc_handler)
    -{
    -  ACE_TRACE ("ACE_Strategy_Acceptor::accept_svc_handler");
    -  return this->accept_strategy_->accept_svc_handler (svc_handler);
    -}
    -
    -// Bridge method for activating a  with the appropriate
    -// concurrency strategy.  The default behavior of this method is to
    -// activate the SVC_HANDLER by calling its open() method (which allows
    -// the SVC_HANDLER to define its own concurrency strategy).  However,
    -// subclasses can override this strategy to do more sophisticated
    -// concurrency activations (such as creating the SVC_HANDLER as an
    -// "active object" via multi-threading or multi-processing).
    -
    -template  int
    -ACE_Strategy_Acceptor::activate_svc_handler
    -  (SVC_HANDLER *svc_handler)
    -{
    -  ACE_TRACE ("ACE_Strategy_Acceptor::activate_svc_handler");
    -  return this->concurrency_strategy_->activate_svc_handler
    -    (svc_handler,
    -     (void *) this);
    -}
    -
    -template 
    -ACE_Strategy_Acceptor::~ACE_Strategy_Acceptor (void)
    -{
    -  ACE_TRACE ("ACE_Strategy_Acceptor::~ACE_Strategy_Acceptor");
    -  ACE_OS::free ((void *) this->service_name_);
    -  ACE_OS::free ((void *) this->service_description_);
    -  this->handle_close ();
    -}
    -
    -// Signal the server to shutdown gracefully.
    -
    -template  int
    -ACE_Strategy_Acceptor::handle_signal (int, siginfo_t *, ucontext_t *)
    -{
    -  ACE_Reactor::end_event_loop ();
    -  return 0;
    -}
    -
    -template  int
    -ACE_Strategy_Acceptor::info (ASYS_TCHAR **strp,
    -                                                               size_t length) const
    -{
    -  ACE_TRACE ("ACE_Strategy_Acceptor::info");
    -
    -  ASYS_TCHAR buf[BUFSIZ];
    -  ASYS_TCHAR service_addr_str[BUFSIZ];
    -  ACE_PEER_ACCEPTOR_ADDR addr;
    -
    -  if (this->acceptor ().get_local_addr (addr) == -1)
    -    return -1;
    -  else if (addr.addr_to_string (service_addr_str,
    -                                sizeof service_addr_str) == -1)
    -    return -1;
    -
    -  // @@ Should add the protocol in...
    -  ACE_OS::sprintf (buf,
    -                   ASYS_TEXT ("%s\t %s #%s\n"),
    -                   this->service_name_ == 0 
    -                   ? ASYS_TEXT ("")
    -                   : this->service_name_,
    -                   service_addr_str,
    -                   this->service_description_ == 0 
    -                   ? ASYS_TEXT ("")
    -                   : this->service_description_);
    -
    -  if (*strp == 0 && (*strp = ACE_OS::strdup (buf)) == 0)
    -    return -1;
    -  else
    -    ACE_OS::strncpy (*strp, buf, length);
    -  return ACE_OS::strlen (buf);
    -}
    -
    -template  int
    -ACE_Strategy_Acceptor::fini (void)
    -{
    -  ACE_TRACE ("ACE_Strategy_Acceptor::fini");
    -  return this->ACE_Strategy_Acceptor::handle_close ();
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Oneshot_Acceptor)
    -
    -template  void
    -ACE_Oneshot_Acceptor::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Oneshot_Acceptor::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("\nsvc_handler_ = %x"), this->svc_handler_));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("\nrestart_ = %d"), this->restart_));
    -  this->peer_acceptor_.dump ();
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("delete_concurrency_strategy_ = %d"),
    -              delete_concurrency_strategy_));
    -  this->concurrency_strategy_->dump ();
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -template  int
    -ACE_Oneshot_Acceptor::open
    -  (const ACE_PEER_ACCEPTOR_ADDR &local_addr,
    -   ACE_Reactor *reactor,
    -   ACE_Concurrency_Strategy *con_s)
    -{
    -  ACE_TRACE ("ACE_Oneshot_Acceptor::open");
    -  this->reactor (reactor);
    -
    -  // Initialize the concurrency strategy.
    -
    -  if (con_s == 0)
    -    {
    -      ACE_NEW_RETURN (con_s,
    -                      ACE_Concurrency_Strategy,
    -                      -1);
    -      this->delete_concurrency_strategy_ = 1;
    -    }
    -  this->concurrency_strategy_ = con_s;
    -
    -  // Reuse the addr, even if it is already in use...!
    -  return this->peer_acceptor_.open (local_addr, 1);
    -}
    -
    -template 
    -ACE_Oneshot_Acceptor::ACE_Oneshot_Acceptor (void)
    -  : delete_concurrency_strategy_ (0)
    -{
    -  ACE_TRACE ("ACE_Oneshot_Acceptor::ACE_Oneshot_Acceptor");
    -  this->reactor (0);
    -}
    -
    -template 
    -ACE_Oneshot_Acceptor::ACE_Oneshot_Acceptor
    -  (const ACE_PEER_ACCEPTOR_ADDR &local_addr,
    -   ACE_Reactor *reactor,
    -   ACE_Concurrency_Strategy *cs)
    -    : delete_concurrency_strategy_ (0)
    -{
    -  ACE_TRACE ("ACE_Oneshot_Acceptor::ACE_Oneshot_Acceptor");
    -  if (this->open (local_addr, reactor, cs) == -1)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT ("%p\n"),
    -                ASYS_TEXT ("ACE_Oneshot_Acceptor::ACE_Oneshot_Acceptor")));
    -}
    -
    -template 
    -ACE_Oneshot_Acceptor::~ACE_Oneshot_Acceptor (void)
    -{
    -  ACE_TRACE ("ACE_Oneshot_Acceptor::~ACE_Oneshot_Acceptor");
    -  this->handle_close ();
    -}
    -
    -template  int
    -ACE_Oneshot_Acceptor::close (void)
    -{
    -  ACE_TRACE ("ACE_Oneshot_Acceptor::close");
    -  return this->handle_close ();
    -}
    -
    -template  int
    -ACE_Oneshot_Acceptor::handle_close (ACE_HANDLE,
    -                                                                      ACE_Reactor_Mask)
    -{
    -  ACE_TRACE ("ACE_Oneshot_Acceptor::handle_close");
    - 
    -  // Guard against multiple closes.
    -  if (this->delete_concurrency_strategy_)
    -    {
    -      delete this->concurrency_strategy_;
    -      this->delete_concurrency_strategy_ = 0;
    -      this->concurrency_strategy_ = 0;
    -      
    -      // Note that if we aren't actually registered with the
    -      // ACE_Reactor then it's ok for this call to fail...
    -      
    -      if (this->reactor ())
    -        this->reactor ()->remove_handler
    -          (this,
    -           ACE_Event_Handler::ACCEPT_MASK | ACE_Event_Handler::DONT_CALL);
    -      
    -      if (this->peer_acceptor_.close () == -1)
    -        ACE_ERROR ((LM_ERROR,
    -                    ASYS_TEXT ("close\n")));
    -    }
    -  return 0;
    -}
    -
    -template  int
    -ACE_Oneshot_Acceptor::handle_timeout
    -  (const ACE_Time_Value &tv,
    -   const void *arg)
    -{
    -  ACE_TRACE ("ACE_Oneshot_Acceptor::handle_timeout");
    -  errno = ETIME;
    -
    -  if (this->svc_handler_->handle_timeout (tv, arg) == -1)
    -    this->svc_handler_->handle_close (this->svc_handler_->get_handle (),
    -                                      ACE_Event_Handler::TIMER_MASK);
    -
    -  // Since we aren't necessarily registered with the Reactor, don't
    -  // bother to check the return value here...
    -  if (this->reactor ())
    -    this->reactor ()->remove_handler (this,
    -                                      ACE_Event_Handler::ACCEPT_MASK);
    -  return 0;
    -}
    -
    -template  int
    -ACE_Oneshot_Acceptor::cancel (void)
    -{
    -  ACE_TRACE ("ACE_Oneshot_Acceptor::cancel");
    -  return this->reactor () && this->reactor ()->cancel_timer (this);
    -}
    -
    -template  int
    -ACE_Oneshot_Acceptor::register_handler
    -  (SVC_HANDLER *svc_handler,
    -   const ACE_Synch_Options &synch_options,
    -   int restart)
    -{
    -  ACE_TRACE ("ACE_Oneshot_Acceptor::register_handler");
    -  // Can't do this if we don't have a Reactor.
    -  if (this->reactor () == 0)
    -    {
    -      errno = EINVAL;
    -      return -1;
    -    }
    -  else
    -    {
    -      this->svc_handler_ = svc_handler;
    -      this->restart_ = restart;
    -      ACE_Time_Value *tv = (ACE_Time_Value *) synch_options.time_value ();
    -
    -      if (tv != 0
    -          && this->reactor ()->schedule_timer (this,
    -                                               synch_options.arg (),
    -                                               *tv) == 0)
    -        return -1;
    -      else
    -        return this->reactor ()->register_handler
    -          (this,
    -           ACE_Event_Handler::ACCEPT_MASK);
    -    }
    -}
    -
    -// Bridge method for activating a  with the appropriate
    -// concurrency strategy.  The default behavior of this method is to
    -// activate the SVC_HANDLER by calling its open() method (which allows
    -// the SVC_HANDLER to define its own concurrency strategy).  However,
    -// subclasses can override this strategy to do more sophisticated
    -// concurrency activations (such as creating the SVC_HANDLER as an
    -// "active object" via multi-threading or multi-processing).
    -
    -template  int
    -ACE_Oneshot_Acceptor::activate_svc_handler
    -  (SVC_HANDLER *svc_handler)
    -{
    -  ACE_TRACE ("ACE_Oneshot_Acceptor::activate_svc_handler");
    -  return this->concurrency_strategy_->activate_svc_handler
    -    (svc_handler,
    -     (void *) this);
    -}
    -
    -// Factors out the code shared between the  and 
    -// methods.
    -
    -template  int
    -ACE_Oneshot_Acceptor::shared_accept
    -  (SVC_HANDLER *svc_handler,
    -   ACE_PEER_ACCEPTOR_ADDR *remote_addr,
    -   ACE_Time_Value *timeout,
    -   int restart,
    -   int reset_new_handle)
    -{
    -  ACE_TRACE ("ACE_Oneshot_Acceptor::shared_accept");
    -  if (svc_handler == 0)
    -    return -1;
    -
    -  // Accept connection into the Svc_Handler.
    -  else if (this->peer_acceptor_.accept (svc_handler->peer (), // stream
    -                                        remote_addr, // remote address
    -                                        timeout, // timeout
    -                                        restart, // restart
    -                                        reset_new_handle // reset new handle
    -                                        ) == -1)
    -    {
    -      // Check whether we just timed out or whether we failed...
    -      if (!(errno == EWOULDBLOCK || errno == ETIME))
    -        // Close down handler to avoid memory leaks.
    -        svc_handler->close (0);
    -      return -1;
    -    }
    -  // Activate the  using the designated concurrency
    -  // strategy (note that this method becomes responsible for handling
    -  // errors and freeing up the memory if things go awry...)
    -  else
    -    return this->activate_svc_handler (svc_handler);
    -}
    -
    -// Make a SVC_HANDLER, accept the connection into the SVC_HANDLER, and
    -// then activate the SVC_HANDLER.  Note that SVC_HANDLER::open()
    -// decides what type of concurrency strategy to use.
    -
    -template  int
    -ACE_Oneshot_Acceptor::accept
    -  (SVC_HANDLER *svc_handler,
    -   ACE_PEER_ACCEPTOR_ADDR *remote_addr,
    -   const ACE_Synch_Options &synch_options,
    -   int restart,
    -   int reset_new_handle)
    -{
    -  ACE_TRACE ("ACE_Oneshot_Acceptor::accept");
    -  // Note that if timeout == ACE_Time_Value (x, y) where (x > 0 || y >
    -  // 0) then this->connector_.connect() will block synchronously.  If
    -  //  is set then we don't want this to happen (since we
    -  // want the ACE_Reactor to do the timeout asynchronously).
    -  // Therefore, we'll force this->connector_ to use ACE_Time_Value (0,
    -  // 0) in this case...
    -
    -  ACE_Time_Value *timeout;
    -  int use_reactor = synch_options[ACE_Synch_Options::USE_REACTOR];
    -
    -  if (use_reactor)
    -    timeout = (ACE_Time_Value *) &ACE_Time_Value::zero;
    -  else
    -    timeout = (ACE_Time_Value *) synch_options.time_value ();
    -
    -  if (this->shared_accept (svc_handler, // stream
    -                           remote_addr, // remote address
    -                           timeout, // timeout
    -                           restart, // restart
    -                           reset_new_handle // reset new handler
    -                           ) == -1)
    -    {
    -      if (use_reactor && errno == EWOULDBLOCK)
    -        // We couldn't accept right away, so let's wait in the
    -        // .
    -        this->register_handler (svc_handler,
    -                                synch_options,
    -                                restart);
    -      return -1;
    -    }
    -  return 0;
    -}
    -
    -// Accepts one pending connection from a client (since we're the
    -// "oneshot" Acceptor).
    -
    -template  int
    -ACE_Oneshot_Acceptor::handle_input (ACE_HANDLE)
    -{
    -  ACE_TRACE ("ACE_Oneshot_Acceptor::handle_input");
    -  int result = 0;
    -
    -  // Cancel any timer that might be pending.
    -  this->cancel ();
    -
    -  // Try to find out if the implementation of the reactor that we are
    -  // using requires us to reset the event association for the newly
    -  // created handle.  This is because the newly created handle will
    -  // inherit the properties of the listen handle, including its event
    -  // associations.
    -  int reset_new_handle = this->reactor ()->uses_event_associations ();
    -
    -  if (this->shared_accept (this->svc_handler_, // stream
    -                           0, // remote address
    -                           0, // timeout
    -                           this->restart_, // restart
    -                           reset_new_handle // reset new handle
    -                           ) == -1)
    -    result = -1;
    -  if (this->reactor ()
    -      && this->reactor ()->remove_handler
    -      (this,
    -       ACE_Event_Handler::ACCEPT_MASK | ACE_Event_Handler::DONT_CALL) == -1)
    -    result = -1;
    -  return result;
    -}
    -
    -// Hook called by the explicit dynamic linking facility.
    -
    -template  int
    -ACE_Oneshot_Acceptor::init (int, ASYS_TCHAR *[])
    -{
    -  ACE_TRACE ("ACE_Oneshot_Acceptor::init");
    -  return -1;
    -}
    -
    -template  int
    -ACE_Oneshot_Acceptor::fini (void)
    -{
    -  ACE_TRACE ("ACE_Oneshot_Acceptor::fini");
    -  return this->handle_close ();
    -}
    -
    -template  int
    -ACE_Oneshot_Acceptor::info (ASYS_TCHAR **strp,
    -                                                              size_t length) const
    -{
    -  ACE_TRACE ("ACE_Oneshot_Acceptor::info");
    -  ASYS_TCHAR buf[BUFSIZ];
    -  ASYS_TCHAR addr_str[BUFSIZ];
    -  ACE_PEER_ACCEPTOR_ADDR addr;
    -
    -  if (this->peer_acceptor_.get_local_addr (addr) == -1)
    -    return -1;
    -  else if (addr.addr_to_string (addr_str, sizeof addr_str) == -1)
    -    return -1;
    -
    -  ACE_OS::sprintf (buf,
    -                   ASYS_TEXT ("%s\t %s %s"),
    -                   ASYS_TEXT ("ACE_Oneshot_Acceptor"),
    -                   addr_str,
    -                   ASYS_TEXT ("#oneshot acceptor factory\n"));
    -
    -  if (*strp == 0 && (*strp = ACE_OS::strdup (buf)) == 0)
    -    return -1;
    -  else
    -    ACE_OS::strncpy (*strp, buf, length);
    -  return ACE_OS::strlen (buf);
    -}
    -
    -template  int
    -ACE_Oneshot_Acceptor::suspend (void)
    -{
    -  ACE_TRACE ("ACE_Oneshot_Acceptor::suspend");
    -  return this->reactor () && this->reactor ()->suspend_handler (this);
    -}
    -
    -template  int
    -ACE_Oneshot_Acceptor::resume (void)
    -{
    -  ACE_TRACE ("ACE_Oneshot_Acceptor::resume");
    -  return this->reactor () && this->reactor ()->resume_handler (this);
    -}
    -
    -// Returns ACE_HANDLE of the underlying peer_acceptor.
    -
    -template  ACE_HANDLE
    -ACE_Oneshot_Acceptor::get_handle (void) const
    -{
    -  ACE_TRACE ("ACE_Oneshot_Acceptor::get_handle");
    -  return this->peer_acceptor_.get_handle ();
    -}
    -
    -template  ACE_PEER_ACCEPTOR &
    -ACE_Oneshot_Acceptor::acceptor (void) const
    -{
    -  ACE_TRACE ("ACE_Oneshot_Acceptor::acceptor");
    -  return (ACE_PEER_ACCEPTOR &) this->peer_acceptor_;
    -}
    -
    -template 
    -ACE_Oneshot_Acceptor::operator ACE_PEER_ACCEPTOR & () const
    -{
    -  ACE_TRACE ("ACE_Oneshot_Acceptor::operator ACE_PEER_ACCEPTOR &");
    -  return (ACE_PEER_ACCEPTOR &) this->peer_acceptor_;
    -}
    -
    -#endif /* ACE_ACCEPTOR_C */
    diff --git a/ace/Acceptor.h b/ace/Acceptor.h
    deleted file mode 100644
    index 615229f7cea..00000000000
    --- a/ace/Acceptor.h
    +++ /dev/null
    @@ -1,530 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Acceptor.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_ACCEPTOR_H
    -#define ACE_ACCEPTOR_H
    -
    -#include "ace/Service_Config.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Service_Object.h"
    -#include "ace/Svc_Handler.h"
    -#include "ace/Strategies.h"
    -
    -template 
    -class ACE_Acceptor : public ACE_Service_Object
    -{
    -  // = TITLE
    -  //     Abstract factory for creating a service handler
    -  //     (SVC_HANDLER), accepting into the SVC_HANDLER, and
    -  //     activating the SVC_HANDLER.
    -  //
    -  // = DESCRIPTION
    -  //     Implements the basic strategy for passively establishing
    -  //     connections with clients.  An ACE_Acceptor is parameterized
    -  //     by concrete types that conform to the interfaces of
    -  //     PEER_ACCEPTOR and SVC_HANDLER.  The PEER_ACCEPTOR is
    -  //     instantiated with a transport mechanism that passively
    -  //     establishes connections.  The SVC_HANDLER is instantiated
    -  //     with a concrete type that performs the application-specific
    -  //     service.  An ACE_Acceptor inherits from ACE_Service_Object,
    -  //     which in turn inherits from ACE_Event_Handler.  This enables
    -  //     the ACE_Reactor to dispatch the ACE_Acceptor's handle_input
    -  //     method when connection events occur.  The handle_input method
    -  //     performs the ACE_Acceptor's default creation, connection
    -  //     establishment, and service activation strategies.  These
    -  //     strategies can be overridden by subclasses individually or as
    -  //     a group.
    -public:
    -  // = Initialization and termination methods.
    -  ACE_Acceptor (ACE_Reactor * = 0,
    -                int use_select = 1);
    -  // "Do-nothing" constructor.
    -
    -  ACE_Acceptor (const ACE_PEER_ACCEPTOR_ADDR &local_addr,
    -                ACE_Reactor * = ACE_Reactor::instance (),
    -                int flags = 0,
    -                int use_select = 1,
    -                int reuse_addr = 1);
    -  // Initialize and register  with the Reactor and listen for
    -  // connection requests at the designated .  
    -  // indicates how 's should be initialized prior to
    -  // being activated.  Right now, the only flag that is processed is
    -  // , which enabled non-blocking I/O on the
    -  //  when it is opened.  If  is non-zero
    -  // then  is used to determine when to break out of the
    -  //  loop.   is passed down to the
    -  // .  If it is non-zero this will allow the OS to
    -  // reuse this listen port.
    -
    -  virtual ~ACE_Acceptor (void);
    -  // Close down the Acceptor's resources.
    -
    -  virtual operator ACE_PEER_ACCEPTOR &() const;
    -  // Return the underlying PEER_ACCEPTOR object.
    -
    -  virtual ACE_PEER_ACCEPTOR &acceptor (void) const;
    -  // Return the underlying PEER_ACCEPTOR object.
    -
    -  virtual ACE_HANDLE get_handle (void) const;
    -  // Returns the listening acceptor's .
    -
    -  virtual int close (void);
    -  // Close down the Acceptor
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  // = The following three methods define the Acceptor's strategies
    -  // for creating, accepting, and activating SVC_HANDLER's,
    -  // respectively.
    -
    -  virtual int make_svc_handler (SVC_HANDLER *&sh);
    -  // Bridge method for creating a SVC_HANDLER.  The default is to
    -  // create a new  if  == 0, else  is unchanged.
    -  // However, subclasses can override this policy to perform
    -  // SVC_HANDLER creation in any way that they like (such as creating
    -  // subclass instances of SVC_HANDLER, using a singleton, dynamically
    -  // linking the handler, etc.).  Returns -1 on failure, else 0.
    -
    -  virtual int accept_svc_handler (SVC_HANDLER *svc_handler);
    -  // Bridge method for accepting the new connection into the
    -  // .  The default behavior delegates to the
    -  // PEER_ACCEPTOR::accept.
    -
    -  virtual int activate_svc_handler (SVC_HANDLER *svc_handler);
    -  // Bridge method for activating a  with the appropriate
    -  // concurrency strategy.  The default behavior of this method is to
    -  // activate the SVC_HANDLER by calling its  method (which
    -  // allows the SVC_HANDLER to define its own concurrency strategy).
    -  // However, subclasses can override this strategy to do more
    -  // sophisticated concurrency activations (such as making the
    -  // SVC_HANDLER as an "active object" via multi-threading or
    -  // multi-processing).
    -
    -  // = Demultiplexing hooks.
    -  virtual int handle_close (ACE_HANDLE = ACE_INVALID_HANDLE,
    -                            ACE_Reactor_Mask = ACE_Event_Handler::ALL_EVENTS_MASK);
    -  // Perform termination activities when  is removed from the
    -  // .
    -
    -  virtual int handle_input (ACE_HANDLE);
    -  // Accepts all pending connections from clients, and creates and
    -  // activates SVC_HANDLERs.
    -
    -  // = Dynamic linking hooks.
    -  virtual int init (int argc, ASYS_TCHAR *argv[]);
    -  // Default version does no work and returns -1.  Must be overloaded
    -  // by application developer to do anything meaningful.
    -
    -  virtual int fini (void);
    -  // Calls .
    -
    -  virtual int info (ASYS_TCHAR **buf, size_t) const;
    -  // Default version returns address info in .
    -
    -  // = Service management hooks.
    -  virtual int suspend (void);
    -  // This method calls .
    -
    -  virtual int resume (void);
    -  // This method calls .
    -
    -protected:
    -  ACE_PEER_ACCEPTOR peer_acceptor_;
    -  // Concrete factory for accepting connections from clients...
    -
    -  int flags_;
    -  // Flags that indicate how 's should be initialized
    -  // prior to being activated.  Right now, the only flag that is
    -  // processed is , which enabled non-blocking I/O on
    -  // the  when it is opened.
    -
    -  int use_select_;
    -  // Flag that indicates whether it shall use  into ; the data must be aligned to .
    -
    -  ACE_CDR::Boolean write_array (ACE_OutputCDR& output,
    -                                const void *x,
    -                                size_t size,
    -                                size_t align,
    -                                ACE_CDR::ULong length);
    -  // Efficiently write  elements of size  from  into
    -  // . Before inserting the elements enough padding is added
    -  // to ensure that the elements will be aligned to  in the
    -  // stream.
    -
    -  int adjust (ACE_OutputCDR& out,
    -              size_t size,
    -              size_t align,
    -              char *&buf);
    -  // Exposes the stream implementation of , this is useful in
    -  // many cases to minimize memory allocations during marshaling.
    -  // On success  will contain a contiguous area in the CDR stream
    -  // that can hold  bytes aligned to .
    -  // Results
    -
    -  void good_bit (ACE_OutputCDR& out, int bit);
    -  // Used by derived classes to set errors in the CDR stream.
    -};
    -
    -// ****************************************************************
    -
    -class ACE_Export ACE_WChar_Codeset_Translator
    -{
    -  // = TITLE
    -  //   Codeset translation routines common to both Output and Input
    -  //   CDR streams.
    -  //
    -  // = DESCRIPTION
    -  //   This class is a base class for defining codeset translation
    -  //   routines to handle the character set translations required by
    -  //   both CDR Input streams and CDR Output streams.
    -  //
    -public:
    -  virtual ACE_CDR::Boolean read_wchar (ACE_InputCDR&,
    -                                       ACE_CDR::WChar&) = 0;
    -  virtual ACE_CDR::Boolean read_wstring (ACE_InputCDR&,
    -                                         ACE_CDR::WChar *&) = 0;
    -  virtual ACE_CDR::Boolean read_wchar_array (ACE_InputCDR&,
    -                                             ACE_CDR::WChar*,
    -                                             ACE_CDR::ULong) = 0;
    -  virtual ACE_CDR::Boolean write_wchar (ACE_OutputCDR&,
    -                                        ACE_CDR::WChar) = 0;
    -  virtual ACE_CDR::Boolean write_wstring (ACE_OutputCDR&,
    -                                          ACE_CDR::ULong,
    -                                          const ACE_CDR::WChar*) = 0;
    -  virtual ACE_CDR::Boolean write_wchar_array (ACE_OutputCDR&,
    -                                              const ACE_CDR::WChar*,
    -                                              ACE_CDR::ULong) = 0;
    -
    -protected:
    -  ACE_CDR::Boolean read_1 (ACE_InputCDR& input,
    -                           ACE_CDR::Octet *x);
    -  ACE_CDR::Boolean read_2 (ACE_InputCDR& input,
    -                           ACE_CDR::UShort *x);
    -  ACE_CDR::Boolean read_4 (ACE_InputCDR& input,
    -                           ACE_CDR::ULong *x);
    -  ACE_CDR::Boolean write_1 (ACE_OutputCDR& output,
    -                            const ACE_CDR::Octet *x);
    -  ACE_CDR::Boolean write_2 (ACE_OutputCDR& output,
    -                            const ACE_CDR::UShort *x);
    -  ACE_CDR::Boolean write_4 (ACE_OutputCDR& output,
    -                            const ACE_CDR::ULong *x);
    -  // Children have access to low-level routines because they cannot
    -  // use read_char or something similar (it would recurse).
    -
    -  ACE_CDR::Boolean read_array (ACE_InputCDR& input,
    -                               void* x,
    -                               size_t size,
    -                               size_t align,
    -                               ACE_CDR::ULong length);
    -  // Efficiently read  elements of size  each from
    -  //  into ; the data must be aligned to .
    -
    -  ACE_CDR::Boolean write_array (ACE_OutputCDR& output,
    -                                const void *x,
    -                                size_t size,
    -                                size_t align,
    -                                ACE_CDR::ULong length);
    -  // Efficiently write  elements of size  from  into
    -  // . Before inserting the elements enough padding is added
    -  // to ensure that the elements will be aligned to  in the
    -  // stream.
    -
    -  int adjust (ACE_OutputCDR& out,
    -              size_t size,
    -              size_t align,
    -              char *&buf);
    -  // Exposes the stream implementation of , this is useful in
    -  // many cases to minimize memory allocations during marshaling.
    -  // On success  will contain a contiguous area in the CDR stream
    -  // that can hold  bytes aligned to .
    -  // Results
    -
    -  void good_bit (ACE_OutputCDR& out, int bit);
    -  // Used by derived classes to set errors in the CDR stream.
    -};
    -
    -#if defined (__ACE_INLINE__)
    -# include "ace/CDR_Stream.i"
    -#else /* __ACE_INLINE__ */
    -
    -// Not used by CORBA or TAO
    -extern ACE_Export ACE_CDR::Boolean operator<< (ACE_OutputCDR &os,
    -                                               ACE_CDR::Char x);
    -// CDR output operators for primitive types
    -
    -extern ACE_Export ACE_CDR::Boolean operator<< (ACE_OutputCDR &os,
    -                                               ACE_CDR::Short x);
    -extern ACE_Export ACE_CDR::Boolean operator<< (ACE_OutputCDR &os,
    -                                               ACE_CDR::UShort x);
    -extern ACE_Export ACE_CDR::Boolean operator<< (ACE_OutputCDR &os,
    -                                               ACE_CDR::Long x);
    -extern ACE_Export ACE_CDR::Boolean operator<< (ACE_OutputCDR &os,
    -                                               ACE_CDR::ULong x);
    -extern ACE_Export ACE_CDR::Boolean operator<< (ACE_OutputCDR &os,
    -                                               ACE_CDR::LongLong x);
    -extern ACE_Export ACE_CDR::Boolean operator<< (ACE_OutputCDR &os,
    -                                               ACE_CDR::ULongLong x);
    -extern ACE_Export ACE_CDR::Boolean operator<< (ACE_OutputCDR& os,
    -                                               ACE_CDR::LongDouble x);
    -extern ACE_Export ACE_CDR::Boolean operator<< (ACE_OutputCDR &os,
    -                                               ACE_CDR::Float x);
    -extern ACE_Export ACE_CDR::Boolean operator<< (ACE_OutputCDR &os,
    -                                               ACE_CDR::Double x);
    -extern ACE_Export ACE_CDR::Boolean operator<< (ACE_OutputCDR &os,
    -                                               const ACE_CString &x);
    -
    -// CDR output operator from helper classes
    -
    -extern ACE_Export ACE_CDR::Boolean operator<< (ACE_OutputCDR &os,
    -                                               ACE_OutputCDR::from_boolean x);
    -extern ACE_Export ACE_CDR::Boolean operator<< (ACE_OutputCDR &os,
    -                                               ACE_OutputCDR::from_char x);
    -extern ACE_Export ACE_CDR::Boolean operator<< (ACE_OutputCDR &os,
    -                                               ACE_OutputCDR::from_wchar x);
    -extern ACE_Export ACE_CDR::Boolean operator<< (ACE_OutputCDR &os,
    -                                               ACE_OutputCDR::from_octet x);
    -extern ACE_Export ACE_CDR::Boolean operator<< (ACE_OutputCDR &os,
    -                                               ACE_OutputCDR::from_string x);
    -extern ACE_Export ACE_CDR::Boolean operator<< (ACE_OutputCDR &os,
    -                                               ACE_OutputCDR::from_wstring x);
    -extern ACE_Export ACE_CDR::Boolean operator<< (ACE_OutputCDR &os,
    -                                               const ACE_CDR::Char* x);
    -extern ACE_Export ACE_CDR::Boolean operator<< (ACE_OutputCDR &os,
    -                                               const ACE_CDR::WChar* x);
    -
    -// Not used by CORBA or TAO
    -extern ACE_Export ACE_CDR::Boolean operator>> (ACE_InputCDR &is,
    -                                               ACE_CDR::Char &x);
    -// CDR input operators for primitive types
    -
    -extern ACE_Export ACE_CDR::Boolean operator>> (ACE_InputCDR &is,
    -                                               ACE_CDR::Short &x);
    -extern ACE_Export ACE_CDR::Boolean operator>> (ACE_InputCDR &is,
    -                                               ACE_CDR::UShort &x);
    -extern ACE_Export ACE_CDR::Boolean operator>> (ACE_InputCDR &is,
    -                                               ACE_CDR::Long &x);
    -extern ACE_Export ACE_CDR::Boolean operator>> (ACE_InputCDR &is,
    -                                               ACE_CDR::ULong &x);
    -extern ACE_Export ACE_CDR::Boolean operator>> (ACE_InputCDR &is,
    -                                               ACE_CDR::LongLong &x);
    -extern ACE_Export ACE_CDR::Boolean operator>> (ACE_InputCDR &is,
    -                                               ACE_CDR::ULongLong &x);
    -extern ACE_Export ACE_CDR::Boolean operator>> (ACE_InputCDR &is,
    -                                               ACE_CDR::LongDouble &x);
    -extern ACE_Export ACE_CDR::Boolean operator>> (ACE_InputCDR &is,
    -                                               ACE_CDR::Float &x);
    -extern ACE_Export ACE_CDR::Boolean operator>> (ACE_InputCDR &is,
    -                                               ACE_CDR::Double &x);
    -extern ACE_Export ACE_CDR::Boolean operator>> (ACE_InputCDR &is,
    -                                               ACE_CString &x);
    -
    -// CDR input operator from helper classes
    -
    -extern ACE_Export ACE_CDR::Boolean operator>> (ACE_InputCDR &is,
    -                                               ACE_InputCDR::to_boolean x);
    -extern ACE_Export ACE_CDR::Boolean operator>> (ACE_InputCDR &is,
    -                                               ACE_InputCDR::to_char x);
    -extern ACE_Export ACE_CDR::Boolean operator>> (ACE_InputCDR &is,
    -                                               ACE_InputCDR::to_wchar x);
    -extern ACE_Export ACE_CDR::Boolean operator>> (ACE_InputCDR &is,
    -                                               ACE_InputCDR::to_octet x);
    -extern ACE_Export ACE_CDR::Boolean operator>> (ACE_InputCDR &is,
    -                                               ACE_InputCDR::to_string x);
    -extern ACE_Export ACE_CDR::Boolean operator>> (ACE_InputCDR &is,
    -                                               ACE_InputCDR::to_wstring x);
    -extern ACE_Export ACE_CDR::Boolean operator>> (ACE_InputCDR &is,
    -                                               ACE_CDR::Char*& x);
    -extern ACE_Export ACE_CDR::Boolean operator>> (ACE_InputCDR &is,
    -                                               ACE_CDR::WChar*& x);
    -
    -#endif /* __ACE_INLINE */
    -
    -#endif /* ACE_CDR_H */
    diff --git a/ace/CDR_Stream.i b/ace/CDR_Stream.i
    deleted file mode 100644
    index ed3635d4503..00000000000
    --- a/ace/CDR_Stream.i
    +++ /dev/null
    @@ -1,1464 +0,0 @@
    -// -*- C++ -*-
    -// $Id$
    -
    -// ****************************************************************
    -
    -ACE_INLINE void
    -ACE_CDR::swap_2 (const char *orig, char* target)
    -{
    -  target[1] = *orig++;
    -  target[0] = *orig++;
    -}
    -
    -ACE_INLINE void
    -ACE_CDR::swap_4 (const char *orig, char* target)
    -{
    -  target [3] = *orig++;
    -  target [2] = *orig++;
    -  target [1] = *orig++;
    -  target [0] = *orig++;
    -}
    -
    -ACE_INLINE void
    -ACE_CDR::swap_8 (const char *orig, char* target)
    -{
    -  target [7] = *orig++;
    -  target [6] = *orig++;
    -  target [5] = *orig++;
    -  target [4] = *orig++;
    -  target [3] = *orig++;
    -  target [2] = *orig++;
    -  target [1] = *orig++;
    -  target [0] = *orig++;
    -}
    -
    -ACE_INLINE void
    -ACE_CDR::swap_16 (const char *orig, char* target)
    -{
    -  target [15] = *orig++;
    -  target [14] = *orig++;
    -  target [13] = *orig++;
    -  target [12] = *orig++;
    -  target [11] = *orig++;
    -  target [10] = *orig++;
    -  target [9] = *orig++;
    -  target [8] = *orig++;
    -  target [7] = *orig++;
    -  target [6] = *orig++;
    -  target [5] = *orig++;
    -  target [4] = *orig++;
    -  target [3] = *orig++;
    -  target [2] = *orig++;
    -  target [1] = *orig++;
    -  target [0] = *orig++;
    -}
    -
    -ACE_INLINE void
    -ACE_CDR::mb_align (ACE_Message_Block *mb)
    -{
    -  char *start = ptr_align_binary (mb->base (),
    -                                  ACE_CDR::MAX_ALIGNMENT);
    -  mb->rd_ptr (start);
    -  mb->wr_ptr (start);
    -
    -#if defined (ACE_HAS_PURIFY)
    -  // This is a good place to zero the buffer; this is not needed
    -  // by IIOP, but makes Purify happy.
    -  if (mb->base () != 0)
    -    {
    -      (void) ACE_OS::memset (mb->base (), 0, mb->size ());
    -    }
    -#endif /* ACE_HAS_PURIFY */
    -}
    -
    -// ****************************************************************
    -
    -// implementing the special types
    -ACE_INLINE
    -ACE_OutputCDR::from_boolean::from_boolean (ACE_CDR::Boolean b)
    -  : val_ (b)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_InputCDR::to_boolean::to_boolean (ACE_CDR::Boolean &b)
    -  : ref_ (b)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_OutputCDR::from_octet::from_octet (ACE_CDR::Octet o)
    -  : val_ (o)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_InputCDR::to_octet::to_octet (ACE_CDR::Octet &o)
    -  : ref_ (o)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_OutputCDR::from_char::from_char (ACE_CDR::Char c)
    -  : val_ (c)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_InputCDR::to_char::to_char (ACE_CDR::Char &c)
    -  : ref_ (c)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_OutputCDR::from_wchar::from_wchar (ACE_CDR::WChar wc)
    -  : val_ (wc)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_InputCDR::to_wchar::to_wchar (ACE_CDR::WChar &wc)
    -  : ref_ (wc)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_OutputCDR::from_string::from_string (ACE_CDR::Char *s,
    -                                         ACE_CDR::ULong b,
    -                                         ACE_CDR::Boolean nocopy)
    -  : val_ (s),
    -    bound_ (b),
    -    nocopy_ (nocopy)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_InputCDR::to_string::to_string (ACE_CDR::Char *&s,
    -                                    ACE_CDR::ULong b)
    -  : val_ (s),
    -    bound_ (b)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_OutputCDR::from_wstring::from_wstring (ACE_CDR::WChar *ws,
    -                                           ACE_CDR::ULong b,
    -					   ACE_CDR::Boolean nocopy)
    -  : val_ (ws),
    -    bound_ (b),
    -    nocopy_ (nocopy)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_InputCDR::to_wstring::to_wstring (ACE_CDR::WChar *&ws,
    -                                      ACE_CDR::ULong b)
    -  : val_ (ws),
    -    bound_ (b)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_InputCDR::Transfer_Contents::Transfer_Contents (ACE_InputCDR &rhs)
    -  :  rhs_ (rhs)
    -{
    -}
    -
    -// ****************************************************************
    -
    -ACE_INLINE
    -ACE_OutputCDR::~ACE_OutputCDR (void)
    -{
    -  if (this->start_.cont () != 0)
    -    {
    -      ACE_Message_Block::release (this->start_.cont ());
    -      this->start_.cont (0);
    -    }
    -  this->current_ = 0;
    -}
    -
    -ACE_INLINE void
    -ACE_OutputCDR::reset (void)
    -{
    -  this->current_ = &this->start_;
    -
    -  for (ACE_Message_Block *i = &this->start_; i; i = i->cont())
    -    ACE_CDR::mb_align (i);
    -}
    -
    -// Decode the CDR stream.
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_octet (ACE_CDR::Octet x)
    -{
    -  return this->write_1 (ACE_reinterpret_cast (const ACE_CDR::Octet*,&x));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_boolean (ACE_CDR::Boolean x)
    -{
    -  return (ACE_CDR::Boolean) this->write_octet (x ? 1 : 0);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_char (ACE_CDR::Char x)
    -{
    -  if (this->char_translator_ == 0)
    -    return this->write_1 (ACE_reinterpret_cast (const ACE_CDR::Octet*, &x));
    -  return this->char_translator_->write_char (*this, x);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_wchar (ACE_CDR::WChar x)
    -{
    -  if (this->wchar_translator_ == 0)
    -    return this->write_2 (ACE_reinterpret_cast (const ACE_CDR::UShort*, &x));
    -  return this->wchar_translator_->write_wchar (*this, x);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_short (ACE_CDR::Short x)
    -{
    -  return this->write_2 (ACE_reinterpret_cast (const ACE_CDR::UShort*, &x));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_ushort (ACE_CDR::UShort x)
    -{
    -  return this->write_2 (ACE_reinterpret_cast (const ACE_CDR::UShort*, &x));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_long (ACE_CDR::Long x)
    -{
    -  return this->write_4 (ACE_reinterpret_cast (const ACE_CDR::ULong*, &x));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_ulong (ACE_CDR::ULong x)
    -{
    -  return this->write_4 (ACE_reinterpret_cast (const ACE_CDR::ULong*, &x));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_longlong (const ACE_CDR::LongLong &x)
    -{
    -  return this->write_8 (ACE_reinterpret_cast (const ACE_CDR::ULongLong*, &x));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_ulonglong (const ACE_CDR::ULongLong &x)
    -{
    -  return this->write_8 (ACE_reinterpret_cast (const ACE_CDR::ULongLong*,&x));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_float (ACE_CDR::Float x)
    -{
    -  return this->write_4 (ACE_reinterpret_cast (const ACE_CDR::ULong*, &x));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_double (const ACE_CDR::Double &x)
    -{
    -  return this->write_8 (ACE_reinterpret_cast (const ACE_CDR::ULongLong*, &x));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_longdouble (const ACE_CDR::LongDouble &x)
    -{
    -  return this->write_16 (ACE_reinterpret_cast (const ACE_CDR::LongDouble*,&x));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_string (const ACE_CDR::Char *x)
    -{
    -  if (x != 0)
    -    return this->write_string (ACE_OS::strlen(x), x);
    -  return this->write_string (0, 0);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_string (const ACE_CString &x)
    -{
    -  return this->write_string (x.length(), x.c_str());
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_wstring (const ACE_CDR::WChar *x)
    -{
    -  if (x != 0)
    -    return this->write_wstring (ACE_OS::wslen (x), x);
    -  return this->write_wstring (0, 0);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_char_array (const ACE_CDR::Char *x,
    -                                 ACE_CDR::ULong length)
    -{
    -  if (this->char_translator_ == 0)
    -    return this->write_array (x,
    -                              ACE_CDR::OCTET_SIZE,
    -                              ACE_CDR::OCTET_ALIGN,
    -                              length);
    -  return this->char_translator_->write_char_array (*this, x, length);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_wchar_array (const ACE_CDR::WChar* x,
    -                                  ACE_CDR::ULong length)
    -{
    -  if (this->wchar_translator_ == 0)
    -    return this->write_array (x,
    -                              ACE_CDR::SHORT_SIZE,
    -                              ACE_CDR::SHORT_ALIGN,
    -                              length);
    -  return this->wchar_translator_->write_wchar_array (*this, x, length);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_octet_array (const ACE_CDR::Octet* x,
    -                                  ACE_CDR::ULong length)
    -{
    -  return this->write_array (x,
    -                            ACE_CDR::OCTET_SIZE,
    -                            ACE_CDR::OCTET_ALIGN,
    -                            length);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_short_array (const ACE_CDR::Short *x,
    -                                  ACE_CDR::ULong length)
    -{
    -  return this->write_array (x,
    -                            ACE_CDR::SHORT_SIZE,
    -                            ACE_CDR::SHORT_ALIGN,
    -                            length);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_ushort_array (const ACE_CDR::UShort *x,
    -                                   ACE_CDR::ULong length)
    -{
    -  return this->write_array (x,
    -                            ACE_CDR::SHORT_SIZE,
    -                            ACE_CDR::SHORT_ALIGN,
    -                            length);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_long_array (const ACE_CDR::Long *x,
    -                                 ACE_CDR::ULong length)
    -{
    -  return this->write_array (x,
    -                            ACE_CDR::LONG_SIZE,
    -                            ACE_CDR::LONG_ALIGN,
    -                            length);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_ulong_array (const ACE_CDR::ULong *x,
    -                                  ACE_CDR::ULong length)
    -{
    -  return this->write_array (x,
    -                            ACE_CDR::LONG_SIZE,
    -                            ACE_CDR::LONG_ALIGN,
    -                            length);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_longlong_array (const ACE_CDR::LongLong *x,
    -                                     ACE_CDR::ULong length)
    -{
    -  return this->write_array (x,
    -                            ACE_CDR::LONGLONG_SIZE,
    -                            ACE_CDR::LONGLONG_ALIGN,
    -                            length);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_ulonglong_array (const ACE_CDR::ULongLong *x,
    -                                      ACE_CDR::ULong length)
    -{
    -  return this->write_array (x,
    -                            ACE_CDR::LONGLONG_SIZE,
    -                            ACE_CDR::LONGLONG_ALIGN,
    -                            length);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_float_array (const ACE_CDR::Float *x,
    -                                  ACE_CDR::ULong length)
    -{
    -  return this->write_array (x,
    -                            ACE_CDR::LONG_SIZE,
    -                            ACE_CDR::LONG_ALIGN,
    -                            length);
    -}
    -
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_double_array (const ACE_CDR::Double *x,
    -                                   ACE_CDR::ULong length)
    -{
    -  return this->write_array (x,
    -                            ACE_CDR::LONGLONG_SIZE,
    -                            ACE_CDR::LONGLONG_ALIGN,
    -                            length);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::write_longdouble_array (const ACE_CDR::LongDouble* x,
    -                                       ACE_CDR::ULong length)
    -{
    -  return this->write_array (x,
    -                            ACE_CDR::LONGDOUBLE_SIZE,
    -                            ACE_CDR::LONGDOUBLE_ALIGN,
    -                            length);
    -}
    -
    -ACE_INLINE int
    -ACE_OutputCDR::good_bit (void) const
    -{
    -  return this->good_bit_;
    -}
    -
    -ACE_INLINE int
    -ACE_OutputCDR::adjust (size_t size,
    -                       size_t align,
    -                       char*& buf)
    -{
    -  buf = ptr_align_binary (this->current_->wr_ptr (),
    -                          align);
    -  char *end = buf + size;
    -
    -  if (end <= this->current_->end ())
    -    {
    -      this->current_->wr_ptr (end);
    -      return 0;
    -    }
    -
    -  return this->grow_and_adjust (size, align, buf);
    -}
    -
    -ACE_INLINE int
    -ACE_OutputCDR::adjust (size_t size, char*& buf)
    -{
    -  return this->adjust (size, size, buf);
    -}
    -
    -ACE_INLINE const ACE_Message_Block*
    -ACE_OutputCDR::begin (void) const
    -{
    -  return &this->start_;
    -}
    -
    -ACE_INLINE const ACE_Message_Block*
    -ACE_OutputCDR::end (void) const
    -{
    -  return this->current_->cont ();
    -}
    -
    -ACE_INLINE const ACE_Message_Block*
    -ACE_OutputCDR::current (void) const
    -{
    -  return this->current_;
    -}
    -
    -ACE_INLINE size_t
    -ACE_OutputCDR::total_length (void) const
    -{
    -  return ACE_CDR::total_length (this->begin (), this->end ());
    -}
    -
    -ACE_INLINE const char*
    -ACE_OutputCDR::buffer (void) const
    -{
    -  return this->start_.rd_ptr ();
    -}
    -
    -ACE_INLINE size_t
    -ACE_OutputCDR::length (void) const
    -{
    -  return this->start_.length ();
    -}
    -
    -ACE_INLINE int
    -ACE_OutputCDR::do_byte_swap (void) const
    -{
    -  return this->do_byte_swap_;
    -}
    -
    -ACE_INLINE int
    -ACE_OutputCDR::align_write_ptr (size_t alignment)
    -{
    -  char *buf = ptr_align_binary (this->current_->wr_ptr (),
    -                                alignment);
    -
    -  if (buf <= this->current_->end ())
    -    {
    -      this->current_->wr_ptr (buf);
    -      return 0;
    -    }
    -
    -  return this->grow_and_adjust (0, alignment, buf);
    -}
    -
    -ACE_INLINE ACE_Char_Codeset_Translator *
    -ACE_OutputCDR::char_translator (void) const
    -{
    -  return this->char_translator_;
    -}
    -
    -ACE_INLINE ACE_WChar_Codeset_Translator *
    -ACE_OutputCDR::wchar_translator (void) const
    -{
    -  return this->wchar_translator_;
    -}
    -
    -// ****************************************************************
    -
    -ACE_INLINE
    -ACE_InputCDR::~ACE_InputCDR (void)
    -{
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::read_octet (ACE_CDR::Octet& x)
    -{
    -  return this->read_1 (&x);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::read_boolean (ACE_CDR::Boolean& x)
    -{
    -  ACE_CDR::Octet tmp;
    -  this->read_octet (tmp);
    -  x = tmp ? 1 : 0;
    -  return (ACE_CDR::Boolean) this->good_bit_;
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::read_char (ACE_CDR::Char &x)
    -{
    -  if (this->char_translator_ == 0)
    -    return this->read_1 (ACE_reinterpret_cast (ACE_CDR::Octet*, &x));
    -  return this->char_translator_->read_char (*this, x);
    -}
    -
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::read_wchar (ACE_CDR::WChar& x)
    -{
    -  if (this->wchar_translator_ == 0)
    -    return this->read_2 (ACE_reinterpret_cast (ACE_CDR::UShort*,&x));
    -  return this->wchar_translator_->read_wchar (*this, x);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::read_short (ACE_CDR::Short &x)
    -{
    -  return this->read_2 (ACE_reinterpret_cast (ACE_CDR::UShort*, &x));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::read_ushort (ACE_CDR::UShort &x)
    -{
    -  return this->read_2 (ACE_reinterpret_cast (ACE_CDR::UShort*, &x));
    -}
    -
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::read_long (ACE_CDR::Long &x)
    -{
    -  return this->read_4 (ACE_reinterpret_cast (ACE_CDR::ULong*, &x));
    -}
    -
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::read_ulong (ACE_CDR::ULong &x)
    -{
    -  return this->read_4 (ACE_reinterpret_cast (ACE_CDR::ULong*, &x));
    -}
    -
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::read_longlong (ACE_CDR::LongLong &x)
    -{
    -  return this->read_8 (ACE_reinterpret_cast (ACE_CDR::ULongLong*, &x));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::read_ulonglong (ACE_CDR::ULongLong &x)
    -{
    -  return this->read_8 (ACE_reinterpret_cast (ACE_CDR::ULongLong*,&x));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::read_float (ACE_CDR::Float &x)
    -{
    -  return this->read_4 (ACE_reinterpret_cast (ACE_CDR::ULong*, &x));
    -}
    -
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::read_double (ACE_CDR::Double &x)
    -{
    -  return this->read_8 (ACE_reinterpret_cast (ACE_CDR::ULongLong*, &x));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::read_longdouble (ACE_CDR::LongDouble &x)
    -{
    -  return this->read_16 (ACE_reinterpret_cast (ACE_CDR::LongDouble*,&x));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::read_char_array (ACE_CDR::Char* x,
    -                               ACE_CDR::ULong length)
    -{
    -  if (this->char_translator_ == 0)
    -    return this->read_array (x,
    -                             ACE_CDR::OCTET_SIZE,
    -                             ACE_CDR::OCTET_ALIGN,
    -                             length);
    -  return this->char_translator_->read_char_array (*this, x, length);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::read_wchar_array (ACE_CDR::WChar* x,
    -                                ACE_CDR::ULong length)
    -{
    -  if (this->wchar_translator_ == 0)
    -    return this->read_array (x,
    -                             ACE_CDR::SHORT_SIZE,
    -                             ACE_CDR::SHORT_ALIGN,
    -                             length);
    -  return this->wchar_translator_->read_wchar_array (*this, x, length);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::read_octet_array (ACE_CDR::Octet* x,
    -                                ACE_CDR::ULong length)
    -{
    -  return this->read_array (x,
    -                           ACE_CDR::OCTET_SIZE,
    -                           ACE_CDR::OCTET_ALIGN,
    -                           length);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::read_short_array (ACE_CDR::Short *x,
    -                                ACE_CDR::ULong length)
    -{
    -  return this->read_array (x,
    -                           ACE_CDR::SHORT_SIZE,
    -                           ACE_CDR::SHORT_ALIGN,
    -                           length);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::read_ushort_array (ACE_CDR::UShort *x,
    -                                 ACE_CDR::ULong length)
    -{
    -  return this->read_array (x,
    -                           ACE_CDR::SHORT_SIZE,
    -                           ACE_CDR::SHORT_ALIGN,
    -                           length);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::read_long_array (ACE_CDR::Long *x,
    -                               ACE_CDR::ULong length)
    -{
    -  return this->read_array (x,
    -                           ACE_CDR::LONG_SIZE,
    -                           ACE_CDR::LONG_ALIGN,
    -                           length);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::read_ulong_array (ACE_CDR::ULong *x,
    -                                ACE_CDR::ULong length)
    -{
    -  return this->read_array (x,
    -                           ACE_CDR::LONG_SIZE,
    -                           ACE_CDR::LONG_ALIGN,
    -                           length);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::read_longlong_array (ACE_CDR::LongLong *x,
    -                                   ACE_CDR::ULong length)
    -{
    -  return this->read_array (x,
    -                           ACE_CDR::LONGLONG_SIZE,
    -                           ACE_CDR::LONGLONG_ALIGN,
    -                           length);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::read_ulonglong_array (ACE_CDR::ULongLong *x,
    -                                    ACE_CDR::ULong length)
    -{
    -  return this->read_array (x,
    -                           ACE_CDR::LONGLONG_SIZE,
    -                           ACE_CDR::LONGLONG_ALIGN,
    -                           length);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::read_float_array (ACE_CDR::Float *x,
    -                                ACE_CDR::ULong length)
    -{
    -  return this->read_array (x,
    -                           ACE_CDR::LONG_SIZE,
    -                           ACE_CDR::LONG_ALIGN,
    -                           length);
    -}
    -
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::read_double_array (ACE_CDR::Double *x,
    -                                 ACE_CDR::ULong length)
    -{
    -  return this->read_array (x,
    -                           ACE_CDR::LONGLONG_SIZE,
    -                           ACE_CDR::LONGLONG_ALIGN,
    -                           length);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::read_longdouble_array (ACE_CDR::LongDouble* x,
    -                                     ACE_CDR::ULong length)
    -{
    -  return this->read_array (x,
    -                           ACE_CDR::LONGDOUBLE_SIZE,
    -                           ACE_CDR::LONGDOUBLE_ALIGN,
    -                           length);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::skip_char (void)
    -{
    -  ACE_CDR::Char x;
    -  return this->read_1 (ACE_reinterpret_cast (ACE_CDR::Octet*,&x));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::skip_wchar (void)
    -{
    -  ACE_CDR::WChar x;
    -  return this->read_2 (ACE_reinterpret_cast (ACE_CDR::UShort*,&x));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::skip_octet (void)
    -{
    -  ACE_CDR::Octet x;
    -  return this->read_1 (&x);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::skip_boolean (void)
    -{
    -  ACE_CDR::Octet tmp;
    -  this->read_octet (tmp);
    -  return this->good_bit_;
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::skip_short (void)
    -{
    -  ACE_CDR::Short x;
    -  return this->read_2 (ACE_reinterpret_cast (ACE_CDR::UShort*,&x));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::skip_ushort (void)
    -{
    -  ACE_CDR::UShort x;
    -  return this->read_2 (ACE_reinterpret_cast (ACE_CDR::UShort*,&x));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::skip_long (void)
    -{
    -  ACE_CDR::Long x;
    -  return this->read_4 (ACE_reinterpret_cast (ACE_CDR::ULong*,&x));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::skip_ulong (void)
    -{
    -  ACE_CDR::ULong x;
    -  return this->read_4 (ACE_reinterpret_cast (ACE_CDR::ULong*,&x));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::skip_longlong (void)
    -{
    -  ACE_CDR::LongLong x;
    -  return this->read_8 (ACE_reinterpret_cast (ACE_CDR::ULongLong*,&x));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::skip_ulonglong (void)
    -{
    -  ACE_CDR::ULongLong x;
    -  return this->read_8 (ACE_reinterpret_cast (ACE_CDR::ULongLong*,&x));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::skip_float (void)
    -{
    -  float x;
    -  return this->read_4 (ACE_reinterpret_cast (ACE_CDR::ULong*,&x));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::skip_double (void)
    -{
    -  double x;
    -  return this->read_8 (ACE_reinterpret_cast (ACE_CDR::ULongLong*,&x));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_InputCDR::skip_longdouble (void)
    -{
    -  ACE_CDR::LongDouble x;
    -  return this->read_16 (ACE_reinterpret_cast (ACE_CDR::LongDouble*,&x));
    -}
    -
    -ACE_INLINE char*
    -ACE_InputCDR::end (void)
    -{
    -  return this->start_.end ();
    -}
    -
    -ACE_INLINE void
    -ACE_InputCDR::rd_ptr (size_t offset)
    -{
    -  this->start_.rd_ptr (offset);
    -}
    -
    -ACE_INLINE char*
    -ACE_InputCDR::rd_ptr (void)
    -{
    -  return this->start_.rd_ptr ();
    -}
    -
    -ACE_INLINE int
    -ACE_InputCDR::adjust (size_t size,
    -                      size_t align,
    -                      char*& buf)
    -{
    -  buf = ptr_align_binary (this->rd_ptr (), align);
    -  char *end = buf + size;
    -  if (end <= this->end ())
    -    {
    -      this->start_.rd_ptr (end);
    -      return 0;
    -    }
    -
    -  this->good_bit_ = 0;
    -  return -1;
    -}
    -
    -ACE_INLINE int
    -ACE_InputCDR::adjust (size_t size,
    -                      char*& buf)
    -{
    -  return this->adjust (size, size, buf);
    -}
    -
    -ACE_INLINE size_t
    -ACE_InputCDR::length (void) const
    -{
    -  return this->start_.length ();
    -}
    -
    -ACE_INLINE const ACE_Message_Block*
    -ACE_InputCDR::start (void) const
    -{
    -  return &this->start_;
    -}
    -
    -ACE_INLINE int
    -ACE_InputCDR::good_bit (void) const
    -{
    -  return this->good_bit_;
    -}
    -
    -// ****************************************************************
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator<< (ACE_OutputCDR &os, ACE_CDR::Char x)
    -{
    -  os.write_char (x);
    -  return os.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator<< (ACE_OutputCDR &os, ACE_CDR::Short x)
    -{
    -  os.write_short (x);
    -  return os.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator<< (ACE_OutputCDR &os, ACE_CDR::UShort x)
    -{
    -  os.write_ushort (x);
    -  return os.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator<< (ACE_OutputCDR &os, ACE_CDR::Long x)
    -{
    -  os.write_long (x);
    -  return os.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator<< (ACE_OutputCDR &os, ACE_CDR::ULong x)
    -{
    -  os.write_ulong (x);
    -  return os.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator<< (ACE_OutputCDR &os, ACE_CDR::LongLong x)
    -{
    -  os.write_longlong (x);
    -  return os.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator<< (ACE_OutputCDR &os, ACE_CDR::ULongLong x)
    -{
    -  os.write_ulonglong (x);
    -  return os.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator<< (ACE_OutputCDR &os, ACE_CDR::LongDouble x)
    -{
    -  os.write_longdouble (x);
    -  return os.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator<< (ACE_OutputCDR &os, ACE_CDR::Float x)
    -{
    -  os.write_float (x);
    -  return os.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator<< (ACE_OutputCDR &os, ACE_CDR::Double x)
    -{
    -  os.write_double (x);
    -  return os.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator<< (ACE_OutputCDR &os, const ACE_CDR::Char *x)
    -{
    -  os.write_string (x);
    -  return os.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator<< (ACE_OutputCDR &os, const ACE_CDR::WChar *x)
    -{
    -  os.write_wstring (x);
    -  return os.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator<< (ACE_OutputCDR &os, const ACE_CString &x)
    -{
    -  os.write_string (x);
    -  return os.good_bit ();
    -}
    -
    -// The following use the helper classes
    -ACE_INLINE ACE_CDR::Boolean
    -operator<< (ACE_OutputCDR &os, ACE_OutputCDR::from_boolean x)
    -{
    -  os.write_boolean (x.val_);
    -  return os.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator<< (ACE_OutputCDR &os, ACE_OutputCDR::from_char x)
    -{
    -  os.write_char (x.val_);
    -  return os.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator<< (ACE_OutputCDR &os, ACE_OutputCDR::from_wchar x)
    -{
    -  os.write_wchar (x.val_);
    -  return os.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator<< (ACE_OutputCDR &os, ACE_OutputCDR::from_octet x)
    -{
    -  os.write_octet (x.val_);
    -  return os.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator<< (ACE_OutputCDR &os, ACE_OutputCDR::from_string x)
    -{
    -  ACE_CDR::ULong len = ACE_OS::strlen (x.val_);
    -  os.write_string (len, x.val_);
    -  return os.good_bit () && (len <= x.bound_);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator<< (ACE_OutputCDR &os, ACE_OutputCDR::from_wstring x)
    -{
    -  ACE_CDR::ULong len = ACE_OS::wslen (x.val_);
    -  os.write_wstring (len, x.val_);
    -  return os.good_bit () && (len <= x.bound_);
    -}
    -
    -// ****************************************************************
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator>> (ACE_InputCDR &is, ACE_CDR::Char &x)
    -{
    -  is.read_char (x);
    -  return is.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator>> (ACE_InputCDR &is, ACE_CDR::Short &x)
    -{
    -  is.read_short (x);
    -  return is.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator>> (ACE_InputCDR &is, ACE_CDR::UShort &x)
    -{
    -  is.read_ushort (x);
    -  return is.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator>>(ACE_InputCDR &is, ACE_CDR::Long &x)
    -{
    -  is.read_long (x);
    -  return is.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator>> (ACE_InputCDR &is, ACE_CDR::ULong &x)
    -{
    -  is.read_ulong (x);
    -  return is.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator>> (ACE_InputCDR& is, ACE_CDR::LongLong &x)
    -{
    -  is.read_longlong (x);
    -  return is.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator>> (ACE_InputCDR& is, ACE_CDR::ULongLong &x)
    -{
    -  is.read_ulonglong (x);
    -  return is.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator>> (ACE_InputCDR& is, ACE_CDR::LongDouble &x)
    -{
    -  is.read_longdouble (x);
    -  return is.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator>> (ACE_InputCDR &is, ACE_CDR::Float &x)
    -{
    -  is.read_float (x);
    -  return is.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator>> (ACE_InputCDR &is, ACE_CDR::Double &x)
    -{
    -  is.read_double (x);
    -  return is.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator>> (ACE_InputCDR &is, ACE_CDR::Char *&x)
    -{
    -  is.read_string (x);
    -  return is.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator>> (ACE_InputCDR &is, ACE_CDR::WChar *&x)
    -{
    -  is.read_wstring (x);
    -  return is.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator>> (ACE_InputCDR &is, ACE_CString &x)
    -{
    -  is.read_string (x);
    -  return is.good_bit ();
    -}
    -
    -// The following use the helper classes
    -ACE_INLINE ACE_CDR::Boolean
    -operator>> (ACE_InputCDR &is, ACE_InputCDR::to_boolean x)
    -{
    -  is.read_boolean (x.ref_);
    -  return is.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator>> (ACE_InputCDR &is, ACE_InputCDR::to_char x)
    -{
    -  is.read_char (x.ref_);
    -  return is.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator>> (ACE_InputCDR &is, ACE_InputCDR::to_wchar x)
    -{
    -  is.read_wchar (x.ref_);
    -  return is.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator>> (ACE_InputCDR &is, ACE_InputCDR::to_octet x)
    -{
    -  is.read_octet (x.ref_);
    -  return is.good_bit ();
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator>> (ACE_InputCDR &is, ACE_InputCDR::to_string x)
    -{
    -  is.read_string (x.val_);
    -  // check if the bounds are satisfied
    -  return (is.good_bit () &&
    -          (ACE_OS::strlen (x.val_) <= x.bound_));
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -operator>> (ACE_InputCDR &is, ACE_InputCDR::to_wstring x)
    -{
    -  is.read_wstring (x.val_);
    -  // check if the bounds are satisfied
    -  return (is.good_bit () &&
    -          (ACE_OS::wslen (x.val_) <= x.bound_));
    -}
    -
    -// ***************************************************************************
    -// We must define these methods here because they use the "read_*" inlined
    -// methods of the ACE_InputCDR class
    -// ***************************************************************************
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::append_boolean (ACE_InputCDR &stream)
    -{
    -  ACE_CDR::Boolean x;
    -  return (stream.read_boolean (x) ? this->write_boolean (x) : 0);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::append_char (ACE_InputCDR &stream)
    -{
    -  ACE_CDR::Char x;
    -  return (stream.read_char (x) ? this->write_char (x) : 0);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::append_wchar (ACE_InputCDR &stream)
    -{
    -  ACE_CDR::WChar x;
    -  return (stream.read_wchar (x) ? this->write_wchar (x) : 0);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::append_octet (ACE_InputCDR &stream)
    -{
    -  ACE_CDR::Octet x;
    -  return (stream.read_octet (x) ? this->write_octet (x) : 0);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::append_short (ACE_InputCDR &stream)
    -{
    -  ACE_CDR::Short x;
    -  return (stream.read_short (x) ? this->write_short (x) : 0);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::append_ushort (ACE_InputCDR &stream)
    -{
    -  ACE_CDR::UShort x;
    -  return (stream.read_ushort (x) ? this->write_ushort (x) : 0);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::append_long (ACE_InputCDR &stream)
    -{
    -  ACE_CDR::Long x;
    -  return (stream.read_long (x) ? this->write_long (x) : 0);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::append_ulong (ACE_InputCDR &stream)
    -{
    -  ACE_CDR::ULong x;
    -  return (stream.read_ulong (x) ? this->write_ulong (x) : 0);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::append_longlong (ACE_InputCDR &stream)
    -{
    -  ACE_CDR::LongLong x;
    -  return (stream.read_longlong (x) ? this->write_longlong (x) : 0);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::append_ulonglong (ACE_InputCDR &stream)
    -{
    -  ACE_CDR::ULongLong x;
    -  return (stream.read_ulonglong (x) ? this->write_ulonglong (x) : 0);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::append_float (ACE_InputCDR &stream)
    -{
    -  ACE_CDR::Float x;
    -  return (stream.read_float (x) ? this->write_float (x) : 0);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::append_double (ACE_InputCDR &stream)
    -{
    -  ACE_CDR::Double x;
    -  return (stream.read_double (x) ? this->write_double (x) : 0);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::append_longdouble (ACE_InputCDR &stream)
    -{
    -  ACE_CDR::LongDouble x;
    -  return (stream.read_longdouble (x) ? this->write_longdouble (x) : 0);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::append_string (ACE_InputCDR &stream)
    -{
    -  ACE_CDR::Char *x;
    -  ACE_CDR::Boolean flag =
    -    (stream.read_string (x) ? this->write_string (x) : 0);
    -  delete [] x;
    -  return flag;
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_OutputCDR::append_wstring (ACE_InputCDR &stream)
    -{
    -  ACE_CDR::WChar *x;
    -  ACE_CDR::Boolean flag =
    -    (stream.read_wstring (x) ? this->write_wstring (x) : 0);
    -  delete [] x;
    -  return flag;
    -}
    -
    -ACE_INLINE void
    -ACE_InputCDR::reset_byte_order (int byte_order)
    -{
    -  this->do_byte_swap_ = (byte_order != ACE_CDR_BYTE_ORDER);
    -}
    -
    -ACE_INLINE int
    -ACE_InputCDR::do_byte_swap (void) const
    -{
    -  return this->do_byte_swap_;
    -}
    -
    -ACE_INLINE int
    -ACE_InputCDR::byte_order (void) const
    -{
    -  if (this->do_byte_swap ())
    -    return !ACE_CDR_BYTE_ORDER;
    -  else
    -    return ACE_CDR_BYTE_ORDER;
    -}
    -
    -ACE_INLINE int
    -ACE_InputCDR::align_read_ptr (size_t alignment)
    -{
    -  char *buf = ptr_align_binary (this->rd_ptr (),
    -                                alignment);
    -
    -  if (buf <= this->end ())
    -    {
    -      this->start_.rd_ptr (buf);
    -      return 0;
    -    }
    -
    -  this->good_bit_ = 0;
    -  return -1;
    -}
    -
    -ACE_INLINE ACE_Char_Codeset_Translator *
    -ACE_InputCDR::char_translator (void) const
    -{
    -  return this->char_translator_;
    -}
    -
    -ACE_INLINE ACE_WChar_Codeset_Translator *
    -ACE_InputCDR::wchar_translator (void) const
    -{
    -  return this->wchar_translator_;
    -}
    -
    -// ****************************************************************
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_Char_Codeset_Translator::read_1 (ACE_InputCDR& input,
    -                                     ACE_CDR::Octet *x)
    -{
    -  return input.read_1 (x);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_Char_Codeset_Translator::write_1 (ACE_OutputCDR& output,
    -                                      const ACE_CDR::Octet *x)
    -{
    -  return output.write_1 (x);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_Char_Codeset_Translator::read_array (ACE_InputCDR& in,
    -                                         void* x,
    -                                         size_t size,
    -                                         size_t align,
    -                                         ACE_CDR::ULong length)
    -{
    -  return in.read_array (x, size, align, length);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_Char_Codeset_Translator::write_array (ACE_OutputCDR& out,
    -                                          const void *x,
    -                                          size_t size,
    -                                          size_t align,
    -                                          ACE_CDR::ULong length)
    -{
    -  return out.write_array(x, size, align, length);
    -}
    -
    -ACE_INLINE int
    -ACE_Char_Codeset_Translator::adjust (ACE_OutputCDR& out,
    -                                     size_t size,
    -                                     size_t align,
    -                                     char *&buf)
    -{
    -  return out.adjust(size, align, buf);
    -}
    -
    -ACE_INLINE void
    -ACE_Char_Codeset_Translator::good_bit (ACE_OutputCDR& out, int bit)
    -{
    -  out.good_bit_ = bit;
    -}
    -
    -// ****************************************************************
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_WChar_Codeset_Translator::read_1 (ACE_InputCDR& input,
    -                                      ACE_CDR::Octet *x)
    -{
    -  return input.read_1 (x);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_WChar_Codeset_Translator::read_2 (ACE_InputCDR& input,
    -                                      ACE_CDR::UShort *x)
    -{
    -  return input.read_2 (x);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_WChar_Codeset_Translator::read_4 (ACE_InputCDR& input,
    -                                      ACE_CDR::ULong *x)
    -{
    -  return input.read_4 (x);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_WChar_Codeset_Translator::write_1 (ACE_OutputCDR& output,
    -                                       const ACE_CDR::Octet *x)
    -{
    -  return output.write_1 (x);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_WChar_Codeset_Translator::write_2 (ACE_OutputCDR& output,
    -                                       const ACE_CDR::UShort *x)
    -{
    -  return output.write_2 (x);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_WChar_Codeset_Translator::write_4 (ACE_OutputCDR& output,
    -                                       const ACE_CDR::ULong *x)
    -{
    -  return output.write_4 (x);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_WChar_Codeset_Translator::read_array (ACE_InputCDR& in,
    -                                          void* x,
    -                                          size_t size,
    -                                          size_t align,
    -                                          ACE_CDR::ULong length)
    -{
    -  return in.read_array (x, size, align, length);
    -}
    -
    -ACE_INLINE ACE_CDR::Boolean
    -ACE_WChar_Codeset_Translator::write_array (ACE_OutputCDR& out,
    -                                           const void *x,
    -                                           size_t size,
    -                                           size_t align,
    -                                           ACE_CDR::ULong length)
    -{
    -  return out.write_array(x, size, align, length);
    -}
    -
    -ACE_INLINE int
    -ACE_WChar_Codeset_Translator::adjust (ACE_OutputCDR& out,
    -                                      size_t size,
    -                                      size_t align,
    -                                      char *&buf)
    -{
    -  return out.adjust(size, align, buf);
    -}
    -
    -ACE_INLINE void
    -ACE_WChar_Codeset_Translator::good_bit (ACE_OutputCDR& out, int bit)
    -{
    -  out.good_bit_ = bit;
    -}
    diff --git a/ace/CLASSIX/CLASSIX_Addr.cpp b/ace/CLASSIX/CLASSIX_Addr.cpp
    deleted file mode 100644
    index faafc29109d..00000000000
    --- a/ace/CLASSIX/CLASSIX_Addr.cpp
    +++ /dev/null
    @@ -1,13 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// Defines the ClassiX IPC address family address format.
    -
    -#define ACE_BUILD_DLL
    -#include "ace/CLASSIX/CLASSIX_Addr.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_Addr.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_CLASSIX_Addr)
    diff --git a/ace/CLASSIX/CLASSIX_Addr.h b/ace/CLASSIX/CLASSIX_Addr.h
    deleted file mode 100644
    index 0afb1675a89..00000000000
    --- a/ace/CLASSIX/CLASSIX_Addr.h
    +++ /dev/null
    @@ -1,97 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ACE
    -//
    -// = FILENAME
    -//    CLASSIX_Addr.h
    -//
    -// = AUTHOR
    -//    Nokia Telecommunications
    -//
    -// ============================================================================
    -
    -#ifndef ACE_CLASSIX_ADDR_H
    -#define ACE_CLASSIX_ADDR_H
    -
    -#include "ace/ACE.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Addr.h"
    -
    -#include 
    -#include 
    -
    -class ACE_Export ACE_CLASSIX_Addr : public ACE_Addr
    -{
    -  // = TITLE
    -  //    Defines the ClassiX IPC address format.
    -  //
    -  // = DESCRIPTION
    -  //   This class defines basic interfaces for "ACE-like" address for
    -  //   Chorus port.
    -public:
    -  enum
    -  {
    -    ACE_CLASSIX_ADDR_UNKNOWN = ACE_INVALID_HANDLE, /* K_NONEPORT */
    -    ACE_CLASSIX_ADDR_DEFAULT = K_DEFAULTPORT,
    -    AF_CLASSIX               = AF_MAX + 1
    -  };
    -
    -  enum Addr_Type
    -  {
    -    PORT,                       // use Peer_Port
    -    GROUP,                      // use Peer_Group
    -    STAMP,                      // use peer_Stamp
    -    DYNAMIC,                    // use Peer_Group
    -    UNDEFINED
    -  };
    -
    -
    -  /* -----------------------------------------------------*/
    -  // = INITIALIZATION
    -  ACE_CLASSIX_Addr(int /* size of the underlying address structure*/);
    -  virtual ~ACE_CLASSIX_Addr (void);
    -
    -
    -  /* -----------------------------------------------------*/
    -  // = Direct initialization methods (useful after the object has been
    -  // constructed).
    -  // Returns 0 on success, -1 otherwise.
    -  //
    -
    -  /* -----------------------------------------------------*/
    -  // = ACCESS
    -  //
    -  virtual const KnUniqueId& get_id (void) const;
    -  // Returns a reference to the unique identifier
    -
    -  virtual ACE_HANDLE get_port_number(void) const;
    -  virtual ACE_HANDLE get_handle(void) const;
    -  // Returns the local port no( can be used as an ACE_HANDLE)
    -
    -  virtual int is_configured(void) const;
    -  // Returns 1, if address information is proper; Returns 0 otherwise
    -  virtual ACE_CLASSIX_Addr::Addr_Type is_type(void) const;
    -  // returns the type of the address
    -
    -  // = HELPER
    -  virtual void dump(void) const;
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declares the dynamic allocation hooks.
    -
    -private:
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_Addr.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_CLASSIX_ADDR_H */
    diff --git a/ace/CLASSIX/CLASSIX_Addr.i b/ace/CLASSIX/CLASSIX_Addr.i
    deleted file mode 100644
    index 13cc5fd48e3..00000000000
    --- a/ace/CLASSIX/CLASSIX_Addr.i
    +++ /dev/null
    @@ -1,56 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// CLASSIX_Addr.i
    -
    -ACE_INLINE
    -ACE_CLASSIX_Addr::ACE_CLASSIX_Addr(int theSize)
    -    : ACE_Addr (AF_CLASSIX, theSize)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Addr::~ACE_CLASSIX_Addr(void)
    -{
    -}
    -
    -ACE_INLINE
    -const KnUniqueId&
    -ACE_CLASSIX_Addr::get_id(void) const
    -{
    -  return ACE_CLASSIX_OS::null_KnUniqueId();
    -}
    -
    -ACE_INLINE
    -ACE_HANDLE
    -ACE_CLASSIX_Addr::get_handle(void) const
    -{
    -  return ACE_INVALID_HANDLE;
    -}
    -
    -ACE_INLINE
    -ACE_HANDLE
    -ACE_CLASSIX_Addr::get_port_number(void) const
    -{
    -  return get_handle();
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Addr::is_configured(void) const
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Addr::Addr_Type
    -ACE_CLASSIX_Addr::is_type(void) const
    -{
    -  return ACE_CLASSIX_Addr::UNDEFINED;
    -}
    -
    -ACE_INLINE
    -void
    -ACE_CLASSIX_Addr::dump(void) const
    -{
    -}
    diff --git a/ace/CLASSIX/CLASSIX_CLD_Connector.cpp b/ace/CLASSIX/CLASSIX_CLD_Connector.cpp
    deleted file mode 100644
    index a054213561a..00000000000
    --- a/ace/CLASSIX/CLASSIX_CLD_Connector.cpp
    +++ /dev/null
    @@ -1,116 +0,0 @@
    -// $Id$
    -/*
    -// ============================================================================
    -//
    -// = LIBRARY
    -//     ace
    -// 
    -// = FILENAME
    -//     CLASSIX_CLD_Connector.cpp
    -//
    -// = AUTHOR(S)
    -//     Nokia Telecommunications
    -// 
    -//
    -// ============================================================================
    -*/
    -#define ACE_BUILD_DLL
    -#include "ace/CLASSIX/CLASSIX_CLD_Connector.h"
    -#include "ace/CLASSIX/CLASSIX_Addr.h"
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_CLASSIX_CLD_Connector)
    -
    -#if !defined (__ACE_INLINE__)
    -#include "CLASSIX_CLD_Connector.i"
    -#endif /* __ACE_INLINE__ */
    -/* ------------------------------------------------------------------------- */
    -
    -ACE_CLASSIX_CLD_Connector::ACE_CLASSIX_CLD_Connector (
    -    ACE_CLASSIX_Stream &new_stream, 
    -    const ACE_Addr &remote_sap, 
    -    ACE_Time_Value *timeout,
    -    const ACE_Addr &local_sap,
    -    int reuse_addr,
    -    int flags,
    -    int perms,
    -    int protocol_family,
    -    int protocol)
    -{
    -  ACE_TRACE ("ACE_CLASSIX_CLD_Connector::ACE_CLASSIX_CLD_Connector");
    -  if (this->connect (new_stream, remote_sap, timeout, local_sap,
    -		     reuse_addr, flags, perms, 
    -		     protocol_family, protocol) == -1)
    -      ACE_ERROR ((LM_ERROR, 
    -		  ASYS_TEXT ("%p\n"),  ASYS_TEXT 
    -		  ("ACE_CLASSIX_CLD_Connector::ACE_CLASSIX_CLD_Connector")));
    -}
    -
    -// Set up remote port information
    -int
    -ACE_CLASSIX_CLD_Connector::connect (ACE_CLASSIX_Stream &new_stream, 
    -				    const ACE_Addr & theRemote,/* remote_sap */
    -				    ACE_Time_Value *, /* timeout */
    -				    const ACE_Addr & theLocal,
    -                                    int, /* reuse_addr */
    -				    int theFlag, /* flags */
    -				    int, /* perms */
    -				    int theProtocolFamily, 
    -				    int /* protocol */)
    -
    -{
    -    ACE_TRACE ("ACE_CLASSIX_CLD_Connector::connect");
    -    //
    -    // Set up peer SAP
    -    // 
    -    if (theRemote == ACE_Addr::sap_any ||
    -	new_stream.set_peer_sap(theRemote) != 0)
    -	ACE_ERROR_RETURN((LM_ERROR, "ACE_CLASSIX_CLD_Connector::connect()::"
    -			  "Invalid Connector SAP\n"), -1);
    -
    -    //
    -    // Set up local SAP
    -    // 
    -    if (theLocal == ACE_Addr::sap_any)
    -    {
    -	// if local sap has not been configured
    -	// create a port and use it as the local SAP 
    -	new_stream.open();
    -    }
    -    else
    -    {
    -	// replace the local SAP information
    -	new_stream.close();
    -	new_stream.open(theLocal);
    -    }
    -    
    -    //
    -    // Make the local SAP "selectable", if requested via the flag
    -    // 
    -    if (new_stream.local_sap().is_configured() && 
    -	new_stream.peer_sap().is_configured() &&  /* remote sap info exist */
    -	theProtocolFamily == ACE_CLASSIX_Addr::AF_CLASSIX)
    -    {
    -	new_stream.control();
    -	// setup the default delivery mode, if applicable
    -	if (theFlag & ACE_CLASSIX_CLD_Connector::ENABLE)
    -	{
    -	    if (new_stream.selectable() == 0)
    -		return 0;
    -	    else
    -		return -1;
    -	}
    -	return 0;
    -    }
    -    else
    -    {
    -	return -1;
    -    }
    -}
    -
    -void
    -ACE_CLASSIX_CLD_Connector::dump (void) const
    -{
    -  ACE_TRACE ("ACE_CLASSIX_CLD_Connector::dump");
    -}
    -
    -/* ------------------------------------------------------------------------- */
    diff --git a/ace/CLASSIX/CLASSIX_CLD_Connector.h b/ace/CLASSIX/CLASSIX_CLD_Connector.h
    deleted file mode 100644
    index 2825841bcdd..00000000000
    --- a/ace/CLASSIX/CLASSIX_CLD_Connector.h
    +++ /dev/null
    @@ -1,132 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -/*
    -// ============================================================================
    -//
    -// = LIBRARY
    -//     ace
    -//
    -// = FILENAME
    -//     CLASSIX_CLD_Connector.h
    -//
    -// = AUTHOR(S)
    -//     Nokia Telecommunications
    -//
    -// ============================================================================
    -*/
    -
    -#ifndef ACE_CLASSIX_CLD_CONNECTOR_H
    -#define ACE_CLASSIX_CLD_CONNECTOR_H
    -
    -#include "ace/CLASSIX/CLASSIX_Stream.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -/* ------------------------------------------------------------------------- */
    -
    -class ACE_CLASSIX_CLD_Connector
    -    // = TITLE
    -    //     Defines an CLASSIX IPC connectionless connection factory for the
    -    //     template methods in .
    -    //
    -    // = DESCRIPTION
    -    //     This is used when a client needs to communicate with a server
    -    //     whose SAP address is known beforehand.
    -    //
    -    //     Although there is a connection
    -    //     procedure, no connection is actually taken place
    -    //     between the client and server, since Chorus IPC does not have
    -    //     connection semantics.
    -    //     The connect procedure is necessary for
    -    //     compatibility with  class.
    -    //
    -    //     This class will simplify the client's
    -    //     program, since it provides connection-like communication
    -    //     mechanism.
    -    //
    -    // = NOTES
    -    //     The server in this case trusts everyone who lands on the
    -    //     server's SAP.
    -    //
    -    // = SEE ALSO
    -    //   ACE_CLASSIX_COD_Connector
    -{
    -  public:
    -    // =  Connect options
    -    enum OPTIONS
    -    {
    -        // Do not enable the local SAP
    -        // (so that the Reactor will not monitor the port)
    -        ENABLE  = 0x1
    -    };
    -
    -    // = Initialization routines.
    -    ACE_CLASSIX_CLD_Connector (void);
    -    // Default constructor.
    -
    -    ACE_CLASSIX_CLD_Connector (ACE_CLASSIX_Stream &new_stream,
    -                               const ACE_Addr &remote_sap
    -                               = ACE_Addr::sap_any,
    -                               ACE_Time_Value *timeout = 0,
    -                               const ACE_Addr &local_sap = ACE_Addr::sap_any,
    -                               int reuse_addr = 0,
    -                               int flags = 0,
    -                               int perms = 0,
    -                               int protocol_family
    -                               = ACE_CLASSIX_Addr::AF_CLASSIX,
    -                               int protocol = 0);
    -    // Emulates connection semantics so that it can be plugged into
    -    // 
    -    // Actively connect local SAP and remote SAP togeter.
    -    // Produce a  if things go well.
    -    //
    -    //  is the peer's address. In ACE_SOCK_Connector it refers to
    -    // the acceptor's address.  In connectionless mode, we do not have
    -    // an acceptor.  The  address will be copied to the new stream
    -    // if things goes well.
    -    //
    -    // If  refers to any address, a port will be
    -    // allocated and will be used as a local SAP.
    -    //
    -    // The rest parameters are there so that this class can be plugged into
    -    // .
    -
    -    virtual int connect (ACE_CLASSIX_Stream &new_stream,
    -                 const ACE_Addr &remote_sap = ACE_Addr::sap_any,
    -                 ACE_Time_Value *timeout = 0,
    -                 const ACE_Addr &local_sap = ACE_Addr::sap_any,
    -                 int reuse_addr = 0,
    -                 int flags = 0,
    -                 int perms = 0,
    -                 int protocol_family = ACE_CLASSIX_Addr::AF_CLASSIX,
    -                 int protocol = 0);
    -
    -    // Factory method used in ::connect_svc_handler()
    -
    -    // Initialization method when default constructor is used.
    -    // See the comments for the corresponding constructor
    -
    -    virtual int reset_new_handle (ACE_HANDLE handle);
    -    // Factory method used in ACE_Connector::handle_output().
    -    // Meant for resetting any event associations on this handle
    -    // Does nothig.
    -
    -    // = HELPER
    -    void dump(void) const;
    -
    - private:
    -
    -    ACE_CLASSIX_CLD_Connector(ACE_CLASSIX_CLD_Connector const&);
    -    ACE_CLASSIX_CLD_Connector const& operator=(ACE_CLASSIX_CLD_Connector const&);
    -};
    -
    -/* ------------------------------------------------------------------------- */
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_CLD_Connector.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_CLASSIX_CLD_CONNECTOR_H */
    diff --git a/ace/CLASSIX/CLASSIX_CLD_Connector.i b/ace/CLASSIX/CLASSIX_CLD_Connector.i
    deleted file mode 100644
    index 8592b7825d2..00000000000
    --- a/ace/CLASSIX/CLASSIX_CLD_Connector.i
    +++ /dev/null
    @@ -1,24 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -//
    -// CLASSIX/CLD_Connector.i
    -/* ------------------------------------------------------------------------- */
    -
    -// Do-nothing constructor...
    -
    -ACE_INLINE
    -ACE_CLASSIX_CLD_Connector::ACE_CLASSIX_CLD_Connector (void)
    -{
    -  ACE_TRACE ("ACE_CLASSIX_CLD_Connector::ACE_CLASSIX_CLD_Connector");
    -}
    -
    -ACE_INLINE
    -int 
    -ACE_CLASSIX_CLD_Connector::reset_new_handle (ACE_HANDLE /*  handle */)
    -{
    -  return 0;
    -}
    -
    -/* ------------------------------------------------------------------------- */
    -
    -
    diff --git a/ace/CLASSIX/CLASSIX_CO_Acceptor.cpp b/ace/CLASSIX/CLASSIX_CO_Acceptor.cpp
    deleted file mode 100644
    index 153bed23e49..00000000000
    --- a/ace/CLASSIX/CLASSIX_CO_Acceptor.cpp
    +++ /dev/null
    @@ -1,199 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -#include "CLASSIX_CO_Acceptor.h"
    -
    -#if defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "CLASSIX_CO_Acceptor.i"
    -#endif /* ACE_LACKS_INLINE_FUNCTIONS */
    -
    -#include "ace/Synch.h"
    -
    -ACE_ALLOC_HOOK_DEFINE (ACE_CLASSIX_CO_Acceptor)
    -
    -// General purpose routine for performing server  creation.
    -
    -ACE_CLASSIX_CO_Acceptor::ACE_CLASSIX_CO_Acceptor (const ACE_Addr &local_sap, 
    -						  int reuse_addr, 
    -						  int protocol_family,
    -						  int backlog, 
    -						  int protocol,
    -						  ACE_Reactor* theReactor)
    -  : port_ (0),
    -    reactor_ (theReactor)
    -{
    -  ACE_TRACE ("ACE_CLASSIX_CO_Acceptor::ACE_CLASSIX_CO_Acceptor");
    -  if (this->open (local_sap, reuse_addr, protocol_family, 
    -		  backlog, protocol, theReactor) == -1)
    -    ACE_ERROR ((LM_ERROR, 
    -                ASYS_TEXT ("%p\n"), 
    -                ASYS_TEXT ("ACE_CLASSIX_CO_Acceptor")));
    -}
    -
    -// General purpose routine for performing server creation.
    -
    -int
    -ACE_CLASSIX_CO_Acceptor::open (const ACE_Addr & theLocalSap, 
    -			       int /* reuse_addr */,
    -			       int theProtocolFamily, 
    -			       int /* backlog */, 
    -			       int /* protocol */,
    -			       ACE_Reactor* theReactor)
    -{
    -  // make sure that the client requests for a "CLASSIX" family.
    -
    -  if (theProtocolFamily != ACE_CLASSIX_Addr::AF_CLASSIX)
    -    return -1;
    -  
    -  // Setup local address
    -
    -  int error = 0;
    -  if (theLocalSap == ACE_Addr::sap_any)
    -    {
    -      this->port_ = new ACE_CLASSIX_Port_Core ();
    -      ACE_ASSERT (this->port_);
    -      error = this->addr_.set (*this->port_);
    -    }
    -  else
    -    error = this->addr_.set (theLocalSap);
    -
    -  if (error != 0)
    -    ACE_ERROR_RETURN ((LM_ERROR, "ACE_CLASSIX_CO_Acceptor::open ()::"
    -                      "Cannot setup address\n"), -1);
    -
    -  // Make the port "selectable"
    -
    -  if (this->addr_.selectable () != 0)
    -    ACE_ERROR_RETURN ((LM_ERROR, "ACE_CLASSIX_CO_Acceptor::open ()::"
    -                      "Cannot enable port\n"), -1);
    -
    -  this->reactor_ = theReactor;
    -  return 0;
    -}
    -    
    -// General purpose routine for accepting new connections. 
    -
    -int
    -ACE_CLASSIX_CO_Acceptor::accept (ACE_CLASSIX_Stream &new_stream, 
    -				 ACE_Addr *remote_addr, 
    -				 ACE_Time_Value* /* timeout */, 
    -				 int /* restart */,
    -				 int /* reset_new_handle */) const
    -{
    -  ACE_TRACE ("ACE_CLASSIX_CO_Acceptor::accept");
    -
    -  // Get peer's address info
    -
    -  size_t size = 0;
    -  if (this->reactor_->current_info (this->get_handle (), size) 
    -      == -1)
    -    ACE_ERROR_RETURN ((LM_ERROR, "ACE_CLASSIX_CO_Acceptor:.accept ()::"
    -                       "Cannot get peer addr\n"), -1);
    -
    -  ACE_CLASSIX_CO_Acceptor::Peer_Union data;
    -  ACE_CLASSIX_Msg rmsg (&data, sizeof (ACE_CLASSIX_CO_Acceptor::Peer_Union));
    -  if (size != sizeof (ACE_CLASSIX_CO_Acceptor::Peer_Union) 
    -      || ::ipcGetData (rmsg.get ()) != size)
    -    ACE_ERROR_RETURN ((LM_ERROR, "%t"
    -                       "ACE_CLASSIX_CO_Acceptor::accept::ipcGetData (%d)\n",
    -                       size),
    -                      -1);
    -
    -  // Set up Peer SAP
    -
    -  int error = 0;
    -  switch (data.type)
    -    {
    -    case ACE_CLASSIX_Addr::PORT:
    -      error = new_stream.set_peer_sap (data.choose.port.peer);
    -      break;
    -
    -    case ACE_CLASSIX_Addr::GROUP:
    -      error = new_stream.set_peer_sap (data.choose.group.peer);
    -      break;
    -
    -    case ACE_CLASSIX_Addr::STAMP:
    -      error = new_stream.set_peer_sap (data.choose.stamp.peer);
    -      break;
    -
    -    case ACE_CLASSIX_Addr::DYNAMIC:
    -      error = new_stream.set_peer_sap (data.choose.group.peer);
    -      break;
    -
    -    default:
    -      ACE_ERROR_RETURN ((LM_ERROR, "ACE_CLASSIX_CO_Accept::accept ()::"
    -                         "Invalid peer address\n"), -1);
    -    }
    -
    -  if (error != 0)
    -    ACE_ERROR_RETURN ((LM_ERROR, "ACE_CLASSIX_CO_Accept::accept ()::"
    -                       "cannot set peer address\n"), -1);
    -
    -  // Set up local SAP & tell the peer
    -
    -  data.type = ACE_CLASSIX_Addr::UNDEFINED;
    -
    -  if (remote_addr != 0)
    -    {
    -      if (remote_addr->get_type () == ACE_CLASSIX_Addr::AF_CLASSIX &&
    -          ((ACE_CLASSIX_Addr*) remote_addr)->is_type == 
    -	  ACE_CLASSIX_Addr::PORT)
    -        {
    -	  new_stream.get_local_sap ().set (*remote_addr);
    -	  data.type = ACE_CLASSIX_Addr::PORT;
    -        }
    -    }
    -  else
    -    {
    -      ACE_CLASSIX_Port_Core *port = new ACE_CLASSIX_Port_Core ();
    -      if (new_stream.set_local_port (port) == 0)
    -        data.type = ACE_CLASSIX_Addr::PORT;;
    -    }
    -
    -  data.choose.port.peer =
    -    new_stream.get_local_sap ().get_addr ().get_id ();
    -
    -  ACE_CLASSIX_Msg smsg (&data, sizeof (ACE_CLASSIX_CO_Acceptor::Peer_Union));
    -
    -  if (::ipcReply (smsg.get ()) != 0)
    -    ACE_ERROR_RETURN ((LM_ERROR, "ACE_CLASSIX_CO_Accept::accept ()::"
    -                       "cannot deliver server address to peer\n"), -1);
    -
    -  // Make new_stream's local SAP selectable.
    -  if (new_stream.selectable () != 0)
    -    return -1;
    -
    -  return 0;
    -}
    -
    -int
    -ACE_CLASSIX_CO_Acceptor::close (void)
    -{
    -  ACE_TRACE ("ACE_CLASSIX_CO_Acceptor::close");
    -  int result = 0;
    -
    -  if (this->get_handle () != ACE_INVALID_HANDLE)
    -    {
    -      delete this->port_;
    -      this->port_ = 0;
    -      ((ACE_CLASSIX_Port) this->addr_.get_addr ()).clear ();
    -    }
    -  return 0;
    -}
    -
    -
    -int
    -ACE_CLASSIX_CO_Acceptor::get_local_addr (ACE_Addr &theAddr) const
    -{
    -  int size = theAddr.get_size ();
    -  if (size < this->addr_.get_addr ().get_size ())
    -    return -1;
    -
    -  return this->addr_.get_addr (theAddr);
    -}
    -
    -void
    -ACE_CLASSIX_CO_Acceptor::dump (void) const
    -{
    -  ACE_TRACE ("ACE_CLASSIX_CO_Acceptor::dump");
    -}
    diff --git a/ace/CLASSIX/CLASSIX_CO_Acceptor.h b/ace/CLASSIX/CLASSIX_CO_Acceptor.h
    deleted file mode 100644
    index 02f58f89bb4..00000000000
    --- a/ace/CLASSIX/CLASSIX_CO_Acceptor.h
    +++ /dev/null
    @@ -1,144 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ACE
    -//
    -// = FILENAME
    -//    CLASSIX_CO_Acceptor.h
    -//
    -// = AUTHOR
    -//    Nokia Telecommunications
    -//
    -// ============================================================================
    -
    -#ifndef ACE_CLASSIX_CO_ACCEPTOR_H
    -#define ACE_CLASSIX_CO_ACCEPTOR_H
    -
    -#include "ace/CLASSIX/CLASSIX_Stream.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Time_Value.h"
    -
    -class ACE_Export ACE_CLASSIX_CO_Acceptor
    -{
    -  // = TITLE
    -  //     Defines the format and interface for a connection
    -  //     oriented   acceptor.
    -  //
    -  // = DESCRIPTION
    -  //     This class is the counter part of the 
    -  //     class.  It exchanges SAP information to set up a logical
    -  //     connection.
    -  //
    -  //     Data format passed between a connector and this class uses
    -  //     Peer_Union structure.
    -  //
    -  // = SEE ALSO
    -  //     ACE_CLASSIX_Connector
    -  //
    -public:
    -  struct Peer_Port
    -  {
    -    KnUniqueId peer;
    -  };
    -
    -  struct Peer_Group
    -  {
    -    KnCap  peer;
    -  };
    -
    -  struct Peer_Stamp
    -  {
    -    int    peer;
    -  };
    -
    -  struct Peer_Union
    -  {
    -    int type;
    -    union
    -    {
    -      Peer_Port port;
    -      Peer_Group group;
    -      Peer_Stamp stamp;
    -    }choose;
    -  };
    -
    -  // = Initialization methods.
    -  ACE_CLASSIX_CO_Acceptor (ACE_Reactor* = ACE_Reactor::instance());
    -  // Default constructor.
    -
    -  ACE_CLASSIX_CO_Acceptor (const ACE_Addr &local_sap,
    -                           int reuse_addr = 0,
    -                           int protocol_family = ACE_CLASSIX_Addr::AF_CLASSIX,
    -                           int backlog = 0,
    -                           int protocol = 0,
    -                           ACE_Reactor* = ACE_Reactor::instance());
    -  // Initiate a passive mode socket.
    -
    -  virtual ~ACE_CLASSIX_CO_Acceptor (void);
    -  // Default dtor.
    -
    -  int open (const ACE_Addr &local_sap,
    -            int reuse_addr = 0,
    -            int protocol_family = ACE_CLASSIX_Addr::AF_CLASSIX,
    -            int backlog = 5,
    -            int protocol = 0,
    -            ACE_Reactor* = ACE_Reactor::instance());
    -  // Initiate a passive mode socket.
    -  int close (void);
    -  // Closes down the listening port.
    -
    -  // = Passive connection acceptance method.
    -  int accept (ACE_CLASSIX_Stream &new_stream,
    -              ACE_Addr *remote_addr = 0,
    -              ACE_Time_Value *timeout = 0,
    -              int restart = 1,
    -              int reset_new_handle = 0) const;
    -  // Accept a new data transfer connection.  A  of 0 means
    -  // block forever, a  of {0, 0} means poll.   == 1
    -  // means "restart if interrupted."
    -
    -  // = ACCESS
    -  ACE_HANDLE get_handle (void) const;
    -  // Get the underlying descriptor.
    -  int get_local_addr (ACE_Addr &) const;
    -  // Return the local endpoint address in the referenced ACE_Addr.
    -  // Returns 0 if successful, else -1.
    -
    -  void reactor(ACE_Reactor*);
    -  // reset the reactor
    -
    -  // = META-TYPE info
    -  typedef ACE_CLASSIX_Addr PEER_ADDR;
    -  typedef ACE_CLASSIX_Stream PEER_STREAM;
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -
    -private:
    -
    -  ACE_CLASSIX_Port_Core *port_;
    -  // optional port.
    -  // If 0, default port is used.
    -  ACE_CLASSIX_SAP       addr_;
    -
    -  ACE_Reactor           *reactor_;
    -  // for reference only. Does not own it
    -};
    -
    -#if !defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/CLASSIX/CLASSIX_CO_Acceptor.i"
    -#endif /* ACE_LACKS_INLINE_FUNCTIONS */
    -
    -#endif /* ACE_CLASSIX_CO_ACCEPTOR_H */
    diff --git a/ace/CLASSIX/CLASSIX_CO_Acceptor.i b/ace/CLASSIX/CLASSIX_CO_Acceptor.i
    deleted file mode 100644
    index dcb6a0d2862..00000000000
    --- a/ace/CLASSIX/CLASSIX_CO_Acceptor.i
    +++ /dev/null
    @@ -1,31 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// Do nothing routine for constructor. 
    -ACE_INLINE
    -ACE_CLASSIX_CO_Acceptor::ACE_CLASSIX_CO_Acceptor (ACE_Reactor* theReactor)
    -    : port_    (0),
    -      reactor_ (theReactor)
    -{
    -  ACE_TRACE ("ACE_CLASSIX_Acceptor::ACE_CLASSIX_Acceptor");
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_CO_Acceptor::~ACE_CLASSIX_CO_Acceptor(void)
    -{
    -  delete this->port_;
    -}
    -
    -ACE_INLINE
    -void
    -ACE_CLASSIX_CO_Acceptor::reactor(ACE_Reactor* theReactor)
    -{
    -  this->reactor_ = theReactor;
    -}
    -
    -ACE_INLINE
    -ACE_HANDLE
    -ACE_CLASSIX_CO_Acceptor::get_handle(void) const
    -{
    -  return this->addr_.get_handle();
    -}
    diff --git a/ace/CLASSIX/CLASSIX_CO_Connector.cpp b/ace/CLASSIX/CLASSIX_CO_Connector.cpp
    deleted file mode 100644
    index 12280142b2b..00000000000
    --- a/ace/CLASSIX/CLASSIX_CO_Connector.cpp
    +++ /dev/null
    @@ -1,118 +0,0 @@
    -// $Id$
    -/*
    -// ============================================================================
    -//
    -// = LIBRARY
    -//     ace
    -// 
    -// = FILENAME
    -//     CLASSIX_CO_Connector.cpp
    -//
    -// = AUTHOR(S)
    -//     Nokia Telecommunications
    -// 
    -// ============================================================================
    -*/
    -#define ACE_BUILD_DLL
    -#include "ace/CLASSIX/CLASSIX_CO_Connector.h"
    -#include "ace/CLASSIX/CLASSIX_CO_Acceptor.h"
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_CLASSIX_CO_Connector)
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_CO_Connector.i"
    -#endif /* __ACE_INLINE__ */
    -/* ------------------------------------------------------------------------- */
    -
    -// Set up remote port information
    -    
    -int
    -ACE_CLASSIX_CO_Connector::connect (ACE_CLASSIX_Stream &new_stream, 
    -				   const ACE_Addr & theAcceptor,/* acceptor */
    -				   ACE_Time_Value * theTimeout, /* timeout */
    -				   const ACE_Addr & theLocal,
    -				   int theReuse,
    -				   int theFlag,
    -				   int thePerm,
    -				   int theProtocolFamily, 
    -				   int theProtocol)
    -
    -{
    -    //
    -    // set up local SAP and connector info in 
    -    // 
    -    if (this->ACE_CLASSIX_CLD_Connector::
    -	connect(new_stream,
    -		theAcceptor,
    -		theTimeout,
    -		theLocal,
    -		theReuse,
    -		theFlag & (~ACE_CLASSIX_CLD_Connector::ENABLE),
    -		thePerm,
    -		theProtocolFamily,
    -		theProtocol) != 0)
    -	return -1;
    -
    -    //
    -    // make a connection
    -    // 
    -    // Tell the connector my own SAP
    -    ACE_CLASSIX_CO_Acceptor::Peer_Union peer;
    -    size_t size = sizeof (ACE_CLASSIX_CO_Acceptor::Peer_Union);
    -    peer.type = ACE_CLASSIX_Addr::PORT;
    -    peer.choose.port.peer = new_stream.local_sap().get_addr().get_id();
    -
    -    if (new_stream.send((void*) &peer, size) != size)
    -	ACE_ERROR_RETURN((LM_ERROR, "%t|%P|%p\n",
    -			  "ACE_CLASSIX_Connector::connect()::send:"), -1);
    -    // Wait for peer SAP information from the acceptor
    -    if (new_stream.ipcRecv((void*) &peer, size, 0, theTimeout) != size)
    -	ACE_ERROR_RETURN((LM_ERROR, "ACE_CLASSIX_Connector::connect()::"
    -			  "unable to receive connect response\n"), -1);
    -	
    -    int error = 0;
    -    switch (peer.type)
    -    {
    -    case ACE_CLASSIX_Addr::PORT:
    -	error = new_stream.set_peer_sap(peer.choose.port.peer);
    -	break;
    -
    -    case ACE_CLASSIX_Addr::GROUP:
    -	error = new_stream.set_peer_sap(peer.choose.group.peer);
    -	break;
    -
    -    case ACE_CLASSIX_Addr::STAMP:
    -	error = new_stream.set_peer_sap(peer.choose.stamp.peer);
    -	break;
    -
    -    case ACE_CLASSIX_Addr::DYNAMIC:
    -	error = new_stream.set_peer_sap(peer.choose.group.peer);
    -	break;
    -
    -    default:
    -	ACE_ERROR_RETURN((LM_ERROR, "ACE_CLASSIX_Connect::connect()::"
    -			  "Invalid peer address\n"), -1);
    -    }
    -
    -    if (error != 0)
    -	ACE_ERROR_RETURN((LM_ERROR, "ACE_CLASSIX_Connector::connect()::"
    -			  "unable to receive connect response\n"), -1);
    -
    -
    -    //
    -    // Make the local SAP "selectable"
    -    // 
    -    if (theFlag & ACE_CLASSIX_CO_Connector::ENABLE &&
    -	new_stream.selectable() != 0)
    -	return -1;
    -
    -    return 0;
    -}
    -
    -void
    -ACE_CLASSIX_CO_Connector::dump (void) const
    -{
    -    ACE_TRACE ("ACE_CLASSIX_CO_Connector::dump");
    -}
    -
    -/* ------------------------------------------------------------------------- */
    diff --git a/ace/CLASSIX/CLASSIX_CO_Connector.h b/ace/CLASSIX/CLASSIX_CO_Connector.h
    deleted file mode 100644
    index 610739dc18d..00000000000
    --- a/ace/CLASSIX/CLASSIX_CO_Connector.h
    +++ /dev/null
    @@ -1,116 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -/*
    -// ============================================================================
    -//
    -// = LIBRARY
    -//     ace
    -//
    -// = FILENAME
    -//     CLASSIX_CO_Connector.h
    -//
    -// = AUTHOR(S)
    -//     Nokia Telecommunications
    -//
    -// ============================================================================
    -*/
    -
    -#ifndef ACE_CLASSIX_CO_CONNECTOR_H
    -#define ACE_CLASSIX_CO_CONNECTOR_H
    -
    -#include "ace/CLASSIX/CLASSIX_CLD_Connector.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -/* ------------------------------------------------------------------------- */
    -
    -class ACE_CLASSIX_CO_Connector : public ACE_CLASSIX_CLD_Connector
    -    // = TITLE
    -    //     Defines an CLASSIX IPC connection factory for the
    -    //     template methods in .
    -    //
    -    // = DESCRIPTION
    -    //     This is used when a client needs to communicate with a server
    -    //     whose SAP address is unknown.
    -    //
    -    //      and  exchanges
    -    //     address(SAP) information to establish a logical link.
    -    //
    -    // = NOTES
    -    //      There is no other identifier and sequence information
    -    //      passed between the acceptor and the connector.
    -    //      Some applications may need to have a
    -    //      reliable protocol for the connection setup procedure.
    -    //
    -    // = SEE ALSO
    -    //   ACE_CLASSIX_CLD_Connector
    -    //   ACE_CLASSIX_Acceptor
    -    //
    -{
    -  public:
    -    // = Initialization routines.
    -    ACE_CLASSIX_CO_Connector (void);
    -    // Default constructor.
    -
    -    ACE_CLASSIX_CO_Connector (ACE_CLASSIX_Stream &new_stream,
    -                               const ACE_Addr &remote_sap
    -                               = ACE_Addr::sap_any,
    -                               ACE_Time_Value *timeout = 0,
    -                               const ACE_Addr &local_sap = ACE_Addr::sap_any,
    -                               int reuse_addr = 0,
    -                               int flags = 0,
    -                               int perms = 0,
    -                               int protocol_family
    -                               = ACE_CLASSIX_Addr::AF_CLASSIX,
    -                               int protocol = 0);
    -    // Emulates connection semantics so that it can be plugged into
    -    // 
    -    // Actively connect local SAP and remote SAP togeter.
    -    // Produce a  if things go well.
    -    //
    -    //  is the peer's address. In ACE_SOCK_Connector it refers to
    -    // the acceptor's address.  In connectionless mode, we do not have
    -    // an acceptor.  The  address will be copied to the new stream
    -    // if things goes well.
    -    //
    -    // If  refers to any address, a port will be
    -    // allocated and will be used as a local SAP.
    -    //
    -    // The rest parameters are there so that this class can be plugged into
    -    // .
    -
    -    int connect (ACE_CLASSIX_Stream &new_stream,
    -                 const ACE_Addr &remote_sap = ACE_Addr::sap_any,
    -                 ACE_Time_Value *timeout = 0,
    -                 const ACE_Addr &local_sap = ACE_Addr::sap_any,
    -                 int reuse_addr = 0,
    -                 int flags = 0,
    -                 int perms = 0,
    -                 int protocol_family = ACE_CLASSIX_Addr::AF_CLASSIX,
    -                 int protocol = 0);
    -
    -    // Factory method used in ::connect_svc_handler()
    -
    -    // Initialization method when default constructor is used.
    -    // See the comments for the corresponding constructor
    -
    -    // = HELPER
    -    void dump(void) const;
    -
    -
    - private:
    -
    -    ACE_CLASSIX_CO_Connector(ACE_CLASSIX_CO_Connector const&);
    -    ACE_CLASSIX_CO_Connector const& operator=(ACE_CLASSIX_CO_Connector const&);
    -};
    -
    -/* ------------------------------------------------------------------------- */
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_CO_Connector.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_CLASSIX_CO_CONNECTOR_H */
    diff --git a/ace/CLASSIX/CLASSIX_CO_Connector.i b/ace/CLASSIX/CLASSIX_CO_Connector.i
    deleted file mode 100644
    index 7f28a66719f..00000000000
    --- a/ace/CLASSIX/CLASSIX_CO_Connector.i
    +++ /dev/null
    @@ -1,36 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -//
    -// CLASSIX_CO_Connector.i
    -/* ------------------------------------------------------------------------- */
    -
    -ACE_INLINE
    -ACE_CLASSIX_CO_Connector::ACE_CLASSIX_CO_Connector (
    -    ACE_CLASSIX_Stream &new_stream, 
    -    const ACE_Addr &remote_sap, 
    -    ACE_Time_Value *timeout,
    -    const ACE_Addr &local_sap,
    -    int reuse_addr,
    -    int flags,
    -    int perms,
    -    int protocol_family,
    -    int protocol)
    -    : ACE_CLASSIX_CLD_Connector(new_stream, remote_sap, timeout, local_sap,
    -				reuse_addr, flags, perms, 
    -				protocol_family, protocol)
    -{
    -  ACE_TRACE ("ACE_CLASSIX_CO_Connector::ACE_CLASSIX_CO_Connector");
    -}
    -
    -// Do-nothing constructor...
    -
    -ACE_INLINE
    -ACE_CLASSIX_CO_Connector::ACE_CLASSIX_CO_Connector (void)
    -    : ACE_CLASSIX_CLD_Connector()
    -{
    -  ACE_TRACE ("ACE_CLASSIX_CO_Connector::ACE_CLASSIX_CO_Connector");
    -}
    -
    -/* ------------------------------------------------------------------------- */
    -
    -
    diff --git a/ace/CLASSIX/CLASSIX_Dgram_Mcast.cpp b/ace/CLASSIX/CLASSIX_Dgram_Mcast.cpp
    deleted file mode 100644
    index 112d25956b7..00000000000
    --- a/ace/CLASSIX/CLASSIX_Dgram_Mcast.cpp
    +++ /dev/null
    @@ -1,83 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//     IPP
    -// 
    -// = FILENAME
    -//     CLASSIX/Dgram_Mcast.cpp
    -//
    -// = AUTHOR(S)
    -//     Wei Chiang
    -// 
    -// = COPYRIGHT
    -//     Copyright 1998 Nokia Telecommunications
    -//
    -// ============================================================================
    -
    -#include "ace/CLASSIX/CLASSIX_Dgram_Mcast.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_Dgram_Mcast.i"
    -#endif /* __ACE_INLINE__ */
    -/* ------------------------------------------------------------------------- */
    -int
    -ACE_CLASSIX_Dgram_Mcast::set_saps(int theStamp, 
    -				    const ACE_CLASSIX_Port& thePort)
    -{
    -    this->local_sap_.set_addr(thePort);
    -    if (this->peer_sap_.set(theStamp) != 0)
    -    {
    -	errno = EADDRNOTAVAIL;
    -	ACE_ERROR_RETURN((LM_ERROR, "ACE_CLASSIX_Dgram_Mcast- "
    -		   "failed to set up peer sap address \n"), -1);
    -    }
    -    else
    -    {
    -	this->dest_.target = this->peer_sap_.get_addr()->get_id();
    -	return 0;
    -    }
    -}
    -
    -
    -int
    -ACE_CLASSIX_Dgram_Mcast::set_mode_(u_int theMode, int theSite)
    -{
    -    int result = K_EFAULT;
    -    if (theMode <= K_FUNCXMODE  &&
    -	(result =::uiSite(&this->dest_.coTarget, theSite)) == 0)
    -	result = ::ipcTarget(&this->dest_.target, theMode);
    -    
    -    if (result != 0)
    -    {
    -	errno = ACE_CLASSIX_OS::convert_io_error(result);
    -	result = -1;
    -    }
    -    return result;
    -}
    -
    -int
    -ACE_CLASSIX_Dgram_Mcast::set_mode_(u_int theMode)
    -{
    -    int result = K_EFAULT;
    -    if (theMode <= K_FUNCXMODE )
    -	result = ::ipcTarget(&this->dest_.target, theMode);
    -
    -    if (result < 0)
    -    {
    -	errno = ACE_CLASSIX_OS::convert_io_error(result);
    -	result = -1;
    -    }
    -    return result;
    -}
    -
    -
    -void
    -ACE_CLASSIX_Dgram_Mcast::dump (void) const
    -{
    -    ACE_DEBUG ((LM_DEBUG, "ACE_CLASSIX_Dgram_Mcast...\n"));
    -    this->ACE_CLASSIX_Stream::dump();
    -    ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    diff --git a/ace/CLASSIX/CLASSIX_Dgram_Mcast.h b/ace/CLASSIX/CLASSIX_Dgram_Mcast.h
    deleted file mode 100644
    index a21a770f83d..00000000000
    --- a/ace/CLASSIX/CLASSIX_Dgram_Mcast.h
    +++ /dev/null
    @@ -1,92 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//     ace
    -//
    -// = FILENAME
    -//     CLASSIX_Dgram_Mcast.h
    -//
    -// = AUTHOR(S)
    -//     Nokia Telecommunications
    -//
    -// ============================================================================
    -
    -#ifndef ACE_CLASSIX_DGRAM_MCAST_H
    -#define ACE_CLASSIX_DGRAM_MCAST_H
    -
    -/* ------------------------------------------------------------------------- */
    -#include 
    -
    -class ACE_CLASSIX_Dgram_Mcast : public ACE_CLASSIX_Stream
    -    // = TITLE
    -    //   Provides Dgram_Mcast interfaces for CLASSIX IPC communications.
    -    //
    -    // = DESCRIPTION
    -    //   This class represents multiple end-points for message delivery.
    -    //   All the remote ports are belong to the same group identified by
    -    //   a stamp.
    -    //   It uses the broadcast mode provided by ipcSend() to deliver
    -    //   messages.
    -    //
    -    //   This class is most likely used in the server.
    -    //
    -{
    - public:
    -    // = INITIALIZATION
    -    ACE_CLASSIX_Dgram_Mcast(void);
    -    // Default constructor, does not setup anything
    -
    -    ACE_CLASSIX_Dgram_Mcast(int /* stamp */,
    -                            const ACE_CLASSIX_Port& =
    -                            *ACE_CLASSIX_DEFAULT_PORT::instance());
    -    // remote SAP = port group, local SAP = default port
    -
    -    int set_saps(int /* stamp */,
    -             const ACE_CLASSIX_Port& =
    -             *ACE_CLASSIX_DEFAULT_PORT::instance());
    -    // remote SAP = port group, local SAP = default port
    -
    -    //virtual ssize_t send (const void *, /* buf */
    -    // size_t /* n */) const;
    -
    -
    -    // = HELPER
    -    void dump (void) const;
    -    // Dump the state of an object.
    -
    -    ACE_ALLOC_HOOK_DECLARE;
    -    // Declare the dynamic allocation hooks.
    -
    - protected:
    -
    -    virtual int set_mode_(u_int = K_BROADMODE); /* theMode */
    -    // Sets the addressing mode with the current setting of coTarget
    -    virtual int set_mode_(u_int, /* mode */ int /* site */);
    -    // Sets the addressing mode as well as the coTarget
    -
    -    // Site information for delivery mode, see 
    -    // Can be changed by control()/set_mode_()
    -    int                 dest_site_;
    -
    -
    - private:
    -   // Disable copy constructor
    -  ACE_CLASSIX_Dgram_Mcast(ACE_CLASSIX_Dgram_Mcast const&);
    -  ACE_CLASSIX_Dgram_Mcast const& operator=(ACE_CLASSIX_Dgram_Mcast const&);
    -};
    -
    -/* ------------------------------------------------------------------------- */
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_Dgram_Mcast.i"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_CLASSIX_DGRAM_MCAST_H */
    diff --git a/ace/CLASSIX/CLASSIX_Dgram_Mcast.i b/ace/CLASSIX/CLASSIX_Dgram_Mcast.i
    deleted file mode 100644
    index 5d9fd3df0d3..00000000000
    --- a/ace/CLASSIX/CLASSIX_Dgram_Mcast.i
    +++ /dev/null
    @@ -1,21 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -//
    -// ace/CLASSIX_Dgram_Mcast.i
    -/* ------------------------------------------------------------------------- */
    -ACE_INLINE
    -ACE_CLASSIX_Dgram_Mcast::ACE_CLASSIX_Dgram_Mcast(void)
    -    : ACE_CLASSIX_Stream()
    -{
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Dgram_Mcast::ACE_CLASSIX_Dgram_Mcast (int theStamp,
    -				const ACE_CLASSIX_Port& thePort)
    -    : ACE_CLASSIX_Stream()
    -{
    -    this->set_saps(theStamp, thePort);
    -}
    -
    -
    -/* ------------------------------------------------------------------------- */
    diff --git a/ace/CLASSIX/CLASSIX_Group.cpp b/ace/CLASSIX/CLASSIX_Group.cpp
    deleted file mode 100644
    index cb0064d3298..00000000000
    --- a/ace/CLASSIX/CLASSIX_Group.cpp
    +++ /dev/null
    @@ -1,89 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//     ace
    -// 
    -// = FILENAME
    -//     CLASSIX_Group.cpp
    -//
    -// = AUTHOR(S)
    -//     Nokia Telecommunications
    -// 
    -// ============================================================================
    -
    -#include "ace/CLASSIX/CLASSIX_Group.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_Group.i"
    -#endif /* __ACE_INLINE__ */
    -/* ------------------------------------------------------------------------- */
    -
    -void
    -ACE_CLASSIX_Group::init_(void)
    -{
    -    this->clear_config_();
    -    this->addr_.group_.ui.uiHead = this->addr_.group_.ui.uiTail = 0;
    -    this->addr_.group_.key.keyHead = this->addr_.group_.key.keyTail = 0;
    -}
    -
    -void
    -ACE_CLASSIX_Group::set_addr(void* theSrc, int theLen)
    -{
    -    if (theLen > this->get_size())
    -        return;
    -
    -    ACE_OS::memcpy ((void *) &this->addr_,
    -                    (void *) theSrc, theLen);
    -}
    -
    -void
    -ACE_CLASSIX_Group::set_addr(const KnCap& thePeer)
    -{
    -    this->addr_.group_ = thePeer;
    -    this->set_config_();
    -}
    -
    -
    -int
    -ACE_CLASSIX_Group::insert(const ACE_CLASSIX_Port* thePort)
    -{
    -    if (this->is_configured())
    -	return ::grpPortInsert((KnCap*) &this->get_cap(), 
    -			       (KnUniqueId*) &thePort->get_id());
    -    else
    -	return K_EINVAL;
    -}
    -
    -int
    -ACE_CLASSIX_Group::remove(const ACE_CLASSIX_Port* thePort)
    -{
    -    if (this->is_configured())
    -	return ::grpPortRemove((KnCap*) &this->get_cap(), 
    -			       (KnUniqueId*) &thePort->get_id());
    -    else
    -	return K_EINVAL;
    -}
    -
    -void
    -ACE_CLASSIX_Group::dump(void) const
    -{
    -  ACE_DEBUG ((LM_DEBUG, "ACE_CLASSIX_Group...\n"));
    -  char s[200];
    -  if (!this->is_configured())
    -      ACE_OS::sprintf(s, "Group has not been setup\n");
    -  else
    -  {
    -      const KnCap &group = this->get_cap();
    -      ACE_OS::sprintf (s, "id head = %d(%x), id tail = %d(%x)\n"
    -		       "key head = %d(%x) key tail = %d(%x)\n",
    -		       group.ui.uiHead, group.ui.uiHead, 
    -		       group.ui.uiTail, group.ui.uiTail, 
    -		       group.key.keyHead, group.key.keyHead, 
    -		       group.key.keyTail, group.key.keyTail);
    -  }
    -  ACE_DEBUG ((LM_DEBUG, "\n%s", s));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));    
    -}
    diff --git a/ace/CLASSIX/CLASSIX_Group.h b/ace/CLASSIX/CLASSIX_Group.h
    deleted file mode 100644
    index ed92c5970d1..00000000000
    --- a/ace/CLASSIX/CLASSIX_Group.h
    +++ /dev/null
    @@ -1,116 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//     ace
    -//
    -// = FILENAME
    -//     CLASSIX/Group.h
    -//
    -// = AUTHOR(S)
    -//     Nokia Telecommunications
    -//
    -// ============================================================================
    -
    -#ifndef ACE_CLASSIX_GROUP_H
    -#define ACE_CLASSIX_GROUP_H
    -
    -/* ------------------------------------------------------------------------- */
    -#include "ace/CLASSIX/CLASSIX_Addr.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/CLASSIX/CLASSIX_Port.h"
    -
    -class ACE_CLASSIX_Group : public ACE_CLASSIX_Addr
    -    // = TITLE
    -    //   Wrapper over Chorus's Group concept.
    -    //
    -    // = DESCRIPTION
    -    //   Provides interface to insert and remove ports in the group which is
    -    //   created based on a given KnCap. This" is the unique
    -    //   identifier of the group.
    -    //
    -    // = NOTE
    -    //   Chorus does not provide facility to remove a group from the system,
    -    //   nor explicitly create a group.
    -    //   As such, the wrapper allows users to freely change from one group
    -    //   to the other within the same  instance.
    -    //
    -    // = SEE ALSO
    -    //   , 
    -    //
    -{
    - public:
    -    // = INITIALIZATION
    -    ACE_CLASSIX_Group(void*, /* group id */ int /* len */);
    -    // Sets up the group wrapper using the supplied group id.
    -    ACE_CLASSIX_Group(const KnCap&);
    -    // Sets up the group wrapper using the supplied KnCap
    -
    -    // = ACCESS
    -    int is_configured(void) const;
    -    // Returns 1, if it contains valid group id; 0, otherwise.
    -    virtual ACE_CLASSIX_Addr::Addr_Type is_type(void) const;
    -    // returns GROUP type
    -    void* get_addr(void) const;
    -    // Returns the group id
    -    virtual const KnUniqueId& get_id (void) const;
    -    // Returns a reference to the unique identifier
    -    virtual void set_addr(void* /* source */, int /* len */);
    -    // Sets the group information  according to the supplied data
    -    // in raw format.
    -    virtual void set_addr(const KnCap&);
    -    // Sets the group information  according to the supplied KnCap.
    -    const KnCap& get_cap(void) const;
    -    // Returns the capability to the supplied location
    -    // If the address is not configured, the return value is unpredictable.
    -    int insert(const ACE_CLASSIX_Port*);
    -    int remove (const ACE_CLASSIX_Port*);
    -    // Inserts/removes the specified port in to the group
    -    // Returns 0, if successful; returns a negative value otherwise
    -
    -    int operator == (const ACE_CLASSIX_Group &) const;
    -    int operator != (const ACE_CLASSIX_Group &) const;
    -
    -    // = HELPER
    -    void dump(void) const;
    -
    - protected:
    -    // = INITIALIZATION
    -    ACE_CLASSIX_Group();
    -    // default constructor, does nothing but init.
    -
    -    void init_(void);
    -    // Initializes the structure.
    -
    -    void set_config_();
    -    // Sets the group  configured.
    -    void clear_config_();
    -    // Sets the group  not-configured.
    -
    -    struct group_addr
    -    {
    -        int              config_; // 1, if the following fields are valid
    -        KnCap            group_;
    -    };
    -    group_addr        addr_;
    -
    - private:
    -
    -    // disable copy/assignment constructor
    -    ACE_CLASSIX_Group(ACE_CLASSIX_Group const&);
    -    ACE_CLASSIX_Group const& operator=(ACE_CLASSIX_Group const&);
    -};
    -
    -/* ------------------------------------------------------------------------- */
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_Group.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_CLASSIX_GROUP_H */
    diff --git a/ace/CLASSIX/CLASSIX_Group.i b/ace/CLASSIX/CLASSIX_Group.i
    deleted file mode 100644
    index e3650502a10..00000000000
    --- a/ace/CLASSIX/CLASSIX_Group.i
    +++ /dev/null
    @@ -1,89 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -ACE_INLINE
    -ACE_CLASSIX_Group::ACE_CLASSIX_Group()
    -    : ACE_CLASSIX_Addr (sizeof (ACE_CLASSIX_Group::group_addr))
    -{
    -    this->init_();
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Group::ACE_CLASSIX_Group(void* theSrc, int theLen)
    -    : ACE_CLASSIX_Addr (sizeof (ACE_CLASSIX_Group::group_addr))
    -{
    -    this->set_addr(theSrc, theLen);
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Group::ACE_CLASSIX_Group(const KnCap& thePeer)
    -    : ACE_CLASSIX_Addr (sizeof (ACE_CLASSIX_Group::group_addr))
    -{
    -    this->set_addr(thePeer);
    -}
    -
    -ACE_INLINE
    -void *
    -ACE_CLASSIX_Group::get_addr(void) const
    -{
    -    return (void*) &this->addr_;
    -}
    -
    -ACE_INLINE
    -const KnUniqueId&
    -ACE_CLASSIX_Group::get_id(void) const
    -{
    -    return this->addr_.group_.ui;
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Group::is_configured(void) const
    -{
    -    return this->addr_.config_ == 1;
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Addr::Addr_Type
    -ACE_CLASSIX_Group::is_type(void) const
    -{
    -    return ACE_CLASSIX_Addr::GROUP;
    -}
    -
    -ACE_INLINE
    -void
    -ACE_CLASSIX_Group::set_config_(void)
    -{
    -    this->addr_.config_ = 1;
    -}
    -
    -ACE_INLINE
    -void
    -ACE_CLASSIX_Group::clear_config_(void)
    -{
    -    this->addr_.config_ = 0;
    -}
    -
    -ACE_INLINE
    -const KnCap&
    -ACE_CLASSIX_Group::get_cap(void) const
    -{
    -    return this->addr_.group_;
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Group::operator ==(const ACE_CLASSIX_Group & theRhs) const
    -{
    -    return 
    -	this->is_configured() &&
    -	theRhs.is_configured() &&
    -	((KnCap) (this->get_cap()) == (KnCap) (theRhs.get_cap()));
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Group::operator !=(const ACE_CLASSIX_Group & theRhs) const
    -{
    -    return !(*this == theRhs);
    -}
    diff --git a/ace/CLASSIX/CLASSIX_Group_Dynamic.cpp b/ace/CLASSIX/CLASSIX_Group_Dynamic.cpp
    deleted file mode 100644
    index a0ecbe357e6..00000000000
    --- a/ace/CLASSIX/CLASSIX_Group_Dynamic.cpp
    +++ /dev/null
    @@ -1,22 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//     ace
    -// 
    -// = FILENAME
    -//     CLASSIX_Group_Creator.cpp.1
    -//
    -// = AUTHOR(S)
    -//     Nokia Telecommunications
    -// 
    -//
    -// ============================================================================
    -
    -#include "ace/CLASSIX/CLASSIX_Group_Dynamic.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_Group_Dynamic.i"
    -#endif /* __ACE_INLINE__ */
    diff --git a/ace/CLASSIX/CLASSIX_Group_Dynamic.h b/ace/CLASSIX/CLASSIX_Group_Dynamic.h
    deleted file mode 100644
    index 7531d69404f..00000000000
    --- a/ace/CLASSIX/CLASSIX_Group_Dynamic.h
    +++ /dev/null
    @@ -1,61 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//     ace
    -//
    -// = FILENAME
    -//     CLASSIX_Group_Dynamic.h
    -//
    -// = AUTHOR(S)
    -//     Nokia Telecommunications
    -//
    -// ============================================================================
    -
    -#ifndef ACE_CLASSIX_GROUP_DYNAMIC_H
    -#define ACE_CLASSIX_GROUP_DYNAMIC_H
    -
    -/* ------------------------------------------------------------------------- */
    -#include "ace/CLASSIX/CLASSIX_Group.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -class ACE_CLASSIX_Group_Dynamic : public ACE_CLASSIX_Group
    -    // = TITLE
    -    //   Wrapper over Chorus's Group which is created dynamically and not named
    -    //   by a .
    -    //
    -    // = DESCRIPTION
    -    //   This is a subclass of .
    -    //
    -    //   Its encapsulated group is created dynamically and the
    -    //    is the name as well as the unique identifier.
    -    //
    -    // = SEE ALSO
    -    //   , 
    -{
    -  public:
    -
    -  ACE_CLASSIX_Group_Dynamic(void);
    -  // default constructor... create a group use Chorus IPC's K_DYNAMIC option
    -
    -    virtual ACE_CLASSIX_Addr::Addr_Type is_type(void) const;
    -    // returns Dynamic type
    -
    -  private:
    -
    -  ACE_CLASSIX_Group_Dynamic(ACE_CLASSIX_Group_Dynamic const&);
    -  ACE_CLASSIX_Group_Dynamic const& operator=(ACE_CLASSIX_Group_Dynamic const&);
    -};
    -
    -/* ------------------------------------------------------------------------- */
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_Group_Dynamic.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_CLASSIX_GROUP_DYNAMIC_H */
    diff --git a/ace/CLASSIX/CLASSIX_Group_Dynamic.i b/ace/CLASSIX/CLASSIX_Group_Dynamic.i
    deleted file mode 100644
    index a7974ce45c1..00000000000
    --- a/ace/CLASSIX/CLASSIX_Group_Dynamic.i
    +++ /dev/null
    @@ -1,16 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -ACE_INLINE
    -ACE_CLASSIX_Group_Dynamic::ACE_CLASSIX_Group_Dynamic(void)
    -{
    -    if (::grpAllocate( K_DYNAMIC, &this->addr_.group_, 0) == 0)
    -	this->set_config_();
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Addr::Addr_Type
    -ACE_CLASSIX_Group_Dynamic::is_type(void) const
    -{
    -    return ACE_CLASSIX_Addr::DYNAMIC;
    -}
    diff --git a/ace/CLASSIX/CLASSIX_Group_Stamp.cpp b/ace/CLASSIX/CLASSIX_Group_Stamp.cpp
    deleted file mode 100644
    index b1205ca66ec..00000000000
    --- a/ace/CLASSIX/CLASSIX_Group_Stamp.cpp
    +++ /dev/null
    @@ -1,52 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//     ace
    -// 
    -// = FILENAME
    -//     ace/CLASSIX_Group_Stamp.cpp
    -//
    -// = AUTHOR(S)
    -//     Nokia Telecommunications
    -// 
    -// ============================================================================
    -
    -#include "ace/CLASSIX/CLASSIX_Group_Stamp.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_Group_Stamp.i"
    -#endif /* __ACE_INLINE__ */
    -/* ------------------------------------------------------------------------- */
    -void
    -ACE_CLASSIX_Group_Stamp::set_addr(void* theStamp, int)
    -{
    -    // Get the group capability
    -    this->stamp_ = *((u_int*)theStamp);
    -    KnActorPrivilege     actor;
    -    actorPrivilege(K_MYACTOR, &actor, NULL);
    -    if (::grpAllocate((actor == K_SUPACTOR) ?  K_STATSYS : K_STATUSER,
    -		      &this->addr_.group_, 
    -		      this->stamp_) < 0 )
    -    {
    -	ACE_DEBUG((LM_DEBUG, "ACE_CLASSIX_Group_Stamp()::"
    -		   "group allocation failed\n"));
    -	this->init_();
    -	this->stamp_ = ACE_CLASSIX_Group_Stamp::ILLEGAL_STAMP;
    -    }
    -    else
    -    {
    -	this->set_config_();
    -    }
    -}
    -
    -void
    -ACE_CLASSIX_Group_Stamp::dump(void) const
    -{
    -  ACE_DEBUG ((LM_DEBUG, "ACE_CLASSIX_Group_Stamp...\n"));
    -  ACE_DEBUG ((LM_DEBUG, "\nStamp = %d\n", this->get_stamp()));
    -  this->ACE_CLASSIX_Group::dump();
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));    
    -}
    diff --git a/ace/CLASSIX/CLASSIX_Group_Stamp.h b/ace/CLASSIX/CLASSIX_Group_Stamp.h
    deleted file mode 100644
    index a69d732edc2..00000000000
    --- a/ace/CLASSIX/CLASSIX_Group_Stamp.h
    +++ /dev/null
    @@ -1,88 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//     ace
    -//
    -// = FILENAME
    -//     CLASSIX_Group_Stamp.h
    -//
    -// = AUTHOR(S)
    -//     Nokia Telecommunications
    -//
    -// ============================================================================
    -
    -#ifndef ACE_CLASSIX_GROUP_STAMP_H
    -#define ACE_CLASSIX_GROUP_STAMP_H
    -
    -/* ------------------------------------------------------------------------- */
    -#include "ace/CLASSIX/CLASSIX_Group.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -class ACE_CLASSIX_Group_Stamp : public ACE_CLASSIX_Group
    -    // = TITLE
    -    //   Wrapper over Chorus's Group using  for naming the group.
    -    //
    -    // = DESCRIPTION
    -    //   This is a subclass of .
    -    //
    -    //   Its encapsulated group is named by a .  However,
    -    //    is still the unique identifier of the group.
    -    //
    -    // = NOTE
    -    //   As at the time of writing, The stamp is contained in the ui.uiTail
    -    //   field of .
    -    //
    -    // = SEE ALSO
    -    //   , 
    -    //
    -{
    - public:
    -    enum
    -    {
    -        ILLEGAL_STAMP = 0
    -        /* Have we defined the range of valid stamps? */
    -    };
    -
    -    // = INITIALIZATION
    -    ACE_CLASSIX_Group_Stamp();
    -    // default constructor.  Does not contain group information..
    -    ACE_CLASSIX_Group_Stamp(int /* stamp */);
    -    // creates a group use the specfied stamp
    -    virtual void set_addr(void*,  /* pointer to the stamp */
    -                          int = 0 /* not used */);
    -    // Replaces the existing group according to the supplied stamp
    -
    -    // = ACCESS
    -    virtual ACE_CLASSIX_Addr::Addr_Type is_type(void) const;
    -    // returns STAMP type
    -
    -    int get_stamp() const;
    -    // Returns the stamp
    -    // If the address is not configured, the return value is unpredictable.
    -
    -    // = HELPER
    -    void dump(void) const;
    -
    -
    -
    - private:
    -    u_int stamp_;
    -
    -    // disable copy/assignment constructor
    -    ACE_CLASSIX_Group_Stamp(ACE_CLASSIX_Group_Stamp const&);
    -    ACE_CLASSIX_Group_Stamp const& operator=(ACE_CLASSIX_Group_Stamp const&);
    -};
    -
    -/* ------------------------------------------------------------------------- */
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_Group_Stamp.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_CLASSIX_GROUP_STAMP_H */
    diff --git a/ace/CLASSIX/CLASSIX_Group_Stamp.i b/ace/CLASSIX/CLASSIX_Group_Stamp.i
    deleted file mode 100644
    index 0c03d8ab17a..00000000000
    --- a/ace/CLASSIX/CLASSIX_Group_Stamp.i
    +++ /dev/null
    @@ -1,32 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -ACE_INLINE
    -ACE_CLASSIX_Group_Stamp::ACE_CLASSIX_Group_Stamp()
    -    : ACE_CLASSIX_Group (),
    -      stamp_            (0)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Group_Stamp::ACE_CLASSIX_Group_Stamp(int theStamp)
    -    : ACE_CLASSIX_Group ()
    -{
    -    this->set_addr(&theStamp);
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Group_Stamp::get_stamp() const
    -{
    -    return this->stamp_;
    -	
    -//    return this->addr_.group_.ui.uiTail;
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Addr::Addr_Type
    -ACE_CLASSIX_Group_Stamp::is_type(void) const
    -{
    -    return ACE_CLASSIX_Addr::STAMP;
    -}
    diff --git a/ace/CLASSIX/CLASSIX_OS.cpp b/ace/CLASSIX/CLASSIX_OS.cpp
    deleted file mode 100644
    index 2ec4b6af6d8..00000000000
    --- a/ace/CLASSIX/CLASSIX_OS.cpp
    +++ /dev/null
    @@ -1,117 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//     ace
    -// 
    -// = FILENAME
    -//     CLASSIX_OS.cpp
    -//
    -// = AUTHOR(S)
    -//     Nokia Telecommunications
    -// 
    -// ============================================================================
    -
    -#include "ace/CLASSIX/CLASSIX_OS.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_OS.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#include "ace/CLASSIX/CLASSIX_Select_Reactor.h"
    -
    -/* ------------------------------------------------------------------------- */
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_CLASSIX_OS)
    -ACE_ALLOC_HOOK_DEFINE(ACE_CLASSIX_Msg)
    -
    -#if 0
    -ACE_ALLOC_HOOK_DEFINE(ACE_CLASSIX_Mgr)
    -ACE_CLASSIX_Mgr::ACE_CLASSIX_Mgr(void)
    -{
    -}
    -
    -ACE_CLASSIX_Mgr::~ACE_CLASSIX_Mgr(void)
    -{
    -}
    -
    -ACE_SYNCH_RECURSIVE_MUTEXT&
    -ACE_CLASSIX_Mgr::ref_lock(void) const;
    -{
    -    return port_lock_;
    -}
    -#endif
    -/* ------------------------------------------------------------------------- */
    -KnUniqueId ACE_CLASSIX_OS::null_KnUniqueId_;
    -ACE_Recursive_Thread_Mutex ACE_CLASSIX_OS::lock_;
    -
    -ACE_CLASSIX_OS::ACE_CLASSIX_OS(void)
    -{
    -  // Create a actor-wide CLASSIX reactor
    -  ACE_Reactor *r = 
    -    ACE_Reactor::instance
    -    (new ACE_Reactor(new ACE_CLASSIX_Select_Reactor(), 1), 1);
    -  delete r;
    -  
    -  // Fills in a null KnUniqueId so that it can be referenced when required
    -  this->null_KnUniqueId_.uiHead = this->null_KnUniqueId_.uiTail = 0;
    -}
    -
    -ssize_t
    -ACE_CLASSIX_OS::convert_io_error(ssize_t theOriginal)
    -{
    -    switch (theOriginal)
    -    {
    -    case K_EFULL:
    -	return ENOBUFS;
    -
    -    case K_EINVAL:
    -	return EFTYPE;
    -
    -    case K_EFAULT:
    -	return EFAULT;
    -
    -    case K_ETOOMUCH:
    -	return EMSGSIZE;
    -
    -    case K_EUNKNOWN:
    -	return EBADF;
    -
    -    case K_ENOPORT:
    -	return EBADF;
    -
    -    case K_ETIMEOUT:
    -	return ETIMEOUT;
    -
    -    case K_EABORT:
    -	return EINTR;
    -
    -    default:
    -	ACE_DEBUG((LM_DEBUG, "unknonw error: %d\n", theOriginal));
    -	return EFAULT;
    -    }
    -}
    -
    -
    -
    -/* ------------------------------------------------------------------------- */
    -
    -void
    -ACE_CLASSIX_Msg::dump(void) const
    -{
    -    ACE_DEBUG ((LM_INFO, ACE_BEGIN_DUMP, this));
    -
    -    char s[100];
    -    ACE_OS::sprintf (s, "flag = %x\n"
    -		     "body size = %d\t addr = %x\n"
    -		     "annex addr = %x\n"
    -		     "seq no = %d\n",
    -		     this->msg_.flags,
    -		     this->msg_.bodySize, this->msg_.bodyAddr,
    -		     this->msg_.annexAddr,
    -		     this->msg_.seqNum);
    -    ACE_DEBUG ((LM_INFO, "%s", s));
    -    ACE_DEBUG ((LM_INFO, ACE_END_DUMP));    
    -}
    diff --git a/ace/CLASSIX/CLASSIX_OS.h b/ace/CLASSIX/CLASSIX_OS.h
    deleted file mode 100644
    index e708a5e7d9e..00000000000
    --- a/ace/CLASSIX/CLASSIX_OS.h
    +++ /dev/null
    @@ -1,132 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//     ace
    -//
    -// = FILENAME
    -//     CLASSIX_OS.h
    -//
    -// = AUTHOR(S)
    -//     Nokia Telecommunications
    -//
    -// ============================================================================
    -
    -#ifndef ACE_CLASSIX_OS_H
    -#define ACE_CLASSIX_OS_H
    -
    -/* ------------------------------------------------------------------------- */
    -#include "ace/OS.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Select_Reactor.h"
    -#include "ace/Singleton.h"
    -#include "ace/CLASSIX/CLASSIX_Port_Core.h"
    -
    -#include 
    -
    -
    -#if 0
    -class ACE_Export ACE_CLASSIX_Mgr
    -    // = TITLE
    -    //   Class to manage resouces, especially static resources
    -    //
    -    // = DESCRIPTION
    -    //   It is intended that one  per actor
    -    //
    -{
    - public:
    -    friend ACE_Singleton;
    -
    -    ACE_SYNCH_RECURSIVE_MUTEXT& ref_lock(const) const;
    -
    - protected:
    -    // = Initialization
    -    ACE_CLASSIX_Mgr(void);
    -    // Only allow its fried to instantiate, since it is meant as a
    -    // singleton class.
    -    // This class shall be instanti
    -
    -private:
    -    ACE_SYNCH_RECURSIVE_MUTEX   *port_lock_;
    -};
    -#endif
    -
    -class ACE_Export ACE_CLASSIX_OS
    -{
    -public:
    -
    -    ACE_CLASSIX_OS();
    -
    -    static const KnUniqueId&  null_KnUniqueId();
    -    static ssize_t convert_io_error (ssize_t /* CLASSIX' error no */);
    -    // conver CLASSIX's errno no to Posix no.
    -
    -protected:
    -
    -private:
    -    friend class ACE_CLASSIX_Port_Core;
    -    friend class ACE_CLASSIX_Port;
    -    static ACE_Recursive_Thread_Mutex& get_lock_(void);
    -    // Returns CLASSIX environment-wide lock
    -
    -    static KnUniqueId                        null_KnUniqueId_;
    -    // Null-filled KnUniqueId
    -
    -    static ACE_Recursive_Thread_Mutex        lock_;
    -};
    -
    -/* ------------------------------------------------------------------------- */
    -
    -
    -class ACE_CLASSIX_Msg
    -    // = TITLE
    -    //   Class wrapper over Chorus's KnMsgDesc structure
    -    //
    -    // = DESCRIPTION
    -    //   Provides initialization and reset methods to construct a KnMsgDesc.
    -    //
    -    //   The flags in the  field of the KnMsgDesc structure is always
    -    //   set to 0. Therefore, the message body will always be copied and
    -    //   the message is assumed to be part of the user(kernel) address
    -    //   space when the caller is a USER(SUPERVISOR) thread.
    -    //   (Chorus may not support the options defined in the flag, so we
    -    //   choose not to use the flag, i.e. set it to null).
    -    //
    -    //   The message annex is not used.
    -
    -    // = SEE ALSO
    -    //   ipcSend(2)
    -{
    - public:
    -    // = initialization
    -    ACE_CLASSIX_Msg();
    -    // default constructor
    -    ACE_CLASSIX_Msg(const void * /* body address */, int /* msg length */);
    -
    -    KnMsgDesc* get(void);
    -    // get CLASSIX' message structure
    -    void set (const void* /* body address */, int /* msg length*/);
    -    // Reset the message.  The original message will be overwritten.
    -
    -    void dump(void) const;
    -
    -    ACE_ALLOC_HOOK_DECLARE;
    -    // declare the dynamic allocation hooks
    -
    - private:
    -    KnMsgDesc    msg_;
    -};
    -
    -/* ------------------------------------------------------------------------- */
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_OS.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_CLASSIX_OS_H */
    diff --git a/ace/CLASSIX/CLASSIX_OS.i b/ace/CLASSIX/CLASSIX_OS.i
    deleted file mode 100644
    index d5ded0cc75a..00000000000
    --- a/ace/CLASSIX/CLASSIX_OS.i
    +++ /dev/null
    @@ -1,56 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -/* ------------------------------------------------------------------------- */
    -ACE_INLINE
    -const KnUniqueId&
    -ACE_CLASSIX_OS::null_KnUniqueId(void)
    -{
    -    return null_KnUniqueId_;
    -}
    -
    -
    -ACE_INLINE
    -ACE_Recursive_Thread_Mutex&
    -ACE_CLASSIX_OS::get_lock_(void)
    -{
    -    return lock_;
    -}
    -
    -/* ------------------------------------------------------------------------- */
    -ACE_INLINE
    -ACE_CLASSIX_Msg::ACE_CLASSIX_Msg(void)
    -{
    -    // Make a null-filled message
    -    this->msg_.flags = 0;
    -    this->msg_.bodySize = 0;
    -    this->msg_.bodyAddr = 0;
    -    this->msg_.annexAddr = 0;
    -    this->msg_.seqNum = 0;
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Msg::ACE_CLASSIX_Msg(const void* theBuf, int theLen)
    -{
    -    this->msg_.flags = 0;
    -    this->msg_.annexAddr = 0;
    -    this->msg_.seqNum = 0;
    -
    -    this->msg_.bodySize = theLen;
    -    this->msg_.bodyAddr = (VmAddr) theBuf;
    -}
    -
    -ACE_INLINE
    -void
    -ACE_CLASSIX_Msg::set(const void* theBuf, int theLen)
    -{
    -    this->msg_.bodySize = theLen;
    -    this->msg_.bodyAddr = (VmAddr) theBuf;
    -}
    -
    -ACE_INLINE
    -KnMsgDesc*
    -ACE_CLASSIX_Msg::get(void)
    -{
    -    return &this->msg_;
    -}
    diff --git a/ace/CLASSIX/CLASSIX_Peer_SAP.cpp b/ace/CLASSIX/CLASSIX_Peer_SAP.cpp
    deleted file mode 100644
    index 9dbddf9c0b1..00000000000
    --- a/ace/CLASSIX/CLASSIX_Peer_SAP.cpp
    +++ /dev/null
    @@ -1,77 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//     ace
    -// 
    -// = FILENAME
    -//     CLASSIX_Peer_SAP.cpp
    -//
    -// = AUTHOR(S)
    -//     Nokia Telecommunications
    -// 
    -// ============================================================================
    -
    -#include "ace/CLASSIX/CLASSIX_Peer_SAP.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_Peer_SAP.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#include "ace/CLASSIX/CLASSIX_Group_Stamp.h"
    -/* ------------------------------------------------------------------------- */
    -int
    -ACE_CLASSIX_Peer_SAP::set(const ACE_CLASSIX_Port_Core& thePeer)
    -{
    -    delete this->peer_addr_;
    -    this->peer_addr_ = new ACE_CLASSIX_Port (thePeer);
    -    ACE_ASSERT(this->peer_addr_);
    -    return 0;
    -}
    -
    -int
    -ACE_CLASSIX_Peer_SAP::set(const ACE_Addr& thePeer) 
    -{
    -    delete this->peer_addr_;
    -    this->peer_addr_ = new ACE_CLASSIX_Port (thePeer);
    -    ACE_ASSERT(this->peer_addr_);
    -    return 0;
    -}
    -
    -int
    -ACE_CLASSIX_Peer_SAP::set(const KnUniqueId& thePeer)
    -{
    -    delete this->peer_addr_;
    -    this->peer_addr_ = new ACE_CLASSIX_Port (thePeer);
    -    ACE_ASSERT(this->peer_addr_);
    -    return 0;
    -}
    -
    -int
    -ACE_CLASSIX_Peer_SAP::set(const KnCap& thePeer)
    -{
    -    delete this->peer_addr_;
    -    this->peer_addr_ = new ACE_CLASSIX_Group (thePeer);
    -    ACE_ASSERT(this->peer_addr_);
    -    return 0;
    -}
    -
    -int
    -ACE_CLASSIX_Peer_SAP::set(int theStamp)
    -{
    -    delete this->peer_addr_;
    -    this->peer_addr_ = new ACE_CLASSIX_Group_Stamp (theStamp);
    -    ACE_ASSERT(this->peer_addr_);
    -    return 0;
    -}
    -
    -void
    -ACE_CLASSIX_Peer_SAP::dump (void) const
    -{
    -    ACE_DEBUG ((LM_DEBUG, "ACE_CLASSIX_Peer_SAP...\n"));
    -    if (this->peer_addr_)
    -	this->peer_addr_->dump();
    -    ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    diff --git a/ace/CLASSIX/CLASSIX_Peer_SAP.h b/ace/CLASSIX/CLASSIX_Peer_SAP.h
    deleted file mode 100644
    index 8a3d784ebcb..00000000000
    --- a/ace/CLASSIX/CLASSIX_Peer_SAP.h
    +++ /dev/null
    @@ -1,106 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//     ace
    -//
    -// = FILENAME
    -//     CLASSIX_Peer_SAP.h
    -//
    -// = AUTHOR(S)
    -//     Nokia Telecommunications
    -//
    -// ============================================================================
    -
    -#ifndef ACE_CLASSIX_PEER_SAP_H
    -#define ACE_CLASSIX_PEER_SAP_H
    -
    -/* ------------------------------------------------------------------------- */
    -#include 
    -#include 
    -
    -class ACE_CLASSIX_Peer_SAP
    -    // = TITLE
    -    //   Class implementing the peer SAP.
    -    //
    -    // = DESCRIPTION
    -    //
    -    //   In CLASSIX, a local SAP is always a port, a peer SAP can be
    -    //   a port or a group of port.  This class is for peer SAP and
    -    //    is for local SAP.
    -    //
    -    // = SEE ALSO
    -    //   
    -{
    - public:
    -    // = INITIALIZATION
    -    ACE_CLASSIX_Peer_SAP(void);
    -    // Default constructor.
    -    // Needs to be initialized by a set() operation.
    -    ACE_CLASSIX_Peer_SAP(const ACE_CLASSIX_Port_Core&);/* peer port */
    -
    -    ACE_CLASSIX_Peer_SAP(const ACE_CLASSIX_Port&);/* peer port address */
    -    ACE_CLASSIX_Peer_SAP(const ACE_Addr&);        /* peer port address */
    -
    -    ACE_CLASSIX_Peer_SAP(const KnUniqueId&);      /* peer port address */
    -    ACE_CLASSIX_Peer_SAP(const KnCap&);           /* peer group address */
    -    ACE_CLASSIX_Peer_SAP(int /* stamp */);       /* stamp for peer group */
    -
    -    ~ACE_CLASSIX_Peer_SAP(void);
    -
    -    int set(const ACE_CLASSIX_Port_Core&); /* peer port */
    -
    -    int set(const ACE_Addr&);              /* peer port address */
    -
    -    int set(const KnUniqueId&);            /* peer port address */
    -    int set(const KnCap&);                 /* peer group address */
    -    int set(int /* stamp */);   /* stamp for the peer group */
    -
    -    // = ACCESS
    -    const ACE_CLASSIX_Addr* get_addr(void) const;
    -    // Returns peer's address, either a port or a group of ports
    -    int is_configured(void) const;
    -    // Returns 1, if address information is proper; Returns 0 otherwise
    -
    -    // = CONTROL
    -#if 0
    -    int control(u_int = K_BROADMODE);
    -    int control(u_int, /* mode */ int /* site */ );
    -    // Interface for CLASSIX' send mode
    -#endif
    -    // = HELPER
    -    void dump (void) const;
    -    // Dump the state of an object.
    -
    -    ACE_ALLOC_HOOK_DECLARE;
    -    // Declare the dynamic allocation hooks.
    -
    - protected:
    -#if 0
    -    virtual set_mode_(u_int = K_BROADMODE); /* theMode */
    -    // Sets the addressing mode with the current setting of coTarget
    -    virtual set_mode_(u_int, /* mode */ int /* site */);
    -    // Sets the addressing mode as well as the coTarget
    -#endif
    -    ACE_CLASSIX_Addr     *peer_addr_;
    -
    - private:
    -    // Disable copy constructor
    -    ACE_CLASSIX_Peer_SAP(ACE_CLASSIX_Peer_SAP const&);
    -    ACE_CLASSIX_Peer_SAP const& operator=(ACE_CLASSIX_Peer_SAP const&);
    -};
    -
    -/* ------------------------------------------------------------------------- */
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_Peer_SAP.i"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_CLASSIX_PEER_SAP_H */
    diff --git a/ace/CLASSIX/CLASSIX_Peer_SAP.i b/ace/CLASSIX/CLASSIX_Peer_SAP.i
    deleted file mode 100644
    index a10bcfd12b5..00000000000
    --- a/ace/CLASSIX/CLASSIX_Peer_SAP.i
    +++ /dev/null
    @@ -1,99 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -ACE_INLINE
    -ACE_CLASSIX_Peer_SAP::ACE_CLASSIX_Peer_SAP(void)
    -  :    peer_addr_   (0)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Peer_SAP::ACE_CLASSIX_Peer_SAP(const ACE_CLASSIX_Port_Core& 
    -					   thePeer)
    -  :    peer_addr_   (0)
    -{
    -    this->set(thePeer);
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Peer_SAP::ACE_CLASSIX_Peer_SAP(const ACE_CLASSIX_Port& thePeer) 
    -    : peer_addr_   (0)
    -{
    -    this->set(thePeer);
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Peer_SAP::ACE_CLASSIX_Peer_SAP(const ACE_Addr& thePeer) 
    -    : peer_addr_   (0)
    -{
    -    this->set(thePeer);
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Peer_SAP::ACE_CLASSIX_Peer_SAP(const KnUniqueId& thePeer)
    -    : peer_addr_   (0)
    -{
    -    this->set(thePeer);
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Peer_SAP::ACE_CLASSIX_Peer_SAP(int theStamp)
    -    : peer_addr_   (0)
    -{
    -    this->set(theStamp);
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Peer_SAP::~ACE_CLASSIX_Peer_SAP(void)
    -{
    -    delete this->peer_addr_;
    -}
    -
    -
    -ACE_INLINE
    -const ACE_CLASSIX_Addr*
    -ACE_CLASSIX_Peer_SAP::get_addr(void) const
    -{
    -    return this->peer_addr_;
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Peer_SAP::is_configured(void) const
    -{
    -    if (this->peer_addr_)
    -	return this->peer_addr_->is_configured();
    -    else
    -	return 0;
    -}
    -
    -#if 0
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Peer_SAP::control(u_int theMode)
    -{
    -    return this->peer_addr_->set_mode_(theMode); 
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Peer_SAP::control(u_int theMode, int theSite)
    -{
    -    return this->set_mode_(theMode, theSite); 
    -}
    -
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Peer_SAP::set_mode_(u_int)
    -{
    -    return K_EFAULT;
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Peer_SAP::set_mode_(u_int, int)
    -{
    -    return K_EFAULT;
    -}
    -#endif
    diff --git a/ace/CLASSIX/CLASSIX_Port.cpp b/ace/CLASSIX/CLASSIX_Port.cpp
    deleted file mode 100644
    index 7beb2a13ae6..00000000000
    --- a/ace/CLASSIX/CLASSIX_Port.cpp
    +++ /dev/null
    @@ -1,129 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// Defines the ClassiX IPC address family address format.
    -
    -#define ACE_BUILD_DLL
    -#include "ace/CLASSIX/CLASSIX_Port.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_Port.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_CLASSIX_Port)
    -
    -
    -ACE_CLASSIX_Port::ACE_CLASSIX_Port(void* thePort, int theLen)
    -    : ACE_CLASSIX_Addr (sizeof (ACE_CLASSIX_Port_Core::Addr))
    -{
    -    if (thePort &&  theLen == this->get_size())
    -    {
    -	ACE_CLASSIX_Port_Core::Addr *port = 
    -	    (ACE_CLASSIX_Port_Core::Addr*) thePort;
    -	this->addr_.handle  = port->handle;
    -	this->addr_.id      = port->id;
    -    }
    -    else
    -    {
    -	this->clear();
    -    }
    -}
    -
    -ACE_CLASSIX_Port::ACE_CLASSIX_Port(ACE_Addr const& theAddr)
    -    : ACE_CLASSIX_Addr (sizeof (ACE_CLASSIX_Port_Core::Addr))
    -{
    -    if (theAddr.get_size() == this->get_size() &&
    -	theAddr.get_type() == this->get_type())
    -	this->set_(theAddr);
    -    else
    -	this->clear();
    -}
    -
    -void
    -ACE_CLASSIX_Port::clear(void)
    -{
    -    this->addr_.handle = ACE_CLASSIX_ADDR_UNKNOWN;
    -    this->addr_.id.uiHead = this->addr_.id.uiTail = 0;
    -}
    -
    -int
    -ACE_CLASSIX_Port::set_(const ACE_Addr& theAddr)
    -{
    -    ACE_CLASSIX_Port_Core::Addr *src = 
    -	((ACE_CLASSIX_Port_Core::Addr*) theAddr.get_addr());
    -    this->addr_.id = src->id;
    -    this->addr_.handle = src->handle;
    -	
    -    return 0;
    -}
    -
    -int
    -ACE_CLASSIX_Port::set(const KnUniqueId& thePort)
    -{
    -    int no = ::portLi((KnUniqueId*) &thePort);
    -
    -    // update the port no only if the no is valid
    -    if (no < 0)
    -	// Assume this is a remote port
    -	no = ACE_INVALID_HANDLE;
    -
    -    this->addr_.handle = no;
    -    this->addr_.id     = thePort;
    -    return 0;
    -}
    -
    -int
    -ACE_CLASSIX_Port::set_handle(ACE_HANDLE thePort)
    -{
    -    if (thePort == ACE_INVALID_HANDLE && 
    -	::portUi(&this->addr_.id, thePort) < 0)
    -	return -1;
    -
    -    this->addr_.handle = thePort;
    -    return 0;
    -}
    -
    -void
    -ACE_CLASSIX_Port::set_addr(void* theSrc, int theLen)
    -{
    -    // Remove self owned first and Make sure no memory overflow 
    -    if (theSrc && theLen > this->get_size())
    -	return;
    -
    -    ACE_OS::memcpy ((void *) &this->addr_,
    -		    (void *) theSrc, theLen);
    -
    -}
    -
    -ACE_CLASSIX_Port const&  
    -ACE_CLASSIX_Port::operator =(ACE_Addr const& theAddr)
    -{
    -    if (theAddr.get_size() == this->get_size() &&
    -	theAddr.get_type() == this->get_type())
    -    {
    -	
    -	this->set_(theAddr);
    -    }
    -    return *this;
    -}
    -
    -int 
    -ACE_CLASSIX_Port::addr_to_string (ASYS_TCHAR s[], size_t) const
    -{
    -  ACE_OS::sprintf (s, ASYS_TEXT ("%d:%d"),
    -                   ASYS_WIDE_STRING (::agetId()),
    -                   this->get_port_number ());
    -}
    -
    -void
    -ACE_CLASSIX_Port::dump (void) const
    -{
    -  ACE_DEBUG ((LM_DEBUG, "ACE_CLASSIX_Port...\n"));
    -  ACE_Addr::dump();
    -  char s[100];
    -  ACE_OS::sprintf (s, "handle = %d;\tid head = %x, id tail = %x\n",
    -		   this->get_handle(),
    -		   this->get_id().uiHead, this->get_id().uiTail);
    -  ACE_DEBUG ((LM_DEBUG, "%s", s));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    diff --git a/ace/CLASSIX/CLASSIX_Port.h b/ace/CLASSIX/CLASSIX_Port.h
    deleted file mode 100644
    index 2bb45d4cf7c..00000000000
    --- a/ace/CLASSIX/CLASSIX_Port.h
    +++ /dev/null
    @@ -1,160 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    CLASSIX_Port.h
    -//
    -// = AUTHOR
    -//    Nokia Telecommunications
    -//
    -// ============================================================================
    -
    -#ifndef ACE_CLASSIX_PORT_H
    -#define ACE_CLASSIX_PORT_H
    -
    -#include "ace/Singleton.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/CLASSIX/CLASSIX_OS.h"
    -#include "ace/CLASSIX/CLASSIX_Addr.h"
    -
    -
    -class ACE_Export ACE_CLASSIX_Port : public ACE_CLASSIX_Addr
    -{
    -    // = TITLE
    -    //    Defines the ClassiX IPC Port address format for "ACE Socket" like
    -    //    interfaces
    -    //
    -    // = DESCRIPTION
    -    //   The port address contains two fields:
    -    //   a global unique identifier  and a local identifier.
    -    //   The global unique identifier is also referred to as the port address
    -    //   and the local identifier as the port no.
    -    //
    -    // = NOTE
    -    //   In Chorus, one can always convert from a port unique identifier to
    -    //   a port no and vice versa.  This class is implemented based on this
    -    //   premise.
    -    //
    -    // = SEE ALSO
    -    //   , 
    -    //
    -public:
    -    /* -----------------------------------------------------*/
    -    // = Initialization methods.
    -    ACE_CLASSIX_Port ();
    -    // Default constructor.
    -    // The address corresponds to the default port of the actor.
    -
    -    ACE_CLASSIX_Port (const ACE_CLASSIX_Port &);
    -    // Copy constructor.
    -    ACE_CLASSIX_Port (const ACE_Addr &);
    -    // Copy constructor.
    -
    -    ACE_CLASSIX_Port (const ACE_CLASSIX_Port_Core&);
    -    // Creates an  from 
    -
    -    ACE_CLASSIX_Port (const KnUniqueId& /* port_id */);
    -    // Creates an  from the given 
    -
    -    ACE_CLASSIX_Port (ACE_HANDLE /* port_no */);
    -    // Creates an  from the given 
    -
    -    ACE_CLASSIX_Port (void* /* location */, int /* length */);
    -    // Create an  from the address in raw format.
    -
    -    ACE_CLASSIX_Port const&  operator =(ACE_Addr const&);
    -
    -
    -    /* -----------------------------------------------------*/
    -    // = ACCESS
    -
    -    virtual int addr_to_string (ASYS_TCHAR addr[], size_t) const;
    -    // Transform the current  address into string format,
    -    // which is in the form "actor-id:port-number"
    -
    -    int set (const KnUniqueId& /* port_id */);
    -    // Sets the  from a 
    -
    -    virtual void set_addr (void * /* addr location */,
    -                           int /* len */);
    -    // Set the address as the one pointed to by the location pointer.
    -    // The address contains  bytes.
    -    // Would prefer to return the status, but the base class uses void.
    -    int set_handle (ACE_HANDLE /* port_no */);
    -    // Sets the  field from a 
    -
    -    virtual void *get_addr (void) const;
    -    // Returns a pointer to the address:,
    -    // 
    -    virtual const KnUniqueId& get_id (void) const;
    -    // Returns a reference to the port id.
    -    virtual ACE_HANDLE get_handle (void) const;
    -    // Returns the port no.
    -    int is_configured(void) const;
    -    // Returns 1, if address information is proper; Returns 0 otherwise
    -    virtual ACE_CLASSIX_Addr::Addr_Type is_type(void) const;
    -    // returns PORT type
    -
    -    /* -----------------------------------------------------*/
    -    // = Control
    -    //
    -    virtual int enable(int   /* receive priority */) const;
    -    // Puts the port into the set of monitored ports.
    -    virtual int disable(void) const;
    -    // Removes the port from the set of monitored ports.
    -    virtual void clear(void);
    -    // Remove port information
    -
    -    /* -----------------------------------------------------*/
    -    // = Comparison
    -    //
    -    int operator == (const ACE_CLASSIX_Port &) const;
    -    // Compare two addresses for equality.  The addresses are considered
    -    // equal if they have the same content in the KnUniqueId address structure.
    -
    -    int operator != (const ACE_CLASSIX_Port &) const;
    -    // Compare two addresses for inequality.
    -
    -    /* -----------------------------------------------------*/
    -    // = Helper
    -    //
    -    void dump (void) const;
    -    // Dump the state of an object.
    -
    -
    -    ACE_ALLOC_HOOK_DECLARE;
    -    // Declare the dynamic allocation hooks.
    -
    -private:
    -    /* -----------------------------------------------------*/
    -    // = Direct initialization methods (useful after the object has been
    -    // constructed).
    -    // Will create/reset the port only if the port no was 
    -    // Returns 0 on success, -1 otherwise.
    -    //
    -
    -    int set_ (const ACE_Addr &);
    -    // Sets the  from another .
    -
    -
    -
    -private:
    -    ACE_CLASSIX_Port_Core::Addr           addr_;
    -};
    -
    -/* ------------------------------------------------------------------------- */
    -#if defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_Port.i"
    -#endif /* __ACE_INLINE__ */
    -
    -
    -#endif /* ACE_CLASSIX_PORT_H */
    diff --git a/ace/CLASSIX/CLASSIX_Port.i b/ace/CLASSIX/CLASSIX_Port.i
    deleted file mode 100644
    index 762f6ec5794..00000000000
    --- a/ace/CLASSIX/CLASSIX_Port.i
    +++ /dev/null
    @@ -1,112 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -ACE_INLINE
    -ACE_CLASSIX_Port::ACE_CLASSIX_Port(void)
    -    : ACE_CLASSIX_Addr (sizeof (ACE_CLASSIX_Port_Core::Addr))
    -{
    -    this->set_handle(K_DEFAULTPORT);
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Port::ACE_CLASSIX_Port(const ACE_CLASSIX_Port& theSrc)
    -    : ACE_CLASSIX_Addr (sizeof (ACE_CLASSIX_Port_Core::Addr))
    -{
    -    this->set_(theSrc);
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Port::ACE_CLASSIX_Port(const KnUniqueId& thePort)
    -    : ACE_CLASSIX_Addr (sizeof (ACE_CLASSIX_Port_Core::Addr))
    -{
    -    this->set(thePort);
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Port::ACE_CLASSIX_Port(ACE_HANDLE thePort)
    -    : ACE_CLASSIX_Addr (sizeof (ACE_CLASSIX_Port_Core::Addr))
    -{
    -    this->set_handle(thePort);
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Port::ACE_CLASSIX_Port(const ACE_CLASSIX_Port_Core& thePort)
    -    : ACE_CLASSIX_Addr (sizeof (ACE_CLASSIX_Port_Core::Addr))
    -{
    -	this->addr_.handle = thePort.get_handle();
    -	this->addr_.id     = thePort.get_id();
    -}
    -
    -ACE_INLINE
    -ACE_HANDLE
    -ACE_CLASSIX_Port::get_handle(void) const
    -{
    -    return this->addr_.handle;
    -}
    -
    -ACE_INLINE
    -const KnUniqueId&
    -ACE_CLASSIX_Port::get_id(void) const
    -{
    -    return this->addr_.id;
    -}
    -
    -ACE_INLINE
    -void *
    -ACE_CLASSIX_Port::get_addr(void) const
    -{
    -    return (void*) &this->addr_;
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Port::is_configured(void) const
    -{
    -    return (this->addr_.handle != ACE_CLASSIX_ADDR_UNKNOWN);
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Addr::Addr_Type
    -ACE_CLASSIX_Port::is_type(void) const
    -{
    -    return ACE_CLASSIX_Addr::PORT;
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Port::enable(int thePriority) const
    -{
    -    if (ACE_Reactor::instance()->notify() == 0)
    -	return ::portEnable(K_MYACTOR, this->get_handle(), thePriority);
    -    else
    -	return -1;
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Port::disable(void) const
    -{
    -    if (ACE_Reactor::instance()->notify() == 0)
    -	return ::portDisable(K_MYACTOR, this->get_handle());
    -    else
    -	return -1;
    -}
    -
    -// Compare two addresses for equality.
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Port::operator==(const ACE_CLASSIX_Port &theSrc) const
    -{
    -  return 
    -      this->ACE_Addr::operator == (theSrc) &&
    -      this->addr_.id.uiHead == theSrc.addr_.id.uiHead &&
    -      this->addr_.id.uiTail == theSrc.addr_.id.uiTail &&
    -      this->addr_.handle == theSrc.addr_.handle;
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Port::operator != (const ACE_CLASSIX_Port &sap) const
    -{
    -  return !((*this) == sap);
    -}
    diff --git a/ace/CLASSIX/CLASSIX_Port_Core.cpp b/ace/CLASSIX/CLASSIX_Port_Core.cpp
    deleted file mode 100644
    index 4d1903939b9..00000000000
    --- a/ace/CLASSIX/CLASSIX_Port_Core.cpp
    +++ /dev/null
    @@ -1,70 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//     ace
    -// 
    -// = FILENAME
    -//     CLASSIX_Port_Core.cpp
    -//
    -// = AUTHOR(S)
    -//     Nokia Telecommunications
    -// 
    -// ============================================================================
    -
    -#include "ace/CLASSIX/CLASSIX_Port_Core.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_Port_Core.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#include "ace/Synch_T.h"
    -#include "ace/CLASSIX/CLASSIX_OS.h"
    -/* ------------------------------------------------------------------------- */
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_CLASSIX_Port_Core)
    -
    -ACE_CLASSIX_Port_Core::ACE_CLASSIX_Port_Core(void)
    -{
    -    if ((this->addr_.handle = ::portCreate(K_MYACTOR, &this->addr_.id)) < 0)
    -	this->clear_config_();
    -    else
    -    {
    -	this->set_config_();
    -    }
    -}
    -
    -ACE_CLASSIX_Port_Core::~ACE_CLASSIX_Port_Core(void)
    -{
    -    if (this->is_configured())
    -	if (int result = ::portDelete(K_MYACTOR, this->get_handle()) < 0)
    -	    ACE_ERROR((LM_DEBUG, 
    -		       "ACE_CLASSIX_Port_Core::~ACE_CLASSIX_PORT_CORE()- "
    -		       "failed to delete port, error = %d", result));
    -}
    -
    -void
    -ACE_CLASSIX_Port_Core::clear_config_(void)
    -{
    -    this->config_ = 0;
    -    this->addr_.id.uiHead = this->addr_.id.uiTail = 0;
    -    this->addr_.handle = ACE_INVALID_HANDLE;
    -}
    -
    -
    -void
    -ACE_CLASSIX_Port_Core::dump (void) const
    -{
    -  ACE_DEBUG ((LM_DEBUG, "ACE_CLASSIX_Port_Core...\n"));
    -  char s[100];
    -  if (!this->is_configured())
    -      ACE_OS::sprintf(s, "Port has not been allocated\n");
    -  else
    -      ACE_OS::sprintf (s, "handle = %d;\tid head = %x, id tail = %x\n",
    -		       this->get_handle(),
    -		       this->get_id().uiHead, this->get_id().uiTail);
    -  ACE_DEBUG ((LM_DEBUG, "%s", s));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    diff --git a/ace/CLASSIX/CLASSIX_Port_Core.h b/ace/CLASSIX/CLASSIX_Port_Core.h
    deleted file mode 100644
    index 5fdfb6309bd..00000000000
    --- a/ace/CLASSIX/CLASSIX_Port_Core.h
    +++ /dev/null
    @@ -1,101 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//     ace
    -//
    -// = FILENAME
    -//     CLASSIX_Port_Core.h
    -//
    -// = AUTHOR(S)
    -//     Nokia Telecommunications
    -//
    -// ============================================================================
    -
    -#ifndef ACE_CLASSIX_PORT_CORE_H
    -#define ACE_CLASSIX_PORT_CORE_H
    -
    -/* ------------------------------------------------------------------------- */
    -#include "ace/OS.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include 
    -
    -
    -/* ------------------------------------------------------------------------- */
    -class ACE_Export ACE_CLASSIX_Port_Core
    -{
    -    // = TITLE
    -    //    Defines interfaces for allocation/deallocation of a Chorus
    -    //    IPC port
    -    //
    -    // = DESCRIPTION
    -    //   This class allocates a port in the constructor and deallocates it in
    -    //   the destructor.
    -
    -public:
    -    /* -----------------------------------------------------*/
    -    // = Initialization methods.
    -    ACE_CLASSIX_Port_Core (void);
    -    // Allocates a port from the OS
    -    //
    -    virtual ~ACE_CLASSIX_Port_Core (void);
    -    // Deallocates the port from the OS.
    -
    -    virtual const KnUniqueId& get_id (void) const;
    -    // Returns a reference to the port id.
    -    virtual ACE_HANDLE get_handle (void) const;
    -    // Returns the port no(used as an ACE_HANDLE)
    -    virtual void* get_addr(void) const;
    -    // Returns a pointer to the location containing the raw
    -    // address of the port.
    -    int is_configured(void) const;
    -    // Returns 1, if the port has been successfully created.
    -
    -#if 0
    -    int enable(int /* priority */) const;
    -    int disable (int) const;
    -    // Puts/Removes the port into/from the set of monitored ports.
    -#endif
    -    /* -----------------------------------------------------*/
    -    // = Helper
    -    //
    -    void dump (void) const;
    -    // Dump the state of an object.
    -
    -
    -    ACE_ALLOC_HOOK_DECLARE;
    -    // Declare the dynamic allocation hooks.
    -
    -    struct Addr
    -    {
    -        KnUniqueId                  id;    // port address: unique identifier
    -        ACE_HANDLE                  handle;// port no: local identifier.
    -
    -    };
    -
    -protected:
    -    void clear_config_();
    -    // Indicates that port has been allocated.
    -    void set_config_();
    -
    -    ACE_CLASSIX_Port_Core::Addr addr_;
    -    int                         config_; // Sets to 1, if configured;
    -                                         // 0 otherwise
    -private:
    -    // Disallow copy constructor/assignment
    -    ACE_CLASSIX_Port_Core(ACE_CLASSIX_Port_Core const&);
    -    ACE_CLASSIX_Port_Core const&  operator =(ACE_CLASSIX_Port_Core const&);
    -};
    -/* ------------------------------------------------------------------------- */
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_Port_Core.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_CLASSIX_PORT_CORE_H */
    diff --git a/ace/CLASSIX/CLASSIX_Port_Core.i b/ace/CLASSIX/CLASSIX_Port_Core.i
    deleted file mode 100644
    index 7fd3694d8de..00000000000
    --- a/ace/CLASSIX/CLASSIX_Port_Core.i
    +++ /dev/null
    @@ -1,38 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -ACE_INLINE
    -void
    -ACE_CLASSIX_Port_Core::set_config_(void)
    -{
    -    this->config_ = 1;
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Port_Core::is_configured(void) const
    -{
    -    return this->config_ == 1;
    -}
    -
    -
    -ACE_INLINE
    -ACE_HANDLE
    -ACE_CLASSIX_Port_Core::get_handle(void) const
    -{
    -    return this->addr_.handle;
    -}
    -
    -ACE_INLINE
    -const KnUniqueId&
    -ACE_CLASSIX_Port_Core::get_id(void) const
    -{
    -    return this->addr_.id;
    -}
    -
    -ACE_INLINE
    -void*
    -ACE_CLASSIX_Port_Core::get_addr(void) const
    -{
    -    return (void*) (&this->addr_);
    -}
    diff --git a/ace/CLASSIX/CLASSIX_Port_Default.cpp b/ace/CLASSIX/CLASSIX_Port_Default.cpp
    deleted file mode 100644
    index e18d55971e2..00000000000
    --- a/ace/CLASSIX/CLASSIX_Port_Default.cpp
    +++ /dev/null
    @@ -1,26 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// Defines the ClassiX IPC address family address format.
    -
    -#define ACE_BUILD_DLL
    -#include "ace/CLASSIX/CLASSIX_Port_Default.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_Port_Default.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_CLASSIX_Port_Default)
    -
    -/* ------------------------------------------------------------------------- */
    -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
    -
    -template class ACE_Singleton;
    -
    -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
    -
    -#pragma instantiation ACE_Singleton
    -
    -#endif
    diff --git a/ace/CLASSIX/CLASSIX_Port_Default.h b/ace/CLASSIX/CLASSIX_Port_Default.h
    deleted file mode 100644
    index 698c9ff9afe..00000000000
    --- a/ace/CLASSIX/CLASSIX_Port_Default.h
    +++ /dev/null
    @@ -1,78 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    CLASSIX_Port_Default.h
    -//
    -// = AUTHOR(S)
    -//    Nokia Telecommunications
    -//
    -// ============================================================================
    -
    -#if !defined ACE_CLASSIX_PORT_DEFAULT_H
    -#define ACE_CLASSIX_PORT_DEFAULT_H
    -
    -#include "ace/Singleton.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/CLASSIX/CLASSIX_Port.h"
    -
    -class ACE_CLASSIX_Port_Default : public ACE_CLASSIX_Port
    -{
    -    // = TITLE
    -    //    Implements the address wrapper of an actor's default port.
    -    //
    -    // = DESCRIPTION
    -    //   This corresponds to the address of an actor's default port
    -    //   which does not change
    -    //   in the life time of the actor.  Therefore the address information
    -    //   in this class can not be modified once it is created.
    -    //
    -    //   Each actor has one and only one default port.  Therefore an instance
    -    //   of this class is a singleton.  The protected constructor and the
    -    //   friendship with the ACE_Singleton preventys this class from being
    -    //   instantiated by other classes.
    -    //
    -    // = NOTE
    -    //
    -    // = SEE ALSO
    -    //   
    -    //
    -    friend class ACE_Singleton;
    -
    -    /* -----------------------------------------------------*/
    -    // = Access
    -    virtual void set_addr(void*, int);
    -    ACE_CLASSIX_Port const&  operator =(ACE_CLASSIX_Port const&);
    -    ACE_CLASSIX_Port const&  operator =(ACE_Addr const&);
    -    // Does nothing...The default port's address cannot be changed
    -
    -    ACE_ALLOC_HOOK_DECLARE;
    -    // Declare the dynamic allocation hooks.
    -
    -protected:
    -    /* -----------------------------------------------------*/
    -    // = Initialization methods.
    -    ACE_CLASSIX_Port_Default ();
    -    // Wrapper for the Actor's default port
    -};
    -
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_Port_Default.i"
    -#endif /* __ACE_INLINE__ */
    -
    -/* ------------------------------------------------------------------------- */
    -typedef ACE_Singleton
    -        ACE_CLASSIX_DEFAULT_PORT;
    -/* ------------------------------------------------------------------------- */
    -
    -#endif /* ACE_CLASSIX_PORT_DEFAULT_H */
    diff --git a/ace/CLASSIX/CLASSIX_Port_Default.i b/ace/CLASSIX/CLASSIX_Port_Default.i
    deleted file mode 100644
    index fac497bace0..00000000000
    --- a/ace/CLASSIX/CLASSIX_Port_Default.i
    +++ /dev/null
    @@ -1,28 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -ACE_INLINE
    -ACE_CLASSIX_Port_Default::ACE_CLASSIX_Port_Default(void)
    -    : ACE_CLASSIX_Port()
    -{
    -}
    -
    -ACE_INLINE
    -void
    -ACE_CLASSIX_Port_Default::set_addr(void*, int)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Port const&  
    -ACE_CLASSIX_Port_Default::operator =(ACE_CLASSIX_Port const&)
    -{
    -    return *this;
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Port const&  
    -ACE_CLASSIX_Port_Default::operator =(ACE_Addr const&)
    -{
    -    return *this;
    -}
    diff --git a/ace/CLASSIX/CLASSIX_SAP.cpp b/ace/CLASSIX/CLASSIX_SAP.cpp
    deleted file mode 100644
    index 55a9c8183a0..00000000000
    --- a/ace/CLASSIX/CLASSIX_SAP.cpp
    +++ /dev/null
    @@ -1,153 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//     ace
    -// 
    -// = FILENAME
    -//     CLASSIX_SAP.cpp
    -//
    -// = AUTHOR(S)
    -//     Nokia Telecommunications
    -// 
    -// ============================================================================
    -
    -#include "ace/CLASSIX/CLASSIX_SAP.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_SAP.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_CLASSIX_SAP)
    -/* ------------------------------------------------------------------------- */
    -int
    -ACE_CLASSIX_SAP::get_addr(ACE_Addr& theAddr) const
    -{
    -    if (theAddr.get_size() < this->local_addr_.get_size() || 
    -	theAddr.get_type() != this->local_addr_.get_type())
    -    {
    -	return -1;
    -    }
    -    else
    -    {
    -	theAddr.set_addr(this->local_addr_.get_addr(), 
    -			 this->local_addr_.get_size());
    -	return 0;
    -    }
    -}
    -
    -void
    -ACE_CLASSIX_SAP::set_addr(const ACE_Addr& theAddr)
    -{
    -    this->local_addr_.set_addr(theAddr.get_addr(), theAddr.get_size());
    -}
    -
    -
    -void
    -ACE_CLASSIX_SAP::set_addr(const ACE_CLASSIX_Port_Core& thePort)
    -{
    -    this->local_addr_.set_addr(thePort.get_addr(), 
    -			       sizeof (ACE_CLASSIX_Port_Core::Addr));
    -}
    -
    -int
    -ACE_CLASSIX_SAP::set(const KnUniqueId& theId)
    -{
    -    return this->local_addr_.set(theId);
    -}
    -
    -void
    -ACE_CLASSIX_SAP::set_handle(ACE_HANDLE theHandle)
    -{
    -    if (this->local_addr_.set_handle(theHandle) == -1)
    -	ACE_DEBUG((LM_DEBUG, "ACE_CLASSIX_SAP::set_handle()::"
    -		   "Handle invalid\n"));
    -}
    -
    -int
    -ACE_CLASSIX_SAP::set(const ACE_Addr& theAddr)
    -{
    -    this->set_addr(theAddr);
    -    return 0;
    -}
    -
    -int
    -ACE_CLASSIX_SAP::open(const ACE_Addr& theAddr)
    -{
    -    this->set_addr(theAddr);
    -    return 0;
    -}
    -
    -
    -int
    -ACE_CLASSIX_SAP::set(const ACE_CLASSIX_Port_Core& thePort)
    -{
    -    this->set_addr(thePort);
    -    return 0;
    -}
    -
    -
    -int
    -ACE_CLASSIX_SAP::open(const ACE_CLASSIX_Port_Core* thePort)
    -{
    -    if (thePort)
    -    {
    -	this->set_addr(ACE_CLASSIX_Port(*thePort));
    -	return 0;
    -    }
    -    else
    -	return -1;
    -}
    -
    -int
    -ACE_CLASSIX_SAP::close(void)
    -{    
    -    // Disable receiving
    -    this->unselectable();
    -    //*** Do something to flush out potential messages on the local port
    -    // e.g. have a separte thread call ipcReceive on each disabled SAP.
    -
    -    this->local_addr_.clear();
    -    return 0;
    -}
    -
    -int
    -ACE_CLASSIX_SAP::selectable(int thePriority)
    -{
    -    if (!this->enabled_)
    -    {
    -	int result = this->local_addr_.enable(thePriority);
    -	if (result == 0) 
    -	    this->enabled_ = 1;
    -	return result;
    -    }
    -    else
    -	return 0;
    -}
    -
    -int
    -ACE_CLASSIX_SAP::unselectable(int)
    -{
    -    if (this->enabled_)
    -    {
    -	int result = this->local_addr_.disable();
    -	if (result == 0)
    -	    this->enabled_ = 0;
    -	return result;
    -    }
    -    else
    -	return 0;
    -}
    -
    -
    -void
    -ACE_CLASSIX_SAP::dump(void) const
    -{
    -    ACE_DEBUG ((LM_INFO, "ACE_CLASSIX_SAP...\n"));
    -
    -    this->local_addr_.dump();
    -
    -    ACE_DEBUG ((LM_INFO, ACE_END_DUMP));
    -}
    diff --git a/ace/CLASSIX/CLASSIX_SAP.h b/ace/CLASSIX/CLASSIX_SAP.h
    deleted file mode 100644
    index cefbdf031c8..00000000000
    --- a/ace/CLASSIX/CLASSIX_SAP.h
    +++ /dev/null
    @@ -1,143 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//     ace
    -//
    -// = FILENAME
    -//     CLASSIX_SAP.h
    -//
    -// = AUTHOR(S)
    -//     Nokia Telecommunications
    -//
    -// ============================================================================
    -
    -#ifndef ACE_CLASSIX_SAP_H
    -#define ACE_CLASSIX_SAP_H
    -
    -/* ------------------------------------------------------------------------- */
    -#include "ace/CLASSIX/CLASSIX_Port.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -class ACE_CLASSIX_SAP
    -    // = TITLE
    -    //   Class implementing the SAP over a Chorus port.
    -    //
    -    // = DESCRIPTION
    -    //   A SAP has a port which is referred to as the local port.
    -    //   This class provides methods to manipulate this port.
    -    //
    -    //   The SAP will always put the port in DISABLED state on exit.
    -    //
    -    //   In CLASSIX, a local SAP is always a port, a peer SAP can be
    -    //   a port or a group of port.  This class is for local SAP and
    -    //    is for peer SAP.
    -    //
    -    // = SEE ALSO
    -    //   
    -    //
    -{
    - public:
    -    enum
    -    {
    -        DEFAULT_PRIORITY = 10
    -    };
    -
    -    // = INITIALIZATION
    -    ACE_CLASSIX_SAP(void);
    -    // Creates a SAP, using the address of the actor's default port.
    -    ACE_CLASSIX_SAP(const ACE_Addr&);
    -    // Creates a SAP, using the specified address as the local address.
    -     virtual ~ACE_CLASSIX_SAP(void);
    -
    -    // = ACCESS
    -    void set_addr(const ACE_Addr&);
    -    void set_addr(const ACE_CLASSIX_Port_Core&);
    -    // Sets the  based on the given address information.
    -    // The caller should make sure that the original address can be removed!
    -    int  set(const ACE_Addr&);
    -    // Returns 0, if successful; returns -1, otherwise
    -    // same as set_addr(const ACE_Addr&);
    -    int  set(const ACE_CLASSIX_Port_Core&);
    -    // Returns 0, if successful; returns -1, otherwise
    -    // same as void set_addr(const ACE_CLASSIX_Port_Core&);
    -    int set (const KnUniqueId&);
    -    // Returns 0, if successful; returns -1, otherwise
    -
    -    void set_handle (ACE_HANDLE /* port_no */);
    -    // Sets the port address according to 
    -
    -    int  get_addr(ACE_Addr& /* return_addr */) const;
    -    // Returns address information to the supplied location.
    -    // if successful, return 0 and the return_addr parameter contains the
    -    // address info.
    -    // Otherwise, return -1
    -    const ACE_CLASSIX_Port& get_addr(void) const;
    -    // Returns a reference to the address information
    -    ACE_HANDLE get_handle(void) const;
    -    // Get handles that the Reactor uses
    -    virtual int is_configured(void) const;
    -    // Returns 1, if address information is proper; Returns 0 otherwise
    -    int is_selectable(void) const;
    -    // Retruns 1, if the local SAP is enabled.
    -
    -    // = CONTROL
    -    int selectable(int = ACE_CLASSIX_SAP::DEFAULT_PRIORITY /* priority */);
    -    // Puts the SAP in the ENABLED state so that data the port associated
    -    // with its local addess can be monitored by the CLASSIX's Reactor.
    -
    -    int unselectable(int = 0 /* not used */);
    -    // Makes the SAP DISABLED and therefore the SAP can not be monitored
    -    // by the CLASSIX's Reactor..
    -    int open(const ACE_Addr&);
    -    int open(const ACE_CLASSIX_Port_Core*);
    -    // Sets the address information according to the supplied port
    -    // Returns 0 on success; returns -1 otherwise
    -    int close(void);
    -    // removes the port information
    -    // Returns 0 on success (always); returns -1 otherwise
    -
    -    void clear(void);
    -    // erase local port info
    -
    -#if 0
    -    int control(u_int = K_BROADMODE);
    -    int control(u_int, /* mode */ int /* site */ );
    -    // Interface for CLASSIX' send mode
    -#endif
    -
    -
    -    // = HELPER
    -    void dump(void) const;
    -    // dump the state of an object
    -
    -    ACE_ALLOC_HOOK_DECLARE;
    -    // declare the dynamic allocation hooks
    -
    - protected:
    -#if 0
    -    virtual set_mode_(u_int = K_BROADMODE); /* theMode */
    -    // Sets the addressing mode with the current setting of coTarget
    -    virtual set_mode_(u_int, /* mode */ int /* site */);
    -    // Sets the addressing mode as well as the coTarget
    -#endif
    -    // Disable copy constructor/assignment
    -    ACE_CLASSIX_SAP(ACE_CLASSIX_SAP const&);
    -    ACE_CLASSIX_SAP const& operator=(ACE_CLASSIX_SAP const&);
    -
    -    ACE_CLASSIX_Port   local_addr_;
    -    int                enabled_; // 1 if enabled, 0 if disabled (Default)
    -};
    -
    -/* ------------------------------------------------------------------------- */
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_SAP.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_CLASSIX_SAP_H */
    diff --git a/ace/CLASSIX/CLASSIX_SAP.i b/ace/CLASSIX/CLASSIX_SAP.i
    deleted file mode 100644
    index 105570b363b..00000000000
    --- a/ace/CLASSIX/CLASSIX_SAP.i
    +++ /dev/null
    @@ -1,58 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -ACE_INLINE
    -ACE_CLASSIX_SAP::ACE_CLASSIX_SAP(void)
    -    :local_addr_ (),
    -     enabled_    (0)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_SAP::ACE_CLASSIX_SAP(const ACE_Addr& theAddr)
    -    :local_addr_ (theAddr.get_addr(), theAddr.get_size()),
    -     enabled_    (0)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_SAP::~ACE_CLASSIX_SAP(void)
    -{
    -    this->unselectable();
    -}
    -
    -ACE_INLINE
    -const ACE_CLASSIX_Port&
    -ACE_CLASSIX_SAP::get_addr(void) const
    -{
    -    return this->local_addr_;
    -}
    -
    -
    -ACE_INLINE
    -ACE_HANDLE
    -ACE_CLASSIX_SAP::get_handle(void) const
    -{
    -    return this->local_addr_.get_handle();
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_SAP::is_configured(void) const
    -{
    -    return this->local_addr_.is_configured();
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_SAP::is_selectable(void) const
    -{
    -    return this->enabled_ == 1;
    -}
    -
    -ACE_INLINE
    -void
    -ACE_CLASSIX_SAP::clear(void)
    -{
    -    this->local_addr_.clear();
    -}
    diff --git a/ace/CLASSIX/CLASSIX_Select_Reactor.cpp b/ace/CLASSIX/CLASSIX_Select_Reactor.cpp
    deleted file mode 100644
    index 035c6219403..00000000000
    --- a/ace/CLASSIX/CLASSIX_Select_Reactor.cpp
    +++ /dev/null
    @@ -1,337 +0,0 @@
    -// $Id$
    -/*
    -// ============================================================================
    -//
    -// = LIBRARY
    -//     ACE
    -// 
    -// = FILENAME
    -//     CLASSIX_Reactor.cpp
    -//
    -// = AUTHOR(S)
    -//     Nokia Telecommunications
    -// 
    -// ============================================================================
    -*/
    -#include "ace/CLASSIX/CLASSIX_Select_Reactor.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_Select_Reactor.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#include "ace/CLASSIX/CLASSIX_OS.h"
    -/* ------------------------------------------------------------------------- */
    -int
    -ACE_CLASSIX_Select_Reactor::wait_for_multiple_events 
    -(ACE_Select_Reactor_Handle_Set &theDispatchSet,
    - ACE_Time_Value *max_wait_time)
    -{
    -
    -    ACE_Time_Value timer_buf (0);
    -    ACE_Time_Value *this_timeout = &timer_buf;
    -
    -    int number_of_active_handles = this->any_ready (theDispatchSet);
    -
    -    // If there are any bits enabled in the  then we'll
    -    // handle those first, otherwise we'll block in select().
    -
    -    if (number_of_active_handles == 0)
    -    {
    -	int port = K_ANYENABLED;
    -	do
    -	{
    -	    // Monitor all enabled ports
    -	    // CLASSIX uses -1 rathre than 0 for blocked receive
    -	    int msec = -1;
    -	    if (this->timer_queue_->calculate_timeout (max_wait_time,
    -						       this_timeout) != 0)
    -	    {
    -		if ((msec = this_timeout->msec()) == 0)
    -		{
    -		    msec = -1;
    -		    this_timeout = 0;
    -		}
    -	    }
    -	    else
    -		this_timeout = 0;
    -
    -	    ACE_CLASSIX_Msg rmsg(0, 0);
    -	    port = K_ANYENABLED;
    -	    ssize_t size = ::ipcReceive(rmsg.get(), &port, msec);
    -#if 0
    -	    ACE_DEBUG((LM_DEBUG, 
    -		       "(%t)ACE_CLASSIX_Select_Reactor::"
    -		       "return from ipcReceive():ret = %d"
    -		       ", port = %d, timeout = %d\n", 
    -		       size, port, msec));
    -#endif
    -	    if (size >= 0)
    -	    {
    -		// Is 0 valid ???
    -		// Keep info about which handler this message is for and
    -		// its size.
    -		if (this->set_current_info_(port, size) == 0)
    -		{
    -		    theDispatchSet.rd_mask_.set_bit(port);
    -		    number_of_active_handles = 1;
    -		}
    -		else
    -		{
    -		    ACE_DEBUG((LM_DEBUG, 
    -			       "Synchronization problem in Reactor???\n"));
    -		    number_of_active_handles = -1;
    -		    errno = K_EFAULT;
    -		}
    -	    }
    -	    else 
    -	    {
    -		// make the current message information invalid
    -		this->set_current_info_(ACE_INVALID_HANDLE, 0);
    -		if ((errno = size) == K_ETIMEOUT)
    -		    number_of_active_handles = 0;
    -		else
    -		    number_of_active_handles = -1;
    -	    }
    -	}
    -	while (number_of_active_handles == -1 && 
    -	       this->handle_error_ (port) > 0);
    -    }
    -    // Return the number of events to dispatch.
    -    return number_of_active_handles;
    -}
    -
    -int
    -ACE_CLASSIX_Select_Reactor::set_current_info_(ACE_HANDLE thePort, 
    -					      size_t theSize)
    -{
    -    ACE_MT(ACE_GUARD_RETURN (ACE_SELECT_REACTOR_MUTEX, ace_mon, 
    -			     this->token_, -1));
    -
    -    this->current_handle_     = thePort;
    -    this->current_msg_size_   = theSize;
    -    return 0;
    -}
    -
    -int 
    -ACE_CLASSIX_Select_Reactor::current_info(ACE_HANDLE thePort, 
    -					     size_t& theSize)
    -{
    -    ACE_MT (ACE_GUARD_RETURN (ACE_SELECT_REACTOR_MUTEX, 
    -			      ace_mon, this->token_, -1));
    -
    -    if (this->current_handle_ == thePort)
    -    {
    -	theSize = this->current_msg_size_;
    -	this->current_msg_size_ = 0;
    -	this->current_handle_   = ACE_INVALID_HANDLE;
    -	return 0;
    -    }
    -    else
    -    {
    -	theSize = 0;
    -	return -1;
    -    }
    -}
    -
    -int
    -ACE_CLASSIX_Select_Reactor::handle_error_ (int thePort)
    -{
    -
    -    // The thread has been aborted
    -    if (errno == K_EABORT)
    -	return this->restart_;
    -    // No port or a (Chorus) handler is attached to the port
    -    else if (errno == K_ENOPORT || errno == K_EINVAL)
    -	return this->check_handles_ (thePort);
    -    else
    -	return -1;
    -}
    -
    -int
    -ACE_CLASSIX_Select_Reactor::check_handles_ (int thePort)
    -{
    -    ACE_TRACE ("ACE_Select_Reactor::check_handles");
    -    if (thePort == K_ANYENABLED)
    -	return -1;
    -    else
    -    // Don't know how to check if a Chorus port has been disabled or deleted.
    -	return 0;
    -}
    -
    -/* ------------------------------------------------------------------------- */
    -void
    -ACE_CLASSIX_Select_Reactor_Notify::dump (void) const
    -{
    -  ACE_TRACE ("ACE_CLASSIX_Select_Reactor_Notify::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("ACE_CLASSIX_select_reactor_ = %x"), 
    -	      this->select_reactor_));
    -  this->notification_sap_.dump ();
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -int
    -ACE_CLASSIX_Select_Reactor_Notify::open (ACE_Reactor_Impl *theReactor,
    -					 ACE_Timer_Queue*,
    -					 int the_disable_notify_pipe)
    -{
    -    if (the_disable_notify_pipe == 0)
    -    {
    -	this->select_reactor_ =  ACE_dynamic_cast 
    -	    (ACE_CLASSIX_Select_Reactor *, theReactor);
    -
    -	if (this->notification_sap_.open (&this->notification_port_) != 0 ||
    -	    this->notification_sap_.selectable() != 0)
    -	    return -1;
    -
    -	return this->select_reactor_->register_handler
    -	    (this->notification_sap_.get_handle (),
    -	     this,
    -	     ACE_Event_Handler::READ_MASK);
    -    }
    -    else
    -    {
    -	this->select_reactor_ = 0;
    -    }
    -}
    -
    -ssize_t
    -ACE_CLASSIX_Select_Reactor_Notify::notify (ACE_Event_Handler *eh,
    -                                   ACE_Reactor_Mask mask,
    -                                   ACE_Time_Value *timeout)
    -{
    -    ACE_Notification_Buffer buffer (eh, mask);
    -    ACE_CLASSIX_Msg msg(&buffer, sizeof (buffer));
    -    KnIpcDest dest;
    -    dest.target = this->notification_sap_.get_addr().get_id();
    -
    -    ssize_t n = ipcSend (msg.get(), K_DEFAULTPORT, &dest);
    -    if (n < 0)
    -	ACE_DEBUG((LM_DEBUG, "ipcSend() error = %d\n", n));
    -    return n == 0 ? 0 : -1;
    -}
    -
    -// Handles pending threads (if any) that are waiting to unblock the
    -// Select_Reactor.
    -
    -int
    -ACE_CLASSIX_Select_Reactor_Notify::dispatch_notifications (
    -    int & number_of_active_handles,
    -    const ACE_Handle_Set &rd_mask)
    -{
    -  ACE_TRACE ("(%t) ACE_Select_Reactor_Notify::handle_notification");
    -
    -  ACE_HANDLE read_handle =
    -      this->notification_sap_.get_handle ();
    -
    -  if (rd_mask.is_set (read_handle))
    -    {
    -	number_of_active_handles--;
    -	return this->handle_input (read_handle);
    -    }
    -  else
    -    return 0;
    -}
    -
    -// Special trick to unblock select() when updates occur in somewhere
    -// other than the main ACE_Select_Reactor thread.  All we do is write data to
    -// a pipe that the ACE_Select_Reactor is listening on.  Thanks to Paul
    -// Stephenson for suggesting this approach.
    -
    -int
    -ACE_CLASSIX_Select_Reactor_Notify::handle_input (ACE_HANDLE handle)
    -{
    -    // Precondition: this->select_reactor_.token_.current_owner () ==
    -    // ACE_Thread::self ();
    -
    -    if (handle != this->notification_sap_.get_handle())
    -    {
    -	ACE_DEBUG((LM_DEBUG, "ACE_CLASSIX_Select_Reator_Notify::"
    -		   "handle_input() Not my handle\n"));
    -	return 0;
    -    }
    -
    -    ssize_t                 n = 0;  
    -    size_t                  n1= 0;
    -
    -    int                     number_dispatched = 0;
    -
    -    ACE_Notification_Buffer buffer;
    -    ACE_CLASSIX_Msg rmsg(&buffer, sizeof (buffer));
    -
    -    if (this->select_reactor_->current_info(handle, n1) == -1 ||
    -	n1 != sizeof buffer)
    -    {
    -	// I'm not quite sure what to do at this point.  It's
    -	// probably best just to return -1.
    -	ACE_DEBUG((LM_DEBUG, 
    -		   "ACE_CLASSIX_Select_Reactor_Notify:: "
    -		   "read not expected by the reactor\n", n1));
    -	return -1;
    -    }
    -
    -    while ((n = ::ipcGetData(rmsg.get())) > 0)
    -    {
    -	if (n != sizeof buffer)
    -        {
    -	    // I'm not sure quite what to do at this point.  It's
    -	    // probably best just to return -1.
    -	    ACE_DEBUG((LM_DEBUG, 
    -		       "ACE_CLASSIX_Select_Reactor_Notify::ipcGetDAta() "
    -		       "incorrect read(%d)\n", n));
    -            return -1;
    -        }
    -
    -	// If eh == 0 then another thread is unblocking the ACE_Select_Reactor
    -	// to update the ACE_Select_Reactor's internal structures.  Otherwise,
    -	// we need to dispatch the appropriate handle_* method on the
    -	// ACE_Event_Handler pointer we've been passed.
    -	if (buffer.eh_ != 0)
    -        {
    -	    int result = 0;
    -
    -	    switch (buffer.mask_)
    -            {
    -            case ACE_Event_Handler::READ_MASK:
    -            case ACE_Event_Handler::ACCEPT_MASK:
    -		result = buffer.eh_->handle_input (ACE_INVALID_HANDLE);
    -		break;
    -            case ACE_Event_Handler::WRITE_MASK:
    -		result = buffer.eh_->handle_output (ACE_INVALID_HANDLE);
    -		break;
    -            case ACE_Event_Handler::EXCEPT_MASK:
    -		result = buffer.eh_->handle_exception (ACE_INVALID_HANDLE);
    -		break;
    -            default:
    -		// Should we bail out if we get an invalid mask?
    -		ACE_ERROR ((LM_ERROR, ASYS_TEXT ("invalid mask = %d\n"), buffer.mask_));
    -            }
    -	    if (result == -1)
    -		buffer.eh_->handle_close (ACE_INVALID_HANDLE,
    -					  ACE_Event_Handler::EXCEPT_MASK);
    -        }
    -
    -	number_dispatched++;
    -
    -	// Bail out if we've reached the .  Note that
    -	// by default  is -1, so we'll loop until all
    -	// the notifications in the pipe have been dispatched.
    -	if (number_dispatched == this->select_reactor_->max_notify_iterations())
    -	    break;
    -    }
    -
    -    // Reassign number_dispatched to -1 if things have gone seriously
    -    // wrong.
    -    if (n < 0)
    -	number_dispatched = -1;
    -
    -
    -  // Enqueue ourselves into the list of waiting threads.  When we
    -  // reacquire the token we'll be off and running again with ownership
    -  // of the token.  The postcondition of this call is that
    -  // this->select_reactor_.token_.current_owner () == ACE_Thread::self ();
    -    this->select_reactor_->renew();
    -    return number_dispatched;
    -}
    -/* ------------------------------------------------------------------------- */
    diff --git a/ace/CLASSIX/CLASSIX_Select_Reactor.h b/ace/CLASSIX/CLASSIX_Select_Reactor.h
    deleted file mode 100644
    index baf37704c04..00000000000
    --- a/ace/CLASSIX/CLASSIX_Select_Reactor.h
    +++ /dev/null
    @@ -1,207 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -/*
    -// ============================================================================
    -//
    -// = LIBRARY
    -//     ACE
    -//
    -// = FILENAME
    -//     CLASSIX_Reactor.h
    -//
    -// = AUTHOR(S)
    -//     Nokia Telecommunications
    -//
    -// ============================================================================
    -*/
    -
    -#ifndef ACE_CLASSIX_REACTOR_H
    -#define ACE_CLASSIX_REACTOR_H
    -
    -/* ------------------------------------------------------------------------- */
    -#include "ace/Timer_Queue.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Select_Reactor.h"
    -#include "ace/Message_Block.h"
    -#include "ace/CLASSIX/CLASSIX_SAP.h"
    -
    -class ACE_CLASSIX_Select_Reactor;
    -
    -class ACE_Export ACE_CLASSIX_Select_Reactor_Notify :
    -    public ACE_Reactor_Notify
    -{
    -  // = TITLE
    -  //     Unblock the  from its event loop.
    -  //
    -  // = DESCRIPTION
    -  //   This replaces  class.
    -  //   Instead of using pipe, this class uses an Chorus IPC port to
    -  //   trigger the unblock event.
    -  //
    -public:
    -    // = Initialization and termination methods.
    -    ACE_CLASSIX_Select_Reactor_Notify(void);
    -    ~ACE_CLASSIX_Select_Reactor_Notify(void);
    -
    -    virtual int open (ACE_Reactor_Impl *,
    -                      ACE_Timer_Queue * = 0,
    -                      int  = 0 /* dusable_notify_pip */);
    -    // Enables the notification port and register it with the reactor
    -    virtual int close (void);
    -    // Disables the notification port
    -
    -    int dispatch_notifications (int &number_of_active_handles,
    -                                const ACE_Handle_Set &rd_mask);
    -    // Handles pending threads (if any) that are waiting to unblock the
    -    // Select_Reactor.
    -
    -    ssize_t notify (ACE_Event_Handler * = 0,
    -                    ACE_Reactor_Mask = ACE_Event_Handler::EXCEPT_MASK,
    -                    ACE_Time_Value * = 0);
    -    // Called by a thread when it wants to unblock the Select_Reactor.
    -    // This wakeups the  if currently blocked in
    -    // select()/poll().  Pass over both the  *and* the
    -    //  to allow the caller to dictate which 
    -    // method the  will invoke.  The 
    -    // indicates how long to blocking trying to notify the
    -    // .  If  == 0, the caller will block until
    -    // action is possible, else will wait until the relative time
    -    // specified in * elapses).
    -
    -    virtual int handle_input (ACE_HANDLE handle);
    -    // Called back by the Select_Reactor when a thread wants to unblock us.
    -
    -    virtual void max_notify_iterations (int);
    -    // Set the maximum number of times that the
    -    //  method will iterate
    -    // Always 1.
    -
    -    virtual int max_notify_iterations (void);
    -    // Get the maximum number of times that the
    -    //  method will iterate.
    -    // Always 1
    -
    -    void dump (void) const;
    -    // Dump the state of an object.
    -
    -    ACE_ALLOC_HOOK_DECLARE;
    -    // Declare the dynamic allocation hooks.
    -
    -private:
    -    ACE_CLASSIX_Select_Reactor       *select_reactor_;
    -    // Keep a back pointer to the .  If this value
    -    // if NULL then the  has been initialized with
    -    // .
    -    ACE_CLASSIX_Port_Core    notification_port_; // CLASSIX' IPC port
    -    ACE_CLASSIX_SAP          notification_sap_;
    -    // The HANDLE that the Select_Reactor is listening on and
    -    // the HANDLE that threads wanting the attention of the
    -    // Select_Reactor will write t are the same.
    -    // It can be seen that the notification port is implicitly connected to the
    -    // port from where the notification is written.  In many cases, it will be
    -    // the actor's default port.
    -};
    -
    -class ACE_CLASSIX_Select_Reactor : public ACE_Select_Reactor
    -    // = TITLE
    -    //   Implementing a Reactor for monitoring incoming data
    -    //
    -    // = DESCRIPTION
    -    //     This class redefines the wait_for_events() method of
    -    //      class.
    -    //
    -    //     The wait_for_events() method uses ipcReceive() to monitor
    -    //     all ENABLED ports for incoming messages.  The ipcReceive() is
    -    //     set up such that it will find out the size of the message but will
    -    //     not read the message.  The Chorus OS provides an ipcGetData()
    -    //     to read the message that has just been detected on the same
    -    //     thread.
    -    //     Once a message is detected on a particular
    -    //     port, the reactor  will invoke the port handler's
    -    //     handle_input() method on the same thread.  It is important that
    -    //     handle_input() shall immediately retrieve(use ipcGetData())
    -    //     the message on the same
    -    //     thread and it shall not hold up this thread in the handle_input()
    -    //     routine for too long. This will allow the Reactor to respond to
    -    //     events more quickly.
    -    //
    -    //  = NOTE
    -    //   Since chorus does not allow ipcReceive to monitor a subset of
    -    //   ENABLED ports.  One cannot have two ACE_CLASSIX_Select_Reactors
    -    //   in one actor.
    -    //
    -{
    -  public:
    -
    -
    -    // = CURRENT MESSAGE
    -    // The following message should be called in the handler's
    -    // handle_input() routine.
    -    // The handle_input() routine should not hold the reactor for too long.
    -    virtual int current_info(ACE_HANDLE /* port */,
    -                             size_t& /* msg size */);
    -    // Retruns the current messageage to the caleer if the supplied
    -    // handle id is the same as the 
    -    // Returns 0, if  constains the size of the message
    -    // that the handler shall read.
    -    // Returns -1, if the caller is not the expected handler.
    -
    - protected:
    -  // = INITIALIZATION
    -  ACE_CLASSIX_Select_Reactor (ACE_Timer_Queue * = 0);
    -  // Initializes  with the handler
    -  // repository of the default size.
    -
    -  ACE_CLASSIX_Select_Reactor (size_t size,
    -                              int restart = 0,
    -                              ACE_Timer_Queue * = 0);
    -  // Initializes  with the handler repository of
    -  // size .
    -
    -  // multiplexer
    -  virtual int wait_for_multiple_events (ACE_Select_Reactor_Handle_Set &,
    -                                        ACE_Time_Value *);
    -  // Wait for events to occur.
    -
    -  virtual int set_current_info_(ACE_HANDLE /* handle */,
    -                                size_t /* size of data */);
    -  // record the handler and the size of the message that the handler shall
    -  // read next.
    -
    -
    -  // ACE_Recursive_Thread_Mutex  lock_current_;
    -  // lock for data relating to the current message.
    -  // use token lock
    -
    -  size_t                      current_msg_size_;
    -  // size of the message that has just been detected.
    -
    -  ACE_HANDLE                  current_handle_;
    -  // handler id of the current address.
    -
    -  friend class ACE_CLASSIX_Select_Reactor_Notify;
    -  friend class ACE_CLASSIX_OS;
    - // for constructors
    -
    - private:
    -  int handle_error_(int /* port handle */);
    -  // Takes corrective action when errors occur.
    -  int check_handles_(int /* port handle */);
    -  // Makes sure the handler is valid.
    -
    -  ACE_CLASSIX_Select_Reactor(ACE_CLASSIX_Select_Reactor const&);
    -  ACE_CLASSIX_Select_Reactor const& operator=(ACE_CLASSIX_Select_Reactor const&);
    -};
    -
    -/* ------------------------------------------------------------------------- */
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_Select_Reactor.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_CLASSIX_REACTOR_H */
    diff --git a/ace/CLASSIX/CLASSIX_Select_Reactor.i b/ace/CLASSIX/CLASSIX_Select_Reactor.i
    deleted file mode 100644
    index af4e995cb87..00000000000
    --- a/ace/CLASSIX/CLASSIX_Select_Reactor.i
    +++ /dev/null
    @@ -1,63 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -//
    -// CLASSIX/Reactor.i
    -/* ------------------------------------------------------------------------- */
    -
    -/* ------------------------------------------------------------------------- */
    -ACE_INLINE
    -ACE_CLASSIX_Select_Reactor_Notify::ACE_CLASSIX_Select_Reactor_Notify(void)
    -    : ACE_Reactor_Notify()
    -{
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Select_Reactor_Notify::~ACE_CLASSIX_Select_Reactor_Notify(void)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Select_Reactor::ACE_CLASSIX_Select_Reactor(
    -    ACE_Timer_Queue *theTimeQ)
    -  : ACE_Select_Reactor(0, theTimeQ, 0,
    -		       new ACE_CLASSIX_Select_Reactor_Notify()),
    -    current_msg_size_ (0),
    -    current_handle_   (ACE_INVALID_HANDLE)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Select_Reactor::ACE_CLASSIX_Select_Reactor (
    -    size_t theSize,
    -    int theRs,
    -    ACE_Timer_Queue *theTimeQ)
    -  : ACE_Select_Reactor (theSize, theRs, 0, theTimeQ, 0,
    -			new ACE_CLASSIX_Select_Reactor_Notify() ),
    -    current_msg_size_ (0),
    -    current_handle_   (ACE_INVALID_HANDLE)
    -{
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Select_Reactor_Notify::close (void)
    -{
    -  // deregister handle ???
    -  return this->notification_sap_.close ();
    -}
    -
    -ACE_INLINE
    -void
    -ACE_CLASSIX_Select_Reactor_Notify::max_notify_iterations (int iterations)
    -{
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Select_Reactor_Notify::max_notify_iterations (void)
    -{
    -    return 1;
    -}
    -
    -
    -/* ------------------------------------------------------------------------- */
    diff --git a/ace/CLASSIX/CLASSIX_Stream.cpp b/ace/CLASSIX/CLASSIX_Stream.cpp
    deleted file mode 100644
    index 5d1ba095853..00000000000
    --- a/ace/CLASSIX/CLASSIX_Stream.cpp
    +++ /dev/null
    @@ -1,362 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//     ace
    -// 
    -// = FILENAME
    -//     CLASSIX_Stream.cpp
    -//
    -// = AUTHOR(S)
    -//     Nokia Telecommunications
    -// 
    -// ============================================================================
    -
    -#include "ace/CLASSIX/CLASSIX_Stream.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_Stream.i"
    -#endif /* __ACE_INLINE__ */
    -/* ------------------------------------------------------------------------- */
    -ACE_CLASSIX_Stream::ACE_CLASSIX_Stream(void)
    -    : local_sap_        (),
    -      local_sap_closed_ (0),
    -      local_port_       (0),
    -      peer_sap_         (),
    -      peer_sap_closed_  (1)
    -//      dest_site_        (-1)
    -{
    -}
    -
    -ACE_CLASSIX_Stream::ACE_CLASSIX_Stream
    -         (const ACE_CLASSIX_Port_Core& thePeer, 
    -	  const ACE_CLASSIX_Port& theLocal)
    -    : local_sap_        (theLocal),
    -      local_sap_closed_ (0),
    -      local_port_       (0),
    -      peer_sap_         (thePeer),
    -      peer_sap_closed_  (1)
    -//      dest_site_        (-1)
    -{
    -    this->dest_.target = this->peer_sap_.get_addr()->get_id();
    -}
    -
    -ACE_CLASSIX_Stream::ACE_CLASSIX_Stream(const ACE_CLASSIX_Port& thePeer, 
    -				       const ACE_CLASSIX_Port& theLocal)
    -    : local_sap_       (theLocal),
    -      local_sap_closed_(0),
    -      local_port_      (0),
    -      peer_sap_        (thePeer),
    -      peer_sap_closed_ (1)
    -//      dest_site_       (-1)
    -{
    -    this->dest_.target = this->peer_sap_.get_addr()->get_id();
    -}
    -
    -
    -ACE_CLASSIX_Stream::ACE_CLASSIX_Stream(const KnUniqueId& thePeer,
    -			       const ACE_CLASSIX_Port& theLocal)
    -    : local_sap_       (theLocal),
    -      local_sap_closed_(0),
    -      local_port_      (0),
    -      peer_sap_        (thePeer),
    -      peer_sap_closed_ (1)
    -//      dest_site_       (-1)
    -{
    -    this->dest_.target = this->peer_sap_.get_addr()->get_id();
    -}
    -
    -int
    -ACE_CLASSIX_Stream::set_local_port(ACE_CLASSIX_Port_Core* thePort)
    -{
    -    delete this->local_port_;
    -    if (this->local_sap_.open(thePort) == 0)
    -    {
    -	this->local_port_ = thePort;
    -	return 0;
    -    }
    -    else
    -    {
    -	this->local_port_ = 0;
    -	this->local_sap_.clear();
    -	return -1;
    -    }
    -}
    -
    -int 
    -ACE_CLASSIX_Stream::open(void)
    -{
    -    this->dest_.target = this->peer_sap_.get_addr()->get_id();
    -    this->open_writer();
    -
    -    if (!this->local_sap().is_configured() ||
    -	this->local_sap().get_handle() == 
    -	ACE_CLASSIX_DEFAULT_PORT::instance()->get_handle())
    -    {
    -	delete this->local_port_;
    -	ACE_NEW_RETURN(this->local_port_, ACE_CLASSIX_Port_Core(), -1);
    -	return this->local_sap_.open(this->local_port_);
    -    }
    -
    -    return 0;
    -}
    -
    -int 
    -ACE_CLASSIX_Stream::open(const ACE_Addr& theAddr)
    -{
    -    this->dest_.target = this->peer_sap_.get_addr()->get_id();
    -    this->open_writer();
    -
    -    if (!this->local_sap().is_configured() ||
    -	this->local_sap().get_handle() == 
    -	ACE_CLASSIX_DEFAULT_PORT::instance()->get_handle())
    -    {
    -	delete this->local_port_;
    -	if (theAddr.get_size() != this->local_sap().get_addr().get_size())
    -	    return -1;
    -	return this->local_sap_.open(theAddr);
    -    }
    -    return 0;	    
    -}
    -
    -int
    -ACE_CLASSIX_Stream::close_writer(void)
    -{
    -    if (this->peer_sap_closed_ == 0)
    -    {
    -	if (this->send_n(0, 0) < 0)
    -	    ACE_DEBUG((LM_DEBUG, "failed to send a zero byte msg\n"));
    -	this->peer_sap_closed_ = 1;
    -    }
    -    return 0;
    -}
    -
    -void
    -ACE_CLASSIX_Stream::open_writer(void)
    -{
    -    this->peer_sap_closed_ = 0;
    -}
    -
    -int
    -ACE_CLASSIX_Stream::close(void)
    -{
    -    this->close_writer();
    -
    -    this->local_sap_.close();
    -    if (this->local_port_)
    -    {
    -	delete this->local_port_;
    -	this->local_port_ = 0;
    -    }
    -    this->dest_.target = ACE_CLASSIX_OS::null_KnUniqueId();
    -    return 0;
    -}
    -
    -void
    -ACE_CLASSIX_Stream::set_target_()
    -{
    -    this->dest_.target = this->peer_sap_.get_addr()->get_id();
    -}
    -
    -int
    -ACE_CLASSIX_Stream::set_peer_sap(const ACE_Addr& theAddr)
    -{
    -    if (this->peer_sap_.set(theAddr) == 0)
    -    {
    -	this->set_target_();
    -	return 0;
    -    }
    -    return -1;
    -}
    -
    -int
    -ACE_CLASSIX_Stream::set_peer_sap(const ACE_CLASSIX_Port_Core& theAddr)
    -{
    -    if (this->peer_sap_.set(theAddr) == 0)
    -    {
    -	this->set_target_();
    -	return 0;
    -    }
    -    return -1;
    -}
    -
    -int
    -ACE_CLASSIX_Stream::set_peer_sap(const KnUniqueId& theAddr)
    -{
    -    if (this->peer_sap_.set(theAddr) == 0)
    -    {
    -	this->set_target_();
    -	return 0;
    -    }
    -    return -1;
    -}
    -
    -int
    -ACE_CLASSIX_Stream::set_peer_sap(const KnCap& theAddr)
    -{
    -    if (this->peer_sap_.set(theAddr) == 0)
    -    {
    -	this->set_target_();
    -	return 0;
    -    }
    -    return -1;
    -}
    -
    -ssize_t
    -ACE_CLASSIX_Stream::send_n(const void* theBuf, size_t theLen, int theFlags)
    -{
    -    if (!this->is_writer_closed())
    -    {
    -	this->set_mode_(theFlags);
    -	return this->send_n(theBuf, theLen);
    -    }
    -    else
    -	return 0;
    -}
    -
    -ssize_t
    -ACE_CLASSIX_Stream::send_n(const void* theBuf, size_t theLen) const
    -{
    -    if (!this->is_writer_closed())
    -    {
    -	ACE_CLASSIX_Msg msg(theBuf, theLen);
    -	int result = 0;
    -	if ((result = ::ipcSend((KnMsgDesc*) msg.get(), 
    -				this->local_sap().get_handle(), 
    -				(KnIpcDest*) &this->dest_)) == 0)
    -	    return theLen;
    -	else
    -	{
    -	    errno = ACE_CLASSIX_OS::convert_io_error(result);
    -	    return -1;
    -	}
    -    }
    -    else
    -    {
    -	return 0;
    -    }
    -}
    -
    -ssize_t
    -ACE_CLASSIX_Stream::reply(const void* theBuf, size_t theLen) const
    -{
    -    if (!this->is_writer_closed())
    -    {
    -	ACE_CLASSIX_Msg msg(theBuf, theLen);
    -	if (int result = ::ipcReply((KnMsgDesc*) msg.get()) == 0)
    -	    return theLen;
    -	else
    -	{
    -	    errno = ACE_CLASSIX_OS::convert_io_error(result);
    -	    return -1;
    -	}
    -    }
    -    else
    -	return 0;
    -}
    -
    -ssize_t
    -ACE_CLASSIX_Stream::ipcRecv(void* theBuf, size_t theLen, 
    -			 int theFlag, ACE_Time_Value* theTimeout) const
    -{
    -    if (!this->is_reader_closed())
    -    {
    -	// In chorus environment, a negative value means block
    -	// until recv is possible 
    -	int timeout = theTimeout == 0 ? -1 : theTimeout->msec();
    -	if (timeout == 0)
    -	    timeout = -1;
    -
    -	if (theFlag & MSG_PEEK)
    -	{
    -	    theBuf = 0;
    -	    theLen = 0;
    -	}
    -
    -	ACE_CLASSIX_Msg rmsg(theBuf, theLen);
    -	int handle = this->local_sap().get_handle();
    -	int result = ::ipcReceive((KnMsgDesc*) rmsg.get(), &handle,  
    -				  timeout);
    -	if (result < 0)
    -	{
    -	    errno = ACE_CLASSIX_OS::convert_io_error(result);
    -	    return -1;
    -	}
    -	else
    -	    return result;
    -    }
    -    else
    -    {
    -	errno = ENOTCONN;
    -	return -1;
    -    }
    -}
    -
    -ssize_t
    -ACE_CLASSIX_Stream::ipcRecv_n(void* theBuf, size_t theLen, 
    -			   int theFlag, ACE_Time_Value* theTimeout) const
    -{
    -    // Timeout value applies to each around of receive.
    -    // ....Should be adjusted after each round!
    -    int len = 0;
    -    void *next = theBuf;
    -    size_t more = theLen; 
    -    for (int n = 0; 
    -	 more > 0; 
    -	 len += n, next += n, more -=n)
    -    {
    -	if ((n = this->ipcRecv(next, more, theFlag, theTimeout)) == -1)
    -	    break;
    -    }
    -    return len;
    -}
    -
    -ssize_t
    -ACE_CLASSIX_Stream::recv(void* theBuf, int theLen) const
    -{
    -    if (!this->is_reader_closed())
    -    {
    -	ACE_CLASSIX_Msg rmsg(theBuf, theLen);
    -	int result =  ::ipcGetData(rmsg.get());
    -	if (result >= 0)
    -	    return result;
    -	else if (result == K_EINVAL)
    -	    errno = EWOULDBLOCK;
    -	else 
    -	    errno = EFAULT;
    -
    -	return -1;
    -    }
    -    else
    -	return 0;
    -}
    -
    -
    -
    -void
    -ACE_CLASSIX_Stream::dump (void) const
    -{
    -    ACE_DEBUG ((LM_DEBUG, "ACE_CLASSIX_Stream...\n"));
    -    ACE_DEBUG ((LM_DEBUG, "...local sap(%s)\n", 
    -	       this->is_writer_closed() == 1 ? "closed" : "opened"));
    -    if (this->local_port_)
    -	ACE_DEBUG ((LM_DEBUG, "\towns the local port(%x)\n", 
    -		    this->local_port_));
    -    this->local_sap().dump();
    -
    -    ACE_DEBUG ((LM_DEBUG, "...Peer sap(%s & %s)\n",
    -	       this->is_reader_closed() == 1 ? "closed" : "opened",
    -	       this->is_selectable() ? "enabled" : "disabled"));
    -    this->peer_sap().dump();
    -    ACE_DEBUG((LM_DEBUG, "Dest- Target\n head = %x tail = %x\n",
    -	       this->dest_.target.uiHead,
    -	       this->dest_.target.uiTail
    -	       /* this->dest_site_ */));
    -    ACE_DEBUG((LM_DEBUG, "Dest- coTarget\n head = %x tail = %x\n",
    -	       this->dest_.coTarget.uiHead,
    -	       this->dest_.coTarget.uiTail
    -	       /* this->dest_site_ */));
    -    ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    diff --git a/ace/CLASSIX/CLASSIX_Stream.h b/ace/CLASSIX/CLASSIX_Stream.h
    deleted file mode 100644
    index 75ec415fe38..00000000000
    --- a/ace/CLASSIX/CLASSIX_Stream.h
    +++ /dev/null
    @@ -1,270 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//     ace
    -//
    -// = FILENAME
    -//     CLASSIX_Stream.h
    -//
    -// = AUTHOR(S)
    -//     Nokia Telecommunications
    -//
    -// ============================================================================
    -
    -#ifndef ACE_CLASSIX_STREAM_H
    -#define ACE_CLASSIX_STREAM_H
    -
    -/* ------------------------------------------------------------------------- */
    -#include "ace/CLASSIX/CLASSIX_SAP.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/CLASSIX/CLASSIX_Peer_SAP.h"
    -#include "ace/CLASSIX/CLASSIX_Port_Default.h"
    -
    -class ACE_CLASSIX_Stream
    -    // = TITLE
    -    //   Provides the stream interface for CLASSIX IPC communications.
    -    //
    -    // = DESCRIPTION
    -    //   This classes provides a stream wrapper over CLASSIX'
    -    //   IPC. It is designed to be an alternative to Stream type of
    -    //   communication in the UNIX AF_INET environment.
    -    //
    -    //   To the user, the stream is connection-oriented.  The stream
    -    //   is implemented on top of IPC, it is connectionless and its
    -    //   reliability is as good as what  the raw IPC can offer.
    -    //
    -    //   Since CLASSIX IPC is not intended to go across wide area network,
    -    //   it can be seen as an
    -    //   alternative to AF_INET's connection oriented stream, even though
    -    //   the CLASSIX IPC is connectionless.
    -    //
    -    //   This class  contains a local sap, peer sap and data holding
    -    //   delivery mode information.
    -    //
    -    //   When a stream is created, the peer SAP information must be provided.
    -    //   The local SAP information may be provided in the constructor or
    -    //   open().  The local SAP information given in open() overrides the
    -    //   existing one. If the local SAP address is not given at all, it will
    -    //   allocate a port and use it as the local SAP.
    -    //
    -{
    - public:
    -    ACE_CLASSIX_Stream(void);
    -    // Default constructor, does not setup anything
    -    ACE_CLASSIX_Stream(const ACE_CLASSIX_Port_Core&, /* remote port */
    -                        const ACE_CLASSIX_Port& =
    -                  *ACE_CLASSIX_DEFAULT_PORT::instance()); /* local address */
    -
    -    ACE_CLASSIX_Stream(const ACE_CLASSIX_Port&,    /* remote port address */
    -                       const ACE_CLASSIX_Port& =
    -                   *ACE_CLASSIX_DEFAULT_PORT::instance());/* local address */
    -
    -    ACE_CLASSIX_Stream(const KnUniqueId&,          /* remote port address */
    -                       const ACE_CLASSIX_Port& =
    -                   *ACE_CLASSIX_DEFAULT_PORT::instance());/* local address */
    -
    -    // = IO
    -    // Returns -1, if fault has occured during receive.  errno contains
    -    // the error condition.
    -    // Returns no of bytes received/sent,  otherwise.
    -    //
    -    virtual ssize_t send_n (const void *, /* buf */
    -                            size_t, /* n */
    -                            int /* flags */);
    -    // Sends exactly n bytes (keep trying until n bytes are sent)
    -    virtual ssize_t send_n (const void *, /* buf */ size_t /* n */) const;
    -    // Sends n bytes(keep trying until n bytes are sent)
    -    // Uses the current addressing mode
    -    virtual ssize_t send (const void *, /* buf */
    -                          size_t, /* n */
    -                          int /* flags */);
    -    // Sends n bytes. Same as send_n(buf, n, flag)
    -    virtual ssize_t send (const void *, /* buf */
    -                          size_t /* n */) const;
    -    // Sends n bytes. same as send_n(buf, n).
    -    virtual ssize_t reply (const void *, /* buf */
    -                           size_t /* n */) const;
    -    // Sends n bytes to the sender of the cureent thread's current message.
    -
    -    ssize_t ipcRecv (void *,             /* buffer */
    -                     size_t,             /* length */
    -                     int  = 0,           /* flag: 0 or MSG_PEEK  */
    -                     ACE_Time_Value* = 0) const; /* timeout */
    -    // Recv an  byte buffer
    -    // Wait up to  amount of time to receive up to  bytes
    -    // into  from  (uses the  call).  If  times
    -    // out a -1 is returned with .  If it succeeds the
    -    // number of bytes received is returned.
    -    // If  == 0, the caller
    -    // will block until action is possible, else will wait until the
    -    // relative time specified in * elapses).
    -    ssize_t ipcRecv_n (void *,             /* buffer */
    -                       size_t,             /* length */
    -                       int  = 0,           /* flag: 0 or MSG_PEEK  */
    -                       ACE_Time_Value* = 0) const; /* timeout */
    -    // Continue until receives n bytes of data or an error has occurred.
    -    // Retruns the no of bytes actually received.
    -    // If it is less than expected, errno contains error info.
    -
    -    ssize_t peek(ACE_Time_Value* = 0 /* timeout */) const;
    -    // It is the same as recv(0, 0, MSG_PEEK, timeout)
    -    // This must be followd by get_data() in order to read the peeked message
    -    ssize_t recv(void* /*buf */, int /* len */) const;
    -    // Gets data which have been peeked
    -    ssize_t recv_n(void* /*buf */, int /* len */) const;
    -    // Gets data which have been peeked
    -
    -    // = ACCESS
    -    virtual ACE_HANDLE get_handle (void) const;
    -    // virtual void set_handle (ACE_HANDLE);
    -    virtual void set_handle(ACE_HANDLE);
    -    // set the local port's address according to the supplied handle
    -
    -    const ACE_CLASSIX_SAP&  local_sap(void) const;
    -    // Returns read-only local sap
    -    const ACE_CLASSIX_Peer_SAP& peer_sap(void) const;
    -    // Returns read-only peer sap
    -    int get_remote_addr (ACE_Addr & /* dest */) const;
    -    // Returns 0, if the remote address has been setup, else -1.
    -    // The  parameter is not changed.
    -    // This method is here for compatability with SOCK_Stream.
    -    // Since the remote addr may be a port or a group and since the
    -    // address formats are different between a port and a group, the caller
    -    // cannot provide an appropriate buffer for recording the address.  The
    -    //  parameter is therefore not used.
    -
    -
    -    const ACE_CLASSIX_Port& local_addr(void) const;
    -    // Returns local address in  format
    -
    -    int is_selectable(void) const;
    -    // Retruns 1, if the local SAP is enabled.
    -    int is_writer_closed(void) const;
    -    // Retruns 1, if writer side is closed.
    -    int is_reader_closed(void) const;
    -    // Retruns 1, if reader side is closed.
    -
    -
    -    // = CONTROL
    -    int  set_peer_sap(const ACE_Addr&);
    -    // Returns 0, if successful; returns -1, otherwise
    -    // same as set_addr(const ACE_Addr&);
    -    int  set_peer_sap(const ACE_CLASSIX_Port_Core&);
    -    // Returns 0, if successful; returns -1, otherwise
    -    // same as void set_addr(const ACE_CLASSIX_Port_Core&);
    -    int set_peer_sap (const KnUniqueId&);
    -    // Returns 0, if successful; returns -1, otherwise
    -    int set_peer_sap (const KnCap&);
    -    // Returns 0, if successful; returns -1, otherwise
    -
    -    virtual int enable(int) const;
    -    virtual int disable(int) const;
    -    // These two methods do nothing. They are here to maintain the same
    -    // interface as other type of Stream class, e.g. ACE_SOCK_Stream
    -
    -    int selectable(int = ACE_CLASSIX_SAP::DEFAULT_PRIORITY);
    -    int unselectable(void);
    -    // Enables/Disables the local port to be monitored (by a CLASSIX reactor)
    -    // Default = DISABLED
    -    virtual void open_writer(void);
    -    virtual int close_writer(void);
    -    // Closes down the writer
    -    // Returns -1, if it fails; returns 0, otherwise
    -    // Subclass can overwrite this with sophisticated mechanism, such as
    -    // exchange protocol information with the peer.
    -    virtual int close_reader(void);
    -    // Closes down the writer
    -    // Returns -1, if it fails; returns 0, otherwise
    -    // Subclass can overwrite this with sophisticated mechanism, such as
    -    // exchange protocol information with the peer.
    -
    -    virtual int open(void);
    -    // for local SAP...
    -    // Creates a port and uses it as a SAP.
    -    // A port can be created if the local_sap is not configured or
    -    // it is configured and the local_sap uses the actor's default port.
    -    // Returns -1, if it fails; returns 0, otherwise
    -    virtual int open(const ACE_Addr&);
    -    // for local SAP...
    -    // Uses the supplied port information for the local SAP.
    -    virtual int close(void);
    -    // for local SAP...
    -    // Deletes the optional local port and clears the local SAP infomration.
    -
    -    // = OPTIONS
    -    int control(u_int = K_BROADMODE);
    -    int control(u_int, /* mode */ int /* site */ );
    -    // Interface for CLASSIX' send mode
    -
    -    // = HELPER
    -    void dump (void) const;
    -    // Dump the state of an object.
    -
    -    ACE_ALLOC_HOOK_DECLARE;
    -    // Declare the dynamic allocation hooks.
    -
    - protected:
    -    friend class ACE_CLASSIX_CLD_Connector;
    -    friend class ACE_CLASSIX_CO_Connector;
    -    friend class ACE_CLASSIX_CO_Acceptor;
    -    ACE_CLASSIX_SAP&  get_local_sap(void);
    -    // Returns local sap
    -    ACE_CLASSIX_Peer_SAP& get_peer_sap(void);
    -    // Returns peer sap
    -    int set_local_port(ACE_CLASSIX_Port_Core*);
    -    // Uses the supplied port as the local port and assumes the ownership
    -    // of the port. The existing local port, if any, will be deleted.
    -    // Returns 0, if it is successful.
    -    // Returns -1, otherwise.  The setting of the original local port
    -    // will be erased.
    -
    -    void set_target_(void);
    -    // set the delivery target structure using the existing peer information
    -
    -    virtual int set_mode_(u_int = K_BROADMODE); /* theMode */
    -    // Sets the addressing mode with the current setting of coTarget
    -    virtual int set_mode_(u_int, /* mode */ int /* site */);
    -    // Sets the addressing mode as well as the coTarget
    -
    -    ACE_CLASSIX_SAP          local_sap_;
    -    int                      local_sap_closed_;
    -    // 0 if it's not closed(default),
    -    // 1 if it's closed.
    -    ACE_CLASSIX_Port_Core   *local_port_;
    -    // if non-zero, it will be
    -    // deleted on exit.
    -
    -    ACE_CLASSIX_Peer_SAP     peer_sap_;
    -    int                      peer_sap_closed_;
    -    // 0 if it's not closed(default),
    -    // 1 if it's closed.
    -
    -    // Mode applied destination address
    -    // Can be changed by control()/set_mode_()
    -    // Mode is applicable in IPC classes other than the Stream class.
    -    // It is here since it is the destination format used by ipcSend.
    -
    -    // with/without additional site information
    -    // int                 dest_site_;
    -    KnIpcDest           dest_;
    -
    - private:
    -   // Disable copy constructor
    -  ACE_CLASSIX_Stream(ACE_CLASSIX_Stream const&);
    -  ACE_CLASSIX_Stream const& operator=(ACE_CLASSIX_Stream const&);
    -};
    -
    -/* ------------------------------------------------------------------------- */
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/CLASSIX/CLASSIX_Stream.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_CLASSIX_Stream_H */
    diff --git a/ace/CLASSIX/CLASSIX_Stream.i b/ace/CLASSIX/CLASSIX_Stream.i
    deleted file mode 100644
    index a876a3d78c9..00000000000
    --- a/ace/CLASSIX/CLASSIX_Stream.i
    +++ /dev/null
    @@ -1,182 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -ACE_INLINE
    -ACE_CLASSIX_Stream::~ACE_CLASSIX_Stream(void)
    -{
    -  this->close();
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Stream::control(u_int theMode)
    -{
    -  return this->set_mode_(theMode); 
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Stream::control(u_int theMode, int theSite)
    -{
    -  return this->set_mode_(theMode, theSite); 
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Stream::set_mode_(u_int theMode)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Stream::set_mode_(u_int theMode, int theSite)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE
    -ssize_t
    -ACE_CLASSIX_Stream::peek(ACE_Time_Value* theTimeout) const
    -{
    -  return this->ipcRecv(0, 0, MSG_PEEK, theTimeout);
    -}
    -
    -ACE_INLINE
    -ssize_t
    -ACE_CLASSIX_Stream::send(const void *theBuf,  size_t theLen) const
    -{
    -  return this->send_n(theBuf, theLen);
    -}
    -
    -ACE_INLINE
    -ssize_t
    -ACE_CLASSIX_Stream::send(const void *theBuf,size_t theLen, int theFlag)
    -{
    -  return this->send_n(theBuf, theLen, theFlag);
    -}
    -
    -ACE_INLINE
    -ssize_t
    -ACE_CLASSIX_Stream::recv_n(void* theBuf, int theLen) const
    -{
    -  return this->recv_n(theBuf, theLen);
    -}
    -
    -ACE_INLINE
    -ACE_HANDLE
    -ACE_CLASSIX_Stream::get_handle(void) const
    -{
    -  return this->local_sap_.get_handle();
    -}
    -
    -ACE_INLINE
    -void
    -ACE_CLASSIX_Stream::set_handle(ACE_HANDLE theHandle)
    -{
    -  this->local_sap_.set_handle(theHandle);
    -}
    -
    -ACE_INLINE
    -const ACE_CLASSIX_SAP& 
    -ACE_CLASSIX_Stream::local_sap(void) const
    -{
    -    return this->local_sap_;
    -}
    -
    -ACE_INLINE
    -const ACE_CLASSIX_Peer_SAP& 
    -ACE_CLASSIX_Stream::peer_sap(void) const
    -{
    -    return this->peer_sap_;
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_SAP& 
    -ACE_CLASSIX_Stream::get_local_sap(void)
    -{
    -    return this->local_sap_;
    -}
    -
    -ACE_INLINE
    -ACE_CLASSIX_Peer_SAP& 
    -ACE_CLASSIX_Stream::get_peer_sap(void)
    -{
    -    return this->peer_sap_;
    -}
    -
    -ACE_INLINE
    -const ACE_CLASSIX_Port& 
    -ACE_CLASSIX_Stream::local_addr(void) const
    -{
    -    return this->local_sap_.get_addr();
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Stream::selectable(int thePriority)
    -{
    -    return this->local_sap_.selectable(thePriority);
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Stream::unselectable(void)
    -{
    -    return this->local_sap_.unselectable();
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Stream::is_selectable(void) const
    -{
    -    return this->local_sap_.is_selectable();
    -}
    -
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Stream::is_writer_closed(void) const
    -{
    -    
    -    return (this->peer_sap_closed_ == 1);
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Stream::close_reader(void)
    -{
    -    this->local_sap_closed_ = 1;
    -    return 0;
    -}
    -
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Stream::is_reader_closed(void) const
    -{
    -    
    -    return this->local_sap_closed_ == 1;
    -}
    -
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Stream::enable(int) const
    -{
    -    return 0;
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Stream::disable(int) const
    -{
    -    return 0;
    -}
    -
    -ACE_INLINE
    -int
    -ACE_CLASSIX_Stream::get_remote_addr(ACE_Addr&) const
    -{
    -    return this->peer_sap_closed_ == 0;
    -}
    diff --git a/ace/CLASSIX/Makefile b/ace/CLASSIX/Makefile
    deleted file mode 100644
    index a207ce3da0e..00000000000
    --- a/ace/CLASSIX/Makefile
    +++ /dev/null
    @@ -1,544 +0,0 @@
    -#----------------------------------------------------------------------------
    -#       $Id$
    -#
    -#       Makefile for the entire ACE release
    -#----------------------------------------------------------------------------
    -
    -MAKEFILE = Makefile
    -LIB      = libCLASSIX.a
    -
    -FILES    = \
    -        CLASSIX_OS            	\
    -        CLASSIX_Select_Reactor	\
    -        CLASSIX_Addr          	\
    -        CLASSIX_Port_Core     	\
    -        CLASSIX_Port          	\
    -        CLASSIX_Port_Default  	\
    -        CLASSIX_Group         	\
    -        CLASSIX_Group_Stamp   	\
    -        CLASSIX_Group_Dynamic 	\
    -        CLASSIX_SAP           	\
    -        CLASSIX_Peer_SAP      	\
    -        CLASSIX_Stream        	\
    -        CLASSIX_Dgram_Mcast   	\
    -        CLASSIX_CO_Acceptor   	\
    -        CLASSIX_CO_Connector  	\
    -        CLASSIX_CLD_Connector
    -
    -DEFS    = $(addsuffix .h,$(FILES)) Svc_Conf_Tokens.h
    -DEFS    += $(addsuffix .i,$(FILES))
    -LSRC    = $(addsuffix .cpp,$(FILES))
    -
    -BUILD   = $(VLIB)
    -
    -#----------------------------------------------------------------------------
    -#       Include macros and targets
    -#----------------------------------------------------------------------------
    -
    -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
    -include $(ACE_ROOT)/include/makeinclude/macros.GNU
    -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU
    -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU
    -include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU
    -#### Disable installs in this ($(ACE_ROOT)/ace) directory, because this
    -#### is the (default) destination of installs anyways.  And this will prevent
    -#### creation of a link from the ACE library to itself when the build of
    -#### the ACE library fails.
    -INSTALL =
    -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
    -
    -#----------------------------------------------------------------------------
    -#       Local targets
    -#----------------------------------------------------------------------------
    -
    -#### Setting ACELIB to null allows it to be used for building shared libraries,
    -#### including libACE.$(SOEXT,) on certain platforms.
    -ACELIB =
    -
    -
    -ifeq ($(SUPPRESS_DASH_G),1)
    -#### Build this target without -g on some platforms.
    -  $(COMPILE-NO_DASH_G.cc) -o $@ $<
    -endif # SUPPRESS_DASH_G
    -
    -ifeq ($(CHORUS),1)
    -  ifeq ($(CC),$(GHS_DIR)/build -driver ch68)
    -    #### Build this target without -g, because it causes ghs 1.8.8 to core
    -    #### dump.
    -    $(VDIR)Select_Reactor.o .obj/Select_Reactor.so .shobj/Select_Reactor.o .shobj/Select_Reactor.so:
    -    $(COMPILE-NO_DASH_G.cc) -o $@ $<
    -  endif # CC
    -endif # CHORUS
    -
    -ifneq ($(GHS),)
    -  ifeq ($(CPU),86)
    -    $(VDIR)gethrtime.$(OBJEXT):
    -	make $@ ghs=0
    -  endif # 86
    -endif # GHS
    -
    -#----------------------------------------------------------------------------
    -#       Dependencies
    -#----------------------------------------------------------------------------
    -# DO NOT DELETE THIS LINE -- g++dep uses it.
    -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
    -
    -.obj/CLASSIX_OS.o .obj/CLASSIX_OS.so .shobj/CLASSIX_OS.o .shobj/CLASSIX_OS.so: CLASSIX_OS.cpp \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_OS.h \
    - $(ACE_ROOT)/ace/OS.h \
    - $(ACE_ROOT)/ace/inc_user_config.h \
    - $(ACE_ROOT)/ace/config.h \
    - $(ACE_ROOT)/ace/config-g++-common.h \
    - $(ACE_ROOT)/ace/streams.h \
    - $(ACE_ROOT)/ace/Basic_Types.h \
    - $(ACE_ROOT)/ace/Basic_Types.i \
    - $(ACE_ROOT)/ace/OS.i \
    - $(ACE_ROOT)/ace/Trace.h \
    - $(ACE_ROOT)/ace/Log_Msg.h \
    - $(ACE_ROOT)/ace/Log_Record.h \
    - $(ACE_ROOT)/ace/ACE.h \
    - $(ACE_ROOT)/ace/ACE.i \
    - $(ACE_ROOT)/ace/Log_Priority.h \
    - $(ACE_ROOT)/ace/Log_Record.i \
    - $(ACE_ROOT)/ace/Select_Reactor.h \
    - $(ACE_ROOT)/ace/Signal.h \
    - $(ACE_ROOT)/ace/Synch.h \
    - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
    - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
    - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
    - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
    - $(ACE_ROOT)/ace/Synch.i \
    - $(ACE_ROOT)/ace/Synch_T.h \
    - $(ACE_ROOT)/ace/Event_Handler.h \
    - $(ACE_ROOT)/ace/Event_Handler.i \
    - $(ACE_ROOT)/ace/Synch_T.i \
    - $(ACE_ROOT)/ace/Thread.h \
    - $(ACE_ROOT)/ace/Thread.i \
    - $(ACE_ROOT)/ace/Atomic_Op.i \
    - $(ACE_ROOT)/ace/Synch_T.cpp \
    - $(ACE_ROOT)/ace/Containers.h \
    - $(ACE_ROOT)/ace/Containers.i \
    - $(ACE_ROOT)/ace/Containers.cpp \
    - $(ACE_ROOT)/ace/Malloc.h \
    - $(ACE_ROOT)/ace/Malloc_Base.h \
    - $(ACE_ROOT)/ace/Malloc.i \
    - $(ACE_ROOT)/ace/Malloc_T.h \
    - $(ACE_ROOT)/ace/Free_List.h \
    - $(ACE_ROOT)/ace/Free_List.i \
    - $(ACE_ROOT)/ace/Free_List.cpp \
    - $(ACE_ROOT)/ace/Malloc_T.i \
    - $(ACE_ROOT)/ace/Malloc_T.cpp \
    - $(ACE_ROOT)/ace/Memory_Pool.h \
    - $(ACE_ROOT)/ace/Mem_Map.h \
    - $(ACE_ROOT)/ace/Mem_Map.i \
    - $(ACE_ROOT)/ace/Memory_Pool.i \
    - $(ACE_ROOT)/ace/Signal.i \
    - $(ACE_ROOT)/ace/Object_Manager.h \
    - $(ACE_ROOT)/ace/Object_Manager.i \
    - $(ACE_ROOT)/ace/Managed_Object.h \
    - $(ACE_ROOT)/ace/Managed_Object.i \
    - $(ACE_ROOT)/ace/Managed_Object.cpp \
    - $(ACE_ROOT)/ace/Timer_Queue.h \
    - $(ACE_ROOT)/ace/Timer_Queue_T.h \
    - $(ACE_ROOT)/ace/Timer_Queue_T.i \
    - $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
    - $(ACE_ROOT)/ace/Handle_Set.h \
    - $(ACE_ROOT)/ace/Handle_Set.i \
    - $(ACE_ROOT)/ace/Token.h \
    - $(ACE_ROOT)/ace/Token.i \
    - $(ACE_ROOT)/ace/Pipe.h \
    - $(ACE_ROOT)/ace/Pipe.i \
    - $(ACE_ROOT)/ace/Reactor_Impl.h \
    - $(ACE_ROOT)/ace/Select_Reactor.i \
    - $(ACE_ROOT)/ace/Reactor.h \
    - $(ACE_ROOT)/ace/Reactor.i \
    - $(ACE_ROOT)/ace/Singleton.h \
    - $(ACE_ROOT)/ace/Singleton.i \
    - $(ACE_ROOT)/ace/Singleton.cpp \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Port_Core.h \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Port_Core.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_OS.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Select_Reactor.h \
    - $(ACE_ROOT)/ace/Message_Block.h \
    - $(ACE_ROOT)/ace/Message_Block.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_SAP.h \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Port.h \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Addr.h \
    - $(ACE_ROOT)/ace/Addr.h \
    - $(ACE_ROOT)/ace/Addr.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Addr.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Port.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_SAP.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Select_Reactor.i
    -.obj/CLASSIX_Select_Reactor.o .obj/CLASSIX_Select_Reactor.so .shobj/CLASSIX_Select_Reactor.o .shobj/CLASSIX_Select_Reactor.so: CLASSIX_Select_Reactor.cpp \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Select_Reactor.h \
    - $(ACE_ROOT)/ace/Timer_Queue.h \
    - $(ACE_ROOT)/ace/Synch.h \
    - $(ACE_ROOT)/ace/ACE.h \
    - $(ACE_ROOT)/ace/OS.h \
    - $(ACE_ROOT)/ace/inc_user_config.h \
    - $(ACE_ROOT)/ace/config.h \
    - $(ACE_ROOT)/ace/config-g++-common.h \
    - $(ACE_ROOT)/ace/streams.h \
    - $(ACE_ROOT)/ace/Basic_Types.h \
    - $(ACE_ROOT)/ace/Basic_Types.i \
    - $(ACE_ROOT)/ace/OS.i \
    - $(ACE_ROOT)/ace/Trace.h \
    - $(ACE_ROOT)/ace/Log_Msg.h \
    - $(ACE_ROOT)/ace/Log_Record.h \
    - $(ACE_ROOT)/ace/ACE.i \
    - $(ACE_ROOT)/ace/Log_Priority.h \
    - $(ACE_ROOT)/ace/Log_Record.i \
    - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
    - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
    - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
    - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
    - $(ACE_ROOT)/ace/Synch.i \
    - $(ACE_ROOT)/ace/Synch_T.h \
    - $(ACE_ROOT)/ace/Event_Handler.h \
    - $(ACE_ROOT)/ace/Event_Handler.i \
    - $(ACE_ROOT)/ace/Synch_T.i \
    - $(ACE_ROOT)/ace/Thread.h \
    - $(ACE_ROOT)/ace/Thread.i \
    - $(ACE_ROOT)/ace/Atomic_Op.i \
    - $(ACE_ROOT)/ace/Synch_T.cpp \
    - $(ACE_ROOT)/ace/Timer_Queue_T.h \
    - $(ACE_ROOT)/ace/Free_List.h \
    - $(ACE_ROOT)/ace/Free_List.i \
    - $(ACE_ROOT)/ace/Free_List.cpp \
    - $(ACE_ROOT)/ace/Timer_Queue_T.i \
    - $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
    - $(ACE_ROOT)/ace/Signal.h \
    - $(ACE_ROOT)/ace/Containers.h \
    - $(ACE_ROOT)/ace/Containers.i \
    - $(ACE_ROOT)/ace/Containers.cpp \
    - $(ACE_ROOT)/ace/Malloc.h \
    - $(ACE_ROOT)/ace/Malloc_Base.h \
    - $(ACE_ROOT)/ace/Malloc.i \
    - $(ACE_ROOT)/ace/Malloc_T.h \
    - $(ACE_ROOT)/ace/Malloc_T.i \
    - $(ACE_ROOT)/ace/Malloc_T.cpp \
    - $(ACE_ROOT)/ace/Memory_Pool.h \
    - $(ACE_ROOT)/ace/Mem_Map.h \
    - $(ACE_ROOT)/ace/Mem_Map.i \
    - $(ACE_ROOT)/ace/Memory_Pool.i \
    - $(ACE_ROOT)/ace/Signal.i \
    - $(ACE_ROOT)/ace/Object_Manager.h \
    - $(ACE_ROOT)/ace/Object_Manager.i \
    - $(ACE_ROOT)/ace/Managed_Object.h \
    - $(ACE_ROOT)/ace/Managed_Object.i \
    - $(ACE_ROOT)/ace/Managed_Object.cpp \
    - $(ACE_ROOT)/ace/Select_Reactor.h \
    - $(ACE_ROOT)/ace/Handle_Set.h \
    - $(ACE_ROOT)/ace/Handle_Set.i \
    - $(ACE_ROOT)/ace/Token.h \
    - $(ACE_ROOT)/ace/Token.i \
    - $(ACE_ROOT)/ace/Pipe.h \
    - $(ACE_ROOT)/ace/Pipe.i \
    - $(ACE_ROOT)/ace/Reactor_Impl.h \
    - $(ACE_ROOT)/ace/Select_Reactor.i \
    - $(ACE_ROOT)/ace/Reactor.h \
    - $(ACE_ROOT)/ace/Reactor.i \
    - $(ACE_ROOT)/ace/Message_Block.h \
    - $(ACE_ROOT)/ace/Message_Block.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_SAP.h \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Port.h \
    - $(ACE_ROOT)/ace/Singleton.h \
    - $(ACE_ROOT)/ace/Singleton.i \
    - $(ACE_ROOT)/ace/Singleton.cpp \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_OS.h \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Port_Core.h \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Port_Core.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_OS.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Addr.h \
    - $(ACE_ROOT)/ace/Addr.h \
    - $(ACE_ROOT)/ace/Addr.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Addr.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Port.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_SAP.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Select_Reactor.i
    -.obj/CLASSIX_Addr.o .obj/CLASSIX_Addr.so .shobj/CLASSIX_Addr.o .shobj/CLASSIX_Addr.so: CLASSIX_Addr.cpp \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Addr.h \
    - $(ACE_ROOT)/ace/ACE.h \
    - $(ACE_ROOT)/ace/OS.h \
    - $(ACE_ROOT)/ace/inc_user_config.h \
    - $(ACE_ROOT)/ace/config.h \
    - $(ACE_ROOT)/ace/config-g++-common.h \
    - $(ACE_ROOT)/ace/streams.h \
    - $(ACE_ROOT)/ace/Basic_Types.h \
    - $(ACE_ROOT)/ace/Basic_Types.i \
    - $(ACE_ROOT)/ace/OS.i \
    - $(ACE_ROOT)/ace/Trace.h \
    - $(ACE_ROOT)/ace/Log_Msg.h \
    - $(ACE_ROOT)/ace/Log_Record.h \
    - $(ACE_ROOT)/ace/ACE.i \
    - $(ACE_ROOT)/ace/Log_Priority.h \
    - $(ACE_ROOT)/ace/Log_Record.i \
    - $(ACE_ROOT)/ace/Addr.h \
    - $(ACE_ROOT)/ace/Addr.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Addr.i
    -.obj/CLASSIX_Port_Core.o .obj/CLASSIX_Port_Core.so .shobj/CLASSIX_Port_Core.o .shobj/CLASSIX_Port_Core.so: CLASSIX_Port_Core.cpp \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Port_Core.h \
    - $(ACE_ROOT)/ace/OS.h \
    - $(ACE_ROOT)/ace/inc_user_config.h \
    - $(ACE_ROOT)/ace/config.h \
    - $(ACE_ROOT)/ace/config-g++-common.h \
    - $(ACE_ROOT)/ace/streams.h \
    - $(ACE_ROOT)/ace/Basic_Types.h \
    - $(ACE_ROOT)/ace/Basic_Types.i \
    - $(ACE_ROOT)/ace/OS.i \
    - $(ACE_ROOT)/ace/Trace.h \
    - $(ACE_ROOT)/ace/Log_Msg.h \
    - $(ACE_ROOT)/ace/Log_Record.h \
    - $(ACE_ROOT)/ace/ACE.h \
    - $(ACE_ROOT)/ace/ACE.i \
    - $(ACE_ROOT)/ace/Log_Priority.h \
    - $(ACE_ROOT)/ace/Log_Record.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Port_Core.i \
    - $(ACE_ROOT)/ace/Synch_T.h \
    - $(ACE_ROOT)/ace/Event_Handler.h \
    - $(ACE_ROOT)/ace/Event_Handler.i \
    - $(ACE_ROOT)/ace/Synch.h \
    - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
    - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
    - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
    - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
    - $(ACE_ROOT)/ace/Synch.i \
    - $(ACE_ROOT)/ace/Synch_T.i \
    - $(ACE_ROOT)/ace/Thread.h \
    - $(ACE_ROOT)/ace/Thread.i \
    - $(ACE_ROOT)/ace/Atomic_Op.i \
    - $(ACE_ROOT)/ace/Synch_T.cpp \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_OS.h \
    - $(ACE_ROOT)/ace/Select_Reactor.h \
    - $(ACE_ROOT)/ace/Signal.h \
    - $(ACE_ROOT)/ace/Containers.h \
    - $(ACE_ROOT)/ace/Containers.i \
    - $(ACE_ROOT)/ace/Containers.cpp \
    - $(ACE_ROOT)/ace/Malloc.h \
    - $(ACE_ROOT)/ace/Malloc_Base.h \
    - $(ACE_ROOT)/ace/Malloc.i \
    - $(ACE_ROOT)/ace/Malloc_T.h \
    - $(ACE_ROOT)/ace/Free_List.h \
    - $(ACE_ROOT)/ace/Free_List.i \
    - $(ACE_ROOT)/ace/Free_List.cpp \
    - $(ACE_ROOT)/ace/Malloc_T.i \
    - $(ACE_ROOT)/ace/Malloc_T.cpp \
    - $(ACE_ROOT)/ace/Memory_Pool.h \
    - $(ACE_ROOT)/ace/Mem_Map.h \
    - $(ACE_ROOT)/ace/Mem_Map.i \
    - $(ACE_ROOT)/ace/Memory_Pool.i \
    - $(ACE_ROOT)/ace/Signal.i \
    - $(ACE_ROOT)/ace/Object_Manager.h \
    - $(ACE_ROOT)/ace/Object_Manager.i \
    - $(ACE_ROOT)/ace/Managed_Object.h \
    - $(ACE_ROOT)/ace/Managed_Object.i \
    - $(ACE_ROOT)/ace/Managed_Object.cpp \
    - $(ACE_ROOT)/ace/Timer_Queue.h \
    - $(ACE_ROOT)/ace/Timer_Queue_T.h \
    - $(ACE_ROOT)/ace/Timer_Queue_T.i \
    - $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
    - $(ACE_ROOT)/ace/Handle_Set.h \
    - $(ACE_ROOT)/ace/Handle_Set.i \
    - $(ACE_ROOT)/ace/Token.h \
    - $(ACE_ROOT)/ace/Token.i \
    - $(ACE_ROOT)/ace/Pipe.h \
    - $(ACE_ROOT)/ace/Pipe.i \
    - $(ACE_ROOT)/ace/Reactor_Impl.h \
    - $(ACE_ROOT)/ace/Select_Reactor.i \
    - $(ACE_ROOT)/ace/Reactor.h \
    - $(ACE_ROOT)/ace/Reactor.i \
    - $(ACE_ROOT)/ace/Singleton.h \
    - $(ACE_ROOT)/ace/Singleton.i \
    - $(ACE_ROOT)/ace/Singleton.cpp \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_OS.i
    -.obj/CLASSIX_Port.o .obj/CLASSIX_Port.so .shobj/CLASSIX_Port.o .shobj/CLASSIX_Port.so: CLASSIX_Port.cpp \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Port.h \
    - $(ACE_ROOT)/ace/Singleton.h \
    - $(ACE_ROOT)/ace/Synch.h \
    - $(ACE_ROOT)/ace/ACE.h \
    - $(ACE_ROOT)/ace/OS.h \
    - $(ACE_ROOT)/ace/inc_user_config.h \
    - $(ACE_ROOT)/ace/config.h \
    - $(ACE_ROOT)/ace/config-g++-common.h \
    - $(ACE_ROOT)/ace/streams.h \
    - $(ACE_ROOT)/ace/Basic_Types.h \
    - $(ACE_ROOT)/ace/Basic_Types.i \
    - $(ACE_ROOT)/ace/OS.i \
    - $(ACE_ROOT)/ace/Trace.h \
    - $(ACE_ROOT)/ace/Log_Msg.h \
    - $(ACE_ROOT)/ace/Log_Record.h \
    - $(ACE_ROOT)/ace/ACE.i \
    - $(ACE_ROOT)/ace/Log_Priority.h \
    - $(ACE_ROOT)/ace/Log_Record.i \
    - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
    - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
    - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
    - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
    - $(ACE_ROOT)/ace/Synch.i \
    - $(ACE_ROOT)/ace/Synch_T.h \
    - $(ACE_ROOT)/ace/Event_Handler.h \
    - $(ACE_ROOT)/ace/Event_Handler.i \
    - $(ACE_ROOT)/ace/Synch_T.i \
    - $(ACE_ROOT)/ace/Thread.h \
    - $(ACE_ROOT)/ace/Thread.i \
    - $(ACE_ROOT)/ace/Atomic_Op.i \
    - $(ACE_ROOT)/ace/Synch_T.cpp \
    - $(ACE_ROOT)/ace/Singleton.i \
    - $(ACE_ROOT)/ace/Singleton.cpp \
    - $(ACE_ROOT)/ace/Object_Manager.h \
    - $(ACE_ROOT)/ace/Object_Manager.i \
    - $(ACE_ROOT)/ace/Managed_Object.h \
    - $(ACE_ROOT)/ace/Managed_Object.i \
    - $(ACE_ROOT)/ace/Managed_Object.cpp \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_OS.h \
    - $(ACE_ROOT)/ace/Select_Reactor.h \
    - $(ACE_ROOT)/ace/Signal.h \
    - $(ACE_ROOT)/ace/Containers.h \
    - $(ACE_ROOT)/ace/Containers.i \
    - $(ACE_ROOT)/ace/Containers.cpp \
    - $(ACE_ROOT)/ace/Malloc.h \
    - $(ACE_ROOT)/ace/Malloc_Base.h \
    - $(ACE_ROOT)/ace/Malloc.i \
    - $(ACE_ROOT)/ace/Malloc_T.h \
    - $(ACE_ROOT)/ace/Free_List.h \
    - $(ACE_ROOT)/ace/Free_List.i \
    - $(ACE_ROOT)/ace/Free_List.cpp \
    - $(ACE_ROOT)/ace/Malloc_T.i \
    - $(ACE_ROOT)/ace/Malloc_T.cpp \
    - $(ACE_ROOT)/ace/Memory_Pool.h \
    - $(ACE_ROOT)/ace/Mem_Map.h \
    - $(ACE_ROOT)/ace/Mem_Map.i \
    - $(ACE_ROOT)/ace/Memory_Pool.i \
    - $(ACE_ROOT)/ace/Signal.i \
    - $(ACE_ROOT)/ace/Timer_Queue.h \
    - $(ACE_ROOT)/ace/Timer_Queue_T.h \
    - $(ACE_ROOT)/ace/Timer_Queue_T.i \
    - $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
    - $(ACE_ROOT)/ace/Handle_Set.h \
    - $(ACE_ROOT)/ace/Handle_Set.i \
    - $(ACE_ROOT)/ace/Token.h \
    - $(ACE_ROOT)/ace/Token.i \
    - $(ACE_ROOT)/ace/Pipe.h \
    - $(ACE_ROOT)/ace/Pipe.i \
    - $(ACE_ROOT)/ace/Reactor_Impl.h \
    - $(ACE_ROOT)/ace/Select_Reactor.i \
    - $(ACE_ROOT)/ace/Reactor.h \
    - $(ACE_ROOT)/ace/Reactor.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Port_Core.h \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Port_Core.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_OS.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Addr.h \
    - $(ACE_ROOT)/ace/Addr.h \
    - $(ACE_ROOT)/ace/Addr.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Addr.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Port.i
    -.obj/CLASSIX_Port_Default.o .obj/CLASSIX_Port_Default.so .shobj/CLASSIX_Port_Default.o .shobj/CLASSIX_Port_Default.so: CLASSIX_Port_Default.cpp \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Port_Default.h \
    - $(ACE_ROOT)/ace/Singleton.h \
    - $(ACE_ROOT)/ace/Synch.h \
    - $(ACE_ROOT)/ace/ACE.h \
    - $(ACE_ROOT)/ace/OS.h \
    - $(ACE_ROOT)/ace/inc_user_config.h \
    - $(ACE_ROOT)/ace/config.h \
    - $(ACE_ROOT)/ace/config-g++-common.h \
    - $(ACE_ROOT)/ace/streams.h \
    - $(ACE_ROOT)/ace/Basic_Types.h \
    - $(ACE_ROOT)/ace/Basic_Types.i \
    - $(ACE_ROOT)/ace/OS.i \
    - $(ACE_ROOT)/ace/Trace.h \
    - $(ACE_ROOT)/ace/Log_Msg.h \
    - $(ACE_ROOT)/ace/Log_Record.h \
    - $(ACE_ROOT)/ace/ACE.i \
    - $(ACE_ROOT)/ace/Log_Priority.h \
    - $(ACE_ROOT)/ace/Log_Record.i \
    - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
    - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
    - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
    - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
    - $(ACE_ROOT)/ace/Synch.i \
    - $(ACE_ROOT)/ace/Synch_T.h \
    - $(ACE_ROOT)/ace/Event_Handler.h \
    - $(ACE_ROOT)/ace/Event_Handler.i \
    - $(ACE_ROOT)/ace/Synch_T.i \
    - $(ACE_ROOT)/ace/Thread.h \
    - $(ACE_ROOT)/ace/Thread.i \
    - $(ACE_ROOT)/ace/Atomic_Op.i \
    - $(ACE_ROOT)/ace/Synch_T.cpp \
    - $(ACE_ROOT)/ace/Singleton.i \
    - $(ACE_ROOT)/ace/Singleton.cpp \
    - $(ACE_ROOT)/ace/Object_Manager.h \
    - $(ACE_ROOT)/ace/Object_Manager.i \
    - $(ACE_ROOT)/ace/Managed_Object.h \
    - $(ACE_ROOT)/ace/Managed_Object.i \
    - $(ACE_ROOT)/ace/Managed_Object.cpp \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Port.h \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_OS.h \
    - $(ACE_ROOT)/ace/Select_Reactor.h \
    - $(ACE_ROOT)/ace/Signal.h \
    - $(ACE_ROOT)/ace/Containers.h \
    - $(ACE_ROOT)/ace/Containers.i \
    - $(ACE_ROOT)/ace/Containers.cpp \
    - $(ACE_ROOT)/ace/Malloc.h \
    - $(ACE_ROOT)/ace/Malloc_Base.h \
    - $(ACE_ROOT)/ace/Malloc.i \
    - $(ACE_ROOT)/ace/Malloc_T.h \
    - $(ACE_ROOT)/ace/Free_List.h \
    - $(ACE_ROOT)/ace/Free_List.i \
    - $(ACE_ROOT)/ace/Free_List.cpp \
    - $(ACE_ROOT)/ace/Malloc_T.i \
    - $(ACE_ROOT)/ace/Malloc_T.cpp \
    - $(ACE_ROOT)/ace/Memory_Pool.h \
    - $(ACE_ROOT)/ace/Mem_Map.h \
    - $(ACE_ROOT)/ace/Mem_Map.i \
    - $(ACE_ROOT)/ace/Memory_Pool.i \
    - $(ACE_ROOT)/ace/Signal.i \
    - $(ACE_ROOT)/ace/Timer_Queue.h \
    - $(ACE_ROOT)/ace/Timer_Queue_T.h \
    - $(ACE_ROOT)/ace/Timer_Queue_T.i \
    - $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
    - $(ACE_ROOT)/ace/Handle_Set.h \
    - $(ACE_ROOT)/ace/Handle_Set.i \
    - $(ACE_ROOT)/ace/Token.h \
    - $(ACE_ROOT)/ace/Token.i \
    - $(ACE_ROOT)/ace/Pipe.h \
    - $(ACE_ROOT)/ace/Pipe.i \
    - $(ACE_ROOT)/ace/Reactor_Impl.h \
    - $(ACE_ROOT)/ace/Select_Reactor.i \
    - $(ACE_ROOT)/ace/Reactor.h \
    - $(ACE_ROOT)/ace/Reactor.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Port_Core.h \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Port_Core.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_OS.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Addr.h \
    - $(ACE_ROOT)/ace/Addr.h \
    - $(ACE_ROOT)/ace/Addr.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Addr.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Port.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Port_Default.i
    -.obj/CLASSIX_Group.o .obj/CLASSIX_Group.so .shobj/CLASSIX_Group.o .shobj/CLASSIX_Group.so: CLASSIX_Group.cpp \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Group.h \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Addr.h \
    - $(ACE_ROOT)/ace/ACE.h \
    - $(ACE_ROOT)/ace/OS.h \
    - $(ACE_ROOT)/ace/inc_user_config.h \
    - $(ACE_ROOT)/ace/config.h \
    - $(ACE_ROOT)/ace/config-g++-common.h \
    - $(ACE_ROOT)/ace/streams.h \
    - $(ACE_ROOT)/ace/Basic_Types.h \
    - $(ACE_ROOT)/ace/Basic_Types.i \
    - $(ACE_ROOT)/ace/OS.i \
    - $(ACE_ROOT)/ace/Trace.h \
    - $(ACE_ROOT)/ace/Log_Msg.h \
    - $(ACE_ROOT)/ace/Log_Record.h \
    - $(ACE_ROOT)/ace/ACE.i \
    - $(ACE_ROOT)/ace/Log_Priority.h \
    - $(ACE_ROOT)/ace/Log_Record.i \
    - $(ACE_ROOT)/ace/Addr.h \
    - $(ACE_ROOT)/ace/Addr.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Addr.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Port.h \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Port.i \
    - $(ACE_ROOT)/ace/CLASSIX/CLASSIX_Group.i
    -
    -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
    diff --git a/ace/CORBA_Handler.cpp b/ace/CORBA_Handler.cpp
    deleted file mode 100644
    index fa23bc594b0..00000000000
    --- a/ace/CORBA_Handler.cpp
    +++ /dev/null
    @@ -1,594 +0,0 @@
    -// CORBA_Handler.cpp
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/CORBA_Handler.h"
    -
    -#include "ace/Object_Manager.h"
    -#include "ace/Thread_Manager.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/CORBA_Handler.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, CORBA_Handler, "$Id$")
    -
    -#if defined (ACE_HAS_ORBIX) && (ACE_HAS_ORBIX != 0)
    -ACE_ALLOC_HOOK_DEFINE(ACE_ST_CORBA_Handler)
    -ACE_ALLOC_HOOK_DEFINE(ACE_CORBA_Handler)
    -
    -void
    -ACE_CORBA_Handler::dump (void) const
    -{
    -  ACE_TRACE ("ACE_CORBA_Handler::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("\nreference_count_ = %d"), this->reference_count_));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -ACE_CORBA_Handler::ACE_CORBA_Handler (const ACE_CORBA_Handler &rhs)
    -{
    -  ACE_TRACE ("ACE_CORBA_Handler::ACE_CORBA_Handler");
    -}
    -
    -const ACE_CORBA_Handler &
    -ACE_CORBA_Handler::operator= (const ACE_CORBA_Handler &rhs)
    -{
    -  ACE_TRACE ("ACE_CORBA_Handler::operator=");
    -  return *this;
    -}
    -
    -void
    -ACE_ST_CORBA_Handler::dump (void) const
    -{
    -  ACE_TRACE ("ACE_ST_CORBA_Handler::dump");
    -
    -  ACE_CORBA_Handler::dump ();
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("instance_ = %x"), this->instance_));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("\niteration_ = %d"), this->iterations_));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -ACE_CORBA_Handler::~ACE_CORBA_Handler (void)
    -{
    -  ACE_TRACE ("ACE_CORBA_Handler::~ACE_CORBA_Handler");
    -}
    -
    -ACE_CORBA_Handler::ACE_CORBA_Handler (void)
    -  : reference_count_ (0)
    -{
    -  ACE_TRACE ("ACE_CORBA_Handler::ACE_CORBA_Handler");
    -  reactor (ACE_Reactor::instance ());
    -}
    -
    -// Only one ST CORBA Handler per-process...
    -/* static */ 
    -ACE_ST_CORBA_Handler *ACE_ST_CORBA_Handler::instance_ = 0;
    -
    -#if defined (ACE_TAKEOVER_ORBIX_CALLBACKS)
    -// Define the class statics
    -int             ACE_ST_CORBA_Handler::set_callbacks_ = 0;
    -OrbixIOCallback ACE_ST_CORBA_Handler::previous_orbix_open_callback_ = 0;
    -OrbixIOCallback ACE_ST_CORBA_Handler::previous_orbix_close_callback_ = 0;
    -#endif /* ACE_TAKEOVER_ORBIX_CALLBACKS */
    -
    -
    -// Insert a descriptor into the ACE_Reactor that Orbix has just added.
    -
    -/* static */ 
    -void 
    -ACE_ST_CORBA_Handler::insert_handle (ACE_HANDLE handle)
    -{
    -  ACE_TRACE ("ACE_ST_CORBA_Handler::insert_handle");
    -//  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("+++ inserting %d\n"), handle));
    -
    -#if defined (ACE_TAKEOVER_ORBIX_CALLBACKS)
    -  if (ACE_ST_CORBA_Handler::previous_orbix_open_callback_ != 0)
    -    ACE_ST_CORBA_Handler::previous_orbix_open_callback_ (handle);
    -#endif /* ACE_TAKEOVER_ORBIX_CALLBACKS */
    -
    -  if (ACE_ST_CORBA_Handler::instance_ == 0)
    -    return;
    -
    -  if (ACE_ST_CORBA_Handler::instance_->reactor() != 0)
    -    ACE_ST_CORBA_Handler::instance_->reactor()->register_handler 
    -      (handle, ACE_ST_CORBA_Handler::instance_, ACE_Event_Handler::READ_MASK);
    -  else
    -    ;
    -//    ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("insert_handle: reactor NULL\n")));
    -}
    -
    -// Remove a descriptor from the ACE_Reactor that Orbix has just deleted.
    -
    -/* static */ 
    -void 
    -ACE_ST_CORBA_Handler::remove_handle (ACE_HANDLE handle)
    -{
    -  ACE_TRACE ("ACE_ST_CORBA_Handler::remove_handle");
    -//  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("--- removing %d\n"), handle));
    -
    -#if defined (ACE_TAKEOVER_ORBIX_CALLBACKS)
    -  if (ACE_ST_CORBA_Handler::previous_orbix_close_callback_ != 0)
    -    ACE_ST_CORBA_Handler::previous_orbix_close_callback_ (handle);
    -#endif /* ACE_TAKEOVER_ORBIX_CALLBACKS */
    -
    -  if (ACE_ST_CORBA_Handler::instance_ == 0)
    -    return;
    -
    -  if (ACE_ST_CORBA_Handler::instance_->reactor () != 0)
    -    ACE_ST_CORBA_Handler::instance_->reactor ()->remove_handler
    -      (handle, ACE_Event_Handler::READ_MASK | ACE_Event_Handler::DONT_CALL);
    -  else
    -    ;
    -//    ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("remove_handle: reactor NULL\n")));
    -}
    -
    -/* static */
    -void ACE_ST_CORBA_Handler::instance_cleaner (void *object, void *param)
    -{
    -  ACE_UNUSED_ARG (param);
    -  delete ACE_reinterpret_cast (ACE_ST_CORBA_Handler *, object);
    -  return;
    -}
    -
    -
    -// Process the next Orbix event.
    -
    -int
    -ACE_ST_CORBA_Handler::handle_input (ACE_HANDLE handle)
    -{
    -  ACE_TRACE ("ACE_ST_CORBA_Handler::handle_input");
    -  //  ACE_DEBUG ((LM_DEBUG, "dispatching Orbix handle = %d in process
    -  //  = %P\n", handle));
    -
    -  TRY {
    -    // Loop up to  dispatching the
    -    // next event.  Note the trade off between efficiency and
    -    // fairness...
    -    
    -    for (size_t i = 0; i < this->iterations_; i++)
    -      if (ACE_CORBA_1 (Orbix.isEventPending) (IT_X))
    -        // Process the next Orbix event (don't block).
    -        ACE_CORBA_1 (Orbix.processNextEvent) (0, IT_X);
    -      else
    -        break;
    -  } 
    -  CATCHANY {
    -    // an error occured calling processNextEvent () - output the
    -    // error.
    -    cerr << IT_X << endl;
    -  } ENDTRY;
    -  return 0;
    -}
    -
    -int
    -ACE_ST_CORBA_Handler::suspend (void)
    -{
    -  // Create an iterator.
    -  ACE_Handle_Set set (ACE_CORBA_1 (Orbix.getFileDescriptors) ());
    -  ACE_Handle_Set_Iterator orbix_descriptors (set);
    -
    -  // Suspend all the HANDLEs registered by Orbix. 
    -  for (ACE_HANDLE h; 
    -       (h = orbix_descriptors ()) != ACE_INVALID_HANDLE; 
    -       ++orbix_descriptors)
    -    this->reactor ()->suspend_handler (h);
    -
    -  return 0;
    -}
    -
    -int
    -ACE_ST_CORBA_Handler::resume (void)
    -{
    -  // Create an iterator.
    -  ACE_Handle_Set set (ACE_CORBA_1 (Orbix.getFileDescriptors) ());
    -  ACE_Handle_Set_Iterator orbix_descriptors (set);
    -
    -  // Resume all the HANDLEs registered by Orbix. 
    -  for (ACE_HANDLE h; 
    -       (h = orbix_descriptors ()) != ACE_INVALID_HANDLE; 
    -       ++orbix_descriptors)
    -    this->reactor ()->resume_handler (h);
    -
    -  return 0;
    -}
    -
    -// Dummy constructor.
    -ACE_ST_CORBA_Handler::ACE_ST_CORBA_Handler (void)
    -{
    -  ACE_TRACE ("ACE_ST_CORBA_Handler::ACE_ST_CORBA_Handler");
    -
    -  // This is set by default for backward compatibility. The user can
    -  // use the set/get operations to change the iterations
    -  this->iterations_ = 5;
    -
    -  // Set up the callbacks so that we get informed when Orbix changes
    -  // its descriptors.
    -  OrbixIOCallback old_open, old_close;
    -
    -  old_open = ACE_CORBA_1 (Orbix.registerIOCallback) ((OrbixIOCallback) &ACE_ST_CORBA_Handler::insert_handle, 
    -                                                     FD_OPEN_CALLBACK);
    -  old_close = ACE_CORBA_1 (Orbix.registerIOCallback) ((OrbixIOCallback) &ACE_ST_CORBA_Handler::remove_handle, 
    -                                                      FD_CLOSE_CALLBACK);
    -#if defined (ACE_TAKEOVER_ORBIX_CALLBACKS)
    -  if (ACE_ST_CORBA_Handler::set_callbacks_ == 0)
    -    {
    -      ACE_ST_CORBA_Handler::previous_orbix_open_callback = old_open;
    -      ACE_ST_CORBA_Handler::previous_orbix_close_callback = old_close;
    -      ACE_ST_CORBA_Handler::set_callbacks_ = 1;
    -    }
    -#endif
    -}      
    -
    -void
    -ACE_ST_CORBA_Handler::get_orbix_descriptors (void)
    -{
    -  // Create an iterator.
    -  ACE_Handle_Set set (ACE_CORBA_1 (Orbix.getFileDescriptors) ());
    -  ACE_Handle_Set_Iterator orbix_descriptors (set);
    -  
    -  // Preinitialize anything that's already registered.
    -  for (ACE_HANDLE h; 
    -       (h = orbix_descriptors ()) != ACE_INVALID_HANDLE; 
    -       ++orbix_descriptors)
    -    ACE_ST_CORBA_Handler::insert_handle (h);
    -}
    -
    -// Register  by doing a "putit" to register the
    -//  using the  at  with
    -// orbixd.
    -
    -/* static */
    -int
    -ACE_CORBA_Handler::register_service (const char *service_name,
    -                                     const char *marker_name,
    -                                     const char *service_location)
    -{
    -  ACE_TRACE ("ACE_CORBA_Handler::register_service");
    -  char buf[BUFSIZ * 2]; // I hope this is enough space...
    -
    -  // Be defensive here...
    -  if (service_name == 0 || service_location == 0)
    -    {
    -      errno = EINVAL;
    -      return -1;
    -    }
    -  else if (marker_name == 0)
    -    ACE_OS::sprintf (buf, "putit %s %s", service_name, service_location);
    -  else
    -    ACE_OS::sprintf (buf, "putit -marker %s %s %s", 
    -               marker_name, service_name, service_location);
    -
    -  return ACE_OS::system (buf); // Use system(3S) to execute Orbix putit.
    -}
    -
    -// Register  by doing a "putit" to register
    -//  using the  with orbixd.
    -
    -/* static */
    -int 
    -ACE_CORBA_Handler::remove_service (const char *service_name,
    -                                   const char *marker_name)
    -{
    -  ACE_TRACE ("ACE_CORBA_Handler::remove_service");
    -  char buf[BUFSIZ * 2]; // I hope this is enough space!
    -  if (service_name == 0)
    -    {
    -      errno = EINVAL;
    -      return -1;
    -    }
    -  else if (marker_name == 0)
    -    ACE_OS::sprintf (buf, "rmit %s\n", service_name);
    -  else
    -    ACE_OS::sprintf (buf, "rmit -marker %s %s\n", marker_name, service_name);
    -  return ACE_OS::system (buf); // Use system(3S) to execute Orbix rmit.
    -}
    -
    -ACE_ST_CORBA_Handler::~ACE_ST_CORBA_Handler (void)
    -{
    -  ACE_TRACE ("ACE_ST_CORBA_Handler::~ACE_ST_CORBA_Handler");
    -  // Create an iterator.
    -  ACE_Handle_Set set (ACE_CORBA_1 (Orbix.getFileDescriptors) ());
    -  ACE_Handle_Set_Iterator orbix_descriptors (set);
    -      
    -  // Remove everything!
    -
    -  for (ACE_HANDLE h; 
    -       (h = orbix_descriptors ()) != ACE_INVALID_HANDLE; 
    -       ++orbix_descriptors)
    -    ACE_ST_CORBA_Handler::remove_handle (h);
    -
    -  // Keep Orbix from calling us back and crashing the system!
    -  ACE_CORBA_1 (Orbix.registerIOCallback) (0, FD_OPEN_CALLBACK);
    -  ACE_CORBA_1 (Orbix.registerIOCallback) (0, FD_CLOSE_CALLBACK);
    -  ACE_ST_CORBA_Handler::instance_ = 0;
    -}
    -
    -// Decrement the reference count and free up all the resources if this
    -// is the last service to be using the ACE_ST_CORBA_Handler...
    -
    -/* static */
    -int 
    -ACE_CORBA_Handler::deactivate_service (const char *service_name,
    -                                       const char *marker_name)
    -{
    -  ACE_TRACE ("ACE_CORBA_Handler::deactivate_service");
    -  if (service_name != 0
    -      && this->remove_service (service_name, marker_name) == -1)
    -    return -1;
    -
    -  int ref_count = this->reference_count_;
    -
    -  this->reference_count_--;
    -
    -  // Close everything down if the count drops to 0.
    -  if (this->reference_count_ == 0)
    -    // Commit suicide!
    -    delete this;
    -
    -  if (ref_count < 0)
    -    ;
    -//    ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("warning, reference count == %d\n"),
    -//               ref_count));
    -  return 0;
    -}
    -
    -/* static */ 
    -ACE_CORBA_Handler *
    -ACE_ST_CORBA_Handler::instance (void)
    -{
    -  ACE_TRACE ("ACE_ST_CORBA_Handler::instance");
    -
    -  // Note that this does not need a double-check since it should be
    -  // called from a single-threaded environment.
    -
    -  if (ACE_ST_CORBA_Handler::instance_ == 0)
    -    {
    -      ACE_NEW_RETURN (ACE_ST_CORBA_Handler::instance_,
    -                      ACE_ST_CORBA_Handler,
    -                      0);
    -      // Set up so that instance_cleaner() is called to destroy the instance
    -      // at program shutdown when the static objects are destroyed.
    -      // This should be _before_ the singleton reactor is destroyed since
    -      // cleanup objects are destroyed in LIFO order, and if the reactor
    -      // is not yet created, it will be by ACE_CORBA_Handler's constructor,
    -      // executed during ACE_NEW_RETURN, above.
    -      ACE_Object_Manager::at_exit (ACE_ST_CORBA_Handler::instance_,
    -                                   &ACE_ST_CORBA_Handler::instance_cleaner,
    -                                   0);
    -
    -      ACE_ST_CORBA_Handler::instance_->get_orbix_descriptors ();
    -    }
    -
    -  return ACE_ST_CORBA_Handler::instance_;
    -}
    -
    -// Activate and register  with the Orbix daemon.  If
    -//  and  are != 0 then do a "putit" to
    -// register this service with orbixd.  This method also increments the
    -// reference count of active services using the ACE_ST_CORBA_Handler.
    -
    -int
    -ACE_CORBA_Handler::activate_service (const char *service_name, 
    -                                     const char *marker_name, 
    -                                     const char *service_location)
    -{
    -  ACE_TRACE ("ACE_CORBA_Handler::activate_service");
    -  // Since the ACE_CORBA_Handler is a singleton, make sure not to
    -  // allocate and initialize more than one copy.  By incrementing the
    -  // reference count we ensure this.
    -
    -  this->reference_count_++;
    -
    -  if (service_name != 0 && service_location != 0
    -      && this->register_service (service_name, marker_name, 
    -                                 service_location) == -1)
    -    return -1;
    -
    -  // Tell Orbix that we have completed the server's initialization.
    -  // Note that we don't block by giving a timeout of 0...
    -
    -  TRY {
    -    ACE_CORBA_1 (Orbix.impl_is_ready) ((char *) service_name, 0, IT_X);
    -  } CATCHANY {
    -    return -1;
    -  } ENDTRY
    -
    -  return 0;
    -}
    -
    -#if defined (ACE_HAS_MT_ORBIX) && (ACE_HAS_MT_ORBIX != 0)
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_MT_CORBA_Handler)
    -
    -void
    -ACE_MT_CORBA_Handler::dump (void) const
    -{
    -  ACE_TRACE ("ACE_MT_CORBA_Handler::dump");
    -  ACE_CORBA_Handler::dump ();
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("instance_ = %x"), this->instance_));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("\nthr_mgr_ = %x"), this->thr_mgr_));
    -  this->pipe_.dump ();
    -  ACE_MT (ACE_Thread_Mutex *lock =
    -    ACE_Managed_Object::get_preallocated_object
    -      (ACE_Object_Manager::ACE_MT_CORBA_HANDLER_LOCK);
    -    if (lock != 0) lock->dump ());
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -// Only one MT CORBA Handler per-process...
    -/* static */ 
    -ACE_MT_CORBA_Handler *ACE_MT_CORBA_Handler::instance_ = 0;
    -
    -/* static */
    -ACE_CORBA_Handler *
    -ACE_MT_CORBA_Handler::instance (void)
    -{
    -  ACE_TRACE ("ACE_MT_CORBA_Handler::instance");
    -
    -  if (ACE_MT_CORBA_Handler::instance_ == 0)
    -    {
    -      ACE_MT (ACE_Thread_Mutex *lock =
    -        ACE_Managed_Object::get_preallocated_object
    -          (ACE_Object_Manager::ACE_MT_CORBA_HANDLER_LOCK);
    -        ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, *lock, 0));
    -
    -      if (ACE_MT_CORBA_Handler::instance_ == 0)
    -        ACE_NEW_RETURN (ACE_MT_CORBA_Handler::instance_,
    -                        ACE_MT_CORBA_Handler, 0);
    -    }
    -
    -  return ACE_MT_CORBA_Handler::instance_;
    -}
    -
    -int
    -ACE_MT_CORBA_Handler::suspend (void)
    -{
    -  // Suspend the event handler listening for new CORBA requests to
    -  // dispatch.
    -  this->reactor ()->suspend_handler (this->pipe_.read_handle ());
    -
    -  // Suspend the daemon thread.
    -  this->thr_mgr ()->suspend_all ();
    -  return 0;
    -}
    -
    -int
    -ACE_MT_CORBA_Handler::resume (void)
    -{
    -  // Resume the event handler listening for new CORBA requests to
    -  // dispatch.
    -  this->reactor ()->resume_handler (this->pipe_.read_handle ());
    -
    -  // Resume the daemon thread.
    -  this->thr_mgr ()->resume_all ();
    -  return 0;
    -}
    -
    -ACE_MT_CORBA_Handler::ACE_MT_CORBA_Handler (void)
    -{
    -  ACE_TRACE ("ACE_MT_CORBA_Handler::ACE_MT_CORBA_Handler");
    -  this->thr_mgr (ACE_Thread_Manager::instance ());
    -
    -  int result = 0;
    -
    -  if (this->pipe_.open () == -1)
    -    result = -1;
    -  // Register one end of the pipe with the reactor with a READ mask.
    -  else if (this->reactor ()->register_handler
    -      (this->pipe_.read_handle (), this, ACE_Event_Handler::READ_MASK) == -1) 
    -    result = -1;
    -  // Create a new thread that processes events for the Orbix event
    -  // queue.
    -  else if (this->thr_mgr ()->spawn (ACE_THR_FUNC (ACE_MT_CORBA_Handler::process_events),
    -                                    0, THR_DETACHED | THR_NEW_LWP) == -1)
    -    result = -1;
    -  
    -  if (result == -1)
    -    {
    -      delete ACE_MT_CORBA_Handler::instance_;
    -      ACE_MT_CORBA_Handler::instance_ = 0;
    -    }
    -}
    -
    -void *
    -ACE_MT_CORBA_Handler::process_events (void *)
    -{
    -  ACE_TRACE ("ACE_MT_CORBA_Handler::process_events");
    -
    -  // Special knowlege, we "know" that we are dealing with a singleton
    -  // and that we are invoked in a context where the mutex controlling
    -  // instance creation is held, so by the time we get the mutex
    -  // the instance must exist.
    -  if (ACE_MT_CORBA_Handler::instance_ == 0)
    -    {
    -      ACE_MT (ACE_Thread_Mutex *lock =
    -        ACE_Managed_Object::get_preallocated_object
    -          (ACE_Object_Manager::ACE_MT_CORBA_HANDLER_LOCK);
    -        ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, *lock, 0));
    -
    -      ACE_ASSERT (ACE_MT_CORBA_Handler::instance_ != 0);
    -    }
    -
    -  ACE_Thread_Control t (ACE_MT_CORBA_Handler::instance_->thr_mgr ());
    -  
    -  // This thread only processes events.
    -  TRY {
    -    // it is OK to block
    -    ACE_CORBA_1 (Orbix.processEvents) (ACE_CORBA_1 (Orbix.INFINITE_TIMEOUT), IT_X);
    -  } CATCHANY {
    -    // An error occured calling processEvents () - output the error.
    -    cerr << IT_X << endl;
    -  } ENDTRY;
    -
    -  // Thread dies if we reach here : error occured in processEvents.
    -  return 0;
    -}
    -
    -int
    -ACE_MT_CORBA_Handler::inRequestPreMarshal (ACE_CORBA_1 (Request) &req,
    -                                           ACE_CORBA_1 (Environment) &IT_env)
    -{
    -  ACE_TRACE ("ACE_MT_CORBA_Handler::inRequestPreMarshal");
    -
    -  // Pump the request through the pipe.
    -  u_long request_addr = (u_long) &req;
    -
    -  ssize_t result = ACE::send (this->pipe_.write_handle (),
    -                              (const char *) &request_addr, 
    -                              sizeof request_addr);
    -
    -  if (result != sizeof request_addr)
    -    {
    -      // Don't continue with request
    -      return 0;
    -    }
    -
    -  // Everything is fine: we have delegated the work to a different
    -  // thread Tell Orbix we will dispatch the request later...
    -  return -1;
    -}
    -
    -int
    -ACE_MT_CORBA_Handler::handle_input (ACE_HANDLE)
    -{
    -  ACE_TRACE ("ACE_MT_CORBA_Handler::handle_input");
    -  ACE_CORBA_1 (Request) *req = 0;
    -
    -  u_long request_addr;
    -
    -  //  Read the request from the pipe.
    -  ssize_t result = ACE::recv (this->pipe_.read_handle (),
    -                              (char *) &request_addr, 
    -                              sizeof request_addr);
    -
    -  if (result != sizeof request_addr)
    -    // We are in trouble: bail out.
    -    return -1;
    -
    -  req = (ACE_CORBA_1 (Request) *) request_addr;
    -
    -  // Tell Orbix to dispatch the request.
    -  ACE_CORBA_1 (Orbix.continueThreadDispatch) (*req);
    -  return 0;
    -}
    -
    -ACE_MT_CORBA_Handler::~ACE_MT_CORBA_Handler (void)
    -{
    -  ACE_TRACE ("ACE_MT_CORBA_Handler::~ACE_MT_CORBA_Handler");
    -
    -  // Unregister one end of the pipe with the reactor 
    -  this->reactor ()->remove_handler 
    -    (this->pipe_.read_handle (),
    -     ACE_Event_Handler::READ_MASK | ACE_Event_Handler::DONT_CALL);
    -
    -  this->pipe_.close ();
    -
    -  ACE_MT_CORBA_Handler::instance_ = 0;
    -}
    -#endif /* ACE_HAS_MT_ORBIX */
    -#endif /* ACE_HAS_ORBIX */
    diff --git a/ace/CORBA_Handler.h b/ace/CORBA_Handler.h
    deleted file mode 100644
    index b973adaa73a..00000000000
    --- a/ace/CORBA_Handler.h
    +++ /dev/null
    @@ -1,254 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    CORBA_Handler.h
    -//
    -// = AUTHOR
    -//    Douglas C. Schmidt (schmidt@cs.wustl.edu) and
    -//    Irfan Pyarali (irfan@wuerl.wustl.edu).
    -//
    -// ============================================================================
    -
    -#ifndef ACE_CORBA_HANDLER_H
    -#define ACE_CORBA_HANDLER_H
    -
    -#include "ace/Service_Config.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Pipe.h"
    -
    -#if (defined (ACE_HAS_ORBIX) && (ACE_HAS_ORBIX != 0)) || (defined (ACE_HAS_MT_ORBIX) && (ACE_HAS_MT_ORBIX != 0))
    -#define EXCEPTIONS
    -#define WANT_ORBIX_FDS
    -#include /**/ 
    -// #include /**/ 
    -#undef EXCEPTIONS
    -#undef WANT_ORBIX_FDS
    -
    -class ACE_Export ACE_CORBA_Handler : public ACE_Service_Object
    -{
    -  // = TITLE
    -  //     Handle Orbix requests in conjunction with ACE.
    -  //
    -  // = DESCRIPTION
    -  //     Note, do *NOT* inherit from this class!  Instead, use the
    -  //      and  as
    -  //     Singletons.
    -public:
    -  // = Activation and deactivation methods.
    -
    -  virtual int activate_service (const char *service_name,
    -                                const char *marker_name = 0,
    -                                const char *service_location = 0);
    -  // Activate and register  with the Orbix daemon.  If
    -  //  and  are != 0 then do a "putit"
    -  // to register this service with orbixd.  This method also
    -  // increments the reference count of active services using the
    -  // ACE_ST_CORBA_Handler.
    -
    -  virtual int deactivate_service (const char *service_name = 0,
    -                                  const char *marker_name = 0);
    -  // Decrement the reference count and free up all the
    -  // resources if this is the last service to be using
    -  // the ACE_ST_CORBA_Handler...
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  ACE_CORBA_Handler (void);
    -  // Make this into an "abstract" class...
    -
    -  virtual ~ACE_CORBA_Handler (void);
    -  // Note virtual destructor...
    -
    -  virtual int register_service (const char *service_name,
    -                                const char *marker_name,
    -                                const char *service_location);
    -  // Register  by doing a "putit" to register the
    -  //  using the  at  with
    -  // orbixd.
    -
    -  virtual int remove_service (const char *service_name,
    -                              const char *marker_name = 0);
    -  // Register  by doing a "putit" to register
    -  //  using the  with orbixd.
    -
    -  ssize_t reference_count_;
    -  // Keep track of the number of active CORBA_Handlers.
    -
    -private:
    -  // = Disallow assignment and initialization.
    -  ACE_CORBA_Handler (const ACE_CORBA_Handler &rhs);
    -  const ACE_CORBA_Handler &operator= (const ACE_CORBA_Handler &rhs);
    -};
    -
    -class ACE_Export ACE_ST_CORBA_Handler : public ACE_CORBA_Handler
    -{
    -  // = TITLE
    -  //     Handle single-threaded Orbix requests in conjunction with the
    -  //     .
    -  // 
    -  // = DESCRIPTION
    -  //     You should NOT use this class unless you've got a VERY old
    -  //     version of Orbix that only supports single-threading.  If
    -  //     you're using a more recent version of Orbix use the
    -  //     .
    -public:
    -  // = Singleton access point.
    -  static ACE_CORBA_Handler *instance (void);
    -  // Returns a Singleton.
    -
    -  // = Demuxing hook.
    -  virtual int handle_input (ACE_HANDLE);
    -  // Process the next Orbix event.
    -
    -  // = Dynamic linking hooks.
    -  virtual int suspend (void);
    -  // Atomically suspend all the threads associated with the .
    -
    -  virtual int resume (void);
    -  // Atomically resume all the threads associated with the .
    -
    -  // = Iterations dictate # of  calls per-callback.
    -  size_t iterations (void);
    -  // Get the current iteration.
    -
    -  void iterations (size_t);
    -  // Set the current iteration.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  void get_orbix_descriptors (void);
    -  // Preinitialize any descriptors that Orbix is using.  This is
    -  // called in .
    -
    -  ACE_ST_CORBA_Handler (void);
    -  // Constructors (ensure Singleton...).
    -
    -  virtual ~ACE_ST_CORBA_Handler (void);
    -  // Destructor cleans up resources.
    -
    -  static void insert_handle (ACE_HANDLE);
    -  // Insert a descriptor into the ACE_Reactor that Orbix has just added.
    -
    -  static void remove_handle (ACE_HANDLE);
    -  // Remove a descriptor from the ACE_Reactor that Orbix has just deleted.
    -
    -  static void instance_cleaner (void *object, void *param);
    -  // Clean up the singleton at program rundown.
    -
    -  static ACE_ST_CORBA_Handler *instance_;
    -  // ACE_ST_CORBA_Handler is a singleton object.
    -
    -  size_t iterations_;
    -  // Number of iterations to process per  call.
    -
    -  // If the user has complete control of all Orbix callback processing and
    -  // really, really knows how to handle all of the involved interworkings,
    -  // they can set up to daisy-chain Orbix callbacks from this class to
    -  // other handlers established outside the control of this class. This is
    -  // an intrinsically dangerous thing to do, and is most often the wrong
    -  // thing to do. But if you must, set ACE_TAKEOVER_ORBIX_CALLBACKS in the
    -  // config.h file before including the platform's config file.
    -# if defined (ACE_TAKEOVER_ORBIX_CALLBACKS)
    -  static int set_callbacks_;
    -  static OrbixIOCallback previous_orbix_open_callback_;
    -  static OrbixIOCallback previous_orbix_close_callback_;
    -# endif /* ACE_TAKEOVER_ORBIX_CALLBACKS */
    -};
    -
    -#if defined (ACE_HAS_MT_ORBIX) && (ACE_HAS_MT_ORBIX != 0)
    -
    -class ACE_Export ACE_MT_CORBA_Handler : public ACE_CORBA_Handler, public ACE_CORBA_1 (ThreadFilter)
    -{
    -  // = TITLE
    -  //     Handle multi-threaded Orbix requests in conjunction with the
    -  //     .
    -  //
    -  // = DESCRIPTION
    -  //     If you are using MT-Orbix (which has been the default Orbix
    -  //     for years) you should use this class rather than
    -  //     .  See
    -  //
    -  //     www.cs.wustl.edu/~schmidt/COOTS-96.ps.gz
    -  //
    -  //     for an explanation of what this class does for Orbix.
    -public:
    -  // = Singleton access point.
    -  static ACE_CORBA_Handler *instance (void);
    -  // Returns a Singleton.
    -
    -  // = Demuxing hook.
    -  virtual int handle_input (ACE_HANDLE);
    -  // Process the next Orbix event.
    -
    -  // = Threading hook.
    -  void thr_mgr (ACE_Thread_Manager *tm);
    -  // Set the Thread_Manager used by ACE_MT_CORBA_Handler
    -
    -  ACE_Thread_Manager *thr_mgr (void) const;
    -  // Get the Thread_Manager used by ACE_MT_CORBA_Handler
    -
    -  // = Dynamic linking hooks.
    -  virtual int suspend (void);
    -  // Atomically suspend all the threads associated with the .
    -
    -  virtual int resume (void);
    -  // Atomically resume all the threads associated with the .
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  static void *process_events (void *);
    -  // function executed by new thread
    -
    -  ACE_MT_CORBA_Handler (void);
    -  // Constructors (ensure Singleton...).
    -
    -  virtual ~ACE_MT_CORBA_Handler (void);
    -  // Destructor cleans up resources.
    -
    -  virtual int inRequestPreMarshal (ACE_CORBA_1 (Request) &r,
    -                                   ACE_CORBA_1 (Environment) &IT_env = ACE_CORBA_1 (default_environment));
    -  // Take the incoming request and pass it to  through
    -  // the Reactor.
    -
    -  static ACE_MT_CORBA_Handler *instance_;
    -  // ACE_MT_CORBA_Handler is a singleton object.
    -
    -  ACE_Thread_Manager *thr_mgr_;
    -  // Event demultiplexor used by ACE_ST_CORBA_Handler.
    -
    -  ACE_Pipe pipe_;
    -  // Used to send CORBA::Requests through the server
    -};
    -#endif /* ACE_HAS_MT_ORBIX */
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/CORBA_Handler.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_HAS_ORBIX */
    -#endif /* ACE_CORBA_HANDLER_H */
    diff --git a/ace/CORBA_Handler.i b/ace/CORBA_Handler.i
    deleted file mode 100644
    index a1f3bfbd774..00000000000
    --- a/ace/CORBA_Handler.i
    +++ /dev/null
    @@ -1,40 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// CORBA_Handler.i
    -
    -#if defined (ACE_HAS_ORBIX) && (ACE_HAS_ORBIX != 0)
    -// = Set/get the number of iterations per processNextEvent() call.
    -
    -/* static */ 
    -ACE_INLINE size_t 
    -ACE_ST_CORBA_Handler::iterations (void)
    -{
    -  ACE_TRACE ("ACE_ST_CORBA_Handler::iterations");
    -  return this->iterations_;
    -}
    -
    -/* static */ 
    -ACE_INLINE void
    -ACE_ST_CORBA_Handler::iterations (size_t i)
    -{
    -  ACE_TRACE ("ACE_ST_CORBA_Handler::iterations");
    -  this->iterations_ = i;
    -}
    -
    -#if defined (ACE_HAS_MT_ORBIX) && (ACE_HAS_MT_ORBIX != 0)
    -ACE_INLINE void
    -ACE_MT_CORBA_Handler::thr_mgr (ACE_Thread_Manager *tm) 
    -{
    -  ACE_TRACE ("ACE_MT_CORBA_Handler::thr_mgr");
    -  this->thr_mgr_ = tm;
    -}
    -
    -ACE_INLINE ACE_Thread_Manager *
    -ACE_MT_CORBA_Handler::thr_mgr (void) const
    -{
    -  ACE_TRACE ("ACE_MT_CORBA_Handler::thr_mgr");
    -  return this->thr_mgr_;
    -}
    -#endif /* ACE_HAS_MT_ORBIX */
    -#endif /* ACE_HAS_ORBIX */
    diff --git a/ace/CORBA_Ref.cpp b/ace/CORBA_Ref.cpp
    deleted file mode 100644
    index 0c5834aad90..00000000000
    --- a/ace/CORBA_Ref.cpp
    +++ /dev/null
    @@ -1,89 +0,0 @@
    -// CORBA_Ref.cpp
    -// $Id$
    -
    -#if !defined (ACE_CORBA_REF_C)
    -#define ACE_CORBA_REF_C
    -
    -#define ACE_BUILD_DLL
    -#include "ace/CORBA_Ref.h"
    -#include "ace/Log_Msg.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/CORBA_Ref.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, CORBA_Ref, "$Id$")
    -
    -template
    -ACE_CORBA_Ref::ACE_CORBA_Ref (void)
    -  : ref_ (0)
    -{
    -  ACE_TRACE ("ACE_CORBA_Ref::ACE_CORBA_Ref");
    -}
    -
    -template
    -ACE_CORBA_Ref::ACE_CORBA_Ref (CORBA_REF *ref)
    -{
    -  ACE_TRACE ("ACE_CORBA_Ref::ACE_CORBA_Ref");
    -  if (ref != 0)
    -    ref_ = ref->_duplicate ();
    -  else
    -    ref_ = 0;
    -}
    -
    -template CORBA_REF *
    -ACE_CORBA_Ref::operator= (CORBA_REF *ref)
    -{
    -  ACE_TRACE ("ACE_CORBA_Ref::operator=");
    -  if (ref_ != 0)
    -    ref_->_release ();
    -  if (ref == 0)
    -    {
    -      ref_ = 0;
    -      return 0;
    -    }
    -  else
    -    return ref_ = ref->_duplicate ();
    -}
    -
    -template
    -ACE_CORBA_Ref::operator CORBA_REF * (void) const
    -{
    -  ACE_TRACE ("ACE_CORBA_Ref::operator CORBA_REF *");
    -  ACE_ASSERT (ref_ != 0);
    -  return ref_; 
    -}
    -
    -template CORBA_REF *
    -ACE_CORBA_Ref::operator-> (void) const
    -{
    -  ACE_TRACE ("ACE_CORBA_Ref::operator->");
    -  ACE_ASSERT (ref_ != 0);
    -  return ref_;
    -}
    -
    -template int
    -ACE_CORBA_Ref::operator== (CORBA_REF *rhs) const
    -{
    -  ACE_TRACE ("ACE_CORBA_Ref::operator==");
    -  // pointer comparison.
    -  return ref_ == rhs;
    -}
    -
    -template int
    -ACE_CORBA_Ref::operator!= (CORBA_REF *rhs) const
    -{
    -  ACE_TRACE ("ACE_CORBA_Ref::operator!=");
    -  // pointer comparison.
    -  return ref_ != rhs;
    -}
    -
    -template
    -ACE_CORBA_Ref::~ACE_CORBA_Ref ()
    -{
    -  ACE_TRACE ("ACE_CORBA_Ref::~ACE_CORBA_Ref");
    -  if (ref_ != 0)
    -    ref_->_release ();
    -}
    -
    -#endif /* ACE_CORBA_REF_C */
    diff --git a/ace/CORBA_Ref.h b/ace/CORBA_Ref.h
    deleted file mode 100644
    index 2b5f1a57f98..00000000000
    --- a/ace/CORBA_Ref.h
    +++ /dev/null
    @@ -1,85 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    CORBA_Ref.h
    -//
    -// = AUTHOR
    -//    Irfan Pyarali (irfan@wuerl.wustl.edu).
    -//    Tim Harrison (harrison@cs.wustl.edu)
    -//
    -// = DESCRIPTION
    -//    A wrapper for helping with Orbix object references.
    -//
    -// ============================================================================
    -
    -#ifndef ACE_CORBA_REF_H
    -#define ACE_CORBA_REF_H
    -
    -#include "ace/ACE.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -template 
    -class ACE_CORBA_Ref
    -{
    -  // = TITLE
    -  //    A wrapper for helping with Orbix object references.
    -  //
    -  // = DESCRIPTION
    -  //     is parameterized by the type of orbix object
    -  //    reference to be used.  The construtor, operator=, and the
    -  //    destructor of  perform implicit duplicates and
    -  //    releases in order to help make the use of Orbix object
    -  //    references transparent.
    -public:
    -  ACE_CORBA_Ref (void);
    -  // Null construction.
    -
    -  ACE_CORBA_Ref (CORBA_REF *ref);
    -  // Contruction with an orbix ref.
    -  // performs a .
    -
    -  CORBA_REF *operator= (CORBA_REF *ref);
    -  // Assignment performs a .
    -
    -  operator CORBA_REF *(void) const;
    -  // Type operator
    -
    -  CORBA_REF *operator-> (void) const;
    -  // Smart pointer to forward all CORBA_REF calls to the underlying
    -  // Orbix reference.
    -
    -  int operator== (CORBA_REF *) const;
    -  // Pointer comparison.
    -
    -  int operator!= (CORBA_REF *) const;
    -  // Pointer comparison.
    -
    -  ~ACE_CORBA_Ref (void);
    -  // Destruction: calls .
    -
    -private:
    -  CORBA_REF *ref_;
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/CORBA_Ref.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
    -#include "ace/CORBA_Ref.cpp"
    -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
    -#pragma implementation ("CORBA_Ref.cpp")
    -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
    -
    -#endif /* CORBA_REF_H */
    diff --git a/ace/CORBA_Ref.i b/ace/CORBA_Ref.i
    deleted file mode 100644
    index 3002ddac574..00000000000
    --- a/ace/CORBA_Ref.i
    +++ /dev/null
    @@ -1,4 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// CORBA_Ref.i
    diff --git a/ace/CORBA_macros.h b/ace/CORBA_macros.h
    deleted file mode 100644
    index e41d7dee878..00000000000
    --- a/ace/CORBA_macros.h
    +++ /dev/null
    @@ -1,411 +0,0 @@
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    CORBA_macros.h
    -//
    -// = DESCRIPTION
    -//   Writing code that is portable between platforms with or without
    -//   native C++ exceptions is hard.  The following macros offer some
    -//   help on this task, mostly oriented to making the ORB code and the
    -//   IDL generated code portable.
    -//
    -// = AUTHOR
    -//    Nanbor Wang 
    -//        Based on the original  implementation by
    -//        Aniruddha Gokhale  
    -//        Carlos O'Ryan  , et al.
    -// ============================================================================
    -
    -// Macros for handling CORBA exceptions.
    -
    -#ifndef ACE_CORBA_MACROS_H
    -#define ACE_CORBA_MACROS_H
    -
    -# if !defined (ACE_LACKS_PRAGMA_ONCE)
    -#   pragma once
    -# endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/OS.h"
    -
    -// All these macros assume the CORBA::Environment variable used to pass
    -// in/out the exception is call ACE_TRY_ENV.  Below is the name we use
    -// in TAO (The ACE ORB.)  Most other ORB's have their own naming
    -// convention.  You can redefine ACE_TRY_ENV to change the default name
    -// ACE_ADOPT_CORBA_ENV allows the use of non-standard name within a
    -// scope.
    -#if !defined (ACE_TRY_ENV)
    -# define ACE_TRY_ENV _ACE_CORBA_Environment_variable
    -#endif /* ACE_TRY_ENV */
    -
    -// This is the exception caught by ACE_CATCHANY.
    -#if !defined (ACE_ANY_EXCEPTION)
    -# define ACE_ANY_EXCEPTION ex
    -#endif /* ACE_ANY_EXCEPTION */
    -
    -// By default, if the compiler support native exception handling, assume
    -// CORBA also support native exception handling.  But it can be disabled
    -// by defining ACE_CORBA_HAS_EXCEPTIONS=0.
    -// If the compiler does not support exceptions handling, make sure native
    -// exception handling is disabled.
    -#if defined (ACE_HAS_EXCEPTIONS)
    -# if defined (ACE_CORBA_HAS_EXCEPTIONS)
    -#   if (ACE_CORBA_HAS_EXCEPTIONS == 0)
    -#     undef ACE_CORBA_HAS_EXCEPTIONS
    -#   endif /* ACE_CORBA_HAS_EXCEPTIONS == 0 */
    -# else /* !ACE_CORBA_HAS_EXCEPTIONS */
    -#   define ACE_CORBA_HAS_EXCEPTIONS
    -# endif /* ACE_CORBA_HAS_EXCEPTIONS */
    -#else
    -# if defined (ACE_CORBA_HAS_EXCEPTIONS)
    -#   undef ACE_CORBA_HAS_EXCEPTIONS
    -# endif /* ACE_CORBA_HAS_EXCEPTIONS */
    -#endif /* ACE_HAS_EXCEPTIONS */
    -
    -#define ACE_DECLARE_NEW_CORBA_ENV \
    -  CORBA::Environment ACE_TRY_ENV
    -
    -#if defined (ACE_CORBA_HAS_EXCEPTIONS)
    -// -----------------------------------------------------------------
    -# define ACE_ADOPT_CORBA_ENV(ENV) ACE_UNUSED_ARG(ENV)
    -
    -// No need to check.  Native exceptions handle the control
    -// flow automatically when an exception occurs.
    -# define ACE_CHECK
    -// Used then the function requires a return value.
    -# define ACE_CHECK_RETURN(RETV)
    -
    -// ACE_THROW_INT should not be used by the user.
    -# define ACE_THROW_INT(EXCEPTION) \
    -    do { \
    -      ACE_UNUSED_ARG(ACE_TRY_ENV); \
    -      throw EXCEPTION; \
    -    } while (0)
    -
    -// Throwing an exception is easy. These two macros should _NOT_ be
    -// used within try blocks.
    -# define ACE_THROW(EXCEPTION) \
    -    do { \
    -      ACE_UNUSED_ARG(ACE_TRY_ENV); \
    -      throw EXCEPTION; \
    -    } while (0)
    -
    -// Throwing an exception when the function reqires a return value.
    -# if defined (WIN32) || defined (__HP_aCC)
    -#   define ACE_THROW_RETURN(EXCEPTION, RETV) \
    -      do \
    -        { \
    -          ACE_UNUSED_ARG(ACE_TRY_ENV); \
    -          throw EXCEPTION; \
    -          return RETV; \
    -        } while (0)
    -# else /* WIN32 */
    -#   define ACE_THROW_RETURN(EXCEPTION,RETV) \
    -      do { \
    -        ACE_UNUSED_ARG(ACE_TRY_ENV); \
    -        throw EXCEPTION; \
    -      } while (0)
    -# endif /* WIN32 */
    -
    -// For compilers with native exceptions, we can simply use
    -// try to try. ;-)  do {} while (0) is required to avoid
    -// compilation warnings.
    -# define ACE_TRY \
    -   do \
    -     { \
    -       try \
    -         {
    -# define ACE_TRY_NEW_ENV \
    -   do \
    -     { \
    -       CORBA::Environment ACE_TRY_ENV; \
    -       try \
    -         {
    -# define ACE_TRY_EX(LABEL) \
    -   do \
    -     { \
    -       try \
    -         {
    -
    -// No need to check for exceptions within try block for compilers with
    -// native exceptions.
    -# define ACE_TRY_CHECK
    -# define ACE_TRY_CHECK_EX(LABEL)
    -
    -// Likewise, throwing exceptions within try blocks is easy.
    -# define ACE_TRY_THROW(EXCEPTION) throw EXCEPTION
    -# define ACE_TRY_THROW_EX(EXCEPTION,LABEL) throw EXCEPTION
    -
    -// Same thing for catch.
    -# define ACE_CATCH(EXCEPTION,VAR) \
    -         } \
    -       catch (EXCEPTION & VAR) \
    -         { \
    -           ACE_UNUSED_ARG (VAR);
    -# define ACE_CATCHANY \
    -       ACE_CATCH(CORBA::Exception, ACE_ANY_EXCEPTION)
    -# define ACE_CATCHALL \
    -         } \
    -       catch (...) \
    -         {
    -
    -// Rethrowing the exception from catch blocks.
    -# define ACE_RETHROW throw
    -
    -// Close the catch block.
    -# define ACE_ENDTRY \
    -         } \
    -     } while (0)
    -
    -#else /* ! ACE_CORBA_HAS_EXCEPTIONS */
    -// -----------------------------------------------------------------
    -// To handle compilers without native exceptions, things get a bit
    -// hairy.  Exceptions are simulated using CORBA::Environment.
    -// The trick here is to make sure the flow-of-control can simulate
    -// the case when native exceptions occur...
    -
    -# define ACE_ADOPT_CORBA_ENV(ENV) CORBA::Environment &ACE_TRY_ENV = ENV
    -
    -// Follow every statement that could throw exceptions with ACE_CHECK
    -// or ACE_CHECK_ENV.  These two macros should _NOT_ be used within
    -// try blocks.  Use ACE_TRY_CHECK or ACE_TRY_CHECK_EX instead.
    -# define ACE_CHECK \
    -    if (ACE_TRY_ENV . exception () != 0) \
    -      return
    -// When function requires a return value
    -# define ACE_CHECK_RETURN(RETV) \
    -    if (ACE_TRY_ENV . exception () != 0) \
    -      return RETV
    -
    -// ACE_THROW_INT should not be used by the user.
    -# define ACE_THROW_INT(EXCEPTION) ACE_TRY_ENV.exception (new EXCEPTION)
    -
    -// Throwing exceptions will inevitably cause an return from the current
    -// function.  These two macros should _NOT_ be used within try blocks.
    -// Use ACE_TRY_THROW or ACE_TRY_THROW_EX instead.
    -# define ACE_THROW(EXCEPTION) \
    -    do \
    -      { \
    -        ACE_TRY_ENV.exception (new EXCEPTION); \
    -        return; \
    -      } while (0)
    -
    -# define ACE_THROW_RETURN(EXCEPTION,RETV) \
    -    do \
    -      { \
    -        ACE_TRY_ENV.exception (new EXCEPTION); \
    -        return RETV; \
    -      } while (0)
    -
    -// ACE_TRY sets up flags to control program flow.  ACE_TRY_FLAG acts
    -// like a one-shot flip-flop.  When an exception occured (detect it
    -// using ACE_TRY_CHECK,) ACE_TRY_FLAG will be reset and the control
    -// goes back into ACE_TRY_LABEL.  Since ACE_TRY_FLAG is reset, the try
    -// block won't get executed again and the control proceeds to the following
    -// catch blocks.  ACE_EXECTION_NOT_CAUGHT flag is used to prevent
    -// catching an exception twice.  This macro assumes there's already an
    -// CORBA:;Environment variable ACE_TRY_ENV defined (which, should be
    -// the most usual case.)
    -# define ACE_TRY \
    -   do { \
    -     int ACE_TRY_FLAG = 1; \
    -     int ACE_EXCEPTION_NOT_CAUGHT = 1; \
    -   ACE_TRY_LABEL: \
    -     if (ACE_TRY_FLAG) \
    -       do {
    -
    -// ACE_TRY_NEW_ENV functions like the macro ACE_TRY but defines a
    -// new CORBA::Environment variable ACE_TRY_ENV.  It is most often
    -// used in the outer most function where no ACE_TRY_ENV is available.
    -# define ACE_TRY_NEW_ENV \
    -   do { \
    -     CORBA::Environment ACE_TRY_ENV;\
    -     int ACE_TRY_FLAG = 1; \
    -     int ACE_EXCEPTION_NOT_CAUGHT = 1; \
    -   ACE_TRY_LABEL: \
    -     if (ACE_TRY_FLAG) \
    -       do {
    -
    -// ACE_TRY_EX works exactly like ACE_TRY macro except the lable used
    -// in the try block is customizable to avoid name clashing.  It should
    -// be used when, nested try blocks or, multiple try blocks are required
    -// in the same function.
    -# define ACE_TRY_EX(LABEL) \
    -   do { \
    -     int ACE_TRY_FLAG = 1; \
    -     int ACE_EXCEPTION_NOT_CAUGHT = 1; \
    -   ACE_TRY_LABEL ## LABEL: \
    -     if (ACE_TRY_FLAG) \
    -       do {
    -
    -// Check for exceptions within try blocks.
    -# define ACE_TRY_CHECK \
    -    { \
    -      if (ACE_TRY_ENV.exception () != 0) \
    -        { \
    -          ACE_TRY_FLAG = 0; \
    -          goto ACE_TRY_LABEL; \
    -        } \
    -    }
    -
    -// Checking exception within EX try blocks.
    -# define ACE_TRY_CHECK_EX(LABEL) \
    -    { \
    -      if (ACE_TRY_ENV.exception () != 0) \
    -        { \
    -          ACE_TRY_FLAG = 0; \
    -          goto ACE_TRY_LABEL ## LABEL; \
    -        } \
    -    }
    -
    -// Throwing exception within TRY blocks.
    -# define ACE_TRY_THROW(EXCEPTION) \
    -    { \
    -      ACE_TRY_ENV.exception (new EXCEPTION); \
    -      ACE_TRY_FLAG = 0; \
    -      goto ACE_TRY_LABEL; \
    -    }
    -
    -# define ACE_TRY_THROW_EX(EXCEPTION,LABEL) \
    -    { \
    -      ACE_TRY_ENV.exception (new EXCEPTION); \
    -      ACE_TRY_FLAG = 0; \
    -      goto ACE_TRY_LABEL ## LABEL; \
    -    }
    -
    -// When exceptions occur or try block finishes execution without
    -// exception, control will continue in the catch block.  This macro
    -// first check if there's non-caught exception we are waiting for
    -// left.  It all the conditions met, we have caught an exception.
    -// It then reset the ACE_EXCEPTION_NOT_CAUGHT to prevent subsequent
    -// catch blocks catch the same exception again and extract out the
    -// underlying exception in the ACE_TRY_ENV.  We also make a copy
    -// of ACE_TRY_ENV in ACE_CAUGHT_ENV in case we want to rethrow the
    -// exception.  ACE_TRY_ENV is cleared out after the exception is
    -// caught so you should not use ACE_TRY_ENV within the catch block.
    -// (In fact, you should use the exception directly.)
    -# define ACE_CATCH(TYPE,VAR) \
    -     } while (0); \
    -   do \
    -     if (ACE_TRY_ENV.exception () != 0 && ACE_EXCEPTION_NOT_CAUGHT && \
    -       TYPE::_narrow(ACE_TRY_ENV.exception ()) != 0) \
    -       { \
    -         CORBA::Environment ACE_CAUGHT_ENV = ACE_TRY_ENV;\
    -         ACE_EXCEPTION_NOT_CAUGHT = 0; \
    -         TYPE &VAR = *TYPE::_narrow (ACE_CAUGHT_ENV.exception ()); \
    -         ACE_UNUSED_ARG (VAR); \
    -         ACE_TRY_ENV.clear ();
    -
    -// ACE_CATCHANY uses ACE_CATCH to catch all CORBA exceptions.
    -# define ACE_CATCHANY ACE_CATCH (CORBA::Exception, ACE_ANY_EXCEPTION)
    -
    -// Since there's no other exception for compilers without exception
    -// support, we simply catch all CORBA exceptions for ACE_CATCHALL.
    -# define ACE_CATCHALL ACE_CATCHANY
    -
    -// Rethrowing exception within catch blocks.  Notice that we depends
    -// on the ACE_CHECK/ACE_CHECK_RETURN following the ACE_ENDTRY to
    -// do the "Right Thing[TM]."
    -# define ACE_RETHROW \
    -    do \
    -      ACE_TRY_ENV = ACE_CAUGHT_ENV; \
    -    while (0)
    -
    -// Close the try block.  Notice that since exception may not get
    -// caught, and exceptions can also be rethrown from the catch block,
    -// it's always a good idea to follow ACE_ENDTRY with ACE_CHECK or
    -// ACE_TRY_CHECK (depending on the context.)
    -# define ACE_ENDTRY \
    -      } while (0); \
    -    } while (0)
    -
    -#endif /* ! ACE_CORBA_HAS_EXCEPTIONS */
    -
    -// ACE_HAS_EXCEPTIONS is not the same as ACE_NEW_THROWS_EXCEPTIONS.
    -#if defined(ACE_NEW_THROWS_EXCEPTIONS)
    -
    -#   define ACE_NEW_THROW_EX(POINTER,CONSTRUCTOR,EXCEPTION) \
    -     do { try { POINTER = new CONSTRUCTOR; } \
    -       catch (ACE_bad_alloc) { errno = ENOMEM; ACE_THROW_INT (EXCEPTION); } \
    -     } while (0)
    -// The following ACE_NEW_THROW* macros are to be deprecated soon.
    -// -------------------- Start Deprecated --------------------
    -#   define ACE_NEW_THROW(POINTER,CONSTRUCTOR,EXCEPTION) \
    -     do { try { POINTER = new CONSTRUCTOR; } \
    -       catch (ACE_bad_alloc) { errno = ENOMEM; TAO_THROW (EXCEPTION); } \
    -     } while (0)
    -#   define ACE_NEW_THROW_RETURN(POINTER,CONSTRUCTOR,EXCEPTION,RET_VAL) \
    -     do { try { POINTER = new CONSTRUCTOR; } \
    -        catch (ACE_bad_alloc) { errno = ENOMEM; TAO_THROW_RETURN (EXCEPTION,RET_VAL); } \
    -     } while (0)
    -#   define ACE_NEW_TRY_THROW(POINTER,CONSTRUCTOR,EXCEPTION) \
    -  do { try { POINTER = new CONSTRUCTOR; } \
    -       catch (ACE_bad_alloc) { errno = ENOMEM; TAO_TRY_THROW (EXCEPTION); } \
    -     } while (0)
    -// -------------------- End Deprecated --------------------
    -
    -#else
    -
    -#   define ACE_NEW_THROW_EX(POINTER,CONSTRUCTOR,EXCEPTION) \
    -     do { POINTER = new CONSTRUCTOR; \
    -       if (POINTER == 0) { errno = ENOMEM; ACE_THROW_INT (EXCEPTION); } \
    -     } while (0)
    -// The following ACE_NEW_THROW* macros are to be deprecated soon.
    -// -------------------- Start Deprecated --------------------
    -#   define ACE_NEW_THROW(POINTER,CONSTRUCTOR,EXCEPTION) \
    -     do { POINTER = new CONSTRUCTOR; \
    -       if (POINTER == 0) { errno = ENOMEM; TAO_THROW (EXCEPTION); } \
    -     } while (0)
    -#   define ACE_NEW_THROW_RETURN(POINTER,CONSTRUCTOR,EXCEPTION,RET_VAL) \
    -     do { POINTER = new CONSTRUCTOR; \
    -        if (POINTER == 0)\
    -        { errno = ENOMEM; TAO_THROW_RETURN (EXCEPTION,RET_VAL); } \
    -     } while (0)
    -#   define ACE_NEW_TRY_THROW(POINTER,CONSTRUCTOR,EXCEPTION) \
    -     do { POINTER = new CONSTRUCTOR; \
    -       if (POINTER == 0) { errno = ENOMEM; TAO_TRY_THROW (EXCEPTION); } \
    -     } while (0)
    -// -------------------- End Deprecated --------------------
    -
    -#endif /* ACE_NEW_THROWS_EXCEPTIONS */
    -
    -# define ACE_GUARD_THROW_EX(MUTEX,OBJ,LOCK,EXCEPTION) \
    -  ACE_Guard< MUTEX > OBJ (LOCK); \
    -    if (OBJ.locked () == 0) ACE_THROW_INT (EXCEPTION);
    -
    -# define ACE_READ_GUARD_THROW_EX(MUTEX,OBJ,LOCK,EXCEPTION) \
    -  ACE_Read_Guard< MUTEX > OBJ (LOCK); \
    -    if (OBJ.locked () == 0) ACE_THROW_INT (EXCEPTION);
    -
    -# define ACE_WRITE_GUARD_THROW_EX(MUTEX,OBJ,LOCK,EXCEPTION) \
    -  ACE_Write_Guard< MUTEX > OBJ (LOCK); \
    -    if (OBJ.locked () == 0) ACE_THROW_INT (EXCEPTION);
    -
    -// The following ACE_GUARD_THROW* macros are to be deprecated soon.
    -// -------------------- Start Deprecated --------------------
    -# define ACE_GUARD_THROW(MUTEX,OBJ,LOCK,EXCEPTION) \
    -  ACE_Guard< MUTEX > OBJ (LOCK); \
    -    if (OBJ.locked () == 0) TAO_THROW (EXCEPTION);
    -# define ACE_GUARD_THROW_RETURN(MUTEX,OBJ,LOCK,EXCEPTION,RETURN) \
    -  ACE_Guard< MUTEX > OBJ (LOCK); \
    -    if (OBJ.locked () == 0) TAO_THROW_RETURN (EXCEPTION, RETURN);
    -// -------------------- End Deprecation --------------------
    -
    -// ============================================================
    -
    -// Print out a TAO exception.  This is not CORBA compliant.
    -# define ACE_PRINT_TAO_EXCEPTION(EX,INFO) \
    -  EX._tao_print_exception (INFO)
    -
    -// Print out a CORBA exception.  There is not portable way to
    -// dump a CORBA exception.  If you are using other ORB implementation,
    -// redefine the macro to get what you want.
    -# if !defined ACE_PRINT_EXCEPTION
    -#   define ACE_PRINT_EXCEPTION(EX,INFO) ACE_PRINT_TAO_EXCEPTION(EX,INFO)
    -# endif /* ACE_PRINT_EXCEPTION */
    -
    -#endif /* ACE_CORBA_MACROS_H */
    diff --git a/ace/Cache_Map_Manager_T.cpp b/ace/Cache_Map_Manager_T.cpp
    deleted file mode 100644
    index 6d7d0770773..00000000000
    --- a/ace/Cache_Map_Manager_T.cpp
    +++ /dev/null
    @@ -1,422 +0,0 @@
    -// $Id$
    -
    -#ifndef ACE_CACHE_MAP_MANAGER_T_C
    -#define ACE_CACHE_MAP_MANAGER_T_C
    -
    -#define ACE_BUILD_DLL
    -
    -#include "ace/Cache_Map_Manager_T.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -#define ACE_LACKS_PRAGMA_ONCE
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Malloc.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/Cache_Map_Manager_T.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, Cache_Map_Manager_T, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Cache_Map_Manager)
    -
    -#if !defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Cache_Map_Iterator)
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Cache_Map_Reverse_Iterator)
    -
    -#define ACE_T1 class KEY, class VALUE, class MAP, class ITERATOR_IMPL, class REVERSE_ITERATOR_IMPL, class CACHING_STRATEGY, class ATTRIBUTES
    -#define ACE_T2 KEY, VALUE, MAP, ITERATOR_IMPL, REVERSE_ITERATOR_IMPL, CACHING_STRATEGY, ATTRIBUTES
    -
    -#else
    -
    -#define ACE_T1 class KEY, class VALUE, class MAP, class CACHING_STRATEGY, class ATTRIBUTES
    -#define ACE_T2 KEY, VALUE, MAP, CACHING_STRATEGY, ATTRIBUTES
    -
    -#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES */
    -
    -template 
    -ACE_Cache_Map_Manager::ACE_Cache_Map_Manager (CACHING_STRATEGY &caching_s,
    -                                                      size_t size,
    -                                                      ACE_Allocator *alloc)
    -  : caching_strategy_ (caching_s)
    -{
    -  if (this->open (size, alloc) == -1)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT ("%p\n"),
    -                ASYS_TEXT ("ACE_Cache_Map_Manager::ACE_Cache_Map_Manager")));
    -
    -}
    -
    -template 
    -ACE_Cache_Map_Manager::~ACE_Cache_Map_Manager (void)
    -{
    -  this->close ();
    -}
    -
    -template  int
    -ACE_Cache_Map_Manager::open (size_t length,
    -                                     ACE_Allocator *alloc)
    -{
    -  return this->map_.open (length,
    -                          alloc);
    -}
    -
    -template  int
    -ACE_Cache_Map_Manager::close (void)
    -{
    -  return this->map_.close ();
    -}
    -
    -template  int
    -ACE_Cache_Map_Manager::bind (const KEY &key,
    -                                     const VALUE &value)
    -{
    -  // Insert an entry which has the  and the  which
    -  // is the combination of the  and the attributes of the
    -  // caching strategy.
    -  CACHE_VALUE cache_value (value,
    -                           this->caching_strategy_.attributes ());
    -
    -  int bind_result = this->map_.bind (key,
    -                                     cache_value);
    -
    -  if (bind_result != -1)
    -    {
    -
    -      int result = this->caching_strategy_.notify_bind (bind_result,
    -                                                        cache_value.second ());
    -
    -      if (result == -1)
    -        {
    -
    -          this->map_.unbind (key);
    -
    -          // Unless the notification goes thru the bind operation is
    -          // not complete.
    -          bind_result = -1;
    -
    -        }
    -
    -    }
    -
    -  return bind_result;
    -}
    -
    -
    -template  int
    -ACE_Cache_Map_Manager::rebind (const KEY &key,
    -                                       const VALUE &value)
    -{
    -  CACHE_VALUE cache_value (value,
    -                           this->caching_strategy_.attributes ());
    -
    -  int rebind_result = this->map_.rebind (key,
    -                                         cache_value);
    -
    -  if (rebind_result != -1)
    -    {
    -
    -      int result = this->caching_strategy_.notify_rebind (rebind_result,
    -                                                          cache_value.second ());
    -
    -      if (result == -1)
    -        {
    -
    -          // Make sure the unbind operation is done only when the
    -          // notification fails after a bind which is denoted by
    -          // rebind_result = 0
    -          if (rebind_result == 0)
    -            this->map_.unbind (key);
    -
    -          // Unless the notification goes thru the rebind operation is
    -          // not complete.
    -          rebind_result = -1;
    -
    -        }
    -
    -    }
    -
    -  return rebind_result;
    -}
    -
    -
    -template  int
    -ACE_Cache_Map_Manager::rebind (const KEY &key,
    -                                       const VALUE &value,
    -                                       VALUE &old_value)
    -{
    -  CACHE_VALUE cache_value (value,
    -                           this->caching_strategy_.attributes ());
    -
    -  CACHE_VALUE old_cache_value (old_value,
    -                               this->caching_strategy_.attributes ());
    -
    -  int rebind_result = this->map_.rebind (key,
    -                                         cache_value,
    -                                         old_cache_value);
    -
    -  if (rebind_result != -1)
    -    {
    -
    -      int result = this->caching_strategy_.notify_rebind (rebind_result,
    -                                                          cache_value.second ());
    -
    -      if (result == -1)
    -        {
    -
    -          // Make sure the unbind operation is done only when the
    -          // notification fails after a bind which is denoted by
    -          // rebind_result = 0
    -          if (rebind_result == 0)
    -            this->map_.unbind (key);
    -
    -          // Unless the notification goes thru the rebind operation is
    -          // not complete.
    -          rebind_result = -1;
    -
    -        }
    -      else
    -        {
    -
    -          old_value = old_cache_value.first ();
    -
    -        }
    -
    -    }
    -
    -  return rebind_result;
    -}
    -
    -template  int
    -ACE_Cache_Map_Manager::rebind (const KEY &key,
    -                                       const VALUE &value,
    -                                       KEY &old_key,
    -                                       VALUE &old_value)
    -{
    -  CACHE_VALUE cache_value (value,
    -                           this->caching_strategy_.attributes ());
    -
    -  CACHE_VALUE old_cache_value (old_value,
    -                               this->caching_strategy_.attributes ());
    -
    -  int rebind_result = this->map_.rebind (key,
    -                                         cache_value,
    -                                         old_key,
    -                                         old_cache_value);
    -
    -  if (rebind_result != -1)
    -    {
    -
    -      int result = this->caching_strategy_.notify_rebind (rebind_result,
    -                                                          cache_value.second ());
    -
    -      if (result == -1)
    -        {
    -
    -          // Make sure the unbind operation is done only when the
    -          // notification fails after a bind which is denoted by
    -          // rebind_result = 0
    -          if (rebind_result == 0)
    -            this->map_.unbind (key);
    -
    -          // Unless the notification goes thru the rebind operation is
    -          // not complete.
    -          rebind_result = -1;
    -
    -        }
    -      else
    -        {
    -
    -          old_value = old_cache_value.first ();
    -
    -        }
    -
    -    }
    -
    -  return rebind_result;
    -}
    -
    -template  int
    -ACE_Cache_Map_Manager::trybind (const KEY &key,
    -                                        VALUE &value)
    -{
    -  CACHE_VALUE cache_value (value,
    -                           this->caching_strategy_.attributes ());
    -
    -  int trybind_result = this->map_.trybind (key,
    -                                           cache_value);
    -
    -  if (trybind_result != -1)
    -    {
    -
    -      int result = this->caching_strategy_.notify_trybind (trybind_result,
    -                                                           cache_value.second ());
    -
    -      if (result == -1)
    -        {
    -
    -          // If the entry has got inserted into the map, it is removed
    -          // due to failure.
    -          if (trybind_result == 0)
    -            this->map_.unbind (key);
    -
    -          trybind_result = -1;
    -
    -        }
    -      else
    -        {
    -
    -          // If an attempt is made to bind an existing entry the value
    -          // is overwritten with the value from the map.
    -          if (trybind_result == 1)
    -            value = cache_value.first ();
    -
    -        }
    -
    -    }
    -
    -  return trybind_result;
    -}
    -
    -template  int
    -ACE_Cache_Map_Manager::find (const KEY &key,
    -                                     VALUE &value)
    -{
    -  // Lookup the key and populate the .
    -  CACHE_VALUE cache_value;
    -
    -  int find_result = this->map_.find (key,
    -                                     cache_value);
    -
    -  if (find_result != -1)
    -    {
    -
    -      int result = this->caching_strategy_.notify_find (find_result,
    -                                                        cache_value.second ());
    -
    -      // Unless the find and notification operations go thru, this
    -      // method is not successful.
    -      if (result == -1)
    -        find_result = -1;
    -      else
    -        {
    -
    -          // Since the  has now changed after the
    -          // notification, we need to bind to the map again.
    -          int rebind_result = this->map_.rebind (key,
    -                                                 cache_value);
    -          if (rebind_result == -1)
    -            find_result = -1;
    -          else
    -            value = cache_value.first ();
    -
    -        }
    -
    -    }
    -
    -  return find_result;
    -}
    -
    -template  int
    -ACE_Cache_Map_Manager::find (const KEY &key)
    -{
    -  // Lookup the key and populate the .
    -  CACHE_VALUE cache_value;
    -
    -  int find_result = this->map_.find (key,
    -                                     cache_value);
    -
    -  if (find_result != -1)
    -    {
    -
    -      int result = this->caching_strategy_.notify_find (find_result,
    -                                                        cache_value.second ());
    -
    -      // Unless the find and notification operations go thru, this
    -      // method is not successful.
    -      if (result == -1)
    -        find_result = -1;
    -      else
    -        {
    -
    -          // Since the  has now changed after the
    -          // notification, we need to bind to the map again.
    -          int rebind_result = this->map_.rebind (key,
    -                                                 cache_value);
    -
    -          if (rebind_result == -1)
    -            find_result = -1;
    -
    -        }
    -
    -    }
    -
    -  return find_result;
    -}
    -
    -
    -template  int
    -ACE_Cache_Map_Manager::unbind (const KEY &key)
    -{
    -  // Remove the entry from the cache.
    -  CACHE_VALUE cache_value;
    -
    -  int unbind_result = this->map_.unbind (key,
    -                                         cache_value);
    -
    -  if (unbind_result != -1)
    -    {
    -
    -      int result = this->caching_strategy_.notify_unbind (unbind_result,
    -                                                          cache_value.second ());
    -
    -      if (result == -1)
    -        unbind_result = -1;
    -
    -    }
    -
    -  return unbind_result;
    -}
    -
    -template  int
    -ACE_Cache_Map_Manager::unbind (const KEY &key,
    -                                       VALUE &value)
    -{
    -  // Remove the entry from the cache.
    -  CACHE_VALUE cache_value;
    -
    -  int unbind_result = this->map_.unbind (key,
    -                                         cache_value);
    -
    -  if (unbind_result != -1)
    -    {
    -
    -      int result = this->caching_strategy_.notify_unbind (unbind_result,
    -                                                          cache_value.second ());
    -
    -      if (result == -1)
    -        unbind_result = -1;
    -      else
    -        value = cache_value.first ();
    -
    -    }
    -
    -  return unbind_result;
    -}
    -
    -
    -template  void
    -ACE_Cache_Map_Manager::dump (void) const
    -{
    -  this->map_.dump ();
    -
    -  this->caching_strategy_.dump ();
    -}
    -
    -#undef ACE_T1
    -#undef ACE_T2
    -
    -#endif /* ACE_CACHE_MAP_MANAGER_T_C */
    diff --git a/ace/Cache_Map_Manager_T.h b/ace/Cache_Map_Manager_T.h
    deleted file mode 100644
    index 3db249f2d9a..00000000000
    --- a/ace/Cache_Map_Manager_T.h
    +++ /dev/null
    @@ -1,397 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Cache_Map_Manager.h
    -//
    -// = AUTHOR
    -//    Kirthika Parameswaran 
    -//
    -// ============================================================================
    -
    -#ifndef CACHE_MAP_MANAGER_T_H
    -#define CACHE_MAP_MANAGER_T_H
    -
    -#include "ace/OS.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -#define  ACE_LACKS_PRAGMA_ONCE
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Pair_T.h"
    -
    -// Forward declaration.
    -class ACE_Allocator;
    -
    -#if !defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
    -
    -#define ACE_Cache_Map_Iterator ACMI
    -#define ACE_Cache_Map_Reverse_Iterator ACMRI
    -
    -template 
    -class ACE_Cache_Map_Iterator;
    -
    -template 
    -class ACE_Cache_Map_Reverse_Iterator;
    -
    -#define ACE_T1 class KEY, class VALUE, class MAP, class ITERATOR_IMPL, class REVERSE_ITERATOR_IMPL, class CACHING_STRATEGY, class ATTRIBUTES
    -#define ACE_T2 KEY, VALUE, MAP, ITERATOR_IMPL, REVERSE_ITERATOR_IMPL, CACHING_STRATEGY, ATTRIBUTES
    -
    -#else
    -
    -#define ACE_T1 class KEY, class VALUE, class MAP, class CACHING_STRATEGY, class ATTRIBUTES
    -#define ACE_T2 KEY, VALUE, MAP, CACHING_STRATEGY, ATTRIBUTES
    -
    -#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES */
    -
    -// For linkers that cant grok long names.
    -#define ACE_Cache_Map_Manager ACMM
    -
    -template 
    -class ACE_Cache_Map_Manager
    -{
    -  // = TITLE
    -  //     Defines a abstraction that will purge entries from a map.
    -  //
    -  // = DESCRIPTION
    -  //     The  will manage the map it contains
    -  //     and provide purging on demand from the map. The strategy for
    -  //     caching is decided by the user and provided to the Cache
    -  //     Manager.  The Cache Manager acts as a agent and communicates
    -  //     between the Map and the Strategy for purging entries from the
    -  //     map.
    -  //
    -  //     No locking mechanism provided since locking at this level
    -  //     isn't efficient.  Locking has to be provided by the
    -  //     application.
    -public:
    -
    -  // = Traits.
    -  typedef KEY key_type;
    -  typedef VALUE mapped_type;
    -  typedef MAP map_type;
    -  typedef CACHING_STRATEGY caching_strategy_type;
    -
    -#if !defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
    -
    -  typedef ITERATOR_IMPL ITERATOR_IMPLEMENTATION;
    -  typedef REVERSE_ITERATOR_IMPL REVERSE_ITERATOR_IMPLEMENTATION;
    -
    -  friend class ACE_Cache_Map_Iterator;
    -  friend class ACE_Cache_Map_Reverse_Iterator;
    -
    -  // = ACE-style iterator typedefs.
    -  typedef ACE_Cache_Map_Iterator
    -          ITERATOR;
    -  typedef ACE_Cache_Map_Reverse_Iterator
    -          REVERSE_ITERATOR;
    -
    -   // = STL-style iterator typedefs.
    -  typedef ITERATOR
    -          iterator;
    -  typedef REVERSE_ITERATOR
    -          reverse_iterator;
    -
    -#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES */
    -
    -  typedef ACE_Pair CACHE_VALUE;
    -  // The actual value mapped to the key in the map. The 
    -  // are used by the strategy and is transparent to the user of this
    -  // class.
    -
    -  // = Initialization and termination methods.
    -
    -  ACE_Cache_Map_Manager (CACHING_STRATEGY &caching_strategy,
    -                         size_t size = ACE_DEFAULT_MAP_SIZE,
    -                         ACE_Allocator *alloc = 0);
    -  // Initialize a  with  and
    -  //  entries.
    -
    -  virtual ~ACE_Cache_Map_Manager (void);
    -  // Close down a  and release dynamically allocated
    -  // resources.
    -
    -  int open (size_t length = ACE_DEFAULT_MAP_SIZE,
    -            ACE_Allocator *alloc = 0);
    -  // Initialize a cache with size .
    -
    -  int close (void);
    -  // Close down a cache and release dynamically allocated resources.
    -
    -  int bind (const KEY &key,
    -            const VALUE &value);
    -  // Associate  with .  If  is already in the MAP
    -  // then the ENTRY is not changed.  Returns 0 if a new entry is bound
    -  // successfully, returns 1 if an attempt is made to bind an existing
    -  // entry, and returns -1 if failures occur.
    -
    -  int find (const KEY &key,
    -            VALUE &value);
    -  // Loopkup entry in the cache.
    -
    -  int find (const KEY &key);
    -  // Is  in the cache?
    -
    -  int rebind (const KEY &key,
    -              const VALUE &value);
    -  // Reassociate the  with . If the  already exists
    -  // in the cache then returns 1, on a new bind returns 0 and returns
    -  // -1 in case of any failures.
    -
    -  int rebind (const KEY &key,
    -              const VALUE &value,
    -              VALUE &old_value);
    -  // Reassociate  with , storing the old value into the
    -  // "out" parameter .  The function fails if  is not
    -  // in the cache for caches that do not allow user specified keys.
    -  // However, for caches that allow user specified keys, if the key is
    -  // not in the cache, a new / association is created.
    -
    -  int rebind (const KEY &key,
    -              const VALUE &value,
    -              KEY &old_key,
    -              VALUE &old_value);
    -  // Reassociate  with , storing the old key and value
    -  // into the "out" parameters  and .  The
    -  // function fails if  is not in the cache for caches that do
    -  // not allow user specified keys.  However, for caches that allow
    -  // user specified keys, if the key is not in the cache, a new
    -  // / association is created.
    -
    -  int trybind (const KEY &key,
    -               VALUE &value);
    -  // Associate  with  if and only if  is not in the
    -  // cache.  If  is already in the cache, then the 
    -  // parameter is overwritten with the existing value in the
    -  // cache. Returns 0 if a new / association is created.
    -  // Returns 1 if an attempt is made to bind an existing entry.  This
    -  // function fails for maps that do not allow user specified keys.
    -
    -  int unbind (const KEY &key);
    -  // Remove  from the cache.
    -
    -  int unbind (const KEY &key,
    -              VALUE &value);
    -  // Remove  from the cache, and return the  associated with
    -  // .
    -
    -  int purge (void);
    -  // Remove entries from the cache depending upon the strategy.
    -
    -  size_t current_size (void) const;
    -  // Return the current size of the cache.
    -
    -  size_t total_size (void) const;
    -  // Return the total size of the cache.
    -
    -  void dump (void) const;
    -  // Dumps the state of the object.
    -
    -#if !defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
    -
    -  // = STL styled iterator factory functions.
    -
    -  ITERATOR begin (void);
    -  ITERATOR end (void);
    -  // Return forward iterator.
    -
    -  REVERSE_ITERATOR rbegin (void);
    -  REVERSE_ITERATOR rend (void);
    -  // Return reverse iterator.
    -
    -#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES */
    -
    -  MAP &map (void);
    -  // The map managed by the Cache_Map_Manager.
    -
    -  CACHING_STRATEGY &caching_strategy (void);
    -  // The caching strategy used on the cache.
    -
    -protected:
    -
    -  MAP map_;
    -  // The underlying map which needs to be cached.
    -
    -  CACHING_STRATEGY &caching_strategy_;
    -  // The strategy to be followed for caching entries in the map.
    -
    -private:
    -
    -  // = Disallow these operations.
    -  ACE_UNIMPLEMENTED_FUNC (void operator= (const ACE_Cache_Map_Manager &))
    -  ACE_UNIMPLEMENTED_FUNC (ACE_Cache_Map_Manager (const ACE_Cache_Map_Manager &))
    -
    -};
    -
    -#if !defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
    -
    -template 
    -class ACE_Cache_Map_Iterator
    -{
    -  // = TITLE
    -  //     Defines a iterator for the Cache_Map_Manager.
    -  //
    -  // = DESCRIPTION
    -  //     Implementation to be provided by the iterator of the map
    -  //     managed by the ACE_Cache_Map_Manager.
    -
    -public:
    -
    -  // = Traits.
    -  typedef ACE_Reference_Pair
    -          value_type;
    -  typedef ACE_Pair 
    -          CACHE_VALUE;
    -  // The actual value mapped to the key in the cache. The 
    -  // are used by the strategy and is transperant to the cache user.
    -
    -  // = Initialisation and termination methods.
    -
    -  ACE_Cache_Map_Iterator (const IMPLEMENTATION &iterator_impl);
    -
    -  ACE_Cache_Map_Iterator (const ACE_Cache_Map_Iterator &rhs);
    -  // Copy constructor.
    -
    -  virtual ~ACE_Cache_Map_Iterator (void);
    -
    -  // = Iteration methods.
    -
    -  ACE_Cache_Map_Iterator  &operator=
    -      (const ACE_Cache_Map_Iterator &rhs);
    -  // assignment operator.
    -
    -  int operator== (const ACE_Cache_Map_Iterator &rhs) const;
    -  int operator!= (const ACE_Cache_Map_Iterator &rhs) const;
    -  // Comparision operators.
    -
    -  ACE_Reference_Pair operator* (void) const;
    -  // Returns a reference to the internal element  is pointing
    -  // to.
    -
    -  // = STL styled iteration, compare, and reference functions.
    -
    -  ACE_Cache_Map_Iterator &operator++ (void);
    -  // Prefix advance
    -
    -  ACE_Cache_Map_Iterator operator++ (int);
    -  // Postfix advance.
    -
    -  ACE_Cache_Map_Iterator &operator-- (void);
    -  // Prefix reverse.
    -
    -  ACE_Cache_Map_Iterator operator-- (int);
    -  // Postfix reverse.
    -
    -  IMPLEMENTATION &iterator_implementation (void);
    -  // Returns the iterator of the internal map in the custody of the
    -  // Cache_Map_Manager.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  IMPLEMENTATION iterator_implementation_;
    -  // The actual iterator which iterates internally on the map
    -  // belonging to the Cache_Map_Manager.
    -};
    -
    -template 
    -class ACE_Cache_Map_Reverse_Iterator
    -{
    -  // = TITLE
    -  //     Defines a reverse iterator for the Cache_Map_Manager.
    -  //
    -  // = DESCRIPTION
    -  //     Implementation to be provided by the reverse iterator of the map
    -  //     managed by thr Cache_Map_manager.
    -public:
    -
    -  // = Traits.
    -  typedef ACE_Reference_Pair value_type;
    -  typedef ACE_Pair  CACHE_VALUE;
    -  // The actual value mapped to the key in the cache. The 
    -  // are used by the strategy and is transperant to the cache user.
    -
    -  // = Initialisation and termination methods.
    -
    -  ACE_Cache_Map_Reverse_Iterator (const REVERSE_IMPLEMENTATION &iterator_impl);
    -
    -  ACE_Cache_Map_Reverse_Iterator (const ACE_Cache_Map_Reverse_Iterator &rhs);
    -  // Copy constructor.
    -
    -  ~ACE_Cache_Map_Reverse_Iterator (void);
    -
    -  // = Iteration methods.
    -
    -  ACE_Cache_Map_Reverse_Iterator  &operator=
    -     (const ACE_Cache_Map_Reverse_Iterator &rhs);
    -  // Assignment operator.
    -
    -  int operator== (const ACE_Cache_Map_Reverse_Iterator &rhs) const;
    -  int operator!= (const ACE_Cache_Map_Reverse_Iterator &rhs) const;
    -  // Comparision operators.
    -
    -  ACE_Reference_Pair operator* (void) const;
    -  // Returns a reference to the internal element  is pointing
    -  // to.
    -
    -  // = STL styled iteration, compare, and reference functions.
    -
    -  ACE_Cache_Map_Reverse_Iterator &operator++ (void);
    -  // Prefix advance
    -
    -  ACE_Cache_Map_Reverse_Iterator operator++ (int);
    -  // Postfix advance.
    -
    -  ACE_Cache_Map_Reverse_Iterator &operator-- (void);
    -  // Prefix reverse.
    -
    -  ACE_Cache_Map_Reverse_Iterator operator-- (int);
    -  // Postfix reverse.
    -
    -  REVERSE_IMPLEMENTATION &iterator_implementation (void);
    -  // Returns the iterator of the internal map in the custody of the
    -  // Cache_Map_Manager.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  REVERSE_IMPLEMENTATION reverse_iterator_implementation_;
    -  // The actual iterator which iterates internally on the map
    -  // belonging to the Cache_Map_Manager.
    -};
    -
    -#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES */
    -
    -#undef ACE_T1
    -#undef ACE_T2
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Cache_Map_Manager_T.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
    -#include "ace/Cache_Map_Manager_T.cpp"
    -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
    -#pragma implementation ("Cache_Map_Manager_T.cpp")
    -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
    -
    -#endif /* CACHE_MAP_MANAGER_T_H */
    diff --git a/ace/Cache_Map_Manager_T.i b/ace/Cache_Map_Manager_T.i
    deleted file mode 100644
    index ab90786fe1b..00000000000
    --- a/ace/Cache_Map_Manager_T.i
    +++ /dev/null
    @@ -1,273 +0,0 @@
    -/* -*- C++ -*- */
    -//$Id$
    -
    -#if !defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
    -
    -#define ACE_T1 class KEY, class VALUE, class MAP, class ITERATOR_IMPL, class REVERSE_ITERATOR_IMPL, class CACHING_STRATEGY, class ATTRIBUTES
    -#define ACE_T2 KEY, VALUE, MAP, ITERATOR_IMPL, REVERSE_ITERATOR_IMPL, CACHING_STRATEGY, ATTRIBUTES
    -
    -#else
    -
    -#define ACE_T1 class KEY, class VALUE, class MAP, class CACHING_STRATEGY, class ATTRIBUTES
    -#define ACE_T2 KEY, VALUE, MAP, CACHING_STRATEGY, ATTRIBUTES
    -
    -#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES */
    -
    -template  ACE_INLINE int
    -ACE_Cache_Map_Manager::purge (void)
    -{
    -  return this->caching_strategy ().caching_utility ().clear_cache (this->map_,
    -                                                                   this->caching_strategy ().purge_percent ());
    -}
    -
    -template  ACE_INLINE size_t
    -ACE_Cache_Map_Manager::current_size (void) const
    -{
    -  return this->map_.current_size ();
    -}
    -
    -template  ACE_INLINE size_t
    -ACE_Cache_Map_Manager::total_size (void) const
    -{
    -  return this->map_.total_size ();
    -}
    -
    -template  ACE_INLINE MAP &
    -ACE_Cache_Map_Manager::map (void)
    -{
    -  return this->map_;
    -}
    -
    -template  ACE_INLINE CACHING_STRATEGY &
    -ACE_Cache_Map_Manager::caching_strategy (void)
    -{
    -  return this->caching_strategy_;
    -}
    -
    -#if !defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
    -
    -template  ACE_INLINE ACE_Cache_Map_Iterator
    -ACE_Cache_Map_Manager::begin (void)
    -{
    -  return ITERATOR (this->map_.begin ());
    -}
    -
    -template  ACE_INLINE ACE_Cache_Map_Iterator
    -ACE_Cache_Map_Manager::end (void)
    -{
    -  return ITERATOR (this->map_.end ());
    -}
    -
    -template  ACE_INLINE ACE_Cache_Map_Reverse_Iterator
    -ACE_Cache_Map_Manager::rbegin (void)
    -{
    -  return REVERSE_ITERATOR (this->map_.rbegin ());
    -}
    -template  ACE_INLINE ACE_Cache_Map_Reverse_Iterator
    -ACE_Cache_Map_Manager::rend (void)
    -{
    -  return REVERSE_ITERATOR (this->map_.rend ());
    -}
    -
    -#undef ACE_T1
    -#undef ACE_T2
    -
    -////////////////////////////////////////////////////////////////////////////////
    -
    -#define ACE_T1 class KEY, class VALUE, class IMPLEMENTATION, class CACHING_STRATEGY, class ATTRIBUTES
    -#define ACE_T2 KEY, VALUE, IMPLEMENTATION, CACHING_STRATEGY, ATTRIBUTES
    -
    -template  ACE_INLINE
    -ACE_Cache_Map_Iterator::ACE_Cache_Map_Iterator (const ACE_Cache_Map_Iterator  &rhs)
    -  : iterator_implementation_ (rhs.iterator_implementation_)
    -{
    -}
    -
    -template  ACE_INLINE
    -ACE_Cache_Map_Iterator::~ACE_Cache_Map_Iterator (void)
    -{
    -}
    -
    -template  ACE_INLINE ACE_Cache_Map_Iterator &
    -ACE_Cache_Map_Iterator::operator= (const ACE_Cache_Map_Iterator &rhs)
    -{
    -  this->iterator_implementation_ = rhs.iterator_implementation_;
    -  return *this;
    -}
    -
    -template  ACE_INLINE int
    -ACE_Cache_Map_Iterator::operator== (const ACE_Cache_Map_Iterator &rhs) const
    -{
    -  return this->iterator_implementation_ == rhs.iterator_implementation_;
    -}
    -
    -template  ACE_INLINE int
    -ACE_Cache_Map_Iterator::operator!= (const ACE_Cache_Map_Iterator &rhs) const
    -{
    -  return this->iterator_implementation_ != rhs.iterator_implementation_;
    -}
    -
    -template  ACE_INLINE ACE_Reference_Pair
    -ACE_Cache_Map_Iterator::operator* (void) const
    -{
    -  value_type retn ((*this->iterator_implementation_).ext_id_,
    -                   (*this->iterator_implementation_).int_id_.first ());
    -  return retn;
    -}
    -
    -template  ACE_INLINE
    -ACE_Cache_Map_Iterator &
    -ACE_Cache_Map_Iterator::operator++ (void)
    -{
    -  ++this->iterator_implementation_;
    -  return *this;
    -}
    -
    -template  ACE_INLINE
    -ACE_Cache_Map_Iterator
    -ACE_Cache_Map_Iterator::operator++ (int)
    -{
    -  ACE_Cache_Map_Iterator retn = *this;
    -  ++this->iterator_implementation_;
    -  return retn;
    -}
    -
    -template  ACE_INLINE
    -ACE_Cache_Map_Iterator &
    -ACE_Cache_Map_Iterator::operator-- (void)
    -{
    -  --this->iterator_implementation_;
    -  return *this;
    -}
    -
    -template  ACE_INLINE
    -ACE_Cache_Map_Iterator
    -ACE_Cache_Map_Iterator::operator-- (int)
    -{
    -  ACE_Cache_Map_Iterator retn = *this;
    -  --this->iterator_implementation_;
    -  return retn;
    -}
    -
    -
    -template  ACE_INLINE void
    -ACE_Cache_Map_Iterator::dump (void) const
    -{
    -  this->iterator_implementation_.dump ();
    -}
    -
    -template  ACE_INLINE
    -ACE_Cache_Map_Iterator::ACE_Cache_Map_Iterator (const IMPLEMENTATION &iterator_impl)
    -  : iterator_implementation_ (iterator_impl)
    -{
    -}
    -
    -template  ACE_INLINE IMPLEMENTATION &
    -ACE_Cache_Map_Iterator::iterator_implementation (void)
    -{
    -  return this->iterator_implementation_;
    -}
    -
    -#undef ACE_T1
    -#undef ACE_T2
    -
    -////////////////////////////////////////////////////////////////////////////////
    -
    -#define ACE_T1 class KEY, class VALUE, class REVERSE_IMPLEMENTATION, class CACHING_STRATEGY, class ATTRIBUTES
    -#define ACE_T2 KEY, VALUE, REVERSE_IMPLEMENTATION, CACHING_STRATEGY, ATTRIBUTES
    -
    -template  ACE_INLINE
    -ACE_Cache_Map_Reverse_Iterator::ACE_Cache_Map_Reverse_Iterator (const ACE_Cache_Map_Reverse_Iterator  &rhs)
    -  : reverse_iterator_implementation_ (rhs.reverse_iterator_implementation_)
    -{
    -}
    -
    -template  ACE_INLINE
    -ACE_Cache_Map_Reverse_Iterator::~ACE_Cache_Map_Reverse_Iterator (void)
    -{
    -}
    -
    -template  ACE_INLINE ACE_Cache_Map_Reverse_Iterator &
    -ACE_Cache_Map_Reverse_Iterator::operator= (const ACE_Cache_Map_Reverse_Iterator &rhs)
    -{
    -  this->reverse_iterator_implementation_ = rhs.reverse_iterator_implementation_;
    -  return *this;
    -}
    -
    -template  ACE_INLINE int
    -ACE_Cache_Map_Reverse_Iterator::operator== (const ACE_Cache_Map_Reverse_Iterator &rhs) const
    -{
    -  return this->reverse_iterator_implementation_ == rhs.reverse_iterator_implementation_;
    -}
    -
    -template  ACE_INLINE int
    -ACE_Cache_Map_Reverse_Iterator::operator!= (const ACE_Cache_Map_Reverse_Iterator &rhs) const
    -{
    -  return this->reverse_iterator_implementation_ != rhs.reverse_iterator_implementation_;
    -}
    -
    -template  ACE_INLINE ACE_Reference_Pair
    -ACE_Cache_Map_Reverse_Iterator::operator* (void) const
    -{
    -  value_type retv ((*this->reverse_iterator_implementation_).ext_id_,
    -                   (*this->reverse_iterator_implementation_).int_id_.first ());
    -  return retv;
    -}
    -
    -template  ACE_INLINE
    -ACE_Cache_Map_Reverse_Iterator &
    -ACE_Cache_Map_Reverse_Iterator::operator++ (void)
    -{
    -  ++this->reverse_iterator_implementation_;
    -  return *this;
    -}
    -
    -template  ACE_INLINE
    -ACE_Cache_Map_Reverse_Iterator
    -ACE_Cache_Map_Reverse_Iterator::operator++ (int)
    -{
    -  ACE_Cache_Map_Reverse_Iterator retn = *this;
    -  ++this->reverse_iterator_implementation_;
    -  return retn;
    -}
    -
    -template  ACE_INLINE
    -ACE_Cache_Map_Reverse_Iterator &
    -ACE_Cache_Map_Reverse_Iterator::operator-- (void)
    -{
    -  --this->reverse_iterator_implementation_;
    -  return *this;
    -}
    -
    -template  ACE_INLINE
    -ACE_Cache_Map_Reverse_Iterator
    -ACE_Cache_Map_Reverse_Iterator::operator-- (int)
    -{
    -  ACE_Cache_Map_Reverse_Iterator retn = *this;
    -  --this->reverse_iterator_implementation_;
    -  return retn;
    -}
    -
    -
    -template  ACE_INLINE void
    -ACE_Cache_Map_Reverse_Iterator::dump (void) const
    -{
    -  this->reverse_iterator_implementation_.dump ();
    -}
    -
    -template  ACE_INLINE
    -ACE_Cache_Map_Reverse_Iterator::ACE_Cache_Map_Reverse_Iterator (const REVERSE_IMPLEMENTATION &iterator_impl)
    -  : reverse_iterator_implementation_(iterator_impl)
    -{
    -}
    -
    -template  ACE_INLINE REVERSE_IMPLEMENTATION &
    -ACE_Cache_Map_Reverse_Iterator::iterator_implementation (void)
    -{
    -  return this->reverse_iterator_implementation_;
    -}
    -
    -#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES */
    -
    -#undef ACE_T1
    -#undef ACE_T2
    diff --git a/ace/Cached_Connect_Strategy_T.cpp b/ace/Cached_Connect_Strategy_T.cpp
    deleted file mode 100644
    index c20a4b3a80e..00000000000
    --- a/ace/Cached_Connect_Strategy_T.cpp
    +++ /dev/null
    @@ -1,522 +0,0 @@
    -//$Id$
    -
    -#ifndef CACHED_CONNECT_STRATEGY_T_C
    -#define CACHED_CONNECT_STRATEGY_T_C
    -
    -#define ACE_BUILD_DLL
    -
    -#include "ace/Cached_Connect_Strategy_T.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -#define ACE_LACKS_PRAGMA_ONCE
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/ACE.h"
    -#include "ace/Service_Repository.h"
    -#include "ace/Synch.h"
    -#include "ace/Service_Types.h"
    -#include "ace/Thread_Manager.h"
    -#include "ace/WFMO_Reactor.h"
    -#include "ace/Pair_T.h"
    -
    -#if defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/Cached_Connect_Strategy_T.i"
    -#endif /* ACE_LACKS_INLINE_FUNCTIONS */
    -
    -ACE_RCSID(ace, Cached_Connect_Strategy_T, "$Id$")
    -
    -#define ACE_T1 class SVC_HANDLER, ACE_PEER_CONNECTOR_1, class CACHING_STRATEGY, class ATTRIBUTES, class MUTEX
    -#define ACE_T2 SVC_HANDLER, ACE_PEER_CONNECTOR_2, CACHING_STRATEGY, ATTRIBUTES, MUTEX
    -
    -template 
    -ACE_Cached_Connect_Strategy_Ex::ACE_Cached_Connect_Strategy_Ex
    -(CACHING_STRATEGY &caching_s,
    - ACE_Creation_Strategy *cre_s,
    - ACE_Concurrency_Strategy *con_s,
    - ACE_Recycling_Strategy *rec_s,
    - MUTEX *lock,
    - int delete_lock)
    -  : CCSBASE (cre_s, con_s, rec_s, lock, delete_lock),
    -    connection_cache_ (caching_s)
    -{
    -  if (this->open (cre_s, con_s, rec_s) == -1)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT ("%p\n"),
    -                ASYS_TEXT ("ACE_Cached_Connect_Strategy_Ex\n")));
    -}
    -
    -template 
    -ACE_Cached_Connect_Strategy_Ex::~ACE_Cached_Connect_Strategy_Ex (void)
    -{
    -#if defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
    -  cleanup ();
    -#else 
    -  // Close down all cached service handlers.
    -  for (ACE_TYPENAME CONNECTION_CACHE::ITERATOR iter = this->connection_cache_.begin ();
    -       iter != this->connection_cache_.end ();
    -       ++iter)
    -    {
    -      if ((*iter).second () != 0)
    -        {
    -          (*iter).second ()->recycler (0, 0);
    -          (*iter).second ()->close ();
    -        }
    -    }
    -#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES */
    -}
    -
    -template  int
    -ACE_Cached_Connect_Strategy_Ex::check_hint_i
    -(SVC_HANDLER *&sh,
    - const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    - ACE_Time_Value *timeout,
    - const ACE_PEER_CONNECTOR_ADDR &local_addr,
    - int reuse_addr,
    - int flags,
    - int perms,
    - ACE_Hash_Map_Entry, ACE_Pair > *&entry,
    - int &found)
    -{
    -  ACE_UNUSED_ARG (remote_addr);
    -  ACE_UNUSED_ARG (timeout);
    -  ACE_UNUSED_ARG (local_addr);
    -  ACE_UNUSED_ARG (reuse_addr);
    -  ACE_UNUSED_ARG (flags);
    -  ACE_UNUSED_ARG (perms);
    -
    -  found = 0;
    -
    -  // Get the recycling act for the svc_handler
    -  CONNECTION_CACHE_ENTRY *possible_entry = (CONNECTION_CACHE_ENTRY *) sh->recycling_act ();
    -
    -  // Check to see if the hint svc_handler has been closed down
    -  if (possible_entry->ext_id_.recycle_state () == ACE_RECYCLABLE_CLOSED)
    -    {
    -      // If close, decrement refcount
    -      if (possible_entry->ext_id_.decrement () == 0)
    -        {
    -          // If refcount goes to zero, close down the svc_handler
    -          possible_entry->int_id_.first ()->recycler (0, 0);
    -          possible_entry->int_id_.first ()->close ();
    -          this->purge_i (possible_entry);
    -        }
    -
    -      // Hint not successful
    -      found = 0;
    -
    -      // Reset hint
    -      sh = 0;
    -    }
    -
    -  // If hint is not closed, see if it is connected to the correct
    -  // address and is recyclable
    -  else if ((possible_entry->ext_id_.recycle_state () == ACE_RECYCLABLE_IDLE_AND_PURGABLE ||
    -            possible_entry->ext_id_.recycle_state () == ACE_RECYCLABLE_IDLE_BUT_NOT_PURGABLE) &&
    -           possible_entry->ext_id_.subject () == remote_addr)
    -    {
    -      // Hint successful
    -      found = 1;
    -
    -      // Tell the  that it should prepare itself for
    -      // being recycled.
    -      this->prepare_for_recycling (sh);
    -
    -      //
    -      // Update the caching attributes directly since we don't do a
    -      // find() on the cache map.
    -      //
    -
    -      // Indicates successful find.
    -      int find_result = 0;
    -
    -      int result = this->caching_strategy ().notify_find (find_result,
    -                                                          possible_entry->int_id_.second ());
    -
    -      if (result == -1)
    -        return result;
    -    }
    -  else
    -    {
    -      // This hint will not be used.
    -      possible_entry->ext_id_.decrement ();
    -
    -      // Hint not successful
    -      found = 0;
    -
    -      // If  is not connected to the correct address or is busy,
    -      // we will not use it.
    -      sh = 0;
    -    }
    -
    -  if (found)
    -    entry = possible_entry;
    -
    -  return 0;
    -}
    -
    -template  int
    -ACE_Cached_Connect_Strategy_Ex::find_or_create_svc_handler_i
    -(SVC_HANDLER *&sh,
    - const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    - ACE_Time_Value *timeout,
    - const ACE_PEER_CONNECTOR_ADDR &local_addr,
    - int reuse_addr,
    - int flags,
    - int perms,
    - ACE_Hash_Map_Entry, ACE_Pair > *&entry,
    - int &found)
    -{
    -  REFCOUNTED_HASH_RECYCLABLE_ADDRESS search_addr (remote_addr);
    -
    -  // Try to find the address in the cache.  Only if we don't find it
    -  // do we create a new  and connect it with the server.
    -  if (this->find (search_addr, entry) == -1)
    -    {
    -      // Set the flag
    -      found = 0;
    -
    -      // Create a new svc_handler
    -      if (this->make_svc_handler (sh) == -1)
    -        return -1;
    -
    -      // Connect using the svc_handler.
    -      if (this->cached_connect (sh,
    -                                remote_addr,
    -                                timeout,
    -                                local_addr,
    -                                reuse_addr,
    -                                flags,
    -                                perms) == -1)
    -        {
    -          return -1;
    -        }
    -      else
    -        {
    -          // Insert the new SVC_HANDLER instance into the cache.
    -          if (this->connection_cache_.bind (search_addr,
    -                                            sh,
    -                                            entry) == -1)
    -            return -1;
    -
    -          // Set the recycler and the recycling act
    -          this->assign_recycler (sh, this, entry);
    -        }
    -    }
    -  else // We found a cached svc_handler.
    -    {
    -      // Set the flag
    -      found = 1;
    -
    -      // Get the cached 
    -      sh = entry->int_id_.first ();
    -
    -      // Tell the  that it should prepare itself for
    -      // being recycled.
    -      this->prepare_for_recycling (sh);
    -    }
    -
    -  return 0;
    -
    -}
    -
    -template  int
    -ACE_Cached_Connect_Strategy_Ex::cached_connect (SVC_HANDLER *&sh,
    -                                                        const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    -                                                        ACE_Time_Value *timeout,
    -                                                        const ACE_PEER_CONNECTOR_ADDR &local_addr,
    -                                                        int reuse_addr,
    -                                                        int flags,
    -                                                        int perms)
    -{
    -  // Actively establish the connection.  This is a timed blocking
    -  // connect.
    -  if (this->new_connection (sh,
    -                            remote_addr,
    -                            timeout,
    -                            local_addr,
    -                            reuse_addr,
    -                            flags,
    -                            perms) == -1)
    -    {
    -      // If connect() failed because of timeouts, we have to reject
    -      // the connection entirely. This is necessary since currently
    -      // there is no way for the non-blocking connects to complete and
    -      // for the  to notify the cache of the completion of
    -      // connect().
    -
    -      if (errno == EWOULDBLOCK)
    -        errno = ENOTSUP;
    -      else if (ACE::out_of_handles (errno))
    -        {
    -          // If the connect failed due to the process running out of
    -          // file descriptors then, auto_purging of some connections
    -          // are done from the CONNECTION_CACHE. This frees the
    -          // descriptors which get used in the connect process and
    -          // hence the same method is called again!
    -          if (this->purge_connections () == -1)
    -            return -1;
    -
    -          // Try connecting again.
    -          if (this->new_connection (sh,
    -                                    remote_addr,
    -                                    timeout,
    -                                    local_addr,
    -                                    reuse_addr,
    -                                    flags,
    -                                    perms) == -1)
    -            {
    -              if (errno == EWOULDBLOCK)
    -                errno = ENOTSUP;
    -              return -1;
    -            }
    -        }
    -      else
    -        {
    -          return -1;
    -        }
    -    }
    -
    -  return 0;
    -
    -}
    -
    -
    -template  int
    -ACE_Cached_Connect_Strategy_Ex::connect_svc_handler_i
    -(SVC_HANDLER *&sh,
    - const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    - ACE_Time_Value *timeout,
    - const ACE_PEER_CONNECTOR_ADDR &local_addr,
    - int reuse_addr,
    - int flags,
    - int perms,
    - int& found)
    -{
    -  CONNECTION_CACHE_ENTRY *entry = 0;
    -
    -  // Check if the user passed a hint svc_handler
    -  if (sh != 0)
    -    {
    -
    -      int result = this->check_hint_i (sh,
    -                                       remote_addr,
    -                                       timeout,
    -                                       local_addr,
    -                                       reuse_addr,
    -                                       flags,
    -                                       perms,
    -                                       entry,
    -                                       found);
    -      if (result != 0)
    -        return result;
    -    }
    -
    -  // If not found
    -  if (!found)
    -    {
    -      int result = this->find_or_create_svc_handler_i (sh,
    -                                                       remote_addr,
    -                                                       timeout,
    -                                                       local_addr,
    -                                                       reuse_addr,
    -                                                       flags,
    -                                                       perms,
    -                                                       entry,
    -                                                       found);
    -
    -      if (result != 0)
    -        return result;
    -
    -    }
    -
    -  // For all successful cases: mark the  in the cache
    -  // as being .  Therefore recyclable is BUSY.
    -  entry->ext_id_.recycle_state (ACE_RECYCLABLE_BUSY);
    -
    -  // And increment the refcount
    -  entry->ext_id_.increment ();
    -
    -  return 0;
    -}
    -
    -
    -template  int
    -ACE_Cached_Connect_Strategy_Ex::cache_i (const void *recycling_act)
    -{
    -  // The wonders and perils of ACT
    -  CONNECTION_CACHE_ENTRY *entry = (CONNECTION_CACHE_ENTRY *) recycling_act;
    -
    -  // Mark the  in the cache as not being .
    -  // Therefore recyclable is IDLE.
    -  entry->ext_id_.recycle_state (ACE_RECYCLABLE_IDLE_AND_PURGABLE);
    -
    -  return 0;
    -}
    -
    -template int
    -ACE_Cached_Connect_Strategy_Ex::recycle_state_i (const void *recycling_act,
    -                                                         ACE_Recyclable_State new_state)
    -{
    -  // The wonders and perils of ACT
    -  CONNECTION_CACHE_ENTRY *entry = (CONNECTION_CACHE_ENTRY *) recycling_act;
    -
    -  // Mark the  in the cache as not being .
    -  // Therefore recyclable is IDLE.
    -  entry->ext_id_.recycle_state (new_state);
    -
    -  return 0;
    -}
    -
    -template ACE_Recyclable_State
    -ACE_Cached_Connect_Strategy_Ex::recycle_state_i (const void *recycling_act) const
    -{
    -  // The wonders and perils of ACT
    -  CONNECTION_CACHE_ENTRY *entry = (CONNECTION_CACHE_ENTRY *) recycling_act;
    -
    -  // Mark the  in the cache as not being .
    -  // Therefore recyclable is IDLE.
    -  return entry->ext_id_.recycle_state ();
    -}
    -
    -template  int
    -ACE_Cached_Connect_Strategy_Ex::purge_i (const void *recycling_act)
    -{
    -  // The wonders and perils of ACT
    -  CONNECTION_CACHE_ENTRY *entry = (CONNECTION_CACHE_ENTRY *) recycling_act;
    -
    -  return this->connection_cache_.unbind (entry);
    -}
    -
    -
    -template  int
    -ACE_Cached_Connect_Strategy_Ex::mark_as_closed_i (const void *recycling_act)
    -{
    -  // The wonders and perils of ACT
    -  CONNECTION_CACHE_ENTRY *entry = (CONNECTION_CACHE_ENTRY *) recycling_act;
    -
    -  // Mark the  in the cache as CLOSED.
    -  entry->ext_id_.recycle_state (ACE_RECYCLABLE_CLOSED);
    -
    -  return 0;
    -}
    -
    -template  int
    -ACE_Cached_Connect_Strategy_Ex::cleanup_hint_i (const void *recycling_act)
    -{
    -  // The wonders and perils of ACT
    -  CONNECTION_CACHE_ENTRY *entry = (CONNECTION_CACHE_ENTRY *) recycling_act;
    -
    -  // Decrement the refcount on the .
    -  int refcount = entry->ext_id_.decrement ();
    -
    -  // If the svc_handler state is closed and the refcount == 0, call
    -  // close() on svc_handler.
    -  if (entry->ext_id_.recycle_state () == ACE_RECYCLABLE_CLOSED &&
    -      refcount == 0)
    -    {
    -      entry->int_id_.first ()->recycler (0, 0);
    -      entry->int_id_.first ()->close ();
    -      this->purge_i (entry);
    -    }
    -
    -  return 0;
    -}
    -
    -template  int
    -ACE_Cached_Connect_Strategy_Ex::purge_connections (void)
    -{
    -  return this->connection_cache_.purge ();
    -}
    -
    -template  CACHING_STRATEGY &
    -ACE_Cached_Connect_Strategy_Ex::caching_strategy (void)
    -{
    -  return this->connection_cache_.caching_strategy ();
    -}
    -
    -template  int
    -ACE_Cached_Connect_Strategy_Ex::find (ACE_Refcounted_Hash_Recyclable &search_addr,
    -                                              ACE_Hash_Map_Entry, ACE_Pair > *&entry)
    -{
    -  typedef ACE_Hash_Map_Bucket_Iterator,
    -                                       ACE_Hash,
    -                                       ACE_Equal_To,
    -                                       ACE_Null_Mutex>
    -    CONNECTION_CACHE_BUCKET_ITERATOR;
    -
    -  CONNECTION_CACHE_BUCKET_ITERATOR iterator (this->connection_cache_.map (),
    -                                             search_addr);
    -
    -  CONNECTION_CACHE_BUCKET_ITERATOR end (this->connection_cache_.map (),
    -                                        search_addr,
    -                                        1);
    -
    -  for (;
    -       iterator != end;
    -       ++iterator)
    -    {
    -      REFCOUNTED_HASH_RECYCLABLE_ADDRESS &addr = (*iterator).ext_id_;
    -
    -      if (addr.recycle_state () != ACE_RECYCLABLE_IDLE_AND_PURGABLE &&
    -          addr.recycle_state () != ACE_RECYCLABLE_IDLE_BUT_NOT_PURGABLE)
    -        continue;
    -
    -      if (addr.subject () != search_addr.subject ())
    -        continue;
    -
    -      entry = &(*iterator);
    -
    -      //
    -      // Update the caching attributes directly since we don't do a
    -      // find() on the cache map.
    -      //
    -
    -      // Indicates successful find.
    -      int find_result = 0;
    -
    -      int result = this->caching_strategy ().notify_find (find_result,
    -                                                          entry->int_id_.second ());
    -
    -      if (result == -1)
    -        return result;
    -
    -      return 0;
    -    }
    -
    -  return -1;
    -}
    -
    -#if defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
    -template  void
    -ACE_Cached_Connect_Strategy_Ex::cleanup (void)
    -{
    -  typedef ACE_Hash_Map_Iterator_Ex,
    -                                   ACE_Hash,
    -                                   ACE_Equal_To,
    -                                   ACE_Null_Mutex>
    -    CONNECTION_MAP_ITERATOR;
    -
    -  CONNECTION_MAP_ITERATOR end = this->connection_cache_.map ().end ();
    -  CONNECTION_MAP_ITERATOR iter = this->connection_cache_.map ().begin ();
    -
    -  for (;
    -       iter != end;
    -       ++iter)
    -    {
    -      if ((*iter).int_id_.first () != 0)
    -        {
    -          (*iter).int_id_.first ()->recycler (0, 0);
    -          (*iter).int_id_.first ()->close ();
    -        }
    -    }
    -}
    -#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES */
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Cached_Connect_Strategy_Ex)
    -
    -#undef ACE_T1
    -#undef ACE_T2
    -
    -#endif /* CACHED_CONNECT_STRATEGY_T_C */
    diff --git a/ace/Cached_Connect_Strategy_T.h b/ace/Cached_Connect_Strategy_T.h
    deleted file mode 100644
    index a178132a1a7..00000000000
    --- a/ace/Cached_Connect_Strategy_T.h
    +++ /dev/null
    @@ -1,191 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Cached_Connect_Strategy_T.h
    -//
    -// = AUTHOR
    -//    Kirthika Parameswaran 
    -//
    -// ============================================================================
    -
    -#ifndef CACHED_CONNECT_STRATEGY_T_H
    -#define CACHED_CONNECT_STRATEGY_T_H
    -
    -#include "ace/OS.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -#define  ACE_LACKS_PRAGMA_ONCE
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Strategies_T.h"
    -#include "ace/Hash_Cache_Map_Manager_T.h"
    -#include "ace/Caching_Strategies_T.h"
    -#include "ace/Functor_T.h"
    -#include "ace/Pair_T.h"
    -#include "ace/Synch.h"
    -
    -// For linkers which cant grok long names...
    -#define ACE_Cached_Connect_Strategy_Ex ACCSE
    -
    -template 
    -class ACE_Cached_Connect_Strategy_Ex : public ACE_Cached_Connect_Strategy
    -{
    -  // = TITLE
    -  //     A connection strategy which caches connections to peers
    -  //     (represented by  instances), thereby allowing
    -  //     subsequent re-use of unused, but available, connections.
    -  //
    -  // = DESCRIPTION
    -  //      is intended to be used as a
    -  //     plug-in connection strategy for .
    -  //     It's added value is re-use of established connections and
    -  //     tweaking the role of the cache as per the caching strategy.
    -
    -public:
    -
    -  ACE_Cached_Connect_Strategy_Ex (CACHING_STRATEGY &caching_s,
    -                                  ACE_Creation_Strategy *cre_s = 0,
    -                                  ACE_Concurrency_Strategy *con_s = 0,
    -                                  ACE_Recycling_Strategy *rec_s = 0,
    -                                  MUTEX *lock = 0,
    -                                  int delete_lock = 0);
    -  // Constructor
    -
    -  virtual ~ACE_Cached_Connect_Strategy_Ex (void);
    -  // Destructor
    -
    -  virtual int purge_connections (void);
    -  // Explicit purging of connection entries from the connection cache.
    -
    -  virtual int mark_as_closed_i (const void *recycling_act);
    -  // Mark as closed (non-locking version). This is used during the cleanup of the
    -  // connections purged.
    -
    -  // = Typedefs for managing the map
    -  typedef ACE_Refcounted_Hash_Recyclable
    -          REFCOUNTED_HASH_RECYCLABLE_ADDRESS;
    -  typedef ACE_Hash_Cache_Map_Manager,
    -                                     ACE_Equal_To,
    -                                     CACHING_STRATEGY,
    -                                     ATTRIBUTES>
    -          CONNECTION_CACHE;
    -  typedef ACE_TYPENAME CONNECTION_CACHE::CACHE_ENTRY
    -          CONNECTION_CACHE_ENTRY;
    -  typedef ACE_TYPENAME CONNECTION_CACHE::key_type
    -          KEY;
    -  typedef ACE_TYPENAME CONNECTION_CACHE::mapped_type
    -          VALUE;
    -
    -  // = Cleanup of the svc_handler.
    -  typedef ACE_Recyclable_Handler_Cleanup_Strategy,
    -                                                  ACE_Hash_Map_Manager_Ex,
    -                                                                          ACE_Hash,
    -                                                                          ACE_Equal_To,
    -                                                                          MUTEX> >
    -          CLEANUP_STRATEGY;
    -
    -  typedef ACE_Cached_Connect_Strategy
    -          CCSBASE;
    -
    -  // = Accessor.
    -  CACHING_STRATEGY &caching_strategy (void);
    -
    -protected:
    -
    -  int find (ACE_Refcounted_Hash_Recyclable &search_addr,
    -            ACE_Hash_Map_Entry, ACE_Pair > *&entry);
    -  // Find an idle handle.
    -
    -  virtual int purge_i (const void *recycling_act);
    -  // Remove from cache (non-locking version).
    -
    -  virtual int cache_i (const void *recycling_act);
    -  // Add to cache (non-locking version).
    -
    -  virtual int recycle_state_i (const void *recycling_act,
    -                               ACE_Recyclable_State new_state);
    -  virtual ACE_Recyclable_State recycle_state_i (const void *recycling_act) const;
    -  // Get/Set  (non-locking version).
    -
    -  virtual int cleanup_hint_i (const void *recycling_act);
    -  // Cleanup hint.
    -
    -  // = Helpers
    -  int check_hint_i (SVC_HANDLER *&sh,
    -                    const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    -                    ACE_Time_Value *timeout,
    -                    const ACE_PEER_CONNECTOR_ADDR &local_addr,
    -                    int reuse_addr,
    -                    int flags,
    -                    int perms,
    -                    ACE_Hash_Map_Entry, ACE_Pair > *&entry,
    -                    int &found);
    -
    -  int find_or_create_svc_handler_i (SVC_HANDLER *&sh,
    -                                    const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    -                                    ACE_Time_Value *timeout,
    -                                    const ACE_PEER_CONNECTOR_ADDR &local_addr,
    -                                    int reuse_addr,
    -                                    int flags,
    -                                    int perms,
    -                                    ACE_Hash_Map_Entry, ACE_Pair > *&entry,
    -                                    int &found);
    -
    -  virtual int connect_svc_handler_i (SVC_HANDLER *&sh,
    -                                     const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    -                                     ACE_Time_Value *timeout,
    -                                     const ACE_PEER_CONNECTOR_ADDR &local_addr,
    -                                     int reuse_addr,
    -                                     int flags,
    -                                     int perms,
    -                                     int &found);
    -
    -  virtual int cached_connect (SVC_HANDLER *&sh,
    -                              const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    -                              ACE_Time_Value *timeout,
    -                              const ACE_PEER_CONNECTOR_ADDR &local_addr,
    -                              int reuse_addr,
    -                              int flags,
    -                              int perms);
    -  // Connection of the svc_handler with the remote host.  This method
    -  // also encapsulates the connection done with auto_purging under the
    -  // hood. If the connect failed due to the process running out of
    -  // file descriptors then, auto_purging of some connections are done
    -  // from the CONNECTION_CACHE. This frees the descriptors which get
    -  // used in the connect process and hence the connect operation can
    -  // succeed.
    -
    -#if defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
    -  void cleanup (void);
    -  // Since g++ version < 2.8 arent happy with templates, this special
    -  // method had to be devised to avoid memory leaks and perform
    -  // cleanup of the .
    -#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES */
    -
    -  CONNECTION_CACHE connection_cache_;
    -  // Table that maintains the cache of connected s.
    -};
    -
    -#if !defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/Cached_Connect_Strategy_T.i"
    -#endif /* ACE_LACKS_INLINE_FUNCTIONS */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
    -#include "ace/Cached_Connect_Strategy_T.cpp"
    -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
    -#pragma implementation ("Cached_Connect_Strategy_T.cpp")
    -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
    -
    -#endif /* CACHED_CONNECT_STRATEGY_T_H */
    diff --git a/ace/Cached_Connect_Strategy_T.i b/ace/Cached_Connect_Strategy_T.i
    deleted file mode 100644
    index 64205b0dc62..00000000000
    --- a/ace/Cached_Connect_Strategy_T.i
    +++ /dev/null
    @@ -1,3 +0,0 @@
    -/* -*- C++ -*- */
    -//$Id$
    -
    diff --git a/ace/Caching_Strategies_T.cpp b/ace/Caching_Strategies_T.cpp
    deleted file mode 100644
    index f36d593ad84..00000000000
    --- a/ace/Caching_Strategies_T.cpp
    +++ /dev/null
    @@ -1,56 +0,0 @@
    -//$Id$
    -
    -#ifndef CACHING_STRATEGIES_T_C
    -#define CACHING_STRATEGIES_T_C
    -
    -#include "ace/Caching_Strategies_T.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/Caching_Strategies_T.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -#define ACE_LACKS_PRAGMA_ONCE
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -ACE_RCSID(ace, Caching_Strategies_T, "$Id$")
    -
    -template
    -ACE_Caching_Strategy::~ACE_Caching_Strategy (void)
    -{
    -}
    -
    -//////////////////////////////////////////////////////////////////////////////////
    -
    -template
    -ACE_LRU_Caching_Strategy::ACE_LRU_Caching_Strategy (void)
    -  : timer_ (0),
    -    purge_percent_ (10)
    -{
    -}
    -
    -////////////////////////////////////////////////////////////////////////////////////////////////
    -
    -template
    -ACE_LFU_Caching_Strategy::ACE_LFU_Caching_Strategy (void)
    -  : purge_percent_ (10)
    -{
    -}
    -
    -////////////////////////////////////////////////////////////////////////////////////////////////
    -
    -template
    -ACE_FIFO_Caching_Strategy::ACE_FIFO_Caching_Strategy (void)
    -  : order_ (0),
    -    purge_percent_ (10)
    -{
    -}
    -
    -////////////////////////////////////////////////////////////////////////////////////////////////
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_LRU_Caching_Strategy)
    -ACE_ALLOC_HOOK_DEFINE(ACE_LFU_Caching_Strategy)
    -ACE_ALLOC_HOOK_DEFINE(ACE_FIFO_Caching_Strategy)
    -ACE_ALLOC_HOOK_DEFINE(ACE_Null_Caching_Strategy)
    -
    -#endif /* CACHING_STRATEGIES_T_C */
    diff --git a/ace/Caching_Strategies_T.h b/ace/Caching_Strategies_T.h
    deleted file mode 100644
    index 18464503a92..00000000000
    --- a/ace/Caching_Strategies_T.h
    +++ /dev/null
    @@ -1,527 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Caching_Strategies_T.h
    -//
    -// = AUTHOR
    -//    Kirthika Parameswaran 
    -//
    -// ============================================================================
    -
    -#ifndef CACHING_STRATEGIES_H
    -#define CACHING_STRATEGIES_H
    -
    -#include "ace/OS.h"
    -
    -#include "ace/Caching_Utility_T.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -#define  ACE_LACKS_PRAGMA_ONCE
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#if defined(_MSC_VER)
    -#pragma warning(disable:4503)
    -#endif /* _MSC_VER */
    -
    -// For linkers that cant grok long names.
    -#define ACE_Caching_Strategy ACS
    -
    -template 
    -class ACE_Caching_Strategy
    -{
    -  // = TITLE
    -  //     This class is an abstract base class for a caching strategy.
    -  //
    -  // = DESCRIPTION
    -  //     This class consists of all the interfaces a caching strategy should have and
    -  //   is used in association with the ACE_Caching_Strategy_Adaptor.
    -
    -public:
    -
    -  virtual ~ACE_Caching_Strategy (void);
    -  // Destructor.
    -
    -  virtual ATTRIBUTES attributes (void) = 0;
    -  // Accessor method for the timer attributes.
    -
    -  // = Accessor methods for the percentage of entries to purge.
    -  virtual double purge_percent (void) = 0;
    -  virtual void purge_percent (double percentage) = 0;
    -
    -  // = Strategy related Operations
    -
    -  virtual int notify_bind (int result,
    -                           const ATTRIBUTES &attr) = 0;
    -  // This method acts as a notification about the CONTAINERs bind
    -  // method call.
    -
    -  virtual int notify_find (int result,
    -                           ATTRIBUTES &attr) = 0;
    -  // This method acts as a notification about the CONTAINERs find
    -  // method call
    -
    -  virtual int notify_unbind (int result,
    -                             const ATTRIBUTES &attr) = 0;
    -  // This method acts as a notification about the CONTAINERs unbind
    -  // method call
    -
    -  virtual int notify_trybind (int result,
    -                              ATTRIBUTES &attr) = 0;
    -  // This method acts as a notification about the CONTAINERs trybind
    -  // method call
    -
    -  virtual int notify_rebind (int result,
    -                             const ATTRIBUTES &attr) = 0;
    -  // This method acts as a notification about the CONTAINERs rebind
    -  // method call
    -
    -  virtual CACHING_UTILITY &caching_utility (void) = 0;
    -  // Purge the cache.
    -
    -  virtual void dump (void) const = 0;
    -  // Dumps the state of the object.
    -};
    -
    -//////////////////////////////////////////////////////////////////////////
    -
    -#define ACE_Caching_Strategy_Adapter ACSA
    -
    -template 
    -class ACE_Caching_Strategy_Adapter : public ACE_Caching_Strategy
    -{
    -  // = TITLE
    -  //     This class follows the Adaptor pattern and is used to provide
    -  //     External Polymorphism by deriving from ACE_Caching_Strategy.
    -  //
    -  // = DESCRIPTION
    -  //     This class simply delegates all requests to the
    -  //     IMPLEMNETATION object within. This class should be passed in
    -  //     place of the the abstract base ACE_Caching_Strategy class as
    -  //     part of the External Polymorphism pattern.
    -
    -public:
    -
    -  ACE_Caching_Strategy_Adapter (IMPLEMENTATION *implementation = 0,
    -                                int delete_implementation = 0);
    -  // Constructor.
    -
    -  ~ACE_Caching_Strategy_Adapter (void);
    -  // Destructor.
    -
    -  ATTRIBUTES attributes (void);
    -  // Accessor method for the timer attributes.
    -
    -  // = Accessor methods for the percentage of entries to purge.
    -  double purge_percent (void);
    -  void purge_percent (double percentage);
    -
    -  // = Strategy related Operations
    -
    -  int notify_bind (int result,
    -                   const ATTRIBUTES &attr);
    -  // This method acts as a notification about the CONTAINERs bind
    -  // method call.
    -
    -  int notify_find (int result,
    -                   ATTRIBUTES &attr);
    -  // This method acts as a notification about the CONTAINERs find
    -  // method call
    -
    -  int notify_unbind (int result,
    -                     const ATTRIBUTES &attr);
    -  // This method acts as a notification about the CONTAINERs unbind
    -  // method call
    -
    -  int notify_trybind (int result,
    -                      ATTRIBUTES &attr);
    -  // This method acts as a notification about the CONTAINERs trybind
    -  // method call
    -
    -  int notify_rebind (int result,
    -                     const ATTRIBUTES &attr);
    -  // This method acts as a notification about the CONTAINERs rebind
    -  // method call
    -
    -  IMPLEMENTATION &implementation (void);
    -  // Accessor to the implementation.
    -
    -  CACHING_UTILITY &caching_utility (void);
    -  // Purge the cache.
    -
    -  void dump (void) const;
    -  // Dumps the state of the object.
    -
    -private:
    -
    -  IMPLEMENTATION *implementation_;
    -  // Implementation class.
    -
    -  int delete_implementation_;
    -  // Do we need to delete the implementation?
    -};
    -
    -//////////////////////////////////////////////////////////////////////////
    -#define ACE_LRU_Caching_Strategy ALRU
    -
    -template 
    -class ACE_LRU_Caching_Strategy
    -{
    -  // = TITLE
    -  //     Defines a Least Recently Used strategy which will decide on
    -  //     the item to be removed from the cache.
    -  //
    -  // = DESCRIPTION
    -  //     This is a strategy which makes use of a virtual timer which
    -  //     is updated whenever an item is inserted or looked up in the
    -  //     container. When the need of purging entries arises, the items
    -  //     with the lowest timer values are removed.
    -  //
    -  //     Explanation of the template parameter list:
    -  //     CONTAINER is any map with entries of type .
    -  //     The ATTRIBUTES are the deciding factor for purging of entries
    -  //     and should logically be included with the VALUE. Some ways of
    -  //     doing this are: As being a member of the VALUE or VALUE being
    -  //     ACE_Pair. The CACHING_UTILITY is the
    -  //     class which can be plugged in and which decides the entries
    -  //     to purge.
    -
    -public:
    -
    -  // Traits.
    -  typedef ATTRIBUTES CACHING_ATTRIBUTES;
    -
    -  // = Initialisation and termination.
    -
    -  ACE_LRU_Caching_Strategy (void);
    -  // The  is the map in which the entries reside.  The
    -  // timer attribute is initialed to zero in this constructor.  And
    -  // the  field denotes the percentage of the entries
    -  // in the cache which can be purged automagically and by default is
    -  // set to 10%.
    -
    -  // = Operations of the strategy.
    -
    -  ATTRIBUTES attributes (void);
    -  // Accessor method for the timer attributes.
    -
    -  // = Accessor methods for the percentage of entries to purge.
    -  double purge_percent (void);
    -
    -  void purge_percent (double percentage);
    -
    -  // =  Strategy related Operations
    -
    -  int notify_bind (int result,
    -                   const ATTRIBUTES &attr);
    -  // This method acts as a notification about the CONTAINERs bind
    -  // method call.
    -
    -  int notify_find (int result,
    -                   ATTRIBUTES &attr);
    -  // This method acts as a notification about the CONTAINERs find
    -  // method call
    -
    -  int notify_unbind (int result,
    -                     const ATTRIBUTES &attr);
    -  // This method acts as a notification about the CONTAINERs unbind
    -  // method call
    -
    -
    -  int notify_trybind (int result,
    -                      ATTRIBUTES &attr);
    -  // This method acts as a notification about the CONTAINERs trybind
    -  // method call
    -
    -  int notify_rebind (int result,
    -                     const ATTRIBUTES &attr);
    -  // This method acts as a notification about the CONTAINERs rebind
    -  // method call
    -
    -  CACHING_UTILITY &caching_utility (void);
    -  // Purge the cache.
    -
    -  void dump (void) const;
    -  // Dumps the state of the object.
    -
    -private:
    -
    -  ATTRIBUTES timer_;
    -  // This element is the one which is the deciding factor for purging
    -  // of an ITEM.
    -
    -  double purge_percent_;
    -  // The level about which the purging will happen automagically.
    -
    -  CACHING_UTILITY caching_utility_;
    -  // This is the helper class which will decide and expunge entries
    -  // from the cache.
    -};
    -
    -//////////////////////////////////////////////////////////////////////////
    -#define ACE_LFU_Caching_Strategy ALFU
    -
    -template 
    -class ACE_LFU_Caching_Strategy
    -{
    -  // = TITLE
    -  //     Defines a Least Frequently Used strategy for which will decide on
    -  //     the item to be removed from the cache.
    -  //
    -  // = DESCRIPTION
    -  //     A attribute is tagged to each item which increments whenever
    -  //     the item is bound or looked up in the cache. Thus it denotes
    -  //     the frequency of use. According to the value of the attribute
    -  //     the item is removed from the CONTAINER i.e cache.
    -  //
    -  //     Explanation of the template parameter list:
    -  //     CONTAINER is any map with entries of type .
    -  //     The ATTRIBUTES are the deciding factor for purging of entries
    -  //     and should logically be included with the VALUE. Some ways of
    -  //     doing this are: As being a member of the VALUE or VALUE being
    -  //     ACE_Pair. The CACHING_UTILITY is the
    -  //     class which can be plugged in and which decides the entries
    -  //     to purge.
    -
    -public:
    -
    -  // Traits.
    -  typedef ATTRIBUTES CACHING_ATTRIBUTES;
    -
    -  // = Initialisation and termination methods.
    -
    -  ACE_LFU_Caching_Strategy (void);
    -  // The  is the map in which the entries reside.  The
    -  // timer attribute is initialed to zero in this constructor.  And
    -  // the  field denotes the percentage of the entries
    -  // in the cache which can be purged automagically and by default is
    -  // set to 10%.
    -
    -  // = Strategy methods.
    -
    -  ATTRIBUTES attributes (void);
    -  // Access the attributes.
    -
    -  // = Accessor methods for the percentage of entries to purge.
    -  double purge_percent (void);
    -
    -  void purge_percent (double percentage);
    -
    -  // =  Strategy related Operations
    -
    -  int notify_bind (int result,
    -                   const ATTRIBUTES &attr);
    -  // This method acts as a notification about the CONTAINERs bind
    -  // method call.
    -
    -  int notify_find (int result,
    -                   ATTRIBUTES &attr);
    -  // Lookup notification.
    -
    -  int notify_unbind (int result,
    -                     const ATTRIBUTES &attr);
    -  // This method acts as a notification about the CONTAINERs unbind
    -  // method call
    -
    -  int notify_trybind (int result,
    -                      ATTRIBUTES &attr);
    -  // This method acts as a notification about the CONTAINERs trybind
    -  // method call
    -
    -  int notify_rebind (int result,
    -                     const ATTRIBUTES &attr);
    -  // This method acts as a notification about the CONTAINERs rebind
    -  // method call
    -
    -  CACHING_UTILITY &caching_utility (void);
    -  // Purge the cache.
    -
    -  void dump (void) const;
    -  // Dumps the state of the object.
    -
    -private:
    -
    -  double purge_percent_;
    -  // The level about which the purging will happen automagically.
    -
    -  CACHING_UTILITY caching_utility_;
    -  // This is the helper class which will decide and expunge entries
    -  // from the cache.
    -};
    -
    -/////////////////////////////////////////////////////////////
    -#define ACE_FIFO_Caching_Strategy AFIFO
    -
    -template
    -class ACE_FIFO_Caching_Strategy
    -{
    -  // = TITLE
    -  //     The First In First Out strategy is implemented wherein each
    -  //     item is ordered.
    -  //
    -  // = DESCRIPTION
    -  //     The order tag of each item is used to decide the item to be
    -  //     removed from the cache. The items with least order are removed.
    -  //
    -  //     Explanation of the template parameter list:
    -  //     CONTAINER is any map with entries of type .
    -  //     The ATTRIBUTES are the deciding factor for purging of entries
    -  //     and should logically be included with the VALUE. Some ways of
    -  //     doing this are: As being a member of the VALUE or VALUE being
    -  //     ACE_Pair. The CACHING_UTILITY is the
    -  //     class which can be plugged in and which decides the entries
    -  //     to purge.
    -
    -public:
    -
    -  typedef ATTRIBUTES CACHING_ATTRIBUTES;
    -
    -  // = Initialisation and termination.
    -
    -  ACE_FIFO_Caching_Strategy (void);
    -  // The  is the map in which the entries reside.  The
    -  // timer attribute is initialed to zero in this constructor.  And
    -  // the  field denotes the percentage of the entries
    -  // in the cache which can be purged automagically and by default is
    -  // set to 10%.
    -
    -  // = Strategy methods.
    -
    -  ATTRIBUTES attributes (void);
    -  // Accessor method.
    -
    -  // = Accessor methods for the percentage of entries to purge.
    -  double purge_percent (void);
    -
    -  void purge_percent (double percentage);
    -
    -  // =  Strategy related Operations
    -
    -  int notify_bind (int result,
    -                   const ATTRIBUTES &attr);
    -  // Notification for an item getting bound into the cache.
    -
    -  int notify_find (int result,
    -                   ATTRIBUTES &attr);
    -  // This method acts as a notification about the CONTAINERs find
    -  // method call
    -
    -  int notify_unbind (int result,
    -                     const ATTRIBUTES &attr);
    -  // This method acts as a notification about the CONTAINERs unbind
    -  // method call
    -
    -  int notify_trybind (int result,
    -                      ATTRIBUTES &attr);
    -  // This method acts as a notification about the CONTAINERs trybind
    -  // method call
    -
    -  int notify_rebind (int result,
    -                     const ATTRIBUTES &attr);
    -  // Notification for an item getting bound again into the cache.
    -
    -  CACHING_UTILITY &caching_utility (void);
    -  // Purge the cache.
    -
    -  void dump (void) const;
    -  // Dumps the state of the object.
    -
    -private:
    -
    -  ATTRIBUTES order_;
    -  // The order is the deciding factor for the item to be removed from
    -  // the cache.
    -
    -  double purge_percent_;
    -  // The level about which the purging will happen automagically.
    -
    -  CACHING_UTILITY caching_utility_;
    -  // This is the helper class which will decide and expunge entries
    -  // from the cache.
    -};
    -
    -//////////////////////////////////////////////////////////////////////
    -#define ACE_Null_Caching_Strategy ANULL
    -
    -template
    -class ACE_Null_Caching_Strategy
    -{
    -  // = TITLE
    -  //    The is a special caching strategy which doesnt have the purging
    -  //    feature.
    -  //
    -  // = DESCRIPTION
    -  //    No purging provided. To be used when purging might be too expensive
    -  //    an operation.
    -
    -public:
    -
    -  // = Traits.
    -  typedef ATTRIBUTES CACHING_ATTRIBUTES;
    -
    -  // = Strategy methods. All are NO_OP methods!!!
    -
    -  ATTRIBUTES attributes (void);
    -  // Accessor method.
    -
    - // = Accessor methods for the percentage of entries to purge.
    -  double purge_percent (void);
    -
    -  void purge_percent (double percentage);
    -
    -  // =  Strategy related Operations
    -
    -  int notify_bind (int result,
    -                   const ATTRIBUTES &attr);
    -  // Notification for an item getting bound into the cache.
    -
    -  int notify_find (int result,
    -                   ATTRIBUTES &attr);
    -  // This method acts as a notification about the CONTAINERs find
    -  // method call
    -
    -  int notify_unbind (int result,
    -                     const ATTRIBUTES &attr);
    -  // This method acts as a notification about the CONTAINERs unbind
    -  // method call
    -
    -  int notify_trybind (int result,
    -                      ATTRIBUTES &attr);
    -  // This method acts as a notification about the CONTAINERs trybind
    -  // method call
    -
    -  int notify_rebind (int result,
    -                     const ATTRIBUTES &attr);
    -  // Notification for an item getting bound again into the cache.
    -
    -  CACHING_UTILITY &caching_utility (void);
    -  // Purge the cache.
    -
    -  void dump (void) const;
    -  // Dumps the state of the object.
    -
    -private:
    -
    -  CACHING_UTILITY caching_utility_;
    -  // This is the helper class which will decide and expunge entries
    -  // from the cache.
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Caching_Strategies_T.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
    -#include "ace/Caching_Strategies_T.cpp"
    -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
    -#pragma implementation ("Caching_Strategies_T.cpp")
    -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
    -
    -#endif /* CACHING_STRATEGIES_H */
    diff --git a/ace/Caching_Strategies_T.i b/ace/Caching_Strategies_T.i
    deleted file mode 100644
    index 8a6e2493b9e..00000000000
    --- a/ace/Caching_Strategies_T.i
    +++ /dev/null
    @@ -1,448 +0,0 @@
    -/* -*-C++-*- */
    -//$Id$
    -
    -//////////////////////////////////////////////////////////////////////////////////
    -
    -template ACE_INLINE
    -ACE_Caching_Strategy_Adapter::ACE_Caching_Strategy_Adapter (IMPLEMENTATION *implementation,
    -                                                                                                         int delete_implementation)
    -  : implementation_ (implementation),
    -    delete_implementation_ (delete_implementation)
    -{
    -  if (this->implementation_ == 0)
    -    {
    -      ACE_NEW (this->implementation_,
    -               IMPLEMENTATION);
    -      this->delete_implementation_ = 1;
    -    }
    -}
    -
    -template ACE_INLINE
    -ACE_Caching_Strategy_Adapter::~ACE_Caching_Strategy_Adapter (void)
    -{
    -  if (this->delete_implementation_)
    -    {
    -      delete this->implementation_;
    -      this->delete_implementation_ = 0;
    -      this->implementation_ = 0;
    -    }
    -}
    -
    -template ACE_INLINE ATTRIBUTES
    -ACE_Caching_Strategy_Adapter::attributes (void)
    -{
    -  return this->implementation_->attributes ();
    -}
    -
    -template ACE_INLINE double
    -ACE_Caching_Strategy_Adapter::purge_percent (void)
    -{
    -  return this->implementation_->purge_percent ();
    -}
    -
    -template ACE_INLINE void
    -ACE_Caching_Strategy_Adapter::purge_percent (double percentage)
    -{
    -  this->implementation_->purge_percent (percentage);
    -}
    -
    -template ACE_INLINE int
    -ACE_Caching_Strategy_Adapter::notify_bind (int result,
    -                                                                                        const ATTRIBUTES &attr)
    -{
    -  return this->implementation_->notify_bind (result,
    -                                             attr);
    -}
    -
    -template ACE_INLINE int
    -ACE_Caching_Strategy_Adapter::notify_find (int result,
    -                                                                                        ATTRIBUTES &attr)
    -{
    -  return this->implementation_->notify_find (result,
    -                                             attr);
    -}
    -
    -template ACE_INLINE int
    -ACE_Caching_Strategy_Adapter::notify_unbind (int result,
    -                                                                                          const ATTRIBUTES &attr)
    -{
    -  return this->implementation_->notify_unbind (result,
    -                                               attr);
    -}
    -
    -template ACE_INLINE int
    -ACE_Caching_Strategy_Adapter::notify_trybind (int result,
    -                                                                                           ATTRIBUTES &attr)
    -{
    -  return this->implementation_->notify_trybind (result,
    -                                                attr);
    -}
    -
    -template ACE_INLINE int
    -ACE_Caching_Strategy_Adapter::notify_rebind (int result,
    -                                                                                          const ATTRIBUTES &attr)
    -{
    -  return this->implementation_->notify_rebind (result,
    -                                               attr);
    -}
    -
    -template ACE_INLINE IMPLEMENTATION &
    -ACE_Caching_Strategy_Adapter::implementation (void)
    -{
    -  return *this->implementation_;
    -}
    -
    -template ACE_INLINE CACHING_UTILITY &
    -ACE_Caching_Strategy_Adapter::caching_utility (void)
    -{
    -  return this->implementation_->caching_utility ();
    -}
    -
    -template ACE_INLINE void
    -ACE_Caching_Strategy_Adapter::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Caching_Strategy_Adapter::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -//////////////////////////////////////////////////////////////////////////////////
    -
    -template ACE_INLINE ATTRIBUTES
    -ACE_LRU_Caching_Strategy::attributes (void)
    -{
    -  return this->timer_;
    -}
    -
    -template ACE_INLINE double
    -ACE_LRU_Caching_Strategy::purge_percent (void)
    -{
    -  return this->purge_percent_;
    -}
    -
    -template ACE_INLINE void
    -ACE_LRU_Caching_Strategy::purge_percent (double percentage)
    -{
    -  this->purge_percent_ = percentage;
    -}
    -
    -template ACE_INLINE int
    -ACE_LRU_Caching_Strategy::notify_bind (int result,
    -                                                                    const ATTRIBUTES &attr)
    -{
    -  ACE_UNUSED_ARG (attr);
    -
    -  if (result == 0)
    -    ++this->timer_;
    -
    -  return result;
    -}
    -
    -template ACE_INLINE int
    -ACE_LRU_Caching_Strategy::notify_find (int result,
    -                                                                    ATTRIBUTES &attr)
    -{
    -  if (result == 0)
    -    {
    -      attr = this->timer_;
    -      ++this->timer_;
    -    }
    -
    -  return result;
    -}
    -
    -template ACE_INLINE int
    -ACE_LRU_Caching_Strategy::notify_unbind (int result,
    -                                                                      const ATTRIBUTES &attr)
    -{
    -  ACE_UNUSED_ARG (attr);
    -  return result;
    -}
    -
    -template ACE_INLINE int
    -ACE_LRU_Caching_Strategy::notify_trybind (int result,
    -                                                                       ATTRIBUTES &attr)
    -{
    -  ACE_UNUSED_ARG (attr);
    -
    -  return result;
    -}
    -
    -template ACE_INLINE int
    -ACE_LRU_Caching_Strategy::notify_rebind (int result,
    -                                                                      const ATTRIBUTES &attr)
    -{
    -  ACE_UNUSED_ARG (attr);
    -
    -  if (result == 0)
    -    ++this->timer_;
    -
    -  return result;
    -}
    -
    -template ACE_INLINE CACHING_UTILITY &
    -ACE_LRU_Caching_Strategy::caching_utility (void)
    -{
    -  return this->caching_utility_;
    -}
    -
    -template ACE_INLINE void
    -ACE_LRU_Caching_Strategy::dump (void) const
    -{
    -  ACE_TRACE ("ACE_LRU_Caching_Strategy::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("timer_ = %d "), this->timer_));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -//////////////////////////////////////////////////////////////////////////////////
    -
    -template ACE_INLINE ATTRIBUTES
    -ACE_LFU_Caching_Strategy::attributes (void)
    -{
    -  return 0;
    -}
    -
    -template ACE_INLINE double
    -ACE_LFU_Caching_Strategy::purge_percent (void)
    -{
    -  return this->purge_percent_;
    -}
    -
    -template ACE_INLINE void
    -ACE_LFU_Caching_Strategy::purge_percent (double percentage)
    -{
    -  this->purge_percent_ = percentage;
    -}
    -
    -template ACE_INLINE int
    -ACE_LFU_Caching_Strategy::notify_bind (int result,
    -                                                                    const ATTRIBUTES &attr)
    -{
    -  ACE_UNUSED_ARG (attr);
    -
    -  return result;
    -}
    -
    -template ACE_INLINE int
    -ACE_LFU_Caching_Strategy::notify_find (int result,
    -                                                                    ATTRIBUTES &attr)
    -{
    -  if (result == 0)
    -    ++attr;
    -
    -  return result;
    -}
    -
    -template ACE_INLINE int
    -ACE_LFU_Caching_Strategy::notify_trybind (int result,
    -                                                                       ATTRIBUTES &attr)
    -{
    -  ACE_UNUSED_ARG (attr);
    -
    -  return result;
    -}
    -
    -template ACE_INLINE int
    -ACE_LFU_Caching_Strategy::notify_rebind (int result,
    -                                                                      const ATTRIBUTES &attr)
    -{
    -  ACE_UNUSED_ARG (attr);
    -
    -  return result;
    -}
    -
    -template ACE_INLINE int
    -ACE_LFU_Caching_Strategy::notify_unbind (int result,
    -                                                                      const ATTRIBUTES &attr)
    -{
    -  ACE_UNUSED_ARG (attr);
    -
    -  return result;
    -}
    -
    -template ACE_INLINE CACHING_UTILITY &
    -ACE_LFU_Caching_Strategy::caching_utility (void)
    -{
    -  return this->caching_utility_;
    -}
    -
    -template ACE_INLINE void
    -ACE_LFU_Caching_Strategy::dump (void) const
    -{
    -  ACE_TRACE ("ACE_LFU_Caching_Strategy::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -//////////////////////////////////////////////////////////////////////////////////////
    -
    -template ACE_INLINE ATTRIBUTES
    -ACE_FIFO_Caching_Strategy::attributes (void)
    -{
    -  return this->order_;
    -}
    -
    -template ACE_INLINE double
    -ACE_FIFO_Caching_Strategy::purge_percent (void)
    -{
    -  return this->purge_percent_;
    -}
    -
    -template ACE_INLINE void
    -ACE_FIFO_Caching_Strategy::purge_percent (double percentage)
    -{
    -  this->purge_percent_ = percentage;
    -}
    -
    -template ACE_INLINE int
    -ACE_FIFO_Caching_Strategy::notify_bind (int result,
    -                                                                     const ATTRIBUTES &attr)
    -{
    -  ACE_UNUSED_ARG (attr);
    -
    -  if (result == 0)
    -    ++this->order_;
    -
    -  return result;
    -}
    -
    -template ACE_INLINE int
    -ACE_FIFO_Caching_Strategy::notify_find (int result,
    -                                                                     ATTRIBUTES &attr)
    -{
    -  ACE_UNUSED_ARG (attr);
    -
    -  return result;
    -}
    -
    -template ACE_INLINE int
    -ACE_FIFO_Caching_Strategy::notify_unbind (int result,
    -                                                                       const ATTRIBUTES &attr)
    -{
    -  ACE_UNUSED_ARG (attr);
    -
    -  return result;
    -}
    -
    -template ACE_INLINE int
    -ACE_FIFO_Caching_Strategy::notify_trybind (int result,
    -                                                                        ATTRIBUTES &attr)
    -{
    -  ACE_UNUSED_ARG (attr);
    -
    -  return result;
    -}
    -
    -template ACE_INLINE int
    -ACE_FIFO_Caching_Strategy::notify_rebind (int result,
    -                                                                       const ATTRIBUTES &attr)
    -{
    -  ACE_UNUSED_ARG (attr);
    -
    -  if (result == 0)
    -    ++this->order_;
    -
    -  return result;
    -}
    -
    -template ACE_INLINE CACHING_UTILITY &
    -ACE_FIFO_Caching_Strategy::caching_utility (void)
    -{
    -  return this->caching_utility_;
    -}
    -
    -template ACE_INLINE void
    -ACE_FIFO_Caching_Strategy::dump (void) const
    -{
    -  ACE_TRACE ("ACE_FIFO_Caching_Strategy::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("order_ = %d "), this->order_));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -//////////////////////////////////////////////////////////////////////////////////
    -
    -template ACE_INLINE ATTRIBUTES
    -ACE_Null_Caching_Strategy::attributes (void)
    -{
    -  return 0;
    -}
    -
    -template ACE_INLINE double
    -ACE_Null_Caching_Strategy::purge_percent (void)
    -{
    -  return 0;
    -}
    -
    -template ACE_INLINE void
    -ACE_Null_Caching_Strategy::purge_percent (double percentage)
    -{
    -  ACE_UNUSED_ARG (percentage);
    -}
    -
    -template ACE_INLINE int
    -ACE_Null_Caching_Strategy::notify_bind (int result,
    -                                                                     const ATTRIBUTES &attr)
    -{
    -  ACE_UNUSED_ARG (attr);
    -
    -  return result;
    -}
    -
    -template ACE_INLINE int
    -ACE_Null_Caching_Strategy::notify_find (int result,
    -                                                                     ATTRIBUTES &attr)
    -{
    -  ACE_UNUSED_ARG (attr);
    -
    -  return result;
    -}
    -
    -template ACE_INLINE int
    -ACE_Null_Caching_Strategy::notify_unbind (int result,
    -                                                                       const ATTRIBUTES &attr)
    -{
    -  ACE_UNUSED_ARG (attr);
    -
    -  return result;
    -}
    -
    -template ACE_INLINE int
    -ACE_Null_Caching_Strategy::notify_trybind (int result,
    -                                                                        ATTRIBUTES &attr)
    -{
    -  ACE_UNUSED_ARG (attr);
    -
    -  return result;
    -}
    -
    -template ACE_INLINE int
    -ACE_Null_Caching_Strategy::notify_rebind (int result,
    -                                                                       const ATTRIBUTES &attr)
    -{
    -  ACE_UNUSED_ARG (attr);
    -
    -  return result;
    -}
    -
    -template ACE_INLINE CACHING_UTILITY &
    -ACE_Null_Caching_Strategy::caching_utility (void)
    -{
    -  return this->caching_utility_;
    -}
    -
    -template ACE_INLINE void
    -ACE_Null_Caching_Strategy::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Null_Caching_Strategy::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -//////////////////////////////////////////////////////////////////////////////////
    diff --git a/ace/Caching_Utility_T.cpp b/ace/Caching_Utility_T.cpp
    deleted file mode 100644
    index e571e7509e1..00000000000
    --- a/ace/Caching_Utility_T.cpp
    +++ /dev/null
    @@ -1,487 +0,0 @@
    -//$Id$
    -
    -#ifndef CACHING_UTILITY_T_C
    -#define CACHING_UTILITY_T_C
    -
    -#include "ace/Caching_Utility_T.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -#define ACE_LACKS_PRAGMA_ONCE
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Strategies.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/Caching_Utility_T.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, Caching_Utility_T, "$Id$")
    -
    -/////////////////////////////////////////////////////////////////////////////////////////////////////
    -
    -template 
    -ACE_Pair_Caching_Utility::ACE_Pair_Caching_Utility (ACE_Cleanup_Strategy *cleanup_strategy,
    -                                                                                                 int delete_cleanup_strategy)
    -  : cleanup_strategy_ (cleanup_strategy),
    -    delete_cleanup_strategy_ (delete_cleanup_strategy)
    -{
    -  if (cleanup_strategy == 0)
    -    {
    -      ACE_NEW (this->cleanup_strategy_,
    -               CLEANUP_STRATEGY);
    -      this->delete_cleanup_strategy_ = 1;
    -    }
    -}
    -
    -template 
    -ACE_Pair_Caching_Utility::~ACE_Pair_Caching_Utility (void)
    -{
    -  if (this->delete_cleanup_strategy_)
    -    delete this->cleanup_strategy_;
    -}
    -
    -template  int
    -ACE_Pair_Caching_Utility::clear_cache (CONTAINER &container,
    -                                                                                    double purge_percent)
    -{
    -  // Check that the purge_percent is non-zero.
    -  if (purge_percent == 0)
    -    return 0;
    -
    -  // Get the number of entries in the container.
    -  size_t current_map_size = container.current_size ();
    -
    -  // Also whether the number of entries in the cache is just one!
    -  // Oops! then there is no way out but exiting. So return an error.
    -  if (current_map_size <= 1)
    -    return 0;
    -
    -  // Calculate the no of entries to remove from the cache depending
    -  // upon the .
    -  size_t entries_to_remove = size_t ((double (purge_percent) / 100 * current_map_size) + 0.5);
    -
    -  KEY *key_to_remove = 0;
    -  VALUE *value_to_remove = 0;
    -
    -  for (size_t i = 0; i < entries_to_remove ; ++i)
    -    {
    -      this->minimum (container,
    -                     key_to_remove,
    -                     value_to_remove);
    -
    -      // Simply verifying that the key is non-zero.
    -      // This is important for strategies where the minimum
    -      // entry cant be found due to constraints on the type of entry
    -      // to remove.
    -      if (key_to_remove == 0)
    -        return 0;
    -
    -      if (this->cleanup_strategy_->cleanup (container,
    -                                            key_to_remove,
    -                                            value_to_remove) == -1)
    -        return -1;
    -
    -    }
    -
    -  return 0;
    -}
    -
    -template  void
    -ACE_Pair_Caching_Utility::minimum (CONTAINER &container,
    -                                                                                KEY *&key_to_remove,
    -                                                                                VALUE *&value_to_remove)
    -{
    -  // Starting values.
    -  ITERATOR iter = container.begin ();
    -  ITERATOR end = container.end ();
    -  ATTRIBUTES min = (*iter).int_id_.second ();
    -  key_to_remove = &(*iter).ext_id_;
    -  value_to_remove = &(*iter).int_id_;
    -
    -  // The iterator moves thru the container searching for the entry
    -  // with the lowest ATTRIBUTES.
    -  for (++iter;
    -       iter != end;
    -       ++iter)
    -    {
    -      if (min > (*iter).int_id_.second ())
    -        {
    -          // Ah! an item with lower ATTTRIBUTES...
    -          min = (*iter).int_id_.second ();
    -          key_to_remove = &(*iter).ext_id_;
    -          value_to_remove = &(*iter).int_id_;
    -        }
    -    }
    -}
    -
    -////////////////////////////////////////////////////////////////////////////////////////////////////////
    -
    -template 
    -ACE_Recyclable_Handler_Caching_Utility::ACE_Recyclable_Handler_Caching_Utility (ACE_Cleanup_Strategy *cleanup_strategy,
    -                                                                                                                             int delete_cleanup_strategy)
    -  : cleanup_strategy_ (cleanup_strategy),
    -    delete_cleanup_strategy_ (delete_cleanup_strategy)
    -{
    -  if (cleanup_strategy == 0)
    -    {
    -      ACE_NEW (this->cleanup_strategy_,
    -               CLEANUP_STRATEGY);
    -      this->delete_cleanup_strategy_ = 1;
    -    }
    -}
    -
    -template 
    -ACE_Recyclable_Handler_Caching_Utility::~ACE_Recyclable_Handler_Caching_Utility (void)
    -{
    -  if (this->delete_cleanup_strategy_)
    -    delete this->cleanup_strategy_;
    -}
    -
    -template  int
    -ACE_Recyclable_Handler_Caching_Utility::clear_cache (CONTAINER &container,
    -                                                                                                  double purge_percent)
    -{
    -  // Check that the purge_percent is non-zero.
    -  if (purge_percent == 0)
    -    return 0;
    -
    -  // Get the number of entries in the container.
    -  size_t current_map_size = container.current_size ();
    -
    -  // Also whether the number of entries in the cache is just one!
    -  // Oops! then there is no way out but exiting. So return an error.
    -  if (current_map_size <= 1)
    -    return 0;
    -
    -  // Calculate the no of entries to remove from the cache depending
    -  // upon the .
    -  size_t entries_to_remove = size_t ((double (purge_percent) / 100 * current_map_size) + 0.5);
    -
    -  KEY *key_to_remove = 0;
    -  VALUE *value_to_remove = 0;
    -
    -  for (size_t i = 0; i < entries_to_remove ; ++i)
    -    {
    -      this->minimum (container,
    -                     key_to_remove,
    -                     value_to_remove);
    -
    -      // Simply verifying that the key is non-zero.
    -      // This is important for strategies where the minimum
    -      // entry cant be found due to constraints on the type of entry
    -      // to remove.
    -      if (key_to_remove == 0)
    -        return 0;
    -
    -      if (this->cleanup_strategy_->cleanup (container,
    -                                            key_to_remove,
    -                                            value_to_remove) == -1)
    -        return -1;
    -    }
    -
    -  return 0;
    -}
    -
    -template  void
    -ACE_Recyclable_Handler_Caching_Utility::minimum (CONTAINER &container,
    -                                                                                              KEY *&key_to_remove,
    -                                                                                              VALUE *&value_to_remove)
    -{
    -  // Starting values.
    -  ITERATOR end = container.end ();
    -  ITERATOR iter = container.begin ();
    -  ATTRIBUTES min = (*iter).int_id_.second ();
    -  key_to_remove = 0;
    -  value_to_remove = 0;
    -  // Found the minimum entry to be purged?
    -  int found = 0;
    -
    -  // The iterator moves thru the container searching for the entry
    -  // with the lowest ATTRIBUTES.
    -  for (;
    -       iter != end;
    -       ++iter)
    -    {
    -      // If the  entry isnt IDLE_AND_PURGABLE continue until you reach
    -      // the first entry which can be purged. This is the minimum with
    -      // which you will compare the rest of the purgable entries.
    -      if ((*iter).ext_id_.recycle_state () == ACE_RECYCLABLE_IDLE_AND_PURGABLE ||
    -          (*iter).ext_id_.recycle_state () == ACE_RECYCLABLE_PURGABLE_BUT_NOT_IDLE)
    -        {
    -          if (found == 0)
    -            {
    -              min = (*iter).int_id_.second ();
    -              key_to_remove = &(*iter).ext_id_;
    -              value_to_remove = &(*iter).int_id_;
    -              found = 1;
    -            }
    -          else
    -            {
    -              // Ah! an entry with lower ATTTRIBUTES...
    -              if (min > (*iter).int_id_.second ())
    -                {
    -                  min = (*iter).int_id_.second ();
    -                  key_to_remove = &(*iter).ext_id_;
    -                  value_to_remove = &(*iter).int_id_;
    -                }
    -            }
    -        }
    -    }
    -}
    -
    -////////////////////////////////////////////////////////////////////////////////
    -
    -template 
    -ACE_Refcounted_Recyclable_Handler_Caching_Utility::ACE_Refcounted_Recyclable_Handler_Caching_Utility (ACE_Cleanup_Strategy *cleanup_strategy,
    -                                                                                                                                                   int delete_cleanup_strategy)
    -  : cleanup_strategy_ (cleanup_strategy),
    -    delete_cleanup_strategy_ (delete_cleanup_strategy),
    -    marked_as_closed_entries_ (0)
    -{
    -  if (cleanup_strategy == 0)
    -    {
    -      ACE_NEW (this->cleanup_strategy_,
    -               CLEANUP_STRATEGY);
    -      this->delete_cleanup_strategy_ = 1;
    -    }
    -}
    -
    -template 
    -ACE_Refcounted_Recyclable_Handler_Caching_Utility::~ACE_Refcounted_Recyclable_Handler_Caching_Utility (void)
    -{
    -  if (this->delete_cleanup_strategy_)
    -    delete this->cleanup_strategy_;
    -}
    -
    -template  int
    -ACE_Refcounted_Recyclable_Handler_Caching_Utility::clear_cache (CONTAINER &container,
    -                                                                                                             double purge_percent)
    -{
    -  // Check that the purge_percent is non-zero.
    -  if (purge_percent == 0)
    -    return 0;
    -
    -  // Get the number of entries in the container which can be considered for purging.
    -  size_t available_entries = container.current_size () - this->marked_as_closed_entries_;
    -
    -  // Also whether the number of entries in the cache zero.
    -  // Oops! then there is no way out but exiting.
    -  if (available_entries <= 0)
    -    return 0;
    -
    -  // Calculate the no of entries to remove from the cache depending
    -  // upon the .
    -  size_t entries_to_remove = size_t ((double (purge_percent) / 100 * available_entries) + 0.5);
    -
    -  if (entries_to_remove >= available_entries  || 
    -      entries_to_remove == 0)
    -    entries_to_remove = available_entries - 1;
    -
    -  KEY *key_to_remove = 0;
    -  VALUE *value_to_remove = 0;
    -
    -  for (size_t i = 0; i < entries_to_remove ; ++i)
    -    {
    -      this->minimum (container,
    -                     key_to_remove,
    -                     value_to_remove);
    -
    -      // Simply verifying that the key is non-zero.
    -      // This is important for strategies where the minimum
    -      // entry cant be found due to constraints on the type of entry
    -      // to remove.
    -      if (key_to_remove == 0)
    -        return 0;
    -
    -      if (this->cleanup_strategy_->cleanup (container,
    -                                            key_to_remove,
    -                                            value_to_remove) == -1)
    -        return -1;
    -
    -      ++this->marked_as_closed_entries_;
    -    }
    -
    -  return 0;
    -}
    -
    -template  void
    -ACE_Refcounted_Recyclable_Handler_Caching_Utility::minimum (CONTAINER &container,
    -                                                                                                         KEY *&key_to_remove,
    -                                                                                                         VALUE *&value_to_remove)
    -{
    -  // Starting values.
    -  ITERATOR end = container.end ();
    -  ITERATOR iter = container.begin ();
    -  ATTRIBUTES min = (*iter).int_id_.second ();
    -  key_to_remove = 0;
    -  value_to_remove = 0;
    -  // Found the minimum entry to be purged?
    -  int found = 0;
    -
    -  // The iterator moves thru the container searching for the entry
    -  // with the lowest ATTRIBUTES.
    -  for (;
    -       iter != end;
    -       ++iter)
    -    {
    -      // If the  entry isnt IDLE_AND_PURGABLE continue until you reach
    -      // the first entry which can be purged. This is the minimum with
    -      // which you will compare the rest of the purgable entries.
    -      if ((*iter).ext_id_.recycle_state () == ACE_RECYCLABLE_IDLE_AND_PURGABLE ||
    -          (*iter).ext_id_.recycle_state () == ACE_RECYCLABLE_PURGABLE_BUT_NOT_IDLE)
    -        {
    -          if (found == 0)
    -            {
    -              min = (*iter).int_id_.second ();
    -              key_to_remove = &(*iter).ext_id_;
    -              value_to_remove = &(*iter).int_id_;
    -              found = 1;
    -            }
    -          else
    -            {
    -              // Ah! an entry with lower ATTTRIBUTES...
    -              if (min > (*iter).int_id_.second ())
    -                {
    -                  min = (*iter).int_id_.second ();
    -                  key_to_remove = &(*iter).ext_id_;
    -                  value_to_remove = &(*iter).int_id_;
    -                }
    -            }
    -        }
    -    }
    -}
    -
    -////////////////////////////////////////////////////////////////////////////////
    -
    -template 
    -ACE_Handler_Caching_Utility::ACE_Handler_Caching_Utility (ACE_Cleanup_Strategy *cleanup_strategy,
    -                                                                                                       int delete_cleanup_strategy)
    -  : cleanup_strategy_ (cleanup_strategy),
    -    delete_cleanup_strategy_ (delete_cleanup_strategy)
    -{
    -  if (cleanup_strategy == 0)
    -    {
    -      ACE_NEW (this->cleanup_strategy_,
    -               CLEANUP_STRATEGY);
    -      this->delete_cleanup_strategy_ = 1;
    -    }
    -}
    -
    -template 
    -ACE_Handler_Caching_Utility::~ACE_Handler_Caching_Utility (void)
    -{
    -  if (this->delete_cleanup_strategy_)
    -    delete this->cleanup_strategy_;
    -}
    -
    -template  int
    -ACE_Handler_Caching_Utility::clear_cache (CONTAINER &container,
    -                                                                                       double purge_percent)
    -{
    -  // Check that the purge_percent is non-zero.
    -  if (purge_percent == 0)
    -    return 0;
    -
    -  // Get the number of entries in the container.
    -  size_t current_map_size = container.current_size ();
    -
    -  // Also whether the number of entries in the cache is just one!
    -  // Oops! then there is no way out but exiting. So return an error.
    -  if (current_map_size <= 1)
    -    return 0;
    -
    -  // Calculate the no of entries to remove from the cache depending
    -  // upon the .
    -  size_t entries_to_remove = (purge_percent / 100 * current_map_size) + 0.5;
    -
    -  KEY *key_to_remove = 0;
    -  VALUE *value_to_remove = 0;
    -
    -  for (size_t i = 0; i < entries_to_remove ; ++i)
    -    {
    -      this->minimum (container,
    -                     key_to_remove,
    -                     value_to_remove);
    -
    -      if (this->cleanup_strategy_->cleanup (container,
    -                                            key_to_remove,
    -                                            value_to_remove) == -1)
    -        return -1;
    -    }
    -
    -  return 0;
    -}
    -
    -template  void
    -ACE_Handler_Caching_Utility::minimum (CONTAINER &container,
    -                                                                                   KEY *&key_to_remove,
    -                                                                                   VALUE *&value_to_remove)
    -{
    -  // Starting values.
    -  ITERATOR iter = container.begin ();
    -  ITERATOR end = container.end ();
    -  ATTRIBUTES min = (*iter).int_id_->caching_attributes ();
    -  key_to_remove = &(*iter).ext_id_;
    -  value_to_remove = &(*iter).int_id_;
    -
    -  // The iterator moves thru the container searching for the entry
    -  // with the lowest ATTRIBUTES.
    -  for (++iter;
    -       iter != end;
    -       ++iter)
    -    {
    -      if (min > (*iter).int_id_->caching_attributes () &&
    -          (*iter).int_id_->active () != 1)
    -        {
    -          // Ah! an item with lower ATTTRIBUTES...
    -          min = (*iter).int_id_->caching_attributes ();
    -          key_to_remove = &(*iter).ext_id_;
    -          value_to_remove = &(*iter).int_id_;
    -        }
    -    }
    -}
    -
    -////////////////////////////////////////////////////////////////////////////////////////////////////////
    -
    -template 
    -ACE_Null_Caching_Utility::ACE_Null_Caching_Utility (ACE_Cleanup_Strategy *cleanup_strategy,
    -                                                                                                 int delete_cleanup_strategy)
    -  : cleanup_strategy_ (cleanup_strategy),
    -    delete_cleanup_strategy_ (delete_cleanup_strategy)
    -{
    -  if (cleanup_strategy == 0)
    -    {
    -      ACE_NEW (this->cleanup_strategy_,
    -               CLEANUP_STRATEGY);
    -      this->delete_cleanup_strategy_ = 1;
    -    }
    -}
    -
    -template 
    -ACE_Null_Caching_Utility::~ACE_Null_Caching_Utility (void)
    -{
    -  if (this->delete_cleanup_strategy_)
    -    delete this->cleanup_strategy_;
    -}
    -
    -template  int
    -ACE_Null_Caching_Utility::clear_cache (CONTAINER &container,
    -                                                                                    double purge_percent)
    -{
    -  ACE_UNUSED_ARG (container);
    -  ACE_UNUSED_ARG (purge_percent);
    -
    -  return 0;
    -}
    -
    -template  void
    -ACE_Null_Caching_Utility::minimum (CONTAINER &container,
    -                                                                                KEY *&key_to_remove,
    -                                                                                VALUE *&value_to_remove)
    -{
    -  ACE_UNUSED_ARG (container);
    -  ACE_UNUSED_ARG (key_to_remove);
    -  ACE_UNUSED_ARG (value_to_remove);
    -}
    -
    -#endif /* CACHING_UTILITY_T_C */
    diff --git a/ace/Caching_Utility_T.h b/ace/Caching_Utility_T.h
    deleted file mode 100644
    index cc6e3ffe114..00000000000
    --- a/ace/Caching_Utility_T.h
    +++ /dev/null
    @@ -1,311 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Caching_Utility_T.h
    -//
    -// = AUTHOR
    -//    Kirthika Parameswaran 
    -//
    -// ============================================================================
    -
    -#ifndef CACHING_UTILITY_H
    -#define CACHING_UTILITY_H
    -
    -#include "ace/OS.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -#define  ACE_LACKS_PRAGMA_ONCE
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Cleanup_Strategies_T.h"
    -
    -// For linkers that cant grok long names.
    -#define ACE_Pair_Caching_Utility APUTIL
    -
    -template 
    -class ACE_Pair_Caching_Utility
    -{
    -  // = TITLE
    -  //    Defines a helper class for the Caching Strategies.
    -  //
    -  // = DESCRIPTION
    -  //   This class defines the methods commonly used by the different
    -  //   caching strategies. For instance:  method which
    -  //   decides and purges the entry from the container.  Note: This
    -  //   class helps in the caching_strategies using a container
    -  //   containing entries of >
    -  //   kind. The attributes helps in deciding the entries to be
    -  //   purged. The Cleanup_Strategy is the callback class to which the
    -  //   entries to be cleaned up will be delegated.
    -public:
    -
    -  typedef ACE_Cleanup_Strategy CLEANUP_STRATEGY;
    -
    -  ACE_Pair_Caching_Utility (ACE_Cleanup_Strategy *cleanup_strategy = 0,
    -                            int delete_cleanup_strategy = 0);
    -
    -  // Constructor.
    -
    -  ~ACE_Pair_Caching_Utility (void);
    -  // Destructor.
    -
    -  int clear_cache (CONTAINER &container,
    -                   double purge_percent);
    -
    -  // Purge entries from the . The Cleanup_Strategy will do
    -  // the actual job of cleanup once the entries to be cleaned up are
    -  // decided.
    -
    -protected:
    -
    -  void minimum (CONTAINER &container,
    -                KEY *&key_to_remove,
    -                VALUE *&value_to_remove);
    -  // Find the entry with minimum caching attributes.
    -
    -  CLEANUP_STRATEGY *cleanup_strategy_;
    -  // The cleanup strategy which can be used to destroy the entries of
    -  // the container.
    -
    -  int delete_cleanup_strategy_;
    -  // Whether the cleanup_strategy should be destroyed or not.
    -};
    -
    -////////////////////////////////////////////////////////////////////////////////
    -#define ACE_Recyclable_Handler_Caching_Utility ARHUTIL
    -
    -template 
    -class ACE_Recyclable_Handler_Caching_Utility
    -{
    -  // = TITLE
    -  //    Defines a helper class for the Caching Strategies.
    -  //
    -  // = DESCRIPTION
    -  //    This class defines the methods commonly used by the different
    -  //    caching strategies. For instance:  method which
    -  //    decides and purges the entry from the container.  Note: This
    -  //    class helps in the caching_strategies using a container
    -  //    containing entries of  kind. The attributes
    -  //    helps in deciding the entries to be purged. The
    -  //    Cleanup_Strategy is the callback class to which the entries to
    -  //    be cleaned up will be delegated.
    -
    -public:
    -
    -  typedef ACE_Recyclable_Handler_Cleanup_Strategy CLEANUP_STRATEGY;
    -  typedef ACE_Cleanup_Strategy CLEANUP_STRATEGY_BASE;
    -
    -  ACE_Recyclable_Handler_Caching_Utility (ACE_Cleanup_Strategy *cleanup_strategy = 0,
    -                                          int delete_cleanup_strategy = 0);
    -
    -  // Constructor.
    -
    -  ~ACE_Recyclable_Handler_Caching_Utility (void);
    -  // Destructor.
    -
    -  int clear_cache (CONTAINER &container,
    -                   double purge_percent);
    -  // Purge entries from the . The Cleanup_Strategy will do
    -  // the actual job of cleanup once the entries to be cleaned up are
    -  // decided.
    -
    -protected:
    -
    -  void minimum (CONTAINER &container,
    -                KEY *&key_to_remove,
    -                VALUE *&value_to_remove);
    -  // Find the entry with minimum caching attributes.
    -
    -  CLEANUP_STRATEGY_BASE *cleanup_strategy_;
    -  // This is the default Cleanup Strategy for this utility.
    -
    -  int delete_cleanup_strategy_;
    -  // Whether the cleanup_strategy should be destroyed or not.
    -
    -};
    -
    -////////////////////////////////////////////////////////////////////////////////////////
    -#define ACE_Refcounted_Recyclable_Handler_Caching_Utility ARRHUTIL
    -
    -template 
    -class ACE_Refcounted_Recyclable_Handler_Caching_Utility
    -{
    -  // = TITLE
    -  //    Defines a helper class for the Caching Strategies.
    -  //
    -  // = DESCRIPTION
    -  //    This class defines the methods commonly used by the different
    -  //    caching strategies. For instance: clear_cache () method which
    -  //    decides and purges the entry from the container.  Note: This
    -  //    class helps in the caching_strategies using a container
    -  //    containing entries of  kind. The attributes helps in
    -  //    deciding the entries to be purged. The Cleanup_Strategy is the
    -  //    callback class to which the entries to be cleaned up will be
    -  //    delegated.
    -
    -public:
    -
    -  typedef ACE_Refcounted_Recyclable_Handler_Cleanup_Strategy CLEANUP_STRATEGY;
    -  typedef ACE_Cleanup_Strategy CLEANUP_STRATEGY_BASE;
    -
    -  ACE_Refcounted_Recyclable_Handler_Caching_Utility (ACE_Cleanup_Strategy *cleanup_strategy = 0,
    -                                                     int delete_cleanup_strategy = 0);
    -
    -  // Constructor.
    -
    -  ~ACE_Refcounted_Recyclable_Handler_Caching_Utility (void);
    -  // Destructor.
    -
    -  int clear_cache (CONTAINER &container,
    -                   double purge_percent);
    -  // Purge entries from the . The Cleanup_Strategy will do
    -  // the actual job of cleanup once the entries to be cleaned up are
    -  // decided.
    -
    -protected:
    -
    -  void minimum (CONTAINER &container,
    -                KEY *&key_to_remove,
    -                VALUE *&value_to_remove);
    -  // Find the entry with minimum caching attributes.
    -
    -  CLEANUP_STRATEGY_BASE *cleanup_strategy_;
    -  // This is the default Cleanup Strategy for this utility.
    -
    -  int delete_cleanup_strategy_;
    -  // Whether the cleanup_strategy should be destroyed or not.
    -
    -  size_t marked_as_closed_entries_;
    -  // This figure denotes the number of entries are there in the
    -  // container which have been marked as closed already but might 
    -  // not have been unbound from the container.
    -
    -};
    -
    -////////////////////////////////////////////////////////////////////////////////////////
    -
    -template 
    -class ACE_Handler_Caching_Utility
    -{
    -  // = TITLE
    -  //    Defines a helper class for the Caching Strategies.
    -  //
    -  // = DESCRIPTION
    -  //    This class defines the methods commonly used by the different
    -  //    caching strategies. For instance:  method which
    -  //    decides and purges the entry from the container.  Note: This
    -  //    class helps in the caching_strategies using a container
    -  //    containing entries of  kind where the HANDLER
    -  //    contains the caching attributes which help in deciding the
    -  //    entries to be purged. The Cleanup_Strategy is the callback
    -  //    class to which the entries to be cleaned up will be delegated.
    -public:
    -
    -  typedef ACE_Handler_Cleanup_Strategy CLEANUP_STRATEGY;
    -  typedef ACE_Cleanup_Strategy CLEANUP_STRATEGY_BASE;
    -
    -  ACE_Handler_Caching_Utility (ACE_Cleanup_Strategy *cleanup_strategy = 0,
    -                               int delete_cleanup_strategy = 0);
    -  // Constructor.
    -
    -  ~ACE_Handler_Caching_Utility (void);
    -  // Destructor.
    -
    -  int clear_cache (CONTAINER &container,
    -                   double purge_percent);
    -  // Purge entries from the . The Cleanup_Strategy will do
    -  // the actual job of cleanup once the entries to be cleaned up are
    -  // decided.
    -
    -protected:
    -
    -  void minimum (CONTAINER &container,
    -                KEY *&key_to_remove,
    -                VALUE *&value_to_remove);
    -  // Find the entry with minimum caching attributes.  This is handler
    -  // specific since this utility is to be used very specifically for
    -  // handler who have caching_attributes for server side acched
    -  // connection management.
    -
    -  CLEANUP_STRATEGY_BASE *cleanup_strategy_;
    -  // The cleanup strategy which can be used to destroy the entries of
    -  // the container.
    -
    -  int delete_cleanup_strategy_;
    -  // Whether the cleanup_strategy should be destroyed or not.
    -
    -};
    -
    -///////////////////////////////////////////////////////////////////////////
    -#define ACE_Null_Caching_Utility ANUTIL
    -template 
    -class ACE_Null_Caching_Utility
    -{
    -  // = TITLE
    -  //    Defines a dummy helper class for the Caching Strategies.
    -  //
    -  // = DESCRIPTION
    -  //    This class defines the methods commonly used by the different
    -  //    caching strategies. For instance:  method which
    -  //    decides and purges the entry from the container.  Note: This
    -  //    class is be used with the Null_Caching_Strategy. The
    -  //    Cleanup_Strategy is the callback class to which the entries to
    -  //    be cleaned up will be delegated.
    -public:
    -
    -  typedef ACE_Null_Cleanup_Strategy CLEANUP_STRATEGY;
    -  typedef ACE_Cleanup_Strategy CLEANUP_STRATEGY_BASE;
    -
    -  ACE_Null_Caching_Utility (ACE_Cleanup_Strategy *cleanup_strategy = 0,
    -                            int delete_cleanup_strategy = 0);
    -  // Constructor.
    -
    -  ~ACE_Null_Caching_Utility (void);
    -  // Destructor.
    -
    -  int clear_cache (CONTAINER &container,
    -                   double purge_percent);
    -  // Purge entries from the . The Cleanup_Strategy will do
    -  // the actual job of cleanup once the entries to be cleaned up are
    -  // decided. NOte: Here it is a no-op.
    -
    -protected:
    -
    -  void minimum (CONTAINER &container,
    -                KEY *&key_to_remove,
    -                VALUE *&value_to_remove);
    -  // Find the entry with minimum caching attributes.  This is handler
    -  // specific since this utility is to be used very specifically for
    -  // handler who have caching_attributes for server side acched
    -  // connection management.Note: Here it is a no-op.
    -
    -  CLEANUP_STRATEGY_BASE *cleanup_strategy_;
    -  // The cleanup strategy which can be used to destroy the entries of
    -  // the container.
    -
    -  int delete_cleanup_strategy_;
    -  // Whether the cleanup_strategy should be destroyed or not.
    -};
    -
    -///////////////////////////////////////////////////////////////////////////
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Caching_Utility_T.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
    -#include "ace/Caching_Utility_T.cpp"
    -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
    -#pragma implementation ("Caching_Utility_T.cpp")
    -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
    -
    -#endif /* CACHING_UTILITY_H */
    diff --git a/ace/Caching_Utility_T.i b/ace/Caching_Utility_T.i
    deleted file mode 100644
    index acecbfb986d..00000000000
    --- a/ace/Caching_Utility_T.i
    +++ /dev/null
    @@ -1,2 +0,0 @@
    -/* -*-C++-*- */
    -// $Id$
    diff --git a/ace/Cleanup_Strategies_T.cpp b/ace/Cleanup_Strategies_T.cpp
    deleted file mode 100644
    index ea0f023a0e5..00000000000
    --- a/ace/Cleanup_Strategies_T.cpp
    +++ /dev/null
    @@ -1,95 +0,0 @@
    -//$Id$
    -
    -#ifndef CLEANUP_STRATEGIES_T_C
    -#define CLEANUP_STRATEGIES_T_C
    -
    -#define ACE_BUILD_DLL
    -
    -#include "ace/Cleanup_Strategies_T.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -#define ACE_LACKS_PRAGMA_ONCE
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#if defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/Cleanup_Strategies_T.i"
    -#endif /* ACE_LACKS_INLINE_FUNCTIONS */
    -
    -ACE_RCSID(ace, Cleanup_Strategies_T, "$Id$")
    -
    -////////////////////////////////////////////////////////////////////////////
    -
    -template  int
    -ACE_Cleanup_Strategy::cleanup (CONTAINER &container,
    -                                                      KEY *key,
    -                                                      VALUE *value)
    -{
    -  ACE_UNUSED_ARG (value);
    -
    -  return container.unbind (*key);
    -}
    -
    -////////////////////////////////////////////////////////////////////////////
    -
    -template  int
    -ACE_Recyclable_Handler_Cleanup_Strategy::cleanup (CONTAINER &container,
    -                                                                         KEY *key,
    -                                                                         VALUE *)
    -{
    -  VALUE value;
    -
    -  if (container.unbind (*key, value) == -1)
    -    return -1;
    -
    -  value.first ()->recycler (0, 0);
    -
    -  value.first ()->close ();
    -
    -  return 0;
    -}
    -
    -/////////////////////////////////////////////////////////////////////////////
    -
    -template  int
    -ACE_Refcounted_Recyclable_Handler_Cleanup_Strategy::cleanup (CONTAINER &,
    -                                                                                    KEY *,
    -                                                                                    VALUE *value)
    -{
    -  return value->first ()->handle_close_i ();
    -}
    -
    -////////////////////////////////////////////////////////////////////////////
    -
    -template  int
    -ACE_Handler_Cleanup_Strategy::cleanup (CONTAINER &container,
    -                                                              KEY *key,
    -                                                              VALUE *value)
    -{
    -  // Remove the item from cache only if the handler isnt in use.
    -  if ((*value)->active () == 0)
    -    {
    -      (*value)->close ();
    -
    -      if (container.unbind (*key) == -1)
    -        return -1;
    -
    -    }
    -
    -  return 0;
    -}
    -
    -////////////////////////////////////////////////////////////////////////////
    -
    -template  int
    -ACE_Null_Cleanup_Strategy::cleanup (CONTAINER &container,
    -                                                           KEY *key,
    -                                                           VALUE *value)
    -{
    -  ACE_UNUSED_ARG (container);
    -  ACE_UNUSED_ARG (key);
    -  ACE_UNUSED_ARG (value);
    -
    -  return 0;
    -}
    -
    -#endif /* CLEANUP_STRATEGIES_T_C */
    diff --git a/ace/Cleanup_Strategies_T.h b/ace/Cleanup_Strategies_T.h
    deleted file mode 100644
    index a0c2e4294c9..00000000000
    --- a/ace/Cleanup_Strategies_T.h
    +++ /dev/null
    @@ -1,143 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Cleanup_Strategies_T.h
    -//
    -// = AUTHOR
    -//    Kirthika Parameswaran 
    -//
    -// ============================================================================
    -
    -#ifndef CLEANUP_STRATEGIES_H
    -#define CLEANUP_STRATEGIES_H
    -
    -#include "ace/OS.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -#define  ACE_LACKS_PRAGMA_ONCE
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -// For linkers that cant grok long names.
    -#define ACE_Cleanup_Strategy ACLE
    -
    -template 
    -class ACE_Cleanup_Strategy
    -{
    -  // = TITLE
    -  //     Defines a default strategy to be followed for cleaning up
    -  //     entries from a map which is the container.
    -  //
    -  // = DESCRIPTION
    -  //     By default the entry to be cleaned up is removed from the
    -  //     container.
    -
    -public:
    -
    -  virtual int cleanup (CONTAINER &container, KEY *key, VALUE *value);
    -  // The method which will do the cleanup of the entry in the container.
    -};
    -
    -//////////////////////////////////////////////////////////////////////
    -#define ACE_Recyclable_Handler_Cleanup_Strategy ARHCLE
    -
    -template 
    -class ACE_Recyclable_Handler_Cleanup_Strategy : public ACE_Cleanup_Strategy
    -{
    -  // = TITLE
    -  //     Defines a strategy to be followed for cleaning up
    -  //     entries which are svc_handlers from a container.
    -  //
    -  // = DESCRIPTION
    -  //     The entry to be cleaned up is removed from the container.
    -  //     Here, since we are dealing with svc_handlers specifically, we
    -  //     perform a couple of extra operations. Note: To be used when
    -  //     the handler is recyclable.
    -
    -public:
    -
    -  virtual int cleanup (CONTAINER &container, KEY *key, VALUE *value);
    -  // The method which will do the cleanup of the entry in the container.
    -};
    -
    -//////////////////////////////////////////////////////////////////////
    -#define ACE_Refcounted_Recyclable_Handler_Cleanup_Strategy ARRHCLE
    -
    -template 
    -class ACE_Refcounted_Recyclable_Handler_Cleanup_Strategy : public ACE_Cleanup_Strategy
    -{
    -  // = TITLE
    -  //     Defines a strategy to be followed for cleaning up
    -  //     entries which are svc_handlers from a container.
    -  //
    -  // = DESCRIPTION
    -  //     The entry to be cleaned up is removed from the container.
    -  //     Here, since we are dealing with recyclable svc_handlers with
    -  //     addresses which are refcountable specifically, we perform a
    -  //     couple of extra operations and do so without any locking. 
    -
    -public:
    -
    -  virtual int cleanup (CONTAINER &container, KEY *key, VALUE *value);
    -  // The method which will do the cleanup of the entry in the container.
    -};
    -
    -//////////////////////////////////////////////////////////////////////
    -
    -template 
    -class ACE_Handler_Cleanup_Strategy : public ACE_Cleanup_Strategy
    -{
    -  // = TITLE
    -  //     Defines a strategy to be followed for cleaning up
    -  //     entries which are svc_handlers from a container.
    -  //
    -  // = DESCRIPTION
    -  //     The entry to be cleaned up is removed from the container.
    -  //     Here, since we are dealing with svc_handlers specifically, we
    -  //     perform a couple of extra operations. Note: This cleanup strategy
    -  //     should be used in the case when the handler has the caching
    -  //     attributes.
    -
    -public:
    -
    -  virtual int cleanup (CONTAINER &container, KEY *key, VALUE *value);
    -  // The method which will do the cleanup of the entry in the container.
    -};
    -
    -//////////////////////////////////////////////////////////////////////
    -#define ACE_Null_Cleanup_Strategy ANCLE
    -
    -template 
    -class ACE_Null_Cleanup_Strategy : public ACE_Cleanup_Strategy
    -{
    -  // = TITLE
    -  //     Defines a do-nothing implementation of the cleanup strategy.
    -  //
    -  // = DESCRIPTION
    -  //     This class simply does nothing at all! Can be used to nullify
    -  //     the effect of the Cleanup Strategy.
    -
    -public:
    -
    -  virtual int cleanup (CONTAINER &container, KEY *key, VALUE *value);
    -  // The dummy cleanup method.
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Cleanup_Strategies_T.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
    -#include "ace/Cleanup_Strategies_T.cpp"
    -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
    -#pragma implementation ("Cleanup_Strategies_T.cpp")
    -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
    -
    -#endif /* CLEANUP_STRATEGIES_H */
    diff --git a/ace/Cleanup_Strategies_T.i b/ace/Cleanup_Strategies_T.i
    deleted file mode 100644
    index d2600eef20a..00000000000
    --- a/ace/Cleanup_Strategies_T.i
    +++ /dev/null
    @@ -1,2 +0,0 @@
    -/* -*-C++-*- */
    -//$Id$
    diff --git a/ace/Codeset_IBM1047.cpp b/ace/Codeset_IBM1047.cpp
    deleted file mode 100644
    index 65ef43502a6..00000000000
    --- a/ace/Codeset_IBM1047.cpp
    +++ /dev/null
    @@ -1,285 +0,0 @@
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Codeset_IBM1047.cpp
    -//
    -// = DESCRIPTION
    -//   Defines the arrays required to convert between ISO8859 (aka
    -//   Latin/1) and IBM1047 (aka EBCDIC).
    -//
    -// = AUTHOR
    -//   Jim Rogers (jrogers@viasoft.com)
    -//
    -// ============================================================================
    -
    -#include "ace/inc_user_config.h"
    -
    -#if defined(ACE_MVS)
    -
    -#include "ace/Codeset_IBM1047.h"
    -
    -ACE_RCSID(ace, Codeset_IBM1047, "$Id$")
    -
    -// ****************************************************************
    -
    -ACE_IBM1047_ISO8859::ACE_IBM1047_ISO8859 (void)
    -{
    -}
    -
    -ACE_IBM1047_ISO8859::~ACE_IBM1047_ISO8859 (void)
    -{
    -}
    -
    -ACE_CDR::Boolean
    -ACE_IBM1047_ISO8859::read_char (ACE_InputCDR &in,
    -                                ACE_CDR::Char &x)
    -{
    -  if (this->read_1 (in, ACE_reinterpret_cast (ACE_CDR::Octet*, &x)))
    -    {
    -      x = ACE_to_IBM1047[x];
    -      return 1;
    -    }
    -  return 0;
    -}
    -
    -ACE_CDR::Boolean
    -ACE_IBM1047_ISO8859::read_string (ACE_InputCDR& in,
    -                                  ACE_CDR::Char *& x)
    -{
    -  ACE_CDR::ULong len;
    -
    -  in.read_ulong (len);
    -
    -  if (len > 0)
    -    {
    -      ACE_NEW_RETURN (x,
    -                      ACE_CDR::Char[len],
    -                      0);
    -
    -      if (this->read_char_array (in, x, len))
    -        return 1;
    -
    -      delete [] x;
    -    }
    -
    -  x = 0;
    -  return 0;
    -}
    -
    -ACE_CDR::Boolean
    -ACE_IBM1047_ISO8859::read_char_array (ACE_InputCDR& in,
    -                                      ACE_CDR::Char* x,
    -                                      ACE_CDR::ULong len)
    -{
    -  if (this->read_array (in,
    -                        x,
    -                        ACE_CDR::OCTET_SIZE,
    -                        ACE_CDR::OCTET_ALIGN,
    -                        len))
    -    {
    -      for (ACE_CDR::ULong i = 0; i != len; ++i)
    -        x[i] = ACE_to_IBM1047[x[i]];
    -
    -      return 1;
    -    }
    -
    -  return 0;
    -}
    -
    -ACE_CDR::Boolean
    -ACE_IBM1047_ISO8859::write_char (ACE_OutputCDR& out,
    -                                 ACE_CDR::Char x)
    -{
    -  return this->write_1 (out,
    -                        ACE_reinterpret_cast (const ACE_CDR::Octet*,
    -                                              &ACE_from_IBM1047[x]));
    -}
    -
    -ACE_CDR::Boolean
    -ACE_IBM1047_ISO8859::write_string (ACE_OutputCDR& out,
    -                                   ACE_CDR::ULong len,
    -                                   const ACE_CDR::Char* x)
    -{
    -  if (out.write_ulong (len + 1))
    -    return this->write_char_array (out, x, len + 1);
    -  return 0;
    -}
    -
    -ACE_CDR::Boolean
    -ACE_IBM1047_ISO8859::write_char_array (ACE_OutputCDR& out,
    -                                       const ACE_CDR::Char* x,
    -                                       ACE_CDR::ULong len)
    -{
    -  char *buf;
    -  if (this->adjust (out, len, 1, buf) == 0)
    -    {
    -      ACE_OS::memcpy (buf, x, len);
    -
    -      for (ACE_CDR::ULong i = 0; i != len; ++i)
    -        buf[i] = ACE_from_IBM1047[buf[i]];
    -
    -      return 1;
    -    }
    -
    -  this->good_bit(out, 0);
    -  return 0;
    -}
    -
    -// ****************************************************************
    -
    -ACE_ISO8859_IBM1047::ACE_ISO8859_IBM1047 (void)
    -{
    -}
    -
    -ACE_ISO8859_IBM1047::~ACE_ISO8859_IBM1047 (void)
    -{
    -}
    -
    -ACE_CDR::Boolean
    -ACE_ISO8859_IBM1047::read_char (ACE_InputCDR& in,
    -                                ACE_CDR::Char& x)
    -{
    -  if (this->read_1 (in, ACE_reinterpret_cast (ACE_CDR::Octet*, &x)))
    -    {
    -      x = ACE_from_IBM1047[x];
    -      return 1;
    -    }
    -  return 0;
    -}
    -
    -ACE_CDR::Boolean
    -ACE_ISO8859_IBM1047::read_string (ACE_InputCDR &in,
    -                                  ACE_CDR::Char *&x)
    -{
    -  ACE_CDR::ULong len;
    -
    -  in.read_ulong (len);
    -
    -  if (len > 0)
    -    {
    -      ACE_NEW_RETURN (x,
    -                      ACE_CDR::Char[len],
    -                      0);
    -
    -      if (this->read_char_array (in, x, len))
    -        return 1;
    -
    -      delete [] x;
    -    }
    -
    -  x = 0;
    -  return 0;
    -}
    -
    -ACE_CDR::Boolean
    -ACE_ISO8859_IBM1047::read_char_array (ACE_InputCDR &in,
    -                                      ACE_CDR::Char *x,
    -                                      ACE_CDR::ULong len)
    -{
    -  if (this->read_array (in,
    -                        x,
    -                        ACE_CDR::OCTET_SIZE,
    -                        ACE_CDR::OCTET_ALIGN,
    -                        len))
    -    {
    -      for (ACE_CDR::ULong i = 0; i != len; ++i)
    -        x[i] = ACE_from_IBM1047[x[i]];
    -
    -      return 1;
    -    }
    -
    -  return 0;
    -}
    -
    -ACE_CDR::Boolean
    -ACE_ISO8859_IBM1047::write_char (ACE_OutputCDR &out,
    -                                 ACE_CDR::Char x)
    -{
    -  return this->write_1 (out,
    -                        ACE_reinterpret_cast (const ACE_CDR::Octet *,
    -                                              &ACE_to_IBM1047[x]));
    -}
    -
    -ACE_CDR::Boolean
    -ACE_ISO8859_IBM1047::write_string (ACE_OutputCDR& out,
    -                                   ACE_CDR::ULong len,
    -                                   const ACE_CDR::Char* x)
    -{
    -  if (out.write_ulong (len + 1))
    -    return this->write_char_array (out, x, len + 1);
    -  else
    -    return 0;
    -}
    -
    -ACE_CDR::Boolean
    -ACE_ISO8859_IBM1047::write_char_array (ACE_OutputCDR &out,
    -                                       const ACE_CDR::Char *x,
    -                                       ACE_CDR::ULong len)
    -{
    -  char *buf;
    -
    -  if (this->adjust (out, len, 1, buf) == 0)
    -    {
    -      ACE_OS::memcpy (buf, x, len);
    -
    -      for (ACE_CDR::ULong i = 0; i != len; ++i)
    -        buf[i] = ACE_to_IBM1047[buf[i]];
    -
    -      return 1;
    -    }
    -
    -  this->good_bit (out, 0);
    -  return 0;
    -}
    -
    -// ****************************************************************
    -
    -char ACE_to_IBM1047[257] =
    -{
    -  "\x00\x01\x02\x03\x37\x2D\x2E\x2F\x16\x05\x25\x0B\x0C\x0D\x0E\x0F" // 00-0F
    -  "\x10\x11\x12\x13\x3C\x3D\x32\x26\x18\x19\x3F\x27\x22\x1D\x35\x1F" // 10-1F
    -  "\x40\x5A\x7F\x7B\x5B\x6C\x50\x7D\x4D\x5D\x5C\x4E\x6B\x60\x4B\x61" // 20-2F
    -  "\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\x7A\x5E\x4C\x7E\x6E\x6F" // 30-3F
    -  "\x7C\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xD1\xD2\xD3\xD4\xD5\xD6" // 40-4F
    -  "\xD7\xD8\xD9\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xAD\xE0\xBD\x5F\x6D" // 50-5F
    -  "\x79\x81\x82\x83\x84\x85\x86\x87\x88\x89\x91\x92\x93\x94\x95\x96" // 60-6F
    -  "\x97\x98\x99\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xC0\x4F\xD0\xA1\x07" // 70-7F
    -  "\x43\x20\x21\x1C\x23\xEB\x24\x9B\x71\x28\x38\x49\x90\xBA\xEC\xDF" // 80-8F
    -  "\x45\x29\x2A\x9D\x72\x2B\x8A\x9A\x67\x56\x64\x4A\x53\x68\x59\x46" // 90-9F
    -  "\xEA\xDA\x2C\xDE\x8B\x55\x41\xFE\x58\x51\x52\x48\x69\xDB\x8E\x8D" // A0-AF
    -  "\x73\x74\x75\xFA\x15\xB0\xB1\xB3\xB4\xB5\x6A\xB7\xB8\xB9\xCC\xBC" // B0-BF
    -  "\xAB\x3E\x3B\x0A\xBF\x8F\x3A\x14\xA0\x17\xCB\xCA\x1A\x1B\x9C\x04" // C0-CF
    -  "\x34\xEF\x1E\x06\x08\x09\x77\x70\xBE\xBB\xAC\x54\x63\x65\x66\x62" // D0-DF
    -  "\x30\x42\x47\x57\xEE\x33\xB6\xE1\xCD\xED\x36\x44\xCE\xCF\x31\xAA" // E0-EF
    -  "\xFC\x9E\xAE\x8C\xDD\xDC\x39\xFB\x80\xAF\xFD\x78\x76\xB2\x9F\xFF" // F0-FF
    -};
    -
    -char ACE_from_IBM1047[257] =
    -{
    -  "\x00\x01\x02\x03\xCF\x09\xD3\x7F\xD4\xD5\xC3\x0B\x0C\x0D\x0E\x0F" // 00-0F
    -  "\x10\x11\x12\x13\xC7\xB4\x08\xC9\x18\x19\xCC\xCD\x83\x1D\xD2\x1F" // 10-1F
    -  "\x81\x82\x1C\x84\x86\x0A\x17\x1B\x89\x91\x92\x95\xA2\x05\x06\x07" // 20-2F
    -  "\x20\xEE\x16\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\xC1\x1A" // 30-3F
    -  "\x20\xA6\xE1\x80\xEB\x90\x9F\xE2\xAB\x8B\x9B\x2E\x3C\x28\x2B\x7C" // 40-4F
    -  "\x26\xA9\xAA\x9C\xDB\xA5\x99\xE3\xA8\x9E\x21\x24\x2A\x29\x3B\x5E" // 50-5F
    -  "\x2D\x2F\xDF\xDC\x9A\xDD\xDE\x98\x9D\xAC\xBA\x2C\x25\x5F\x3E\x3F" // 60-6F
    -  "\xD7\x88\x94\xB0\xB1\xB2\xFC\xD6\xFB\x60\x3A\x23\x40\x27\x3D\x22" // 70-7F
    -  "\xF8\x61\x62\x63\x64\x65\x66\x67\x68\x69\x96\xA4\xF3\xAF\xAE\xC5" // 80-8F
    -  "\x8C\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x97\x87\xCE\x93\xF1\xFE" // 90-9F
    -  "\xC8\x7E\x73\x74\x75\x76\x77\x78\x79\x7A\xEF\xC0\xDA\x5B\xF2\xF9" // A0-AF
    -  "\xB5\xB6\xFD\xB7\xB8\xB9\xE6\xBB\xBC\xBD\x8D\xD9\xBF\x5D\xD8\xC4" // B0-BF
    -  "\x7B\x41\x42\x43\x44\x45\x46\x47\x48\x49\xCB\xCA\xBE\xE8\xEC\xED" // C0-CF
    -  "\x7D\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\xA1\xAD\xF5\xF4\xA3\x8F" // D0-DF
    -  "\x5C\xE7\x53\x54\x55\x56\x57\x58\x59\x5A\xA0\x85\x8E\xE9\xE4\xD1" // E0-EF
    -  "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\xB3\xF7\xF0\xFA\xA7\xFF" // F0-FF
    -};
    -
    -#elif defined (__HP_aCC)
    -// Make aC++ stop complaining about an empty translation unit
    -static int shut_up_aCC = 0;
    -#endif /* ACE_MVS */
    diff --git a/ace/Codeset_IBM1047.h b/ace/Codeset_IBM1047.h
    deleted file mode 100644
    index 1f9d19292b4..00000000000
    --- a/ace/Codeset_IBM1047.h
    +++ /dev/null
    @@ -1,110 +0,0 @@
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Codeset_IBM1047.cpp
    -//
    -// = DESCRIPTION
    -//   Declares the arrays required to convert between ISO8859 (aka
    -//   Latin/1) and IBM1047 (aka EBCDIC).
    -//
    -// = AUTHOR
    -//   Jim Rogers (jrogers@viasoft.com)
    -//
    -// ============================================================================
    -
    -#ifndef ACE_CODESET_IMB1047_H
    -#define ACE_CODESET_IMB1047_H
    -
    -#if defined(ACE_MVS)
    -
    -#include "ace/CDR_Stream.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -extern ACE_Export char ACE_to_IBM1047[257];
    -extern ACE_Export char ACE_from_IBM1047[257];
    -
    -// ****************************************************************
    -
    -class ACE_Export ACE_IBM1047_ISO8859 : public ACE_Char_Codeset_Translator
    -{
    -  // = TITLE
    -  //     Codeset translation specialization.
    -  //
    -  // = DESCRIPTION
    -  //     This class performs the codeset translation:
    -  //
    -  //     Native:        IBM_1047 (i.e. EBCDIC)
    -  //     Stream:        ISO-8859 (i.e. Latin/1)
    -  //
    -public:
    -  ACE_IBM1047_ISO8859 (void);
    -  // A do nothing constructor.
    -
    -  virtual ~ACE_IBM1047_ISO8859 (void);
    -  // Virtual destruction
    -
    -  // = Documented in $ACE_ROOT/ace/CDR_Stream.h
    -  virtual ACE_CDR::Boolean read_char (ACE_InputCDR &,
    -                                      ACE_CDR::Char &);
    -  virtual ACE_CDR::Boolean read_string (ACE_InputCDR &,
    -                                        ACE_CDR::Char *&);
    -  virtual ACE_CDR::Boolean read_char_array (ACE_InputCDR &,
    -                                            ACE_CDR::Char *,
    -                                            ACE_CDR::ULong);
    -  virtual ACE_CDR::Boolean write_char (ACE_OutputCDR &,
    -                                       ACE_CDR::Char);
    -  virtual ACE_CDR::Boolean write_string (ACE_OutputCDR &,
    -                                         ACE_CDR::ULong,
    -                                         const ACE_CDR::Char *);
    -  virtual ACE_CDR::Boolean write_char_array (ACE_OutputCDR &,
    -                                             const ACE_CDR::Char *,
    -                                             ACE_CDR::ULong);
    -};
    -
    -class ACE_Export ACE_ISO8859_IBM1047 : public ACE_Char_Codeset_Translator
    -{
    -  // = TITLE
    -  //     Codeset translation specialization.
    -  //
    -  // = DESCRIPTION
    -  //     This class performs the codeset translation:
    -  //
    -  //     Native:        ISO-8859 (i.e. Latin/1)
    -  //     Stream:        IBM-1047 (i.e. EBCDIC)
    -  //
    -public:
    -  ACE_ISO8859_IBM1047 (void);
    -  // A do nothing constructor.
    -
    -  virtual ~ACE_ISO8859_IBM1047 (void);
    -  // Virtual destruction
    -
    -  // = Documented in $ACE_ROOT/ace/CDR_Stream.h
    -  virtual ACE_CDR::Boolean read_char (ACE_InputCDR &,
    -                                      ACE_CDR::Char &);
    -  virtual ACE_CDR::Boolean read_string (ACE_InputCDR &,
    -                                        ACE_CDR::Char *&);
    -  virtual ACE_CDR::Boolean read_char_array (ACE_InputCDR &,
    -                                            ACE_CDR::Char *,
    -                                            ACE_CDR::ULong);
    -  virtual ACE_CDR::Boolean write_char (ACE_OutputCDR &,
    -                                       ACE_CDR::Char);
    -  virtual ACE_CDR::Boolean write_string (ACE_OutputCDR &,
    -                                         ACE_CDR::ULong,
    -                                         const ACE_CDR::Char *);
    -  virtual ACE_CDR::Boolean write_char_array (ACE_OutputCDR &,
    -                                             const ACE_CDR::Char *,
    -                                             ACE_CDR::ULong);
    -};
    -
    -#endif /* ACE_MVS */
    -
    -#endif /* ACE_CODESET_IMB1047_H */
    diff --git a/ace/Connector.cpp b/ace/Connector.cpp
    deleted file mode 100644
    index 02d3e1d54b8..00000000000
    --- a/ace/Connector.cpp
    +++ /dev/null
    @@ -1,924 +0,0 @@
    -// Connector.cpp
    -// $Id$
    -
    -#ifndef ACE_CONNECTOR_C
    -#define ACE_CONNECTOR_C
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Connector.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -ACE_RCSID(ace, Connector, "$Id$")
    -
    -// Shorthand names.
    -#define SH SVC_HANDLER
    -#define PR_CO_1 ACE_PEER_CONNECTOR_1
    -#define PR_CO_2 ACE_PEER_CONNECTOR_2
    -#define PR_AD ACE_PEER_CONNECTOR_ADDR
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Connector)
    -
    -template  void
    -ACE_Connector::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Connector::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("\nclosing_ = %d"), this->closing_));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("\nflags_ = %d"), this->flags_));
    -  this->handler_map_.dump ();
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -// Bridge method for creating a SVC_HANDLER.  The strategy for
    -// creating a SVC_HANDLER are configured into the Acceptor via it's
    -// .  The default is to create a new SVC_HANDLER.
    -// However, subclasses can override this strategy to perform
    -// SVC_HANDLER creation in any way that they like (such as creating
    -// subclass instances of SVC_HANDLER, using a singleton, dynamically
    -// linking the handler, etc.).
    -
    -template  int
    -ACE_Connector::make_svc_handler (SVC_HANDLER *&sh)
    -{
    -  ACE_TRACE ("ACE_Connector::make_svc_handler");
    -
    -  if (sh == 0)
    -    ACE_NEW_RETURN (sh,
    -                    SH,
    -                    -1);
    -
    -  // Set the reactor of the newly created  to the same
    -  // reactor that this  is using.
    -  if (this->reactor ())
    -    sh->reactor (this->reactor ());
    -  return 0;
    -}
    -
    -template  int
    -ACE_Connector::activate_svc_handler (SVC_HANDLER *svc_handler)
    -{
    -  ACE_TRACE ("ACE_Connector::activate_svc_handler");
    -  // No errors initially
    -  int error = 0;
    -
    -  // See if we should enable non-blocking I/O on the 's
    -  // peer.
    -  if (ACE_BIT_ENABLED (this->flags_, ACE_NONBLOCK) != 0)
    -    {
    -      if (svc_handler->peer ().enable (ACE_NONBLOCK) == -1)
    -        error = 1;
    -    }
    -  // Otherwise, make sure it's disabled by default.
    -  else if (svc_handler->peer ().disable (ACE_NONBLOCK) == -1)
    -    error = 1;
    -
    -  // We are connected now, so try to open things up.
    -  if (error || svc_handler->open ((void *) this) == -1)
    -    {
    -      // Make sure to close down the  to avoid descriptor
    -      // leaks.
    -      svc_handler->close (0);
    -      return -1;
    -    }
    -  else
    -    return 0;
    -}
    -
    -template  int
    -ACE_Connector::connect_svc_handler (SVC_HANDLER *&svc_handler,
    -                                                 const PR_AD &remote_addr,
    -                                                 ACE_Time_Value *timeout,
    -                                                 const PR_AD &local_addr,
    -                                                 int reuse_addr,
    -                                                 int flags,
    -                                                 int perms)
    -{
    -  ACE_TRACE ("ACE_Connector::connect_svc_handler");
    -
    -  return this->connector_.connect (svc_handler->peer (),
    -                                   remote_addr,
    -                                   timeout,
    -                                   local_addr,
    -                                   reuse_addr,
    -                                   flags,
    -                                   perms);
    -}
    -
    -template  int
    -ACE_Connector::connect_svc_handler (SVC_HANDLER *&svc_handler,
    -                                                 SVC_HANDLER *&sh_copy,
    -                                                 const PR_AD &remote_addr,
    -                                                 ACE_Time_Value *timeout,
    -                                                 const PR_AD &local_addr,
    -                                                 int reuse_addr,
    -                                                 int flags,
    -                                                 int perms)
    -{
    -  ACE_TRACE ("ACE_Connector::connect_svc_handler");
    -
    -  sh_copy = svc_handler;
    -  return this->connector_.connect (svc_handler->peer (),
    -                                   remote_addr,
    -                                   timeout,
    -                                   local_addr,
    -                                   reuse_addr,
    -                                   flags,
    -                                   perms);
    -}
    -
    -template  int
    -ACE_Connector::open (ACE_Reactor *r, int flags)
    -{
    -  ACE_TRACE ("ACE_Connector::open");
    -  this->reactor (r);
    -  this->flags_ = flags;
    -  this->closing_ = 0;
    -  return 0;
    -}
    -
    -template 
    -ACE_Connector::ACE_Connector (ACE_Reactor *r, int flags)
    -{
    -  ACE_TRACE ("ACE_Connector::ACE_Connector");
    -  (void) this->open (r, flags);
    -}
    -
    -template 
    -ACE_Svc_Tuple::ACE_Svc_Tuple (SVC_HANDLER *sh,
    -                                  ACE_HANDLE handle,
    -                                  const void *arg,
    -                                  long id)
    -  : svc_handler_ (sh),
    -    handle_ (handle),
    -    arg_ (arg),
    -    cancellation_id_ (id)
    -{
    -  ACE_TRACE ("ACE_Svc_Tuple::ACE_Svc_Tuple");
    -}
    -
    -template  SVC_HANDLER *
    -ACE_Svc_Tuple::svc_handler (void)
    -{
    -  ACE_TRACE ("ACE_Svc_Tuple::svc_handler");
    -  return this->svc_handler_;
    -}
    -
    -template  const void *
    -ACE_Svc_Tuple::arg (void)
    -{
    -  ACE_TRACE ("ACE_Svc_Tuple::arg");
    -  return this->arg_;
    -}
    -
    -template  void
    -ACE_Svc_Tuple::arg (const void *v)
    -{
    -  ACE_TRACE ("ACE_Svc_Tuple::arg");
    -  this->arg_ = v;
    -}
    -
    -template  ACE_HANDLE
    -ACE_Svc_Tuple::handle (void)
    -{
    -  ACE_TRACE ("ACE_Svc_Tuple::handle");
    -  return this->handle_;
    -}
    -
    -template  void
    -ACE_Svc_Tuple::handle (ACE_HANDLE h)
    -{
    -  ACE_TRACE ("ACE_Svc_Tuple::handle");
    -  this->handle_ = h;
    -}
    -
    -template  long
    -ACE_Svc_Tuple::cancellation_id (void)
    -{
    -  ACE_TRACE ("ACE_Svc_Tuple::cancellation_id");
    -  return this->cancellation_id_;
    -}
    -
    -template  void
    -ACE_Svc_Tuple::cancellation_id (long id)
    -{
    -  ACE_TRACE ("ACE_Svc_Tuple::cancellation_id");
    -  this->cancellation_id_ = id;
    -}
    -
    -template  void
    -ACE_Svc_Tuple::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Svc_Tuple::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("svc_handler_ = %x"), this->svc_handler_));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("\narg_ = %x"), this->arg_));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("\ncancellation_id_ = %d"), this->cancellation_id_));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -// This method is called if a connection times out before completing.
    -// In this case, we call our cleanup_AST() method to cleanup the
    -// descriptor from the ACE_Connector's table.
    -
    -template  int
    -ACE_Connector::handle_timeout (const ACE_Time_Value &tv,
    -                                            const void *arg)
    -{
    -  ACE_TRACE ("ACE_Connector::handle_timeout");
    -  AST *ast = 0;
    -
    -  if (this->cleanup_AST (((AST *) arg)->handle (),
    -                         ast) == -1)
    -    return -1;
    -  else
    -    {
    -      ACE_ASSERT (((AST *) arg) == ast);
    -
    -      // We may need this seemingly unnecessary assignment to work
    -      // around a bug with MSVC++?
    -      SH *sh = ast->svc_handler ();
    -
    -      // Forward to the SVC_HANDLER the  that was passed in as a
    -      // magic cookie during ACE_Connector::connect().  This gives the
    -      // SVC_HANDLER an opportunity to take corrective action (e.g.,
    -      // wait a few milliseconds and try to reconnect again.
    -      if (sh->handle_timeout (tv, ast->arg ()) == -1)
    -        sh->handle_close (sh->get_handle (), ACE_Event_Handler::TIMER_MASK);
    -
    -      delete ast;
    -      return 0;
    -    }
    -}
    -
    -template  int
    -ACE_Connector::cleanup_AST (ACE_HANDLE handle,
    -                                         ACE_Svc_Tuple *&ast)
    -{
    -  ACE_TRACE ("ACE_Connector::cleanup_AST");
    -
    -  // Locate the ACE_Svc_Handler corresponding to the socket
    -  // descriptor.
    -  if (this->handler_map_.find (handle, ast) == -1)
    -    {
    -      // Error, entry not found in map.
    -      errno = ENOENT;
    -      ACE_ERROR_RETURN ((LM_ERROR,
    -                         ASYS_TEXT ("%p %d not found in map\n"),
    -                         ASYS_TEXT ("find"),
    -                         handle),
    -                        -1);
    -    }
    -
    -  // Try to remove from ACE_Timer_Queue but if it's not there we
    -  // ignore the error.
    -  this->reactor ()->cancel_timer (ast->cancellation_id ());
    -
    -  // Remove ACE_HANDLE from ACE_Reactor.
    -  this->reactor ()->remove_handler
    -    (handle, ACE_Event_Handler::ALL_EVENTS_MASK | ACE_Event_Handler::DONT_CALL);
    -
    -  // Remove ACE_HANDLE from the map.
    -  this->handler_map_.unbind (handle);
    -  return 0;
    -}
    -
    -// Called when a failure occurs during asynchronous connection
    -// establishment.  Simply delegate all work to this->handle_output().
    -
    -template  int
    -ACE_Connector::handle_input (ACE_HANDLE h)
    -{
    -  ACE_TRACE ("ACE_Connector::handle_input");
    -  AST *ast = 0;
    -
    -  if (this->cleanup_AST (h, ast) != -1)
    -    {
    -      ast->svc_handler ()->close (0);
    -      delete ast;
    -    }
    -  return 0; // Already removed from the ACE_Reactor.
    -}
    -
    -// Finalize a connection established in non-blocking mode.  When a
    -// non-blocking connect *succeeds* the descriptor becomes enabled for
    -// writing...  Likewise, it is generally the case that when a
    -// non-blocking connect *fails* the descriptor becomes enabled for
    -// reading.
    -
    -template  int
    -ACE_Connector::handle_output (ACE_HANDLE handle)
    -{
    -  ACE_TRACE ("ACE_Connector::handle_output");
    -  AST *ast = 0;
    -
    -  if (this->cleanup_AST (handle, ast) == -1)
    -    return 0;
    -
    -  ACE_ASSERT (ast != 0);   // This shouldn't happen!
    -
    -  // Try to find out if the reactor uses event associations for the
    -  // handles it waits on. If so we need to reset it.
    -  int reset_new_handle = this->reactor ()->uses_event_associations ();
    -
    -  if (reset_new_handle)
    -    this->connector_.reset_new_handle (handle);
    -
    -  // Transfer ownership of the ACE_HANDLE to the SVC_HANDLER.
    -  ast->svc_handler ()->set_handle (handle);
    -
    -  PR_AD raddr;
    -
    -#if defined (ACE_HAS_BROKEN_NON_BLOCKING_CONNECTS)
    -  // Win32 has a timing problem - if you check to see if the
    -  // connection has completed too fast, it will fail - so wait 35
    -  // millisecond to let it catch up.
    -  ACE_Time_Value tv (0, ACE_NON_BLOCKING_BUG_DELAY);
    -  ACE_OS::sleep (tv);
    -#endif /* ACE_HAS_BROKEN_NON_BLOCKING_CONNECTS */
    -
    -  // Check to see if we're connected.
    -  if (ast->svc_handler ()->peer ().get_remote_addr (raddr) != -1)
    -    this->activate_svc_handler (ast->svc_handler ());
    -  else // Somethings gone wrong, so close down...
    -    ast->svc_handler ()->close (0);
    -
    -  delete ast;
    -  return 0;
    -}
    -
    -template  int
    -ACE_Connector::handle_exception (ACE_HANDLE h)
    -{
    -  ACE_TRACE ("ACE_Connector::handle_exception");
    -
    -  return this->handle_output (h);
    -}
    -
    -// Initiate connection to peer.
    -
    -template  int
    -ACE_Connector::connect (SH *&sh,
    -                                     const PR_AD &remote_addr,
    -                                     const ACE_Synch_Options &synch_options,
    -                                     const PR_AD &local_addr,
    -                                     int reuse_addr,
    -                                     int flags,
    -                                     int perms)
    -{
    -  return this->connect_i (sh,
    -                          0,
    -                          remote_addr,
    -                          synch_options,
    -                          local_addr,
    -                          reuse_addr,
    -                          flags,
    -                          perms);
    -}
    -
    -template  int
    -ACE_Connector::connect (SH *&sh,
    -                                     SH *&sh_copy,
    -                                     const PR_AD &remote_addr,
    -                                     const ACE_Synch_Options &synch_options,
    -                                     const PR_AD &local_addr,
    -                                     int reuse_addr,
    -                                     int flags,
    -                                     int perms)
    -{
    -  return this->connect_i (sh,
    -                          &sh_copy,
    -                          remote_addr,
    -                          synch_options,
    -                          local_addr,
    -                          reuse_addr,
    -                          flags,
    -                          perms);
    -}
    -
    -template  int
    -ACE_Connector::connect_i (SH *&sh,
    -                                       SH **sh_copy,
    -                                       const PR_AD &remote_addr,
    -                                       const ACE_Synch_Options &synch_options,
    -                                       const PR_AD &local_addr,
    -                                       int reuse_addr,
    -                                       int flags,
    -                                       int perms)
    -{
    -  ACE_TRACE ("ACE_Connector::connect");
    -
    -  SH* new_sh = sh;
    -  // If the user hasn't supplied us with a  we'll use the
    -  // factory method to create one.  Otherwise, things will remain as
    -  // they are...
    -  if (this->make_svc_handler (new_sh) == -1)
    -    return -1;
    -
    -  ACE_Time_Value *timeout;
    -  int use_reactor = synch_options[ACE_Synch_Options::USE_REACTOR];
    -
    -  if (use_reactor)
    -    timeout = (ACE_Time_Value *) &ACE_Time_Value::zero;
    -  else
    -    timeout = (ACE_Time_Value *) synch_options.time_value ();
    -
    -  int result;
    -  if (sh_copy == 0)
    -    result = this->connect_svc_handler (new_sh,
    -                                        remote_addr,
    -                                        timeout,
    -                                        local_addr,
    -                                        reuse_addr,
    -                                        flags,
    -                                        perms);
    -  else
    -    result = this->connect_svc_handler (new_sh,
    -                                        *sh_copy,
    -                                        remote_addr,
    -                                        timeout,
    -                                        local_addr,
    -                                        reuse_addr,
    -                                        flags,
    -                                        perms);
    -
    -  // Delegate to connection strategy.
    -  if (result == -1)
    -    {
    -      if (use_reactor && errno == EWOULDBLOCK)
    -        {
    -          // If the connection hasn't completed and we are using
    -          // non-blocking semantics then register ourselves with the
    -          // ACE_Reactor so that it will call us back when the
    -          // connection is complete or we timeout, whichever comes
    -          // first...  Note that we needn't check the return value
    -          // here because if something goes wrong that will reset
    -          // errno this will be detected by the caller (since -1 is
    -          // being returned...).
    -          sh = new_sh;
    -          this->create_AST (sh, synch_options);
    -        }
    -      else
    -        {
    -          // Save/restore errno.
    -          ACE_Errno_Guard error (errno);
    -          // Make sure to close down the Channel to avoid descriptor
    -          // leaks.
    -          new_sh->close (0);
    -        }
    -      return -1;
    -    }
    -  else
    -    {
    -      // Activate immediately if we are connected.
    -      sh = new_sh;
    -      return this->activate_svc_handler (sh);
    -    }
    -}
    -
    -// Initiate connection to peer.
    -
    -template  int
    -ACE_Connector::connect_n (size_t n,
    -                                       SH *sh[],
    -                                       PR_AD remote_addrs[],
    -                                       ASYS_TCHAR *failed_svc_handlers,
    -                                       const ACE_Synch_Options &synch_options)
    -{
    -  int result = 0;
    -
    -  for (size_t i = 0; i < n; i++)
    -    {
    -      if (this->connect (sh[i], remote_addrs[i], synch_options) == -1
    -          && !(synch_options[ACE_Synch_Options::USE_REACTOR]
    -               && errno == EWOULDBLOCK))
    -        {
    -          result = -1;
    -          if (failed_svc_handlers != 0)
    -            // Mark this entry as having failed.
    -            failed_svc_handlers[i] = 1;
    -        }
    -      else if (failed_svc_handlers != 0)
    -        // Mark this entry as having succeeded.
    -        failed_svc_handlers[i] = 0;
    -    }
    -
    -  return result;
    -}
    -
    -// Cancel a  that was started asynchronously.
    -template  int
    -ACE_Connector::cancel (SH *sh)
    -{
    -  ACE_TRACE ("ACE_Connector::cancel");
    -  MAP_ITERATOR mi (this->handler_map_);
    -
    -  for (MAP_ENTRY *me = 0;
    -       mi.next (me) != 0;
    -       mi.advance ())
    -    if (me->int_id_->svc_handler () == sh)
    -      {
    -        AST *ast = 0;
    -        this->cleanup_AST (me->ext_id_, ast);
    -        ACE_ASSERT (ast == me->int_id_);
    -        delete ast;
    -        return 0;
    -      }
    -
    -  return -1;
    -}
    -
    -// Register the pending SVC_HANDLER with the map so that it can be
    -// activated later on when the connection complets.
    -
    -template  int
    -ACE_Connector::create_AST (SH *sh,
    -                                        const ACE_Synch_Options &synch_options)
    -{
    -  // Save/restore errno.
    -  ACE_Errno_Guard error (errno);
    -  ACE_TRACE ("ACE_Connector::create_AST");
    -  AST *ast;
    -
    -  ACE_NEW_RETURN (ast,
    -                  AST (sh,
    -                       sh->get_handle (),
    -                       synch_options.arg (), -1),
    -                  -1);
    -
    -  // Register this with the reactor for connection events.
    -  ACE_Reactor_Mask mask = ACE_Event_Handler::CONNECT_MASK;
    -
    -  // Bind ACE_Svc_Tuple with the ACE_HANDLE we're trying to connect.
    -  if (this->handler_map_.bind (sh->get_handle (), ast) == -1)
    -    goto fail1;
    -
    -  else if (this->reactor ()->register_handler (sh->get_handle (), this, mask) == -1)
    -    goto fail2;
    -  // If we're starting connection under timer control then we need to
    -  // schedule a timeout with the ACE_Reactor.
    -  else
    -    {
    -      ACE_Time_Value *tv = (ACE_Time_Value *) synch_options.time_value ();
    -
    -      if (tv != 0)
    -        {
    -          int cancellation_id =
    -            this->reactor ()->schedule_timer
    -              (this, (const void *) ast, *tv);
    -          if (cancellation_id == -1)
    -            goto fail3;
    -
    -          ast->cancellation_id (cancellation_id);
    -          return 0;
    -        }
    -      else
    -        return 0; // Ok, everything worked just fine...
    -    }
    -
    -  // Undo previous actions using the ol' "goto label and fallthru"
    -  // trick...
    -fail3:
    -  this->reactor ()->remove_handler (this,
    -                                    mask | ACE_Event_Handler::DONT_CALL);
    -  /* FALLTHRU */
    -fail2:
    -  this->handler_map_.unbind (sh->get_handle ());
    -  /* FALLTHRU */
    -fail1:
    -
    -  // Close the svc_handler
    -  sh->close (0);
    -
    -  delete ast;
    -  return -1;
    -}
    -
    -// Terminate the Client ACE_Connector by iterating over any
    -// unconnected ACE_Svc_Handler's and removing them from the
    -// ACE_Reactor.  Note that we can't call handle_close() back at this
    -// point since we own these things and we'll just get called
    -// recursively!
    -
    -template  int
    -ACE_Connector::close (void)
    -{
    -  ACE_TRACE ("ACE_Connector::close");
    -  return this->handle_close ();
    -}
    -
    -template  int
    -ACE_Connector::handle_close (ACE_HANDLE, ACE_Reactor_Mask)
    -{
    -  ACE_TRACE ("ACE_Connector::handle_close");
    -
    -  if (this->reactor () != 0 && this->closing_ == 0)
    -    {
    -      // We're closing down now, so make sure not to call ourselves
    -      // recursively via other calls to handle_close() (e.g., from the
    -      // Timer_Queue).
    -      this->closing_ = 1;
    -
    -      MAP_ITERATOR mi (this->handler_map_);
    -
    -      // Iterate through the map and shut down all the pending handlers.
    -
    -      for (MAP_ENTRY *me = 0;
    -           mi.next (me) != 0;
    -           mi.advance ())
    -        {
    -          AST *ast = 0;
    -          this->cleanup_AST (me->ext_id_, ast);
    -
    -          // Close the svc_handler
    -          ACE_ASSERT (ast == me->int_id_);
    -          me->int_id_->svc_handler ()->close (0);
    -
    -          delete ast;
    -        }
    -    }
    -
    -  return 0;
    -}
    -template  int
    -ACE_Connector::fini (void)
    -{
    -  ACE_TRACE ("ACE_Connector::fini");
    -
    -  // Make sure to call close here since our destructor might not be
    -  // called if we're being dynamically linked via the svc.conf.
    -  this->handler_map_.close ();
    -
    -  // Make sure we call our handle_close(), not a subclass's!
    -  return ACE_Connector::handle_close ();
    -}
    -
    -// Hook called by the explicit dynamic linking facility.
    -
    -template  int
    -ACE_Connector::init (int, ASYS_TCHAR *[])
    -{
    -  ACE_TRACE ("ACE_Connector::init");
    -  return -1;
    -}
    -
    -template  int
    -ACE_Connector::suspend (void)
    -{
    -  ACE_TRACE ("ACE_Connector::suspend");
    -  return -1;
    -}
    -
    -template  int
    -ACE_Connector::resume (void)
    -{
    -  ACE_TRACE ("ACE_Connector::resume");
    -  return -1;
    -}
    -
    -template  int
    -ACE_Connector::info (ASYS_TCHAR **strp, size_t length) const
    -{
    -  ACE_TRACE ("ACE_Connector::info");
    -  ASYS_TCHAR buf[BUFSIZ];
    -
    -  ACE_OS::sprintf (buf,
    -                   ASYS_TEXT ("%s\t %s"),
    -                   ASYS_TEXT ("ACE_Connector"),
    -                   ASYS_TEXT ("# connector factory\n"));
    -
    -  if (*strp == 0 && (*strp = ACE_OS::strdup (buf)) == 0)
    -    return -1;
    -  else
    -    ACE_OS::strncpy (*strp, buf, length);
    -  return ACE_OS::strlen (buf);
    -}
    -
    -template 
    -ACE_Connector::~ACE_Connector (void)
    -{
    -  ACE_TRACE ("ACE_Connector::~ACE_Connector");
    -  // We will call our handle_close(), not a subclass's, due to the way
    -  // that C++ destructors work.
    -  this->handle_close ();
    -}
    -
    -template  int
    -ACE_Strategy_Connector::open (ACE_Reactor *r, int flags)
    -{
    -  ACE_TRACE ("ACE_Connector::open");
    -  return this->open (r, 0, 0, 0, flags);
    -}
    -
    -template  int
    -ACE_Strategy_Connector::open
    -  (ACE_Reactor *r,
    -   ACE_Creation_Strategy *cre_s,
    -   ACE_Connect_Strategy *conn_s,
    -   ACE_Concurrency_Strategy *con_s,
    -   int flags)
    -{
    -  ACE_TRACE ("ACE_Connector::open");
    -
    -  this->reactor (r);
    -
    -  // @@ Not implemented yet.
    -  // this->flags_ = flags;
    -  ACE_UNUSED_ARG (flags);
    -
    -  // Initialize the creation strategy.
    -
    -  // First we decide if we need to clean up.
    -  if (this->creation_strategy_ != 0 &&
    -      this->delete_creation_strategy_ != 0 &&
    -      cre_s != 0)
    -    {
    -      delete this->creation_strategy_;
    -      this->creation_strategy_ = 0;
    -      this->delete_creation_strategy_ = 0;
    -    }
    -
    -  if (cre_s != 0)
    -    this->creation_strategy_ = cre_s;
    -  else if (this->creation_strategy_ == 0)
    -    {
    -      ACE_NEW_RETURN (this->creation_strategy_,
    -                      CREATION_STRATEGY,
    -                      -1);
    -      this->delete_creation_strategy_ = 1;
    -    }
    -
    -
    -  // Initialize the accept strategy.
    -
    -  if (this->connect_strategy_ != 0 &&
    -      this->delete_connect_strategy_ != 0 &&
    -      conn_s != 0)
    -    {
    -      delete this->connect_strategy_;
    -      this->connect_strategy_ = 0;
    -      this->delete_connect_strategy_ = 0;
    -    }
    -
    -    if (conn_s != 0)
    -      this->connect_strategy_ = conn_s;
    -    else if (this->connect_strategy_ == 0)
    -      {
    -        ACE_NEW_RETURN (this->connect_strategy_,
    -                        CONNECT_STRATEGY,
    -                        -1);
    -        this->delete_connect_strategy_ = 1;
    -      }
    -
    -  // Initialize the concurrency strategy.
    -
    -  if (this->concurrency_strategy_ != 0 &&
    -      this->delete_concurrency_strategy_ != 0 &&
    -      con_s != 0)
    -    {
    -      delete this->concurrency_strategy_;
    -      this->concurrency_strategy_ = 0;
    -      this->delete_concurrency_strategy_ = 0;
    -    }
    -
    -  if (con_s != 0)
    -    this->concurrency_strategy_ = con_s;
    -  else if (this->concurrency_strategy_ == 0)
    -    {
    -      ACE_NEW_RETURN (this->concurrency_strategy_,
    -                      CONCURRENCY_STRATEGY,
    -                      -1);
    -      this->delete_concurrency_strategy_ = 1;
    -    }
    -
    -  return 0;
    -}
    -
    -template 
    -ACE_Strategy_Connector::ACE_Strategy_Connector
    -  (ACE_Reactor *reactor,
    -   ACE_Creation_Strategy *cre_s,
    -   ACE_Connect_Strategy *conn_s,
    -   ACE_Concurrency_Strategy *con_s,
    -   int flags)
    -    : creation_strategy_ (0),
    -      delete_creation_strategy_ (0),
    -      connect_strategy_ (0),
    -      delete_connect_strategy_ (0),
    -      concurrency_strategy_ (0),
    -      delete_concurrency_strategy_ (0)
    -{
    -  ACE_TRACE ("ACE_Connector::ACE_Connector");
    -
    -  if (this->open (reactor, cre_s, conn_s, con_s, flags) == -1)
    -    ACE_ERROR ((LM_ERROR,  ASYS_TEXT ("%p\n"),  ASYS_TEXT ("ACE_Strategy_Connector::ACE_Strategy_Connector")));
    -}
    -
    -template 
    -ACE_Strategy_Connector::~ACE_Strategy_Connector (void)
    -{
    -  ACE_TRACE ("ACE_Strategy_Connector::~ACE_Strategy_Connector");
    -
    -  // Close down
    -  this->close ();
    -}
    -
    -template  int
    -ACE_Strategy_Connector::close (void)
    -{
    -  if (this->delete_creation_strategy_)
    -    delete this->creation_strategy_;
    -  this->delete_creation_strategy_ = 0;
    -  this->creation_strategy_ = 0;
    -
    -  if (this->delete_connect_strategy_)
    -    delete this->connect_strategy_;
    -  this->delete_connect_strategy_ = 0;
    -  this->connect_strategy_ = 0;
    -
    -  if (this->delete_concurrency_strategy_)
    -    delete this->concurrency_strategy_;
    -  this->delete_concurrency_strategy_ = 0;
    -  this->concurrency_strategy_ = 0;
    -
    -  return SUPER::close ();
    -}
    -
    -template  int
    -ACE_Strategy_Connector::make_svc_handler (SVC_HANDLER *&sh)
    -{
    -  return this->creation_strategy_->make_svc_handler (sh);
    -}
    -
    -template  int
    -ACE_Strategy_Connector::connect_svc_handler
    -  (SVC_HANDLER *&sh,
    -   const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    -   ACE_Time_Value *timeout,
    -   const ACE_PEER_CONNECTOR_ADDR &local_addr,
    -   int reuse_addr,
    -   int flags,
    -   int perms)
    -{
    -  return this->connect_strategy_->connect_svc_handler (sh,
    -                                                       remote_addr,
    -                                                       timeout,
    -                                                       local_addr,
    -                                                       reuse_addr,
    -                                                       flags,
    -                                                       perms);
    -}
    -
    -template  int
    -ACE_Strategy_Connector::connect_svc_handler
    -  (SVC_HANDLER *&sh,
    -   SVC_HANDLER *&sh_copy,
    -   const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    -   ACE_Time_Value *timeout,
    -   const ACE_PEER_CONNECTOR_ADDR &local_addr,
    -   int reuse_addr,
    -   int flags,
    -   int perms)
    -{
    -  return this->connect_strategy_->connect_svc_handler (sh,
    -                                                       sh_copy,
    -                                                       remote_addr,
    -                                                       timeout,
    -                                                       local_addr,
    -                                                       reuse_addr,
    -                                                       flags,
    -                                                       perms);
    -}
    -
    -template  int
    -ACE_Strategy_Connector::activate_svc_handler (SVC_HANDLER *svc_handler)
    -{
    -  return this->concurrency_strategy_->activate_svc_handler (svc_handler, this);
    -}
    -
    -template  ACE_Creation_Strategy *
    -ACE_Strategy_Connector::creation_strategy (void) const
    -{
    -  return this->creation_strategy_;
    -}
    -
    -template  ACE_Connect_Strategy *
    -ACE_Strategy_Connector::connect_strategy (void) const
    -{
    -  return this->connect_strategy_;
    -}
    -
    -template  ACE_Concurrency_Strategy *
    -ACE_Strategy_Connector::concurrency_strategy (void) const
    -{
    -  return this->concurrency_strategy_;
    -}
    -
    -#undef SH
    -#undef PR_CO_1
    -#undef PR_CO_2
    -#endif /* ACE_CONNECTOR_C */
    diff --git a/ace/Connector.h b/ace/Connector.h
    deleted file mode 100644
    index ddabc7351a4..00000000000
    --- a/ace/Connector.h
    +++ /dev/null
    @@ -1,488 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Connector.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_CONNECTOR_H
    -#define ACE_CONNECTOR_H
    -
    -#include "ace/Service_Config.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Service_Object.h"
    -#include "ace/Map_Manager.h"
    -#include "ace/Svc_Handler.h"
    -#include "ace/Strategies.h"
    -
    -template 
    -class ACE_Svc_Tuple
    -{
    -  // = TITLE
    -  //    Holds the ACE_Svc_Handler and its argument and
    -  //     until an asynchronous connection completes.
    -  //
    -  // = DESCRIPTION
    -  //    This is a no-brainer...
    -public:
    -  // = Initialization methods.
    -  ACE_Svc_Tuple (SVC_HANDLER *,
    -                 ACE_HANDLE,
    -                 const void * = 0,
    -                 long timer_id = -1);
    -
    -  // = Get SVC_HANDLER.
    -  SVC_HANDLER *svc_handler (void);
    -
    -  // = Get/set handle.
    -  ACE_HANDLE handle (void);
    -  // Get handle.
    -  void handle (ACE_HANDLE);
    -  // Set handle.
    -
    -  // = Get/set argument.
    -  const void *arg (void);
    -  // Get argument.
    -  void arg (const void *);
    -  // Set argument.
    -
    -  // = Set/get timer cancellation handle.
    -  long cancellation_id (void);
    -  // Get cancellation id.
    -  void cancellation_id (long timer_id);
    -  // Set cancellation id.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  SVC_HANDLER *svc_handler_;
    -  // Associated SVC_HANDLER.
    -
    -  ACE_HANDLE handle_;
    -  // IPC  that we are trying to connect.
    -
    -  const void *arg_;
    -  // Associated argument.
    -
    -  long cancellation_id_;
    -  // Associated cancellation id.
    -};
    -
    -template 
    -class ACE_Connector : public ACE_Service_Object
    -{
    -  // = TITLE
    -  //     Generic factory for actively connecting clients and creating
    -  //     service handlers (SVC_HANDLERs).
    -  //
    -  // = DESCRIPTION
    -  //     Implements the strategy for actively establishing connections
    -  //     with clients.  An ACE_Connector is parameterized by concrete
    -  //     types that conform to the interfaces of PEER_CONNECTOR and
    -  //     SVC_HANDLER.  The PEER_CONNECTOR is instantiated with a
    -  //     transport mechanism that passively establishes connections.
    -  //     The SVC_HANDLER is instantiated with a concrete type that
    -  //     performs the application-specific service.  An ACE_Connector
    -  //     inherits from ACE_Service_Object, which in turn inherits from
    -  //     ACE_Event_Handler.  This enables the ACE_Reactor to dispatch
    -  //     the ACE_Connector's handle_output method when connections
    -  //     complete asynchronously.  The handle_output method performs
    -  //     the connector's active connection establishment and service
    -  //     activation strategy.
    -public:
    -  // = Initialization and termination methods.
    -
    -  // typedef ACE_TYPENAME ACE_PEER_CONNECTOR_ADDR PEER_ADDR;
    -#if defined (ACE_HAS_TYPENAME_KEYWORD)
    -  typedef ACE_PEER_CONNECTOR_ADDR ACE_PEER_ADDR_TYPEDEF;
    -#endif /* ACE_HAS_TYPENAME_KEYWORD */
    -
    -  ACE_Connector (ACE_Reactor *r = ACE_Reactor::instance (),
    -                 int flags = 0);
    -  // Initialize a connector.   indicates how 's
    -  // should be initialized prior to being activated.  Right now, the
    -  // only flag that is processed is , which enabled
    -  // non-blocking I/O on the  when it is opened.
    -
    -
    -  virtual int open (ACE_Reactor *r = ACE_Reactor::instance (),
    -                    int flags = 0);
    -  // Initialize a connector.   indicates how 's
    -  // should be initialized prior to being activated.  Right now, the
    -  // only flag that is processed is , which enabled
    -  // non-blocking I/O on the  when it is opened.
    -
    -  virtual ~ACE_Connector (void);
    -  // Shutdown a connector and release resources.
    -
    -  // = Connection establishment methods.
    -
    -  virtual int connect (SVC_HANDLER *&svc_handler,
    -                       const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    -                       const ACE_Synch_Options &synch_options = ACE_Synch_Options::defaults,
    -                       const ACE_PEER_CONNECTOR_ADDR &local_addr
    -                         = (ACE_PEER_CONNECTOR_ADDR &) ACE_PEER_CONNECTOR_ADDR_ANY,
    -                       int reuse_addr = 0,
    -                       int flags = O_RDWR,
    -                       int perms = 0);
    -  // Initiate connection of  to peer at 
    -  // using .  If the caller wants to designate the
    -  // selected  they can (and can also insist that the
    -  //  be reused by passing a value  ==
    -  // 1).  and  can be used to pass any flags that are
    -  // needed to perform specific operations such as opening a file
    -  // within connect with certain permissions.  If the connection fails
    -  // the  hook on the  will be called
    -  // automatically to prevent resource leaks.
    -
    -  virtual int connect (SVC_HANDLER *&svc_handler_hint,
    -                       SVC_HANDLER *&svc_handler,
    -                       const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    -                       const ACE_Synch_Options &synch_options = ACE_Synch_Options::defaults,
    -                       const ACE_PEER_CONNECTOR_ADDR &local_addr
    -                         = (ACE_PEER_CONNECTOR_ADDR &) ACE_PEER_CONNECTOR_ADDR_ANY,
    -                       int reuse_addr = 0,
    -                       int flags = O_RDWR,
    -                       int perms = 0);
    -  // This is a variation on the previous  method.  On cached
    -  // connectors the  variable can be used as a hint
    -  // for future lookups.  Since this variable is modified in the
    -  // context of the internal cache its use is thread-safe.  But the
    -  // actual svc_handler for the current connection is returned in the
    -  // second parameter .  If the connection fails the
    -  //  hook on the  will be called automatically to
    -  // prevent resource leaks.
    -
    -  virtual int connect_n (size_t n,
    -                         SVC_HANDLER *svc_handlers[],
    -                         ACE_PEER_CONNECTOR_ADDR remote_addrs[],
    -                         ASYS_TCHAR *failed_svc_handlers = 0,
    -                         const ACE_Synch_Options &synch_options =
    -                         ACE_Synch_Options::defaults);
    -  // Initiate connection of   to peers at
    -  //  using .  Returns -1 if failure
    -  // occurs and 0 otherwise.  If  is non-NULL, a
    -  // 1 is placed in the corresponding index of 
    -  // for each  that failed to connect, else a 0 is
    -  // placed in that index.
    -
    -  virtual int cancel (SVC_HANDLER *svc_handler);
    -  // Cancel a  that was started asynchronously. Note that
    -  // this is the only case when the Connector does not actively close
    -  // the . It is left up to the caller of  to
    -  // decide the fate of the .
    -
    -  virtual int close (void);
    -  // Close down the Connector
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  // = Helpful typedefs.
    -
    -  typedef ACE_Svc_Tuple
    -          AST;
    -
    -  typedef ACE_Map_Manager *, ACE_SYNCH_RW_MUTEX>
    -          MAP_MANAGER;
    -  typedef ACE_Map_Iterator *, ACE_SYNCH_RW_MUTEX>
    -          MAP_ITERATOR;
    -  typedef ACE_Map_Entry *>
    -          MAP_ENTRY;
    -
    -  // = The following two methods define the Connector's strategies for
    -  // creating, connecting, and activating SVC_HANDLER's, respectively.
    -
    -  virtual int make_svc_handler (SVC_HANDLER *&sh);
    -  // Bridge method for creating a SVC_HANDLER.  The default is to
    -  // create a new SVC_HANDLER only if  == 0, else  is
    -  // unchanged.  However, subclasses can override this policy to
    -  // perform SVC_HANDLER creation in any way that they like (such as
    -  // creating subclass instances of SVC_HANDLER, using a singleton,
    -  // dynamically linking the handler, etc.).  Returns -1 if failure,
    -  // else 0.
    -
    -  virtual int connect_svc_handler (SVC_HANDLER *&svc_handler,
    -                                   const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    -                                   ACE_Time_Value *timeout,
    -                                   const ACE_PEER_CONNECTOR_ADDR &local_addr,
    -                                   int reuse_addr,
    -                                   int flags,
    -                                   int perms);
    -  virtual int connect_svc_handler (SVC_HANDLER *&svc_handler,
    -                                   SVC_HANDLER *&sh_copy,
    -                                   const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    -                                   ACE_Time_Value *timeout,
    -                                   const ACE_PEER_CONNECTOR_ADDR &local_addr,
    -                                   int reuse_addr,
    -                                   int flags,
    -                                   int perms);
    -  // Bridge method for connecting the  to the
    -  // .  The default behavior delegates to the
    -  // .
    -
    -  virtual int activate_svc_handler (SVC_HANDLER *svc_handler);
    -  // Bridge method for activating a  with the appropriate
    -  // concurrency strategy.  The default behavior of this method is to
    -  // activate the SVC_HANDLER by calling its  method (which
    -  // allows the SVC_HANDLER to define its own concurrency strategy).
    -  // However, subclasses can override this strategy to do more
    -  // sophisticated concurrency activations (such as creating the
    -  // SVC_HANDLER as an "active object" via multi-threading or
    -  // multi-processing).
    -
    -  virtual int handle_input (ACE_HANDLE);
    -  // Called by ACE_Reactor when asynchronous connections fail.
    -
    -  virtual int handle_output (ACE_HANDLE);
    -  // Called by ACE_Reactor when asynchronous connections succeed.
    -
    -  virtual int handle_exception (ACE_HANDLE fd = ACE_INVALID_HANDLE);
    -  // Called by ACE_Reactor when asynchronous connections complete (on
    -  // some platforms only).
    -
    -  // = Dynamic linking hooks.
    -  virtual int init (int argc, ASYS_TCHAR *argv[]);
    -  // Default version does no work and returns -1.  Must be overloaded
    -  // by application developer to do anything meaningful.
    -
    -  virtual int fini (void);
    -  // Calls  to shutdown the Connector gracefully.
    -
    -  virtual int info (ASYS_TCHAR **, size_t) const;
    -  // Default version returns address info in .
    -
    -  // = Demultiplexing hooks.
    -  virtual int handle_close (ACE_HANDLE = ACE_INVALID_HANDLE,
    -                            ACE_Reactor_Mask = ACE_Event_Handler::ALL_EVENTS_MASK);
    -  // Terminate the Client ACE_Connector by iterating over any
    -  // unconnected ACE_Svc_Handler's and removing them from the
    -  // ACE_Reactor.
    -
    -  virtual int handle_timeout (const ACE_Time_Value &tv,
    -                              const void *arg);
    -  // This method is called if a connection times out before
    -  // completing.
    -
    -  // = Service management hooks.
    -  virtual int suspend (void);
    -  // Default version does no work and returns -1.  Must be overloaded
    -  // by application developer to do anything meaningful.
    -
    -  virtual int resume (void);
    -  // Default version does no work and returns -1.  Must be overloaded
    -  // by application developer to do anything meaningful.
    -
    -  int create_AST (SVC_HANDLER *,
    -                  const ACE_Synch_Options &);
    -  // Creates and inserts an ACE_Svc_Tuple into the .
    -  // so that we can continue accepting this connection asynchronously.
    -
    -  int cleanup_AST (ACE_HANDLE, AST *&);
    -  // Cleanup the  and returns the appropriate
    -  // ACE_Svc_Tuple (which is 0 if there is no associated tuple).
    -
    -  virtual int connect_i (SVC_HANDLER *&svc_handler,
    -                         SVC_HANDLER **sh_copy,
    -                         const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    -                         const ACE_Synch_Options &synch_options,
    -                         const ACE_PEER_CONNECTOR_ADDR &local_addr,
    -                         int reuse_addr,
    -                         int flags,
    -                         int perms);
    -  // Implementation the  methods.
    -
    -  MAP_MANAGER handler_map_;
    -  // Lookup table that maps an I/O handle to a SVC_HANDLER *.
    -
    -private:
    -  ACE_PEER_CONNECTOR connector_;
    -  // This is the concrete connector factory (it keeps no state so the
    -  //  is reentrant).
    -
    -  char closing_;
    -  // Keeps track of whether we are in the process of closing (required
    -  // to avoid circular calls to ).
    -
    -  int flags_;
    -  // Flags that indicate how 's should be initialized
    -  // prior to being activated.  Right now, the only flag that is
    -  // processed is , which enabled non-blocking I/O on
    -  // the  when it is opened.
    -};
    -
    -template 
    -class ACE_Strategy_Connector : public ACE_Connector 
    -{
    -  // = TITLE
    -  //     Abstract factory for creating a service handler
    -  //     (SVC_HANDLER), connecting the SVC_HANDLER, and activating the
    -  //     SVC_HANDLER.
    -  //
    -  // = DESCRIPTION
    -  //     Implements a flexible and extensible set of strategies for
    -  //     actively establishing connections with clients.  There are
    -  //     three main strategies: (1) creating a SVC_HANDLER, (2)
    -  //     actively connecting a new connection from a client into the
    -  //     SVC_HANDLER, and (3) activating the SVC_HANDLER with a
    -  //     particular concurrency mechanism.
    -public:
    -  ACE_Strategy_Connector (ACE_Reactor *r = ACE_Reactor::instance (),
    -                          ACE_Creation_Strategy * = 0,
    -                          ACE_Connect_Strategy * = 0,
    -                          ACE_Concurrency_Strategy * = 0,
    -                          int flags = 0);
    -  // Initialize a connector.   indicates how 's
    -  // should be initialized prior to being activated.  Right now, the
    -  // only flag that is processed is , which enabled
    -  // non-blocking I/O on the  when it is opened.
    -
    -  virtual int open (ACE_Reactor *r,
    -                    int flags);
    -  // Initialize a connector.   indicates how 's
    -  // should be initialized prior to being activated.  Right now, the
    -  // only flag that is processed is , which enabled
    -  // non-blocking I/O on the  when it is opened.
    -  // Default strategies would be created and used.
    -
    -  virtual int open (ACE_Reactor *r = ACE_Reactor::instance (),
    -                    ACE_Creation_Strategy * = 0,
    -                    ACE_Connect_Strategy * = 0,
    -                    ACE_Concurrency_Strategy * = 0,
    -                    int flags = 0);
    -  // Initialize a connector.   indicates how 's
    -  // should be initialized prior to being activated.  Right now, the
    -  // only flag that is processed is , which enabled
    -  // non-blocking I/O on the  when it is opened.
    -
    -  virtual ~ACE_Strategy_Connector (void);
    -  // Shutdown a connector and release resources.
    -
    -  virtual int close (void);
    -  // Close down the Connector
    -
    -  // = Define some useful typedefs traits.
    -  typedef ACE_Creation_Strategy
    -          CREATION_STRATEGY;
    -  typedef ACE_Connect_Strategy
    -          CONNECT_STRATEGY;
    -  typedef ACE_Concurrency_Strategy
    -          CONCURRENCY_STRATEGY;
    -  typedef ACE_Connector 
    -          SUPER;
    -
    -  // = Strategies accessors
    -  virtual ACE_Creation_Strategy *creation_strategy (void) const;
    -  virtual ACE_Connect_Strategy *connect_strategy (void) const;
    -  virtual ACE_Concurrency_Strategy *concurrency_strategy (void) const;
    -
    -protected:
    -  // = The following three methods define the 's strategies
    -  // for creating, connecting, and activating 's,
    -  // respectively.
    -
    -  virtual int make_svc_handler (SVC_HANDLER *&sh);
    -  // Bridge method for creating a .  The strategy for
    -  // creating a  are configured into the Connector via
    -  // it's .  The default is to create a new
    -  //  only if  == 0, else  is unchanged.
    -  // However, subclasses can override this policy to perform
    -  //  creation in any way that they like (such as
    -  // creating subclass instances of , using a singleton,
    -  // dynamically linking the handler, etc.).  Returns -1 if failure,
    -  // else 0.
    -
    -  virtual int connect_svc_handler (SVC_HANDLER *&sh,
    -                                   const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    -                                   ACE_Time_Value *timeout,
    -                                   const ACE_PEER_CONNECTOR_ADDR &local_addr,
    -                                   int reuse_addr,
    -                                   int flags,
    -                                   int perms);
    -  // Bridge method for connecting the new connection into the
    -  // .  The default behavior delegates to the
    -  //  in the .
    -
    -  virtual int connect_svc_handler (SVC_HANDLER *&sh,
    -                                   SVC_HANDLER *&sh_copy,
    -                                   const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    -                                   ACE_Time_Value *timeout,
    -                                   const ACE_PEER_CONNECTOR_ADDR &local_addr,
    -                                   int reuse_addr,
    -                                   int flags,
    -                                   int perms);
    -  // Bridge method for connecting the new connection into the
    -  // .  The default behavior delegates to the
    -  //  in the .
    -  //  is used to obtain a copy of the  pointer, but that
    -  // can be kept in the stack; the motivation is a bit too long to
    -  // include here, but basically we want to modify  safely, using
    -  // the internal locks in the Connect_Strategy, while saving a TSS
    -  // copy in , usually located in the stack.
    -
    -  virtual int activate_svc_handler (SVC_HANDLER *svc_handler);
    -  // Bridge method for activating a  with the appropriate
    -  // concurrency strategy.  The default behavior of this method is to
    -  // activate the  by calling its  method (which
    -  // allows the  to define its own concurrency strategy).
    -  // However, subclasses can override this strategy to do more
    -  // sophisticated concurrency activations (such as creating the
    -  //  as an "active object" via multi-threading or
    -  // multi-processing).
    -
    -  // = Strategy objects.
    -
    -  CREATION_STRATEGY *creation_strategy_;
    -  // Creation strategy for an .
    -
    -  int delete_creation_strategy_;
    -  // 1 if  created the creation strategy and thus should
    -  // delete it, else 0.
    -
    -  CONNECT_STRATEGY *connect_strategy_;
    -  // Connect strategy for a .
    -
    -  int delete_connect_strategy_;
    -  // 1 if  created the connect strategy and thus should
    -  // delete it, else 0.
    -
    -  CONCURRENCY_STRATEGY *concurrency_strategy_;
    -  // Concurrency strategy for an .
    -
    -  int delete_concurrency_strategy_;
    -  // 1 if  created the concurrency strategy and thus should
    -  // delete it, else 0.
    -};
    -
    -#include "ace/Connector.i"
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
    -#include "ace/Connector.cpp"
    -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
    -#pragma implementation ("Connector.cpp")
    -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
    -
    -#endif /* ACE_CONNECTOR_H */
    diff --git a/ace/Connector.i b/ace/Connector.i
    deleted file mode 100644
    index 7c7afcc0184..00000000000
    --- a/ace/Connector.i
    +++ /dev/null
    @@ -1,4 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// Connector.i
    diff --git a/ace/Containers.cpp b/ace/Containers.cpp
    deleted file mode 100644
    index 36730dd1b70..00000000000
    --- a/ace/Containers.cpp
    +++ /dev/null
    @@ -1,24 +0,0 @@
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/OS.h"
    -#include "ace/Containers.h"
    -
    -ACE_RCSID(ace, Containers, "$Id$")
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/Containers.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
    -template class ACE_Double_Linked_List;
    -template class ACE_Double_Linked_List_Iterator_Base;
    -template class ACE_Double_Linked_List_Iterator;
    -template class ACE_Double_Linked_List_Reverse_Iterator;
    -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
    -#pragma instantiate ACE_Double_Linked_List
    -#pragma instantiate ACE_Double_Linked_List_Iterator_Base
    -#pragma instantiate ACE_Double_Linked_List_Iterator
    -#pragma instantiate ACE_Double_Linked_List_Reverse_Iterator
    -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
    -
    diff --git a/ace/Containers.h b/ace/Containers.h
    deleted file mode 100644
    index 7ac2230b761..00000000000
    --- a/ace/Containers.h
    +++ /dev/null
    @@ -1,71 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Containers.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_CONTAINERS_H
    -#define ACE_CONTAINERS_H
    -
    -#include "ace/OS.h"
    -#include "ace/Malloc_Base.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -template 
    -class ACE_Double_Linked_List;
    -
    -template 
    -class ACE_Double_Linked_List_Iterator_Base;
    -template 
    -class ACE_Double_Linked_List_Iterator;
    -template 
    -class ACE_Double_Linked_List_Reverse_Iterator;
    -
    -class ACE_Export ACE_DLList_Node
    -{
    -  // = TITLE
    -  //     Base implementation of element in a DL list.  Needed for
    -  //     ACE_Double_Linked_List.
    -public:
    -  friend class ACE_Double_Linked_List;
    -  friend class ACE_Double_Linked_List_Iterator_Base;
    -  friend class ACE_Double_Linked_List_Iterator;
    -  friend class ACE_Double_Linked_List_Reverse_Iterator;
    -
    -  ACE_DLList_Node (void *&i,
    -                   ACE_DLList_Node *n = 0,
    -                   ACE_DLList_Node *p = 0);
    -  ~ACE_DLList_Node (void);
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -  void *item_;
    -
    -  ACE_DLList_Node *next_;
    -  ACE_DLList_Node *prev_;
    -
    -protected:
    -  ACE_DLList_Node (void);
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Containers.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#include "ace/Containers_T.h"
    -
    -#endif /* ACE_CONTAINERS_H */
    diff --git a/ace/Containers.i b/ace/Containers.i
    deleted file mode 100644
    index 1312f2a47a6..00000000000
    --- a/ace/Containers.i
    +++ /dev/null
    @@ -1,25 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -ACE_INLINE
    -ACE_DLList_Node::ACE_DLList_Node (void)
    -  : item_ (0),
    -    next_ (0),
    -    prev_ (0)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_DLList_Node::ACE_DLList_Node (void *&i,
    -                                  ACE_DLList_Node *n,
    -                                  ACE_DLList_Node *p)
    -  : item_ (i),
    -    next_ (n),
    -    prev_ (p)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_DLList_Node::~ACE_DLList_Node (void)
    -{
    -}
    diff --git a/ace/Containers_T.cpp b/ace/Containers_T.cpp
    deleted file mode 100644
    index bf2508c511e..00000000000
    --- a/ace/Containers_T.cpp
    +++ /dev/null
    @@ -1,2722 +0,0 @@
    -// $Id$
    -
    -#ifndef ACE_CONTAINERS_T_C
    -#define ACE_CONTAINERS_T_C
    -
    -#define ACE_BUILD_DLL
    -
    -#include "ace/Malloc.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Containers.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/Containers_T.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, Containers_T, "$Id$") 
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Bounded_Stack)
    -  
    -template  void
    -ACE_Bounded_Stack::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Bounded_Stack::dump");
    -}
    -
    -template
    -ACE_Bounded_Stack::ACE_Bounded_Stack (size_t size)
    -  : top_ (0),
    -    size_ (size)
    -{
    -  ACE_NEW (this->stack_,
    -           T[size]);
    -  ACE_TRACE ("ACE_Bounded_Stack::ACE_Bounded_Stack");
    -}
    -
    -template
    -ACE_Bounded_Stack::ACE_Bounded_Stack (const ACE_Bounded_Stack &s)
    -  : top_ (s.top_),
    -    size_ (s.size_)
    -{
    -  ACE_NEW (this->stack_,
    -           T[s.size_]);
    -
    -  ACE_TRACE ("ACE_Bounded_Stack::ACE_Bounded_Stack");
    -
    -  for (size_t i = 0; i < this->top_; i++)
    -    this->stack_[i] = s.stack_[i];
    -}
    -
    -template void
    -ACE_Bounded_Stack::operator= (const ACE_Bounded_Stack &s)
    -{
    -  ACE_TRACE ("ACE_Bounded_Stack::operator=");
    -
    -  if (&s != this)
    -    {
    -      if (this->size_ < s.size_)
    -        {
    -          delete [] this->stack_;
    -          ACE_NEW (this->stack_,
    -                   T[s.size_]);
    -        }
    -      this->top_ = s.top_;
    -
    -      for (size_t i = 0; i < this->top_; i++)
    -        this->stack_[i] = s.stack_[i];
    -    }
    -}
    -
    -template
    -ACE_Bounded_Stack::~ACE_Bounded_Stack (void)
    -{
    -  ACE_TRACE ("ACE_Bounded_Stack::~ACE_Bounded_Stack");
    -  delete [] this->stack_;
    -}
    -
    -// ----------------------------------------
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Fixed_Stack)
    -
    -template  void
    -ACE_Fixed_Stack::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Fixed_Stack::dump");
    -}
    -
    -template
    -ACE_Fixed_Stack::ACE_Fixed_Stack (void)
    -  : top_ (0),
    -    size_ (ACE_SIZE)
    -{
    -  ACE_TRACE ("ACE_Fixed_Stack::ACE_Fixed_Stack");
    -}
    -
    -template
    -ACE_Fixed_Stack::ACE_Fixed_Stack (const ACE_Fixed_Stack &s)
    -  : top_ (s.top_),
    -    size_ (s.size_)
    -{
    -  ACE_TRACE ("ACE_Fixed_Stack::ACE_Fixed_Stack");
    -  for (size_t i = 0; i < this->top_; i++)
    -    this->stack_[i] = s.stack_[i];
    -}
    -
    -template void
    -ACE_Fixed_Stack::operator= (const ACE_Fixed_Stack &s)
    -{
    -  ACE_TRACE ("ACE_Fixed_Stack::operator=");
    -
    -  if (&s != this)
    -    {
    -      this->top_ = s.top_;
    -
    -      for (size_t i = 0; i < this->top_; i++)
    -        this->stack_[i] = s.stack_[i];
    -    }
    -}
    -
    -template
    -ACE_Fixed_Stack::~ACE_Fixed_Stack (void)
    -{
    -  ACE_TRACE ("ACE_Fixed_Stack::~ACE_Fixed_Stack");
    -}
    -
    -//----------------------------------------
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Unbounded_Stack)
    -
    -template  void
    -ACE_Unbounded_Stack::dump (void) const
    -{
    -  //  ACE_TRACE ("ACE_Unbounded_Stack::dump");
    -}
    -
    -template
    -ACE_Unbounded_Stack::ACE_Unbounded_Stack (ACE_Allocator *alloc)
    -  : head_ (0),
    -    cur_size_ (0),
    -    allocator_ (alloc)
    -{
    -  //  ACE_TRACE ("ACE_Unbounded_Stack::ACE_Unbounded_Stack");
    -  if (this->allocator_ == 0)
    -    this->allocator_ = ACE_Allocator::instance ();
    -
    -  ACE_NEW_MALLOC (this->head_,
    -                  (ACE_Node *) this->allocator_->malloc (sizeof (ACE_Node)),
    -                  ACE_Node);
    -  this->head_->next_ = this->head_;
    -}
    -
    -template void
    -ACE_Unbounded_Stack::delete_all_nodes (void)
    -{
    -  //  ACE_TRACE ("ACE_Unbounded_Stack::delete_all_nodes");
    -
    -  while (this->is_empty () == 0)
    -    {
    -      ACE_Node *temp = this->head_->next_;
    -      this->head_->next_ = temp->next_;
    -      ACE_DES_FREE_TEMPLATE (temp, this->allocator_->free,
    -                             ACE_Node, );
    -    }
    -
    -  this->cur_size_ = 0;
    -
    -  ACE_ASSERT (this->head_ == this->head_->next_
    -              && this->is_empty ());
    -}
    -
    -template void
    -ACE_Unbounded_Stack::copy_all_nodes (const ACE_Unbounded_Stack &s)
    -{
    -  //  ACE_TRACE ("ACE_Unbounded_Stack::copy_all_nodes");
    -
    -  ACE_ASSERT (this->head_ == this->head_->next_);
    -
    -  ACE_Node *temp = this->head_;
    -
    -  for (ACE_Node *s_temp = s.head_->next_;
    -       s_temp != s.head_;
    -       s_temp = s_temp->next_)
    -    {
    -      ACE_Node *nptr = temp->next_;
    -      ACE_NEW_MALLOC (temp->next_,
    -                      (ACE_Node *) this->allocator_->malloc (sizeof (ACE_Node)),
    -                      ACE_Node (s_temp->item_, nptr));
    -      temp = temp->next_;
    -    }
    -  this->cur_size_ = s.cur_size_;
    -}
    -
    -template
    -ACE_Unbounded_Stack::ACE_Unbounded_Stack (const ACE_Unbounded_Stack &s)
    -  : head_ (0),
    -    cur_size_ (0),
    -    allocator_ (s.allocator_)
    -{
    -  if (this->allocator_ == 0)
    -    this->allocator_ = ACE_Allocator::instance ();
    -
    -  ACE_NEW_MALLOC (this->head_,
    -                  (ACE_Node *) this->allocator_->malloc (sizeof (ACE_Node)),
    -                  ACE_Node);
    -  this->head_->next_ = this->head_;
    -
    -  //  ACE_TRACE ("ACE_Unbounded_Stack::ACE_Unbounded_Stack");
    -  this->copy_all_nodes (s);
    -}
    -
    -template void
    -ACE_Unbounded_Stack::operator= (const ACE_Unbounded_Stack &s)
    -{
    -  //  ACE_TRACE ("ACE_Unbounded_Stack::operator=");
    -
    -  if (this != &s)
    -    {
    -      this->delete_all_nodes ();
    -      this->copy_all_nodes (s);
    -    }
    -}
    -
    -template
    -ACE_Unbounded_Stack::~ACE_Unbounded_Stack (void)
    -{
    -  //  ACE_TRACE ("ACE_Unbounded_Stack::~ACE_Unbounded_Stack");
    -
    -  this->delete_all_nodes ();
    -  ACE_DES_FREE_TEMPLATE (head_,
    -                         this->allocator_->free,
    -                         ACE_Node,
    -                         );
    -}
    -
    -template int
    -ACE_Unbounded_Stack::push (const T &new_item)
    -{
    -  //  ACE_TRACE ("ACE_Unbounded_Stack::push");
    -
    -  ACE_Node *temp;
    -
    -  ACE_NEW_MALLOC_RETURN (temp,
    -                         (ACE_Node *) this->allocator_->malloc (sizeof (ACE_Node)),
    -                         ACE_Node (new_item, this->head_->next_),
    -                         -1);
    -
    -  this->head_->next_ = temp;
    -  this->cur_size_++;
    -  return 0;
    -}
    -
    -template int
    -ACE_Unbounded_Stack::pop (T &item)
    -{
    -  //  ACE_TRACE ("ACE_Unbounded_Stack::pop");
    -
    -  if (this->is_empty ())
    -    return -1;
    -  else
    -    {
    -      ACE_Node *temp = this->head_->next_;
    -      item = temp->item_;
    -      this->head_->next_ = temp->next_;
    -
    -      ACE_DES_FREE_TEMPLATE (temp,
    -                             this->allocator_->free,
    -                             ACE_Node,
    -                             );
    -      this->cur_size_--;
    -      return 0;
    -    }
    -}
    -
    -template  int
    -ACE_Unbounded_Stack::find (const T &item) const
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Stack::find");
    -  // Set  into the dummy node.
    -  this->head_->item_ = item;
    -
    -  ACE_Node *temp = this->head_->next_;
    -
    -  // Keep looping until we find the item.
    -  while (!(temp->item_ == item))
    -    temp = temp->next_;
    -
    -  // If we found the dummy node then it's not really there, otherwise,
    -  // it is there.
    -  return temp == this->head_ ? -1 : 0;
    -}
    -
    -template  int
    -ACE_Unbounded_Stack::insert (const T &item)
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Stack::insert");
    -
    -  if (this->find (item) == 0)
    -    return 1;
    -  else
    -    return this->push (item);
    -}
    -
    -template  int
    -ACE_Unbounded_Stack::remove (const T &item)
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Stack::remove");
    -
    -  // Insert the item to be founded into the dummy node.
    -  this->head_->item_ = item;
    -
    -  ACE_Node *curr = this->head_;
    -
    -  while (!(curr->next_->item_ == item))
    -    curr = curr->next_;
    -
    -  if (curr->next_ == this->head_)
    -    return -1; // Item was not found.
    -  else
    -    {
    -      ACE_Node *temp = curr->next_;
    -      // Skip over the node that we're deleting.
    -      curr->next_ = temp->next_;
    -      this->cur_size_--;
    -      ACE_DES_FREE_TEMPLATE (temp,
    -                             this->allocator_->free,
    -                             ACE_Node,
    -                             );
    -      return 0;
    -    }
    -}
    -
    -template 
    -ACE_Unbounded_Queue::ACE_Unbounded_Queue (ACE_Allocator *alloc)
    -  : head_ (0),
    -    cur_size_ (0),
    -    allocator_ (alloc)
    -{
    -  //   ACE_TRACE ("ACE_Unbounded_Queue::ACE_Unbounded_Queue (void)");
    -
    -  if (this->allocator_ == 0)
    -    this->allocator_ = ACE_Allocator::instance ();
    -
    -  ACE_NEW_MALLOC (this->head_,
    -                  (ACE_Node *) this->allocator_->malloc (sizeof (ACE_Node)),
    -                  ACE_Node);
    -
    -  // Make the list circular by pointing it back to itself.
    -  this->head_->next_ = this->head_;
    -}
    -
    -template 
    -ACE_Unbounded_Queue::ACE_Unbounded_Queue (const ACE_Unbounded_Queue &us)
    -  : head_ (0),
    -    cur_size_ (0),
    -    allocator_ (us.allocator_)
    -{
    -  //   ACE_TRACE ("ACE_Unbounded_Queue::ACE_Unbounded_Queue");
    -
    -  if (this->allocator_ == 0)
    -    this->allocator_ = ACE_Allocator::instance ();
    -
    -  ACE_NEW_MALLOC (this->head_,
    -                  (ACE_Node *) this->allocator_->malloc (sizeof (ACE_Node)),
    -                  ACE_Node);
    -  this->head_->next_ = this->head_;
    -  this->copy_nodes (us);
    -}
    -
    -template  void
    -ACE_Unbounded_Queue::operator= (const ACE_Unbounded_Queue &us)
    -{
    -  //   ACE_TRACE ("ACE_Unbounded_Queue::operator=");
    -
    -  if (this != &us)
    -    {
    -      this->delete_nodes ();
    -      this->copy_nodes (us);
    -    }
    -}
    -
    -template  ACE_Unbounded_Queue_Iterator
    -ACE_Unbounded_Queue::begin (void)
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Queue::begin");
    -  return ACE_Unbounded_Queue_Iterator (*this);
    -}
    -
    -template  ACE_Unbounded_Queue_Iterator
    -ACE_Unbounded_Queue::end (void)
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Queue::end");
    -  return ACE_Unbounded_Queue_Iterator (*this, 1);
    -}
    -
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Unbounded_Queue)
    -
    -template  void
    -ACE_Unbounded_Queue::dump (void) const
    -{
    -  //   ACE_TRACE ("ACE_Unbounded_Queue::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("\nhead_ = %u"), this->head_));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("\nhead_->next_ = %u"), this->head_->next_));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("\ncur_size_ = %d\n"), this->cur_size_));
    -
    -  T *item = 0;
    -#if !defined (ACE_NLOGGING)
    -  size_t count = 1;
    -#endif /* ! ACE_NLOGGING */
    -
    -  for (ACE_Unbounded_Queue_Iterator iter (*(ACE_Unbounded_Queue *) this);
    -       iter.next (item) != 0;
    -       iter.advance ())
    -    ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("count = %d\n"), count++));
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -template  void
    -ACE_Unbounded_Queue::copy_nodes (const ACE_Unbounded_Queue &us)
    -{
    -  for (ACE_Node *curr = us.head_->next_;
    -       curr != us.head_;
    -       curr = curr->next_)
    -    if (this->enqueue_tail (curr->item_) == -1)
    -      // @@ What's the right thing to do here?
    -      this->delete_nodes ();
    -}
    -
    -template  void
    -ACE_Unbounded_Queue::delete_nodes (void)
    -{
    -  for (ACE_Node *curr = this->head_->next_;
    -       // Keep looking until we've hit the dummy node.
    -       curr != this->head_;
    -       )
    -    {
    -      ACE_Node *temp = curr;
    -      curr = curr->next_;
    -
    -      ACE_DES_FREE_TEMPLATE (temp,
    -                             this->allocator_->free,
    -                             ACE_Node,
    -                             );
    -      this->cur_size_--;
    -      // @@ Doesnt make sense to have this check since
    -      // this will always be true. 
    -      //   ACE_ASSERT (this->cur_size_ >= 0);
    -    }
    -
    -  // Reset the list to be a circular list with just a dummy node.
    -  this->head_->next_ = this->head_;
    -}
    -
    -template 
    -ACE_Unbounded_Queue::~ACE_Unbounded_Queue (void)
    -{
    -  //   ACE_TRACE ("ACE_Unbounded_Queue::~ACE_Unbounded_Queue (void)");
    -
    -  this->delete_nodes ();
    -  ACE_DES_FREE_TEMPLATE (head_,
    -                         this->allocator_->free,
    -                         ACE_Node,
    -                         );
    -  this->head_ = 0;
    -}
    -
    -template  int
    -ACE_Unbounded_Queue::enqueue_head (const T &new_item)
    -{
    -  //   ACE_TRACE ("ACE_Unbounded_Queue::enqueue_tail");
    -
    -  ACE_Node *temp;
    -
    -  // Create a new node that points to the original head.
    -  ACE_NEW_MALLOC_RETURN (temp,
    -                         (ACE_Node *) this->allocator_->malloc (sizeof (ACE_Node)),
    -                         ACE_Node (new_item, this->head_->next_),
    -                         -1);
    -
    -  // Link this pointer into the front of the list.
    -  this->head_->next_ = temp;
    -
    -  this->cur_size_++;
    -  return 0;
    -}
    -
    -template  int
    -ACE_Unbounded_Queue::enqueue_tail (const T &new_item)
    -{
    -  //   ACE_TRACE ("ACE_Unbounded_Queue::enqueue_head");
    -
    -  ACE_Node *temp;
    -
    -  // Insert  into the old dummy node location.
    -  this->head_->item_ = new_item;
    -
    -  // Create a new dummy node.
    -  ACE_NEW_MALLOC_RETURN (temp,
    -                         (ACE_Node *) this->allocator_->malloc (sizeof (ACE_Node)),
    -                         ACE_Node (this->head_->next_), -1);
    -
    -  // Link this dummy pointer into the list.
    -  this->head_->next_ = temp;
    -
    -  // Point the head to the new dummy node.
    -  this->head_ = temp;
    -
    -  this->cur_size_++;
    -  return 0;
    -}
    -
    -template  int
    -ACE_Unbounded_Queue::dequeue_head (T &item)
    -{
    -  //   ACE_TRACE ("ACE_Unbounded_Queue::dequeue_head");
    -
    -  // Check for empty queue.
    -  if (this->is_empty ())
    -    return -1;
    -
    -  ACE_Node *temp = this->head_->next_;
    -
    -  item = temp->item_;
    -  this->head_->next_ = temp->next_;
    -  ACE_DES_FREE_TEMPLATE (temp,
    -                         this->allocator_->free,
    -                         ACE_Node,
    -                         );
    -  --this->cur_size_;
    -  return 0;
    -}
    -
    -template  void
    -ACE_Unbounded_Queue::reset (void)
    -{
    -  ACE_TRACE ("reset");
    -
    -  this->delete_nodes ();
    -}
    -
    -template  int
    -ACE_Unbounded_Queue::get (T *&item, size_t slot) const
    -{
    -  //   ACE_TRACE ("ACE_Unbounded_Queue::get");
    -
    -  ACE_Node *curr = this->head_->next_;
    -
    -  size_t i;
    -
    -  for (i = 0; i < this->cur_size_; i++)
    -    {
    -      if (i == slot)
    -        break;
    -
    -      curr = curr->next_;
    -    }
    -
    -  if (i < this->cur_size_)
    -    {
    -      item = &curr->item_;
    -      return 0;
    -    }
    -  else
    -    return -1;
    -}
    -
    -template  int
    -ACE_Unbounded_Queue::set (const T &item,
    -                             size_t slot)
    -{
    -  //   ACE_TRACE ("ACE_Unbounded_Queue::set");
    -
    -  ACE_Node *curr = this->head_->next_;
    -
    -  size_t i;
    -
    -  for (i = 0;
    -       i < slot && i < this->cur_size_;
    -       i++)
    -    curr = curr->next_;
    -
    -  if (i < this->cur_size_)
    -    {
    -      // We're in range, so everything's cool.
    -      curr->item_ = item;
    -      return 0;
    -    }
    -  else
    -    {
    -      // We need to expand the list.
    -
    -      // A common case will be increasing the set size by 1.
    -      // Therefore, we'll optimize for this case.
    -      if (i == slot)
    -        {
    -          // Try to expand the size of the set by 1.
    -          if (this->enqueue_tail (item) == -1)
    -            return -1;
    -          else
    -            return 0;
    -        }
    -      else
    -        {
    -          T dummy;
    -
    -          // We need to expand the list by multiple (dummy) items.
    -          for (; i < slot; i++)
    -            {
    -              // This head points to the existing dummy node, which is
    -              // about to be overwritten when we add the new dummy
    -              // node.
    -              curr = this->head_;
    -
    -              // Try to expand the size of the set by 1, but don't
    -              // store anything in the dummy node (yet).
    -              if (this->enqueue_tail (dummy) == -1)
    -                return -1;
    -            }
    -
    -          curr->item_ = item;
    -          return 0;
    -        }
    -    }
    -}
    -
    -template  void
    -ACE_Unbounded_Queue_Iterator::dump (void) const
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Queue_Iterator::dump");
    -}
    -
    -template 
    -ACE_Unbounded_Queue_Iterator::ACE_Unbounded_Queue_Iterator (ACE_Unbounded_Queue &q, int end)
    -  : current_ (end == 0 ? q.head_->next_ : q.head_ ),
    -    queue_ (q)
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Queue_Iterator::ACE_Unbounded_Queue_Iterator");
    -}
    -
    -template  int
    -ACE_Unbounded_Queue_Iterator::advance (void)
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Queue_Iterator::advance");
    -  this->current_ = this->current_->next_;
    -  return this->current_ != this->queue_.head_;
    -}
    -
    -template  int
    -ACE_Unbounded_Queue_Iterator::first (void)
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Queue_Iterator::first");
    -  this->current_ = this->queue_.head_->next_;
    -  return this->current_ != this->queue_.head_;
    -}
    -
    -template  int
    -ACE_Unbounded_Queue_Iterator::done (void) const
    -{
    -  ACE_TRACE ("ACE_Unbounded_Queue_Iterator::done");
    -
    -  return this->current_ == this->queue_.head_;
    -}
    -
    -template  int
    -ACE_Unbounded_Queue_Iterator::next (T *&item)
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Queue_Iterator::next");
    -  if (this->current_ == this->queue_.head_)
    -    return 0;
    -  else
    -    {
    -      item = &this->current_->item_;
    -      return 1;
    -    }
    -}
    -
    -//--------------------------------------------------
    -ACE_ALLOC_HOOK_DEFINE(ACE_Double_Linked_List_Iterator_Base)
    -  
    -template 
    -ACE_Double_Linked_List_Iterator_Base::ACE_Double_Linked_List_Iterator_Base (ACE_Double_Linked_List &dll)
    -  : current_ (0), dllist_ (&dll)
    -{
    -  // Do nothing
    -}
    -
    -template 
    -ACE_Double_Linked_List_Iterator_Base::ACE_Double_Linked_List_Iterator_Base (const ACE_Double_Linked_List_Iterator_Base &iter)
    -  : current_ (iter.current_),
    -    dllist_ (iter.dllist_)
    -{
    -  // Do nothing
    -}
    -
    -
    -template  T *
    -ACE_Double_Linked_List_Iterator_Base::next (void) const
    -{
    -  return this->not_done ();
    -}
    -
    -template  int
    -ACE_Double_Linked_List_Iterator_Base::next (T *&ptr) const
    -{
    -  ptr = this->not_done ();
    -  return ptr ? 1 : 0;
    -}
    -
    -
    -template  int
    -ACE_Double_Linked_List_Iterator_Base::done (void) const
    -{
    -  return this->not_done () ? 0 : 1;
    -}
    -
    -template  T & 
    -ACE_Double_Linked_List_Iterator_Base::operator* (void) const
    -{
    -  return *(this->not_done ());
    -}
    -
    -// @@ Is this a valid retasking? Make sure to check with Purify and
    -// whatnot that we're not leaking memory or doing any other screwing things.
    -template  void
    -ACE_Double_Linked_List_Iterator_Base::reset (ACE_Double_Linked_List &dll)
    -{
    -  current_ = 0;
    -  dllist_ = &dll;
    -}
    -
    - template  int
    -ACE_Double_Linked_List_Iterator_Base::go_head (void)
    -{
    -  this->current_ = ACE_static_cast (T*, dllist_->head_->next_);
    -  return this->current_ ? 1 : 0;
    -}
    -
    -template  int
    -ACE_Double_Linked_List_Iterator_Base::go_tail (void)
    -{
    -  this->current_ = ACE_static_cast (T*, dllist_->head_->prev_);
    -  return this->current_ ? 1 : 0;
    -}
    -
    -template  T *
    -ACE_Double_Linked_List_Iterator_Base::not_done (void) const
    -{
    -  if (this->current_ != this->dllist_->head_)
    -    return this->current_;
    -  else
    -    return 0;
    -}
    -
    -template  T *
    -ACE_Double_Linked_List_Iterator_Base::do_advance (void)
    -{
    -  if (this->not_done ())
    -    {
    -      this->current_ = ACE_static_cast (T*, this->current_->next_);
    -      return this->not_done ();
    -    }
    -  else
    -    return 0;
    -}
    -
    -template  T *
    -ACE_Double_Linked_List_Iterator_Base::do_retreat (void)
    -{
    -  if (this->not_done ())
    -    {
    -      this->current_ = ACE_static_cast (T*, this->current_->prev_);
    -      return this->not_done ();
    -    }
    -  else
    -    return 0;
    -}
    -
    -template  void
    -ACE_Double_Linked_List_Iterator_Base::dump_i (void) const
    -{
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("current_ = %x"), this->current_));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -//--------------------------------------------------
    -ACE_ALLOC_HOOK_DEFINE(ACE_Double_Linked_List_Iterator)
    -  
    -template 
    -ACE_Double_Linked_List_Iterator::ACE_Double_Linked_List_Iterator (ACE_Double_Linked_List &dll)
    -  : ACE_Double_Linked_List_Iterator_Base  (dll)
    -{
    -  this->current_ = ACE_static_cast (T*, dll.head_->next_);
    -  // Advance current_ out of the null area and onto the first item in
    -  // the list
    -}
    -
    -template  void
    -ACE_Double_Linked_List_Iterator::reset (ACE_Double_Linked_List &dll)
    -{
    -  this->ACE_Double_Linked_List_Iterator_Base ::reset (dll);
    -  this->current_ = ACE_static_cast (T*, dll.head_->next_);
    -  // Advance current_ out of the null area and onto the first item in
    -  // the list
    -}
    -
    -template  int
    -ACE_Double_Linked_List_Iterator::first (void)
    -{
    -  return this->go_head ();
    -}
    -
    -template  int
    -ACE_Double_Linked_List_Iterator::advance (void)
    -{
    -  return this->do_advance () ? 1 : 0;
    -}
    -
    -template  T*
    -ACE_Double_Linked_List_Iterator::advance_and_remove (int dont_remove)
    -{
    -  T* item = 0;
    -  if (dont_remove)
    -    this->do_advance ();
    -  else
    -    {
    -      item = this->next ();
    -      this->do_advance ();
    -      this->dllist_->remove (item);
    -    }
    -  return item;
    -}
    -
    -template  void
    -ACE_Double_Linked_List_Iterator::dump (void) const
    -{
    -  this->dump_i ();
    -}
    -
    -// Prefix advance.
    -
    -template 
    -ACE_Double_Linked_List_Iterator &
    -ACE_Double_Linked_List_Iterator::operator++ (void)
    -{
    -  this->do_advance ();
    -  return *this;
    -}
    -
    -
    -// Postfix advance.
    -
    -template 
    -ACE_Double_Linked_List_Iterator
    -ACE_Double_Linked_List_Iterator::operator++ (int)
    -{
    -  ACE_Double_Linked_List_Iterator retv (*this);
    -  this->do_advance ();
    -  return retv;
    -}
    -
    -
    -// Prefix reverse.
    -
    -template 
    -ACE_Double_Linked_List_Iterator &
    -ACE_Double_Linked_List_Iterator::operator-- (void)
    -{
    -  this->do_retreat ();
    -  return *this;
    -}
    -
    -
    -// Postfix reverse.
    -
    -template 
    -ACE_Double_Linked_List_Iterator
    -ACE_Double_Linked_List_Iterator::operator-- (int)
    -{
    -  ACE_Double_Linked_List_Iterator retv (*this);
    -  this->do_retreat ();
    -  return retv;
    -}
    -
    -
    -//--------------------------------------------------
    -ACE_ALLOC_HOOK_DEFINE(ACE_Double_Linked_List_Reverse_Iterator)
    -
    -  template 
    -ACE_Double_Linked_List_Reverse_Iterator::ACE_Double_Linked_List_Reverse_Iterator (ACE_Double_Linked_List &dll)
    -  : ACE_Double_Linked_List_Iterator_Base  (dll)
    -{
    -  this->current_ = ACE_static_cast (T*, dll.head_->prev_);
    -  // Advance current_ out of the null area and onto the last item in
    -  // the list
    -}
    -
    -template  void
    -ACE_Double_Linked_List_Reverse_Iterator::reset (ACE_Double_Linked_List &dll)
    -{
    -  this->ACE_Double_Linked_List_Iterator_Base ::reset (dll);
    -  this->current_ = ACE_static_cast (T*, dll.head_->prev_);
    -  // Advance current_ out of the null area and onto the last item in
    -  // the list
    -}
    -
    -template  int
    -ACE_Double_Linked_List_Reverse_Iterator::first (void)
    -{
    -  return this->go_tail ();
    -}
    -
    -template  int
    -ACE_Double_Linked_List_Reverse_Iterator::advance (void)
    -{
    -  return this->do_retreat () ? 1 : 0;
    -}
    -
    -template  T*
    -ACE_Double_Linked_List_Reverse_Iterator::advance_and_remove (int dont_remove)
    -{
    -  T* item = 0;
    -  if (dont_remove)
    -    this->do_retreat ();
    -  else
    -    {
    -      item = this->next ();
    -      this->do_retreat ();
    -      this->dllist_->remove (item);
    -    }
    -  return item;
    -}
    -
    -template  void
    -ACE_Double_Linked_List_Reverse_Iterator::dump (void) const
    -{
    -  this->dump_i ();
    -}
    -
    -// Prefix advance.
    -
    -template 
    -ACE_Double_Linked_List_Reverse_Iterator &
    -ACE_Double_Linked_List_Reverse_Iterator::operator++ (void)
    -{
    -  this->do_retreat ();
    -  return *this;
    -}
    -
    -
    -// Postfix advance.
    -
    -template 
    -ACE_Double_Linked_List_Reverse_Iterator
    -ACE_Double_Linked_List_Reverse_Iterator::operator++ (int)
    -{
    -  ACE_Double_Linked_List_Reverse_Iterator retv (*this);
    -  this->do_retreat ();
    -  return retv;
    -}
    -
    -
    -// Prefix reverse.
    -
    -template 
    -ACE_Double_Linked_List_Reverse_Iterator &
    -ACE_Double_Linked_List_Reverse_Iterator::operator-- (void)
    -{
    -  this->do_advance ();
    -  return *this;
    -}
    -
    -
    -// Postfix reverse.
    -
    -template 
    -ACE_Double_Linked_List_Reverse_Iterator
    -ACE_Double_Linked_List_Reverse_Iterator::operator-- (int)
    -{
    -  ACE_Double_Linked_List_Reverse_Iterator retv (*this);
    -  this->do_advance ();
    -  return retv;
    -}
    -
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Double_Linked_List)
    -  
    -  template 
    -ACE_Double_Linked_List:: ACE_Double_Linked_List (ACE_Allocator *alloc)
    -  : size_ (0), allocator_ (alloc)
    -{
    -  if (this->allocator_ == 0)
    -    this->allocator_ = ACE_Allocator::instance ();
    -
    -  ACE_NEW_MALLOC (this->head_,
    -                  (T *) this->allocator_->malloc (sizeof (T)),
    -                  T);
    -
    -  this->init_head ();
    -}
    -
    -template 
    -ACE_Double_Linked_List::ACE_Double_Linked_List (ACE_Double_Linked_List &cx)
    -  : allocator_ (cx.allocator_)
    -{
    -  if (this->allocator_ == 0)
    -    this->allocator_ = ACE_Allocator::instance ();
    -
    -  ACE_NEW_MALLOC (this->head_,
    -                  (T *) this->allocator_->malloc (sizeof (T)),
    -                  T);
    -  this->init_head ();
    -  this->copy_nodes (cx);
    -}
    -
    -template  void
    -ACE_Double_Linked_List::operator= (ACE_Double_Linked_List &cx)
    -{
    -  if (this != &cx)
    -    {
    -      this->delete_nodes ();
    -      this->copy_nodes (cx);
    -    }
    -}
    -
    -template 
    -ACE_Double_Linked_List::~ACE_Double_Linked_List (void)
    -{
    -  this->delete_nodes ();
    -
    -  ACE_DES_FREE (head_,
    -                this->allocator_->free,
    -                T);
    -
    -  this->head_ = 0;
    -}
    -
    -template  int
    -ACE_Double_Linked_List::is_empty (void) const
    -{
    -  return this->size () ? 0 : 1;
    -}
    -
    -template  int
    -ACE_Double_Linked_List::is_full (void) const
    -{
    -  return 0;                     // We have no bound.
    -}
    -
    -template  T *
    -ACE_Double_Linked_List::insert_tail (T *new_item)
    -{
    -  // Insert it before , i.e., at tail.
    -  this->insert_element (new_item, 1);
    -  return new_item;
    -}
    -
    -template  T *
    -ACE_Double_Linked_List::insert_head (T *new_item)
    -{
    -  this->insert_element (new_item); // Insert it after , i.e., at head.
    -  return new_item;
    -}
    -
    -template  T *
    -ACE_Double_Linked_List::delete_head (void)
    -{
    -  T *temp;
    -
    -  if (this->is_empty ())
    -    return 0;
    -
    -  temp = ACE_static_cast (T *,
    -                          this->head_->next_);
    -  // Detach it from the list.
    -  this->remove_element (temp);  
    -  return temp;
    -}
    -
    -template  T *
    -ACE_Double_Linked_List::delete_tail (void)
    -{
    -  T *temp;
    -
    -  if (this->is_empty ())
    -    return 0;
    -
    -  temp = ACE_static_cast (T *,
    -                          this->head_->prev_);
    -  // Detach it from the list.
    -  this->remove_element (temp);  
    -  return temp;
    -}
    -
    -template  void
    -ACE_Double_Linked_List::reset (void)
    -{
    -  this->delete_nodes ();
    -}
    -
    -template  int
    -ACE_Double_Linked_List::get (T *&item, size_t slot)
    -{
    -  ACE_Double_Linked_List_Iterator iter (*this);
    -
    -  for (size_t i = 0;
    -       i < slot && !iter.done ();
    -       i++)
    -    iter.advance ();
    -
    -  item = iter.next ();
    -  return item ? 0 : 1;
    -}
    -
    -template  size_t
    -ACE_Double_Linked_List::size (void) const
    -{
    -  return this->size_;
    -}
    -
    -template  void
    -ACE_Double_Linked_List::dump (void) const
    -{
    -  // Dump the state of an object.
    -}
    -
    -#if 0
    -template  T *
    -ACE_Double_Linked_List::find (const T &item)
    -{
    -  for (ACE_Double_Linked_List_Iterator iter (*this);
    -       !iter.done ();
    -       iter.advance ())
    -    {
    -      T *temp = iter.next ();
    -
    -      if (*temp == item)
    -        return temp;
    -    }
    -
    -  return 0;
    -}
    -
    -template  int
    -ACE_Double_Linked_List::remove (const T &item)
    -{
    -  T *temp = this->find (item);
    -
    -  if (temp != 0)
    -    return this->remove (temp);
    -  else
    -    return -1;
    -}
    -#endif /* 0 */
    -
    -template  int
    -ACE_Double_Linked_List::remove (T *n)
    -{
    -  return this->remove_element (n);
    -}
    -
    -template  void
    -ACE_Double_Linked_List::delete_nodes (void)
    -{
    -  while (! this->is_empty ())
    -    {
    -      T * temp = ACE_static_cast (T*, this->head_->next_);
    -      this->remove_element (temp);
    -      delete temp;
    -    }
    -}
    -
    -template  void
    -ACE_Double_Linked_List::copy_nodes (ACE_Double_Linked_List &c)
    -{
    -  for (ACE_Double_Linked_List_Iterator iter (c);
    -       !iter.done ();
    -       iter.advance ())
    -    this->insert_head (new T (*iter.next ()));
    -}
    -
    -template  void
    -ACE_Double_Linked_List::init_head (void)
    -{
    -  this->head_->next_ = this->head_->prev_ = this->head_;
    -}
    -
    -template  int
    -ACE_Double_Linked_List::insert_element (T *new_item,
    -                                           int before,
    -                                           T *old_item)
    -{
    -  if (old_item == 0)
    -    old_item = this->head_;
    -
    -  if (before)
    -    old_item = ACE_static_cast (T *,
    -                                old_item->prev_);
    -
    -  new_item->next_ = old_item->next_;
    -  new_item->next_->prev_ = new_item;
    -  new_item->prev_ = old_item;
    -  old_item->next_ = new_item;
    -  this->size_++;
    -  return 0;                     // Well, what will cause errors here?
    -}
    -
    -template  int
    -ACE_Double_Linked_List::remove_element (T *item)
    -{
    -  // Notice that you have to ensure that item is an element of this
    -  // list.  We can't do much checking here.
    -
    -  if (item == this->head_ || item->next_ == 0
    -      || item->prev_ == 0 || this->size () == 0)      // Can't remove head
    -    return -1;
    -
    -  item->prev_->next_ = item->next_;
    -  item->next_->prev_ = item->prev_;
    -  item->next_ = item->prev_ = 0; // reset pointers to prevent double removal.
    -  this->size_--;
    -  return 0;
    -}
    -
    -//--------------------------------------------------
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Fixed_Set)
    -
    -  template  size_t
    -ACE_Fixed_Set::size (void) const
    -{
    -  return this->cur_size_;
    -}
    -
    -template  size_t
    -ACE_Bounded_Set::size (void) const
    -{
    -  ACE_TRACE ("ACE_Bounded_Set::size");
    -  return this->cur_size_;
    -}
    -
    -template  void
    -ACE_Fixed_Set::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Fixed_Set::dump");
    -}
    -
    -template 
    -ACE_Fixed_Set::~ACE_Fixed_Set (void)
    -{
    -  ACE_TRACE ("ACE_Fixed_Set::~ACE_Fixed_Set");
    -  this->cur_size_ = 0;
    -}
    -
    -template 
    -ACE_Fixed_Set::ACE_Fixed_Set (const ACE_Fixed_Set &fs)
    -  : cur_size_ (fs.cur_size_)
    -{
    -  ACE_TRACE ("ACE_Fixed_Set::ACE_Fixed_Set");
    -
    -  for (size_t i = 0; i < this->cur_size_; i++)
    -    this->search_structure_[i] = fs.search_structure_[i];
    -}
    -
    -template  void
    -ACE_Fixed_Set::operator= (const ACE_Fixed_Set &fs)
    -{
    -  ACE_TRACE ("ACE_Fixed_Set::operator=");
    -
    -  if (this != &fs)
    -    {
    -      this->cur_size_ = fs.cur_size_;
    -
    -      for (size_t i = 0; i < this->cur_size_; i++)
    -        this->search_structure_[i] = fs.search_structure_[i];
    -    }
    -}
    -
    -template 
    -ACE_Fixed_Set::ACE_Fixed_Set (void)
    -  : cur_size_ (0),
    -    max_size_ (ACE_SIZE)
    -{
    -  ACE_TRACE ("ACE_Fixed_Set::ACE_Fixed_Set");
    -  for (size_t i = 0; i < this->max_size_; i++)
    -    this->search_structure_[i].is_free_ = 1;
    -}
    -
    -template  int
    -ACE_Fixed_Set::find (const T &item) const
    -{
    -  ACE_TRACE ("ACE_Fixed_Set::find");
    -
    -  for (size_t i = 0; i < this->cur_size_; i++)
    -    if (this->search_structure_[i].item_ == item
    -        && this->search_structure_[i].is_free_ == 0)
    -      return 0;
    -
    -  return -1;
    -}
    -
    -template  int
    -ACE_Fixed_Set::insert (const T &item)
    -{
    -  ACE_TRACE ("ACE_Fixed_Set::insert");
    -  int first_free = -1;   // Keep track of first free slot.
    -  size_t i;
    -
    -  for (i = 0; i < this->cur_size_; i++)
    -    // First, make sure we don't allow duplicates.
    -
    -    if (this->search_structure_[i].item_ == item
    -        && this->search_structure_[i].is_free_ == 0)
    -      return 1;
    -    else if (this->search_structure_[i].is_free_
    -             && first_free == -1)
    -      first_free = i;
    -
    -  // If we found a free spot let's reuse it.
    -  if (first_free > -1)
    -    {
    -      this->search_structure_[first_free].item_ = item;
    -      this->search_structure_[first_free].is_free_ = 0;
    -      return 0;
    -    }
    -  // Insert at the end of the active portion.
    -  else if (i < this->max_size_)
    -    {
    -      this->search_structure_[i].item_ = item;
    -      this->search_structure_[i].is_free_ = 0;
    -      this->cur_size_++;
    -      return 0;
    -    }
    -  else /* No more room! */
    -    {
    -      errno = ENOMEM;
    -      return -1;
    -    }
    -}
    -
    -template  int
    -ACE_Fixed_Set::remove (const T &item)
    -{
    -  ACE_TRACE ("ACE_Fixed_Set::remove");
    -
    -  for (size_t i = 0; i < this->cur_size_; i++)
    -    if (this->search_structure_[i].item_ == item)
    -      {
    -        // Mark this entry as being free.
    -        this->search_structure_[i].is_free_ = 1;
    -
    -        // If we just unbound the highest entry, then we need to
    -        // figure out where the next highest active entry is.
    -        if (i + 1 == this->cur_size_)
    -          {
    -            while (i > 0
    -                   && this->search_structure_[--i].is_free_)
    -              continue;
    -
    -            if (i == 0
    -                && this->search_structure_[i].is_free_)
    -              this->cur_size_ = 0;
    -            else
    -              this->cur_size_ = i + 1;
    -          }
    -        return 0;
    -      }
    -
    -  return -1;
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Fixed_Set_Iterator)
    -
    -  template  void
    -ACE_Fixed_Set_Iterator::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Fixed_Set_Iterator::dump");
    -}
    -
    -template 
    -ACE_Fixed_Set_Iterator::ACE_Fixed_Set_Iterator (ACE_Fixed_Set &s)
    -  : s_ (s),
    -    next_ (-1)
    -{
    -  ACE_TRACE ("ACE_Fixed_Set_Iterator::ACE_Fixed_Set_Iterator");
    -  this->advance ();
    -}
    -
    -template  int
    -ACE_Fixed_Set_Iterator::advance (void)
    -{
    -  ACE_TRACE ("ACE_Fixed_Set_Iterator::advance");
    -
    -  for (++this->next_;
    -       ACE_static_cast(size_t, this->next_) < this->s_.cur_size_
    -         && this->s_.search_structure_[this->next_].is_free_;
    -       ++this->next_)
    -    continue;
    -
    -  return ACE_static_cast(size_t, this->next_) < this->s_.cur_size_;
    -}
    -
    -template  int
    -ACE_Fixed_Set_Iterator::first (void)
    -{
    -  ACE_TRACE ("ACE_Fixed_Set_Iterator::first");
    -
    -  next_ = -1;
    -  return this->advance ();
    -}
    -
    -template  int
    -ACE_Fixed_Set_Iterator::done (void) const
    -{
    -  ACE_TRACE ("ACE_Fixed_Set_Iterator::done");
    -
    -  return ACE_static_cast (ACE_CAST_CONST size_t, this->next_) >=
    -    this->s_.cur_size_;
    -}
    -
    -template  int
    -ACE_Fixed_Set_Iterator::next (T *&item)
    -{
    -  ACE_TRACE ("ACE_Fixed_Set_Iterator::next");
    -  if (ACE_static_cast (size_t, this->next_) < this->s_.cur_size_)
    -    {
    -      item = &this->s_.search_structure_[this->next_].item_;
    -      return 1;
    -    }
    -  else
    -    return 0;
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Bounded_Set)
    -
    -  template  void
    -ACE_Bounded_Set::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Bounded_Set::dump");
    -}
    -
    -template 
    -ACE_Bounded_Set::~ACE_Bounded_Set (void)
    -{
    -  ACE_TRACE ("ACE_Bounded_Set::~ACE_Bounded_Set");
    -  delete [] this->search_structure_;
    -}
    -
    -template 
    -ACE_Bounded_Set::ACE_Bounded_Set (void)
    -  : cur_size_ (0),
    -    max_size_ (ACE_static_cast(size_t, ACE_Bounded_Set::DEFAULT_SIZE))
    -{
    -  ACE_TRACE ("ACE_Bounded_Set::ACE_Bounded_Set");
    -
    -  ACE_NEW (this->search_structure_,
    -           ACE_TYPENAME ACE_Bounded_Set::Search_Structure[this->max_size_]);
    -
    -  for (size_t i = 0; i < this->max_size_; i++)
    -    this->search_structure_[i].is_free_ = 1;
    -}
    -
    -template 
    -ACE_Bounded_Set::ACE_Bounded_Set (const ACE_Bounded_Set &bs)
    -  : cur_size_ (bs.cur_size_),
    -    max_size_ (bs.max_size_)
    -{
    -  ACE_TRACE ("ACE_Bounded_Set::ACE_Bounded_Set");
    -
    -  ACE_NEW (this->search_structure_,
    -           ACE_TYPENAME ACE_Bounded_Set::Search_Structure[this->max_size_]);
    -
    -  for (size_t i = 0; i < this->cur_size_; i++)
    -    this->search_structure_[i] = bs.search_structure_[i];
    -}
    -
    -template  void
    -ACE_Bounded_Set::operator= (const ACE_Bounded_Set &bs)
    -{
    -  ACE_TRACE ("ACE_Bounded_Set::operator=");
    -
    -  if (this != &bs)
    -    {
    -      if (this->max_size_ < bs.cur_size_)
    -        {
    -          delete [] this->search_structure_;
    -          ACE_NEW (this->search_structure_,
    -                   ACE_TYPENAME ACE_Bounded_Set::Search_Structure[bs.cur_size_]);
    -          this->max_size_ = bs.cur_size_;
    -        }
    -
    -      this->cur_size_ = bs.cur_size_;
    -
    -      for (size_t i = 0; i < this->cur_size_; i++)
    -        this->search_structure_[i] = bs.search_structure_[i];
    -    }
    -}
    -
    -template 
    -ACE_Bounded_Set::ACE_Bounded_Set (size_t size)
    -  : cur_size_ (0),
    -    max_size_ (size)
    -{
    -  ACE_TRACE ("ACE_Bounded_Set::ACE_Bounded_Set");
    -  ACE_NEW (this->search_structure_,
    -           ACE_TYPENAME ACE_Bounded_Set::Search_Structure[size]);
    -
    -  for (size_t i = 0; i < this->max_size_; i++)
    -    this->search_structure_[i].is_free_ = 1;
    -}
    -
    -template  int
    -ACE_Bounded_Set::find (const T &item) const
    -{
    -  ACE_TRACE ("ACE_Bounded_Set::find");
    -
    -  for (size_t i = 0; i < this->cur_size_; i++)
    -    if (this->search_structure_[i].item_ == item
    -        && this->search_structure_[i].is_free_ == 0)
    -      return 0;
    -
    -  return -1;
    -}
    -
    -template  int
    -ACE_Bounded_Set::insert (const T &item)
    -{
    -  ACE_TRACE ("ACE_Bounded_Set::insert");
    -  int first_free = -1;   // Keep track of first free slot.
    -  size_t i;
    -
    -  for (i = 0; i < this->cur_size_; i++)
    -    // First, make sure we don't allow duplicates.
    -
    -    if (this->search_structure_[i].item_ == item
    -        && this->search_structure_[i].is_free_ == 0)
    -      return 1;
    -    else if (this->search_structure_[i].is_free_ && first_free == -1)
    -      first_free = i;
    -
    -  if (first_free > -1)   // If we found a free spot let's reuse it.
    -    {
    -      this->search_structure_[first_free].item_ = item;
    -      this->search_structure_[first_free].is_free_ = 0;
    -      return 0;
    -    }
    -  else if (i < this->max_size_) // Insert at the end of the active portion.
    -    {
    -      this->search_structure_[i].item_ = item;
    -      this->search_structure_[i].is_free_ = 0;
    -      this->cur_size_++;
    -      return 0;
    -    }
    -  else /* No more room! */
    -    {
    -      errno = ENOMEM;
    -      return -1;
    -    }
    -}
    -
    -template  int
    -ACE_Bounded_Set::remove (const T &item)
    -{
    -  ACE_TRACE ("ACE_Bounded_Set::remove");
    -  for (size_t i = 0; i < this->cur_size_; i++)
    -    if (this->search_structure_[i].item_ == item)
    -      {
    -        // Mark this entry as being free.
    -        this->search_structure_[i].is_free_ = 1;
    -
    -        // If we just unbound the highest entry, then we need to
    -        // figure out where the next highest active entry is.
    -        if (i + 1 == this->cur_size_)
    -          {
    -            while (i > 0 && this->search_structure_[--i].is_free_)
    -              continue;
    -
    -            if (i == 0 && this->search_structure_[i].is_free_)
    -              this->cur_size_ = 0;
    -            else
    -              this->cur_size_ = i + 1;
    -          }
    -        return 0;
    -      }
    -
    -  return -1;
    -}
    -
    -#if defined (__Lynx__)
    -// LynxOS 3.0.0 native g++ compiler raises internal error with this inline.
    -template  int
    -ACE_Bounded_Set::is_full (void) const
    -{
    -  ACE_TRACE ("ACE_Bounded_Set::is_full");
    -  return this->cur_size_ == this->max_size_;
    -}
    -#endif /* __Lynx__ */
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Bounded_Set_Iterator)
    -
    -  template  void
    -ACE_Bounded_Set_Iterator::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Bounded_Set_Iterator::dump");
    -}
    -
    -template 
    -ACE_Bounded_Set_Iterator::ACE_Bounded_Set_Iterator (ACE_Bounded_Set &s)
    -  : s_ (s),
    -    next_ (-1)
    -{
    -  ACE_TRACE ("ACE_Bounded_Set_Iterator::ACE_Bounded_Set_Iterator");
    -  this->advance ();
    -}
    -
    -template  int
    -ACE_Bounded_Set_Iterator::advance (void)
    -{
    -  ACE_TRACE ("ACE_Bounded_Set_Iterator::advance");
    -
    -  for (++this->next_;
    -       ACE_static_cast(size_t, this->next_) < this->s_.cur_size_
    -         && this->s_.search_structure_[this->next_].is_free_;
    -       ++this->next_)
    -    continue;
    -
    -  return ACE_static_cast(size_t, this->next_) < this->s_.cur_size_;
    -}
    -
    -template  int
    -ACE_Bounded_Set_Iterator::first (void)
    -{
    -  ACE_TRACE ("ACE_Bounded_Set_Iterator::first");
    -
    -  next_ = -1;
    -  return this->advance ();
    -}
    -
    -template  int
    -ACE_Bounded_Set_Iterator::done (void) const
    -{
    -  ACE_TRACE ("ACE_Bounded_Set_Iterator::done");
    -
    -  return ACE_static_cast (ACE_CAST_CONST size_t, this->next_) >=
    -    this->s_.cur_size_;
    -}
    -
    -template  int
    -ACE_Bounded_Set_Iterator::next (T *&item)
    -{
    -  ACE_TRACE ("ACE_Bounded_Set_Iterator::next");
    -  if (ACE_static_cast(size_t, this->next_) < this->s_.cur_size_)
    -    {
    -      item = &this->s_.search_structure_[this->next_].item_;
    -      return 1;
    -    }
    -  else
    -    return 0;
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Node)
    -
    -# if ! defined (ACE_HAS_BROKEN_NOOP_DTORS)
    -  template 
    -ACE_Node::~ACE_Node (void)
    -{
    -}
    -# endif /* ! defined (ACE_HAS_BROKEN_NOOP_DTORS) */
    -
    -template 
    -ACE_Node::ACE_Node (const T &i, ACE_Node *n)
    -  : next_ (n),
    -    item_ (i)
    -{
    -  // ACE_TRACE ("ACE_Node::ACE_Node");
    -}
    -
    -template 
    -ACE_Node::ACE_Node (ACE_Node *n, int)
    -  : next_ (n)
    -{
    -  // ACE_TRACE ("ACE_Node::ACE_Node");
    -}
    -
    -template 
    -ACE_Node::ACE_Node (const ACE_Node &s)
    -  : next_ (s.next_),
    -    item_ (s.item_)
    -{
    -  // ACE_TRACE ("ACE_Node::ACE_Node");
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_DNode)
    -
    -  template 
    -ACE_DNode::ACE_DNode (const T &i, ACE_DNode *n, ACE_DNode *p)
    -  : next_ (n), prev_ (p), item_ (i)
    -{
    -}
    -
    -# if ! defined (ACE_HAS_BROKEN_NOOP_DTORS)
    -template 
    -ACE_DNode::~ACE_DNode (void)
    -{
    -}
    -# endif /* ! defined (ACE_HAS_BROKEN_NOOP_DTORS) */
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Unbounded_Set)
    -
    -  template  size_t
    -ACE_Unbounded_Set::size (void) const
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Set::size");
    -  return this->cur_size_;
    -}
    -
    -template  int
    -ACE_Unbounded_Set::insert_tail (const T &item)
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Queue::insert_tail");
    -  ACE_Node *temp;
    -
    -  // Insert  into the old dummy node location.
    -  this->head_->item_ = item;
    -
    -  // Create a new dummy node.
    -  ACE_NEW_MALLOC_RETURN (temp,
    -                         (ACE_Node*) this->allocator_->malloc (sizeof (ACE_Node)),
    -                         ACE_Node (this->head_->next_),
    -                         -1);
    -
    -  // Link this pointer into the list.
    -  this->head_->next_ = temp;
    -
    -  // Point the head to the new dummy node.
    -  this->head_ = temp;
    -
    -  this->cur_size_++;
    -  return 0;
    -}
    -
    -template  void
    -ACE_Unbounded_Set::reset (void)
    -{
    -  ACE_TRACE ("reset");
    -
    -  this->delete_nodes ();
    -}
    -
    -template  void
    -ACE_Unbounded_Set::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Unbounded_Set::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("\nhead_ = %u"), this->head_));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("\nhead_->next_ = %u"), this->head_->next_));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("\ncur_size_ = %d\n"), this->cur_size_));
    -
    -  T *item = 0;
    -#if !defined (ACE_NLOGGING)
    -  size_t count = 1;
    -#endif /* ! ACE_NLOGGING */
    -
    -  for (ACE_Unbounded_Set_Iterator iter (*(ACE_Unbounded_Set *) this);
    -       iter.next (item) != 0;
    -       iter.advance ())
    -    ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("count = %d\n"), count++));
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -template  void
    -ACE_Unbounded_Set::copy_nodes (const ACE_Unbounded_Set &us)
    -{
    -  for (ACE_Node *curr = us.head_->next_;
    -       curr != us.head_;
    -       curr = curr->next_)
    -    this->insert_tail (curr->item_);
    -}
    -
    -template  void
    -ACE_Unbounded_Set::delete_nodes (void)
    -{
    -  ACE_Node *curr = this->head_->next_;
    -
    -  // Keep looking until we've hit the dummy node.
    -
    -  while (curr != this->head_)
    -    {
    -      ACE_Node *temp = curr;
    -      curr = curr->next_;
    -      ACE_DES_FREE_TEMPLATE (temp,
    -                             this->allocator_->free,
    -                             ACE_Node,
    -                             );
    -      this->cur_size_--;
    -    }
    -
    -  // Reset the list to be a circular list with just a dummy node.
    -  this->head_->next_ = this->head_;
    -}
    -
    -template 
    -ACE_Unbounded_Set::~ACE_Unbounded_Set (void)
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Set::~ACE_Unbounded_Set");
    -
    -  this->delete_nodes ();
    -
    -  // Delete the dummy node.
    -  ACE_DES_FREE_TEMPLATE (head_,
    -                         this->allocator_->free,
    -                         ACE_Node,
    -                         );
    -  this->head_ = 0;
    -}
    -
    -template 
    -ACE_Unbounded_Set::ACE_Unbounded_Set (ACE_Allocator *alloc)
    -  : head_ (0),
    -    cur_size_ (0),
    -    allocator_ (alloc)
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Set::ACE_Unbounded_Set");
    -
    -  if (this->allocator_ == 0)
    -    this->allocator_ = ACE_Allocator::instance ();
    -
    -  ACE_NEW_MALLOC (this->head_,
    -                  (ACE_Node*) this->allocator_->malloc (sizeof (ACE_Node)),
    -                  ACE_Node);
    -
    -  // Make the list circular by pointing it back to itself.
    -  this->head_->next_ = this->head_;
    -}
    -
    -template 
    -ACE_Unbounded_Set::ACE_Unbounded_Set (const ACE_Unbounded_Set &us)
    -  : head_ (0),
    -    cur_size_ (0),
    -    allocator_ (us.allocator_)
    -{
    -  ACE_TRACE ("ACE_Unbounded_Set::ACE_Unbounded_Set");
    -
    -  if (this->allocator_ == 0)
    -    this->allocator_ = ACE_Allocator::instance ();
    -
    -  ACE_NEW_MALLOC (this->head_,
    -                  (ACE_Node*) this->allocator_->malloc (sizeof (ACE_Node)),
    -                  ACE_Node);
    -  this->head_->next_ = this->head_;
    -  this->copy_nodes (us);
    -}
    -
    -template  void
    -ACE_Unbounded_Set::operator= (const ACE_Unbounded_Set &us)
    -{
    -  ACE_TRACE ("ACE_Unbounded_Set::operator=");
    -
    -  if (this != &us)
    -    {
    -      this->delete_nodes ();
    -      this->copy_nodes (us);
    -    }
    -}
    -
    -template  int
    -ACE_Unbounded_Set::find (const T &item) const
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Stack::find");
    -  // Set  into the dummy node.
    -  this->head_->item_ = item;
    -
    -  ACE_Node *temp = this->head_->next_;
    -
    -  // Keep looping until we find the item.
    -  while (!(temp->item_ == item))
    -    temp = temp->next_;
    -
    -  // If we found the dummy node then it's not really there, otherwise,
    -  // it is there.
    -  return temp == this->head_ ? -1 : 0;
    -}
    -
    -template  int
    -ACE_Unbounded_Set::insert (const T &item)
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Set::insert");
    -  if (this->find (item) == 0)
    -    return 1;
    -  else
    -    return this->insert_tail (item);
    -}
    -
    -template  int
    -ACE_Unbounded_Set::remove (const T &item)
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Set::remove");
    -
    -  // Insert the item to be founded into the dummy node.
    -  this->head_->item_ = item;
    -
    -  ACE_Node *curr = this->head_;
    -
    -  while (!(curr->next_->item_ == item))
    -    curr = curr->next_;
    -
    -  if (curr->next_ == this->head_)
    -    return -1; // Item was not found.
    -  else
    -    {
    -      ACE_Node *temp = curr->next_;
    -      // Skip over the node that we're deleting.
    -      curr->next_ = temp->next_;
    -      this->cur_size_--;
    -      ACE_DES_FREE_TEMPLATE (temp,
    -                             this->allocator_->free,
    -                             ACE_Node,
    -                             );
    -      return 0;
    -    }
    -}
    -
    -template  ACE_Unbounded_Set_Iterator
    -ACE_Unbounded_Set::begin (void)
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Set::begin");
    -  return ACE_Unbounded_Set_Iterator (*this);
    -}
    -
    -template  ACE_Unbounded_Set_Iterator
    -ACE_Unbounded_Set::end (void)
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Set::end");
    -  return ACE_Unbounded_Set_Iterator (*this, 1);
    -}
    -
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Unbounded_Set_Iterator)
    -
    -  template  void
    -ACE_Unbounded_Set_Iterator::dump (void) const
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Set_Iterator::dump");
    -}
    -
    -template 
    -ACE_Unbounded_Set_Iterator::ACE_Unbounded_Set_Iterator (ACE_Unbounded_Set &s, int end)
    -  : current_ (end == 0 ? s.head_->next_ : s.head_ ),
    -    set_ (&s)
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Set_Iterator::ACE_Unbounded_Set_Iterator");
    -}
    -
    -template  int
    -ACE_Unbounded_Set_Iterator::advance (void)
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Set_Iterator::advance");
    -  this->current_ = this->current_->next_;
    -  return this->current_ != this->set_->head_;
    -}
    -
    -template  int
    -ACE_Unbounded_Set_Iterator::first (void)
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Set_Iterator::first");
    -  this->current_ = this->set_->head_->next_;
    -  return this->current_ != this->set_->head_;
    -}
    -
    -template  int
    -ACE_Unbounded_Set_Iterator::done (void) const
    -{
    -  ACE_TRACE ("ACE_Unbounded_Set_Iterator::done");
    -
    -  return this->current_ == this->set_->head_;
    -}
    -
    -template  int
    -ACE_Unbounded_Set_Iterator::next (T *&item)
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Set_Iterator::next");
    -  if (this->current_ == this->set_->head_)
    -    return 0;
    -  else
    -    {
    -      item = &this->current_->item_;
    -      return 1;
    -    }
    -}
    -
    -template  ACE_Unbounded_Set_Iterator
    -ACE_Unbounded_Set_Iterator::operator++ (int)
    -{
    -  //ACE_TRACE ("ACE_Unbounded_Set_Iterator::operator++ (int)");
    -  ACE_Unbounded_Set_Iterator retv (*this);
    -
    -  // postfix operator
    -
    -  this->advance ();
    -  return retv;
    -}
    -
    -template  ACE_Unbounded_Set_Iterator&
    -ACE_Unbounded_Set_Iterator::operator++ (void)
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Set_Iterator::operator++ (void)");
    -
    -  // prefix operator
    -
    -  this->advance ();
    -  return *this;
    -}
    -
    -template  T&
    -ACE_Unbounded_Set_Iterator::operator* (void)
    -{
    -  //ACE_TRACE ("ACE_Unbounded_Set_Iterator::operator*");
    -  T *retv = 0;
    -
    -  int result = this->next (retv);
    -  ACE_ASSERT (result != 0);
    -  ACE_UNUSED_ARG (result);
    -
    -  return *retv;
    -}
    -
    -template  int
    -ACE_Unbounded_Set_Iterator::operator== (const ACE_Unbounded_Set_Iterator &rhs) const
    -{
    -  //ACE_TRACE ("ACE_Unbounded_Set_Iterator::operator==");
    -  return (this->set_ == rhs.set_ && this->current_ == rhs.current_);
    -}
    -
    -template  int
    -ACE_Unbounded_Set_Iterator::operator!= (const ACE_Unbounded_Set_Iterator &rhs) const
    -{
    -  //ACE_TRACE ("ACE_Unbounded_Set_Iterator::operator!=");
    -  return (this->set_ != rhs.set_ || this->current_ != rhs.current_);
    -}
    -
    -template  void
    -ACE_Unbounded_Stack_Iterator::dump (void) const
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Stack_Iterator::dump");
    -}
    -
    -template 
    -ACE_Unbounded_Stack_Iterator::ACE_Unbounded_Stack_Iterator (ACE_Unbounded_Stack &q)
    -  : current_ (q.head_->next_),
    -    stack_ (q)
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Stack_Iterator::ACE_Unbounded_Stack_Iterator");
    -}
    -
    -template  int
    -ACE_Unbounded_Stack_Iterator::advance (void)
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Stack_Iterator::advance");
    -  this->current_ = this->current_->next_;
    -  return this->current_ != this->stack_.head_;
    -}
    -
    -template  int
    -ACE_Unbounded_Stack_Iterator::first (void)
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Stack_Iterator::first");
    -  this->current_ = this->stack_.head_->next_;
    -  return this->current_ != this->stack_.head_;
    -}
    -
    -template  int
    -ACE_Unbounded_Stack_Iterator::done (void) const
    -{
    -  ACE_TRACE ("ACE_Unbounded_Stack_Iterator::done");
    -
    -  return this->current_ == this->stack_.head_;
    -}
    -
    -template  int
    -ACE_Unbounded_Stack_Iterator::next (T *&item)
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Stack_Iterator::next");
    -  if (this->current_ == this->stack_.head_)
    -    return 0;
    -  else
    -    {
    -      item = &this->current_->item_;
    -      return 1;
    -    }
    -}
    -
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Ordered_MultiSet)
    -
    -
    -  template 
    -ACE_Ordered_MultiSet::ACE_Ordered_MultiSet (ACE_Allocator *alloc)
    -  : head_ (0)
    -  , tail_ (0)
    -  , cur_size_ (0)
    -  , allocator_ (alloc)
    -{
    -  // ACE_TRACE ("ACE_Ordered_MultiSet::ACE_Ordered_MultiSet");
    -
    -  if (this->allocator_ == 0)
    -    this->allocator_ = ACE_Allocator::instance ();
    -}
    -
    -template 
    -ACE_Ordered_MultiSet::ACE_Ordered_MultiSet (const ACE_Ordered_MultiSet &us)
    -  : head_ (0)
    -  , tail_ (0)
    -  , cur_size_ (0)
    -  , allocator_ (us.allocator_)
    -{
    -  ACE_TRACE ("ACE_Ordered_MultiSet::ACE_Ordered_MultiSet");
    -
    -  if (this->allocator_ == 0)
    -    this->allocator_ = ACE_Allocator::instance ();
    -
    -  this->copy_nodes (us);
    -}
    -
    -template 
    -ACE_Ordered_MultiSet::~ACE_Ordered_MultiSet (void)
    -{
    -  // ACE_TRACE ("ACE_Ordered_MultiSet::~ACE_Ordered_MultiSet");
    -
    -  this->delete_nodes ();
    -}
    -
    -
    -template  void
    -ACE_Ordered_MultiSet::operator= (const ACE_Ordered_MultiSet &us)
    -{
    -  ACE_TRACE ("ACE_Ordered_MultiSet::operator=");
    -
    -  if (this != &us)
    -    {
    -      this->delete_nodes ();
    -      this->copy_nodes (us);
    -    }
    -}
    -
    -
    -template  int
    -ACE_Ordered_MultiSet::insert (const T &item)
    -{
    -  // ACE_TRACE ("ACE_Ordered_MultiSet::insert");
    -
    -  return  this->insert_from (item, this->head_, 0);
    -}
    -
    -template  int
    -ACE_Ordered_MultiSet::insert (const T &item,
    -                                 ACE_Ordered_MultiSet_Iterator &iter)
    -{
    -  // ACE_TRACE ("ACE_Ordered_MultiSet::insert using iterator");
    -
    -  return  this->insert_from (item, iter.current_, &iter.current_);
    -}
    -
    -template  int
    -ACE_Ordered_MultiSet::remove (const T &item)
    -{
    -  // ACE_TRACE ("ACE_Ordered_MultiSet::remove");
    -
    -  ACE_DNode *node = 0;
    -
    -  int result = locate (item, 0, node);
    -
    -  // if we found the node, remove from list and free it
    -  if (node && (result == 0))
    -    {
    -      if (node->prev_)
    -        {
    -          node->prev_->next_ = node->next_;
    -        }
    -      else
    -        {
    -          head_ = node->next_;
    -        }
    -
    -      if (node->next_)
    -        {
    -          node->next_->prev_ = node->prev_;
    -        }
    -      else
    -        {
    -          tail_ = node->prev_;
    -        }
    -
    -      this->cur_size_--;
    -
    -      ACE_DES_FREE_TEMPLATE (node,
    -                             this->allocator_->free,
    -                             ACE_DNode,
    -                             );
    -      return 0;
    -    }
    -
    -  return -1;
    -}
    -
    -template  int
    -ACE_Ordered_MultiSet::find (const T &item,
    -                               ACE_Ordered_MultiSet_Iterator &iter) const
    -{
    -  // search an occurance of item, using iterator's current position as a hint
    -  ACE_DNode *node = iter.current_;
    -  int result = locate (item, node, node);
    -
    -  // if we found the node, update the iterator and indicate success
    -  if (node && (result == 0))
    -    {
    -      iter.current_ = node;
    -      return 0;
    -    }
    -
    -  return -1;
    -}
    -
    -
    -
    -template  void
    -ACE_Ordered_MultiSet::reset (void)
    -{
    -  ACE_TRACE ("reset");
    -
    -  this->delete_nodes ();
    -}
    -
    -template  void
    -ACE_Ordered_MultiSet::dump (void) const
    -{
    -  //  ACE_TRACE ("ACE_Ordered_MultiSet::dump");
    -  //
    -  //  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  //  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("\nhead_ = %u"), this->head_));
    -  //  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("\nhead_->next_ = %u"), this->head_->next_));
    -  //  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("\ncur_size_ = %d\n"), this->cur_size_));
    -  //
    -  //  T *item = 0;
    -  //  size_t count = 1;
    -  //
    -  //  for (ACE_Ordered_MultiSet_Iterator iter (*(ACE_Ordered_MultiSet *) this);
    -  //       iter.next (item) != 0;
    -  //       iter.advance ())
    -  //    ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("count = %d\n"), count++));
    -  //
    -  //  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -template  int
    -ACE_Ordered_MultiSet::insert_from (const T &item, ACE_DNode *position,
    -                                      ACE_DNode **new_position)
    -{
    -  // ACE_TRACE ("ACE_Unbounded_Queue::insert_tail");
    -
    -  // create a new node
    -  ACE_DNode *temp;
    -  ACE_NEW_MALLOC_RETURN (temp,
    -                         (ACE_DNode*) this->allocator_->malloc (sizeof (ACE_DNode)),
    -                         ACE_DNode (item),
    -                         -1);
    -
    -  // obtain approximate location of the node
    -  int result = locate (item, position, position);
    -
    -  // if there are nodes in the multiset
    -  if (position)
    -    {
    -      switch (result)
    -        {
    -          // insert after the approximate position
    -        case -1:
    -
    -          // if there is a following node
    -          if (position->next_)
    -            {
    -              // link up with the following node
    -              position->next_->prev_ = temp;
    -              temp->next_ = position->next_;
    -            }
    -          else
    -            {
    -              // appending to the end of the set
    -              tail_ = temp;
    -            }
    -
    -          // link up with the preceeding node
    -          temp->prev_ = position;
    -          position->next_ = temp;
    -
    -          break;
    -
    -          // insert before the position
    -        case  0:
    -        case  1:
    -
    -          // if there is a preceeding node
    -          if (position->prev_)
    -            {
    -              // link up with the preceeding node
    -              position->prev_->next_ = temp;
    -              temp->prev_ = position->prev_;
    -            }
    -          else
    -            {
    -              // prepending to the start of the set
    -              head_ = temp;
    -            }
    -
    -          // link up with the preceeding node
    -          temp->next_ = position;
    -          position->prev_ = temp;
    -
    -          break;
    -
    -        default:
    -          return -1;
    -        }
    -    }
    -  else
    -    {
    -      // point the head and tail to the new node.
    -      this->head_ = temp;
    -      this->tail_ = temp;
    -    }
    -
    -  this->cur_size_++;
    -  if (new_position)
    -    {
    -      *new_position = temp;
    -    }
    -
    -  return 0;
    -}
    -
    -template  int
    -ACE_Ordered_MultiSet::locate (const T &item, ACE_DNode *start_position,
    -                                 ACE_DNode *&new_position) const
    -{
    -  if (! start_position)
    -    {
    -      start_position = this->head_;
    -    }
    -
    -  // if starting before the item, move forward
    -  // until at or just before item
    -  while (start_position && start_position->item_ < item &&
    -         start_position->next_)
    -    {
    -      start_position = start_position->next_;
    -    }
    -
    -  // if starting after the item, move back
    -  // until at or just after item
    -  while (start_position && item < start_position->item_ &&
    -         start_position->prev_)
    -    {
    -      start_position = start_position->prev_;
    -    }
    -
    -  // save the (approximate) location in the passed pointer
    -  new_position = start_position;
    -
    -  // show the location is after (1), before (-1) , or at (0) the item
    -  if (! new_position )
    -    {
    -      return 1;
    -    }
    -  else if (item < new_position->item_)
    -    {
    -      return 1;
    -    }
    -  else if (new_position->item_ < item)
    -    {
    -      return -1;
    -    }
    -  else
    -    {
    -      return 0;
    -    }
    -}
    -// looks for first occurance of  in the ordered set, using the
    -// passed starting position as a hint: if there is such an instance, it
    -// updates the new_position pointer to point to one such node and returns 0;
    -// if there is no such node, then if there is a node before where the
    -// item would have been, it updates the new_position pointer to point
    -// to this node and returns -1; if there is no such node, then if there
    -// is a node after where the item would have been, it updates the
    -// new_position pointer to point to this node (or 0 if there is no such
    -// node) and returns 1;
    -
    -template  void
    -ACE_Ordered_MultiSet::copy_nodes (const ACE_Ordered_MultiSet &us)
    -{
    -  ACE_DNode *insertion_point = this->head_;
    -
    -  for (ACE_DNode *curr = us.head_;
    -       curr;
    -       curr = curr->next_)
    -    {
    -      this->insert_from (curr->item_, insertion_point, &insertion_point);
    -    }
    -}
    -
    -template  void
    -ACE_Ordered_MultiSet::delete_nodes (void)
    -{
    -  // iterate through list, deleting nodes
    -  for (ACE_DNode *curr = this->head_;
    -       curr != 0;
    -       )
    -    {
    -      ACE_DNode *temp = curr;
    -      curr = curr->next_;
    -      ACE_DES_FREE_TEMPLATE (temp,
    -                             this->allocator_->free,
    -                             ACE_DNode,
    -                             );
    -    }
    -
    -  this->head_ = 0;
    -  this->tail_ = 0;
    -  this->cur_size_ = 0;
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Ordered_MultiSet_Iterator)
    -
    -  template 
    -ACE_Ordered_MultiSet_Iterator::ACE_Ordered_MultiSet_Iterator (ACE_Ordered_MultiSet &s)
    -  : current_ (s.head_),
    -    set_ (s)
    -{
    -  // ACE_TRACE ("ACE_Ordered_MultiSet_Iterator::ACE_Ordered_MultiSet_Iterator");
    -}
    -
    -template  int
    -ACE_Ordered_MultiSet_Iterator::next (T *&item) const
    -{
    -  // ACE_TRACE ("ACE_Ordered_MultiSet_Iterator::next");
    -  if (this->current_)
    -    {
    -      item = &this->current_->item_;
    -      return 1;
    -    }
    -
    -  return 0;
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE (ACE_DLList_Node)
    -
    -  template  T *
    -ACE_DLList::insert_tail (T *new_item)
    -{
    -  ACE_DLList_Node *temp1, *temp2;
    -  ACE_NEW_MALLOC_RETURN (temp1,
    -                         (ACE_DLList_Node *) this->allocator_->malloc (sizeof (ACE_DLList_Node)),
    -                         ACE_DLList_Node ((void *&)new_item),
    -                         0);
    -
    -  temp2 = ACE_DLList_Base::insert_tail (temp1);
    -  return (T *) (temp2 ? temp2->item_ : 0);
    -}
    -
    -template  T *
    -ACE_DLList::insert_head (T *new_item)
    -{
    -  ACE_DLList_Node *temp1, *temp2;
    -  ACE_NEW_MALLOC_RETURN (
    -                         temp1,
    -                         (ACE_DLList_Node *) this->allocator_->malloc (sizeof (ACE_DLList_Node)),
    -                         ACE_DLList_Node ((void *&)new_item), 0);
    -
    -  temp2 = ACE_DLList_Base::insert_head (temp1);
    -  return (T *) (temp2 ? temp2->item_ : 0);
    -}
    -
    -template  T *
    -ACE_DLList::delete_head (void)
    -{
    -  ACE_DLList_Node *temp1 = ACE_DLList_Base::delete_head ();
    -  T *temp2 = (T *) (temp1 ? temp1->item_ : 0);
    -  ACE_DES_FREE (temp1,
    -                this->allocator_->free,
    -                ACE_DLList_Node);
    -
    -  return temp2;
    -}
    -
    -template  T *
    -ACE_DLList::delete_tail (void)
    -{
    -  ACE_DLList_Node *temp1 = ACE_DLList_Base::delete_tail ();
    -  T *temp2 = (T *) (temp1 ? temp1->item_ : 0);
    -  ACE_DES_FREE (temp1,
    -                this->allocator_->free,
    -                ACE_DLList_Node);
    -  return temp2;
    -}
    -
    -// ****************************************************************
    -
    -// Dynamically initialize an array.
    -
    -template 
    -ACE_Array_Base::ACE_Array_Base (size_t size,
    -                                   ACE_Allocator *alloc)
    -  : max_size_ (size),
    -    cur_size_ (size),
    -    allocator_ (alloc)
    -{
    -  if (this->allocator_ == 0)
    -    this->allocator_ = ACE_Allocator::instance ();
    -
    -  if (size != 0)
    -    {
    -      ACE_NEW_MALLOC (this->array_,
    -                      (T *) this->allocator_->malloc (size * sizeof (T)),
    -                      T);
    -      for (size_t i = 0; i < size; ++i)
    -        new (&array_[i]) T;
    -    }
    -  else
    -    this->array_ = 0;
    -}
    -
    -template 
    -ACE_Array_Base::ACE_Array_Base (size_t size,
    -                                   const T &default_value,
    -                                   ACE_Allocator *alloc)
    -  : max_size_ (size),
    -    cur_size_ (size),
    -    allocator_ (alloc)
    -{
    -  if (this->allocator_ == 0)
    -    this->allocator_ = ACE_Allocator::instance ();
    -
    -  if (size != 0)
    -    {
    -      ACE_NEW_MALLOC (this->array_,
    -                      (T *) this->allocator_->malloc (size * sizeof (T)),
    -                      T);
    -
    -      for (size_t i = 0; i < size; ++i)
    -        new (&array_[i]) T (default_value);
    -    }
    -  else
    -    this->array_ = 0;
    -}
    -
    -// The copy constructor (performs initialization).
    -
    -template 
    -ACE_Array_Base::ACE_Array_Base (const ACE_Array_Base &s)
    -  : max_size_ (s.size ()),
    -    cur_size_ (s.size ()),
    -    allocator_ (s.allocator_)
    -{
    -  if (this->allocator_ == 0)
    -    this->allocator_ = ACE_Allocator::instance ();
    -
    -  ACE_NEW_MALLOC (this->array_,
    -                  (T *) this->allocator_->malloc (s.size () * sizeof (T)),
    -                  T);
    -
    -  for (size_t i = 0; i < this->size (); i++)
    -    new (&this->array_[i]) T (s.array_[i]);
    -}
    -
    -// Assignment operator (performs assignment).
    -
    -template  void
    -ACE_Array_Base::operator= (const ACE_Array_Base &s)
    -{
    -  // Check for "self-assignment".
    -
    -  if (this != &s)
    -    {
    -      if (this->max_size_ < s.size ())
    -        {
    -          ACE_DES_ARRAY_FREE (this->array_,
    -                              this->max_size_,
    -                              this->allocator_->free,
    -                              T);
    -
    -          ACE_NEW_MALLOC (this->array_,
    -                          (T *) this->allocator_->malloc (s.size () * sizeof (T)),
    -                          T);
    -          this->max_size_ = s.size ();
    -        }
    -
    -      this->cur_size_ = s.size ();
    -
    -      for (size_t i = 0; i < this->size (); i++)
    -        new (&this->array_[i]) T (s.array_[i]);
    -    }
    -}
    -
    -// Set an item in the array at location slot.
    -
    -template  int
    -ACE_Array_Base::set (const T &new_item, size_t slot)
    -{
    -  if (this->in_range (slot))
    -    {
    -      this->array_[slot] = new_item;
    -      return 0;
    -    }
    -  else
    -    return -1;
    -}
    -
    -// Get an item in the array at location slot.
    -
    -template  int
    -ACE_Array_Base::get (T &item, size_t slot) const
    -{
    -  if (this->in_range (slot))
    -    {
    -      // Copies the item.  If you don't want to copy, use operator []
    -      // instead (but then you'll be responsible for range checking).
    -      item = this->array_[slot];
    -      return 0;
    -    }
    -  else
    -    return -1;
    -}
    -
    -template int
    -ACE_Array_Base::max_size (size_t new_size)
    -{
    -  if (new_size > this->max_size_)
    -    {
    -      T *tmp;
    -
    -      ACE_NEW_MALLOC_RETURN (tmp,
    -                             (T *) this->allocator_->malloc (new_size * sizeof (T)),
    -                             T,
    -                             -1);
    -
    -      for (size_t i = 0; i < this->cur_size_; ++i)
    -        new (&tmp[i]) T (this->array_[i]);
    -
    -      // Initialize the new portion of the array that exceeds the
    -      // previously allocated section.
    -      for (size_t j = this->cur_size_; j < new_size; j++)
    -        new (&tmp[j]) T;
    -
    -      ACE_DES_ARRAY_FREE (this->array_,
    -                          this->max_size_,
    -                          this->allocator_->free,
    -                          T);
    -
    -      this->array_ = tmp;
    -      this->max_size_ = new_size;
    -      this->cur_size_ = new_size;
    -    }
    -
    -  return 0;
    -}
    -
    -template int
    -ACE_Array_Base::size (size_t new_size)
    -{
    -  int r = this->max_size (new_size);
    -  if (r != 0)
    -    return r;
    -  this->cur_size_ = new_size;
    -  return 0;
    -}
    -
    -// ****************************************************************
    -
    -// Compare this array with  for equality.
    -
    -template  int
    -ACE_Array::operator== (const ACE_Array &s) const
    -{
    -  if (this == &s)
    -    return 1;
    -  else if (this->size () != s.size ())
    -    return 0;
    -
    -  for (size_t slot = 0; slot < s.size (); slot++)
    -    if ((*this)[slot] != s[slot])
    -      return 0;
    -
    -  return 1;
    -}
    -
    -// ****************************************************************
    -
    -
    -template  int
    -ACE_Array_Iterator::next (T *&item)
    -{
    -  // ACE_TRACE ("ACE_Array_Iterator::next");
    -
    -  if (this->done ())
    -    {
    -      item = 0;
    -      return 0;
    -    }
    -  else
    -    {
    -      item = &array_[current_];
    -      return 1;
    -    }
    -}
    -
    -#endif /* ACE_CONTAINERS_T_C */
    diff --git a/ace/Containers_T.h b/ace/Containers_T.h
    deleted file mode 100644
    index 14548250b02..00000000000
    --- a/ace/Containers_T.h
    +++ /dev/null
    @@ -1,1843 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Containers.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_CONTAINERS_T_H
    -#define ACE_CONTAINERS_T_H
    -
    -#include "ace/ACE.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -// Need by ACE_DLList_Node.
    -#include "ace/Containers.h"      
    -
    -class ACE_Allocator;
    -
    -template 
    -class ACE_Bounded_Stack
    -{
    -  // = TITLE
    -  //     Implement a generic LIFO abstract data type.
    -  //
    -  // = DESCRIPTION
    -  //     This implementation of a Stack uses a bounded array
    -  //     that is allocated dynamically.
    -public:
    -  // = Initialization, assignemnt, and termination methods.
    -
    -  ACE_Bounded_Stack (size_t size);
    -  // Initialize a new stack so that it is empty.
    -  ACE_Bounded_Stack (const ACE_Bounded_Stack &s);
    -  // The copy constructor (performs initialization).
    -
    -  void operator= (const ACE_Bounded_Stack &s);
    -  // Assignment operator (performs assignment).
    -
    -  ~ACE_Bounded_Stack (void);
    -  // Perform actions needed when stack goes out of scope.
    -
    -  // = Classic Stack operations.
    -
    -  int push (const T &new_item);
    -  // Place a new item on top of the stack.  Returns -1 if the stack
    -  // is already full, 0 if the stack is not already full, and -1 if
    -  // failure occurs.
    -
    -  int pop (T &item);
    -  // Remove and return the top stack item.  Returns -1 if the stack is
    -  // already empty, 0 if the stack is not already empty, and -1 if
    -  // failure occurs.
    -
    -  int top (T &item) const;
    -  // Return top stack item without removing it.  Returns -1 if the
    -  // stack is already empty, 0 if the stack is not already empty, and
    -  // -1 if failure occurs.
    -
    -  // = Check boundary conditions.
    -
    -  int is_empty (void) const;
    -  // Returns 1 if the container is empty, otherwise returns 0.
    -
    -  int is_full (void) const;
    -  // Returns 1 if the container is full, otherwise returns 0.
    -
    -  size_t size (void) const;
    -  // The number of items in the stack.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  size_t size_;
    -  // Size of the dynamically allocated data.
    -
    -  size_t top_;
    -  // Keeps track of the current top of stack.
    -
    -  T *stack_;
    -  // Holds the stack's contents.
    -};
    -
    -//----------------------------------------
    -
    -template 
    -class ACE_Fixed_Stack
    -{
    -  // = TITLE
    -  //     Implement a generic LIFO abstract data type.
    -  //
    -  // = DESCRIPTION
    -  //     This implementation of a Stack uses a fixed array
    -  //     with the size fixed at instantiation time.
    -public:
    -  // = Initialization, assignemnt, and termination methods.
    -  ACE_Fixed_Stack (void);
    -  // Initialize a new stack so that it is empty.
    -
    -  ACE_Fixed_Stack (const ACE_Fixed_Stack &s);
    -  // The copy constructor (performs initialization).
    -
    -  void operator= (const ACE_Fixed_Stack &s);
    -  // Assignment operator (performs assignment).
    -
    -  ~ACE_Fixed_Stack (void);
    -  // Perform actions needed when stack goes out of scope.
    -
    -  // = Classic Stack operations.
    -
    -  int push (const T &new_item);
    -  // Place a new item on top of the stack.  Returns -1 if the stack
    -  // is already full, 0 if the stack is not already full, and -1 if
    -  // failure occurs.
    -
    -  int pop (T &item);
    -  // Remove and return the top stack item.  Returns -1 if the stack is
    -  // already empty, 0 if the stack is not already empty, and -1 if
    -  // failure occurs.
    -
    -  int top (T &item) const;
    -  // Return top stack item without removing it.  Returns -1 if the
    -  // stack is already empty, 0 if the stack is not already empty, and
    -  // -1 if failure occurs.
    -
    -  // = Check boundary conditions.
    -
    -  int is_empty (void) const;
    -  // Returns 1 if the container is empty, otherwise returns 0.
    -
    -  int is_full (void) const;
    -  // Returns 1 if the container is full, otherwise returns 0.
    -
    -  size_t size (void) const;
    -  // The number of items in the stack.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  size_t size_;
    -  // Size of the allocated data.
    -
    -  size_t top_;
    -  // Keeps track of the current top of stack.
    -
    -  T stack_[ACE_SIZE];
    -  // Holds the stack's contents.
    -};
    -
    -//----------------------------------------
    -
    -// Forward declarations.
    -template  class ACE_Unbounded_Set;
    -template  class ACE_Unbounded_Set_Iterator;
    -template  class ACE_Unbounded_Queue;
    -template  class ACE_Unbounded_Queue_Iterator;
    -template  class ACE_Unbounded_Stack;
    -template  class ACE_Unbounded_Stack_Iterator;
    -template  class ACE_Ordered_MultiSet;
    -template  class ACE_Ordered_MultiSet_Iterator;
    -
    -template
    -class ACE_Node
    -{
    -  // = TITLE
    -  //     Implementation element in a Queue, Set, and Stack.
    -public:
    -  friend class ACE_Unbounded_Queue;
    -  friend class ACE_Unbounded_Queue_Iterator;
    -  friend class ACE_Unbounded_Set;
    -  friend class ACE_Unbounded_Set_Iterator;
    -  friend class ACE_Unbounded_Stack;
    -  friend class ACE_Unbounded_Stack_Iterator;
    -
    -# if ! defined (ACE_HAS_BROKEN_NOOP_DTORS)
    -  ~ACE_Node (void);
    -  // This isn't necessary, but it keeps some compilers happy.
    -# endif /* ! defined (ACE_HAS_BROKEN_NOOP_DTORS) */
    -
    -private:
    -  // = Initialization methods
    -  ACE_Node (const T &i, ACE_Node *n);
    -  ACE_Node (ACE_Node *n = 0, int = 0);
    -  ACE_Node (const ACE_Node &n);
    -
    -  ACE_Node *next_;
    -  // Pointer to next element in the list of s.
    -
    -  T item_;
    -  // Current value of the item in this node.
    -};
    -
    -template
    -class ACE_DNode
    -{
    -  // = TITLE
    -  //     Implementation element in a bilinked list.
    -  friend class ACE_Ordered_MultiSet;
    -  friend class ACE_Ordered_MultiSet_Iterator;
    -
    -public:
    -
    -# if ! defined (ACE_HAS_BROKEN_NOOP_DTORS)
    -  ~ACE_DNode (void);
    -  // This isn't necessary, but it keeps some compilers happy.
    -# endif /* ! defined (ACE_HAS_BROKEN_NOOP_DTORS) */
    -
    -private:
    -
    -  // = Initialization methods
    -  ACE_DNode (const T &i, ACE_DNode *n = 0, ACE_DNode *p = 0);
    -
    -  ACE_DNode *next_;
    -  // Pointer to next element in the list of s.
    -
    -  ACE_DNode *prev_;
    -  // Pointer to previous element in the list of s.
    -
    -  T item_;
    -  // Current value of the item in this node.
    -};
    -
    -
    -template 
    -class ACE_Unbounded_Stack
    -{
    -  // = TITLE
    -  //     Implement a generic LIFO abstract data type.
    -  //
    -  // = DESCRIPTION
    -  //     This implementation of an unbounded Stack uses a linked list.
    -  //     If you use the  or  methods you should keep
    -  //     in mind that duplicate entries aren't allowed.  In general,
    -  //     therefore, you should avoid the use of these methods since
    -  //     they aren't really part of the ADT stack.
    -public:
    -  friend class ACE_Unbounded_Stack_Iterator;
    -
    -  // Trait definition.
    -  typedef ACE_Unbounded_Stack_Iterator ITERATOR;
    -
    -  // = Initialization, assignemnt, and termination methods.
    -  ACE_Unbounded_Stack (ACE_Allocator *alloc = 0);
    -  // Initialize a new stack so that it is empty.  Use user defined
    -  // allocation strategy if specified.
    -
    -  ACE_Unbounded_Stack (const ACE_Unbounded_Stack &s);
    -  // The copy constructor (performs initialization).
    -
    -  void operator= (const ACE_Unbounded_Stack &s);
    -  // Assignment operator (performs assignment).
    -
    -  ~ACE_Unbounded_Stack (void);
    -  // Perform actions needed when stack goes out of scope.
    -
    -  // = Classic Stack operations.
    -
    -  int push (const T &new_item);
    -  // Place a new item on top of the stack.  Returns -1 if the stack
    -  // is already full, 0 if the stack is not already full, and -1 if
    -  // failure occurs.
    -
    -  int pop (T &item);
    -  // Remove and return the top stack item.  Returns -1 if the stack is
    -  // already empty, 0 if the stack is not already empty, and -1 if
    -  // failure occurs.
    -
    -  int top (T &item) const;
    -  // Return top stack item without removing it.  Returns -1 if the
    -  // stack is already empty, 0 if the stack is not already empty, and
    -  // -1 if failure occurs.
    -
    -  // = Check boundary conditions.
    -
    -  int is_empty (void) const;
    -  // Returns 1 if the container is empty, otherwise returns 0.
    -
    -  int is_full (void) const;
    -  // Returns 1 if the container is full, otherwise returns 0.
    -
    -  // = Auxiliary methods (not strictly part of the Stack ADT).
    -
    -  int insert (const T &new_item);
    -  // Insert  into the Stack at the head (but doesn't allow
    -  // duplicates).  Returns -1 if failures occur, 1 if item is already
    -  // present (i.e., no duplicates are allowed), else 0.
    -
    -  int remove (const T &item);
    -  // Remove  from the Stack.  Returns 0 if it removes the item,
    -  // -1 if it can't find the item, and -1 if a failure occurs.
    -
    -  int find (const T &item) const;
    -  // Finds if  occurs the set.  Returns 0 if finds, else -1.
    -
    -  size_t size (void) const;
    -  // The number of items in the stack.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  void delete_all_nodes (void);
    -  // Delete all the nodes in the stack.
    -
    -  void copy_all_nodes (const ACE_Unbounded_Stack &s);
    -  // Copy all nodes from  to .
    -
    -  ACE_Node *head_;
    -  // Head of the linked list of Nodes.
    -
    -  size_t cur_size_;
    -  // Current size of the stack.
    -
    -  ACE_Allocator *allocator_;
    -  // Allocation strategy of the stack.
    -};
    -
    -template 
    -class ACE_Unbounded_Stack_Iterator
    -{
    -  // = TITLE
    -  //     Implement an iterator over an unbounded Stack.
    -public:
    -  // = Initialization method.
    -  ACE_Unbounded_Stack_Iterator (ACE_Unbounded_Stack &stack);
    -  // Move to the first element in the .
    -
    -  // = Iteration methods.
    -
    -  int next (T *&next_item);
    -  // Pass back the  that hasn't been seen in the Stack.
    -  // Returns 0 when all items have been seen, else 1.
    -
    -  int advance (void);
    -  // Move forward by one element in the Stack.  Returns 0 when all the
    -  // items in the Stack have been seen, else 1.
    -
    -  int first (void);
    -  // Move to the first element in the Stack.  Returns 0 if the
    -  // Stack is empty, else 1.
    -
    -  int done (void) const;
    -  // Returns 1 when all items have been seen, else 0.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  ACE_Node *current_;
    -  // Pointer to the current node in the iteration.
    -
    -  ACE_Unbounded_Stack &stack_;
    -  // Pointer to the Stack we're iterating over.
    -};
    -
    -template 
    -class ACE_Unbounded_Queue;
    -
    -template 
    -class ACE_Unbounded_Queue_Iterator
    -{
    -  // = TITLE
    -  //     Implement an iterator over an unbounded queue.
    -public:
    -  // = Initialization method.
    -  ACE_Unbounded_Queue_Iterator (ACE_Unbounded_Queue &q, int end = 0);
    -
    -  // = Iteration methods.
    -
    -  int next (T *&next_item);
    -  // Pass back the  that hasn't been seen in the queue.
    -  // Returns 0 when all items have been seen, else 1.
    -
    -  int advance (void);
    -  // Move forward by one element in the set.  Returns 0 when all the
    -  // items in the queue have been seen, else 1.
    -
    -  int first (void);
    -  // Move to the first element in the queue.  Returns 0 if the
    -  // queue is empty, else 1.
    -
    -  int done (void) const;
    -  // Returns 1 when all items have been seen, else 0.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  ACE_Node *current_;
    -  // Pointer to the current node in the iteration.
    -
    -  ACE_Unbounded_Queue &queue_;
    -  // Pointer to the queue we're iterating over.
    -};
    -
    -template 
    -class ACE_Unbounded_Queue
    -{
    -  // = TITLE
    -  //     A Queue of "infinite" length.
    -  //
    -  // = DESCRIPTION
    -  //     This implementation of an unbounded queue uses a circular
    -  //     linked list with a dummy node.
    -public:
    -  friend class ACE_Unbounded_Queue_Iterator;
    -
    -  // Trait definition.
    -  typedef ACE_Unbounded_Queue_Iterator ITERATOR;
    -
    -  // = Initialization and termination methods.
    -  ACE_Unbounded_Queue (ACE_Allocator *alloc = 0);
    -  // construction.  Use user specified allocation strategy
    -  // if specified.
    -
    -  ACE_Unbounded_Queue (const ACE_Unbounded_Queue &);
    -  // Copy constructor.
    -
    -  void operator= (const ACE_Unbounded_Queue &);
    -  // Assignment operator.
    -
    -  ~ACE_Unbounded_Queue (void);
    -  // construction.
    -
    -  // = Check boundary conditions.
    -
    -  int is_empty (void) const;
    -  // Returns 1 if the container is empty, otherwise returns 0.
    -
    -  int is_full (void) const;
    -  // Returns 1 if the container is full, otherwise returns 0.
    -
    -  // = Classic queue operations.
    -
    -  int enqueue_tail (const T &new_item);
    -  // Adds  to the tail of the queue.  Returns 0 on success,
    -  // -1 on failure.
    -
    -  int enqueue_head (const T &new_item);
    -  // Adds  to the head of the queue.  Returns 0 on success,
    -  // -1 on failure.
    -
    -  int dequeue_head (T &item);
    -  // Removes and returns the first  on the queue.  Returns 0 on
    -  // success, -1 if the queue was empty.
    -
    -  // = Additional utility methods.
    -
    -  void reset (void);
    -  // Reset the  to be empty and release all its
    -  // dynamically allocated resources.
    -
    -  int get (T *&item, size_t slot = 0) const;
    -  // Get the th element in the set.  Returns -1 if the element
    -  // isn't in the range {0.. - 1}, else 0.
    -
    -  int set (const T &item, size_t slot);
    -  // Set the th element in the set.  Will pad out the set with
    -  // empty nodes if  is beyond the range {0.. - 1}.
    -  // Returns -1 on failure, 0 if  isn't initially in range, and
    -  // 0 otherwise.
    -
    -  size_t size (void) const;
    -  // The number of items in the queue.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  // = STL-styled unidirectional iterator factory.
    -  ACE_Unbounded_Queue_Iterator begin (void);
    -  ACE_Unbounded_Queue_Iterator end (void);
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  void delete_nodes (void);
    -  // Delete all the nodes in the queue.
    -
    -  void copy_nodes (const ACE_Unbounded_Queue &);
    -  // Copy nodes into this queue.
    -
    -  ACE_Node *head_;
    -  // Pointer to the dummy node in the circular linked Queue.
    -
    -  size_t cur_size_;
    -  // Current size of the queue.
    -
    -  ACE_Allocator *allocator_;
    -  // Allocation Strategy of the queue.
    -};
    -
    -template 
    -class ACE_Double_Linked_List;
    -
    -template 
    -class ACE_Double_Linked_List_Iterator_Base
    -{
    -  // = TITLE
    -  //     Implements a common base class for iterators for a double
    -  //     linked list ADT
    -public:
    -  // = Iteration methods.
    -
    -  int next (T *&) const;
    -  // Passes back the  under the iterator. Returns 0 if the
    -  // iteration has completed, otherwise 1
    -
    -  T *next (void) const;
    -  // Return the address of next (current) unvisited item in the list.
    -  // 0 if there is no more element available.
    -  // DEPRECATED
    -
    -  int done (void) const;
    -  // Returns 1 when all items have been seen, else 0.
    -
    -  T & operator* (void) const ;
    -  // STL-like iterator dereference operator: returns a reference
    -  // to the node underneath the iterator.
    -
    -  void reset (ACE_Double_Linked_List &);
    -  // Retasks the iterator to iterate over a new
    -  // Double_Linked_List. This allows clients to reuse an iterator
    -  // without incurring the constructor overhead. If you do use this,
    -  // be aware that if there are more than one reference to this
    -  // iterator, the other "clients" may be very bothered when their
    -  // iterator changes.  @@ Here be dragons. Comments?
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  // = Initialization methods.
    -
    -  ACE_Double_Linked_List_Iterator_Base (ACE_Double_Linked_List &);
    -  // Constructor
    -
    -  ACE_Double_Linked_List_Iterator_Base (const
    -                                        ACE_Double_Linked_List_Iterator_Base 
    -                                        &iter);
    -  // Copy constructor.
    -
    -  // = Iteration methods.
    -  int go_head (void);
    -  // Move to the first element of the list. Returns 0 if the list is
    -  // empty, else 1. Note: the head of the ACE_DLList is actually a
    -  // null entry, so the first element is actually the 2n'd entry
    -
    -  int go_tail (void);
    -  // Move to the last element of the list. Returns 0 if the list is
    -  // empty, else 1.
    -
    -  T *not_done (void) const ;
    -  // Check if we reach the end of the list.  Can also be used to get
    -  // the *current* element in the list.  Return the address of the
    -  // current item if there are still elements left , 0 if we run out
    -  // of element.
    -    
    -  T *do_advance (void);
    -  // Advance to the next element in the list.  Return the address of the
    -  // next element if there are more, 0 otherwise.
    -
    -  T *do_retreat (void);
    -  // Retreat to the previous element in the list.  Return the address
    -  // of the previous element if there are more, 0 otherwise.
    -
    -  void dump_i (void) const;
    -  // Dump the state of an object.
    -
    -  T *current_;
    -  // Remember where we are.
    -
    -  ACE_Double_Linked_List *dllist_;
    -};
    -
    -template 
    -class ACE_Double_Linked_List_Iterator : public ACE_Double_Linked_List_Iterator_Base 
    -{
    -  // = TITLE
    -  //     Implements an iterator for a double linked list ADT
    -  //
    -  // = DESCRIPTION
    -  //     Iterate thru the double-linked list.  This class provides
    -  //     an interface that let users access the internal element
    -  //     addresses directly. Notice  must delcare
    -  //     ACE_Double_Linked_List,
    -  //     ACE_Double_Linked_List_Iterator_Base  and
    -  //     ACE_Double_Linked_List_Iterator as friend classes and class T
    -  //     should also have data members T* next_ and T* prev_.
    -public:
    -  // = Initialization method.
    -  ACE_Double_Linked_List_Iterator (ACE_Double_Linked_List &);
    -
    -  void reset (ACE_Double_Linked_List &);
    -  // Retasks the iterator to iterate over a new
    -  // Double_Linked_List. This allows clients to reuse an iterator
    -  // without incurring the constructor overhead. If you do use this,
    -  // be aware that if there are more than one reference to this
    -  // iterator, the other "clients" may be very bothered when their
    -  // iterator changes.
    -  // @@ Here be dragons. Comments?
    -
    -  int first (void);
    -  // Move to the first element in the list.  Returns 0 if the
    -  // list is empty, else 1.
    -
    -  int advance (void);
    -  // Move forward by one element in the list.  Returns 0 when all the
    -  // items in the list have been seen, else 1.
    -
    -  T* advance_and_remove (int dont_remove);
    -  // Advance the iterator while removing the original item from the
    -  // list.  Return a pointer points to the original (removed) item.
    -  // If  equals 0, this function behaves like 
    -  // but return 0 (NULL) instead.
    -
    -  // = STL-style iteration methods 
    -
    -  ACE_Double_Linked_List_Iterator & operator++ (void);
    -  // Prefix advance.
    -  
    -  ACE_Double_Linked_List_Iterator operator++ (int);
    -  // Postfix advance.
    -  
    -  ACE_Double_Linked_List_Iterator & operator-- (void);
    -  // Prefix reverse.
    -  
    -  ACE_Double_Linked_List_Iterator operator-- (int);
    -  // Postfix reverse.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -};
    -
    -template 
    -class ACE_Double_Linked_List_Reverse_Iterator : public ACE_Double_Linked_List_Iterator_Base 
    -{
    -  // = TITLE
    -  //     Implements a reverse iterator for a double linked list ADT
    -  //
    -  // = DESCRIPTION
    -  //     Iterate backwards over the double-linked list.  This class
    -  //     provide an interface that let users access the internal
    -  //     element addresses directly, which seems to break the
    -  //     encapsulation.  Notice  must delcare 
    -  //     ACE_Double_Linked_List,
    -  //     ACE_Double_Linked_List_Iterator_Base  and
    -  //     ACE_Double_Linked_List_Iterator as friend classes and class T
    -  //     should also have data members T* next_ and T* prev_.
    -public:
    -  // = Initialization method.
    -  ACE_Double_Linked_List_Reverse_Iterator (ACE_Double_Linked_List &);
    -
    -  void reset (ACE_Double_Linked_List &);
    -  // Retasks the iterator to iterate over a new
    -  // Double_Linked_List. This allows clients to reuse an iterator
    -  // without incurring the constructor overhead. If you do use this,
    -  // be aware that if there are more than one reference to this
    -  // iterator, the other "clients" may be very bothered when their
    -  // iterator changes.
    -  // @@ Here be dragons. Comments?
    -
    -  int first (void);
    -  // Move to the first element in the list.  Returns 0 if the
    -  // list is empty, else 1.
    -
    -  int advance (void);
    -  // Move forward by one element in the list.  Returns 0 when all the
    -  // items in the list have been seen, else 1.
    -  
    -  T* advance_and_remove (int dont_remove);
    -  // Advance the iterator while removing the original item from the
    -  // list.  Return a pointer points to the original (removed) item.
    -  // If  equals 0, this function behaves like 
    -  // but return 0 (NULL) instead.
    -
    -  // = STL-style iteration methods 
    -
    -  ACE_Double_Linked_List_Reverse_Iterator & operator++ (void);
    -  // Prefix advance.
    -  
    -  ACE_Double_Linked_List_Reverse_Iterator operator++ (int);
    -  // Postfix advance.
    -
    -  ACE_Double_Linked_List_Reverse_Iterator & operator-- (void);
    -  // Prefix reverse.
    -  
    -  ACE_Double_Linked_List_Reverse_Iterator operator-- (int);
    -  // Postfix reverse.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -};
    -
    -template 
    -class ACE_Double_Linked_List
    -{
    -  // = TITLE
    -  //     A double-linked list implementation.
    -  //
    -  // = DESCRIPTION
    -  //     This implementation of an unbounded double-linked list uses a
    -  //     circular linked list with a dummy node.  It is pretty much
    -  //     like the  except that it allows removing
    -  //     of a specific element from a specific location.
    -  //
    -  //     Notice that this class is an implementation of a very simply
    -  //     data structure.is *NOT* a container class.  You can use the
    -  //     class to implement other contains classes but it is *NOT* a
    -  //     general purpose container class.
    -  //
    -  //     The parameter class *MUST* has members T* prev and T* next
    -  //     and users of this class are responsible to follow the general
    -  //     rules of using double-linked lists to maintaining the list
    -  //     integrities.
    -  //
    -  //     If you need a double linked container class, check out the
    -  //     DLList class in this file.
    -public:
    -  friend class ACE_Double_Linked_List_Iterator_Base;
    -  friend class ACE_Double_Linked_List_Iterator;
    -  friend class ACE_Double_Linked_List_Reverse_Iterator;
    -
    -  // Trait definition.
    -  typedef ACE_Double_Linked_List_Iterator ITERATOR;
    -  typedef ACE_Double_Linked_List_Reverse_Iterator REVERSE_ITERATOR;
    -
    -  // = Initialization and termination methods.
    -  ACE_Double_Linked_List (ACE_Allocator *alloc = 0);
    -  // construction.  Use user specified allocation strategy
    -  // if specified.
    -
    -  ACE_Double_Linked_List (ACE_Double_Linked_List &);
    -  // Copy constructor.
    -
    -  void operator= (ACE_Double_Linked_List &);
    -  // Assignment operator.
    -
    -  ~ACE_Double_Linked_List (void);
    -  // Destructor.
    -
    -  // = Check boundary conditions.
    -
    -  int is_empty (void) const;
    -  // Returns 1 if the container is empty, otherwise returns 0.
    -
    -  int is_full (void) const;
    -  // Returns 1 if the container is full, otherwise returns 0.
    -
    -  // = Classic queue operations.
    -
    -  T *insert_tail (T *new_item);
    -  // Adds  to the tail of the list. Returns the new item
    -  // that was inserted.
    -
    -  T *insert_head (T *new_item);
    -  // Adds  to the head of the list.Returns the new item that
    -  // was inserted.
    -
    -  T* delete_head (void);
    -  // Removes and returns the first  in the list.  Returns
    -  // internal node's address on success, 0 if the queue was empty.
    -  // This method will *not* free the internal node.
    -
    -  T *delete_tail (void);
    -  // Removes and returns the last  in the list.  Returns
    -  // internal nodes's address on success, 0 if the queue was
    -  // empty. This method will *not* free the internal node.
    -
    -  // = Additional utility methods.
    -
    -  void reset (void);
    -  // Reset the  to be empty.
    -  // Notice that since no one is interested in the items within,
    -  // This operation will delete all items.
    -
    -  int get (T *&item, size_t slot = 0);
    -  // Get the th element in the set.  Returns -1 if the element
    -  // isn't in the range {0.. - 1}, else 0.
    -
    -  size_t size (void) const;
    -  // The number of items in the queue.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  int remove (T *n);
    -  // Use DNode address directly.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  void delete_nodes (void);
    -  // Delete all the nodes in the list.
    -
    -  void copy_nodes (ACE_Double_Linked_List &);
    -  // Copy nodes into this list.
    -
    -  void init_head (void);
    -  // Setup header pointer.  Called after we create the head node in ctor.
    -
    -  int insert_element (T *new_item,
    -                      int before = 0,
    -                      T *old_item = 0);
    -  // Insert a  into the list.  It will be added before
    -  // or after .  Default is to insert the new item *after*
    -  // .  Return 0 if succeed, -1 if error occured.
    -
    -  int remove_element (T *item);
    -  // Remove an  from the list.  Return 0 if succeed, -1 otherwise.
    -  // Notice that this function checks if item is  and either its
    -  //  or  is NULL.  The function resets item's  and
    -  //  to 0 to prevent clobbering the double-linked list if a user
    -  // tries to remove the same node again.
    -
    -  T *head_;
    -  // Head of the circular double-linked list.
    -
    -  size_t size_;
    -  // Size of this list.
    -
    -  ACE_Allocator *allocator_;
    -  // Allocation Strategy of the queue.
    -};
    -
    -
    -template  class ACE_DLList;
    -template  class ACE_DLList_Iterator;
    -template  class ACE_DLList_Reverse_Iterator;
    -
    -typedef ACE_Double_Linked_List ACE_DLList_Base;
    -
    -//typedef ACE_Double_Linked_List_Iterator 
    -//        ACE_DLList_Iterator_Base;
    -//typedef ACE_Double_Linked_List_Reverse_Iterator 
    -//        ACE_DLList_Reverse_Iterator_Base;
    -//@@ These two typedefs (inherited from James Hu's original design)
    -// have been removed because Sun CC 4.2 had problems with it. I guess
    -// having the DLList_Iterators inheriting from a class which is
    -// actually a typedef leads to problems. #define'ing rather than
    -// typedef'ing worked, but as per Carlos's reccomendation, I'm just
    -// replacing all references to the base classes with their actual
    -// type.  Matt Braun (6/15/99)
    -
    -template 
    -class ACE_DLList : public ACE_DLList_Base
    -{
    -  // = TITLE
    -  //     A double-linked list container class.
    -  //
    -  // = DESCRIPTION
    -  //     This implementation uses ACE_Double_Linked_List to perform
    -  //     the logic behind this container class.  It delegates all of its
    -  //     calls to ACE_Double_Linked_List.
    -
    -  friend class ACE_DLList_Node;
    -  friend class ACE_Double_Linked_List_Iterator;
    -  friend class ACE_DLList_Iterator;
    -  friend class ACE_DLList_Reverse_Iterator;
    -
    -public:
    -
    -  void operator= (ACE_DLList &l);
    -  // Delegates to ACE_Double_Linked_List.
    -
    -  // = Classic queue operations.
    -
    -  T *insert_tail (T *new_item);
    -  // Delegates to ACE_Double_Linked_List.
    -
    -  T *insert_head (T *new_item);
    -  // Delegates to ACE_Double_Linked_List.
    -
    -  T *delete_head (void);
    -  // Delegates to ACE_Double_Linked_List.
    -
    -  T *delete_tail (void);
    -  // Delegates to ACE_Double_Linked_List.
    -
    -  // = Additional utility methods.
    -
    -  int get (T *&item, size_t slot = 0);
    -  // Delegates to ACE_Double_Linked_List, but where
    -  // ACE_Double_Linked_List returns the node as the item, this get
    -  // returns the contents of the node in item.
    -
    -  void dump (void) const;
    -  // Delegates to ACE_Double_Linked_List.
    -
    -  int remove (ACE_DLList_Node *n);
    -  // Delegates to ACE_Double_Linked_List.
    -
    -
    -  // = Initialization and termination methods.
    -
    -  ACE_DLList (ACE_Allocator *alloc = 0);
    -  // Delegates to ACE_Double_Linked_List.
    -
    -  ACE_DLList (ACE_DLList &l);
    -  // Delegates to ACE_Double_Linked_List.
    -
    -  ~ACE_DLList (void);
    -  // Deletes the list starting from the head.
    -};
    -
    -template 
    -class ACE_DLList_Iterator : public ACE_Double_Linked_List_Iterator 
    -{
    -  // = TITLE
    -  //     A double-linked list container class iterator.
    -  //
    -  // = DESCRIPTION
    -  //     This implementation uses ACE_Double_Linked_List_Iterator to
    -  //     perform the logic behind this container class.  It delegates
    -  //     all of its calls to ACE_Double_Linked_List_Iterator.
    -
    -  friend class ACE_DLList;
    -  friend class ACE_DLList_Node;
    -
    -public:
    -
    -  // = Initialization method.
    -  ACE_DLList_Iterator (ACE_DLList &l);
    -
    -  void reset (ACE_DLList &l);
    -  // Retasks the iterator to iterate over a new
    -  // Double_Linked_List. This allows clients to reuse an iterator
    -  // without incurring the constructor overhead. If you do use this,
    -  // be aware that if there are more than one reference to this
    -  // iterator, the other "clients" may be very bothered when their
    -  // iterator changes.
    -  // @@ Here be dragons. Comments?
    -
    -  // = Iteration methods.
    -  int advance (void);
    -  // Move forward by one element in the set.  Returns 0 when all the
    -  // items in the set have been seen, else 1.
    -
    -  int next (T *&);
    -  // Pass back the  that hasn't been seen in the Stack.
    -  // Returns 0 when all items have been seen, else 1.
    -
    -  T *next (void) const;
    -  // Delegates to ACE_Double_Linked_List_Iterator, except that whereas 
    -  // the Double_Linked_List version of next returns the node, this next
    -  // returns the contents of the node
    -  // DEPRECATED
    -
    -  int remove (void);
    -  // Removes the current item (i.e., ) from the list.
    -  
    -  void dump (void) const;
    -  // Delegates to ACE_Double_Linked_List_Iterator.
    -
    -private:
    -  ACE_DLList *list_;
    -};
    -
    -template 
    -class ACE_DLList_Reverse_Iterator : public ACE_Double_Linked_List_Reverse_Iterator 
    -{
    -  // = TITLE
    -  //     A double-linked list container class iterator.
    -  //
    -  // = DESCRIPTION
    -  //     This implementation uses ACE_Double_Linked_List_Iterator to
    -  //     perform the logic behind this container class.  It delegates
    -  //     all of its calls to ACE_Double_Linked_List_Iterator.
    -
    -  friend class ACE_DLList;
    -  friend class ACE_DLList_Node;
    -
    -public:
    -
    -  // = Initialization method.
    -  ACE_DLList_Reverse_Iterator (ACE_DLList &l);
    -
    -  void reset (ACE_DLList &l);
    -  // Retasks the iterator to iterate over a new
    -  // Double_Linked_List. This allows clients to reuse an iterator
    -  // without incurring the constructor overhead. If you do use this,
    -  // be aware that if there are more than one reference to this
    -  // iterator, the other "clients" may be very bothered when their
    -  // iterator changes.
    -  // @@ Here be dragons. Comments?
    -
    -  // = Iteration methods.
    -  int advance (void);
    -  // Move forward by one element in the set.  Returns 0 when all the
    -  // items in the set have been seen, else 1.
    -
    -  int next (T *&);
    -  // Pass back the  that hasn't been seen in the Stack.
    -  // Returns 0 when all items have been seen, else 1.
    -
    -  T *next (void) const;
    -  // Delegates to ACE_Double_Linked_List_Iterator.
    -  // DEPRECATED 
    -
    -  int remove (void);
    -  // Removes the current item (i.e., ) from the list.
    -
    -  void dump (void) const;
    -  // Delegates to ACE_Double_Linked_List_Iterator.
    -
    -private:
    -  ACE_DLList *list_;
    -};
    -
    -template 
    -class ACE_Unbounded_Set_Iterator
    -{
    -  // = TITLE
    -  //     Implement an iterator over an unbounded set.
    -public:
    -  // = Initialization method.
    -  ACE_Unbounded_Set_Iterator (ACE_Unbounded_Set &s, int end = 0);
    -
    -  // = Iteration methods.
    -
    -  int next (T *&next_item);
    -  // Pass back the  that hasn't been seen in the Set.
    -  // Returns 0 when all items have been seen, else 1.
    -
    -  int advance (void);
    -  // Move forward by one element in the set.  Returns 0 when all the
    -  // items in the set have been seen, else 1.
    -
    -  int first (void);
    -  // Move to the first element in the set.  Returns 0 if the
    -  // set is empty, else 1.
    -
    -  int done (void) const;
    -  // Returns 1 when all items have been seen, else 0.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  // = STL styled iteration, compare, and reference functions.
    -
    -  ACE_Unbounded_Set_Iterator operator++ (int);
    -  // Postfix advance.
    -
    -  ACE_Unbounded_Set_Iterator& operator++ (void);
    -  // Prefix advance.
    -
    -  T& operator* (void);
    -  // Returns a reference to the interal element  is pointing to.
    -
    -  int operator== (const ACE_Unbounded_Set_Iterator &) const;
    -  int operator!= (const ACE_Unbounded_Set_Iterator &) const;
    -  // Check if two iterators point to the same position
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -
    -  ACE_Node *current_;
    -  // Pointer to the current node in the iteration.
    -
    -  ACE_Unbounded_Set *set_;
    -  // Pointer to the set we're iterating over.
    -};
    -
    -template 
    -class ACE_Unbounded_Set
    -{
    -  // = TITLE
    -  //     Implement a simple unordered set of  of unbounded size.
    -  //
    -  // = DESCRIPTION
    -  //     This implementation of an unordered set uses a circular
    -  //     linked list with a dummy node.  This implementation does not
    -  //     allow duplicates, but it maintains FIFO ordering of insertions.
    -public:
    -  friend class ACE_Unbounded_Set_Iterator;
    -
    -  // Trait definition.
    -  typedef ACE_Unbounded_Set_Iterator ITERATOR;
    -  typedef ACE_Unbounded_Set_Iterator iterator;
    -
    -  // = Initialization and termination methods.
    -  ACE_Unbounded_Set (ACE_Allocator *alloc = 0);
    -  // Constructor.  Use user specified allocation strategy
    -  // if specified.
    -
    -  ACE_Unbounded_Set (const ACE_Unbounded_Set &);
    -  // Copy constructor.
    -
    -  void operator= (const ACE_Unbounded_Set &);
    -  // Assignment operator.
    -
    -  ~ACE_Unbounded_Set (void);
    -  // Destructor.
    -
    -  // = Check boundary conditions.
    -
    -  int is_empty (void) const;
    -  // Returns 1 if the container is empty, otherwise returns 0.
    -
    -  int is_full (void) const;
    -  // Returns 1 if the container is full, otherwise returns 0.
    -
    -  // = Classic unordered set operations.
    -
    -  int insert (const T &new_item);
    -  // Insert  into the set (doesn't allow duplicates).
    -  // Returns -1 if failures occur, 1 if item is already present, else
    -  // 0.
    -
    -  int remove (const T &item);
    -  // Remove first occurrence of  from the set.  Returns 0 if
    -  // it removes the item, -1 if it can't find the item, and -1 if a
    -  // failure occurs.
    -
    -  int find (const T &item) const;
    -  // Finds if  occurs in the set.  Returns 0 if find succeeds,
    -  // else -1.
    -
    -  size_t size (void) const;
    -  // Size of the set.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  void reset (void);
    -  // Reset the  to be empty.
    -
    -  // = STL-styled unidirectional iterator factory.
    -  ACE_Unbounded_Set_Iterator begin (void);
    -  ACE_Unbounded_Set_Iterator end (void);
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  int insert_tail (const T &item);
    -  // Insert  at the tail of the set (doesn't check for
    -  // duplicates).
    -
    -  void delete_nodes (void);
    -  // Delete all the nodes in the Set.
    -
    -  void copy_nodes (const ACE_Unbounded_Set &);
    -  // Copy nodes into this set.
    -
    -  ACE_Node *head_;
    -  // Head of the linked list of Nodes.
    -
    -  size_t cur_size_;
    -  // Current size of the set.
    -
    -  ACE_Allocator *allocator_;
    -  // Allocation strategy of the set.
    -};
    -
    -// Forward declaration.
    -template 
    -class ACE_Fixed_Set;
    -
    -template 
    -class ACE_Fixed_Set_Iterator
    -{
    -  // = TITLE
    -  //     Interates through an unordered set.
    -  //
    -  // = DESCRIPTION
    -  //     This implementation of an unordered set uses a fixed array.
    -  //     Allows deletions while iteration is occurring.
    -public:
    -  // = Initialization method.
    -  ACE_Fixed_Set_Iterator (ACE_Fixed_Set &s);
    -
    -  // = Iteration methods.
    -
    -  int next (T *&next_item);
    -  // Pass back the  that hasn't been seen in the Set.
    -  // Returns 0 when all items have been seen, else 1.
    -
    -  int advance (void);
    -  // Move forward by one element in the set.  Returns 0 when all the
    -  // items in the set have been seen, else 1.
    -
    -  int first (void);
    -  // Move to the first element in the set.  Returns 0 if the
    -  // set is empty, else 1.
    -
    -  int done (void) const;
    -  // Returns 1 when all items have been seen, else 0.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  ACE_Fixed_Set &s_;
    -  // Set we are iterating over.
    -
    -  ssize_t next_;
    -  // How far we've advanced over the set.
    -};
    -
    -template 
    -class ACE_Fixed_Set
    -{
    -  // = TITLE
    -  //     Implement a simple unordered set of  with maximum .
    -  //
    -  // = DESCRIPTION
    -  //     This implementation of an unordered set uses a fixed array.
    -  //     This implementation does not allow duplicates...
    -public:
    -  friend class ACE_Fixed_Set_Iterator;
    -
    -  // Trait definition.
    -  typedef ACE_Fixed_Set_Iterator ITERATOR;
    -
    -  // = Initialization and termination methods.
    -  ACE_Fixed_Set (void);
    -  // Constructor.
    -
    -  ACE_Fixed_Set (const ACE_Fixed_Set &);
    -  // Copy constructor.
    -
    -  void operator= (const ACE_Fixed_Set &);
    -  // Assignment operator.
    -
    -  ~ACE_Fixed_Set (void);
    -  // Destructor.
    -
    -  // = Check boundary conditions.
    -
    -  int is_empty (void) const;
    -  // Returns 1 if the container is empty, otherwise returns 0.
    -
    -  int is_full (void) const;
    -  // Returns 1 if the container is full, otherwise returns 0.
    -
    -  // = Classic unordered set operations.
    -
    -  int insert (const T &new_item);
    -  // Insert  into the set (doesn't allow duplicates).
    -  // Returns -1 if failures occur, 1 if item is already present, else
    -  // 0.
    -
    -  int remove (const T &item);
    -  // Remove first occurrence of  from the set.  Returns 0 if
    -  // it removes the item, -1 if it can't find the item, and -1 if a
    -  // failure occurs.
    -
    -  int find (const T &item) const;
    -  // Finds if  occurs in the set.  Returns 0 if finds, else -1.
    -
    -  size_t size (void) const;
    -  // Size of the set.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  struct
    -  {
    -    T item_;
    -    // Item in the set.
    -
    -    int is_free_;
    -    // Keeps track of whether this item is in use or not.
    -  } search_structure_[ACE_SIZE];
    -  // Holds the contents of the set.
    -
    -  size_t cur_size_;
    -  // Current size of the set.
    -
    -  size_t max_size_;
    -  // Maximum size of the set.
    -};
    -
    -// Forward declaration.
    -template 
    -class ACE_Bounded_Set;
    -
    -template 
    -class ACE_Bounded_Set_Iterator
    -{
    -  // = TITLE
    -  //     Interates through an unordered set.
    -  //
    -  // = DESCRIPTION
    -  //     This implementation of an unordered set uses a Bounded array.
    -  //     Allows deletions while iteration is occurring.
    -public:
    -  // = Initialization method.
    -  ACE_Bounded_Set_Iterator (ACE_Bounded_Set &s);
    -
    -  // = Iteration methods.
    -
    -  int next (T *&next_item);
    -  // Pass back the  that hasn't been seen in the Set.
    -  // Returns 0 when all items have been seen, else 1.
    -
    -  int advance (void);
    -  // Move forward by one element in the set.  Returns 0 when all the
    -  // items in the set have been seen, else 1.
    -
    -  int first (void);
    -  // Move to the first element in the set.  Returns 0 if the
    -  // set is empty, else 1.
    -
    -  int done (void) const;
    -  // Returns 1 when all items have been seen, else 0.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  ACE_Bounded_Set &s_;
    -  // Set we are iterating over.
    -
    -  ssize_t next_;
    -  // How far we've advanced over the set.
    -};
    -
    -template 
    -class ACE_Bounded_Set
    -{
    -  // = TITLE
    -  //     Implement a simple unordered set of  with maximum
    -  //     set at creation time.
    -  //
    -  // = DESCRIPTION
    -  //     This implementation of an unordered set uses a Bounded array.
    -  //     This implementation does not allow duplicates...
    -public:
    -  friend class ACE_Bounded_Set_Iterator;
    -
    -  // Trait definition.
    -  typedef ACE_Bounded_Set_Iterator ITERATOR;
    -
    -  enum
    -  {
    -    DEFAULT_SIZE = 10
    -  };
    -
    -  // = Initialization and termination methods.
    -  ACE_Bounded_Set (void);
    -  // Constructor.
    -
    -  ACE_Bounded_Set (size_t size);
    -  // Constructor.
    -
    -  ACE_Bounded_Set (const ACE_Bounded_Set &);
    -  // Copy constructor.
    -
    -  void operator= (const ACE_Bounded_Set &);
    -  // Assignment operator.
    -
    -  ~ACE_Bounded_Set (void);
    -  // Destructor
    -
    -  // = Check boundary conditions.
    -
    -  int is_empty (void) const;
    -  // Returns 1 if the container is empty, otherwise returns 0.
    -
    -  int is_full (void) const;
    -  // Returns 1 if the container is full, otherwise returns 0.
    -
    -  // = Classic unordered set operations.
    -
    -  int insert (const T &new_item);
    -  // Insert  into the set (doesn't allow duplicates).
    -  // Returns -1 if failures occur, 1 if item is already present, else
    -  // 0.
    -
    -  int remove (const T &item);
    -  // Remove first occurrence of  from the set.  Returns 0 if it
    -  // removes the item, -1 if it can't find the item, and -1 if a
    -  // failure occurs.
    -
    -  int find (const T &item) const;
    -  // Finds if  occurs in the set.  Returns 0 if finds, else -1.
    -
    -  size_t size (void) const;
    -  // Size of the set.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  struct Search_Structure
    -  {
    -    T item_;
    -    // Item in the set.
    -
    -    int is_free_;
    -    // Keeps track of whether this item is in use or not.
    -  };
    -
    -  Search_Structure *search_structure_;
    -  // Holds the contents of the set.
    -
    -  size_t cur_size_;
    -  // Current size of the set.
    -
    -  size_t max_size_;
    -  // Maximum size of the set.
    -};
    -
    -template 
    -class ACE_Ordered_MultiSet_Iterator
    -{
    -  // = TITLE
    -  //     Implement a bidirectional iterator over an ordered multiset.
    -  //     This class template requires that < operator semantics be
    -  //     defined for the parameterized type , but does not impose
    -  //     any restriction on how that ordering operator is implemented.
    -public:
    -  friend class ACE_Ordered_MultiSet;
    -
    -  // = Initialization method.
    -  ACE_Ordered_MultiSet_Iterator (ACE_Ordered_MultiSet &s);
    -
    -  // = Iteration methods.
    -
    -  int next (T *&next_item) const;
    -  // Pass back the  that hasn't been seen in the ordered multiset.
    -  // Returns 0 when all items have been seen, else 1.
    -
    -  int first (void);
    -  // Repositions the iterator at the first item in the ordered multiset
    -  // Returns 0 if the list is empty else 1.
    -
    -  int last (void);
    -  // Repositions the iterator at the last item in the ordered multiset
    -  // Returns 0 if the list is empty else 1.
    -
    -  int advance (void);
    -  // Move forward by one element in the set.  Returns 0 when all the
    -  // items in the set have been seen, else 1.
    -
    -  int retreat (void);
    -  // Move backward by one element in the set.  Returns 0 when all the
    -  // items in the set have been seen, else 1.
    -
    -  int done (void) const;
    -  // Returns 1 when all items have been seen, else 0.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -
    -  ACE_DNode *current_;
    -  // Pointer to the current node in the iteration.
    -
    -  ACE_Ordered_MultiSet &set_;
    -  // Pointer to the set we're iterating over.
    -};
    -
    -template 
    -class ACE_Ordered_MultiSet
    -{
    -  // = TITLE
    -  //     Implement a simple ordered multiset of  of unbounded size.
    -  //     This class template requires that < operator semantics be
    -  //     defined for the parameterized type , but does not impose
    -  //     any restriction on how that ordering operator is implemented.
    -  //
    -  // = DESCRIPTION
    -  //     This implementation of an unordered set uses a circular
    -  //     linked list with a dummy node.  This implementation does not
    -  //     allow duplicates, but it maintains FIFO ordering of
    -  //     insertions.
    -public:
    -  friend class ACE_Ordered_MultiSet_Iterator;
    -
    -  // Trait definition.
    -  typedef ACE_Ordered_MultiSet_Iterator ITERATOR;
    -
    -  // = Initialization and termination methods.
    -  ACE_Ordered_MultiSet (ACE_Allocator *alloc = 0);
    -  // Constructor.  Use user specified allocation strategy
    -  // if specified.
    -
    -  ACE_Ordered_MultiSet (const ACE_Ordered_MultiSet &);
    -  // Copy constructor.
    -
    -  ~ACE_Ordered_MultiSet (void);
    -  // Destructor.
    -
    -  void operator= (const ACE_Ordered_MultiSet &);
    -  // Assignment operator.
    -
    -  // = Check boundary conditions.
    -
    -  int is_empty (void) const;
    -  // Returns 1 if the container is empty, otherwise returns 0.
    -
    -  size_t size (void) const;
    -  // Size of the set.
    -
    -  // = Classic unordered set operations.
    -
    -  int insert (const T &new_item);
    -  // Insert  into the ordered multiset.
    -  // Returns -1 if failures occur, else 0.
    -
    -  int insert (const T &new_item, ITERATOR &iter);
    -  // Insert  into the ordered multiset, starting its search at
    -  // the node pointed to by the iterator, and if insetion was successful,
    -  // updates the iterator to point to the newly inserted node.
    -  // Returns -1 if failures occur, else 0.
    -
    -  int remove (const T &item);
    -  // Remove first occurrence of  from the set.  Returns 0 if
    -  // it removes the item, -1 if it can't find the item.
    -
    -  int find (const T &item, ITERATOR &iter) const;
    -  // Finds first occurrance of  in the multiset, using the iterator's
    -  // current position as a hint to improve performance. If find succeeds,
    -  // it positions the iterator at that node and returns 0, or if it cannot
    -  // locate the node, it leaves the iterator alone and just returns -1.
    -
    -  void reset (void);
    -  // Reset the  to be empty.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -
    -  int insert_from (const T &item, ACE_DNode *start_position,
    -                   ACE_DNode **new_position);
    -  // Insert , starting its search at the position given,
    -  // and if successful updates the passed pointer to point to
    -  // the newly inserted item's node.
    -
    -  int locate (const T &item, ACE_DNode *start_position,
    -              ACE_DNode *&new_position) const;
    -  // looks for first occurance of  in the ordered set, using the
    -  // passed starting position as a hint: if there is such an instance, it
    -  // updates the new_position pointer to point to this node and returns 0;
    -  // if there is no such node, then if there is a node before where the
    -  // item would have been, it updates the new_position pointer to point
    -  // to this node and returns -1; if there is no such node, then if there
    -  // is a node after where the item would have been, it updates the
    -  // new_position pointer to point to this node (or 0 if there is no such
    -  // node) and returns 1;
    -
    -  void delete_nodes (void);
    -  // Delete all the nodes in the Set.
    -
    -  void copy_nodes (const ACE_Ordered_MultiSet &);
    -  // Copy nodes into this set.
    -
    -  ACE_DNode *head_;
    -  // Head of the bilinked list of Nodes.
    -
    -  ACE_DNode *tail_;
    -  // Head of the bilinked list of Nodes.
    -
    -  size_t cur_size_;
    -  // Current size of the set.
    -
    -  ACE_Allocator *allocator_;
    -  // Allocation strategy of the set.
    -};
    -
    -// ****************************************************************
    -
    -// Forward declaration.
    -template  class ACE_Array_Iterator;
    -
    -template
    -class ACE_Array_Base
    -{
    -  // = TITLE
    -  //   Implement a simple dynamic array
    -  //
    -  // = DESCRIPTION
    -  //   This parametric class implements a simple dynamic array;
    -  //   resizing must be controlled by the user. No comparison or find
    -  //   operations are implemented.
    -  //
    -public:
    -
    -  // Define a "trait"
    -  typedef T TYPE;
    -  typedef ACE_Array_Iterator ITERATOR;
    -
    -  // = Initialization and termination methods.
    -
    -  ACE_Array_Base (size_t size = 0,
    -                  ACE_Allocator *alloc = 0);
    -  // Dynamically create an uninitialized array.
    -
    -  ACE_Array_Base (size_t size,
    -                  const T &default_value,
    -                  ACE_Allocator *alloc = 0);
    -  // Dynamically initialize the entire array to the .
    -
    -  ACE_Array_Base (const ACE_Array_Base &s);
    -  // The copy constructor performs initialization by making an exact
    -  // copy of the contents of parameter , i.e., *this == s will
    -  // return true.
    -
    -  void operator= (const ACE_Array_Base &s);
    -  // Assignment operator performs an assignment by making an exact
    -  // copy of the contents of parameter , i.e., *this == s will
    -  // return true.  Note that if the  of  is >= than
    -  //  we can copy it without reallocating.  However, if
    -  //  is <  we must delete the ,
    -  // reallocate a new , and then copy the contents of .
    -
    -  ~ACE_Array_Base (void);
    -  // Clean up the array (e.g., delete dynamically allocated memory).
    -
    -  // = Set/get methods.
    -
    -  T &operator [] (size_t slot);
    -  // Set item in the array at location .  Doesn't
    -  // perform range checking.
    -
    -  const T &operator [] (size_t slot) const;
    -  // Get item in the array at location .  Doesn't
    -  // perform range checking.
    -
    -  int set (const T &new_item, size_t slot);
    -  // Set an item in the array at location .  Returns
    -  // -1 if  is not in range, else returns 0.
    -
    -  int get (T &item, size_t slot) const;
    -  // Get an item in the array at location .  Returns -1 if
    -  //  is not in range, else returns 0.  Note that this function
    -  // copies the item.  If you want to avoid the copy, you can use
    -  // the const operator [], but then you'll be responsible for range checking.
    -
    -  size_t size (void) const;
    -  // Returns the  of the array.
    -
    -  int size (size_t new_size);
    -  // Changes the size of the array to match .
    -  // It copies the old contents into the new array.
    -  // Return -1 on failure.
    -
    -  size_t max_size (void) const;
    -  // Returns the  of the array.
    -
    -  int max_size (size_t new_size);
    -  // Changes the size of the array to match .
    -  // It copies the old contents into the new array.
    -  // Return -1 on failure.
    -  // It does not affect new_size
    -
    -private:
    -  int in_range (size_t slot) const;
    -  // Returns 1 if  is within range, i.e., 0 >=  <
    -  // , else returns 0.
    -
    -  size_t max_size_;
    -  // Maximum size of the array, i.e., the total number of  elements
    -  // in .
    -
    -  size_t cur_size_;
    -  // Current size of the array.  This starts out being == to
    -  // .  However, if we are assigned a smaller array, then
    -  //  will become less than .  The purpose of
    -  // keeping track of both sizes is to avoid reallocating memory if we
    -  // don't have to.
    -
    -  T *array_;
    -  // Pointer to the array's storage buffer.
    -
    -  ACE_Allocator *allocator_;
    -  // Allocation strategy of the ACE_Array_Base.
    -
    -  friend class ACE_Array_Iterator;
    -};
    -
    -// ****************************************************************
    -
    -template 
    -class ACE_Array : public ACE_Array_Base
    -{
    -  // = TITLE
    -  //     Implement a dynamic array class.
    -  //
    -  // = DESCRIPTION
    -  //   This class extends ACE_Array_Base, it provides comparison
    -  //   operators.
    -public:
    -  // Define a "trait"
    -  typedef T TYPE;
    -
    -  typedef ACE_Array_Iterator ITERATOR;
    -
    -  // = Exceptions.
    -
    -  // = Initialization and termination methods.
    -
    -  ACE_Array (size_t size = 0,
    -             ACE_Allocator* alloc = 0);
    -  // Dynamically create an uninitialized array.
    -
    -  ACE_Array (size_t size,
    -             const T &default_value,
    -             ACE_Allocator* alloc = 0);
    -  // Dynamically initialize the entire array to the .
    -
    -  ACE_Array (const ACE_Array &s);
    -  // The copy constructor performs initialization by making an exact
    -  // copy of the contents of parameter , i.e., *this == s will
    -  // return true.
    -
    -  void operator= (const ACE_Array &s);
    -  // Assignment operator performs an assignment by making an exact
    -  // copy of the contents of parameter , i.e., *this == s will
    -  // return true.  Note that if the  of  is >= than
    -  //  we can copy it without reallocating.  However, if
    -  //  is <  we must delete the ,
    -  // reallocate a new , and then copy the contents of .
    -
    -  // = Compare operators
    -
    -  int operator== (const ACE_Array &s) const;
    -  // Compare this array with  for equality.  Two arrays are equal
    -  // if their 's are equal and all the elements from 0 .. 
    -  // are equal.
    -
    -  int operator!= (const ACE_Array &s) const;
    -  // Compare this array with  for inequality such that <*this> !=
    -  //  is always the complement of the boolean return value of
    -  // <*this> == .
    -};
    -
    -template 
    -class ACE_Array_Iterator
    -{
    -  // = TITLE
    -  //     Implement an iterator over an ACE_Array.
    -  //
    -  // = DESCRIPTION
    -  //     This iterator is safe in the face of array element deletions.
    -  //     But it is NOT safe if the array is resized (via the ACE_Array
    -  //     assignment operator) during iteration.  That would be very
    -  //     odd, and dangerous.
    -public:
    -  // = Initialization method.
    -  ACE_Array_Iterator (ACE_Array_Base &);
    -
    -  // = Iteration methods.
    -
    -  int next (T *&next_item);
    -  // Pass back the  that hasn't been seen in the Array.
    -  // Returns 0 when all items have been seen, else 1.
    -
    -  int advance (void);
    -  // Move forward by one element in the Array.  Returns 0 when all the
    -  // items in the Array have been seen, else 1.
    -
    -  int done (void) const;
    -  // Returns 1 when all items have been seen, else 0.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  u_int current_;
    -  // Pointer to the current item in the iteration.
    -
    -  ACE_Array_Base &array_;
    -  // Pointer to the Array we're iterating over.
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Containers_T.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
    -#include "ace/Containers_T.cpp"
    -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
    -#pragma implementation ("Containers_T.cpp")
    -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
    -
    -#endif /* ACE_CONTAINERS_T_H */
    diff --git a/ace/Containers_T.i b/ace/Containers_T.i
    deleted file mode 100644
    index e39c2208bf1..00000000000
    --- a/ace/Containers_T.i
    +++ /dev/null
    @@ -1,584 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// Containers.i
    -
    -template  ACE_INLINE int
    -ACE_Bounded_Stack::is_empty (void) const
    -{
    -  ACE_TRACE ("ACE_Bounded_Stack::is_empty");
    -  return this->top_ == 0;
    -}
    -
    -template  ACE_INLINE int
    -ACE_Bounded_Stack::is_full (void) const
    -{
    -  ACE_TRACE ("ACE_Bounded_Stack::is_full");
    -  return this->top_ >= this->size_;
    -}
    -
    -template  ACE_INLINE int
    -ACE_Bounded_Stack::push (const T &new_item)
    -{
    -  ACE_TRACE ("ACE_Bounded_Stack::push");
    -  if (this->is_full () == 0)
    -    {
    -      this->stack_[this->top_++] = new_item;
    -      return 0;
    -    }
    -  else
    -    return -1;
    -}
    -
    -template  ACE_INLINE int
    -ACE_Bounded_Stack::pop (T &item)
    -{
    -  ACE_TRACE ("ACE_Bounded_Stack::pop");
    -  if (this->is_empty () == 0)
    -    {
    -      item = this->stack_[--this->top_];
    -      return 0;
    -    }
    -  else
    -    return -1;
    -}
    -
    -template  ACE_INLINE int
    -ACE_Bounded_Stack::top (T &item) const
    -{
    -  ACE_TRACE ("ACE_Bounded_Stack::top");
    -  if (this->is_empty () == 0)
    -    {
    -      item = this->stack_[this->top_ - 1];
    -      return 0;
    -    }
    -  else
    -    return -1;
    -}
    -
    -template  ACE_INLINE size_t
    -ACE_Bounded_Stack::size (void) const
    -{
    -  return this->size_;
    -}
    -
    -//----------------------------------------
    -
    -template  ACE_INLINE int
    -ACE_Fixed_Stack::is_empty (void) const
    -{
    -  ACE_TRACE ("ACE_Fixed_Stack::is_empty");
    -  return this->top_ == 0;
    -}
    -
    -template  ACE_INLINE int
    -ACE_Fixed_Stack::is_full (void) const
    -{
    -  ACE_TRACE ("ACE_Fixed_Stack::is_full");
    -  return this->top_ >= this->size_;
    -}
    -
    -template  ACE_INLINE int
    -ACE_Fixed_Stack::push (const T &new_item)
    -{
    -  ACE_TRACE ("ACE_Fixed_Stack::push");
    -  if (this->is_full () == 0)
    -    {
    -      this->stack_[this->top_++] = new_item;
    -      return 0;
    -    }
    -  else
    -    return -1;
    -}
    -
    -template  ACE_INLINE int
    -ACE_Fixed_Stack::pop (T &item)
    -{
    -  ACE_TRACE ("ACE_Fixed_Stack::pop");
    -  if (this->is_empty () == 0)
    -    {
    -      item = this->stack_[--this->top_];
    -      return 0;
    -    }
    -  else
    -    return -1;
    -}
    -
    -template  ACE_INLINE int
    -ACE_Fixed_Stack::top (T &item) const
    -{
    -  ACE_TRACE ("ACE_Fixed_Stack::top");
    -  if (this->is_empty () == 0)
    -    {
    -      item = this->stack_[this->top_ - 1];
    -      return 0;
    -    }
    -  else
    -    return -1;
    -}
    -
    -template  ACE_INLINE size_t
    -ACE_Fixed_Stack::size (void) const
    -{
    -  return this->size_;
    -}
    -
    -template  ACE_INLINE int
    -ACE_Unbounded_Stack::is_empty (void) const
    -{
    -  //  ACE_TRACE ("ACE_Unbounded_Stack::is_empty");
    -  return this->head_ == this->head_->next_;
    -}
    -
    -template  ACE_INLINE int
    -ACE_Unbounded_Stack::top (T &item) const
    -{
    -  ACE_TRACE ("ACE_Unbounded_Stack::top");
    -  if (this->is_empty () == 0)
    -    {
    -      item = this->head_->next_->item_;
    -      return 0;
    -    }
    -  else
    -    return -1;
    -}
    -
    -template  ACE_INLINE int
    -ACE_Unbounded_Stack::is_full (void) const
    -{
    -  ACE_TRACE ("ACE_Unbounded_Stack::is_full");
    -  return 0; // ???
    -}
    -
    -template  ACE_INLINE size_t
    -ACE_Unbounded_Stack::size (void) const
    -{
    -  return this->cur_size_;
    -}
    -
    -// ---
    -
    -template  ACE_INLINE size_t
    -ACE_Unbounded_Queue::size (void) const
    -{
    -  return this->cur_size_;
    -}
    -
    -template  ACE_INLINE int
    -ACE_Unbounded_Queue::is_empty (void) const
    -{
    -  //  ACE_TRACE ("ACE_Unbounded_Queue::is_empty");
    -  return this->head_ == this->head_->next_;
    -}
    -
    -template  ACE_INLINE int
    -ACE_Unbounded_Queue::is_full (void) const
    -{
    -  //  ACE_TRACE ("ACE_Unbounded_Queue::is_full");
    -  return 0; // We should implement a "node of last resort for this..."
    -}
    -
    -// ---
    -
    -template  ACE_INLINE int
    -ACE_Unbounded_Set::is_empty (void) const
    -{
    -  ACE_TRACE ("ACE_Unbounded_Set::is_empty");
    -  return this->head_ == this->head_->next_;
    -}
    -
    -template  ACE_INLINE int
    -ACE_Unbounded_Set::is_full (void) const
    -{
    -  ACE_TRACE ("ACE_Unbounded_Set::is_full");
    -  return 0; // We should implement a "node of last resort for this..."
    -}
    -
    -// ---
    -
    -template  ACE_INLINE int
    -ACE_Fixed_Set::is_empty (void) const
    -{
    -  ACE_TRACE ("ACE_Fixed_Set::is_empty");
    -  return this->cur_size_ == 0;
    -}
    -
    -template  ACE_INLINE int
    -ACE_Fixed_Set::is_full (void) const
    -{
    -  ACE_TRACE ("ACE_Fixed_Set::is_full");
    -  return this->cur_size_ == this->max_size_;
    -}
    -
    -// ---
    -
    -template  ACE_INLINE int
    -ACE_Bounded_Set::is_empty (void) const
    -{
    -  ACE_TRACE ("ACE_Bounded_Set::is_empty");
    -  return this->cur_size_ == 0;
    -}
    -
    -#if !defined (__Lynx__)
    - // LynxOS 3.0.0 native g++ compiler raises internal error with this inline.
    -template  ACE_INLINE int
    -ACE_Bounded_Set::is_full (void) const
    -{
    -  ACE_TRACE ("ACE_Bounded_Set::is_full");
    -  return this->cur_size_ == this->max_size_;
    -}
    -#endif /* ! __Lynx__ */
    -
    -// --
    -
    -template  ACE_INLINE int
    -ACE_Ordered_MultiSet_Iterator::first (void)
    -{
    -  ACE_TRACE ("ACE_Ordered_MultiSet_Iterator::first");
    -  current_ = set_.head_;
    -
    -  return (current_ ? 1 : 0);
    -}
    -
    -template  ACE_INLINE int
    -ACE_Ordered_MultiSet_Iterator::last (void)
    -{
    -  ACE_TRACE ("ACE_Ordered_MultiSet_Iterator::last");
    -  current_ = set_.tail_;
    -
    -  return (current_ ? 1 : 0);
    -}
    -
    -template  ACE_INLINE int
    -ACE_Ordered_MultiSet_Iterator::advance (void)
    -{
    -  ACE_TRACE ("ACE_Ordered_MultiSet_Iterator::advance");
    -
    -  current_ = current_ ? current_->next_ : 0;
    -
    -  return (current_ ? 1 : 0);
    -}
    -
    -template  ACE_INLINE int
    -ACE_Ordered_MultiSet_Iterator::retreat (void)
    -{
    -  ACE_TRACE ("ACE_Ordered_MultiSet_Iterator::retreat");
    -
    -  current_ = current_ ? current_->prev_ : 0;
    -
    -  return (current_ ? 1 : 0);
    -}
    -
    -template  ACE_INLINE int
    -ACE_Ordered_MultiSet_Iterator::done (void) const
    -{
    -  ACE_TRACE ("ACE_Ordered_MultiSet_Iterator::done");
    -
    -  return (current_ ? 0 : 1);
    -}
    -
    -template  ACE_INLINE void
    -ACE_Ordered_MultiSet_Iterator::dump (void) const
    -{
    -// ACE_TRACE ("ACE_Ordered_MultiSet_Iterator::dump");
    -}
    -
    -
    -
    -// --
    -
    -template  ACE_INLINE int
    -ACE_Ordered_MultiSet::is_empty (void) const
    -{
    -  ACE_TRACE ("ACE_Ordered_MultiSet::is_empty");
    -  return this->cur_size_ > 0 ? 0 : 1;
    -}
    -
    -template  ACE_INLINE size_t
    -ACE_Ordered_MultiSet::size (void) const
    -{
    -// ACE_TRACE ("ACE_Ordered_MultiSet::size");
    -  return this->cur_size_;
    -}
    -
    -// ****************************************************************
    -
    -// Clean up the array (e.g., delete dynamically allocated memory).
    -
    -template  ACE_INLINE
    -ACE_Array_Base::~ACE_Array_Base (void)
    -{
    -  ACE_DES_ARRAY_FREE (this->array_,
    -                      this->max_size_,
    -                      this->allocator_->free,
    -                      T);
    -}
    -
    -template  ACE_INLINE size_t
    -ACE_Array_Base::size (void) const
    -{
    -  return this->cur_size_;
    -}
    -
    -template  ACE_INLINE size_t
    -ACE_Array_Base::max_size (void) const
    -{
    -  return this->max_size_;
    -}
    -
    -template  ACE_INLINE int
    -ACE_Array_Base::in_range (size_t index) const
    -{
    -  return index < this->cur_size_;
    -}
    -
    -template  ACE_INLINE T &
    -ACE_Array_Base::operator[] (size_t index)
    -{
    -  return this->array_[index];
    -}
    -
    -template  ACE_INLINE const T &
    -ACE_Array_Base::operator[] (size_t index) const
    -{
    -  return this->array_[index];
    -}
    -
    -// ****************************************************************
    -
    -template  ACE_INLINE
    -ACE_Array::ACE_Array (size_t size,
    -                         ACE_Allocator *alloc)
    -  : ACE_Array_Base (size, alloc)
    -{
    -}
    -
    -template  ACE_INLINE
    -ACE_Array::ACE_Array (size_t size,
    -                         const T &default_value,
    -                         ACE_Allocator *alloc)
    -  : ACE_Array_Base (size, default_value, alloc)
    -{
    -}
    -
    -// The copy constructor (performs initialization).
    -
    -template  ACE_INLINE
    -ACE_Array::ACE_Array (const ACE_Array &s)
    -   : ACE_Array_Base (s)
    -{
    -}
    -
    -// Assignment operator (performs assignment).
    -
    -template  ACE_INLINE void
    -ACE_Array::operator= (const ACE_Array &s)
    -{
    -  // Check for "self-assignment".
    -
    -  if (this != &s)
    -    this->ACE_Array_Base::operator= (s);
    -}
    -
    -// Compare this array with  for inequality.
    -
    -template  ACE_INLINE int
    -ACE_Array::operator!= (const ACE_Array &s) const
    -{
    -  return !(*this == s);
    -}
    -
    -// ****************************************************************
    -
    -template  ACE_INLINE void
    -ACE_Array_Iterator::dump (void) const
    -{
    -  // ACE_TRACE ("ACE_Array_Iterator::dump");
    -}
    -
    -template  ACE_INLINE
    -ACE_Array_Iterator::ACE_Array_Iterator (ACE_Array_Base &a)
    -    : current_ (0),
    -      array_ (a)
    -{
    -  // ACE_TRACE ("ACE_Array_Iterator::ACE_Array_Iterator");
    -}
    -
    -template  ACE_INLINE int
    -ACE_Array_Iterator::advance (void)
    -{
    -  // ACE_TRACE ("ACE_Array_Iterator::advance");
    -
    -  if (this->current_ < array_.size ())
    -    {
    -      ++this->current_;
    -      return 1;
    -    }
    -  else
    -    {
    -      // Already finished iterating.
    -      return 0;
    -    }
    -}
    -
    -template  ACE_INLINE int
    -ACE_Array_Iterator::done (void) const
    -{
    -  ACE_TRACE ("ACE_Array_Iterator::done");
    -
    -  return this->current_ >= array_.size ();
    -}
    -
    -// ****************************************************************
    -
    -template  ACE_INLINE void
    -ACE_DLList::operator= (ACE_DLList &l)
    -{
    -  *(ACE_DLList_Base *) this = l;
    -}
    -
    -template  ACE_INLINE int
    -ACE_DLList::get (T *&item, size_t index)
    -{
    -  ACE_DLList_Node *node;
    -  int result = ACE_DLList_Base::get (node, index);
    -  item = (T *) node->item_;
    -  return result;
    -}
    -
    -template  ACE_INLINE void
    -ACE_DLList::dump (void) const
    -{
    -  ACE_DLList_Base::dump ();
    -}
    -
    -template  ACE_INLINE int
    -ACE_DLList::remove (ACE_DLList_Node *n)
    -{
    -  int result = ACE_DLList_Base::remove (n);
    -  ACE_DES_FREE (n,
    -                this->allocator_->free,
    -                ACE_DLList_Node);
    -  return result;
    -}
    -
    -template  ACE_INLINE
    -ACE_DLList::ACE_DLList (ACE_Allocator *alloc )
    -  : ACE_DLList_Base (alloc)
    -{
    -}
    -
    -template  ACE_INLINE
    -ACE_DLList::ACE_DLList (ACE_DLList &l)
    -  : ACE_DLList_Base ((ACE_DLList &) l)
    -{
    -}
    -
    -template  ACE_INLINE
    -ACE_DLList::~ACE_DLList (void)
    -{
    -  while (this->delete_head ()) ;
    -}
    -
    -template  ACE_INLINE int
    -ACE_DLList_Iterator::remove (void)
    -{
    -  ACE_DLList_Node *temp = this->ACE_Double_Linked_List_Iterator ::next ();
    -  this->ACE_Double_Linked_List_Iterator ::advance ();
    -  return dllist_->remove (temp);
    -}
    -
    -template  ACE_INLINE
    -ACE_DLList_Iterator::ACE_DLList_Iterator (ACE_DLList &l)
    -  : ACE_Double_Linked_List_Iterator  ((ACE_DLList_Base &)l),
    -    list_ (&l)
    -{
    -}
    -
    -template  ACE_INLINE void
    -ACE_DLList_Iterator::reset (ACE_DLList &l)
    -{
    -  list_ = &l;
    -  this->ACE_Double_Linked_List_Iterator ::reset ((ACE_DLList_Base &)l); 
    -}
    -
    -template  ACE_INLINE int
    -ACE_DLList_Iterator::next (T *&ptr)
    -{
    -  ACE_DLList_Node *temp = 
    -    ACE_Double_Linked_List_Iterator ::next ();
    -  if (temp)
    -    ptr = (T *) temp->item_;
    -  return temp ? 1 : 0;
    -}
    -
    -template  ACE_INLINE T *
    -ACE_DLList_Iterator::next (void) const
    -{
    -  ACE_DLList_Node *temp = ACE_Double_Linked_List_Iterator ::next ();
    -  return (T *) (temp ? temp->item_ : 0);
    -}
    -
    -template  ACE_INLINE int
    -ACE_DLList_Iterator::advance (void)
    -{
    -  return this->ACE_Double_Linked_List_Iterator ::advance ();
    -}
    -
    -template  ACE_INLINE void
    -ACE_DLList_Iterator::dump (void) const
    -{
    -  ACE_Double_Linked_List_Iterator ::dump ();
    -}
    -
    -
    -template  ACE_INLINE int
    -ACE_DLList_Reverse_Iterator::remove (void)
    -{
    -  ACE_DLList_Node *temp = ACE_Double_Linked_List_Reverse_Iterator ::next ();
    -  this->ACE_Double_Linked_List_Reverse_Iterator ::advance ();
    -  return dllist_->remove (temp);
    -}
    -
    -template  ACE_INLINE
    -ACE_DLList_Reverse_Iterator::ACE_DLList_Reverse_Iterator (ACE_DLList &l)
    -  : ACE_Double_Linked_List_Reverse_Iterator  ((ACE_DLList_Base &)l),
    -    list_ (&l)
    -{
    -}
    -
    -template  ACE_INLINE void
    -ACE_DLList_Reverse_Iterator::reset (ACE_DLList &l)
    -{
    -  list_ = &l;
    -  this->ACE_Double_Linked_List_Reverse_Iterator ::reset ((ACE_DLList_Base &)l);
    -}
    -
    -template  ACE_INLINE int
    -ACE_DLList_Reverse_Iterator::advance (void)
    -{
    -  return ACE_Double_Linked_List_Reverse_Iterator ::advance ();
    -}
    -
    -template  ACE_INLINE int
    -ACE_DLList_Reverse_Iterator::next (T *&ptr)
    -{
    -  ACE_DLList_Node *temp = 
    -    ACE_Double_Linked_List_Reverse_Iterator ::next ();
    -  ptr = (T *) temp->item_;
    -  return ptr ? 1 : 0;
    -}
    -
    -template  ACE_INLINE T *
    -ACE_DLList_Reverse_Iterator::next (void) const
    -{
    -  ACE_DLList_Node *temp = ACE_Double_Linked_List_Reverse_Iterator ::next ();
    -  return (T *) (temp ? temp->item_ : 0);
    -}
    -
    -
    -template  ACE_INLINE void
    -ACE_DLList_Reverse_Iterator::dump (void) const
    -{
    -  ACE_Double_Linked_List_Reverse_Iterator ::dump ();
    -}
    diff --git a/ace/DEV.cpp b/ace/DEV.cpp
    deleted file mode 100644
    index 80a39e3a49c..00000000000
    --- a/ace/DEV.cpp
    +++ /dev/null
    @@ -1,38 +0,0 @@
    -// DEV.cpp
    -// $Id$
    -
    -
    -#define ACE_BUILD_DLL
    -#include "ace/DEV.h"
    -
    -#if defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/DEV.i"
    -#endif
    -
    -ACE_RCSID(ace, DEV, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_DEV)
    -
    -void
    -ACE_DEV::dump (void) const
    -{
    -  ACE_TRACE ("ACE_DEV::dump");
    -}
    -
    -// This is the do-nothing constructor. 
    -
    -ACE_DEV::ACE_DEV (void)
    -{
    -  ACE_TRACE ("ACE_DEV::ACE_DEV");
    -}
    -
    -// Close the device
    -
    -int
    -ACE_DEV::close (void)
    -{
    -  ACE_TRACE ("ACE_DEV::close");
    -  int result = ACE_OS::close (this->get_handle ());
    -  this->set_handle (ACE_INVALID_HANDLE);
    -  return result;
    -}
    diff --git a/ace/DEV.h b/ace/DEV.h
    deleted file mode 100644
    index 9f573163f6a..00000000000
    --- a/ace/DEV.h
    +++ /dev/null
    @@ -1,70 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    DEV.h
    -//
    -// = AUTHOR
    -//    Gerhard Lenzer
    -//
    -// ============================================================================
    -
    -#ifndef ACE_DEV_H
    -#define ACE_DEV_H
    -
    -#include "ace/IO_SAP.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/DEV_Addr.h"
    -
    -// The following is necessary since many C++ compilers don't support
    -// typedef'd types inside of classes used as formal template
    -// arguments... ;-(.  Luckily, using the C++ preprocessor I can hide
    -// most of this nastiness!
    -
    -#if defined (ACE_HAS_TEMPLATE_TYPEDEFS)
    -#define ACE_DEV_CONNECTOR ACE_DEV_Connector
    -#define ACE_DEV_STREAM ACE_DEV_Stream
    -#else /* TEMPLATES are broken (must be a cfront-based compiler...) */
    -#define ACE_DEV_CONNECTOR ACE_DEV_Connector, ACE_DEV_Addr
    -#define ACE_DEV_STREAM ACE_DEV_Stream, ACE_DEV_Addr
    -#endif /* ACE_TEMPLATE_TYPEDEFS */
    -
    -class ACE_Export ACE_DEV : public ACE_IO_SAP
    -{
    -  // = TITLE
    -  //     Defines the member functions for the base class of the
    -  //     ACE_DEV abstraction.
    -public:
    -  int close (void);
    -  // Close down the DEVICE
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -  int disable (int signum) const ;
    -  // Disable signal 
    -  // This is here to prevent Win32 from
    -  // disabling SPIPE using socket calls
    -
    -protected:
    -  ACE_DEV (void);
    -  // Ensure that this class is an abstract base class
    -};
    -
    -#if !defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/DEV.i"
    -#endif
    -
    -#endif /* ACE_DEV_H */
    diff --git a/ace/DEV.i b/ace/DEV.i
    deleted file mode 100644
    index 529824f129c..00000000000
    --- a/ace/DEV.i
    +++ /dev/null
    @@ -1,15 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// DEV.i
    -
    -ASYS_INLINE int
    -ACE_DEV::disable (int signum) const
    -{
    -#if defined (ACE_WIN32)
    -  ACE_UNUSED_ARG (signum) ;
    -  return 0 ;
    -#else  /* ACE_WIN32 */
    -  return ACE_IO_SAP::disable (signum) ;
    -#endif /* ACE_WIN32 */
    -}
    diff --git a/ace/DEV_Addr.cpp b/ace/DEV_Addr.cpp
    deleted file mode 100644
    index 60652735fcc..00000000000
    --- a/ace/DEV_Addr.cpp
    +++ /dev/null
    @@ -1,81 +0,0 @@
    -// DEV_Addr.cpp
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/DEV_Addr.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/DEV_Addr.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, DEV_Addr, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_DEV_Addr)
    -
    -void
    -ACE_DEV_Addr::dump (void) const
    -{
    -  ACE_TRACE ("ACE_DEV_Addr::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("devname_ = %s"), this->devname_));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -// Do nothing constructor. 
    -
    -ACE_DEV_Addr::ACE_DEV_Addr (void)
    -  : ACE_Addr (AF_DEV, sizeof this->devname_)
    -{
    -  ACE_TRACE ("ACE_DEV_Addr::ACE_DEV_Addr");
    -
    -  (void) ACE_OS::memset ((void *) &this->devname_, 
    -			 0, sizeof this->devname_);
    -}
    -
    -int
    -ACE_DEV_Addr::set (const ACE_DEV_Addr &sa)
    -{
    -  this->base_set (sa.get_type (), sa.get_size ());
    -
    -  if (sa.get_type () == AF_ANY)
    -    (void) ACE_OS::memset ((void *) &this->devname_,
    -                           0,
    -                           sizeof this->devname_);
    -  else
    -    (void) ACE_OS::memcpy ((void *) &this->devname_, 
    -                           (void *) &sa.devname_, 
    -                           sa.get_size ());
    -  return 0;
    -}
    -
    -// Copy constructor. 
    -
    -ACE_DEV_Addr::ACE_DEV_Addr (const ACE_DEV_Addr &sa)
    -  : ACE_Addr (AF_DEV, sizeof this->devname_)
    -{
    -  ACE_TRACE ("ACE_DEV_Addr::ACE_DEV_Addr");
    -
    -  this->set (sa);
    -}
    -
    -ACE_DEV_Addr::ACE_DEV_Addr (LPCTSTR devname)
    -  : ACE_Addr (AF_DEV, sizeof this->devname_)
    -{
    -  ACE_TRACE ("ACE_DEV_Addr::ACE_DEV_Addr");
    -
    -  this->set (devname);
    -}
    -
    -ACE_DEV_Addr &
    -ACE_DEV_Addr::operator= (const ACE_DEV_Addr &sa)
    -{
    -  ACE_TRACE ("ACE_DEV_Addr::operator=");
    -
    -  if (this != &sa)
    -    (void) ACE_OS::memcpy ((void *) &this->devname_, 
    -			   (void *) &sa.devname_, 
    -			   sa.get_size ());
    -  return *this;
    -}
    -
    diff --git a/ace/DEV_Addr.h b/ace/DEV_Addr.h
    deleted file mode 100644
    index 9f98f1a4f6d..00000000000
    --- a/ace/DEV_Addr.h
    +++ /dev/null
    @@ -1,87 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    DEV_Addr.h
    -//
    -// = AUTHOR
    -//    Gerhard Lenzer and Douglas C. Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_DEV_ADDR_H
    -#define ACE_DEV_ADDR_H
    -
    -#include "ace/Addr.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/ACE.h"
    -
    -class ACE_Export ACE_DEV_Addr : public ACE_Addr
    -{
    -  // = TITLE
    -  //    Defines device address family address format.
    -public:
    -  // = Initialization methods.
    -  ACE_DEV_Addr (void);
    -  // Default constructor.
    -
    -  ACE_DEV_Addr (const ACE_DEV_Addr &sa);
    -  // Copy constructor.
    -
    -  int set (const ACE_DEV_Addr &sa);
    -  // Acts like a copy constructor.
    -
    -  ACE_DEV_Addr (LPCTSTR devname);
    -  // Create a ACE_DEV_Addr from a device name.
    -
    -  void set (LPCTSTR devname);
    -  // Create a ACE_Addr from a ACE_DEV pathname.
    -
    -  ACE_DEV_Addr &operator= (const ACE_DEV_Addr &);
    -  // Assignment operator.
    -
    -  virtual void *get_addr (void) const;
    -  // Return a pointer to the address.
    -
    -#if defined (UNICODE)
    -  virtual int addr_to_string (wchar_t *addr, size_t) const;
    -  // Transform the current address into string format.
    -#endif /* UNICODE */
    -
    -  virtual int addr_to_string (char *addr, size_t) const;
    -  // Transform the current address into string format.
    -
    -  int operator == (const ACE_DEV_Addr &SAP) const;
    -  // Compare two addresses for equality.
    -
    -  int operator != (const ACE_DEV_Addr &SAP) const;
    -  // Compare two addresses for inequality.
    -
    -  LPCTSTR get_path_name (void) const;
    -  // Return the path name used for the rendezvous point.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  TCHAR devname_[MAXNAMLEN + 1];
    -  // Name of the device.
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/DEV_Addr.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_DEV_ADDR_H */
    diff --git a/ace/DEV_Addr.i b/ace/DEV_Addr.i
    deleted file mode 100644
    index e76ed184d32..00000000000
    --- a/ace/DEV_Addr.i
    +++ /dev/null
    @@ -1,78 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -#include "ace/SString.h"
    -
    -ACE_INLINE void
    -ACE_DEV_Addr::set (LPCTSTR devname)
    -{
    -  ACE_TRACE ("ACE_DEV_Addr::set");
    -
    -  this->ACE_Addr::base_set (AF_DEV, ACE_OS::strlen (devname));
    -  ACE_OS::strncpy (this->devname_, devname, MAXNAMLEN);
    -}
    -
    -// Transform the current address into string format.
    -#if defined (UNICODE)
    -ACE_INLINE int
    -ACE_DEV_Addr::addr_to_string (wchar_t *s, size_t len) const
    -{
    -  ACE_TRACE ("ACE_DEV_Addr::addr_to_string");
    -
    -  ACE_OS::strncpy (s, this->devname_, len);
    -  return 0;
    -}
    -#endif /* UNICODE */
    -
    -// Transform the current address into string format.
    -
    -ACE_INLINE int
    -ACE_DEV_Addr::addr_to_string (char *s, size_t len) const
    -{
    -  ACE_TRACE ("ACE_DEV_Addr::addr_to_string");
    -
    -  ACE_OS::strncpy (s,
    -		   ACE_MULTIBYTE_STRING (this->devname_),
    -		   len);
    -  return 0;
    -}
    -
    -// Return a pointer to the address.
    -
    -ACE_INLINE void *
    -ACE_DEV_Addr::get_addr (void) const
    -{
    -  ACE_TRACE ("ACE_DEV_Addr::get_addr");
    -
    -  return (void *) &this->devname_;
    -}
    -
    -// Compare two addresses for equality.
    -
    -ACE_INLINE int
    -ACE_DEV_Addr::operator == (const ACE_DEV_Addr &sap) const
    -{
    -  ACE_TRACE ("ACE_DEV_Addr::operator=");
    -
    -  return ACE_OS::strcmp (this->devname_, sap.devname_) == 0;
    -}
    -
    -// Compare two addresses for inequality.
    -
    -ACE_INLINE int
    -ACE_DEV_Addr::operator != (const ACE_DEV_Addr &sap) const
    -{
    -  ACE_TRACE ("ACE_DEV_Addr::operator!=");
    -
    -  return !((*this) == sap);	// This is lazy, of course... ;-).
    -}
    -
    -// Return the path name used for the rendezvous point.
    -
    -ACE_INLINE LPCTSTR
    -ACE_DEV_Addr::get_path_name (void) const
    -{
    -  ACE_TRACE ("ACE_DEV_Addr::get_path_name");
    -
    -  return this->devname_;
    -}
    diff --git a/ace/DEV_Connector.cpp b/ace/DEV_Connector.cpp
    deleted file mode 100644
    index 75aa9bf2210..00000000000
    --- a/ace/DEV_Connector.cpp
    +++ /dev/null
    @@ -1,44 +0,0 @@
    -// DEV_Connector.cpp
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/DEV_Connector.h"
    -
    -#if defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/DEV_Connector.i"
    -#endif
    -
    -ACE_RCSID(ace, DEV_Connector, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_DEV_Connector)
    -
    -void
    -ACE_DEV_Connector::dump (void) const
    -{
    -  ACE_TRACE ("ACE_DEV_Connector::dump");
    -}
    -
    -ACE_DEV_Connector::ACE_DEV_Connector (void)
    -{
    -  ACE_TRACE ("ACE_DEV_Connector::ACE_DEV_Connector");
    -}
    -
    -int
    -ACE_DEV_Connector::connect (ACE_DEV_IO &new_io, 
    -			    const ACE_DEV_Addr &remote_sap,
    -			    ACE_Time_Value *timeout,
    -			    const ACE_Addr &, 
    -			    int,
    -			    int flags,
    -			    int perms)
    -{
    -  ACE_TRACE ("ACE_DEV_Connector::connect");
    -
    -  ACE_HANDLE handle = ACE::handle_timed_open (timeout, 
    -					      remote_sap.get_path_name (),
    -					      flags, perms);
    -  new_io.set_handle (handle);
    -  new_io.addr_ = remote_sap; // class copy.
    -  return handle == ACE_INVALID_HANDLE ? -1 : 0;
    -}
    -
    diff --git a/ace/DEV_Connector.h b/ace/DEV_Connector.h
    deleted file mode 100644
    index db2173dd5b3..00000000000
    --- a/ace/DEV_Connector.h
    +++ /dev/null
    @@ -1,98 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    DEV_Connector.h
    -//
    -// = AUTHOR
    -//    Gerhard Lenzer and Douglas C. Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_DEV_CONNECTOR_H
    -#define ACE_DEV_CONNECTOR_H
    -
    -#include "ace/DEV_IO.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -class ACE_Export ACE_DEV_Connector 
    -{
    -  // = TITLE
    -  //     Defines an active connection factory for the ACE_DEV wrappers.
    -public:
    -  ACE_DEV_Connector (void);
    -  // Default constructor.
    -
    -  ACE_DEV_Connector (ACE_DEV_IO &new_io,
    -                     const ACE_DEV_Addr &remote_sap,
    -                     ACE_Time_Value *timeout = 0,
    -                     const ACE_Addr &local_sap = ACE_Addr::sap_any,
    -                     int reuse_addr = 0,
    -                     int flags = O_RDWR,
    -                     int perms = 0);
    -  // Actively connect and produce a  if things go well.
    -  // The  is the address that we are trying to connect
    -  // with.  The  is the amount of time to wait to connect.
    -  // If it's 0 then we block indefinitely.  If *timeout == {0, 0} then
    -  // the connection is done using non-blocking mode.  In this case, if
    -  // the connection can't be made immediately the value of -1 is
    -  // returned with .  If *timeout > {0, 0} then
    -  // this is the amount of time to wait before timing out.  If the
    -  // time expires before the connection is made .  The
    -  //  is the value of local address to bind to.  If it's
    -  // the default value of  then the user is letting
    -  // the OS do the binding.  If  == 1 then the
    -  //  is reused, even if it hasn't been cleanedup yet.
    -  // The  and  arguments are passed down to the 
    -  // method.
    -
    -  int connect (ACE_DEV_IO &new_io,
    -               const ACE_DEV_Addr &remote_sap,
    -               ACE_Time_Value *timeout = 0,
    -               const ACE_Addr &local_sap = ACE_Addr::sap_any,
    -               int reuse_addr = 0,
    -               int flags = O_RDWR,
    -               int perms = 0);
    -  // Actively connect and produce a  if things go well.
    -  // The  is the address that we are trying to connect
    -  // with.  The  is the amount of time to wait to connect.
    -  // If it's 0 then we block indefinitely.  If *timeout == {0, 0} then
    -  // the connection is done using non-blocking mode.  In this case, if
    -  // the connection can't be made immediately the value of -1 is
    -  // returned with .  If *timeout > {0, 0} then
    -  // this is the amount of time to wait before timing out.  If the
    -  // time expires before the connection is made .  The
    -  //  is the value of local address to bind to.  If it's
    -  // the default value of  then the user is letting
    -  // the OS do the binding.  If  == 1 then the
    -  //  is reused, even if it hasn't been cleanedup yet.
    -  // The  and  arguments are passed down to the 
    -  // method.
    -
    -  int reset_new_handle (ACE_HANDLE handle);
    -  // Resets any event associations on this handle
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -  // = Meta-type info
    -  typedef ACE_DEV_Addr PEER_ADDR;
    -  typedef ACE_DEV_IO   PEER_STREAM;
    -};
    -
    -#if !defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/DEV_Connector.i"
    -#endif
    -
    -#endif /* ACE_DEV_CONNECTOR_H */
    diff --git a/ace/DEV_Connector.i b/ace/DEV_Connector.i
    deleted file mode 100644
    index a522ede7f4e..00000000000
    --- a/ace/DEV_Connector.i
    +++ /dev/null
    @@ -1,32 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// DEV_Connector.i
    -
    -// Creates a Local ACE_DEV. 
    -
    -ASYS_INLINE
    -ACE_DEV_Connector::ACE_DEV_Connector (ACE_DEV_IO &new_io, 
    -				      const ACE_DEV_Addr &remote_sap,
    -				      ACE_Time_Value *timeout,
    -				      const ACE_Addr &local_sap,
    -				      int reuse_addr,
    -				      int flags,
    -				      int perms)
    -{
    -  ACE_TRACE ("ACE_DEV_Connector::ACE_DEV_Connector");
    -  if (this->connect (new_io, remote_sap, timeout, local_sap, 
    -		     reuse_addr, flags, perms) == ACE_IO_SAP::INVALID_HANDLE
    -      && timeout != 0 && !(errno == EWOULDBLOCK || errno == ETIME))
    -    ACE_ERROR ((LM_ERROR, ASYS_TEXT ("address %s, %p\n"), 
    -	       remote_sap.get_path_name (), ASYS_TEXT ("ACE_DEV_IO")));
    -}
    -
    -ASYS_INLINE int 
    -ACE_DEV_Connector::reset_new_handle (ACE_HANDLE handle)
    -{
    -  ACE_UNUSED_ARG (handle);
    -  // Nothing to do here since the handle is not a socket
    -  return 0;
    -}
    -
    diff --git a/ace/DEV_IO.cpp b/ace/DEV_IO.cpp
    deleted file mode 100644
    index 2b9e86f370e..00000000000
    --- a/ace/DEV_IO.cpp
    +++ /dev/null
    @@ -1,126 +0,0 @@
    -// DEV_IO.cpp
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/DEV_IO.h"
    -
    -#if defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/DEV_IO.i"
    -#endif
    -
    -ACE_RCSID(ace, DEV_IO, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_DEV_IO)
    -
    -// Return the local endpoint address.
    -
    -int 
    -ACE_DEV_IO::get_local_addr (ACE_DEV_Addr &addr) const
    -{
    -  ACE_TRACE ("ACE_DEV_IO::get_local_addr");
    -
    -  addr = this->addr_;
    -  return 0;
    -}
    -
    -// Return the address of the remotely connected peer (if there is
    -// one).
    -
    -int 
    -ACE_DEV_IO::get_remote_addr (ACE_DEV_Addr &addr) const
    -{
    -  ACE_TRACE ("ACE_DEV_IO::get_remote_addr");
    -  addr = this->addr_;
    -  return 0;
    -}
    -
    -void
    -ACE_DEV_IO::dump (void) const
    -{
    -  ACE_TRACE ("ACE_DEV_IO::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  this->addr_.dump ();
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -// Simple-minded do nothing constructor. 
    -
    -ACE_DEV_IO::ACE_DEV_IO (void)
    -{
    -  ACE_TRACE ("ACE_DEV_IO::ACE_DEV_IO");
    -}
    -
    -// Send N char *ptrs and int lengths.  Note that the char *'s precede
    -// the ints (basically, an varargs version of writev).  The count N is
    -// the *total* number of trailing arguments, *not* a couple of the
    -// number of tuple pairs!
    -
    -ssize_t
    -ACE_DEV_IO::send (size_t n, ...) const
    -{
    -  ACE_TRACE ("ACE_DEV_IO::send");
    -  va_list argp;  
    -  size_t total_tuples = n / 2;
    -  iovec *iovp;
    -#if defined (ACE_HAS_ALLOCA)
    -  iovp = (iovec *) alloca (total_tuples * sizeof (iovec));
    -#else
    -  ACE_NEW_RETURN (iovp,
    -                  iovec[total_tuples],
    -                  -1);
    -#endif /* !defined (ACE_HAS_ALLOCA) */
    -
    -  va_start (argp, n);
    -
    -  for (size_t i = 0; i < total_tuples; i++)
    -    {
    -      iovp[i].iov_base = va_arg (argp, char *);
    -      iovp[i].iov_len  = va_arg (argp, int);
    -    }
    -
    -  ssize_t result = ACE_OS::writev (this->get_handle (), iovp, total_tuples);
    -#if !defined (ACE_HAS_ALLOCA)
    -  delete [] iovp;
    -#endif /* !defined (ACE_HAS_ALLOCA) */
    -  va_end (argp);
    -  return result;
    -}
    -
    -// This is basically an interface to ACE_OS::readv, that doesn't use the
    -// struct iovec explicitly.  The ... can be passed as an arbitrary
    -// number of (char *ptr, int len) tuples.  However, the count N is the
    -// *total* number of trailing arguments, *not* a couple of the number
    -// of tuple pairs!
    -
    -ssize_t
    -ACE_DEV_IO::recv (size_t n, ...) const
    -{
    -  ACE_TRACE ("ACE_DEV_IO::recv");
    -  va_list argp;  
    -  size_t total_tuples = n / 2;
    -  iovec *iovp;
    -#if defined (ACE_HAS_ALLOCA)
    -  iovp = (iovec *) alloca (total_tuples * sizeof (iovec));
    -#else 
    -  ACE_NEW_RETURN (iovp,
    -                  iovec[total_tuples],
    -                  -1);
    -#endif /* !defined (ACE_HAS_ALLOCA) */
    -
    -  va_start (argp, n);
    -
    -  for (size_t i = 0; i < total_tuples; i++)
    -    {
    -      iovp[i].iov_base = va_arg (argp, char *);
    -      iovp[i].iov_len  = va_arg (argp, int);
    -    }
    -
    -  ssize_t result = ACE_OS::readv (this->get_handle (), iovp, total_tuples);
    -#if !defined (ACE_HAS_ALLOCA)
    -  delete [] iovp;
    -#endif /* !defined (ACE_HAS_ALLOCA) */
    -  va_end (argp);
    -  return result;
    -}
    -
    diff --git a/ace/DEV_IO.h b/ace/DEV_IO.h
    deleted file mode 100644
    index 990e1165b40..00000000000
    --- a/ace/DEV_IO.h
    +++ /dev/null
    @@ -1,127 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    DEV_IO.h
    -//
    -// = AUTHOR
    -//    Gerhard Lenzer and Douglas C. Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_DEV_IO_H
    -#define ACE_DEV_IO_H
    -
    -#include "ace/DEV.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/DEV_Addr.h"
    -
    -class ACE_Export ACE_DEV_IO : public ACE_DEV
    -{
    -  // = TITLE
    -  //     Read/Write operations on Devices.
    -public:
    -  friend class ACE_DEV_Connector;
    -
    -  ACE_DEV_IO (void);
    -  // Default constructor.
    -
    -  // = Various send operations.
    -  ssize_t send (const void *buf, size_t n) const;
    -  // send upto  bytes in .
    -
    -  ssize_t recv (void *buf, size_t n) const;
    -  // Recv upto  bytes in .
    -
    -  ssize_t send_n (const void *buf, size_t n) const;
    -  // Send n bytes, keep trying until n are sent.
    -
    -  ssize_t recv_n (void *buf, size_t n) const;
    -  // Recv n bytes, keep trying until n are received.
    -
    -#if defined (ACE_HAS_STREAM_PIPES)
    -  ssize_t recv (ACE_Str_Buf *cntl,
    -                ACE_Str_Buf *data,
    -                int *band,
    -                int *flags) const;
    -  // Recv bytes via STREAM pipes using "band" mode.
    -
    -  ssize_t send (const ACE_Str_Buf *cntl,
    -                const ACE_Str_Buf *data,
    -                int band,
    -                int flags) const;
    -  // Send bytes via STREAM pipes using "band" mode.
    -
    -  ssize_t recv (ACE_Str_Buf *cntl,
    -                ACE_Str_Buf *data,
    -                int *flags) const;
    -  // Recv  and  via STREAM pipes.
    -
    -  ssize_t send (const ACE_Str_Buf *cntl,
    -                const ACE_Str_Buf *data,
    -                int flags = 0) const;
    -  // Send  and  via STREAM pipes.
    -#endif /* ACE_HAS_STREAM_PIPES */
    -
    -  ssize_t send (const iovec iov[], size_t n) const;
    -  // Send iovecs via <::writev>.
    -
    -  ssize_t recv (iovec iov[], size_t n) const;
    -  // Recv iovecs via <::readv>.
    -
    -  ssize_t send (size_t n, ...) const;
    -  // Send N char *ptrs and int lengths.  Note that the char *'s
    -  // precede the ints (basically, an varargs version of writev).  The
    -  // count N is the *total* number of trailing arguments, *not* a
    -  // couple of the number of tuple pairs!
    -
    -  ssize_t recv (size_t n, ...) const;
    -  // This is an interface to ::readv, that doesn't use the struct
    -  // iovec explicitly.  The ... can be passed as an arbitrary number
    -  // of (char *ptr, int len) tuples.  However, the count N is the
    -  // *total* number of trailing arguments, *not* a couple of the
    -  // number of tuple pairs!
    -
    -  ssize_t send (const void *buf, size_t n, ACE_OVERLAPPED *overlapped) const;
    -  // Send  bytes via Win32 WriteFile using overlapped I/O.
    -
    -  ssize_t recv (void *buf, size_t n, ACE_OVERLAPPED *overlapped) const;
    -  // Recv  bytes via Win32 ReadFile using overlapped I/O.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  // = The following two methods are no-ops to keep the
    -  //  happy.
    -  int get_local_addr (ACE_DEV_Addr &) const;
    -  // Return the local endpoint address.
    -
    -  int get_remote_addr (ACE_DEV_Addr &) const;
    -  // Return the address of the remotely connected peer (if there is
    -  // one).
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -  // = Meta-type info
    -  typedef ACE_DEV_Addr PEER_ADDR;
    -
    -private:
    -  ACE_DEV_Addr addr_;
    -  // Address of device we are connected to.
    -};
    -
    -#if !defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/DEV_IO.i"
    -#endif
    -
    -#endif /* ACE_DEV_IO_H */
    diff --git a/ace/DEV_IO.i b/ace/DEV_IO.i
    deleted file mode 100644
    index 90c825ebf50..00000000000
    --- a/ace/DEV_IO.i
    +++ /dev/null
    @@ -1,101 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// DEV_IO.i
    -
    -// Send exactly N bytes from BUF to this device.  Keeping trying until
    -// this many bytes are sent.
    -
    -ASYS_INLINE ssize_t
    -ACE_DEV_IO::send_n (const void *buf, size_t n) const
    -{
    -  ACE_TRACE ("ACE_DEV_IO::send_n");
    -  return ACE::write_n (this->get_handle (), buf, n);
    -}
    -
    -// Receive exactly N bytes from this file into BUF.  Keep trying until
    -// this many bytes are received.
    -
    -ASYS_INLINE ssize_t
    -ACE_DEV_IO::recv_n (void *buf, size_t n) const
    -{
    -  ACE_TRACE ("ACE_DEV_IO::recv_n");
    -  return ACE::read_n (this->get_handle (), buf, n);
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE_DEV_IO::send (const void *buf, size_t n) const
    -{
    -  ACE_TRACE ("ACE_DEV_IO::send");
    -  return ACE_OS::write (this->get_handle (), (const char *) buf, n);
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE_DEV_IO::recv (void *buf, size_t n) const
    -{
    -  ACE_TRACE ("ACE_DEV_IO::recv");
    -  return ACE_OS::read (this->get_handle (), (char *) buf, n);
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE_DEV_IO::send (const iovec iov[], size_t n) const
    -{
    -  ACE_TRACE ("ACE_DEV_IO::send");
    -  return ACE_OS::writev (this->get_handle (), iov, n);
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE_DEV_IO::recv (iovec iov[], size_t n) const
    -{
    -  ACE_TRACE ("ACE_DEV_IO::recv");
    -  return ACE_OS::readv (this->get_handle (), iov, n);
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE_DEV_IO::send (const void *buf, size_t n,
    -		       ACE_OVERLAPPED *overlapped) const
    -{
    -  ACE_TRACE ("ACE_DEV_IO::send");
    -  return ACE_OS::write (this->get_handle (), 
    -			(const char *) buf, n,
    -			overlapped);
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE_DEV_IO::recv (void *buf, size_t n,
    -		       ACE_OVERLAPPED *overlapped) const
    -{
    -  ACE_TRACE ("ACE_DEV_IO::recv");
    -  return ACE_OS::read (this->get_handle (), (char *) buf, n,
    -		       overlapped);
    -}
    -
    -#if defined (ACE_HAS_STREAM_PIPES)
    -ASYS_INLINE ssize_t
    -ACE_DEV_IO::recv (ACE_Str_Buf *cntl, ACE_Str_Buf *data, int *band, int *flags) const
    -{
    -  ACE_TRACE ("ACE_DEV_IO::recv");
    -  return ACE_OS::getpmsg (this->get_handle (), (strbuf *) cntl, (strbuf *) data, band, flags);
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE_DEV_IO::send (const ACE_Str_Buf *cntl, const ACE_Str_Buf *data, int band, int flags) const
    -{
    -  ACE_TRACE ("ACE_DEV_IO::send");
    -  return ACE_OS::putpmsg (this->get_handle (), (strbuf *) cntl, (strbuf *) data, band, flags);
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE_DEV_IO::recv (ACE_Str_Buf *cntl, ACE_Str_Buf *data, int *flags) const
    -{
    -  ACE_TRACE ("ACE_DEV_IO::recv");
    -  return ACE_OS::getmsg (this->get_handle (), (strbuf *) cntl, (strbuf *) data, flags);
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE_DEV_IO::send (const ACE_Str_Buf *cntl, const ACE_Str_Buf *data, int flags) const
    -{
    -  ACE_TRACE ("ACE_DEV_IO::send");
    -  return ACE_OS::putmsg (this->get_handle (), (strbuf *) cntl, (strbuf *) data, flags);
    -}
    -#endif /* ACE_HAS_STREAM_PIPES */
    diff --git a/ace/DLL.cpp b/ace/DLL.cpp
    deleted file mode 100644
    index db43090bd7a..00000000000
    --- a/ace/DLL.cpp
    +++ /dev/null
    @@ -1,162 +0,0 @@
    -// DLL.cpp
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/DLL.h"
    -
    -ACE_RCSID(ace, DLL, "$Id$")
    -
    -// Default constructor. Also, by default, the object will be closed
    -// before it is destroyed.
    -
    -ACE_DLL::ACE_DLL (int close_on_destruction)
    -  : handle_ (ACE_SHLIB_INVALID_HANDLE),
    -    close_on_destruction_ (close_on_destruction)
    -{
    -}
    -
    -// If the library name and the opening mode are specified than on
    -// object creation the library is implicitly opened.
    -
    -ACE_DLL::ACE_DLL (const ASYS_TCHAR *dll_name,
    -                  int open_mode,
    -                  int close_on_destruction)
    -  : handle_ (ACE_OS::dlopen (dll_name,
    -                             open_mode)),
    -    close_on_destruction_ (close_on_destruction)
    -{
    -  if (this->handle_ == ACE_SHLIB_INVALID_HANDLE)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT ("%s\n"),
    -                this->error ()));
    -}
    -
    -// The library is closed before the class gets destroyed depending on
    -// the close_on_destruction value specified which is stored in
    -// close_on_destruction_.
    -
    -ACE_DLL::~ACE_DLL (void)
    -{
    -  // CLose the library only if it hasn't been already.
    -  this->close ();
    -}
    -
    -// This method opens the library based on the mode specified using the
    -// ACE_SHLIB_HANDLE which is obtained on making the ACE_OS::dlopen call.
    -// The default mode is:
    -// RTLD_LAZY     Only references to data symbols are relocate when the
    -//               object is first loaded.
    -// The other modes include:
    -//  RTLD_NOW     All necessary relocations are performed when the
    -//               object is first loaded.
    -//  RTLD_GLOBAL  The object symbols are made available for the
    -//               relocation processing of any other object.
    -
    -int
    -ACE_DLL::open (const ASYS_TCHAR *dll_filename,
    -               int open_mode,
    -               int close_on_destruction)
    -{
    -  // This check is necessary as the library could be opened more than
    -  // once without closing it which would cause handle memory leaks.
    -  this->close ();
    -
    -  // Reset the flag
    -  this->close_on_destruction_ = close_on_destruction;
    -
    -  // Find out where the library is
    -  ASYS_TCHAR dll_pathname[MAXPATHLEN + 1];
    -
    -  // Transform the pathname into the appropriate dynamic link library
    -  // by searching the ACE_LD_SEARCH_PATH.
    -  int result = ACE::ldfind (dll_filename,
    -                            dll_pathname,
    -                            (sizeof dll_pathname / sizeof (ASYS_TCHAR)));
    -  // Check for errors
    -  if (result != 0)
    -    return result;
    -
    -  // The ACE_SHLIB_HANDLE object is obtained.
    -  this->handle_ = ACE_OS::dlopen (dll_pathname,
    -                                  open_mode);
    -
    -  if (this->handle_ == ACE_SHLIB_INVALID_HANDLE)
    -    ACE_ERROR_RETURN ((LM_ERROR,
    -                       ASYS_TEXT ("%s\n"), this->error ()),
    -                      -1);
    -  return 0;
    -}
    -
    -// The symbol refernce of the name specified is obtained.
    -
    -void *
    -ACE_DLL::symbol (const char *sym_name)
    -{
    -  return ACE_OS::dlsym (this->handle_, sym_name);
    -}
    -
    -// The library is closed using the ACE_SHLIB_HANDLE obejct.  i.e. The
    -// shared object is now disassociated form the current process.
    -
    -int
    -ACE_DLL::close (void)
    -{
    -  int retval = 0;
    -
    -  // The handle is checked to see whether the library is closed
    -  // already and the  flag is specified.  If
    -  // not, it is closed and the handle is made invalid to indicate that
    -  // it's now closed.
    -  if (this->close_on_destruction_ != 0 &&
    -      this->handle_ != ACE_SHLIB_INVALID_HANDLE)
    -    {
    -      retval = ACE_OS::dlclose (this->handle_);
    -    }
    -
    -  this->handle_ = ACE_SHLIB_INVALID_HANDLE;
    -  return retval;
    -}
    -
    -// This method is used on error in an library operation.
    -
    -ASYS_TCHAR *
    -ACE_DLL::error (void)
    -{
    -  return ACE_OS::dlerror ();
    -}
    -
    -// Return the handle to the user either temporarily or forever, thus
    -// orphaning it. If 0 means the user wants the handle forever and if 1
    -// means the user temporarily wants to take the handle.
    -
    -ACE_SHLIB_HANDLE
    -ACE_DLL::get_handle (int become_owner)
    -{
    -  // Since the caller is becoming the owner of the handle we lose
    -  // rights to close it on destruction.  The new controller has to do
    -  // it explicitly.
    -  if (become_owner)
    -    this->close_on_destruction_ = 0;
    -
    -  // Return the handle requested by the user.
    -  return this->handle_;
    -}
    -
    -// Set the handle for the DLL. By default, the object will be closed
    -// before it is destroyed.
    -
    -int
    -ACE_DLL::set_handle (ACE_SHLIB_HANDLE handle,
    -                     int close_on_destruction)
    -{
    -  // Close the handle in use before accepting the next one.
    -  if (this->close () == -1)
    -    ACE_ERROR_RETURN ((LM_ERROR,
    -                       ASYS_TEXT ("%s\n"), this->error ()),
    -                      -1);
    -
    -  this->handle_ = handle;
    -  this->close_on_destruction_ = close_on_destruction;
    -
    -  return 0;
    -}
    diff --git a/ace/DLL.h b/ace/DLL.h
    deleted file mode 100644
    index 59336ff0c24..00000000000
    --- a/ace/DLL.h
    +++ /dev/null
    @@ -1,106 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    DLL.h
    -//
    -// = AUTHOR
    -//    Kirthika Parameswaran 
    -//
    -// ============================================================================
    -
    -#ifndef ACE_DLL_H
    -#define ACE_DLL_H
    -
    -#include "ace/OS.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -class ACE_Export ACE_DLL
    -{
    -  // = TITLE
    -  //    Provides an abstract interface for handling various DLL
    -  //    operations.
    -  //
    -  // = DESCRIPTION
    -  //   This class is an wrapper over the various methods for utilizing
    -  //   a dynamically linked library (DLL), which is called a shared
    -  //   library on some platforms.  Operations , , and
    -  //    have been implemented to help opening/closing and
    -  //   extracting symbol information from a DLL, respectively.
    -public:
    -  // = Initialization and termination methods.
    -
    -  ACE_DLL (int close_on_destruction = 1);
    -  // Default constructor.  By default, the  operation on the
    -  // object will be invoked before it is destroyed.
    -
    -  ACE_DLL (const ASYS_TCHAR *dll_name,
    -           int open_mode = ACE_DEFAULT_SHLIB_MODE,
    -           int close_on_destruction = 1);
    -  // This constructor opens and dynamically links .  The
    -  // default mode is , which loads identifier symbols but
    -  // not the symbols for functions, which are loaded dynamically
    -  // on-demand.  Other supported modes include: , which
    -  // performs all necessary relocations when  is first
    -  // loaded and , which makes symbols available for
    -  // relocation processing of any other DLLs.
    -
    -  int open (const ASYS_TCHAR *dll_name,
    -            int open_mode = ACE_DEFAULT_SHLIB_MODE,
    -            int close_on_destruction = 1);
    -  // This method opens and dynamically links .  The default
    -  // mode is , which loads identifier symbols but not the
    -  // symbols for functions, which are loaded dynamically on-demand.
    -  // Other supported modes include: , which performs all
    -  // necessary relocations when  is first loaded and
    -  // , which makes symbols available for relocation
    -  // processing of any other DLLs.  Returns -1 on failure and 0 on
    -  // success.
    -
    -  int close (void);
    -  // Call to close the DLL object.
    -
    -  ~ACE_DLL (void);
    -  // Called when the DLL object is destroyed -- invokes  if the
    -  //  flag is set in the constructor or 
    -  // method.
    -
    -  void *symbol (const char *symbol_name);
    -  // If  is in the symbol table of the DLL a pointer to
    -  // the  is returned.  Otherwise, returns 0.
    -
    -  ASYS_TCHAR *error (void);
    -  // Returns a pointer to a string explaining why  or 
    -  // failed.
    -
    -  ACE_SHLIB_HANDLE get_handle (int become_owner = 0);
    -  // Return the handle to the caller.  If  is non-0 then
    -  // caller assumes ownership of the handle and the  object
    -  // won't call  when it goes out of scope, even if
    -  //  is set.
    -
    -  int set_handle (ACE_SHLIB_HANDLE handle, int close_on_destruction = 1);
    -  // Set the handle for the DLL object. By default, the  operation on the
    -  // object will be invoked before it is destroyed.
    -private:
    -  ACE_SHLIB_HANDLE handle_;
    -  // This is a handle to the DLL.
    -
    -  int close_on_destruction_;
    -  // This flag keeps track of whether we should close the handle
    -  // automatically when the destructor runs.
    -
    -  // = Disallow copying and assignment since we don't handle these.
    -  ACE_UNIMPLEMENTED_FUNC (ACE_DLL (const ACE_DLL &))
    -  ACE_UNIMPLEMENTED_FUNC (void operator= (const ACE_DLL &))
    -};
    -
    -#endif /* ACE_DLL_H */
    diff --git a/ace/Date_Time.cpp b/ace/Date_Time.cpp
    deleted file mode 100644
    index d98a5f72ccc..00000000000
    --- a/ace/Date_Time.cpp
    +++ /dev/null
    @@ -1,11 +0,0 @@
    -// Date_Time.cpp
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Date_Time.h"
    -
    -#if defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/Date_Time.i"
    -#endif
    -
    -ACE_RCSID(ace, Date_Time, "$Id$")
    diff --git a/ace/Date_Time.h b/ace/Date_Time.h
    deleted file mode 100644
    index b6a7d3b610c..00000000000
    --- a/ace/Date_Time.h
    +++ /dev/null
    @@ -1,97 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    ACE_Date_Time.h
    -//
    -// = AUTHOR
    -//    Tim Harrison (harrison@cs.wustl.edu) (and he's darn proud of this ;-))
    -//
    -// ============================================================================
    -
    -#ifndef ACE_DATE_TIME_H
    -#define ACE_DATE_TIME_H
    -
    -#include "ace/ACE.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -class ACE_Export ACE_Date_Time
    -{
    -  // = TITLE
    -  //     System independent representation of date and time.
    -public:
    -  // constructor with init values, no check for validy
    -  ACE_Date_Time (long day = 0,
    -                 long month = 0,
    -                 long year = 0,
    -                 long hour = 0,
    -                 long minute = 0,
    -                 long second = 0,
    -                 long microsec = 0);
    -  // Set/get portions of ACE_Date_Time, no check for validity.
    -
    -  long day (void);
    -  // Get day.
    -
    -  void day (long day);
    -  // Set day.
    -
    -  long month (void);
    -  // Get month.
    -
    -  void month (long month);
    -  // Set month.
    -
    -  long year (void);
    -  // Get year.
    -
    -  void year (long year);
    -  // Set year.
    -
    -  long hour (void);
    -  // Get hour.
    -
    -  void hour (long hour);
    -  // Set hour.
    -
    -  long minute (void);
    -  // Get minute.
    -
    -  void minute (long minute);
    -  // Set minute.
    -
    -  long second (void);
    -  // Get second.
    -
    -  void second (long second);
    -  // Set second.
    -
    -  long microsec (void);
    -  // Get microsec.
    -
    -  void microsec (long microsec);
    -  // Set microsec.
    -
    -private:
    -  long day_;
    -  long month_;
    -  long year_;
    -  long hour_;
    -  long minute_;
    -  long second_;
    -  long microsec_;
    -};
    -
    -#if !defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/Date_Time.i"
    -#endif
    -
    -#endif /* ACE_DATE_TIME_H */
    diff --git a/ace/Date_Time.i b/ace/Date_Time.i
    deleted file mode 100644
    index bfae34af0a3..00000000000
    --- a/ace/Date_Time.i
    +++ /dev/null
    @@ -1,140 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// Date_Time.i
    -
    -// constructor with init values, no check for validy
    -ASYS_INLINE
    -ACE_Date_Time::ACE_Date_Time(long day,
    -			     long month,
    -			     long year,
    -			     long hour,
    -			     long minute,
    -			     long second,
    -			     long microsec)
    -: day_ (day),
    -  month_ (month),
    -  year_ (year),
    -  hour_ (hour),
    -  minute_ (minute),
    -  second_ (second),
    -  microsec_ (microsec)
    -{
    -  ACE_TRACE ("ACE_Date_Time::ACE_Date_Time");
    -}
    -
    -// set/get portions of ACE_Date_Time, no check for validy
    -
    -// get day
    -ASYS_INLINE long 
    -ACE_Date_Time::day (void)
    -{
    -  ACE_TRACE ("ACE_Date_Time::day");
    -  return day_;
    -}
    -
    -// set day
    -ASYS_INLINE void 
    -ACE_Date_Time::day (long day)
    -{
    -  ACE_TRACE ("ACE_Date_Time::day");
    -  day_ = day;
    -}
    -
    -// get month
    -ASYS_INLINE long 
    -ACE_Date_Time::month (void)
    -{
    -  ACE_TRACE ("ACE_Date_Time::month");
    -  return month_;
    -}
    -
    -// set month
    -ASYS_INLINE void 
    -ACE_Date_Time::month (long month)
    -{
    -  ACE_TRACE ("ACE_Date_Time::month");
    -  month_ = month;
    -}
    -
    -// get year
    -ASYS_INLINE long 
    -ACE_Date_Time::year (void)
    -{
    -  ACE_TRACE ("ACE_Date_Time::year");
    -  return year_;
    -}
    -
    -// set year
    -ASYS_INLINE void 
    -ACE_Date_Time::year (long year)
    -{
    -  ACE_TRACE ("ACE_Date_Time::year");
    -  year_ = year;
    -}
    -
    -// get hour
    -ASYS_INLINE long 
    -ACE_Date_Time::hour (void)
    -{
    -  ACE_TRACE ("ACE_Date_Time::hour");
    -  return hour_;
    -}
    -
    -// set hour
    -ASYS_INLINE void 
    -ACE_Date_Time::hour (long hour)
    -{
    -  ACE_TRACE ("ACE_Date_Time::hour");
    -  hour_ = hour;
    -}
    -
    -// get minute
    -ASYS_INLINE long 
    -ACE_Date_Time::minute (void)
    -{
    -  ACE_TRACE ("ACE_Date_Time::minute");
    -  return minute_;
    -}
    -
    -// set minute
    -ASYS_INLINE void 
    -ACE_Date_Time::minute (long minute)
    -{
    -  ACE_TRACE ("ACE_Date_Time::minute");
    -  minute_ = minute;
    -}
    -
    -// get second
    -ASYS_INLINE long 
    -ACE_Date_Time::second (void)
    -{
    -  ACE_TRACE ("ACE_Date_Time::second");
    -  return second_;
    -}
    -
    -// set second
    -ASYS_INLINE void 
    -ACE_Date_Time::second (long second)
    -{
    -  ACE_TRACE ("ACE_Date_Time::second");
    -  second_ = second;
    -}
    -
    -// get microsec
    -ASYS_INLINE long 
    -ACE_Date_Time::microsec (void)
    -{
    -  ACE_TRACE ("ACE_Date_Time::microsec");
    -  return microsec_;
    -}
    -
    -// set microsec
    -ASYS_INLINE void 
    -ACE_Date_Time::microsec (long microsec)
    -{
    -  ACE_TRACE ("ACE_Date_Time::microsec");
    -  microsec_ = microsec;
    -}
    -
    -
    diff --git a/ace/Dirent.cpp b/ace/Dirent.cpp
    deleted file mode 100644
    index 99be26d2a6d..00000000000
    --- a/ace/Dirent.cpp
    +++ /dev/null
    @@ -1,10 +0,0 @@
    -// $Id$
    -#define ACE_BUILD_DLL
    -
    -#if defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/Dirent.i"
    -#else
    -#if defined (__hpux) && !defined (__GNUG__)
    -static int shut_up_aCC = 0;
    -#endif /* HPUX && !g++ */
    -#endif /* ACE_LACKS_INLINE_FUNCTIONS */
    diff --git a/ace/Dirent.h b/ace/Dirent.h
    deleted file mode 100644
    index 5f7ad9ad7e1..00000000000
    --- a/ace/Dirent.h
    +++ /dev/null
    @@ -1,107 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Dirent.h
    -//
    -// = DESCRIPTION
    -//    Define a portable directory-entry manipulation interface.
    -//
    -// = AUTHOR
    -//    Douglas C. Schmidt 
    -//
    -// ============================================================================
    -
    -#ifndef ACE_DIRENT_H
    -#define ACE_DIRENT_H
    -
    -#include "ace/OS.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -class ACE_Dirent
    -{
    -  // = TITLE
    -  //   Define a portable UNIX directory-entry iterator.
    -public:
    -  // = Initialization and termination methods.
    -  ACE_Dirent (void);
    -  // Default constructor.
    -
    -  ACE_Dirent (const char *dirname);
    -  // Constructor calls 
    -
    -  int open (const char *filename);
    -  // Opens the directory named by filename and associates a directory
    -  // stream with it.
    -
    -  ~ACE_Dirent (void);
    -  // Destructor calls .
    -
    -  void close (void);
    -  // Closes the directory stream and frees the DIR structure.
    -
    -  // = Iterator methods.
    -  dirent *read (void);
    -  // Returns a pointer to a structure representing the directory entry
    -  // at the current position in the directory stream to which dirp
    -  // refers, and positions the directory stream at the next entry,
    -  // except on read-only filesystems.  It returns a NULL pointer upon
    -  // reaching the end of the directory stream, or upon detecting an
    -  // invalid location in the directory.   shall not return
    -  // directory entries containing empty names.  It is unspecified
    -  // whether entries are returned for dot or dot-dot.  The pointer
    -  // returned by  points to data that may be overwritten by
    -  // another call to  on the same directory stream.  This
    -  // data shall not be overwritten by another call to  on a
    -  // different directory stream.   may buffer several
    -  // directory entries per actual read operation;  marks for
    -  // update the st_atime field of the directory each time the
    -  // directory is actually read.
    -
    -  int read (struct dirent *entry,
    -            struct dirent **result);
    -  // Has the equivalent functionality as  except that an
    -  //  and  buffer must be supplied by the caller to
    -  // store the result.
    -
    -  // = Manipulators.
    -  long tell (void);
    -  // Returns the current location associated with the directory
    -  // stream.
    -
    -  void seek (long loc);
    -  // Sets the position of the next  operation on the
    -  // directory stream.  The new position reverts to the position
    -  // associated with the directory stream at the time the 
    -  // operation that provides loc was performed.  Values returned by
    -  //  are good only for the lifetime of the DIR pointer from
    -  // which they are derived.  If the directory is closed and then
    -  // reopened, the  value may be invalidated due to
    -  // undetected directory compaction.  It is safe to use a previous
    -  //  value immediately after a call to  and before
    -  // any calls to readdir.
    -
    -  void rewind (void);
    -  // Resets the position of the directory stream to the beginning of
    -  // the directory.  It also causes the directory stream to refer to
    -  // the current state of the corresponding directory, as a call to
    -  //  would.
    -
    -private:
    -  DIR *dirp_;
    -  // Pointer to the directory stream.
    -};
    -
    -#if !defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/Dirent.i"
    -#endif /* ACE_LACKS_INLINE_FUNCTIONS */
    -
    -#endif /* ACE_DIRENT_H */
    diff --git a/ace/Dirent.i b/ace/Dirent.i
    deleted file mode 100644
    index 6d2eb7f8e11..00000000000
    --- a/ace/Dirent.i
    +++ /dev/null
    @@ -1,90 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -ACE_INLINE int
    -ACE_Dirent::open (const char *dirname) 
    -{
    -  // If the directory stream is already open, close it to prevent
    -  // possible resource leaks.
    -
    -  if (this->dirp_ != 0) 
    -    {
    -      ACE_OS::closedir (this->dirp_);
    -      this->dirp_ = 0;
    -    }
    -
    -  this->dirp_ = ACE_OS::opendir (dirname);
    -
    -  if (this->dirp_ == 0)
    -    return -1;
    -  else
    -    return 0;
    -}
    -
    -ACE_INLINE 
    -ACE_Dirent::ACE_Dirent (void)
    -  : dirp_ (0)
    -{
    -}
    -
    -ACE_INLINE 
    -ACE_Dirent::ACE_Dirent (const char *dirname) 
    -{
    -  if (this->open (dirname) == -1)
    -    ACE_ERROR ((LM_ERROR,
    -                "%p\n", 
    -                "Dirent::Dirent"));
    -}
    -
    -ACE_INLINE 
    -ACE_Dirent::~ACE_Dirent (void)
    -{
    -  if (this->dirp_ != 0)
    -    ACE_OS::closedir (this->dirp_);
    -}
    -
    -ACE_INLINE dirent *
    -ACE_Dirent::read (void)
    -{
    -  return ACE_OS::readdir (this->dirp_);
    -}
    -
    -ACE_INLINE int
    -ACE_Dirent::read (struct dirent *entry,
    -                  struct dirent **result)
    -{
    -  return ACE_OS::readdir_r (this->dirp_,
    -                            entry,
    -                            result);
    -}
    -
    -ACE_INLINE void
    -ACE_Dirent::close (void)
    -{
    -  if (this->dirp_ != 0) 
    -    {
    -      ACE_OS::closedir (this->dirp_);
    -
    -      // Prevent double closure
    -      this->dirp_ = 0;
    -    }
    -}
    -
    -ACE_INLINE void
    -ACE_Dirent::rewind (void)
    -{
    -  ACE_OS::rewinddir (this->dirp_);
    -}
    -
    -ACE_INLINE void
    -ACE_Dirent::seek (long loc)
    -{
    -  ACE_OS::seekdir (this->dirp_, loc);
    -}
    -
    -ACE_INLINE long
    -ACE_Dirent::tell (void)
    -{
    -  return ACE_OS::telldir (this->dirp_);
    -}
    -
    diff --git a/ace/Dump.cpp b/ace/Dump.cpp
    deleted file mode 100644
    index 7479f2489e1..00000000000
    --- a/ace/Dump.cpp
    +++ /dev/null
    @@ -1,135 +0,0 @@
    -// Dump.cpp
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Synch_T.h"
    -#include "ace/Dump.h"
    -#include "ace/Object_Manager.h"
    -
    -ACE_RCSID(ace, Dump, "$Id$")
    -
    -// Implementations (very simple for now...)
    -
    -ACE_Dumpable::~ACE_Dumpable (void)
    -{
    -  ACE_TRACE ("ACE_Dumpable::~ACE_Dumpable");
    -}
    -
    -ACE_Dumpable::ACE_Dumpable (const void *this_ptr)
    -  : this_ (this_ptr)
    -{
    -  ACE_TRACE ("ACE_Dumpable::ACE_Dumpable");
    -}
    -
    -ACE_Dumpable_Ptr::ACE_Dumpable_Ptr (const ACE_Dumpable *dumper)
    -  : dumper_ (dumper)
    -{
    -  ACE_TRACE ("ACE_Dumpable_Ptr::ACE_Dumpable_Ptr");
    -}
    -
    -const ACE_Dumpable *
    -ACE_Dumpable_Ptr::operator->() const
    -{
    -  ACE_TRACE ("ACE_Dumpable_Ptr::operator->");
    -  return this->dumper_;
    -}
    -
    -void
    -ACE_Dumpable_Ptr::operator= (const ACE_Dumpable *dumper) const
    -{
    -  ACE_TRACE ("ACE_Dumpable_Ptr::operator=");
    -  if (this->dumper_ != dumper)
    -    {
    -      delete (ACE_Dumpable *) this->dumper_;
    -      ((ACE_Dumpable_Ptr *) this)->dumper_ = dumper;
    -    }
    -}
    -
    -ACE_ODB::ACE_ODB (void)
    -{
    -  ACE_TRACE ("ACE_ODB::ACE_ODB");
    -}
    -
    -ACE_ODB *
    -ACE_ODB::instance (void)
    -{
    -  ACE_TRACE ("ACE_ODB::instance");
    -
    -  if (ACE_ODB::instance_ == 0)
    -    {
    -      ACE_MT (ACE_Thread_Mutex *lock =
    -        ACE_Managed_Object::get_preallocated_object
    -          (ACE_Object_Manager::ACE_DUMP_LOCK);
    -        ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, *lock, 0));
    -
    -      if (ACE_ODB::instance_ == 0)
    -        ACE_NEW_RETURN (ACE_ODB::instance_,
    -                        ACE_ODB,
    -                        0);
    -    }
    -
    -  return ACE_ODB::instance_;
    -}
    -
    -void
    -ACE_ODB::dump_objects (void)
    -{
    -  ACE_TRACE ("ACE_ODB::dump_objects");
    -  for (int i = 0; i < this->current_size_; i++)
    -    {
    -      if (this->object_table_[i].this_ != 0)
    -        // Dump the state of the object.
    -        this->object_table_[i].dumper_->dump ();
    -    }
    -}
    -
    -// This method registers a new .  It detects
    -// duplicates and simply overwrites them.
    -
    -void
    -ACE_ODB::register_object (const ACE_Dumpable *dumper)
    -{
    -  ACE_TRACE ("ACE_ODB::register_object");
    -  int i;
    -  int slot = 0;
    -
    -  for (i = 0; i < this->current_size_; i++)
    -    {
    -      if (this->object_table_[i].this_ == 0)
    -        slot = i;
    -      else if (this->object_table_[i].this_ == dumper->this_)
    -        {
    -          slot = i;
    -          break;
    -        }
    -    }
    -
    -  if (i == this->current_size_)
    -    {
    -      slot = this->current_size_++;
    -      ACE_ASSERT (this->current_size_ < ACE_ODB::MAX_TABLE_SIZE);
    -    }
    -  this->object_table_[slot].this_ = dumper->this_;
    -  this->object_table_[slot].dumper_ = dumper;
    -}
    -
    -void
    -ACE_ODB::remove_object (const void *this_ptr)
    -{
    -  ACE_TRACE ("ACE_ODB::remove_object");
    -  int i;
    -
    -  for (i = 0; i < this->current_size_; i++)
    -    {
    -      if (this->object_table_[i].this_ == this_ptr)
    -        break;
    -    }
    -
    -  if (i < this->current_size_)
    -    {
    -      this->object_table_[i].this_ = 0;
    -      this->object_table_[i].dumper_ = 0;
    -    }
    -}
    -
    -ACE_ODB *ACE_ODB::instance_ = 0;
    diff --git a/ace/Dump.h b/ace/Dump.h
    deleted file mode 100644
    index 1bb165d0eb9..00000000000
    --- a/ace/Dump.h
    +++ /dev/null
    @@ -1,156 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Dump.h
    -//
    -// = DESCRIPTION
    -//
    -// A prototype mechanism that allow all ACE objects to be registered
    -// with a central in-memory "database" that can dump the state of all
    -// live ACE objects (e.g., from within a debugger).
    -//
    -// To turn on this feature simply compile with -DACE_NDEBUG
    -//
    -// There are several interesting aspects to this design:
    -//
    -// 1. It uses the External Polymorphism pattern to avoid having to
    -//    derive all ACE classes from a common base class that has virtual
    -//    methods (this is crucial to avoid unnecessary overhead).  In
    -//    addition, there is no additional space added to ACE objects
    -//    (this is crucial to maintain binary layout compatibility).
    -//
    -// 2. This mechanism can be conditionally compiled in order to
    -//    completely disable this feature entirely.  Moreover, by
    -//    using macros there are relatively few changes to ACE code.
    -//
    -// 3. This mechanism copes with single-inheritance hierarchies of
    -//    dumpable classes.  In such cases we typically want only one
    -//    dump, corresponding to the most derived instance.  Thanks to
    -//    Christian Millour (chris@etca.fr) for illustrating how to do
    -//    this.  Note, however, that this scheme doesn't generalize to
    -//    work with multiple-inheritance or virtual base classes.
    -//
    -// Future work includes:
    -//
    -// 1. Using a dynamic object table rather than a static table
    -//
    -// 2. Adding support to allow particular classes of objects to
    -//    be selectively dumped.
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_DUMP_H
    -#define ACE_DUMP_H
    -
    -#include "ace/Synch.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -class ACE_Export ACE_Dumpable
    -{
    -  // = TITLE
    -  //   Base class that defines a uniform interface for all object
    -  //   dumping.
    -public:
    -  friend class ACE_ODB;
    -  friend class ACE_Dumpable_Ptr;
    -
    -  ACE_Dumpable (const void *);
    -  // Constructor.
    -
    -  virtual void dump (void) const = 0;
    -  // This pure virtual method must be filled in by a subclass.
    -
    -protected:
    -  virtual ~ACE_Dumpable (void);
    -
    -private:
    -  const void *this_;
    -  // Pointer to the object that is being stored.
    -};
    -
    -class ACE_Export ACE_Dumpable_Ptr
    -{
    -  // = TITLE
    -  //    A smart pointer stored in the in-memory object database
    -  //    ACE_ODB.  The pointee (if any) is deleted when reassigned.
    -public:
    -  ACE_Dumpable_Ptr (const ACE_Dumpable *dumper = 0);
    -  const ACE_Dumpable *operator->() const;
    -  void operator= (const ACE_Dumpable *dumper) const;
    -
    -private:
    -  const ACE_Dumpable *dumper_;
    -  // "Real" pointer to the underlying abstract base class
    -  // pointer that does the real work.
    -};
    -
    -class ACE_Export ACE_ODB
    -{
    -  // = TITLE
    -  //     This is the object database (ODB) that keeps track of all
    -  //     live ACE objects.
    -public:
    -  enum {MAX_TABLE_SIZE = 100000}; // This is clearly inadequate and should be dynamic...
    -
    -  void dump_objects (void);
    -  // Iterates through the entire set of registered objects and
    -  // dumps their state.
    -
    -  void register_object (const ACE_Dumpable *dumper);
    -  // Add the tuple  to the list of registered ACE objects.
    -
    -  void remove_object (const void *this_);
    -  // Use  to locate and remove the associated  from the
    -  // list of registered ACE objects.
    -
    -  static ACE_ODB *instance (void);
    -  // Interface to the Singleton instance of the object database.
    -
    -private:
    -  ACE_ODB (void); // Ensure we have a Singleton...
    -
    -  struct Tuple
    -  {
    -    const void *this_;
    -    // Pointer to the object that is registered.
    -
    -    const ACE_Dumpable_Ptr dumper_;
    -    // Smart pointer to the ACE_Dumpable object associated with this_.
    -    // This uses an ACE_Dumpable_Ptr, instead of a bare pointer, to
    -    // cope with hierarchies of dumpable classes.  In such cases we
    -    // typically want only one dump, corresponding to the most derived
    -    // instance. To achieve this, the handle registered for the
    -    // subobject corresponding to the base class is destroyed (hence
    -    // on destruction of the subobject its handle won't exist anymore
    -    // and we'll have to check for that).
    -
    -    Tuple (void) : dumper_(0) {}
    -  };
    -
    -  static ACE_ODB *instance_;
    -  // Singleton instance of this class.
    -
    -  Tuple object_table_[ACE_ODB::MAX_TABLE_SIZE];
    -  // The current implementation is very simple-minded and will be
    -  // changed to be dynamic.
    -
    -  int current_size_;
    -  // Current size of .
    -};
    -
    -// Include the templates classes at this point.
    -#include "ace/Dump_T.h"
    -
    -#endif /* ACE_DUMP_H */
    diff --git a/ace/Dump_T.cpp b/ace/Dump_T.cpp
    deleted file mode 100644
    index 97386d4ba31..00000000000
    --- a/ace/Dump_T.cpp
    +++ /dev/null
    @@ -1,41 +0,0 @@
    -// Dump_T.cpp
    -// $Id$
    -
    -#ifndef ACE_DUMP_T_C
    -#define ACE_DUMP_T_C
    -
    -#include "ace/Dump_T.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -ACE_RCSID(ace, Dump_T, "$Id$")
    -
    -template 
    -ACE_Dumpable_Adapter::~ACE_Dumpable_Adapter (void)
    -{
    -  ACE_TRACE ("ACE_Dumpable_Adapter::~ACE_Dumpable_Adapter");
    -}
    -
    -template 
    -ACE_Dumpable_Adapter::ACE_Dumpable_Adapter (const Concrete *t)
    -  : ACE_Dumpable ((const void *) t), this_ (t)
    -{
    -  ACE_TRACE ("ACE_Dumpable_Adapter::ACE_Dumpable_Adapter");
    -}
    -
    -template  Concrete *
    -ACE_Dumpable_Adapter::operator->() const
    -{
    -  return (Concrete *) this->this_;
    -}
    -
    -template  void
    -ACE_Dumpable_Adapter::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Dumpable_Adapter::dump");
    -  this->this_->dump ();
    -}
    -
    -#endif /* ACE_DUMP_T_C */
    diff --git a/ace/Dump_T.h b/ace/Dump_T.h
    deleted file mode 100644
    index ca4f5e45d7b..00000000000
    --- a/ace/Dump_T.h
    +++ /dev/null
    @@ -1,77 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Dump.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_DUMP_T_H
    -#define ACE_DUMP_T_H
    -
    -#include "ace/Dump.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -template 
    -class ACE_Dumpable_Adapter : public ACE_Dumpable
    -{
    -  // = TITLE
    -  //    This class inherits the interface of the abstract ACE_Dumpable
    -  //    class and is instantiated with the implementation of the
    -  //    concrete component class .
    -  //
    -  // = DESCRIPTION
    -  //    This design is similar to the Adapter and Decorator patterns
    -  //    from the ``Gang of Four'' book.  Note that 
    -  //    need not inherit from a common class since ACE_Dumpable
    -  //    provides the uniform virtual interface!
    -public:
    -  // = Initialization and termination methods.
    -  ACE_Dumpable_Adapter (const Concrete *t);
    -  ~ACE_Dumpable_Adapter (void);
    -
    -  virtual void dump (void) const;
    -  // Concrete dump method (simply delegates to the  method of
    -  // ).
    -
    -  Concrete *operator->() const;
    -  // Delegate to methods in the Concrete class.
    -
    -private:
    -  const Concrete *this_;
    -  // Pointer to  of .
    -};
    -
    -// Some useful macros for conditionally compiling this feature...
    -#if defined (ACE_NDEBUG)
    -#define ACE_REGISTER_OBJECT(CLASS)
    -#define ACE_REMOVE_OBJECT
    -#else
    -#define ACE_REGISTER_OBJECT(CLASS) \
    -        ACE_ODB::instance ()->register_object \
    -          (new ACE_Dumpable_Adapter (this));
    -#define ACE_REMOVE_OBJECT \
    -        ACE_ODB::instance ()->remove_object    \
    -          ((void *) this);
    -#endif /* ACE_NDEBUG */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
    -#include "ace/Dump_T.cpp"
    -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
    -#pragma implementation ("Dump_T.cpp")
    -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
    -
    -#endif /* ACE_DUMP_T_H */
    diff --git a/ace/Dynamic.cpp b/ace/Dynamic.cpp
    deleted file mode 100644
    index 15585538b61..00000000000
    --- a/ace/Dynamic.cpp
    +++ /dev/null
    @@ -1,31 +0,0 @@
    -// Dynamic.cpp
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Dynamic.h"
    -#include "ace/Singleton.h"
    -#include "ace/Synch_T.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/Dynamic.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, Dynamic, "$Id$")
    -
    -ACE_Dynamic::ACE_Dynamic (void)
    -  : is_dynamic_ (0)
    -{
    -  ACE_TRACE ("ACE_Dynamic::ACE_Dynamic");
    -}
    -
    -/* static */ ACE_Dynamic *
    -ACE_Dynamic::instance (void)
    -{
    -  return ACE_TSS_Singleton::instance ();
    -}
    -
    -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
    -  template class ACE_TSS_Singleton;
    -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
    -  #pragma instantiate ACE_TSS_Singleton
    -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
    diff --git a/ace/Dynamic.h b/ace/Dynamic.h
    deleted file mode 100644
    index 23960bd3632..00000000000
    --- a/ace/Dynamic.h
    +++ /dev/null
    @@ -1,69 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Dynamic.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt and Irfan Pyrarli.
    -//
    -// ============================================================================
    -
    -#ifndef ACE_DYNAMIC_H
    -#define ACE_DYNAMIC_H
    -
    -#include "ace/ACE.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Synch_T.h"
    -#include "ace/Singleton.h"
    -
    -class ACE_Export ACE_Dynamic
    -{
    -  // = TITLE
    -  //     Checks to see if an object was dynamically allocated.
    -  //
    -  // = DESCRIPTION
    -  //     This class holds the pointer in a thread-safe manner between
    -  //     the call to operator new and the call to the constructor.
    -public:
    -  // = Initialization and termination method.
    -  ACE_Dynamic (void);
    -  // Constructor.
    -
    -  ~ACE_Dynamic (void);
    -  // Destructor.
    -
    -  void set (void);
    -  // Sets a flag that indicates that the object was dynamically
    -  // created. This method is usually called in operator new and then
    -  // checked and reset in the constructor.
    -
    -  int is_dynamic (void);
    -  // 1 if we were allocated dynamically, else 0.
    -
    -  void reset (void);
    -  // Resets state flag.
    -
    -  static ACE_Dynamic *instance (void);
    -
    -private:
    -  int is_dynamic_;
    -  // Flag that indicates that the object was dynamically created. This
    -  // method is usually called in operator new and then checked and
    -  // reset in the constructor.
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Dynamic.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_DYNAMIC_H */
    diff --git a/ace/Dynamic.i b/ace/Dynamic.i
    deleted file mode 100644
    index 6a32b94d4e6..00000000000
    --- a/ace/Dynamic.i
    +++ /dev/null
    @@ -1,32 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// Dynamic.i
    -
    -ACE_INLINE
    -ACE_Dynamic::~ACE_Dynamic (void)
    -{
    -  ACE_TRACE ("ACE_Dynamic::~ACE_Dynamic");
    -}
    -
    -ACE_INLINE void
    -ACE_Dynamic::set (void)
    -{ 
    -  ACE_TRACE ("ACE_Dynamic::set");
    -  this->is_dynamic_ = 1; 
    -}
    -
    -ACE_INLINE int 
    -ACE_Dynamic::is_dynamic ()
    -{ 
    -  ACE_TRACE ("ACE_Dynamic::is_dynamic");
    -  return this->is_dynamic_;
    -}
    -
    -ACE_INLINE void
    -ACE_Dynamic::reset (void)
    -{ 
    -  ACE_TRACE ("ACE_Dynamic::set");
    -  this->is_dynamic_ = 0; 
    -}
    -
    diff --git a/ace/Dynamic_Service.cpp b/ace/Dynamic_Service.cpp
    deleted file mode 100644
    index e102ec2cab3..00000000000
    --- a/ace/Dynamic_Service.cpp
    +++ /dev/null
    @@ -1,52 +0,0 @@
    -// Dynamic_Service.cpp
    -// $Id$
    -
    -#ifndef ACE_DYNAMIC_SERVICE_C
    -#define ACE_DYNAMIC_SERVICE_C
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Service_Config.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Service_Repository.h"
    -#include "ace/Dynamic_Service.h"
    -
    -ACE_RCSID(ace, Dynamic_Service, "$Id$")
    -
    -template  void
    -ACE_Dynamic_Service::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Dynamic_Service::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("\n")));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -// Get the instance using .
    -
    -template  SERVICE *
    -ACE_Dynamic_Service::instance (const char *name)
    -{
    -  ACE_TRACE ("ACE_Dynamic_Service::instance");
    -  const ACE_Service_Type *svc_rec;
    -
    -  if (ACE_Service_Repository::instance ()->find (name,
    -                                                 &svc_rec) == -1)
    -    return 0;
    -
    -  const ACE_Service_Type_Impl *type = svc_rec->type ();
    -
    -  if (type == 0)
    -    return 0;
    -  else
    -    {
    -      void *obj = type->object ();
    -      return ACE_reinterpret_cast (SERVICE *, obj);
    -    }
    -}
    -
    -#endif /* ACE_DYNAMIC_SERVICE_C */
    diff --git a/ace/Dynamic_Service.h b/ace/Dynamic_Service.h
    deleted file mode 100644
    index 45caa8ef4f5..00000000000
    --- a/ace/Dynamic_Service.h
    +++ /dev/null
    @@ -1,46 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Dynamic_Service.h
    -//
    -// = AUTHOR
    -//    Prashant Jain, Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_DYNAMIC_SERVICE_H
    -#define ACE_DYNAMIC_SERVICE_H
    -
    -template 
    -class ACE_Dynamic_Service
    -{
    -  // = TITLE
    -  //     Provides a general interface to retrieve arbitrary objects
    -  //     from the ACE service repository.
    -  //
    -  // = DESCRIPTION
    -  //     Uses "name" for lookup in the ACE service repository. Obtains
    -  //     the object and returns it as the appropriate type.
    -public:
    -  static SERVICE *instance (const char *name);
    -  // Return instance using  to search the Service_Repository.
    -
    -  void dump (void) const;
    -  // Dump the current state of the object.
    -};
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
    -# include "ace/Dynamic_Service.cpp"
    -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
    -# pragma implementation ("Dynamic_Service.cpp")
    -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
    -
    -#endif /* ACE_DYNAMIC_SERVICE_H */
    diff --git a/ace/Dynamic_Service.i b/ace/Dynamic_Service.i
    deleted file mode 100644
    index a29b996d459..00000000000
    --- a/ace/Dynamic_Service.i
    +++ /dev/null
    @@ -1,4 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// Dynamic_Service.i
    diff --git a/ace/Env_Value_T.cpp b/ace/Env_Value_T.cpp
    deleted file mode 100644
    index d99819ec6b9..00000000000
    --- a/ace/Env_Value_T.cpp
    +++ /dev/null
    @@ -1,14 +0,0 @@
    -// $Id$
    -
    -#if !defined (ACE_ENV_VALUE_T_C)
    -#define ACE_ENV_VALUE_T_C
    -
    -#include "ace/Env_Value_T.h"
    -
    -#if ! defined (__ACE_INLINE__)
    -#include "ace/Env_Value_T.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, Env_Value_T, "$Id$")
    -
    -#endif /* ACE_ENV_VALUE_T_C */
    diff --git a/ace/Env_Value_T.h b/ace/Env_Value_T.h
    deleted file mode 100644
    index 69da5351c51..00000000000
    --- a/ace/Env_Value_T.h
    +++ /dev/null
    @@ -1,156 +0,0 @@
    -/* This may look like C, but it's really -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ACE
    -//
    -// = DESCRIPTION
    -//    Template to encapsulate getting a value from an environment variable
    -//    and using a supplied default value if not in the environment.
    -//
    -// = AUTHOR
    -//    Chris Cleeland (derived from work by Carlos O'Ryan)
    -//
    -// ============================================================================
    -
    -#ifndef ACE_ENV_VALUE_T_H
    -#define ACE_ENV_VALUE_T_H
    -
    -#include "ace/OS.h"             // Need to get ACE_static_cast definition
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -template 
    -class ACE_Env_Value
    -{
    -  // = TITLE
    -  //    Enviroment Variable Value
    -  //
    -  // = DESCRIPTION
    -  //    Reads a variable from the user enviroment, providing a default
    -  //    value.
    -  //
    -  // = AUTHOR
    -  //    Chris Cleeland, Carlos O'Ryan
    -public:
    -  ACE_Env_Value (void);
    -  // Default constructor which isn't bound to a specific environment
    -  // variable name or a default value.  Before being useful it must
    -  // 'd.
    -
    -  ACE_Env_Value (const ASYS_TCHAR *varname,
    -                 const T &vardefault);
    -  // Constructor that calls .
    -
    -  ~ACE_Env_Value (void);
    -  // Destroy the value.
    -
    -  operator T (void);
    -  // Returns the value as type T.
    -
    -  void open (const ASYS_TCHAR *varname, const T &defval);
    -  // The constructor, read  from the enviroment, using
    -  //  as its value if it is not defined.
    -
    -  const ASYS_TCHAR *varname (void) const;
    -  // Returns the name of the variable being tracked.
    -
    -private:
    -  ACE_UNIMPLEMENTED_FUNC (ACE_Env_Value(const ACE_Env_Value &))
    -  ACE_UNIMPLEMENTED_FUNC (ACE_Env_Value operator=(const ACE_Env_Value &))
    -  // Disallow copying and assignment.
    -
    -  void fetch_value (void);
    -
    -  const ASYS_TCHAR *varname_;
    -  T value_;
    -};
    -
    -template  void ACE_Convert (const ASYS_TCHAR *s, T &t);
    -// Function to convert a string  into type .
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Env_Value_T.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
    -#include "ace/Env_Value_T.cpp"
    -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
    -
    -
    -// Default calls a CTOR on type T of the form 'T::T(const char*)', but
    -// users can feel free to create their own specialized conversion
    -// functions if necessary, as shown below.  Note that for 'char*' the
    -// default is used because a simple cast will be performed and no
    -// conversion will be necessary.
    -
    -template  inline void
    -ACE_Convert (const ASYS_TCHAR *s, T &t)
    -{
    -  t = T (s);
    -}
    -
    -inline void
    -ACE_Convert (const ASYS_TCHAR *s, ASYS_TCHAR *&v)
    -{
    -  v = (ASYS_TCHAR *) s;
    -}
    -
    -inline void
    -ACE_Convert (const ASYS_TCHAR *s, const ASYS_TCHAR *&v)
    -{
    -  v = (const ASYS_TCHAR *) s;
    -}
    -
    -inline void
    -ACE_Convert (const ASYS_TCHAR *s, short &si)
    -{
    -  si = ACE_static_cast (short, ACE_OS::strtol (s, 0, 10));
    -}
    -
    -inline void
    -ACE_Convert (const ASYS_TCHAR *s, u_short &us)
    -{
    -  us = ACE_static_cast (u_short, ACE_OS::strtol (s, 0, 10));
    -}
    -
    -inline void
    -ACE_Convert (const ASYS_TCHAR *s, u_int &i)
    -{
    -  i = ACE_static_cast (u_int,
    -                       ACE_OS::strtol (s, 0, 10));
    -}
    -
    -inline void
    -ACE_Convert (const ASYS_TCHAR *s, long &l)
    -{
    -  l = ACE_OS::strtol (s, 0, 10);
    -}
    -
    -inline void
    -ACE_Convert (const ASYS_TCHAR *s, int &i)
    -{
    -  i = ACE_static_cast (int, ACE_OS::strtol (s, 0, 10));
    -}
    -
    -inline void
    -ACE_Convert (const ASYS_TCHAR *s, u_long &ul)
    -{
    -  ul = ACE_OS::strtoul (s, 0, 10);
    -}
    -
    -inline void
    -ACE_Convert (const ASYS_TCHAR *s, double &d)
    -{
    -  d = ACE_OS::strtod (s, 0);
    -}
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
    -#pragma implementation ("Env_Value_T.cpp")
    -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
    -
    -#endif /* ACE_ENV_VALUE_T_H */
    diff --git a/ace/Env_Value_T.i b/ace/Env_Value_T.i
    deleted file mode 100644
    index 25598c8dad5..00000000000
    --- a/ace/Env_Value_T.i
    +++ /dev/null
    @@ -1,51 +0,0 @@
    -// $Id$
    -
    -template  ACE_INLINE
    -ACE_Env_Value::operator T (void)
    -{
    -  return value_;
    -}
    -
    -template  ACE_INLINE
    -ACE_Env_Value::ACE_Env_Value (void)
    -  : varname_ (0)
    -{
    -}
    -
    -template  ACE_INLINE
    -ACE_Env_Value::ACE_Env_Value (const ASYS_TCHAR *varname,
    -                                 const T &defval)
    -  : varname_ (varname),
    -    value_(defval)
    -{
    -  this->fetch_value ();
    -}
    -
    -template  ACE_INLINE void
    -ACE_Env_Value::open (const ASYS_TCHAR *varname,
    -                        const T &defval)
    -{
    -  varname_ = varname;
    -  value_ = defval;
    -  this->fetch_value ();
    -}
    -
    -template  ACE_INLINE void
    -ACE_Env_Value::fetch_value (void)
    -{
    -  const ASYS_TCHAR *env = ACE_OS::getenv (varname_);
    -
    -  if (env != 0)
    -    ACE_Convert (env, value_);
    -}
    -
    -template  ACE_INLINE const ASYS_TCHAR*
    -ACE_Env_Value::varname (void) const
    -{
    -  return varname_;
    -}
    -
    -template  ACE_INLINE
    -ACE_Env_Value::~ACE_Env_Value (void)
    -{
    -}
    diff --git a/ace/Event_Handler.cpp b/ace/Event_Handler.cpp
    deleted file mode 100644
    index eeb76894677..00000000000
    --- a/ace/Event_Handler.cpp
    +++ /dev/null
    @@ -1,238 +0,0 @@
    -// Event_Handler.cpp
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Event_Handler.h"
    -#include "ace/Message_Block.h"
    -#include "ace/Reactor.h"
    -#include "ace/Thread_Manager.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/Event_Handler.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, Event_Handler, "$Id$")
    -
    -// Implement conceptually abstract virtual functions in the base class
    -// so derived classes don't have to implement unused ones.
    -
    -ACE_Event_Handler::ACE_Event_Handler (ACE_Reactor *r,
    -                                      int p)
    -  : priority_ (p),
    -    reactor_ (r)
    -{
    -  // ACE_TRACE ("ACE_Event_Handler::ACE_Event_Handler");
    -}
    -
    -ACE_Event_Handler::~ACE_Event_Handler (void) 
    -{
    -  // ACE_TRACE ("ACE_Event_Handler::~ACE_Event_Handler");
    -}
    -
    -// Gets the file descriptor associated with this I/O device. 
    -
    -ACE_HANDLE
    -ACE_Event_Handler::get_handle (void) const
    -{
    -  ACE_TRACE ("ACE_Event_Handler::get_handle");
    -  return ACE_INVALID_HANDLE;
    -}
    -
    -// Sets the file descriptor associated with this I/O device.
    -
    -void
    -ACE_Event_Handler::set_handle (ACE_HANDLE)
    -{
    -  ACE_TRACE ("ACE_Event_Handler::set_handle");
    -}
    -
    -// Gets the priority of this handler. 
    -
    -int
    -ACE_Event_Handler::priority (void) const
    -{
    -  ACE_TRACE ("ACE_Event_Handler::priority");
    -  return this->priority_;
    -}
    -
    -// Sets the priority 
    -
    -void
    -ACE_Event_Handler::priority (int priority)
    -{
    -  ACE_TRACE ("ACE_Event_Handler::priority");
    -  this->priority_ = priority;
    -}
    -
    -// Called when the object is about to be removed from the Dispatcher
    -// tables.
    -
    -int
    -ACE_Event_Handler::handle_close (ACE_HANDLE, ACE_Reactor_Mask)
    -{
    -  ACE_TRACE ("ACE_Event_Handler::handle_close");
    -  return -1;
    -}
    -
    -// Called when input becomes available on fd. 
    -
    -int
    -ACE_Event_Handler::handle_input (ACE_HANDLE)
    -{
    -  ACE_TRACE ("ACE_Event_Handler::handle_input");
    -  return -1;
    -}
    -
    -// Called when output is possible on fd.
    -
    -int 
    -ACE_Event_Handler::handle_output (ACE_HANDLE)
    -{
    -  ACE_TRACE ("ACE_Event_Handler::handle_output");
    -  return -1;
    -}
    -
    -// Called when urgent data is available on fd. 
    -
    -int 
    -ACE_Event_Handler::handle_exception (ACE_HANDLE)
    -{
    -  ACE_TRACE ("ACE_Event_Handler::handle_exception");
    -  return -1;
    -}
    -
    -// Called when timer expires, TV stores the current time.
    -
    -int
    -ACE_Event_Handler::handle_timeout (const ACE_Time_Value &, const void *)
    -{
    -  ACE_TRACE ("ACE_Event_Handler::handle_timeout");
    -  return -1;
    -}
    -
    -// Called when a monitored Process exits
    -
    -int
    -ACE_Event_Handler::handle_exit (ACE_Process *)
    -{
    -  ACE_TRACE ("ACE_Event_Handler::handle_exit");
    -  return -1;
    -}
    -
    -// Called when a registered signal occurs.
    -
    -int 
    -ACE_Event_Handler::handle_signal (int, siginfo_t *, ucontext_t *)
    -{
    -  ACE_TRACE ("ACE_Event_Handler::handle_signal");
    -  return -1;
    -}
    -
    -int
    -ACE_Event_Handler::handle_qos (ACE_HANDLE)
    -{
    -  ACE_TRACE ("ACE_Event_Handler::handle_qos");
    -  return -1;
    -}
    -
    -int
    -ACE_Event_Handler::handle_group_qos (ACE_HANDLE)
    -{
    -  ACE_TRACE ("ACE_Event_Handler::handle_group_qos");
    -  return -1;
    -}
    -
    -void 
    -ACE_Event_Handler::reactor (ACE_Reactor *reactor)
    -{
    -  ACE_TRACE ("ACE_Event_Handler::reactor");
    -  this->reactor_ = reactor;
    -}
    -
    -ACE_Reactor *
    -ACE_Event_Handler::reactor (void) const
    -{
    -  ACE_TRACE ("ACE_Event_Handler::reactor");
    -  return this->reactor_;
    -}
    -
    -#if !defined (ACE_HAS_WINCE)
    -
    -// Used to read from non-socket ACE_HANDLEs in our own thread to work
    -// around Win32 limitations that don't allow us to select() on
    -// non-sockets (such as ACE_STDIN).  This is commonly used in
    -// situations where the Reactor is used to demultiplex read events on
    -// ACE_STDIN on UNIX.  Note that  must be a subclass of
    -// .  If the  method of this event
    -// handler returns  we default to reading from
    -// ACE_STDIN.
    -
    -void *
    -ACE_Event_Handler::read_adapter (void *args)
    -{
    -  ACE_Event_Handler *this_ptr = (ACE_Event_Handler *) args;
    -  ACE_HANDLE handle = ACE_STDIN;
    -
    -  while (this_ptr->handle_input (handle) != -1)
    -    continue;
    -
    -  this_ptr->handle_close (handle,
    -                          ACE_Event_Handler::READ_MASK);
    -  this_ptr->reactor ()->notify ();
    -
    -  return 0;
    -}
    -
    -int
    -ACE_Event_Handler::register_stdin_handler (ACE_Event_Handler *eh,
    -					   ACE_Reactor *reactor,
    -					   ACE_Thread_Manager *thr_mgr,
    -					   int flags)
    -{
    -#if defined (ACE_WIN32)
    -  ACE_UNUSED_ARG (reactor);
    -
    -  eh->reactor (reactor);
    -  return thr_mgr->spawn (&read_adapter, (void *) eh, flags);
    -#else
    -  // Keep compilers happy.
    -  ACE_UNUSED_ARG (flags);
    -  ACE_UNUSED_ARG (thr_mgr);
    -  return reactor->register_handler (ACE_STDIN,
    -                                    eh,
    -                                    ACE_Event_Handler::READ_MASK);
    -#endif /* ACE_WIN32 */
    -}
    -
    -int
    -ACE_Event_Handler::remove_stdin_handler (ACE_Reactor *reactor,
    -					 ACE_Thread_Manager *thr_mgr)
    -{
    -#if defined (ACE_WIN32)
    -  ACE_UNUSED_ARG (reactor);
    -  ACE_UNUSED_ARG (thr_mgr);
    -
    -  // What should we do here?
    -  ACE_NOTSUP_RETURN (-1);
    -#else
    -  // Keep compilers happy.
    -  ACE_UNUSED_ARG (thr_mgr);
    -  return reactor->remove_handler (ACE_STDIN,
    -                                  ACE_Event_Handler::READ_MASK);
    -#endif /* ACE_WIN32 */
    -}
    -
    -#endif /* ACE_HAS_WINCE */
    -
    -ACE_Notification_Buffer::ACE_Notification_Buffer (void) 
    -{
    -  ACE_TRACE ("ACE_Notification_Buffer::ACE_Notification_Buffer");
    -}
    -
    -ACE_Notification_Buffer::ACE_Notification_Buffer (ACE_Event_Handler *eh,
    -						  ACE_Reactor_Mask mask)
    -  : eh_ (eh), 
    -    mask_ (mask)
    -{
    -  ACE_TRACE ("ACE_Notification_Buffer::ACE_Notification_Buffer");
    -}
    diff --git a/ace/Event_Handler.h b/ace/Event_Handler.h
    deleted file mode 100644
    index ba444e508d9..00000000000
    --- a/ace/Event_Handler.h
    +++ /dev/null
    @@ -1,193 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Event_Handler.h
    -//
    -// = AUTHOR
    -//    Douglas C. Schmidt 
    -//
    -// ============================================================================
    -
    -#ifndef ACE_EVENT_HANDLER_H
    -#define ACE_EVENT_HANDLER_H
    -
    -#include "ace/ACE.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -// Forward declaration.
    -class ACE_Message_Block;
    -class ACE_Reactor;
    -class ACE_Thread_Manager;
    -class ACE_Process;
    -
    -typedef u_long ACE_Reactor_Mask;
    -
    -class ACE_Export ACE_Event_Handler
    -{
    -  // = TITLE
    -  //     Provides an abstract interface for handling various types of
    -  //     I/O, timer, and signal events.
    -  //
    -  // = DESCRIPTION
    -  //       Subclasses read/write input/output on an I/O descriptor,
    -  //       handle an exception raised on an I/O descriptor, handle a
    -  //       timer's expiration, or handle a signal.
    -public:
    -  enum
    -  {
    -    LO_PRIORITY = 0,
    -    HI_PRIORITY = 10,
    -    NULL_MASK = 0,
    -#if defined (ACE_USE_POLL)
    -    READ_MASK = POLLIN,
    -    WRITE_MASK = POLLOUT,
    -    EXCEPT_MASK = POLLPRI,
    -#else /* USE SELECT */
    -    READ_MASK = (1 << 0),
    -    WRITE_MASK = (1 << 1),
    -    EXCEPT_MASK = (1 << 2),
    -#endif /* ACE_USE_POLL */
    -    ACCEPT_MASK = (1 << 3),
    -    CONNECT_MASK = (1 << 4),
    -    TIMER_MASK = (1 << 5),
    -    QOS_MASK = (1 << 6),
    -    GROUP_QOS_MASK = (1 << 7),
    -    SIGNAL_MASK = (1 << 8),
    -    ALL_EVENTS_MASK = READ_MASK |
    -                      WRITE_MASK |
    -                      EXCEPT_MASK |
    -                      ACCEPT_MASK |
    -                      CONNECT_MASK |
    -                      TIMER_MASK |
    -                      QOS_MASK |
    -                      GROUP_QOS_MASK |
    -                      SIGNAL_MASK,
    -    RWE_MASK = READ_MASK |
    -               WRITE_MASK |
    -               EXCEPT_MASK,
    -    DONT_CALL = (1 << 9)
    -  };
    -
    -  virtual ~ACE_Event_Handler (void);
    -  // Destructor is virtual to enable proper cleanup.
    -
    -  virtual ACE_HANDLE get_handle (void) const;
    -  // Get the I/O handle.
    -  virtual void set_handle (ACE_HANDLE);
    -  // Set the I/O handle.
    -
    -  // = Get/set priority
    -
    -  // Priorities run from MIN_PRIORITY (which is the "lowest priority")
    -  // to MAX_PRIORITY (which is the "highest priority").
    -  virtual int priority (void) const;
    -  // Get the priority of the Event_Handler.
    -  virtual void priority (int priority);
    -  // Set the priority of the Event_Handler.
    -
    -  virtual int handle_input (ACE_HANDLE fd = ACE_INVALID_HANDLE);
    -  // Called when input events occur (e.g., connection or data).
    -
    -  virtual int handle_output (ACE_HANDLE fd = ACE_INVALID_HANDLE);
    -  // Called when output events are possible (e.g., flow control
    -  // abates).
    -
    -  virtual int handle_exception (ACE_HANDLE fd = ACE_INVALID_HANDLE);
    -  // Called when execption events occur (e.g., SIGURG).
    -
    -  virtual int handle_timeout (const ACE_Time_Value &tv,
    -                              const void *arg = 0);
    -  // Called when timer expires.
    -
    -  virtual int handle_exit (ACE_Process *);
    -  // Called when a process exits.
    -
    -  virtual int handle_close (ACE_HANDLE handle,
    -                            ACE_Reactor_Mask close_mask);
    -  // Called when object is removed from the .
    -
    -  virtual int handle_signal (int signum, siginfo_t * = 0, ucontext_t * = 0);
    -  // Called when object is signaled by OS (either via UNIX signals or
    -  // when a Win32 object becomes signaled).
    -
    -  virtual int handle_qos (ACE_HANDLE = ACE_INVALID_HANDLE);
    -  virtual int handle_group_qos (ACE_HANDLE = ACE_INVALID_HANDLE);
    -
    -  // = Accessors to set/get the various event demultiplexors.
    -  virtual void reactor (ACE_Reactor *reactor);
    -  virtual ACE_Reactor *reactor (void) const;
    -
    -#if !defined (ACE_HAS_WINCE)
    -  static void *read_adapter (void *event_handler);
    -  // Used to read from non-socket ACE_HANDLEs in our own thread to
    -  // work around Win32 limitations that don't allow us to 'able on
    -  // Win32.
    -
    -  static int remove_stdin_handler (ACE_Reactor *reactor,
    -                                   ACE_Thread_Manager *thr_mgr);
    -  // Performs the inverse of the  method.
    -#endif /* ACE_HAS_WINCE */
    -
    -protected:
    -  ACE_Event_Handler (ACE_Reactor * = 0,
    -                     int priority = ACE_Event_Handler::LO_PRIORITY);
    -  // Force ACE_Event_Handler to be an abstract base class.
    -
    -private:
    -
    -  int priority_;
    -  // Priority of this Event_Handler.
    -
    -  // = Pointers to the various event demultiplexors.
    -  ACE_Reactor *reactor_;
    -};
    -
    -class ACE_Export ACE_Notification_Buffer
    -{
    -  // = TITLE
    -  //     Simple wrapper for passing s and
    -  //     s between threads.
    -public:
    -  ACE_Notification_Buffer (void);
    -
    -  ACE_Notification_Buffer (ACE_Event_Handler *eh,
    -                           ACE_Reactor_Mask mask);
    -
    -  ~ACE_Notification_Buffer (void);
    -  // Default dtor.
    -
    -  ACE_Event_Handler *eh_;
    -  // Pointer to the Event_Handler that will be dispatched
    -  // by the main event loop.
    -
    -  ACE_Reactor_Mask mask_;
    -  // Mask that indicates which method to call.
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Event_Handler.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_EVENT_HANDLER_H */
    diff --git a/ace/Event_Handler.i b/ace/Event_Handler.i
    deleted file mode 100644
    index 6ecccb4b1db..00000000000
    --- a/ace/Event_Handler.i
    +++ /dev/null
    @@ -1,10 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// Event_Handler.i
    -
    -ACE_INLINE
    -ACE_Notification_Buffer::~ACE_Notification_Buffer (void)
    -{
    -}
    -
    diff --git a/ace/Event_Handler_T.cpp b/ace/Event_Handler_T.cpp
    deleted file mode 100644
    index 7c02be558d6..00000000000
    --- a/ace/Event_Handler_T.cpp
    +++ /dev/null
    @@ -1,64 +0,0 @@
    -// Event_Handler_T.cpp
    -// $Id$
    -
    -#ifndef EVENT_HANDLER_T_C
    -#define EVENT_HANDLER_T_C
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Event_Handler_T.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -ACE_RCSID(ace, Event_Handler_T, "$Id$")
    -
    -#if defined (ACE_HAS_TEMPLATE_TYPEDEFS)
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/Event_Handler_T.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Event_Handler_T)
    -
    -template  void
    -ACE_Event_Handler_T::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::dump");
    -}
    -
    -template
    -ACE_Event_Handler_T::~ACE_Event_Handler_T (void)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::~ACE_Event_Handler_T");
    -  if (this->delete_handler_)
    -    delete this->op_handler_;
    -}
    -
    -template 
    -ACE_Event_Handler_T::ACE_Event_Handler_T (T *op_handler, int delete_handler,
    -                                             GET_HANDLE get_handle,
    -                                             IO_HANDLER input_h,
    -                                             CL_HANDLER close_h,
    -                                             SIG_HANDLER sig_h,
    -                                             TO_HANDLER timeout_h,
    -                                             IO_HANDLER output_h,
    -                                             SET_HANDLE set_handle,
    -                                             IO_HANDLER except_h)
    -  : op_handler_ (op_handler),
    -    input_handler_ (input_h),
    -    output_handler_ (output_h),
    -    except_handler_ (except_h),
    -    to_handler_ (timeout_h),
    -    cl_handler_ (close_h),
    -    sig_handler_ (sig_h),
    -    delete_handler_ (delete_handler),
    -    set_handle_ (set_handle),
    -    get_handle_ (get_handle)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::ACE_Event_Handler_T");
    -}
    -
    -#endif /* ACE_HAS_TEMPLATE_TYPEDEFS */
    -
    -#endif /* EVENT_HANDLER_T_C */
    diff --git a/ace/Event_Handler_T.h b/ace/Event_Handler_T.h
    deleted file mode 100644
    index 572337e5e36..00000000000
    --- a/ace/Event_Handler_T.h
    +++ /dev/null
    @@ -1,189 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Event_Handler_T.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_EVENT_HANDLER_T_H
    -#define ACE_EVENT_HANDLER_T_H
    -
    -#include "ace/Event_Handler.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#if defined (ACE_HAS_TEMPLATE_TYPEDEFS)
    -
    -template 
    -class ACE_Event_Handler_T : public ACE_Event_Handler
    -{
    -  // = TITLE
    -  //     Enable a class that doesn't inherit from the
    -  //     ACE_Event_Handler to be incorporated into the ACE_Reactor
    -  //     framework.  Thanks to Greg Lavender (g.lavender@isode.com)
    -  //     for sharing this idea.
    -  //
    -  // = DESCRIPTION
    -  //     It is sometimes the case that an application has a hierarchy
    -  //     of operation dispatcher classes that have their own
    -  //     inheritance hierarchy but also would like to integrate with
    -  //     the ACE_Reactor.  Rather than adopt a "mixin" approach, it is
    -  //     often cleaner to define a template as a subclass of
    -  //     ACE_Event_Handler and paramterize it with an operation
    -  //     dispatcher type.
    -  //
    -  //     When constructing an instantiation of the ACE_Event_Handler_T
    -  //     object, a set of pointers to member functions must be
    -  //     provided so that when one of the handle_* methods is called
    -  //     by the ACE_Reactor, the appropriate method is called on the
    -  //     underlying operations object.  This is done since in some
    -  //     cases it is useful to map any event that happens to the same
    -  //     method on an object.
    -  //
    -  //     The ACE_Event_Handler_T template is instantiated by an
    -  //     operations object and registered with the ACE_Reactor, and it
    -  //     then calls the appropriate op_handler.  So, it's basically
    -  //     just another level of indirection in event dispatching. The
    -  //     coupling betweent the ultimate handler of the event and the
    -  //     ACE_Event_Handler class is relaxed a bit by have this
    -  //     intermediate  object of type  around. The
    -  //     client object can then dynamically change the bindings for
    -  //     the various handlers so that during the life of one of the
    -  //     operation objects, it can change how it wants events to be
    -  //     handled. It just instantiates a new instance of the template
    -  //     with different bindings and reregisters this new object with
    -  //     the ACE_Reactor.
    -public:
    -  // = Typedefs to simplify pointer-to-member-function registration.
    -
    -  // Get/set the underlying handle.
    -  typedef ACE_HANDLE (T::*GET_HANDLE) (void) const;
    -  typedef void (T::*SET_HANDLE) (ACE_HANDLE);
    -
    -  typedef int (T::*IO_HANDLER) (ACE_HANDLE);
    -  // Handle I/O events.
    -
    -  typedef int (T::*TO_HANDLER) (const ACE_Time_Value &, const void *);
    -  // Handle timeout events.
    -
    -  typedef int (T::*CL_HANDLER) (ACE_HANDLE, ACE_Reactor_Mask);
    -  // Handle close events.
    -
    -  typedef int (T::*SIG_HANDLER) (ACE_HANDLE, siginfo_t*, ucontext_t*);
    -  // = Initialization and termination methods.
    -
    -  ACE_Event_Handler_T (T *op_handler,
    -                       int delete_handler,
    -                       GET_HANDLE get_handle = 0,
    -                       IO_HANDLER input = 0,
    -                       CL_HANDLER close = 0,
    -                       SIG_HANDLER sig = 0,
    -                       TO_HANDLER timeout = 0,
    -                       IO_HANDLER output = 0,
    -                       SET_HANDLE set_handle = 0,
    -                       IO_HANDLER except = 0);
    -  // Initialize the op_handler.
    -
    -  ~ACE_Event_Handler_T (void);
    -  // Close down and delete the 
    -
    -  // = Override all the ACE_Event_Handler methods.
    -
    -  // These methods all delegate down to the  operations handler.
    -  virtual ACE_HANDLE get_handle (void) const;
    -  virtual void set_handle (ACE_HANDLE);
    -  virtual int handle_input (ACE_HANDLE fd = -1);
    -  virtual int handle_output (ACE_HANDLE fd = -1);
    -  virtual int handle_exception (ACE_HANDLE fd = -1);
    -  virtual int handle_timeout (const ACE_Time_Value &tv, const void *arg = 0);
    -  virtual int handle_close (ACE_HANDLE fd, ACE_Reactor_Mask close_mask);
    -  virtual int handle_signal (ACE_HANDLE signum, siginfo_t * = 0, ucontext_t * = 0);
    -
    -  // = Get/set the operations handler.
    -  T *op_handler (void);
    -  void op_handler (T *);
    -
    -  // = Get/set the target pointer-to-method used for dispatching.
    -
    -  GET_HANDLE handle_get (void);
    -  void handle_get (GET_HANDLE);
    -
    -  SET_HANDLE handle_set (void);
    -  void handle_set (SET_HANDLE);
    -
    -  IO_HANDLER input_handler (void);
    -  void input_handler (IO_HANDLER);
    -
    -  IO_HANDLER output_handler (void);
    -  void output_handler (IO_HANDLER);
    -
    -  IO_HANDLER except_handler (void);
    -  void except_handler (IO_HANDLER);
    -
    -  TO_HANDLER to_handler (void);
    -  void to_handler (TO_HANDLER);
    -
    -  CL_HANDLER cl_handler (void);
    -  void cl_handler (CL_HANDLER);
    -
    -  SIG_HANDLER sig_handler (void);
    -  void sig_handler (SIG_HANDLER);
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  T *op_handler_;
    -  // Pointer to the object that handles all the delegated operations.
    -
    -  // = Handle input, output, and exception events.
    -  IO_HANDLER input_handler_;
    -  IO_HANDLER output_handler_;
    -  IO_HANDLER except_handler_;
    -
    -  TO_HANDLER to_handler_;
    -  // Handle timeout events.
    -
    -  CL_HANDLER cl_handler_;
    -  // Handle close events.
    -
    -  SIG_HANDLER sig_handler_;
    -  // Handle signal events.
    -
    -  int delete_handler_;
    -  // Keeps track of whether we need to delete the handler in the
    -  // destructor.
    -
    -  // = Get/set underlying handle.
    -  SET_HANDLE set_handle_;
    -  GET_HANDLE get_handle_;
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Event_Handler_T.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
    -#include "ace/Event_Handler_T.cpp"
    -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
    -#pragma implementation ("Event_Handler_T.cpp")
    -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
    -
    -#endif /* ACE_HAS_TEMPLATE_TYPEDEFS */
    -#endif /* ACE_EVENT_HANDLER_H */
    diff --git a/ace/Event_Handler_T.i b/ace/Event_Handler_T.i
    deleted file mode 100644
    index 4f2dc0374ae..00000000000
    --- a/ace/Event_Handler_T.i
    +++ /dev/null
    @@ -1,185 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -template ACE_INLINE void
    -ACE_Event_Handler_T::op_handler (T *op)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::op_handler");
    -  this->op_handler_ = op;
    -}
    -
    -template ACE_INLINE T *
    -ACE_Event_Handler_T::op_handler (void)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::op_handler");
    -  return this->op_handler_;
    -}
    -
    -template ACE_INLINE ACE_HANDLE
    -ACE_Event_Handler_T::get_handle (void) const
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::get_handle");
    -  return this->get_handle_ == 0 ? -1 : (this->op_handler_->*get_handle_) ();
    -}
    -
    -template ACE_INLINE void
    -ACE_Event_Handler_T::set_handle (ACE_HANDLE h)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::set_handle");
    -  if (this->set_handle_ != 0)
    -    (this->op_handler_->*set_handle_) (h);
    -}
    -
    -template ACE_INLINE int
    -ACE_Event_Handler_T::handle_input (ACE_HANDLE fd)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::handle_input");
    -  return this->input_handler_ == 0 ? 0 : (this->op_handler_->*input_handler_) (fd);
    -}
    -
    -template ACE_INLINE int
    -ACE_Event_Handler_T::handle_output (ACE_HANDLE fd)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::handle_output");
    -  return this->output_handler_ == 0 ? 0 : (this->op_handler_->*output_handler_) (fd);
    -}
    -
    -template ACE_INLINE int
    -ACE_Event_Handler_T::handle_exception (ACE_HANDLE fd)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::handle_exception");
    -  return this->except_handler_ == 0 ? 0 : (this->op_handler_->*except_handler_) (fd);
    -}
    -
    -template ACE_INLINE int
    -ACE_Event_Handler_T::handle_timeout (const ACE_Time_Value &tv, const void *arg)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::handle_timeout");
    -  return this->to_handler_ == 0 ? 0 : (this->op_handler_->*to_handler_) (tv, arg);
    -}
    -
    -template ACE_INLINE int
    -ACE_Event_Handler_T::handle_close (ACE_HANDLE fd, ACE_Reactor_Mask close_mask)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::handle_close");
    -  return this->cl_handler_ == 0 ? 0 : (this->op_handler_->*cl_handler_) (fd, close_mask);
    -}
    -
    -template ACE_INLINE int
    -ACE_Event_Handler_T::handle_signal (ACE_HANDLE signum, siginfo_t *s, ucontext_t *u)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::handle_signal");
    -  return this->sig_handler_ == 0 ? 0 : (this->op_handler_->*sig_handler_) (signum, s, u);
    -}
    -
    -template ACE_INLINE ACE_TYPENAME ACE_Event_Handler_T::GET_HANDLE
    -ACE_Event_Handler_T::handle_get (void)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::handle_get");
    -  return this->get_handle_;
    -}
    -
    -template ACE_INLINE void
    -ACE_Event_Handler_T::handle_get (ACE_TYPENAME ACE_Event_Handler_T::GET_HANDLE h)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::handle_get");
    -  this->get_handle_ = h;
    -}
    -
    -template ACE_INLINE ACE_TYPENAME ACE_Event_Handler_T::SET_HANDLE
    -ACE_Event_Handler_T::handle_set (void)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::handle_set");
    -  return this->set_handle_;
    -}
    -
    -template ACE_INLINE void
    -ACE_Event_Handler_T::handle_set (ACE_TYPENAME ACE_Event_Handler_T::SET_HANDLE h)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::handle_set");
    -  this->set_handle_ = h;
    -}
    -
    -template ACE_INLINE ACE_TYPENAME ACE_Event_Handler_T::IO_HANDLER
    -ACE_Event_Handler_T::input_handler (void)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::input_handler");
    -  return this->input_handler_;
    -}
    -
    -template ACE_INLINE void
    -ACE_Event_Handler_T::input_handler (ACE_TYPENAME ACE_Event_Handler_T::IO_HANDLER h)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::input_handler");
    -  this->input_handler_ = h;
    -}
    -
    -template ACE_INLINE ACE_TYPENAME ACE_Event_Handler_T::IO_HANDLER
    -ACE_Event_Handler_T::output_handler (void)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::output_handler");
    -  return this->output_handler_;
    -}
    -
    -template ACE_INLINE void
    -ACE_Event_Handler_T::output_handler (ACE_TYPENAME ACE_Event_Handler_T::IO_HANDLER h)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::output_handler");
    -  this->output_handler_ = h;
    -}
    -
    -template ACE_INLINE ACE_TYPENAME ACE_Event_Handler_T::IO_HANDLER
    -ACE_Event_Handler_T::except_handler (void)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::except_handler");
    -  return this->except_handler_;
    -}
    -
    -template ACE_INLINE void
    -ACE_Event_Handler_T::except_handler (ACE_TYPENAME ACE_Event_Handler_T::IO_HANDLER h)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::except_handler");
    -  this->except_handler_ = h;
    -}
    -
    -template ACE_INLINE ACE_TYPENAME ACE_Event_Handler_T::TO_HANDLER
    -ACE_Event_Handler_T::to_handler (void)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::to_handler");
    -  return this->to_handler_;
    -}
    -
    -template ACE_INLINE void
    -ACE_Event_Handler_T::to_handler (ACE_TYPENAME ACE_Event_Handler_T::TO_HANDLER h)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::to_handler");
    -  this->to_handler_ = h;
    -}
    -
    -template ACE_INLINE ACE_TYPENAME ACE_Event_Handler_T::CL_HANDLER
    -ACE_Event_Handler_T::cl_handler (void)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::cl_handler");
    -  return this->cl_handler_;
    -}
    -
    -template ACE_INLINE void
    -ACE_Event_Handler_T::cl_handler (ACE_TYPENAME ACE_Event_Handler_T::CL_HANDLER h)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::cl_handler");
    -  this->cl_handler_ = h;
    -}
    -
    -template ACE_INLINE ACE_TYPENAME ACE_Event_Handler_T::SIG_HANDLER
    -ACE_Event_Handler_T::sig_handler (void)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::sig_handler");
    -  return this->sig_handler_;
    -}
    -
    -template ACE_INLINE void
    -ACE_Event_Handler_T::sig_handler (ACE_TYPENAME ACE_Event_Handler_T::SIG_HANDLER h)
    -{
    -  ACE_TRACE ("ACE_Event_Handler_T::sig_handler");
    -  this->sig_handler_ = h;
    -}
    diff --git a/ace/FIFO.cpp b/ace/FIFO.cpp
    deleted file mode 100644
    index 6bca0a8d62e..00000000000
    --- a/ace/FIFO.cpp
    +++ /dev/null
    @@ -1,76 +0,0 @@
    -// FIFO.cpp
    -// $Id$
    -
    -/* -*- C++ -*- */
    -
    -#define ACE_BUILD_DLL
    -#include "ace/FIFO.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/FIFO.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, FIFO, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_FIFO)
    -
    -void
    -ACE_FIFO::dump (void) const
    -{
    -  ACE_TRACE ("ACE_FIFO::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("rendezvous_ = %s"), this->rendezvous_));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -int
    -ACE_FIFO::open (const ASYS_TCHAR *r, int flags, int perms,
    -                LPSECURITY_ATTRIBUTES sa)
    -{
    -  ACE_TRACE ("ACE_FIFO::open");
    -  ACE_OS::strncpy (this->rendezvous_, r, MAXPATHLEN);
    -
    -#if defined (ACE_PSOS_DIAB_MIPS)
    -  if ( ACE_OS::mkfifo (this->rendezvous_, perms) == -1
    -      && !(errno == EEXIST))
    -    return -1;
    -#else
    -  if ((flags & O_CREAT) != 0
    -      && ACE_OS::mkfifo (this->rendezvous_, perms) == -1
    -      && !(errno == EEXIST))
    -    return -1;
    -#endif
    -
    -  this->set_handle (ACE_OS::open (this->rendezvous_, flags, 0, sa));
    -  return this->get_handle () == ACE_INVALID_HANDLE ? -1 : 0;
    -}
    -
    -ACE_FIFO::ACE_FIFO (const ASYS_TCHAR *fifo_name,
    -		    int flags,
    -		    int perms,
    -                    LPSECURITY_ATTRIBUTES sa)
    -{
    -  ACE_TRACE ("ACE_FIFO::ACE_FIFO");
    -  if (this->open (fifo_name, flags, perms, sa) == -1)
    -    ACE_ERROR ((LM_ERROR,  ASYS_TEXT ("%p\n"),  ASYS_TEXT ("ACE_FIFO")));
    -}
    -
    -ACE_FIFO::ACE_FIFO (void)
    -{
    -//  ACE_TRACE ("ACE_FIFO::ACE_FIFO");
    -}
    -
    -int
    -ACE_FIFO::close (void)
    -{
    -  ACE_TRACE ("ACE_FIFO::close");
    -  int result = 0;
    -
    -  if (this->get_handle () != ACE_INVALID_HANDLE)
    -    {
    -      result = ACE_OS::close (this->get_handle ());
    -      this->set_handle (ACE_INVALID_HANDLE);
    -    }
    - return result;
    -}
    diff --git a/ace/FIFO.h b/ace/FIFO.h
    deleted file mode 100644
    index a671a1a50f6..00000000000
    --- a/ace/FIFO.h
    +++ /dev/null
    @@ -1,77 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    FIFO.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_FIFO_H
    -#define ACE_FIFO_H
    -
    -#include "ace/IPC_SAP.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -class ACE_Export ACE_FIFO : public ACE_IPC_SAP
    -{
    -  // = TITLE
    -  //    Abstract base class for UNIX FIFOs
    -  //
    -  // = DESCRIPTION
    -  //    UNIX FIFOs are also known Named Pipes, which are totally
    -  //    unrelated to Win32 Named Pipes.  If you want to use a local
    -  //    IPC mechanism that will be portable to both UNIX and Win32,
    -  //    take a look at the  classes.
    -public:
    -  int open (const ASYS_TCHAR *rendezvous, int flags, int perms,
    -            LPSECURITY_ATTRIBUTES sa = 0);
    -  // Open up the named pipe on the  in accordance with the
    -  // flags.
    -
    -  int close (void);
    -  // Close down the ACE_FIFO without removing the rendezvous point.
    -
    -  int remove (void);
    -  // Close down the ACE_FIFO and remove the rendezvous point from the
    -  // file system.
    -
    -  int get_local_addr (const ASYS_TCHAR *&rendezvous) const;
    -  // Return the local address of this endpoint.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  // = Make these protected to ensure that the class is "abstract."
    -  ACE_FIFO (void);
    -  // Default constructor.
    -
    -  ACE_FIFO (const ASYS_TCHAR *rendezvous, int flags, int perms,
    -            LPSECURITY_ATTRIBUTES sa = 0);
    -  // Open up the named pipe on the  in accordance with the
    -  // flags.
    -
    -private:
    -  ASYS_TCHAR rendezvous_[MAXPATHLEN + 1];
    -  // Rendezvous point in the file system.
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/FIFO.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_FIFO_H */
    diff --git a/ace/FIFO.i b/ace/FIFO.i
    deleted file mode 100644
    index 52f3555495a..00000000000
    --- a/ace/FIFO.i
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// FIFO.i
    -
    -ACE_INLINE int
    -ACE_FIFO::get_local_addr (const ASYS_TCHAR *&r) const
    -{
    -  ACE_TRACE ("ACE_FIFO::get_local_addr");
    -  r = this->rendezvous_;
    -  return 0;
    -}
    -
    -ACE_INLINE int
    -ACE_FIFO::remove (void)
    -{
    -  ACE_TRACE ("ACE_FIFO::remove");
    -  int result = this->close ();
    -  return ACE_OS::unlink (this->rendezvous_) == -1 || result == -1 ? -1 : 0;
    -}
    diff --git a/ace/FIFO_Recv.cpp b/ace/FIFO_Recv.cpp
    deleted file mode 100644
    index bbdb3bb6672..00000000000
    --- a/ace/FIFO_Recv.cpp
    +++ /dev/null
    @@ -1,84 +0,0 @@
    -// FIFO_Recv.cpp
    -// $Id$
    -
    -/* -*- C++ -*- */
    -
    -#define ACE_BUILD_DLL
    -#include "ace/FIFO_Recv.h"
    -
    -#if defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/FIFO_Recv.i"
    -#endif
    -
    -ACE_RCSID(ace, FIFO_Recv, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_FIFO_Recv)
    -
    -void
    -ACE_FIFO_Recv::dump (void) const
    -{
    -  ACE_TRACE ("ACE_FIFO_Recv::dump");
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_FIFO::dump ();
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("aux_handle_ = %d"), this->aux_handle_));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -int 
    -ACE_FIFO_Recv::close (void)
    -{
    -  ACE_TRACE ("ACE_FIFO_Recv::close");
    -  int result = ACE_FIFO::close ();
    -
    -  if (this->aux_handle_ != ACE_INVALID_HANDLE)
    -    return ACE_OS::close (this->aux_handle_);
    -  else
    -    return result;
    -}
    -
    -// Note that persistent means "open fifo for writing, as well as
    -// reading."  This ensures that the fifo never gets EOF, even if there
    -// aren't any writers at the moment!
    -
    -int
    -ACE_FIFO_Recv::open (const ASYS_TCHAR *fifo_name,
    -		     int flags,
    -		     int perms,
    -		     int persistent,
    -                     LPSECURITY_ATTRIBUTES sa)
    -{
    -  ACE_TRACE ("ACE_FIFO_Recv::open");
    -
    -  if (ACE_FIFO::open (fifo_name, ACE_NONBLOCK | flags, perms, sa) == -1)
    -    return -1;
    -  else if (this->disable (ACE_NONBLOCK) == -1)
    -    return -1;
    -  else if (persistent 
    -	   && (this->aux_handle_ = ACE_OS::open (fifo_name, O_WRONLY, 0, sa)) == ACE_INVALID_HANDLE)
    -    return -1;
    -  else
    -    return this->get_handle () == ACE_INVALID_HANDLE ? -1 : 0;
    -}
    -
    -ACE_FIFO_Recv::ACE_FIFO_Recv (void)
    -  : aux_handle_ (ACE_INVALID_HANDLE)
    -{
    -  ACE_TRACE ("ACE_FIFO_Recv::ACE_FIFO_Recv");
    -}
    -
    -ACE_FIFO_Recv::ACE_FIFO_Recv (const ASYS_TCHAR *fifo_name,
    -			      int flags,
    -			      int perms,
    -			      int persistent,
    -                              LPSECURITY_ATTRIBUTES sa)
    -  : aux_handle_ (ACE_INVALID_HANDLE)
    -{
    -  ACE_TRACE ("ACE_FIFO_Recv::ACE_FIFO_Recv");
    -
    -  if (this->ACE_FIFO_Recv::open (fifo_name,
    -				 flags,
    -				 perms,
    -				 persistent,
    -                                 sa) == -1)
    -    ACE_ERROR ((LM_ERROR,  ASYS_TEXT ("%p\n"),  ASYS_TEXT ("ACE_FIFO_Recv")));
    -}
    diff --git a/ace/FIFO_Recv.h b/ace/FIFO_Recv.h
    deleted file mode 100644
    index f5de468e91f..00000000000
    --- a/ace/FIFO_Recv.h
    +++ /dev/null
    @@ -1,74 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    FIFO_Recv.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_FIFO_RECV_H
    -#define ACE_FIFO_RECV_H
    -
    -#include "ace/FIFO.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -class ACE_Export ACE_FIFO_Recv : public ACE_FIFO
    -{
    -  // = TITLE
    -  //    Receiver side of the bytestream C++ wrapper for UNIX
    -  //    FIFOs.
    -public:
    -  // = Initialization methods.
    -  ACE_FIFO_Recv (void);
    -  // Default constructor.
    -
    -  ACE_FIFO_Recv (const ASYS_TCHAR *rendezvous,
    -                 int flags = O_CREAT | O_RDONLY,
    -                 int perms = ACE_DEFAULT_FILE_PERMS,
    -                 int persistent = 1,
    -                 LPSECURITY_ATTRIBUTES sa = 0);
    -  // Open up a bytestream named pipe for reading.
    -
    -  int open (const ASYS_TCHAR *rendezvous,
    -            int flags = O_CREAT | O_RDONLY,
    -            int perms = ACE_DEFAULT_FILE_PERMS,
    -            int persistent = 1,
    -            LPSECURITY_ATTRIBUTES sa = 0);
    -  // Open up a bytestream named pipe for reading.
    -
    -  int close (void);
    -  // Close down the named pipe.
    -
    -  ssize_t recv (void *buf, size_t len);
    -  // Recv  of up to  bytes.
    -
    -  ssize_t recv_n (void *buf, size_t len);
    -  // Recv  of exactly  bytes (block until done).
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  ACE_HANDLE aux_handle_;
    -  // Auxiliary handle that is used to implement persistent FIFOs.
    -};
    -
    -#if !defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/FIFO_Recv.i"
    -#endif
    -
    -#endif /* ACE_FIFO_RECV_H */
    diff --git a/ace/FIFO_Recv.i b/ace/FIFO_Recv.i
    deleted file mode 100644
    index 693b2a944fe..00000000000
    --- a/ace/FIFO_Recv.i
    +++ /dev/null
    @@ -1,18 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// FIFO_Recv.i
    -
    -ASYS_INLINE ssize_t
    -ACE_FIFO_Recv::recv (void *buf, size_t len)
    -{
    -  ACE_TRACE ("ACE_FIFO_Recv::recv");
    -  return ACE_OS::read (this->get_handle (), (char *) buf, len);
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE_FIFO_Recv::recv_n (void *buf, size_t n)
    -{
    -  ACE_TRACE ("ACE_FIFO_Recv::recv_n");
    -  return ACE::recv_n (this->get_handle (), buf, n);
    -}
    diff --git a/ace/FIFO_Recv_Msg.cpp b/ace/FIFO_Recv_Msg.cpp
    deleted file mode 100644
    index c4c9e2cf529..00000000000
    --- a/ace/FIFO_Recv_Msg.cpp
    +++ /dev/null
    @@ -1,63 +0,0 @@
    -// FIFO_Recv_Msg.cpp
    -// $Id$
    -
    -/* -*- C++ -*- */
    -
    -#define ACE_BUILD_DLL
    -#include "ace/FIFO_Recv_Msg.h"
    -
    -#if defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/FIFO_Recv_Msg.i"
    -#endif
    -
    -ACE_RCSID(ace, FIFO_Recv_Msg, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_FIFO_Recv_Msg)
    -
    -void
    -ACE_FIFO_Recv_Msg::dump (void) const
    -{
    -  ACE_TRACE ("ACE_FIFO_Recv_Msg::dump");
    -  ACE_FIFO_Recv::dump ();
    -}
    -
    -// Note that persistent means "open FIFO for writing, as well as
    -// reading."  This ensures that the FIFO never gets EOF, even if there
    -// aren't any writers at the moment!
    -
    -int
    -ACE_FIFO_Recv_Msg::open (const ASYS_TCHAR *fifo_name,
    -			 int flags,
    -			 int perms,
    -			 int persistent,
    -                         LPSECURITY_ATTRIBUTES sa)
    -{
    -  ACE_TRACE ("ACE_FIFO_Recv_Msg::open");
    -
    -  return ACE_FIFO_Recv::open (fifo_name,
    -			      flags,
    -			      perms,
    -			      persistent,
    -                              sa);
    -}
    -
    -ACE_FIFO_Recv_Msg::ACE_FIFO_Recv_Msg (void)
    -{
    -  ACE_TRACE ("ACE_FIFO_Recv_Msg::ACE_FIFO_Recv_Msg");
    -}
    -
    -ACE_FIFO_Recv_Msg::ACE_FIFO_Recv_Msg (const ASYS_TCHAR *fifo_name,
    -				      int flags,
    -				      int perms,
    -				      int persistent,
    -                                      LPSECURITY_ATTRIBUTES sa)
    -{
    -  ACE_TRACE ("ACE_FIFO_Recv_Msg::ACE_FIFO_Recv_Msg");
    -
    -  if (this->ACE_FIFO_Recv_Msg::open (fifo_name,
    -				     flags,
    -				     perms,
    -				     persistent,
    -                                     sa) == -1)
    -    ACE_ERROR ((LM_ERROR,  ASYS_TEXT ("%p\n"),  ASYS_TEXT ("ACE_FIFO_Recv_Msg")));
    -}
    diff --git a/ace/FIFO_Recv_Msg.h b/ace/FIFO_Recv_Msg.h
    deleted file mode 100644
    index 57a0697b5a2..00000000000
    --- a/ace/FIFO_Recv_Msg.h
    +++ /dev/null
    @@ -1,79 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    FIFO_Recv_Msg.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_FIFO_RECV_MSG_H
    -#define ACE_FIFO_RECV_MSG_H
    -
    -#include "ace/FIFO_Recv.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -class ACE_Export ACE_FIFO_Recv_Msg : public ACE_FIFO_Recv
    -{
    -  // = TITLE
    -  //     Receiver side for the record oriented C++ wrapper for UNIX FIFOs.
    -public:
    -  // = Initialization methods.
    -  ACE_FIFO_Recv_Msg (void);
    -  // Default constructor.
    -
    -  ACE_FIFO_Recv_Msg (const ASYS_TCHAR *rendezvous,
    -                     int flags = O_CREAT | O_RDONLY,
    -                     int perms = ACE_DEFAULT_FILE_PERMS,
    -                     int persistent = 1,
    -                     LPSECURITY_ATTRIBUTES sa = 0);
    -  // Open up a record-oriented named pipe for reading.
    -
    -  int open (const ASYS_TCHAR *rendezvous,
    -            int flags = O_CREAT | O_RDONLY,
    -            int perms = ACE_DEFAULT_FILE_PERMS,
    -            int persistent = 1,
    -            LPSECURITY_ATTRIBUTES sa = 0);
    -  // Open up a record-oriented named pipe for reading.
    -
    -  ssize_t recv (ACE_Str_Buf &msg);
    -  // Recv  as an ACE_Str_Buf.
    -
    -  ssize_t recv (void *buf, size_t len);
    -  // Recv  as a buffer.
    -
    -#if defined (ACE_HAS_STREAM_PIPES)
    -  ssize_t recv (ACE_Str_Buf *data,
    -                ACE_Str_Buf *cntl,
    -                int *flags);
    -  // Recv  and  message via Stream pipes.
    -
    -  ssize_t recv (int *band,
    -                ACE_Str_Buf *data,
    -                ACE_Str_Buf *cntl,
    -                int *flags);
    -  // Recv  and  message via Stream pipes in "band" mode.
    -#endif /* ACE_HAS_STREAM_PIPES */
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -};
    -
    -#if !defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/FIFO_Recv_Msg.i"
    -#endif
    -
    -#endif /* ACE_FIFO_RECV_MSG_H */
    diff --git a/ace/FIFO_Recv_Msg.i b/ace/FIFO_Recv_Msg.i
    deleted file mode 100644
    index dce1d06e29a..00000000000
    --- a/ace/FIFO_Recv_Msg.i
    +++ /dev/null
    @@ -1,67 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// FIFO_Recv_Msg.i
    -
    -// Note that the return values mean different things if
    -// ACE_HAS_STREAM_PIPES vs. if it doesn't...  See the manual page on
    -// getmsg(2) and read(2) for more details.
    -
    -ASYS_INLINE ssize_t
    -ACE_FIFO_Recv_Msg::recv (ACE_Str_Buf &recv_msg)
    -{
    -  ACE_TRACE ("ACE_FIFO_Recv_Msg::recv");
    -#if defined (ACE_HAS_STREAM_PIPES)
    -  int i = 0;
    -  return ACE_OS::getmsg (this->get_handle (),
    -			 (strbuf *) 0,
    -			 (strbuf *) &recv_msg,
    -			 &i);
    -#else /* Do the ol' 2-read trick... */
    -  if (ACE_OS::read (this->get_handle (), 
    -		    (char *) &recv_msg.len, 
    -		    sizeof recv_msg.len) != sizeof recv_msg.len)
    -    return -1;
    -  else
    -    return ACE_OS::read (this->get_handle (), 
    -			 (char *) recv_msg.buf, 
    -			 (int) recv_msg.len);	
    -#endif /* ACE_HAS_STREAM_PIPES */
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE_FIFO_Recv_Msg::recv (void *buf, size_t max_len)
    -{
    -  ACE_TRACE ("ACE_FIFO_Recv_Msg::recv");
    -  ACE_Str_Buf recv_msg ((char *) buf, 0, max_len);
    -
    -  return this->recv (recv_msg);
    -}
    -
    -#if defined (ACE_HAS_STREAM_PIPES)
    -ASYS_INLINE ssize_t
    -ACE_FIFO_Recv_Msg::recv (ACE_Str_Buf *data,
    -			 ACE_Str_Buf *cntl,
    -			 int *flags)
    -{
    -  ACE_TRACE ("ACE_FIFO_Recv_Msg::recv");
    -  return ACE_OS::getmsg (this->get_handle (), 
    -			 (strbuf *) cntl,
    -			 (strbuf *) data,
    -			 flags);
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE_FIFO_Recv_Msg::recv (int *band,
    -			 ACE_Str_Buf *data,
    -			 ACE_Str_Buf *cntl,
    -			 int *flags)
    -{
    -  ACE_TRACE ("ACE_FIFO_Recv_Msg::recv");
    -  return ACE_OS::getpmsg (this->get_handle (), 
    -			  (strbuf *) cntl,
    -			  (strbuf *) data,
    -			  band,
    -			  flags);
    -}
    -#endif /* ACE_HAS_STREAM_PIPES */
    diff --git a/ace/FIFO_Send.cpp b/ace/FIFO_Send.cpp
    deleted file mode 100644
    index 5906f6c8e69..00000000000
    --- a/ace/FIFO_Send.cpp
    +++ /dev/null
    @@ -1,55 +0,0 @@
    -// FIFO_Send.cpp
    -// $Id$
    -
    -/* -*- C++ -*- */
    -
    -#define ACE_BUILD_DLL
    -#include "ace/FIFO_Send.h"
    -
    -#if defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/FIFO_Send.i"
    -#endif
    -
    -ACE_RCSID(ace, FIFO_Send, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_FIFO_Send)
    -
    -void
    -ACE_FIFO_Send::dump (void) const
    -{
    -  ACE_TRACE ("ACE_FIFO_Send::dump");
    -  ACE_FIFO::dump ();
    -}
    -
    -ACE_FIFO_Send::ACE_FIFO_Send (void)
    -{
    -//  ACE_TRACE ("ACE_FIFO_Send::ACE_FIFO_Send");
    -}
    -
    -int
    -ACE_FIFO_Send::open (const ASYS_TCHAR *rendezvous_name,
    -                     int flags,
    -                     int perms,
    -                     LPSECURITY_ATTRIBUTES sa)
    -{
    -  ACE_TRACE ("ACE_FIFO_Send::open");
    -  return ACE_FIFO::open (rendezvous_name,
    -                         flags | O_WRONLY,
    -                         perms,
    -                         sa);
    -}
    -
    -ACE_FIFO_Send::ACE_FIFO_Send (const ASYS_TCHAR *fifo_name,
    -                              int flags,
    -                              int perms,
    -                              LPSECURITY_ATTRIBUTES sa)
    -{
    -  ACE_TRACE ("ACE_FIFO_Send::ACE_FIFO_Send");
    -  if (this->ACE_FIFO_Send::open (fifo_name,
    -                                 flags,
    -                                 perms,
    -                                 sa) == -1)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT ("%p\n"),
    -                ASYS_TEXT ("ACE_FIFO_Send::ACE_FIFO_Send")));
    -}
    diff --git a/ace/FIFO_Send.h b/ace/FIFO_Send.h
    deleted file mode 100644
    index 1a402f71746..00000000000
    --- a/ace/FIFO_Send.h
    +++ /dev/null
    @@ -1,64 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    FIFO_Send.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_FIFO_SEND_H
    -#define ACE_FIFO_SEND_H
    -
    -#include "ace/FIFO.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -class ACE_Export ACE_FIFO_Send : public ACE_FIFO
    -{
    -  // = TITLE
    -  //     Sender side for the bytestream C++ wrapper for UNIX FIFOs
    -public:
    -  // = Initialization methods.
    -  ACE_FIFO_Send (void);
    -  // Default constructor.
    -
    -  ACE_FIFO_Send (const ASYS_TCHAR *rendezvous,
    -                 int flags = O_WRONLY,
    -                 int perms = ACE_DEFAULT_FILE_PERMS,
    -                 LPSECURITY_ATTRIBUTES sa = 0);
    -  // Open up a bytestream named pipe for writing.
    -
    -  int open (const ASYS_TCHAR *rendezvous,
    -            int flags = O_WRONLY,
    -            int perms = ACE_DEFAULT_FILE_PERMS,
    -            LPSECURITY_ATTRIBUTES sa = 0);
    -  // Open up a bytestream named pipe for writing.
    -
    -  ssize_t send (const void *buf, size_t len);
    -  // Send  of up to  bytes.
    -
    -  ssize_t send_n (const void *buf, size_t len);
    -  // Send  of exactly  bytes (block until done).
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -};
    -
    -#if !defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/FIFO_Send.i"
    -#endif
    -
    -#endif /* ACE_FIFO_SEND_H */
    diff --git a/ace/FIFO_Send.i b/ace/FIFO_Send.i
    deleted file mode 100644
    index c7e20eae8d2..00000000000
    --- a/ace/FIFO_Send.i
    +++ /dev/null
    @@ -1,18 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// FIFO_Send.i
    -
    -ASYS_INLINE ssize_t
    -ACE_FIFO_Send::send (const void *buf, size_t len)
    -{
    -  ACE_TRACE ("ACE_FIFO_Send::send");
    -  return ACE_OS::write (this->get_handle (), (const char *) buf, len);	
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE_FIFO_Send::send_n (const void *buf, size_t n)
    -{
    -  ACE_TRACE ("ACE_FIFO_Send::send_n");
    -  return ACE::send_n (this->get_handle (), buf, n);
    -}
    diff --git a/ace/FIFO_Send_Msg.cpp b/ace/FIFO_Send_Msg.cpp
    deleted file mode 100644
    index 7691a16026c..00000000000
    --- a/ace/FIFO_Send_Msg.cpp
    +++ /dev/null
    @@ -1,69 +0,0 @@
    -// FIFO_Send_Msg.cpp
    -// $Id$
    -
    -/* -*- C++ -*- */
    -
    -#define ACE_BUILD_DLL
    -#include "ace/FIFO_Send_Msg.h"
    -
    -#if defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/FIFO_Send_Msg.i"
    -#endif
    -
    -ACE_RCSID(ace, FIFO_Send_Msg, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_FIFO_Send_Msg)
    -
    -void
    -ACE_FIFO_Send_Msg::dump (void) const
    -{
    -  ACE_TRACE ("ACE_FIFO_Send_Msg::dump");
    -  ACE_FIFO_Send::dump ();
    -}
    -
    -ssize_t
    -ACE_FIFO_Send_Msg::send (const ACE_Str_Buf &send_msg)
    -{
    -  // ACE_TRACE ("ACE_FIFO_Send_Msg::send");
    -#if defined (ACE_HAS_STREAM_PIPES)
    -  return ACE_OS::putmsg (this->get_handle (),
    -			 (strbuf *) 0,
    -			 (strbuf *) &send_msg,
    -			 0);
    -#else
    -  iovec iov[2];
    -
    -  iov[0].iov_base = (char *) &send_msg.len;
    -  iov[0].iov_len  = sizeof send_msg.len;
    -
    -  iov[1].iov_base = (char *) send_msg.buf;
    -  iov[1].iov_len  =  int (send_msg.len);
    -
    -  return ACE_OS::writev (this->get_handle (), iov, 2);
    -#endif /* ACE_HAS_STREAM_PIPES */
    -}
    -
    -ACE_FIFO_Send_Msg::ACE_FIFO_Send_Msg (void)
    -{
    -//  ACE_TRACE ("ACE_FIFO_Send_Msg::ACE_FIFO_Send_Msg");
    -}
    -
    -int
    -ACE_FIFO_Send_Msg::open (const ASYS_TCHAR *fifo_name,
    -			 int flags,
    -			 int perms,
    -                         LPSECURITY_ATTRIBUTES sa)
    -{
    -  ACE_TRACE ("ACE_FIFO_Send_Msg::open");
    -  return ACE_FIFO_Send::open (fifo_name, flags | O_WRONLY, perms, sa);
    -}
    -
    -ACE_FIFO_Send_Msg::ACE_FIFO_Send_Msg (const ASYS_TCHAR *fifo_name,
    -				      int flags,
    -				      int perms,
    -                                      LPSECURITY_ATTRIBUTES sa)
    -{
    -  ACE_TRACE ("ACE_FIFO_Send_Msg::ACE_FIFO_Send_Msg");
    -  if (this->ACE_FIFO_Send_Msg::open (fifo_name, flags, perms, sa) == -1)
    -    ACE_ERROR ((LM_ERROR,  ASYS_TEXT ("%p\n"),  ASYS_TEXT ("ACE_FIFO_Send_Msg")));
    -}
    diff --git a/ace/FIFO_Send_Msg.h b/ace/FIFO_Send_Msg.h
    deleted file mode 100644
    index 78b2f82ac4a..00000000000
    --- a/ace/FIFO_Send_Msg.h
    +++ /dev/null
    @@ -1,78 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    FIFO_Send_Msg.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_FIFO_SEND_MSG_H
    -#define ACE_FIFO_SEND_MSG_H
    -
    -#include "ace/FIFO_Send.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -class ACE_Export ACE_FIFO_Send_Msg : public ACE_FIFO_Send
    -{
    -  // = TITLE
    -  //     Sender side for the Record oriented C++ wrapper for UNIX
    -  //     FIFOs.
    -public:
    -  // = Initialization methods.
    -  ACE_FIFO_Send_Msg (void);
    -  // Default constructor.
    -
    -  ACE_FIFO_Send_Msg (const ASYS_TCHAR *rendezvous,
    -                     int flags = O_WRONLY,
    -                     int perms = ACE_DEFAULT_FILE_PERMS,
    -                     LPSECURITY_ATTRIBUTES sa = 0);
    -  // Open up a record-oriented named pipe for writing.
    -
    -  int open (const ASYS_TCHAR *rendezvous,
    -            int flags = O_WRONLY,
    -            int perms = ACE_DEFAULT_FILE_PERMS,
    -            LPSECURITY_ATTRIBUTES sa = 0);
    -  // Open up a record-oriented named pipe for writing.
    -
    -  ssize_t send (const ACE_Str_Buf &msg);
    -  // Send  of up to  bytes.
    -
    -  ssize_t send (const void *buf, size_t len);
    -  // Send  of exactly  bytes (block until done).
    -
    -#if defined (ACE_HAS_STREAM_PIPES)
    -  ssize_t send (const ACE_Str_Buf *data,
    -                const ACE_Str_Buf *cntl = 0,
    -                int flags = 0);
    -  // Send  and  message via Stream pipes.
    -
    -  ssize_t send (int band,
    -                const ACE_Str_Buf *data,
    -                const ACE_Str_Buf *cntl = 0,
    -                int flags = MSG_BAND);
    -  // Send  and  message via Stream pipes in "band" mode.
    -#endif /* ACE_HAS_STREAM_PIPES */
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -};
    -
    -#if !defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/FIFO_Send_Msg.i"
    -#endif
    -
    -#endif /* ACE_FIFO_SEND_MSG_H */
    diff --git a/ace/FIFO_Send_Msg.i b/ace/FIFO_Send_Msg.i
    deleted file mode 100644
    index e81484983c2..00000000000
    --- a/ace/FIFO_Send_Msg.i
    +++ /dev/null
    @@ -1,41 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// FIFO_Send_Msg.i
    -
    -ASYS_INLINE ssize_t
    -ACE_FIFO_Send_Msg::send (const void *buf, size_t len)
    -{
    -  ACE_TRACE ("ACE_FIFO_Send_Msg::send");
    -  ACE_Str_Buf send_msg ((char *) buf, len);
    -
    -  return this->send (send_msg);
    -}
    -
    -#if defined (ACE_HAS_STREAM_PIPES)
    -ASYS_INLINE ssize_t
    -ACE_FIFO_Send_Msg::send (const ACE_Str_Buf *data, 
    -			 const ACE_Str_Buf *cntl, 
    -			 int flags)
    -{
    -  ACE_TRACE ("ACE_FIFO_Send_Msg::send");
    -  return ACE_OS::putmsg (this->get_handle (), 
    -			 (strbuf *) cntl, 
    -			 (strbuf *) data, 
    -			 flags);
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE_FIFO_Send_Msg::send (int band, 
    -			 const ACE_Str_Buf *data, 
    -			 const ACE_Str_Buf *cntl, 
    -			 int flags)
    -{
    -  ACE_TRACE ("ACE_FIFO_Send_Msg::send");
    -  return ACE_OS::putpmsg (this->get_handle (), 
    -			  (strbuf *) cntl, 
    -			  (strbuf *) data, 
    -			  band, 
    -			  flags);
    -}
    -#endif /* ACE_HAS_STREAM_PIPES */
    diff --git a/ace/FILE.cpp b/ace/FILE.cpp
    deleted file mode 100644
    index c667526b73a..00000000000
    --- a/ace/FILE.cpp
    +++ /dev/null
    @@ -1,152 +0,0 @@
    -// FILE.cpp
    -// $Id$
    -
    -/* Defines the member functions for the base class of the ACE_IO_SAP
    -   ACE_FILE abstraction. */ 
    -
    -#define ACE_BUILD_DLL
    -#include "ace/FILE.h"
    -
    -#if defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/FILE.i"
    -#endif
    -
    -ACE_RCSID(ace, FILE, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_FILE)
    -
    -void
    -ACE_FILE::dump (void) const
    -{
    -  ACE_TRACE ("ACE_FILE::dump");
    -  ACE_IO_SAP::dump ();
    -}
    -
    -// This is the do-nothing constructor. 
    -
    -ACE_FILE::ACE_FILE (void)
    -{
    -  ACE_TRACE ("ACE_FILE::ACE_FILE");
    -}
    -
    -// Close the file
    -
    -int
    -ACE_FILE::close (void)
    -{
    -  ACE_TRACE ("ACE_FILE::close");
    -  int result = ACE_OS::close (this->get_handle ());
    -  this->set_handle (ACE_INVALID_HANDLE);
    -  return result;
    -}
    -
    -int
    -ACE_FILE::get_info (ACE_FILE_Info *finfo)
    -{
    -  ACE_TRACE ("ACE_FILE::get_info");
    -  struct stat filestatus;
    -
    -  int result = ACE_OS::fstat (this->get_handle (), 
    -                              &filestatus);
    -
    -  if (result == 0)
    -    {
    -      finfo->mode_ = filestatus.st_mode;
    -      finfo->nlink_ = filestatus.st_nlink;
    -      finfo->size_ = filestatus.st_size;
    -    }
    -
    -  return result;
    -}
    -
    -int
    -ACE_FILE::get_info (ACE_FILE_Info &finfo)
    -{
    -  ACE_TRACE ("ACE_FILE::get_info");
    -
    -  return this->get_info (&finfo);
    -}
    -
    -int
    -ACE_FILE::truncate (off_t length)
    -{
    -  ACE_TRACE ("ACE_FILE::truncate");
    -  return ACE_OS::ftruncate (this->get_handle(), length);
    -}
    -
    -off_t
    -ACE_FILE::seek (off_t offset, int startpos)
    -{
    -  return ACE_OS::lseek (this->get_handle (),
    -                        offset,
    -                        startpos);
    -}
    -
    -off_t
    -ACE_FILE::position (long offset, int startpos)
    -{
    -  ACE_TRACE ("ACE_FILE::position");
    -  return this->seek (offset, startpos);
    -}
    -
    -off_t
    -ACE_FILE::tell (void)
    -{
    -  ACE_TRACE ("ACE_FILE::position");
    -  return ACE_OS::lseek (this->get_handle (), 0, SEEK_CUR);
    -} 
    -
    -off_t
    -ACE_FILE::position (void)
    -{
    -  ACE_TRACE ("ACE_FILE::position");
    -  return this->tell ();
    -} 
    -
    -// Return the local endpoint address.
    -
    -int 
    -ACE_FILE::get_local_addr (ACE_Addr &addr) const
    -{
    -  ACE_TRACE ("ACE_FILE::get_local_addr");
    -
    -  // Perform the downcast since  had better be an
    -  // .
    -  ACE_FILE_Addr *file_addr =
    -    ACE_dynamic_cast (ACE_FILE_Addr *, &addr);
    -
    -  if (file_addr == 0)
    -    return -1;
    -  else
    -    {
    -      *file_addr = this->addr_;
    -      return 0;
    -    }
    -}
    -
    -// Return the same result as .
    -
    -int 
    -ACE_FILE::get_remote_addr (ACE_Addr &addr) const
    -{
    -  ACE_TRACE ("ACE_FILE::get_remote_addr");
    -
    -  return this->get_local_addr (addr);
    -}
    -
    -int
    -ACE_FILE::remove (void)
    -{
    -  ACE_TRACE ("ACE_FILE::remove");
    -
    -  this->close ();
    -  return ACE_OS::unlink (this->addr_.get_path_name ());
    -}
    -
    -int
    -ACE_FILE::unlink (void)
    -{
    -  ACE_TRACE ("ACE_FILE::unlink");
    -
    -  return ACE_OS::unlink (this->addr_.get_path_name ());
    -}
    diff --git a/ace/FILE.h b/ace/FILE.h
    deleted file mode 100644
    index 287c8e178f7..00000000000
    --- a/ace/FILE.h
    +++ /dev/null
    @@ -1,132 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    FILE.h
    -//
    -// = AUTHOR
    -//    Gerhard Lenzer
    -//
    -// ============================================================================
    -
    -#ifndef ACE_FILE_H
    -#define ACE_FILE_H
    -
    -#include "ace/IO_SAP.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/FILE_Addr.h"
    -
    -// The following is necessary since many C++ compilers don't support
    -// typedef'd types inside of classes used as formal template
    -// arguments... ;-(.  Luckily, using the C++ preprocessor I can hide
    -// most of this nastiness!
    -
    -#if defined (ACE_HAS_TEMPLATE_TYPEDEFS)
    -#define ACE_FILE_CONNECTOR ACE_FILE_Connector
    -#define ACE_FILE_STREAM ACE_FILE_IO
    -#else /* TEMPLATES are broken (must be a cfront-based compiler...) */
    -#define ACE_FILE_CONNECTOR ACE_FILE_Connector, ACE_FILE_Addr
    -#define ACE_FILE_STREAM ACE_FILE_IO, ACE_FILE_Addr
    -#endif /* ACE_TEMPLATE_TYPEDEFS */
    -
    -class ACE_Export ACE_FILE_Info
    -{
    -  // = TITLE
    -  //     Abstracts basic OS FILE information.
    -public:
    -  mode_t mode_;
    -  // mode of file
    -
    -  nlink_t nlink_;
    -  // no of links
    -
    -  off_t size_;
    -  // size of file
    -};
    -
    -class ACE_Export ACE_FILE : public ACE_IO_SAP
    -{
    -  // = TITLE
    -  //     Defines the core methods of the  abstraction.
    -public:
    -  int close (void);
    -  // Close the  handle without removing the  from
    -  // the file system.
    -  
    -  int remove (void);
    -  // Close and remove the  from the file system.
    -
    -  int unlink (void);
    -  // Remove the  from the file system without closing the
    -  //  handle.
    -
    -  int get_info (ACE_FILE_Info *finfo);
    -  // Get information on this .
    -
    -  int get_info (ACE_FILE_Info &finfo);
    -  // Get information on this .
    -
    -  int truncate (off_t length);
    -  // Set filesize to length byte.
    -
    -  off_t seek (off_t offset,
    -              int whence = SEEK_CUR);
    -  // Sets the file pointer as follows:
    -  //    o If  is , the pointer is set to 
    -  //      bytes.
    -  // 
    -  //    o  If  is , the pointer is set to its
    -  //       current location plus .
    -  //
    -  //    o  If  is , the pointer is set to the size
    -  //       of the file plus offset.
    -  off_t position (long offset, int startpos);
    -  // Same as , but  is deprecated.
    -
    -  off_t tell (void);
    -  // Return an offset for the file handle.
    -
    -  off_t position (void);
    -  // Same as , but  is deprecated.
    -
    -  int disable (int signum) const ;
    -  // Disable signal 
    -  // This is here to prevent Win32 from
    -  // disabling SPIPE using socket calls
    -
    -  int get_local_addr (ACE_Addr &) const;
    -  // Return the local endpoint address in the referenced .
    -  // Returns 0 if successful, else -1.
    -
    -  int get_remote_addr (ACE_Addr &) const;
    -  // Return the same thing as .
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  ACE_FILE (void);
    -  // Ensure that this class is only created by the
    -  // .
    -
    -  ACE_FILE_Addr addr_;
    -  // File we are "connected" with...
    -};
    -
    -#if !defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/FILE.i"
    -#endif /* ACE_LACKS_INLINE_FUNCTIONS */
    -
    -#endif /* ACE_FILE_H */
    diff --git a/ace/FILE.i b/ace/FILE.i
    deleted file mode 100644
    index cf1f4986479..00000000000
    --- a/ace/FILE.i
    +++ /dev/null
    @@ -1,16 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// FILE.i
    -
    -ASYS_INLINE int
    -ACE_FILE::disable (int signum) const
    -{
    -#if defined (ACE_WIN32)
    -  ACE_UNUSED_ARG (signum) ;
    -  return 0 ;
    -#else  /* ACE_WIN32 */
    -  return ACE_IO_SAP::disable (signum) ;
    -#endif /* ACE_WIN32 */
    -}
    -
    diff --git a/ace/FILE_Addr.cpp b/ace/FILE_Addr.cpp
    deleted file mode 100644
    index 17e90a1ed48..00000000000
    --- a/ace/FILE_Addr.cpp
    +++ /dev/null
    @@ -1,106 +0,0 @@
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/FILE_Addr.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/FILE_Addr.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, FILE_Addr, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_FILE_Addr)
    -
    -ACE_FILE_Addr::ACE_FILE_Addr (void)
    -  : ACE_Addr (AF_FILE, sizeof this->filename_)
    -{
    -  this->filename_[0] = '\0';
    -}
    -
    -int
    -ACE_FILE_Addr::set (const ACE_FILE_Addr &sa)
    -{
    -  if (sa.get_type () == AF_ANY)
    -    {
    -      // Create a temporary file.
    -      ACE_OS::strcpy (this->filename_,
    -                      ACE_DEFAULT_TEMP_FILE);
    -      ACE_OS::mktemp (this->filename_);
    -      this->base_set (AF_FILE,
    -                      ACE_OS::strlen (this->filename_) + 1);
    -    }
    -  else
    -    {
    -      (void) ACE_OS::strncpy (this->filename_,
    -                              sa.filename_,
    -                              sa.get_size ());
    -
    -      this->base_set (sa.get_type (),
    -                      sa.get_size ());
    -    }
    -  return 0;
    -}
    -
    -// Copy constructor.
    -
    -ACE_FILE_Addr::ACE_FILE_Addr (const ACE_FILE_Addr &sa)
    -  : ACE_Addr (AF_FILE, sizeof this->filename_)
    -{
    -  this->set (sa);
    -}
    -
    -int
    -ACE_FILE_Addr::set (LPCTSTR filename)
    -{
    -  this->ACE_Addr::base_set (AF_FILE,
    -                            ACE_OS::strlen (filename) + 1);
    -  (void) ACE_OS::strncpy (this->filename_,
    -                          filename,
    -                          sizeof this->filename_);
    -  return 0;
    -}
    -
    -ACE_FILE_Addr &
    -ACE_FILE_Addr::operator= (const ACE_FILE_Addr &sa)
    -{
    -  if (this != &sa)
    -    this->set (sa);
    -  return *this;
    -}
    -
    -// Create a ACE_Addr from a ACE_FILE pathname.
    -
    -ACE_FILE_Addr::ACE_FILE_Addr (LPCTSTR filename)
    -{
    -  this->set (filename);
    -}
    -
    -int
    -ACE_FILE_Addr::addr_to_string (char *s, size_t len) const
    -{
    -  ACE_OS::strncpy (s,
    -                   ACE_MULTIBYTE_STRING (this->filename_),
    -                   len);
    -  return 0;
    -}
    -
    -#if defined (UNICODE)
    -// Transform the current address into string format.
    -
    -int
    -ACE_FILE_Addr::addr_to_string (wchar_t * s, size_t len) const
    -{
    -  ACE_OS::strncpy (s, this->filename_, len);
    -  return 0;
    -}
    -#endif /* UNICODE */
    -
    -void
    -ACE_FILE_Addr::dump (void) const
    -{
    -  ACE_TRACE ("ACE_FILE_Addr::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("filename_ = %s"), this->filename_));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    diff --git a/ace/FILE_Addr.h b/ace/FILE_Addr.h
    deleted file mode 100644
    index 5fa6beaa6f0..00000000000
    --- a/ace/FILE_Addr.h
    +++ /dev/null
    @@ -1,88 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    FILE_Addr.h
    -//
    -// = AUTHOR
    -//    Douglas C. Schmidt 
    -//
    -// ============================================================================
    -
    -#ifndef ACE_FILE_ADDR_H
    -#define ACE_FILE_ADDR_H
    -
    -#include "ace/Addr.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/ACE.h"
    -
    -class ACE_Export ACE_FILE_Addr : public ACE_Addr
    -{
    -  // = TITLE
    -  //    Defines the FILE address family address format.
    -public:
    -  // = Initialization methods.
    -  ACE_FILE_Addr (void);
    -  // Default constructor.
    -
    -  ACE_FILE_Addr (const ACE_FILE_Addr &sa);
    -  // Copy constructor.
    -
    -  int set (const ACE_FILE_Addr &sa);
    -  // Acts like a copy constructor.  If  == ACE_Addr::sap_any then
    -  // create a temporary filename using .
    -
    -  ACE_FILE_Addr (LPCTSTR filename);
    -  // Create a ACE_FILE_Addr from a pathname.
    -
    -  int set (LPCTSTR filename);
    -  // Create a ACE_FILE_Addr from a pathname.
    -
    -  ACE_FILE_Addr &operator= (const ACE_FILE_Addr &);
    -  // Assignment operator.
    -
    -  virtual void *get_addr (void) const;
    -  // Return a pointer to the address.
    -
    -#if defined (UNICODE)
    -  virtual int addr_to_string (wchar_t *addr, size_t) const;
    -  // Transform the current address into string format.
    -#endif /* UNICODE */
    -
    -  virtual int addr_to_string (char *addr, size_t) const;
    -  // Transform the current address into string format.
    -
    -  int operator == (const ACE_FILE_Addr &SAP) const;
    -  // Compare two addresses for equality.
    -
    -  int operator != (const ACE_FILE_Addr &SAP) const;
    -  // Compare two addresses for inequality.
    -
    -  LPCTSTR get_path_name (void) const;
    -  // Return the path name used for the rendezvous point.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  TCHAR filename_[MAXNAMLEN + 1];
    -  // Name of the file.
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/FILE_Addr.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_FILE_ADDR_H */
    diff --git a/ace/FILE_Addr.i b/ace/FILE_Addr.i
    deleted file mode 100644
    index 6d23f13a41b..00000000000
    --- a/ace/FILE_Addr.i
    +++ /dev/null
    @@ -1,43 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// FILE_Addr.i
    -
    -// Do nothing constructor.
    -
    -// Transform the current address into string format.
    -
    -#include "ace/SString.h"
    -
    -// Return the address.
    -
    -ACE_INLINE void *
    -ACE_FILE_Addr::get_addr (void) const
    -{
    -  return (void *) &this->filename_;
    -}
    -
    -// Compare two addresses for equality.
    -
    -ACE_INLINE int
    -ACE_FILE_Addr::operator == (const ACE_FILE_Addr &sap) const
    -{
    -  return ACE_OS::strcmp (this->filename_, sap.filename_) == 0;
    -}
    -
    -// Compare two addresses for inequality.
    -
    -ACE_INLINE int
    -ACE_FILE_Addr::operator != (const ACE_FILE_Addr &sap) const
    -{
    -  return !((*this) == sap);	// This is lazy, of course... ;-)
    -}
    -
    -// Return the path name used for the rendezvous point.
    -
    -ACE_INLINE LPCTSTR
    -ACE_FILE_Addr::get_path_name (void) const
    -{
    -  return this->filename_;
    -}
    -
    diff --git a/ace/FILE_Connector.cpp b/ace/FILE_Connector.cpp
    deleted file mode 100644
    index 3b77d2538db..00000000000
    --- a/ace/FILE_Connector.cpp
    +++ /dev/null
    @@ -1,59 +0,0 @@
    -// FILE_Connector.cpp
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/FILE_Connector.h"
    -
    -#if defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/FILE_Connector.i"
    -#endif
    -
    -ACE_RCSID(ace, FILE_Connector, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_FILE_Connector)
    -
    -void
    -ACE_FILE_Connector::dump (void) const
    -{
    -  ACE_TRACE ("ACE_FILE_Connector::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("\n")));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -ACE_FILE_Connector::ACE_FILE_Connector (void)
    -{
    -  ACE_TRACE ("ACE_FILE_Connector::ACE_FILE_Connector");
    -}
    -
    -int
    -ACE_FILE_Connector::connect (ACE_FILE_IO &new_io,
    -			     const ACE_FILE_Addr &remote_sap,
    -			     ACE_Time_Value *timeout,
    -			     const ACE_Addr &,
    -			     int,
    -			     int flags,
    -			     int perms)
    -{
    -  ACE_TRACE ("ACE_FILE_Connector::connect");
    -  ACE_ASSERT (new_io.get_handle () == ACE_INVALID_HANDLE);
    -
    -  // Check to see if caller has requested that we create the filename.
    -  if (ACE_reinterpret_cast (const ACE_Addr &,
    -                            ACE_const_cast (ACE_FILE_Addr &, 
    -                                            remote_sap)) == ACE_Addr::sap_any)
    -    // Create a new temporary file.
    -    new_io.addr_ =
    -      ACE_FILE_Addr (ACE_sap_any_cast (ACE_FILE_Addr &)); // class copy.
    -  else
    -    new_io.addr_ = remote_sap; // class copy.
    -
    -  ACE_HANDLE handle = ACE::handle_timed_open (timeout, 
    -                                              new_io.addr_.get_path_name (),
    -                                              flags,
    -                                              perms);
    -  new_io.set_handle (handle);
    -  return handle == ACE_INVALID_HANDLE ? -1 : 0;
    -}
    -
    diff --git a/ace/FILE_Connector.h b/ace/FILE_Connector.h
    deleted file mode 100644
    index 6d8eb9b1333..00000000000
    --- a/ace/FILE_Connector.h
    +++ /dev/null
    @@ -1,97 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    FILE_Connector.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_FILE_CONNECTOR_H
    -#define ACE_FILE_CONNECTOR_H
    -
    -#include "ace/FILE_IO.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -class ACE_Export ACE_FILE_Connector
    -{
    -  // = TITLE
    -  //     Defines an active connection factory for the ACE_FILE wrappers.
    -public:
    -  // = Initialization methods.
    -  ACE_FILE_Connector (void);
    -  // Default constructor.
    -
    -  ACE_FILE_Connector (ACE_FILE_IO &new_io,
    -                      const ACE_FILE_Addr &remote_sap,
    -                      ACE_Time_Value *timeout = 0,
    -                      const ACE_Addr &local_sap = ACE_Addr::sap_any,
    -                      int reuse_addr = 0,
    -                      int flags = O_RDWR | O_CREAT,
    -                      int perms = ACE_DEFAULT_FILE_PERMS);
    -  // Actively ``connect'' and produce a   object
    -  // if things go well.  The  is the file that we are
    -  // trying to create/open.  If it's the default value of
    -  //  then the user is letting the OS create the
    -  // filename (via ).  The  is the amount of
    -  // time to wait to create/open the file.  If it's 0 then we block
    -  // indefinitely.  If *timeout == {0, 0} then the file is created
    -  // using non-blocking mode.  In this case, if the create/open can't
    -  // be done immediately the value of -1 is returned with .  If *timeout > {0, 0} then this is the amount of
    -  // time to wait before timing out.  If the time expires before the
    -  // connection is made .  The  and
    -  //  parameters are ignored.  The  and 
    -  // arguments are passed down to the  method.
    -
    -  int connect (ACE_FILE_IO &new_io,
    -               const ACE_FILE_Addr &remote_sap,
    -               ACE_Time_Value *timeout = 0,
    -               const ACE_Addr &local_sap = ACE_Addr::sap_any,
    -               int reuse_addr = 0,
    -               int flags = O_RDWR | O_CREAT,
    -               int perms = ACE_DEFAULT_FILE_PERMS);
    -  // Actively ``connect'' and produce a   object
    -  // if things go well.  The  is the file that we are
    -  // trying to create/open.  If it's the default value of
    -  //  then the user is letting the OS create the
    -  // filename (via ).  The  is the amount of
    -  // time to wait to create/open the file.  If it's 0 then we block
    -  // indefinitely.  If *timeout == {0, 0} then the file is created
    -  // using non-blocking mode.  In this case, if the create/open can't
    -  // be done immediately the value of -1 is returned with .  If *timeout > {0, 0} then this is the amount of
    -  // time to wait before timing out.  If the time expires before the
    -  // connection is made .  The  and
    -  //  parameters are ignored.  The  and 
    -  // arguments are passed down to the  method.
    -
    -  int reset_new_handle (ACE_HANDLE handle);
    -  // Resets any event associations on this handle
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -  // = Meta-type "trait" information.
    -  typedef ACE_FILE_Addr PEER_ADDR;
    -  typedef ACE_FILE_IO PEER_STREAM;
    -};
    -
    -#if !defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/FILE_Connector.i"
    -#endif
    -
    -#endif /* ACE_FILE_CONNECTOR_H */
    diff --git a/ace/FILE_Connector.i b/ace/FILE_Connector.i
    deleted file mode 100644
    index 608ce4a9bdc..00000000000
    --- a/ace/FILE_Connector.i
    +++ /dev/null
    @@ -1,33 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// FILE_Connector.i
    -
    -// Creates a Local ACE_FILE.
    -
    -ASYS_INLINE
    -ACE_FILE_Connector::ACE_FILE_Connector (ACE_FILE_IO &new_io,
    -					const ACE_FILE_Addr &remote_sap,
    -					ACE_Time_Value *timeout,
    -					const ACE_Addr &local_sap,
    -					int reuse_addr,
    -					int flags,
    -					int perms)
    -{
    -  ACE_TRACE ("ACE_FILE_Connector::ACE_FILE_Connector");
    -  if (this->connect (new_io, remote_sap, timeout, local_sap,
    -		     reuse_addr, flags, perms) == ACE_IO_SAP::INVALID_HANDLE
    -      && timeout != 0 && !(errno == EWOULDBLOCK || errno == ETIME))
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT ("address %s, %p\n"),
    -                remote_sap.get_path_name (),
    -                ASYS_TEXT ("ACE_FILE_IO")));
    -}
    -
    -ASYS_INLINE int
    -ACE_FILE_Connector::reset_new_handle (ACE_HANDLE handle)
    -{
    -  ACE_UNUSED_ARG (handle);
    -  // Nothing to do here since the handle is not a socket
    -  return 0;
    -}
    diff --git a/ace/FILE_IO.cpp b/ace/FILE_IO.cpp
    deleted file mode 100644
    index 353a8060672..00000000000
    --- a/ace/FILE_IO.cpp
    +++ /dev/null
    @@ -1,133 +0,0 @@
    -// FILE_IO.cpp
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/FILE_IO.h"
    -
    -#if defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/FILE_IO.i"
    -#endif
    -
    -ACE_RCSID(ace, FILE_IO, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_FILE_IO)
    -
    -void
    -ACE_FILE_IO::dump (void) const
    -{
    -  ACE_TRACE ("ACE_FILE_IO::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  this->addr_.dump ();
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -// Simple-minded do nothing constructor.
    -
    -ACE_FILE_IO::ACE_FILE_IO (void)
    -{
    -  ACE_TRACE ("ACE_FILE_IO::ACE_FILE_IO");
    -}
    -
    -// Send N char *ptrs and int lengths.  Note that the char *'s precede
    -// the ints (basically, an varargs version of writev).  The count N is
    -// the *total* number of trailing arguments, *not* a couple of the
    -// number of tuple pairs!
    -
    -ssize_t
    -ACE_FILE_IO::send (size_t n, ...) const
    -{
    -  ACE_TRACE ("ACE_FILE_IO::send");
    -  va_list argp;  
    -  size_t  total_tuples = n / 2;
    -  iovec *iovp;
    -#if defined (ACE_HAS_ALLOCA)
    -  iovp = (iovec *) alloca (total_tuples * sizeof (iovec));
    -#else
    -  ACE_NEW_RETURN (iovp,
    -                  iovec[total_tuples],
    -                  -1);
    -#endif /* !defined (ACE_HAS_ALLOCA) */
    -
    -  va_start (argp, n);
    -
    -  for (size_t i = 0; i < total_tuples; i++)
    -    {
    -      iovp[i].iov_base = va_arg (argp, char *);
    -      iovp[i].iov_len  = va_arg (argp, int);
    -    }
    -
    -  ssize_t result = ACE_OS::writev (this->get_handle (), 
    -                                   iovp,
    -                                   total_tuples);
    -#if !defined (ACE_HAS_ALLOCA)
    -  delete [] iovp;
    -#endif /* !defined (ACE_HAS_ALLOCA) */
    -  va_end (argp);
    -  return result;
    -}
    -
    -// This is basically an interface to ACE_OS::readv, that doesn't use
    -// the struct iovec explicitly.  The ... can be passed as an arbitrary
    -// number of (char *ptr, int len) tuples.  However, the count N is the
    -// *total* number of trailing arguments, *not* a couple of the number
    -// of tuple pairs!
    -
    -ssize_t
    -ACE_FILE_IO::recv (size_t n, ...) const
    -{
    -  ACE_TRACE ("ACE_FILE_IO::recv");
    -  va_list argp;  
    -  size_t total_tuples = n / 2;
    -  iovec *iovp;
    -#if defined (ACE_HAS_ALLOCA)
    -  iovp = (iovec *) alloca (total_tuples * sizeof (iovec));
    -#else
    -  ACE_NEW_RETURN (iovp,
    -                  iovec[total_tuples],
    -                  -1);
    -#endif /* !defined (ACE_HAS_ALLOCA) */
    -
    -  va_start (argp, n);
    -
    -  for (size_t i = 0; i < total_tuples; i++)
    -    {
    -      iovp[i].iov_base = va_arg (argp, char *);
    -      iovp[i].iov_len  = va_arg (argp, int);
    -    }
    -
    -  ssize_t result = ACE_OS::readv (this->get_handle (),
    -                                  iovp, 
    -                                  total_tuples);
    -#if !defined (ACE_HAS_ALLOCA)
    -  delete [] iovp;
    -#endif /* !defined (ACE_HAS_ALLOCA) */
    -  va_end (argp);
    -  return result;
    -}
    -
    -// Allows a client to read from a file without having to provide a
    -// buffer to read.  This method determines how much data is in the
    -// file, allocates a buffer of this size, reads in the data, and
    -// returns the number of bytes read.
    -
    -ssize_t
    -ACE_FILE_IO::recvv (iovec *io_vec)
    -{
    -  ACE_TRACE ("ACE_FILE_IO::recvv");
    -
    -  io_vec->iov_base = 0;
    -  long length = ACE_OS::filesize (this->get_handle ());
    -
    -  if (length > 0)
    -    {
    -      ACE_NEW_RETURN (io_vec->iov_base,
    -                      char[length],
    -                      -1);
    -      io_vec->iov_len = this->recv_n (io_vec->iov_base,
    -                                      length);
    -      return io_vec->iov_len;
    -    }
    -  else
    -    return length;
    -}
    diff --git a/ace/FILE_IO.h b/ace/FILE_IO.h
    deleted file mode 100644
    index 808bb76f730..00000000000
    --- a/ace/FILE_IO.h
    +++ /dev/null
    @@ -1,140 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    FILE_IO.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_FILE_IO_H
    -#define ACE_FILE_IO_H
    -
    -#include "ace/FILE.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/FILE_Addr.h"
    -
    -class ACE_Export ACE_FILE_IO : public ACE_FILE
    -{
    -  // = TITLE
    -  //     Read/Write operations on Files
    -public:
    -  friend class ACE_FILE_Connector;
    -
    -  // = Initialization method.
    -  ACE_FILE_IO (void);
    -  // Default constructor.
    -
    -  ssize_t send (const void *buf, size_t n) const;
    -  // send upto  bytes in .
    -
    -  ssize_t recv (void *buf, size_t n) const;
    -  // Recv upto  bytes in .
    -
    -  ssize_t send_n (const void *buf, size_t n) const;
    -  // Send n bytes, keep trying until n are sent.
    -
    -  ssize_t recv_n (void *buf, size_t n) const;
    -  // Recv n bytes, keep trying until n are received.
    -
    -#if defined (ACE_HAS_STREAM_PIPES)
    -  ssize_t send (const ACE_Str_Buf *cntl,
    -                const ACE_Str_Buf *data,
    -                int flags = 0) const;
    -  // Send bytes via STREAM pipes.
    -
    -  ssize_t recv (ACE_Str_Buf *cntl,
    -                ACE_Str_Buf *data,
    -                int *flags) const;
    -  // Recv bytes via STREAM pipes.
    -
    -  ssize_t send (const ACE_Str_Buf *cntl,
    -                const ACE_Str_Buf *data,
    -                int band,
    -                int flags) const;
    -  // Send bytes via STREAM pipes using "band" mode.
    -
    -  ssize_t recv (ACE_Str_Buf *cntl,
    -                ACE_Str_Buf *data,
    -                int *band,
    -                int *flags) const;
    -  // Recv bytes via STREAM pipes using "band" mode.
    -
    -#endif /* ACE_HAS_STREAM_PIPES */
    -
    -  ssize_t send (const iovec iov[], size_t n) const;
    -  // Send iovecs via <::writev>.
    -
    -  ssize_t recv (iovec iov[], size_t n) const;
    -  // Recv iovecs via <::readv>.
    -
    -  ssize_t send (size_t n, ...) const;
    -  // Send N char *ptrs and int lengths.  Note that the char *'s
    -  // precede the ints (basically, an varargs version of writev).  The
    -  // count N is the *total* number of trailing arguments, *not* a
    -  // couple of the number of tuple pairs!
    -
    -  ssize_t recv (size_t n, ...) const;
    -  // This is an interface to ::readv, that doesn't use the struct
    -  // iovec explicitly.  The ... can be passed as an arbitrary number
    -  // of (char *ptr, int len) tuples.  However, the count N is the
    -  // *total* number of trailing arguments, *not* a couple of the
    -  // number of tuple pairs!
    -
    -  ssize_t send (const void *buf,
    -                size_t n,
    -                ACE_OVERLAPPED *overlapped) const;
    -  // Send  bytes via Win32 WriteFile using overlapped I/O.
    -
    -  ssize_t recv (void *buf,
    -                size_t n,
    -                ACE_OVERLAPPED *overlapped) const;
    -  // Recv  bytes via Win32 ReadFile using overlapped I/O.
    -
    -  ssize_t sendv (const iovec iov[],
    -                 size_t n) const;
    -  // Send an  of size  to the file.
    -
    -  ssize_t recvv (iovec *io_vec);
    -  // Allows a client to read from a file without having to provide a
    -  // buffer to read.  This method determines how much data is in the
    -  // file, allocates a buffer of this size, reads in the data, and
    -  // returns the number of bytes read.  The caller is responsible for
    -  // deleting the member in the  field of  using
    -  // delete [] io_vec->iov_base.
    -
    -  ssize_t sendv_n (const iovec iov[],
    -                   size_t n) const;
    -  // Send an  of size  to the file.  Will block until all
    -  // bytes are sent or an error occurs.
    -
    -  ssize_t recvv_n (iovec iov[],
    -                   size_t n) const;
    -  // Receive an  of size  to the file.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -  // = Meta-type info
    -  typedef ACE_FILE_Addr PEER_ADDR;
    -};
    -
    -#if !defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/FILE_IO.i"
    -#endif
    -
    -#endif /* ACE_FILE_IO_H */
    diff --git a/ace/FILE_IO.i b/ace/FILE_IO.i
    deleted file mode 100644
    index ab5956c468c..00000000000
    --- a/ace/FILE_IO.i
    +++ /dev/null
    @@ -1,133 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// FILE_IO.i
    -
    -ASYS_INLINE ssize_t
    -ACE_FILE_IO::sendv_n (const iovec iov[], size_t n) const
    -{
    -  ACE_TRACE ("ACE_FILE_IO::sendv_n");
    -  return ACE::writev_n (this->get_handle (),
    -                        iov,
    -                        n);
    -}
    -
    -// Recv an n byte message from the file.
    -
    -ASYS_INLINE ssize_t
    -ACE_FILE_IO::recvv_n (iovec iov[], size_t n) const
    -{
    -  ACE_TRACE ("ACE_FILE_IO::recvv_n");
    -  // @@ Carlos, can you please update this to call the
    -  // new ACE::recvv_n() method that you write?
    -  return ACE_OS::readv (this->get_handle (),
    -                        iov,
    -                        n);
    -}
    -
    -// Send an  of size  to the file.
    -
    -ASYS_INLINE ssize_t
    -ACE_FILE_IO::sendv (const iovec iov[], size_t n) const
    -{
    -  ACE_TRACE ("ACE_FILE_IO::sendv");
    -  return ACE_OS::writev (this->get_handle (), iov, n);
    -}
    -
    -// Send exactly N bytes from BUF to this file.  Keeping trying until
    -// this many bytes are sent.
    -
    -ASYS_INLINE ssize_t
    -ACE_FILE_IO::send_n (const void *buf, size_t n) const
    -{
    -  ACE_TRACE ("ACE_FILE_IO::send_n");
    -  return ACE::write_n (this->get_handle (), buf, n);
    -}
    -
    -// Receive exactly N bytes from this file into BUF.  Keep trying until
    -// this many bytes are received.
    -
    -ASYS_INLINE ssize_t
    -ACE_FILE_IO::recv_n (void *buf, size_t n) const
    -{
    -  ACE_TRACE ("ACE_FILE_IO::recv_n");
    -  return ACE::read_n (this->get_handle (), buf, n);
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE_FILE_IO::send (const void *buf, size_t n) const
    -{
    -  ACE_TRACE ("ACE_FILE_IO::send");
    -  return ACE_OS::write (this->get_handle (), (const char *) buf, n);
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE_FILE_IO::recv (void *buf, size_t n) const
    -{
    -  ACE_TRACE ("ACE_FILE_IO::recv");
    -  return ACE_OS::read (this->get_handle (), (char *) buf, n);
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE_FILE_IO::send (const iovec iov[], size_t n) const
    -{
    -  ACE_TRACE ("ACE_FILE_IO::send");
    -  return ACE_OS::writev (this->get_handle (), iov, n);
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE_FILE_IO::recv (iovec iov[], size_t n) const
    -{
    -  ACE_TRACE ("ACE_FILE_IO::recv");
    -  return ACE_OS::readv (this->get_handle (), iov, n);
    -}
    -
    -#if defined (ACE_HAS_STREAM_PIPES)
    -ASYS_INLINE ssize_t
    -ACE_FILE_IO::recv (ACE_Str_Buf *cntl, ACE_Str_Buf *data, int *band, int *flags) const
    -{
    -  ACE_TRACE ("ACE_FILE_IO::recv");
    -  return ACE_OS::getpmsg (this->get_handle (), (strbuf *) cntl, (strbuf *) data, band, flags);
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE_FILE_IO::send (const ACE_Str_Buf *cntl, const ACE_Str_Buf *data, int band, int flags) const
    -{
    -  ACE_TRACE ("ACE_FILE_IO::send");
    -  return ACE_OS::putpmsg (this->get_handle (), (strbuf *) cntl, (strbuf *) data, band, flags);
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE_FILE_IO::recv (ACE_Str_Buf *cntl, ACE_Str_Buf *data, int *flags) const
    -{
    -  ACE_TRACE ("ACE_FILE_IO::recv");
    -  return ACE_OS::getmsg (this->get_handle (), (strbuf *) cntl, (strbuf *) data, flags);
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE_FILE_IO::send (const ACE_Str_Buf *cntl, const ACE_Str_Buf *data, int flags) const
    -{
    -  ACE_TRACE ("ACE_FILE_IO::send");
    -  return ACE_OS::putmsg (this->get_handle (), (strbuf *) cntl, (strbuf *) data, flags);
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE_FILE_IO::send (const void *buf, size_t n,
    -		       ACE_OVERLAPPED *overlapped) const
    -{
    -  ACE_TRACE ("ACE_FILE_IO::send");
    -  return ACE_OS::write (this->get_handle (), 
    -			(const char *) buf, n,
    -			overlapped);
    -}
    -
    -ASYS_INLINE ssize_t
    -ACE_FILE_IO::recv (void *buf, size_t n,
    -		       ACE_OVERLAPPED *overlapped) const
    -{
    -  ACE_TRACE ("ACE_FILE_IO::recv");
    -  return ACE_OS::read (this->get_handle (), (char *) buf, n,
    -		       overlapped);
    -}
    -
    -#endif /* ACE_HAS_STREAM_PIPES */
    diff --git a/ace/Filecache.cpp b/ace/Filecache.cpp
    deleted file mode 100644
    index 98abef3f90e..00000000000
    --- a/ace/Filecache.cpp
    +++ /dev/null
    @@ -1,750 +0,0 @@
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -
    -#include "ace/Filecache.h"
    -#include "ace/Object_Manager.h"
    -
    -ACE_RCSID(ace, Filecache, "$Id$")
    -
    -#if defined (__BORLANDC__) //VSB
    -// Third parameter will be ignored in ACE_OS::open
    -static const int R_MASK = 0;
    -static const int W_MASK = 0;
    -#else
    -static const int R_MASK = S_IRUSR|S_IRGRP|S_IROTH;
    -static const int W_MASK = S_IRUSR|S_IRGRP|S_IROTH|S_IWUSR|S_IWGRP|S_IWOTH;
    -#endif /* __BORLANDC__ */
    -
    -#if defined (ACE_WIN32)
    -// See if you can get rid of some of these.
    -static const int READ_FLAGS = (FILE_FLAG_SEQUENTIAL_SCAN |
    -                               FILE_FLAG_OVERLAPPED |
    -                               O_RDONLY);
    -// static const int RCOPY_FLAGS = (FILE_FLAG_SEQUENTIAL_SCAN |
    -//                                 O_RDONLY);
    -static const int WRITE_FLAGS = (FILE_FLAG_SEQUENTIAL_SCAN |
    -                                FILE_FLAG_OVERLAPPED |
    -                                O_RDWR | O_CREAT | O_TRUNC);
    -// static const int WCOPY_FLAGS = (FILE_FLAG_SEQUENTIAL_SCAN |
    -//                                 O_RDWR | O_CREAT | O_TRUNC);
    -#else
    -static const int READ_FLAGS = O_RDONLY;
    -// static const int RCOPY_FLAGS = O_RDONLY;
    -static const int WRITE_FLAGS = O_RDWR | O_CREAT | O_TRUNC;
    -// static const int WCOPY_FLAGS = O_RDWR | O_CREAT | O_TRUNC;
    -#endif /* ACE_WIN32 */
    -
    -// static data members
    -ACE_Filecache *ACE_Filecache::cvf_ = 0;
    -
    -void
    -ACE_Filecache_Handle::init (void)
    -{
    -  this->file_ = 0;
    -  this->handle_ = ACE_INVALID_HANDLE;
    -}
    -
    -ACE_Filecache_Handle::ACE_Filecache_Handle (void)
    -  : file_ (0), handle_ (0), mapit_ (0)
    -{
    -  this->init ();
    -}
    -
    -ACE_Filecache_Handle::ACE_Filecache_Handle (const char *filename,
    -                                            ACE_Filecache_Flag mapit)
    -  : file_ (0), handle_ (0), mapit_ (mapit)
    -{
    -  this->init ();
    -  // Fetch the file from the Virtual_Filesystem let the
    -  // Virtual_Filesystem do the work of cache coherency.
    -
    -  // Filecache will also do the acquire, since it holds the lock at
    -  // that time.
    -  this->file_ = ACE_Filecache::instance ()->fetch (filename, mapit);
    -}
    -
    -ACE_Filecache_Handle::ACE_Filecache_Handle (const char *filename,
    -                                            int size,
    -                                            ACE_Filecache_Flag mapit)
    -  : file_ (0), handle_ (0), mapit_ (mapit)
    -{
    -  this->init ();
    -  // Since this is being opened for a write, simply create a new
    -  // ACE_Filecache_Object now, and let the destructor add it into CVF
    -  // later
    -
    -  // Filecache will also do the acquire, since it holds the lock at
    -  // that time.
    -  this->file_ = ACE_Filecache::instance ()->create (filename, size);
    -}
    -
    -ACE_Filecache_Handle::~ACE_Filecache_Handle (void)
    -{
    -  if (this->handle_ != ACE_INVALID_HANDLE)
    -    // this was dup ()'d
    -    ACE_OS::close (this->handle_);
    -
    -  ACE_Filecache::instance ()->finish (this->file_);
    -}
    -
    -void *
    -ACE_Filecache_Handle::address (void) const
    -{
    -  return this->file_ == 0 ? 0 : this->file_->address ();
    -}
    -
    -ACE_HANDLE
    -ACE_Filecache_Handle::handle (void) const
    -{
    -  if (this->handle_ == ACE_INVALID_HANDLE && this->file_ != 0)
    -    {
    -      ACE_Filecache_Handle *mutable_this =
    -        (ACE_Filecache_Handle *) this;
    -      mutable_this->handle_ = ACE_OS::dup (this->file_->handle ());
    -    }
    -  return this->handle_;
    -}
    -
    -int
    -ACE_Filecache_Handle::error (void) const
    -{
    -  if (this->file_ == 0)
    -    return -1;
    -  else
    -    return this->file_->error ();
    -}
    -
    -size_t
    -ACE_Filecache_Handle::size (void) const
    -{
    -  if (this->file_ == 0)
    -    return (size_t) -1;
    -  else
    -    return this->file_->size ();
    -}
    -
    -// ------------------
    -// ACE_Filecache_Hash
    -// ------------------
    -
    -#if defined (ACE_HAS_TEMPLATE_SPECIALIZATION)
    -
    -#define ACE_Filecache_Hash \
    -        ACE_Hash_Map_Manager
    -#define ACE_Filecache_Hash_Entry \
    -        ACE_Hash_Map_Entry
    -
    -ACE_TEMPLATE_SPECIALIZATION
    -ACE_Filecache_Hash_Entry::ACE_Hash_Map_Entry (const char *const &ext_id,
    -                                              ACE_Filecache_Object *const &int_id,
    -                                              ACE_Filecache_Hash_Entry *next,
    -                                              ACE_Filecache_Hash_Entry *prev)
    -  : ext_id_ (ext_id ? ACE_OS::strdup (ext_id) : ACE_OS::strdup ("")),
    -    int_id_ (int_id),
    -    next_ (next),
    -    prev_ (prev)
    -{
    -}
    -
    -ACE_TEMPLATE_SPECIALIZATION
    -ACE_Filecache_Hash_Entry::ACE_Hash_Map_Entry (ACE_Filecache_Hash_Entry *next,
    -                                              ACE_Filecache_Hash_Entry *prev)
    -  : ext_id_ (0),
    -    next_ (next),
    -    prev_ (prev)
    -{
    -}
    -
    -ACE_TEMPLATE_SPECIALIZATION
    -ACE_Filecache_Hash_Entry::~ACE_Hash_Map_Entry (void)
    -{
    -  ACE_OS::free ((void *) ext_id_);
    -}
    -
    -// We need these template specializations since KEY is defined as a
    -// char*, which doesn't have a hash() or equal() method defined on it.
    -
    -ACE_TEMPLATE_SPECIALIZATION
    -unsigned long
    -ACE_Filecache_Hash::hash (const char *const &ext_id)
    -{
    -  return ACE::hash_pjw (ext_id);
    -}
    -
    -ACE_TEMPLATE_SPECIALIZATION
    -int
    -ACE_Filecache_Hash::equal (const char *const &id1, const char *const &id2)
    -{
    -  return ACE_OS::strcmp (id1, id2) == 0;
    -}
    -
    -#undef ACE_Filecache_Hash
    -#undef ACE_Filecache_Hash_Entry
    -
    -#endif /* ACE_HAS_TEMPLATE_SPECIALIZATION */
    -
    -
    -// -------------
    -// ACE_Filecache
    -// -------------
    -
    -ACE_Filecache *
    -ACE_Filecache::instance (void)
    -{
    -  // Double check locking pattern.
    -  if (ACE_Filecache::cvf_ == 0)
    -    {
    -      ACE_SYNCH_RW_MUTEX &lock =
    -        *ACE_Managed_Object::get_preallocated_object
    -          (ACE_Object_Manager::ACE_FILECACHE_LOCK);
    -      ACE_GUARD_RETURN (ACE_SYNCH_RW_MUTEX, ace_mon, lock, 0);
    -
    -      // @@ James, please check each of the ACE_NEW_RETURN calls to
    -      // make sure that it is safe to return if allocation fails.
    -      if (ACE_Filecache::cvf_ == 0)
    -        ACE_NEW_RETURN (ACE_Filecache::cvf_,
    -                        ACE_Filecache,
    -                        0);
    -    }
    -
    -  return ACE_Filecache::cvf_;
    -}
    -
    -ACE_Filecache::ACE_Filecache (void)
    -  : size_ (ACE_DEFAULT_VIRTUAL_FILESYSTEM_TABLE_SIZE),
    -    hash_ (this->size_)
    -{
    -}
    -
    -ACE_Filecache::~ACE_Filecache (void)
    -{
    -}
    -
    -ACE_Filecache_Object *
    -ACE_Filecache::insert_i (const char *filename,
    -                         ACE_SYNCH_RW_MUTEX &filelock,
    -                         int mapit)
    -{
    -  ACE_Filecache_Object *handle = 0;
    -
    -  if (this->hash_.find (filename, handle) == -1)
    -    {
    -      ACE_NEW_RETURN (handle,
    -                      ACE_Filecache_Object (filename, filelock, 0, mapit),
    -                      0);
    -
    -      ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("   (%t) CVF: creating %s\n"), filename));
    -
    -      if (this->hash_.bind (filename, handle) == -1)
    -        {
    -          delete handle;
    -          handle = 0;
    -        }
    -    }
    -  else
    -    handle = 0;
    -
    -  return handle;
    -}
    -
    -ACE_Filecache_Object *
    -ACE_Filecache::remove_i (const char *filename)
    -{
    -  ACE_Filecache_Object *handle = 0;
    -
    -  // Disassociate file from the cache.
    -  if (this->hash_.unbind (filename, handle) == 0)
    -    {
    -      handle->stale_ = 1;
    -
    -      // Try a lock.  If it succeds, we can delete it now.
    -      // Otherwise, it will clean itself up later.
    -      if (handle->lock_.tryacquire_write () == 0)
    -        {
    -          delete handle;
    -          handle = 0;
    -        }
    -    }
    -  else
    -    handle = 0;
    -
    -  return handle;
    -}
    -
    -ACE_Filecache_Object *
    -ACE_Filecache::update_i (const char *filename,
    -                         ACE_SYNCH_RW_MUTEX &filelock,
    -                         int mapit)
    -{
    -  ACE_Filecache_Object *handle = 0;
    -
    -  handle = this->remove_i (filename);
    -  handle = this->insert_i (filename, filelock, mapit);
    -
    -  return handle;
    -}
    -
    -int
    -ACE_Filecache::find (const char *filename)
    -{
    -  return this->hash_.find (filename);
    -}
    -
    -
    -ACE_Filecache_Object *
    -ACE_Filecache::fetch (const char *filename, int mapit)
    -{
    -  ACE_Filecache_Object *handle = 0;
    -
    -  u_long loc = ACE::hash_pjw (filename) % this->size_;
    -  ACE_SYNCH_RW_MUTEX &hashlock = this->hash_lock_[loc];
    -  ACE_SYNCH_RW_MUTEX &filelock = this->file_lock_[loc];
    -
    -  filelock.acquire_read ();
    -
    -  if (this->hash_.find (filename, handle) == -1)
    -    {
    -      ACE_WRITE_GUARD_RETURN (ACE_SYNCH_RW_MUTEX,
    -                              ace_mon,
    -                              hashlock,
    -                              0);
    -
    -      // Second check in the method call
    -      handle = this->insert_i (filename, filelock, mapit);
    -
    -      if (handle == 0)
    -        filelock.release ();
    -    }
    -  else
    -    {
    -      if (handle->update ())
    -        {
    -          {
    -            // Double check locking pattern
    -            ACE_WRITE_GUARD_RETURN (ACE_SYNCH_RW_MUTEX,
    -                                    ace_mon,
    -                                    hashlock,
    -                                    0);
    -
    -            // Second check in the method call
    -            handle = this->update_i (filename, filelock, mapit);
    -
    -            if (handle == 0)
    -              filelock.release ();
    -          }
    -        }
    -      ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("   (%t) CVF: found %s\n"), filename));
    -    }
    -
    -  return handle;
    -}
    -
    -ACE_Filecache_Object *
    -ACE_Filecache::create (const char *filename, int size)
    -{
    -  ACE_Filecache_Object *handle = 0;
    -
    -  u_long loc = ACE::hash_pjw (filename) % this->size_;
    -  ACE_SYNCH_RW_MUTEX &filelock = this->file_lock_[loc];
    -
    -  ACE_NEW_RETURN (handle,
    -                  ACE_Filecache_Object (filename, size, filelock),
    -                  0);
    -  handle->acquire ();
    -
    -  return handle;
    -}
    -
    -ACE_Filecache_Object *
    -ACE_Filecache::finish (ACE_Filecache_Object *&file)
    -{
    -  if (file == 0)
    -    return file;
    -
    -  u_long loc = ACE::hash_pjw (file->filename_) % this->size_;
    -  ACE_SYNCH_RW_MUTEX &hashlock = this->hash_lock_[loc];
    -
    -  if (file != 0)
    -    switch (file->action_)
    -      {
    -      case ACE_Filecache_Object::ACE_WRITING:
    -        {
    -          ACE_WRITE_GUARD_RETURN (ACE_SYNCH_RW_MUTEX,
    -                                  ace_mon,
    -                                  hashlock,
    -                                  0);
    -
    -          file->release ();
    -
    -          this->remove_i ((char *) file->filename_);
    -#if 0
    -          int result = this->hash_.bind (file->filename (), file);
    -
    -          if (result == 0)
    -            file->acquire ();
    -#else
    -        // Last one using a stale file is resposible for deleting it.
    -        if (file->stale_)
    -          {
    -            // Try a lock.  If it succeds, we can delete it now.
    -            // Otherwise, it will clean itself up later.
    -            if (file->lock_.tryacquire_write () == 0)
    -              {
    -                delete file;
    -                file = 0;
    -              }
    -          }
    -#endif
    -        }
    -
    -        break;
    -      default:
    -        file->release ();
    -
    -        // Last one using a stale file is resposible for deleting it.
    -        if (file->stale_)
    -          {
    -            // Try a lock.  If it succeds, we can delete it now.
    -            // Otherwise, it will clean itself up later.
    -            if (file->lock_.tryacquire_write () == 0)
    -              {
    -                delete file;
    -                file = 0;
    -              }
    -          }
    -
    -        break;
    -      }
    -
    -  return file;
    -}
    -
    -void
    -ACE_Filecache_Object::init (void)
    -{
    -  this->filename_[0] = '\0';
    -  this->handle_ = ACE_INVALID_HANDLE;
    -  this->error_ = ACE_SUCCESS;
    -  this->tempname_ = 0;
    -  this->size_ = 0;
    -
    -  ACE_OS::memset (&(this->stat_), 0, sizeof (this->stat_));
    -}
    -
    -ACE_Filecache_Object::ACE_Filecache_Object (void)
    -  : tempname_ (0),
    -    mmap_ (),
    -    handle_ (0),
    -    // stat_ (),
    -    size_ (0),
    -    action_ (0),
    -    error_ (0),
    -    stale_ (0),
    -    // sa_ (),
    -    junklock_ (),
    -    lock_ (junklock_)
    -{
    -  this->init ();
    -}
    -
    -ACE_Filecache_Object::ACE_Filecache_Object (const char *filename,
    -                                            ACE_SYNCH_RW_MUTEX &lock,
    -                                            LPSECURITY_ATTRIBUTES sa,
    -                                            int mapit)
    -  : tempname_ (0),
    -    mmap_ (),
    -    handle_ (0),
    -    // stat_ (),
    -    size_ (0),
    -    action_ (0),
    -    error_ (0),
    -    stale_ (0),
    -    sa_ (sa),
    -    junklock_ (),
    -    lock_ (lock)
    -{
    -  this->init ();
    -
    -  // ASSERT strlen(filename) < sizeof (this->filename_)
    -  ACE_OS::strcpy (this->filename_, filename);
    -  this->action_ = ACE_Filecache_Object::ACE_READING;
    -  // place ourselves into the READING state
    -
    -  // Can we access the file?
    -  if (ACE_OS::access (this->filename_, R_OK) == -1)
    -    {
    -      this->error_i (ACE_Filecache_Object::ACE_ACCESS_FAILED);
    -      return;
    -    }
    -
    -  // Can we stat the file?
    -  if (ACE_OS::stat (this->filename_, &this->stat_) == -1)
    -    {
    -      this->error_i (ACE_Filecache_Object::ACE_STAT_FAILED);
    -      return;
    -    }
    -
    -  this->size_ = this->stat_.st_size;
    -  this->tempname_ = (char *) this->filename_;
    -
    -  // Can we open the file?
    -  this->handle_ = ACE_OS::open (this->tempname_,
    -                                READ_FLAGS, R_MASK, this->sa_);
    -  if (this->handle_ == ACE_INVALID_HANDLE)
    -    {
    -      this->error_i (ACE_Filecache_Object::ACE_OPEN_FAILED,
    -                     "ACE_Filecache_Object::ctor: open");
    -      return;
    -    }
    -
    -  if (mapit)
    -    {
    -      // Can we map the file?
    -      if (this->mmap_.map (this->handle_, -1,
    -                           PROT_READ, ACE_MAP_PRIVATE, 0, 0, this->sa_) != 0)
    -        {
    -          this->error_i (ACE_Filecache_Object::ACE_MEMMAP_FAILED,
    -                         "ACE_Filecache_Object::ctor: map");
    -          ACE_OS::close (this->handle_);
    -          this->handle_ = ACE_INVALID_HANDLE;
    -          return;
    -        }
    -    }
    -
    -   // Ok, finished!
    -   this->action_ = ACE_Filecache_Object::ACE_READING;
    -}
    -
    -ACE_Filecache_Object::ACE_Filecache_Object (const char *filename,
    -                                            int size,
    -                                            ACE_SYNCH_RW_MUTEX &lock,
    -                                            LPSECURITY_ATTRIBUTES sa)
    -  : stale_ (0),
    -    sa_ (sa),
    -    lock_ (lock)
    -{
    -  this->init ();
    -
    -  this->size_ = size;
    -  ACE_OS::strcpy (this->filename_, filename);
    -  this->action_ = ACE_Filecache_Object::ACE_WRITING;
    -
    -  // Can we access the file?
    -  if (ACE_OS::access (this->filename_, R_OK|W_OK) == -1
    -      // Does it exist?
    -      && ACE_OS::access (this->filename_, F_OK) != -1)
    -    {
    -      // File exists, but we cannot access it.
    -      this->error_i (ACE_Filecache_Object::ACE_ACCESS_FAILED);
    -      return;
    -    }
    -
    -  this->tempname_ = this->filename_;
    -
    -  // Can we open the file?
    -  this->handle_ = ACE_OS::open (this->tempname_, WRITE_FLAGS, W_MASK, this->sa_);
    -  if (this->handle_ == ACE_INVALID_HANDLE)
    -    {
    -      this->error_i (ACE_Filecache_Object::ACE_OPEN_FAILED,
    -                     "ACE_Filecache_Object::acquire: open");
    -      return;
    -    }
    -
    -  // Can we write?
    -  if (ACE_OS::pwrite (this->handle_, "", 1, this->size_ - 1) != 1)
    -    {
    -      this->error_i (ACE_Filecache_Object::ACE_WRITE_FAILED,
    -                     "ACE_Filecache_Object::acquire: write");
    -      ACE_OS::close (this->handle_);
    -      return;
    -    }
    -
    -  // Can we map?
    -  if (this->mmap_.map (this->handle_, this->size_, PROT_RDWR, MAP_SHARED,
    -                       0, 0, this->sa_) != 0)
    -    {
    -      this->error_i (ACE_Filecache_Object::ACE_MEMMAP_FAILED,
    -                     "ACE_Filecache_Object::acquire: map");
    -      ACE_OS::close (this->handle_);
    -    }
    -
    -  // Ok, done!
    -}
    -
    -ACE_Filecache_Object::~ACE_Filecache_Object (void)
    -{
    -  if (this->error_ == ACE_SUCCESS)
    -    {
    -      this->mmap_.unmap ();
    -      ACE_OS::close (this->handle_);
    -      this->handle_ = ACE_INVALID_HANDLE;
    -    }
    -}
    -
    -int
    -ACE_Filecache_Object::acquire (void)
    -{
    -  return this->lock_.tryacquire_read ();
    -}
    -
    -int
    -ACE_Filecache_Object::release (void)
    -{
    -  if (this->action_ == ACE_WRITING)
    -    {
    -      // We are safe since only one thread has a writable Filecache_Object
    -
    -#if 0
    -      ACE_HANDLE original = ACE_OS::open (this->filename_, WRITE_FLAGS, W_MASK,
    -                                          this->sa_);
    -      if (original == ACE_INVALID_HANDLE)
    -        this->error_ = ACE_Filecache_Object::ACE_OPEN_FAILED;
    -      else if (ACE_OS::write (original, this->mmap_.addr (),
    -                              this->size_) == -1)
    -        {
    -          this->error_ = ACE_Filecache_Object::ACE_WRITE_FAILED;
    -          ACE_OS::close (original);
    -          ACE_OS::unlink (this->filename_);
    -        }
    -      else if (ACE_OS::stat (this->filename_, &this->stat_) == -1)
    -        this->error_ = ACE_Filecache_Object::ACE_STAT_FAILED;
    -#endif
    -
    -      this->mmap_.unmap ();
    -      ACE_OS::close (this->handle_);
    -      this->handle_ = ACE_INVALID_HANDLE;
    -
    -#if 0
    -      // Leave the file in an acquirable state.
    -      this->handle_ = ACE_OS::open (this->tempname_, READ_FLAGS, R_MASK);
    -      if (this->handle_ == ACE_INVALID_HANDLE)
    -        {
    -          this->error_i (ACE_Filecache_Object::ACE_OPEN_FAILED,
    -                         "ACE_Filecache_Object::acquire: open");
    -        }
    -      else if (this->mmap_.map (this->handle_, -1,
    -                                PROT_READ,
    -                                ACE_MAP_PRIVATE,
    -                                0,
    -                                0,
    -                                this->sa_) != 0)
    -        {
    -          this->error_i (ACE_Filecache_Object::ACE_MEMMAP_FAILED,
    -                         "ACE_Filecache_Object::acquire: map");
    -          ACE_OS::close (this->handle_);
    -          this->handle_ = ACE_INVALID_HANDLE;
    -        }
    -
    -      this->action_ = ACE_Filecache_Object::ACE_READING;
    -#endif
    -    }
    -
    -  return this->lock_.release ();
    -}
    -
    -int
    -ACE_Filecache_Object::error (void) const
    -{
    -  // The existence of the object means a read lock is being held.
    -  return this->error_;
    -}
    -
    -int
    -ACE_Filecache_Object::error_i (int error_value, const char *s)
    -{
    -  s = s;
    -  ACE_ERROR ((LM_ERROR, ASYS_TEXT ("%p.\n"), s));
    -  this->error_ = error_value;
    -  return error_value;
    -}
    -
    -const char *
    -ACE_Filecache_Object::filename (void) const
    -{
    -  // The existence of the object means a read lock is being held.
    -  return this->filename_;
    -}
    -
    -size_t
    -ACE_Filecache_Object::size (void) const
    -{
    -  // The existence of the object means a read lock is being held.
    -  return this->size_;
    -}
    -
    -ACE_HANDLE
    -ACE_Filecache_Object::handle (void) const
    -{
    -  // The existence of the object means a read lock is being held.
    -  return this->handle_;
    -}
    -
    -void *
    -ACE_Filecache_Object::address (void) const
    -{
    -  // The existence of the object means a read lock is being held.
    -  return this->mmap_.addr ();
    -}
    -
    -int
    -ACE_Filecache_Object::update (void) const
    -{
    -  // The existence of the object means a read lock is being held.
    -  int result;
    -  struct stat statbuf;
    -
    -  if (ACE_OS::stat (this->filename_, &statbuf) == -1)
    -    result = 1;
    -  else
    -    // non-portable code may follow
    -    result = ACE_OS::difftime (this->stat_.st_mtime, statbuf.st_mtime) < 0;
    -
    -  return result;
    -}
    -
    -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
    -#if defined (ACE_HAS_TEMPLATE_SPECIALIZATION)
    -template class ACE_Hash_Map_Entry;
    -template class ACE_Hash_Map_Manager;
    -template class ACE_Hash_Map_Iterator;
    -template class ACE_Hash_Map_Reverse_Iterator;
    -template class ACE_Hash_Map_Manager_Ex, ACE_Equal_To, ACE_Null_Mutex>;
    -template class ACE_Hash_Map_Iterator_Base_Ex, ACE_Equal_To, ACE_Null_Mutex>;
    -template class ACE_Hash_Map_Iterator_Ex, ACE_Equal_To, ACE_Null_Mutex>;
    -template class ACE_Hash_Map_Reverse_Iterator_Ex, ACE_Equal_To, ACE_Null_Mutex>;
    -#else
    -template class ACE_Hash_Map_Entry;
    -template class ACE_Hash;
    -template class ACE_Equal_To;
    -template class ACE_Hash_Map_Manager;
    -template class ACE_Hash_Map_Iterator;
    -template class ACE_Hash_Map_Reverse_Iterator;
    -template class ACE_Hash_Map_Manager_Ex, ACE_Equal_To, ACE_Null_Mutex>;
    -template class ACE_Hash_Map_Iterator_Base_Ex, ACE_Equal_To, ACE_Null_Mutex>;
    -template class ACE_Hash_Map_Iterator_Ex, ACE_Equal_To, ACE_Null_Mutex>;
    -template class ACE_Hash_Map_Reverse_Iterator_Ex, ACE_Equal_To, ACE_Null_Mutex>;
    -#endif /* ACE_HAS_TEMPLATE_SPECIALIZATION */
    -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
    -#if defined (ACE_HAS_TEMPLATE_SPECIALIZATION)
    -#pragma instantiate ACE_Hash_Map_Entry
    -#pragma instantiate ACE_Hash_Map_Manager
    -#pragma instantiate ACE_Hash_Map_Iterator
    -#pragma instantiate ACE_Hash_Map_Reverse_Iterator
    -#pragma instantiate ACE_Hash_Map_Manager_Ex, ACE_Equal_To, ACE_Null_Mutex>
    -#pragma instantiate ACE_Hash_Map_Iterator_Base_Ex, ACE_Equal_To, ACE_Null_Mutex>
    -#pragma instantiate ACE_Hash_Map_Iterator_Ex, ACE_Equal_To, ACE_Null_Mutex>
    -#pragma instantiate ACE_Hash_Map_Reverse_Iterator_Ex, ACE_Equal_To, ACE_Null_Mutex>
    -#else
    -#pragma instantiate ACE_Hash_Map_Entry
    -#pragma instantiate ACE_Hash
    -#pragma instantiate ACE_Equal_To
    -#pragma instantiate ACE_Hash_Map_Manager
    -#pragma instantiate ACE_Hash_Map_Iterator
    -#pragma instantiate ACE_Hash_Map_Reverse_Iterator
    -#pragma instantiate ACE_Hash_Map_Manager_Ex, ACE_Equal_To, ACE_Null_Mutex>
    -#pragma instantiate ACE_Hash_Map_Iterator_Base_Ex, ACE_Equal_To, ACE_Null_Mutex>
    -#pragma instantiate ACE_Hash_Map_Iterator_Ex, ACE_Equal_To, ACE_Null_Mutex>
    -#pragma instantiate ACE_Hash_Map_Reverse_Iterator_Ex, ACE_Equal_To, ACE_Null_Mutex>
    -#endif /* ACE_HAS_TEMPLATE_SPECIALIZATION */
    -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
    diff --git a/ace/Filecache.h b/ace/Filecache.h
    deleted file mode 100644
    index ff5f8194d47..00000000000
    --- a/ace/Filecache.h
    +++ /dev/null
    @@ -1,350 +0,0 @@
    -/* -*- c++ -*- */
    -// Hey, Emacs!  This is a C++ file!
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Filecache.h
    -//
    -// = AUTHOR
    -//    James Hu
    -//
    -// ============================================================================
    -
    -#ifndef ACE_FILECACHE_H
    -#define ACE_FILECACHE_H
    -
    -#include "ace/Mem_Map.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Synch_T.h"
    -#include "ace/Hash_Map_Manager.h"
    -#include "ace/SString.h"
    -
    -enum ACE_Filecache_Flag
    -{
    -  ACE_NOMAP = 0,
    -  ACE_MAPIT = 1
    -};
    -
    -class ACE_Filecache_Object;
    -
    -class ACE_Export ACE_Filecache_Handle
    -{
    -  // = TITLE
    -  //     Abstraction over a real file.  This is meant to be the entry
    -  //     point into the Cached Virtual Filesystem.
    -  //
    -  // = DESCRIPTION
    -  // This is a cached filesystem implementation based loosely on the
    -  // implementation of JAWS_File.  The interfaces will be nearly the
    -  // same.  The under-the-hood implementation should hopefully be a
    -  // much faster thing.
    -  //
    -  // These will be given their own implementations later. For now, we
    -  // borrow the implementation provided by JAWS.
    -  //
    -  // On creation, the cache is checked, and reference count is
    -  // incremented.  On destruction, reference count is decremented.  If
    -  // the reference count is 0, the file is removed from the cache.
    -  //
    -  //     E.g. 1,
    -  //       {
    -  //         ACE_Filecache_Handle foo("foo.html");
    -  //         this->peer ().send (foo.address (), foo.size ());
    -  //       }
    -  //
    -  //     E.g. 2,
    -  //       {
    -  //         ACE_Filecache_Handle foo("foo.html");
    -  //         io->transmitfile (foo.handle (), this->peer ().handle ());
    -  //       }
    -  //
    -  //     E.g. 3,
    -  //       {
    -  //         ACE_Filecache_Handle foo("foo.html", content_length);
    -  //         this->peer ().recv (foo.address (), content_length);
    -  //       }
    -  //
    -  // TODO:
    -
    -  // (1) Get rid of the useless copying of files when reading.  Although
    -  // it does make sure the file you send isn't being changed, it doesn't
    -  // make sure the file is in a sensible state before sending it.
    -
    -  // Alternative: if the file get's trashed while it is being shipped, let
    -  // the client request the file again.  The cache should have an updated
    -  // copy by that point.
    -
    -  // (2) Use hashing for locating files.  This means I need a hastable
    -  // implementation with buckets.
    -
    -  // (3) Only lock when absolutely necessary.  JAWS_Virtual_Filesystem was
    -  // rather conservative, but for some reason it still ran into problems.
    -  // Since this design should be simpler, problems should be easier to spot.
    -  //
    -public:
    -
    -  ACE_Filecache_Handle (const char *filename,
    -                        ACE_Filecache_Flag mapit = ACE_MAPIT);
    -  // Query cache for file, and acquire it.  Assumes the file is being
    -  // opened for reading.
    -
    -  ACE_Filecache_Handle (const char *filename,
    -                        int size,
    -                        ACE_Filecache_Flag mapit = ACE_MAPIT);
    -  // Create new entry, and acquire it.  Presence of SIZE assumes the
    -  // file is being opened for writing.
    -
    -  ~ACE_Filecache_Handle (void);
    -  // Closes any open handles, release acquired file.
    -
    -  void *address (void) const;
    -  // Base address of memory mapped file.
    -
    -  ACE_HANDLE handle (void) const;
    -  // A handle (e.g., UNIX file descriptor, or NT file handle).
    -
    -  int error (void) const;
    -  // Any associated error in handle creation and acquisition.
    -
    -  size_t size (void) const;
    -  // The size of the file.
    -
    -protected:
    -  ACE_Filecache_Handle (void);
    -  // Default do nothing constructor.  Prevent it from being called.
    -
    -  void init (void);
    -  // Common initializations for constructors.
    -
    -public:
    -  // = These come from ACE_Filecache_Object, which is an internal class.
    -  enum
    -  {
    -    ACE_SUCCESS = 0,
    -    ACE_ACCESS_FAILED,
    -    ACE_OPEN_FAILED,
    -    ACE_COPY_FAILED,
    -    ACE_STAT_FAILED,
    -    ACE_MEMMAP_FAILED,
    -    ACE_WRITE_FAILED
    -  };
    -
    -private:
    -  ACE_Filecache_Object *file_;
    -  // A reference to the low level instance.
    -
    -  ACE_HANDLE handle_;
    -  // A 'd version of the one from .
    -
    -  int mapit_;
    -};
    -
    -#if defined (ACE_HAS_TEMPLATE_SPECIALIZATION)
    -typedef ACE_Hash_Map_Entry
    -        ACE_Filecache_Hash_Entry;
    -
    -typedef ACE_Hash_Map_Manager
    -        ACE_Filecache_Hash;
    -#else
    -typedef ACE_Hash_Map_Entry
    -        ACE_Filecache_Hash_Entry;
    -
    -typedef ACE_Hash_Map_Manager
    -        ACE_Filecache_Hash;
    -#endif /* ACE_HAS_TEMPLATE_SPECIALIZATION */
    -
    -class ACE_Export ACE_Filecache
    -{
    -  // = TITLE
    -  //     A hash table holding the information about entry point into
    -  //     the Cached Virtual Filesystem. On insertion, the reference
    -  //     count is incremented. On destruction, reference count is
    -  //     decremented.
    -public:
    -  static ACE_Filecache *instance (void);
    -  // Singleton pattern.
    -
    -  ~ACE_Filecache (void);
    -
    -  int find (const char *filename);
    -  // Returns 0 if the file associated with ``filename'' is in the cache,
    -  // or -1 if not.
    -
    -  ACE_Filecache_Object *fetch (const char *filename, int mapit = 1);
    -  // Return the file associated with ``filename'' if it is in the cache,
    -  // or create if not.
    -
    -  ACE_Filecache_Object *remove (const char *filename);
    -  // Remove the file associated with ``filename'' from the cache.
    -
    -  ACE_Filecache_Object *create (const char *filename, int size);
    -  // Create a new Filecache_Object, returns it.
    -
    -  ACE_Filecache_Object *finish (ACE_Filecache_Object *&new_file);
    -  // Release an acquired Filecache_Object, returns it again or NULL if it
    -  // was deleted.
    -
    -protected:
    -  ACE_Filecache_Object *insert_i (const char *filename,
    -                                  ACE_SYNCH_RW_MUTEX &filelock,
    -                                  int mapit);
    -  ACE_Filecache_Object *remove_i (const char *filename);
    -  ACE_Filecache_Object *update_i (const char *filename,
    -                                  ACE_SYNCH_RW_MUTEX &filelock,
    -                                  int mapit);
    -
    -public:
    -
    -  enum
    -  {
    -    ACE_DEFAULT_VIRTUAL_FILESYSTEM_TABLE_SIZE = 512,
    -    // For this stupid implementation, use an array.  Someday, use a
    -    // balanced search tree, or real hash table.
    -
    -    ACE_DEFAULT_VIRTUAL_FILESYSTEM_CACHE_SIZE = 20
    -    // This determines the highwater mark in megabytes for the cache.
    -    // This will be ignored for now.
    -  };
    -
    -protected:
    -  ACE_Filecache (void);
    -  // Prevent it from being called.
    -
    -private:
    -  int size_;
    -
    -  ACE_Filecache_Hash hash_;
    -  // The hash table
    -
    -  static ACE_Filecache *cvf_;
    -  // The reference to the instance
    -
    -  // = Synchronization variables.
    -  ACE_SYNCH_RW_MUTEX hash_lock_[ACE_DEFAULT_VIRTUAL_FILESYSTEM_TABLE_SIZE];
    -  ACE_SYNCH_RW_MUTEX file_lock_[ACE_DEFAULT_VIRTUAL_FILESYSTEM_TABLE_SIZE];
    -};
    -
    -class ACE_Export ACE_Filecache_Object
    -{
    -  // = TITLE
    -  //     Abstraction over a real file.  This is what the Virtual
    -  //     Filesystem contains.  This class is not intended for general
    -  //     consumption.  Please consult a physician before attempting to
    -  //     use this class.
    -public:
    -  friend class ACE_Filecache;
    -
    -  ACE_Filecache_Object (const char *filename,
    -                        ACE_SYNCH_RW_MUTEX &lock,
    -                        LPSECURITY_ATTRIBUTES sa = 0,
    -                        int mapit = 1);
    -  // Creates a file for reading.
    -
    -  ACE_Filecache_Object (const char *filename,
    -                        int size,
    -                        ACE_SYNCH_RW_MUTEX &lock,
    -                        LPSECURITY_ATTRIBUTES sa = 0);
    -  // Creates a file for writing.
    -
    -  ~ACE_Filecache_Object (void);
    -  // Only if reference count is zero should this be called.
    -
    -  int acquire (void);
    -  // Increment the reference_count_.
    -
    -  int release (void);
    -  // Decrement the reference_count_.
    -
    -  // = error_ accessors
    -  int error (void) const;
    -  int error (int error_value,
    -             const char *s = "ACE_Filecache_Object");
    -
    -  const char *filename (void) const;
    -  // filename_ accessor
    -
    -  ACE_HANDLE handle (void) const;
    -  // handle_ accessor.
    -
    -  void *address (void) const;
    -  // Base memory address for memory mapped file.
    -
    -  size_t size (void) const;
    -  // size_ accessor.
    -
    -  int update (void) const;
    -  // True if file on disk is newer than cached file.
    -
    -protected:
    -  ACE_Filecache_Object (void);
    -  // Prevent from being called.
    -
    -  void init (void);
    -  // Common initialization code,
    -
    -private:
    -  int error_i (int error_value,
    -               const char *s = "ACE_Filecache_Object");
    -  // Internal error logging method, no locking.
    -
    -public:
    -
    -  enum Creation_States
    -  {
    -    ACE_READING = 1,
    -    ACE_WRITING = 2
    -  };
    -
    -  enum Error_Conditions
    -  {
    -    ACE_SUCCESS = 0,
    -    ACE_ACCESS_FAILED,
    -    ACE_OPEN_FAILED,
    -    ACE_COPY_FAILED,
    -    ACE_STAT_FAILED,
    -    ACE_MEMMAP_FAILED,
    -    ACE_WRITE_FAILED
    -  };
    -
    -private:
    -  char *tempname_;
    -  char filename_[MAXPATHLEN + 1];
    -  // The temporary file name and the real file name.  The real file is
    -  // copied into the temporary file for safety reasons.
    -
    -  ACE_Mem_Map mmap_;
    -  ACE_HANDLE handle_;
    -  // mmap_ holds the memory mapped version of the temporary file.
    -  // handle_ is the descriptor to the temporary file.
    -
    -  struct stat stat_;
    -  size_t size_;
    -  // Used to compare against the real file to test if an update is needed.
    -
    -  int action_;
    -  int error_;
    -  // Status indicators.
    -
    -  int stale_;
    -  // If set to 1, means the object is flagged for removal.
    -
    -  LPSECURITY_ATTRIBUTES sa_;
    -  // Security attribute object.
    -
    -  ACE_SYNCH_RW_MUTEX junklock_;
    -  ACE_SYNCH_RW_MUTEX &lock_;
    -  // lock_ provides a bookkeeping mechanism for users of this object.
    -  // junklock_ is the default initializer
    -};
    -
    -
    -#endif /* ACE_FILECACHE_H */
    diff --git a/ace/FlReactor.cpp b/ace/FlReactor.cpp
    deleted file mode 100644
    index ee6af14fe14..00000000000
    --- a/ace/FlReactor.cpp
    +++ /dev/null
    @@ -1,332 +0,0 @@
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/FlReactor.h"
    -#include "ace/Synch_T.h"
    -
    -ACE_RCSID(ace, FlReactor, "$Id$")
    -
    -#if defined (ACE_HAS_FL)
    -
    -#include 
    -
    -ACE_ALLOC_HOOK_DEFINE (ACE_FlReactor)
    -
    -// Must be called with lock held
    -ACE_FlReactor::ACE_FlReactor (size_t size,
    -			      int restart,
    -			      ACE_Sig_Handler *h)
    -  : ACE_Select_Reactor (size, restart, h)
    -{
    -  // When the ACE_Select_Reactor is constructed it creates the notify
    -  // pipe and registers it with the register_handler_i() method. The
    -  // FlReactor overloads this method BUT because the
    -  // register_handler_i occurs when constructing the base class
    -  // ACE_Select_Reactor, the ACE_Select_Reactor register_handler_i()
    -  // is called not the FlReactor register_handler_i().  This means
    -  // that the notify pipe is registered with the ACE_Select_Reactor
    -  // event handling code not the FlReactor and so notfications don't
    -  // work.  To get around this we simply close and re-opened the
    -  // notification handler in the constructor of the FlReactor.
    -
    -#if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0)
    -  this->notify_handler_->close ();
    -  this->notify_handler_->open (this, 0);
    -#endif /* ACE_MT_SAFE */
    -}
    -
    -ACE_FlReactor::~ACE_FlReactor (void)
    -{
    -}
    -
    -// This is just the  from ace/Reactor.cpp
    -// but we use the Fl functions to wait for an event, not , just use the Fl mechanism
    -      // to wait for one or more events...
    -
    -      // Wait for something to happen.
    -      double t = 0;
    -      if (max_wait_time != 0)
    -        t = max_wait_time->sec () + max_wait_time->usec () / 1000000.0F;
    -
    -      while (t > 0) {
    -        t = Fl::wait (t);
    -      }
    -
    -      // Reset the width, in case it changed during the upcalls.
    -      width = this->handler_rep_.max_handlep1 ();
    -
    -      // Now actually read the result needed by the 
    -      // using , , or .
    -  //      makes the use of these mechanisms portable
    -  //     across OS platforms,
    -public:
    -  // = Useful constants.
    -
    -  static const ACE_Time_Value zero;
    -  // Constant "0".
    -
    -  static const ACE_Time_Value max_time;
    -  // Constant for maximum time representable.  Note that this time is
    -  // not intended for use with  when updates occur in somewhere
    -// other than the main  thread.  All we do is
    -// write data to a pipe that the  is listening on.
    -// Thanks to Paul Stephenson for suggesting this approach.
    -
    -int
    -ACE_Select_Reactor_Notify::handle_input (ACE_HANDLE handle)
    -{
    -  ACE_TRACE ("ACE_Select_Reactor_Notify::handle_input");
    -  // Precondition: this->select_reactor_.token_.current_owner () ==
    -  // ACE_Thread::self ();
    -
    -  ACE_Notification_Buffer buffer;
    -  ssize_t n;
    -  int number_dispatched = 0;
    -
    -  while ((n = ACE::recv (handle, (char *) &buffer, sizeof buffer)) > 0)
    -    {
    -      // Check to see if we've got a short read.
    -      if (n != sizeof buffer)
    -        {
    -          ssize_t remainder = sizeof buffer - n;
    -
    -          // If so, try to recover by reading the remainder.  If this
    -          // doesn't work we're in big trouble since the input stream
    -          // won't be aligned correctly.  I'm not sure quite what to
    -          // do at this point.  It's probably best just to return -1.
    -          if (ACE::recv (handle,
    -                         ((char *) &buffer) + n,
    -                         remainder) != remainder)
    -            return -1;
    -        }
    -
    -#if defined (ACE_HAS_REACTOR_NOTIFICATION_QUEUE)
    -      // Dispatch all messages that are in the .
    -      for (;;)
    -        {
    -          {
    -            // We acquire the lock in a block to make sure we're not
    -            // holding the lock while delivering callbacks...
    -            ACE_GUARD_RETURN (ACE_SYNCH_MUTEX, mon, this->notify_queue_lock_, -1);
    -
    -            ACE_Notification_Buffer *temp;
    -
    -            if (notify_queue_.is_empty ())
    -              break;
    -            else if (notify_queue_.dequeue_head (temp) == -1)
    -              ACE_ERROR_RETURN ((LM_ERROR,
    -                                 ASYS_TEXT ("%p\n"),
    -                                 ASYS_TEXT ("dequeue_head")),
    -                                -1);
    -            buffer = *temp;
    -            if (free_queue_.enqueue_head (temp) == -1)
    -              ACE_ERROR_RETURN ((LM_ERROR,
    -                                 ASYS_TEXT ("%p\n"),
    -                                 ASYS_TEXT ("enqueue_head")),
    -                                -1);
    -          }
    -
    -          // If eh == 0 then another thread is unblocking the
    -          //  to update the 's
    -          // internal structures.  Otherwise, we need to dispatch the
    -          // appropriate handle_* method on the 
    -          // pointer we've been passed.
    -          if (buffer.eh_ != 0)
    -            {
    -              int result = 0;
    -
    -              switch (buffer.mask_)
    -                {
    -                case ACE_Event_Handler::READ_MASK:
    -                case ACE_Event_Handler::ACCEPT_MASK:
    -                  result = buffer.eh_->handle_input (ACE_INVALID_HANDLE);
    -                  break;
    -                case ACE_Event_Handler::WRITE_MASK:
    -                  result = buffer.eh_->handle_output (ACE_INVALID_HANDLE);
    -                  break;
    -                case ACE_Event_Handler::EXCEPT_MASK:
    -                  result = buffer.eh_->handle_exception (ACE_INVALID_HANDLE);
    -                  break;
    -                default:
    -                  // Should we bail out if we get an invalid mask?
    -                  ACE_ERROR ((LM_ERROR, ASYS_TEXT ("invalid mask = %d\n"), buffer.mask_));
    -                }
    -              if (result == -1)
    -                buffer.eh_->handle_close (ACE_INVALID_HANDLE,
    -                                          ACE_Event_Handler::EXCEPT_MASK);
    -            }
    -        }
    -#else
    -      // If eh == 0 then another thread is unblocking the
    -      //  to update the 's
    -      // internal structures.  Otherwise, we need to dispatch the
    -      // appropriate handle_* method on the 
    -      // pointer we've been passed.
    -      if (buffer.eh_ != 0)
    -        {
    -          int result = 0;
    -
    -          switch (buffer.mask_)
    -            {
    -            case ACE_Event_Handler::READ_MASK:
    -            case ACE_Event_Handler::ACCEPT_MASK:
    -              result = buffer.eh_->handle_input (ACE_INVALID_HANDLE);
    -              break;
    -            case ACE_Event_Handler::WRITE_MASK:
    -              result = buffer.eh_->handle_output (ACE_INVALID_HANDLE);
    -              break;
    -            case ACE_Event_Handler::EXCEPT_MASK:
    -              result = buffer.eh_->handle_exception (ACE_INVALID_HANDLE);
    -              break;
    -            case ACE_Event_Handler::QOS_MASK:
    -              result = buffer.eh_->handle_qos (ACE_INVALID_HANDLE);
    -              break;
    -            case ACE_Event_Handler::GROUP_QOS_MASK:
    -              result = buffer.eh_->handle_group_qos (ACE_INVALID_HANDLE);
    -              break;
    -            default:
    -              // Should we bail out if we get an invalid mask?
    -              ACE_ERROR ((LM_ERROR,
    -                          ASYS_TEXT ("invalid mask = %d\n"),
    -                          buffer.mask_));
    -            }
    -          if (result == -1)
    -            buffer.eh_->handle_close (ACE_INVALID_HANDLE,
    -                                      ACE_Event_Handler::EXCEPT_MASK);
    -        }
    -
    -#endif /* ACE_HAS_REACTOR_NOTIFICATION_QUEUE */
    -      number_dispatched++;
    -
    -      // Bail out if we've reached the .  Note that
    -      // by default  is -1, so we'll loop until all
    -      // the notifications in the pipe have been dispatched.
    -      if (number_dispatched == this->max_notify_iterations_)
    -        break;
    -    }
    -
    -  // Reassign number_dispatched to -1 if things have gone seriously
    -  // wrong.
    -  if (n <= 0 && (errno != EWOULDBLOCK && errno != EAGAIN))
    -    number_dispatched = -1;
    -
    -  // Enqueue ourselves into the list of waiting threads.  When we
    -  // reacquire the token we'll be off and running again with ownership
    -  // of the token.  The postcondition of this call is that
    -  //  == .
    -  this->select_reactor_->renew ();
    -  return number_dispatched;
    -}
    -
    -// Perform GET, CLR, SET, and ADD operations on the Handle_Sets.
    -//
    -// GET = 1, Retrieve current value
    -// SET = 2, Set value of bits to new mask (changes the entire mask)
    -// ADD = 3, Bitwise "or" the value into the mask (only changes
    -//          enabled bits)
    -// CLR = 4  Bitwise "and" the negation of the value out of the mask
    -//          (only changes enabled bits)
    -//
    -// Returns the original mask.  Must be called with locks held.
    -
    -int
    -ACE_Select_Reactor_Impl::bit_ops (ACE_HANDLE handle,
    -                                  ACE_Reactor_Mask mask,
    -                                  ACE_Select_Reactor_Handle_Set &handle_set,
    -                                  int ops)
    -{
    -  ACE_TRACE ("ACE_Select_Reactor_Impl::bit_ops");
    -  if (this->handler_rep_.handle_in_range (handle) == 0)
    -    return -1;
    -
    -#if !defined (ACE_WIN32)
    -  ACE_Sig_Guard sb; // Block out all signals until method returns.
    -#endif /* ACE_WIN32 */
    -
    -  ACE_FDS_PTMF ptmf  = &ACE_Handle_Set::set_bit;
    -  u_long omask = ACE_Event_Handler::NULL_MASK;
    -
    -  // Find the old reactor masks.  This automatically does the work of
    -  // the GET_MASK operation.
    -  if (handle_set.rd_mask_.is_set (handle))
    -    ACE_SET_BITS (omask, ACE_Event_Handler::READ_MASK);
    -  if (handle_set.wr_mask_.is_set (handle))
    -    ACE_SET_BITS (omask, ACE_Event_Handler::WRITE_MASK);
    -  if (handle_set.ex_mask_.is_set (handle))
    -    ACE_SET_BITS (omask, ACE_Event_Handler::EXCEPT_MASK);
    -
    -  switch (ops)
    -    {
    -    case ACE_Reactor::GET_MASK:
    -      // The work for this operation is done in all cases at the
    -      // begining of the function.
    -      break;
    -    case ACE_Reactor::CLR_MASK:
    -      ptmf = &ACE_Handle_Set::clr_bit;
    -      /* FALLTHRU */
    -    case ACE_Reactor::SET_MASK:
    -      /* FALLTHRU */
    -    case ACE_Reactor::ADD_MASK:
    -
    -      // The following code is rather subtle...  Note that if we are
    -      // doing a ACE_Reactor::SET_MASK then if the bit is not enabled
    -      // in the mask we need to clear the bit from the ACE_Handle_Set.
    -      // On the other hand, if we are doing a ACE_Reactor::CLR_MASK or
    -      // a ACE_Reactor::ADD_MASK we just carry out the operations
    -      // specified by the mask.
    -
    -      // READ, ACCEPT, and CONNECT flag will place the handle in the
    -      // read set.
    -      if (ACE_BIT_ENABLED (mask, ACE_Event_Handler::READ_MASK)
    -          || ACE_BIT_ENABLED (mask, ACE_Event_Handler::ACCEPT_MASK)
    -          || ACE_BIT_ENABLED (mask, ACE_Event_Handler::CONNECT_MASK))
    -        {
    -          (handle_set.rd_mask_.*ptmf) (handle);
    -        }
    -      else if (ops == ACE_Reactor::SET_MASK)
    -        handle_set.rd_mask_.clr_bit (handle);
    -
    -      // WRITE and CONNECT flag will place the handle in the write set
    -      if (ACE_BIT_ENABLED (mask,
    -                           ACE_Event_Handler::WRITE_MASK)
    -          || ACE_BIT_ENABLED (mask,
    -                              ACE_Event_Handler::CONNECT_MASK))
    -        {
    -          (handle_set.wr_mask_.*ptmf) (handle);
    -        }
    -      else if (ops == ACE_Reactor::SET_MASK)
    -        handle_set.wr_mask_.clr_bit (handle);
    -
    -      // EXCEPT (and CONNECT on Win32) flag will place the handle in
    -      // the except set.
    -      if (ACE_BIT_ENABLED (mask, ACE_Event_Handler::EXCEPT_MASK)
    -#if defined (ACE_WIN32)
    -          || ACE_BIT_ENABLED (mask, ACE_Event_Handler::CONNECT_MASK)
    -#endif /* ACE_WIN32 */
    -          )
    -        {
    -          (handle_set.ex_mask_.*ptmf) (handle);
    -        }
    -      else if (ops == ACE_Reactor::SET_MASK)
    -        handle_set.ex_mask_.clr_bit (handle);
    -      break;
    -    default:
    -      return -1;
    -    }
    -  return omask;
    -}
    -
    -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
    -#if defined (ACE_HAS_REACTOR_NOTIFICATION_QUEUE)
    -template class ACE_Unbounded_Queue ;
    -template class ACE_Unbounded_Queue_Iterator ;
    -template class ACE_Node ;
    -#endif /* ACE_HAS_REACTOR_NOTIFICATION_QUEUE */
    -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
    -#if defined (ACE_HAS_REACTOR_NOTIFICATION_QUEUE)
    -#pragma instantiate ACE_Unbounded_Queue 
    -#pragma instantiate ACE_Unbounded_Queue_Iterator 
    -#pragma instantiate ACE_Node 
    -#endif /* ACE_HAS_REACTOR_NOTIFICATION_QUEUE */
    -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
    diff --git a/ace/Select_Reactor_Base.h b/ace/Select_Reactor_Base.h
    deleted file mode 100644
    index 5ff8c3b3d4d..00000000000
    --- a/ace/Select_Reactor_Base.h
    +++ /dev/null
    @@ -1,434 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Select_Reactor_Base.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_SELECT_REACTOR_BASE_H
    -#define ACE_SELECT_REACTOR_BASE_H
    -
    -#include "ace/Signal.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Timer_Queue.h"
    -#include "ace/Event_Handler.h"
    -#include "ace/Handle_Set.h"
    -#include "ace/Token.h"
    -#include "ace/Pipe.h"
    -#include "ace/Reactor_Impl.h"
    -
    -// Add useful typedefs to simplify the following code.
    -typedef void (ACE_Handle_Set::*ACE_FDS_PTMF) (ACE_HANDLE);
    -typedef int (ACE_Event_Handler::*ACE_EH_PTMF) (ACE_HANDLE);
    -
    -// Forward declaration.
    -class ACE_Select_Reactor_Impl;
    -
    -class ACE_Export ACE_Select_Reactor_Handle_Set
    -{
    -  // = TITLE
    -  //      Track handles we are interested for various events.
    -public:
    -  ACE_Handle_Set rd_mask_;
    -  // Read events (e.g., input pending, accept pending).
    -
    -  ACE_Handle_Set wr_mask_;
    -  // Write events (e.g., flow control abated, non-blocking connection
    -  // complete).
    -
    -  ACE_Handle_Set ex_mask_;
    -  // Exception events (e.g., SIG_URG).
    -};
    -
    -class ACE_Export ACE_Event_Tuple
    -{
    -  // = TITLE
    -  //     An ACE_Event_Handler and its associated ACE_HANDLE.
    -  //
    -  // = DESCRIPTION
    -  //     One ACE_Event_Handler is registered for one or more
    -  //     ACE_HANDLE, in some points this information must be stored
    -  //     explicitly. This structure provides a lightweight mechanism
    -  //     to do so.
    -public:
    -  ACE_Event_Tuple (void);
    -  ACE_Event_Tuple (ACE_Event_Handler *eh,
    -                   ACE_HANDLE h);
    -  ~ACE_Event_Tuple (void);
    -
    -  int operator== (const ACE_Event_Tuple &rhs) const;
    -  // Equality operator.
    -
    -  int operator!= (const ACE_Event_Tuple &rhs) const;
    -  // Inequality operator.
    -
    -  ACE_HANDLE handle_;
    -  ACE_Event_Handler* event_handler_;
    -};
    -
    -class ACE_Export ACE_Select_Reactor_Notify : public ACE_Reactor_Notify
    -{
    -  // = TITLE
    -  //     Unblock the  from its event loop.
    -  //
    -  // = DESCRIPTION
    -  //     This implementation is necessary for cases where the
    -  //      is run in a multi-threaded program.  In
    -  //     this case, we need to be able to unblock /.  Pass over both the
    -  //  *and* the  to allow the caller to dictate
    -  // which  method the  will
    -  // invoke.  The  indicates how long to blocking
    -  // trying to notify the .  If  == 0,
    -  // the caller will block until action is possible, else will wait
    -  // until the relative time specified in * elapses).
    -
    -  virtual int dispatch_notifications (int &number_of_active_handles,
    -                                      ACE_Handle_Set &rd_mask);
    -  // Handles pending threads (if any) that are waiting to unblock the
    -  // .
    -
    -  virtual int handle_input (ACE_HANDLE handle);
    -  // Called back by the  when a thread wants to
    -  // unblock us.
    -
    -  virtual void max_notify_iterations (int);
    -  // Set the maximum number of times that the
    -  //  method will iterate and
    -  // dispatch the  that are passed in via the
    -  // notify pipe before breaking out of its  loop.  By default,
    -  // this is set to -1, which means "iterate until the pipe is empty."
    -  // Setting this to a value like "1 or 2" will increase "fairness"
    -  // (and thus prevent starvation) at the expense of slightly higher
    -  // dispatching overhead.
    -
    -  virtual int max_notify_iterations (void);
    -  // Get the maximum number of times that the
    -  //  method will iterate and
    -  // dispatch the  that are passed in via the
    -  // notify pipe before breaking out of its  loop.
    -
    -  virtual void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  ACE_Select_Reactor_Impl *select_reactor_;
    -  // Keep a back pointer to the .  If this value
    -  // if NULL then the  has been initialized with
    -  // .
    -
    -  ACE_Pipe notification_pipe_;
    -  // Contains the  the  is listening
    -  // on, as well as the  that threads wanting the
    -  // attention of the  will write to.
    -
    -  int max_notify_iterations_;
    -  // Keeps track of the maximum number of times that the
    -  //  method will iterate and
    -  // dispatch the  that are passed in via the
    -  // notify pipe before breaking out of its  loop.  By default,
    -  // this is set to -1, which means "iterate until the pipe is empty."
    -
    -#if defined (ACE_HAS_REACTOR_NOTIFICATION_QUEUE)
    -  ACE_Unbounded_Queue  alloc_queue_;
    -  // Keeps track of allocated arrays of type
    -  // .
    -
    -  ACE_Unbounded_Queue  notify_queue_;
    -  // Keeps track of all pending notifications.
    -
    -  ACE_Unbounded_Queue  free_queue_;
    -  // Keeps track of all free buffers.
    -
    -  ACE_SYNCH_MUTEX notify_queue_lock_;
    -  // synchronization for handling of queues
    -#endif /* ACE_HAS_REACTOR_NOTIFICATION_QUEUE */
    -};
    -
    -class ACE_Export ACE_Select_Reactor_Handler_Repository
    -{
    -  // = TITLE
    -  //     Used to map s onto the appropriate
    -  //      *.
    -  //
    -  // = DESCRIPTION
    -  //     This class is necessary to shield differences between UNIX
    -  //     and Win32.  In UNIX,  is an int, whereas in Win32
    -  //     it's a void *.  This class hides all these details from the
    -  //     bulk of the  code.  All of these methods
    -  //     are called with the main  token lock held.
    -public:
    -  friend class ACE_Select_Reactor_Handler_Repository_Iterator;
    -
    -  // = Initialization and termination methods.
    -  ACE_Select_Reactor_Handler_Repository (ACE_Select_Reactor_Impl &);
    -  // Default "do-nothing" constructor.
    -
    -  ~ACE_Select_Reactor_Handler_Repository (void);
    -  // dtor.
    -
    -  int open (size_t size);
    -  // Initialize a repository of the appropriate .
    -
    -  int close (void);
    -  // Close down the repository.
    -
    -  // = Search structure operations.
    -
    -  ACE_Event_Handler *find (ACE_HANDLE handle, size_t *index_p = 0);
    -  // Return the  associated with .
    -  // If  is non-0, then return the index location of the
    -  // , if found.
    -
    -  int bind (ACE_HANDLE,
    -            ACE_Event_Handler *,
    -            ACE_Reactor_Mask);
    -  // Bind the  to the  with the
    -  // appropriate  settings.
    -
    -  int unbind (ACE_HANDLE,
    -              ACE_Reactor_Mask mask);
    -  // Remove the binding of  in accordance with the .
    -
    -  int unbind_all (void);
    -  // Remove all the  tuples.
    -
    -  // = Sanity checking.
    -
    -  // Check the  to make sure it's a valid ACE_HANDLE that
    -  // within the range of legal handles (i.e., >= 0 && < max_size_).
    -  int invalid_handle (ACE_HANDLE handle);
    -
    -  // Check the  to make sure it's a valid ACE_HANDLE that
    -  // within the range of currently registered handles (i.e., >= 0 && <
    -  // max_handlep1_).
    -  int handle_in_range (ACE_HANDLE handle);
    -
    -  // = Accessors.
    -  size_t size (void);
    -  // Returns the current table size.
    -
    -  size_t max_handlep1 (void);
    -  // Maximum ACE_HANDLE value, plus 1.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  ACE_Select_Reactor_Impl &select_reactor_;
    -  // Reference to our .
    -
    -  ssize_t max_size_;
    -  // Maximum number of handles.
    -
    -  int max_handlep1_;
    -  // The highest currently active handle, plus 1 (ranges between 0 and
    -  // .
    -
    -#if defined (ACE_WIN32)
    -  // = The mapping from  to .
    -
    -  ACE_Event_Tuple *event_handlers_;
    -  // The NT version implements this via a dynamically allocated
    -  // array of .  Since NT implements ACE_HANDLE
    -  // as a void * we can't directly index into this array.  Therefore,
    -  // we just do a linear search (for now).  Next, we'll modify
    -  // things to use hashing or something faster...
    -#else
    -  ACE_Event_Handler **event_handlers_;
    -  // The UNIX version implements this via a dynamically allocated
    -  // array of  that is indexed directly using
    -  // the ACE_HANDLE value.
    -#endif /* ACE_WIN32 */
    -};
    -
    -class ACE_Export ACE_Select_Reactor_Handler_Repository_Iterator
    -{
    -  // = TITLE
    -  //     Iterate through the .
    -public:
    -  // = Initialization method.
    -  ACE_Select_Reactor_Handler_Repository_Iterator (const ACE_Select_Reactor_Handler_Repository *s);
    -
    -  ~ACE_Select_Reactor_Handler_Repository_Iterator (void);
    -  // dtor.
    -
    -  // = Iteration methods.
    -
    -  int next (ACE_Event_Handler *&next_item);
    -  // Pass back the  that hasn't been seen in the Set.
    -  // Returns 0 when all items have been seen, else 1.
    -
    -  int done (void) const;
    -  // Returns 1 when all items have been seen, else 0.
    -
    -  int advance (void);
    -  // Move forward by one element in the set.  Returns 0 when all the
    -  // items in the set have been seen, else 1.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  const ACE_Select_Reactor_Handler_Repository *rep_;
    -  // Reference to the Handler_Repository we are iterating over.
    -
    -  ssize_t current_;
    -  // Pointer to the current iteration level.
    -};
    -
    -class ACE_Export ACE_Select_Reactor_Impl : public ACE_Reactor_Impl
    -{
    -  // = TITLE
    -  //     This class simply defines how Select_Reactor's basic interface
    -  //     functions should look like and provides a common base class for
    -  //      using various locking mechanism.
    -public:
    -  enum
    -  {
    -    DEFAULT_SIZE = ACE_DEFAULT_SELECT_REACTOR_SIZE
    -    // Default size of the Select_Reactor's handle table.
    -  };
    -
    -  ACE_Select_Reactor_Impl (void);
    -  // Constructor.
    -  
    -  friend class ACE_Select_Reactor_Notify;
    -  friend class ACE_Select_Reactor_Handler_Repository;
    -
    -protected:
    -  virtual int bit_ops (ACE_HANDLE handle,
    -                       ACE_Reactor_Mask mask,
    -                       ACE_Select_Reactor_Handle_Set &wait_Set,
    -                       int ops);
    -  // Allow manipulation of the  mask and  mask.
    -
    -  virtual void renew (void) = 0;
    -  // Enqueue ourselves into the list of waiting threads at the
    -  // appropriate point specified by .
    -
    -  ACE_Select_Reactor_Handler_Repository handler_rep_;
    -  // Table that maps  to 's.
    -
    -  ACE_Select_Reactor_Handle_Set wait_set_;
    -  // Tracks handles that are waited for by .
    -
    -  ACE_Timer_Queue *timer_queue_;
    -  // Defined as a pointer to allow overriding by derived classes...
    -
    -  int delete_timer_queue_;
    -  // Keeps track of whether we should delete the timer queue (if we
    -  // didn't create it, then we don't delete it).
    -
    -  ACE_Sig_Handler *signal_handler_;
    -  // Handle signals without requiring global/static variables.
    -
    -  int delete_signal_handler_;
    -  // Keeps track of whether we should delete the signal handler (if we
    -  // didn't create it, then we don't delete it).
    -
    -  ACE_Reactor_Notify *notify_handler_;
    -  // Callback object that unblocks the  if it's
    -  // sleeping.
    -
    -  int delete_notify_handler_;
    -  // Keeps track of whether we need to delete the notify handler (if
    -  // we didn't create it, then we don't delete it).
    -
    -  int restart_;
    -  // Restart the  event-loop method automatically when
    -  // .
    -
    -  if (number_of_active_handles == 0)
    -    {
    -      do
    -        {
    -          if (this->timer_queue_->calculate_timeout (max_wait_time,
    -                                                     this_timeout) == 0)
    -            this_timeout = 0;
    -
    -          width = (u_long) this->handler_rep_.max_handlep1 ();
    -
    -          dispatch_set.rd_mask_ = this->wait_set_.rd_mask_;
    -          dispatch_set.wr_mask_ = this->wait_set_.wr_mask_;
    -          dispatch_set.ex_mask_ = this->wait_set_.ex_mask_;
    -
    -          number_of_active_handles = ACE_OS::select (int (width),
    -                                                     dispatch_set.rd_mask_,
    -                                                     dispatch_set.wr_mask_,
    -                                                     dispatch_set.ex_mask_,
    -                                                     this_timeout);
    -        }
    -      while (number_of_active_handles == -1 && this->handle_error () > 0);
    -
    -      if (number_of_active_handles > 0)
    -        {
    -#if !defined (ACE_WIN32)
    -          // Resynchronize the fd_sets so their "max" is set properly.
    -          dispatch_set.rd_mask_.sync (this->handler_rep_.max_handlep1 ());
    -          dispatch_set.wr_mask_.sync (this->handler_rep_.max_handlep1 ());
    -          dispatch_set.ex_mask_.sync (this->handler_rep_.max_handlep1 ());
    -#endif /* ACE_WIN32 */
    -        }
    -    }
    -
    -  // Return the number of events to dispatch.
    -  return number_of_active_handles;
    -}
    -
    -template  int
    -ACE_Select_Reactor_T::dispatch_timer_handlers
    -  (int &number_of_handlers_dispatched)
    -{
    -  number_of_handlers_dispatched += this->timer_queue_->expire ();
    -  if (this->state_changed_)
    -    return -1;
    -  else
    -    return 0;
    -}
    -
    -template  int
    -ACE_Select_Reactor_T::dispatch_notification_handlers
    -  (ACE_Select_Reactor_Handle_Set &dispatch_set,
    -   int &number_of_active_handles,
    -   int &number_of_handlers_dispatched)
    -{
    -  // Check to see if the ACE_HANDLE associated with the
    -  // Select_Reactor's notify hook is enabled.  If so, it means that
    -  // one or more other threads are trying to update the
    -  // ACE_Select_Reactor_T's internal tables or the notify pipe is
    -  // enabled.  We'll handle all these threads and notifications, and
    -  // then break out to continue the event loop.
    -
    -  number_of_handlers_dispatched +=
    -    this->notify_handler_->dispatch_notifications (number_of_active_handles,
    -                                                   dispatch_set.rd_mask_);
    -  return this->state_changed_ ? -1 : 0;
    -}
    -
    -template  int
    -ACE_Select_Reactor_T::dispatch_io_set
    -  (int number_of_active_handles,
    -   int &number_of_handlers_dispatched,
    -   int mask,
    -   ACE_Handle_Set &dispatch_mask,
    -   ACE_Handle_Set &ready_mask,
    -   ACE_EH_PTMF callback)
    -{
    -  ACE_HANDLE handle;
    -
    -  ACE_Handle_Set_Iterator handle_iter (dispatch_mask);
    -
    -  while ((handle = handle_iter ()) != ACE_INVALID_HANDLE
    -         && number_of_handlers_dispatched < number_of_active_handles
    -         && this->state_changed_ == 0)
    -    {
    -      // ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("ACE_Select_Reactor_T::dispatching\n")));
    -      number_of_handlers_dispatched++;
    -      this->notify_handle (handle,
    -                           mask,
    -                           ready_mask,
    -                           this->handler_rep_.find (handle),
    -                           callback);
    -    }
    -
    -  if (number_of_handlers_dispatched > 0 && this->state_changed_)
    -    return -1;
    -
    -  return 0;
    -}
    -
    -template  int
    -ACE_Select_Reactor_T::dispatch_io_handlers
    -  (ACE_Select_Reactor_Handle_Set &dispatch_set,
    -   int &number_of_active_handles,
    -   int &number_of_handlers_dispatched)
    -{
    -  // Handle output events (this code needs to come first to handle the
    -  // obscure case of piggy-backed data coming along with the final
    -  // handshake message of a nonblocking connection).
    -
    -  // ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("ACE_Select_Reactor_T::dispatch - WRITE\n")));
    -  if (this->dispatch_io_set (number_of_active_handles,
    -                             number_of_handlers_dispatched,
    -                             ACE_Event_Handler::WRITE_MASK,
    -                             dispatch_set.wr_mask_,
    -                             this->ready_set_.wr_mask_,
    -                             &ACE_Event_Handler::handle_output) == -1)
    -    {
    -      number_of_active_handles -= number_of_handlers_dispatched;
    -      return -1;
    -    }
    -
    -  // ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("ACE_Select_Reactor_T::dispatch - EXCEPT\n")));
    -  if (this->dispatch_io_set (number_of_active_handles,
    -                             number_of_handlers_dispatched,
    -                             ACE_Event_Handler::EXCEPT_MASK,
    -                             dispatch_set.ex_mask_,
    -                             this->ready_set_.ex_mask_,
    -                             &ACE_Event_Handler::handle_exception) == -1)
    -    {
    -      number_of_active_handles -= number_of_handlers_dispatched;
    -      return -1;
    -    }
    -
    -  // ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("ACE_Select_Reactor_T::dispatch - READ\n")));
    -  if (this->dispatch_io_set (number_of_active_handles,
    -                             number_of_handlers_dispatched,
    -                             ACE_Event_Handler::READ_MASK,
    -                             dispatch_set.rd_mask_,
    -                             this->ready_set_.rd_mask_,
    -                             &ACE_Event_Handler::handle_input) == -1)
    -    {
    -      number_of_active_handles -= number_of_handlers_dispatched;
    -      return -1;
    -    }
    -
    -  number_of_active_handles -= number_of_handlers_dispatched;
    -  return 0;
    -}
    -
    -template  int
    -ACE_Select_Reactor_T::dispatch
    -  (int active_handle_count,
    -   ACE_Select_Reactor_Handle_Set &dispatch_set)
    -{
    -  ACE_TRACE ("ACE_Select_Reactor_T::dispatch");
    -
    -  int io_handlers_dispatched = 0;
    -  int other_handlers_dispatched = 0;
    -  int signal_occurred = 0;
    -  // The following do/while loop keeps dispatching as long as there
    -  // are still active handles.  Note that the only way we should ever
    -  // iterate more than once through this loop is if signals occur
    -  // while we're dispatching other handlers.
    -
    -  do
    -    {
    -      // Note that we keep track of changes to our state.  If any of
    -      // the dispatch_*() methods below return -1 it means that the
    -      //  state has changed as the result of an
    -      //  being dispatched.  This means that we
    -      // need to bail out and rerun the select() loop since our
    -      // existing notion of handles in  may no longer be
    -      // correct.
    -      //
    -      // In the beginning, our state starts out unchanged.  After
    -      // every iteration (i.e., due to signals), our state starts out
    -      // unchanged again.
    -
    -      this->state_changed_ = 0;
    -
    -      // Perform the Template Method for dispatching all the handlers.
    -
    -      // First check for interrupts.
    -      if (active_handle_count == -1)
    -        {
    -          // Bail out -- we got here since  call.  Whenever another thread wants to
    -  //     access the  via its ,
    -  //     , etc. methods) it must ask the token owner
    -  //     for temporary release of the token.  To accomplish this, the
    -  //     owner of a token must define a  through which it
    -  //     can be notified to temporarily release the token if the
    -  //     current situation permits this.
    -  //
    -  //     The owner of the token is responsible for deciding which
    -  //     request for the token can be granted.  By using the
    -  //      API, the thread that releases the token
    -  //     temporarily can specify to get the token back right after the
    -  //     other thread has completed using the token.  Thus, there is a
    -  //     dedicated thread that owns the token ``by default.''  This
    -  //     thread grants other threads access to the token by ensuring
    -  //     that whenever somebody else has finished using the token the
    -  //     ``default owner'' first holds the token again, i.e., the
    -  //     owner has the chance to schedule other threads.
    -  //
    -  //     The thread that most likely needs the token most of the time
    -  //     is the thread running the dispatch loop.  Typically the token
    -  //     gets released prior to entering the  call returns, which
    -  //     results probably in many calls to / that
    -  //     are not really needed since no other thread would need the
    -  //     token in the meantime.  That's why the dispatcher thread is
    -  //     chosen to be the owner of the token.
    -  //
    -  //     In case the token would have been released while in  returns from blocking and
    -  //     trying to re-acquire the lock.  Through the token mechanism
    -  //     it is ensured that while another thread is holding the token,
    -  //     the dispatcher thread is blocked in the  call and not
    -  //     in /.  Pass over both the  *and* the
    -  //  to allow the caller to dictate which 
    -  // method the  will invoke.  The 
    -  // indicates how long to blocking trying to notify the
    -  // .  If  == 0, the caller will block until
    -  // action is possible, else will wait until the relative time
    -  // specified in * elapses).
    -
    -  virtual void max_notify_iterations (int);
    -  // Set the maximum number of times that the
    -  //  method will iterate and
    -  // dispatch the  that are passed in via the
    -  // notify pipe before breaking out of its  loop.  By default,
    -  // this is set to -1, which means "iterate until the pipe is empty."
    -  // Setting this to a value like "1 or 2" will increase "fairness"
    -  // (and thus prevent starvation) at the expense of slightly higher
    -  // dispatching overhead.
    -
    -  virtual int max_notify_iterations (void);
    -  // Get the maximum number of times that the
    -  //  method will iterate and
    -  // dispatch the  that are passed in via the
    -  // notify pipe before breaking out of its  loop.
    -
    -  virtual int restart (void);
    -  // Get the existing restart value.
    -  
    -  virtual int restart (int r);
    -  // Set a new value for restart and return the original value.
    -
    -  virtual void requeue_position (int);
    -  // Set position that the main ACE_Select_Reactor thread is requeued in the
    -  // list of waiters during a  callback.
    -
    -  virtual int requeue_position (void);
    -  // Get position that the main ACE_Select_Reactor thread is requeued in the
    -  // list of waiters during a  callback.
    -
    -  // = Low-level wait_set mask manipulation methods.
    -  virtual int mask_ops (ACE_Event_Handler *eh,
    -                        ACE_Reactor_Mask mask,
    -                        int ops);
    -  // GET/SET/ADD/CLR the dispatch mask "bit" bound with the  and
    -  // .
    -
    -  virtual int mask_ops (ACE_HANDLE handle,
    -                        ACE_Reactor_Mask mask,
    -                        int ops);
    -  // GET/SET/ADD/CLR the dispatch MASK "bit" bound with the 
    -  // and .
    -
    -  // = Low-level ready_set mask manipulation methods.
    -  virtual int ready_ops (ACE_Event_Handler *eh,
    -                         ACE_Reactor_Mask mask,
    -                         int ops);
    -  // GET/SET/ADD/CLR the ready "bit" bound with the  and .
    -
    -  virtual int ready_ops (ACE_HANDLE handle,
    -                         ACE_Reactor_Mask,
    -                         int ops);
    -  // GET/SET/ADD/CLR the ready "bit" bound with the  and .
    -
    -  virtual void wakeup_all_threads (void);
    -  // Wake up all threads in waiting in the event loop
    -
    -  // = Only the owner thread that can perform a .
    -
    -  virtual int owner (ACE_thread_t n_id, ACE_thread_t *o_id = 0);
    -  // Set the new owner of the thread and return the old owner.
    -
    -  virtual int owner (ACE_thread_t *);
    -  // Return the current owner of the thread.
    -
    -  // = Miscellaneous Handler operations.
    -  virtual int handler (ACE_HANDLE handle,
    -                       ACE_Reactor_Mask mask,
    -                       ACE_Event_Handler **eh = 0);
    -  // Check to see if  is associated with a valid Event_Handler
    -  // bound to .  Return the  associated with this 
    -  // if  != 0.
    -
    -  virtual int handler (int signum,
    -                       ACE_Event_Handler ** = 0);
    -  // Check to see if  is associated with a valid Event_Handler
    -  // bound to a signal.  Return the  associated with this
    -  //  if  != 0.
    -
    -  virtual int initialized (void);
    -  // Returns true if we've been successfully initialized, else false.
    -
    -  virtual size_t size (void);
    -  // Returns the current size of the Reactor's internal descriptor
    -  // table.
    -
    -  virtual ACE_Lock &lock (void);
    -  // Returns a reference to the  that is
    -  // used to serialize the internal Select_Reactor's processing logic.
    -  // This can be useful for situations where you need to avoid
    -  // deadlock efficiently when  are used in
    -  // multiple threads.
    -
    -  virtual void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  // = Internal methods that do the actual work.
    -
    -  // All of these methods assume that the 's token
    -  // lock is held by the public methods that call down to them.
    -
    -  virtual int register_handler_i (ACE_HANDLE handle,
    -                                  ACE_Event_Handler *eh,
    -                                  ACE_Reactor_Mask mask);
    -  // Do the work of actually binding the  and  with the
    -  // .
    -
    -  virtual int register_handler_i (const ACE_Handle_Set &handles,
    -                                  ACE_Event_Handler *handler,
    -                                  ACE_Reactor_Mask mask);
    -  // Register a set of .
    -
    -  virtual int remove_handler_i (ACE_HANDLE handle,
    -                                ACE_Reactor_Mask);
    -  // Do the work of actually unbinding the  and  with the
    -  // .
    -
    -  virtual int remove_handler_i (const ACE_Handle_Set &handles,
    -                                ACE_Reactor_Mask);
    -  // Remove a set of .
    -
    -  virtual int suspend_i (ACE_HANDLE handle);
    -  // Suspend the  associated with 
    -
    -  virtual int resume_i (ACE_HANDLE handle);
    -  // Resume the  associated with 
    -
    -  virtual int handler_i (ACE_HANDLE handle,
    -                         ACE_Reactor_Mask,
    -                         ACE_Event_Handler ** = 0);
    -  // Implement the public  method.
    -
    -  virtual int handler_i (int signum, ACE_Event_Handler ** = 0);
    -  // Implement the public  method.
    -
    -  virtual int any_ready (ACE_Select_Reactor_Handle_Set &handle_set);
    -  // Check if there are any HANDLEs enabled in the , and
    -  // if so, update the  and return the number ready.  If
    -  // there aren't any HANDLEs enabled return 0.
    -
    -  virtual int any_ready_i (ACE_Select_Reactor_Handle_Set &handle_set);
    -  // Implement the  method, assuming that the Sig_Guard is
    -  // beign held
    -
    -  virtual int handle_error (void);
    -  // Take corrective action when errors occur.
    -
    -  virtual int check_handles (void);
    -  // Make sure the handles are all valid.
    -
    -  virtual int wait_for_multiple_events (ACE_Select_Reactor_Handle_Set &,
    -                                        ACE_Time_Value *);
    -  // Wait for events to occur.
    -
    -  // = Dispatching methods.
    -
    -  virtual int dispatch (int nfound,
    -                        ACE_Select_Reactor_Handle_Set &);
    -  // Template Method that dispatches s for time
    -  // events, I/O events, and signal events.  Returns the total number
    -  // of s that were dispatched or -1 if something
    -  // goes wrong.
    -
    -  virtual int dispatch_timer_handlers (int &number_dispatched);
    -  // Dispatch all timer handlers that have expired.  Returns -1 if the
    -  // state of the  has changed, else 0.
    -  //  is set to the number of timer handlers
    -  // dispatched.
    -
    -  virtual int dispatch_notification_handlers (ACE_Select_Reactor_Handle_Set &dispatch_set,
    -                                              int &number_of_active_handles,
    -                                              int &number_of_handlers_dispatched);
    -  // Dispatch any notification handlers.  Returns -1 if the state of
    -  // the  has changed, else returns number of handlers
    -  // notified.
    -
    -  virtual int dispatch_io_handlers (ACE_Select_Reactor_Handle_Set &dispatch_set,
    -                                    int &number_of_active_handles,
    -                                    int &number_of_handlers_dispatched);
    -  // Dispatch all the input/output/except handlers that are enabled in
    -  // the .  Updates  and
    -  //  according to the behavior of the
    -  // number Returns -1 if the state of the  has changed,
    -  // else 0.
    -
    -  virtual int dispatch_io_set (int number_of_active_handles,
    -                               int &number_of_handlers_dispatched,
    -                               int mask,
    -                               ACE_Handle_Set& dispatch_mask,
    -                               ACE_Handle_Set& ready_mask,
    -                               ACE_EH_PTMF callback);
    -  // Factors the dispatching of an io handle set (each WRITE, EXCEPT
    -  // or READ set of handles).  It updates the
    -  //  and invokes this->notify_handle
    -  // for all the handles in  using the ,
    -  //  and  parameters.  Must return -1 if
    -  // this->state_changed otherwise it must return 0.
    -
    -  virtual void notify_handle (ACE_HANDLE handle,
    -                              ACE_Reactor_Mask mask,
    -                              ACE_Handle_Set &,
    -                              ACE_Event_Handler *eh,
    -                              ACE_EH_PTMF callback);
    -  // Notify the appropriate  in the context of the 
    -  // associated with  that a particular event has occurred.
    -
    -  virtual void renew (void);
    -  // Enqueue ourselves into the list of waiting threads at the
    -  // appropriate point specified by .
    -
    -  ACE_SELECT_REACTOR_TOKEN token_;
    -  // Synchronization token for the MT_SAFE ACE_Select_Reactor.
    -
    -  ACE_Lock_Adapter lock_adapter_;
    -  // Adapter used to return internal lock to outside world.
    -
    -  int release_token (void);
    -  // Release the token lock when a Win32 structured exception occurs.
    -
    -  int handle_events_i (ACE_Time_Value *max_wait_time = 0);
    -  // Stops the VC++ compiler from bitching about exceptions and destructors
    -
    -  sig_atomic_t deactivated_;
    -  // This flag is used to keep track of whether we are actively handling
    -  // events or not.
    -
    -  int mask_signals_;
    -  // If 0 then the Reactor will not mask the signals during the event
    -  // dispatching.  This is useful for applications that do not
    -  // register any signal handlers and want to reduce the overhead
    -  // introduce by the kernel level locks required to change the mask.
    -
    -private:
    -  ACE_UNIMPLEMENTED_FUNC (ACE_Select_Reactor_T (const ACE_Select_Reactor_T &))
    -  ACE_UNIMPLEMENTED_FUNC (ACE_Select_Reactor_T &operator=  (const ACE_Select_Reactor_T &) )
    -  // Deny access since member-wise won't work...
    -};
    -
    -// @@ The latest version of SunCC can't grok the code if we put inline
    -// function here.  Therefore, we temporarily disable the code here.
    -// We shall turn this back on once we know the problem gets fixed.
    -#if 0 // defined (__ACE_INLINE__)
    -#include "ace/Select_Reactor_T.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
    -#include "ace/Select_Reactor_T.cpp"
    -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
    -#pragma implementation ("Select_Reactor_T.cpp")
    -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
    -
    -#endif /* ACE_SELECT_REACTOR_T_H */
    diff --git a/ace/Select_Reactor_T.i b/ace/Select_Reactor_T.i
    deleted file mode 100644
    index 9c447a5d50b..00000000000
    --- a/ace/Select_Reactor_T.i
    +++ /dev/null
    @@ -1,239 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -#include "ace/Reactor.h"
    -
    -template  /* ACE_INLINE */ int
    -ACE_Select_Reactor_T::resume_handler (ACE_Event_Handler *h)
    -{
    -  ACE_TRACE ("ACE_Select_Reactor_T::resume_handler");
    -  return this->resume_handler (h->get_handle ());
    -}
    -
    -template  /* ACE_INLINE */ int
    -ACE_Select_Reactor_T::resume_handler (const ACE_Handle_Set &handles)
    -{
    -  ACE_TRACE ("ACE_Select_Reactor_T::resume_handler");
    -  ACE_Handle_Set_Iterator handle_iter (handles);
    -  ACE_HANDLE h;
    -
    -  ACE_MT (ACE_GUARD_RETURN (ACE_SELECT_REACTOR_TOKEN, ace_mon, this->token_, -1));
    -
    -  while ((h = handle_iter ()) != ACE_INVALID_HANDLE)
    -    if (this->resume_i (h) == -1)
    -      return -1;
    -
    -  return 0;
    -}
    -
    -template  /* ACE_INLINE */ int
    -ACE_Select_Reactor_T::suspend_handler (ACE_Event_Handler *h)
    -{
    -  ACE_TRACE ("ACE_Select_Reactor_T::suspend_handler");
    -  return this->suspend_handler (h->get_handle ());
    -}
    -
    -template  /* ACE_INLINE */ int
    -ACE_Select_Reactor_T::suspend_handler (const ACE_Handle_Set &handles)
    -{
    -  ACE_TRACE ("ACE_Select_Reactor_T::suspend_handler");
    -  ACE_Handle_Set_Iterator handle_iter (handles);
    -  ACE_HANDLE h;
    -
    -  ACE_MT (ACE_GUARD_RETURN (ACE_SELECT_REACTOR_TOKEN, ace_mon, this->token_, -1));
    -
    -  while ((h = handle_iter ()) != ACE_INVALID_HANDLE)
    -    if (this->suspend_i (h) == -1)
    -      return -1;
    -
    -  return 0;
    -}
    -
    -template  /* ACE_INLINE */ int
    -ACE_Select_Reactor_T::register_handler (int signum,
    -                                                                  ACE_Event_Handler *new_sh,
    -                                                                  ACE_Sig_Action *new_disp,
    -                                                                  ACE_Event_Handler **old_sh,
    -                                                                  ACE_Sig_Action *old_disp)
    -{
    -  ACE_TRACE ("ACE_Select_Reactor_T::register_handler");
    -  return this->signal_handler_->register_handler (signum,
    -						  new_sh, new_disp,
    -						  old_sh, old_disp);
    -}
    -
    -#if defined (ACE_WIN32)
    -
    -template  /* ACE_INLINE */ int
    -ACE_Select_Reactor_T::register_handler (ACE_Event_Handler *event_handler,
    -                                                                  ACE_HANDLE event_handle)
    -{
    -  // Don't have an implementation for this yet...
    -  ACE_UNUSED_ARG (event_handler);
    -  ACE_UNUSED_ARG (event_handle);
    -  ACE_NOTSUP_RETURN (-1);
    -}
    -
    -#endif /* ACE_WIN32 */
    -
    -template  /* ACE_INLINE */ int
    -ACE_Select_Reactor_T::register_handler (ACE_HANDLE event_handle,
    -                                                                  ACE_HANDLE io_handle,
    -                                                                  ACE_Event_Handler *event_handler,
    -                                                                  ACE_Reactor_Mask mask)
    -{
    -  // Don't have an implementation for this yet...
    -  ACE_UNUSED_ARG (event_handle);
    -  ACE_UNUSED_ARG (io_handle);
    -  ACE_UNUSED_ARG (event_handler);
    -  ACE_UNUSED_ARG (mask);
    -  ACE_NOTSUP_RETURN (-1);
    -}
    -
    -template  /* ACE_INLINE */ int
    -ACE_Select_Reactor_T::handler (int signum, ACE_Event_Handler **handler)
    -{
    -  ACE_TRACE ("ACE_Select_Reactor_T::handler");
    -  return this->handler_i (signum, handler);
    -}
    -
    -template  /* ACE_INLINE */ int
    -ACE_Select_Reactor_T::remove_handler (int signum,
    -                                                                ACE_Sig_Action *new_disp,
    -                                                                ACE_Sig_Action *old_disp,
    -                                                                int sigkey)
    -{
    -  ACE_TRACE ("ACE_Select_Reactor_T::remove_handler");
    -  return this->signal_handler_->remove_handler (signum, new_disp, old_disp, sigkey);
    -}
    -
    -template  /* ACE_INLINE */ int
    -ACE_Select_Reactor_T::uses_event_associations (void)
    -{
    -  // Since the Select_Reactor does not do any event associations, this
    -  // function always return 0.
    -  return 0;
    -}
    -
    -// = The remaining methods in this file must be called with locks
    -// held.  Note the queue handles its own locking.
    -
    -template  /* ACE_INLINE */ int
    -ACE_Select_Reactor_T::cancel_timer (ACE_Event_Handler *handler,
    -                                                              int dont_call_handle_close)
    -{
    -  ACE_TRACE ("ACE_Select_Reactor_T::cancel_timer");
    -  return this->timer_queue_ != 0 &&
    -    this->timer_queue_->cancel (handler, dont_call_handle_close);
    -}
    -
    -template  /* ACE_INLINE */ int
    -ACE_Select_Reactor_T::cancel_timer (long timer_id,
    -                                                              const void **arg,
    -                                                              int dont_call_handle_close)
    -{
    -  ACE_TRACE ("ACE_Select_Reactor_T::cancel_timer");
    -  return this->timer_queue_->cancel (timer_id,
    -				     arg,
    -				     dont_call_handle_close);
    -}
    -
    -// Performs operations on the "ready" bits.
    -
    -template  /* ACE_INLINE */ int
    -ACE_Select_Reactor_T::ready_ops (ACE_Event_Handler *handler,
    -                                                           ACE_Reactor_Mask mask,
    -                                                           int ops)
    -{
    -  ACE_TRACE ("ACE_Select_Reactor_T::ready_ops");
    -  return this->ready_ops (handler->get_handle (), mask, ops);
    -}
    -
    -// Performs operations on the "dispatch" masks.
    -
    -template  /* ACE_INLINE */ int
    -ACE_Select_Reactor_T::mask_ops (ACE_Event_Handler *handler,
    -                                                          ACE_Reactor_Mask mask,
    -                                                          int ops)
    -{
    -  ACE_TRACE ("ACE_Select_Reactor_T::mask_ops");
    -  return this->mask_ops (handler->get_handle (), mask, ops);
    -}
    -
    -template  /* ACE_INLINE */ int
    -ACE_Select_Reactor_T::schedule_wakeup (ACE_Event_Handler *eh,
    -                                                                 ACE_Reactor_Mask mask)
    -{
    -  ACE_TRACE ("ACE_Select_Reactor_T::schedule_wakeup");
    -  return this->mask_ops (eh->get_handle (), mask, ACE_Reactor::ADD_MASK);
    -}
    -
    -template  /* ACE_INLINE */ int
    -ACE_Select_Reactor_T::cancel_wakeup (ACE_Event_Handler *eh,
    -                                                               ACE_Reactor_Mask mask)
    -{
    -  ACE_TRACE ("ACE_Select_Reactor_T::cancel_wakeup");
    -  return this->mask_ops (eh->get_handle (), mask, ACE_Reactor::CLR_MASK);
    -}
    -
    -template  /* ACE_INLINE */ int
    -ACE_Select_Reactor_T::schedule_wakeup (ACE_HANDLE handle,
    -                                                                 ACE_Reactor_Mask mask)
    -{
    -  ACE_TRACE ("ACE_Select_Reactor_T::schedule_wakeup");
    -  return this->mask_ops (handle, mask, ACE_Reactor::ADD_MASK);
    -}
    -
    -template  /* ACE_INLINE */ int
    -ACE_Select_Reactor_T::cancel_wakeup (ACE_HANDLE handle,
    -                                                               ACE_Reactor_Mask mask)
    -{
    -  ACE_TRACE ("ACE_Select_Reactor_T::cancel_wakeup");
    -  return this->mask_ops (handle, mask, ACE_Reactor::CLR_MASK);
    -}
    -
    -template  /* ACE_INLINE */ ACE_Lock &
    -ACE_Select_Reactor_T::lock (void)
    -{
    -  ACE_TRACE ("ACE_Select_Reactor_T::lock");
    -  return this->lock_adapter_;
    -}
    -
    -template  /* ACE_INLINE */ void
    -ACE_Select_Reactor_T::wakeup_all_threads (void)
    -{
    -  // Send a notification, but don't block if there's no one to receive
    -  // it.
    -  this->notify (0, ACE_Event_Handler::NULL_MASK, (ACE_Time_Value *) &ACE_Time_Value::zero);
    -}
    -
    -template  /* ACE_INLINE */ int
    -ACE_Select_Reactor_T::alertable_handle_events (ACE_Time_Value *max_wait_time)
    -{
    -  return this->handle_events (max_wait_time);
    -}
    -
    -template  /* ACE_INLINE */ int
    -ACE_Select_Reactor_T::alertable_handle_events (ACE_Time_Value &max_wait_time)
    -{
    -  return this->handle_events (max_wait_time);
    -}
    -
    -template  /* ACE_INLINE */ int
    -ACE_Select_Reactor_T::deactivated (void)
    -{
    -  return this->deactivated_;
    -}
    -
    -template  /* ACE_INLINE */ void
    -ACE_Select_Reactor_T::deactivate (int do_stop)
    -{
    -  this->deactivated_ = do_stop;
    -  this->wakeup_all_threads ();
    -}
    -
    -template  /* ACE_INLINE */ size_t
    -ACE_Select_Reactor_T::size (void)
    -{
    -  return this->handler_rep_.size ();
    -}
    diff --git a/ace/Service_Config.cpp b/ace/Service_Config.cpp
    deleted file mode 100644
    index 68d2a96ea55..00000000000
    --- a/ace/Service_Config.cpp
    +++ /dev/null
    @@ -1,885 +0,0 @@
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Svc_Conf.h"
    -#include "ace/Get_Opt.h"
    -#include "ace/ARGV.h"
    -#include "ace/Malloc.h"
    -#include "ace/Service_Manager.h"
    -#include "ace/Service_Repository.h"
    -#include "ace/Service_Types.h"
    -#include "ace/Containers.h"
    -#include "ace/Auto_Ptr.h"
    -#if !defined (ACE_HAS_WINCE)
    -#  include "ace/Proactor.h"
    -#endif /* !ACE_HAS_WINCE */
    -#include "ace/Reactor.h"
    -#include "ace/Thread_Manager.h"
    -
    -#include "ace/Service_Config.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/Service_Config.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, Service_Config, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Service_Config)
    -
    -void
    -ACE_Service_Config::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Service_Config::dump");
    -}
    -
    -// All the factory functions that allocate default statically linked
    -// services should be placed below.
    -
    -// Allocate a Service Manager.
    -
    -ACE_FACTORY_DEFINE (ACE, ACE_Service_Manager)
    -
    -// ----------------------------------------
    -
    -// Set the signal handler to point to the handle_signal() function.
    -ACE_Sig_Adapter *ACE_Service_Config::signal_handler_ = 0;
    -
    -// Trigger a reconfiguration.
    -sig_atomic_t ACE_Service_Config::reconfig_occurred_ = 0;
    -
    -  // = Set by command-line options.
    -char ACE_Service_Config::be_a_daemon_ = 0;
    -char ACE_Service_Config::no_static_svcs_ = 1;
    -
    -// Number of the signal used to trigger reconfiguration.
    -int ACE_Service_Config::signum_ = SIGHUP;
    -
    -// Name of file used to store messages.
    -LPCTSTR ACE_Service_Config::logger_key_ = ACE_DEFAULT_LOGGER_KEY;
    -
    -// The ACE_Service_Manager static service object is now defined by the
    -// ACE_Object_Manager, in Object_Manager.cpp.
    -
    -// Are we initialized already?
    -int ACE_Service_Config::is_initialized_ = 0;
    -
    -// List of statically configured services.
    -
    -ACE_STATIC_SVCS *ACE_Service_Config::static_svcs_ = 0;
    -ACE_SVC_QUEUE *ACE_Service_Config::svc_queue_ = 0;
    -ACE_SVC_QUEUE *ACE_Service_Config::svc_conf_file_queue_ = 0;
    -
    -ACE_STATIC_SVCS *
    -ACE_Service_Config::static_svcs (void)
    -{
    -  if (ACE_Service_Config::static_svcs_ == 0)
    -    ACE_NEW_RETURN (ACE_Service_Config::static_svcs_,
    -                    ACE_STATIC_SVCS,
    -                    0);
    -  return ACE_Service_Config::static_svcs_;
    -}
    -
    -ACE_Allocator *
    -ACE_Service_Config::alloc (void)
    -{
    -  ACE_TRACE ("ACE_Service_Config::allocator");
    -  return ACE_Allocator::instance ();
    -}
    -
    -ACE_Allocator *
    -ACE_Service_Config::alloc (ACE_Allocator *r)
    -{
    -  ACE_TRACE ("ACE_Service_Config::allocator");
    -  return ACE_Allocator::instance (r);
    -}
    -
    -ACE_Reactor *
    -ACE_Service_Config::reactor (void)
    -{
    -  ACE_TRACE ("ACE_Service_Config::reactor");
    -  return ACE_Reactor::instance ();
    -}
    -
    -ACE_Reactor *
    -ACE_Service_Config::reactor (ACE_Reactor *r)
    -{
    -  ACE_TRACE ("ACE_Service_Config::reactor");
    -  return ACE_Reactor::instance (r);
    -}
    -
    -ACE_Service_Repository *
    -ACE_Service_Config::svc_rep ()
    -{
    -  ACE_TRACE ("ACE_Service_Config::svc_rep");
    -  return ACE_Service_Repository::instance ();
    -}
    -
    -ACE_Service_Repository *
    -ACE_Service_Config::svc_rep (ACE_Service_Repository *s)
    -{
    -  ACE_TRACE ("ACE_Service_Config::svc_rep");
    -  return ACE_Service_Repository::instance (s);
    -}
    -
    -ACE_Thread_Manager *
    -ACE_Service_Config::thr_mgr (void)
    -{
    -  ACE_TRACE ("ACE_Service_Config::thr_mgr");
    -  return ACE_Thread_Manager::instance ();
    -}
    -
    -ACE_Thread_Manager *
    -ACE_Service_Config::thr_mgr (ACE_Thread_Manager *tm)
    -{
    -  ACE_TRACE ("ACE_Service_Config::thr_mgr");
    -  return ACE_Thread_Manager::instance (tm);
    -}
    -
    -// Totally remove  from the daemon by removing it from the
    -// ACE_Reactor, and unlinking it if necessary.
    -
    -int
    -ACE_Service_Config::remove (const ASYS_TCHAR svc_name[])
    -{
    -  ACE_TRACE ("ACE_Service_Config::remove");
    -  return ACE_Service_Repository::instance ()->remove (svc_name);
    -}
    -
    -// Suspend .  Note that this will not unlink the service
    -// from the daemon if it was dynamically linked, it will mark it as
    -// being suspended in the Service Repository and call the 
    -// member function on the appropriate .  A service
    -// can be resumed later on by calling the  method...
    -
    -int
    -ACE_Service_Config::suspend (const ASYS_TCHAR svc_name[])
    -{
    -  ACE_TRACE ("ACE_Service_Config::suspend");
    -  return ACE_Service_Repository::instance ()->suspend (svc_name);
    -}
    -
    -// Resume a SVC_NAME that was previously suspended or has not yet
    -// been resumed (e.g., a static service).
    -
    -int
    -ACE_Service_Config::resume (const ASYS_TCHAR svc_name[])
    -{
    -  ACE_TRACE ("ACE_Service_Config::resume");
    -  return ACE_Service_Repository::instance ()->resume (svc_name);
    -}
    -
    -// Initialize the Service Repository.  Note that this *must* be
    -// performed in the constructor (rather than ) since otherwise
    -// the repository will not be properly initialized to allow static
    -// configuration of services...
    -
    -ACE_Service_Config::ACE_Service_Config (int ignore_static_svcs,
    -                                        size_t size,
    -                                        int signum)
    -{
    -  ACE_TRACE ("ACE_Service_Config::ACE_Service_Config");
    -  ACE_Service_Config::no_static_svcs_ = (char) ignore_static_svcs;
    -  ACE_Service_Config::signum_ = signum;
    -
    -  // Initialize the Service Repository.
    -  ACE_Service_Repository::instance (size);
    -
    -  // Initialize the ACE_Reactor (the ACE_Reactor should be the same
    -  // size as the ACE_Service_Repository).
    -  ACE_Reactor::instance ();
    -}
    -
    -int
    -ACE_Service_Config::init_svc_conf_file_queue (void)
    -{
    -  if (ACE_Service_Config::svc_conf_file_queue_ == 0)
    -      ACE_NEW_RETURN (ACE_Service_Config::svc_conf_file_queue_,
    -                      ACE_SVC_QUEUE,
    -                      -1);
    -  return 0;
    -}
    -
    -// Handle the command-line options intended for the
    -// ACE_Service_Config.
    -
    -int
    -ACE_Service_Config::parse_args (int argc, ASYS_TCHAR *argv[])
    -{
    -  ACE_TRACE ("ACE_Service_Config::parse_args");
    -  ACE_Get_Opt getopt (argc,
    -                      argv,
    -                      ASYS_TEXT ("bdf:k:nys:S:"),
    -                      1); // Start at argv[1].
    -
    -  if (ACE_Service_Config::init_svc_conf_file_queue () == -1)
    -    return -1;
    -
    -  for (int c; (c = getopt ()) != -1; )
    -    switch (c)
    -      {
    -      case 'b':
    -        ACE_Service_Config::be_a_daemon_ = 1;
    -        break;
    -      case 'd':
    -        ACE::debug (1);
    -        break;
    -      case 'f':
    -        if (ACE_Service_Config::svc_conf_file_queue_->enqueue_tail
    -            (ACE_CString (getopt.optarg)) == -1)
    -          ACE_ERROR_RETURN ((LM_ERROR,
    -                             ASYS_TEXT ("%p\n"),
    -                             "enqueue_tail"),
    -                            -1);
    -        break;
    -      case 'k':
    -        ACE_Service_Config::logger_key_ =
    -          ASYS_ONLY_WIDE_STRING (getopt.optarg);
    -        break;
    -      case 'n':
    -        ACE_Service_Config::no_static_svcs_ = 1;
    -        break;
    -      case 'y':
    -        ACE_Service_Config::no_static_svcs_ = 0;
    -        break;
    -      case 's':
    -        {
    -          // There's no point in dealing with this on NT since it
    -          // doesn't really support signals very well...
    -#if !defined (ACE_LACKS_UNIX_SIGNALS)
    -          ACE_Service_Config::signum_ =
    -            ACE_OS::atoi (getopt.optarg);
    -
    -          if (ACE_Reactor::instance ()->register_handler
    -              (ACE_Service_Config::signum_,
    -               ACE_Service_Config::signal_handler_) == -1)
    -            ACE_ERROR_RETURN ((LM_ERROR,
    -                               ASYS_TEXT ("cannot obtain signal handler\n")),
    -                              -1);
    -#endif /* ACE_LACKS_UNIX_SIGNALS */
    -          break;
    -        }
    -      case 'S':
    -        if (ACE_Service_Config::svc_queue_ == 0)
    -          ACE_NEW_RETURN (ACE_Service_Config::svc_queue_,
    -                          ACE_SVC_QUEUE,
    -                          -1);
    -        if (ACE_Service_Config::svc_queue_->enqueue_tail
    -            (ACE_CString (getopt.optarg)) == -1)
    -          ACE_ERROR_RETURN ((LM_ERROR,
    -                             ASYS_TEXT ("%p\n"),
    -                             "enqueue_tail"),
    -                            -1);
    -        break;
    -      default:
    -        ACE_ERROR_RETURN ((LM_ERROR,
    -                           ASYS_TEXT ("%c is not a ACE_Service_Config option\n"),
    -                           c),
    -                          -1);
    -      }
    -
    -  return 0;
    -}
    -
    -// Initialize and activate a statically linked service.
    -
    -int
    -ACE_Service_Config::initialize (const ASYS_TCHAR svc_name[],
    -                                ASYS_TCHAR *parameters)
    -{
    -  ACE_TRACE ("ACE_Service_Config::initialize");
    -  ACE_ARGV args (parameters);
    -  ACE_Service_Type *srp = 0;
    -
    -  if (ACE::debug ())
    -    ACE_DEBUG ((LM_DEBUG,
    -                ASYS_TEXT ("opening static service %s\n"),
    -                svc_name));
    -
    -  if (ACE_Service_Repository::instance ()->find
    -      (svc_name,
    -       (const ACE_Service_Type **) &srp) == -1)
    -    ACE_ERROR_RETURN ((LM_ERROR,
    -                       ASYS_TEXT ("%s not found\n"),
    -                       svc_name),
    -                      -1);
    -  else if (srp->type ()->init (args.argc (),
    -                               args.argv ()) == -1)
    -    {
    -      // Remove this entry.
    -      ACE_ERROR ((LM_ERROR,
    -                         ASYS_TEXT ("static initialization failed, %p\n"),
    -                         svc_name));
    -      ACE_Service_Repository::instance ()->remove (svc_name);
    -      return -1;
    -    }
    -  else
    -    {
    -      srp->active (1);
    -      return 0;
    -    }
    -}
    -
    -// Dynamically link the shared object file and retrieve a pointer to
    -// the designated shared object in this file.
    -
    -int
    -ACE_Service_Config::initialize (const ACE_Service_Type *sr,
    -                                ASYS_TCHAR parameters[])
    -{
    -  ACE_TRACE ("ACE_Service_Config::initialize");
    -  ACE_ARGV args (parameters);
    -
    -  if (ACE::debug ())
    -    ACE_DEBUG ((LM_DEBUG,
    -                ASYS_TEXT ("opening dynamic service %s\n"),
    -                sr->name ()));
    -
    -  if (ACE_Service_Repository::instance ()->insert (sr) == -1)
    -    ACE_ERROR_RETURN ((LM_ERROR,
    -                       ASYS_TEXT ("insertion failed, %p\n"),
    -                       sr->name ()),
    -                      -1);
    -  else if (sr->type ()->init (args.argc (),
    -                              args.argv ()) == -1)
    -    {
    -      ACE_ERROR ((LM_ERROR,
    -                  ASYS_TEXT ("dynamic initialization failed for %s\n"),
    -                  sr->name ()));
    -      ACE_Service_Repository::instance ()->remove (sr->name ());
    -      return -1;
    -    }
    -  else
    -    return 0;
    -}
    -
    -int
    -ACE_Service_Config::process_directives_i (void)
    -{
    -  // AC 970827 Skip the heap check because yacc allocates a buffer
    -  // here which will be reported as a memory leak for some reason.
    -  ACE_NO_HEAP_CHECK
    -
    -  // The fact that these are all global variables means that we really
    -  // can't be doing this processing in multiple threads
    -  // simultaneously...
    -  ace_yyerrno = 0;
    -  ace_yylineno = 1;
    -
    -  ACE_Obstack *oldstack = ace_obstack;
    -
    -  ACE_NEW_RETURN (ace_obstack,
    -                  ACE_Obstack,
    -                  -1);
    -
    -  ace_yyparse ();
    -
    -  delete ace_obstack;
    -  ace_obstack = oldstack;
    -
    -  if (ace_yyerrno > 0)
    -    {
    -      // This is a hack, better errors should be provided...
    -      errno = EINVAL; 
    -      return ace_yyerrno;
    -    }
    -  else
    -    return 0;
    -}
    -
    -int
    -ACE_Service_Config::process_directive (const ASYS_TCHAR directive[])
    -{
    -  ACE_TRACE ("ACE_Service_Config::process_directives");
    -  ACE_UNUSED_ARG (directive);
    -
    -  ace_yyrestart (0);
    -
    -  // Place  into a buffer that the YY_INPUT macro knows how
    -  // to process correctly.
    -  ace_yydirective = directive;
    -
    -  int result = ACE_Service_Config::process_directives_i ();
    -
    -  // Reset to 0 to avoid confusing the YY_INPUT macro on subsequent
    -  // requests.
    -  ace_yydirective = 0;
    -  return result;
    -}
    -
    -// Process service configuration requests as indicated in the queue of
    -// svc.conf files.
    -
    -int
    -ACE_Service_Config::process_directives (void)
    -{
    -  ACE_TRACE ("ACE_Service_Config::process_directives");
    -
    -  int result = 0;
    -
    -  if (ACE_Service_Config::svc_conf_file_queue_ != 0)
    -    {
    -      ACE_CString *sptr = 0;
    -      ACE_SVC_QUEUE &queue = *ACE_Service_Config::svc_conf_file_queue_;
    -
    -      // Iterate through all the svc.conf files.
    -      for (ACE_SVC_QUEUE_ITERATOR iter (queue);
    -           iter.next (sptr) != 0;
    -           iter.advance ())
    -        {
    -          // @@ We can remove the ASYS_WIDE_STRING stuff when this is
    -          // defined as an ACE_WString...
    -          FILE *fp = ACE_OS::fopen (ASYS_WIDE_STRING (sptr->fast_rep ()),
    -                                    ASYS_TEXT ("r"));
    -          if (fp == 0)
    -            {
    -              // Invalid svc.conf file.  We'll report it here and
    -              // break out of the method.
    -              if (ACE::debug ())
    -                ACE_DEBUG ((LM_DEBUG,
    -                            ASYS_TEXT ("%p\n"),
    -                            // @@ Beware of the WString here...  Not
    -                            // sure how to fix this with %p...
    -                            ASYS_WIDE_STRING (sptr->fast_rep ())));
    -              errno = ENOENT;
    -              result = -1;
    -              break;
    -            }
    -          else
    -            {
    -              ace_yyrestart (fp);
    -              // Keep track of the number of errors.
    -              result += ACE_Service_Config::process_directives_i ();
    -            }
    -          ACE_OS::fclose (fp);
    -        }
    -    }
    -
    -  return result;
    -}
    -
    -int
    -ACE_Service_Config::process_commandline_directives (void)
    -{
    -  int result = 0;
    -
    -  if (ACE_Service_Config::svc_queue_ != 0)
    -    {
    -      ACE_CString *sptr = 0;
    -      ACE_SVC_QUEUE &queue = *ACE_Service_Config::svc_queue_;
    -
    -      for (ACE_SVC_QUEUE_ITERATOR iter (queue);
    -           iter.next (sptr) != 0;
    -           iter.advance ())
    -        {
    -          // Process just a single directive.
    -          if (ACE_Service_Config::process_directive
    -              (ASYS_WIDE_STRING (sptr->fast_rep ())) == -1)
    -            {
    -              ACE_ERROR ((LM_ERROR,
    -                          ASYS_TEXT ("%p\n"),
    -                          ASYS_TEXT ("process_directive")));
    -              result = -1;
    -            }
    -        }
    -
    -      delete ACE_Service_Config::svc_queue_;
    -      ACE_Service_Config::svc_queue_ = 0;
    -    }
    -
    -  return result;
    -}
    -
    -// Add the default statically-linked services to the Service
    -// Repository.
    -
    -int
    -ACE_Service_Config::load_static_svcs (void)
    -{
    -  ACE_TRACE ("ACE_Service_Config::load_static_svcs");
    -
    -  ACE_Static_Svc_Descriptor **ssdp = 0;
    -  ACE_STATIC_SVCS &svcs = *ACE_Service_Config::static_svcs ();
    -
    -  for (ACE_STATIC_SVCS_ITERATOR iter (svcs);
    -       iter.next (ssdp) != 0;
    -       iter.advance ())
    -    {
    -      ACE_Static_Svc_Descriptor *ssd = *ssdp;
    -
    -      ACE_Service_Object_Exterminator gobbler;
    -      void *sym = (*ssd->alloc_)(&gobbler);
    -
    -      ACE_Service_Type_Impl *stp =
    -        ace_create_service_type (ssd->name_,
    -                                 ssd->type_,
    -                                 sym,
    -                                 ssd->flags_,
    -                                 gobbler);
    -      if (stp == 0)
    -        continue;
    -
    -      ACE_Service_Type *sr;
    -
    -      ACE_NEW_RETURN (sr,
    -                      ACE_Service_Type (ssd->name_,
    -                                        stp,
    -                                        0,
    -                                        ssd->active_),
    -                      -1);
    -      if (ACE_Service_Repository::instance ()->insert (sr) == -1)
    -        return -1;
    -    }
    -  return 0;
    -}
    -
    -// Performs an open without parsing command-line arguments.
    -
    -int
    -ACE_Service_Config::open_i (const ASYS_TCHAR program_name[],
    -                            LPCTSTR logger_key,
    -                            int ignore_default_svc_conf_file)
    -{
    -  int result = 0;
    -  ACE_TRACE ("ACE_Service_Config::open");
    -  ACE_Log_Msg *log_msg = ACE_LOG_MSG;
    -
    -  // Record the current log setting upon entering this thread.
    -  int debugging_enabled =
    -    log_msg->log_priority_enabled (LM_DEBUG);
    -
    -  if (ACE_Service_Config::is_initialized_ != 0)
    -    // Guard against reentrant processing!
    -    return 0;
    -  else
    -    ACE_Service_Config::is_initialized_++;
    -
    -  if (ACE_Service_Config::init_svc_conf_file_queue () == -1)
    -    return -1;
    -  else if (!ignore_default_svc_conf_file
    -      && ACE_Service_Config::svc_conf_file_queue_->is_empty ()
    -      // Load the default "svc.conf" entry here if there weren't
    -      // overriding -f arguments in .
    -      && ACE_Service_Config::svc_conf_file_queue_->enqueue_tail
    -           (ACE_CString (ACE_DEFAULT_SVC_CONF)) == -1)
    -    ACE_ERROR_RETURN ((LM_ERROR,
    -                       ASYS_TEXT ("%p\n"),
    -                       "enqueue_tail"),
    -                      -1);
    -
    -  // If -d was included as a startup parameter, the user wants debug
    -  // information printed during service initialization.
    -  if (ACE::debug ())
    -    ACE_Log_Msg::enable_debug_messages ();
    -  else
    -    // The user has requested no debugging info.
    -    ACE_Log_Msg::disable_debug_messages ();
    -
    -  // Become a daemon before doing anything else.
    -  if (ACE_Service_Config::be_a_daemon_)
    -    ACE_Service_Config::start_daemon ();
    -
    -  u_long flags = log_msg->flags ();
    -
    -  if (flags == 0)
    -    // Only use STDERR if the caller hasn't already set the flags.
    -    flags = (u_long) ACE_Log_Msg::STDERR;
    -
    -  LPCTSTR key = logger_key;
    -
    -  if (key == 0 || ACE_OS::strcmp (key, ACE_DEFAULT_LOGGER_KEY) == 0)
    -    // Only use the static  if the caller doesn't
    -    // override it in the parameter list or if the key supplied is
    -    // equal to the default static logger key.
    -    key = ACE_Service_Config::logger_key_;
    -
    -  if (log_msg->open (program_name,
    -                     flags,
    -                     key) == -1)
    -    result = -1;
    -  else
    -    {
    -      if (ACE::debug ())
    -        ACE_DEBUG ((LM_STARTUP,
    -                    ASYS_TEXT ("starting up daemon %n\n")));
    -
    -      // Initialize the Service Repository (this will still work if
    -      // user forgets to define an object of type ACE_Service_Config).
    -      ACE_Service_Repository::instance (ACE_Service_Config::MAX_SERVICES);
    -
    -      // Initialize the ACE_Reactor (the ACE_Reactor should be the
    -      // same size as the ACE_Service_Repository).
    -      ACE_Reactor::instance ();
    -
    -      // There's no point in dealing with this on NT since it doesn't
    -      // really support signals very well...
    -#if !defined (ACE_LACKS_UNIX_SIGNALS)
    -      // @@ This really ought to be a Singleton.
    -      if (ACE_Reactor::instance ()->register_handler
    -          (ACE_Service_Config::signum_,
    -           ACE_Service_Config::signal_handler_) == -1)
    -        ACE_ERROR ((LM_ERROR,
    -                    ASYS_TEXT ("can't register signal handler\n")));
    -#endif /* ACE_LACKS_UNIX_SIGNALS */
    -
    -      // See if we need to load the static services.
    -      if (ACE_Service_Config::no_static_svcs_ == 0
    -          && ACE_Service_Config::load_static_svcs () == -1)
    -        result = -1;
    -      else
    -        {
    -          if (ACE_Service_Config::process_commandline_directives () == -1)
    -            result = -1;
    -          else
    -            result = ACE_Service_Config::process_directives ();
    -        }
    -    }
    -
    -  {
    -    // Make sure to save/restore errno properly.
    -    ACE_Errno_Guard error (errno);
    -
    -    ace_yy_delete_parse_buffer ();
    -
    -    // Reset debugging back to the way it was when we came into into
    -    // .
    -    if (debugging_enabled)
    -      ACE_Log_Msg::enable_debug_messages ();
    -    else
    -      // Debugging was off when we entered .
    -      ACE_Log_Msg::disable_debug_messages ();
    -  }
    -  return result;
    -}
    -
    -ACE_Service_Config::ACE_Service_Config (const ASYS_TCHAR program_name[],
    -                                        LPCTSTR logger_key)
    -{
    -  ACE_TRACE ("ACE_Service_Config::ACE_Service_Config");
    -
    -  if (this->open (program_name,
    -                  logger_key) == -1
    -      && errno != ENOENT)
    -    // Only print out an error if it wasn't the svc.conf file that was
    -    // missing.
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT ("%p\n"),
    -                program_name));
    -}
    -
    -// Signal handling API to trigger dynamic reconfiguration.
    -
    -void
    -ACE_Service_Config::handle_signal (int sig,
    -                                   siginfo_t *,
    -                                   ucontext_t *)
    -{
    -#if defined (ACE_NDEBUG)
    -  ACE_UNUSED_ARG (sig);
    -#else  /* ! ACE_NDEBUG */
    -  ACE_ASSERT (ACE_Service_Config::signum_ == sig);
    -#endif /* ! ACE_NDEBUG */
    -
    -  ACE_Service_Config::reconfig_occurred_ = 1;
    -}
    -
    -// Trigger the reconfiguration process.
    -
    -void
    -ACE_Service_Config::reconfigure (void)
    -{
    -  ACE_TRACE ("ACE_Service_Config::reconfigure");
    -
    -  ACE_Service_Config::reconfig_occurred_ = 0;
    -
    -  if (ACE::debug ())
    -    {
    -#if !defined (ACE_NLOGGING)
    -      time_t t = ACE_OS::time (0);
    -#endif /* ! ACE_NLOGGING */
    -      if (ACE::debug ())
    -        ACE_DEBUG ((LM_DEBUG,
    -                    ASYS_TEXT ("beginning reconfiguration at %s"),
    -                    ACE_OS::ctime (&t)));
    -    }
    -  if (ACE_Service_Config::process_directives () == -1)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT ("%p\n"),
    -                ASYS_TEXT ("process_directives")));
    -}
    -
    -// Run the event loop until the 
    -// method returns -1 or the  method
    -// is invoked.
    -
    -int
    -ACE_Service_Config::run_reactor_event_loop (void)
    -{
    -  ACE_TRACE ("ACE_Service_Config::run_reactor_event_loop");
    -
    -  return ACE_Reactor::run_event_loop ();
    -}
    -
    -// Run the event loop until the  method
    -// returns -1, the  method is invoked, or the
    -//  expires.
    -
    -int
    -ACE_Service_Config::run_reactor_event_loop (ACE_Time_Value &tv)
    -{
    -  ACE_TRACE ("ACE_Service_Config::run_reactor_event_loop");
    -
    -  return ACE_Reactor::run_event_loop (tv);
    -}
    -
    -/* static */
    -int
    -ACE_Service_Config::end_reactor_event_loop (void)
    -{
    -  ACE_TRACE ("ACE_Service_Config::end_reactor_event_loop");
    -  return ACE_Reactor::end_event_loop ();
    -}
    -
    -/* static */
    -int
    -ACE_Service_Config::reactor_event_loop_done (void)
    -{
    -  ACE_TRACE ("ACE_Service_Config::reactor_event_loop_done");
    -  return ACE_Reactor::event_loop_done ();
    -}
    -
    -// Tidy up and perform last rites on a terminating ACE_Service_Config.
    -int
    -ACE_Service_Config::close (void)
    -{
    -  ACE_TRACE ("ACE_Service_Config::close");
    -
    -  ACE_Service_Config::is_initialized_--;
    -  if (ACE_Service_Config::is_initialized_ > 0)
    -    return 0;
    -
    -  // Delete the service repository. All the objects inside the service
    -  // repository have already been finalized .
    -  ACE_Service_Config::close_svcs ();
    -
    -  // Delete the list fo svc.conf files
    -  delete ACE_Service_Config::svc_conf_file_queue_;
    -  ACE_Service_Config::svc_conf_file_queue_ = 0;
    -
    -  // Delete the dynamically allocated static_svcs instance.
    -  delete ACE_Service_Config::static_svcs_;
    -  ACE_Service_Config::static_svcs_ = 0;
    -
    -  // We've prepared a buffer that we no longer need. Delete it.
    -  ace_yy_delete_parse_buffer ();
    -
    -  return 0;
    -}
    -
    -int
    -ACE_Service_Config::close_svcs (void)
    -{
    -  ACE_TRACE ("ACE_Service_Config::close_svcs");
    -
    -  ACE_Service_Repository::close_singleton ();
    -
    -  return 0;
    -}
    -
    -int
    -ACE_Service_Config::fini_svcs (void)
    -{
    -  ACE_TRACE ("ACE_Service_Config::fini_svcs");
    -
    -  // Clear the LM_DEBUG bit from log messages if appropriate
    -  if (ACE::debug ())
    -    ACE_Log_Msg::disable_debug_messages ();
    -
    -  int result = 0;
    -  if (ACE_Service_Repository::instance () != 0)
    -    result = ACE_Service_Repository::instance ()->fini ();
    -
    -  // Since the fini() method of the objects inside the service
    -  // repository may reference the ACE singletons, they must be
    -  // destroyed after the objects have been finalized.
    -  ACE_Service_Config::close_singletons ();
    -
    -  if (ACE::debug ())
    -    ACE_Log_Msg::enable_debug_messages ();
    -
    -  return result;
    -}
    -
    -int
    -ACE_Service_Config::close_singletons (void)
    -{
    -  ACE_TRACE ("ACE_Service_Config::close_singletons");
    -
    -  ACE_Reactor::close_singleton ();
    -#if !defined (ACE_HAS_WINCE)
    -  ACE_Proactor::close_singleton ();
    -#endif /* !ACE_HAS_WINCE */
    -  ACE_Thread_Manager::close_singleton ();
    -
    -  return 0;
    -}
    -
    -// Perform user-specified close activities and remove dynamic memory.
    -
    -ACE_Service_Config::~ACE_Service_Config (void)
    -{
    -  ACE_TRACE ("ACE_Service_Config::~ACE_Service_Config");
    -}
    -
    -// ************************************************************
    -
    -/* static */
    -int
    -ACE_Service_Config::reconfig_occurred (void)
    -{
    -  ACE_TRACE ("ACE_Service_Config::reconfig_occurred");
    -  return ACE_Service_Config::reconfig_occurred_ != 0;
    -}
    -
    -void
    -ACE_Service_Config::reconfig_occurred (int config_occurred)
    -{
    -  ACE_TRACE ("ACE_Service_Config::reconfig_occurred");
    -  ACE_Service_Config::reconfig_occurred_ = config_occurred;
    -}
    -
    -// Become a daemon (i.e., run as a "background" process).
    -
    -int
    -ACE_Service_Config::start_daemon (void)
    -{
    -  ACE_TRACE ("ACE_Service_Config::start_daemon");
    -  return ACE::daemonize ();
    -}
    -
    -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
    -template class ACE_Node;
    -template class ACE_Unbounded_Set;
    -template class ACE_Unbounded_Set_Iterator;
    -template class ACE_Node;
    -template class ACE_Unbounded_Queue;
    -template class ACE_Unbounded_Queue_Iterator;
    -template class ACE_Unbounded_Set;
    -template class ACE_Unbounded_Set_Iterator;
    -template class ACE_Malloc;
    -template class ACE_Allocator_Adapter >;
    -template class auto_ptr;
    -template class ACE_Auto_Basic_Ptr;
    -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
    -#pragma instantiate ACE_Node
    -#pragma instantiate ACE_Unbounded_Set
    -#pragma instantiate ACE_Unbounded_Set_Iterator
    -#pragma instantiate ACE_Node
    -#pragma instantiate ACE_Unbounded_Queue
    -#pragma instantiate ACE_Unbounded_Queue_Iterator
    -#pragma instantiate ACE_Unbounded_Set
    -#pragma instantiate ACE_Unbounded_Set_Iterator
    -#pragma instantiate ACE_Malloc
    -#pragma instantiate ACE_Allocator_Adapter >
    -#pragma instantiate auto_ptr
    -#pragma instantiate ACE_Auto_Basic_Ptr
    -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
    diff --git a/ace/Service_Config.h b/ace/Service_Config.h
    deleted file mode 100644
    index 159a484c52d..00000000000
    --- a/ace/Service_Config.h
    +++ /dev/null
    @@ -1,410 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Service_Config.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_SERVICE_CONFIG_H
    -#define ACE_SERVICE_CONFIG_H
    -
    -#include "ace/Service_Object.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Signal.h"
    -#include "ace/Containers.h"
    -#include "ace/SString.h"
    -
    -// Forward decl.
    -class ACE_Service_Repository;
    -class ACE_Service_Type;
    -class ACE_Allocator;
    -class ACE_Reactor;
    -class ACE_Thread_Manager;
    -
    -extern "C"
    -{
    -  typedef ACE_Service_Object *(*ACE_SERVICE_ALLOCATOR) (ACE_Service_Object_Exterminator *);
    -}
    -
    -class ACE_Static_Svc_Descriptor
    -{
    -  // = TITLE
    -  //   Holds the information necessary to describe a statically linked
    -  //   Svc.
    -public:
    -  const ASYS_TCHAR *name_;
    -  // Name of the service.
    -
    -  int type_;
    -  // Type of service.
    -
    -  ACE_SERVICE_ALLOCATOR alloc_;
    -  // Factory function that allocates the service.
    -
    -  u_int flags_;
    -  // Bitmask flags indicating how the framework should delete memory.
    -
    -  int active_;
    -  // Flag indicating whether the service starts out active.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -public:
    -  int operator== (ACE_Static_Svc_Descriptor &) const;
    -  // Compare two service descriptors for equality.
    -};
    -
    -// Maintain a set of the statically linked service descriptors.
    -typedef ACE_Unbounded_Set
    -        ACE_STATIC_SVCS;
    -typedef ACE_Unbounded_Set_Iterator
    -        ACE_STATIC_SVCS_ITERATOR;
    -
    -// Maintain a queue of services to be configured from the
    -// command-line.
    -typedef ACE_Unbounded_Queue
    -        ACE_SVC_QUEUE;
    -typedef ACE_Unbounded_Queue_Iterator
    -        ACE_SVC_QUEUE_ITERATOR;
    -
    -class ACE_Export ACE_Service_Config
    -{
    -  // = TITLE
    -  //     Supplies common server operations for dynamic and static
    -  //     configuration of services.
    -  //
    -  // = DESCRIPTION
    -  //     The  uses the Monostate pattern.  Therefore,
    -  //     you can only have one of these instantiated per-process.
    -  //
    -  //     NOTE: the signal_handler_ static member is allocated by the
    -  //     .  The  constructor
    -  //     uses signal_handler_.  Therefore, if the program has any
    -  //     static  objects, there might be
    -  //     initialization order problems.  They can be minimized, but
    -  //     not eliminated, by _not_ #defining
    -  //     ACE_HAS_NONSTATIC_OBJECT_MANAGER.
    -public:
    -  enum 
    -  {
    -    MAX_SERVICES = ACE_DEFAULT_SERVICE_REPOSITORY_SIZE
    -  };
    -
    -  // = Initialization and termination methods.
    -
    -  ACE_Service_Config (int ignore_static_svcs = 1,
    -                      size_t size = ACE_Service_Config::MAX_SERVICES,
    -                      int signum = SIGHUP);
    -  // Initialize the Service Repository.
    -
    -  ACE_Service_Config (const ASYS_TCHAR program_name[],
    -                      LPCTSTR logger_key = ACE_DEFAULT_LOGGER_KEY);
    -  // Performs an open without parsing command-line arguments.
    -
    -  static int open_i (const ASYS_TCHAR program_name[],
    -                     LPCTSTR logger_key = ACE_DEFAULT_LOGGER_KEY,
    -                     int ignore_default_svc_conf_file = 0);
    -  // Performs an open without parsing command-line arguments.  If
    -  //  is non-0 then the "svc.conf" file
    -  // will be ignored.  Returns number of errors that occurred on
    -  // failure and 0 otherwise.
    -
    -  static int open (const ASYS_TCHAR program_name[],
    -                   LPCTSTR logger_key = ACE_DEFAULT_LOGGER_KEY,
    -                   int ignore_static_svcs = 1,
    -                   int ignore_default_svc_conf_file = 0);
    -  // Performs an open without parsing command-line arguments.  If
    -  //  is non-0 then the 
    -  // configuration file will be ignored.  Returns zero upon success,
    -  // -1 if the file is not found or cannot be opened (errno is set
    -  // accordingly), otherwise returns the number of errors encountered
    -  // loading the services in the specified svc.conf configuration
    -  // file.
    -
    -  static int open (int argc,
    -                   ASYS_TCHAR *argv[],
    -                   LPCTSTR logger_key = ACE_DEFAULT_LOGGER_KEY,
    -                   int ignore_static_svcs = 1,
    -                   int ignore_default_svc_conf = 0);
    -  // This is the primary entry point into the ACE_Service_Config (the
    -  // constructor just handles simple initializations).  It parses
    -  // arguments passed in from the command-line.  The arguments that
    -  // are valid in a call to this method include:
    -  //
    -  // '-b' - Option to indicate that we should be a daemon
    -  // '-d' - Turn on debugging mode
    -  // '-f' - Option to read in the list of svc.conf file names
    -  // '-k' - Option to read a wide string where in the logger output can
    -  //        be written
    -  // '-y' - Option required to use statically linked services.
    -  //        A static service repostory will be constructed if the flag
    -  //        is used.  Use this flag to override the default
    -  //         flag at run-time.
    -  // '-n' - Option to avoid using any statically linked services, which
    -  //        eliminates the need to construct the static service repository.
    -  // '-S' - Option to read in the list of services on the command-line
    -  //        Please observe the difference between options '-f' that looks
    -  //        for a list of files and here a list of services.
    -  //
    -  // Returns number of errors that occurred on failure and 0
    -  // otherwise.
    -
    -  virtual ~ACE_Service_Config (void);
    -  // Perform user-specified close activities and remove dynamic
    -  // memory.
    -
    -  static int close (void);
    -  // Tidy up and perform last rites when ACE_Service_Config is shut
    -  // down.  This method calls  and .
    -  // Returns 0.
    -
    -  static int fini_svcs (void);
    -  // Perform user-specified close hooks and possibly delete all of the
    -  // configured services in the .
    -
    -  static int close_svcs (void);
    -  // Perform user-specified close hooks on all of the configured
    -  // services in the , then delete the
    -  //  itself.  Returns 0.
    -
    -  static int close_singletons (void);
    -  // Delete the dynamically allocated Singletons (i.e., the ,
    -  // , , , and ).
    -  // Returns 0.
    -
    -  // = Reactor event loop management methods.
    -  static int run_reactor_event_loop (void);
    -  // Run the event loop until the  method
    -  // returns -1 or the  method is invoked.
    -  // DO NOT USE THIS METHOD. It may be unsupported in future releases.
    -  // Use  instead.
    -
    -  static int run_reactor_event_loop (ACE_Time_Value &tv);
    -  // Run the event loop until the  method
    -  // returns -1, the  method is invoked, or the
    -  //  expires.
    -  // DO NOT USE THIS METHOD. It may be unsupported in future releases.
    -  //  instead.
    -
    -  static int end_reactor_event_loop (void);
    -  // Instruct the  to terminate its event loop and
    -  // notifies the  so that it can wake up
    -  // and close down gracefully.
    -  // DO NOT USE THIS METHOD. It may be unsupported in future releases.
    -  // Use  instead.
    -
    -  static int reactor_event_loop_done (void);
    -  // Report if the Reactor's event loop is finished.
    -  // DO NOT USE THIS METHOD. It may be unsupported in future releases.
    -  // Use  instead.
    -
    -  static int reconfig_occurred (void);
    -  // True if reconfiguration occurred.
    -
    -  static void reconfig_occurred (int);
    -  // Indicate that reconfiguration occurred.
    -
    -  static void reconfigure (void);
    -  // Perform the reconfiguration process.
    -
    -  // = The following methods are static in order to enforce Singleton
    -  // semantics for the Reactor, Service_Repository, Thread_Manager,
    -  // and Acceptor/Connector Strategy factory.  Other portions of the
    -  // system may need to access them at some point or another...
    -
    -  // = Accessors and mutators for process-wide Singletons.
    -
    -  static ACE_STATIC_SVCS *static_svcs (void);
    -  // Returns a pointer to the list of statically linked services.
    -
    -  static ACE_Reactor *reactor (void);
    -  // Get pointer to a process-wide .
    -  // DO NOT USE THIS METHOD. It may be unsupported in future releases.
    -  // Use  instead.
    -
    -  static ACE_Reactor *reactor (ACE_Reactor *);
    -  // Set pointer to a process-wide  and return existing
    -  // pointer.
    -  // DO NOT USE THIS METHOD. It may be unsupported in future releases.
    -  // Use  instead.
    -
    -  static ACE_Service_Repository *svc_rep (void);
    -  // Get pointer to a process-wide .
    -  // DO NOT USE THIS METHOD. It may be unsupported in future releases.
    -  // Use  instead.
    -
    -  static ACE_Service_Repository *svc_rep (ACE_Service_Repository *);
    -  // Set pointer to a process-wide  and return
    -  // existing pointer.
    -  // DO NOT USE THIS METHOD. It may be unsupported in future releases.
    -  // Use  instead.
    -
    -  static ACE_Thread_Manager *thr_mgr (void);
    -  // Get pointer to a process-wide .
    -  // DO NOT USE THIS METHOD. It may be unsupported in future releases.
    -  // Use  instead.
    -
    -  static ACE_Thread_Manager *thr_mgr (ACE_Thread_Manager *);
    -  // Set pointer to a process-wide  and return
    -  // existing pointer.
    -  // DO NOT USE THIS METHOD. It may be unsupported in future releases.
    -  // Use  instead.
    -
    -  static ACE_Allocator *alloc (void);
    -  // Get pointer to a default .
    -  // DO NOT USE THIS METHOD. It may be unsupported in future releases.
    -  // Use  instead.
    -
    -  static ACE_Allocator *alloc (ACE_Allocator *);
    -  // Set pointer to a process-wide  and return existing
    -  // pointer.
    -  // DO NOT USE THIS METHOD. It may be unsupported in future releases.
    -  // Use  instead.
    -
    -  // = Utility methods.
    -  static int initialize (const ACE_Service_Type *,
    -                         ASYS_TCHAR parameters[]);
    -  // Dynamically link the shared object file and retrieve a pointer to
    -  // the designated shared object in this file.
    -
    -  static int initialize (const ASYS_TCHAR svc_name[],
    -                         ASYS_TCHAR parameters[]);
    -  // Initialize and activate a statically  service.
    -
    -  static int resume (const ASYS_TCHAR svc_name[]);
    -  // Resume a  that was previously suspended or has not yet
    -  // been resumed (e.g., a static service).
    -
    -  static int suspend (const ASYS_TCHAR svc_name[]);
    -  // Suspend .  Note that this will not unlink the service
    -  // from the daemon if it was dynamically linked, it will mark it as
    -  // being suspended in the Service Repository and call the 
    -  // member function on the appropriate .  A
    -  // service can be resumed later on by calling the  member
    -  // function...
    -
    -  static int remove (const ASYS_TCHAR svc_name[]);
    -  // Totally remove  from the daemon by removing it
    -  // from the ACE_Reactor, and unlinking it if necessary.
    -
    -#if defined (ACE_HAS_WINCE)
    -  // We must provide these function to bridge the  parser
    -  // with ACE.
    -  static int initialize (const ACE_Service_Type *, char parameters[]);
    -  static int initialize (const char svc_name[], char parameters[]);
    -  static int resume (const char svc_name[]);
    -  static int suspend (const char svc_name[]);
    -  static int remove (const char svc_name[]);
    -#endif /* ACE_HAS_WINCE */
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  static ACE_INLINE void signal_handler (ACE_Sig_Adapter *);
    -  // Set the signal_handler;for internal use by ACE_Object_Manager only.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -  static int process_directive (const ASYS_TCHAR directive[]);
    -  // Process one service configuration , which is passed as
    -  // a string.  Returns the number of errors that occurred.
    -
    -  static int process_directives (void);
    -  // Process (or re-process) service configuration requests that are
    -  // provided in the svc.conf file(s).  Returns the number of errors
    -  // that occurred.
    -
    -  static void handle_signal (int sig, siginfo_t *, ucontext_t *);
    -  // Handles signals to trigger reconfigurations.
    -
    -protected:
    -  static int process_commandline_directives (void);
    -  // Process service configuration requests that were provided on the
    -  // command-line.  Returns the number of errors that occurred.
    -
    -  static int process_directives_i (void);
    -  // This is the implementation function that  and
    -  //  both call.  Returns the number of errors that
    -  // occurred.
    -
    -  static int parse_args (int, ASYS_TCHAR *argv[]);
    -  // Handle the command-line options intended for the
    -  // .  Note that  is assumed to be the
    -  // program name.
    -
    -  static int start_daemon (void);
    -  // Become a daemon.
    -
    -  static int load_static_svcs (void);
    -  // Add the default statically-linked services to the
    -  // .
    -
    -private:
    -  static LPCTSTR logger_key_;
    -  // Where to write the logging output.
    -
    -  static ACE_STATIC_SVCS *static_svcs_;
    -  // Singleton repository of statically linked services.
    -
    -  static ACE_SVC_QUEUE *svc_queue_;
    -  // Queue of services specified on the command-line.
    -
    -  static ACE_SVC_QUEUE *svc_conf_file_queue_;
    -  // Queue of svc.conf files specified on the command-line.
    -  // @@ This should probably be made to handle unicode filenames...
    -
    -  static int init_svc_conf_file_queue (void);
    -  // Initialize the  if necessary.
    -
    -  static sig_atomic_t reconfig_occurred_;
    -  // True if reconfiguration occurred.
    -
    -  // = Set by command-line options.
    -  static char be_a_daemon_;
    -  // Shall we become a daemon process?
    -
    -  static char no_static_svcs_;
    -  // Should we avoid loading the static services?
    -
    -  static int signum_;
    -  // Number of the signal used to trigger reconfiguration.
    -
    -  static ACE_Sig_Adapter *signal_handler_;
    -  // Handles the reconfiguration signals.
    -
    -  static int is_initialized_;
    -  // Keep track of whether the  is already
    -  // initialized.  If so, we can't allow  to be called since
    -  // it's not reentrant.  This variable is incremented by the
    -  //  method and decremented by the
    -  //  method.
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Service_Config.i"
    -#endif /* __ACE_INLINE__ */
    -
    -// These must go here to avoid circular includes...  (only left here
    -// for to not break applications which rely on this - no real need any
    -// longer)
    -#include "ace/Reactor.h"
    -#include "ace/Svc_Conf_Tokens.h"
    -#endif /* ACE_SERVICE_CONFIG_H */
    diff --git a/ace/Service_Config.i b/ace/Service_Config.i
    deleted file mode 100644
    index c0aff18fde6..00000000000
    --- a/ace/Service_Config.i
    +++ /dev/null
    @@ -1,87 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// Service_Config.i
    -
    -// This is the primary entry point into the ACE_Service_Config (the
    -// constructor just handles simple initializations).
    -
    -ACE_INLINE int
    -ACE_Service_Config::open (const ASYS_TCHAR program_name[],
    -                          LPCTSTR logger_key,
    -                          int ignore_static_svcs,
    -                          int ignore_default_svc_conf)
    -{
    -  ACE_TRACE ("ACE_Service_Config::open");
    -  ACE_Service_Config::no_static_svcs_ = ignore_static_svcs;
    -
    -  return ACE_Service_Config::open_i (program_name,
    -                                     logger_key,
    -                                     ignore_default_svc_conf);
    -}
    -
    -ACE_INLINE int
    -ACE_Service_Config::open (int argc,
    -                          ASYS_TCHAR *argv[],
    -                          LPCTSTR logger_key,
    -                          int ignore_static_svcs,
    -                          int ignore_default_svc_conf)
    -{
    -  ACE_TRACE ("ACE_Service_Config::open");
    -  ACE_Service_Config::no_static_svcs_ = ignore_static_svcs;
    -
    -  if (ACE_Service_Config::parse_args (argc, argv) == -1)
    -    return -1;
    -  else
    -    return ACE_Service_Config::open_i (argv[0],
    -                                       logger_key,
    -                                       ignore_default_svc_conf);
    -}
    -
    -// Compare two service descriptors for equality.
    -
    -ACE_INLINE int
    -ACE_Static_Svc_Descriptor::operator== (ACE_Static_Svc_Descriptor &d) const
    -{
    -  return ACE_OS::strcmp (name_, d.name_) == 0;
    -}
    -
    -ACE_INLINE void
    -ACE_Service_Config::signal_handler (ACE_Sig_Adapter *signal_handler)
    -{
    -  signal_handler_ = signal_handler;
    -}
    -
    -#if defined (ACE_HAS_WINCE)
    -  // We must provide these function to bridge Svc_Conf parser with ACE.
    -
    -ACE_INLINE int
    -ACE_Service_Config::initialize (const ACE_Service_Type *sp, char parameters[])
    -{
    -  return ACE_Service_Config::initialize (sp, ACE_WIDE_STRING (parameters));
    -}
    -
    -ACE_INLINE int
    -ACE_Service_Config::initialize (const char svc_name[], char parameters[])
    -{
    -  return ACE_Service_Config::initialize (ACE_WIDE_STRING (svc_name), ACE_WIDE_STRING (parameters));
    -}
    -
    -ACE_INLINE int
    -ACE_Service_Config::resume (const char svc_name[])
    -{
    -  return ACE_Service_Config::resume (ACE_WIDE_STRING (svc_name));
    -}
    -
    -ACE_INLINE int
    -ACE_Service_Config::suspend (const char svc_name[])
    -{
    -  return ACE_Service_Config::suspend (ACE_WIDE_STRING (svc_name));
    -}
    -
    -ACE_INLINE int
    -ACE_Service_Config::remove (const char svc_name[])
    -{
    -  return ACE_Service_Config::remove (ACE_WIDE_STRING (svc_name));
    -}
    -#endif /* ACE_HAS_WINCE */
    diff --git a/ace/Service_Manager.cpp b/ace/Service_Manager.cpp
    deleted file mode 100644
    index 3e49485f5f7..00000000000
    --- a/ace/Service_Manager.cpp
    +++ /dev/null
    @@ -1,316 +0,0 @@
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Get_Opt.h"
    -#include "ace/Service_Repository.h"
    -#include "ace/Service_Config.h"
    -#include "ace/Service_Manager.h"
    -#include "ace/Reactor.h"
    -#include "ace/WFMO_Reactor.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/Service_Manager.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, Service_Manager, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Service_Manager)
    -
    -void
    -ACE_Service_Manager::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Service_Manager::dump");
    -}
    -
    -// Static variables.
    -
    -u_short ACE_Service_Manager::DEFAULT_PORT_ = 10000;
    -
    -ACE_Service_Manager::ACE_Service_Manager (void)
    -  : debug_ (0),
    -    signum_ (SIGHUP)
    -{
    -  ACE_TRACE ("ACE_Service_Manager::ACE_Service_Manager");
    -}
    -
    -int
    -ACE_Service_Manager::suspend (void)
    -{
    -  ACE_TRACE ("ACE_Service_Manager::suspend");
    -  return ACE_Reactor::instance ()->suspend_handler (this);
    -}
    -
    -int
    -ACE_Service_Manager::resume (void)
    -{
    -  ACE_TRACE ("ACE_Service_Manager::resume");
    -  return ACE_Reactor::instance ()->resume_handler (this);
    -}
    -
    -int
    -ACE_Service_Manager::open (const ACE_INET_Addr &sia)
    -{
    -  ACE_TRACE ("ACE_Service_Manager::open");
    -
    -  // Reuse the listening address, even if it's already in use!
    -  if (this->acceptor_.open (sia, 1) == -1)
    -    return -1;
    -  return 0;
    -}
    -
    -int
    -ACE_Service_Manager::info (ASYS_TCHAR **strp, size_t length) const
    -{
    -  ACE_TRACE ("ACE_Service_Manager::info");
    -  ACE_INET_Addr sa;
    -  ASYS_TCHAR buf[BUFSIZ];
    -
    -  if (this->acceptor_.get_local_addr (sa) == -1)
    -    return -1;
    -
    -  ACE_OS::sprintf (buf,
    -                   ASYS_TEXT ("%d/%s %s"),
    -                   sa.get_port_number (),
    -                   ASYS_TEXT ("tcp"),
    -                   ASYS_TEXT ("# lists all services in the daemon\n"));
    -  if (*strp == 0 && (*strp = ACE_OS::strdup (buf)) == 0)
    -    return -1;
    -  else
    -    ACE_OS::strncpy (*strp, buf, length);
    -  return ACE_OS::strlen (buf);
    -}
    -
    -int
    -ACE_Service_Manager::init (int argc, ASYS_TCHAR *argv[])
    -{
    -  ACE_TRACE ("ACE_Service_Manager::init");
    -  ACE_INET_Addr local_addr (ACE_Service_Manager::DEFAULT_PORT_);
    -  ACE_Get_Opt getopt (argc, argv, ASYS_TEXT ("dp:s:"), 0); // Start at argv[0]
    -
    -  for (int c; (c = getopt ()) != -1; )
    -     switch (c)
    -       {
    -       case 'd':
    -         this->debug_ = 1;
    -         break;
    -       case 'p':
    -         local_addr.set ((u_short) ACE_OS::atoi (getopt.optarg));
    -         break;
    -       case 's':
    -         this->signum_ = ACE_OS::atoi (getopt.optarg);
    -         break;
    -       default:
    -         break;
    -       }
    -
    -  if (this->get_handle () == ACE_INVALID_HANDLE &&
    -      this->open (local_addr) == -1)
    -    ACE_ERROR_RETURN ((LM_ERROR,
    -                       ASYS_TEXT ("%p\n"),
    -                       ASYS_TEXT ("open")), -1);
    -  else if (ACE_Reactor::instance ()->register_handler
    -           (this,
    -            ACE_Event_Handler::ACCEPT_MASK) == -1)
    -    ACE_ERROR_RETURN ((LM_ERROR,
    -                       ASYS_TEXT ("registering service with ACE_Reactor\n")),
    -                      -1);
    -  return 0;
    -}
    -
    -int
    -ACE_Service_Manager::handle_close (ACE_HANDLE, ACE_Reactor_Mask)
    -{
    -  ACE_TRACE ("ACE_Service_Manager::handle_close");
    -  return this->acceptor_.close ();
    -}
    -
    -int
    -ACE_Service_Manager::fini (void)
    -{
    -  ACE_TRACE ("ACE_Service_Manager::fini");
    -
    -  int retv = 0;
    -  if (this->get_handle () != ACE_INVALID_HANDLE)
    -    {
    -      retv = ACE_Reactor::instance ()->remove_handler
    -        (this,
    -         ACE_Event_Handler::ACCEPT_MASK |
    -         ACE_Event_Handler::DONT_CALL);
    -      this->handle_close (ACE_INVALID_HANDLE,
    -                          ACE_Event_Handler::NULL_MASK);
    -    }
    -  return retv;
    -}
    -
    -ACE_HANDLE
    -ACE_Service_Manager::get_handle (void) const
    -{
    -  ACE_TRACE ("ACE_Service_Manager::get_handle");
    -  return this->acceptor_.get_handle ();
    -}
    -
    -int
    -ACE_Service_Manager::handle_signal (int, siginfo_t *, ucontext_t *)
    -{
    -  return 0;
    -}
    -
    -// Determine all the services offered by this daemon and return the
    -// information back to the client.
    -
    -int
    -ACE_Service_Manager::list_services (void)
    -{
    -  ACE_TRACE ("ACE_Service_Manager::list_services");
    -  ACE_Service_Repository_Iterator sri (*ACE_Service_Repository::instance ());
    -
    -  for (const ACE_Service_Type *sr;
    -       sri.next (sr) != 0;
    -       sri.advance ())
    -    {
    -      int len = ACE_OS::strlen (sr->name ()) + 1;
    -      ASYS_TCHAR buf[BUFSIZ];
    -      ASYS_TCHAR *p = buf + len;
    -
    -      ACE_OS::strcpy (buf, sr->name ());
    -
    -      p[-1] = ' ';
    -      p[0]  = '\0';
    -
    -      len += sr->type ()->info (&p, sizeof buf - len);
    -
    -      if (this->debug_)
    -        ACE_DEBUG ((LM_DEBUG,
    -                    ASYS_TEXT ("len = %d, info = %s%s"),
    -                    len,
    -                    buf,
    -                    buf[len - 1] == '\n' ? ASYS_TEXT ("") : ASYS_TEXT ("\n")));
    -
    -      if (len > 0)
    -        {
    -          ssize_t n = this->client_stream_.send_n (ASYS_ONLY_MULTIBYTE_STRING (buf),
    -                                                   len);
    -
    -          if (n != len || (n == -1 && errno != EPIPE))
    -            ACE_ERROR ((LM_ERROR,
    -                        ASYS_TEXT ("%p\n"),
    -                        ASYS_TEXT ("send_n")));
    -        }
    -    }
    -
    -  return 0;
    -}
    -
    -// Trigger a remote reconfiguration of the Service Configurator.
    -
    -int
    -ACE_Service_Manager::reconfigure_services (void)
    -{
    -  ACE_TRACE ("ACE_Service_Manager::reconfigure_services");
    -
    -#if 0
    -// Send ourselves a signal!  ACE_OS::kill (ACE_OS::getpid (),
    -// this->signum_);
    -#endif /* 0 */
    -
    -  // Flag the main event loop that a reconfiguration should occur.
    -  // The next trip through the  should
    -  // pick this up and cause a reconfiguration.  Note that we can't
    -  // trigger the reconfiguration automatically since that might "pull
    -  // the rug" out from underneath the existing services in a
    -  // problematic way.
    -  ACE_Service_Config::reconfig_occurred ((sig_atomic_t) 1);
    -  return this->client_stream_.send_n ("done\n",
    -                                      sizeof ("done\n"));
    -}
    -
    -// Accept new connection from client and carry out the service they
    -// request.
    -
    -int
    -ACE_Service_Manager::handle_input (ACE_HANDLE)
    -{
    -  ACE_TRACE ("ACE_Service_Manager::handle_input");
    -
    -  // Try to find out if the implementation of the reactor that we are
    -  // using requires us to reset the event association for the newly
    -  // created handle. This is because the newly created handle will
    -  // inherit the properties of the listen handle, including its event
    -  // associations.
    -  int reset_new_handle =
    -    ACE_Reactor::instance ()->uses_event_associations ();
    -
    -  if (this->acceptor_.accept (this->client_stream_, // stream
    -                              0, // remote address
    -                              0, // timeout
    -                              1, // restart
    -                              reset_new_handle  // reset new handler
    -                              ) == -1)
    -    return -1;
    -
    -  if (this->debug_)
    -    {
    -      ACE_DEBUG ((LM_DEBUG,
    -                  ASYS_TEXT ("client_stream fd = %d\n"),
    -                 this->client_stream_.get_handle ()));
    -      ACE_INET_Addr sa;
    -      if (this->client_stream_.get_remote_addr (sa) == -1)
    -        return -1;
    -
    -      ACE_DEBUG ((LM_DEBUG,
    -                  ASYS_TEXT ("accepted from host %s at port %d\n"),
    -                  sa.get_host_name (),
    -                  sa.get_port_number ()));
    -    }
    -
    -  char request[BUFSIZ];
    -
    -  // Read service request from client.
    -
    -  switch (client_stream_.recv (request, sizeof request))
    -    {
    -    case -1:
    -      if (this->debug_)
    -        ACE_DEBUG ((LM_ERROR,
    -                    ASYS_TEXT ("%p\n"),
    -                    ASYS_TEXT ("recv")));
    -      break;
    -    case 0:
    -      return 0;
    -      /* NOTREACHED */
    -    default:
    -      {
    -        char *p;
    -
    -        // Kill trailing newlines.
    -        for (p = request;
    -             (*p != '\0') && (*p != '\r') && (*p != '\n');
    -             p++)
    -          continue;
    -
    -        *p = '\0';
    -
    -        ACE_Event_Handler *old_signal_handler = 0;
    -        ACE_Reactor::instance ()->register_handler (SIGPIPE,
    -                                                    this,
    -                                                    0,
    -                                                    &old_signal_handler);
    -        if (ACE_OS::strcmp (request, "help") == 0)
    -          this->list_services ();
    -        else if (ACE_OS::strcmp (request, "reconfigure") == 0)
    -          this->reconfigure_services ();
    -
    -        // Additional management services may be handled here...
    -
    -        // Restore existing SIGPIPE handler
    -        ACE_Reactor::instance ()->register_handler (SIGPIPE,
    -                                                    old_signal_handler);
    -      }
    -    }
    -
    -  if (this->client_stream_.close () == -1 && this->debug_)
    -    ACE_DEBUG ((LM_ERROR,
    -                ASYS_TEXT ("%p\n"),
    -                ASYS_TEXT ("close")));
    -  return 0;
    -}
    diff --git a/ace/Service_Manager.h b/ace/Service_Manager.h
    deleted file mode 100644
    index be40a485987..00000000000
    --- a/ace/Service_Manager.h
    +++ /dev/null
    @@ -1,106 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Service_Manager.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_SERVICE_MANAGER_H
    -#define ACE_SERVICE_MANAGER_H
    -
    -#include "ace/SOCK_Stream.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/SOCK_Acceptor.h"
    -#include "ace/INET_Addr.h"
    -#include "ace/Service_Object.h"
    -
    -class ACE_Export ACE_Service_Manager : public ACE_Service_Object
    -{
    -  // = TITLE
    -  //     Provide a standard ACE service for managing all the services
    -  //     configured in an .
    -  //
    -  // = DESCRIPTION
    -  //     This implementation is very simple.  It just handles each
    -  //     client request one at a time.  Each request is associated
    -  //     with a new connection, which is closed when the request is
    -  //     processed.  In addition, you must be using the singleton
    -  //      in order to trigger reconfigurations.
    -  //     This scheme can certainly be improved.
    -public:
    -  // = Initialization and termination hooks.
    -  ACE_Service_Manager (void);
    -  // Constructor.
    -
    -  ~ACE_Service_Manager (void);
    -  // Destructor.
    -
    -protected:
    -  // = Perform the various meta-services.
    -  virtual int reconfigure_services (void);
    -  // Trigger a remote reconfiguration of the Service Configurator.
    -
    -  virtual int list_services (void);
    -  // Determine all the services offered by this daemon and return the
    -  // information back to the client.
    -
    -  // = Dynamic linking hooks.
    -  virtual int init (int argc, ASYS_TCHAR *argv[]);
    -  virtual int info (ASYS_TCHAR **info_string, size_t length) const;
    -  virtual int fini (void);
    -
    -  // = Scheduling hooks.
    -  virtual int suspend (void);
    -  virtual int resume (void);
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  int open (const ACE_INET_Addr &sia);
    -
    -  // = Demultiplexing hooks.
    -  virtual ACE_HANDLE get_handle (void) const;
    -  virtual int handle_input (ACE_HANDLE fd);
    -  virtual int handle_close (ACE_HANDLE fd, ACE_Reactor_Mask);
    -  virtual int handle_signal (int signum, siginfo_t *, ucontext_t *);
    -
    -  ACE_SOCK_Stream client_stream_;
    -  // Connection to the client (we only support one client connection
    -  // at a time).
    -
    -  ACE_SOCK_Acceptor acceptor_;
    -  // Acceptor instance.
    -
    -  int debug_;
    -  // Keep track of the debugging level.
    -
    -  int signum_;
    -  // The signal used to trigger reconfiguration.
    -
    -  static u_short DEFAULT_PORT_;
    -  // Default port for the Acceptor to listen on.
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Service_Manager.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* _SERVICE_MANAGER_H */
    diff --git a/ace/Service_Manager.i b/ace/Service_Manager.i
    deleted file mode 100644
    index a040265d05f..00000000000
    --- a/ace/Service_Manager.i
    +++ /dev/null
    @@ -1,10 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// Service_Manager.i
    -
    -ACE_INLINE
    -ACE_Service_Manager::~ACE_Service_Manager (void)
    -{
    -  ACE_TRACE ("ACE_Service_Manager::~ACE_Service_Manager");
    -}
    diff --git a/ace/Service_Object.cpp b/ace/Service_Object.cpp
    deleted file mode 100644
    index a35507ca7e6..00000000000
    --- a/ace/Service_Object.cpp
    +++ /dev/null
    @@ -1,106 +0,0 @@
    -// $Id$
    -
    -// Service_Object.cpp
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Service_Types.h"
    -#include "ace/Service_Object.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/Service_Object.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, Service_Object, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Service_Object)
    -ACE_ALLOC_HOOK_DEFINE(ACE_Service_Type)
    -
    -void
    -ACE_Service_Type::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Service_Type::dump");
    -}
    -
    -ACE_Service_Type::ACE_Service_Type (const ASYS_TCHAR *n,
    -				    ACE_Service_Type_Impl *t,
    -				    const ACE_SHLIB_HANDLE h,
    -				    int active)
    -  : name_ (0),
    -#if defined (ACE_HAS_MOSTLY_UNICODE_APIS)
    -    chname_ (0),
    -#endif /* ACE_HAS_MOSTLY_UNICODE_APIS */
    -    type_ (t),
    -    handle_ (h),
    -    active_ (active),
    -    fini_already_called_ (0)
    -{
    -  ACE_TRACE ("ACE_Service_Type::ACE_Service_Type");
    -  this->name (n);
    -}
    -
    -ACE_Service_Type::~ACE_Service_Type (void)
    -{
    -  ACE_TRACE ("ACE_Service_Type::~ACE_Service_Type");
    -
    -  this->fini ();
    -
    -  if (this->handle_ != 0)
    -    ACE_OS::dlclose ((ACE_SHLIB_HANDLE) this->handle_);
    -
    -  delete [] (ASYS_TCHAR *) this->name_;
    -
    -#if defined (ACE_HAS_MOSTLY_UNICODE_APIS)
    -  delete [] (char *) this->chname_;
    -#endif /* ACE_HAS_MOSTLY_UNICODE_APIS */
    -}
    -
    -void
    -ACE_Service_Type::fini (void)
    -{
    -  if (!this->fini_already_called_)
    -    {
    -      this->type_->fini ();
    -      this->fini_already_called_ = 1;
    -    }
    -}
    -
    -void
    -ACE_Service_Type::suspend (void) const
    -{
    -  ACE_TRACE ("ACE_Service_Type::suspend");
    -  ((ACE_Service_Type *) this)->active_ = 0;
    -  this->type_->suspend ();
    -}
    -
    -void
    -ACE_Service_Type::resume (void) const
    -{
    -  ACE_TRACE ("ACE_Service_Type::resume");
    -  ((ACE_Service_Type *) this)->active_ = 1;
    -  this->type_->resume ();
    -}
    -
    -ACE_Service_Object::ACE_Service_Object (ACE_Reactor *r)
    -  : ACE_Event_Handler (r)
    -{
    -  ACE_TRACE ("ACE_Service_Object::ACE_Service_Object");
    -}
    -
    -ACE_Service_Object::~ACE_Service_Object (void)
    -{
    -  ACE_TRACE ("ACE_Service_Object::~ACE_Service_Object");
    -}
    -
    -int
    -ACE_Service_Object::suspend (void)
    -{
    -  ACE_TRACE ("ACE_Service_Object::suspend");
    -  return 0;
    -}
    -
    -int
    -ACE_Service_Object::resume (void)
    -{
    -  ACE_TRACE ("ACE_Service_Object::resume");
    -  return 0;
    -}
    diff --git a/ace/Service_Object.h b/ace/Service_Object.h
    deleted file mode 100644
    index 4a54586ec68..00000000000
    --- a/ace/Service_Object.h
    +++ /dev/null
    @@ -1,166 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Service_Object.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_SERVICE_OBJECT_H
    -#define ACE_SERVICE_OBJECT_H
    -
    -#include "ace/Shared_Object.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Event_Handler.h"
    -
    -class ACE_Export ACE_Service_Object : public ACE_Event_Handler, public ACE_Shared_Object
    -{
    -  // = TITLE
    -  //     Provide the abstract base class common to all service
    -  //     implementations.
    -  //
    -  // = DESCRIPTION
    -  //     Classes that inherit from  are capable
    -  //     of being registered with the  (due to the
    -  //     , as well as being dynamically linked by
    -  //     the  (due to the ).
    -public:
    -  // = Initialization and termination methods.
    -  ACE_Service_Object (ACE_Reactor * = 0);
    -  // Constructor.
    -
    -  virtual ~ACE_Service_Object (void);
    -  // Destructor.
    -
    -  virtual int suspend (void);
    -    // Temporarily disable a service without removing it completely.
    -
    -  virtual int resume (void);
    -    // Re-enable a previously suspended service.
    -};
    -
    -// Forward decl.
    -class ACE_Service_Type_Impl;
    -
    -class ACE_Export ACE_Service_Type
    -{
    -  // = TITLE
    -  //      Keeps track of information related to the various
    -  //       subclasses.
    -  //
    -  // = DESCRIPTION
    -  //      This class acts as the interface of the "Bridge" pattern.
    -public:
    -  enum
    -  {
    -    DELETE_OBJ = 1,
    -    // Delete the payload object.
    -
    -    DELETE_THIS = 2
    -    // Delete the enclosing object.
    -  };
    -
    -  // = Initialization and termination methods.
    -  ACE_Service_Type (const ASYS_TCHAR *n,
    -                    ACE_Service_Type_Impl *o,
    -                    const ACE_SHLIB_HANDLE handle,
    -                    int active);
    -  ~ACE_Service_Type (void);
    -
    -  const ASYS_TCHAR *name (void) const;
    -  void name (const ASYS_TCHAR *);
    -  const char *chname (void) const;
    -
    -  const ACE_Service_Type_Impl *type (void) const;
    -  void type (const ACE_Service_Type_Impl *,
    -             int active = 1);
    -
    -  ACE_SHLIB_HANDLE handle (void) const;
    -  void handle (const ACE_SHLIB_HANDLE);
    -
    -  void suspend (void) const;
    -  void resume (void) const;
    -  int  active (void) const;
    -  void active (int);
    -
    -  void fini (void);
    -  // Calls  on 
    -
    -  int fini_called (void) const;
    -  // Check if the service has been fini'ed.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  const ASYS_TCHAR *name_;
    -  // Humanly readible name of svc.
    -
    -#if defined (ACE_HAS_MOSTLY_UNICODE_APIS)
    -  char *chname_;
    -  // This interface is used to pass char name when instantiate
    -  // ACE_Parse_Node.
    -#endif /* ACE_HAS_MOSTLY_UNICODE_APIS */
    -
    -  const ACE_Service_Type_Impl *type_;
    -  // Pointer to C++ object that implements the svc.
    -
    -  ACE_SHLIB_HANDLE handle_;
    -  // Handle to shared object file (non-zero if dynamically linked).
    -
    -  int active_;
    -  // 1 if svc is currently active, otherwise 0.
    -
    -  int fini_already_called_;
    -  // 1 if  on  has already been called, otherwise 0.
    -};
    -
    -class ACE_Export ACE_Service_Object_Ptr
    -{
    -  // = TITLE
    -  //     This is a smart pointer that holds onto the associated
    -  //      * until the current scope is left, at
    -  //     which point the object's  hook is called and the
    -  //     service_object_ gets deleted.
    -  //
    -  // = DESCRIPTION
    -  //     This class is similar to the Standard C++ Library class
    -  //     .  It is used in conjunction with statically linked
    -  //     , as shown in the
    -  //     ./netsvcs/server/main.cpp example.
    -public:
    -  // = Initialization and termination methods.
    -  ACE_Service_Object_Ptr (ACE_Service_Object *so);
    -  // Acquire ownership of the .
    -
    -  ~ACE_Service_Object_Ptr (void);
    -  // Release the held  by calling its  hook.
    -
    -  ACE_Service_Object *operator-> ();
    -  // Smart pointer to access the underlying .
    -
    -private:
    -  ACE_Service_Object *service_object_;
    -  // Holds the service object until we're done.
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Service_Object.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_SERVICE_OBJECT_H */
    diff --git a/ace/Service_Object.i b/ace/Service_Object.i
    deleted file mode 100644
    index 184b48a7da2..00000000000
    --- a/ace/Service_Object.i
    +++ /dev/null
    @@ -1,101 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// Service_Object.i
    -
    -ACE_INLINE ACE_Service_Object_Ptr::ACE_Service_Object_Ptr (ACE_Service_Object *so)
    -  : service_object_ (so)
    -{
    -}
    -
    -ACE_INLINE ACE_Service_Object_Ptr::~ACE_Service_Object_Ptr (void)
    -{
    -  this->service_object_->fini ();
    -  delete this->service_object_;
    -}
    -
    -ACE_INLINE ACE_Service_Object *
    -ACE_Service_Object_Ptr::operator-> ()
    -{
    -  return this->service_object_;
    -}
    -
    -ACE_INLINE const ASYS_TCHAR *
    -ACE_Service_Type::name (void) const
    -{
    -  ACE_TRACE ("ACE_Service_Type::name");
    -  return this->name_;
    -}
    -
    -ACE_INLINE const char *
    -ACE_Service_Type::chname (void) const
    -{
    -#if !defined (ACE_HAS_MOSTLY_UNICODE_APIS)
    -  return this->name ();
    -#else
    -  return this->chname_;
    -#endif /* !ACE_HAS_MOSTLY_UNICODE_APIS */
    -}
    -
    -ACE_INLINE const ACE_Service_Type_Impl *
    -ACE_Service_Type::type (void) const
    -{
    -  ACE_TRACE ("ACE_Service_Type::type");
    -  return this->type_;
    -}
    -
    -ACE_INLINE ACE_SHLIB_HANDLE
    -ACE_Service_Type::handle (void) const
    -{
    -  ACE_TRACE ("ACE_Service_Type::handle");
    -  return this->handle_;
    -}
    -
    -ACE_INLINE void
    -ACE_Service_Type::name (const ASYS_TCHAR *n)
    -{
    -  ACE_TRACE ("ACE_Service_Type::name");
    -
    -  delete [] (ASYS_TCHAR *) this->name_;
    -  this->name_ = ACE::strnew (n);
    -#if defined (ACE_HAS_MOSTLY_UNICODE_APIS)
    -  delete [] (char *) this->chname_;
    -  this->chname_ = ACE_OS_WString (this->name_).char_rep ();
    -#endif /* !ACE_HAS_MOSTLY_UNICODE_APIS */
    -}
    -
    -ACE_INLINE void
    -ACE_Service_Type::type (const ACE_Service_Type_Impl *o, int enabled)
    -{
    -  ACE_TRACE ("ACE_Service_Type::type");
    -  this->type_ = o;
    -  ((ACE_Service_Type *) this)->active_ = enabled;
    -}
    -
    -ACE_INLINE void
    -ACE_Service_Type::handle (const ACE_SHLIB_HANDLE h)
    -{
    -  ACE_TRACE ("ACE_Service_Type::handle");
    -  this->handle_ = h;
    -}
    -
    -ACE_INLINE int
    -ACE_Service_Type::active (void) const
    -{
    -  ACE_TRACE ("ACE_Service_Type::active");
    -  return this->active_ != 0;
    -}
    -
    -ACE_INLINE void
    -ACE_Service_Type::active (int turnon)
    -{
    -  ACE_TRACE ("ACE_Service_Type::active");
    -  this->active_ = turnon;
    -}
    -
    -ACE_INLINE int
    -ACE_Service_Type::fini_called (void) const
    -{
    -  ACE_TRACE ("ACE_Service_TYpe::fini_called");
    -  return this->fini_already_called_;
    -}
    diff --git a/ace/Service_Repository.cpp b/ace/Service_Repository.cpp
    deleted file mode 100644
    index 55ace7906d3..00000000000
    --- a/ace/Service_Repository.cpp
    +++ /dev/null
    @@ -1,413 +0,0 @@
    -// Service_Repository.cpp
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Service_Repository.h"
    -#include "ace/Object_Manager.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/Service_Repository.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, Service_Repository, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Service_Repository)
    -
    -// Process-wide Service Repository.
    -ACE_Service_Repository *ACE_Service_Repository::svc_rep_ = 0;
    -
    -// Controls whether the Service_Repository is deleted when we shut
    -// down (we can only delete it safely if we created it)!
    -int ACE_Service_Repository::delete_svc_rep_ = 0;
    -
    -void
    -ACE_Service_Repository::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Service_Repository::dump");
    -}
    -
    -ACE_Service_Repository::ACE_Service_Repository (void)
    -  : service_vector_ (0),
    -    current_size_ (0),
    -    total_size_ (0)
    -{
    -  ACE_TRACE ("ACE_Service_Repository::ACE_Service_Repository");
    -}
    -
    -ACE_Service_Repository *
    -ACE_Service_Repository::instance (int size /* = ACE_Service_Repository::DEFAULT_SIZE */)
    -{
    -  ACE_TRACE ("ACE_Service_Config::instance");
    -
    -  if (ACE_Service_Repository::svc_rep_ == 0)
    -    {
    -      // Perform Double-Checked Locking Optimization.
    -      ACE_MT (ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex, ace_mon,
    -                                *ACE_Static_Object_Lock::instance (), 0));
    -      if (ACE_Service_Repository::svc_rep_ == 0 &&
    -          !ACE_Object_Manager::shutting_down ())
    -        {
    -          ACE_NEW_RETURN (ACE_Service_Repository::svc_rep_,
    -                          ACE_Service_Repository (size),
    -                          0);
    -          ACE_Service_Repository::delete_svc_rep_ = 1;
    -        }
    -    }
    -
    -  return ACE_Service_Repository::svc_rep_;
    -}
    -
    -ACE_Service_Repository *
    -ACE_Service_Repository::instance (ACE_Service_Repository *s)
    -{
    -  ACE_TRACE ("ACE_Service_Repository::instance");
    -  ACE_MT (ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex, ace_mon,
    -                            *ACE_Static_Object_Lock::instance (), 0));
    -
    -  ACE_Service_Repository *t = ACE_Service_Repository::svc_rep_;
    -  // We can't safely delete it since we don't know who created it!
    -  ACE_Service_Repository::delete_svc_rep_ = 0;
    -
    -  ACE_Service_Repository::svc_rep_ = s;
    -  return t;
    -}
    -
    -void
    -ACE_Service_Repository::close_singleton (void)
    -{
    -  ACE_TRACE ("ACE_Service_Repository::close_singleton");
    -
    -  ACE_MT (ACE_GUARD (ACE_Recursive_Thread_Mutex, ace_mon,
    -                     *ACE_Static_Object_Lock::instance ()));
    -
    -  if (ACE_Service_Repository::delete_svc_rep_)
    -    {
    -      delete ACE_Service_Repository::svc_rep_;
    -      ACE_Service_Repository::svc_rep_ = 0;
    -      ACE_Service_Repository::delete_svc_rep_ = 0;
    -    }
    -}
    -
    -// Initialize the Repository to a clean slate.
    -
    -int
    -ACE_Service_Repository::open (int size)
    -{
    -  ACE_TRACE ("ACE_Service_Repository::open");
    -
    -  ACE_Service_Type **temp;
    -
    -  ACE_NEW_RETURN (temp,
    -                  ACE_Service_Type *[size],
    -                  -1);
    -
    -  this->service_vector_ = ACE_const_cast (const ACE_Service_Type **,
    -                                          temp);
    -  this->total_size_ = size;
    -  return 0;
    -}
    -
    -ACE_Service_Repository::ACE_Service_Repository (int size)
    -  : current_size_ (0)
    -{
    -  ACE_TRACE ("ACE_Service_Repository::ACE_Service_Repository");
    -
    -  if (this->open (size) == -1)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT ("%p\n"),
    -                ASYS_TEXT ("ACE_Service_Repository")));
    -}
    -
    -// Finalize (call  and possibly delete) all the services.
    -
    -int
    -ACE_Service_Repository::fini (void)
    -{
    -  ACE_TRACE ("ACE_Service_Repository::close");
    -  ACE_MT (ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, -1));
    -
    -  if (this->service_vector_ != 0)
    -    {
    -      //  the services in reverse order.  Note that if services
    -      // were removed from the middle of the repository the order
    -      // won't necessarily be maintained since the  method
    -      // performs compaction.  However, the common case is not to
    -      // remove services, so typically they are deleted in reverse
    -      // order.
    -
    -      for (int i = this->current_size_ - 1; i >= 0; i--)
    -        {
    -          if (ACE::debug ())
    -            ACE_DEBUG ((LM_DEBUG,
    -                        ASYS_TEXT ("finalizing %s\n"),
    -                        this->service_vector_[i]->name ()));
    -          ACE_Service_Type *s =
    -            ACE_const_cast (ACE_Service_Type *,
    -                            this->service_vector_[i]);
    -          s->fini ();
    -        }
    -    }
    -
    -  return 0;
    -}
    -
    -// Close down all the services.
    -
    -int
    -ACE_Service_Repository::close (void)
    -{
    -  ACE_TRACE ("ACE_Service_Repository::close");
    -  ACE_MT (ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, -1));
    -
    -  if (this->service_vector_ != 0)
    -    {
    -      // Delete services in reverse order.  Note that if services were
    -      // removed from the middle of the repository the order won't
    -      // necessarily be maintained since the  method performs
    -      // compaction.  However, the common case is not to remove
    -      // services, so typically they are deleted in reverse order.
    -
    -      for (int i = this->current_size_ - 1; i >= 0; i--)
    -        {
    -          ACE_Service_Type *s = ACE_const_cast (ACE_Service_Type *,
    -                                                this->service_vector_[i]);
    -          delete s;
    -        }
    -
    -      delete [] this->service_vector_;
    -      this->service_vector_ = 0;
    -      this->current_size_ = 0;
    -    }
    -
    -  return 0;
    -}
    -
    -ACE_Service_Repository::~ACE_Service_Repository (void)
    -{
    -  ACE_TRACE ("ACE_Service_Repository::~ACE_Service_Repository");
    -  this->close ();
    -}
    -
    -// Locate an entry with  in the table.  If  is
    -// set then only consider services marked as resumed.  If the caller
    -// wants the located entry, pass back a pointer to the located entry
    -// via .  If  is not found -1 is returned.  If  is
    -// found, but it is suspended and the caller wants to ignore suspended
    -// services a -2 is returned.  Must be called with locks held.
    -
    -int
    -ACE_Service_Repository::find_i (const ASYS_TCHAR name[],
    -                                const ACE_Service_Type **srp,
    -                                int ignore_suspended)
    -{
    -  ACE_TRACE ("ACE_Service_Repository::find_i");
    -  int i;
    -
    -  for (i = 0; i < this->current_size_; i++)
    -    if (ACE_OS::strcmp (name,
    -                        this->service_vector_[i]->name ()) == 0)
    -      break;
    -
    -  if (i < this->current_size_)
    -    {
    -      if (this->service_vector_[i]->fini_called ())
    -        {
    -          if (srp != 0)
    -            *srp = 0;
    -          return -1;
    -        }
    -
    -      if (srp != 0)
    -        *srp = this->service_vector_[i];
    -      if (ignore_suspended
    -          && this->service_vector_[i]->active () == 0)
    -        return -2;
    -      return i;
    -    }
    -  else
    -    return -1;
    -}
    -
    -int
    -ACE_Service_Repository::find (const ASYS_TCHAR name[],
    -                              const ACE_Service_Type **srp,
    -                              int ignore_suspended)
    -{
    -  ACE_TRACE ("ACE_Service_Repository::find");
    -  ACE_MT (ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, -1));
    -
    -  return this->find_i (name, srp, ignore_suspended);
    -}
    -
    -
    -// Insert the ACE_Service_Type SR into the repository.  Note that
    -// services may be inserted either resumed or suspended.
    -
    -int
    -ACE_Service_Repository::insert (const ACE_Service_Type *sr)
    -{
    -  ACE_TRACE ("ACE_Service_Repository::insert");
    -  ACE_MT (ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, -1));
    -  int i;
    -
    -  // Check to see if this is a duplicate.
    -  for (i = 0; i < this->current_size_; i++)
    -    if (ACE_OS::strcmp (sr->name (),
    -                        this->service_vector_[i]->name ()) == 0)
    -      break;
    -
    -  // Replacing an existing entry
    -  if (i < this->current_size_)
    -    {
    -      // Check for self-assignment...
    -      if (sr == this->service_vector_[i])
    -        return 0;
    -      ACE_Service_Type *s = ACE_const_cast (ACE_Service_Type *,
    -                                            this->service_vector_[i]);
    -      delete s;
    -      this->service_vector_[i] = sr;
    -      return 0;
    -    }
    -  // Adding a new entry.
    -  else if (i < this->total_size_)
    -    {
    -      this->service_vector_[i] = sr;
    -      this->current_size_++;
    -      return 0;
    -    }
    -  else
    -    return -1;
    -}
    -
    -// Re-resume a service that was previously suspended.
    -
    -int
    -ACE_Service_Repository::resume (const ASYS_TCHAR name[],
    -                                const ACE_Service_Type **srp)
    -{
    -  ACE_TRACE ("ACE_Service_Repository::resume");
    -  ACE_MT (ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, -1));
    -
    -  int i = this->find_i (name, srp, 0);
    -
    -  if (i == -1)
    -    return -1;
    -
    -  this->service_vector_[i]->resume ();
    -  return 0;
    -}
    -
    -// Suspend a service so that it will not be considered active under
    -// most circumstances by other portions of the ACE_Service_Repository.
    -
    -int
    -ACE_Service_Repository::suspend (const ASYS_TCHAR name[],
    -                                 const ACE_Service_Type **srp)
    -{
    -  ACE_TRACE ("ACE_Service_Repository::suspend");
    -  ACE_MT (ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, -1));
    -  int i = this->find_i (name, srp, 0);
    -
    -  if (i == -1)
    -    return -1;
    -
    -  this->service_vector_[i]->suspend ();
    -  return 0;
    -}
    -
    -// Completely remove a  entry from the Repository and
    -// dynamically unlink it if it was originally dynamically linked.
    -// Since the order of services in the Respository does not matter, we
    -// simply overwrite the entry being deleted with the final entry in
    -// the array and decrement the  by 1.
    -
    -int
    -ACE_Service_Repository::remove (const ASYS_TCHAR name[])
    -{
    -  ACE_TRACE ("ACE_Service_Repository::remove");
    -  ACE_MT (ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, -1));
    -
    -  int i = this->find_i (name, 0, 0);
    -
    -  if (i == -1)
    -    return -1;
    -  else
    -    {
    -      ACE_Service_Type *s = ACE_const_cast (ACE_Service_Type *,
    -                                            this->service_vector_[i]);
    -      delete s;
    -
    -      --this->current_size_;
    -
    -      if (this->current_size_ >= 1)
    -        this->service_vector_[i]
    -          = this->service_vector_[this->current_size_];
    -      return 0;
    -    }
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Service_Repository_Iterator)
    -
    -void
    -ACE_Service_Repository_Iterator::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Service_Repository_Iterator::dump");
    -}
    -
    -// Initializes the iterator and skips over any suspended entries at
    -// the beginning of the table, if necessary.  Note, you must not
    -// perform destructive operations on elements during this iteration...
    -
    -ACE_Service_Repository_Iterator::ACE_Service_Repository_Iterator
    -  (ACE_Service_Repository &sr,
    -   int ignr_suspended)
    -  : svc_rep_ (sr),
    -    next_ (-1),
    -    ignore_suspended_ (ignr_suspended)
    -{
    -  this->advance ();
    -}
    -
    -// Obtains a pointer to the next valid service in the table.  If there
    -// are no more entries, returns 0, else 1.
    -
    -int
    -ACE_Service_Repository_Iterator::next (const ACE_Service_Type *&sr)
    -{
    -  ACE_TRACE ("ACE_Service_Repository_Iterator::next");
    -  if (this->next_ < this->svc_rep_.current_size_)
    -    {
    -      sr = this->svc_rep_.service_vector_[this->next_];
    -      return 1;
    -    }
    -  else
    -    return 0;
    -}
    -
    -int
    -ACE_Service_Repository_Iterator::done (void) const
    -{
    -  ACE_TRACE ("ACE_Service_Repository_Iterator::done");
    -
    -  return this->next_ >= this->svc_rep_.current_size_;
    -}
    -
    -// Advance the iterator by the proper amount.  If we are ignoring
    -// suspended entries and the current entry is suspended, then we must
    -// skip over this entry.  Otherwise, we must advance the NEXT index to
    -// reference the next valid service entry.
    -
    -int
    -ACE_Service_Repository_Iterator::advance (void)
    -{
    -  ACE_TRACE ("ACE_Service_Repository_Iterator::advance");
    -
    -  for (++this->next_;
    -       this->next_ < this->svc_rep_.current_size_
    -       && this->ignore_suspended_
    -       && this->svc_rep_.service_vector_[this->next_]->active () == 0;
    -       this->next_++)
    -    continue;
    -
    -  return this->next_ < this->svc_rep_.current_size_;
    -}
    diff --git a/ace/Service_Repository.h b/ace/Service_Repository.h
    deleted file mode 100644
    index 8618fce097d..00000000000
    --- a/ace/Service_Repository.h
    +++ /dev/null
    @@ -1,197 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Service_Repository.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_SERVICE_REPOSITORY_H
    -#define ACE_SERVICE_REPOSITORY_H
    -
    -#include "ace/Service_Types.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -class ACE_Export ACE_Service_Repository
    -{
    -  // = TITLE
    -  //     Contains all the services offered by a Service
    -  //     Configurator-based application.
    -  //
    -  // = DESCRIPTION
    -  //     This class contains a vector of  *'s and
    -  //     allows an administrative entity to centrally manage and
    -  //     control the behavior of application services.  Note that if
    -  //     services are removed from the middle of the repository the
    -  //     order won't necessarily be maintained since the 
    -  //     method performs compaction.  However, the common case is not
    -  //     to remove services, so typically they are deleted in the
    -  //     reverse order that they were added originally.
    -public:
    -  friend class ACE_Service_Repository_Iterator;
    -
    -  enum
    -  {
    -    DEFAULT_SIZE = ACE_DEFAULT_SERVICE_REPOSITORY_SIZE
    -  };
    -
    -  // = Initialization and termination methods.
    -  ACE_Service_Repository (void);
    -  // Initialize the repository.
    -
    -  ACE_Service_Repository (int size);
    -  // Initialize the repository.
    -
    -  int open (int size = DEFAULT_SIZE);
    -  // Initialize the repository.
    -
    -  ~ACE_Service_Repository (void);
    -  // Close down the repository and free up dynamically allocated
    -  // resources.
    -
    -  int close (void);
    -  // Close down the repository and free up dynamically allocated
    -  // resources.
    -
    -  int fini (void);
    -  // Finalize all the services by calling  and deleteing
    -  // dynamically allocated services.
    -
    -  static ACE_Service_Repository *instance (int size = ACE_Service_Repository::DEFAULT_SIZE);
    -  // Get pointer to a process-wide .
    -
    -  static ACE_Service_Repository *instance (ACE_Service_Repository *);
    -  // Set pointer to a process-wide  and return
    -  // existing pointer.
    -
    -  static void close_singleton (void);
    -  // Delete the dynamically allocated Singleton.
    -
    -  // = Search structure operations (all acquire locks as necessary).
    -
    -  int insert (const ACE_Service_Type *);
    -  // Insert a new service record.
    -
    -  int find (const ASYS_TCHAR name[],
    -            const ACE_Service_Type **srp = 0,
    -            int ignore_suspended = 1);
    -  // Locate an entry with  in the table.  If 
    -  // is set then only consider services marked as resumed.  If the
    -  // caller wants the located entry, pass back a pointer to the
    -  // located entry via .  If  is not found, -1 is returned.
    -  // If  is found, but it is suspended and the caller wants to
    -  // ignore suspended services a -2 is returned.
    -
    -  int remove (const ASYS_TCHAR[]);
    -  // Remove an existing service record.
    -
    -  // = Liveness control
    -  int resume (const ASYS_TCHAR[], const ACE_Service_Type ** = 0);
    -  // Resume a service record.
    -
    -  int suspend (const ASYS_TCHAR[], const ACE_Service_Type ** = 0);
    -  // Suspend a service record.
    -
    -  int current_size (void);
    -  // Return the current size of the repository.
    -
    -  int total_size (void);
    -  // Return the total size of the repository.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  int find_i (const ASYS_TCHAR service_name[],
    -              const ACE_Service_Type ** = 0,
    -              int ignore_suspended = 1);
    -  // Locates .  Must be called without locks being
    -  // held...
    -
    -  const ACE_Service_Type **service_vector_;
    -  // Contains all the configured services.
    -
    -  int current_size_;
    -  // Current number of services.
    -
    -  int total_size_;
    -  // Maximum number of services.
    -
    -  static ACE_Service_Repository *svc_rep_;
    -  // Pointer to a process-wide .
    -
    -  static int delete_svc_rep_;
    -  // Must delete the  if non-0.
    -
    -#if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0)
    -  ACE_Thread_Mutex lock_;
    -  // Synchronization variable for the MT_SAFE Repository
    -#endif /* ACE_MT_SAFE */
    -};
    -
    -class ACE_Export ACE_Service_Repository_Iterator
    -{
    -  // = TITLE
    -  //     Iterate through the .
    -  //
    -  // = DESCRIPTION
    -  //     Make sure not to delete entries as the iteration is going on
    -  //     since this class is not designed as a robust iterator.
    -public:
    -  // = Initialization and termination methods.
    -  ACE_Service_Repository_Iterator (ACE_Service_Repository &sr,
    -                                   int ignored_suspended = 1);
    -  // Constructor.
    -
    -  ~ACE_Service_Repository_Iterator (void);
    -  // Destructor.
    -
    -  // = Iteration methods.
    -
    -  int next (const ACE_Service_Type *&next_item);
    -  // Pass back the  that hasn't been seen in the set.
    -  // Returns 0 when all items have been seen, else 1.
    -
    -  int done (void) const;
    -  // Returns 1 when all items have been seen, else 0.
    -
    -  int advance (void);
    -  // Move forward by one element in the set.  Returns 0 when all the
    -  // items in the set have been seen, else 1.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  ACE_Service_Repository &svc_rep_;
    -  // Reference to the Service Repository we are iterating over.
    -
    -  int next_;
    -  // Next index location that we haven't yet seen.
    -
    -  int ignore_suspended_;
    -  // Are we ignoring suspended services?
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Service_Repository.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* _SERVICE_REPOSITORY_H */
    diff --git a/ace/Service_Repository.i b/ace/Service_Repository.i
    deleted file mode 100644
    index 5ba6a04e0fe..00000000000
    --- a/ace/Service_Repository.i
    +++ /dev/null
    @@ -1,31 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// Service_Repository.i
    -
    -// Returns a count of the number of currently valid entries (counting
    -// both resumed and suspended entries).
    -
    -ACE_INLINE int
    -ACE_Service_Repository::current_size (void)
    -{
    -  ACE_TRACE ("ACE_Service_Repository::current_size");
    -  ACE_MT (ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, -1));
    -  return this->current_size_;
    -}
    -
    -// Returns a count of the total number of possible entries in the
    -// table.
    -
    -ACE_INLINE int
    -ACE_Service_Repository::total_size (void)
    -{
    -  ACE_TRACE ("ACE_Service_Repository::total_size");
    -  ACE_MT (ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, -1));
    -  return this->total_size_;
    -}
    -
    -ACE_INLINE
    -ACE_Service_Repository_Iterator::~ACE_Service_Repository_Iterator (void)
    -{
    -}
    diff --git a/ace/Service_Types.cpp b/ace/Service_Types.cpp
    deleted file mode 100644
    index c1c76b5ea23..00000000000
    --- a/ace/Service_Types.cpp
    +++ /dev/null
    @@ -1,454 +0,0 @@
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Service_Types.h"
    -#include "ace/Stream_Modules.h"
    -#include "ace/Stream.h"
    -
    -ACE_RCSID(ace, Service_Types, "$Id$")
    -
    -typedef ACE_Stream MT_Stream;
    -typedef ACE_Module MT_Module;
    -typedef ACE_Task MT_Task;
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/Service_Types.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Service_Type_Impl)
    -
    -void
    -ACE_Service_Type_Impl::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Service_Type_Impl::dump");
    -}
    -
    -ACE_Service_Type_Impl::ACE_Service_Type_Impl (void *so,
    -                                              const ASYS_TCHAR *s_name,
    -                                              u_int f,
    -                                              ACE_Service_Object_Exterminator gobbler)
    -  : name_ (0),
    -    obj_ (so),
    -    gobbler_ (gobbler),
    -    flags_ (f)
    -{
    -  ACE_TRACE ("ACE_Service_Type_Impl::ACE_Service_Type_Impl");
    -  this->name (s_name);
    -}
    -
    -ACE_Service_Type_Impl::~ACE_Service_Type_Impl (void)
    -{
    -  ACE_TRACE ("ACE_Service_Type_Impl::~ACE_Service_Type_Impl");
    -
    -  // It's ok to call this, even though we may have already deleted it
    -  // in the fini() method since it would then be NULL.
    -  delete [] (ASYS_TCHAR *) this->name_;
    -}
    -
    -int
    -ACE_Service_Type_Impl::fini (void) const
    -{
    -  ACE_TRACE ("ACE_Service_Type_Impl::fini");
    -  if (ACE::debug ())
    -    ACE_DEBUG ((LM_DEBUG,
    -                ASYS_TEXT ("destroying %s, flags = %d\n"),
    -                this->name_,
    -                this->flags_));
    -
    -  delete [] (ASYS_TCHAR *) this->name_;
    -  ((ACE_Service_Type_Impl *) this)->name_ = 0;
    -
    -  if (ACE_BIT_ENABLED (this->flags_,
    -                       ACE_Service_Type::DELETE_OBJ))
    -    {
    -      if (gobbler_ != 0)
    -        gobbler_ (this->object ());
    -      else
    -        // Cast to remove const-ness.
    -        operator delete ((void *) this->object ());
    -    }
    -
    -  if (ACE_BIT_ENABLED (this->flags_,
    -                       ACE_Service_Type::DELETE_THIS))
    -    delete (ACE_Service_Type_Impl *) this;
    -
    -  return 0;
    -}
    -
    -ACE_Service_Object_Type::ACE_Service_Object_Type (void *so,
    -                                                  const ASYS_TCHAR *s_name,
    -                                                  u_int f,
    -                                                  ACE_Service_Object_Exterminator gobbler)
    -  : ACE_Service_Type_Impl (so, s_name, f, gobbler)
    -{
    -  ACE_TRACE ("ACE_Service_Object_Type::ACE_Service_Object_Type");
    -}
    -
    -int
    -ACE_Service_Object_Type::init (int argc, ASYS_TCHAR *argv[]) const
    -{
    -  ACE_TRACE ("ACE_Service_Object_Type::init");
    -
    -  void *obj = this->object ();
    -  ACE_Service_Object *so = (ACE_Service_Object *) obj;
    -
    -  if (so == 0)
    -    return -1;
    -  else
    -    return so->init (argc, argv);
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Module_Type)
    -
    -void
    -ACE_Module_Type::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Module_Type::dump");
    -}
    -
    -ACE_Module_Type::ACE_Module_Type (void *m,
    -                                  const ASYS_TCHAR *m_name,
    -                                  u_int f)
    -  : ACE_Service_Type_Impl (m, m_name, f)
    -{
    -  ACE_TRACE ("ACE_Module_Type::ACE_Module_Type");
    -}
    -
    -int
    -ACE_Module_Type::init (int argc, ASYS_TCHAR *argv[]) const
    -{
    -  ACE_TRACE ("ACE_Module_Type::init");
    -  void *obj = this->object ();
    -  MT_Module *mod = (MT_Module *) obj;
    -  MT_Task *reader = mod->reader ();
    -  MT_Task *writer = mod->writer ();
    -
    -  if (reader->init (argc, argv) == -1
    -      || writer->init (argc, argv) == -1)
    -    return -1;
    -  else
    -    return 0;
    -}
    -
    -int
    -ACE_Module_Type::suspend (void) const
    -{
    -  ACE_TRACE ("ACE_Module_Type::suspend");
    -  void *obj = this->object ();
    -  MT_Module *mod = (MT_Module *) obj;
    -  MT_Task *reader = mod->reader ();
    -  MT_Task *writer = mod->writer ();
    -
    -  if (reader->suspend () == -1
    -      || writer->suspend () == -1)
    -    return -1;
    -  else
    -    return 0;
    -}
    -
    -int
    -ACE_Module_Type::resume (void) const
    -{
    -  ACE_TRACE ("ACE_Module_Type::resume");
    -  void *obj = this->object ();
    -  MT_Module *mod = (MT_Module *) obj;
    -  MT_Task *reader = mod->reader ();
    -  MT_Task *writer = mod->writer ();
    -
    -  if (reader->resume () == -1
    -      || writer->resume () == -1)
    -    return -1;
    -  else
    -    return 0;
    -}
    -
    -// Note, these operations are somewhat too familiar with the
    -// implementation of ACE_Module and ACE_Module::close...
    -
    -int
    -ACE_Module_Type::fini (void) const
    -{
    -  ACE_TRACE ("ACE_Module_Type::fini");
    -
    -  void *obj = this->object ();
    -  MT_Module *mod = (MT_Module *) obj;
    -  MT_Task *reader = mod->reader ();
    -  MT_Task *writer = mod->writer ();
    -
    -  if (reader != 0)
    -    reader->fini ();
    -
    -  if (writer != 0)
    -    writer->fini ();
    -
    -  // Close the module and delete the memory.
    -  mod->close (MT_Module::M_DELETE);
    -  return ACE_Service_Type_Impl::fini ();
    -}
    -
    -int
    -ACE_Module_Type::info (ASYS_TCHAR **str, size_t len) const
    -{
    -  ACE_TRACE ("ACE_Module_Type::info");
    -  ASYS_TCHAR buf[BUFSIZ];
    -
    -  ACE_OS::sprintf (buf,
    -                   ASYS_TEXT ("%s\t %s"),
    -                   this->name (),
    -                   ASYS_TEXT ("# ACE_Module\n"));
    -
    -  if (*str == 0 && (*str = ACE_OS::strdup (buf)) == 0)
    -    return -1;
    -  else
    -    ACE_OS::strncpy (*str, buf, len);
    -  return ACE_OS::strlen (buf);
    -}
    -
    -void
    -ACE_Module_Type::link (ACE_Module_Type *n)
    -{
    -  ACE_TRACE ("ACE_Module_Type::link");
    -  this->link_ = n;
    -}
    -
    -ACE_Module_Type *
    -ACE_Module_Type::link (void) const
    -{
    -  ACE_TRACE ("ACE_Module_Type::link");
    -  return this->link_;
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Stream_Type)
    -
    -void
    -ACE_Stream_Type::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Stream_Type::dump");
    -}
    -
    -int
    -ACE_Stream_Type::init (int, ASYS_TCHAR *[]) const
    -{
    -  ACE_TRACE ("ACE_Stream_Type::init");
    -  return 0;
    -}
    -
    -int
    -ACE_Stream_Type::suspend (void) const
    -{
    -  ACE_TRACE ("ACE_Stream_Type::suspend");
    -
    -  for (ACE_Module_Type *m = this->head_;
    -       m != 0;
    -       m = m->link ())
    -    m->suspend ();
    -
    -  return 0;
    -}
    -
    -int
    -ACE_Stream_Type::resume (void) const
    -{
    -  ACE_TRACE ("ACE_Stream_Type::resume");
    -
    -  for (ACE_Module_Type *m = this->head_;
    -       m != 0;
    -       m = m->link ())
    -    m->resume ();
    -
    -  return 0;
    -}
    -
    -ACE_Stream_Type::ACE_Stream_Type (void *s,
    -                                  const ASYS_TCHAR *s_name,
    -                                  u_int f)
    -  : ACE_Service_Type_Impl (s, s_name, f),
    -    head_ (0)
    -{
    -  ACE_TRACE ("ACE_Stream_Type::ACE_Stream_Type");
    -}
    -
    -int
    -ACE_Stream_Type::info (ASYS_TCHAR **str, size_t len) const
    -{
    -  ACE_TRACE ("ACE_Stream_Type::info");
    -  ASYS_TCHAR buf[BUFSIZ];
    -
    -  ACE_OS::sprintf (buf,
    -                   ASYS_TEXT ("%s\t %s"),
    -                   this->name (),
    -                   ASYS_TEXT ("# STREAM\n"));
    -
    -  if (*str == 0 && (*str = ACE_OS::strdup (buf)) == 0)
    -    return -1;
    -  else
    -    ACE_OS::strncpy (*str, buf, len);
    -  return ACE_OS::strlen (buf);
    -}
    -
    -int
    -ACE_Stream_Type::fini (void) const
    -{
    -  ACE_TRACE ("ACE_Stream_Type::fini");
    -  void *obj = this->object ();
    -  MT_Stream *str = (MT_Stream *) obj;
    -
    -  for (ACE_Module_Type *m = this->head_; m != 0; )
    -    {
    -      ACE_Module_Type *t = m->link ();
    -
    -      // Final arg is an indication to *not* delete the Module.
    -      str->remove (m->name (),
    -                   MT_Module::M_DELETE_NONE);
    -
    -      // Finalize the Module (this may delete it, but we don't really
    -      // care since we don't access it again).
    -      m->fini ();
    -      m = t;
    -    }
    -
    -  str->close ();
    -  return ACE_Service_Type_Impl::fini ();
    -}
    -
    -// Locate and remove  from the ACE_Stream.
    -
    -int
    -ACE_Stream_Type::remove (ACE_Module_Type *mod)
    -{
    -  ACE_TRACE ("ACE_Stream_Type::remove");
    -
    -  ACE_Module_Type *prev = 0;
    -  void *obj = this->object ();
    -  MT_Stream *str = (MT_Stream *) obj;
    -  int result = 0;
    -
    -  for (ACE_Module_Type *m = this->head_; m != 0; )
    -    {
    -      // We need to do this first so we don't bomb out if we delete m!
    -      ACE_Module_Type *link = m->link ();
    -
    -      if (m == mod)
    -        {
    -          if (prev == 0)
    -            this->head_ = link;
    -          else
    -            prev->link (link);
    -
    -          // Final arg is an indication to *not* delete the Module.
    -          if (str->remove (m->name (),
    -                           MT_Module::M_DELETE_NONE) == -1)
    -            result = -1;
    -
    -          // This call may end up deleting m, which is ok since we
    -          // don't access it again!
    -          m->fini ();
    -        }
    -      else
    -        prev = m;
    -
    -      m = link;
    -    }
    -
    -  return result;
    -}
    -
    -int
    -ACE_Stream_Type::push (ACE_Module_Type *new_module)
    -{
    -  ACE_TRACE ("ACE_Stream_Type::push");
    -  void *obj = this->object ();
    -  MT_Stream *str = (MT_Stream *) obj;
    -
    -  new_module->link (this->head_);
    -  this->head_ = new_module;
    -  obj = new_module->object ();
    -  return str->push ((MT_Module *) obj);
    -}
    -
    -ACE_Module_Type *
    -ACE_Stream_Type::find (const ASYS_TCHAR *mod_name) const
    -{
    -  ACE_TRACE ("ACE_Stream_Type::find");
    -
    -  for (ACE_Module_Type *m = this->head_;
    -       m != 0;
    -       m = m->link ())
    -    if (ACE_OS::strcmp (m->name (), mod_name) == 0)
    -      return m;
    -
    -  return 0;
    -}
    -
    -int
    -ACE_Service_Object_Type::fini (void) const
    -{
    -  ACE_TRACE ("ACE_Service_Object_Type::fini");
    -
    -  void *obj = this->object ();
    -
    -  ACE_Service_Object *so = (ACE_Service_Object *) obj;
    -
    -  if (so)
    -    {
    -      so->fini ();
    -
    -#if 0
    -      if (ACE_BIT_ENABLED (this->flags_,
    -                           ACE_Service_Type::DELETE_OBJ))
    -        delete so;
    -#endif /* 1 */
    -    }
    -
    -  return ACE_Service_Type_Impl::fini ();
    -}
    -
    -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
    -template class ACE_Message_Queue;
    -template class ACE_Message_Queue_Iterator;
    -template class ACE_Message_Queue_Reverse_Iterator;
    -template class ACE_Message_Queue_Factory;
    -template class ACE_Dynamic_Message_Queue;
    -template class ACE_Module;
    -template class ACE_Stream;
    -template class ACE_Stream_Head;
    -template class ACE_Stream_Tail;
    -template class ACE_Task;
    -template class ACE_Thru_Task;
    -
    -// Even with threads, these ACE_NULL_SYNCH specializations are necessary.
    -#if defined (ACE_HAS_THREADS)
    -  template class ACE_Message_Queue;
    -  template class ACE_Message_Queue_Iterator;
    -  template class ACE_Message_Queue_Reverse_Iterator;
    -  template class ACE_Message_Queue_Factory;
    -  template class ACE_Dynamic_Message_Queue;
    -  template class ACE_Module;
    -  template class ACE_Task;
    -  template class ACE_Thru_Task;
    -#endif /* ACE_HAS_THREADS */
    -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
    -#pragma instantiate ACE_Message_Queue
    -#pragma instantiate ACE_Message_Queue_Iterator
    -#pragma instantiate ACE_Message_Queue_Reverse_Iterator
    -#pragma instantiate ACE_Message_Queue_Factory
    -#pragma instantiate ACE_Dynamic_Message_Queue
    -#pragma instantiate ACE_Module
    -#pragma instantiate ACE_Stream
    -#pragma instantiate ACE_Stream_Head
    -#pragma instantiate ACE_Stream_Tail
    -#pragma instantiate ACE_Task
    -#pragma instantiate ACE_Thru_Task
    -// Even with threads, these ACE_NULL_SYNCH specializations are necessary.
    -#if defined (ACE_HAS_THREADS)
    -  #pragma instantiate ACE_Message_Queue
    -  #pragma instantiate ACE_Message_Queue_Iterator
    -  #pragma instantiate ACE_Message_Queue_Reverse_Iterator
    -  #pragma instantiate ACE_Message_Queue_Factory
    -  #pragma instantiate ACE_Dynamic_Message_Queue
    -  #pragma instantiate ACE_Module
    -  #pragma instantiate ACE_Task
    -  #pragma instantiate ACE_Thru_Task
    -#endif /* ACE_HAS_THREADS */
    -#else
    -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
    diff --git a/ace/Service_Types.h b/ace/Service_Types.h
    deleted file mode 100644
    index 459419091bf..00000000000
    --- a/ace/Service_Types.h
    +++ /dev/null
    @@ -1,187 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Service_Types.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_SERVICE_TYPE_H
    -#define ACE_SERVICE_TYPE_H
    -
    -#include "ace/Service_Object.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Synch.h"
    -
    -class ACE_Export ACE_Service_Type_Impl
    -{
    -  // = TITLE
    -  //     The abstract base class of the hierarchy that defines the
    -  //     contents of the .  The subclasses of
    -  //     this class allow the configuration of ,
    -  //     , and .
    -  //
    -  // = DESCRIPTION
    -  //     This class provides the root of the implementation hierarchy
    -  //     of the "Bridge" pattern.  It maintains a pointer to the
    -  //     appropriate type of service implementation, i.e.,
    -  //     , , or .
    -public:
    -  // = Initialization and termination methods.
    -  ACE_Service_Type_Impl (void *object,
    -                         const ASYS_TCHAR *s_name,
    -                         u_int flags = 0,
    -                         ACE_Service_Object_Exterminator gobbler = 0);
    -  virtual ~ACE_Service_Type_Impl (void);
    -
    -  // = Pure virtual interface (must be defined by the subclass).
    -  virtual int suspend (void) const = 0;
    -  virtual int resume (void) const = 0;
    -  virtual int init (int argc, ASYS_TCHAR *argv[]) const = 0;
    -  virtual int fini (void) const;
    -  virtual int info (ASYS_TCHAR **str, size_t len) const = 0;
    -
    -  void *object (void) const;
    -  // The pointer to the service.
    -
    -  const ASYS_TCHAR *name (void) const;
    -  // Get the name of the service.
    -
    -  void name (const ASYS_TCHAR *);
    -  // Set the name of the service.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  const ASYS_TCHAR *name_;
    -  // Name of the service.
    -
    -  void *obj_;
    -  // Pointer to object that implements the service.  This actually
    -  // points to an , , or .
    -
    -  ACE_Service_Object_Exterminator gobbler_;
    -  // Destroy function to deallocate obj_.
    -
    -  u_int flags_;
    -  // Flags that control serivce behavior (particularly deletion).
    -};
    -
    -class ACE_Export ACE_Service_Object_Type : public ACE_Service_Type_Impl
    -{
    -  // = TITLE
    -  //     Define the methods for handling the configuration of
    -  //     .
    -public:
    -  // = Initialization method.
    -  ACE_Service_Object_Type (void *so,
    -                           const ASYS_TCHAR *name,
    -                           u_int flags = 0,
    -                           ACE_Service_Object_Exterminator gobbler = 0);
    -
    -  ~ACE_Service_Object_Type (void);
    -
    -  // = Implement the hooks for .
    -  virtual int suspend (void) const;
    -  virtual int resume (void) const;
    -  virtual int init (int argc, ASYS_TCHAR *argv[]) const;
    -  virtual int fini (void) const;
    -  virtual int info (ASYS_TCHAR **str, size_t len) const;
    -};
    -
    -class ACE_Export ACE_Module_Type : public ACE_Service_Type_Impl
    -{
    -  // = TITLE
    -  //     Define the methods for handling the configuration of
    -  //     .
    -public:
    -  // = Initialization method.
    -  ACE_Module_Type (void *m, // Really an  *.
    -                   const ASYS_TCHAR *identifier,
    -                   u_int flags = 0);
    -
    -  ~ACE_Module_Type (void);
    -
    -  // = Implement the hooks for .
    -  virtual int suspend (void) const;
    -  virtual int resume (void) const;
    -  virtual int init (int argc, ASYS_TCHAR *argv[]) const;
    -  virtual int fini (void) const;
    -  virtual int info (ASYS_TCHAR **str, size_t len) const;
    -
    -  // Get/set the link pointer.
    -  ACE_Module_Type *link (void) const;
    -  void link (ACE_Module_Type *);
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  ACE_Module_Type *link_;
    -  // Pointer to the next  in an .
    -};
    -
    -class ACE_Export ACE_Stream_Type : public ACE_Service_Type_Impl
    -{
    -  // = TITLE
    -  //     Define the methods for handling the configuration of
    -  //     .
    -public:
    -  // = Initialization method.
    -  ACE_Stream_Type (void *s, // Really an  *.
    -                   const ASYS_TCHAR *identifier,
    -                   u_int flags = 0);
    -
    -  ~ACE_Stream_Type (void);
    -
    -  // = Implement the hooks for .
    -  virtual int suspend (void) const;
    -  virtual int resume (void) const;
    -  virtual int init (int argc, ASYS_TCHAR *argv[]) const;
    -  virtual int fini (void) const;
    -  virtual int info (ASYS_TCHAR **str, size_t len) const;
    -
    -  int push (ACE_Module_Type *new_module);
    -  // Add a new  to the top of the .
    -
    -  int remove (ACE_Module_Type *module);
    -  // Search for  and remove it from the .
    -
    -  ACE_Module_Type *find (const ASYS_TCHAR *mod_name) const;
    -  // Locate the  with .
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  ACE_Module_Type *head_;
    -  // Pointer to the head of the  list.
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Service_Types.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* _SERVICE_TYPE_H */
    diff --git a/ace/Service_Types.i b/ace/Service_Types.i
    deleted file mode 100644
    index 84dd39ab8e8..00000000000
    --- a/ace/Service_Types.i
    +++ /dev/null
    @@ -1,64 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -ACE_INLINE void *
    -ACE_Service_Type_Impl::object (void) const
    -{
    -  ACE_TRACE ("ACE_Service_Type_Impl::object");
    -  return this->obj_;
    -}
    -
    -ACE_INLINE const ASYS_TCHAR *
    -ACE_Service_Type_Impl::name (void) const
    -{
    -  ACE_TRACE ("ACE_Service_Type_Impl::name");
    -  return this->name_;
    -}
    -
    -ACE_INLINE void
    -ACE_Service_Type_Impl::name (const ASYS_TCHAR *n)
    -{
    -  ACE_TRACE ("ACE_Service_Type_Impl::name");
    -
    -  delete [] (ASYS_TCHAR *) this->name_;
    -  this->name_ = ACE::strnew (n);
    -}
    -
    -ACE_INLINE
    -ACE_Service_Object_Type::~ACE_Service_Object_Type (void)
    -{
    -  ACE_TRACE ("ACE_Service_Object_Type::~ACE_Service_Object_Type");
    -}
    -
    -ACE_INLINE int
    -ACE_Service_Object_Type::suspend (void) const
    -{
    -  ACE_TRACE ("ACE_Service_Object_Type::suspend");
    -  return ((ACE_Service_Object *) this->object ())->suspend ();
    -}
    -
    -ACE_INLINE int
    -ACE_Service_Object_Type::resume (void) const
    -{
    -  ACE_TRACE ("ACE_Service_Object_Type::resume");
    -  return ((ACE_Service_Object *) this->object ())->resume ();
    -}
    -
    -ACE_INLINE int
    -ACE_Service_Object_Type::info (ASYS_TCHAR **str, size_t len) const
    -{
    -  ACE_TRACE ("ACE_Service_Object_Type::info");
    -  return ((ACE_Service_Object *) this->object ())->info (str, len);
    -}
    -
    -ACE_INLINE
    -ACE_Module_Type::~ACE_Module_Type (void)
    -{
    -  ACE_TRACE ("ACE_Module_Type::~ACE_Module_Type");
    -}
    -
    -ACE_INLINE
    -ACE_Stream_Type::~ACE_Stream_Type (void)
    -{
    -  ACE_TRACE ("ACE_Stream_Type::~ACE_Stream_Type");
    -}
    diff --git a/ace/Shared_Memory.cpp b/ace/Shared_Memory.cpp
    deleted file mode 100644
    index d4db14519ce..00000000000
    --- a/ace/Shared_Memory.cpp
    +++ /dev/null
    @@ -1,11 +0,0 @@
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -
    -#include "ace/Shared_Memory.h"
    -
    -ACE_RCSID(ace, Shared_Memory, "$Id$")
    -
    -ACE_Shared_Memory::~ACE_Shared_Memory (void)
    -{
    -}
    diff --git a/ace/Shared_Memory.h b/ace/Shared_Memory.h
    deleted file mode 100644
    index c62e5fbd07e..00000000000
    --- a/ace/Shared_Memory.h
    +++ /dev/null
    @@ -1,49 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Shared_Memory.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_SHARED_MEMORY_H
    -#define ACE_SHARED_MEMORY_H
    -
    -#include "ace/ACE.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -class ACE_Export ACE_Shared_Memory
    -{
    -  // = TITLE
    -  //     This base class adapts both System V shared memory and "BSD"
    -  //     mmap to a common API.
    -  //
    -  // = DESCRIPTION
    -  //     This is a very simple-minded wrapper, i.e., it really is only
    -  //     useful for allocating large contiguous chunks of shared
    -  //     memory.  For a much more sophisticated version, please check
    -  //     out the  class.
    -public:
    -  virtual ~ACE_Shared_Memory (void);
    -
    -  // = Note that all the following methods are pure virtual.
    -  virtual int close (void) = 0;
    -  virtual int remove (void) = 0;
    -  virtual void *malloc (size_t = 0) = 0;
    -  virtual int free (void *p) = 0;
    -  virtual int get_segment_size (void) const = 0;
    -  virtual ACE_HANDLE get_id (void) const = 0;
    -};
    -#endif /* ACE_SHARED_MEMORY_H */
    diff --git a/ace/Shared_Memory_MM.cpp b/ace/Shared_Memory_MM.cpp
    deleted file mode 100644
    index c3564828f10..00000000000
    --- a/ace/Shared_Memory_MM.cpp
    +++ /dev/null
    @@ -1,53 +0,0 @@
    -// Shared_Memory_MM.cpp
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Shared_Memory_MM.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/Shared_Memory_MM.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, Shared_Memory_MM, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Shared_Memory_MM)
    -
    -void
    -ACE_Shared_Memory_MM::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Shared_Memory_MM::dump");
    -}
    -
    -// Creates a shared memory segment of SIZE bytes.
    -
    -ACE_Shared_Memory_MM::ACE_Shared_Memory_MM (ACE_HANDLE handle,
    -                                            int length,
    -                                            int prot,
    -                                            int share,
    -                                            char *addr,
    -                                            off_t pos)
    -  : shared_memory_ (handle, length, prot, share, addr, pos)
    -{
    -  ACE_TRACE ("ACE_Shared_Memory_MM::ACE_Shared_Memory_MM");
    -}
    -
    -ACE_Shared_Memory_MM::ACE_Shared_Memory_MM (LPCTSTR file_name,
    -                                            int len,
    -                                            int flags,
    -                                            int mode,
    -                                            int prot,
    -                                            int share,
    -                                            char *addr,
    -                                            off_t pos)
    -  : shared_memory_ (file_name, len, flags, mode,
    -                    prot, share, addr, pos)
    -{
    -  ACE_TRACE ("ACE_Shared_Memory_MM::ACE_Shared_Memory_MM");
    -}
    -
    -// The "do-nothing" constructor.
    -
    -ACE_Shared_Memory_MM::ACE_Shared_Memory_MM (void)
    -{
    -  ACE_TRACE ("ACE_Shared_Memory_MM::ACE_Shared_Memory_MM");
    -}
    diff --git a/ace/Shared_Memory_MM.h b/ace/Shared_Memory_MM.h
    deleted file mode 100644
    index 57e41db8a9f..00000000000
    --- a/ace/Shared_Memory_MM.h
    +++ /dev/null
    @@ -1,115 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Shared_Memory_MM.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_SHARED_MALLOC_MM_H
    -#define ACE_SHARED_MALLOC_MM_H
    -
    -#include "ace/Shared_Memory.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Mem_Map.h"
    -
    -class ACE_Export ACE_Shared_Memory_MM : public ACE_Shared_Memory
    -{
    -  // = TITLE
    -  //     Shared memory wrapper based on MMAP.
    -  //
    -  // = DESCRIPTION
    -  //     This class provides a very simple-minded shared memory
    -  //     manager.  For more a powerful memory allocator please see
    -  //     .
    -public:
    -  // = Initialization and termination methods.
    -  ACE_Shared_Memory_MM (void);
    -  // Default constructor.
    -
    -  ACE_Shared_Memory_MM (ACE_HANDLE handle,
    -                        int length = -1,
    -                        int prot = PROT_RDWR,
    -                        int share = ACE_MAP_PRIVATE,
    -                        char *addr = 0,
    -                        off_t pos = 0);
    -  // Constructor.
    -
    -  ACE_Shared_Memory_MM (LPCTSTR file_name,
    -                        int len = -1,
    -                        int flags = O_RDWR | O_CREAT,
    -                        int mode = ACE_DEFAULT_FILE_PERMS,
    -                        int prot = PROT_RDWR,
    -                        int share = ACE_MAP_SHARED,
    -                        char *addr = 0, off_t pos = 0);
    -  // Constructor.
    -
    -  int open (ACE_HANDLE handle,
    -            int length = -1,
    -            int prot = PROT_RDWR,
    -            int share = ACE_MAP_PRIVATE,
    -            char *addr = 0,
    -            off_t pos = 0);
    -  // Open method.
    -
    -  int open (LPCTSTR file_name,
    -            int len = -1,
    -            int flags = O_RDWR | O_CREAT,
    -            int mode = ACE_DEFAULT_FILE_PERMS,
    -            int prot = PROT_RDWR,
    -            int share = ACE_MAP_SHARED,
    -            char *addr = 0,
    -            off_t pos = 0);
    -  // Open method.
    -
    -  const TCHAR *filename (void) const;
    -  // Return the name of file that is mapped (if any).
    -
    -  virtual int close (void);
    -  // Close down the shared memory segment.
    -
    -  virtual int remove (void);
    -  // Remove the shared memory segment and the underlying file.
    -
    -  // = Allocation and deallocation methods.
    -  virtual void *malloc (size_t size = 0);
    -  // Create a new chuck of memory containing  bytes.
    -
    -  virtual int free (void *p);
    -  // Free a chuck of memory allocated by
    -  // .
    -
    -  virtual int get_segment_size (void) const;
    -  // Return the size of the shared memory segment.
    -
    -  virtual ACE_HANDLE get_id (void) const;
    -  // Return the ID of the shared memory segment (i.e., an ACE_HANDLE).
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -   ACE_Mem_Map shared_memory_;
    -   // This version is implemented with memory-mapped files.
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Shared_Memory_MM.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_SHARED_MALLOC_MM_H */
    diff --git a/ace/Shared_Memory_MM.i b/ace/Shared_Memory_MM.i
    deleted file mode 100644
    index 721b56be3dc..00000000000
    --- a/ace/Shared_Memory_MM.i
    +++ /dev/null
    @@ -1,89 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// Shared_Memory_MM.i
    -
    -// Return the name of file that is mapped (if any).
    -
    -ACE_INLINE const TCHAR *
    -ACE_Shared_Memory_MM::filename (void) const
    -{
    -  return this->shared_memory_.filename ();
    -}
    -
    -ACE_INLINE int
    -ACE_Shared_Memory_MM::open (ACE_HANDLE handle,
    -                            int length,
    -                            int prot,
    -                            int share,
    -                            char *addr,
    -                            off_t pos)
    -{
    -  ACE_TRACE ("ACE_Shared_Memory_MM::open");
    -  return shared_memory_.map (handle, length, prot, share, addr, pos);
    -}
    -
    -ACE_INLINE int
    -ACE_Shared_Memory_MM::open (LPCTSTR file_name,
    -                            int len,
    -                            int flags,
    -                            int mode,
    -                            int prot,
    -                            int share,
    -                            char *addr,
    -                            off_t pos)
    -{
    -  ACE_TRACE ("ACE_Shared_Memory_MM::open");
    -  return shared_memory_.map (file_name, len, flags, mode,
    -                             prot, share, addr, pos);
    -}
    -
    -// The overall size of the segment.
    -
    -ACE_INLINE int
    -ACE_Shared_Memory_MM::get_segment_size (void) const
    -{
    -  ACE_TRACE ("ACE_Shared_Memory_MM::get_segment_size");
    -  return this->shared_memory_.size ();
    -}
    -
    -// Unmaps the shared memory segment.
    -
    -ACE_INLINE int
    -ACE_Shared_Memory_MM::remove (void)
    -{
    -  ACE_TRACE ("ACE_Shared_Memory_MM::remove");
    -  return shared_memory_.remove ();
    -}
    -
    -// Closes (unmaps) the shared memory segment.
    -
    -ACE_INLINE int
    -ACE_Shared_Memory_MM::close (void)
    -{
    -  ACE_TRACE ("ACE_Shared_Memory_MM::close");
    -  return shared_memory_.unmap ();
    -}
    -
    -ACE_INLINE void *
    -ACE_Shared_Memory_MM::malloc (size_t)
    -{
    -  ACE_TRACE ("ACE_Shared_Memory_MM::malloc");
    -  void *addr;
    -
    -  return this->shared_memory_ (addr) == -1 ? 0 : addr;
    -}
    -
    -ACE_INLINE ACE_HANDLE
    -ACE_Shared_Memory_MM::get_id (void) const
    -{
    -  ACE_TRACE ("ACE_Shared_Memory_MM::get_id");
    -  return this->shared_memory_.handle ();
    -}
    -
    -ACE_INLINE int
    -ACE_Shared_Memory_MM::free (void *p)
    -{
    -  ACE_TRACE ("ACE_Shared_Memory_MM::free");
    -  return p != 0;
    -}
    diff --git a/ace/Shared_Memory_SV.cpp b/ace/Shared_Memory_SV.cpp
    deleted file mode 100644
    index b8a2d7d8225..00000000000
    --- a/ace/Shared_Memory_SV.cpp
    +++ /dev/null
    @@ -1,31 +0,0 @@
    -// Shared_Memory_SV.cpp
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Shared_Memory_SV.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/Shared_Memory_SV.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, Shared_Memory_SV, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Shared_Memory_SV)
    -
    -void
    -ACE_Shared_Memory_SV::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Shared_Memory_SV::dump");
    -}
    -
    -ACE_Shared_Memory_SV::ACE_Shared_Memory_SV (key_t id,
    -					    int length, 
    -					    int create, 
    -					    int perms, 
    -					    void *addr, 
    -					    int flags)
    -  : shared_memory_ (id, length, create, perms, addr, flags)
    -{
    -  ACE_TRACE ("ACE_Shared_Memory_SV::ACE_Shared_Memory_SV");
    -}
    -
    diff --git a/ace/Shared_Memory_SV.h b/ace/Shared_Memory_SV.h
    deleted file mode 100644
    index 104175f158c..00000000000
    --- a/ace/Shared_Memory_SV.h
    +++ /dev/null
    @@ -1,96 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Shared_Memory_SV.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_SHARED_MALLOC_SV_H
    -#define ACE_SHARED_MALLOC_SV_H
    -
    -#include "ace/Shared_Memory.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/SV_Shared_Memory.h"
    -
    -class ACE_Export ACE_Shared_Memory_SV : public ACE_Shared_Memory
    -{
    -  // = TITLE
    -  //     Shared memory wrapper based on System V shared memory.
    -  //
    -  // = DESCRIPTION
    -  //     This class provides a very simple-minded shared memory
    -  //     manager.  For more a powerful memory allocator please see
    -  //     .  
    -public:
    -  enum
    -    {
    -      ACE_CREATE = IPC_CREAT,
    -      ACE_OPEN = 0
    -    };
    -
    -  // = Initialization and termination methods.
    -  ACE_Shared_Memory_SV (void);
    -  ACE_Shared_Memory_SV (key_t id,
    -                        int length,
    -                        int create = ACE_Shared_Memory_SV::ACE_OPEN,
    -                        int perms = ACE_DEFAULT_FILE_PERMS,
    -                        void *addr = 0,
    -                        int flags = 0);
    -
    -  int open (key_t id,
    -            int length,
    -            int create = ACE_Shared_Memory_SV::ACE_OPEN,
    -            int perms = ACE_DEFAULT_FILE_PERMS,
    -            void *addr = 0,
    -            int flags = 0);
    -
    -  virtual int close (void);
    -  // Close down the shared memory segment.
    -
    -  virtual int remove (void);
    -  // Remove the underlying shared memory segment.
    -
    -  // = Allocation and deallocation methods.
    -  virtual void *malloc (size_t = 0);
    -  // Create a new chuck of memory containing  bytes.
    -
    -  virtual int free (void *p);
    -  // Free a chuck of memory allocated by .
    -
    -  virtual int get_segment_size (void) const;
    -  // Return the size of the shared memory segment.
    -
    -  virtual ACE_HANDLE get_id (void) const;
    -  // Return the ID of the shared memory segment (i.e., a System V
    -  // shared memory internal id).
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -   ACE_SV_Shared_Memory shared_memory_;
    -   // This version is implemented with System V shared memory
    -   // segments.
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Shared_Memory_SV.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_SHARED_MALLOC_SV_H */
    diff --git a/ace/Shared_Memory_SV.i b/ace/Shared_Memory_SV.i
    deleted file mode 100644
    index 400d9e63201..00000000000
    --- a/ace/Shared_Memory_SV.i
    +++ /dev/null
    @@ -1,73 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// Shared_Memory_SV.i
    -
    -ACE_INLINE int 	       
    -ACE_Shared_Memory_SV::open (key_t id, 
    -			    int length, 
    -			    int create, 
    -			    int perms, 
    -			    void *addr, 
    -			    int flags)
    -{
    -  ACE_TRACE ("ACE_Shared_Memory_SV::open");
    -  return shared_memory_.open_and_attach (id, length, create, 
    -					 perms, addr, flags);
    -}
    -
    -// The overall size of the segment. 
    -
    -ACE_INLINE int
    -ACE_Shared_Memory_SV::get_segment_size (void) const
    -{
    -  ACE_TRACE ("ACE_Shared_Memory_SV::get_segment_size");
    -  return this->shared_memory_.get_segment_size ();
    -}
    -
    -// Removes the shared memory segment.
    -
    -ACE_INLINE int
    -ACE_Shared_Memory_SV::remove (void)
    -{
    -  ACE_TRACE ("ACE_Shared_Memory_SV::remove");
    -  return shared_memory_.remove ();
    -}
    -
    -// Closes (detaches) the shared memory segment. 
    -
    -ACE_INLINE int
    -ACE_Shared_Memory_SV::close (void)
    -{
    -  ACE_TRACE ("ACE_Shared_Memory_SV::close");
    -  return shared_memory_.detach ();
    -}
    -
    -ACE_INLINE void *
    -ACE_Shared_Memory_SV::malloc (size_t)
    -{
    -  ACE_TRACE ("ACE_Shared_Memory_SV::malloc");
    -  return this->shared_memory_.get_segment_ptr ();
    -}
    -
    -ACE_INLINE ACE_HANDLE
    -ACE_Shared_Memory_SV::get_id (void) const
    -{
    -  ACE_TRACE ("ACE_Shared_Memory_SV::get_id");
    -  return this->shared_memory_.get_id ();
    -}
    -
    -// The "do-nothing" constructor.
    -
    -ACE_INLINE
    -ACE_Shared_Memory_SV::ACE_Shared_Memory_SV (void)
    -{
    -  ACE_TRACE ("ACE_Shared_Memory_SV::ACE_Shared_Memory_SV");
    -}
    -
    -ACE_INLINE int  
    -ACE_Shared_Memory_SV::free (void *p)
    -{
    -  ACE_TRACE ("ACE_Shared_Memory_SV::free");
    -  return p != 0;
    -}
    diff --git a/ace/Shared_Object.cpp b/ace/Shared_Object.cpp
    deleted file mode 100644
    index 8377824f0c4..00000000000
    --- a/ace/Shared_Object.cpp
    +++ /dev/null
    @@ -1,47 +0,0 @@
    -// Shared_Object.cpp
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Shared_Object.h"
    -/* Provide the abstract base class used to access dynamic linking
    -   facilities */
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/Shared_Object.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, Shared_Object, "$Id$")
    -
    -// Initializes object when dynamic linking occurs.
    -
    -int 
    -ACE_Shared_Object::init (int, ASYS_TCHAR *[])
    -{
    -  ACE_TRACE ("ACE_Shared_Object::init");
    -  return 0;
    -}
    -
    -// Terminates object when dynamic unlinking occurs.
    -
    -int 
    -ACE_Shared_Object::fini (void)
    -{
    -  ACE_TRACE ("ACE_Shared_Object::fini");
    -  return 0;
    -}
    -
    -// Returns information on active object.
    -
    -int 
    -ACE_Shared_Object::info (ASYS_TCHAR **, size_t) const
    -{
    -  ACE_TRACE ("ACE_Shared_Object::info");
    -  return 0;
    -}
    -
    -// Need to give a default implementation.
    -
    -ACE_Shared_Object::~ACE_Shared_Object (void)
    -{
    -  ACE_TRACE ("ACE_Shared_Object::~ACE_Shared_Object");
    -}
    diff --git a/ace/Shared_Object.h b/ace/Shared_Object.h
    deleted file mode 100644
    index a73a83e8e63..00000000000
    --- a/ace/Shared_Object.h
    +++ /dev/null
    @@ -1,51 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Shared_Object.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_SHARED_OBJECT_H
    -#define ACE_SHARED_OBJECT_H
    -
    -#include "ace/ACE.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -class ACE_Export ACE_Shared_Object
    -{
    -  // = TITLE
    -  //     Provide the abstract base class used to access dynamic
    -  //     linking facilities.
    -public:
    -  ACE_Shared_Object (void);
    -
    -  virtual int init (int argc, ASYS_TCHAR *argv[]);
    -  // Initializes object when dynamic linking occurs.
    -
    -  virtual int fini (void);
    -  // Terminates object when dynamic unlinking occurs.
    -
    -  virtual int info (ASYS_TCHAR **info_string, size_t length = 0) const;
    -  // Returns information on active object.
    -
    -  virtual ~ACE_Shared_Object (void);
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Shared_Object.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_SHARED_OBJECT_H */
    diff --git a/ace/Shared_Object.i b/ace/Shared_Object.i
    deleted file mode 100644
    index 97ca0090c6d..00000000000
    --- a/ace/Shared_Object.i
    +++ /dev/null
    @@ -1,9 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// Shared_Object.i
    -
    -ACE_INLINE
    -ACE_Shared_Object::ACE_Shared_Object (void)
    -{
    -}
    diff --git a/ace/Signal.cpp b/ace/Signal.cpp
    deleted file mode 100644
    index c4155107e15..00000000000
    --- a/ace/Signal.cpp
    +++ /dev/null
    @@ -1,875 +0,0 @@
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Synch_T.h"
    -#include "ace/Signal.h"
    -#include "ace/Object_Manager.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/Signal.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, Signal, "$Id$")
    -
    -// Static definitions.
    -
    -#if defined (ACE_HAS_SIG_C_FUNC)
    -
    -extern "C" void
    -ace_sig_handler_dispatch (int signum, siginfo_t *info, ucontext_t *context)
    -{
    -  ACE_TRACE ("ace_signal_handler_dispatch");
    -  ACE_Sig_Handler::dispatch (signum, info, context);
    -}
    -
    -static ACE_SignalHandler ace_signal_handler_dispatcher = ACE_SignalHandler (ace_sig_handler_dispatch);
    -
    -#if !defined (ACE_HAS_BROKEN_HPUX_TEMPLATES)
    -extern "C" void
    -ace_sig_handlers_dispatch (int signum, siginfo_t *info, ucontext_t *context)
    -{
    -  ACE_TRACE ("ace_signal_handlers_dispatch");
    -  ACE_Sig_Handlers::dispatch (signum, info, context);
    -}
    -
    -static ACE_SignalHandler ace_signal_handlers_dispatcher = ACE_SignalHandler (ace_sig_handlers_dispatch);
    -#endif /* ACE_HAS_BROKEN_HPUX_TEMPLATES */
    -
    -#else
    -static ACE_SignalHandler ace_signal_handler_dispatcher = ACE_SignalHandler (ACE_Sig_Handler::dispatch);
    -
    -#if !defined (ACE_HAS_BROKEN_HPUX_TEMPLATES)
    -static ACE_SignalHandler ace_signal_handlers_dispatcher = ACE_SignalHandler (ACE_Sig_Handlers::dispatch);
    -#endif /* ACE_HAS_BROKEN_HPUX_TEMPLATES */
    -#endif /* ACE_HAS_SIG_C_FUNC */
    -
    -// Array of Event_Handlers that will handle the signals.
    -ACE_Event_Handler *ACE_Sig_Handler::signal_handlers_[ACE_NSIG];
    -
    -// Remembers if a signal has occurred.
    -sig_atomic_t ACE_Sig_Handler::sig_pending_ = 0;
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Sig_Action)
    -
    -void
    -ACE_Sig_Action::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Sig_Action::dump");
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Sig_Set)
    -
    -void
    -ACE_Sig_Set::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Sig_Set::dump");
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Sig_Guard)
    -
    -void
    -ACE_Sig_Guard::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Sig_Guard::dump");
    -}
    -
    -ACE_Sig_Action::ACE_Sig_Action (void)
    -{
    -  // ACE_TRACE ("ACE_Sig_Action::ACE_Sig_Action");
    -  this->sa_.sa_flags = 0;
    -
    -  // Since Service_Config::signal_handler_ is static and has an
    -  // ACE_Sig_Action instance, Win32 will get errno set unless this is
    -  // commented out.
    -#if !defined (ACE_WIN32)
    -  ACE_OS::sigemptyset (&this->sa_.sa_mask);
    -#endif /* ACE_WIN32 */
    -  this->sa_.sa_handler = 0;
    -}
    -
    -ACE_Sig_Action::ACE_Sig_Action (ACE_SignalHandler sig_handler,
    -                                sigset_t *sig_mask,
    -                                int sig_flags)
    -{
    -  // ACE_TRACE ("ACE_Sig_Action::ACE_Sig_Action");
    -  this->sa_.sa_flags = sig_flags;
    -
    -  if (sig_mask == 0)
    -    ACE_OS::sigemptyset (&this->sa_.sa_mask);
    -  else
    -    this->sa_.sa_mask = *sig_mask; // Structure assignment...
    -
    -#if !defined(ACE_HAS_TANDEM_SIGNALS)
    -  this->sa_.sa_handler = ACE_SignalHandlerV (sig_handler);
    -#else
    -  this->sa_.sa_handler = (void (*)()) ACE_SignalHandlerV (sig_handler);
    -#endif /* !ACE_HAS_TANDEM_SIGNALS */
    -}
    -
    -ACE_Sig_Action::ACE_Sig_Action (ACE_SignalHandler sig_handler,
    -                                const ACE_Sig_Set &sig_mask,
    -                                int sig_flags)
    -{
    -  // ACE_TRACE ("ACE_Sig_Action::ACE_Sig_Action");
    -  this->sa_.sa_flags = sig_flags;
    -
    -  // Structure assignment...
    -  this->sa_.sa_mask = sig_mask.sigset ();
    -
    -#if !defined(ACE_HAS_TANDEM_SIGNALS)
    -  this->sa_.sa_handler = ACE_SignalHandlerV (sig_handler);
    -#else
    -  this->sa_.sa_handler = (void (*)()) ACE_SignalHandlerV (sig_handler);
    -#endif /* !ACE_HAS_TANDEM_SIGNALS */
    -}
    -
    -ACE_Sig_Action::ACE_Sig_Action (ACE_SignalHandler sig_handler,
    -                                int signum,
    -                                sigset_t *sig_mask,
    -                                int sig_flags)
    -{
    -  // ACE_TRACE ("ACE_Sig_Action::ACE_Sig_Action");
    -  this->sa_.sa_flags = sig_flags;
    -
    -  if (sig_mask == 0)
    -    ACE_OS::sigemptyset (&this->sa_.sa_mask);
    -  else
    -    this->sa_.sa_mask = *sig_mask; // Structure assignment...
    -
    -#if !defined(ACE_HAS_TANDEM_SIGNALS)
    -  this->sa_.sa_handler = ACE_SignalHandlerV (sig_handler);
    -#else
    -  this->sa_.sa_handler = (void (*)()) ACE_SignalHandlerV (sig_handler);
    -#endif /* !ACE_HAS_TANDEM_SIGNALS */
    -  ACE_OS::sigaction (signum, &this->sa_, 0);
    -}
    -
    -ACE_Sig_Action::ACE_Sig_Action (ACE_SignalHandler sig_handler,
    -                                int signum,
    -                                const ACE_Sig_Set &sig_mask,
    -                                int sig_flags)
    -{
    -  // ACE_TRACE ("ACE_Sig_Action::ACE_Sig_Action");
    -  this->sa_.sa_flags = sig_flags;
    -
    -  // Structure assignment...
    -  this->sa_.sa_mask = sig_mask.sigset ();
    -
    -#if !defined(ACE_HAS_TANDEM_SIGNALS)
    -  this->sa_.sa_handler = ACE_SignalHandlerV (sig_handler);
    -#else
    -  this->sa_.sa_handler = (void (*)()) ACE_SignalHandlerV (sig_handler);
    -#endif /* !ACE_HAS_TANDEM_SIGNALS */
    -  ACE_OS::sigaction (signum, &this->sa_, 0);
    -}
    -
    -ACE_Sig_Action::ACE_Sig_Action (const ACE_Sig_Set &signals,
    -                                ACE_SignalHandler sig_handler,
    -                                const ACE_Sig_Set &sig_mask,
    -                                int sig_flags)
    -{
    -  // ACE_TRACE ("ACE_Sig_Action::ACE_Sig_Action");
    -  this->sa_.sa_flags = sig_flags;
    -
    -  // Structure assignment...
    -  this->sa_.sa_mask = sig_mask.sigset ();
    -
    -#if !defined(ACE_HAS_TANDEM_SIGNALS)
    -  this->sa_.sa_handler = ACE_SignalHandlerV (sig_handler);
    -#else
    -  this->sa_.sa_handler = (void (*)()) ACE_SignalHandlerV (sig_handler);
    -#endif /* !ACE_HAS_TANDEM_SIGNALS */
    -
    -#if (ACE_NSIG > 0)
    -  for (int s = 1; s < ACE_NSIG; s++)
    -    if (signals.is_member (s)
    -        && ACE_OS::sigaction (s, &this->sa_, 0) == -1)
    -      break;
    -#else
    -  ACE_UNUSED_ARG (signals);
    -#endif /* ACE_NSIG */
    -}
    -
    -ACE_Sig_Action::ACE_Sig_Action (const ACE_Sig_Set &signals,
    -                                ACE_SignalHandler sig_handler,
    -                                sigset_t *sig_mask,
    -                                int sig_flags)
    -{
    -  // ACE_TRACE ("ACE_Sig_Action::ACE_Sig_Action");
    -  this->sa_.sa_flags = sig_flags;
    -
    -  if (sig_mask == 0)
    -    ACE_OS::sigemptyset (&this->sa_.sa_mask);
    -  else
    -    this->sa_.sa_mask = *sig_mask; // Structure assignment...
    -
    -#if !defined(ACE_HAS_TANDEM_SIGNALS)
    -  this->sa_.sa_handler = ACE_SignalHandlerV (sig_handler);
    -#else
    -  this->sa_.sa_handler = (void (*)()) ACE_SignalHandlerV (sig_handler);
    -#endif /* !ACE_HAS_TANDEM_SIGNALS */
    -
    -#if (ACE_NSIG > 0)
    -  for (int s = 1; s < ACE_NSIG; s++)
    -    if (signals.is_member (s)
    -        && ACE_OS::sigaction (s, &this->sa_, 0) == -1)
    -      break;
    -#else
    -  ACE_UNUSED_ARG (signals);
    -#endif /* ACE_NSIG */
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Sig_Handler)
    -
    -void
    -ACE_Sig_Handler::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Sig_Handler::dump");
    -}
    -
    -int
    -ACE_Sig_Handler::sig_pending (void)
    -{
    -  ACE_TRACE ("ACE_Sig_Handler::sig_pending");
    -  ACE_MT (ACE_Recursive_Thread_Mutex *lock =
    -          ACE_Managed_Object::get_preallocated_object
    -          (ACE_Object_Manager::ACE_SIG_HANDLER_LOCK);
    -          ACE_Guard m (*lock));
    -  return ACE_Sig_Handler::sig_pending_ != 0;
    -}
    -
    -void
    -ACE_Sig_Handler::sig_pending (int pending)
    -{
    -  ACE_TRACE ("ACE_Sig_Handler::sig_pending");
    -
    -  ACE_MT (ACE_Recursive_Thread_Mutex *lock =
    -          ACE_Managed_Object::get_preallocated_object
    -          (ACE_Object_Manager::ACE_SIG_HANDLER_LOCK);
    -          ACE_Guard m (*lock));
    -  ACE_Sig_Handler::sig_pending_ = pending;
    -}
    -
    -ACE_Event_Handler *
    -ACE_Sig_Handler::handler (int signum)
    -{
    -  ACE_TRACE ("ACE_Sig_Handler::handler");
    -  ACE_MT (ACE_Recursive_Thread_Mutex *lock =
    -    ACE_Managed_Object::get_preallocated_object
    -      (ACE_Object_Manager::ACE_SIG_HANDLER_LOCK);
    -    ACE_Guard m (*lock));
    -
    -  if (ACE_Sig_Handler::in_range (signum))
    -    return ACE_Sig_Handler::signal_handlers_[signum];
    -  else
    -    return 0;
    -}
    -
    -ACE_Event_Handler *
    -ACE_Sig_Handler::handler_i (int signum,
    -                            ACE_Event_Handler *new_sh)
    -{
    -  ACE_TRACE ("ACE_Sig_Handler::handler_i");
    -
    -  if (ACE_Sig_Handler::in_range (signum))
    -    {
    -      ACE_Event_Handler *sh = ACE_Sig_Handler::signal_handlers_[signum];
    -
    -      ACE_Sig_Handler::signal_handlers_[signum] = new_sh;
    -      return sh;
    -    }
    -  else
    -    return 0;
    -}
    -
    -ACE_Event_Handler *
    -ACE_Sig_Handler::handler (int signum,
    -                          ACE_Event_Handler *new_sh)
    -{
    -  ACE_TRACE ("ACE_Sig_Handler::handler");
    -  ACE_MT (ACE_Recursive_Thread_Mutex *lock =
    -    ACE_Managed_Object::get_preallocated_object
    -      (ACE_Object_Manager::ACE_SIG_HANDLER_LOCK);
    -    ACE_Guard m (*lock));
    -
    -  return ACE_Sig_Handler::handler_i (signum, new_sh);
    -}
    -
    -// Register an ACE_Event_Handler along with the corresponding SIGNUM.
    -// This method does NOT acquire any locks, so it can be called from a
    -// signal handler.
    -
    -int
    -ACE_Sig_Handler::register_handler_i (int signum,
    -                                     ACE_Event_Handler *new_sh,
    -                                     ACE_Sig_Action *new_disp,
    -                                     ACE_Event_Handler **old_sh,
    -                                     ACE_Sig_Action *old_disp)
    -{
    -  ACE_TRACE ("ACE_Sig_Handler::register_handler_i");
    -
    -  if (ACE_Sig_Handler::in_range (signum))
    -    {
    -      ACE_Sig_Action sa; // Define a "null" action.
    -      ACE_Event_Handler *sh = ACE_Sig_Handler::handler_i (signum,
    -                                                          new_sh);
    -
    -      // Return a pointer to the old  if the user
    -      // asks for this.
    -      if (old_sh != 0)
    -        *old_sh = sh;
    -
    -      // Make sure that  points to a valid location if the
    -      // user doesn't care...
    -      if (new_disp == 0)
    -        new_disp = &sa;
    -
    -      new_disp->handler (ace_signal_handler_dispatcher);
    -#if !defined (ACE_HAS_LYNXOS_SIGNALS)
    -      new_disp->flags (new_disp->flags () | SA_SIGINFO);
    -#endif /* ACE_HAS_LYNXOS_SIGNALS */
    -      return new_disp->register_action (signum, old_disp);
    -    }
    -  else
    -    return -1;
    -}
    -
    -// Register an ACE_Event_Handler along with the corresponding SIGNUM.
    -// This method acquires a lock, so it can't be called from a signal
    -// handler, e.g., .
    -
    -int
    -ACE_Sig_Handler::register_handler (int signum,
    -                                   ACE_Event_Handler *new_sh,
    -                                   ACE_Sig_Action *new_disp,
    -                                   ACE_Event_Handler **old_sh,
    -                                   ACE_Sig_Action *old_disp)
    -{
    -  ACE_TRACE ("ACE_Sig_Handler::register_handler");
    -  ACE_MT (ACE_Recursive_Thread_Mutex *lock =
    -    ACE_Managed_Object::get_preallocated_object
    -      (ACE_Object_Manager::ACE_SIG_HANDLER_LOCK);
    -    ACE_Guard m (*lock));
    -
    -  return ACE_Sig_Handler::register_handler_i (signum,
    -                                              new_sh,
    -                                              new_disp,
    -                                              old_sh,
    -                                              old_disp);
    -}
    -
    -// Remove an ACE_Event_Handler.
    -
    -int
    -ACE_Sig_Handler::remove_handler (int signum,
    -                                 ACE_Sig_Action *new_disp,
    -                                 ACE_Sig_Action *old_disp,
    -                                 int)
    -{
    -  ACE_TRACE ("ACE_Sig_Handler::remove_handler");
    -  ACE_MT (ACE_Recursive_Thread_Mutex *lock =
    -    ACE_Managed_Object::get_preallocated_object
    -      (ACE_Object_Manager::ACE_SIG_HANDLER_LOCK);
    -    ACE_Guard m (*lock));
    -
    -  if (ACE_Sig_Handler::in_range (signum))
    -    {
    -#if defined (ACE_PSOS)
    -      ACE_Sig_Action sa ((ACE_SignalHandler) 0, (sigset_t *) 0);
    -#else
    -      ACE_Sig_Action sa (SIG_DFL, (sigset_t *) 0); // Define the default disposition.
    -#endif /* defined (ACE_PSOS) */
    -
    -      if (new_disp == 0)
    -        new_disp = &sa;
    -
    -      ACE_Sig_Handler::signal_handlers_[signum] = 0;
    -
    -      // Register either the new disposition or restore the default.
    -      return new_disp->register_action (signum, old_disp);
    -    }
    -  else
    -    return -1;
    -}
    -
    -// Master dispatcher function that gets called by a signal handler and
    -// dispatches one handler...
    -
    -void
    -ACE_Sig_Handler::dispatch (int signum,
    -                           siginfo_t *siginfo,
    -                           ucontext_t *ucontext)
    -{
    -  ACE_TRACE ("ACE_Sig_Handler::dispatch");
    -
    -  // Save/restore errno.
    -  ACE_Errno_Guard error (errno);
    -
    -  // We can't use the  call here because that acquires
    -  // the lock, which is non-portable...
    -  ACE_Sig_Handler::sig_pending_ = 1;
    -
    -  // Darn well better be in range since the OS dispatched this...
    -  ACE_ASSERT (ACE_Sig_Handler::in_range (signum));
    -
    -  ACE_Event_Handler *eh = ACE_Sig_Handler::signal_handlers_[signum];
    -
    -  if (eh != 0)
    -    {
    -      if (eh->handle_signal (signum, siginfo, ucontext) == -1)
    -        {
    -          // Define the default disposition.
    -#if defined (ACE_PSOS)
    -          ACE_Sig_Action sa ((ACE_SignalHandler) 0, (sigset_t *) 0);
    -#else
    -          ACE_Sig_Action sa (SIG_DFL, (sigset_t *) 0);
    -#endif /* defined (ACE_PSOS) */
    -
    -          ACE_Sig_Handler::signal_handlers_[signum] = 0;
    -
    -          // Remove the current disposition by registering the default
    -          // disposition.
    -          sa.register_action (signum);
    -
    -          // Allow the event handler to close down if necessary.
    -          eh->handle_close (ACE_INVALID_HANDLE,
    -                            ACE_Event_Handler::SIGNAL_MASK);
    -        }
    -#if defined (ACE_WIN32)
    -      else
    -        // Win32 is weird in the sense that it resets the signal
    -        // disposition to SIG_DFL after a signal handler is
    -        // dispatched.  Therefore, to workaround this "feature" we
    -        // must re-register the  with 
    -        // explicitly.
    -        ACE_Sig_Handler::register_handler_i (signum,
    -                                             eh);
    -#endif /* ACE_WIN32*/
    -    }
    -}
    -
    -ACE_Sig_Adapter::ACE_Sig_Adapter (ACE_Sig_Action &sa, int sigkey)
    -  : sigkey_ (sigkey),
    -    type_ (SIG_ACTION),
    -    sa_ (sa)
    -{
    -  // ACE_TRACE ("ACE_Sig_Adapter::ACE_Sig_Adapter");
    -}
    -
    -ACE_Sig_Adapter::ACE_Sig_Adapter (ACE_Event_Handler *eh,
    -                                  int sigkey)
    -  : sigkey_ (sigkey),
    -    type_ (ACE_HANDLER),
    -    eh_ (eh)
    -{
    -  // ACE_TRACE ("ACE_Sig_Adapter::ACE_Sig_Adapter");
    -}
    -
    -ACE_Sig_Adapter::ACE_Sig_Adapter (ACE_Sig_Handler_Ex sig_func,
    -                                  int sigkey)
    -  : sigkey_ (sigkey),
    -    type_ (C_FUNCTION),
    -    sig_func_ (sig_func)
    -{
    -  // ACE_TRACE ("ACE_Sig_Adapter::ACE_Sig_Adapter");
    -}
    -
    -int
    -ACE_Sig_Adapter::sigkey (void)
    -{
    -  ACE_TRACE ("ACE_Sig_Adapter::sigkey");
    -  return this->sigkey_;
    -}
    -
    -int
    -ACE_Sig_Adapter::handle_signal (int signum,
    -                                siginfo_t *siginfo,
    -                                ucontext_t *ucontext)
    -{
    -  ACE_TRACE ("ACE_Sig_Adapter::handle_signal");
    -
    -  switch (this->type_)
    -    {
    -    case SIG_ACTION:
    -      {
    -        // We have to dispatch a handler that was registered by a
    -        // third-party library.
    -
    -        ACE_Sig_Action old_disp;
    -
    -        // Make sure this handler executes in the context it was
    -        // expecting...
    -        this->sa_.register_action (signum, &old_disp);
    -
    -        ACE_Sig_Handler_Ex sig_func = ACE_Sig_Handler_Ex (this->sa_.handler ());
    -
    -        (*sig_func) (signum, siginfo, ucontext);
    -        // Restore the original disposition.
    -        old_disp.register_action (signum);
    -        break;
    -      }
    -    case ACE_HANDLER:
    -      this->eh_->handle_signal (signum, siginfo, ucontext);
    -      break;
    -    case C_FUNCTION:
    -      (*this->sig_func_) (signum, siginfo, ucontext);
    -      break;
    -    }
    -  return 0;
    -}
    -
    -// ----------------------------------------
    -// The following classes are local to this file.
    -
    -// There are bugs with HP/UX's C++ compiler that prevents this stuff
    -// from compiling...
    -#if !defined (ACE_HAS_BROKEN_HPUX_TEMPLATES)
    -#define ACE_MAX_SIGNAL_HANDLERS ((size_t) 20)
    -
    -// Keeps track of the id that uniquely identifies each registered
    -// signal handler.  This id can be used to cancel a timer via the
    -//  method.
    -int ACE_Sig_Handlers::sigkey_ = 0;
    -
    -// If this is > 0 then a 3rd party library has registered a
    -// handler...
    -int ACE_Sig_Handlers::third_party_sig_handler_ = 0;
    -
    -// Make life easier by defining typedefs...
    -typedef ACE_Fixed_Set 
    -        ACE_SIG_HANDLERS_SET;
    -typedef ACE_Fixed_Set_Iterator 
    -        ACE_SIG_HANDLERS_ITERATOR;
    -
    -class ACE_Sig_Handlers_Set
    -{
    -public:
    -  static ACE_SIG_HANDLERS_SET *instance (int signum);
    -
    -private:
    -  static ACE_SIG_HANDLERS_SET *sig_handlers_[ACE_NSIG];
    -};
    -
    -/* static */
    -ACE_SIG_HANDLERS_SET *ACE_Sig_Handlers_Set::sig_handlers_[ACE_NSIG];
    -
    -/* static */
    -ACE_SIG_HANDLERS_SET *
    -ACE_Sig_Handlers_Set::instance (int signum)
    -{
    -  if (signum <= 0 || signum >= ACE_NSIG)
    -    return 0; // This will cause problems...
    -  else if (ACE_Sig_Handlers_Set::sig_handlers_[signum] == 0)
    -    ACE_NEW_RETURN (ACE_Sig_Handlers_Set::sig_handlers_[signum],
    -                    ACE_SIG_HANDLERS_SET,
    -                    0);
    -  return ACE_Sig_Handlers_Set::sig_handlers_[signum];
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Sig_Handlers)
    -
    -void
    -ACE_Sig_Handlers::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Sig_Handlers::dump");
    -}
    -
    -// This is the method that does all the dirty work...  The basic
    -// structure of this method was devised by Detlef Becker
    -// (beckerd@erlh.siemens.de).
    -
    -int
    -ACE_Sig_Handlers::register_handler (int signum,
    -                                    ACE_Event_Handler *new_sh,
    -                                    ACE_Sig_Action *new_disp,
    -                                    ACE_Event_Handler **,
    -                                    ACE_Sig_Action *old_disp)
    -{
    -  ACE_TRACE ("ACE_Sig_Handlers::register_handler");
    -  ACE_MT (ACE_Recursive_Thread_Mutex *lock =
    -    ACE_Managed_Object::get_preallocated_object
    -      (ACE_Object_Manager::ACE_SIG_HANDLER_LOCK);
    -    ACE_Guard m (*lock));
    -
    -  if (ACE_Sig_Handler::in_range (signum))
    -    {
    -      ACE_Sig_Adapter *ace_sig_adapter = 0; // Our signal handler.
    -      ACE_Sig_Adapter *extern_sh = 0; // An external signal handler.
    -      ACE_Sig_Action sa;
    -
    -      // Get current signal disposition.
    -      sa.retrieve_action (signum);
    -
    -      // Check whether we are already in control of the signal
    -      // handling disposition...
    -
    -      if (!(sa.handler () == ace_signal_handlers_dispatcher
    -          || sa.handler () == ACE_SignalHandler (SIG_IGN)
    -          || sa.handler () == ACE_SignalHandler (SIG_DFL)))
    -        {
    -          // Drat, a 3rd party library has already installed a signal ;-(
    -
    -          // Upto here we never disabled RESTART_MODE.  Thus,
    -          // RESTART_MODE can only be changed by 3rd party libraries.
    -
    -          if (ACE_BIT_DISABLED (sa.flags (), SA_RESTART)
    -              && ACE_Sig_Handlers::third_party_sig_handler_)
    -            // Toggling is disallowed since we might break 3rd party
    -            // code.
    -            return -1;
    -
    -          // Note that we've seen a 3rd party handler...
    -          ACE_Sig_Handlers::third_party_sig_handler_ = 1;
    -
    -          // Create a new 3rd party disposition, remembering its
    -          // preferred signal blocking etc...;
    -          ACE_NEW_RETURN (extern_sh,
    -                          ACE_Sig_Adapter (sa,
    -                                           ++ACE_Sig_Handlers::sigkey_),
    -                          -1);
    -          // Add the external signal handler to the set of handlers
    -          // for this signal.
    -          if (ACE_Sig_Handlers_Set::instance (signum)->insert (extern_sh) == -1)
    -            {
    -              delete extern_sh;
    -              return -1;
    -            }
    -        }
    -      // Add our new handler at this point.
    -      ACE_NEW_RETURN (ace_sig_adapter,
    -                      ACE_Sig_Adapter (new_sh,
    -                                       ++ACE_Sig_Handlers::sigkey_),
    -                      -1);
    -      // Add the ACE signal handler to the set of handlers for this
    -      // signal (make sure it goes before the external one if there is
    -      // one of these).
    -      if (ACE_Sig_Handlers_Set::instance (signum)->insert (ace_sig_adapter) == -1)
    -        {
    -          // We couldn't reinstall our handler, so let's pretend like
    -          // none of this happened...
    -          if (extern_sh)
    -            {
    -              ACE_Sig_Handlers_Set::instance (signum)->remove (extern_sh);
    -              delete extern_sh;
    -            }
    -          delete ace_sig_adapter;
    -          return -1;
    -        }
    -      // If ACE_Sig_Handlers::dispatch() was set we're done.
    -      else if (sa.handler () == ace_signal_handlers_dispatcher)
    -        return ace_sig_adapter->sigkey ();
    -
    -      // Otherwise, we need to register our handler function so that
    -      // all signals will be dispatched through ACE.
    -      else
    -        {
    -          // Make sure that new_disp points to a valid location if the
    -          // user doesn't care...
    -          if (new_disp == 0)
    -            new_disp = &sa;
    -
    -          new_disp->handler (ace_signal_handlers_dispatcher);
    -
    -          // Default is to restart signal handlers.
    -          new_disp->flags (new_disp->flags () | SA_RESTART);
    -          new_disp->flags (new_disp->flags () | SA_SIGINFO);
    -
    -          // Finally install (possibly reinstall) the ACE signal
    -          // handler disposition with the SA_RESTART mode enabled.
    -          if (new_disp->register_action (signum, old_disp) == -1)
    -            {
    -              // Yikes, lots of roll back at this point...
    -              ACE_Sig_Handlers_Set::instance (signum)->remove (ace_sig_adapter);
    -              delete ace_sig_adapter;
    -
    -              if (extern_sh)
    -                {
    -                  ACE_Sig_Handlers_Set::instance (signum)->remove (extern_sh);
    -                  delete extern_sh;
    -                }
    -              return -1;
    -            }
    -          else // Return the signal key so that programs can cancel this
    -            // handler if they want!
    -            return ace_sig_adapter->sigkey ();
    -        }
    -    }
    -  else
    -    return -1;
    -}
    -
    -// Remove the ACE_Event_Handler currently associated with .
    -// Install the new disposition (if given) and return the previous
    -// disposition (if desired by the caller).  Returns 0 on success and
    -// -1 if  is invalid.
    -
    -int
    -ACE_Sig_Handlers::remove_handler (int signum,
    -                                  ACE_Sig_Action *new_disp,
    -                                  ACE_Sig_Action *old_disp,
    -                                  int sigkey)
    -{
    -  ACE_TRACE ("ACE_Sig_Handlers::remove_handler");
    -  ACE_MT (ACE_Recursive_Thread_Mutex *lock =
    -    ACE_Managed_Object::get_preallocated_object
    -      (ACE_Object_Manager::ACE_SIG_HANDLER_LOCK);
    -    ACE_Guard m (*lock));
    -
    -  if (ACE_Sig_Handler::in_range (signum))
    -    {
    -      ACE_SIG_HANDLERS_SET *handler_set =
    -        ACE_Sig_Handlers_Set::instance (signum);
    -
    -      ACE_SIG_HANDLERS_ITERATOR handler_iterator (*handler_set);
    -
    -      // Iterate through the set of handlers for this signal.
    -
    -      for (ACE_Event_Handler **eh;
    -           handler_iterator.next (eh) != 0;
    -           handler_iterator.advance ())
    -        {
    -          // Type-safe downcast would be nice here...
    -          ACE_Sig_Adapter *sh = (ACE_Sig_Adapter *) *eh;
    -
    -          // Remove the handler if (1) it's key matches the key we've
    -          // been told to remove or (2) if we've been told to remove
    -          // *all* handlers (i.e.,  == -1).
    -
    -          if (sh->sigkey () == sigkey || sigkey == -1)
    -            {
    -              handler_set->remove (*eh);
    -              delete *eh;
    -            }
    -        }
    -
    -      if (handler_set->size () == 0)
    -        {
    -          // If there are no more handlers left for a signal then
    -          // register the new disposition or restore the default
    -          // disposition.
    -
    -#if defined (ACE_PSOS)
    -          ACE_Sig_Action sa ((ACE_SignalHandler) 0, (sigset_t *) 0);
    -#else
    -          ACE_Sig_Action sa (SIG_DFL, (sigset_t *) 0);
    -#endif /* defined (ACE_PSOS) */
    -
    -          if (new_disp == 0)
    -            new_disp = &sa;
    -
    -          return new_disp->register_action (signum, old_disp);
    -        }
    -      return 0;
    -    }
    -  else
    -    return -1;
    -}
    -
    -// Master dispatcher function that gets called by a signal handler and
    -// dispatches *all* the handlers...
    -
    -void
    -ACE_Sig_Handlers::dispatch (int signum,
    -                            siginfo_t *siginfo,
    -                            ucontext_t *ucontext)
    -{
    -  ACE_TRACE ("ACE_Sig_Handlers::dispatch");
    -  // The following is #ifdef'd out because it's entirely non-portable
    -  // to acquire a mutex in a signal handler...
    -#if 0
    -  ACE_MT (ACE_Recursive_Thread_Mutex *lock =
    -    ACE_Managed_Object::get_preallocated_object
    -      (ACE_Object_Manager::ACE_SIG_HANDLER_LOCK);
    -    ACE_TSS_Guard m (*lock));
    -#endif /* 0 */
    -
    -  // Save/restore errno.
    -  ACE_Errno_Guard error (errno);
    -
    -  ACE_Sig_Handler::sig_pending_ = 1;
    -
    -  // Darn well better be in range since the OS dispatched this...
    -  ACE_ASSERT (ACE_Sig_Handler::in_range (signum));
    -
    -  ACE_SIG_HANDLERS_SET *handler_set =
    -    ACE_Sig_Handlers_Set::instance (signum);
    -
    -  ACE_SIG_HANDLERS_ITERATOR handler_iterator (*handler_set);
    -
    -  for (ACE_Event_Handler **eh = 0;
    -       handler_iterator.next (eh) != 0;
    -       handler_iterator.advance ())
    -    {
    -      if ((*eh)->handle_signal (signum, siginfo, ucontext) == -1)
    -        {
    -          handler_set->remove (*eh);
    -          delete *eh;
    -        }
    -    }
    -}
    -
    -// Return the first item in the list of handlers.  Note that this will
    -// trivially provide the same behavior as the ACE_Sig_Handler
    -// version if there is only 1 handler registered!
    -
    -ACE_Event_Handler *
    -ACE_Sig_Handlers::handler (int signum)
    -{
    -  ACE_TRACE ("ACE_Sig_Handlers::handler");
    -  ACE_SIG_HANDLERS_SET *handler_set =
    -    ACE_Sig_Handlers_Set::instance (signum);
    -  ACE_SIG_HANDLERS_ITERATOR handler_iterator (*handler_set);
    -  ACE_Event_Handler **eh = 0;
    -  handler_iterator.next (eh);
    -  return *eh;
    -}
    -
    -// The following is a strange bit of logic that tries to give the same
    -// semantics as what happens in ACE_Sig_Handler when we replace the
    -// current signal handler with a new one.  Note that if there is only
    -// one signal handler the behavior will be identical.  If there is
    -// more than one handler then things get weird...
    -
    -ACE_Event_Handler *
    -ACE_Sig_Handlers::handler (int signum, ACE_Event_Handler *new_sh)
    -{
    -  ACE_TRACE ("ACE_Sig_Handlers::handler");
    -  ACE_SIG_HANDLERS_SET *handler_set =
    -    ACE_Sig_Handlers_Set::instance (signum);
    -  ACE_SIG_HANDLERS_ITERATOR handler_iterator (*handler_set);
    -  ACE_Event_Handler **eh = 0;
    -
    -  // Find the first handler...
    -  handler_iterator.next (eh);
    -
    -  // ... then remove it from the set ...
    -  handler_set->remove (*eh);
    -
    -  // ... and then insert the new signal handler into the beginning of
    -  // the set (note, this is a bit too tied up in the implementation of
    -  // ACE_Unbounded_Set...).
    -  ACE_Sig_Adapter *temp;
    -
    -  ACE_NEW_RETURN (temp,
    -                  ACE_Sig_Adapter (new_sh,
    -                                   ++ACE_Sig_Handlers::sigkey_),
    -                  0);
    -  handler_set->insert (temp);
    -  return *eh;
    -}
    -
    -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
    -ACE_MT (template class ACE_TSS_Guard);
    -ACE_MT (template class ACE_Guard);
    -template class ACE_Fixed_Set;
    -template class ACE_Fixed_Set_Iterator;
    -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
    -#if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0)
    -#pragma instantiate ACE_TSS_Guard
    -#pragma instantiate ACE_Guard
    -#endif /* ACE_MT_SAFE */
    -#pragma instantiate ACE_Fixed_Set
    -#pragma instantiate ACE_Fixed_Set_Iterator
    -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
    -
    -#endif /* ACE_HAS_BROKEN_HPUX_TEMPLATES */
    diff --git a/ace/Signal.h b/ace/Signal.h
    deleted file mode 100644
    index 3d5a67bd750..00000000000
    --- a/ace/Signal.h
    +++ /dev/null
    @@ -1,443 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Signal.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_SIGNAL_HANDLER_H
    -#define ACE_SIGNAL_HANDLER_H
    -
    -#if defined (ACE_DONT_INCLUDE_ACE_SIGNAL_H)
    -# error ace/Signal.h was #included instead of signal.h by ace/OS.h:  fix!!!!
    -#endif /* ACE_DONT_INCLUDE_ACE_SIGNAL_H */
    -
    -#include "ace/Synch.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Event_Handler.h"
    -
    -// This worksaround a horrible bug with HP/UX C++...
    -typedef struct sigaction ACE_SIGACTION;
    -
    -class ACE_Export ACE_Sig_Set
    -{
    -  // = TITLE
    -  //     Provide a C++ wrapper for the C sigset_t interface.
    -  //
    -  // = DESCRIPTION
    -  //     Handle signals via a more elegant C++ interface (e.g.,
    -  //     doesn't require the use of global variables or global
    -  //     functions in an application).
    -public:
    -  // = Initialization and termination methods.
    -  ACE_Sig_Set (sigset_t *sigset);
    -  // Initialize  with .  If  == 0 then fill
    -  // the set.
    -
    -  ACE_Sig_Set (ACE_Sig_Set *sigset);
    -  // Initialize  with .  If  == 0 then fill
    -  // the set.
    -
    -  ACE_Sig_Set (int fill = 0);
    -  // If  == 0 then initialize the  to be empty, else
    -  // full.
    -
    -  ~ACE_Sig_Set (void);
    -
    -  int empty_set (void);
    -  // Create a set that excludes all signals defined by the system.
    -
    -  int fill_set (void);
    -  // Create a set that includes all signals defined by the system.
    -
    -  int sig_add (int signo);
    -  // Adds the individual signal specified by  to the set.
    -
    -  int sig_del (int signo);
    -  // Deletes the individual signal specified by  from the set.
    -
    -  int is_member (int signo) const;
    -  // Checks whether the signal specified by  is in the set.
    -
    -  operator sigset_t *();
    -  // Returns a pointer to the underlying .
    -
    -  sigset_t sigset (void) const;
    -  // Returns a copy of the underlying .
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  sigset_t sigset_;
    -  // Set of signals.
    -};
    -
    -class ACE_Export ACE_Sig_Action
    -{
    -  // = TITLE
    -  //     C++ wrapper facade for the  struct.
    -public:
    -  // = Initialization methods.
    -  ACE_Sig_Action (void);
    -  // Default constructor.  Initializes everything to 0.
    -
    -  ACE_Sig_Action (ACE_SignalHandler handler,
    -                  sigset_t *sigmask = 0,
    -                  int flags = 0);
    -  // Assigns the various fields of a  struct but doesn't
    -  // register for signal handling via the  function.
    -
    -  ACE_Sig_Action (ACE_SignalHandler handler,
    -                  const ACE_Sig_Set &sigmask,
    -                  int flags = 0);
    -  // Assigns the various fields of a  struct but doesn't
    -  // register for signal handling via the  function.
    -
    -  ACE_Sig_Action (ACE_SignalHandler handler,
    -                  int signum,
    -                  sigset_t *sigmask = 0,
    -                  int flags = 0);
    -  // Assigns the various fields of a  struct and registers
    -  // the  to process signal  via the 
    -  // function.
    -
    -  ACE_Sig_Action (ACE_SignalHandler handler,
    -                  int signum,
    -                  const ACE_Sig_Set &sigmask,
    -                  int flags = 0);
    -  // Assigns the various fields of a  struct and registers
    -  // the  to process signal  via the 
    -  // function.
    -
    -  ACE_Sig_Action (const ACE_Sig_Set &signals,
    -                  ACE_SignalHandler handler,
    -                  const ACE_Sig_Set &sigmask,
    -                  int flags = 0);
    -  // Assigns the various fields of a  struct and registers
    -  // the  to process all  via the 
    -  // function.
    -
    -  ACE_Sig_Action (const ACE_Sig_Set &signals,
    -                  ACE_SignalHandler handler,
    -                  sigset_t *sigmask = 0,
    -                  int flags = 0);
    -  // Assigns the various fields of a  struct and registers
    -  // the  to process all  via the 
    -  // function.
    -
    -  ACE_Sig_Action (const ACE_Sig_Action &s);
    -  // Copy constructor.
    -
    -  ~ACE_Sig_Action (void);
    -  // Default dtor.
    -
    -  // = Signal action management.
    -  int register_action (int signum,
    -                       ACE_Sig_Action *oaction = 0);
    -  // Register  as the current disposition and store old
    -  // disposition into  if it is non-NULL.
    -
    -  int restore_action (int signum,
    -                      ACE_Sig_Action &oaction);
    -  // Assign the value of  to  and make it become the
    -  // new signal disposition.
    -
    -  int retrieve_action (int signum);
    -  // Retrieve the current disposition into .
    -
    -  // = Set/get current signal action.
    -  void set (struct sigaction *);
    -  struct sigaction *get (void);
    -  operator ACE_SIGACTION *();
    -
    -  // = Set/get current signal flags.
    -  void flags (int);
    -  int flags (void);
    -
    -  // = Set/get current signal mask.
    -  void mask (sigset_t *);
    -  void mask (ACE_Sig_Set &);
    -  sigset_t *mask (void);
    -
    -  // = Set/get current signal handler (pointer to function).
    -  void handler (ACE_SignalHandler);
    -  ACE_SignalHandler handler (void);
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  struct sigaction sa_;
    -  // Controls signal behavior.
    -};
    -
    -class ACE_Export ACE_Sig_Guard
    -{
    -  // = TITLE
    -  //     Hold signals in MASK for duration of a C++ statement block.
    -  //     Note that a "0" for mask causes all signals to be held.
    -public:
    -  // = Initialization and termination methods.
    -  ACE_Sig_Guard (ACE_Sig_Set *mask = 0);
    -  // Block out signals in .  Default is to block all signals!
    -
    -  ~ACE_Sig_Guard (void);
    -  // Restore blocked signals.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  ACE_Sig_Set omask_;
    -  // Original signal mask.
    -};
    -
    -class ACE_Export ACE_Sig_Handler
    -{
    -  // = TITLE
    -  //    This is the main dispatcher of signals for ACE.  It improves
    -  //    the existing UNIX signal handling mechanism by allowing C++
    -  //    objects to handle signals in a way that avoids the use of
    -  //    global/static variables and functions.
    -  //
    -  // = DESCRIPTION
    -  //    Using this class a program can register an 
    -  //    with the  in order to handle a designated
    -  //    .  When a signal occurs that corresponds to this
    -  //    , the  method of the registered
    -  //     is invoked automatically.
    -public:
    -#if defined (ACE_HAS_WINCE)
    -  ACE_Sig_Handler (void);
    -  virtual ~ACE_Sig_Handler (void);
    -  // Default ctor/dtor.
    -#endif /* ACE_HAS_WINCE */
    -
    -  // = Registration and removal methods.
    -  virtual int register_handler (int signum,
    -                                ACE_Event_Handler *new_sh,
    -                                ACE_Sig_Action *new_disp = 0,
    -                                ACE_Event_Handler **old_sh = 0,
    -                                ACE_Sig_Action *old_disp = 0);
    -  // Add a new  and a new sigaction associated with
    -  // .  Passes back the existing  and its
    -  // sigaction if pointers are non-zero.  Returns -1 on failure and >=
    -  // 0 on success.
    -
    -  virtual int remove_handler (int signum,
    -                              ACE_Sig_Action *new_disp = 0,
    -                              ACE_Sig_Action *old_disp = 0,
    -                              int sigkey = -1);
    -  // Remove the  currently associated with
    -  // .   is ignored in this implementation since there
    -  // is only one instance of a signal handler.  Install the new
    -  // disposition (if given) and return the previous disposition (if
    -  // desired by the caller).  Returns 0 on success and -1 if 
    -  // is invalid.
    -
    -  // Set/get signal status.
    -  static int sig_pending (void);
    -  // True if there is a pending signal.
    -
    -  static void sig_pending (int);
    -  // Reset the value of  so that no signal is pending.
    -
    -  // = Set/get the handler associated with a particular signal.
    -
    -  virtual ACE_Event_Handler *handler (int signum);
    -  // Return the  associated with .
    -
    -  virtual ACE_Event_Handler *handler (int signum,
    -                                      ACE_Event_Handler *);
    -  // Set a new  that is associated with .
    -  // Return the existing handler.
    -
    -  static void dispatch (int, siginfo_t *,
    -                        ucontext_t *);
    -  // Callback routine registered with sigaction(2) that dispatches the
    -  //  method of the appropriate pre-registered
    -  // ACE_Event_Handler.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  // = These methods and data members are shared by derived classes.
    -
    -  static ACE_Event_Handler *handler_i (int signum,
    -                                       ACE_Event_Handler *);
    -  // Set a new  that is associated with .
    -  // Return the existing handler.  Does not acquire any locks so that
    -  // it can be called from a signal handler, such as .
    -
    -  static int register_handler_i (int signum,
    -                                 ACE_Event_Handler *new_sh,
    -                                 ACE_Sig_Action *new_disp = 0,
    -                                 ACE_Event_Handler **old_sh = 0,
    -                                 ACE_Sig_Action *old_disp = 0);
    -  // This implementation method is called by  and
    -  // .  It doesn't do any locking so that it can be called
    -  // within a signal handler, such as .  It adds a new
    -  //  and a new sigaction associated with .
    -  // Passes back the existing  and its sigaction if
    -  // pointers are non-zero.  Returns -1 on failure and >= 0 on
    -  // success.
    -
    -  static int in_range (int signum);
    -  // Check whether the SIGNUM is within the legal range of signals.
    -
    -  static sig_atomic_t sig_pending_;
    -  // Keeps track of whether a signal is pending.
    -
    -private:
    -  static ACE_Event_Handler *signal_handlers_[ACE_NSIG];
    -  // Array used to store one user-defined Event_Handler for every
    -  // signal.
    -};
    -
    -class ACE_Export ACE_Sig_Adapter : public ACE_Event_Handler
    -{
    -  // = TITLE
    -  //     Provide an adapter that transforms various types of signal
    -  //     handlers into the scheme used by the .
    -public:
    -  ACE_Sig_Adapter (ACE_Sig_Action &, int sigkey);
    -  ACE_Sig_Adapter (ACE_Event_Handler *, int sigkey);
    -  ACE_Sig_Adapter (ACE_Sig_Handler_Ex, int sigkey = 0);
    -  ~ACE_Sig_Adapter (void);
    -
    -  int sigkey (void);
    -  // Returns this signal key that's used to remove this from the
    -  // 's internal table.
    -
    -  virtual int handle_signal (int, siginfo_t *, ucontext_t *);
    -  // Called by the  to dispatch the signal handler.
    -
    -private:
    -  int sigkey_;
    -  // Key for this signal handler (used to remove it).
    -
    -  enum
    -  {
    -    ACE_HANDLER, // We're just wrapping an ACE_Event_Handler.
    -    SIG_ACTION,  // An ACE_Sig_Action.
    -    C_FUNCTION     // A normal C function.
    -  } type_;
    -  // Is this an external handler or an ACE handler?
    -
    -  // = This should be a union, but C++ won't allow that because the
    -  //  has a constructor.
    -  ACE_Sig_Action sa_;
    -  // This is an external handler (ugh).
    -
    -  ACE_Event_Handler *eh_;
    -  // This is an ACE hander.
    -
    -  ACE_Sig_Handler_Ex sig_func_;
    -  // This is a normal C function.
    -};
    -
    -#if !defined (ACE_HAS_BROKEN_HPUX_TEMPLATES)
    -class ACE_Export ACE_Sig_Handlers : public ACE_Sig_Handler
    -{
    -  // = TITLE
    -  //    This is an alternative signal handling dispatcher for ACE.  It
    -  //    allows a list of signal handlers to be registered for each
    -  //    signal.  It also makes SA_RESTART the default mode.
    -  //
    -  // = DESCRIPTION
    -  //    Using this class a program can register one or more
    -  //    ACE_Event_Handler with the ACE_Sig_Handler in order to
    -  //    handle a designated .  When a signal occurs that
    -  //    corresponds to this , the  methods of
    -  //    all the registered ACE_Event_Handlers are invoked
    -  //    automatically.
    -public:
    -  // = Registration and removal methods.
    -  virtual int register_handler (int signum,
    -                                ACE_Event_Handler *new_sh,
    -                                ACE_Sig_Action *new_disp = 0,
    -                                ACE_Event_Handler **old_sh = 0,
    -                                ACE_Sig_Action *old_disp = 0);
    -  // Add a new ACE_Event_Handler and a new sigaction associated with
    -  // .  Passes back the existing ACE_Event_Handler and its
    -  // sigaction if pointers are non-zero.  Returns -1 on failure and
    -  // a  that is >= 0 on success.
    -
    -  virtual int remove_handler (int signum,
    -                              ACE_Sig_Action *new_disp = 0,
    -                              ACE_Sig_Action *old_disp = 0,
    -                              int sigkey = -1);
    -  // Remove the ACE_Event_Handler currently associated with .
    -  // Install the new disposition (if given) and return the previous
    -  // disposition (if desired by the caller).  Returns 0 on success and
    -  // -1 if  is invalid.
    -
    -  // = Set/get the handler associated with a particular signal.
    -
    -  virtual ACE_Event_Handler *handler (int signum);
    -  // Return the head of the list of s associated with
    -  // SIGNUM.
    -
    -  virtual ACE_Event_Handler *handler (int signum,
    -                                      ACE_Event_Handler *);
    -  // Set a new  that is associated with SIGNUM at
    -  // the head of the list of signals.  Return the existing handler
    -  // that was at the head.
    -
    -  static void dispatch (int signum, siginfo_t *, ucontext_t *);
    -  // Callback routine registered with sigaction(2) that dispatches the
    -  //  method of all the pre-registered
    -  // ACE_Event_Handlers for 
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  static int sigkey_;
    -  // Keeps track of the id that uniquely identifies each registered
    -  // signal handler.  This id can be used to cancel a timer via the
    -  //  method.
    -
    -  static int third_party_sig_handler_;
    -  // If this is > 0 then a 3rd party library has registered a
    -  // handler...
    -};
    -#endif /* ACE_HAS_BROKEN_HPUX_TEMPLATES */
    -
    -#include "ace/Containers.h"
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Signal.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_SIGNAL_HANDLER_H */
    diff --git a/ace/Signal.i b/ace/Signal.i
    deleted file mode 100644
    index b6384ee630e..00000000000
    --- a/ace/Signal.i
    +++ /dev/null
    @@ -1,302 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -ACE_INLINE
    -ACE_Sig_Set::ACE_Sig_Set (sigset_t *ss)
    -  // : sigset_ ()
    -{
    -  ACE_TRACE ("ACE_Sig_Set::ACE_Sig_Set");
    -
    -  if (ss == 0)
    -    ACE_OS::sigfillset (&this->sigset_);
    -  else
    -    // Structure assignment.
    -    this->sigset_ = *ss;
    -}
    -
    -ACE_INLINE
    -ACE_Sig_Set::ACE_Sig_Set (int fill)
    -  // : sigset_ ()
    -{
    -  ACE_TRACE ("ACE_Sig_Set::ACE_Sig_Set");
    -
    -  if (fill)
    -    ACE_OS::sigfillset (&this->sigset_);
    -  else
    -    ACE_OS::sigemptyset (&this->sigset_);
    -}
    -
    -ACE_INLINE
    -ACE_Sig_Set::ACE_Sig_Set (ACE_Sig_Set *ss)
    -  // : sigset_ ()
    -{
    -  ACE_TRACE ("ACE_Sig_Set::ACE_Sig_Set");
    -
    -  if (ss == 0)
    -    ACE_OS::sigfillset (&this->sigset_);
    -  else
    -    this->sigset_ = ss->sigset_;
    -}
    -
    -ACE_INLINE
    -ACE_Sig_Set::~ACE_Sig_Set (void)
    -{
    -  ACE_TRACE ("ACE_Sig_Set::~ACE_Sig_Set");
    -  ACE_OS::sigemptyset (&this->sigset_);
    -}
    -
    -ACE_INLINE int
    -ACE_Sig_Set::empty_set (void)
    -{
    -  ACE_TRACE ("ACE_Sig_Set::empty_set");
    -  return ACE_OS::sigemptyset (&this->sigset_);
    -}
    -
    -ACE_INLINE int
    -ACE_Sig_Set::fill_set (void)
    -{
    -  ACE_TRACE ("ACE_Sig_Set::fill_set");
    -  return ACE_OS::sigfillset (&this->sigset_);
    -}
    -
    -ACE_INLINE int
    -ACE_Sig_Set::sig_add (int signo)
    -{
    -  ACE_TRACE ("ACE_Sig_Set::sig_add");
    -  return ACE_OS::sigaddset (&this->sigset_, signo);
    -}
    -
    -ACE_INLINE int
    -ACE_Sig_Set::sig_del (int signo)
    -{
    -  ACE_TRACE ("ACE_Sig_Set::sig_del");
    -  return ACE_OS::sigdelset (&this->sigset_, signo);
    -}
    -
    -ACE_INLINE int
    -ACE_Sig_Set::is_member (int signo) const
    -{
    -  ACE_TRACE ("ACE_Sig_Set::is_member");
    -  return ACE_OS::sigismember (ACE_const_cast (sigset_t *, &this->sigset_), signo);
    -}
    -
    -ACE_INLINE
    -ACE_Sig_Set::operator sigset_t *(void)
    -{
    -  ACE_TRACE ("ACE_Sig_Set::operator sigset_t *");
    -  return &this->sigset_;
    -}
    -
    -ACE_INLINE sigset_t
    -ACE_Sig_Set::sigset (void) const
    -{
    -  ACE_TRACE ("ACE_Sig_Set::sigset");
    -  return this->sigset_;
    -}
    -
    -ACE_INLINE
    -ACE_Sig_Action::~ACE_Sig_Action (void)
    -{
    -  ACE_TRACE ("ACE_Sig_Action::~ACE_Sig_Action");
    -}
    -
    -ACE_INLINE int
    -ACE_Sig_Action::flags (void)
    -{
    -  ACE_TRACE ("ACE_Sig_Action::flags");
    -  return this->sa_.sa_flags;
    -}
    -
    -ACE_INLINE void
    -ACE_Sig_Action::flags (int flags)
    -{
    -  ACE_TRACE ("ACE_Sig_Action::flags");
    -  this->sa_.sa_flags = flags;
    -}
    -
    -ACE_INLINE sigset_t *
    -ACE_Sig_Action::mask (void)
    -{
    -  ACE_TRACE ("ACE_Sig_Action::mask");
    -  return &this->sa_.sa_mask;
    -}
    -
    -ACE_INLINE void
    -ACE_Sig_Action::mask (sigset_t *ss)
    -{
    -  ACE_TRACE ("ACE_Sig_Action::mask");
    -  if (ss != 0)
    -    this->sa_.sa_mask = *ss; // Structure assignment
    -}
    -
    -ACE_INLINE void
    -ACE_Sig_Action::mask (ACE_Sig_Set &ss)
    -{
    -  ACE_TRACE ("ACE_Sig_Action::mask");
    -  this->sa_.sa_mask = ss.sigset (); // Structure assignment
    -}
    -
    -ACE_INLINE ACE_SignalHandler
    -ACE_Sig_Action::handler (void)
    -{
    -  ACE_TRACE ("ACE_Sig_Action::handler");
    -  return ACE_SignalHandler (this->sa_.sa_handler);
    -}
    -
    -ACE_INLINE void
    -ACE_Sig_Action::handler (ACE_SignalHandler handler)
    -{
    -  ACE_TRACE ("ACE_Sig_Action::handler");
    -#if !defined(ACE_HAS_TANDEM_SIGNALS)
    -  this->sa_.sa_handler = ACE_SignalHandlerV (handler);
    -#else
    -  this->sa_.sa_handler = (void (*)()) ACE_SignalHandlerV (handler);
    -#endif /* !ACE_HAS_TANDEM_SIGNALS */
    -}
    -
    -#if 0
    -ACE_INLINE ACE_SignalHandler
    -ACE_Sig_Action::sigaction (void)
    -{
    -  ACE_TRACE ("ACE_Sig_Action::sigaction");
    -  return ACE_SignalHandler (this->sa_.sa_sigaction);
    -}
    -
    -ACE_INLINE void
    -ACE_Sig_Action::sigaction (ACE_SignalHandler handler)
    -{
    -  ACE_TRACE ("ACE_Sig_Action::handler");
    -  this->sa_.sa_sigaction = (void (*)()) ACE_SignalHandlerV (handler);
    -}
    -#endif /* 0 */
    -
    -ACE_INLINE void
    -ACE_Sig_Action::set (struct sigaction *sa)
    -{
    -  ACE_TRACE ("ACE_Sig_Action::set");
    -  this->sa_ = *sa; // Structure assignment.
    -}
    -
    -ACE_INLINE struct sigaction *
    -ACE_Sig_Action::get (void)
    -{
    -  ACE_TRACE ("ACE_Sig_Action::get");
    -  return &this->sa_;
    -}
    -
    -ACE_INLINE
    -ACE_Sig_Action::operator ACE_SIGACTION * ()
    -{
    -  ACE_TRACE ("ACE_Sig_Action::operator ACE_SIGACTION *");
    -  return &this->sa_;
    -}
    -
    -ACE_INLINE
    -ACE_Sig_Action::ACE_Sig_Action (const ACE_Sig_Action &s)
    -  // : sa_ ()
    -{
    -  ACE_TRACE ("ACE_Sig_Action::ACE_Sig_Action");
    -  *this = s; // structure copy.
    -}
    -
    -ACE_INLINE int
    -ACE_Sig_Action::register_action (int signum, ACE_Sig_Action *oaction)
    -{
    -  ACE_TRACE ("ACE_Sig_Action::register_action");
    -  struct sigaction *sa = oaction == 0 ? 0 : oaction->get ();
    -
    -  return ACE_OS::sigaction (signum, &this->sa_, sa);
    -}
    -
    -ACE_INLINE int
    -ACE_Sig_Action::retrieve_action (int signum)
    -{
    -  ACE_TRACE ("ACE_Sig_Action::retrieve_action");
    -  return ACE_OS::sigaction (signum, 0, &this->sa_);
    -}
    -
    -ACE_INLINE int
    -ACE_Sig_Action::restore_action (int signum, ACE_Sig_Action &oaction)
    -{
    -  ACE_TRACE ("ACE_Sig_Action::restore_action");
    -  this->sa_ = *oaction.get (); // Structure assignment
    -  return ACE_OS::sigaction (signum, &this->sa_, 0);
    -}
    -
    -// Block out the signal MASK until the destructor is called.
    -
    -ACE_INLINE
    -ACE_Sig_Guard::ACE_Sig_Guard (ACE_Sig_Set *mask)
    -  : omask_ ()
    -{
    -  //ACE_TRACE ("ACE_Sig_Guard::ACE_Sig_Guard");
    -
    -  // If MASK is 0 then block all signals!
    -  if (mask == 0)
    -    {
    -#if defined (ACE_LACKS_PTHREAD_THR_SIGSETMASK)
    -      ACE_OS::sigprocmask (SIG_BLOCK,
    -                           ACE_OS_Object_Manager::default_mask (),
    -                           (sigset_t *) this->omask_);
    -#else
    -      ACE_OS::thr_sigsetmask (SIG_BLOCK,
    -                              ACE_OS_Object_Manager::default_mask (),
    -                              (sigset_t *) this->omask_);
    -#endif /* ACE_LACKS_PTHREAD_THR_SIGSETMASK */
    -    }
    -  else
    -#if defined (ACE_LACKS_PTHREAD_THR_SIGSETMASK)
    -    ACE_OS::sigprocmask (SIG_BLOCK,
    -                         (sigset_t *) *mask,
    -                         (sigset_t *)
    -                         this->omask_);
    -#else
    -  ACE_OS::thr_sigsetmask (SIG_BLOCK,
    -                          (sigset_t *) *mask,
    -                          (sigset_t *)
    -                          this->omask_);
    -#endif /* ACE_LACKS_PTHREAD_THR_SIGSETMASK */
    -}
    -
    -// Restore the signal mask.
    -
    -ACE_INLINE
    -ACE_Sig_Guard::~ACE_Sig_Guard (void)
    -{
    -  //ACE_TRACE ("ACE_Sig_Guard::~ACE_Sig_Guard");
    -#if !defined (ACE_LACKS_UNIX_SIGNALS)
    -#if defined (ACE_LACKS_PTHREAD_THR_SIGSETMASK)
    -  ACE_OS::sigprocmask (SIG_SETMASK,
    -                       (sigset_t *) this->omask_,
    -                       0);
    -#else
    -  ACE_OS::thr_sigsetmask (SIG_SETMASK,
    -                          (sigset_t *) this->omask_,
    -                          0);
    -#endif /* ACE_LACKS_PTHREAD_THR_SIGSETMASK */
    -#endif /* !ACE_LACKS_UNIX_SIGNALS */
    -}
    -
    -#if defined (ACE_HAS_WINCE)
    -ACE_INLINE
    -ACE_Sig_Handler::ACE_Sig_Handler (void)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_Sig_Handler::~ACE_Sig_Handler (void)
    -{
    -}
    -#endif /* ACE_HAS_WINCE */
    -
    -ACE_INLINE int
    -ACE_Sig_Handler::in_range (int signum)
    -{
    -  ACE_TRACE ("ACE_Sig_Handler::in_range");
    -  return signum > 0 && signum < ACE_NSIG;
    -}
    -
    -ACE_INLINE
    -ACE_Sig_Adapter::~ACE_Sig_Adapter (void)
    -{
    -}
    diff --git a/ace/Singleton.cpp b/ace/Singleton.cpp
    deleted file mode 100644
    index 4aaf6be5e14..00000000000
    --- a/ace/Singleton.cpp
    +++ /dev/null
    @@ -1,385 +0,0 @@
    -// $Id$
    -
    -#ifndef ACE_SINGLETON_C
    -#define ACE_SINGLETON_C
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Singleton.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Synch_T.h"
    -#include "ace/Object_Manager.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/Singleton.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, Singleton, "$Id$")
    -
    -template  void
    -ACE_Singleton::dump (void)
    -{
    -  ACE_TRACE ("ACE_Singleton::dump");
    -
    -#if !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES)
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("instance_ = %x"),
    -              ACE_Singleton::instance_i ()));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -#endif /* ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES */
    -}
    -
    -template  ACE_Singleton *&
    -ACE_Singleton::instance_i (void)
    -{
    -#if defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES)
    -  // Pointer to the Singleton instance.  This works around a bug with
    -  // G++ and it's (mis-)handling of templates and statics...
    -  static ACE_Singleton *singleton_ = 0;
    -
    -  return singleton_;
    -#else
    -  return ACE_Singleton::singleton_;
    -#endif /* ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES */
    -}
    -
    -template  TYPE *
    -ACE_Singleton::instance (void)
    -{
    -  ACE_TRACE ("ACE_Singleton::instance");
    -
    -  ACE_Singleton *&singleton =
    -    ACE_Singleton::instance_i ();
    -
    -  // Perform the Double-Check pattern...
    -  if (singleton == 0)
    -    {
    -#if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0)
    -      if (ACE_Object_Manager::starting_up () ||
    -          ACE_Object_Manager::shutting_down ())
    -        {
    -          // The program is still starting up, and therefore assumed
    -          // to be single threaded.  There's no need to double-check.
    -          // Or, the ACE_Object_Manager instance has been destroyed,
    -          // so the preallocated lock is not available.  Either way,
    -          // don't register for destruction with the
    -          // ACE_Object_Manager:  we'll have to leak this instance.
    -#endif /* ACE_MT_SAFE */
    -
    -          ACE_NEW_RETURN (singleton, (ACE_Singleton), 0);
    -#if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0)
    -        }
    -      else
    -        {
    -          // Obtain a lock from the ACE_Object_Manager.  The pointer
    -          // is static, so we only obtain one per ACE_Singleton
    -          // instantiation.
    -          static ACE_LOCK *lock = 0;
    -          if (ACE_Object_Manager::get_singleton_lock (lock) != 0)
    -            // Failed to acquire the lock!
    -            return 0;
    -
    -          ACE_GUARD_RETURN (ACE_LOCK, ace_mon, *lock, 0);
    -
    -          if (singleton == 0)
    -            {
    -              ACE_NEW_RETURN (singleton, (ACE_Singleton), 0);
    -
    -              // Register for destruction with ACE_Object_Manager.
    -              ACE_Object_Manager::at_exit (singleton);
    -            }
    -        }
    -#endif /* ACE_MT_SAFE */
    -    }
    -
    -  return &singleton->instance_;
    -}
    -
    -template  void
    -ACE_Singleton::cleanup (void *)
    -{
    -  delete this;
    -  ACE_Singleton::instance_i () = 0;
    -}
    -
    -#if !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES)
    -// Pointer to the Singleton instance.
    -template  ACE_Singleton *
    -ACE_Singleton::singleton_ = 0;
    -
    -template  ACE_Unmanaged_Singleton *
    -ACE_Unmanaged_Singleton::singleton_ = 0;
    -#endif /* !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES) */
    -
    -template  void
    -ACE_Unmanaged_Singleton::dump (void)
    -{
    -  ACE_TRACE ("ACE_Unmanaged_Singleton::dump");
    -
    -#if !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES)
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("instance_ = %x"),
    -              ACE_Unmanaged_Singleton::instance_i ()));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -#endif /* ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES */
    -}
    -
    -template 
    -ACE_Unmanaged_Singleton *&
    -ACE_Unmanaged_Singleton::instance_i (void)
    -{
    -#if defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES)
    -  // Pointer to the Singleton instance.  This works around a bug with
    -  // G++ and it's (mis-)handling of templates and statics...
    -  static ACE_Unmanaged_Singleton *singleton_ = 0;
    -
    -  return singleton_;
    -#else
    -  return ACE_Unmanaged_Singleton::singleton_;
    -#endif /* ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES */
    -}
    -
    -template  TYPE *
    -ACE_Unmanaged_Singleton::instance (void)
    -{
    -  ACE_TRACE ("ACE_Unmanaged_Singleton::instance");
    -
    -  ACE_Unmanaged_Singleton *&singleton =
    -    ACE_Unmanaged_Singleton::instance_i ();
    -
    -  // Perform the Double-Check pattern...
    -  if (singleton == 0)
    -    {
    -#if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0)
    -      if (ACE_Object_Manager::starting_up () ||
    -          ACE_Object_Manager::shutting_down ())
    -        {
    -          // The program is still starting up, and therefore assumed
    -          // to be single threaded.  There's no need to double-check.
    -          // Or, the ACE_Object_Manager instance has been destroyed,
    -          // so the preallocated lock is not available.  Either way,
    -          // don't register for destruction with the
    -          // ACE_Object_Manager:  we'll have to leak this instance.
    -#endif /* ACE_MT_SAFE */
    -
    -          ACE_NEW_RETURN (singleton, (ACE_Unmanaged_Singleton),
    -                          0);
    -#if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0)
    -        }
    -      else
    -        {
    -          // Obtain a lock from the ACE_Object_Manager.  The pointer
    -          // is static, so we only obtain one per
    -          // ACE_Unmanaged_Singleton instantiation.
    -          static ACE_LOCK *lock = 0;
    -          if (ACE_Object_Manager::get_singleton_lock (lock) != 0)
    -            // Failed to acquire the lock!
    -            return 0;
    -
    -          ACE_GUARD_RETURN (ACE_LOCK, ace_mon, *lock, 0);
    -
    -          if (singleton == 0)
    -            ACE_NEW_RETURN (singleton,
    -                            (ACE_Unmanaged_Singleton),
    -                            0);
    -        }
    -#endif /* ACE_MT_SAFE */
    -    }
    -
    -  return &singleton->instance_;
    -}
    -
    -template  void
    -ACE_Unmanaged_Singleton::close (void)
    -{
    -  ACE_Unmanaged_Singleton *&singleton =
    -    ACE_Unmanaged_Singleton::instance_i ();
    -
    -  if (singleton)
    -    singleton->cleanup ();
    -}
    -
    -template  void
    -ACE_TSS_Singleton::dump (void)
    -{
    -  ACE_TRACE ("ACE_TSS_Singleton::dump");
    -
    -#if !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES)
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("instance_ = %x"),
    -              ACE_TSS_Singleton::instance_i ()));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -#endif /* ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES */
    -}
    -
    -template  ACE_TSS_Singleton *&
    -ACE_TSS_Singleton::instance_i (void)
    -{
    -#if defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES)
    -  // Pointer to the Singleton instance.  This works around a bug with
    -  // G++ and it's (mis-)handling of templates and statics...
    -  static ACE_TSS_Singleton *singleton_ = 0;
    -
    -  return singleton_;
    -#else
    -  return ACE_TSS_Singleton::singleton_;
    -#endif /* ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES */
    -}
    -
    -template  TYPE *
    -ACE_TSS_Singleton::instance (void)
    -{
    -  ACE_TRACE ("ACE_TSS_Singleton::instance");
    -
    -  ACE_TSS_Singleton *&singleton =
    -    ACE_TSS_Singleton::instance_i ();
    -
    -  // Perform the Double-Check pattern...
    -  if (singleton == 0)
    -    {
    -#if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0)
    -      if (ACE_Object_Manager::starting_up () ||
    -          ACE_Object_Manager::shutting_down ())
    -        {
    -          // The program is still starting up, and therefore assumed
    -          // to be single threaded.  There's no need to double-check.
    -          // Or, the ACE_Object_Manager instance has been destroyed,
    -          // so the preallocated lock is not available.  Either way,
    -          // don't register for destruction with the
    -          // ACE_Object_Manager:  we'll have to leak this instance.
    -#endif /* ACE_MT_SAFE */
    -
    -          ACE_NEW_RETURN (singleton, (ACE_TSS_Singleton), 0);
    -#if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0)
    -        }
    -      else
    -        {
    -          // Obtain a lock from the ACE_Object_Manager.  The pointer
    -          // is static, so we only obtain one per ACE_Singleton instantiation.
    -          static ACE_LOCK *lock = 0;
    -          if (ACE_Object_Manager::get_singleton_lock (lock) != 0)
    -            // Failed to acquire the lock!
    -            return 0;
    -
    -          ACE_GUARD_RETURN (ACE_LOCK, ace_mon, *lock, 0);
    -
    -          if (singleton == 0)
    -            {
    -              ACE_NEW_RETURN (singleton, (ACE_TSS_Singleton),
    -                              0);
    -
    -              // Register for destruction with ACE_Object_Manager.
    -              ACE_Object_Manager::at_exit (singleton);
    -            }
    -        }
    -#endif /* ACE_MT_SAFE */
    -    }
    -
    -  return ACE_TSS_GET (&singleton->instance_, TYPE);
    -}
    -
    -template  void
    -ACE_TSS_Singleton::cleanup (void *)
    -{
    -  delete this;
    -  ACE_TSS_Singleton::instance_i () = 0;
    -}
    -
    -template  void
    -ACE_Unmanaged_TSS_Singleton::dump (void)
    -{
    -  ACE_TRACE ("ACE_Unmanaged_TSS_Singleton::dump");
    -
    -#if !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES)
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("instance_ = %x"),
    -              ACE_Unmanaged_TSS_Singleton::instance_i ()));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -#endif /* ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES */
    -}
    -
    -template 
    -ACE_Unmanaged_TSS_Singleton *&
    -ACE_Unmanaged_TSS_Singleton::instance_i (void)
    -{
    -#if defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES)
    -  // Pointer to the Singleton instance.  This works around a bug with
    -  // G++ and it's (mis-)handling of templates and statics...
    -  static ACE_Unmanaged_TSS_Singleton *singleton_ = 0;
    -
    -  return singleton_;
    -#else
    -  return ACE_Unmanaged_TSS_Singleton::singleton_;
    -#endif /* ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES */
    -}
    -
    -template  TYPE *
    -ACE_Unmanaged_TSS_Singleton::instance (void)
    -{
    -  ACE_TRACE ("ACE_Unmanaged_TSS_Singleton::instance");
    -
    -  ACE_Unmanaged_TSS_Singleton *&singleton =
    -    ACE_Unmanaged_TSS_Singleton::instance_i ();
    -
    -  // Perform the Double-Check pattern...
    -  if (singleton == 0)
    -    {
    -#if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0)
    -      if (ACE_Object_Manager::starting_up () ||
    -          ACE_Object_Manager::shutting_down ())
    -        {
    -          // The program is still starting up, and therefore assumed
    -          // to be single threaded.  There's no need to double-check.
    -          // Or, the ACE_Object_Manager instance has been destroyed,
    -          // so the preallocated lock is not available.  Either way,
    -          // don't register for destruction with the
    -          // ACE_Object_Manager:  we'll have to leak this instance.
    -#endif /* ACE_MT_SAFE */
    -          ACE_NEW_RETURN (singleton,
    -                          (ACE_Unmanaged_TSS_Singleton),
    -                          0);
    -#if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0)
    -        }
    -      else
    -        {
    -          // Obtain a lock from the ACE_Object_Manager.  The pointer
    -          // is static, so we only obtain one per
    -          // ACE_Unmanaged_Singleton instantiation.
    -          static ACE_LOCK *lock = 0;
    -          if (ACE_Object_Manager::get_singleton_lock (lock) != 0)
    -            // Failed to acquire the lock!
    -            return 0;
    -
    -          ACE_GUARD_RETURN (ACE_LOCK, ace_mon, *lock, 0);
    -
    -          if (singleton == 0)
    -            ACE_NEW_RETURN (singleton,
    -                            (ACE_Unmanaged_TSS_Singleton),
    -                            0);
    -        }
    -#endif /* ACE_MT_SAFE */
    -    }
    -
    -  return ACE_TSS_GET (&singleton->instance_, TYPE);
    -}
    -
    -template  void
    -ACE_Unmanaged_TSS_Singleton::close (void)
    -{
    -  ACE_Unmanaged_TSS_Singleton *&singleton =
    -    ACE_Unmanaged_TSS_Singleton::instance_i ();
    -
    -  if (singleton)
    -    singleton->cleanup ();
    -}
    -
    -#if !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES)
    -// Pointer to the Singleton instance.
    -template  ACE_TSS_Singleton  *
    -ACE_TSS_Singleton::singleton_ = 0;
    -
    -template 
    -ACE_Unmanaged_TSS_Singleton *
    -ACE_Unmanaged_TSS_Singleton::singleton_ = 0;
    -#endif /* !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES) */
    -
    -#endif /* ACE_SINGLETON_C */
    diff --git a/ace/Singleton.h b/ace/Singleton.h
    deleted file mode 100644
    index 0d3d6d65f74..00000000000
    --- a/ace/Singleton.h
    +++ /dev/null
    @@ -1,243 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Singleton.h
    -//
    -// = DESCRIPTION
    -//
    -// = AUTHOR
    -//    Tim Harrison (harrison@cs.wustl.edu), Douglas C. Schmidt, Chris
    -//    Lahey, Rich Christy, and David Levine.
    -//
    -// ============================================================================
    -
    -#ifndef ACE_SINGLETON_H
    -#define ACE_SINGLETON_H
    -
    -#include "ace/Synch.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -template 
    -class ACE_Singleton : public ACE_Cleanup
    -{
    -  // = TITLE
    -  //     A Singleton Adapter uses the Adapter pattern to turn ordinary
    -  //     classes into Singletons optimized with the Double-Checked
    -  //     Locking optimization pattern.
    -  //
    -  // = DESCRIPTION
    -  //     This implementation is a slight variation on the GoF
    -  //     Singleton pattern.  In particular, a single
    -  //      > instance is allocated here,
    -  //     not a  instance.  The reason for this is to allow
    -  //     registration with the , so that the
    -  //     Singleton can be cleaned up when the process exits.  For this
    -  //     scheme to work, a (static)  function must be
    -  //     provided.   provides one so that TYPE doesn't
    -  //     need to.
    -  //
    -  //     If you want to make sure that only the singleton instance of
    -  //      is created, and that users cannot create their own
    -  //     instances of , do the following to class :
    -  //
    -  //     (a) Make the constructor of  private (or protected)
    -  //     (b) Make Singleton a friend of 
    -  //
    -  //     Here is an example:
    -  //
    -  //     class foo
    -  //     {
    -  //       friend class ACE_Singleton;
    -  //     private:
    -  //       foo () { cout << "foo constructed" << endl; }
    -  //       ~foo () { cout << "foo destroyed" << endl; }
    -  //     };
    -  //
    -  //     typedef ACE_Singleton FOO;
    -  //
    -  //     NOTE:  the best types to use for ACE_LOCK are
    -  //     ACE_Recursive_Thread_Mutex and ACE_Null_Mutex.
    -  //     ACE_Recursive_Thread_Mutex should be used in multi-threaded
    -  //     programs in which it is possible for more than one thread to
    -  //     access the > instance.
    -  //     ACE_Null_Mutex can be used otherwise.  The reason that these
    -  //     types of locks are best has to do with their allocation by
    -  //     the ACE_Object_Manager.  Single ACE_Recursive_Thread_Mutex
    -  //     and ACE_Null_Mutex instances are used for all ACE_Singleton
    -  //     instantiations.  However, other types of locks are allocated
    -  //     per ACE_Singleton instantiation.
    -  //
    -public:
    -  static TYPE *instance (void);
    -  // Global access point to the Singleton.
    -
    -  virtual void cleanup (void *param = 0);
    -  // Cleanup method, used by  to destroy the
    -  // .
    -
    -  static void dump (void);
    -  // Dump the state of the object.
    -
    -protected:
    -  ACE_Singleton (void);
    -  // Default constructor.
    -
    -  TYPE instance_;
    -  // Contained instance.
    -
    -#if !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES)
    -  static ACE_Singleton *singleton_;
    -  // Pointer to the Singleton (ACE_Cleanup) instance.
    -#endif /* ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES */
    -
    -  static ACE_Singleton *&instance_i (void);
    -  // Get pointer to the Singleton instance.
    -};
    -
    -template 
    -class ACE_Unmanaged_Singleton : public ACE_Singleton 
    -{
    -  // = TITLE
    -  //     Same as , except does _not_ register with
    -  //      for destruction.
    -  //
    -  // = DESCRIPTION
    -  //     This version of  can be used if, for example,
    -  //     its DLL will be unloaded before the 
    -  //     destroys the instance.  Unlike with , the
    -  //     application is responsible for explicitly destroying the
    -  //     instance after it is no longer needed (if it wants to avoid
    -  //     memory leaks, at least).  The  static member function
    -  //     must be used to explicitly destroy the Singleton.
    -  //
    -public:
    -  static TYPE *instance (void);
    -  // Global access point to the Singleton.
    -
    -  static void close (void);
    -  // Explicitly delete the Singleton instance.
    -
    -  static void dump (void);
    -  // Dump the state of the object.
    -
    -protected:
    -  ACE_Unmanaged_Singleton (void);
    -  // Default constructor.
    -
    -#if !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES)
    -  static ACE_Unmanaged_Singleton *singleton_;
    -  // Pointer to the Singleton (ACE_Cleanup) instance.
    -#endif /* ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES */
    -
    -  static ACE_Unmanaged_Singleton *&instance_i (void);
    -  // Get pointer to the Singleton instance.
    -};
    -
    -template 
    -class ACE_TSS_Singleton : public ACE_Cleanup
    -{
    -  // = TITLE
    -  //     This class uses the Adapter pattern to turn ordinary classes
    -  //     into Thread-specific Singletons optimized with the
    -  //     Double-Checked Locking optimization pattern.
    -  //
    -  // = DESCRIPTION
    -  //     This implementation is another variation on the GoF Singleton
    -  //     pattern.  In this case, a single  > instance is allocated here, not a  instance.
    -  //     Each call to the  static method returns a Singleton
    -  //     whose pointer resides in thread-specific storage.  As with
    -  //     , we use the  so that the
    -  //     Singleton can be cleaned up when the process exits.  For this
    -  //     scheme to work, a (static)  function must be
    -  //     provided.   provides one so that TYPE doesn't
    -  //     need to.
    -public:
    -  static TYPE *instance (void);
    -  // Global access point to the Singleton.
    -
    -  virtual void cleanup (void *param = 0);
    -  // Cleanup method, used by  to destroy the
    -  // singleton.
    -
    -  static void dump (void);
    -  // Dump the state of the object.
    -
    -protected:
    -  ACE_TSS_Singleton (void);
    -  // Default constructor.
    -
    -  ACE_TSS_TYPE (TYPE) instance_;
    -  // Contained instance.
    -
    -#if !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES)
    -  static ACE_TSS_Singleton *singleton_;
    -  // Pointer to the Singleton (ACE_Cleanup) instance.
    -#endif /* ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES */
    -
    -  static ACE_TSS_Singleton *&instance_i (void);
    -  // Get pointer to the TSS Singleton instance.
    -};
    -
    -template 
    -class ACE_Unmanaged_TSS_Singleton : public ACE_TSS_Singleton 
    -{
    -  // = TITLE
    -  //     Same as , except does _not_ register with
    -  //      for destruction.
    -  //
    -  // = DESCRIPTION
    -  //     This version of  can be used if, for
    -  //     example, its DLL will be unloaded before the
    -  //      destroys the instance.  Unlike with
    -  //     , the application is responsible for
    -  //     explicitly destroying the instance after it is no longer
    -  //     needed (if it wants to avoid memory leaks, at least).  The
    -  //      static member function must be used to explicitly
    -  //     destroy the Singleton.
    -  //
    -public:
    -  static TYPE *instance (void);
    -  // Global access point to the Singleton.
    -
    -  static void close (void);
    -  // Explicitly delete the Singleton instance.
    -
    -  static void dump (void);
    -  // Dump the state of the object.
    -
    -protected:
    -  ACE_Unmanaged_TSS_Singleton (void);
    -  // Default constructor.
    -
    -#if !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES)
    -  static ACE_Unmanaged_TSS_Singleton *singleton_;
    -  // Pointer to the Singleton (ACE_Cleanup) instance.
    -#endif /* ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES */
    -
    -  static ACE_Unmanaged_TSS_Singleton *&instance_i (void);
    -  // Get pointer to the Singleton instance.
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Singleton.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
    -#include "ace/Singleton.cpp"
    -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
    -#pragma implementation ("Singleton.cpp")
    -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
    -
    -#endif /* ACE_SINGLETON_H */
    diff --git a/ace/Singleton.i b/ace/Singleton.i
    deleted file mode 100644
    index 38e37fc3d7c..00000000000
    --- a/ace/Singleton.i
    +++ /dev/null
    @@ -1,27 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// Default constructors.
    -//
    -// Note: don't explicitly initialize "instance_", because TYPE may not
    -// have a default constructor.  Let the compiler figure it out . . .
    -
    -template  ACE_INLINE
    -ACE_Singleton::ACE_Singleton (void)
    -{
    -}
    -
    -template  ACE_INLINE
    -ACE_Unmanaged_Singleton::ACE_Unmanaged_Singleton (void)
    -{
    -}
    -
    -template  ACE_INLINE
    -ACE_TSS_Singleton::ACE_TSS_Singleton (void)
    -{
    -}
    -
    -template  ACE_INLINE
    -ACE_Unmanaged_TSS_Singleton::ACE_Unmanaged_TSS_Singleton (void)
    -{
    -}
    diff --git a/ace/Stats.cpp b/ace/Stats.cpp
    deleted file mode 100644
    index 78eb7274f33..00000000000
    --- a/ace/Stats.cpp
    +++ /dev/null
    @@ -1,661 +0,0 @@
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Stats.h"
    -
    -#if !defined (__ACE_INLINE__)
    -# include "ace/Stats.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, Stats, "$Id$")
    -
    -ACE_UINT32
    -ACE_Stats_Value::fractional_field (void) const
    -{
    -  if (precision () == 0)
    -    {
    -      return 1;
    -    }
    -  else
    -    {
    -      ACE_UINT32 field = 10;
    -      for (u_int i = 0; i < precision () - 1; ++i)
    -        {
    -          field *= 10;
    -        }
    -
    -      return field;
    -    }
    -}
    -
    -int
    -ACE_Stats::sample (const ACE_INT32 value)
    -{
    -  if (samples_.enqueue_tail (value) == 0)
    -    {
    -      ++number_of_samples_;
    -      if (number_of_samples_ == 0)
    -        {
    -          // That's a lot of samples :-)
    -          overflow_ = EFAULT;
    -          return -1;
    -        }
    -
    -      if (value < min_)
    -        min_ = value;
    -
    -      if (value > max_)
    -        max_ = value;
    -
    -      return 0;
    -    }
    -  else
    -    {
    -      // Probably failed due to running out of memory when trying to
    -      // enqueue the new value.
    -      overflow_ = errno;
    -      return -1;
    -    }
    -}
    -
    -void
    -ACE_Stats::mean (ACE_Stats_Value &m,
    -                 const ACE_UINT32 scale_factor)
    -{
    -  if (number_of_samples_ > 0)
    -    {
    -#if defined ACE_LACKS_LONGLONG_T
    -      // If ACE_LACKS_LONGLONG_T, then ACE_UINT64 is a user-defined class.
    -      // To prevent having to construct a static of that class, declare it
    -      // on the stack, and construct it, in each function that needs it.
    -      const ACE_U_LongLong ACE_STATS_INTERNAL_OFFSET (0, 8);
    -#else  /* ! ACE_LACKS_LONGLONG_T */
    -      const ACE_UINT64 ACE_STATS_INTERNAL_OFFSET =
    -        ACE_UINT64_LITERAL (0x100000000);
    -#endif /* ! ACE_LACKS_LONGLONG_T */
    -
    -      ACE_UINT64 sum = ACE_STATS_INTERNAL_OFFSET;
    -      ACE_Unbounded_Queue_Iterator i (samples_);
    -      while (! i.done ())
    -        {
    -          ACE_INT32 *sample;
    -          if (i.next (sample))
    -            {
    -              sum += *sample;
    -              i.advance ();
    -            }
    -        }
    -
    -      // sum_ was initialized with ACE_STATS_INTERNAL_OFFSET, so
    -      // subtract that off here.
    -      quotient (sum - ACE_STATS_INTERNAL_OFFSET,
    -                number_of_samples_ * scale_factor,
    -                m);
    -    }
    -  else
    -    {
    -      m.whole (0);
    -      m.fractional (0);
    -    }
    -}
    -
    -int
    -ACE_Stats::std_dev (ACE_Stats_Value &std_dev,
    -                    const ACE_UINT32 scale_factor)
    -{
    -  if (number_of_samples_ <= 1)
    -    {
    -      std_dev.whole (0);
    -      std_dev.fractional (0);
    -    }
    -  else
    -    {
    -      const ACE_UINT32 field = std_dev.fractional_field ();
    -
    -      // The sample standard deviation is:
    -      //
    -      // sqrt (sum (sample_i - mean)^2 / (number_of_samples_ - 1))
    -
    -      ACE_UINT64 mean_scaled;
    -      // Calculate the mean, scaled, so that we don't lose its
    -      // precision.
    -      ACE_Stats_Value avg (std_dev.precision ());
    -      mean (avg, 1u);
    -      avg.scaled_value (mean_scaled);
    -
    -      // Calculate the summation term, of squared differences from the
    -      // mean.
    -      ACE_UINT64 sum_of_squares = 0;
    -      ACE_Unbounded_Queue_Iterator i (samples_);
    -      while (! i.done ())
    -        {
    -          ACE_INT32 *sample;
    -          if (i.next (sample))
    -            {
    -              const ACE_UINT64 original_sum_of_squares = sum_of_squares;
    -
    -              // Scale up by field width so that we don't lose the
    -              // precision of the mean.  Carefully . . .
    -              const ACE_UINT64 product (*sample * field);
    -
    -              ACE_UINT64 difference;
    -              // NOTE: please do not reformat this code!  It //
    -              // works with the Diab compiler the way it is! //
    -              if  (product >= mean_scaled)                   //
    -                {                                            //
    -                  difference = product - mean_scaled;        //
    -                }                                            //
    -              else                                           //
    -                {                                            //
    -                  difference = mean_scaled - product;        //
    -                }                                            //
    -              // NOTE: please do not reformat this code!  It //
    -              // works with the Diab compiler the way it is! //
    -
    -              // Square using 64-bit arithmetic.
    -              sum_of_squares += difference * ACE_U64_TO_U32 (difference);
    -              i.advance ();
    -
    -              if (sum_of_squares < original_sum_of_squares)
    -                {
    -                  overflow_ = ENOSPC;
    -                  return -1;
    -                }
    -            }
    -        }
    -
    -      // Divide the summation by (number_of_samples_ - 1), to get the
    -      // variance.  In addition, scale the variance down to undo the
    -      // mean scaling above.  Otherwise, it can get too big.
    -      ACE_Stats_Value variance (std_dev.precision ());
    -      quotient (sum_of_squares,
    -                (number_of_samples_ - 1) * field * field,
    -                variance);
    -
    -      // Take the square root of the variance to get the standard
    -      // deviation.  First, scale up . . .
    -      ACE_UINT64 scaled_variance;
    -      variance.scaled_value (scaled_variance);
    -
    -      // And scale up, once more, because we'll be taking the square
    -      // root.
    -      scaled_variance *= field;
    -      ACE_Stats_Value unscaled_standard_deviation (std_dev.precision ());
    -      square_root (scaled_variance,
    -                   unscaled_standard_deviation);
    -
    -      // Unscale.
    -      quotient (unscaled_standard_deviation,
    -                scale_factor * field,
    -                std_dev);
    -    }
    -
    -  return 0;
    -}
    -
    -
    -void
    -ACE_Stats::reset (void)
    -{
    -  overflow_ = 0u;
    -  number_of_samples_ = 0u;
    -  min_ = 0x7FFFFFFF;
    -  max_ = -0x8000 * 0x10000;
    -  samples_.reset ();
    -}
    -
    -int
    -ACE_Stats::print_summary (const u_int precision,
    -                          const ACE_UINT32 scale_factor,
    -                          FILE *file) const
    -{
    -  ASYS_TCHAR mean_string [128];
    -  ASYS_TCHAR std_dev_string [128];
    -  ASYS_TCHAR min_string [128];
    -  ASYS_TCHAR max_string [128];
    -  int success = 0;
    -
    -  for (int tmp_precision = precision;
    -       ! overflow_  &&  ! success  &&  tmp_precision >= 0;
    -       --tmp_precision)
    -    {
    -      // Build a format string, in case the C library doesn't support %*u.
    -      ASYS_TCHAR format[32];
    -      if (tmp_precision == 0)
    -        ACE_OS::sprintf (format, ASYS_TEXT ("%%%d"), tmp_precision);
    -      else
    -        ACE_OS::sprintf (format, ASYS_TEXT ("%%d.%%0%du"), tmp_precision);
    -
    -      ACE_Stats_Value u (tmp_precision);
    -      ((ACE_Stats *) this)->mean (u, scale_factor);
    -      ACE_OS::sprintf (mean_string, format, u.whole (), u.fractional ());
    -
    -      ACE_Stats_Value sd (tmp_precision);
    -      if (((ACE_Stats *) this)->std_dev (sd, scale_factor))
    -        {
    -          success = 0;
    -          continue;
    -        }
    -      else
    -        {
    -          success = 1;
    -        }
    -      ACE_OS::sprintf (std_dev_string, format, sd.whole (), sd.fractional ());
    -
    -      ACE_Stats_Value minimum (tmp_precision), maximum (tmp_precision);
    -      if (min_ != 0)
    -        {
    -          const ACE_UINT64 m (min_);
    -          quotient (m, scale_factor, minimum);
    -        }
    -      if (max_ != 0)
    -        {
    -          const ACE_UINT64 m (max_);
    -          quotient (m, scale_factor, maximum);
    -        }
    -      ACE_OS::sprintf (min_string, format,
    -                       minimum.whole (), minimum.fractional ());
    -      ACE_OS::sprintf (max_string, format,
    -                       maximum.whole (), maximum.fractional ());
    -    }
    -
    -  if (success == 1)
    -    {
    -      ACE_OS::fprintf (file, ASYS_TEXT ("samples: %u (%s - %s); mean: ")
    -                       ASYS_TEXT ("%s; std dev: %s\n"),
    -                       samples (), min_string, max_string,
    -                       mean_string, std_dev_string);
    -      return 0;
    -    }
    -  else
    -    {
    -#if !defined (ACE_HAS_WINCE)
    -      ACE_OS::fprintf (file,
    -                       ASYS_TEXT ("ACE_Stats::print_summary: OVERFLOW: %s\n"),
    -                       ASYS_WIDE_STRING (strerror (overflow_)));
    -#else
    -      // WinCE doesn't have strerror ;(
    -      ACE_OS::fprintf (file,
    -                       ASYS_TEXT ("ACE_Stats::print_summary: OVERFLOW\n"));
    -#endif /* ACE_HAS_WINCE */
    -      return -1;
    -    }
    -}
    -
    -void
    -ACE_Stats::quotient (const ACE_UINT64 dividend,
    -                     const ACE_UINT32 divisor,
    -                     ACE_Stats_Value "ient)
    -{
    -  // The whole part of the division comes from simple integer division.
    -  quotient.whole (ACE_static_cast (ACE_UINT32,
    -    divisor == 0  ?  0  :  dividend / divisor));
    -
    -  if (quotient.precision () > 0  ||  divisor == 0)
    -    {
    -      const ACE_UINT32 field = quotient.fractional_field ();
    -
    -      // Fractional = (dividend % divisor) * 10^precision / divisor
    -
    -      // It would be nice to add round-up term:
    -      // Fractional = (dividend % divisor) * 10^precision / divisor  +
    -      //                10^precision/2 / 10^precision
    -      //            = ((dividend % divisor) * 10^precision  +  divisor) /
    -      //                divisor
    -      quotient.fractional (ACE_static_cast (ACE_UINT32,
    -        dividend % divisor * field / divisor));
    -    }
    -  else
    -    {
    -      // No fractional portion is requested, so don't bother
    -      // calculating it.
    -      quotient.fractional (0);
    -    }
    -}
    -
    -void
    -ACE_Stats::quotient (const ACE_Stats_Value ÷nd,
    -                     const ACE_UINT32 divisor,
    -                     ACE_Stats_Value "ient)
    -{
    -  // The whole part of the division comes from simple integer division.
    -  quotient.whole (divisor == 0  ?  0  :  dividend.whole () / divisor);
    -
    -  if (quotient.precision () > 0  ||  divisor == 0)
    -    {
    -      const ACE_UINT32 field = quotient.fractional_field ();
    -
    -      // Fractional = (dividend % divisor) * 10^precision / divisor.
    -      quotient.fractional (dividend.whole () % divisor * field / divisor  +
    -                           dividend.fractional () / divisor);
    -    }
    -  else
    -    {
    -      // No fractional portion is requested, so don't bother
    -      // calculating it.
    -      quotient.fractional (0);
    -    }
    -}
    -
    -void
    -ACE_Stats::square_root (const ACE_UINT64 n,
    -                        ACE_Stats_Value &square_root)
    -{
    -  ACE_UINT32 floor = 0;
    -  ACE_UINT32 ceiling = 0xFFFFFFFFu;
    -  ACE_UINT32 mid = 0;
    -  u_int i;
    -
    -  // The maximum number of iterations is log_2 (2^64) == 64.
    -  for (i = 0; i < 64; ++i)
    -    {
    -      mid = (ceiling - floor) / 2  +  floor;
    -      if (floor == mid)
    -        // Can't divide the interval any further.
    -        break;
    -      else
    -        {
    -          // Multiply carefully to avoid overflow.
    -          ACE_UINT64 mid_squared = mid; mid_squared *= mid;
    -          if (mid_squared == n)
    -            break;
    -          else if (mid_squared < n)
    -            floor = mid;
    -          else
    -            ceiling = mid;
    -        }
    -    }
    -
    -  square_root.whole (mid);
    -  ACE_UINT64 mid_squared = mid; mid_squared *= mid;
    -
    -  if (square_root.precision ()  &&  mid_squared < n)
    -    {
    -      // (mid * 10^precision + fractional)^2 ==
    -      //   n^2 * 10^(precision * 2)
    -
    -      const ACE_UINT32 field = square_root.fractional_field ();
    -
    -      floor = 0;
    -      ceiling = field;
    -      mid = 0;
    -
    -      // Do the 64-bit arithmetic carefully to avoid overflow.
    -      ACE_UINT64 target = n;
    -      target *= field;
    -      target *= field;
    -
    -      ACE_UINT64 difference = 0;
    -
    -      for (i = 0; i < square_root.precision (); ++i)
    -        {
    -          mid = (ceiling - floor) / 2 + floor;
    -
    -          ACE_UINT64 current = square_root.whole () * field  +  mid;
    -          current *= square_root.whole () * field  +  mid;
    -
    -          if (floor == mid)
    -            {
    -              difference = target - current;
    -              break;
    -            }
    -          else if (current <= target)
    -            floor = mid;
    -          else
    -            ceiling = mid;
    -        }
    -
    -      // Check to see if the fractional part should be one greater.
    -      ACE_UINT64 next = square_root.whole () * field  +  mid + 1;
    -      next *= square_root.whole () * field  +  mid + 1;
    -
    -      square_root.fractional (next - target < difference  ?  mid + 1  :  mid);
    -    }
    -  else
    -    {
    -      // No fractional portion is requested, so don't bother
    -      // calculating it.
    -      square_root.fractional (0);
    -    }
    -}
    -
    -// ****************************************************************
    -
    -ACE_Throughput_Stats::ACE_Throughput_Stats (void)
    -  :  samples_count_ (0),
    -     latency_min_ (0),
    -     latency_min_at_ (0),
    -     latency_max_ (0),
    -     latency_max_at_ (0),
    -     latency_sum_ (0),
    -     latency_sum2_ (0),
    -     throughput_last_ (0),
    -     throughput_sum_x_ (0),
    -     throughput_sum_x2_ (0),
    -     throughput_sum_y_ (0),
    -     throughput_sum_y2_ (0),
    -     throughput_sum_xy_ (0)
    -{
    -}
    -
    -void
    -ACE_Throughput_Stats::sample (ACE_UINT64 throughput,
    -                              ACE_UINT64 latency)
    -{
    -  ++this->samples_count_;
    -
    -  if (this->samples_count_ == 1u)
    -    {
    -      this->latency_min_ = latency;
    -      this->latency_min_at_ = ACE_U64_TO_U32 (this->samples_count_);
    -      this->latency_max_ = latency;
    -      this->latency_max_at_ = ACE_U64_TO_U32 (this->samples_count_);
    -      this->latency_sum_ = latency;
    -#if defined ACE_LACKS_LONGLONG_T
    -      this->latency_sum2_ = latency * ACE_U64_TO_U32 (latency);
    -#else  /* ! ACE_LACKS_LONGLONG_T */
    -      this->latency_sum2_ = latency * latency;
    -#endif /* ! ACE_LACKS_LONGLONG_T */
    -
    -      this->throughput_last_   = throughput;
    -#if 0
    -      this->throughput_sum_y_  = this->samples_count_;
    -      this->throughput_sum_y2_ = this->samples_count_ * this->samples_count_;
    -      this->throughput_sum_x_  = throughput;
    -      this->throughput_sum_x2_ = throughput * throughput;
    -      this->throughput_sum_xy_ = throughput * this->samples_count_;
    -
    -      printf ("%f %qu\n", throughput / 400000000.0, this->samples_count_);
    -#endif /* 0 */
    -    }
    -  else
    -    {
    -      if (this->latency_min_ > latency)
    -        {
    -          this->latency_min_ = latency;
    -          this->latency_min_at_ = ACE_U64_TO_U32 (this->samples_count_);
    -        }
    -      if (this->latency_max_ < latency)
    -        {
    -          this->latency_max_ = latency;
    -          this->latency_max_at_ = ACE_U64_TO_U32 (this->samples_count_);
    -        }
    -
    -      this->latency_sum_  += latency;
    -#if defined ACE_LACKS_LONGLONG_T
    -      this->latency_sum2_ += latency * ACE_U64_TO_U32 (latency);
    -#else  /* ! ACE_LACKS_LONGLONG_T */
    -      this->latency_sum2_ += latency * latency;
    -#endif /* ! ACE_LACKS_LONGLONG_T */
    -
    -      this->throughput_last_ = throughput;
    -
    -#if 0
    -      this->throughput_sum_y_  += this->samples_count_;
    -      this->throughput_sum_y2_ += this->samples_count_ * this->samples_count_;
    -      this->throughput_sum_x_  += throughput;
    -      this->throughput_sum_x2_ += throughput * throughput;
    -      this->throughput_sum_xy_ += throughput * this->samples_count_;
    -
    -      printf ("%f %qu\n", throughput / 400000000.0, this->samples_count_);
    -#endif /* 0 */
    -    }
    -}
    -
    -void
    -ACE_Throughput_Stats::accumulate (const ACE_Throughput_Stats &rhs)
    -{
    -  if (rhs.samples_count_ == 0)
    -    return;
    -
    -  if (this->samples_count_ == 0u)
    -    {
    -      this->samples_count_ = rhs.samples_count_;
    -
    -      this->latency_min_  = rhs.latency_min_;
    -      this->latency_max_  = rhs.latency_max_;
    -      this->latency_sum_  = rhs.latency_sum_;
    -      this->latency_sum2_ = rhs.latency_sum2_;
    -
    -      this->throughput_last_   = rhs.throughput_last_;
    -#if 0
    -      this->throughput_sum_x_  = rhs.throughput_sum_x_;
    -      this->throughput_sum_x2_ = rhs.throughput_sum_x2_;
    -      this->throughput_sum_y_  = rhs.throughput_sum_y_;
    -      this->throughput_sum_y2_ = rhs.throughput_sum_y2_;
    -      this->throughput_sum_xy_ = rhs.throughput_sum_xy_;
    -#endif /* 0 */
    -
    -      return;
    -    }
    -
    -  this->samples_count_ += rhs.samples_count_;
    -
    -  if (this->latency_min_ > rhs.latency_min_)
    -    this->latency_min_ = rhs.latency_min_;
    -  if (this->latency_max_ < rhs.latency_max_)
    -    this->latency_max_ = rhs.latency_max_;
    -
    -  this->latency_sum_  += rhs.latency_sum_;
    -  this->latency_sum2_ += rhs.latency_sum2_;
    -
    -  if (this->throughput_last_ < rhs.throughput_last_)
    -    this->throughput_last_ = rhs.throughput_last_;
    -
    -#if 0
    -  this->throughput_sum_x_  += rhs.throughput_sum_x_;
    -  this->throughput_sum_x2_ += rhs.throughput_sum_x2_;
    -  this->throughput_sum_y_  += rhs.throughput_sum_y_;
    -  this->throughput_sum_y2_ += rhs.throughput_sum_y2_;
    -  this->throughput_sum_xy_ += rhs.throughput_sum_xy_;
    -#endif /* 0 */
    -}
    -
    -void
    -ACE_Throughput_Stats::dump_results (const ASYS_TCHAR* msg,
    -                                    ACE_UINT32 sf)
    -{
    -  if (this->samples_count_ == 0u)
    -    {
    -      ACE_DEBUG ((LM_DEBUG,
    -                  ASYS_TEXT ("%s : no data collected\n"), msg));
    -      return;
    -    }
    -
    -  ACE_UINT64 latency_avg = this->latency_sum_ /
    -#if defined ACE_LACKS_LONGLONG_T
    -    ACE_U64_TO_U32 (this->samples_count_);
    -#else  /* ! ACE_LACKS_LONGLONG_T */
    -    this->samples_count_;
    -#endif /* ! ACE_LACKS_LONGLONG_T */
    -  ACE_UINT64 latency_dev =
    -#if defined ACE_LACKS_LONGLONG_T
    -    ACE_static_cast (ACE_U_LongLong,
    -      this->latency_sum2_ / ACE_U64_TO_U32(this->samples_count_)) -
    -    latency_avg * ACE_U64_TO_U32(latency_avg);
    -#else  /* ! ACE_LACKS_LONGLONG_T */
    -    this->latency_sum2_ / this->samples_count_ - latency_avg * latency_avg;
    -#endif /* ! ACE_LACKS_LONGLONG_T */
    -
    -  double l_min = ACE_CU64_TO_CU32 (this->latency_min_) / sf;
    -  double l_max = ACE_CU64_TO_CU32 (this->latency_max_) / sf;
    -  double l_avg = ACE_CU64_TO_CU32 (latency_avg) / sf;
    -  double l_dev = ACE_CU64_TO_CU32 (latency_dev) / (sf * sf);
    -
    -  ACE_DEBUG ((LM_DEBUG,
    -              ASYS_TEXT ("%s latency   : %.2f[%d]/%.2f/%.2f[%d]/%.2f (min/avg/max/var^2)\n"),
    -              msg,
    -              l_min, this->latency_min_at_,
    -              l_avg,
    -              l_max, this->latency_max_at_,
    -              l_dev));
    -
    -  double seconds =
    -#if defined ACE_LACKS_LONGLONG_T
    -    this->throughput_last_ / sf;
    -#else  /* ! ACE_LACKS_LONGLONG_T */
    -    ACE_static_cast (double,
    -                     ACE_UINT64_DBLCAST_ADAPTER(this->throughput_last_ / sf));
    -#endif /* ! ACE_LACKS_LONGLONG_T */
    -  seconds /= 1000000.0;
    -  double t_avg = ACE_CU64_TO_CU32 (this->samples_count_) / seconds;
    -
    -  ACE_DEBUG ((LM_DEBUG,
    -              ASYS_TEXT ("%s throughput: %.2f (events/second)\n"),
    -              msg, t_avg));
    -
    -#if 0
    -  double t_sum_x =
    -    ACE_CU64_TO_CU32 (this->throughput_sum_x_);// / sf);
    -  //t_sum_x /= 1000000.0;
    -  double t_sum_y =
    -    ACE_CU64_TO_CU32 (this->throughput_sum_y_);
    -  double t_sum_x2 =
    -    ACE_CU64_TO_CU32 (this->throughput_sum_x2_);// / (sf*sf));
    -  //t_sum_x2 /= 1000000.0;
    -  //t_sum_x2 /= 1000000.0;
    -  double t_sum_y2 =
    -    ACE_CU64_TO_CU32 (this->throughput_sum_y2_);
    -  double t_sum_xy =
    -    ACE_CU64_TO_CU32 (this->throughput_sum_xy_);// / sf);
    -  //t_sum_xy /= 1000000.0;
    -  double t_avgx = t_sum_x / this->samples_count_;
    -  double t_avgy = t_sum_y / this->samples_count_;
    -
    -  double t_a =
    -    (this->samples_count_ * t_sum_xy - t_sum_x * t_sum_y)
    -    / (this->samples_count_ * t_sum_x2 - t_sum_x * t_sum_x);
    -  double t_b = (t_avgy - t_a * t_avgx);
    -
    -  t_a *= 1000000.0;
    -
    -  double d_r =
    -    (t_sum_xy - t_avgx * t_sum_y - t_avgy * t_sum_x
    -     + this->samples_count_ * t_avgx * t_avgy);
    -  double n_r =
    -    (t_sum_x2
    -     - this->samples_count_ * t_avgx * t_avgx)
    -    * (t_sum_y2
    -       - this->samples_count_ * t_avgy * t_avgy);
    -  double t_r = d_r * d_r / n_r;
    -
    -  //  ACE_DEBUG ((LM_DEBUG,
    -  //              "%s throughput: %.2f/%.2f/%.2f/%.6f/%.2f (avg/a/b/r/elapsed)\n",
    -  //              msg, t_avg, t_a, t_b, t_r, seconds));
    -  //  ACE_DEBUG ((LM_DEBUG,
    -  //              "%s        data: %.2f/%.2f/%.2f/%.6f/%.2f (x/x2/y/y2/xy)\n",
    -  //              msg, t_sum_x, t_sum_x2, t_sum_y, t_sum_y2, t_sum_xy));
    -#endif
    -}
    -
    -// ****************************************************************
    -
    -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
    -template class ACE_Node ;
    -template class ACE_Unbounded_Queue ;
    -template class ACE_Unbounded_Queue_Iterator ;
    -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
    -#pragma instantiate ACE_Node 
    -#pragma instantiate ACE_Unbounded_Queue 
    -#pragma instantiate ACE_Unbounded_Queue_Iterator 
    -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
    diff --git a/ace/Stats.h b/ace/Stats.h
    deleted file mode 100644
    index 4a2ca420abb..00000000000
    --- a/ace/Stats.h
    +++ /dev/null
    @@ -1,244 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Stats.h
    -//
    -// = AUTHORS
    -//    David L. Levine
    -//
    -// ============================================================================
    -
    -#ifndef ACE_STATS_H
    -#define ACE_STATS_H
    -
    -#include "ace/ACE.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Containers.h"
    -
    -class ACE_Export ACE_Stats_Value
    -{
    -  // = TITLE
    -  //     Helper class for ACE_Stats.
    -  //
    -  // = DESCRIPTION
    -  //     Container struct for 64-bit signed quantity and its
    -  //     precision.  It would be nicer to use a fixed-point class, but
    -  //     this is sufficient.  Users typically don't need to use this
    -  //     class directly; see ACE_Stats below.
    -public:
    -  ACE_Stats_Value (const u_int precision);
    -  // Constructor, which requires precision in terms of number of
    -  // decimal digits.  The more variation in the data, and the greater
    -  // the data values, the smaller the precision must be to avoid
    -  // overflow in the standard deviation calculation.  3 might be a
    -  // good value, or maybe 4.  5 will probably be too large for
    -  // non-trivial data sets.
    -
    -  u_int precision (void) const;
    -  // Accessor for precision.
    -
    -  void whole (const ACE_UINT32);
    -  // Set the whole_ field.
    -
    -  ACE_UINT32 whole (void) const;
    -  // Accessor for the whole_ field.
    -
    -  void fractional (const ACE_UINT32);
    -  // Set the fractional_ field.
    -
    -  ACE_UINT32 fractional (void) const;
    -  // Accessor for the fractional_ field.
    -
    -  ACE_UINT32 fractional_field (void) const;
    -  // Calculates the maximum value of the fractional portion, given its
    -  // precision.
    -
    -  void scaled_value (ACE_UINT64 &) const;
    -  // Access the value as an _unsigned_ 64 bit quantity.  It scales the
    -  // value up by  decimal digits, so that no precision will
    -  // be lost.  It assumes that  is >= 0.
    -
    -  void dump (void) const;
    -  // Print to stdout.
    -
    -private:
    -  ACE_UINT32 whole_;
    -  // The integer portion of the value.
    -
    -  ACE_UINT32 fractional_;
    -  // The fractional portion of the value.
    -
    -  u_int precision_;
    -  // The number of decimal digits of precision represented by
    -  // .  Not declared const, so the only way to change it
    -  // is via the assignment operator.
    -
    -  ACE_UNIMPLEMENTED_FUNC (ACE_Stats_Value (void))
    -};
    -
    -class ACE_Export ACE_Stats
    -{
    -  // = TITLE
    -  //     Provides simple statistical analysis.
    -  //
    -  // = DESCRIPTION
    -  //     Simple statistical analysis package.  Prominent features are:
    -  //     1) It does not use any floating point arithmetic.
    -  //     2) It handles positive and/or negative sample values.  The
    -  //        sample value type is ACE_INT32.
    -  //     3) It uses 64 bit unsigned, but not 64 bit signed, quantities
    -  //        internally.
    -  //     4) It checks for overflow of internal state.
    -  //     5) It has no static variables of other than built-in types.
    -  //
    -  //     Example usage:
    -  //       ACE_Stats stats;
    -  //       for (u_int i = 0; i < n; ++i)
    -  //         {
    -  //           const ACE_UINT32 sample = /* ... */;
    -  //           stats.sample (sample);
    -  //         }
    -  //       stats.print_summary (3);
    -public:
    -  ACE_Stats (void);
    -  // Default constructor.
    -
    -  int sample (const ACE_INT32 value);
    -  // Provide a new sample.  Returns 0 on success, -1 if it fails due
    -  // to running out of memory, or to rolling over of the sample count.
    -
    -  ACE_UINT32 samples (void) const;
    -  // Access the number of samples provided so far.
    -
    -  ACE_INT32 min_value (void) const;
    -  // Value of the minimum sample provided so far.
    -
    -  ACE_INT32 max_value (void) const;
    -  // Value of the maximum sample provided so far.
    -
    -  void mean (ACE_Stats_Value &mean,
    -             const ACE_UINT32 scale_factor = 1);
    -  // Access the mean of all samples provided so far.  The fractional
    -  // part is to the specified number of digits.  E.g., 3 fractional
    -  // digits specifies that the fractional part is in thousandths.
    -
    -  int std_dev (ACE_Stats_Value &std_dev,
    -               const ACE_UINT32 scale_factor = 1);
    -  // Access the standard deviation, whole and fractional parts.  See
    -  // description of  method for argument descriptions.
    -
    -  int print_summary (const u_int precision,
    -                     const ACE_UINT32 scale_factor = 1,
    -                     FILE * = stdout) const;
    -  // Print summary statistics.  If scale_factor is not 1, then the
    -  // results are divided by it, i.e., each of the samples is scaled
    -  // down by it.  If internal overflow is reached with the specified
    -  // scale factor, it successively tries to reduce it.  Returns -1 if
    -  // there is overflow even with a 0 scale factor.
    -
    -  void reset (void);
    -  // Initialize internal state.
    -
    -  static void quotient (const ACE_UINT64 dividend,
    -                        const ACE_UINT32 divisor,
    -                        ACE_Stats_Value "ient);
    -  // Utility division function, for ACE_UINT64 dividend.
    -
    -  static void quotient (const ACE_Stats_Value ÷nd,
    -                        const ACE_UINT32 divisor,
    -                        ACE_Stats_Value "ient);
    -  // Utility division function, for ACE_Stats_Value dividend.
    -
    -  static void square_root (const ACE_UINT64 n,
    -                           ACE_Stats_Value &square_root);
    -  // Sqrt function, which uses an oversimplified version of Newton's
    -  // method.  It's not fast, but it doesn't require floating point
    -  // support.
    -
    -  void dump (void) const;
    -  // Print summary statistics to stdout.
    -
    -private:
    -  u_int overflow_;
    -  // Internal indication of whether there has been overflow.  Contains
    -  // the errno corresponding to the cause of overflow.
    -
    -  ACE_UINT32 number_of_samples_;
    -  // Number of samples.
    -
    -  ACE_INT32 min_;
    -  // Minimum sample value.
    -
    -  ACE_INT32 max_;
    -  // Maximum sample value.
    -
    -  ACE_Unbounded_Queue  samples_;
    -  // The samples.
    -};
    -
    -// ****************************************************************
    -
    -class ACE_Export ACE_Throughput_Stats
    -{
    -  // = TITLE
    -  //   A simple class to make throughput and latency analysis.
    -  //
    -  // = DESCRIPTION
    -  //   Keep the relevant information to perform throughput and latency
    -  //   analysis, including:
    -  //   1) Minimum, Average and Maximum latency
    -  //   2) Jitter for the latency
    -  //   3) Linear regression for throughput
    -  //   4) Accumulate results from several samples to obtain aggregated
    -  //      results, across several threads or experiments.
    -  //
    -public:
    -  ACE_Throughput_Stats (void);
    -  // Default constructor.
    -
    -  void sample (ACE_UINT64 throughput, ACE_UINT64 latency);
    -  // Store one sample
    -
    -  void accumulate (const ACE_Throughput_Stats &throughput);
    -  // Update the values to reflect the stats in 
    -
    -  void dump_results (const ASYS_TCHAR* msg, ACE_UINT32 scale_factor);
    -  // Print down the stats
    -
    -private:
    -  ACE_UINT64 samples_count_;
    -  // The number of samples
    -
    -  ACE_UINT64 latency_min_;
    -  ACE_UINT32 latency_min_at_;
    -  ACE_UINT64 latency_max_;
    -  ACE_UINT32 latency_max_at_;
    -  ACE_UINT64 latency_sum_;
    -  ACE_UINT64 latency_sum2_;
    -  // The stadigraphs for latency computation
    -
    -  ACE_UINT64 throughput_last_;
    -  ACE_UINT64 throughput_sum_x_;
    -  ACE_UINT64 throughput_sum_x2_;
    -  ACE_UINT64 throughput_sum_y_;
    -  ACE_UINT64 throughput_sum_y2_;
    -  ACE_UINT64 throughput_sum_xy_;
    -  // The stadigraphs for throughput computation
    -};
    -
    -
    -#if defined (__ACE_INLINE__)
    -# include "ace/Stats.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ! ACE_STATS_H */
    diff --git a/ace/Stats.i b/ace/Stats.i
    deleted file mode 100644
    index 42d9e5f51ba..00000000000
    --- a/ace/Stats.i
    +++ /dev/null
    @@ -1,95 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -ACE_INLINE
    -ACE_Stats_Value::ACE_Stats_Value (const u_int precision)
    -  : whole_ (0),
    -    fractional_ (0),
    -    precision_ (precision)
    -{
    -}
    -
    -ACE_INLINE
    -u_int
    -ACE_Stats_Value::precision (void) const
    -{
    -  return precision_;
    -}
    -
    -ACE_INLINE
    -void
    -ACE_Stats_Value::whole (const ACE_UINT32 value)
    -{
    -  whole_ = value;
    -}
    -
    -ACE_INLINE
    -ACE_UINT32
    -ACE_Stats_Value::whole (void) const
    -{
    -  return whole_;
    -}
    -
    -ACE_INLINE
    -void
    -ACE_Stats_Value::fractional (const ACE_UINT32 value)
    -{
    -  fractional_ = value;
    -}
    -
    -ACE_INLINE
    -ACE_UINT32
    -ACE_Stats_Value::fractional (void) const
    -{
    -  return fractional_;
    -}
    -
    -ACE_INLINE
    -void
    -ACE_Stats_Value::scaled_value (ACE_UINT64 &sv) const
    -{
    -  sv = whole () * fractional_field ()  +  fractional ();
    -}
    -
    -ACE_INLINE
    -void
    -ACE_Stats_Value::dump (void) const
    -{
    -  ACE_DEBUG ((LM_DEBUG,
    -              ASYS_TEXT ("precision: %u digits; whole: %u, fractional: %u\n"),
    -              precision_, whole_, fractional_));
    -}
    -
    -ACE_INLINE
    -ACE_Stats::ACE_Stats (void)
    -{
    -  reset ();
    -}
    -
    -ACE_INLINE
    -ACE_UINT32
    -ACE_Stats::samples (void) const
    -{
    -  return number_of_samples_;
    -}
    -
    -ACE_INLINE
    -ACE_INT32
    -ACE_Stats::min_value (void) const
    -{
    -  return min_;
    -}
    -
    -ACE_INLINE
    -ACE_INT32
    -ACE_Stats::max_value (void) const
    -{
    -  return max_;
    -}
    -
    -ACE_INLINE
    -void
    -ACE_Stats::dump (void) const
    -{
    -  print_summary (3u);
    -}
    diff --git a/ace/Strategies.cpp b/ace/Strategies.cpp
    deleted file mode 100644
    index edd7ca41f57..00000000000
    --- a/ace/Strategies.cpp
    +++ /dev/null
    @@ -1,89 +0,0 @@
    -// Strategies.cpp
    -// $Id$
    -
    -#if !defined (ACE_STRATEGIES_C)
    -#define ACE_STRATEGIES_C
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Reactor.h"
    -#include "ace/Strategies.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/Strategies.i"
    -#endif /* __ACE_INLINE __ */
    -
    -ACE_RCSID(ace, Strategies, "$Id$")
    -
    -ACE_Notification_Strategy::ACE_Notification_Strategy (ACE_Event_Handler *eh,
    -						      ACE_Reactor_Mask mask)
    -  : eh_ (eh),
    -    mask_ (mask)
    -{
    -}
    -
    -ACE_Notification_Strategy::~ACE_Notification_Strategy (void)
    -{
    -}
    -
    -ACE_Event_Handler *
    -ACE_Notification_Strategy::event_handler (void)
    -{
    -  return eh_;
    -}
    -
    -void 
    -ACE_Notification_Strategy::event_handler (ACE_Event_Handler *eh)
    -{
    -  this->eh_ = eh;
    -}
    -
    -ACE_Reactor_Mask 
    -ACE_Notification_Strategy::mask (void)
    -{
    -  return mask_;
    -}
    -
    -void 
    -ACE_Notification_Strategy::mask (ACE_Reactor_Mask m)
    -{
    -  this->mask_ = m;
    -}
    -
    -ACE_Reactor_Notification_Strategy::ACE_Reactor_Notification_Strategy (ACE_Reactor *reactor,
    -								      ACE_Event_Handler *eh,
    -								      ACE_Reactor_Mask mask)
    -  : ACE_Notification_Strategy (eh, mask),
    -    reactor_ (reactor)
    -{
    -}
    -
    -int 
    -ACE_Reactor_Notification_Strategy::notify (void)
    -{
    -  return this->reactor_->notify (this->eh_, this->mask_);
    -}
    -
    -int 
    -ACE_Reactor_Notification_Strategy::notify (ACE_Event_Handler *eh,
    -					   ACE_Reactor_Mask mask)
    -{
    -  return this->reactor_->notify (eh, mask);
    -}
    -
    -ACE_Reactor *
    -ACE_Reactor_Notification_Strategy::reactor (void)
    -{
    -  return this->reactor_;
    -}
    -
    -void 
    -ACE_Reactor_Notification_Strategy::reactor (ACE_Reactor *r)
    -{
    -  this->reactor_ = r;
    -}
    -  
    -ACE_Connection_Recycling_Strategy::~ACE_Connection_Recycling_Strategy (void)
    -{
    -}
    -
    -#endif /* ACE_STRATEGIES_C */
    diff --git a/ace/Strategies.h b/ace/Strategies.h
    deleted file mode 100644
    index 90d62d894f4..00000000000
    --- a/ace/Strategies.h
    +++ /dev/null
    @@ -1,192 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//   Strategies.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_STRATEGIES_H
    -#define ACE_STRATEGIES_H
    -
    -#include "ace/Event_Handler.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -// Forward decls.
    -class ACE_Reactor;
    -
    -class ACE_Export ACE_Notification_Strategy
    -{
    -  // = TITLE
    -  //     Abstract class used for notifing an interested party
    -  //
    -  // = DESCRIPTION
    -  //     A vehicle for extending the behavior of ACE_Message_Queue wrt
    -  //     notification *without subclassing*.  Thus, it's an example of
    -  //     the Bridge/Strategy patterns.
    -public:
    -  ACE_Notification_Strategy (ACE_Event_Handler *eh,
    -                             ACE_Reactor_Mask mask);
    -  virtual ~ACE_Notification_Strategy (void);
    -
    -  virtual int notify (void) = 0;
    -  virtual int notify (ACE_Event_Handler *,
    -                      ACE_Reactor_Mask mask) = 0;
    -
    -  // Get/Set the event handler
    -  ACE_Event_Handler *event_handler (void);
    -  void event_handler (ACE_Event_Handler *eh);
    -
    -  // Get/Set the reactor mask
    -  ACE_Reactor_Mask mask (void);
    -  void mask (ACE_Reactor_Mask m);
    -
    -protected:
    -  ACE_Event_Handler *eh_;
    -  ACE_Reactor_Mask mask_;
    -};
    -
    -class ACE_Export ACE_Reactor_Notification_Strategy : public ACE_Notification_Strategy
    -{
    -  // = TITLE
    -  //     Used to notify an ACE_Reactor
    -  //
    -  // = DESCRIPTION
    -  //     Integrates the  notification into the
    -  //      method.
    -public:
    -  ACE_Reactor_Notification_Strategy (ACE_Reactor *reactor,
    -                                     ACE_Event_Handler *eh,
    -                                     ACE_Reactor_Mask mask);
    -
    -  virtual ~ACE_Reactor_Notification_Strategy (void);
    -  // Default dtor.
    -
    -  virtual int notify (void);
    -
    -  virtual int notify (ACE_Event_Handler *,
    -                      ACE_Reactor_Mask mask);
    -
    -  // Get/Set the reactor
    -  ACE_Reactor *reactor (void);
    -  void reactor (ACE_Reactor *r);
    -
    -protected:
    -  ACE_Reactor *reactor_;
    -};
    -
    -class ACE_Export ACE_Connection_Recycling_Strategy
    -{
    -  // = TITLE
    -  //     Defines the interface for a connection recycler.
    -public:
    -  virtual ~ACE_Connection_Recycling_Strategy (void);
    -  // Virtual Destructor
    -
    -  virtual int purge (const void *recycling_act) = 0;
    -  // Remove from cache.
    -
    -  virtual int cache (const void *recycling_act) = 0;
    -  // Add to cache.
    -
    -  virtual int recycle_state (const void *recycling_act,
    -                             ACE_Recyclable_State new_state) = 0;
    -
    -  virtual ACE_Recyclable_State recycle_state (const void *recycling_act) const = 0;
    -  // Get/Set .
    -
    -  virtual int mark_as_closed (const void *recycling_act) = 0;
    -  // Mark as closed.
    -
    -  virtual int mark_as_closed_i (const void *recycling_act) = 0;
    -  // Mark as closed.(non-locking version)
    -  
    -  virtual int cleanup_hint (const void *recycling_act) = 0;
    -  // Cleanup as hint.
    -
    -protected:
    -  ACE_Connection_Recycling_Strategy (void);
    -  // Default ctor.
    -};
    -
    -class ACE_Export ACE_Recyclable
    -{
    -public:
    -  virtual ~ACE_Recyclable (void);
    -  // Destructor.
    -
    -  // = Set/Get the recyclable bit
    -  ACE_Recyclable_State recycle_state (void) const;
    -  void recycle_state (ACE_Recyclable_State new_state);
    -
    -protected:
    -  ACE_Recyclable (ACE_Recyclable_State initial_state);
    -  // Protected constructor.
    -
    -  ACE_Recyclable_State recycle_state_;
    -  // Our state.
    -};
    -
    -class ACE_Export ACE_Hashable
    -{
    -public:
    -  virtual ~ACE_Hashable (void);
    -  // Destructor.
    -
    -  virtual u_long hash (void) const;
    -  // Computes and returns hash value.  This "caches" the hash value to
    -  // improve performance.
    -
    -protected:
    -  ACE_Hashable (void);
    -  // Protected constructor.
    -
    -  virtual u_long hash_i (void) const = 0;
    -  // This is the method that actually performs the non-cached hash
    -  // computation.
    -
    -  u_long hash_value_;
    -  // Pre-computed hash-value.
    -
    -};
    -
    -class ACE_Export ACE_Refcountable
    -{
    -public:
    -  virtual ~ACE_Refcountable (void);
    -  // Destructor.
    -
    -  // = Increment/Decrement refcount
    -  int increment (void);
    -  int decrement (void);
    -
    -  int refcount (void) const;
    -  // Returns the current refcount.
    -
    -protected:
    -  ACE_Refcountable (int refcount);
    -  // Protected constructor.
    -
    -  int refcount_;
    -  // Current refcount.
    -};
    -
    -// This needs to come here to avoid circular dependencies.
    -#include "ace/Strategies_T.h"
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Strategies.i"
    -#endif /* __ACE_INLINE __ */
    -
    -#endif /* ACE_STRATEGIES_H */
    diff --git a/ace/Strategies.i b/ace/Strategies.i
    deleted file mode 100644
    index 5cdcb51c92e..00000000000
    --- a/ace/Strategies.i
    +++ /dev/null
    @@ -1,95 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// Strategies.i
    -
    -ACE_INLINE
    -ACE_Reactor_Notification_Strategy::~ACE_Reactor_Notification_Strategy (void)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_Connection_Recycling_Strategy::ACE_Connection_Recycling_Strategy (void)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_Recyclable::ACE_Recyclable (ACE_Recyclable_State initial_state)
    -  : recycle_state_ (initial_state)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_Recyclable::~ACE_Recyclable (void)
    -{
    -}
    -
    -ACE_INLINE ACE_Recyclable_State
    -ACE_Recyclable::recycle_state (void) const
    -{
    -  return this->recycle_state_;
    -}
    -
    -ACE_INLINE void
    -ACE_Recyclable::recycle_state (ACE_Recyclable_State new_state)
    -{
    -  if (this->recycle_state_ == ACE_RECYCLABLE_CLOSED)
    -    return;
    -
    -  this->recycle_state_ = new_state;
    -}
    -
    -ACE_INLINE
    -ACE_Hashable::ACE_Hashable (void)
    -  : hash_value_ (0)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_Hashable::~ACE_Hashable (void)
    -{
    -}
    -
    -ACE_INLINE u_long
    -ACE_Hashable::hash (void) const
    -{
    -  // In doing the check below, we take chance of paying a performance
    -  // price when the hash value is zero.  But, that will (hopefully)
    -  // happen far less often than a non-zero value, so this caching
    -  // strategy should pay off, esp. if hash computation is expensive
    -  // relative to the simple comparison.
    -
    -  if (this->hash_value_ == 0)
    -    ((ACE_Hashable *) this)->hash_value_ = this->hash_i ();
    -
    -  return this->hash_value_;
    -}
    -
    -ACE_INLINE
    -ACE_Refcountable::ACE_Refcountable (int refcount)
    -  : refcount_ (refcount)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_Refcountable::~ACE_Refcountable (void)
    -{
    -}
    -
    -ACE_INLINE int
    -ACE_Refcountable::increment (void)
    -{
    -  return ++this->refcount_;
    -}
    -
    -ACE_INLINE int
    -ACE_Refcountable::decrement (void)
    -{
    -  return --this->refcount_;
    -}
    -
    -ACE_INLINE int
    -ACE_Refcountable::refcount (void) const
    -{
    -  return this->refcount_;
    -}
    diff --git a/ace/Strategies_T.cpp b/ace/Strategies_T.cpp
    deleted file mode 100644
    index 6c446c2c7db..00000000000
    --- a/ace/Strategies_T.cpp
    +++ /dev/null
    @@ -1,1149 +0,0 @@
    -// $Id$
    -
    -#ifndef ACE_STRATEGIES_T_C
    -#define ACE_STRATEGIES_T_C
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Strategies_T.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Service_Repository.h"
    -#include "ace/Synch.h"
    -#include "ace/Service_Types.h"
    -#include "ace/Thread_Manager.h"
    -#include "ace/WFMO_Reactor.h"
    -
    -#if defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/Strategies_T.i"
    -#endif /* ACE_LACKS_INLINE_FUNCTIONS */
    -
    -ACE_RCSID(ace, Strategies_T, "$Id$")
    -
    -template  int
    -ACE_Singleton_Strategy::open (SVC_HANDLER *sh,
    -                                           ACE_Thread_Manager *)
    -{
    -  ACE_TRACE ("ACE_Singleton_Strategy::open");
    -
    -  if (this->delete_svc_handler_ 
    -      && this->svc_handler_ != 0)
    -    delete this->svc_handler_;
    -
    -  // If  is NULL then create a new .
    -  if (sh == 0)
    -    {
    -      ACE_NEW_RETURN (this->svc_handler_,
    -                      SVC_HANDLER,
    -                      -1);
    -      this->delete_svc_handler_ = 1;
    -    }
    -  else
    -    {
    -      this->svc_handler_ = sh;
    -      this->delete_svc_handler_ = 0;
    -    }
    -
    -  return 0;
    -}
    -
    -template  int
    -ACE_DLL_Strategy::open (const char dll_name[],
    -                                     const char factory_function[],
    -                                     const char svc_name[],
    -                                     ACE_Service_Repository *svc_rep,
    -                                     ACE_Thread_Manager *thr_mgr)
    -{
    -  ACE_TRACE ("ACE_DLL_Strategy::open");
    -  this->inherited::open (thr_mgr);
    -  ACE_OS::strncpy (this->dll_name_, dll_name);
    -  ACE_OS::strncpy (this->factory_function_, factory_function);
    -  ACE_OS::strncpy (this->svc_name_, svc_name);
    -  this->svc_rep_ = svc_rep;
    -  return 0;
    -}
    -
    -// Create a SVC_HANDLER by dynamically linking it from a DLL.
    -
    -template  int
    -ACE_DLL_Strategy::make_svc_handler (SVC_HANDLER *&sh)
    -{
    -  ACE_TRACE ("ACE_DLL_Strategy::make_svc_handler");
    -
    -  // Open the shared library.
    -  ACE_SHLIB_HANDLE handle = ACE_OS::dlopen (this->shared_library_);
    -
    -  // Extract the factory function.
    -  SVC_HANDLER *(*factory)(void) =
    -    (SVC_HANDLER *(*)(void)) ACE_OS::dlsym (handle,
    -                                            this->factory_function_);
    -
    -  // Call the factory function to obtain the new SVC_Handler (should
    -  // use RTTI here when it becomes available...)
    -  SVC_HANDLER *svc_handler;
    -
    -  ACE_ALLOCATOR_RETURN (svc_handler, (*factory)(), -1);
    -
    -  if (svc_handler != 0)
    -    {
    -      // Create an ACE_Service_Type containing the SVC_Handler and
    -      // insert into this->svc_rep_;
    -
    -      ACE_Service_Type_Impl *stp;
    -      ACE_NEW_RETURN (stp,
    -                      ACE_Service_Object_Type (svc_handler,
    -                                               this->svc_name_),
    -                      -1);
    -
    -      ACE_Service_Type *srp =
    -        new ACE_Service_Type (this->svc_name_,
    -                              stp,
    -                              handle,
    -                              1);
    -      if (srp == 0)
    -        {
    -          delete stp;
    -          errno = ENOMEM;
    -          return -1;
    -        }
    -
    -      if (this->svc_rep_->insert (srp) == -1)
    -        return -1;
    -      // @@ Somehow, we need to deal with this->thr_mgr_...
    -    }
    -
    -  sh = svc_handler;
    -  return 0;
    -}
    -
    -// Default behavior is to activate the SVC_HANDLER by calling it's
    -// open() method, which allows the SVC_HANDLER to determine its own
    -// concurrency strategy.
    -
    -template  int
    -ACE_Concurrency_Strategy::activate_svc_handler (SVC_HANDLER *svc_handler,
    -                                                             void *arg)
    -{
    -  ACE_TRACE ("ACE_Concurrency_Strategy::activate_svc_handler");
    -
    -  int result = 0;
    -
    -  // See if we should enable non-blocking I/O on the 's
    -  // peer.
    -  if (ACE_BIT_ENABLED (this->flags_, ACE_NONBLOCK) != 0)
    -    {
    -      if (svc_handler->peer ().enable (ACE_NONBLOCK) == -1)
    -        result = -1;
    -    }
    -  // Otherwise, make sure it's disabled by default.
    -  else if (svc_handler->peer ().disable (ACE_NONBLOCK) == -1)
    -    result = -1;
    -
    -  if (result == 0 && svc_handler->open (arg) == -1)
    -    result = -1;
    -
    -  if (result == -1)
    -    svc_handler->close (0);
    -
    -  return result;
    -}
    -
    -template  int
    -ACE_Reactive_Strategy::open (ACE_Reactor *reactor,
    -                                          ACE_Reactor_Mask mask,
    -                                          int flags)
    -{
    -  ACE_TRACE ("ACE_Reactive_Strategy::open");
    -  this->reactor_ = reactor;
    -  this->mask_ = mask;
    -  this->flags_ = flags;
    -
    -  // Must have a 
    -  if (this->reactor_ == 0)
    -    return -1;
    -  else
    -    return 0;
    -}
    -
    -template  int
    -ACE_Reactive_Strategy::activate_svc_handler (SVC_HANDLER *svc_handler,
    -                                                          void *arg)
    -{
    -  ACE_TRACE ("ACE_Reactive_Strategy::activate_svc_handler");
    -
    -  int result = 0;
    -
    -  if (this->reactor_ == 0)
    -    result = -1;
    -
    -  // Register with the Reactor with the appropriate .
    -  else if (this->reactor_->register_handler (svc_handler, this->mask_) == -1)
    -    result = -1;
    -
    -  // If the implementation of the reactor uses event associations
    -  else if (this->reactor_->uses_event_associations ())
    -    {
    -      // If we don't have non-block on, it won't work with
    -      // WFMO_Reactor
    -      // This maybe too harsh
    -      // if (!ACE_BIT_ENABLED (this->flags_, ACE_NONBLOCK))
    -      // goto failure;
    -      if (svc_handler->open (arg) != -1)
    -        return 0;
    -      else
    -        result = -1;
    -    }
    -  else
    -    // Call up to our parent to do the SVC_HANDLER initialization.
    -    return this->inherited::activate_svc_handler (svc_handler, arg);
    -
    -  if (result == -1)
    -    svc_handler->close (0);
    -
    -  return result;
    -}
    -
    -template  int
    -ACE_Thread_Strategy::open (ACE_Thread_Manager *thr_mgr,
    -                                        long thr_flags,
    -                                        size_t n_threads,
    -                                        int flags)
    -{
    -  ACE_TRACE ("ACE_Thread_Strategy::open");
    -  this->thr_mgr_ = thr_mgr;
    -  this->n_threads_ = n_threads;
    -  this->thr_flags_ = thr_flags;
    -  this->flags_ = flags;
    -
    -  // Must have a thread manager!
    -  if (this->thr_mgr_ == 0)
    -    ACE_ERROR_RETURN ((LM_ERROR,
    -                       ASYS_TEXT ("error: must have a non-NULL thread manager\n")),
    -                      -1);
    -  else
    -    return 0;
    -}
    -
    -template  int
    -ACE_Thread_Strategy::activate_svc_handler (SVC_HANDLER *svc_handler,
    -                                                        void *arg)
    -{
    -  ACE_TRACE ("ACE_Thread_Strategy::activate_svc_handler");
    -  // Call up to our parent to do the SVC_HANDLER initialization.
    -  if (this->inherited::activate_svc_handler (svc_handler,
    -                                             arg) == -1)
    -    return -1;
    -  else
    -    // Turn the  into an active object (if it isn't
    -    // already one as a result of the first activation...)
    -    return svc_handler->activate (this->thr_flags_,
    -                                  this->n_threads_);
    -}
    -
    -template 
    -ACE_Accept_Strategy::ACE_Accept_Strategy
    -  (const ACE_PEER_ACCEPTOR_ADDR &local_addr,
    -   int restart,
    -   ACE_Reactor *reactor)
    -    : reactor_ (reactor)
    -{
    -  ACE_TRACE ("ACE_Accept_Strategy::ACE_Accept_Strategy");
    -
    -  if (this->open (local_addr, restart) == -1)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT ("%p\n"),
    -                ASYS_TEXT ("open")));
    -}
    -
    -template  int
    -ACE_Accept_Strategy::accept_svc_handler
    -(SVC_HANDLER *svc_handler)
    -{
    -  ACE_TRACE ("ACE_Accept_Strategy::accept_svc_handler");
    -
    -  // Try to find out if the implementation of the reactor that we are
    -  // using requires us to reset the event association for the newly
    -  // created handle. This is because the newly created handle will
    -  // inherit the properties of the listen handle, including its event
    -  // associations.
    -  int reset_new_handle = this->reactor_->uses_event_associations ();
    -
    -  if (this->acceptor_.accept (svc_handler->peer (), // stream
    -                              0, // remote address
    -                              0, // timeout
    -                              1, // restart
    -                              reset_new_handle  // reset new handler
    -                              ) == -1)
    -    {
    -      // Close down handler to avoid memory leaks.
    -      svc_handler->close (0);
    -      return -1;
    -    }
    -  else
    -    return 0;
    -}
    -
    -template  int
    -ACE_Connect_Strategy::connect_svc_handler
    -(SVC_HANDLER *&sh,
    - const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    - ACE_Time_Value *timeout,
    - const ACE_PEER_CONNECTOR_ADDR &local_addr,
    - int reuse_addr,
    - int flags,
    - int perms)
    -{
    -  ACE_TRACE ("ACE_Connect_Strategy::connect_svc_handler");
    -
    -  return this->connector_.connect (sh->peer (),
    -                                   remote_addr,
    -                                   timeout,
    -                                   local_addr,
    -                                   reuse_addr,
    -                                   flags,
    -                                   perms);
    -}
    -
    -template  int
    -ACE_Connect_Strategy::connect_svc_handler
    -(SVC_HANDLER *&sh,
    - SVC_HANDLER *&sh_copy,
    - const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    - ACE_Time_Value *timeout,
    - const ACE_PEER_CONNECTOR_ADDR &local_addr,
    - int reuse_addr,
    - int flags,
    - int perms)
    -{
    -  ACE_TRACE ("ACE_Connect_Strategy::connect_svc_handler");
    -
    -  int result =
    -    this->connector_.connect (sh->peer (),
    -                              remote_addr,
    -                              timeout,
    -                              local_addr,
    -                              reuse_addr,
    -                              flags,
    -                              perms);
    -  sh_copy = sh;
    -  return result;
    -}
    -
    -template  int
    -ACE_Process_Strategy::open (size_t n_processes,
    -                                         ACE_Event_Handler *acceptor,
    -                                         ACE_Reactor *reactor,
    -                                         int avoid_zombies)
    -{
    -  ACE_TRACE ("ACE_Process_Strategy::open");
    -  this->n_processes_ = n_processes;
    -  this->acceptor_ = acceptor;
    -  this->reactor_ = reactor;
    -  this->flags_ = avoid_zombies;
    -
    -  return 0;
    -}
    -
    -template  int
    -ACE_Process_Strategy::activate_svc_handler (SVC_HANDLER *svc_handler,
    -                                                         void *arg)
    -{
    -  ACE_TRACE ("ACE_Process_Strategy::activate_svc_handler");
    -
    -  // If  is non-0 then we won't create zombies.
    -  switch (ACE::fork ("child", this->flags_))
    -    {
    -    case -1:
    -      ACE_ERROR_RETURN ((LM_ERROR,
    -                         ASYS_TEXT ("%p\n"),
    -                         ASYS_TEXT ("fork")),
    -                        -1);
    -      /* NOTREACHED */
    -    case 0: // In child process.
    -
    -      // Close down the SOCK_Acceptor's handle since we don't need to
    -      // keep it open.
    -      if (this->acceptor_ != 0)
    -        // Ignore the return value here...
    -        (void) this->reactor_->remove_handler (this->acceptor_,
    -                                               ACE_Event_Handler::ACCEPT_MASK);
    -
    -      // Call up to our ancestor in the inheritance to do the
    -      // SVC_HANDLER initialization.
    -      return this->inherited::activate_svc_handler (svc_handler, arg);
    -      /* NOTREACHED */
    -    default: // In parent process.
    -      // We need to close down the  here because it's
    -      // running in the child.
    -      svc_handler->destroy ();
    -      return 0;
    -    }
    -}
    -
    -template
    -ACE_Cached_Connect_Strategy::ACE_Cached_Connect_Strategy
    -(ACE_Creation_Strategy *cre_s,
    - ACE_Concurrency_Strategy *con_s,
    - ACE_Recycling_Strategy *rec_s,
    - MUTEX *lock,
    - int delete_lock)
    -  : lock_ (lock),
    -    delete_lock_ (delete_lock),
    -    reverse_lock_ (0),
    -    creation_strategy_ (0),
    -    delete_creation_strategy_ (0),
    -    concurrency_strategy_ (0),
    -    delete_concurrency_strategy_ (0),
    -    recycling_strategy_ (0),
    -    delete_recycling_strategy_ (0)
    -{
    -  // Create a new lock if necessary.
    -  if (this->lock_ == 0)
    -    {
    -      ACE_NEW (this->lock_,
    -               MUTEX);
    -
    -      this->delete_lock_ = 1;
    -    }
    -
    -  ACE_NEW (this->reverse_lock_,
    -           REVERSE_MUTEX (*this->lock_));
    -
    -  if (this->open (cre_s,
    -                  con_s,
    -                  rec_s) == -1)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT ("%p\n"),
    -                ASYS_TEXT ("ACE_Cached_Connect_Strategy::ACE_Cached_Connect_Strategy")));
    -}
    -
    -template
    -ACE_Cached_Connect_Strategy::~ACE_Cached_Connect_Strategy (void)
    -{
    -  if (this->delete_lock_)
    -    delete this->lock_;
    -
    -  delete this->reverse_lock_;
    -
    -  if (this->delete_creation_strategy_)
    -    delete this->creation_strategy_;
    -  this->delete_creation_strategy_ = 0;
    -  this->creation_strategy_ = 0;
    -
    -  if (this->delete_concurrency_strategy_)
    -    delete this->concurrency_strategy_;
    -  this->delete_concurrency_strategy_ = 0;
    -  this->concurrency_strategy_ = 0;
    -
    -  if (this->delete_recycling_strategy_)
    -    delete this->recycling_strategy_;
    -  this->delete_recycling_strategy_ = 0;
    -  this->recycling_strategy_ = 0;
    -
    -  // Close down all cached service handlers.
    -  CONNECTION_MAP_ENTRY *entry;
    -  for (CONNECTION_MAP_ITERATOR iterator (connection_map_);
    -       iterator.next (entry);
    -       iterator.advance ())
    -    {
    -      entry->int_id_->recycler (0, 0);
    -      entry->int_id_->close ();
    -    }
    -}
    -
    -template int
    -ACE_Cached_Connect_Strategy::open
    -(ACE_Creation_Strategy *cre_s,
    - ACE_Concurrency_Strategy *con_s,
    - ACE_Recycling_Strategy *rec_s)
    -{
    -  // Initialize the creation strategy.
    -
    -  // First we decide if we need to clean up.
    -  if (this->creation_strategy_ != 0 &&
    -      this->delete_creation_strategy_ != 0 &&
    -      cre_s != 0)
    -    {
    -      delete this->creation_strategy_;
    -      this->creation_strategy_ = 0;
    -      this->delete_creation_strategy_ = 0;
    -    }
    -
    -  if (cre_s != 0)
    -    this->creation_strategy_ = cre_s;
    -  else if (this->creation_strategy_ == 0)
    -    {
    -      ACE_NEW_RETURN (this->creation_strategy_,
    -                      CREATION_STRATEGY, -1);
    -      this->delete_creation_strategy_ = 1;
    -    }
    -
    -  // Initialize the concurrency strategy.
    -
    -  if (this->concurrency_strategy_ != 0 &&
    -      this->delete_concurrency_strategy_ != 0 &&
    -      con_s != 0)
    -    {
    -      delete this->concurrency_strategy_;
    -      this->concurrency_strategy_ = 0;
    -      this->delete_concurrency_strategy_ = 0;
    -    }
    -
    -  if (con_s != 0)
    -    this->concurrency_strategy_ = con_s;
    -  else if (this->concurrency_strategy_ == 0)
    -    {
    -      ACE_NEW_RETURN (this->concurrency_strategy_,
    -                      CONCURRENCY_STRATEGY, -1);
    -      this->delete_concurrency_strategy_ = 1;
    -    }
    -
    -  // Initialize the recycling strategy.
    -
    -  if (this->recycling_strategy_ != 0 &&
    -      this->delete_recycling_strategy_ != 0 &&
    -      rec_s != 0)
    -    {
    -      delete this->recycling_strategy_;
    -      this->recycling_strategy_ = 0;
    -      this->delete_recycling_strategy_ = 0;
    -    }
    -
    -  if (rec_s != 0)
    -    this->recycling_strategy_ = rec_s;
    -  else if (this->recycling_strategy_ == 0)
    -    {
    -      ACE_NEW_RETURN (this->recycling_strategy_,
    -                      RECYCLING_STRATEGY, -1);
    -      this->delete_recycling_strategy_ = 1;
    -    }
    -
    -  return 0;
    -}
    -
    -template int
    -ACE_Cached_Connect_Strategy::check_hint_i
    -(SVC_HANDLER *&sh,
    - const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    - ACE_Time_Value *timeout,
    - const ACE_PEER_CONNECTOR_ADDR &local_addr,
    - int reuse_addr,
    - int flags,
    - int perms,
    - ACE_Hash_Map_Entry, SVC_HANDLER *> *&entry,
    - int &found)
    -{
    -  ACE_UNUSED_ARG (remote_addr);
    -  ACE_UNUSED_ARG (timeout);
    -  ACE_UNUSED_ARG (local_addr);
    -  ACE_UNUSED_ARG (reuse_addr);
    -  ACE_UNUSED_ARG (flags);
    -  ACE_UNUSED_ARG (perms);
    -
    -  found = 0;
    -
    -  // Get the recycling act for the svc_handler
    -  CONNECTION_MAP_ENTRY *possible_entry = (CONNECTION_MAP_ENTRY *) sh->recycling_act ();
    -
    -  // Check to see if the hint svc_handler has been closed down
    -  if (possible_entry->ext_id_.recycle_state () == ACE_RECYCLABLE_CLOSED)
    -    {
    -      // If close, decrement refcount
    -      if (possible_entry->ext_id_.decrement () == 0)
    -        {
    -          // If refcount goes to zero, close down the svc_handler
    -          possible_entry->int_id_->recycler (0, 0);
    -          possible_entry->int_id_->close ();
    -          this->purge_i (possible_entry);
    -        }
    -
    -      // Hint not successful
    -      found = 0;
    -
    -      // Reset hint
    -      sh = 0;
    -    }
    -
    -  // If hint is not closed, see if it is connected to the correct
    -  // address and is recyclable
    -  else if ((possible_entry->ext_id_.recycle_state () == ACE_RECYCLABLE_IDLE_AND_PURGABLE ||
    -            possible_entry->ext_id_.recycle_state () == ACE_RECYCLABLE_IDLE_BUT_NOT_PURGABLE) &&
    -           possible_entry->ext_id_.subject () == remote_addr)
    -    {
    -      // Hint successful
    -      found = 1;
    -
    -      // Tell the  that it should prepare itself for
    -      // being recycled.
    -      this->prepare_for_recycling (sh);
    -    }
    -  else
    -    {
    -      // This hint will not be used.
    -      possible_entry->ext_id_.decrement ();
    -
    -      // Hint not successful
    -      found = 0;
    -
    -      // If  is not connected to the correct address or is busy,
    -      // we will not use it.
    -      sh = 0;
    -    }
    -
    -  if (found)
    -    entry = possible_entry;
    -
    -  return 0;
    -}
    -
    -template int
    -ACE_Cached_Connect_Strategy::find_or_create_svc_handler_i
    -(SVC_HANDLER *&sh,
    - const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    - ACE_Time_Value *timeout,
    - const ACE_PEER_CONNECTOR_ADDR &local_addr,
    - int reuse_addr,
    - int flags,
    - int perms,
    - ACE_Hash_Map_Entry, SVC_HANDLER *> *&entry,
    - int &found)
    -{
    -  // Explicit type conversion
    -  REFCOUNTED_HASH_RECYCLABLE_ADDRESS search_addr (remote_addr);
    -
    -  // Try to find the address in the cache.  Only if we don't find it
    -  // do we create a new  and connect it with the server.
    -  if (this->find (search_addr, entry) == -1)
    -    {
    -      // Set the flag
    -      found = 0;
    -
    -      // Create a new svc_handler
    -      if (this->make_svc_handler (sh) == -1)
    -        return -1;
    -
    -      // Actively establish the connection.  This is a timed blocking
    -      // connect.
    -      if (this->new_connection (sh,
    -                                remote_addr,
    -                                timeout,
    -                                local_addr,
    -                                reuse_addr,
    -                                flags,
    -                                perms) == -1)
    -        {
    -          // If connect() failed because of timeouts, we have to
    -          // reject the connection entirely. This is necessary since
    -          // currently there is no way for the non-blocking connects
    -          // to complete and for the  to notify the cache
    -          // of the completion of connect().
    -          if (errno == EWOULDBLOCK)
    -            errno = ENOTSUP;
    -          return -1;
    -        }
    -      else
    -        {
    -          // Insert the new SVC_HANDLER instance into the cache.
    -          if (this->connection_map_.bind (search_addr,
    -                                          sh,
    -                                          entry) == -1)
    -            return -1;
    -
    -          // Set the recycler and the recycling act
    -          this->assign_recycler (sh, this, entry);
    -        }
    -    }
    -  else
    -    // We found a cached svc_handler.
    -    {
    -      // Set the flag
    -      found = 1;
    -
    -      // Get the cached 
    -      sh = entry->int_id_;
    -
    -      // Tell the  that it should prepare itself for
    -      // being recycled.
    -      this->prepare_for_recycling (sh);
    -    }
    -
    -  return 0;
    -}
    -
    -template int
    -ACE_Cached_Connect_Strategy::new_connection
    -(SVC_HANDLER *&sh,
    - const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    - ACE_Time_Value *timeout,
    - const ACE_PEER_CONNECTOR_ADDR &local_addr,
    - int reuse_addr,
    - int flags,
    - int perms)
    -{
    -  // Yow, Reverse Guard!  Let go of the lock for the duration of the
    -  // actual connect.  This will allow other threads to hack on the
    -  // connection cache while this thread creates the new connection.
    -  ACE_GUARD_RETURN (REVERSE_MUTEX, ace_mon, *this->reverse_lock_, -1);
    -
    -  return this->CONNECT_STRATEGY::connect_svc_handler (sh,
    -                                                      remote_addr,
    -                                                      timeout,
    -                                                      local_addr,
    -                                                      reuse_addr,
    -                                                      flags,
    -                                                      perms);
    -}
    -
    -template int
    -ACE_Cached_Connect_Strategy::connect_svc_handler
    -(SVC_HANDLER *&sh,
    - const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    - ACE_Time_Value *timeout,
    - const ACE_PEER_CONNECTOR_ADDR &local_addr,
    - int reuse_addr,
    - int flags,
    - int perms)
    -{
    -  int found = 0;
    -
    -  // This artificial scope is required since we need to let go of the
    -  // lock *before* registering the newly created handler with the
    -  // Reactor.
    -  {
    -    // Synchronization is required here as the setting of the
    -    // recyclable state must be done atomically with the finding and
    -    // binding of the service handler in the cache.
    -    ACE_GUARD_RETURN (MUTEX, ace_mon, *this->lock_, -1);
    -
    -    int result = this->connect_svc_handler_i (sh,
    -                                              remote_addr,
    -                                              timeout,
    -                                              local_addr,
    -                                              reuse_addr,
    -                                              flags,
    -                                              perms,
    -                                              found);
    -    if (result != 0)
    -      return result;
    -
    -  }
    -
    -  // If it is a new connection, activate it.
    -  //
    -  // Note: This activation is outside the scope of the lock of the
    -  // cached connector.  This is necessary to avoid subtle deadlock
    -  // conditions with this lock and the Reactor lock.
    -  //
    -  // @@ If an error occurs on activation, we should try to remove this
    -  // entry from the internal table.
    -
    -  if (!found)
    -    if (this->activate_svc_handler (sh))
    -      return -1;
    -
    -  return 0;
    -}
    -
    -template int
    -ACE_Cached_Connect_Strategy::connect_svc_handler
    -(SVC_HANDLER *&sh,
    - SVC_HANDLER *&sh_copy,
    - const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    - ACE_Time_Value *timeout,
    - const ACE_PEER_CONNECTOR_ADDR &local_addr,
    - int reuse_addr,
    - int flags,
    - int perms)
    -{
    -  int found = 0;
    -
    -  // This artificial scope is required since we need to let go of the
    -  // lock *before* registering the newly created handler with the
    -  // Reactor.
    -  {
    -    // Synchronization is required here as the setting of the
    -    // recyclable state must be done atomically with the finding and
    -    // binding of the service handler in the cache.
    -    ACE_GUARD_RETURN (MUTEX, ace_mon, *this->lock_, -1);
    -
    -    int result = this->connect_svc_handler_i (sh,
    -                                              remote_addr,
    -                                              timeout,
    -                                              local_addr,
    -                                              reuse_addr,
    -                                              flags,
    -                                              perms,
    -                                              found);
    -    sh_copy = sh;
    -
    -    if (result != 0)
    -      return result;
    -
    -  }
    -
    -  // If it is a new connection, activate it.
    -  //
    -  // Note: This activation is outside the scope of the lock of the
    -  // cached connector.  This is necessary to avoid subtle deadlock
    -  // conditions with this lock and the Reactor lock.
    -  //
    -  // @@ If an error occurs on activation, we should try to remove this
    -  // entry from the internal table.
    -
    -  if (!found)
    -    if (this->activate_svc_handler (sh))
    -      return -1;
    -
    -  return 0;
    -}
    -
    -template int
    -ACE_Cached_Connect_Strategy::connect_svc_handler_i
    -(SVC_HANDLER *&sh,
    - const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    - ACE_Time_Value *timeout,
    - const ACE_PEER_CONNECTOR_ADDR &local_addr,
    - int reuse_addr,
    - int flags,
    - int perms,
    - int& found)
    -{
    -  CONNECTION_MAP_ENTRY *entry = 0;
    -
    -  // Check if the user passed a hint svc_handler
    -  if (sh != 0)
    -    {
    -      int result = this->check_hint_i (sh,
    -                                       remote_addr,
    -                                       timeout,
    -                                       local_addr,
    -                                       reuse_addr,
    -                                       flags,
    -                                       perms,
    -                                       entry,
    -                                       found);
    -      if (result != 0)
    -        return result;
    -    }
    -
    -  // If not found
    -  if (!found)
    -    {
    -      int result = this->find_or_create_svc_handler_i (sh,
    -                                                       remote_addr,
    -                                                       timeout,
    -                                                       local_addr,
    -                                                       reuse_addr,
    -                                                       flags,
    -                                                       perms,
    -                                                       entry,
    -                                                       found);
    -      if (result != 0)
    -        return result;
    -    }
    -
    -  // For all successful cases: mark the  in the cache
    -  // as being .  Therefore recyclable is BUSY.
    -  entry->ext_id_.recycle_state (ACE_RECYCLABLE_BUSY);
    -
    -  // And increment the refcount
    -  entry->ext_id_.increment ();
    -
    -  return 0;
    -}
    -
    -template int
    -ACE_Cached_Connect_Strategy::cache (const void *recycling_act)
    -{
    -  // Synchronization is required here as the setting of the recyclable
    -  // state must be done atomically with respect to other threads that
    -  // are querying the cache.
    -  ACE_GUARD_RETURN (MUTEX, ace_mon, *this->lock_, -1);
    -
    -  return this->cache_i (recycling_act);
    -}
    -
    -template int
    -ACE_Cached_Connect_Strategy::cache_i (const void *recycling_act)
    -{
    -  // The wonders and perils of ACT
    -  CONNECTION_MAP_ENTRY *entry = (CONNECTION_MAP_ENTRY *) recycling_act;
    -
    -  // Mark the  in the cache as not being .
    -  // Therefore recyclable is IDLE.
    -  entry->ext_id_.recycle_state (ACE_RECYCLABLE_IDLE_AND_PURGABLE);
    -
    -  return 0;
    -}
    -
    -template int
    -ACE_Cached_Connect_Strategy::recycle_state (const void *recycling_act,
    -                                                                                      ACE_Recyclable_State new_state)
    -{
    -  // Synchronization is required here as the setting of the recyclable
    -  // state must be done atomically with respect to other threads that
    -  // are querying the cache.
    -  ACE_GUARD_RETURN (MUTEX, ace_mon, *this->lock_, -1);
    -
    -  return this->recycle_state_i (recycling_act,
    -                                new_state);
    -}
    -
    -template int
    -ACE_Cached_Connect_Strategy::recycle_state_i (const void *recycling_act,
    -                                                                                        ACE_Recyclable_State new_state)
    -{
    -  // The wonders and perils of ACT
    -  CONNECTION_MAP_ENTRY *entry = (CONNECTION_MAP_ENTRY *) recycling_act;
    -
    -  // Mark the  in the cache as not being .
    -  // Therefore recyclable is IDLE.
    -  entry->ext_id_.recycle_state (new_state);
    -
    -  return 0;
    -}
    -
    -template ACE_Recyclable_State
    -ACE_Cached_Connect_Strategy::recycle_state (const void *recycling_act) const
    -{
    -  // Const cast.
    -  SELF *fake_this = ACE_const_cast (SELF *, this);
    -
    -  // Synchronization is required here.
    -  ACE_GUARD_RETURN (MUTEX, ace_mon, *fake_this->lock_, ACE_RECYCLABLE_UNKNOWN);
    -
    -  return this->recycle_state_i (recycling_act);
    -}
    -
    -template ACE_Recyclable_State
    -ACE_Cached_Connect_Strategy::recycle_state_i (const void *recycling_act) const
    -{
    -  // The wonders and perils of ACT
    -  CONNECTION_MAP_ENTRY *entry = (CONNECTION_MAP_ENTRY *) recycling_act;
    -
    -  // Mark the  in the cache as not being .
    -  // Therefore recyclable is IDLE.
    -  return entry->ext_id_.recycle_state ();
    -}
    -
    -template int
    -ACE_Cached_Connect_Strategy::purge (const void *recycling_act)
    -{
    -  // Excluded other threads from changing cache while we take this
    -  // entry out.
    -  ACE_GUARD_RETURN (MUTEX, ace_mon, *this->lock_, -1);
    -
    -  return this->purge_i (recycling_act);
    -}
    -
    -template int
    -ACE_Cached_Connect_Strategy::purge_i (const void *recycling_act)
    -{
    -  // The wonders and perils of ACT
    -  CONNECTION_MAP_ENTRY *entry = (CONNECTION_MAP_ENTRY *) recycling_act;
    -
    -  return this->connection_map_.unbind (entry);
    -}
    -
    -template int
    -ACE_Cached_Connect_Strategy::mark_as_closed (const void *recycling_act)
    -{
    -  // Excluded other threads from changing cache while we take this
    -  // entry out.
    -  ACE_GUARD_RETURN (MUTEX, ace_mon, *this->lock_, -1);
    -
    -  return this->mark_as_closed_i (recycling_act);
    -}
    -
    -template int
    -ACE_Cached_Connect_Strategy::mark_as_closed_i (const void *recycling_act)
    -{
    -  // The wonders and perils of ACT
    -  CONNECTION_MAP_ENTRY *entry = (CONNECTION_MAP_ENTRY *) recycling_act;
    -
    -  // Mark the  in the cache as CLOSED.
    -  entry->ext_id_.recycle_state (ACE_RECYCLABLE_CLOSED);
    -
    -  return 0;
    -}
    -
    -template int
    -ACE_Cached_Connect_Strategy::cleanup_hint (const void *recycling_act)
    -{
    -  // Excluded other threads from changing cache while we take this
    -  // entry out.
    -  ACE_GUARD_RETURN (MUTEX, ace_mon, *this->lock_, -1);
    -
    -  return this->cleanup_hint_i (recycling_act);
    -}
    -
    -template int
    -ACE_Cached_Connect_Strategy::cleanup_hint_i (const void *recycling_act)
    -{
    -  // The wonders and perils of ACT
    -  CONNECTION_MAP_ENTRY *entry = (CONNECTION_MAP_ENTRY *) recycling_act;
    -
    -  // Decrement the refcount on the .
    -  int refcount = entry->ext_id_.decrement ();
    -
    -  // If the svc_handler state is closed and the refcount == 0, call
    -  // close() on svc_handler.
    -  if (entry->ext_id_.recycle_state () == ACE_RECYCLABLE_CLOSED &&
    -      refcount == 0)
    -    {
    -      entry->int_id_->recycler (0, 0);
    -      entry->int_id_->close ();
    -      this->purge_i (entry);
    -    }
    -
    -  return 0;
    -}
    -
    -template ACE_Creation_Strategy *
    -ACE_Cached_Connect_Strategy::creation_strategy (void) const
    -{
    -  return this->creation_strategy_;
    -}
    -
    -template ACE_Recycling_Strategy *
    -ACE_Cached_Connect_Strategy::recycling_strategy (void) const
    -{
    -  return this->recycling_strategy_;
    -}
    -
    -template ACE_Concurrency_Strategy *
    -ACE_Cached_Connect_Strategy::concurrency_strategy (void) const
    -{
    -  return this->concurrency_strategy_;
    -}
    -
    -template int
    -ACE_Cached_Connect_Strategy::find (ACE_Refcounted_Hash_Recyclable &search_addr,
    -                                                                             ACE_Hash_Map_Entry, SVC_HANDLER *> *&entry)
    -{
    -  typedef ACE_Hash_Map_Bucket_Iterator,
    -                                       ACE_Equal_To,
    -                                       ACE_Null_Mutex>
    -    CONNECTION_MAP_BUCKET_ITERATOR;
    -
    -  CONNECTION_MAP_BUCKET_ITERATOR iterator (this->connection_map_,
    -                                           search_addr);
    -
    -  CONNECTION_MAP_BUCKET_ITERATOR end (this->connection_map_,
    -                                      search_addr,
    -                                      1);
    -
    -  for (;
    -       iterator != end;
    -       ++iterator)
    -    {
    -      REFCOUNTED_HASH_RECYCLABLE_ADDRESS &addr = (*iterator).ext_id_;
    -
    -      if (addr.recycle_state () != ACE_RECYCLABLE_IDLE_AND_PURGABLE &&
    -          addr.recycle_state () != ACE_RECYCLABLE_IDLE_BUT_NOT_PURGABLE)
    -        continue;
    -
    -      if (addr.subject () != search_addr.subject ())
    -        continue;
    -
    -      entry = &(*iterator);
    -      return 0;
    -    }
    -
    -  return -1;
    -}
    -
    -template  void
    -ACE_DLL_Strategy::dump (void) const
    -{
    -  ACE_TRACE ("ACE_DLL_Strategy::dump");
    -}
    -
    -template  void
    -ACE_Concurrency_Strategy::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Concurrency_Strategy::dump");
    -}
    -
    -template  void
    -ACE_Reactive_Strategy::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Reactive_Strategy::dump");
    -}
    -
    -template  void
    -ACE_Thread_Strategy::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Thread_Strategy::dump");
    -}
    -
    -template  void
    -ACE_Accept_Strategy::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Accept_Strategy::dump");
    -}
    -
    -template  void
    -ACE_Connect_Strategy::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Connect_Strategy::dump");
    -}
    -
    -template  void
    -ACE_Process_Strategy::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Process_Strategy::dump");
    -}
    -
    -template  void
    -ACE_Scheduling_Strategy::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Scheduling_Strategy::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -template  void
    -ACE_Schedule_All_Reactive_Strategy::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Schedule_All_Reactive_Strategy::dump");
    -
    -  ACE_Scheduling_Strategy::dump ();
    -}
    -
    -template  void
    -ACE_Schedule_All_Threaded_Strategy::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Schedule_All_Threaded_Strategy::dump");
    -
    -  ACE_Scheduling_Strategy::dump ();
    -}
    -
    -template  ASYS_INLINE void
    -ACE_Singleton_Strategy::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Singleton_Strategy::dump");
    -}
    -
    -template  void
    -ACE_Creation_Strategy::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Creation_Strategy::dump");
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Creation_Strategy)
    -ACE_ALLOC_HOOK_DEFINE(ACE_Singleton_Strategy)
    -ACE_ALLOC_HOOK_DEFINE(ACE_DLL_Strategy)
    -ACE_ALLOC_HOOK_DEFINE(ACE_Concurrency_Strategy)
    -ACE_ALLOC_HOOK_DEFINE(ACE_Thread_Strategy)
    -ACE_ALLOC_HOOK_DEFINE(ACE_Connect_Strategy)
    -ACE_ALLOC_HOOK_DEFINE(ACE_Process_Strategy)
    -ACE_ALLOC_HOOK_DEFINE(ACE_Accept_Strategy)
    -ACE_ALLOC_HOOK_DEFINE(ACE_Thread_Strategy)
    -
    -#endif /* ACE_STRATEGIES_T_C */
    diff --git a/ace/Strategies_T.h b/ace/Strategies_T.h
    deleted file mode 100644
    index f1587419ea2..00000000000
    --- a/ace/Strategies_T.h
    +++ /dev/null
    @@ -1,910 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//   ACE_Strategies_T.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_STRATEGIES_T_H
    -#define ACE_STRATEGIES_T_H
    -
    -#include "ace/Strategies.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Service_Config.h"
    -#include "ace/Reactor.h"
    -#include "ace/Synch_Options.h"
    -#include "ace/Thread_Manager.h"
    -#include "ace/Hash_Map_Manager.h"
    -
    -// Needed for broken linkers that can't grok long symbols.
    -#define ACE_Refcounted_Hash_Recyclable ARHR
    -
    -template
    -class ACE_Recycling_Strategy
    -{
    -  // = TITLE
    -  //     Defines the interface (and default implementation) for
    -  //     specifying a recycling strategy for a SVC_HANDLER.
    -  //
    -  // = DESCRIPTION
    -  //      Acts as a consular to the Svc_Handler, preparing it for the
    -  //      tough times ahead when the Svc_Handler will be recycled.
    -public:
    -  virtual ~ACE_Recycling_Strategy (void);
    -  // Virtual Destructor
    -
    -  virtual int assign_recycler (SVC_HANDLER *svc_handler,
    -                               ACE_Connection_Recycling_Strategy *recycler,
    -                               const void *recycling_act);
    -  // Tell the Svc_Handler something about the recycler, so that it can
    -  // reach the recycler when necessary.
    -
    -  virtual int prepare_for_recycling (SVC_HANDLER *svc_handler);
    -  // This allows us to prepare the svc_handler for recycling.
    -};
    -
    -template 
    -class ACE_Creation_Strategy
    -{
    -  // = TITLE
    -  //     Defines the interface for specifying a creation strategy for
    -  //     a SVC_HANDLER.
    -  //
    -  // = DESCRIPTION
    -  //     The default behavior is to make a new SVC_HANDLER.  However,
    -  //     subclasses can override this strategy to perform SVC_HANDLER
    -  //     creation in any way that they like (such as creating subclass
    -  //     instances of SVC_HANDLER, using a singleton, dynamically
    -  //     linking the handler, etc.).
    -public:
    -  // = Initialization and termination methods.
    -
    -  ACE_Creation_Strategy (ACE_Thread_Manager * = 0);
    -  // Default constructor.
    -
    -  int open (ACE_Thread_Manager * = 0);
    -  // A  is useful when creating active objects.
    -
    -  virtual ~ACE_Creation_Strategy (void);
    -
    -  // = Factory method.
    -  virtual int make_svc_handler (SVC_HANDLER *&sh);
    -  // Create a SVC_HANDLER with the appropriate creation strategy.  The
    -  // default behavior of this method is to make a new  if
    -  //  == 0 (passing in the ), else  is
    -  // unchanged.  Returns -1 on failure, else 0.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  ACE_Thread_Manager *thr_mgr_;
    -  // Pointer to a thread manager.
    -};
    -
    -template 
    -class ACE_Singleton_Strategy : public ACE_Creation_Strategy
    -{
    -  // = TITLE
    -  //     Defines the interface for specifying a creation strategy for
    -  //     a  that always returns the same  (i.e.,
    -  //     it's a Singleton).
    -  //
    -  // = DESCRIPTION
    -  //     Note that this class takes over the ownership of the
    -  //     SVC_HANDLER passed into it as a parameter and it becomes
    -  //     responsible for deleting this object.
    -public:
    -  // = Initialization and termination methods.
    -  ACE_Singleton_Strategy (SVC_HANDLER * = 0,
    -                          ACE_Thread_Manager * = 0);
    -  int open (SVC_HANDLER *,
    -            ACE_Thread_Manager * = 0);
    -  virtual ~ACE_Singleton_Strategy (void);
    -
    -  // = Factory method.
    -  virtual int make_svc_handler (SVC_HANDLER *&);
    -  // Create a Singleton SVC_HANDLER by always returning the same
    -  // SVC_HANDLER.  Returns -1 on failure, else 0.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  SVC_HANDLER *svc_handler_;
    -  // Pointer to the Singleton svc_handler.
    -
    -  int delete_svc_handler_;
    -  // Keep track of whether we need to delete the .
    -};
    -
    -template 
    -class ACE_DLL_Strategy : public ACE_Creation_Strategy
    -{
    -  // = TITLE
    -  //     Defines the interface for specifying a creation strategy for
    -  //     a SVC_HANDLER based on dynamic linking of the SVC_HANDLER.
    -public:
    -  // = Intialization and termination methods.
    -
    -  ACE_DLL_Strategy (void);
    -  // "Do-nothing" constructor.
    -
    -  ACE_DLL_Strategy (const char dll_name[],
    -                    const char factory_function[],
    -                    const char svc_name[],
    -                    ACE_Service_Repository *,
    -                    ACE_Thread_Manager * = 0);
    -  // Initialize the DLL strategy based upon the service's DLL
    -  // information contained in the  string.
    -
    -  int open (const char dll_name[],
    -            const char factory_function[],
    -            const char svc_name[],
    -            ACE_Service_Repository *,
    -            ACE_Thread_Manager * = 0);
    -  // Initialize the DLL strategy based upon the service's DLL
    -  // information contained in the  string.
    -
    -  // = Factory method.
    -  virtual int make_svc_handler (SVC_HANDLER *&);
    -  // Create a SVC_HANDLER by dynamically linking it from a DLL.
    -  // Returns -1 on failure, else 0.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  typedef ACE_Creation_Strategy inherited;
    -
    -  char dll_name_[MAXPATHLEN + 1];
    -  // Name of the DLL to dynamically link.
    -
    -  char factory_function_[MAXPATHLEN + 1];
    -  // Name of the factory function in the shared library to use to
    -  // obtain a pointer to the new SVC_HANDLER.
    -
    -  char svc_name_[MAXNAMELEN + 1];
    -  // Name of the service.
    -
    -  ACE_Service_Repository *svc_rep_;
    -  // Pointer to the .
    -};
    -
    -template 
    -class ACE_Concurrency_Strategy
    -{
    -  // = TITLE
    -  //     Defines the interface for specifying a concurrency strategy
    -  //     for a SVC_HANDLER.
    -  //
    -  // = DESCRIPTION
    -  //     Default behavior is to activate the SVC_HANDLER by calling
    -  //     its  method (which allows the SVC_HANDLER to define its
    -  //     own concurrency strategy).  However, subclasses can override
    -  //     this default strategy to do more sophisticated concurrency
    -  //     activations (such as creating the SVC_HANDLER as an active
    -  //     object via multi-threading or multi-processing).
    -public:
    -  ACE_Concurrency_Strategy (int flags = 0);
    -  // Constructor
    -
    -  // = Factory method.
    -  virtual int activate_svc_handler (SVC_HANDLER *svc_handler,
    -                                    void *arg = 0);
    -  // Activate the  with an appropriate concurrency
    -  // strategy.  The default behavior of this method is to activate the
    -  // SVC_HANDLER by calling its  method (which allows the
    -  // SVC_HANDLER to define its own concurrency strategy).
    -
    -  virtual ~ACE_Concurrency_Strategy (void);
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -
    -  int flags_;
    -  // Flags that are parsed to set options for the connected
    -  // .
    -};
    -
    -template 
    -class ACE_Reactive_Strategy : public ACE_Concurrency_Strategy 
    -{
    -  // = TITLE
    -  //     Defines the interface for specifying a Reactive concurrency
    -  //     strategy for a SVC_HANDLER.
    -  //
    -  // = DESCRIPTION
    -  //     This class provides a strategy that registers the
    -  //      with a .
    -public:
    -  // = Intialization and termination methods.
    -  ACE_Reactive_Strategy (int flags = 0);
    -  // "Do-nothing constructor"
    -
    -  ACE_Reactive_Strategy (ACE_Reactor *reactor,
    -                         ACE_Reactor_Mask = ACE_Event_Handler::READ_MASK,
    -                         int flags = 0);
    -  // Initialize the strategy.
    -
    -  virtual int open (ACE_Reactor *reactor,
    -                    ACE_Reactor_Mask = ACE_Event_Handler::READ_MASK,
    -                    int flags = 0);
    -  // Initialize the strategy.
    -
    -  virtual ~ACE_Reactive_Strategy (void);
    -  // Destructor.
    -
    -  // = Factory method.
    -  virtual int activate_svc_handler (SVC_HANDLER *svc_handler,
    -                                    void *arg = 0);
    -  // Activate the  by registering it with the 
    -  // and then calling it's  hook.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  typedef ACE_Concurrency_Strategy inherited;
    -
    -  ACE_Reactor *reactor_;
    -  // Pointer to the Reactor we'll use to register the .
    -
    -  ACE_Reactor_Mask mask_;
    -  // The mask that we pass to the  when we register the
    -  // .
    -};
    -
    -template 
    -class ACE_Thread_Strategy : public ACE_Concurrency_Strategy
    -{
    -  // = TITLE
    -  //     Defines the interface for specifying a concurrency strategy
    -  //     for a  based on multithreading.
    -  //
    -  // = DESCRIPTION
    -  //     This class provides a strategy that manages the creation of
    -  //     threads to handle requests from clients concurrently.  It
    -  //     behaves as a "thread factory", spawning threads "on-demand"
    -  //     to run the service specified by a user-supplied
    -  //     .
    -public:
    -  // = Intialization and termination methods.
    -  ACE_Thread_Strategy (int flags = 0);
    -  // "Do-nothing constructor"
    -
    -  ACE_Thread_Strategy (ACE_Thread_Manager *tm,
    -                       long thr_flags,
    -                       size_t n_threads = 1,
    -                       int flags = 0);
    -  // Initialize the strategy.
    -
    -  virtual int open (ACE_Thread_Manager *tm,
    -                    long thr_flags,
    -                    size_t n_threads = 1,
    -                    int flags = 0);
    -  // Initialize the strategy.
    -
    -  virtual ~ACE_Thread_Strategy (void);
    -
    -  // = Factory method.
    -  virtual int activate_svc_handler (SVC_HANDLER *svc_handler,
    -                                    void *arg = 0);
    -  // Activate the  with an appropriate concurrency
    -  // strategy.  This method activates the SVC_HANDLER by first calling
    -  // its  method and then calling its  method to turn
    -  // it into an active object.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  typedef ACE_Concurrency_Strategy inherited;
    -
    -  ACE_Thread_Manager *thr_mgr_;
    -  // Thread manager for this class (must be provided).
    -
    -  long thr_flags_;
    -  // Flags to pass into the  method.
    -
    -  size_t n_threads_;
    -  // Number of threads to spawn.
    -};
    -
    -template 
    -class ACE_Process_Strategy : public ACE_Concurrency_Strategy
    -{
    -  // = TITLE
    -  //     Defines the interface for specifying a concurrency strategy
    -  //     for a  based on multiprocessing.
    -  //
    -  // = DESCRIPTION
    -  //     This class provides a strategy that manages the creation of
    -  //     processes to handle requests from clients concurrently.  It
    -  //     behaves as a "process factory", using  to fork
    -  //     threads "on-demand" to run the service specified by a
    -  //     user-supplied  in a separate process.
    -public:
    -  // = Intialization and termination methods.
    -
    -  ACE_Process_Strategy (size_t n_processes = 1,
    -                        ACE_Event_Handler *acceptor = 0,
    -                        ACE_Reactor * = 0,
    -                        int avoid_zombies = 0);
    -  // Initialize the strategy.  If  is non-0 then set a
    -  // flag to  to avoid zombies.
    -
    -  virtual int open (size_t n_processes = 1,
    -                    ACE_Event_Handler *acceptor = 0,
    -                    ACE_Reactor * = 0,
    -                    int avoid_zombies = 0);
    -  // Initialize the strategy.  If  is non-0 then set a
    -  // flag to  to avoid zombies.
    -
    -  virtual ~ACE_Process_Strategy (void);
    -
    -  // = Factory method.
    -  virtual int activate_svc_handler (SVC_HANDLER *svc_handler,
    -                                    void *arg = 0);
    -  // Activate the  with an appropriate concurrency
    -  // strategy.  This method activates the SVC_HANDLER by first forking
    -  // and then calling the  method of the SVC_HANDLER in the
    -  // child.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  typedef ACE_Concurrency_Strategy inherited;
    -
    -  size_t n_processes_;
    -  // Number of processes to spawn.
    -
    -  ACE_Event_Handler *acceptor_;
    -  // This is the  in the parent is listening on.  We need to
    -  // make sure that we remove it from the Reactor and close it down in
    -  // the child.
    -
    -  ACE_Reactor *reactor_;
    -  // This is the  the child is using in conjunction with the
    -  // .  We need to remove the  from this 
    -  // in the child.
    -};
    -
    -template 
    -class ACE_Accept_Strategy
    -{
    -  // = TITLE
    -  //     Defines the interface for specifying a passive connection
    -  //     acceptance strategy for a SVC_HANDLER.
    -  //
    -  // = DESCRIPTION
    -  //     This class provides a strategy that manages passive
    -  //     connection acceptance of a client.
    -public:
    -  // = Initialization and termination methods.
    -  ACE_Accept_Strategy (ACE_Reactor *reactor = ACE_Reactor::instance ());
    -  // Default constructor.
    -
    -  ACE_Accept_Strategy (const ACE_PEER_ACCEPTOR_ADDR &local_addr,
    -                       int restart = 0,
    -                       ACE_Reactor *reactor = ACE_Reactor::instance ());
    -  // Initialize the  with .
    -
    -  virtual int open (const ACE_PEER_ACCEPTOR_ADDR &local_addr,
    -                    int restart = 0);
    -  // Initialize the  with .
    -
    -  virtual ACE_HANDLE get_handle (void) const;
    -  // Return the underlying ACE_HANDLE of the .
    -
    -  virtual ACE_PEER_ACCEPTOR &acceptor (void) const;
    -  // Return a reference to the .
    -
    -  virtual ~ACE_Accept_Strategy (void);
    -
    -  // = Factory method.
    -  virtual int accept_svc_handler (SVC_HANDLER *);
    -  // The default behavior delegates to the  method of the
    -  // PEER_ACCEPTOR.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  ACE_PEER_ACCEPTOR acceptor_;
    -  // Factory that establishes connections passively.
    -
    -  ACE_Reactor *reactor_;
    -  // Pointer to the reactor used by the Acceptor.
    -};
    -
    -template 
    -class ACE_Connect_Strategy
    -{
    -  // = TITLE
    -  //     Defines the interface for specifying an active
    -  //     connection establishment strategy for a SVC_HANDLER.
    -  //
    -  // = DESCRIPTION
    -  //     This class provides a strategy that manages active
    -  //     connection establishment to a server.
    -public:
    -  // = Initialization and termination methods.
    -  ACE_Connect_Strategy (void);
    -  // Default constructor.
    -
    -  virtual ACE_PEER_CONNECTOR &connector (void) const;
    -  // Return a reference to the .
    -
    -  virtual ~ACE_Connect_Strategy (void);
    -
    -  // = Factory method.
    -  virtual int connect_svc_handler (SVC_HANDLER *&sh,
    -                                   const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    -                                   ACE_Time_Value *timeout,
    -                                   const ACE_PEER_CONNECTOR_ADDR &local_addr,
    -                                   int reuse_addr,
    -                                   int flags,
    -                                   int perms);
    -  // The default behavior delegates to the  method of the
    -  // .
    -
    -  virtual int connect_svc_handler (SVC_HANDLER *&sh,
    -                                   SVC_HANDLER *&sh_copy,
    -                                   const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    -                                   ACE_Time_Value *timeout,
    -                                   const ACE_PEER_CONNECTOR_ADDR &local_addr,
    -                                   int reuse_addr,
    -                                   int flags,
    -                                   int perms);
    -  // The default behavior delegates to the  method of the
    -  // .
    -  // Please check the documentation in Connector.h for more details.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  ACE_PEER_CONNECTOR connector_;
    -  // Factory that establishes connections actively.
    -};
    -
    -template 
    -class ACE_Scheduling_Strategy
    -{
    -  // = TITLE
    -  //     Defines the interface for specifying how to suspend and
    -  //     resume a service .
    -  //
    -  // = DESCRIPTION
    -  //     This class provides a strategy that allows arbitrarily
    -  //     sophisticated service suspension and resumption.  The default
    -  //     behavior is to do nothing...
    -public:
    -  // = Initialization and termination methods.
    -
    -  ACE_Scheduling_Strategy (SVC_HANDLER * = 0);
    -  // Constructor
    -
    -  virtual ~ACE_Scheduling_Strategy (void);
    -  // Destructor
    -
    -  // = Scheduling methods
    -
    -  virtual int suspend (void);
    -  // Suspend hook.
    -
    -  virtual int resume (void);
    -  // Resume hook.
    -
    -  virtual void dump (void) const;
    -  // Dump the state of the object.
    -};
    -
    -template 
    -class ACE_Schedule_All_Reactive_Strategy : public ACE_Scheduling_Strategy
    -{
    -  // = TITLE
    -  //     Defines the interface for specifying how to suspend and
    -  //     resume a single-threaded reactive service .
    -  //
    -  // = DESCRIPTION
    -  //     This class provides a strategy that suspends and resumes all
    -  //     the Event_Handlers in a Reactor in one fell swoop.
    -public:
    -  // = Initialization and termination methods.
    -  ACE_Schedule_All_Reactive_Strategy (SVC_HANDLER * = 0);
    -  // Constructor
    -
    -  // = Scheduling methods
    -
    -  virtual int suspend (void);
    -  // Suspend hook.
    -
    -  virtual int resume (void);
    -  // Resume hook.
    -
    -  virtual void dump (void) const;
    -  // Dump the state of the object.
    -
    -protected:
    -
    -  ACE_Reactor *reactor_;
    -  // Thread Manager
    -};
    -
    -template 
    -class ACE_Schedule_All_Threaded_Strategy : public ACE_Scheduling_Strategy
    -{
    -  // = TITLE
    -  //     Defines the interface for specifying how to suspend and
    -  //     resume a multithreaded service .
    -  //
    -  // = DESCRIPTION
    -  //     This class provides a strategy that suspends and resumes all
    -  //     the Event_Handlers controlled by a Thread_Manager in one fell swoop.
    -public:
    -  // = Initialization and termination methods.
    -  ACE_Schedule_All_Threaded_Strategy (SVC_HANDLER * = 0);
    -  // Constructor
    -
    -  // = Scheduling methods
    -
    -  virtual int suspend (void);
    -  // Suspend hook.
    -
    -  virtual int resume (void);
    -  // Resume hook.
    -
    -  virtual void dump (void) const;
    -  // Dump the state of the object.
    -
    -protected:
    -
    -  ACE_Thread_Manager *thr_mgr_;
    -  // Thread Manager
    -};
    -
    -template 
    -class ACE_NOOP_Creation_Strategy : public ACE_Creation_Strategy
    -{
    -  // = TITLE
    -  //     Implements a no-op creation strategy in order to defer
    -  //     decisions regarding creation to some later point in time, such
    -  //     as in connect or accept strategy.
    -  //
    -  // = DESCRIPTION
    -  //     An example of the use of this is in the
    -  //     , which only returns a single
    -  //     connection for a given endpoint.
    -public:
    -  virtual int make_svc_handler (SVC_HANDLER *&);
    -  // This is a no-op.
    -};
    -
    -template 
    -class ACE_NOOP_Concurrency_Strategy : public ACE_Concurrency_Strategy
    -{
    -  // = TITLE
    -  //     Implements a no-op activation strategy in order to avoid
    -  //     calling open on a svc_handler multiple times.
    -  //
    -  // = DESCRIPTION
    -  //     An example of the use of this is in the
    -  //     , which reuses svc_handlers.
    -  //     Therefore we don't want to call open on the recycled
    -  //     svc_handler more than once.
    -public:
    -  // = Factory method.
    -  virtual int activate_svc_handler (SVC_HANDLER *svc_handler,
    -                                    void *arg = 0);
    -  // This is a no-op.
    -};
    -
    -template 
    -class ACE_Refcounted_Hash_Recyclable :  public ACE_Refcountable,
    -                                        public ACE_Hashable,
    -                                        public ACE_Recyclable
    -{
    -public:
    -  ACE_Refcounted_Hash_Recyclable (void);
    -  // Default constructor.
    -
    -  ACE_Refcounted_Hash_Recyclable (const T &t,
    -                                  int refcount = 0,
    -                                  ACE_Recyclable_State state = ACE_RECYCLABLE_UNKNOWN);
    -  // Constructor.
    -
    -  virtual ~ACE_Refcounted_Hash_Recyclable (void);
    -  // Destructor
    -
    -  int operator== (const ACE_Refcounted_Hash_Recyclable &rhs) const;
    -  int operator!= (const ACE_Refcounted_Hash_Recyclable &rhs) const;
    -  // Compares two instances.
    -
    -  T &subject ();
    -
    -protected:
    -  u_long hash_i (void) const;
    -  // Computes and returns hash value.
    -
    -  T t_;
    -};
    -
    -template 
    -class ACE_Cached_Connect_Strategy : public ACE_Connection_Recycling_Strategy, public ACE_Connect_Strategy
    -{
    -  // = TITLE
    -  //     A connection strategy which caches connections to peers
    -  //     (represented by  instances), thereby allowing
    -  //     subsequent re-use of unused, but available, connections.
    -  //
    -  // = DESCRIPTION
    -  //      is intended to be used as a
    -  //     plug-in connection strategy for .
    -  //     It's added value is re-use of established connections.
    -public:
    -
    -  typedef ACE_Cached_Connect_Strategy SELF;
    -
    -  ACE_Cached_Connect_Strategy (ACE_Creation_Strategy *cre_s = 0,
    -                               ACE_Concurrency_Strategy *con_s = 0,
    -                               ACE_Recycling_Strategy *rec_s = 0,
    -                               MUTEX *mutex = 0,
    -                               int delete_mutex = 0);
    -  // Constructor
    -
    -  virtual ~ACE_Cached_Connect_Strategy (void);
    -  // Destructor
    -
    -  virtual int open (ACE_Creation_Strategy *cre_s,
    -                    ACE_Concurrency_Strategy *con_s,
    -                    ACE_Recycling_Strategy *rec_s);
    -  // This methods allow you to change the strategies used by the
    -  // cached connector.
    -
    -  virtual int make_svc_handler (SVC_HANDLER *&sh);
    -  // Template method for making a new 
    -
    -  virtual int activate_svc_handler (SVC_HANDLER *svc_handler);
    -  // Template method for activating a new 
    -
    -  virtual int assign_recycler (SVC_HANDLER *svc_handler,
    -                               ACE_Connection_Recycling_Strategy *recycler,
    -                               const void *recycling_act);
    -  // Template method for setting the recycler information of the
    -  // svc_handler.
    -
    -  virtual int prepare_for_recycling (SVC_HANDLER *svc_handler);
    -  // Template method for preparing the svc_handler for recycling.
    -
    -  virtual int connect_svc_handler (SVC_HANDLER *&sh,
    -                                   const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    -                                   ACE_Time_Value *timeout,
    -                                   const ACE_PEER_CONNECTOR_ADDR &local_addr,
    -                                   int reuse_addr,
    -                                   int flags,
    -                                   int perms);
    -  virtual int connect_svc_handler (SVC_HANDLER *&sh,
    -                                   SVC_HANDLER *&sh_copy,
    -                                   const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    -                                   ACE_Time_Value *timeout,
    -                                   const ACE_PEER_CONNECTOR_ADDR &local_addr,
    -                                   int reuse_addr,
    -                                   int flags,
    -                                   int perms);
    -  // Checks to see if there is already a  in the cache
    -  // connected to the .  If so, we return this pointer.
    -  // Otherwise we establish the connection, put it into the cache, and
    -  // return the  pointer.  <[NOTE]>: the <{reuse_addr}>
    -  // argument does NOT control re-use of addresses in the cache.
    -  // Rather, if the underlying protocol requires a "dead time" prior
    -  // to re-use of its addresses (TCP is a classic example of this),
    -  // <{and}> the protocol provides a means by which to defeat the dead
    -  // time, setting this argument to non-zero will defeat the dead-time
    -  // requirement.  <{Dev. Note: We might want to consider enhancing
    -  // the interface at some point so that this also controls re-use of
    -  // the cache.}>
    -
    -  virtual int purge (const void *recycling_act);
    -  // Remove from cache.
    -
    -  virtual int cache (const void *recycling_act);
    -  // Add to cache.
    -
    -  virtual int recycle_state (const void *recycling_act,
    -                             ACE_Recyclable_State new_state);
    -  virtual ACE_Recyclable_State recycle_state (const void *recycling_act) const;
    -  // Get/Set .
    -
    -  virtual int mark_as_closed (const void *recycling_act);
    -  // Mark as closed.
    -
    -  virtual int mark_as_closed_i (const void *recycling_act);
    -  // Mark as closed (non-locking version). This method needs to be public
    -  // as it is used in the cleanup of handlers where teh locked version causes 
    -  // a deadlock.
    -
    -  virtual int cleanup_hint (const void *recycling_act);
    -  // Cleanup hint.
    -
    -  // = Define some useful typedefs.
    -  typedef ACE_Creation_Strategy
    -          CREATION_STRATEGY;
    -  typedef ACE_Concurrency_Strategy
    -          CONCURRENCY_STRATEGY;
    -  typedef ACE_Recycling_Strategy
    -          RECYCLING_STRATEGY;
    -
    -  // = Super class
    -  typedef ACE_Connect_Strategy
    -          CONNECT_STRATEGY;
    -
    -  // = Typedefs for managing the map
    -  typedef ACE_Refcounted_Hash_Recyclable
    -          REFCOUNTED_HASH_RECYCLABLE_ADDRESS;
    -  typedef ACE_Hash_Map_Manager
    -          CONNECTION_MAP;
    -  typedef ACE_Hash_Map_Iterator
    -          CONNECTION_MAP_ITERATOR;
    -  typedef ACE_Hash_Map_Entry
    -          CONNECTION_MAP_ENTRY;
    -
    -  typedef ACE_Reverse_Lock REVERSE_MUTEX;
    -
    -  // = Strategy accessors
    -  virtual ACE_Creation_Strategy *creation_strategy (void) const;
    -  virtual ACE_Recycling_Strategy *recycling_strategy (void) const;
    -  virtual ACE_Concurrency_Strategy *concurrency_strategy (void) const;
    -
    -protected:
    -
    -  virtual int new_connection (SVC_HANDLER *&sh,
    -                              const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    -                              ACE_Time_Value *timeout,
    -                              const ACE_PEER_CONNECTOR_ADDR &local_addr,
    -                              int reuse_addr,
    -                              int flags,
    -                              int perms);
    -  // Creates a new connection.
    -
    -  int find (ACE_Refcounted_Hash_Recyclable &search_addr,
    -            ACE_Hash_Map_Entry, SVC_HANDLER *> *&entry);
    -  // Find an idle handle.
    -
    -  virtual int purge_i (const void *recycling_act);
    -  // Remove from cache (non-locking version).
    -
    -  virtual int cache_i (const void *recycling_act);
    -  // Add to cache (non-locking version).
    -
    -  virtual int recycle_state_i (const void *recycling_act,
    -                               ACE_Recyclable_State new_state);
    -  virtual ACE_Recyclable_State recycle_state_i (const void *recycling_act) const;
    -  // Get/Set  (non-locking version).
    -
    -  virtual int cleanup_hint_i (const void *recycling_act);
    -  // Cleanup hint.
    -
    -  // = Helpers
    -  int check_hint_i (SVC_HANDLER *&sh,
    -                    const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    -                    ACE_Time_Value *timeout,
    -                    const ACE_PEER_CONNECTOR_ADDR &local_addr,
    -                    int reuse_addr,
    -                    int flags,
    -                    int perms,
    -                    ACE_Hash_Map_Entry, SVC_HANDLER *> *&entry,
    -                    int &found);
    -
    -  int find_or_create_svc_handler_i (SVC_HANDLER *&sh,
    -                                    const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    -                                    ACE_Time_Value *timeout,
    -                                    const ACE_PEER_CONNECTOR_ADDR &local_addr,
    -                                    int reuse_addr,
    -                                    int flags,
    -                                    int perms,
    -                                    ACE_Hash_Map_Entry, SVC_HANDLER *> *&entry,
    -                                    int &found);
    -
    -  virtual int connect_svc_handler_i (SVC_HANDLER *&sh,
    -                                     const ACE_PEER_CONNECTOR_ADDR &remote_addr,
    -                                     ACE_Time_Value *timeout,
    -                                     const ACE_PEER_CONNECTOR_ADDR &local_addr,
    -                                     int reuse_addr,
    -                                     int flags,
    -                                     int perms,
    -                                     int &found);
    -
    -  CONNECTION_MAP connection_map_;
    -  // Table that maintains the cache of connected s.
    -
    -  MUTEX *lock_;
    -  // Mutual exclusion for this object.
    -
    -  int delete_lock_;
    -  // Mutual exclusion for this object.
    -
    -  REVERSE_MUTEX *reverse_lock_;
    -  // Reverse lock.
    -
    -  // = Strategy objects.
    -
    -  CREATION_STRATEGY *creation_strategy_;
    -  // Creation strategy for an .
    -
    -  int delete_creation_strategy_;
    -  // 1 if  created the creation strategy and thus should
    -  // delete it, else 0.
    -
    -  CONCURRENCY_STRATEGY *concurrency_strategy_;
    -  // Concurrency strategy for an .
    -
    -  int delete_concurrency_strategy_;
    -  // 1 if  created the concurrency strategy and thus should
    -  // delete it, else 0.
    -
    -  RECYCLING_STRATEGY *recycling_strategy_;
    -  // Recycling strategy for an .
    -
    -  int delete_recycling_strategy_;
    -  // 1 if  created the recycling strategy and thus should
    -  // delete it, else 0.
    -};
    -
    -#if !defined (ACE_LACKS_INLINE_FUNCTIONS)
    -#include "ace/Strategies_T.i"
    -#endif /* ACE_LACKS_INLINE_FUNCTIONS */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
    -#include "ace/Strategies_T.cpp"
    -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
    -#pragma implementation ("Strategies_T.cpp")
    -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
    -
    -#endif /* ACE_STRATEGIES_T_H */
    diff --git a/ace/Strategies_T.i b/ace/Strategies_T.i
    deleted file mode 100644
    index 096a1e046c4..00000000000
    --- a/ace/Strategies_T.i
    +++ /dev/null
    @@ -1,447 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -template ASYS_INLINE
    -ACE_Recycling_Strategy::~ACE_Recycling_Strategy (void)
    -{
    -}
    -
    -template ASYS_INLINE int
    -ACE_Recycling_Strategy::assign_recycler (SVC_HANDLER *svc_handler,
    -                                                      ACE_Connection_Recycling_Strategy *recycler,
    -                                                      const void *recycling_act)
    -{
    -  svc_handler->recycler (recycler, recycling_act);
    -  return 0;
    -}
    -
    -template ASYS_INLINE int
    -ACE_Recycling_Strategy::prepare_for_recycling (SVC_HANDLER *svc_handler)
    -{
    -  return svc_handler->recycle ();
    -}
    -
    -template  ASYS_INLINE
    -ACE_Singleton_Strategy::ACE_Singleton_Strategy (SVC_HANDLER *sh,
    -                                                             ACE_Thread_Manager *tm)
    -  : svc_handler_ (0),
    -    delete_svc_handler_ (1)
    -{
    -  ACE_TRACE ("ACE_Singleton_Strategy::ACE_Singleton_Strategy");
    -  if (this->open (sh, tm) == -1)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT ("%p\n"),
    -                ASYS_TEXT ("ACE_Singleton_Strategy")));
    -}
    -
    -template  ASYS_INLINE
    -ACE_Singleton_Strategy::~ACE_Singleton_Strategy (void)
    -{
    -  ACE_TRACE ("ACE_Singleton_Strategy::~ACE_Singleton_Strategy");
    -  if (this->delete_svc_handler_ != 0)
    -    delete this->svc_handler_;
    -}
    -
    -// Create a Singleton SVC_HANDLER by always returning the same
    -// SVC_HANDLER.
    -
    -template  ASYS_INLINE int
    -ACE_Singleton_Strategy::make_svc_handler (SVC_HANDLER *&sh)
    -{
    -  ACE_TRACE ("ACE_Singleton_Strategy::make_svc_handler");
    -  sh = this->svc_handler_;
    -  return 0;
    -}
    -
    -template  ASYS_INLINE int
    -ACE_Creation_Strategy::open (ACE_Thread_Manager *thr_mgr)
    -{
    -  ACE_TRACE ("ACE_Creation_Strategy::open");
    -  this->thr_mgr_ = thr_mgr;
    -  return 0;
    -}
    -
    -
    -template  ASYS_INLINE
    -ACE_Creation_Strategy::ACE_Creation_Strategy (ACE_Thread_Manager *thr_mgr)
    -{
    -  ACE_TRACE ("ACE_Creation_Strategy::ACE_Creation_Strategy");
    -  if (this->open (thr_mgr) == -1)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT ("%p\n"),
    -                ASYS_TEXT ("ACE_Creation_Strategy")));
    -}
    -
    -// Default behavior is to make a new SVC_HANDLER, passing in the
    -// Thread_Manager (if any).
    -
    -template  ASYS_INLINE int
    -ACE_Creation_Strategy::make_svc_handler (SVC_HANDLER *&sh)
    -{
    -  ACE_TRACE ("ACE_Creation_Strategy::make_svc_handler");
    -
    -  if (sh == 0)
    -    ACE_NEW_RETURN (sh, SVC_HANDLER (this->thr_mgr_), -1);
    -  return 0;
    -}
    -
    -template  ASYS_INLINE
    -ACE_Creation_Strategy::~ACE_Creation_Strategy (void)
    -{
    -  ACE_TRACE ("ACE_Creation_Strategy::~ACE_Creation_Strategy");
    -}
    -
    -template  ASYS_INLINE
    -ACE_DLL_Strategy::ACE_DLL_Strategy (const char dll_name[],
    -                                                 const char factory_function[],
    -                                                 const char svc_name[],
    -                                                 ACE_Service_Repository *svc_rep,
    -                                                 ACE_Thread_Manager *thr_mgr)
    -{
    -  ACE_TRACE ("ACE_DLL_Strategy::ACE_DLL_Strategy");
    -  if (this->open (dll_name,
    -                  factory_function,
    -                  svc_name,
    -                  svc_rep,
    -                  thr_mgr) == -1)
    -    ACE_ERROR ((LM_ERROR,  
    -                ASYS_TEXT ("%p\n"),
    -                ASYS_TEXT ("open")));
    -}
    -
    -template  ASYS_INLINE
    -ACE_DLL_Strategy::ACE_DLL_Strategy (void)
    -{
    -  ACE_TRACE ("ACE_DLL_Strategy::ACE_DLL_Strategy");
    -}
    -
    -template  ASYS_INLINE
    -ACE_Concurrency_Strategy::ACE_Concurrency_Strategy (int flags)
    -  : flags_ (flags)
    -{
    -  ACE_TRACE ("ACE_Concurrency_Strategy::~ACE_Concurrency_Strategy");
    -}
    -
    -template  ASYS_INLINE
    -ACE_Concurrency_Strategy::~ACE_Concurrency_Strategy (void)
    -{
    -  ACE_TRACE ("ACE_Concurrency_Strategy::~ACE_Concurrency_Strategy");
    -}
    -
    -template  ASYS_INLINE
    -ACE_Reactive_Strategy::ACE_Reactive_Strategy (ACE_Reactor *reactor,
    -                                                           ACE_Reactor_Mask mask,
    -                                                           int flags)
    -{
    -  ACE_TRACE ("ACE_Reactive_Strategy::ACE_Reactive_Strategy");
    -
    -  if (this->open (reactor,
    -                  mask,
    -                  flags) == -1)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT ("%p\n"),
    -                ASYS_TEXT ("ACE_Reactive_Strategy::ACE_Reactive_Strategy")));
    -}
    -
    -template  ASYS_INLINE
    -ACE_Reactive_Strategy::ACE_Reactive_Strategy (int flags)
    -  : ACE_Concurrency_Strategy (flags),
    -    reactor_ (0),
    -    mask_ (ACE_Event_Handler::NULL_MASK)
    -{
    -  ACE_TRACE ("ACE_Reactive_Strategy::ACE_Reactive_Strategy");
    -}
    -
    -template  ASYS_INLINE
    -ACE_Reactive_Strategy::~ACE_Reactive_Strategy (void)
    -{
    -  ACE_TRACE ("ACE_Reactive_Strategy::~ACE_Reactive_Strategy");
    -}
    -
    -template  ASYS_INLINE
    -ACE_Thread_Strategy::ACE_Thread_Strategy (ACE_Thread_Manager *thr_mgr,
    -                                                       long thr_flags,
    -                                                       size_t n_threads,
    -                                                       int flags)
    -{
    -  ACE_TRACE ("ACE_Thread_Strategy::ACE_Thread_Strategy");
    -
    -  if (this->open (thr_mgr,
    -                  thr_flags,
    -                  n_threads,
    -                  flags) == -1)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT ("%p\n"),
    -                ASYS_TEXT ("ACE_Thread_Strategy::ACE_Thread_Strategy")));
    -}
    -
    -template  ASYS_INLINE
    -ACE_Thread_Strategy::ACE_Thread_Strategy (int flags)
    -  : ACE_Concurrency_Strategy (flags),
    -    thr_mgr_ (0),
    -    thr_flags_ (0),
    -    n_threads_ (1)
    -{
    -  ACE_TRACE ("ACE_Thread_Strategy::ACE_Thread_Strategy");
    -}
    -
    -template  ASYS_INLINE
    -ACE_Thread_Strategy::~ACE_Thread_Strategy (void)
    -{
    -  ACE_TRACE ("ACE_Thread_Strategy::~ACE_Thread_Strategy");
    -}
    -
    -template  ASYS_INLINE int
    -ACE_Accept_Strategy::open
    -  (const ACE_PEER_ACCEPTOR_ADDR &local_addr, int restart)
    -{
    -  return this->acceptor_.open (local_addr, restart);
    -}
    -
    -template  ASYS_INLINE
    -ACE_Accept_Strategy::ACE_Accept_Strategy (ACE_Reactor *reactor)
    -  : reactor_ (reactor)
    -{
    -  ACE_TRACE ("ACE_Accept_Strategy::ACE_Accept_Strategy");
    -}
    -
    -template  ASYS_INLINE ACE_HANDLE
    -ACE_Accept_Strategy::get_handle (void) const
    -{
    -  ACE_TRACE ("ACE_Accept_Strategy::get_handle");
    -  return this->acceptor_.get_handle ();
    -}
    -
    -template  ASYS_INLINE ACE_PEER_ACCEPTOR &
    -ACE_Accept_Strategy::acceptor (void) const
    -{
    -  ACE_TRACE ("ACE_Accept_Strategy::acceptor");
    -  return (ACE_PEER_ACCEPTOR &) this->acceptor_;
    -}
    -
    -template  ASYS_INLINE
    -ACE_Accept_Strategy::~ACE_Accept_Strategy (void)
    -{
    -  ACE_TRACE ("ACE_Accept_Strategy::~ACE_Accept_Strategy");
    -
    -  if (this->acceptor_.close () == -1)
    -    ACE_ERROR ((LM_ERROR,  ASYS_TEXT ("(%P|%t) %p\n"),  ASYS_TEXT ("close")));
    -}
    -
    -template  ASYS_INLINE ACE_PEER_CONNECTOR &
    -ACE_Connect_Strategy::connector (void) const
    -{
    -  ACE_TRACE ("ACE_Connect_Strategy::connector");
    -  return (ACE_PEER_CONNECTOR &) this->connector_;
    -}
    -
    -template  ASYS_INLINE
    -ACE_Connect_Strategy::ACE_Connect_Strategy (void)
    -{
    -  ACE_TRACE ("ACE_Connect_Strategy::ACE_Connect_Strategy");
    -}
    -
    -template  ASYS_INLINE
    -ACE_Connect_Strategy::~ACE_Connect_Strategy (void)
    -{
    -  ACE_TRACE ("ACE_Connect_Strategy::~ACE_Connect_Strategy");
    -}
    -
    -template  ASYS_INLINE
    -ACE_Process_Strategy::ACE_Process_Strategy (size_t n_processes,
    -                                                         ACE_Event_Handler *acceptor,
    -                                                         ACE_Reactor *reactor,
    -                                                         int avoid_zombies)
    -{
    -  ACE_TRACE ("ACE_Process_Strategy::ACE_Process_Strategy");
    -  if (this->open (n_processes,
    -                  acceptor,
    -                  reactor,
    -                  avoid_zombies) == -1)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT ("%p\n"),
    -                ASYS_TEXT ("ACE_Process_Strategy")));
    -}
    -
    -template  ASYS_INLINE
    -ACE_Process_Strategy::~ACE_Process_Strategy (void)
    -{
    -  ACE_TRACE ("ACE_Process_Strategy::~ACE_Process_Strategy");
    -}
    -
    -template  ASYS_INLINE
    -ACE_Scheduling_Strategy::ACE_Scheduling_Strategy (SVC_HANDLER *)
    -{
    -  ACE_TRACE ("ACE_Scheduling_Strategy::ACE_Scheduling_Strategy");
    -}
    -
    -template  ASYS_INLINE
    -ACE_Scheduling_Strategy::~ACE_Scheduling_Strategy (void)
    -{
    -  ACE_TRACE ("ACE_Scheduling_Strategy::~ACE_Scheduling_Strategy");
    -}
    -
    -template  ASYS_INLINE int
    -ACE_Scheduling_Strategy::suspend (void)
    -{
    -  ACE_TRACE ("ACE_Scheduling_Strategy::suspend");
    -  return -1;
    -}
    -
    -template  ASYS_INLINE int
    -ACE_Scheduling_Strategy::resume (void)
    -{
    -  ACE_TRACE ("ACE_Scheduling_Strategy::resume");
    -  return -1;
    -}
    -
    -template  ASYS_INLINE
    -ACE_Schedule_All_Reactive_Strategy::ACE_Schedule_All_Reactive_Strategy
    -  (SVC_HANDLER *scheduler)
    -  : ACE_Scheduling_Strategy (scheduler)
    -{
    -  ACE_TRACE ("ACE_Schedule_All_Reactive_Strategy::ACE_Schedule_All_Reactive_Strategy");
    -
    -  if (scheduler == 0 || scheduler->reactor () == 0)
    -    this->reactor_ = ACE_Reactor::instance ();
    -  else
    -    this->reactor_ = scheduler->reactor ();
    -}
    -
    -template  ASYS_INLINE int
    -ACE_Schedule_All_Reactive_Strategy::suspend (void)
    -{
    -  ACE_TRACE ("ACE_Schedule_All_Reactive_Strategy::suspend");
    -  return this->reactor_->suspend_handlers ();
    -}
    -
    -template  ASYS_INLINE int
    -ACE_Schedule_All_Reactive_Strategy::resume (void)
    -{
    -  ACE_TRACE ("ACE_Schedule_All_Reactive_Strategy::resume");
    -  return this->reactor_->resume_handlers ();
    -}
    -
    -template  ASYS_INLINE
    -ACE_Schedule_All_Threaded_Strategy::ACE_Schedule_All_Threaded_Strategy
    -  (SVC_HANDLER *scheduler)
    -  : ACE_Scheduling_Strategy (scheduler)
    -{
    -  ACE_TRACE ("ACE_Schedule_All_Threaded_Strategy::ACE_Schedule_All_Threaded_Strategy");
    -
    -  if (scheduler == 0 || scheduler->thr_mgr () == 0)
    -    this->thr_mgr_ = ACE_Thread_Manager::instance ();
    -  else
    -    this->thr_mgr_ = scheduler->thr_mgr ();
    -}
    -
    -template  ASYS_INLINE int
    -ACE_Schedule_All_Threaded_Strategy::suspend (void)
    -{
    -  ACE_TRACE ("ACE_Schedule_All_Threaded_Strategy::suspend");
    -  return this->thr_mgr_->suspend_all ();
    -}
    -
    -template  ASYS_INLINE int
    -ACE_Schedule_All_Threaded_Strategy::resume (void)
    -{
    -  ACE_TRACE ("ACE_Schedule_All_Threaded_Strategy::resume");
    -  return this->thr_mgr_->resume_all ();
    -}
    -
    -template  ASYS_INLINE
    -ACE_Refcounted_Hash_Recyclable::ACE_Refcounted_Hash_Recyclable (void)
    -  : ACE_Refcountable (0),
    -    ACE_Hashable (),
    -    ACE_Recyclable (ACE_RECYCLABLE_UNKNOWN),
    -    t_ ()
    -{
    -}
    -
    -template  ASYS_INLINE
    -ACE_Refcounted_Hash_Recyclable::ACE_Refcounted_Hash_Recyclable (const T &t,
    -                                                                   int refcount,
    -                                                                   ACE_Recyclable_State state)
    -  : ACE_Refcountable (refcount),
    -    ACE_Hashable (),
    -    ACE_Recyclable (state),
    -    t_ (t)
    -{
    -}
    -
    -template  ASYS_INLINE
    -ACE_Refcounted_Hash_Recyclable::~ACE_Refcounted_Hash_Recyclable (void)
    -{
    -}
    -
    -template  ASYS_INLINE u_long
    -ACE_Refcounted_Hash_Recyclable::hash_i (void) const
    -{
    -  return this->t_.hash ();
    -}
    -
    -template  ASYS_INLINE T &
    -ACE_Refcounted_Hash_Recyclable::subject (void)
    -{
    -  return this->t_;
    -}
    -
    -template  ASYS_INLINE int
    -ACE_Refcounted_Hash_Recyclable::operator== (const ACE_Refcounted_Hash_Recyclable &rhs) const
    -{
    -  return this->recycle_state () == rhs.recycle_state () &&
    -         this->t_ == rhs.t_;
    -}
    -
    -template  ASYS_INLINE int
    -ACE_Refcounted_Hash_Recyclable::operator!= (const ACE_Refcounted_Hash_Recyclable &rhs) const
    -{
    -  return !this->operator== (rhs);
    -}
    -
    -template  ASYS_INLINE int
    -ACE_NOOP_Creation_Strategy::make_svc_handler (SVC_HANDLER *&)
    -{
    -  ACE_TRACE ("ACE_NOOP_Creation_Strategy::make_svc_handler");
    -  return 0;
    -}
    -
    -template  ASYS_INLINE int
    -ACE_NOOP_Concurrency_Strategy::activate_svc_handler (SVC_HANDLER *,
    -                                                                  void *)
    -{
    -  ACE_TRACE ("ACE_NOOP_Concurrency_Strategy::activate_svc_handler");
    -  return 0;
    -}
    -
    -template ASYS_INLINE int
    -ACE_Cached_Connect_Strategy::make_svc_handler
    -  (SVC_HANDLER *&sh)
    -{
    -  return this->creation_strategy_->make_svc_handler (sh);
    -}
    -
    -template ASYS_INLINE int
    -ACE_Cached_Connect_Strategy::activate_svc_handler
    -  (SVC_HANDLER *svc_handler)
    -{
    -  return this->concurrency_strategy_->activate_svc_handler (svc_handler);
    -}
    -
    -template ASYS_INLINE int
    -ACE_Cached_Connect_Strategy::assign_recycler
    -  (SVC_HANDLER *svc_handler,
    -   ACE_Connection_Recycling_Strategy *recycler,
    -   const void *recycling_act)
    -{
    -  return this->recycling_strategy_->assign_recycler (svc_handler,
    -                                                     recycler,
    -                                                     recycling_act);
    -}
    -
    -template ASYS_INLINE int
    -ACE_Cached_Connect_Strategy::prepare_for_recycling
    -  (SVC_HANDLER *svc_handler)
    -{
    -  return this->recycling_strategy_->prepare_for_recycling (svc_handler);
    -}
    diff --git a/ace/Stream.cpp b/ace/Stream.cpp
    deleted file mode 100644
    index efdffd1cbb0..00000000000
    --- a/ace/Stream.cpp
    +++ /dev/null
    @@ -1,513 +0,0 @@
    -// Stream.cpp
    -// $Id$
    -
    -#ifndef ACE_STREAM_C
    -#define ACE_STREAM_C
    -
    -#define ACE_BUILD_DLL
    -//#include "ace/Module.h"
    -#include "ace/Stream.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Stream_Modules.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/Stream.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, Stream, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Stream)
    -
    -// Give some idea of what the heck is going on in a stream!
    -
    -template  void
    -ACE_Stream::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Stream::dump");
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("-------- module links --------\n")));
    -
    -  for (ACE_Module *mp = this->stream_head_;
    -       ;
    -       mp = mp->next ())
    -    {
    -      ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("module name = %s\n"), mp->name ()));
    -      if (mp == this->stream_tail_)
    -        break;
    -    }
    -
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("-------- writer links --------\n")));
    -
    -  ACE_Task *tp;
    -
    -  for (tp = this->stream_head_->writer ();
    -       ;
    -       tp = tp->next ())
    -    {
    -      ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("writer queue name = %s\n"), tp->name ()));
    -      tp->dump ();
    -      ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("-------\n")));
    -      if (tp == this->stream_tail_->writer ()
    -          || (this->linked_us_
    -              && tp == this->linked_us_->stream_head_->reader ()))
    -        break;
    -    }
    -
    -  ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("-------- reader links --------\n")));
    -  for (tp = this->stream_tail_->reader (); ; tp = tp->next ())
    -    {
    -      ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("reader queue name = %s\n"), tp->name ()));
    -      tp->dump ();
    -      ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("-------\n")));
    -      if (tp == this->stream_head_->reader ()
    -          || (this->linked_us_
    -              && tp == this->linked_us_->stream_head_->writer ()))
    -        break;
    -    }
    -}
    -
    -template  int
    -ACE_Stream::push (ACE_Module *new_top)
    -{
    -  ACE_TRACE ("ACE_Stream::push");
    -  if (this->push_module  (new_top,
    -                          this->stream_head_->next (),
    -                          this->stream_head_) == -1)
    -    return -1;
    -  else
    -    return 0;
    -}
    -
    -template  int
    -ACE_Stream::put (ACE_Message_Block *mb, ACE_Time_Value *tv)
    -{
    -  ACE_TRACE ("ACE_Stream::put");
    -  return this->stream_head_->writer ()->put (mb, tv);
    -}
    -
    -template  int
    -ACE_Stream::get (ACE_Message_Block *&mb, ACE_Time_Value *tv)
    -{
    -  ACE_TRACE ("ACE_Stream::get");
    -  return this->stream_head_->reader ()->getq (mb, tv);
    -}
    -
    -// Return the "top" ACE_Module in a ACE_Stream, skipping over the
    -// stream_head.
    -
    -template  int
    -ACE_Stream::top (ACE_Module *&m)
    -{
    -  ACE_TRACE ("ACE_Stream::top");
    -  if (this->stream_head_->next () == this->stream_tail_)
    -    return -1;
    -  else
    -    {
    -      m = this->stream_head_->next ();
    -      return 0;
    -    }
    -}
    -
    -// Remove the "top" ACE_Module in a ACE_Stream, skipping over the
    -// stream_head.
    -
    -template  int
    -ACE_Stream::pop (int flags)
    -{
    -  ACE_TRACE ("ACE_Stream::pop");
    -  if (this->stream_head_->next () == this->stream_tail_)
    -    return -1;
    -  else
    -    {
    -      // Skip over the ACE_Stream head.
    -      ACE_Module *top_mod = this->stream_head_->next ();
    -      ACE_Module *new_top = top_mod->next ();
    -
    -      this->stream_head_->next (new_top);
    -
    -      // Close the top ACE_Module.
    -
    -      top_mod->close (flags);
    -
    -      // Don't delete the Module unless the flags request this.
    -      if (flags != ACE_Module::M_DELETE_NONE)
    -        delete top_mod;
    -
    -      this->stream_head_->writer ()->next (new_top->writer ());
    -      new_top->reader ()->next (this->stream_head_->reader ());
    -      return 0;
    -    }
    -}
    -
    -// Remove a named ACE_Module from an arbitrary place in the
    -// ACE_Stream.
    -
    -template  int
    -ACE_Stream::remove (const ASYS_TCHAR *name,
    -                                 int flags)
    -{
    -  ACE_TRACE ("ACE_Stream::remove");
    -  ACE_Module *prev = 0;
    -
    -  for (ACE_Module *mod = this->stream_head_;
    -       mod != 0;
    -       mod = mod->next ())
    -    if (ACE_OS::strcmp (mod->name (), name) == 0)
    -      {
    -        if (prev == 0) // Deleting ACE_Stream Head
    -          this->stream_head_->link (mod->next ());
    -        else
    -          prev->link (mod->next ());
    -
    -        // Don't delete the Module unless the flags request this.
    -        if (flags != ACE_Module::M_DELETE_NONE)
    -          {
    -            // Close down the module and release the memory.
    -            mod->close (flags);
    -            delete mod;
    -          }
    -
    -        return 0;
    -      }
    -    else
    -      prev = mod;
    -
    -  return -1;
    -}
    -
    -template  ACE_Module *
    -ACE_Stream::find (const ASYS_TCHAR *name)
    -{
    -  ACE_TRACE ("ACE_Stream::find");
    -  for (ACE_Module *mod = this->stream_head_;
    -       mod != 0;
    -       mod = mod->next ())
    -    if (ACE_OS::strcmp (mod->name (), name) == 0)
    -        return mod;
    -
    -  return 0;
    -}
    -
    -// Actually push a module onto the stack...
    -
    -template  int
    -ACE_Stream::push_module (ACE_Module *new_top,
    -                                      ACE_Module *current_top,
    -                                      ACE_Module *head)
    -{
    -  ACE_TRACE ("ACE_Stream::push_module");
    -  ACE_Task *nt_reader = new_top->reader ();
    -  ACE_Task *nt_writer = new_top->writer ();
    -  ACE_Task *ct_reader = 0;
    -  ACE_Task *ct_writer = 0;
    -
    -  if (current_top)
    -    {
    -      ct_reader = current_top->reader ();
    -      ct_writer = current_top->writer ();
    -      ct_reader->next (nt_reader);
    -    }
    -
    -  nt_writer->next (ct_writer);
    -
    -  if (head)
    -    {
    -      if (head != new_top)
    -        head->link (new_top);
    -    }
    -  else
    -    nt_reader->next (0);
    -
    -  new_top->next (current_top);
    -
    -  if (nt_reader->open (new_top->arg ()) == -1)
    -    return -1;
    -
    -  if (nt_writer->open (new_top->arg ()) == -1)
    -    return -1;
    -  return 0;
    -}
    -
    -template  int
    -ACE_Stream::open (void *a,
    -                                 ACE_Module *head,
    -                                 ACE_Module *tail)
    -{
    -  ACE_TRACE ("ACE_Stream::open");
    -  ACE_GUARD_RETURN (ACE_SYNCH_MUTEX_T, ace_mon, this->lock_, -1);
    -
    -  ACE_Task *h1 = 0, *h2 = 0;
    -  ACE_Task *t1 = 0, *t2 = 0;
    -
    -  if (head == 0)
    -    {
    -      h1 = new ACE_Stream_Head;
    -      h2 = new ACE_Stream_Head;
    -      head = new ACE_Module (ASYS_TEXT ("ACE_Stream_Head"),
    -                                            h1, h2,
    -                                            a,
    -                                            M_DELETE);
    -    }
    -
    -  if (tail == 0)
    -    {
    -      t1 = new ACE_Stream_Tail;
    -      t2 = new ACE_Stream_Tail;
    -      tail = new ACE_Module (ASYS_TEXT ("ACE_Stream_Tail"),
    -                                            t1, t2,
    -                                            a,
    -                                            M_DELETE);
    -    }
    -
    -  // Make sure *all* the allocation succeeded!
    -  if (head == 0 && (h1 == 0 || h2 == 0)
    -      || tail == 0 && (t1 == 0 || t2 == 0))
    -    {
    -      delete h1;
    -      delete h2;
    -      delete t1;
    -      delete t2;
    -      delete head;
    -      delete tail;
    -      errno = ENOMEM;
    -      return -1;
    -    }
    -
    -  this->stream_head_ = head;
    -  this->stream_tail_ = tail;
    -
    -  if (this->push_module (this->stream_tail_) == -1)
    -    return -1;
    -  else if (this->push_module (this->stream_head_,
    -                              this->stream_tail_,
    -                              this->stream_head_) == -1)
    -    return -1;
    -  else
    -    return 0;
    -}
    -
    -template  int
    -ACE_Stream::close (int flags)
    -{
    -  ACE_TRACE ("ACE_Stream::close");
    -  ACE_GUARD_RETURN (ACE_SYNCH_MUTEX_T, ace_mon, this->lock_, -1);
    -
    -  if (this->stream_head_ != 0
    -      && this->stream_tail_ != 0)
    -    {
    -      // Don't bother checking return value here.
    -      this->unlink_i ();
    -
    -      int result = 0;
    -
    -      // Remove and cleanup all the intermediate modules.
    -
    -      while (this->stream_head_->next () != this->stream_tail_)
    -        if (this->pop (flags) == -1)
    -          result = -1;
    -
    -      // Clean up the head and tail of the stream.
    -      if (this->stream_head_->close (flags) == -1)
    -        result = -1;
    -      if (this->stream_tail_->close (flags) == -1)
    -        result = -1;
    -
    -      // Cleanup the memory.
    -      delete this->stream_head_;
    -      delete this->stream_tail_;
    -
    -      this->stream_head_ = 0;
    -      this->stream_tail_ = 0;
    -
    -      // Tell all threads waiting on the close that we are done.
    -      this->final_close_.broadcast ();
    -      return result;
    -    }
    -  return 0;
    -}
    -
    -template  int
    -ACE_Stream::control (ACE_IO_Cntl_Msg::ACE_IO_Cntl_Cmds cmd,
    -                                  void *a)
    -{
    -  ACE_TRACE ("ACE_Stream::control");
    -  ACE_IO_Cntl_Msg ioc (cmd);
    -
    -  ACE_Message_Block *db;
    -
    -  // Try to create a data block that contains the user-supplied data.
    -  ACE_NEW_RETURN (db,
    -                  ACE_Message_Block (sizeof (int),
    -                                     ACE_Message_Block::MB_IOCTL,
    -                                     0,
    -                                     (char *) a),
    -                  -1);
    -  // Try to create a control block  that contains the control
    -  // field and a pointer to the data block  in 's continuation
    -  // field.
    -  ACE_Message_Block *cb =
    -    new ACE_Message_Block (sizeof ioc,
    -                           ACE_Message_Block::MB_IOCTL,
    -                           db,
    -                           (char *) &ioc);
    -
    -  // If we can't allocate  then we need to delete db and return
    -  // -1.
    -  if (cb == 0)
    -    {
    -      db->release ();
    -      errno = ENOMEM;
    -      return -1;
    -    }
    -
    -  int result;
    -
    -  if (this->stream_head_->writer ()->put (cb) == -1)
    -    result = -1;
    -  else if (this->stream_head_->reader ()->getq (cb) == -1)
    -    result = -1;
    -  else
    -    result = ((ACE_IO_Cntl_Msg *) cb->rd_ptr ())->rval ();
    -
    -  // This will also release db if it's reference count == 0.
    -  cb->release ();
    -
    -  return result;
    -}
    -
    -// Link two streams together at their bottom-most Modules (i.e., the
    -// one just above the Stream tail).  Note that all of this is premised
    -// on the fact that the Stream head and Stream tail are non-NULL...
    -// This must be called with locks held.
    -
    -template  int
    -ACE_Stream::link_i (ACE_Stream &us)
    -{
    -  ACE_TRACE ("ACE_Stream::link_i");
    -  this->linked_us_ = &us;
    -  // Make sure the other side is also linked to us!
    -  us.linked_us_ = this;
    -
    -  ACE_Module *my_tail = this->stream_head_;
    -
    -  if (my_tail == 0)
    -    return -1;
    -
    -  // Locate the module just above our Stream tail.
    -  while (my_tail->next () != this->stream_tail_)
    -    my_tail = my_tail->next ();
    -
    -  ACE_Module *other_tail = us.stream_head_;
    -
    -  if (other_tail == 0)
    -    return -1;
    -
    -  // Locate the module just above the other Stream's tail.
    -  while (other_tail->next () != us.stream_tail_)
    -    other_tail = other_tail->next ();
    -
    -  // Reattach the pointers so that the two streams are linked!
    -  my_tail->writer ()->next (other_tail->reader ());
    -  other_tail->writer ()->next (my_tail->reader ());
    -  return 0;
    -}
    -
    -template  int
    -ACE_Stream::link (ACE_Stream &us)
    -{
    -  ACE_TRACE ("ACE_Stream::link");
    -
    -  ACE_GUARD_RETURN (ACE_SYNCH_MUTEX_T, ace_mon, this->lock_, -1);
    -
    -  return this->link_i (us);
    -}
    -
    -// Must be called with locks held...
    -
    -template  int
    -ACE_Stream::unlink_i (void)
    -{
    -  ACE_TRACE ("ACE_Stream::unlink_i");
    -
    -  // Only try to unlink if we are in fact still linked!
    -
    -  if (this->linked_us_ != 0)
    -    {
    -      ACE_Module *my_tail = this->stream_head_;
    -
    -      // Only relink if we still exist!
    -      if (my_tail)
    -        {
    -          // Find the module that's just before our stream tail.
    -          while (my_tail->next () != this->stream_tail_)
    -            my_tail = my_tail->next ();
    -
    -          // Restore the writer's next() link to our tail.
    -          my_tail->writer ()->next (this->stream_tail_->writer ());
    -        }
    -
    -      ACE_Module *other_tail =
    -        this->linked_us_->stream_head_;
    -
    -      // Only fiddle with the other side if it in fact still remains.
    -      if (other_tail != 0)
    -        {
    -          while (other_tail->next () != this->linked_us_->stream_tail_)
    -            other_tail = other_tail->next ();
    -
    -          other_tail->writer ()->next (this->linked_us_->stream_tail_->writer ());
    -
    -        }
    -
    -      // Make sure the other side is also aware that it's been unlinked!
    -      this->linked_us_->linked_us_ = 0;
    -
    -      this->linked_us_ = 0;
    -      return 0;
    -    }
    -  else
    -    return -1;
    -}
    -
    -template  int
    -ACE_Stream::unlink (void)
    -{
    -  ACE_TRACE ("ACE_Stream::unlink");
    -  ACE_GUARD_RETURN (ACE_SYNCH_MUTEX_T, ace_mon, this->lock_, -1);
    -  return this->unlink_i ();
    -}
    -
    -template 
    -ACE_Stream::ACE_Stream (void * a,
    -                                       ACE_Module *head,
    -                                       ACE_Module *tail)
    -  : linked_us_ (0),
    -    final_close_ (this->lock_)
    -{
    -  ACE_TRACE ("ACE_Stream::ACE_Stream");
    -  if (this->open (a, head, tail) == -1)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT ("ACE_Stream::open (%s, %s)\n"),
    -               head->name (), tail->name ()));
    -}
    -
    -template 
    -ACE_Stream::~ACE_Stream (void)
    -{
    -  ACE_TRACE ("ACE_Stream::~ACE_Stream");
    -
    -  if (this->stream_head_ != 0)
    -    this->close ();
    -}
    -
    -template 
    -ACE_Stream_Iterator::ACE_Stream_Iterator (const ACE_Stream &sr)
    -  : next_ (sr.stream_head_)
    -{
    -  ACE_TRACE ("ACE_Stream_Iterator::ACE_Stream_Iterator");
    -}
    -
    -#endif /* ACE_STREAM_C */
    diff --git a/ace/Stream.h b/ace/Stream.h
    deleted file mode 100644
    index a7c2df28139..00000000000
    --- a/ace/Stream.h
    +++ /dev/null
    @@ -1,211 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Stream.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_STREAM_H
    -#define ACE_STREAM_H
    -
    -#include "ace/ACE.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/IO_Cntl_Msg.h"
    -#include "ace/Message_Block.h"
    -#include "ace/Time_Value.h"
    -#include "ace/Module.h"
    -
    -// Forward decls.
    -template class ACE_Stream_Iterator;
    -
    -template 
    -class ACE_Stream
    -{
    -  // = TITLE
    -  //    This class is the primary abstraction for the ASX framework.
    -  //    It is moduled after System V Stream.
    -  //
    -  // = DESCRIPTION
    -  //    A Stream consists of a stack of , each of which
    -  //    contains two .  Even though the methods in this
    -  //    class are virtual, this class isn't really intended for
    -  //    subclassing unless you know what you are doing.  In
    -  //    particular, the  destructor calls , which
    -  //    won't be overridden properly unless you call it in a subclass
    -  //    destructor.
    -public:
    -  friend class ACE_Stream_Iterator;
    -
    -  enum
    -  {
    -    M_DELETE = 3
    -    // Indicates that  deletes the Tasks.  Don't change this
    -    // value without updating the same enum in class ACE_Module...
    -  };
    -
    -  // = Initializatation and termination methods.
    -  ACE_Stream (void *arg = 0,
    -              ACE_Module *head = 0,
    -              ACE_Module *tail = 0);
    -  // Create a Stream consisting of  and  as the Stream
    -  // head and Stream tail, respectively.  If these are 0 then the
    -  //  and  are used, respectively.
    -  //  is the value past in to the  methods of the tasks.
    -
    -  virtual int open (void *arg,
    -                    ACE_Module *head = 0,
    -                    ACE_Module *tail = 0);
    -  // Create a Stream consisting of  and  as the Stream
    -  // head and Stream tail, respectively.  If these are 0 then the
    -  //  and  are used, respectively.
    -  //  is the value past in to the  methods of the tasks.
    -
    -  virtual int close (int flags = M_DELETE);
    -  // Close down the stream and release all the resources.
    -
    -  virtual ~ACE_Stream (void);
    -  // Close down the stream and release all the resources.
    -
    -  // = ACE_Stream plumbing operations
    -
    -  virtual int push (ACE_Module *mod);
    -  // Add a new module  right below the Stream head.
    -
    -  virtual int pop (int flags = M_DELETE);
    -  // Remove the  right below the Stream head and close it down.
    -
    -  virtual int top (ACE_Module *&mod);
    -  // Return the top module on the stream (right below the stream
    -  // head).
    -
    -  virtual int remove (const ASYS_TCHAR *mod,
    -                      int flags = M_DELETE);
    -  // Remove the named module  from the stream.  This bypasses the
    -  // strict LIFO ordering of  and .
    -
    -  virtual ACE_Module *head (void);
    -  // Return current stream head.
    -
    -  virtual ACE_Module *tail (void);
    -  // Return current stream tail.
    -
    -  virtual ACE_Module *find (const ASYS_TCHAR *mod);
    -  // Find a particular ACE_Module.
    -
    -  virtual int link (ACE_Stream &);
    -  // Create a pipe between two Streams.
    -
    -  virtual int unlink (void);
    -  // Remove a pipe formed between two Streams.
    -
    -  // = Blocking data transfer operations
    -  virtual int put (ACE_Message_Block *mb,
    -                   ACE_Time_Value *timeout = 0);
    -  // Send the message  down the stream, starting at the Module
    -  // below the Stream head.  Wait for upto  amount of time
    -  // for the operation to complete (or block forever if  ==
    -  // 0).
    -
    -  virtual int get (ACE_Message_Block *&mb,
    -                   ACE_Time_Value *timeout = 0);
    -  // Read the message  that is stored in the the stream head.
    -  // Wait for upto  amount of time for the operation to
    -  // complete (or block forever if  == 0).
    -
    -  virtual int control (ACE_IO_Cntl_Msg::ACE_IO_Cntl_Cmds cmd,
    -                       void *args);
    -  // Send control message down the stream.
    -
    -  virtual int wait (void);
    -  // Synchronize with the final close of the stream.
    -
    -  virtual void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  int unlink_i (void);
    -  // Actually perform the unlinking of two Streams (must be called
    -  // with locks held).
    -
    -  int link_i (ACE_Stream &);
    -  // Actually perform the linking of two Streams (must be called with
    -  // locks held).
    -
    -  int push_module (ACE_Module *,
    -                   ACE_Module * = 0,
    -                   ACE_Module * = 0);
    -  // Must a new module onto the Stream.
    -
    -  ACE_Module *stream_head_;
    -  // Pointer to the head of the stream.
    -
    -  ACE_Module *stream_tail_;
    -  // Pointer to the tail of the stream.
    -
    -  ACE_Stream *linked_us_;
    -  // Pointer to an adjoining linked stream.
    -
    -  // = Synchronization objects used for thread-safe streams.
    -  ACE_SYNCH_MUTEX_T lock_;
    -  // Protect the stream against race conditions.
    -
    -  ACE_SYNCH_CONDITION_T final_close_;
    -  // Use to tell all threads waiting on the close that we are done.
    -};
    -
    -template 
    -class ACE_Stream_Iterator
    -{
    -  // = TITLE
    -  //     Iterate through an .
    -public:
    -  // = Initialization method.
    -  ACE_Stream_Iterator (const ACE_Stream &sr);
    -
    -  // = Iteration methods.
    -
    -  int next (const ACE_Module *&next_item);
    -  // Pass back the  that hasn't been seen in the set.
    -  // Returns 0 when all items have been seen, else 1.
    -
    -  int done (void) const;
    -  // Returns 1 when all items have been seen, else 0.
    -
    -  int advance (void);
    -  // Move forward by one element in the set.  Returns 0 when all the
    -  // items in the set have been seen, else 1.
    -
    -private:
    -  ACE_Module *next_;
    -  // Next  that we haven't yet seen.
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Stream.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
    -#include "ace/Stream.cpp"
    -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
    -#pragma implementation ("Stream.cpp")
    -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
    -
    -#endif /* ACE_STREAM_H */
    diff --git a/ace/Stream.i b/ace/Stream.i
    deleted file mode 100644
    index 42a4989eff0..00000000000
    --- a/ace/Stream.i
    +++ /dev/null
    @@ -1,49 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// Stream.i
    -
    -template  ACE_INLINE ACE_Module *
    -ACE_Stream::head (void)
    -{
    -  ACE_TRACE ("ACE_Stream::head");
    -  return this->stream_head_;
    -}
    -
    -template  ACE_INLINE ACE_Module *
    -ACE_Stream::tail (void)
    -{
    -  ACE_TRACE ("ACE_Stream::tail");
    -  return this->stream_tail_;
    -}
    -
    -template  ACE_INLINE int
    -ACE_Stream::wait (void)
    -{
    -  ACE_TRACE ("ACE_Stream::wait");
    -  return this->final_close_.wait ();
    -}
    -
    -template  ACE_INLINE int
    -ACE_Stream_Iterator::next (const ACE_Module *&mod)
    -{
    -  ACE_TRACE ("ACE_Stream_Iterator::next");
    -  mod = this->next_;
    -  return this->next_ != 0;
    -}
    -
    -template  ACE_INLINE int
    -ACE_Stream_Iterator::done (void) const
    -{
    -  ACE_TRACE ("ACE_Stream_Iterator::done");
    -  return this->next_ == 0;
    -}
    -
    -template  int
    -ACE_Stream_Iterator::advance (void)
    -{
    -  ACE_TRACE ("ACE_Stream_Iterator::advance");
    -  this->next_ = this->next_->next ();
    -  return this->next_ != 0;
    -}
    -
    diff --git a/ace/Stream_Modules.cpp b/ace/Stream_Modules.cpp
    deleted file mode 100644
    index e5ae4f3243d..00000000000
    --- a/ace/Stream_Modules.cpp
    +++ /dev/null
    @@ -1,374 +0,0 @@
    -// Stream_Modules.cpp
    -// $Id$
    -
    -#ifndef ACE_STREAM_MODULES_C
    -#define ACE_STREAM_MODULES_C
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Stream_Modules.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/Stream_Modules.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, Stream_Modules, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Stream_Head)
    -
    -template 
    -ACE_Stream_Head::ACE_Stream_Head (void)
    -{
    -  ACE_TRACE ("ACE_Stream_Head::ACE_Stream_Head");
    -}
    -
    -template 
    -ACE_Stream_Head::~ACE_Stream_Head (void)
    -{
    -  ACE_TRACE ("ACE_Stream_Head::~ACE_Stream_Head");
    -}
    -
    -template  void
    -ACE_Stream_Head::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Stream_Head::dump");
    -}
    -
    -// ACE_Module that act as the head and tail of a Stream.
    -
    -template  int
    -ACE_Stream_Head::open (void *)
    -{
    -  ACE_TRACE ("ACE_Stream_Head::open");
    -  return 0;
    -}
    -
    -template  int
    -ACE_Stream_Head::close (u_long)
    -{
    -  ACE_TRACE ("ACE_Stream_Head::close");
    -  return 0;
    -}
    -
    -template  int
    -ACE_Stream_Head::svc (void)
    -{
    -  ACE_TRACE ("ACE_Stream_Head::svc");
    -  return -1;
    -}
    -
    -template  int
    -ACE_Stream_Head::control (ACE_Message_Block *mb)
    -{
    -  ACE_TRACE ("ACE_Stream_Head::control");
    -  ACE_IO_Cntl_Msg *ioc = (ACE_IO_Cntl_Msg *) mb->rd_ptr ();
    -  ACE_IO_Cntl_Msg::ACE_IO_Cntl_Cmds cmd;
    -
    -  switch (cmd = ioc->cmd ())
    -    {
    -    case ACE_IO_Cntl_Msg::SET_LWM:
    -    case ACE_IO_Cntl_Msg::SET_HWM:
    -      this->water_marks (cmd, *(size_t *) mb->cont ()->rd_ptr ());
    -      ioc->rval (0);
    -      break;
    -    default:
    -      return 0;
    -    }
    -  return ioc->rval ();
    -}
    -
    -// Performs canonical flushing at the ACE_Stream Head.
    -
    -template  int
    -ACE_Stream_Head::canonical_flush (ACE_Message_Block *mb)
    -{
    -  ACE_TRACE ("ACE_Stream_Head::canonical_flush");
    -  char *cp = mb->rd_ptr ();
    -
    -  if (ACE_BIT_ENABLED (*cp, ACE_Task_Flags::ACE_FLUSHR))
    -    {
    -      this->flush (ACE_Task_Flags::ACE_FLUSHALL);
    -      ACE_CLR_BITS (*cp, ACE_Task_Flags::ACE_FLUSHR);
    -    }
    -
    -  if (ACE_BIT_ENABLED (*cp, ACE_Task_Flags::ACE_FLUSHW))
    -    return this->reply (mb);
    -  else
    -    mb->release ();
    -  return 0;
    -}
    -
    -template  int
    -ACE_Stream_Head::put (ACE_Message_Block *mb,
    -                                     ACE_Time_Value *tv)
    -{
    -  ACE_TRACE ("ACE_Stream_Head::put");
    -  int res = 0;
    -
    -  if (mb->msg_type () == ACE_Message_Block::MB_IOCTL
    -      && (res = this->control (mb)) == -1)
    -    return res;
    -
    -  if (this->is_writer ())
    -    return this->put_next (mb, tv);
    -  else // this->is_reader ()
    -    {
    -      switch (mb->msg_type ())
    -        {
    -        case ACE_Message_Block::MB_FLUSH:
    -          return this->canonical_flush (mb);
    -        default:
    -          break;
    -        }
    -
    -      return this->putq (mb, tv);
    -    }
    -}
    -
    -template  int
    -ACE_Stream_Head::init (int, ASYS_TCHAR *[])
    -{
    -  ACE_TRACE ("ACE_Stream_Head::init");
    -  return 0;
    -}
    -
    -template  int
    -ACE_Stream_Head::info (ASYS_TCHAR **strp, size_t length) const
    -{
    -  ACE_TRACE ("ACE_Stream_Head::info");
    -  const ASYS_TCHAR *name = this->name ();
    -
    -  if (*strp == 0 && (*strp = ACE_OS::strdup (name)) == 0)
    -    return -1;
    -  else
    -    ACE_OS::strncpy (*strp, name, length);
    -  return ACE_OS::strlen (name);
    -}
    -
    -template  int
    -ACE_Stream_Head::fini (void)
    -{
    -  ACE_TRACE ("ACE_Stream_Head::fini");
    -  return 0;
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Stream_Tail)
    -
    -template 
    -ACE_Stream_Tail::ACE_Stream_Tail (void)
    -{
    -  ACE_TRACE ("ACE_Stream_Tail::ACE_Stream_Tail");
    -}
    -
    -template 
    -ACE_Stream_Tail::~ACE_Stream_Tail (void)
    -{
    -  ACE_TRACE ("ACE_Stream_Tail::~ACE_Stream_Tail");
    -}
    -
    -template  void
    -ACE_Stream_Tail::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Stream_Tail::dump");
    -}
    -
    -template  int
    -ACE_Stream_Tail::open (void *)
    -{
    -  ACE_TRACE ("ACE_Stream_Tail::open");
    -  return 0;
    -}
    -
    -template  int
    -ACE_Stream_Tail::close (u_long)
    -{
    -  ACE_TRACE ("ACE_Stream_Tail::close");
    -  return 0;
    -}
    -
    -template  int
    -ACE_Stream_Tail::svc (void)
    -{
    -  ACE_TRACE ("ACE_Stream_Tail::svc");
    -  return -1;
    -}
    -
    -template  int
    -ACE_Stream_Tail::control (ACE_Message_Block *mb)
    -{
    -  ACE_TRACE ("ACE_Stream_Tail::control");
    -  ACE_IO_Cntl_Msg *ioc = (ACE_IO_Cntl_Msg *) mb->rd_ptr ();
    -  ACE_IO_Cntl_Msg::ACE_IO_Cntl_Cmds cmd;
    -
    -  switch (cmd = ioc->cmd ())
    -    {
    -    case ACE_IO_Cntl_Msg::SET_LWM:
    -    case ACE_IO_Cntl_Msg::SET_HWM:
    -      {
    -        size_t wm_size = *(size_t *) mb->cont ()->rd_ptr ();
    -
    -        this->water_marks (cmd, wm_size);
    -        this->sibling ()->water_marks (cmd, wm_size);
    -        ioc->rval (0);
    -        break;
    -      }
    -    default:
    -      mb->msg_type (ACE_Message_Block::MB_IOCNAK);
    -    }
    -  return this->reply (mb);
    -}
    -
    -// Perform flush algorithm as though we were the driver.
    -
    -template  int
    -ACE_Stream_Tail::canonical_flush (ACE_Message_Block *mb)
    -{
    -  ACE_TRACE ("ACE_Stream_Tail::canonical_flush");
    -  char *cp = mb->rd_ptr ();
    -
    -  if (ACE_BIT_ENABLED (*cp, ACE_Task_Flags::ACE_FLUSHW))
    -    {
    -      this->flush (ACE_Task_Flags::ACE_FLUSHALL);
    -      ACE_CLR_BITS (*cp, ACE_Task_Flags::ACE_FLUSHW);
    -    }
    -
    -  if (ACE_BIT_ENABLED (*cp, ACE_Task_Flags::ACE_FLUSHR))
    -    {
    -      this->sibling ()->flush (ACE_Task_Flags::ACE_FLUSHALL);
    -      return this->reply (mb);
    -    }
    -  else
    -    mb->release ();
    -
    -  return 0;
    -}
    -
    -template  int
    -ACE_Stream_Tail::put (ACE_Message_Block *mb,
    -                                   ACE_Time_Value *)
    -{
    -  ACE_TRACE ("ACE_Stream_Tail::put");
    -
    -  if (this->is_writer ())
    -    {
    -      switch (mb->msg_type ())
    -        {
    -        case ACE_Message_Block::MB_IOCTL:
    -          return this->control (mb);
    -          /* NOTREACHED */
    -        default:
    -          mb->release ();
    -        }
    -    }
    -
    -  return -1;
    -}
    -
    -template  int
    -ACE_Stream_Tail::init (int, ASYS_TCHAR *[])
    -{
    -  ACE_TRACE ("ACE_Stream_Tail::init");
    -  return 0;
    -}
    -
    -template  int
    -ACE_Stream_Tail::info (ASYS_TCHAR **strp, size_t length) const
    -{
    -  ACE_TRACE ("ACE_Stream_Tail::info");
    -  const ASYS_TCHAR *name = this->name ();
    -
    -  if (*strp == 0 && (*strp = ACE_OS::strdup (name)) == 0)
    -    return -1;
    -  else
    -    ACE_OS::strncpy (*strp, name, length);
    -  return ACE_OS::strlen (name);
    -}
    -
    -template  int
    -ACE_Stream_Tail::fini (void)
    -{
    -  ACE_TRACE ("ACE_Stream_Tail::fini");
    -  return 0;
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Thru_Task)
    -
    -template 
    -ACE_Thru_Task::ACE_Thru_Task (void)
    -{
    -  ACE_TRACE ("ACE_Thru_Task::ACE_Thru_Task");
    -}
    -
    -template 
    -ACE_Thru_Task::~ACE_Thru_Task (void)
    -{
    -  ACE_TRACE ("ACE_Thru_Task::~ACE_Thru_Task");
    -}
    -
    -template  void
    -ACE_Thru_Task::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Thru_Task::dump");
    -}
    -
    -template  int
    -ACE_Thru_Task::open (void *)
    -{
    -  ACE_TRACE ("ACE_Thru_Task::open");
    -  return 0;
    -}
    -
    -template  int
    -ACE_Thru_Task::close (u_long)
    -{
    -  ACE_TRACE ("ACE_Thru_Task::close");
    -  return 0;
    -}
    -
    -template  int
    -ACE_Thru_Task::svc (void)
    -{
    -  ACE_TRACE ("ACE_Thru_Task::svc");
    -  return -1;
    -}
    -
    -template  int
    -ACE_Thru_Task::put (ACE_Message_Block *msg,
    -                                 ACE_Time_Value *tv)
    -{
    -  ACE_TRACE ("ACE_Thru_Task::put");
    -  return this->put_next (msg, tv);
    -}
    -
    -template  int
    -ACE_Thru_Task::init (int, ASYS_TCHAR *[])
    -{
    -  ACE_TRACE ("ACE_Thru_Task::init");
    -  return 0;
    -}
    -
    -template  int
    -ACE_Thru_Task::info (ASYS_TCHAR **strp,
    -                                    size_t length) const
    -{
    -  ACE_TRACE ("ACE_Thru_Task::info");
    -  const ASYS_TCHAR *name = this->name ();
    -
    -  if (*strp == 0 && (*strp = ACE_OS::strdup (name)) == 0)
    -    return -1;
    -  else
    -    ACE_OS::strncpy (*strp, name, length);
    -  return ACE_OS::strlen (name);
    -}
    -
    -template  int
    -ACE_Thru_Task::fini (void)
    -{
    -  ACE_TRACE ("ACE_Thru_Task::fini");
    -  return 0;
    -}
    -
    -#endif /* ACE_STREAM_MODULES_C */
    diff --git a/ace/Stream_Modules.h b/ace/Stream_Modules.h
    deleted file mode 100644
    index 733f8efd614..00000000000
    --- a/ace/Stream_Modules.h
    +++ /dev/null
    @@ -1,140 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Stream_Modules.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -// This needs to go outside of the #if !defined() block.  Don't ask...
    -#include "ace/Task.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#ifndef ACE_STREAM_MODULES
    -#define ACE_STREAM_MODULES
    -
    -template 
    -class ACE_Stream_Head : public ACE_Task
    -{
    -  // = TITLE
    -  //    Standard module that acts as the head of a ustream.
    -public:
    -  ACE_Stream_Head (void);
    -  // Construction
    -
    -  ~ACE_Stream_Head (void);
    -  // Destruction
    -
    -  // = ACE_Task hooks
    -  virtual int open (void *a = 0);
    -  virtual int close (u_long flags = 0);
    -  virtual int put (ACE_Message_Block *msg, ACE_Time_Value * = 0);
    -  virtual int svc (void);
    -
    -  // = Dynamic linking hooks
    -  virtual int init (int argc, ASYS_TCHAR *argv[]);
    -  virtual int info (ASYS_TCHAR **info_string, size_t length) const;
    -  virtual int fini (void);
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  int control (ACE_Message_Block *);
    -  int canonical_flush (ACE_Message_Block *);
    -  // Performs canonical flushing at the ACE_Stream Head.
    -};
    -
    -template 
    -class ACE_Stream_Tail : public ACE_Task
    -{
    -  // = TITLE
    -  //    Standard module that acts as the head of a ustream.
    -public:
    -  ACE_Stream_Tail (void);
    -  // Construction
    -
    -  ~ACE_Stream_Tail (void);
    -  // Destruction
    -
    -  // = ACE_Task hooks
    -  virtual int open (void *a = 0);
    -  virtual int close (u_long flags = 0);
    -  virtual int put (ACE_Message_Block *msg, ACE_Time_Value * = 0);
    -  virtual int svc (void);
    -
    -  // = Dynamic linking hooks
    -  virtual int init (int argc, ASYS_TCHAR *argv[]);
    -  virtual int info (ASYS_TCHAR **info_string, size_t length) const;
    -  virtual int fini (void);
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  int control (ACE_Message_Block *);
    -  int canonical_flush (ACE_Message_Block *);
    -  // Performs canonical flushing at the ACE_Stream tail.
    -};
    -
    -template 
    -class ACE_Thru_Task : public ACE_Task
    -{
    -  // = TITLE
    -  //    Standard module that acts as a "no op", simply passing on all
    -  //    data to its adjacent neighbor.
    -public:
    -  ACE_Thru_Task (void);
    -  // Construction
    -
    -  ~ACE_Thru_Task (void);
    -  // Destruction
    -
    -  // = ACE_Task hooks
    -  virtual int open (void *a = 0);
    -  virtual int close (u_long flags = 0);
    -  virtual int put (ACE_Message_Block *msg, ACE_Time_Value * = 0);
    -  virtual int svc (void);
    -
    -  // = Dynamic linking hooks
    -  virtual int init (int argc, ASYS_TCHAR *argv[]);
    -  virtual int info (ASYS_TCHAR **info_string, size_t length) const;
    -  virtual int fini (void);
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Stream_Modules.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
    -#include "ace/Stream_Modules.cpp"
    -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
    -#pragma implementation ("Stream_Modules.cpp")
    -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
    -
    -#endif /* ACE_STREAM_MODULES */
    diff --git a/ace/Stream_Modules.i b/ace/Stream_Modules.i
    deleted file mode 100644
    index da761143bd8..00000000000
    --- a/ace/Stream_Modules.i
    +++ /dev/null
    @@ -1,4 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// Stream_Modules.i
    diff --git a/ace/Svc_Conf.h b/ace/Svc_Conf.h
    deleted file mode 100644
    index 315e5f36063..00000000000
    --- a/ace/Svc_Conf.h
    +++ /dev/null
    @@ -1,110 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Svc_Conf.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_SVC_CONF_H
    -#define ACE_SVC_CONF_H
    -
    -// Globally visible macros, type decls, and extern var decls for
    -// Service Configurator utility.
    -
    -#include "ace/Obstack.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Service_Config.h"
    -#include "ace/Parse_Node.h"
    -
    -#if defined (DEBUGGING)
    -#if defined (ACE_YY_DECL)
    -#undef ACE_YY_DECL
    -#endif /* ACE_YY_DECL */
    -#define ACE_YY_DECL extern "C" char *ace_yylex (void)
    -#else
    -#define ACE_YY_DECL extern "C" int ace_yylex (void)
    -#endif /* DEBUGGING */
    -
    -void ace_yyrestart (FILE *);
    -// Restart input file parsing
    -
    -void ace_yy_delete_parse_buffer (void);
    -// Delete the lexer's parse buffer
    -
    -int ace_yyparse (void);
    -// Performs the parsing
    -
    -ACE_YY_DECL;
    -// Performs the lexical analysis
    -
    -extern FILE *ace_yyin;
    -// Name of input stream
    -
    -#define ACE_YY_INPUT(buf,result,max_size) \
    -  if (ace_yydirective != 0) \
    -  { \
    -    int c = *ace_yydirective++; \
    -    result = c == '\0' ? 0 : 1; \
    -    buf[0] = (char) c; \
    -  } \
    -  else if ( ace_yy_current_buffer->ace_yy_is_interactive ) \
    -  { \
    -    int c = getc( ace_yyin ); \
    -    result = c == EOF ? 0 : 1; \
    -    buf[0] = (char) c; \
    -  } \
    -  else if ( ((result = fread( buf, 1, max_size, ace_yyin )) == 0) \
    -    && ferror( ace_yyin ) ) \
    -    ACE_YY_FATAL_ERROR( "input in flex scanner failed" );
    -
    -void ace_yyerror (const char *);
    -// Error handling routine required by YACC or BISON
    -
    -extern int ace_yylineno;
    -// Keeps track of the current line number for error-handling routine
    -
    -extern int ace_yyerrno;
    -// Keeps track of the number of errors encountered so far
    -
    -extern const ASYS_TCHAR *ace_yydirective;
    -// Used to parse service configurator directives from a string rather
    -// than from a svc.conf file.
    -
    -extern char *ace_yytext;
    -// Holds the lexeme for the current token
    -
    -extern int ace_yyleng;
    -// Holds the length of the lexeme for the current token
    -
    -extern ACE_Obstack *ace_obstack;
    -// Efficient memory allocation technique
    -
    -ACE_Service_Type_Impl *ace_create_service_type (const ASYS_TCHAR *, int,
    -                                                void *, unsigned int,
    -                                                ACE_Service_Object_Exterminator = 0);
    -// Factory that creates a new ACE_Service_Type_Impl.
    -
    -typedef union
    -{
    -  int type_;
    -  ACE_Location_Node *location_node_;
    -  ACE_Parse_Node *parse_node_;
    -  ACE_Static_Node *static_node_;
    -  ACE_Service_Type *svc_record_;
    -  char *ident_;
    -} ACE_YYSTYPE;
    -extern ACE_YYSTYPE ace_yylval;
    -#endif /* ACE_SVC_CONF_H */
    diff --git a/ace/Svc_Conf.l b/ace/Svc_Conf.l
    deleted file mode 100644
    index 75594f25db8..00000000000
    --- a/ace/Svc_Conf.l
    +++ /dev/null
    @@ -1,98 +0,0 @@
    -%{
    -// $Id$
    -// Sample lexical analysis for regular expression subset.  Must be
    -// compiled with FLEX and an ANSI C++ compiler.
    -
    -// Lexical tokens values defined by YACC.
    -#include "ace/Svc_Conf.h"
    -#include "ace/Svc_Conf_Tokens.h"
    -
    -ACE_RCSID(ace, Svc_Conf_l, "$Id$")
    -
    -// Keeps track of the current line for debugging output.
    -int yylineno = 1;
    -
    -// Keeps track of the number of errors encountered so far.
    -int yyerrno = 0;
    -
    -// Used to parse service configurator directives from a string rather
    -// than from a svc.conf file.
    -const ASYS_TCHAR *yydirective = 0;
    -
    -#define token(x)  x
    -%}
    -
    -%s PARAMETERS
    -%s NORMAL
    -
    -letter	        [a-zA-Z_]
    -letter_or_digit	[a-zA-Z_0-9]
    -digit           [0-9]
    -ident           {letter}{letter_or_digit}*
    -pathname        ([A-Za-z\%]:)?[a-zA-Z_0-9/\%\.\\-]+
    -symbol		[ -~]
    -string		\"{symbol}*\"
    -white_space	[ \t]
    -newline         \n
    -other		.
    -
    -%%
    -
    -^#{other}*$   	      ; /* EMPTY */
    -dynamic	              { return token (ACE_DYNAMIC); }
    -static	              { return token (ACE_STATIC); }
    -suspend	              { return token (ACE_SUSPEND); }
    -resume	              { return token (ACE_RESUME); }
    -remove	              { return token (ACE_REMOVE); }
    -stream	              { return token (ACE_USTREAM); }
    -Module		      { return token (ACE_MODULE_T); }
    -Service_Object	      { return token (ACE_SVC_OBJ_T); }
    -STREAM		      { return token (ACE_STREAM_T); }
    -active	              { return token (ACE_ACTIVE); }
    -inactive	      { return token (ACE_INACTIVE); }
    -":"		      { return token (ACE_COLON); }
    -"*"		      { return token (ACE_STAR); }
    -"("                   { return token (ACE_LPAREN); }
    -")"                   { return token (ACE_RPAREN); }
    -"{"                   { return token (ACE_LBRACE); }
    -"}"                   { return token (ACE_RBRACE); }
    -{string}	      { // Eliminate the opening and closing double quotes
    -		        *strrchr (yytext, '"') = '\0';
    -			yyleng -= 1;
    -                        yylval.ident_ = ace_obstack->copy (yytext + 1, yyleng);
    -			return token (ACE_STRING); }
    -{ident}		      {
    -		        yylval.ident_ = ace_obstack->copy (yytext, yyleng);
    -			return token (ACE_IDENT);
    -		      }
    -{pathname}	      {
    -		        yylval.ident_ = ace_obstack->copy (yytext, yyleng);
    -			return token (ACE_PATHNAME);
    -		      }
    -{white_space}+	      ; /* EMPTY */
    -{newline}	      { yylineno++; }
    -{other}		      { ACE_ERROR ((LM_ERROR, "unknown char = %d\n", *yytext)); }
    -<>               { YY_NEW_FILE; yyterminate(); }
    -%%
    -int
    -yywrap (void)
    -{
    -  ::fflush (yyin);
    -  yytext[0] = '#';
    -  yyleng = 0;
    -
    -  // This needs to be freed to prevent a memory leak.
    -  yy_delete_parse_buffer ();
    -
    -  return 1;
    -}
    -
    -void
    -yy_delete_parse_buffer (void)
    -{
    -  if (yy_current_buffer != 0) 
    -    {
    -      yy_delete_buffer (yy_current_buffer);
    -      yy_current_buffer = 0;
    -    }
    -}
    diff --git a/ace/Svc_Conf.y b/ace/Svc_Conf.y
    deleted file mode 100644
    index 908cbb5d721..00000000000
    --- a/ace/Svc_Conf.y
    +++ /dev/null
    @@ -1,459 +0,0 @@
    -%{
    -// $Id$
    -#define ACE_BUILD_DLL
    -#include "ace/ARGV.h"
    -#include "ace/Svc_Conf.h"
    -#include "ace/Module.h"
    -#include "ace/Stream.h"
    -
    -ACE_RCSID(ace, Svc_Conf_y, "$Id$")
    -
    -// Prototypes.
    -static ACE_Module_Type *ace_get_module (ACE_Static_Node *str_rec,
    -                                        ACE_Static_Node *svc_type);
    -static ACE_Module_Type *ace_get_module (ACE_Static_Node *str_rec,
    -                                        const ASYS_TCHAR *svc_name);
    -
    -#define YYDEBUG_LEXER_TEXT (yytext[yyleng] = '\0', yytext)
    -
    -// Force the pretty debugging code to compile.
    -// #define YYDEBUG 1
    -
    -// Efficient memory allocation technique.
    -ACE_Obstack *ace_obstack;
    -
    -%}
    -%token ACE_DYNAMIC ACE_STATIC ACE_SUSPEND ACE_RESUME ACE_REMOVE ACE_USTREAM
    -%token ACE_MODULE_T ACE_STREAM_T ACE_SVC_OBJ_T ACE_ACTIVE ACE_INACTIVE
    -%token ACE_PATHNAME ACE_IDENT ACE_STRING
    -%token ACE_LPAREN ACE_RPAREN ACE_LBRACE ACE_RBRACE ACE_STAR ACE_COLON
    -
    -%start svc_config_entries
    -
    -%type  ACE_IDENT ACE_STRING ACE_PATHNAME pathname parameters_opt
    -%type  type status
    -%type  dynamic static suspend resume remove module_list stream
    -%type  stream_modules module svc_config_entry
    -%type  stream_ops
    -%type  svc_location
    -%type  svc_initializer
    -
    -%%
    -
    -svc_config_entries
    -  : svc_config_entries svc_config_entry
    -    {
    -      if ($2 != 0)
    -      {
    -        $2->apply (); delete $2;
    -      }
    -      ace_obstack->release ();
    -    }
    -  | svc_config_entries error
    -    {
    -      ace_obstack->release ();
    -    }
    -  | /* EMPTY */
    -  ;
    -
    -svc_config_entry
    -  : dynamic
    -  | static
    -  | suspend
    -  | resume
    -  | remove
    -  | stream
    -  ;
    -
    -dynamic
    -  : ACE_DYNAMIC svc_location parameters_opt
    -    {
    -      if ($2 != 0)
    -        $$ = new ACE_Dynamic_Node ($2, ASYS_WIDE_STRING ($3));
    -      else
    -        $$ = 0;
    -    }
    -  ;
    -
    -static
    -  : ACE_STATIC ACE_IDENT parameters_opt
    -    {
    -      $$ = new ACE_Static_Node (ASYS_WIDE_STRING ($2), ASYS_WIDE_STRING ($3));
    -    }
    -  ;
    -
    -suspend
    -  : ACE_SUSPEND ACE_IDENT
    -    {
    -      $$ = new ACE_Suspend_Node (ASYS_WIDE_STRING ($2));
    -    }
    -  ;
    -
    -resume
    -  : ACE_RESUME ACE_IDENT
    -    {
    -      $$ = new ACE_Resume_Node (ASYS_WIDE_STRING ($2));
    -    }
    -  ;
    -
    -remove
    -  : ACE_REMOVE ACE_IDENT
    -    {
    -      $$ = new ACE_Remove_Node (ASYS_WIDE_STRING ($2));
    -    }
    -  ;
    -
    -stream
    -  : ACE_USTREAM stream_ops stream_modules
    -    {
    -      $$ = new ACE_Stream_Node ($2, $3);
    -    }
    -  | ACE_USTREAM ACE_IDENT { $$ = new ACE_Static_Node (ASYS_WIDE_STRING ($2)); } stream_modules
    -    {
    -      $$ = new ACE_Dummy_Node ($3, $4);
    -    }
    -  ;
    -
    -stream_ops
    -  : dynamic
    -    {
    -    }
    -  | static
    -    {
    -    }
    -  ;
    -
    -stream_modules
    -  : ACE_LBRACE
    -    {
    -      // Initialize left context...
    -      $$ = $0;
    -    }
    -   module_list ACE_RBRACE
    -    {
    -      $$ = $3;
    -    }
    -  | /* EMPTY */ { $$ = 0; }
    -  ;
    -
    -module_list
    -  : module_list module
    -    {
    -      if ($2 != 0)
    -        {
    -          $2->link ($1);
    -          $$ = $2;
    -        }
    -    }
    -  | /* EMPTY */ { $$ = 0; }
    -  ;
    -
    -module
    -  : dynamic
    -    {
    -      ACE_Static_Node *svc_type = $1;
    -
    -      if (svc_type != 0)
    -        {
    -          ACE_Static_Node *module = $-1;
    -
    -          ACE_ARGV args (svc_type->parameters ());
    -          ACE_Module_Type *mt = ace_get_module (module,
    -                                                svc_type);
    -          ACE_Stream_Type *st =
    -            ACE_dynamic_cast (ACE_Stream_Type *,
    -                              ACE_const_cast (ACE_Service_Type_Impl *,
    -                                              module->record ()->type ()));
    -
    -          if (mt->init (args.argc (), args.argv ()) == -1
    -              || st->push (mt) == -1)
    -            {
    -              ACE_ERROR ((LM_ERROR,
    -                          ASYS_TEXT ("dynamic initialization failed for Module %s\n"),
    -                          svc_type->name ()));
    -              yyerrno++;
    -            }
    -        }
    -    }
    -  | static
    -    {
    -      ACE_Module_Type *mt = ace_get_module ($-1, $1->name ());
    -
    -      if (((ACE_Stream_Type *) ($-1)->record ()->type ())->push (mt) == -1)
    -        {
    -          ACE_ERROR ((LM_ERROR,
    -                      ASYS_TEXT ("Problem with static\n")));
    -          yyerrno++;
    -        }
    -    }
    -  | suspend
    -    {
    -      ACE_Module_Type *mt = ace_get_module ($-1,
    -                                            $1->name ());
    -      if (mt != 0)
    -        mt->suspend ();
    -    }
    -  | resume
    -    {
    -      ACE_Module_Type *mt = ace_get_module ($-1,
    -                                            $1->name ());
    -      if (mt != 0)
    -        mt->resume ();
    -    }
    -  | remove
    -    {
    -      ACE_Static_Node *stream = $-1;
    -      ACE_Static_Node *module = $1;
    -      ACE_Module_Type *mt = ace_get_module (stream,
    -                                            module->name ());
    -
    -      ACE_Stream_Type *st =
    -        ACE_dynamic_cast (ACE_Stream_Type *,
    -                          ACE_const_cast (ACE_Service_Type_Impl *,
    -                                          stream->record ()->type ()));
    -      if (mt != 0 && st->remove (mt) == -1)
    -        {
    -          ACE_ERROR ((LM_ERROR,
    -                      ASYS_TEXT ("cannot remove Module_Type %s from STREAM_Type %s\n"),
    -                      module->name (),
    -                      stream->name ()));
    -          yyerrno++;
    -        }
    -    }
    -  ;
    -
    -svc_location
    -  : ACE_IDENT type svc_initializer status
    -    {
    -      u_int flags
    -        = ACE_Service_Type::DELETE_THIS
    -        | ($3->dispose () == 0 ? 0 : ACE_Service_Type::DELETE_OBJ);
    -      ACE_Service_Object_Exterminator gobbler = 0;
    -      void *sym = $3->symbol (&gobbler);
    -
    -      if (sym != 0)
    -        {
    -          ACE_Service_Type_Impl *stp
    -            = ace_create_service_type (ASYS_WIDE_STRING ($1),
    -                                       $2,
    -                                       sym,
    -                                       flags,
    -                                       gobbler);
    -          $$ = new ACE_Service_Type (ASYS_WIDE_STRING ($1),
    -                                     stp,
    -                                     $3->handle (),
    -                                     $4);
    -        }
    -      else
    -        {
    -          ACE_ERROR ((LM_ERROR,
    -                      ASYS_TEXT ("Unable to find service: %s\n"),
    -                      ASYS_WIDE_STRING ($1)));
    -          ++yyerrno;
    -          $$ = 0;
    -        }
    -      delete $3;
    -    }
    -  ;
    -
    -status
    -  : ACE_ACTIVE
    -    {
    -      $$ = 1;
    -    }
    -  | ACE_INACTIVE
    -    {
    -      $$ = 0;
    -    }
    -  | /* EMPTY */
    -    {
    -      $$ = 1;
    -    }
    -  ;
    -
    -svc_initializer
    -  : pathname ACE_COLON ACE_IDENT
    -    {
    -      $$ = new ACE_Object_Node (ASYS_WIDE_STRING ($1), ASYS_WIDE_STRING($3));
    -    }
    -  | pathname ACE_COLON ACE_IDENT ACE_LPAREN ACE_RPAREN
    -    {
    -      $$ = new ACE_Function_Node (ASYS_WIDE_STRING ($1), ASYS_WIDE_STRING ($3));
    -    }
    -  | ACE_COLON ACE_IDENT ACE_LPAREN ACE_RPAREN
    -    {
    -      $$ = new ACE_Static_Function_Node (ASYS_WIDE_STRING ($2));
    -    }
    -  ;
    -
    -type
    -  : ACE_MODULE_T ACE_STAR
    -    {
    -      $$ = ACE_MODULE_T;
    -    }
    -  | ACE_SVC_OBJ_T ACE_STAR
    -    {
    -      $$ = ACE_SVC_OBJ_T;
    -    }
    -  | ACE_STREAM_T ACE_STAR
    -    {
    -      $$ = ACE_STREAM_T;
    -    }
    -  ;
    -
    -parameters_opt
    -  : ACE_STRING
    -  | /* EMPTY */ { $$ = 0; }
    -  ;
    -
    -pathname
    -  : ACE_PATHNAME
    -  | ACE_IDENT
    -  ;
    -
    -%%
    -// Prints the error string to standard output.  Cleans up the error
    -// messages.
    -
    -void
    -yyerror (const char *s)
    -{
    -#if defined (ACE_NLOGGING)
    -  ACE_UNUSED_ARG (s);
    -#endif /* ACE_NLOGGING */
    -
    -  ACE_ERROR ((LM_ERROR,
    -              ASYS_TEXT ("[error %d] on line %d: %s\n"),
    -              ++yyerrno,
    -              yylineno,
    -              ASYS_WIDE_STRING (s)));
    -}
    -
    -// Note that SRC_REC represents left context, which is the STREAM *
    -// record.
    -
    -static ACE_Module_Type *
    -ace_get_module (ACE_Static_Node *str_rec,
    -                const ASYS_TCHAR *svc_name)
    -{
    -  const ACE_Service_Type *sr = str_rec->record ();
    -  const ACE_Service_Type_Impl *type = sr->type ();
    -  ACE_Stream_Type *st = sr == 0
    -    ? 0
    -    : ACE_dynamic_cast (ACE_Stream_Type *,
    -                        ACE_const_cast (ACE_Service_Type_Impl *,
    -                                        type));
    -  ACE_Module_Type *mt = st == 0 ? 0 : st->find (svc_name);
    -
    -  if (sr == 0 || st == 0 || mt == 0)
    -    {
    -      ACE_ERROR ((LM_ERROR,
    -                  ASYS_TEXT ("cannot locate Module_Type %s in STREAM_Type %s\n"),
    -                  svc_name,
    -                  str_rec->name ()));
    -      yyerrno++;
    -    }
    -
    -  return mt;
    -}
    -
    -static ACE_Module_Type *
    -ace_get_module (ACE_Static_Node *str_rec,
    -                ACE_Static_Node *svc_type)
    -{
    -  const ACE_Service_Type *sr = str_rec->record ();
    -  const ACE_Service_Type_Impl *type = sr->type ();
    -  ACE_Stream_Type *st = sr == 0 ? 0 : (ACE_Stream_Type *) type;
    -  const ACE_Service_Type *sv = svc_type->record ();
    -  type = sv->type ();
    -  ACE_Module_Type *mt = (ACE_Module_Type *) type;
    -  const ASYS_TCHAR *module_type_name = svc_type->name ();
    -
    -  if (sr == 0 || st == 0 || mt == 0)
    -    {
    -      ACE_ERROR ((LM_ERROR,
    -                  ASYS_TEXT ("cannot locate Module_Type %s or STREAM_Type %s\n"),
    -                  module_type_name,
    -                  str_rec->name ()));
    -      yyerrno++;
    -    }
    -
    -  // Make sure that the Module has the same name as the
    -  // Module_Type object from the svc.conf file.
    -  ACE_Module *mp = (ACE_Module *) mt->object ();
    -
    -  if (ACE_OS::strcmp (mp->name (), module_type_name) != 0)
    -    {
    -      ACE_DEBUG ((LM_DEBUG,
    -                  ASYS_TEXT ("warning: assigning Module_Type name %s to Module %s since names differ\n"),
    -                  module_type_name,
    -                  mp->name ()));
    -      mp->name (module_type_name);
    -    }
    -
    -  return mt;
    -}
    -
    -ACE_Service_Type_Impl *
    -ace_create_service_type (const ASYS_TCHAR *name,
    -                         int type,
    -                         void *symbol,
    -                         u_int flags,
    -                         ACE_Service_Object_Exterminator gobbler)
    -{
    -  ACE_Service_Type_Impl *stp = 0;
    -
    -  // Note, the only place we need to put a case statement.  This is
    -  // also the place where we'd put the RTTI tests, if the compiler
    -  // actually supported them!
    -
    -  switch (type)
    -    {
    -    case ACE_SVC_OBJ_T:
    -      ACE_NEW_RETURN (stp,
    -                      ACE_Service_Object_Type ((ACE_Service_Object *) symbol,
    -                                               name, flags,
    -                                               gobbler),
    -                      0);
    -      break;
    -    case ACE_MODULE_T:
    -      ACE_NEW_RETURN (stp,
    -                      ACE_Module_Type (symbol, name, flags),
    -                      0);
    -      break;
    -    case ACE_STREAM_T:
    -      ACE_NEW_RETURN (stp,
    -                      ACE_Stream_Type (symbol, name, flags),
    -                      0);
    -      break;
    -    default:
    -      ACE_ERROR ((LM_ERROR,
    -                  ASYS_TEXT ("unknown case\n")));
    -      yyerrno++;
    -      break;
    -    }
    -  return stp;
    -}
    -
    -#if defined (DEBUGGING)
    -// Current line number.
    -int yylineno = 1;
    -
    -// Name given on the command-line to envoke the program.
    -ASYS_TCHAR *program_name;
    -
    -// Main driver program.
    -
    -int
    -main (int argc, char *argv[])
    -{
    -  yyin = stdin;
    -  ace_obstack = new ACE_Obstack;
    -
    -  // Try to reopen any filename argument to use YYIN.
    -  if (argc > 1 && (yyin = freopen (argv[1], "r", stdin)) == 0)
    -    (void) ::fprintf (stderr, "usage: %s [file]\n", argv[0]), exit (1);
    -
    -  return yyparse ();
    -}
    -#endif /* DEBUGGING */
    diff --git a/ace/Svc_Conf_Tokens.h b/ace/Svc_Conf_Tokens.h
    deleted file mode 100644
    index f8998fc827d..00000000000
    --- a/ace/Svc_Conf_Tokens.h
    +++ /dev/null
    @@ -1,21 +0,0 @@
    -// $Id$
    -#define ACE_DYNAMIC 257
    -#define ACE_STATIC 258
    -#define ACE_SUSPEND 259
    -#define ACE_RESUME 260
    -#define ACE_REMOVE 261
    -#define ACE_USTREAM 262
    -#define ACE_MODULE_T 263
    -#define ACE_STREAM_T 264
    -#define ACE_SVC_OBJ_T 265
    -#define ACE_ACTIVE 266
    -#define ACE_INACTIVE 267
    -#define ACE_PATHNAME 268
    -#define ACE_IDENT 269
    -#define ACE_STRING 270
    -#define ACE_LPAREN 271
    -#define ACE_RPAREN 272
    -#define ACE_LBRACE 273
    -#define ACE_RBRACE 274
    -#define ACE_STAR 275
    -#define ACE_COLON 276
    diff --git a/ace/Svc_Conf_l.cpp b/ace/Svc_Conf_l.cpp
    deleted file mode 100644
    index 1b6816ab067..00000000000
    --- a/ace/Svc_Conf_l.cpp
    +++ /dev/null
    @@ -1,1561 +0,0 @@
    -#define ACE_BUILD_DLL
    -/* A lexical scanner generated by flex */
    -
    -/* Scanner skeleton version:
    - * Header: /home/daffy/u0/vern/flex/flex-2.4.7/RCS/flex.skl,v 1.2 94/08/03 11:13:24 vern Exp
    - */
    -
    -#define FLEX_SCANNER
    -
    -#include "ace/OS.h"
    -
    -
    -/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
    -#ifdef c_plusplus
    -#ifndef __cplusplus
    -#define __cplusplus
    -#endif
    -#endif
    -
    -
    -#ifdef __cplusplus
    -
    -#include /**/ 
    -#include "ace/OS.h"
    -
    -/* Use prototypes in function declarations. */
    -#define ACE_YY_USE_PROTOS
    -
    -/* The "const" storage-class-modifier is valid. */
    -#define ACE_YY_USE_CONST
    -
    -#else	/* ! __cplusplus */
    -
    -#ifdef __STDC__
    -
    -#define ACE_YY_USE_PROTOS
    -#define ACE_YY_USE_CONST
    -
    -#endif	/* __STDC__ */
    -#endif	/* ! __cplusplus */
    -
    -
    -#ifdef __TURBOC__
    -#define ACE_YY_USE_CONST
    -#endif
    -
    -
    -#ifndef ACE_YY_USE_CONST
    -#ifndef const
    -#define const
    -#endif
    -#endif
    -
    -
    -#ifdef ACE_YY_USE_PROTOS
    -#define ACE_YY_PROTO(proto) proto
    -#else
    -#define ACE_YY_PROTO(proto) ()
    -#endif
    -
    -/* Returned upon end-of-file. */
    -#define ACE_YY_NULL 0
    -
    -/* Promotes a possibly negative, possibly signed char to an unsigned
    - * integer for use as an array index.  If the signed char is negative,
    - * we want to instead treat it as an 8-bit unsigned char, hence the
    - * double cast.
    - */
    -#define ACE_YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
    -
    -/* Enter a start condition.  This macro really ought to take a parameter,
    - * but we do it the disgusting crufty way forced on us by the ()-less
    - * definition of BEGIN.
    - */
    -#define BEGIN ace_yy_start = 1 + 2 *
    -
    -/* Translate the current start state into a value that can be later handed
    - * to BEGIN to return to the state.
    - */
    -#define ACE_YY_START ((ace_yy_start - 1) / 2)
    -
    -/* Action number for EOF rule of a given start state. */
    -#define ACE_YY_STATE_EOF(state) (ACE_YY_END_OF_BUFFER + state + 1)
    -
    -/* Special action meaning "start processing a new file".  Now included
    - * only for backward compatibility with previous versions of flex.
    - */
    -#define ACE_YY_NEW_FILE ace_yyrestart( ace_yyin )
    -
    -#define ACE_YY_END_OF_BUFFER_CHAR 0
    -
    -/* Size of default input buffer. */
    -#define ACE_YY_BUF_SIZE 16384
    -
    -typedef struct ace_yy_buffer_state *ACE_YY_BUFFER_STATE;
    -
    -extern int ace_yyleng;
    -extern FILE *ace_yyin, *ace_yyout;
    -
    -#ifdef __cplusplus
    -extern "C" {
    -#endif
    -	extern int ace_yywrap ACE_YY_PROTO(( void ));
    -#ifdef __cplusplus
    -	}
    -#endif
    -
    -#define EOB_ACT_CONTINUE_SCAN 0
    -#define EOB_ACT_END_OF_FILE 1
    -#define EOB_ACT_LAST_MATCH 2
    -
    -/* The funky do-while in the following #define is used to turn the definition
    - * int a single C statement (which needs a semi-colon terminator).  This
    - * avoids problems with code like:
    - *
    - * 	if ( condition_holds )
    - *		ace_yyless( 5 );
    - *	else
    - *		do_something_else();
    - *
    - * Prior to using the do-while the compiler would get upset at the
    - * "else" because it interpreted the "if" statement as being all
    - * done when it reached the ';' after the ace_yyless() call.
    - */
    -
    -/* Return all but the first 'n' matched characters back to the input stream. */
    -
    -#define ace_yyless(n) \
    -	do \
    -		{ \
    -		/* Undo effects of setting up ace_yytext. */ \
    -		*ace_yy_cp = ace_yy_hold_char; \
    -		ace_yy_c_buf_p = ace_yy_cp = ace_yy_bp + n - ACE_YY_MORE_ADJ; \
    -		ACE_YY_DO_BEFORE_ACTION; /* set up ace_yytext again */ \
    -		} \
    -	while ( 0 )
    -
    -#if 0
    -#define unput(c) ace_yyunput( c, ace_yytext_ptr )
    -#endif /* 0 */
    -
    -
    -struct ace_yy_buffer_state
    -	{
    -	FILE *ace_yy_input_file;
    -
    -	char *ace_yy_ch_buf;		/* input buffer */
    -	char *ace_yy_buf_pos;		/* current position in input buffer */
    -
    -	/* Size of input buffer in bytes, not including room for EOB
    -	 * characters.
    -	 */
    -	int ace_yy_buf_size;
    -
    -	/* Number of characters read into ace_yy_ch_buf, not including EOB
    -	 * characters.
    -	 */
    -	int ace_yy_n_chars;
    -
    -	/* Whether this is an "interactive" input source; if so, and
    -	 * if we're using stdio for input, then we want to use getc()
    -	 * instead of fread(), to make sure we stop fetching input after
    -	 * each newline.
    -	 */
    -	int ace_yy_is_interactive;
    -
    -	/* Whether to try to fill the input buffer when we reach the
    -	 * end of it.
    -	 */
    -	int ace_yy_fill_buffer;
    -
    -	int ace_yy_buffer_status;
    -#define ACE_YY_BUFFER_NEW 0
    -#define ACE_YY_BUFFER_NORMAL 1
    -	/* When an EOF's been seen but there's still some text to process
    -	 * then we mark the buffer as ACE_YY_EOF_PENDING, to indicate that we
    -	 * shouldn't try reading from the input source any more.  We might
    -	 * still have a bunch of tokens to match, though, because of
    -	 * possible backing-up.
    -	 *
    -	 * When we actually see the EOF, we change the status to "new"
    -	 * (via ace_yyrestart()), so that the user can continue scanning by
    -	 * just pointing ace_yyin at a new input file.
    -	 */
    -#define ACE_YY_BUFFER_EOF_PENDING 2
    -	};
    -
    -static ACE_YY_BUFFER_STATE ace_yy_current_buffer = 0;
    -
    -/* We provide macros for accessing buffer states in case in the
    - * future we want to put the buffer states in a more general
    - * "scanner state".
    - */
    -#define ACE_YY_CURRENT_BUFFER ace_yy_current_buffer
    -
    -
    -/* ace_yy_hold_char holds the character lost when ace_yytext is formed. */
    -static char ace_yy_hold_char;
    -
    -static int ace_yy_n_chars;		/* number of characters read into ace_yy_ch_buf */
    -
    -
    -int ace_yyleng;
    -
    -/* Points to current character in buffer. */
    -static char *ace_yy_c_buf_p = (char *) 0;
    -static int ace_yy_init = 1;		/* whether we need to initialize */
    -static int ace_yy_start = 0;	/* start state number */
    -
    -/* Flag which is used to allow ace_yywrap()'s to do buffer switches
    - * instead of setting up a fresh ace_yyin.  A bit of a hack ...
    - */
    -static int ace_yy_did_buffer_switch_on_eof;
    -
    -#if 0
    -static void ace_yyunput ACE_YY_PROTO(( int c, char *buf_ptr ));
    -#endif /* 0 */
    -void ace_yyrestart ACE_YY_PROTO(( FILE *input_file ));
    -void ace_yy_switch_to_buffer ACE_YY_PROTO(( ACE_YY_BUFFER_STATE new_buffer ));
    -void ace_yy_load_buffer_state ACE_YY_PROTO(( void ));
    -ACE_YY_BUFFER_STATE ace_yy_create_buffer ACE_YY_PROTO(( FILE *file, int size ));
    -void ace_yy_delete_buffer ACE_YY_PROTO(( ACE_YY_BUFFER_STATE b ));
    -void ace_yy_init_buffer ACE_YY_PROTO(( ACE_YY_BUFFER_STATE b, FILE *file ));
    -
    -#if 0
    -static int ace_yy_start_stack_ptr = 0;
    -static int ace_yy_start_stack_depth = 0;
    -static int *ace_yy_start_stack = 0;
    -static void ace_yy_push_state ACE_YY_PROTO(( int new_state ));
    -static void ace_yy_pop_state ACE_YY_PROTO(( void ));
    -static int ace_yy_top_state ACE_YY_PROTO(( void ));
    -#endif /* 0 */
    -
    -static void *ace_yy_flex_alloc ACE_YY_PROTO(( unsigned int ));
    -static void *ace_yy_flex_realloc ACE_YY_PROTO(( void *, unsigned int ));
    -static void ace_yy_flex_free ACE_YY_PROTO(( void * ));
    -
    -#define ace_yy_new_buffer ace_yy_create_buffer
    -
    -#define INITIAL 0
    -#define PARAMETERS 1
    -#define NORMAL 2
    -typedef unsigned char ACE_YY_CHAR;
    -typedef int ace_yy_state_type;
    -FILE *ace_yyin = (FILE *) 0, *ace_yyout = (FILE *) 0;
    -extern char *ace_yytext;
    -#define ace_yytext_ptr ace_yytext
    -
    -#ifndef ace_yytext_ptr
    -static void ace_yy_flex_strncpy ACE_YY_PROTO(( char *, const char *, int ));
    -#endif
    -
    -#ifdef __cplusplus
    -static int ace_yyinput ACE_YY_PROTO(( void ));
    -#else
    -static int input ACE_YY_PROTO(( void ));
    -#endif
    -
    -static ace_yy_state_type ace_yy_get_previous_state ACE_YY_PROTO(( void ));
    -static ace_yy_state_type ace_yy_try_NUL_trans ACE_YY_PROTO(( ace_yy_state_type current_state ));
    -static int ace_yy_get_next_buffer ACE_YY_PROTO(( void ));
    -static void ace_yy_fatal_error ACE_YY_PROTO(( const char msg[] ));
    -
    -/* Done after the current pattern has been matched and before the
    - * corresponding action - sets up ace_yytext.
    - */
    -#define ACE_YY_DO_BEFORE_ACTION \
    -	ace_yytext_ptr = ace_yy_bp; \
    -	ace_yyleng = ace_yy_cp - ace_yy_bp; \
    -	ace_yy_hold_char = *ace_yy_cp; \
    -	*ace_yy_cp = '\0'; \
    -	ace_yy_c_buf_p = ace_yy_cp;
    -
    -#define ACE_YY_END_OF_BUFFER 26
    -static const short int ace_yy_accept[104] =
    -    {   0,
    -        0,    0,    0,    0,    0,    0,   26,   24,   22,   23,
    -       24,   21,   15,   16,   14,   21,   13,   20,   20,   20,
    -       20,   20,   20,   20,   20,   20,   17,   18,   24,   22,
    -        0,   19,   21,    0,   20,   20,   20,   20,   20,   20,
    -       20,   20,   20,   20,    0,    1,   20,   20,   20,   20,
    -       20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
    -       20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
    -       20,   20,   20,   20,   20,   20,   20,   20,   20,    8,
    -       10,   20,   11,   20,   20,    6,    5,    3,    7,   20,
    -       20,    2,   20,    4,   20,   12,   20,   20,   20,   20,
    -
    -       20,    9,    0
    -    } ;
    -
    -static const int ace_yy_ec[256] =
    -    {   0,
    -        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
    -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    -        1,    4,    5,    6,    7,    5,    8,    5,    5,    9,
    -       10,   11,    5,    5,   12,   12,   12,   13,   13,   13,
    -       13,   13,   13,   13,   13,   13,   13,   14,    5,    5,
    -        5,    5,    5,    5,   15,   16,   16,   16,   17,   16,
    -       16,   16,   16,   16,   16,   16,   18,   16,   19,   16,
    -       16,   20,   21,   22,   16,   16,   16,   16,   16,   16,
    -        5,   12,    5,    5,   23,    5,   24,   25,   26,   27,
    -
    -       28,   16,   16,   16,   29,   30,   16,   31,   32,   33,
    -       34,   35,   16,   36,   37,   38,   39,   40,   16,   16,
    -       41,   16,   42,    5,   43,    5,    1,    1,    1,    1,
    -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    -
    -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    -        1,    1,    1,    1,    1
    -    } ;
    -
    -static const int ace_yy_meta[44] =
    -    {   0,
    -        1,    1,    1,    2,    2,    2,    2,    3,    2,    2,
    -        2,    3,    3,    3,    3,    3,    3,    3,    3,    3,
    -        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
    -        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
    -        3,    2,    2
    -    } ;
    -
    -static const short int ace_yy_base[108] =
    -    {   0,
    -        0,  112,    0,  107,    0,   99,  104,  439,   42,  439,
    -       95,   79,  439,  439,  439,   77,  439,   37,   40,   45,
    -       48,   56,   57,   64,   67,   72,  439,  439,   87,   59,
    -       79,   71,   52,   44,   75,   80,   88,   91,  101,  104,
    -      109,  112,  117,  120,   52,  439,  128,  138,  146,  151,
    -      154,  161,  162,  169,  176,  177,  185,  186,  195,  204,
    -      207,  214,  215,  222,  223,  230,  237,  240,  252,  255,
    -      262,  263,  270,  271,  278,  281,  289,  290,  299,  300,
    -      309,  312,  317,  322,  325,  330,  333,  338,  341,  346,
    -      349,  354,  362,  363,  370,  371,  379,  380,  387,  388,
    -
    -      395,  404,  439,  432,   47,   44,  435
    -    } ;
    -
    -static const short int ace_yy_def[108] =
    -    {   0,
    -      103,    1,    1,    1,    1,    1,  103,  103,  103,  103,
    -      104,  105,  103,  103,  103,  105,  103,  106,  106,  106,
    -      106,  106,  106,  106,  106,  106,  103,  103,  107,  103,
    -      104,  104,  105,  105,  106,  106,  106,  106,  106,  106,
    -      106,  106,  106,  106,  107,  103,  106,  106,  106,  106,
    -      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    -      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    -      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    -      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    -      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    -
    -      106,  106,    0,  103,  103,  103,  103
    -    } ;
    -
    -static const short int ace_yy_nxt[483] =
    -    {   0,
    -        8,    9,   10,    9,    8,   11,    8,   12,   13,   14,
    -       15,   16,   16,   17,   18,   18,   18,   19,   18,   18,
    -       20,   18,   21,   22,   18,   18,   23,   18,   24,   18,
    -       18,   18,   18,   18,   18,   25,   26,   18,   18,   18,
    -       18,   27,   28,   30,   33,   30,   35,   33,   33,   33,
    -       34,   33,   33,   34,   46,   33,   33,  103,   34,   33,
    -       30,  103,   30,   33,   33,  103,   37,   33,   33,   34,
    -       34,   33,   38,   36,   33,   33,   32,   34,   33,   33,
    -       34,   39,   33,   33,   32,   34,   33,   33,  103,   46,
    -      103,   33,   34,  103,   42,   33,   41,   40,   33,   33,
    -
    -       32,  103,   33,  103,  103,   29,   47,   48,   33,   43,
    -       44,   33,   33,   29,  103,   33,   33,  103,   29,   33,
    -       33,  103,  103,   33,   33,  103,   49,   33,   33,  103,
    -      103,   33,   52,  103,  103,   33,   51,  103,   50,   33,
    -       55,  103,  103,   53,  103,   33,  103,  103,   54,   33,
    -      103,  103,   56,   33,   59,  103,   57,   33,   33,  103,
    -      103,   33,   33,  103,  103,   33,   58,  103,   33,   33,
    -      103,  103,   33,   33,  103,  103,   33,   62,  103,   61,
    -       33,  103,  103,   33,   33,   60,   63,   33,   33,  103,
    -      103,  103,   33,   33,  103,   64,   33,   33,  103,  103,
    -
    -      103,  103,   33,  103,   67,  103,   33,   65,  103,   70,
    -      103,   33,  103,   66,   33,   33,   69,  103,   33,   68,
    -      103,   33,   33,  103,  103,   33,   33,  103,  103,   33,
    -       33,  103,   71,   33,   33,  103,  103,   33,  103,  103,
    -      103,   33,  103,  103,   33,   73,   72,   33,   33,  103,
    -      103,   33,   74,  103,   76,  103,  103,  103,   77,   33,
    -       78,   75,   33,   33,  103,  103,   33,   79,  103,   33,
    -       33,  103,   81,   33,   33,  103,  103,   33,   33,   80,
    -      103,   33,   33,  103,  103,   33,  103,   82,   33,   33,
    -       83,  103,   33,  103,  103,  103,   33,   33,   84,   85,
    -
    -       33,   33,  103,  103,  103,   86,   33,   33,   87,  103,
    -       33,   33,  103,  103,   88,  103,   33,  103,  103,   33,
    -       33,   89,  103,   33,   33,  103,  103,  103,   33,   33,
    -      103,   90,   33,   33,  103,  103,   33,   33,  103,   91,
    -       33,   33,  103,  103,   33,   33,  103,   92,   33,   33,
    -      103,  103,   33,   33,  103,  103,   33,   33,  103,  103,
    -       33,   33,  103,  103,   93,   33,  103,  103,  103,   33,
    -       33,   95,   94,   33,   33,  103,  103,   33,   33,  103,
    -      103,   33,   33,  103,  103,  103,   33,   33,   97,   96,
    -       33,   33,  103,  103,   33,   33,  103,  103,   33,   33,
    -
    -      103,  103,   33,   98,  103,  103,   33,  103,  103,   99,
    -      103,   33,  103,  101,  100,   33,  103,  103,  103,  103,
    -      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    -      103,  103,  102,   31,   31,   45,   45,   45,    7,  103,
    -      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    -      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    -      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    -      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    -      103,  103
    -    } ;
    -
    -static const short int ace_yy_chk[483] =
    -    {   0,
    -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    -        1,    1,    1,    9,   18,    9,  106,   19,   18,  105,
    -       18,   19,   20,   19,   45,   21,   20,   34,   20,   21,
    -       30,   21,   30,   22,   23,   33,   20,   22,   23,   22,
    -       23,   24,   20,   19,   25,   24,   32,   24,   25,   26,
    -       25,   22,   35,   26,   31,   26,   35,   36,   35,   29,
    -       16,   36,   12,   36,   25,   37,   24,   23,   38,   37,
    -
    -       11,   37,   38,    7,   38,    6,   36,   37,   39,   26,
    -       26,   40,   39,    4,   39,   40,   41,   40,    2,   42,
    -       41,    0,   41,   42,   43,   42,   38,   44,   43,    0,
    -       43,   44,   41,   44,    0,   47,   40,    0,   39,   47,
    -       43,   47,    0,   42,    0,   48,    0,    0,   42,   48,
    -        0,   48,   43,   49,   48,    0,   44,   49,   50,   49,
    -        0,   51,   50,    0,   50,   51,   47,   51,   52,   53,
    -        0,    0,   52,   53,   52,   53,   54,   51,    0,   50,
    -       54,    0,   54,   55,   56,   49,   52,   55,   56,   55,
    -       56,    0,   57,   58,    0,   53,   57,   58,   57,   58,
    -
    -        0,    0,   59,    0,   56,    0,   59,   54,   59,   59,
    -        0,   60,    0,   55,   61,   60,   58,   60,   61,   57,
    -       61,   62,   63,    0,    0,   62,   63,   62,   63,   64,
    -       65,    0,   60,   64,   65,   64,   65,   66,    0,    0,
    -        0,   66,    0,   66,   67,   62,   61,   68,   67,    0,
    -       67,   68,   63,   68,   65,    0,    0,    0,   66,   69,
    -       67,   64,   70,   69,    0,   69,   70,   68,   70,   71,
    -       72,    0,   70,   71,   72,   71,   72,   73,   74,   69,
    -        0,   73,   74,   73,   74,   75,    0,   71,   76,   75,
    -       72,   75,   76,    0,   76,    0,   77,   78,   73,   74,
    -
    -       77,   78,   77,   78,    0,   75,   79,   80,   76,    0,
    -       79,   80,   79,   80,   77,    0,   81,    0,    0,   82,
    -       81,   78,   81,   82,   83,   82,    0,    0,   83,   84,
    -       83,   79,   85,   84,    0,   84,   85,   86,   85,   82,
    -       87,   86,    0,   86,   87,   88,   87,   84,   89,   88,
    -        0,   88,   89,   90,   89,    0,   91,   90,    0,   90,
    -       91,   92,   91,    0,   85,   92,    0,   92,    0,   93,
    -       94,   91,   90,   93,   94,   93,   94,   95,   96,    0,
    -        0,   95,   96,   95,   96,    0,   97,   98,   95,   93,
    -       97,   98,   97,   98,   99,  100,    0,    0,   99,  100,
    -
    -       99,  100,  101,   97,    0,    0,  101,    0,  101,   98,
    -        0,  102,    0,  100,   99,  102,    0,  102,    0,    0,
    -        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    -        0,    0,  101,  104,  104,  107,  107,  107,  103,  103,
    -      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    -      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    -      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    -      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    -      103,  103
    -    } ;
    -
    -static ace_yy_state_type ace_yy_last_accepting_state;
    -static char *ace_yy_last_accepting_cpos;
    -
    -/* The intent behind this definition is that it'll catch
    - * any uses of REJECT which flex missed.
    - */
    -#define REJECT reject_used_but_not_detected
    -#define ace_yymore() ace_yymore_used_but_not_detected
    -#define ACE_YY_MORE_ADJ 0
    -char *ace_yytext;
    -# line 1 "Svc_Conf.l"
    -# line 2 "Svc_Conf.l"
    -// $Id$
    -// Sample lexical analysis for regular expression subset.  Must be
    -// compiled with FLEX and an ANSI C++ compiler.
    -
    -// Lexical tokens values defined by YACC.
    -#include "ace/Svc_Conf.h"
    -#include "ace/Svc_Conf_Tokens.h"
    -
    -ACE_RCSID(ace, Svc_Conf_l, "$Id$")
    -
    -// Keeps track of the current line for debugging output.
    -int ace_yylineno = 1;
    -
    -// Keeps track of the number of errors encountered so far.
    -int ace_yyerrno = 0;
    -
    -// Used to parse service configurator directives from a string rather
    -// than from a svc.conf file.
    -const ASYS_TCHAR *ace_yydirective = 0;
    -
    -#define token(x)  x
    -
    -/* Macros after this point can all be overridden by user definitions in
    - * section 1.
    - */
    -
    -#ifdef ACE_YY_MALLOC_DECL
    -ACE_YY_MALLOC_DECL
    -#else
    -#if __STDC__
    -#ifndef __cplusplus
    -#include /**/ 
    -#endif
    -#else
    -/* Just try to get by without declaring the routines.  This will fail
    - * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
    - * or sizeof(void*) != sizeof(int).
    - */
    -#endif
    -#endif
    -
    -/* Amount of stuff to slurp up with each read. */
    -#ifndef ACE_YY_READ_BUF_SIZE
    -#define ACE_YY_READ_BUF_SIZE 8192
    -#endif
    -
    -/* Copy whatever the last rule matched to the standard output. */
    -
    -#ifndef ACE_SVC_CONF_ECHO
    -/* This used to be an fputs(), but since the string might contain NUL's,
    - * we now use fwrite().
    - */
    -#define ACE_SVC_CONF_ECHO (void) fwrite( ace_yytext, ace_yyleng, 1, ace_yyout )
    -#endif
    -
    -/* Gets input and stuffs it into "buf".  number of characters read, or ACE_YY_NULL,
    - * is returned in "result".
    - */
    -#ifndef ACE_YY_INPUT
    -#define ACE_YY_INPUT(buf,result,max_size) \
    -	if ( ace_yy_current_buffer->ace_yy_is_interactive ) \
    -		{ \
    -		int c = getc( ace_yyin ); \
    -		result = c == EOF ? 0 : 1; \
    -		buf[0] = (char) c; \
    -		} \
    -	else if ( ((result = fread( buf, 1, max_size, ace_yyin )) == 0) \
    -		  && ferror( ace_yyin ) ) \
    -		ACE_YY_FATAL_ERROR( "input in flex scanner failed" );
    -#endif
    -
    -/* No semi-colon after return; correct usage is to write "ace_yyterminate();" -
    - * we don't want an extra ';' after the "return" because that will cause
    - * some compilers to complain about unreachable statements.
    - */
    -#ifndef ace_yyterminate
    -#define ace_yyterminate() return ACE_YY_NULL
    -#endif
    -
    -/* Number of entries by which start-condition stack grows. */
    -#ifndef ACE_YY_START_STACK_INCR
    -#define ACE_YY_START_STACK_INCR 25
    -#endif
    -
    -/* Report a fatal error. */
    -#ifndef ACE_YY_FATAL_ERROR
    -#define ACE_YY_FATAL_ERROR(msg) ace_yy_fatal_error( msg )
    -#endif
    -
    -/* Default declaration of generated scanner - a define so the user can
    - * easily add parameters.
    - */
    -#ifndef ACE_YY_DECL
    -#define ACE_YY_DECL int ace_yylex ACE_YY_PROTO(( void ))
    -#endif
    -
    -/* Code executed at the beginning of each rule, after ace_yytext and ace_yyleng
    - * have been set up.
    - */
    -#ifndef ACE_YY_USER_ACTION
    -#define ACE_YY_USER_ACTION
    -#endif
    -
    -/* Code executed at the end of each rule. */
    -#ifndef ACE_YY_BREAK
    -#define ACE_YY_BREAK break;
    -#endif
    -
    -ACE_YY_DECL
    -	{
    -	register ace_yy_state_type ace_yy_current_state;
    -	register char *ace_yy_cp = 0, *ace_yy_bp = 0;
    -	register int ace_yy_act;
    -
    -# line 39 "Svc_Conf.l"
    -
    -
    -
    -	if ( ace_yy_init )
    -		{
    -#ifdef ACE_YY_USER_INIT
    -		ACE_YY_USER_INIT;
    -#endif
    -
    -		if ( ! ace_yy_start )
    -			ace_yy_start = 1;	/* first start state */
    -
    -		if ( ! ace_yyin )
    -			ace_yyin = stdin;
    -
    -		if ( ! ace_yyout )
    -			ace_yyout = stdout;
    -
    -		if ( ace_yy_current_buffer )
    -			ace_yy_init_buffer( ace_yy_current_buffer, ace_yyin );
    -		else
    -			ace_yy_current_buffer =
    -				ace_yy_create_buffer( ace_yyin, ACE_YY_BUF_SIZE );
    -
    -		ace_yy_load_buffer_state();
    -
    -		ace_yy_init = 0;
    -		}
    -
    -	while ( 1 )		/* loops until end-of-file is reached */
    -		{
    -		ace_yy_cp = ace_yy_c_buf_p;
    -
    -		/* Support of ace_yytext. */
    -		*ace_yy_cp = ace_yy_hold_char;
    -
    -		/* ace_yy_bp points to the position in ace_yy_ch_buf of the start of
    -		 * the current run.
    -		 */
    -		ace_yy_bp = ace_yy_cp;
    -
    -		ace_yy_current_state = ace_yy_start;
    -		if ( ace_yy_bp[-1] == '\n' )
    -			++ace_yy_current_state;
    -ace_yy_match:
    -		do
    -			{
    -			register ACE_YY_CHAR ace_yy_c = ace_yy_ec[ACE_YY_SC_TO_UI(*ace_yy_cp)];
    -			if ( ace_yy_accept[ace_yy_current_state] )
    -				{
    -				ace_yy_last_accepting_state = ace_yy_current_state;
    -				ace_yy_last_accepting_cpos = ace_yy_cp;
    -				}
    -			while ( ace_yy_chk[ace_yy_base[ace_yy_current_state] + ace_yy_c] != ace_yy_current_state )
    -				{
    -				ace_yy_current_state = (int) ace_yy_def[ace_yy_current_state];
    -				if ( ace_yy_current_state >= 104 )
    -					ace_yy_c = ace_yy_meta[(unsigned int) ace_yy_c];
    -				}
    -			ace_yy_current_state = ace_yy_nxt[ace_yy_base[ace_yy_current_state] + (unsigned int) ace_yy_c];
    -			++ace_yy_cp;
    -			}
    -		while ( ace_yy_base[ace_yy_current_state] != 439 );
    -
    -ace_yy_find_action:
    -		ace_yy_act = ace_yy_accept[ace_yy_current_state];
    -
    -		ACE_YY_DO_BEFORE_ACTION;
    -
    -
    -do_action:	/* This label is used only to access EOF actions. */
    -
    -
    -		switch ( ace_yy_act )
    -	{ /* beginning of action switch */
    -			case 0: /* must back up */
    -			/* undo the effects of ACE_YY_DO_BEFORE_ACTION */
    -			*ace_yy_cp = ace_yy_hold_char;
    -			ace_yy_cp = ace_yy_last_accepting_cpos;
    -			ace_yy_current_state = ace_yy_last_accepting_state;
    -			goto ace_yy_find_action;
    -
    -case 1:
    -*ace_yy_cp = ace_yy_hold_char; /* undo effects of setting up ace_yytext */
    -ace_yy_c_buf_p = ace_yy_cp -= 1;
    -ACE_YY_DO_BEFORE_ACTION; /* set up ace_yytext again */
    -ACE_YY_USER_ACTION
    -# line 41 "Svc_Conf.l"
    -; /* EMPTY */
    -	ACE_YY_BREAK
    -case 2:
    -ACE_YY_USER_ACTION
    -# line 42 "Svc_Conf.l"
    -{ return token (ACE_DYNAMIC); }
    -	/* ACE_YY_BREAK */
    -case 3:
    -ACE_YY_USER_ACTION
    -# line 43 "Svc_Conf.l"
    -{ return token (ACE_STATIC); }
    -	/* ACE_YY_BREAK */
    -case 4:
    -ACE_YY_USER_ACTION
    -# line 44 "Svc_Conf.l"
    -{ return token (ACE_SUSPEND); }
    -	/* ACE_YY_BREAK */
    -case 5:
    -ACE_YY_USER_ACTION
    -# line 45 "Svc_Conf.l"
    -{ return token (ACE_RESUME); }
    -	/* ACE_YY_BREAK */
    -case 6:
    -ACE_YY_USER_ACTION
    -# line 46 "Svc_Conf.l"
    -{ return token (ACE_REMOVE); }
    -	/* ACE_YY_BREAK */
    -case 7:
    -ACE_YY_USER_ACTION
    -# line 47 "Svc_Conf.l"
    -{ return token (ACE_USTREAM); }
    -	/* ACE_YY_BREAK */
    -case 8:
    -ACE_YY_USER_ACTION
    -# line 48 "Svc_Conf.l"
    -{ return token (ACE_MODULE_T); }
    -	/* ACE_YY_BREAK */
    -case 9:
    -ACE_YY_USER_ACTION
    -# line 49 "Svc_Conf.l"
    -{ return token (ACE_SVC_OBJ_T); }
    -	/* ACE_YY_BREAK */
    -case 10:
    -ACE_YY_USER_ACTION
    -# line 50 "Svc_Conf.l"
    -{ return token (ACE_STREAM_T); }
    -	/* ACE_YY_BREAK */
    -case 11:
    -ACE_YY_USER_ACTION
    -# line 51 "Svc_Conf.l"
    -{ return token (ACE_ACTIVE); }
    -	/* ACE_YY_BREAK */
    -case 12:
    -ACE_YY_USER_ACTION
    -# line 52 "Svc_Conf.l"
    -{ return token (ACE_INACTIVE); }
    -	/* ACE_YY_BREAK */
    -case 13:
    -ACE_YY_USER_ACTION
    -# line 53 "Svc_Conf.l"
    -{ return token (ACE_COLON); }
    -	/* ACE_YY_BREAK */
    -case 14:
    -ACE_YY_USER_ACTION
    -# line 54 "Svc_Conf.l"
    -{ return token (ACE_STAR); }
    -	/* ACE_YY_BREAK */
    -case 15:
    -ACE_YY_USER_ACTION
    -# line 55 "Svc_Conf.l"
    -{ return token (ACE_LPAREN); }
    -	/* ACE_YY_BREAK */
    -case 16:
    -ACE_YY_USER_ACTION
    -# line 56 "Svc_Conf.l"
    -{ return token (ACE_RPAREN); }
    -	/* ACE_YY_BREAK */
    -case 17:
    -ACE_YY_USER_ACTION
    -# line 57 "Svc_Conf.l"
    -{ return token (ACE_LBRACE); }
    -	/* ACE_YY_BREAK */
    -case 18:
    -ACE_YY_USER_ACTION
    -# line 58 "Svc_Conf.l"
    -{ return token (ACE_RBRACE); }
    -	/* ACE_YY_BREAK */
    -case 19:
    -ACE_YY_USER_ACTION
    -# line 59 "Svc_Conf.l"
    -{ // Eliminate the opening and closing double quotes
    -		        *ACE_OS::strrchr (ace_yytext, '"') = '\0';
    -			ace_yyleng -= 1;
    -                        ace_yylval.ident_ = ace_obstack->copy (ace_yytext + 1, ace_yyleng);
    -			return token (ACE_STRING); }
    -	/* ACE_YY_BREAK */
    -case 20:
    -ACE_YY_USER_ACTION
    -# line 64 "Svc_Conf.l"
    -{
    -		        ace_yylval.ident_ = ace_obstack->copy (ace_yytext, ace_yyleng);
    -			return token (ACE_IDENT);
    -		      }
    -	/* ACE_YY_BREAK */
    -case 21:
    -ACE_YY_USER_ACTION
    -# line 68 "Svc_Conf.l"
    -{
    -		        ace_yylval.ident_ = ace_obstack->copy (ace_yytext, ace_yyleng);
    -			return token (ACE_PATHNAME);
    -		      }
    -	/* ACE_YY_BREAK */
    -case 22:
    -ACE_YY_USER_ACTION
    -# line 72 "Svc_Conf.l"
    -; /* EMPTY */
    -	ACE_YY_BREAK
    -case 23:
    -ACE_YY_USER_ACTION
    -# line 73 "Svc_Conf.l"
    -{ ace_yylineno++; }
    -	ACE_YY_BREAK
    -case 24:
    -ACE_YY_USER_ACTION
    -# line 74 "Svc_Conf.l"
    -{ ACE_ERROR ((LM_ERROR, ASYS_TEXT ("unknown char = %d\n"),
    -              *ace_yytext)); }
    -	ACE_YY_BREAK
    -case ACE_YY_STATE_EOF(INITIAL):
    -case ACE_YY_STATE_EOF(PARAMETERS):
    -case ACE_YY_STATE_EOF(NORMAL):
    -# line 75 "Svc_Conf.l"
    -{ ACE_YY_NEW_FILE; ace_yyterminate(); }
    -	/* ACE_YY_BREAK */
    -case 25:
    -ACE_YY_USER_ACTION
    -# line 76 "Svc_Conf.l"
    -ACE_SVC_CONF_ECHO;
    -	ACE_YY_BREAK
    -
    -	case ACE_YY_END_OF_BUFFER:
    -		{
    -		/* Amount of text matched not including the EOB char. */
    -		int ace_yy_amount_of_matched_text = ace_yy_cp - ace_yytext_ptr - 1;
    -
    -		/* Undo the effects of ACE_YY_DO_BEFORE_ACTION. */
    -		*ace_yy_cp = ace_yy_hold_char;
    -
    -		if ( ace_yy_current_buffer->ace_yy_buffer_status == ACE_YY_BUFFER_NEW )
    -			{
    -			/* We're scanning a new file or input source.  It's
    -			 * possible that this happened because the user
    -			 * just pointed ace_yyin at a new source and called
    -			 * ace_yylex().  If so, then we have to assure
    -			 * consistency between ace_yy_current_buffer and our
    -			 * globals.  Here is the right place to do so, because
    -			 * this is the first action (other than possibly a
    -			 * back-up) that will match for the new input source.
    -			 */
    -			ace_yy_n_chars = ace_yy_current_buffer->ace_yy_n_chars;
    -			ace_yy_current_buffer->ace_yy_input_file = ace_yyin;
    -			ace_yy_current_buffer->ace_yy_buffer_status = ACE_YY_BUFFER_NORMAL;
    -			}
    -
    -		/* Note that here we test for ace_yy_c_buf_p "<=" to the position
    -		 * of the first EOB in the buffer, since ace_yy_c_buf_p will
    -		 * already have been incremented past the NUL character
    -		 * (since all states make transitions on EOB to the
    -		 * end-of-buffer state).  Contrast this with the test
    -		 * in input().
    -		 */
    -		if ( ace_yy_c_buf_p <= &ace_yy_current_buffer->ace_yy_ch_buf[ace_yy_n_chars] )
    -			{ /* This was really a NUL. */
    -			ace_yy_state_type ace_yy_next_state;
    -
    -			ace_yy_c_buf_p = ace_yytext_ptr + ace_yy_amount_of_matched_text;
    -
    -			ace_yy_current_state = ace_yy_get_previous_state();
    -
    -			/* Okay, we're now positioned to make the NUL
    -			 * transition.  We couldn't have
    -			 * ace_yy_get_previous_state() go ahead and do it
    -			 * for us because it doesn't know how to deal
    -			 * with the possibility of jamming (and we don't
    -			 * want to build jamming into it because then it
    -			 * will run more slowly).
    -			 */
    -
    -			ace_yy_next_state = ace_yy_try_NUL_trans( ace_yy_current_state );
    -
    -			ace_yy_bp = ace_yytext_ptr + ACE_YY_MORE_ADJ;
    -
    -			if ( ace_yy_next_state )
    -				{
    -				/* Consume the NUL. */
    -				ace_yy_cp = ++ace_yy_c_buf_p;
    -				ace_yy_current_state = ace_yy_next_state;
    -				goto ace_yy_match;
    -				}
    -
    -			else
    -				{
    -							ace_yy_cp = ace_yy_c_buf_p;
    -				goto ace_yy_find_action;
    -				}
    -			}
    -
    -		else switch ( ace_yy_get_next_buffer() )
    -			{
    -			case EOB_ACT_END_OF_FILE:
    -				{
    -				ace_yy_did_buffer_switch_on_eof = 0;
    -
    -				if ( ace_yywrap() )
    -					{
    -					/* Note: because we've taken care in
    -					 * ace_yy_get_next_buffer() to have set up
    -					 * ace_yytext, we can now set up
    -					 * ace_yy_c_buf_p so that if some total
    -					 * hoser (like flex itself) wants to
    -					 * call the scanner after we return the
    -					 * ACE_YY_NULL, it'll still work - another
    -					 * ACE_YY_NULL will get returned.
    -					 */
    -					ace_yy_c_buf_p = ace_yytext_ptr + ACE_YY_MORE_ADJ;
    -
    -					ace_yy_act = ACE_YY_STATE_EOF(ACE_YY_START);
    -					goto do_action;
    -					}
    -
    -				else
    -					{
    -					if ( ! ace_yy_did_buffer_switch_on_eof )
    -						ACE_YY_NEW_FILE;
    -					}
    -				break;
    -				}
    -
    -			case EOB_ACT_CONTINUE_SCAN:
    -				ace_yy_c_buf_p =
    -					ace_yytext_ptr + ace_yy_amount_of_matched_text;
    -
    -				ace_yy_current_state = ace_yy_get_previous_state();
    -
    -				ace_yy_cp = ace_yy_c_buf_p;
    -				ace_yy_bp = ace_yytext_ptr + ACE_YY_MORE_ADJ;
    -				goto ace_yy_match;
    -
    -			case EOB_ACT_LAST_MATCH:
    -				ace_yy_c_buf_p =
    -				&ace_yy_current_buffer->ace_yy_ch_buf[ace_yy_n_chars];
    -
    -				ace_yy_current_state = ace_yy_get_previous_state();
    -
    -				ace_yy_cp = ace_yy_c_buf_p;
    -				ace_yy_bp = ace_yytext_ptr + ACE_YY_MORE_ADJ;
    -				goto ace_yy_find_action;
    -			}
    -		break;
    -		}
    -
    -	default:
    -		ACE_YY_FATAL_ERROR(
    -			"fatal flex scanner internal error--no action found" );
    -	} /* end of action switch */
    -		} /* end of scanning one token */
    -	} /* end of ace_yylex */
    -
    -
    -/* ace_yy_get_next_buffer - try to read in a new buffer
    - *
    - * Returns a code representing an action:
    - *	EOB_ACT_LAST_MATCH -
    - *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
    - *	EOB_ACT_END_OF_FILE - end of file
    - */
    -
    -static int ace_yy_get_next_buffer()
    -	{
    -	register char *dest = ace_yy_current_buffer->ace_yy_ch_buf;
    -	register char *source = ace_yytext_ptr - 1; /* copy prev. char, too */
    -	register int number_to_move, i;
    -	int ret_val;
    -
    -	if ( ace_yy_c_buf_p > &ace_yy_current_buffer->ace_yy_ch_buf[ace_yy_n_chars + 1] )
    -		ACE_YY_FATAL_ERROR(
    -		"fatal flex scanner internal error--end of buffer missed" );
    -
    -	if ( ace_yy_current_buffer->ace_yy_fill_buffer == 0 )
    -		{ /* Don't try to fill the buffer, so this is an EOF. */
    -		if ( ace_yy_c_buf_p - ace_yytext_ptr - ACE_YY_MORE_ADJ == 1 )
    -			{
    -			/* We matched a singled characater, the EOB, so
    -			 * treat this as a final EOF.
    -			 */
    -			return EOB_ACT_END_OF_FILE;
    -			}
    -
    -		else
    -			{
    -			/* We matched some text prior to the EOB, first
    -			 * process it.
    -			 */
    -			return EOB_ACT_LAST_MATCH;
    -			}
    -		}
    -
    -	/* Try to read more data. */
    -
    -	/* First move last chars to start of buffer. */
    -	number_to_move = ace_yy_c_buf_p - ace_yytext_ptr;
    -
    -	for ( i = 0; i < number_to_move; ++i )
    -		*(dest++) = *(source++);
    -
    -	if ( ace_yy_current_buffer->ace_yy_buffer_status == ACE_YY_BUFFER_EOF_PENDING )
    -		/* don't do the read, it's not guaranteed to return an EOF,
    -		 * just force an EOF
    -		 */
    -		ace_yy_n_chars = 0;
    -
    -	else
    -		{
    -		int num_to_read =
    -			ace_yy_current_buffer->ace_yy_buf_size - number_to_move - 1;
    -
    -		while ( num_to_read <= 0 )
    -			{ /* Not enough room in the buffer - grow it. */
    -#ifdef ACE_YY_USES_REJECT
    -			ACE_YY_FATAL_ERROR(
    -"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
    -#else
    -
    -			/* just a shorter name for the current buffer */
    -			ACE_YY_BUFFER_STATE b = ace_yy_current_buffer;
    -
    -			int ace_yy_c_buf_p_offset = ace_yy_c_buf_p - b->ace_yy_ch_buf;
    -
    -			b->ace_yy_buf_size *= 2;
    -			b->ace_yy_ch_buf = (char *)
    -				ace_yy_flex_realloc( (void *) b->ace_yy_ch_buf,
    -						 b->ace_yy_buf_size );
    -
    -			if ( ! b->ace_yy_ch_buf )
    -				ACE_YY_FATAL_ERROR(
    -				"fatal error - scanner input buffer overflow" );
    -
    -			ace_yy_c_buf_p = &b->ace_yy_ch_buf[ace_yy_c_buf_p_offset];
    -
    -			num_to_read = ace_yy_current_buffer->ace_yy_buf_size -
    -						number_to_move - 1;
    -#endif
    -			}
    -
    -		if ( num_to_read > ACE_YY_READ_BUF_SIZE )
    -			num_to_read = ACE_YY_READ_BUF_SIZE;
    -
    -		/* Read in more data. */
    -		ACE_YY_INPUT( (&ace_yy_current_buffer->ace_yy_ch_buf[number_to_move]),
    -			ace_yy_n_chars, num_to_read );
    -		}
    -
    -	if ( ace_yy_n_chars == 0 )
    -		{
    -		if ( number_to_move - ACE_YY_MORE_ADJ == 1 )
    -			{
    -			ret_val = EOB_ACT_END_OF_FILE;
    -			ace_yyrestart( ace_yyin );
    -			}
    -
    -		else
    -			{
    -			ret_val = EOB_ACT_LAST_MATCH;
    -			ace_yy_current_buffer->ace_yy_buffer_status =
    -				ACE_YY_BUFFER_EOF_PENDING;
    -			}
    -		}
    -
    -	else
    -		ret_val = EOB_ACT_CONTINUE_SCAN;
    -
    -	ace_yy_n_chars += number_to_move;
    -	ace_yy_current_buffer->ace_yy_ch_buf[ace_yy_n_chars] = ACE_YY_END_OF_BUFFER_CHAR;
    -	ace_yy_current_buffer->ace_yy_ch_buf[ace_yy_n_chars + 1] = ACE_YY_END_OF_BUFFER_CHAR;
    -
    -	/* ace_yytext begins at the second character in ace_yy_ch_buf; the first
    -	 * character is the one which preceded it before reading in the latest
    -	 * buffer; it needs to be kept around in case it's a newline, so
    -	 * ace_yy_get_previous_state() will have with '^' rules active.
    -	 */
    -
    -	ace_yytext_ptr = &ace_yy_current_buffer->ace_yy_ch_buf[1];
    -
    -	return ret_val;
    -	}
    -
    -
    -/* ace_yy_get_previous_state - get the state just before the EOB char was reached */
    -
    -static ace_yy_state_type ace_yy_get_previous_state()
    -	{
    -	register ace_yy_state_type ace_yy_current_state;
    -	register char *ace_yy_cp;
    -
    -	register char *ace_yy_bp = ace_yytext_ptr;
    -
    -	ace_yy_current_state = ace_yy_start;
    -	if ( ace_yy_bp[-1] == '\n' )
    -		++ace_yy_current_state;
    -
    -	for ( ace_yy_cp = ace_yytext_ptr + ACE_YY_MORE_ADJ; ace_yy_cp < ace_yy_c_buf_p; ++ace_yy_cp )
    -		{
    -		register ACE_YY_CHAR ace_yy_c = (*ace_yy_cp ? ace_yy_ec[ACE_YY_SC_TO_UI(*ace_yy_cp)] : 1);
    -		if ( ace_yy_accept[ace_yy_current_state] )
    -			{
    -			ace_yy_last_accepting_state = ace_yy_current_state;
    -			ace_yy_last_accepting_cpos = ace_yy_cp;
    -			}
    -		while ( ace_yy_chk[ace_yy_base[ace_yy_current_state] + ace_yy_c] != ace_yy_current_state )
    -			{
    -			ace_yy_current_state = (int) ace_yy_def[ace_yy_current_state];
    -			if ( ace_yy_current_state >= 104 )
    -				ace_yy_c = ace_yy_meta[(unsigned int) ace_yy_c];
    -			}
    -		ace_yy_current_state = ace_yy_nxt[ace_yy_base[ace_yy_current_state] + (unsigned int) ace_yy_c];
    -		}
    -
    -	return ace_yy_current_state;
    -	}
    -
    -
    -/* ace_yy_try_NUL_trans - try to make a transition on the NUL character
    - *
    - * synopsis
    - *	next_state = ace_yy_try_NUL_trans( current_state );
    - */
    -
    -#ifdef ACE_YY_USE_PROTOS
    -static ace_yy_state_type ace_yy_try_NUL_trans( ace_yy_state_type ace_yy_current_state )
    -#else
    -static ace_yy_state_type ace_yy_try_NUL_trans( ace_yy_current_state )
    -ace_yy_state_type ace_yy_current_state;
    -#endif
    -	{
    -	register int ace_yy_is_jam;
    -	register char *ace_yy_cp = ace_yy_c_buf_p;
    -
    -	register ACE_YY_CHAR ace_yy_c = 1;
    -	if ( ace_yy_accept[ace_yy_current_state] )
    -		{
    -		ace_yy_last_accepting_state = ace_yy_current_state;
    -		ace_yy_last_accepting_cpos = ace_yy_cp;
    -		}
    -	while ( ace_yy_chk[ace_yy_base[ace_yy_current_state] + ace_yy_c] != ace_yy_current_state )
    -		{
    -		ace_yy_current_state = (int) ace_yy_def[ace_yy_current_state];
    -		if ( ace_yy_current_state >= 104 )
    -			ace_yy_c = ace_yy_meta[(unsigned int) ace_yy_c];
    -		}
    -	ace_yy_current_state = ace_yy_nxt[ace_yy_base[ace_yy_current_state] + (unsigned int) ace_yy_c];
    -	ace_yy_is_jam = (ace_yy_current_state == 103);
    -
    -	return ace_yy_is_jam ? 0 : ace_yy_current_state;
    -	}
    -
    -
    -#if 0
    -#ifdef ACE_YY_USE_PROTOS
    -static void ace_yyunput( int c, register char *ace_yy_bp )
    -#else
    -static void ace_yyunput( c, ace_yy_bp )
    -int c;
    -register char *ace_yy_bp;
    -#endif
    -	{
    -	register char *ace_yy_cp = ace_yy_c_buf_p;
    -
    -	/* undo effects of setting up ace_yytext */
    -	*ace_yy_cp = ace_yy_hold_char;
    -
    -	if ( ace_yy_cp < ace_yy_current_buffer->ace_yy_ch_buf + 2 )
    -		{ /* need to shift things up to make room */
    -		/* +2 for EOB chars. */
    -		register int number_to_move = ace_yy_n_chars + 2;
    -		register char *dest = &ace_yy_current_buffer->ace_yy_ch_buf[
    -					ace_yy_current_buffer->ace_yy_buf_size + 2];
    -		register char *source =
    -				&ace_yy_current_buffer->ace_yy_ch_buf[number_to_move];
    -
    -		while ( source > ace_yy_current_buffer->ace_yy_ch_buf )
    -			*--dest = *--source;
    -
    -		ace_yy_cp += dest - source;
    -		ace_yy_bp += dest - source;
    -		ace_yy_n_chars = ace_yy_current_buffer->ace_yy_buf_size;
    -
    -		if ( ace_yy_cp < ace_yy_current_buffer->ace_yy_ch_buf + 2 )
    -			ACE_YY_FATAL_ERROR( "flex scanner push-back overflow" );
    -		}
    -
    -	if ( ace_yy_cp > ace_yy_bp && ace_yy_cp[-1] == '\n' )
    -		ace_yy_cp[-2] = '\n';
    -
    -	*--ace_yy_cp = (char) c;
    -
    -
    -	/* Note: the formal parameter *must* be called "ace_yy_bp" for this
    -	 * macro to now work correctly.
    -	 */
    -	ACE_YY_DO_BEFORE_ACTION; /* set up ace_yytext again */
    -	}
    -#endif /* 0 */
    -
    -#ifdef __cplusplus
    -static int ace_yyinput()
    -#else
    -static int input()
    -#endif
    -	{
    -	int c;
    -
    -	*ace_yy_c_buf_p = ace_yy_hold_char;
    -
    -	if ( *ace_yy_c_buf_p == ACE_YY_END_OF_BUFFER_CHAR )
    -		{
    -		/* ace_yy_c_buf_p now points to the character we want to return.
    -		 * If this occurs *before* the EOB characters, then it's a
    -		 * valid NUL; if not, then we've hit the end of the buffer.
    -		 */
    -		if ( ace_yy_c_buf_p < &ace_yy_current_buffer->ace_yy_ch_buf[ace_yy_n_chars] )
    -			/* This was really a NUL. */
    -			*ace_yy_c_buf_p = '\0';
    -
    -		else
    -			{ /* need more input */
    -			ace_yytext_ptr = ace_yy_c_buf_p;
    -			++ace_yy_c_buf_p;
    -
    -			switch ( ace_yy_get_next_buffer() )
    -				{
    -				case EOB_ACT_END_OF_FILE:
    -					{
    -					if ( ace_yywrap() )
    -						{
    -						ace_yy_c_buf_p =
    -						ace_yytext_ptr + ACE_YY_MORE_ADJ;
    -						return EOF;
    -						}
    -
    -					ACE_YY_NEW_FILE;
    -#ifdef __cplusplus
    -					return ace_yyinput();
    -#else
    -					return input();
    -#endif
    -					}
    -
    -				case EOB_ACT_CONTINUE_SCAN:
    -					ace_yy_c_buf_p = ace_yytext_ptr + ACE_YY_MORE_ADJ;
    -					break;
    -
    -				case EOB_ACT_LAST_MATCH:
    -#ifdef __cplusplus
    -					ACE_YY_FATAL_ERROR(
    -					"unexpected last match in ace_yyinput()" );
    -#else
    -					ACE_YY_FATAL_ERROR(
    -					"unexpected last match in input()" );
    -#endif
    -				}
    -			}
    -		}
    -
    -	c = *(unsigned char *) ace_yy_c_buf_p;	/* cast for 8-bit char's */
    -	*ace_yy_c_buf_p = '\0';	/* preserve ace_yytext */
    -	ace_yy_hold_char = *++ace_yy_c_buf_p;
    -
    -	return c;
    -	}
    -
    -
    -#ifdef ACE_YY_USE_PROTOS
    -void ace_yyrestart( FILE *input_file )
    -#else
    -void ace_yyrestart( input_file )
    -FILE *input_file;
    -#endif
    -	{
    -	if ( ! ace_yy_current_buffer )
    -		ace_yy_current_buffer = ace_yy_create_buffer( ace_yyin, ACE_YY_BUF_SIZE );
    -
    -	ace_yy_init_buffer( ace_yy_current_buffer, input_file );
    -	ace_yy_load_buffer_state();
    -	}
    -
    -
    -#ifdef ACE_YY_USE_PROTOS
    -void ace_yy_switch_to_buffer( ACE_YY_BUFFER_STATE new_buffer )
    -#else
    -void ace_yy_switch_to_buffer( new_buffer )
    -ACE_YY_BUFFER_STATE new_buffer;
    -#endif
    -	{
    -	if ( ace_yy_current_buffer == new_buffer )
    -		return;
    -
    -	if ( ace_yy_current_buffer )
    -		{
    -		/* Flush out information for old buffer. */
    -		*ace_yy_c_buf_p = ace_yy_hold_char;
    -		ace_yy_current_buffer->ace_yy_buf_pos = ace_yy_c_buf_p;
    -		ace_yy_current_buffer->ace_yy_n_chars = ace_yy_n_chars;
    -		}
    -
    -	ace_yy_current_buffer = new_buffer;
    -	ace_yy_load_buffer_state();
    -
    -	/* We don't actually know whether we did this switch during
    -	 * EOF (ace_yywrap()) processing, but the only time this flag
    -	 * is looked at is after ace_yywrap() is called, so it's safe
    -	 * to go ahead and always set it.
    -	 */
    -	ace_yy_did_buffer_switch_on_eof = 1;
    -	}
    -
    -
    -#ifdef ACE_YY_USE_PROTOS
    -void ace_yy_load_buffer_state( void )
    -#else
    -void ace_yy_load_buffer_state()
    -#endif
    -	{
    -	ace_yy_n_chars = ace_yy_current_buffer->ace_yy_n_chars;
    -	ace_yytext_ptr = ace_yy_c_buf_p = ace_yy_current_buffer->ace_yy_buf_pos;
    -	ace_yyin = ace_yy_current_buffer->ace_yy_input_file;
    -	ace_yy_hold_char = *ace_yy_c_buf_p;
    -	}
    -
    -
    -#ifdef ACE_YY_USE_PROTOS
    -ACE_YY_BUFFER_STATE ace_yy_create_buffer( FILE *file, int size )
    -#else
    -ACE_YY_BUFFER_STATE ace_yy_create_buffer( file, size )
    -FILE *file;
    -int size;
    -#endif
    -	{
    -	ACE_YY_BUFFER_STATE b;
    -
    -	b = (ACE_YY_BUFFER_STATE) ace_yy_flex_alloc( sizeof( struct ace_yy_buffer_state ) );
    -
    -	if ( ! b )
    -		ACE_YY_FATAL_ERROR( "out of dynamic memory in ace_yy_create_buffer()" );
    -
    -	b->ace_yy_buf_size = size;
    -
    -	/* ace_yy_ch_buf has to be 2 characters longer than the size given because
    -	 * we need to put in 2 end-of-buffer characters.
    -	 */
    -	b->ace_yy_ch_buf = (char *) ace_yy_flex_alloc( b->ace_yy_buf_size + 2 );
    -
    -	if ( ! b->ace_yy_ch_buf )
    -		ACE_YY_FATAL_ERROR( "out of dynamic memory in ace_yy_create_buffer()" );
    -
    -	ace_yy_init_buffer( b, file );
    -
    -	return b;
    -	}
    -
    -
    -#ifdef ACE_YY_USE_PROTOS
    -void ace_yy_delete_buffer( ACE_YY_BUFFER_STATE b )
    -#else
    -void ace_yy_delete_buffer( b )
    -ACE_YY_BUFFER_STATE b;
    -#endif
    -	{
    -	if ( b == ace_yy_current_buffer )
    -		ace_yy_current_buffer = (ACE_YY_BUFFER_STATE) 0;
    -
    -	ace_yy_flex_free( (void *) b->ace_yy_ch_buf );
    -	ace_yy_flex_free( (void *) b );
    -	}
    -
    -
    -#ifdef ACE_YY_USE_PROTOS
    -void ace_yy_init_buffer( ACE_YY_BUFFER_STATE b, FILE *file )
    -#else
    -void ace_yy_init_buffer( b, file )
    -ACE_YY_BUFFER_STATE b;
    -FILE *file;
    -#endif
    -	{
    -	b->ace_yy_input_file = file;
    -
    -	/* We put in the '\n' and start reading from [1] so that an
    -	 * initial match-at-newline will be true.
    -	 */
    -
    -	b->ace_yy_ch_buf[0] = '\n';
    -	b->ace_yy_n_chars = 1;
    -
    -	/* We always need two end-of-buffer characters.  The first causes
    -	 * a transition to the end-of-buffer state.  The second causes
    -	 * a jam in that state.
    -	 */
    -	b->ace_yy_ch_buf[1] = ACE_YY_END_OF_BUFFER_CHAR;
    -	b->ace_yy_ch_buf[2] = ACE_YY_END_OF_BUFFER_CHAR;
    -
    -	b->ace_yy_buf_pos = &b->ace_yy_ch_buf[1];
    -
    -	b->ace_yy_is_interactive = file ? isatty( fileno(file) ) : 0;
    -
    -	b->ace_yy_fill_buffer = 1;
    -
    -	b->ace_yy_buffer_status = ACE_YY_BUFFER_NEW;
    -	}
    -
    -
    -#if 0
    -#ifdef ACE_YY_USE_PROTOS
    -static void ace_yy_push_state( int new_state )
    -#else
    -static void ace_yy_push_state( new_state )
    -int new_state;
    -#endif
    -	{
    -	if ( ace_yy_start_stack_ptr >= ace_yy_start_stack_depth )
    -		{
    -		int new_size;
    -
    -		ace_yy_start_stack_depth += ACE_YY_START_STACK_INCR;
    -		new_size = ace_yy_start_stack_depth * sizeof( int );
    -
    -		if ( ! ace_yy_start_stack )
    -			ace_yy_start_stack = (int *) ace_yy_flex_alloc( new_size );
    -
    -		else
    -			ace_yy_start_stack = (int *) ace_yy_flex_realloc(
    -					(void *) ace_yy_start_stack, new_size );
    -
    -		if ( ! ace_yy_start_stack )
    -			ACE_YY_FATAL_ERROR(
    -			"out of memory expanding start-condition stack" );
    -		}
    -
    -	ace_yy_start_stack[ace_yy_start_stack_ptr++] = ACE_YY_START;
    -
    -	BEGIN(new_state);
    -	}
    -
    -
    -static void ace_yy_pop_state()
    -	{
    -	if ( --ace_yy_start_stack_ptr < 0 )
    -		ACE_YY_FATAL_ERROR( "start-condition stack underflow" );
    -
    -	BEGIN(ace_yy_start_stack[ace_yy_start_stack_ptr]);
    -	}
    -
    -
    -static int ace_yy_top_state()
    -	{
    -	return ace_yy_start_stack[ace_yy_start_stack_ptr - 1];
    -	}
    -#endif /* 0 */
    -
    -#ifdef ACE_YY_USE_PROTOS
    -static void ace_yy_fatal_error( const char msg[] )
    -#else
    -static void ace_yy_fatal_error( msg )
    -char msg[];
    -#endif
    -	{
    -	(void) fprintf( stderr, "%s\n", msg );
    -	exit( 1 );
    -	}
    -
    -
    -
    -/* Redefine ace_yyless() so it works in section 3 code. */
    -
    -#undef ace_yyless
    -#define ace_yyless(n) \
    -	do \
    -		{ \
    -		/* Undo effects of setting up ace_yytext. */ \
    -		ace_yytext[ace_yyleng] = ace_yy_hold_char; \
    -		ace_yy_c_buf_p = ace_yytext + n - ACE_YY_MORE_ADJ; \
    -		ace_yy_hold_char = *ace_yy_c_buf_p; \
    -		*ace_yy_c_buf_p = '\0'; \
    -		ace_yyleng = n; \
    -		} \
    -	while ( 0 )
    -
    -
    -/* Internal utility routines. */
    -
    -#ifndef ace_yytext_ptr
    -#ifdef ACE_YY_USE_PROTOS
    -static void ace_yy_flex_strncpy( char *s1, const char *s2, int n )
    -#else
    -static void ace_yy_flex_strncpy( s1, s2, n )
    -char *s1;
    -const char *s2;
    -int n;
    -#endif
    -	{
    -	register int i;
    -	for ( i = 0; i < n; ++i )
    -		s1[i] = s2[i];
    -	}
    -#endif
    -
    -
    -#ifdef ACE_YY_USE_PROTOS
    -static void *ace_yy_flex_alloc( unsigned int size )
    -#else
    -static void *ace_yy_flex_alloc( size )
    -unsigned int size;
    -#endif
    -	{
    -	return (void *) malloc( size );
    -	}
    -
    -#ifdef ACE_YY_USE_PROTOS
    -static void *ace_yy_flex_realloc( void *ptr, unsigned int size )
    -#else
    -static void *ace_yy_flex_realloc( ptr, size )
    -void *ptr;
    -unsigned int size;
    -#endif
    -	{
    -	return (void *) realloc( ACE_MALLOC_T (ptr), size );
    -	}
    -
    -#ifdef ACE_YY_USE_PROTOS
    -static void ace_yy_flex_free( void *ptr )
    -#else
    -static void ace_yy_flex_free( ptr )
    -void *ptr;
    -#endif
    -	{
    -	free( ACE_MALLOC_T (ptr) );
    -	}
    -# line 76 "Svc_Conf.l"
    -
    -int
    -ace_yywrap (void)
    -{
    -  ::fflush (ace_yyin);
    -  ace_yytext[0] = '#';
    -  ace_yyleng = 0;
    -
    -  // This needs to be freed to prevent a memory leak.
    -  ace_yy_delete_parse_buffer ();
    -
    -  return 1;
    -}
    -
    -void
    -ace_yy_delete_parse_buffer (void)
    -{
    -  if (ace_yy_current_buffer != 0) 
    -    {
    -      ace_yy_delete_buffer (ace_yy_current_buffer);
    -      ace_yy_current_buffer = 0;
    -    }
    -}
    diff --git a/ace/Svc_Conf_y.cpp b/ace/Svc_Conf_y.cpp
    deleted file mode 100644
    index a17da8b62ab..00000000000
    --- a/ace/Svc_Conf_y.cpp
    +++ /dev/null
    @@ -1,1042 +0,0 @@
    -#ifndef lint
    -char ace_yysccsid[] = "@(#)yaccpar	1.4 (Berkeley) 02/25/90 \n\
    - Modified 5/2/90 by J. Roskind to support graphic debugging modes";
    -#endif
    -#line 2 "Svc_Conf.y"
    -/* $Id$*/
    -#define ACE_BUILD_DLL
    -#include "ace/ARGV.h"
    -#include "ace/Svc_Conf.h"
    -#include "ace/Module.h"
    -#include "ace/Stream.h"
    -
    -ACE_RCSID(ace, Svc_Conf_y, "$Id$")
    -
    -/* Prototypes.*/
    -static ACE_Module_Type *ace_get_module (ACE_Static_Node *str_rec,
    -                                        ACE_Static_Node *svc_type);
    -static ACE_Module_Type *ace_get_module (ACE_Static_Node *str_rec,
    -                                        const ASYS_TCHAR *svc_name);
    -
    -#define ACE_YYDEBUG_LEXER_TEXT (ace_yytext[ace_yyleng] = '\0', ace_yytext)
    -
    -/* Force the pretty debugging code to compile.*/
    -/* #define ACE_YYDEBUG 1*/
    -
    -/* Efficient memory allocation technique.*/
    -ACE_Obstack *ace_obstack;
    -
    -#line 30 "Svc_Conf_y.cpp"
    -#define ACE_DYNAMIC 257
    -#define ACE_STATIC 258
    -#define ACE_SUSPEND 259
    -#define ACE_RESUME 260
    -#define ACE_REMOVE 261
    -#define ACE_USTREAM 262
    -#define ACE_MODULE_T 263
    -#define ACE_STREAM_T 264
    -#define ACE_SVC_OBJ_T 265
    -#define ACE_ACTIVE 266
    -#define ACE_INACTIVE 267
    -#define ACE_PATHNAME 268
    -#define ACE_IDENT 269
    -#define ACE_STRING 270
    -#define ACE_LPAREN 271
    -#define ACE_RPAREN 272
    -#define ACE_LBRACE 273
    -#define ACE_RBRACE 274
    -#define ACE_STAR 275
    -#define ACE_COLON 276
    -#define ACE_YYERRCODE 256
    -short ace_yylhs[] = {                                        -1,
    -    0,    0,    0,   14,   14,   14,   14,   14,   14,    5,
    -    6,    7,    8,    9,   11,   18,   11,   15,   15,   19,
    -   12,   12,   10,   10,   13,   13,   13,   13,   13,   16,
    -    4,    4,    4,   17,   17,   17,    3,    3,    3,    2,
    -    2,    1,    1,
    -};
    -short ace_yylen[] = {                                         2,
    -    2,    2,    0,    1,    1,    1,    1,    1,    1,    3,
    -    3,    2,    2,    2,    3,    0,    4,    1,    1,    0,
    -    4,    0,    2,    0,    1,    1,    1,    1,    1,    4,
    -    1,    1,    0,    3,    5,    4,    2,    2,    2,    1,
    -    0,    1,    1,
    -};
    -short ace_yydefred[] = {                                      3,
    -    0,    2,    0,    0,    0,    0,    0,    0,    4,    5,
    -    6,    7,    8,    9,    1,    0,    0,    0,   12,   13,
    -   14,   16,   18,   19,    0,    0,    0,    0,    0,   40,
    -   10,   11,    0,   20,   15,   37,   39,   38,   42,   43,
    -    0,    0,    0,   17,   24,    0,    0,   31,   32,   30,
    -    0,    0,    0,   21,   25,   26,   27,   28,   29,   23,
    -   36,    0,   35,
    -};
    -short ace_yydgoto[] = {                                       1,
    -   42,   31,   29,   50,    9,   10,   11,   12,   13,   51,
    -   14,   35,   60,   15,   25,   17,   43,   33,   45,
    -};
    -short ace_yysindex[] = {                                      0,
    - -228,    0, -266, -260, -254, -246, -244, -247,    0,    0,
    -    0,    0,    0,    0,    0, -251, -235, -235,    0,    0,
    -    0,    0,    0,    0, -237, -249, -238, -236, -252,    0,
    -    0,    0, -237,    0,    0,    0,    0,    0,    0,    0,
    - -231, -234, -248,    0,    0, -230, -229,    0,    0,    0,
    - -253, -225, -227,    0,    0,    0,    0,    0,    0,    0,
    -    0, -224,    0,
    -};
    -short ace_yyrindex[] = {                                      0,
    -    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    -    0,    0,    0,    0,    0,    0,   27,   27,    0,    0,
    -    0,    0,    0,    0,   46,    0,    0,    0,    0,    0,
    -    0,    0,   46,    0,    0,    0,    0,    0,    0,    0,
    -    0,    0,   20,    0,    0,    0,    0,    0,    0,    0,
    -    0,    0,    1,    0,    0,    0,    0,    0,    0,    0,
    -    0,    0,    0,
    -};
    -short ace_yygindex[] = {                                      0,
    -    0,   31,    0,    0,   -8,   -6,   -1,    2,    3,    0,
    -    0,   18,    0,    0,    0,    0,    0,    0,    0,
    -};
    -#define ACE_YYTABLESIZE 308
    -short ace_yytable[] = {                                      23,
    -   34,   24,   16,    3,    4,    5,    6,    7,   18,    3,
    -    4,   26,   27,   28,   19,   39,   40,   48,   49,   33,
    -   54,   22,   20,   41,   21,   36,   41,    2,    3,    4,
    -    5,    6,    7,    8,   30,   34,   37,   46,   38,   53,
    -   52,   47,   55,   62,   56,   22,   61,   63,   32,   57,
    -   44,    0,   58,   59,    0,    0,    0,    0,    0,    0,
    -    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    -    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    -    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    -    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    -    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    -    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    -    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    -    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    -    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    -    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    -    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    -    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    -    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    -    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    -    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    -    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    -    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    -    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    -    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    -    0,    0,    0,    0,    0,    0,   34,   34,   34,   34,
    -   34,   34,   34,    0,    0,    0,   34,   34,    0,    0,
    -   34,    0,    0,   34,   34,   33,   33,   33,   33,   33,
    -   33,   33,   41,   41,   41,   41,   41,   41,   41,   33,
    -    0,    0,   33,   33,    0,    0,    0,    0,    0,   41,
    -   41,   22,   22,   22,   22,   22,   22,   22,
    -};
    -short ace_yycheck[] = {                                       8,
    -    0,    8,  269,  257,  258,  259,  260,  261,  269,  257,
    -  258,  263,  264,  265,  269,  268,  269,  266,  267,    0,
    -  274,  269,  269,  276,  269,  275,    0,  256,  257,  258,
    -  259,  260,  261,  262,  270,  273,  275,  269,  275,  269,
    -  271,  276,   51,  271,   51,    0,  272,  272,   18,   51,
    -   33,   -1,   51,   51,   -1,   -1,   -1,   -1,   -1,   -1,
    -   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -   -1,   -1,   -1,   -1,   -1,   -1,  256,  257,  258,  259,
    -  260,  261,  262,   -1,   -1,   -1,  266,  267,   -1,   -1,
    -  270,   -1,   -1,  273,  274,  256,  257,  258,  259,  260,
    -  261,  262,  256,  257,  258,  259,  260,  261,  262,  270,
    -   -1,   -1,  273,  274,   -1,   -1,   -1,   -1,   -1,  273,
    -  274,  256,  257,  258,  259,  260,  261,  262,
    -};
    -#define ACE_YYFINAL 1
    -#ifndef ACE_YYDEBUG
    -#define ACE_YYDEBUG 0
    -#endif
    -#define ACE_YYMAXTOKEN 276
    -#if ACE_YYDEBUG
    -const char *ace_yyname[] = {
    -"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"ACE_DYNAMIC","ACE_STATIC",
    -"ACE_SUSPEND","ACE_RESUME","ACE_REMOVE","ACE_USTREAM","ACE_MODULE_T",
    -"ACE_STREAM_T","ACE_SVC_OBJ_T","ACE_ACTIVE","ACE_INACTIVE","ACE_PATHNAME",
    -"ACE_IDENT","ACE_STRING","ACE_LPAREN","ACE_RPAREN","ACE_LBRACE","ACE_RBRACE",
    -"ACE_STAR","ACE_COLON",
    -};
    -const char *ace_yyrule[] = {
    -"$accept : svc_config_entries",
    -"svc_config_entries : svc_config_entries svc_config_entry",
    -"svc_config_entries : svc_config_entries error",
    -"svc_config_entries :",
    -"svc_config_entry : dynamic",
    -"svc_config_entry : static",
    -"svc_config_entry : suspend",
    -"svc_config_entry : resume",
    -"svc_config_entry : remove",
    -"svc_config_entry : stream",
    -"dynamic : ACE_DYNAMIC svc_location parameters_opt",
    -"static : ACE_STATIC ACE_IDENT parameters_opt",
    -"suspend : ACE_SUSPEND ACE_IDENT",
    -"resume : ACE_RESUME ACE_IDENT",
    -"remove : ACE_REMOVE ACE_IDENT",
    -"stream : ACE_USTREAM stream_ops stream_modules",
    -"$$1 :",
    -"stream : ACE_USTREAM ACE_IDENT $$1 stream_modules",
    -"stream_ops : dynamic",
    -"stream_ops : static",
    -"$$2 :",
    -"stream_modules : ACE_LBRACE $$2 module_list ACE_RBRACE",
    -"stream_modules :",
    -"module_list : module_list module",
    -"module_list :",
    -"module : dynamic",
    -"module : static",
    -"module : suspend",
    -"module : resume",
    -"module : remove",
    -"svc_location : ACE_IDENT type svc_initializer status",
    -"status : ACE_ACTIVE",
    -"status : ACE_INACTIVE",
    -"status :",
    -"svc_initializer : pathname ACE_COLON ACE_IDENT",
    -"svc_initializer : pathname ACE_COLON ACE_IDENT ACE_LPAREN ACE_RPAREN",
    -"svc_initializer : ACE_COLON ACE_IDENT ACE_LPAREN ACE_RPAREN",
    -"type : ACE_MODULE_T ACE_STAR",
    -"type : ACE_SVC_OBJ_T ACE_STAR",
    -"type : ACE_STREAM_T ACE_STAR",
    -"parameters_opt : ACE_STRING",
    -"parameters_opt :",
    -"pathname : ACE_PATHNAME",
    -"pathname : ACE_IDENT",
    -};
    -#endif
    -#define ace_yyclearin (ace_yychar=(-1))
    -#define ace_yyerrok (ace_yyerrflag=0)
    -#ifndef ACE_YYSTACKSIZE
    -#ifdef ACE_YYMAXDEPTH
    -#define ACE_YYSTACKSIZE ACE_YYMAXDEPTH
    -#else
    -#define ACE_YYSTACKSIZE 300
    -#endif
    -#endif
    -int ace_yydebug;
    -int ace_yynerrs;
    -int ace_yyerrflag;
    -int ace_yychar;
    -short *ace_yyssp;
    -ACE_YYSTYPE *ace_yyvsp;
    -ACE_YYSTYPE ace_yyval;
    -ACE_YYSTYPE ace_yylval;
    -#define ace_yystacksize ACE_YYSTACKSIZE
    -short ace_yyss[ACE_YYSTACKSIZE];
    -ACE_YYSTYPE ace_yyvs[ACE_YYSTACKSIZE];
    -#line 315 "Svc_Conf.y"
    -// Prints the error string to standard output.  Cleans up the error
    -// messages.
    -
    -void
    -ace_yyerror (const char *s)
    -{
    -#if defined (ACE_NLOGGING)
    -  ACE_UNUSED_ARG (s);
    -#endif /* ACE_NLOGGING */
    -
    -  ACE_ERROR ((LM_ERROR,
    -              ASYS_TEXT ("[error %d] on line %d: %s\n"),
    -              ++ace_yyerrno,
    -              ace_yylineno,
    -              ASYS_WIDE_STRING (s)));
    -}
    -
    -// Note that SRC_REC represents left context, which is the STREAM *
    -// record.
    -
    -static ACE_Module_Type *
    -ace_get_module (ACE_Static_Node *str_rec,
    -                const ASYS_TCHAR *svc_name)
    -{
    -  const ACE_Service_Type *sr = str_rec->record ();
    -  const ACE_Service_Type_Impl *type = sr->type ();
    -  ACE_Stream_Type *st = sr == 0
    -    ? 0
    -    : ACE_dynamic_cast (ACE_Stream_Type *,
    -                        ACE_const_cast (ACE_Service_Type_Impl *,
    -                                        type));
    -  ACE_Module_Type *mt = st == 0 ? 0 : st->find (svc_name);
    -
    -  if (sr == 0 || st == 0 || mt == 0)
    -    {
    -      ACE_ERROR ((LM_ERROR,
    -                  ASYS_TEXT ("cannot locate Module_Type %s in STREAM_Type %s\n"),
    -                  svc_name,
    -                  str_rec->name ()));
    -      ace_yyerrno++;
    -    }
    -
    -  return mt;
    -}
    -
    -static ACE_Module_Type *
    -ace_get_module (ACE_Static_Node *str_rec,
    -                ACE_Static_Node *svc_type)
    -{
    -  const ACE_Service_Type *sr = str_rec->record ();
    -  const ACE_Service_Type_Impl *type = sr->type ();
    -  ACE_Stream_Type *st = sr == 0 ? 0 : (ACE_Stream_Type *) type;
    -  const ACE_Service_Type *sv = svc_type->record ();
    -  type = sv->type ();
    -  ACE_Module_Type *mt = (ACE_Module_Type *) type;
    -  const ASYS_TCHAR *module_type_name = svc_type->name ();
    -
    -  if (sr == 0 || st == 0 || mt == 0)
    -    {
    -      ACE_ERROR ((LM_ERROR,
    -                  ASYS_TEXT ("cannot locate Module_Type %s or STREAM_Type %s\n"),
    -                  module_type_name,
    -                  str_rec->name ()));
    -      ace_yyerrno++;
    -    }
    -
    -  // Make sure that the Module has the same name as the
    -  // Module_Type object from the svc.conf file.
    -  ACE_Module *mp = (ACE_Module *) mt->object ();
    -
    -  if (ACE_OS::strcmp (mp->name (), module_type_name) != 0)
    -    {
    -      ACE_DEBUG ((LM_DEBUG,
    -                  ASYS_TEXT ("warning: assigning Module_Type name %s to Module %s since names differ\n"),
    -                  module_type_name,
    -                  mp->name ()));
    -      mp->name (module_type_name);
    -    }
    -
    -  return mt;
    -}
    -
    -ACE_Service_Type_Impl *
    -ace_create_service_type (const ASYS_TCHAR *name,
    -                         int type,
    -                         void *symbol,
    -                         u_int flags,
    -                         ACE_Service_Object_Exterminator gobbler)
    -{
    -  ACE_Service_Type_Impl *stp = 0;
    -
    -  // Note, the only place we need to put a case statement.  This is
    -  // also the place where we'd put the RTTI tests, if the compiler
    -  // actually supported them!
    -
    -  switch (type)
    -    {
    -    case ACE_SVC_OBJ_T:
    -      ACE_NEW_RETURN (stp,
    -                      ACE_Service_Object_Type ((ACE_Service_Object *) symbol,
    -                                               name, flags,
    -                                               gobbler),
    -                      0);
    -      break;
    -    case ACE_MODULE_T:
    -      ACE_NEW_RETURN (stp,
    -                      ACE_Module_Type (symbol, name, flags),
    -                      0);
    -      break;
    -    case ACE_STREAM_T:
    -      ACE_NEW_RETURN (stp,
    -                      ACE_Stream_Type (symbol, name, flags),
    -                      0);
    -      break;
    -    default:
    -      ACE_ERROR ((LM_ERROR,
    -                  ASYS_TEXT ("unknown case\n")));
    -      ace_yyerrno++;
    -      break;
    -    }
    -  return stp;
    -}
    -
    -#if defined (DEBUGGING)
    -// Current line number.
    -int ace_yylineno = 1;
    -
    -// Name given on the command-line to envoke the program.
    -ASYS_TCHAR *program_name;
    -
    -// Main driver program.
    -
    -int
    -main (int argc, char *argv[])
    -{
    -  ace_yyin = stdin;
    -  ace_obstack = new ACE_Obstack;
    -
    -  // Try to reopen any filename argument to use ACE_YYIN.
    -  if (argc > 1 && (ace_yyin = freopen (argv[1], "r", stdin)) == 0)
    -    (void) ::fprintf (stderr, "usage: %s [file]\n", argv[0]), exit (1);
    -
    -  return ace_yyparse ();
    -}
    -#endif /* DEBUGGING */
    -#line 400 "Svc_Conf_y.cpp"
    -#define ACE_YYABORT goto ace_yyabort
    -#define ACE_YYACCEPT goto ace_yyaccept
    -#define ACE_YYERROR goto ace_yyerrlab
    -#ifdef ACE_YYDEBUG
    -#ifndef ACE_YYDEBUG_LEXER_TEXT /* pointer to the text isolated by the lexer*/
    -#define ACE_YYDEBUG_LEXER_TEXT "ACE_YYDEBUG_LEXER_TEXT not defined"
    -#endif
    -#ifndef ACE_YYDEBUG_INDENT_STRING
    -#define ACE_YYDEBUG_INDENT_STRING  "|       "
    -#endif
    -#ifndef ACE_YYDEBUG_REDUCE_STRING
    -#define ACE_YYDEBUG_REDUCE_STRING  "+-------"
    -#endif
    -#ifndef ACE_YYDEBUG_INDENT
    -#ifdef __cplusplus
    -void ACE_YYDEBUG_INDENT(int ace_yyindent)
    -#else
    -ACE_YYDEBUG_INDENT(ace_yyindent)
    -int ace_yyindent;
    -#endif
    -{
    -    while(ace_yyindent-- > 0)
    -        printf("%s", ACE_YYDEBUG_INDENT_STRING);
    -}
    -#endif /* ACE_YYDEBUG_INDENT */
    -#ifndef ACE_YYDEBUG_REDUCE
    -#ifdef __cplusplus
    -void ACE_YYDEBUG_REDUCE(int /* ace_yynew_state */, int /* ace_yyrule_num */, const char *ace_yyrule_string, int ace_yynew_indent, int ace_yyrhs_count)
    -#else
    -ACE_YYDEBUG_REDUCE(ace_yynew_state, ace_yyrule_num, ace_yyrule_string, ace_yynew_indent, ace_yyrhs_count)
    -int ace_yynew_state;
    -int ace_yyrule_num;
    -char * ace_yyrule_string;
    -int ace_yynew_indent;
    -int ace_yyrhs_count;
    -#endif
    -{
    -    if (1 < ace_yyrhs_count)
    -    {  /* draw the graphics for the reduction */
    -        ACE_YYDEBUG_INDENT(ace_yynew_indent);
    -        while(1 < ace_yyrhs_count--)
    -            printf("%s", ACE_YYDEBUG_REDUCE_STRING);
    -        putchar('+'); /* left rotated L would look nice */
    -        putchar('\n');
    -        ACE_YYDEBUG_INDENT(ace_yynew_indent);
    -        putchar('|'); /* down arrow would look nice */
    -        putchar('\n');
    -    }
    -    ACE_YYDEBUG_INDENT(ace_yynew_indent);
    -    /* Only print the resulting token name */
    -    while (*ace_yyrule_string)
    -        putchar(*ace_yyrule_string++);
    -    putchar('\n');
    -}
    -#endif /* ACE_YYDEBUG_REDUCE */
    -#ifndef ACE_YYDEBUG_SHIFT_LEXEME
    -#ifdef __cplusplus
    -void ACE_YYDEBUG_SHIFT_LEXEME(int /* ace_yyold_state */, int /* ace_yynew_state*/, const char *ace_yytoken_string, int ace_yynew_indent)
    -#else
    -ACE_YYDEBUG_SHIFT_LEXEME(ace_yyold_state, ace_yynew_state, ace_yytoken_string, ace_yynew_indent)
    -int ace_yyold_state;
    -int ace_yynew_state;
    -char * ace_yytoken_string;
    -int ace_yynew_indent;
    -#endif
    -{
    -    ACE_YYDEBUG_INDENT(ace_yynew_indent);
    -    printf("%s <-- `%s'\n", ace_yytoken_string, ACE_YYDEBUG_LEXER_TEXT);
    -}
    -#endif /*  ACE_YYDEBUG_SHIFT_LEXEME */
    -#ifndef ACE_YYDEBUG_LOOK_AHEAD
    -#ifdef __cplusplus
    -void ACE_YYDEBUG_LOOK_AHEAD(int /* ace_yynew_state */, int ace_yytoken_num, const char *ace_yytoken_string, int ace_yyindent)
    -#else
    -ACE_YYDEBUG_LOOK_AHEAD(ace_yynew_state, ace_yytoken_num, ace_yytoken_string, ace_yyindent)
    -int ace_yynew_state;
    -int ace_yytoken_num;
    -char * ace_yytoken_string;
    -int ace_yyindent;
    -#endif
    -{
    -    ACE_YYDEBUG_INDENT(ace_yyindent);
    -    printf("          .... look ahead at %s   `%s'\n",
    -           ace_yytoken_string,
    -           (0 == ace_yytoken_num)? "\0": ACE_YYDEBUG_LEXER_TEXT);
    -}
    -#endif /* ACE_YYDEBUG_LOOK_AHEAD */
    -#ifndef ACE_YYDEBUG_DISCARD_STATE
    -#ifdef __cplusplus
    -void ACE_YYDEBUG_DISCARD_STATE(int /* ace_yynew_state */, int ace_yyindent)
    -#else
    -ACE_YYDEBUG_DISCARD_STATE(ace_yynew_state, ace_yyindent)
    -int ace_yynew_state;
    -int ace_yyindent;
    -#endif
    -{
    -    if (0 < ace_yyindent)
    -    {  /* draw the graphics for the reduction */
    -        ACE_YYDEBUG_INDENT(ace_yyindent-1);
    -        printf("%s", ACE_YYDEBUG_REDUCE_STRING);
    -        putchar('+'); /* left rotated L would look nice */
    -        printf("  discarding state\n");
    -        ACE_YYDEBUG_INDENT(ace_yyindent-1);
    -        putchar('|'); /* down arrow would look nice */
    -        putchar('\n');
    -    }
    -    else
    -    {
    -        if (0 == ace_yyindent)
    -            printf("discarding state\n");
    -        else
    -            printf("no more states to discard: parser will abort\n");
    -    }
    -}
    -#endif /* ACE_YYDEBUG_DISCARD_STATE */
    -#ifndef ACE_YYDEBUG_DISCARD_TOKEN
    -#ifdef __cplusplus
    -void ACE_YYDEBUG_DISCARD_TOKEN(int /* ace_yynew_state */, int /* ace_yytoken_num */, const char *ace_yytoken_string, int ace_yyindent)
    -#else
    -ACE_YYDEBUG_DISCARD_TOKEN(ace_yynew_state, ace_yytoken_num, ace_yytoken_string, ace_yyindent)
    -int ace_yynew_state;
    -int ace_yytoken_num;
    -char * ace_yytoken_string;
    -int ace_yyindent;
    -#endif
    -{
    -    ACE_YYDEBUG_INDENT(ace_yyindent);
    -    printf("discarding token %s\n", ace_yytoken_string);
    -}
    -#endif /* ACE_YYDEBUG_DISCARD_TOKEN */
    -#ifndef ACE_YYDEBUG_SHIFT_ERROR_LEXEME
    -#ifdef __cplusplus
    -void ACE_YYDEBUG_SHIFT_ERROR_LEXEME(int /* ace_yyold_state */, int /* ace_yynew_state */, int ace_yyindent)
    -#else
    -ACE_YYDEBUG_SHIFT_ERROR_LEXEME(ace_yyold_state, ace_yynew_state, ace_yyindent)
    -int ace_yyold_state;
    -int ace_yynew_state;
    -int ace_yyindent;
    -#endif
    -{
    -    ACE_YYDEBUG_INDENT(ace_yyindent);
    -    printf("error\n");
    -}
    -#endif /* ACE_YYDEBUG_SHIFT_ERROR_LEXEME */
    -#endif /* ACE_YYDEBUG */
    -#ifdef __cplusplus
    -extern "C" { extern char *ace_foo(const char *); }
    -#endif
    -int
    -ace_yyparse()
    -{
    -    register int ace_yym, ace_yyn, ace_yystate;
    -#if ACE_YYDEBUG
    -    register const char *ace_yys;
    -#ifndef __cplusplus
    -    extern char *ace_foo();
    -#endif
    -
    -    if ((ace_yys = ACE_OS::getenv("ACE_YYDEBUG")))
    -    {
    -        ace_yyn = *ace_yys;
    -        if (ace_yyn >= '0' && ace_yyn <= '9')
    -            ace_yydebug = ace_yyn - '0';
    -    }
    -#endif
    -
    -    ace_yynerrs = 0;
    -    ace_yyerrflag = 0;
    -    ace_yychar = (-1);
    -
    -    ace_yyssp = ace_yyss;
    -    ace_yyvsp = ace_yyvs;
    -    *ace_yyssp = ace_yystate = 0;
    -
    -ace_yyloop:
    -    if ((ace_yyn = ace_yydefred[ace_yystate])) goto ace_yyreduce;
    -    if (ace_yychar < 0)
    -    {
    -        if ((ace_yychar = ace_yylex()) < 0) ace_yychar = 0;
    -#if ACE_YYDEBUG
    -        if (ace_yydebug)
    -        {
    -            ace_yys = 0;
    -            if (ace_yychar <= ACE_YYMAXTOKEN) ace_yys = ace_yyname[ace_yychar];
    -            if (!ace_yys) ace_yys = "illegal-symbol";
    -            if (5 < ace_yydebug)
    -                printf("ace_yydebug: state %d, reading %d (%s)\n", ace_yystate,
    -                        ace_yychar, ace_yys);
    -            else
    -                ACE_YYDEBUG_LOOK_AHEAD(ace_yystate, ace_yychar, ace_yys, ace_yyssp-ace_yyss);
    -        }
    -#endif
    -    }
    -    if ((ace_yyn = ace_yysindex[ace_yystate]) && (ace_yyn += ace_yychar) >= 0 &&
    -            ace_yyn <= ACE_YYTABLESIZE && ace_yycheck[ace_yyn] == ace_yychar)
    -    {
    -#if ACE_YYDEBUG
    -        if (ace_yydebug)
    -            if (5 < ace_yydebug)
    -                printf("ace_yydebug: state %d, shifting to state %d\n",
    -                        ace_yystate, ace_yytable[ace_yyn]);
    -            else
    -                ACE_YYDEBUG_SHIFT_LEXEME(ace_yystate, ace_yytable[ace_yyn], ace_yys, ace_yyssp-ace_yyss);
    -#endif
    -        if (ace_yyssp >= ace_yyss + ace_yystacksize - 1)
    -        {
    -            goto ace_yyoverflow;
    -        }
    -        *++ace_yyssp = ace_yystate = ace_yytable[ace_yyn];
    -        *++ace_yyvsp = ace_yylval;
    -        ace_yychar = (-1);
    -        if (ace_yyerrflag > 0)  --ace_yyerrflag;
    -        goto ace_yyloop;
    -    }
    -    if ((ace_yyn = ace_yyrindex[ace_yystate]) && (ace_yyn += ace_yychar) >= 0 &&
    -            ace_yyn <= ACE_YYTABLESIZE && ace_yycheck[ace_yyn] == ace_yychar)
    -    {
    -        ace_yyn = ace_yytable[ace_yyn];
    -        goto ace_yyreduce;
    -    }
    -    if (ace_yyerrflag) goto ace_yyinrecovery;
    -#ifdef lint
    -    goto ace_yynewerror;
    -#endif
    -
    -    ace_yyerror("syntax error");
    -#ifdef lint
    -    goto ace_yyerrlab;
    -#endif
    -
    -    ++ace_yynerrs;
    -ace_yyinrecovery:
    -    if (ace_yyerrflag < 3)
    -    {
    -        ace_yyerrflag = 3;
    -        for (;;)
    -        {
    -            if ((ace_yyn = ace_yysindex[*ace_yyssp]) && (ace_yyn += ACE_YYERRCODE) >= 0 &&
    -                    ace_yyn <= ACE_YYTABLESIZE && ace_yycheck[ace_yyn] == ACE_YYERRCODE)
    -            {
    -#if ACE_YYDEBUG
    -                if (ace_yydebug)
    -                    if (5 < ace_yydebug)
    -                        printf("ace_yydebug: state %d, error recovery shifting\
    - to state %d\n", *ace_yyssp, ace_yytable[ace_yyn]);
    -                    else
    -                        ACE_YYDEBUG_SHIFT_ERROR_LEXEME(*ace_yyssp, ace_yytable[ace_yyn], ace_yyssp-ace_yyss);
    -#endif
    -                if (ace_yyssp >= ace_yyss + ace_yystacksize - 1)
    -                {
    -                    goto ace_yyoverflow;
    -                }
    -                *++ace_yyssp = ace_yystate = ace_yytable[ace_yyn];
    -                *++ace_yyvsp = ace_yylval;
    -                goto ace_yyloop;
    -            }
    -            else
    -            {
    -#if ACE_YYDEBUG
    -                if (ace_yydebug)
    -                    if (5 < ace_yydebug)
    -                        printf("ace_yydebug: error recovery discarding state %d\
    -",
    -                            *ace_yyssp);
    -                    else
    -                        ACE_YYDEBUG_DISCARD_STATE(*ace_yyssp, ace_yyssp-ace_yyss-1);
    -#endif
    -                if (ace_yyssp <= ace_yyss) goto ace_yyabort;
    -                --ace_yyssp;
    -                --ace_yyvsp;
    -            }
    -        }
    -    }
    -    else
    -    {
    -        if (ace_yychar == 0) goto ace_yyabort;
    -#if ACE_YYDEBUG
    -        if (ace_yydebug)
    -        {
    -            ace_yys = 0;
    -            if (ace_yychar <= ACE_YYMAXTOKEN) ace_yys = ace_yyname[ace_yychar];
    -            if (!ace_yys) ace_yys = "illegal-symbol";
    -            if (5 < ace_yydebug)
    -                printf("ace_yydebug: state %d, error recovery discards token %d (%s)\n",
    -                    ace_yystate, ace_yychar, ace_yys);
    -            else
    -                ACE_YYDEBUG_DISCARD_TOKEN(ace_yystate, ace_yychar, ace_yys, ace_yyssp-ace_yyss);
    -        }
    -#endif
    -        ace_yychar = (-1);
    -        goto ace_yyloop;
    -    }
    -ace_yyreduce:
    -    ace_yym = ace_yylen[ace_yyn];
    -    ace_yyval = ace_yyvsp[1-ace_yym];
    -#if ACE_YYDEBUG
    -    if (ace_yydebug)
    -        if (5 < ace_yydebug)
    -            printf("ace_yydebug: state %d, reducing by rule %d (%s)\n",
    -                    ace_yystate, ace_yyn, ace_yyrule[ace_yyn]);
    -        else
    -            ACE_YYDEBUG_REDUCE(ace_yystate, ace_yyn, ace_yyrule[ace_yyn], ace_yyssp-ace_yyss-ace_yym, ace_yym);
    -#endif
    -    switch (ace_yyn)
    -    {
    -case 1:
    -#line 45 "Svc_Conf.y"
    -{
    -      if (ace_yyvsp[0].parse_node_ != 0)
    -      {
    -        ace_yyvsp[0].parse_node_->apply (); delete ace_yyvsp[0].parse_node_;
    -      }
    -      ace_obstack->release ();
    -    }
    -break;
    -case 2:
    -#line 53 "Svc_Conf.y"
    -{
    -      ace_obstack->release ();
    -    }
    -break;
    -case 10:
    -#line 70 "Svc_Conf.y"
    -{
    -      if (ace_yyvsp[-1].svc_record_ != 0)
    -        ace_yyval.parse_node_ = new ACE_Dynamic_Node (ace_yyvsp[-1].svc_record_, ASYS_WIDE_STRING (ace_yyvsp[0].ident_));
    -      else
    -        ace_yyval.parse_node_ = 0;
    -    }
    -break;
    -case 11:
    -#line 80 "Svc_Conf.y"
    -{
    -      ace_yyval.parse_node_ = new ACE_Static_Node (ASYS_WIDE_STRING (ace_yyvsp[-1].ident_), ASYS_WIDE_STRING (ace_yyvsp[0].ident_));
    -    }
    -break;
    -case 12:
    -#line 87 "Svc_Conf.y"
    -{
    -      ace_yyval.parse_node_ = new ACE_Suspend_Node (ASYS_WIDE_STRING (ace_yyvsp[0].ident_));
    -    }
    -break;
    -case 13:
    -#line 94 "Svc_Conf.y"
    -{
    -      ace_yyval.parse_node_ = new ACE_Resume_Node (ASYS_WIDE_STRING (ace_yyvsp[0].ident_));
    -    }
    -break;
    -case 14:
    -#line 101 "Svc_Conf.y"
    -{
    -      ace_yyval.parse_node_ = new ACE_Remove_Node (ASYS_WIDE_STRING (ace_yyvsp[0].ident_));
    -    }
    -break;
    -case 15:
    -#line 108 "Svc_Conf.y"
    -{
    -      ace_yyval.parse_node_ = new ACE_Stream_Node (ace_yyvsp[-1].static_node_, ace_yyvsp[0].parse_node_);
    -    }
    -break;
    -case 16:
    -#line 111 "Svc_Conf.y"
    -{ ace_yyval.static_node_ = new ACE_Static_Node (ASYS_WIDE_STRING (ace_yyvsp[0].ident_)); }
    -break;
    -case 17:
    -#line 112 "Svc_Conf.y"
    -{
    -      ace_yyval.parse_node_ = new ACE_Dummy_Node (ace_yyvsp[-1].static_node_, ace_yyvsp[0].parse_node_);
    -    }
    -break;
    -case 18:
    -#line 119 "Svc_Conf.y"
    -{
    -    }
    -break;
    -case 19:
    -#line 122 "Svc_Conf.y"
    -{
    -    }
    -break;
    -case 20:
    -#line 128 "Svc_Conf.y"
    -{
    -      /* Initialize left context...*/
    -      ace_yyval.static_node_ = ace_yyvsp[-1].static_node_;
    -    }
    -break;
    -case 21:
    -#line 133 "Svc_Conf.y"
    -{
    -      ace_yyval.parse_node_ = ace_yyvsp[-1].parse_node_;
    -    }
    -break;
    -case 22:
    -#line 136 "Svc_Conf.y"
    -{ ace_yyval.parse_node_ = 0; }
    -break;
    -case 23:
    -#line 141 "Svc_Conf.y"
    -{
    -      if (ace_yyvsp[0].parse_node_ != 0)
    -        {
    -          ace_yyvsp[0].parse_node_->link (ace_yyvsp[-1].parse_node_);
    -          ace_yyval.parse_node_ = ace_yyvsp[0].parse_node_;
    -        }
    -    }
    -break;
    -case 24:
    -#line 148 "Svc_Conf.y"
    -{ ace_yyval.parse_node_ = 0; }
    -break;
    -case 25:
    -#line 153 "Svc_Conf.y"
    -{
    -      ACE_Static_Node *svc_type = ace_yyvsp[0].static_node_;
    -
    -      if (svc_type != 0)
    -        {
    -          ACE_Static_Node *module = ace_yyvsp[-2].static_node_;
    -
    -          ACE_ARGV args (svc_type->parameters ());
    -          ACE_Module_Type *mt = ace_get_module (module,
    -                                                svc_type);
    -          ACE_Stream_Type *st =
    -            ACE_dynamic_cast (ACE_Stream_Type *,
    -                              ACE_const_cast (ACE_Service_Type_Impl *,
    -                                              module->record ()->type ()));
    -
    -          if (mt->init (args.argc (), args.argv ()) == -1
    -              || st->push (mt) == -1)
    -            {
    -              ACE_ERROR ((LM_ERROR,
    -                          ASYS_TEXT ("dynamic initialization failed for Module %s\n"),
    -                          svc_type->name ()));
    -              ace_yyerrno++;
    -            }
    -        }
    -    }
    -break;
    -case 26:
    -#line 179 "Svc_Conf.y"
    -{
    -      ACE_Module_Type *mt = ace_get_module (ace_yyvsp[-2].static_node_, ace_yyvsp[0].static_node_->name ());
    -
    -      if (((ACE_Stream_Type *) (ace_yyvsp[-2].static_node_)->record ()->type ())->push (mt) == -1)
    -        {
    -          ACE_ERROR ((LM_ERROR,
    -                      ASYS_TEXT ("Problem with static\n")));
    -          ace_yyerrno++;
    -        }
    -    }
    -break;
    -case 27:
    -#line 190 "Svc_Conf.y"
    -{
    -      ACE_Module_Type *mt = ace_get_module (ace_yyvsp[-2].static_node_,
    -                                            ace_yyvsp[0].static_node_->name ());
    -      if (mt != 0)
    -        mt->suspend ();
    -    }
    -break;
    -case 28:
    -#line 197 "Svc_Conf.y"
    -{
    -      ACE_Module_Type *mt = ace_get_module (ace_yyvsp[-2].static_node_,
    -                                            ace_yyvsp[0].static_node_->name ());
    -      if (mt != 0)
    -        mt->resume ();
    -    }
    -break;
    -case 29:
    -#line 204 "Svc_Conf.y"
    -{
    -      ACE_Static_Node *stream = ace_yyvsp[-2].static_node_;
    -      ACE_Static_Node *module = ace_yyvsp[0].static_node_;
    -      ACE_Module_Type *mt = ace_get_module (stream,
    -                                            module->name ());
    -
    -      ACE_Stream_Type *st =
    -        ACE_dynamic_cast (ACE_Stream_Type *,
    -                          ACE_const_cast (ACE_Service_Type_Impl *,
    -                                          stream->record ()->type ()));
    -      if (mt != 0 && st->remove (mt) == -1)
    -        {
    -          ACE_ERROR ((LM_ERROR,
    -                      ASYS_TEXT ("cannot remove Module_Type %s from STREAM_Type %s\n"),
    -                      module->name (),
    -                      stream->name ()));
    -          ace_yyerrno++;
    -        }
    -    }
    -break;
    -case 30:
    -#line 227 "Svc_Conf.y"
    -{
    -      u_int flags
    -        = ACE_Service_Type::DELETE_THIS
    -        | (ace_yyvsp[-1].location_node_->dispose () == 0 ? 0 : ACE_Service_Type::DELETE_OBJ);
    -      ACE_Service_Object_Exterminator gobbler = 0;
    -      void *sym = ace_yyvsp[-1].location_node_->symbol (&gobbler);
    -
    -      if (sym != 0)
    -        {
    -          ACE_Service_Type_Impl *stp
    -            = ace_create_service_type (ASYS_WIDE_STRING (ace_yyvsp[-3].ident_),
    -                                       ace_yyvsp[-2].type_,
    -                                       sym,
    -                                       flags,
    -                                       gobbler);
    -          ace_yyval.svc_record_ = new ACE_Service_Type (ASYS_WIDE_STRING (ace_yyvsp[-3].ident_),
    -                                     stp,
    -                                     ace_yyvsp[-1].location_node_->handle (),
    -                                     ace_yyvsp[0].type_);
    -        }
    -      else
    -        {
    -          ACE_ERROR ((LM_ERROR,
    -                      ASYS_TEXT ("Unable to find service: %s\n"),
    -                      ASYS_WIDE_STRING (ace_yyvsp[-3].ident_)));
    -          ++ace_yyerrno;
    -          ace_yyval.svc_record_ = 0;
    -        }
    -      delete ace_yyvsp[-1].location_node_;
    -    }
    -break;
    -case 31:
    -#line 261 "Svc_Conf.y"
    -{
    -      ace_yyval.type_ = 1;
    -    }
    -break;
    -case 32:
    -#line 265 "Svc_Conf.y"
    -{
    -      ace_yyval.type_ = 0;
    -    }
    -break;
    -case 33:
    -#line 269 "Svc_Conf.y"
    -{
    -      ace_yyval.type_ = 1;
    -    }
    -break;
    -case 34:
    -#line 276 "Svc_Conf.y"
    -{
    -      ace_yyval.location_node_ = new ACE_Object_Node (ASYS_WIDE_STRING (ace_yyvsp[-2].ident_), ASYS_WIDE_STRING(ace_yyvsp[0].ident_));
    -    }
    -break;
    -case 35:
    -#line 280 "Svc_Conf.y"
    -{
    -      ace_yyval.location_node_ = new ACE_Function_Node (ASYS_WIDE_STRING (ace_yyvsp[-4].ident_), ASYS_WIDE_STRING (ace_yyvsp[-2].ident_));
    -    }
    -break;
    -case 36:
    -#line 284 "Svc_Conf.y"
    -{
    -      ace_yyval.location_node_ = new ACE_Static_Function_Node (ASYS_WIDE_STRING (ace_yyvsp[-2].ident_));
    -    }
    -break;
    -case 37:
    -#line 291 "Svc_Conf.y"
    -{
    -      ace_yyval.type_ = ACE_MODULE_T;
    -    }
    -break;
    -case 38:
    -#line 295 "Svc_Conf.y"
    -{
    -      ace_yyval.type_ = ACE_SVC_OBJ_T;
    -    }
    -break;
    -case 39:
    -#line 299 "Svc_Conf.y"
    -{
    -      ace_yyval.type_ = ACE_STREAM_T;
    -    }
    -break;
    -case 41:
    -#line 306 "Svc_Conf.y"
    -{ ace_yyval.ident_ = 0; }
    -break;
    -#line 983 "Svc_Conf_y.cpp"
    -    }
    -    ace_yyssp -= ace_yym;
    -    ace_yystate = *ace_yyssp;
    -    ace_yyvsp -= ace_yym;
    -    ace_yym = ace_yylhs[ace_yyn];
    -    if (ace_yystate == 0 && ace_yym == 0)
    -    {
    -#ifdef ACE_YYDEBUG
    -        if (5 < ace_yydebug)
    -            printf("ace_yydebug: after reduction, shifting from state 0 to\
    - state %d\n", ACE_YYFINAL);
    -#endif
    -        ace_yystate = ACE_YYFINAL;
    -        *++ace_yyssp = ACE_YYFINAL;
    -        *++ace_yyvsp = ace_yyval;
    -        if (ace_yychar < 0)
    -        {
    -            if ((ace_yychar = ace_yylex()) < 0) ace_yychar = 0;
    -#if ACE_YYDEBUG
    -            if (ace_yydebug)
    -            {
    -                ace_yys = 0;
    -                if (ace_yychar <= ACE_YYMAXTOKEN) ace_yys = ace_yyname[ace_yychar];
    -                if (!ace_yys) ace_yys = "illegal-symbol";
    -                if (5 < ace_yydebug)
    -                    printf("ace_yydebug: state %d, reading %d (%s)\n",
    -                        ACE_YYFINAL, ace_yychar, ace_yys);
    -                else
    -                    ACE_YYDEBUG_LOOK_AHEAD(ACE_YYFINAL, ace_yychar, ace_yys, ace_yyssp-ace_yyss);
    -            }
    -#endif
    -        }
    -        if (ace_yychar == 0) goto ace_yyaccept;
    -        goto ace_yyloop;
    -    }
    -    if ((ace_yyn = ace_yygindex[ace_yym]) && (ace_yyn += ace_yystate) >= 0 &&
    -            ace_yyn <= ACE_YYTABLESIZE && ace_yycheck[ace_yyn] == ace_yystate)
    -        ace_yystate = ace_yytable[ace_yyn];
    -    else
    -        ace_yystate = ace_yydgoto[ace_yym];
    -#ifdef ACE_YYDEBUG
    -    if (5 < ace_yydebug)
    -        printf("ace_yydebug: after reduction, shifting from state %d \
    -to state %d\n", *ace_yyssp, ace_yystate);
    -#endif
    -    if (ace_yyssp >= ace_yyss + ace_yystacksize - 1)
    -    {
    -        goto ace_yyoverflow;
    -    }
    -    *++ace_yyssp = ace_yystate;
    -    *++ace_yyvsp = ace_yyval;
    -    goto ace_yyloop;
    -ace_yyoverflow:
    -    ace_yyerror("yacc stack overflow");
    -ace_yyabort:
    -    return (1);
    -ace_yyaccept:
    -    return (0);
    -}
    diff --git a/ace/Svc_Handler.cpp b/ace/Svc_Handler.cpp
    deleted file mode 100644
    index 95f7027aee7..00000000000
    --- a/ace/Svc_Handler.cpp
    +++ /dev/null
    @@ -1,517 +0,0 @@
    -// $Id$
    -
    -#ifndef ACE_SVC_HANDLER_C
    -#define ACE_SVC_HANDLER_C
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Svc_Handler.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Object_Manager.h"
    -#include "ace/Strategies.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/Svc_Handler.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#include "ace/Dynamic.h"
    -
    -ACE_RCSID(ace, Svc_Handler, "$Id$")
    -
    -#define PR_ST_1 ACE_PEER_STREAM_1
    -#define PR_ST_2 ACE_PEER_STREAM_2
    -
    -template  void *
    -ACE_Svc_Handler::operator new (size_t n)
    -{
    -  ACE_TRACE ("ACE_Svc_Handler::operator new");
    -
    -  ACE_Dynamic *const dynamic_instance = ACE_Dynamic::instance ();
    -
    -  if (dynamic_instance == 0)
    -    {
    -      // If this ACE_ASSERT fails, it may be due to running of out TSS
    -      // keys.  Try using ACE_HAS_TSS_EMULATION, or increasing
    -      // ACE_DEFAULT_THREAD_KEYS if already using TSS emulation.
    -      ACE_ASSERT (dynamic_instance != 0);
    -
    -      ACE_throw_bad_alloc;
    -    }
    -  else
    -    {
    -      // Allocate the memory and store it (usually in thread-specific
    -      // storage, depending on config flags).
    -      dynamic_instance->set ();
    -
    -      return ::new char[n];
    -    }
    -}
    -
    -template  void
    -ACE_Svc_Handler::destroy (void)
    -{
    -  ACE_TRACE ("ACE_Svc_Handler::destroy");
    -
    -  // Only delete ourselves if we're not owned by a module and have
    -  // been allocated dynamically.
    -  if (this->mod_ == 0 && this->dynamic_ && this->closing_ == 0)
    -    // Will call the destructor, which automatically calls .
    -    // Note that if we are *not* allocated dynamically then the
    -    // destructor will call  automatically when it gets run
    -    // during cleanup.
    -    delete this;
    -}
    -
    -template  void
    -ACE_Svc_Handler::operator delete (void *obj)
    -{
    -  ACE_TRACE ("ACE_Svc_Handler::delete");
    -  // You cannot delete a 'void*' (X3J16/95-0087 5.3.5.3), but we know
    -  // the pointer was created using new char[] (see operator new code),
    -  // so we use a cast:
    -  char *tmp = (char *) obj;
    -  ::delete [] tmp;
    -}
    -
    -// Default constructor.
    -
    -template 
    -ACE_Svc_Handler::ACE_Svc_Handler (ACE_Thread_Manager *tm,
    -                                                          ACE_Message_Queue *mq,
    -                                                          ACE_Reactor *reactor)
    -  : ACE_Task (tm, mq),
    -    closing_ (0),
    -    recycler_ (0),
    -    recycling_act_ (0)
    -{
    -  ACE_TRACE ("ACE_Svc_Handler::ACE_Svc_Handler");
    -
    -  this->reactor (reactor);
    -
    -  // This clever idiom transparently checks if we were allocated
    -  // dynamically.  This information is used by the  method to
    -  // decide if we need to delete ...  The idiom is based on a
    -  // paper by Michael van Rooyen (mrooyen@cellnet.co.uk) that appeared
    -  // in the April '96 issue of the C++ Report.  We've spruced it up to
    -  // work correctly in multi-threaded programs by using our ACE_TSS
    -  // class.
    -  this->dynamic_ = ACE_Dynamic::instance ()->is_dynamic ();
    -
    -  if (this->dynamic_ != 0)
    -    // Make sure to reset the flag.
    -    ACE_Dynamic::instance ()->reset ();
    -}
    -
    -// Default behavior for a ACE_Svc_Handler object is to be registered
    -// with the ACE_Reactor (thereby ensuring single threading).
    -
    -template  int
    -ACE_Svc_Handler::open (void *)
    -{
    -  ACE_TRACE ("ACE_Svc_Handler::open");
    -#if defined (ACE_DEBUGGING)
    -  ASYS_TCHAR buf[BUFSIZ];
    -  ACE_PEER_STREAM_ADDR client_addr;
    -
    -  if (this->peer_.get_remote_addr (client_addr) == -1)
    -    ACE_ERROR_RETURN ((LM_ERROR,
    -                       ASYS_TEXT ("%p\n"),
    -                       ASYS_TEXT ("get_remote_addr")),
    -                      -1);
    -  else if (client_addr.addr_to_string (buf, sizeof buf) == -1)
    -    ACE_ERROR_RETURN ((LM_ERROR,
    -                       ASYS_TEXT ("%p\n"),
    -                       ASYS_TEXT ("can't obtain peer's address")),
    -                      -1);
    -  ACE_DEBUG ((LM_DEBUG,
    -              ASYS_TEXT ("connected to %s on fd %d\n"),
    -              buf,
    -              this->peer_.get_handle ()));
    -#endif /* ACE_DEBUGGING */
    -  if (this->reactor ()
    -      && this->reactor ()->register_handler
    -      (this,
    -       ACE_Event_Handler::READ_MASK) == -1)
    -    ACE_ERROR_RETURN ((LM_ERROR,
    -                       ASYS_TEXT ("%p\n"),
    -                       ASYS_TEXT ("unable to register client handler")),
    -                      -1);
    -  return 0;
    -}
    -
    -// Perform termination activities.
    -
    -template  void
    -ACE_Svc_Handler::shutdown (void)
    -{
    -  ACE_TRACE ("ACE_Svc_Handler::shutdown");
    -
    -  // Deregister this handler with the ACE_Reactor.
    -  if (this->reactor ())
    -    {
    -      ACE_Reactor_Mask mask = ACE_Event_Handler::ALL_EVENTS_MASK |
    -        ACE_Event_Handler::DONT_CALL;
    -
    -      // Make sure there are no timers.
    -      this->reactor ()->cancel_timer (this);
    -
    -      if (this->peer ().get_handle () != ACE_INVALID_HANDLE)
    -        {
    -          // Remove self from reactor.
    -          this->reactor ()->remove_handler (this, mask);
    -        }
    -    }
    -
    -  // Remove self from the recycler.
    -  if (this->recycler ())
    -    this->recycler ()->purge (this->recycling_act_);
    -
    -  this->peer ().close ();
    -}
    -
    -template  void
    -ACE_Svc_Handler::cleanup_hint (void)
    -{
    -  ACE_TRACE ("ACE_Svc_Handler::cleanup_hint");
    -  // Remove as hint.
    -  if (this->recycler ())
    -    this->recycler ()->cleanup_hint (this->recycling_act_);
    -
    -}
    -
    -template  void
    -ACE_Svc_Handler::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Svc_Handler::dump");
    -
    -  this->peer_.dump ();
    -  ACE_DEBUG ((LM_DEBUG,
    -              "dynamic_ = %d\n",
    -              this->dynamic_));
    -  ACE_DEBUG ((LM_DEBUG,
    -              "closing_ = %d\n",
    -              this->closing_));
    -  ACE_DEBUG ((LM_DEBUG,
    -              "recycler_ = %d\n",
    -              this->recycler_));
    -  ACE_DEBUG ((LM_DEBUG,
    -              "recycling_act_ = %d\n",
    -              this->recycling_act_));
    -}
    -
    -template  ACE_PEER_STREAM &
    -ACE_Svc_Handler::peer (void) const
    -{
    -  ACE_TRACE ("ACE_Svc_Handler::peer");
    -  return (ACE_PEER_STREAM &) this->peer_;
    -}
    -
    -// Extract the underlying I/O descriptor.
    -
    -template  ACE_HANDLE
    -ACE_Svc_Handler::get_handle (void) const
    -{
    -  ACE_TRACE ("ACE_Svc_Handler::get_handle");
    -  return this->peer_.get_handle ();
    -}
    -
    -// Set the underlying I/O descriptor.
    -
    -template  void
    -ACE_Svc_Handler::set_handle (ACE_HANDLE h)
    -{
    -  ACE_TRACE ("ACE_Svc_Handler::set_handle");
    -  this->peer_.set_handle (h);
    -}
    -
    -template 
    -ACE_Svc_Handler::~ACE_Svc_Handler (void)
    -{
    -  ACE_TRACE ("ACE_Svc_Handler::~ACE_Svc_Handler");
    -
    -  if (this->closing_ == 0)
    -    {
    -      // We're closing down now, so make sure not to call ourselves
    -      // recursively via other calls to handle_close() (e.g., from the
    -      // Timer_Queue).
    -      this->closing_ = 1;
    -
    -      this->shutdown ();
    -    }
    -}
    -
    -template  int
    -ACE_Svc_Handler::handle_close (ACE_HANDLE,
    -                                                       ACE_Reactor_Mask)
    -{
    -  ACE_TRACE ("ACE_Svc_Handler::handle_close");
    -
    -  this->destroy ();
    -  return 0;
    -}
    -
    -template  int
    -ACE_Svc_Handler::handle_timeout (const ACE_Time_Value &,
    -                                                         const void *)
    -{
    -  ACE_TRACE ("ACE_Svc_Handler::handle_timeout");
    -  return this->handle_close ();
    -}
    -
    -template  int
    -ACE_Svc_Handler::close (unsigned long)
    -{
    -  ACE_TRACE ("ACE_Svc_Handler::close");
    -  return this->handle_close ();
    -}
    -
    -template  int
    -ACE_Svc_Handler::init (int argc, ASYS_TCHAR *argv[])
    -{
    -  ACE_TRACE ("ACE_Svc_Handler::init");
    -  ACE_UNUSED_ARG (argc);
    -  ACE_UNUSED_ARG (argv);
    -  return -1;
    -}
    -
    -template  int
    -ACE_Svc_Handler::fini (void)
    -{
    -  ACE_TRACE ("ACE_Svc_Handler::fini");
    -  return -1;
    -}
    -
    -template  int
    -ACE_Svc_Handler::info (ASYS_TCHAR **, size_t) const
    -{
    -  ACE_TRACE ("ACE_Svc_Handler::info");
    -  return -1;
    -}
    -
    -template  int
    -ACE_Svc_Handler::idle (u_long flags)
    -{
    -  if (this->recycler ())
    -    return this->recycler ()->cache (this->recycling_act_);
    -  else
    -    return this->close (flags);
    -}
    -
    -template  int
    -ACE_Svc_Handler::recycle_state (ACE_Recyclable_State new_state)
    -{
    -  if (this->recycler ())
    -    return this->recycler ()->recycle_state (this->recycling_act_,
    -                                             new_state);
    -
    -  return 0;
    -}
    -
    -template  ACE_Recyclable_State
    -ACE_Svc_Handler::recycle_state (void) const
    -{
    -  if (this->recycler ())
    -    return this->recycler ()->recycle_state (this->recycling_act_);
    -
    -  return ACE_RECYCLABLE_UNKNOWN;
    -}
    -
    -template  void
    -ACE_Svc_Handler::recycler (ACE_Connection_Recycling_Strategy *recycler,
    -                                                   const void *recycling_act)
    -{
    -  ACE_TRACE ("ACE_Svc_Handler::recycler");
    -  this->recycler_ = recycler;
    -  this->recycling_act_ = recycling_act;
    -}
    -
    -template  ACE_Connection_Recycling_Strategy *
    -ACE_Svc_Handler::recycler (void) const
    -{
    -  ACE_TRACE ("ACE_Svc_Handler::recycler");
    -  return this->recycler_;
    -}
    -
    -template  const void *
    -ACE_Svc_Handler::recycling_act (void) const
    -{
    -  ACE_TRACE ("ACE_Svc_Handler::recycling_act");
    -  return this->recycling_act_;
    -}
    -
    -template  int
    -ACE_Svc_Handler::recycle (void *)
    -{
    -  ACE_TRACE ("ACE_Svc_Handler::recycle");
    -  // By default, the object is ready and willing to be recycled.
    -  return 0;
    -}
    -
    -template 
    -ACE_Buffered_Svc_Handler::~ACE_Buffered_Svc_Handler (void)
    -{
    -  this->flush ();
    -}
    -
    -template 
    -ACE_Buffered_Svc_Handler::ACE_Buffered_Svc_Handler (ACE_Thread_Manager *tm,
    -                                                                            ACE_Message_Queue *mq,
    -                                                                            ACE_Reactor *reactor,
    -                                                                            size_t maximum_buffer_size,
    -                                                                            ACE_Time_Value *timeout)
    -  : ACE_Svc_Handler (tm, mq, reactor),
    -    maximum_buffer_size_ (maximum_buffer_size),
    -    current_buffer_size_ (0),
    -    timeoutp_ (timeout)
    -{
    -  ACE_TRACE ("ACE_Buffered_Svc_Handler::ACE_Buffered_Svc_Handler");
    -
    -  if (this->timeoutp_ != 0)
    -    {
    -      this->interval_ = *timeout;
    -      this->next_timeout_ = ACE_OS::gettimeofday () + this->interval_;
    -    }
    -}
    -
    -template  int
    -ACE_Buffered_Svc_Handler::put (ACE_Message_Block *mb,
    -                                                       ACE_Time_Value *tv)
    -{
    -  ACE_GUARD_RETURN (ACE_SYNCH_MUTEX_T, m, this->msg_queue ()->lock (), -1);
    -
    -  // Enqueue  onto the message queue.
    -  if (this->putq (mb, tv) == -1)
    -    return -1;
    -  else
    -    {
    -      // Update the current number of bytes on the queue.
    -      this->current_buffer_size_ += mb->total_size ();
    -
    -      // Flush the buffer when the number of bytes exceeds the maximum
    -      // buffer size or when the timeout period has elapsed.
    -      if (this->current_buffer_size_ >= this->maximum_buffer_size_
    -          || (this->timeoutp_ != 0
    -              && this->next_timeout_ <= ACE_OS::gettimeofday ()))
    -        return this->flush ();
    -      else
    -        return 0;
    -    }
    -}
    -
    -// Flush the buffer.
    -
    -template  int
    -ACE_Buffered_Svc_Handler::flush (void)
    -{
    -  ACE_GUARD_RETURN (ACE_SYNCH_MUTEX_T, m, this->msg_queue ()->lock (), -1);
    -  ACE_Message_Block *entry = 0;
    -  iovec iov[IOV_MAX];
    -  size_t i = 0;
    -  int result = 0;
    -
    -  // Iterate over all the s in the
    -  //  and prepare them to be written out.
    -  for (ACE_Message_Queue_Iterator iterator (*this->msg_queue ());
    -       iterator.next (entry) != 0
    -         && result == 0;
    -       iterator.advance ())
    -    {
    -      // Iterate over all the s in a chain, including
    -      // continuations.
    -      for (ACE_Message_Block *temp = entry;
    -           temp != 0;
    -           temp = temp->cont ())
    -        {
    -          iov[i].iov_len = temp->length ();
    -          iov[i].iov_base = temp->rd_ptr ();
    -
    -          i++;
    -
    -          // Flush the s when we've reached the maximum size
    -          // for the platform.
    -          if (i == IOV_MAX)
    -            {
    -#if defined (ACE_DEBUGGING)
    -              ACE_DEBUG ((LM_DEBUG,
    -                          "sending data (inside loop, i = %d)\n",
    -                          i));
    -#endif /* ACE_DEBUGGING */
    -              // Send off the data.
    -              if (this->peer ().sendv_n (iov,
    -                                         i) == -1)
    -                {
    -                  result = -1;
    -                  break;
    -                }
    -              i = 0;
    -            }
    -        }
    -    }
    -
    -  // Take care of any remaining s.
    -  if (i > 0 && result != -1)
    -    {
    -      if (this->peer ().sendv_n (iov, i) == -1)
    -        result = -1;
    -#if defined (ACE_DEBUGGING)
    -      ACE_DEBUG ((LM_DEBUG,
    -                  "sending data (final flush, i = %d)\n",
    -                  i));
    -#endif /* ACE_DEBUGGING */
    -    }
    -
    -  // Remove all the s in the 
    -  // and  their memory.
    -  while (this->msg_queue ()->is_empty () == 0)
    -    {
    -      if (this->msg_queue ()->dequeue_head (entry) == -1)
    -        break;
    -
    -      entry->release ();
    -    }
    -
    -  if (this->timeoutp_ != 0)
    -    // Update the next timeout period by adding the interval.
    -    this->next_timeout_ += this->interval_;
    -
    -  this->current_buffer_size_ = 0;
    -
    -  return result;
    -}
    -
    -template  void
    -ACE_Buffered_Svc_Handler::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Buffered_Svc_Handler::dump");
    -
    -  ACE_Buffered_Svc_Handler::dump ();
    -  ACE_DEBUG ((LM_DEBUG,
    -              "maximum_buffer_size_ = %d\n",
    -              this->maximum_buffer_size_));
    -  ACE_DEBUG ((LM_DEBUG,
    -              "current_buffer_size_ = %d\n",
    -              this->current_buffer_size_));
    -  if (this->timeoutp_ != 0)
    -    ACE_DEBUG ((LM_DEBUG,
    -                "next_timeout_.sec = %d, next_timeout_.usec = %d\n",
    -                this->next_timeout_.sec (),
    -                this->next_timeout_.usec ()));
    -  else
    -    ACE_DEBUG ((LM_DEBUG,
    -                "timeoutp_ == NULL"));
    -}
    -
    -template  int
    -ACE_Buffered_Svc_Handler::handle_timeout (const ACE_Time_Value &,
    -                                                                  const void *)
    -{
    -  ACE_TRACE ("ACE_Buffered_Svc_Handler::handle_timeout");
    -  return 0;
    -}
    -
    -#undef PR_ST_1
    -#undef PR_ST_2
    -#endif /* ACE_SVC_HANDLER_C */
    diff --git a/ace/Svc_Handler.h b/ace/Svc_Handler.h
    deleted file mode 100644
    index c15a97c5009..00000000000
    --- a/ace/Svc_Handler.h
    +++ /dev/null
    @@ -1,271 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//   Svc_Handler.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt and Irfan Pyrarli.
    -//
    -// ============================================================================
    -
    -#ifndef ACE_SVC_HANDLER_H
    -#define ACE_SVC_HANDLER_H
    -
    -// Forward decls.
    -class ACE_Connection_Recycling_Strategy;
    -
    -#include "ace/Synch_Options.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Task.h"
    -#include "ace/Service_Config.h"
    -
    -template 
    -class ACE_Svc_Handler : public ACE_Task
    -{
    -  // = TITLE
    -  //     Defines the interface for a service that exchanges data with
    -  //     its connected peer.
    -  //
    -  // = DESCRIPTION
    -  //     This class provides a well-defined interface that the
    -  //     Acceptor and Connector pattern factories use as their target.
    -  //     Typically, client applications will subclass ACE_Svc_Handler
    -  //     and do all the interesting work in the subclass.  One thing
    -  //     that the ACE_Svc_Handler does contain is a PEER_STREAM
    -  //     endpoint that is initialized by an ACE_Acceptor or
    -  //     ACE_Connector when a connection is established successfully.
    -  //     This endpoint is used to exchange data between a
    -  //     ACE_Svc_Handler and the peer it is connected with.
    -public:
    -  // = Initialization and termination methods.
    -  ACE_Svc_Handler (ACE_Thread_Manager *thr_mgr = 0,
    -                   ACE_Message_Queue *mq = 0,
    -                   ACE_Reactor *reactor = ACE_Reactor::instance ());
    -  // Constructor initializes the  and  by passing them
    -  // down to the  base class.  The  is passed to
    -  // the .
    -
    -  virtual ~ACE_Svc_Handler (void);
    -  // Destructor.
    -
    -  virtual int open (void * = 0);
    -  // Activate the client handler.  This is typically called by the
    -  //  or .
    -
    -  virtual int close (u_long flags = 0);
    -  // Object termination hook -- application-specific cleanup code goes
    -  // here.
    -
    -  virtual int idle (u_long flags = 0);
    -  // Call this method if you want to recycling the 
    -  // instead of closing it.  If the object does not have a recycler,
    -  // it will be closed.
    -
    -  virtual ACE_Recyclable_State recycle_state (void) const;
    -  virtual int recycle_state (ACE_Recyclable_State new_state);
    -  // Call this method if you want to get/set the state of the
    -  // .  If the object does not have a recycler, this call
    -  // will have no effect (and the accessor will return
    -  // ACE_RECYCLABLE_UNKNOWN).
    -
    -  virtual void cleanup_hint (void);
    -  // When the svc_handle is no longer needed around as a hint, call
    -  // this method.
    -
    -  // = Dynamic linking hooks.
    -  virtual int init (int argc, ASYS_TCHAR *argv[]);
    -  // Default version does no work and returns -1.  Must be overloaded
    -  // by application developer to do anything meaningful.
    -
    -  virtual int fini (void);
    -  // Default version does no work and returns -1.  Must be overloaded
    -  // by application developer to do anything meaningful.
    -
    -  virtual int info (ASYS_TCHAR **info_string, size_t length) const;
    -  // Default version does no work and returns -1.  Must be overloaded
    -  // by application developer to do anything meaningful.
    -
    -  // = Demultiplexing hooks.
    -
    -  virtual int handle_close (ACE_HANDLE = ACE_INVALID_HANDLE,
    -                            ACE_Reactor_Mask = ACE_Event_Handler::ALL_EVENTS_MASK);
    -  // Perform termination activities on the SVC_HANDLER.  The default
    -  // behavior is to close down the  (to avoid descriptor leaks)
    -  // and to  this object (to avoid memory leaks)!  If you
    -  // don't want this behavior make sure you override this method...
    -
    -  virtual int handle_timeout (const ACE_Time_Value &time,
    -                              const void *);
    -  // Default behavior when timeouts occur is to close down the
    -  //  by calling .
    -
    -  virtual ACE_HANDLE get_handle (void) const;
    -  // Get the underlying handle associated with the .
    -
    -  virtual void set_handle (ACE_HANDLE);
    -  // Set the underlying handle associated with the .
    -
    -  ACE_PEER_STREAM &peer (void) const;
    -  // Returns the underlying PEER_STREAM.  Used by
    -  //  and  factories
    -
    -  void *operator new (size_t n);
    -  // Overloaded new operator.  This method unobtrusively records if a
    -  //  is allocated dynamically.
    -
    -  virtual void destroy (void);
    -  // Call this to free up dynamically allocated 
    -  // (otherwise you will get memory leaks).  In general, you should
    -  // call this method rather than  since this method knows
    -  // whether or not the object was allocated dynamically, and can act
    -  // accordingly (i.e., deleting it if it was allocated dynamically).
    -
    -  void operator delete (void *);
    -  // This really should be private so that users are forced to call
    -  // .  Unfortunately, the C++ standard doesn't allow there
    -  // to be a public new and a private delete.  It is a bad idea to
    -  // call this method directly, so use  instead, unless you
    -  // know for sure that you've allocated the object dynamically.
    -
    -  void shutdown (void);
    -  // Close down the descriptor and unregister from the Reactor
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -public:
    -
    -  // = The following methods are not suppose to be public.
    -
    -  // Because friendship is *not* inherited in C++, these methods have
    -  // to be public.
    -
    -  // = Accessors to set/get the connection recycler.
    -
    -  virtual void recycler (ACE_Connection_Recycling_Strategy *recycler,
    -                         const void *recycling_act);
    -  // Set the recycler and the  that is used during
    -  // purging and caching.
    -
    -  virtual ACE_Connection_Recycling_Strategy *recycler (void) const;
    -  // Get the recycler.
    -
    -  virtual const void *recycling_act (void) const;
    -  // Get the recycling act.
    -
    -  virtual int recycle (void * = 0);
    -  // Upcall made by the recycler when it is about to recycle the
    -  // connection.  This gives the object a chance to prepare itself for
    -  // recycling.  Return 0 if the object is ready for recycling, -1 on
    -  // failures.
    -
    -protected:
    -  ACE_PEER_STREAM peer_;
    -  // Maintain connection with client.
    -
    -  int dynamic_;
    -  // Have we been dynamically created?
    -
    -  char closing_;
    -  // Keeps track of whether we are in the process of closing (required
    -  // to avoid circular calls to ).
    -
    -  ACE_Connection_Recycling_Strategy *recycler_;
    -  // Pointer to the connection recycler.
    -
    -  const void *recycling_act_;
    -  // Asynchronous Completion Token (ACT) to be used to when talking to
    -  // the recycler.
    -};
    -
    -template 
    -class ACE_Buffered_Svc_Handler : public ACE_Svc_Handler
    -{
    -  // = TITLE
    -  //     Defines the interface for a service that exchanges data with
    -  //     its connected peer and supports buffering.
    -  //
    -  // = DESCRIPTION
    -  //      The buffering feature makes it possible to queue up
    -  //       in an  until (1) the
    -  //      queue is "full" or (2) a period of time elapses, at which
    -  //      point the queue is "flushed" via  to the peer.
    -public:
    -  // = Initialization and termination methods.
    -  ACE_Buffered_Svc_Handler (ACE_Thread_Manager *thr_mgr = 0,
    -                            ACE_Message_Queue *mq = 0,
    -                            ACE_Reactor *reactor = ACE_Reactor::instance (),
    -                            size_t max_buffer_size = 0,
    -                            ACE_Time_Value *relative_timeout = 0);
    -  // Constructor initializes the  and  by passing them
    -  // down to the  base class.  The  is passed to
    -  // the .  The  and
    -  //  are used to determine at what point to flush
    -  // the .  By default, there's no buffering at all.  The
    -  //  value is interpreted to be in a unit that's
    -  // relative to the current time returned by .
    -
    -  virtual ~ACE_Buffered_Svc_Handler (void);
    -  // Destructor, which calls .
    -
    -  virtual int put (ACE_Message_Block *message_block,
    -                   ACE_Time_Value *timeout = 0);
    -  // Insert the  chain rooted at 
    -  // into the  with the designated .  The
    -  //  method will be called if this  causes the number of
    -  // bytes to exceed the maximum buffer size or if the timeout period
    -  // has elapsed.
    -
    -  virtual int flush (void);
    -  // Flush the , which writes all the queued
    -  // s to the .
    -
    -  virtual int handle_timeout (const ACE_Time_Value &time,
    -                              const void *);
    -  // This method is not currently implemented -- this is where the
    -  // integration with the  would occur.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -protected:
    -  size_t maximum_buffer_size_;
    -  // Maximum size the  can be before we have to flush
    -  // the buffer.
    -
    -  size_t current_buffer_size_;
    -  // Current size in bytes of the  contents.
    -
    -  ACE_Time_Value next_timeout_;
    -  // Timeout value used to control when the buffer is flushed.
    -
    -  ACE_Time_Value interval_;
    -  // Interval of the timeout.
    -
    -  ACE_Time_Value *timeoutp_;
    -  // Timeout pointer.
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Svc_Handler.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
    -#include "ace/Svc_Handler.cpp"
    -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
    -#pragma implementation ("Svc_Handler.cpp")
    -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
    -
    -#endif /* ACE_SVC_HANDLER_H */
    diff --git a/ace/Svc_Handler.i b/ace/Svc_Handler.i
    deleted file mode 100644
    index f138a9fd2b7..00000000000
    --- a/ace/Svc_Handler.i
    +++ /dev/null
    @@ -1,5 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// Svc_Handler.i
    -
    diff --git a/ace/Synch.cpp b/ace/Synch.cpp
    deleted file mode 100644
    index 93915f81cba..00000000000
    --- a/ace/Synch.cpp
    +++ /dev/null
    @@ -1,1042 +0,0 @@
    -// $Id$
    -
    -#ifndef ACE_SYNCH_C
    -#define ACE_SYNCH_C
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Thread.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Synch_T.h"
    -#include "ace/Synch.h"
    -
    -ACE_RCSID(ace, Synch, "$Id$")
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/Synch.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Null_Mutex)
    -ACE_ALLOC_HOOK_DEFINE(ACE_File_Lock)
    -ACE_ALLOC_HOOK_DEFINE(ACE_RW_Process_Mutex)
    -ACE_ALLOC_HOOK_DEFINE(ACE_Process_Mutex)
    -
    -ACE_Lock::~ACE_Lock (void)
    -{
    -}
    -
    -ACE_Adaptive_Lock::ACE_Adaptive_Lock (void)
    -  : lock_ (0)
    -{
    -}
    -
    -ACE_Adaptive_Lock::~ACE_Adaptive_Lock (void)
    -{
    -}
    -
    -int
    -ACE_Adaptive_Lock::remove (void)
    -{
    -  return this->lock_->remove ();
    -}
    -
    -int
    -ACE_Adaptive_Lock::acquire (void)
    -{
    -  return this->lock_->acquire ();
    -}
    -
    -int
    -ACE_Adaptive_Lock::tryacquire (void)
    -{
    -  return this->lock_->tryacquire ();
    -}
    -
    -int
    -ACE_Adaptive_Lock::release (void)
    -{
    -  return this->lock_->release ();
    -}
    -
    -int
    -ACE_Adaptive_Lock::acquire_read (void)
    -{
    -  return this->lock_->acquire_read ();
    -}
    -
    -int
    -ACE_Adaptive_Lock::acquire_write (void)
    -{
    -  return this->lock_->acquire_write ();
    -}
    -
    -int
    -ACE_Adaptive_Lock::tryacquire_read (void)
    -{
    -  return this->lock_->tryacquire_read ();
    -}
    -
    -int
    -ACE_Adaptive_Lock::tryacquire_write (void)
    -{
    -  return this->lock_->tryacquire_write ();
    -}
    -
    -void
    -ACE_Adaptive_Lock::dump (void) const
    -{
    -  //  return this->lock_->dump ();
    -}
    -
    -ACE_TSS_Adapter::ACE_TSS_Adapter (void *object, ACE_THR_DEST f)
    -  : ts_obj_ (object),
    -    func_ (f)
    -{
    -  // ACE_TRACE ("ACE_TSS_Adapter::ACE_TSS_Adapter");
    -}
    -
    -void
    -ACE_TSS_Adapter::cleanup (void)
    -{
    -  // ACE_TRACE ("ACE_TSS_Adapter::cleanup");
    -  (*this->func_)(this->ts_obj_);  // call cleanup routine for ts_obj_
    -}
    -
    -extern "C" void
    -ACE_TSS_C_cleanup (void *object)
    -{
    -  // ACE_TRACE ("ACE_TSS_C_cleanup");
    -  if (object != 0)
    -    {
    -      ACE_TSS_Adapter *tss_adapter = (ACE_TSS_Adapter *) object;
    -      // Perform cleanup on the real TS object.
    -      tss_adapter->cleanup ();
    -      // Delete the adapter object.
    -      delete tss_adapter;
    -    }
    -}
    -
    -void
    -ACE_Process_Mutex::dump (void) const
    -{
    -// ACE_TRACE ("ACE_Process_Mutex::dump");
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  this->lock_.dump ();
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -#if !defined (ACE_WIN32) && !defined (ACE_HAS_POSIX_SEM)
    -LPCTSTR
    -ACE_Process_Mutex::unique_name (void)
    -{
    -  // For all platforms other than Win32, we are going to create a
    -  // machine wide unquie name if one is not provided by the user.  On
    -  // Win32, unnamed synchronization objects are acceptable.
    -  ACE::unique_name (this, this->name_, ACE_UNIQUE_NAME_LEN);
    -  return this->name_;
    -}
    -#endif /* !ACE_WIN32 && !ACE_HAS_POSIX_SEM */
    -
    -ACE_Process_Mutex::ACE_Process_Mutex (LPCTSTR name, void *arg)
    -#if defined (ACE_WIN32) || defined (ACE_HAS_POSIX_SEM)
    -  : lock_ (USYNC_PROCESS, name, arg)
    -#else
    -  : lock_ (name?name:ACE_Process_Mutex::unique_name ())
    -#endif /* ACE_WIN32 || ACE_HAS_POSIX_SEM */
    -{
    -#if !defined (ACE_WIN32) && !defined (ACE_HAS_POSIX_SEM)
    -  ACE_UNUSED_ARG (arg);
    -#endif /* !ACE_WIN32 && !ACE_HAS_POSIX_SEM */
    -}
    -
    -ACE_Process_Mutex::~ACE_Process_Mutex (void)
    -{
    -}
    -
    -ACE_RW_Process_Mutex::ACE_RW_Process_Mutex (LPCTSTR name,
    -                                            int flags)
    -  : lock_ (name, flags
    -#if defined (ACE_WIN32)
    -           )
    -#else
    -           , S_IRUSR | S_IWUSR)
    -#endif /* ACE_WIN32 */
    -{
    -// ACE_TRACE ("ACE_RW_Process_Mutex::ACE_RW_Process_Mutex");
    -}
    -
    -ACE_RW_Process_Mutex::~ACE_RW_Process_Mutex (void)
    -{
    -// ACE_TRACE ("ACE_RW_Process_Mutex::ACE_RW_Process_Mutex");
    -}
    -
    -void
    -ACE_RW_Process_Mutex::dump (void) const
    -{
    -// ACE_TRACE ("ACE_RW_Process_Mutex::dump");
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  this->lock_.dump ();
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -void
    -ACE_RW_Mutex::dump (void) const
    -{
    -// ACE_TRACE ("ACE_RW_Mutex::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT("\n")));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -ACE_RW_Mutex::ACE_RW_Mutex (int type, LPCTSTR name, void *arg)
    -  : removed_ (0)
    -{
    -// ACE_TRACE ("ACE_RW_Mutex::ACE_RW_Mutex");
    -  if (ACE_OS::rwlock_init (&this->lock_, type, name, arg) != 0)
    -    ACE_ERROR ((LM_ERROR, ASYS_TEXT("%p\n"), ASYS_TEXT("ACE_RW_Mutex::ACE_RW_Mutex")));
    -}
    -
    -ACE_RW_Mutex::~ACE_RW_Mutex (void)
    -{
    -// ACE_TRACE ("ACE_RW_Mutex::~ACE_RW_Mutex");
    -  this->remove ();
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Semaphore)
    -
    -void
    -ACE_Semaphore::dump (void) const
    -{
    -// ACE_TRACE ("ACE_Semaphore::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT("\n")));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -ACE_Semaphore::ACE_Semaphore (u_int count,
    -                              int type,
    -                              LPCTSTR name,
    -                              void *arg,
    -                              int max)
    -  : removed_ (0)
    -{
    -// ACE_TRACE ("ACE_Semaphore::ACE_Semaphore");
    -  if (ACE_OS::sema_init (&this->semaphore_, count, type,
    -                         name, arg, max) != 0)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT("%p\n"),
    -                ASYS_TEXT("ACE_Semaphore::ACE_Semaphore")));
    -}
    -
    -ACE_Semaphore::~ACE_Semaphore (void)
    -{
    -// ACE_TRACE ("ACE_Semaphore::~ACE_Semaphore");
    -
    -  this->remove ();
    -}
    -
    -void
    -ACE_File_Lock::dump (void) const
    -{
    -// ACE_TRACE ("ACE_File_Lock::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  this->lock_.dump ();
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -ACE_File_Lock::ACE_File_Lock (ACE_HANDLE h)
    -  : removed_ (0)
    -{
    -// ACE_TRACE ("ACE_File_Lock::ACE_File_Lock");
    -  if (ACE_OS::flock_init (&this->lock_) == -1)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT ("%p\n"),
    -                ASYS_TEXT ("ACE_File_Lock::ACE_File_Lock")));
    -  this->set_handle (h);
    -}
    -
    -ACE_File_Lock::ACE_File_Lock (LPCTSTR name,
    -                              int flags,
    -                              mode_t perms)
    -  : removed_ (0)
    -{
    -// ACE_TRACE ("ACE_File_Lock::ACE_File_Lock");
    -
    -  if (this->open (name, flags, perms) == -1)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT ("%p %s\n"),
    -                ASYS_TEXT ("ACE_File_Lock::ACE_File_Lock"),
    -                name));
    -}
    -
    -int
    -ACE_File_Lock::open (LPCTSTR name,
    -                     int flags,
    -                     mode_t perms)
    -{
    -// ACE_TRACE ("ACE_File_Lock::open");
    -
    -  return ACE_OS::flock_init (&this->lock_, flags, name, perms);
    -}
    -
    -ACE_File_Lock::~ACE_File_Lock (void)
    -{
    -// ACE_TRACE ("ACE_File_Lock::~ACE_File_Lock");
    -  this->remove ();
    -}
    -
    -void
    -ACE_Process_Semaphore::dump (void) const
    -{
    -// ACE_TRACE ("ACE_Process_Semaphore::dump");
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  this->lock_.dump ();
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -ACE_Process_Semaphore::ACE_Process_Semaphore (u_int count,
    -                                              LPCTSTR name,
    -                                              void *arg,
    -                                              int max)
    -#if defined (ACE_WIN32) || defined (ACE_HAS_POSIX_SEM)
    -  : lock_ (count, USYNC_PROCESS, name, arg, max)
    -#else
    -  : lock_ (name, ACE_SV_Semaphore_Complex::ACE_CREATE, count)
    -#endif /* ACE_WIN32 || ACE_HAS_POSIX_SEM */
    -{
    -  arg = arg;
    -  max = max;
    -// ACE_TRACE ("ACE_Process_Semaphore::ACE_Process_Semaphore");
    -}
    -
    -ACE_Process_Semaphore::~ACE_Process_Semaphore (void)
    -{
    -  // ACE_TRACE ("ACE_Process_Semaphore::~ACE_Process_Semaphore");
    -}
    -
    -// Explicitly destroy the semaphore.
    -
    -int
    -ACE_Process_Semaphore::remove (void)
    -{
    -// ACE_TRACE ("ACE_Process_Semaphore::remove");
    -  return this->lock_.remove ();
    -}
    -
    -// Block the thread until the semaphore count becomes
    -// greater than 0, then decrement it.
    -
    -int
    -ACE_Process_Semaphore::acquire (void)
    -{
    -// ACE_TRACE ("ACE_Process_Semaphore::acquire");
    -  return this->lock_.acquire ();
    -}
    -
    -// Conditionally decrement the semaphore if count is greater
    -// than 0 (i.e., won't block).
    -
    -int
    -ACE_Process_Semaphore::tryacquire (void)
    -{
    -// ACE_TRACE ("ACE_Process_Semaphore::tryacquire");
    -  return this->lock_.tryacquire ();
    -}
    -
    -// Increment the semaphore, potentially unblocking
    -// a waiting thread.
    -
    -int
    -ACE_Process_Semaphore::release (void)
    -{
    -// ACE_TRACE ("ACE_Process_Semaphore::release");
    -  return this->lock_.release ();
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Mutex)
    -
    -void
    -ACE_Mutex::dump (void) const
    -{
    -// ACE_TRACE ("ACE_Mutex::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -#if defined (CHORUS)
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("lockname_ = %s\n"), this->lockname_));
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("process_lock_ = %x\n"), this->process_lock_));
    -#endif /* CHORUS */
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("\n")));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -ACE_Mutex::ACE_Mutex (int type, LPCTSTR name, void *arg)
    -  :
    -#if defined (CHORUS)
    -    process_lock_ (0),
    -    lockname_ (0),
    -#endif /* CHORUS */
    -    removed_ (0)
    -{
    -  // ACE_TRACE ("ACE_Mutex::ACE_Mutex");
    -
    -#if defined(CHORUS)
    -  if (type == USYNC_PROCESS)
    -    {
    -      // Let's see if the shared memory entity already exists.
    -      ACE_HANDLE fd = ACE_OS::shm_open (name,
    -                                        O_RDWR | O_CREAT | O_EXCL,
    -                                        ACE_DEFAULT_FILE_PERMS);
    -      if (fd == ACE_INVALID_HANDLE)
    -        {
    -          if (errno == EEXIST)
    -            fd = ACE_OS::shm_open (name,
    -                                   O_RDWR | O_CREAT,
    -                                   ACE_DEFAULT_FILE_PERMS);
    -          else
    -            return;
    -        }
    -      else
    -        {
    -          // We own this shared memory object!  Let's set its size.
    -          if (ACE_OS::ftruncate (fd,
    -                                 sizeof (ACE_mutex_t)) == -1)
    -            {
    -              ACE_OS::close (fd);
    -              return;
    -            }
    -          this->lockname_ = ACE_OS::strdup (name);
    -          if (this->lockname_ == 0)
    -            {
    -              ACE_OS::close (fd);
    -              return;
    -            }
    -        }
    -
    -      this->process_lock_ =
    -        (ACE_mutex_t *) ACE_OS::mmap (0,
    -                                      sizeof (ACE_mutex_t),
    -                                      PROT_RDWR,
    -                                      MAP_SHARED,
    -                                      fd,
    -                                      0);
    -      ACE_OS::close (fd);
    -      if (this->process_lock_ == MAP_FAILED)
    -        return;
    -
    -      if (this->lockname_
    -          && ACE_OS::mutex_init (this->process_lock_,
    -                                 type,
    -                                 name,
    -                                 arg) != 0)
    -        return;
    -    }
    -   // It is ok to fall through into the  below if the
    -   // USYNC_PROCESS flag is not enabled.
    -#endif /* CHORUS */
    -  if (ACE_OS::mutex_init (&this->lock_,
    -                          type,
    -                          name,
    -                          arg) != 0)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT ("%p\n"),
    -                ASYS_TEXT ("ACE_Mutex::ACE_Mutex")));
    -}
    -
    -ACE_Mutex::~ACE_Mutex (void)
    -{
    -// ACE_TRACE ("ACE_Mutex::~ACE_Mutex");
    -  this->remove ();
    -}
    -
    -ACE_Event::ACE_Event (int manual_reset,
    -                      int initial_state,
    -                      int type,
    -                      LPCTSTR name,
    -                      void *arg)
    -  : removed_ (0)
    -{
    -  if (ACE_OS::event_init (&this->handle_,
    -                          manual_reset,
    -                          initial_state,
    -                          type,
    -                          name,
    -                          arg) != 0)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT("%p\n"),
    -                ASYS_TEXT("ACE_Event::ACE_Event")));
    -}
    -
    -ACE_Event::~ACE_Event (void)
    -{
    -  this->remove ();
    -}
    -
    -int
    -ACE_Event::remove (void)
    -{
    -  int result = 0;
    -  if (this->removed_ == 0)
    -    {
    -      this->removed_ = 1;
    -      result = ACE_OS::event_destroy (&this->handle_);
    -    }
    -  return result;
    -}
    -
    -ACE_event_t
    -ACE_Event::handle (void) const
    -{
    -  return this->handle_;
    -}
    -
    -void
    -ACE_Event::handle (ACE_event_t new_handle)
    -{
    -  this->handle_ = new_handle;
    -}
    -
    -int
    -ACE_Event::wait (void)
    -{
    -  return ACE_OS::event_wait (&this->handle_);
    -}
    -
    -int
    -ACE_Event::wait (const ACE_Time_Value *abstime)
    -{
    -  return ACE_OS::event_timedwait (&this->handle_,
    -                                  (ACE_Time_Value *) abstime);
    -}
    -
    -int
    -ACE_Event::signal (void)
    -{
    -  return ACE_OS::event_signal (&this->handle_);
    -}
    -
    -int
    -ACE_Event::pulse (void)
    -{
    -  return ACE_OS::event_pulse (&this->handle_);
    -}
    -
    -int
    -ACE_Event::reset (void)
    -{
    -  return ACE_OS::event_reset (&this->handle_);
    -}
    -
    -void
    -ACE_Event::dump (void) const
    -{
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -ACE_Manual_Event::ACE_Manual_Event (int initial_state,
    -                                    int type,
    -                                    LPCTSTR name,
    -                                    void *arg)
    -  : ACE_Event (1,
    -               initial_state,
    -               type,
    -               name,
    -               arg)
    -{
    -}
    -
    -void
    -ACE_Manual_Event::dump (void) const
    -{
    -  ACE_Event::dump ();
    -}
    -
    -ACE_Auto_Event::ACE_Auto_Event (int initial_state,
    -                                int type,
    -                                LPCTSTR name,
    -                                void *arg)
    -  : ACE_Event (0,
    -               initial_state,
    -               type,
    -               name,
    -               arg)
    -{
    -}
    -
    -void
    -ACE_Auto_Event::dump (void) const
    -{
    -  ACE_Event::dump ();
    -}
    -
    -#if defined (ACE_HAS_THREADS)
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Thread_Mutex_Guard)
    -
    -void
    -ACE_Thread_Semaphore::dump (void) const
    -{
    -// ACE_TRACE ("ACE_Thread_Semaphore::dump");
    -
    -  ACE_Semaphore::dump ();
    -}
    -
    -ACE_Thread_Semaphore::ACE_Thread_Semaphore (u_int count,
    -                                            LPCTSTR name,
    -                                            void *arg,
    -                                            int max)
    -  : ACE_Semaphore (count, USYNC_THREAD, name, arg, max)
    -{
    -// ACE_TRACE ("ACE_Thread_Semaphore::ACE_Thread_Semaphore");
    -}
    -
    -#if defined (ACE_USES_OBSOLETE_GUARD_CLASSES)
    -void
    -ACE_Thread_Mutex_Guard::dump (void) const
    -{
    -// ACE_TRACE ("ACE_Thread_Mutex_Guard::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT("\n")));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -#endif /* ACE_USES_OBSOLETE_GUARD_CLASSES */
    -
    -ACE_Recursive_Thread_Mutex::ACE_Recursive_Thread_Mutex (LPCTSTR name,
    -                                                        void *arg)
    -  : removed_ (0)
    -{
    -  // ACE_TRACE ("ACE_Recursive_Thread_Mutex::ACE_Recursive_Thread_Mutex");
    -#if defined (ACE_HAS_FSU_PTHREADS) && ! defined (ACE_WIN32)
    -  // Initialize FSU pthreads package.  If called more than once,
    -  // pthread_init does nothing and so does no harm.
    -   pthread_init ();
    -#endif  /*  ACE_HAS_FSU_PTHREADS && ! ACE_WIN32 */
    -   if (ACE_OS::recursive_mutex_init (&this->recursive_mutex_,
    -                                     name,
    -                                     arg) == -1)
    -     ACE_ERROR ((LM_ERROR,
    -                 ASYS_TEXT ("%p\n"),
    -                 ASYS_TEXT ("recursive_mutex_init")));
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Recursive_Thread_Mutex)
    -
    -ACE_Recursive_Thread_Mutex::~ACE_Recursive_Thread_Mutex (void)
    -{
    -  // ACE_TRACE ("ACE_Recursive_Thread_Mutex::~ACE_Recursive_Thread_Mutex");
    -  this->remove ();
    -}
    -
    -int
    -ACE_Recursive_Thread_Mutex::remove (void)
    -{
    -// ACE_TRACE ("ACE_Recursive_Thread_Mutex::remove");
    -  int result = 0;
    -  if (this->removed_ == 0)
    -    {
    -      this->removed_ = 1;
    -      result = ACE_OS::recursive_mutex_destroy (&this->recursive_mutex_);
    -    }
    -  return result;
    -}
    -
    -// The counter part of the following two functions for Win32 are
    -// located in file Synch.i
    -ACE_thread_t
    -ACE_Recursive_Thread_Mutex::get_thread_id (void)
    -{
    -  // ACE_TRACE ("ACE_Recursive_Thread_Mutex::get_thread_id");
    -#if defined (ACE_HAS_RECURSIVE_MUTEXES)
    -  // @@ The structure CriticalSection in Win32 doesn't hold the thread
    -  // handle of the thread that owns the lock.  However it is still not
    -  // clear at this point how to translate a thread handle to its
    -  // corresponding thread id.
    -  errno = ENOTSUP;
    -  return ACE_OS::NULL_thread;
    -#else
    -  ACE_thread_t owner_id;
    -  ACE_OS::mutex_lock (&this->recursive_mutex_.nesting_mutex_);
    -  owner_id = this->recursive_mutex_.owner_id_;
    -  ACE_OS::mutex_unlock (&this->recursive_mutex_.nesting_mutex_);
    -  return owner_id;
    -#endif /* ACE_WIN32 */
    -}
    -
    -int
    -ACE_Recursive_Thread_Mutex::get_nesting_level (void)
    -{
    -  // ACE_TRACE ("ACE_Recursive_Thread_Mutex::get_nesting_level");
    -#if defined (ACE_HAS_WINCE) || defined (VXWORKS)
    -  ACE_NOTSUP_RETURN (-1);
    -#elif defined (ACE_HAS_RECURSIVE_MUTEXES)
    -  // This is really a Win32-ism...
    -  return this->recursive_mutex_.RecursionCount;
    -#else
    -  int nesting_level = 0;
    -  ACE_OS::mutex_lock (&this->recursive_mutex_.nesting_mutex_);
    -  nesting_level = this->recursive_mutex_.nesting_level_;
    -  ACE_OS::mutex_unlock (&this->recursive_mutex_.nesting_mutex_);
    -  return nesting_level;
    -#endif /* !ACE_HAS_WINCE */
    -}
    -
    -ACE_Recursive_Thread_Mutex::ACE_Recursive_Thread_Mutex (const ACE_Recursive_Thread_Mutex &)
    -{
    -}
    -
    -int
    -ACE_Recursive_Thread_Mutex::acquire (void)
    -{
    -  return ACE_OS::recursive_mutex_lock (&this->recursive_mutex_);
    -}
    -
    -int
    -ACE_Recursive_Thread_Mutex::release (void)
    -{
    -  return ACE_OS::recursive_mutex_unlock (&this->recursive_mutex_);
    -}
    -
    -int
    -ACE_Recursive_Thread_Mutex::tryacquire (void)
    -{
    -  return ACE_OS::recursive_mutex_trylock (&this->recursive_mutex_);
    -}
    -
    -void
    -ACE_Recursive_Thread_Mutex::dump (void) const
    -{
    -// ACE_TRACE ("ACE_Recursive_Thread_Mutex::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Condition_Thread_Mutex)
    -
    -void
    -ACE_Condition_Thread_Mutex::dump (void) const
    -{
    -// ACE_TRACE ("ACE_Condition_Thread_Mutex::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT("\n")));
    -#if defined (ACE_WIN32)
    -  ACE_DEBUG ((LM_DEBUG,
    -              ASYS_TEXT ("waiters = %d\n"),
    -              this->cond_.waiters ()));
    -#endif /* ACE_WIN32 */
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -ACE_Condition_Thread_Mutex::ACE_Condition_Thread_Mutex (const ACE_Thread_Mutex &m,
    -                                                        LPCTSTR name,
    -                                                        void *arg)
    -  : mutex_ ((ACE_Thread_Mutex &) m),
    -    removed_ (0)
    -{
    -#if defined (ACE_HAS_FSU_PTHREADS)
    -//      Initialize FSU pthreads package.
    -//      If called more than once, pthread_init does nothing
    -//      and so does no harm.
    -   pthread_init ();
    -#endif  /*  ACE_HAS_FSU_PTHREADS */
    -
    -// ACE_TRACE ("ACE_Condition_Thread_Mutex::ACE_Condition_Thread_Mutex");
    -  if (ACE_OS::cond_init (&this->cond_, USYNC_THREAD, name, arg) != 0)
    -    ACE_ERROR ((LM_ERROR, ASYS_TEXT ("%p\n"),
    -                ASYS_TEXT ("ACE_Condition_Thread_Mutex::ACE_Condition_Thread_Mutex")));
    -}
    -
    -ACE_Condition_Thread_Mutex::
    -ACE_Condition_Thread_Mutex (const ACE_Thread_Mutex &m,
    -                            ACE_Condition_Attributes &attributes,
    -                            LPCTSTR name,
    -                            void *arg)
    -  : mutex_ ((ACE_Thread_Mutex &) m),
    -    removed_ (0)
    -{
    -#if defined (ACE_HAS_FSU_PTHREADS)
    -//      Initialize FSU pthreads package.
    -//      If called more than once, pthread_init does nothing
    -//      and so does no harm.
    -   pthread_init ();
    -#endif  /*  ACE_HAS_FSU_PTHREADS */
    -
    -// ACE_TRACE ("ACE_Condition_Thread_Mutex::ACE_Condition_Thread_Mutex");
    -  if (ACE_OS::cond_init (&this->cond_, attributes.attributes_,
    -                         name, arg) != 0)
    -    ACE_ERROR ((LM_ERROR, ASYS_TEXT ("%p\n"),
    -                ASYS_TEXT ("ACE_Condition_Thread_Mutex::ACE_Condition_Thread_Mutex")));
    -}
    -
    -ACE_Condition_Thread_Mutex::~ACE_Condition_Thread_Mutex (void)
    -{
    -// ACE_TRACE ("ACE_Condition_Thread_Mutex::~ACE_Condition_Thread_Mutex");
    -  this->remove ();
    -}
    -
    -// Peform an "alertable" timed wait.  If the argument  == 0
    -// then we do a regular , else we do a timed wait for up to
    -//  using the  function.
    -
    -int
    -ACE_Condition_Thread_Mutex::wait (void)
    -{
    -// ACE_TRACE ("ACE_Condition_Thread_Mutex::wait");
    -  return ACE_OS::cond_wait (&this->cond_, &this->mutex_.lock_);
    -}
    -
    -int
    -ACE_Condition_Thread_Mutex::wait (ACE_Thread_Mutex &mutex,
    -                                  const ACE_Time_Value *abstime)
    -{
    -// ACE_TRACE ("ACE_Condition::wait");
    -  return ACE_OS::cond_timedwait (&this->cond_,
    -                                 &mutex.lock_,
    -                                 (ACE_Time_Value *) abstime);
    -}
    -
    -int
    -ACE_Condition_Thread_Mutex::wait (const ACE_Time_Value *abstime)
    -{
    -// ACE_TRACE ("ACE_Condition_Thread_Mutex::wait");
    -  return this->wait (this->mutex_, abstime);
    -}
    -
    -int
    -ACE_Condition_Thread_Mutex::signal (void)
    -{
    -// ACE_TRACE ("ACE_Condition_Thread_Mutex::signal");
    -  return ACE_OS::cond_signal (&this->cond_);
    -}
    -
    -int
    -ACE_Condition_Thread_Mutex::broadcast (void)
    -{
    -// ACE_TRACE ("ACE_Condition_Thread_Mutex::broadcast");
    -  return ACE_OS::cond_broadcast (&this->cond_);
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Sub_Barrier)
    -
    -void
    -ACE_Sub_Barrier::dump (void) const
    -{
    -// ACE_TRACE ("ACE_Sub_Barrier::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  this->barrier_finished_.dump ();
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT("running_threads_ = %d"), this->running_threads_));
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT("\n")));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -ACE_Sub_Barrier::ACE_Sub_Barrier (u_int count,
    -                                  ACE_Thread_Mutex &lock,
    -                                  LPCTSTR name,
    -                                  void *arg)
    -  : barrier_finished_ (lock, name, arg),
    -    running_threads_ (count)
    -{
    -// ACE_TRACE ("ACE_Sub_Barrier::ACE_Sub_Barrier");
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Barrier)
    -ACE_ALLOC_HOOK_DEFINE(ACE_Thread_Barrier)
    -ACE_ALLOC_HOOK_DEFINE(ACE_Process_Barrier)
    -
    -void
    -ACE_Barrier::dump (void) const
    -{
    -// ACE_TRACE ("ACE_Barrier::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  this->lock_.dump ();
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT("current_generation_ = %d"), this->current_generation_));
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT("\ncount_ = %d"), this->count_));
    -  this->sub_barrier_1_.dump ();
    -  this->sub_barrier_2_.dump ();
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -ACE_Barrier::ACE_Barrier (u_int count,
    -                          LPCTSTR name,
    -                          void *arg)
    -  : lock_ (name, arg),
    -    current_generation_ (0),
    -    count_ (count),
    -    sub_barrier_1_ (count, lock_, name, arg),
    -    sub_barrier_2_ (count, lock_, name, arg)
    -{
    -// ACE_TRACE ("ACE_Barrier::ACE_Barrier");
    -  this->sub_barrier_[0] = &this->sub_barrier_1_;
    -  this->sub_barrier_[1] = &this->sub_barrier_2_;
    -}
    -
    -int
    -ACE_Barrier::wait (void)
    -{
    -// ACE_TRACE ("ACE_Barrier::wait");
    -  ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, -1);
    -
    -  ACE_Sub_Barrier *sbp =
    -    this->sub_barrier_[this->current_generation_];
    -
    -  // Check for shutdown...
    -  if (sbp == 0)
    -    return -1;
    -
    -  if (sbp->running_threads_ == 1)
    -    {
    -      // We're the last running thread, so swap generations and tell
    -      // all the threads waiting on the barrier to continue on their
    -      // way.
    -
    -      sbp->running_threads_ = this->count_;
    -      // Swap generations.
    -      this->current_generation_ = 1 - this->current_generation_;
    -      sbp->barrier_finished_.broadcast ();
    -    }
    -  else
    -    {
    -      --sbp->running_threads_;
    -
    -      // Block until all the other threads wait().
    -      while (sbp->running_threads_ != this->count_)
    -        sbp->barrier_finished_.wait ();
    -    }
    -
    -  return 0;
    -}
    -
    -ACE_Thread_Barrier::ACE_Thread_Barrier (u_int count, LPCTSTR name)
    -  : ACE_Barrier (count, name)
    -{
    -// ACE_TRACE ("ACE_Thread_Barrier::ACE_Thread_Barrier");
    -}
    -
    -void
    -ACE_Thread_Barrier::dump (void) const
    -{
    -// ACE_TRACE ("ACE_Thread_Barrier::dump");
    -  ACE_Barrier::dump ();
    -}
    -
    -#if 0
    -ACE_Process_Barrier::ACE_Process_Barrier (u_int count, LPCTSTR name)
    -  : ACE_Barrier (count, USYNC_PROCESS, name)
    -{
    -// ACE_TRACE ("ACE_Process_Barrier::ACE_Process_Barrier");
    -}
    -
    -void
    -ACE_Process_Barrier::dump (void) const
    -{
    -// ACE_TRACE ("ACE_Process_Barrier::dump");
    -  ACE_Barrier::dump ();
    -}
    -
    -template  void
    -ACE_Process_Condition::dump (void) const
    -{
    -// ACE_TRACE ("ACE_Process_Condition::dump");
    -
    -  ACE_Condition::dump ();
    -}
    -
    -template 
    -ACE_Process_Condition::ACE_Process_Condition (MUTEX &m,
    -                                                     LPCTSTR name,
    -                                                     void *arg)
    -  : ACE_Condition (m, USYNC_PROCESS, name, arg)
    -{
    -// ACE_TRACE ("ACE_Process_Condition::ACE_Process_Condition");
    -}
    -#endif /* 0 */
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Thread_Mutex)
    -
    -void
    -ACE_Thread_Mutex::dump (void) const
    -{
    -// ACE_TRACE ("ACE_Thread_Mutex::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT("\n")));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -ACE_Thread_Mutex::~ACE_Thread_Mutex (void)
    -{
    -// ACE_TRACE ("ACE_Thread_Mutex::~ACE_Thread_Mutex");
    -  this->remove ();
    -}
    -
    -ACE_Thread_Mutex::ACE_Thread_Mutex (LPCTSTR name, void *arg)
    -  : removed_ (0)
    -{
    -//  ACE_TRACE ("ACE_Thread_Mutex::ACE_Thread_Mutex");
    -
    -  if (ACE_OS::thread_mutex_init (&this->lock_, USYNC_THREAD, name, arg) != 0)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT("%p\n"),
    -                ASYS_TEXT("ACE_Thread_Mutex::ACE_Thread_Mutex")));
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_RW_Thread_Mutex)
    -
    -ACE_RW_Thread_Mutex::ACE_RW_Thread_Mutex (LPCTSTR name,
    -                                          void *arg)
    -  : ACE_RW_Mutex (USYNC_THREAD, name, arg)
    -{
    -// ACE_TRACE ("ACE_RW_Thread_Mutex::ACE_RW_Thread_Mutex");
    -}
    -
    -void
    -ACE_RW_Thread_Mutex::dump (void) const
    -{
    -// ACE_TRACE ("ACE_RW_Thread_Mutex::dump");
    -  ACE_RW_Mutex::dump ();
    -}
    -
    -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
    -// These are only instantiated with ACE_HAS_THREADS.
    -template class ACE_Guard;
    -template class ACE_Guard;
    -template class ACE_Read_Guard;
    -template class ACE_Read_Guard;
    -template class ACE_Write_Guard;
    -template class ACE_Write_Guard;
    -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
    -// These are only instantiated with ACE_HAS_THREADS.
    -#pragma instantiate ACE_Guard
    -#pragma instantiate ACE_Guard
    -#pragma instantiate ACE_Read_Guard
    -#pragma instantiate ACE_Read_Guard
    -#pragma instantiate ACE_Write_Guard
    -#pragma instantiate ACE_Write_Guard
    -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
    -
    -#endif /* ACE_HAS_THREADS */
    -
    -//
    -// These are instantiated both with and without ACE_HAS_THREADS.
    -//
    -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
    -
    -template class ACE_Guard;
    -
    -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
    -
    -#pragma instantiate ACE_Guard
    -
    -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
    -
    -#endif /* ACE_SYNCH_C */
    diff --git a/ace/Synch.h b/ace/Synch.h
    deleted file mode 100644
    index ca32cc3cdcc..00000000000
    --- a/ace/Synch.h
    +++ /dev/null
    @@ -1,1697 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Synch.h
    -//
    -// = DESCRIPTION
    -//     Wrappers for various synchronization routines.
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_SYNCH_H
    -#define ACE_SYNCH_H
    -
    -#include "ace/ACE.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#if !(defined (ACE_WIN32) || defined (ACE_HAS_POSIX_SEM))
    -#include "ace/SV_Semaphore_Complex.h"
    -#endif /* !(defined (ACE_WIN32) || defined (ACE_HAS_POSIX_SEM)) */
    -
    -// Forward declarations.
    -class ACE_Time_Value;
    -// template  class ACE_Condition;
    -
    -class ACE_Export ACE_Lock
    -{
    -  // = TITLE
    -  //     This is the abstract base class that contains the uniform
    -  //     locking API that is supported by all the ACE synchronization
    -  //     mechanisms.
    -  //
    -  // = DESCRIPTION
    -  //     This class is typically used in conjunction with the
    -  //      in order to provide a polymorphic
    -  //     interface to the ACE synchronization mechanisms (e.g.,
    -  //     , , , etc).  Note that
    -  //     the reason that all of ACE doesn't use polymorphic locks is
    -  //     that (1) they add ~20% extra overhead for virtual function
    -  //     calls and (2) objects with virtual functions can't be placed
    -  //     into shared memory.
    -public:
    -  ACE_Lock (void);
    -  // CE needs a default ctor here.
    -
    -  virtual ~ACE_Lock (void);
    -  // Noop virtual destructor
    -
    -  virtual int remove (void) = 0;
    -  // Explicitly destroy the lock.  Note that only one thread should
    -  // call this method since it doesn't protect against race
    -  // conditions.
    -
    -  virtual int acquire (void) = 0;
    -  // Block the thread until the lock is acquired.  Returns -1 on
    -  // failure.
    -
    -  virtual int tryacquire (void) = 0;
    -  // Conditionally acquire the lock (i.e., won't block).  Returns -1
    -  // on failure.  If we "failed" because someone else already had the
    -  // lock,  is set to .
    -
    -  virtual int release (void) = 0;
    -  // Release the lock.  Returns -1 on failure.
    -
    -  virtual int acquire_read (void) = 0;
    -  // Block until the thread acquires a read lock.  If the locking
    -  // mechanism doesn't support read locks then this just calls
    -  // .  Returns -1 on failure.
    -
    -  virtual int acquire_write (void) = 0;
    -  // Block until the thread acquires a write lock.  If the locking
    -  // mechanism doesn't support read locks then this just calls
    -  // .  Returns -1 on failure.
    -
    -  virtual int tryacquire_read (void) = 0;
    -  // Conditionally acquire a read lock.  If the locking mechanism
    -  // doesn't support read locks then this just calls .
    -  // Returns -1 on failure.  If we "failed" because someone else
    -  // already had the lock,  is set to .
    -
    -  virtual int tryacquire_write (void) = 0;
    -  // Conditionally acquire a write lock.  If the locking mechanism
    -  // doesn't support read locks then this just calls .
    -  // Returns -1 on failure.  If we "failed" because someone else
    -  // already had the lock,  is set to .
    -};
    -
    -class ACE_Export ACE_Adaptive_Lock : public ACE_Lock
    -{
    -  // = TITLE
    -  //    An adaptive general locking class that defers the decision of
    -  //    lock type to run time.
    -  //
    -  // = DESCRIPTION
    -  //    This class, as ACE_Lock, provide a set of general locking APIs.
    -  //    However, it defers our decision of what kind of lock to use
    -  //    to the run time and delegates all locking operations to the actual
    -  //    lock.  Users must define a constructor in their subclass to
    -  //    initialize .
    -public:
    -  virtual ~ACE_Adaptive_Lock (void);
    -  // You must also override the destructor function to match with how
    -  // you construct the underneath .
    -
    -  // = Lock/unlock operations.
    -
    -  virtual int remove (void);
    -  virtual int acquire (void);
    -  virtual int tryacquire (void);
    -  virtual int release (void);
    -  virtual int acquire_read (void);
    -  virtual int acquire_write (void);
    -  virtual int tryacquire_read (void);
    -  virtual int tryacquire_write (void);
    -  void dump (void) const;
    -
    -protected:
    -  ACE_Adaptive_Lock (void);
    -  // Create and initialize create the actual lcok used in the class.
    -  // The default constructor simply set the  to 0 (null).  You
    -  // must overwrite this method for this class to work.
    -
    -  ACE_Lock *lock_;
    -};
    -
    -class ACE_Export ACE_File_Lock
    -{
    -  // = TITLE
    -  //     A wrapper around the UNIX file locking mechanism.
    -  //
    -  // = DESCRIPTION
    -  //     Allows us to "adapt" the UNIX file locking mechanisms to work
    -  //     with all of our Guard stuff...
    -public:
    -  ACE_File_Lock (ACE_HANDLE handle = ACE_INVALID_HANDLE);
    -  // Set the  of the File_Lock to .  Note that this
    -  // constructor assumes ownership of the  and will close it
    -  // down in .  If you want the  stays open when
    -  //  is called make sure to call  on the  before
    -  // closing it.
    -
    -  ACE_File_Lock (LPCTSTR filename, int flags, mode_t mode = 0);
    -  // Open the  with  and  and set the result to
    -  // .
    -
    -  int open (LPCTSTR filename, int flags, mode_t mode = 0);
    -  // Open the  with  and  and set the result to
    -  // .
    -
    -  ~ACE_File_Lock (void);
    -  // Remove a File lock by releasing it and closing down the .
    -
    -  int remove (void);
    -  // Remove a File lock by releasing it and closing down the .
    -
    -  int acquire (short whence = 0, off_t start = 0, off_t len = 1);
    -  // Note, for interface uniformity with other synchronization
    -  // wrappers we include the  method.  This is implemented as
    -  // a write-lock to be on the safe-side...
    -
    -  int tryacquire (short whence = 0, off_t start = 0, off_t len = 1);
    -  // Note, for interface uniformity with other synchronization
    -  // wrappers we include the  method.  This is implemented
    -  // as a write-lock to be on the safe-side...  Returns -1 on failure.
    -  // If we "failed" because someone else already had the lock, 
    -  // is set to .
    -
    -  int release (short whence = 0, off_t start = 0, off_t len = 1);
    -  // Unlock a readers/writer lock.
    -
    -  int acquire_write (short whence = 0, off_t start = 0, off_t len = 1);
    -  // Acquire a write lock, but block if any readers or a
    -  // writer hold the lock.
    -
    -  int tryacquire_write (short whence = 0, off_t start = 0, off_t len = 1);
    -  // Conditionally acquire a write lock (i.e., won't block).  Returns
    -  // -1 on failure.  If we "failed" because someone else already had
    -  // the lock,  is set to .
    -
    -  int acquire_read (short whence = 0, off_t start = 0, off_t len = 1);
    -  // Acquire a read lock, but block if a writer hold the lock.
    -  // Returns -1 on failure.  If we "failed" because someone else
    -  // already had the lock,  is set to .
    -
    -  int tryacquire_read (short whence = 0, off_t start = 0, off_t len = 1);
    -  // Conditionally acquire a read lock (i.e., won't block).  Returns
    -  // -1 on failure.  If we "failed" because someone else already had
    -  // the lock,  is set to .
    -
    -  ACE_HANDLE get_handle (void);
    -  // Get underlying  for the file.
    -
    -  void set_handle (ACE_HANDLE);
    -  // Set underlying .  Note that this method assumes
    -  // ownership of the  and will close it down in .  If
    -  // you want the  to stay open when  is called make
    -  // sure to call  on the  before closing it. You are
    -  // responsible for the closing the existing  before
    -  // overwriting it.
    -
    -  void dump (void) const;
    -  // Dump state of the object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  ACE_OS::ace_flock_t lock_;
    -  // Locking structure for OS record locks.
    -
    -  int removed_;
    -  // Keeps track of whether  has been called yet to avoid
    -  // multiple  calls, e.g., explicitly and implicitly in the
    -  // destructor.  This flag isn't protected by a lock, so make sure
    -  // that you don't have multiple threads simultaneously calling
    -  //  on the same object, which is a bad idea anyway...
    -
    -private:
    -  // = Prevent assignment and initialization.
    -  void operator= (const ACE_File_Lock &);
    -  ACE_File_Lock (const ACE_File_Lock &);
    -};
    -
    -class ACE_Export ACE_Semaphore
    -{
    -  // = TITLE
    -  //     Wrapper for Dijkstra style general semaphores.
    -public:
    -  // = Initialization and termination.
    -  ACE_Semaphore (u_int count = 1, // By default make this unlocked.
    -                 int type = USYNC_THREAD,
    -                 LPCTSTR name = 0,
    -                 void * = 0,
    -                 int max = 0x7fffffff);
    -  // Initialize the semaphore, with initial value of "count".
    -
    -  ~ACE_Semaphore (void);
    -  // Implicitly destroy the semaphore.
    -
    -  int remove (void);
    -  // Explicitly destroy the semaphore.  Note that only one thread
    -  // should call this method since it doesn't protect against race
    -  // conditions.
    -
    -  int acquire (void);
    -  // Block the thread until the semaphore count becomes
    -  // greater than 0, then decrement it.
    -
    -  int acquire (ACE_Time_Value &tv);
    -  // Block the thread until  times out or until the semaphore
    -  // count becomes greater than 0 (at which point it is decremented).
    -  // Note that  is assumed to be in "absolute" rather than
    -  // "relative" time.  The value of  is updated upon return to
    -  // show the actual (absolute) acquisition time.
    -  //
    -  // NOTE: Solaris threads do not support timed semaphores.
    -  // Therefore, if you're running on Solaris you might want to
    -  // consider using the ACE POSIX pthreads implementation instead,
    -  // which can be enabled by compiling ACE with
    -  // -D_POSIX_PTHREAD_SEMANTICS.
    -
    -  int tryacquire (void);
    -  // Conditionally decrement the semaphore if count is greater than 0
    -  // (i.e., won't block).  Returns -1 on failure.  If we "failed"
    -  // because someone else already had the lock,  is set to
    -  // .
    -
    -  int release (void);
    -  // Increment the semaphore by 1, potentially unblocking a waiting
    -  // thread.
    -
    -  int release (size_t release_count);
    -  // Increment the semaphore by , potentially
    -  // unblocking waiting threads.
    -
    -  int acquire_read (void);
    -  // Acquire semaphore ownership.  This calls  and is only
    -  // here to make the  interface consistent with the
    -  // other synchronization APIs.
    -
    -  int acquire_write (void);
    -  // Acquire semaphore ownership.  This calls  and is only
    -  // here to make the  interface consistent with the
    -  // other synchronization APIs.
    -
    -  int tryacquire_read (void);
    -  // Conditionally acquire semaphore (i.e., won't block).  This calls
    -  //  and is only here to make the 
    -  // interface consistent with the other synchronization APIs.
    -  // Returns -1 on failure.  If we "failed" because someone else
    -  // already had the lock,  is set to .
    -
    -  int tryacquire_write (void);
    -  // Conditionally acquire semaphore (i.e., won't block).  This calls
    -  //  and is only here to make the 
    -  // interface consistent with the other synchronization APIs.
    -  // Returns -1 on failure.  If we "failed" because someone else
    -  // already had the lock,  is set to .
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -  const ACE_sema_t &lock (void) const;
    -  // Return the underlying lock.
    -
    -protected:
    -  ACE_sema_t semaphore_;
    -
    -  int removed_;
    -  // Keeps track of whether  has been called yet to avoid
    -  // multiple  calls, e.g., explicitly and implicitly in the
    -  // destructor.  This flag isn't protected by a lock, so make sure
    -  // that you don't have multiple threads simultaneously calling
    -  //  on the same object, which is a bad idea anyway...
    -
    -private:
    -  // = Prevent assignment and initialization.
    -  void operator= (const ACE_Semaphore &);
    -  ACE_Semaphore (const ACE_Semaphore &);
    -};
    -
    -class ACE_Export ACE_Process_Semaphore
    -{
    -  // = TITLE
    -  //     Wrapper for Dijkstra style general semaphores that work
    -  //     across processes.
    -public:
    -  ACE_Process_Semaphore (u_int count = 1, // By default make this unlocked.
    -                         LPCTSTR name = 0,
    -                         void * = 0,
    -                         int max = 0x7FFFFFFF);
    -  // Initialize the semaphore, with an initial value of  and a
    -  // maximum value of .
    -
    -  ~ACE_Process_Semaphore (void);
    -  // This method is a no-op, i.e., it doesn't remove the semaphore.
    -  // If you want to remove the semaphore, you must call the 
    -  // method explicitly.
    -
    -  int remove (void);
    -  // Explicitly destroy the semaphore.  Note that only one thread
    -  // should call this method since it doesn't protect against race
    -  // conditions.
    -
    -  int acquire (void);
    -  // Block the thread until the semaphore count becomes greater than
    -  // 0, then decrement it.
    -
    -  int tryacquire (void);
    -  // Conditionally decrement the semaphore if count is greater than 0
    -  // (i.e., won't block).  Returns -1 on failure.  If we "failed"
    -  // because someone else already had the lock,  is set to
    -  // .
    -
    -  int release (void);
    -  // Increment the semaphore, potentially unblocking a waiting thread.
    -
    -  int acquire_read (void);
    -  // Acquire semaphore ownership.  This calls  and is only
    -  // here to make the  interface consistent
    -  // with the other synchronization APIs.
    -
    -  int acquire_write (void);
    -  // Acquire semaphore ownership.  This calls  and is only
    -  // here to make the  interface consistent
    -  // with the other synchronization APIs.
    -
    -  int tryacquire_read (void);
    -  // Conditionally acquire semaphore (i.e., won't block).  This calls
    -  //  and is only here to make the 
    -  // interface consistent with the other synchronization APIs.
    -  // Returns -1 on failure.  If we "failed" because someone else
    -  // already had the lock,  is set to .
    -
    -  int tryacquire_write (void);
    -  // Conditionally acquire semaphore (i.e., won't block).  This calls
    -  //  and is only here to make the 
    -  // interface consistent with the other synchronization APIs.
    -  // Returns -1 on failure.  If we "failed" because someone else
    -  // already had the lock,  is set to .
    -
    -#if defined (ACE_WIN32) || defined (ACE_HAS_POSIX_SEM)
    -  const ACE_sema_t &lock (void) const;
    -  // Return the underlying lock.
    -#endif /* ACE_WIN32 */
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -#if defined (ACE_WIN32) || defined (ACE_HAS_POSIX_SEM)
    -  ACE_Semaphore lock_;
    -#else
    -  ACE_SV_Semaphore_Complex lock_;
    -  // We need this to get the right semantics...
    -#endif /* ACE_WIN32 */
    -};
    -
    -class ACE_Export ACE_Null_Semaphore
    -{
    -  // = TITLE
    -  //     Implement a do nothing , i.e., all the methods are
    -  //     no ops.
    -public:
    -  ACE_Null_Semaphore (u_int count = 1, // By default make this unlocked.
    -                       int type = USYNC_THREAD,
    -                       LPCTSTR name = 0,
    -                       void * = 0,
    -                       int max = 0x7fffffff);
    -  ~ACE_Null_Semaphore (void);
    -  int remove (void);
    -
    -  int acquire (ACE_Time_Value &);
    -  int acquire (void);
    -  int tryacquire (void);
    -  int release (void);
    -  int release (size_t);
    -  int acquire_write (void);
    -  int tryacquire_write (void);
    -  int acquire_read (void);
    -  int tryacquire_read (void);
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -};
    -
    -class ACE_Export ACE_RW_Mutex
    -{
    -  // = TITLE
    -  //     Wrapper for readers/writer locks.
    -  //
    -  // = DESCRIPTION
    -  //     These are most useful for applications that have many more
    -  //     parallel readers than writers...
    -public:
    -  ACE_RW_Mutex (int type = USYNC_THREAD,
    -                LPCTSTR name = 0,
    -                void *arg = 0);
    -  // Initialize a readers/writer lock.
    -
    -  ~ACE_RW_Mutex (void);
    -  // Implicitly destroy a readers/writer lock
    -
    -  int remove (void);
    -  // Explicitly destroy a readers/writer lock.  Note that only one
    -  // thread should call this method since it doesn't protect against
    -  // race conditions.
    -
    -  int acquire_read (void);
    -  // Acquire a read lock, but block if a writer hold the lock.
    -
    -  int acquire_write (void);
    -  // Acquire a write lock, but block if any readers or a
    -  // writer hold the lock.
    -
    -  int tryacquire_read (void);
    -  // Conditionally acquire a read lock (i.e., won't block).  Returns
    -  // -1 on failure.  If we "failed" because someone else already had
    -  // the lock,  is set to .
    -
    -  int tryacquire_write (void);
    -  // Conditionally acquire a write lock (i.e., won't block).
    -
    -  int acquire (void);
    -  // Note, for interface uniformity with other synchronization
    -  // wrappers we include the  method.  This is implemented as
    -  // a write-lock to safe...
    -
    -  int tryacquire (void);
    -  // Note, for interface uniformity with other synchronization
    -  // wrappers we include the  method.  This is implemented
    -  // as a write-lock to be safe...  Returns -1 on failure.  If we
    -  // "failed" because someone else already had the lock,  is
    -  // set to .
    -
    -  int release (void);
    -  // Unlock a readers/writer lock.
    -
    -  const ACE_rwlock_t &lock (void) const;
    -  // Return the underlying lock.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  ACE_rwlock_t lock_;
    -  // Readers/writer lock.
    -
    -  int removed_;
    -  // Keeps track of whether  has been called yet to avoid
    -  // multiple  calls, e.g., explicitly and implicitly in the
    -  // destructor.  This flag isn't protected by a lock, so make sure
    -  // that you don't have multiple threads simultaneously calling
    -  //  on the same object, which is a bad idea anyway...
    -private:
    -  // = Prevent assignment and initialization.
    -  void operator= (const ACE_RW_Mutex &);
    -  ACE_RW_Mutex (const ACE_RW_Mutex &);
    -};
    -
    -class ACE_Export ACE_Mutex
    -{
    -  // = TITLE
    -  //      wrapper (valid in same process or across
    -  //     processes (depending on TYPE flag)).
    -public:
    -  ACE_Mutex (int type = USYNC_THREAD,
    -             LPCTSTR name = 0,
    -             void *arg = 0);
    -  // Initialize the mutex.
    -
    -  ~ACE_Mutex (void);
    -  // Implicitly destroy the mutex.
    -
    -  int remove (void);
    -  // Explicitly destroy the mutex.  Note that only one thread should
    -  // call this method since it doesn't protect against race
    -  // conditions.
    -
    -  int acquire (void);
    -  // Acquire lock ownership (wait on queue if necessary).
    -
    -  int tryacquire (void);
    -  // Conditionally acquire lock (i.e., don't wait on queue).  Returns
    -  // -1 on failure.  If we "failed" because someone else already had
    -  // the lock,  is set to .
    -
    -  int release (void);
    -  // Release lock and unblock a thread at head of queue.
    -
    -  int acquire_read (void);
    -  // Acquire mutex ownership.  This calls  and is only
    -  // here to make the  interface consistent with the
    -  // other synchronization APIs.
    -
    -  int acquire_write (void);
    -  // Acquire mutex ownership.  This calls  and is only
    -  // here to make the  interface consistent with the
    -  // other synchronization APIs.
    -
    -  int tryacquire_read (void);
    -  // Conditionally acquire mutex (i.e., won't block).  This calls
    -  //  and is only here to make the  interface
    -  // consistent with the other synchronization APIs.  Returns -1 on
    -  // failure.  If we "failed" because someone else already had the
    -  // lock,  is set to .
    -
    -  int tryacquire_write (void);
    -  // Conditionally acquire mutex (i.e., won't block).  This calls
    -  //  and is only here to make the  interface
    -  // consistent with the other synchronization APIs.  Returns -1 on
    -  // failure.  If we "failed" because someone else already had the
    -  // lock,  is set to .
    -
    -  const ACE_mutex_t &lock (void) const;
    -  // Return the underlying mutex.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -#if defined (CHORUS)
    -  ACE_mutex_t *process_lock_;
    -  // This lock resides in shared memory.
    -
    -  LPCTSTR lockname_;
    -  // Remember the name of the mutex if we created it so we can unlink
    -  // it when we go away (only the actor that initialized the memory
    -  // can destroy it).
    -#endif /* CHORUS */
    -
    -  ACE_mutex_t lock_;
    -  // Mutex type supported by the OS.
    -
    -  int removed_;
    -  // Keeps track of whether  has been called yet to avoid
    -  // multiple  calls, e.g., explicitly and implicitly in the
    -  // destructor.  This flag isn't protected by a lock, so make sure
    -  // that you don't have multiple threads simultaneously calling
    -  //  on the same object, which is a bad idea anyway...
    -
    -private:
    -  // = Prevent assignment and initialization.
    -  void operator= (const ACE_Mutex &);
    -  ACE_Mutex (const ACE_Mutex &);
    -};
    -
    -class ACE_Export ACE_Process_Mutex
    -{
    -  // = TITLE
    -  //     A wrapper for mutexes that can be used across processes on
    -  //     the same host machine, as well as within a process, of
    -  //     course.
    -public:
    -  ACE_Process_Mutex (LPCTSTR name = 0,
    -                     void *arg = 0);
    -  // Create a Process_Mutex, passing in the optional .
    -
    -  ~ACE_Process_Mutex (void);
    -
    -  int remove (void);
    -  // Explicitly destroy the mutex.  Note that only one thread should
    -  // call this method since it doesn't protect against race
    -  // conditions.
    -
    -  int acquire (void);
    -  // Acquire lock ownership (wait on queue if necessary).
    -
    -  int tryacquire (void);
    -  // Conditionally acquire lock (i.e., don't wait on queue).  Returns
    -  // -1 on failure.  If we "failed" because someone else already had
    -  // the lock,  is set to .
    -
    -  int release (void);
    -  // Release lock and unblock a thread at head of queue.
    -
    -  int acquire_read (void);
    -  // Acquire lock ownership (wait on queue if necessary).
    -
    -  int acquire_write (void);
    -  // Acquire lock ownership (wait on queue if necessary).
    -
    -  int tryacquire_read (void);
    -  // Conditionally acquire a lock (i.e., won't block).  Returns -1 on
    -  // failure.  If we "failed" because someone else already had the
    -  // lock,  is set to .
    -
    -  int tryacquire_write (void);
    -  // Conditionally acquire a lock (i.e., won't block).  Returns -1 on
    -  // failure.  If we "failed" because someone else already had the
    -  // lock,  is set to .
    -
    -#if defined (ACE_WIN32) || defined (ACE_HAS_POSIX_SEM)
    -  const ACE_mutex_t &lock (void) const;
    -  // Return the underlying mutex.
    -#endif /* ACE_WIN32 */
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -#if defined (ACE_WIN32) || defined (ACE_HAS_POSIX_SEM)
    -  ACE_Mutex lock_;
    -#else
    -  TCHAR name_[ACE_UNIQUE_NAME_LEN];
    -  // If the user does not provide a name we generate a unique name in
    -  // this buffer.
    -
    -  LPCTSTR unique_name (void);
    -  // Create and return the unique name.
    -
    -  ACE_SV_Semaphore_Complex lock_;
    -  // We need this to get the right semantics...
    -#endif /* ACE_WIN32 */
    -};
    -
    -class ACE_Export ACE_RW_Process_Mutex
    -{
    -  // = TITLE
    -  //     Wrapper for readers/writer locks that exist across processes.
    -  //
    -  // = DESCRIPTION
    -  //     Note that because this class uses the
    -  //      as its implementation it only can be reliably
    -  //     used between separate processes, rather than threads in the
    -  //     same process.  This isn't a limitation of ACE, it's simply
    -  //     the file lock semantics on UNIX and Win32.
    -public:
    -  ACE_RW_Process_Mutex (LPCTSTR name = 0,
    -                        int flags = O_CREAT|O_RDWR);
    -  // Create a readers/writer , passing in the optional
    -  // .
    -
    -  ~ACE_RW_Process_Mutex (void);
    -
    -  int remove (void);
    -  // Explicitly destroy the mutex.  Note that only one thread should
    -  // call this method since it doesn't protect against race
    -  // conditions.
    -
    -  int acquire (void);
    -  // Acquire lock ownership (wait on queue if necessary).
    -
    -  int tryacquire (void);
    -  // Conditionally acquire lock (i.e., don't wait on queue).  Returns
    -  // -1 on failure.  If we "failed" because someone else already had
    -  // the lock,  is set to .
    -
    -  int release (void);
    -  // Release lock and unblock a thread at head of queue.
    -
    -  int acquire_read (void);
    -  // Acquire lock ownership (wait on queue if necessary).
    -
    -  int acquire_write (void);
    -  // Acquire lock ownership (wait on queue if necessary).
    -
    -  int tryacquire_read (void);
    -  // Conditionally acquire a lock (i.e., won't block).  Returns -1 on
    -  // failure.  If we "failed" because someone else already had the
    -  // lock,  is set to .
    -
    -  int tryacquire_write (void);
    -  // Conditionally acquire a lock (i.e., won't block).  Returns -1 on
    -  // failure.  If we "failed" because someone else already had the
    -  // lock,  is set to .
    -
    -  const ACE_File_Lock &lock (void) const;
    -  // Return the underlying lock.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  ACE_File_Lock lock_;
    -  // We need this to get the readers/writer semantics...
    -};
    -
    -class ACE_Export ACE_Null_Barrier
    -{
    -  // = TITLE
    -  //     Implements "NULL barrier synchronization".
    -public:
    -  ACE_Null_Barrier (u_int,
    -                    const char * = 0,
    -                    void * = 0);
    -  // Initialize the barrier to synchronize  threads.
    -
    -  ~ACE_Null_Barrier (void);
    -  // Default dtor.
    -
    -  int wait (void);
    -  // Block the caller until all  threads have called  and
    -  // then allow all the caller threads to continue in parallel.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  // = Prevent assignment and initialization.
    -  void operator= (const ACE_Null_Barrier &);
    -  ACE_Null_Barrier (const ACE_Null_Barrier &);
    -};
    -
    -class ACE_Export ACE_Null_Mutex
    -{
    -  // = TITLE
    -  //     Implement a do nothing , i.e., all the methods are
    -  //     no ops.
    -public:
    -  ACE_Null_Mutex (LPCTSTR = 0);
    -  ~ACE_Null_Mutex (void);
    -  int remove (void);
    -
    -  int acquire (void);
    -  int tryacquire (void);
    -  int release (void);
    -  int acquire_write (void);
    -  int tryacquire_write (void);
    -  int acquire_read (void);
    -  int tryacquire_read (void);
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -};
    -
    -class ACE_Export ACE_Noop_Token : public ACE_Null_Mutex
    -{
    -public:
    -  int renew (int = 0, ACE_Time_Value * =0);
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -};
    -
    -class ACE_Export ACE_Null_Condition
    -{
    -  // = TITLE
    -  //     Implement a do nothing  variable wrapper,
    -  //     i.e., all methods are no ops.  This class is necessary since
    -  //     some C++ compilers are *very* lame...
    -public:
    -  ACE_Null_Condition (const ACE_Null_Mutex &m,
    -                      LPCTSTR = 0,
    -                      void * = 0);
    -  ~ACE_Null_Condition (void);
    -  int remove (void);
    -  int wait (ACE_Time_Value * = 0);
    -  int signal (void);
    -  int broadcast (void);
    -  ACE_Null_Mutex &mutex (void);
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  // ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  ACE_Null_Mutex &mutex_; // Reference to mutex lock.
    -
    -private:
    -  // = Prevent assignment and initialization.
    -  void operator= (const ACE_Null_Condition &);
    -  ACE_Null_Condition (const ACE_Null_Condition &);
    -};
    -
    -#if defined (ACE_USES_OBSOLETE_GUARD_CLASSES)
    -class ACE_Export ACE_Null_Mutex_Guard
    -{
    -  // = TITLE
    -  //     This data structure is meant to be used within a method or
    -  //     function...  It performs automatic aquisition and release of
    -  //     an ACE_Null_Mutex.
    -  //
    -  // = DESCRIPTION
    -  //     This should be a specialization of ACE_Guard, but compiler
    -  //     bugs preclude this...
    -public:
    -  ACE_Null_Mutex_Guard (ACE_Null_Mutex &);
    -  ~ACE_Null_Mutex_Guard (void);
    -  int remove (void);
    -  int locked (void);
    -  int acquire (void);
    -  int tryacquire (void);
    -  int release (void);
    -  void dump (void) const;
    -
    -private:
    -  // = Prevent assignment and initialization.
    -  void operator= (const ACE_Null_Mutex_Guard &);
    -  ACE_Null_Mutex_Guard (const ACE_Null_Mutex_Guard &);
    -};
    -#endif /* ACE_USES_OBSOLETE_GUARD_CLASSES */
    -
    -class ACE_Export ACE_TSS_Adapter
    -{
    -  // = TITLE
    -  //     This class encapsulates a TSS object and its associated
    -  //     C++ destructor function.  It is used by the ACE_TSS...
    -  //     methods (in Synch_T.cpp) in order to allow an extern
    -  //     "C" cleanup routine to be used.  Needed by the "frigging"
    -  //     MVS C++ compiler.
    -  //
    -  // = DESCRIPTION
    -  //     Objects of this class are stored in thread specific
    -  //     storage. ts_obj_ points to the "real" object and
    -  //     func_ is a pointer to the C++ cleanup function for ts_obj_.
    -  //
    -public:
    -  ACE_TSS_Adapter (void *object, ACE_THR_DEST f);
    -  // Initialize the adapter.
    -
    -  ~ACE_TSS_Adapter (void);
    -  // Default dtor.
    -
    -  void cleanup (void);
    -  // Perform the cleanup operation.
    -
    -//private:
    -
    -  void *ts_obj_;
    -  // The real TS object.
    -
    -  ACE_THR_DEST func_;
    -  // The real cleanup routine for ts_obj;
    -};
    -
    -class ACE_Export ACE_Event
    -{
    -  // = TITLE
    -  //     A wrapper around the Win32 event locking mechanism.
    -  //
    -  // = DESCRIPTION
    -  //     Portable implementation of an Event mechanism, which is
    -  //     native to Win32, but must be emulated on UNIX.
    -public:
    -  ACE_Event (int manual_reset = 0,
    -             int initial_state = 0,
    -             int type = USYNC_THREAD,
    -             LPCTSTR name = 0,
    -             void *arg = 0);
    -  // Constructor which will create event.
    -
    -  ~ACE_Event (void);
    -  // Implicitly destroy the event variable.
    -
    -  int remove (void);
    -  // Explicitly destroy the event variable.  Note that only one thread
    -  // should call this method since it doesn't protect against race
    -  // conditions.
    -
    -  ACE_event_t handle (void) const;
    -  // Underlying handle to event.
    -
    -  void handle (ACE_event_t new_handle);
    -  // Set the underlying handle to event. Note that this method assumes
    -  // ownership of the  and will close it down in .  If
    -  // you want the  to stay open when  is called make
    -  // sure to call  on the  before closing it.  You are
    -  // responsible for the closing the existing  before
    -  // overwriting it.
    -
    -  int wait (void);
    -  // if MANUAL reset
    -  //    sleep till the event becomes signaled
    -  //    event remains signaled after wait() completes.
    -  // else AUTO reset
    -  //    sleep till the event becomes signaled
    -  //    event resets wait() completes.
    -
    -  int wait (const ACE_Time_Value *abstime);
    -  // Same as wait() above, but this one can be timed
    -  //  is absolute time-of-day.
    -
    -  int signal (void);
    -  // if MANUAL reset
    -  //    wake up all waiting threads
    -  //    set to signaled state
    -  // else AUTO reset
    -  //    if no thread is waiting, set to signaled state
    -  //    if thread(s) are waiting, wake up one waiting thread and
    -  //    reset event
    -
    -  int pulse (void);
    -  // if MANUAL reset
    -  //    wakeup all waiting threads and
    -  //    reset event
    -  // else AUTO reset
    -  //    wakeup one waiting thread (if present) and
    -  //    reset event
    -
    -  int reset (void);
    -  // Set to nonsignaled state.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks
    -
    -protected:
    -  ACE_event_t handle_;
    -  // The underlying handle.
    -
    -  int removed_;
    -  // Keeps track of whether  has been called yet to avoid
    -  // multiple  calls, e.g., explicitly and implicitly in the
    -  // destructor.  This flag isn't protected by a lock, so make sure
    -  // that you don't have multiple threads simultaneously calling
    -  //  on the same object, which is a bad idea anyway...
    -
    -private:
    -  // = Prevent copying.
    -  ACE_Event (const ACE_Event& event);
    -  const ACE_Event &operator= (const ACE_Event &rhs);
    -};
    -
    -class ACE_Export ACE_Manual_Event : public ACE_Event
    -{
    -  // = TITLE
    -  //     Manual Events.
    -  //
    -  // = DESCRIPTION
    -  //     Specialization of Event mechanism which wakes up all waiting
    -  //     threads on signal()
    -public:
    -  ACE_Manual_Event (int initial_state = 0,
    -                    int type = USYNC_THREAD,
    -                    LPCTSTR name = 0,
    -                    void *arg = 0);
    -  // constructor which will create manual event
    -
    -  ~ACE_Manual_Event (void);
    -  // Default dtor.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks
    -};
    -
    -class ACE_Export ACE_Auto_Event : public ACE_Event
    -{
    -  // = TITLE
    -  //     Auto Events.
    -  //
    -  // = DESCRIPTION
    -  //     Specialization of Event mechanism which wakes up one waiting
    -  //     thread on signal()
    -public:
    -  ACE_Auto_Event (int initial_state = 0,
    -                  int type = USYNC_THREAD,
    -                  LPCTSTR name = 0,
    -                  void *arg = 0);
    -  // constructor which will create auto event
    -
    -  ~ACE_Auto_Event (void);
    -  // Default dtor.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks
    -};
    -
    -// ACE platform supports some form of threading.
    -#if !defined (ACE_HAS_THREADS)
    -class ACE_Barrier
    -{
    -  // = TITLE
    -  //   This is a no-op to make ACE "syntactically consistent."
    -public:
    -  ACE_Barrier (u_int, LPCTSTR = 0, void * = 0) {}
    -  ~ACE_Barrier (void) {}
    -  int wait (void) { ACE_NOTSUP_RETURN (-1); }
    -  void dump (void) const {}
    -};
    -#else
    -class ACE_Export ACE_Thread_Mutex
    -{
    -  // = TITLE
    -  //     ACE_Thread_Mutex wrapper (only valid for threads in the same
    -  //     process).
    -  //
    -  // = DESCRIPTION
    -  //     This implementation is optimized for locking threads that are
    -  //     in the same process.  It maps to s on NT
    -  //     and  with  set to  on UNIX.
    -  //
    -  //     ACE_Thread_Mutex is recursive on some platforms (like
    -  //     Win32). However, on most platforms (like Solaris) it is not
    -  //     recursive.  To be totally safe and portable, developers
    -  //     should use ACE_Recursive_Thread_Mutex when they need a
    -  //     recursive mutex.
    -  friend class ACE_Condition_Thread_Mutex;
    -public:
    -  ACE_Thread_Mutex (LPCTSTR name = 0, void *arg = 0);
    -
    -  ~ACE_Thread_Mutex (void);
    -  // Implicitly destroy the mutex.
    -
    -  int remove (void);
    -  // Explicitly destroy the mutex.  Note that only one thread should
    -  // call this method since it doesn't protect against race
    -  // conditions.
    -
    -  int acquire (void);
    -  // Acquire lock ownership (wait on queue if necessary).
    -
    -  int tryacquire (void);
    -  // Conditionally acquire lock (i.e., don't wait on queue).  Returns
    -  // -1 on failure.  If we "failed" because someone else already had
    -  // the lock,  is set to .
    -
    -  int release (void);
    -  // Release lock and unblock a thread at head of queue.
    -
    -  int acquire_read (void);
    -  // Acquire mutex ownership.  This calls  and is only here
    -  // to make the  interface consistent with the
    -  // other synchronization APIs.
    -
    -  int acquire_write (void);
    -  // Acquire mutex ownership.  This calls  and is only here
    -  // to make the  interface consistent with the
    -  // other synchronization APIs.
    -
    -  int tryacquire_read (void);
    -  // Conditionally acquire mutex (i.e., won't block).  This calls
    -  //  and is only here to make the 
    -  // interface consistent with the other synchronization APIs.
    -  // Returns -1 on failure.  If we "failed" because someone else
    -  // already had the lock,  is set to .
    -
    -  int tryacquire_write (void);
    -  // Conditionally acquire mutex (i.e., won't block).  This calls
    -  //  and is only here to make the 
    -  // interface consistent with the other synchronization APIs.
    -  // Returns -1 on failure.  If we "failed" because someone else
    -  // already had the lock,  is set to .
    -
    -  const ACE_thread_mutex_t &lock (void) const;
    -  // Return the underlying mutex.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -  // protected:
    -  ACE_thread_mutex_t lock_;
    -  // Mutex type that supports single-process locking efficiently.
    -
    -  int removed_;
    -  // Keeps track of whether  has been called yet to avoid
    -  // multiple  calls, e.g., explicitly and implicitly in the
    -  // destructor.  This flag isn't protected by a lock, so make sure
    -  // that you don't have multiple threads simultaneously calling
    -  //  on the same object, which is a bad idea anyway...
    -
    -private:
    -  // = Prevent assignment and initialization.
    -  void operator= (const ACE_Thread_Mutex &);
    -  ACE_Thread_Mutex (const ACE_Thread_Mutex &);
    -};
    -
    -#if defined (ACE_USES_OBSOLETE_GUARD_CLASSES)
    -class ACE_Export ACE_Thread_Mutex_Guard
    -{
    -  // = TITLE
    -  //     This data structure is meant to be used within a method or
    -  //     function...  It performs automatic aquisition and release of
    -  //     an .
    -  //
    -  // = DESCRIPTION
    -  //     This should be a specialization of , but compiler
    -  //     bugs in older C++ compilers preclude this...
    -public:
    -  ACE_Thread_Mutex_Guard (ACE_Thread_Mutex &m, int block = 1);
    -  // Implicitly and automatically acquire the lock.
    -
    -  ~ACE_Thread_Mutex_Guard (void);
    -  // Implicitly release the lock.
    -
    -  int locked (void);
    -  // 1 if locked, 0 if couldn't acquire the lock (errno will contain
    -  // the reason for this).
    -
    -  int remove (void);
    -  // Explicitly release the lock.  Note that only one thread should
    -  // call this method since it doesn't protect against race
    -  // conditions.
    -
    -  int acquire (void);
    -  // Explicitly acquire the lock.
    -
    -  int tryacquire (void);
    -  // Conditionally acquire the lock (i.e., won't block).  Returns -1
    -  // on failure.  If we "failed" because someone else already had the
    -  // lock,  is set to .
    -
    -  int release (void);
    -  // Explicitly release the lock.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  ACE_Thread_Mutex &lock_;
    -  // Reference to the mutex.
    -
    -  int owner_;
    -  // Keeps track of whether we acquired the lock or failed.
    -
    -private:
    -  // = Prevent assignment and initialization.
    -  void operator= (const ACE_Thread_Mutex_Guard &);
    -  ACE_Thread_Mutex_Guard (const ACE_Thread_Mutex_Guard &);
    -};
    -#endif /* ACE_USES_OBSOLETE_GUARD_CLASSES */
    -
    -class ACE_Export ACE_Condition_Attributes
    -{
    -public:
    -  ACE_Condition_Attributes (int type = ACE_DEFAULT_SYNCH_TYPE);
    -  // Constructor
    -
    -  ~ACE_Condition_Attributes (void);
    -  // Destructor
    -
    -private:
    -  friend class ACE_Condition_Thread_Mutex;
    -
    -  ACE_condattr_t attributes_;
    -  // The attributes
    -
    -private:
    -  // = Prevent assignment and initialization.
    -  void operator= (const ACE_Condition_Attributes &);
    -  ACE_Condition_Attributes (const ACE_Condition_Attributes &);
    -};
    -
    -class ACE_Export ACE_Condition_Thread_Mutex
    -{
    -  // = TITLE
    -  //     ACE_Condition variable wrapper written using ACE_Mutexes This
    -  //     allows threads to block until shared data changes state.
    -  //
    -  //     A condition variable enables threads to atomically block and
    -  //     test the condition under the protection of a mutual exclu-
    -  //     sion lock (mutex) until the condition is satisfied.  That is,
    -  //     the mutex must have been held by the thread before calling
    -  //     wait or signal on the condition.  If the condition is false,
    -  //     a thread blocks on a condition variable and atomically
    -  //     releases the mutex that is waiting for the condition to
    -  //     change.  If another thread changes the condition, it may wake
    -  //     up waiting threads by signaling the associated condition
    -  //     variable.  The waiting threads, upon awakening, reacquire the
    -  //     mutex and re-evaluate the condition.
    -  //
    -  // = DESCRIPTION
    -  //     This should be an instantiation of ACE_Condition but problems
    -  //     with compilers precludes this...
    -public:
    -  ACE_Condition_Thread_Mutex (const ACE_Thread_Mutex &m,
    -                              LPCTSTR name = 0,
    -                              void *arg = 0);
    -  // Initialize the condition variable.
    -
    -  ACE_Condition_Thread_Mutex (const ACE_Thread_Mutex &m,
    -                              ACE_Condition_Attributes &attributes,
    -                              LPCTSTR name = 0,
    -                              void *arg = 0);
    -  // Initialize the condition variable.
    -
    -  ~ACE_Condition_Thread_Mutex (void);
    -  // Implicitly destroy the condition variable.
    -
    -  int remove (void);
    -  // Explicitly destroy the condition variable.  Note that only one
    -  // thread should call this method since it doesn't protect against
    -  // race conditions.
    -
    -  int wait (const ACE_Time_Value *abstime);
    -  // Block on condition, or until absolute time-of-day has passed.  If
    -  // abstime == 0 use "blocking"  semantics.  Else, if 
    -  // != 0 and the call times out before the condition is signaled
    -  //  returns -1 and sets errno to ETIME.
    -
    -  int wait (void);
    -  // Block on condition.
    -
    -  int wait (ACE_Thread_Mutex &mutex, const ACE_Time_Value *abstime = 0);
    -  // Block on condition or until absolute time-of-day has passed.  If
    -  // abstime == 0 use "blocking" wait() semantics on the 
    -  // passed as a parameter (this is useful if you need to store the
    -  //  in shared memory).  Else, if  != 0 and the
    -  // call times out before the condition is signaled  returns -1
    -  // and sets errno to ETIME.
    -
    -  int signal (void);
    -  // Signal one waiting thread.
    -
    -  int broadcast (void);
    -  // Signal *all* waiting threads.
    -
    -  ACE_Thread_Mutex &mutex (void);
    -  // Returns a reference to the underlying mutex_;
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  ACE_cond_t cond_;
    -  // Condition variable.
    -
    -  ACE_Thread_Mutex &mutex_;
    -  // Reference to mutex lock.
    -
    -  int removed_;
    -  // Keeps track of whether  has been called yet to avoid
    -  // multiple  calls, e.g., explicitly and implicitly in the
    -  // destructor.  This flag isn't protected by a lock, so make sure
    -  // that you don't have multiple threads simultaneously calling
    -  //  on the same object, which is a bad idea anyway...
    -
    -private:
    -  // = Prevent assignment and initialization.
    -  void operator= (const ACE_Condition_Thread_Mutex &);
    -  ACE_Condition_Thread_Mutex (const ACE_Condition_Thread_Mutex &);
    -};
    -
    -class ACE_Export ACE_Recursive_Thread_Mutex
    -{
    -  // = TITLE
    -  //     Implement a C++ wrapper that allows nested acquisition and
    -  //     release of a mutex that occurs in the same thread.
    -public:
    -  ACE_Recursive_Thread_Mutex (LPCTSTR name = 0,
    -                              void *arg = 0);
    -  // Initialize a recursive mutex.
    -
    -  ~ACE_Recursive_Thread_Mutex (void);
    -  // Implicitly release a recursive mutex.
    -
    -  int remove (void);
    -  // Implicitly release a recursive mutex.  Note that only one thread
    -  // should call this method since it doesn't protect against race
    -  // conditions.
    -
    -  int acquire (void);
    -  // Acquire a recursive mutex (will increment the nesting level and
    -  // not deadmutex if the owner of the mutex calls this method more
    -  // than once).
    -
    -  int tryacquire (void);
    -  // Conditionally acquire a recursive mutex (i.e., won't block).
    -  // Returns -1 on failure.  If we "failed" because someone else
    -  // already had the lock,  is set to .
    -
    -  int acquire_read (void);
    -  // Acquire mutex ownership.  This calls  and is only
    -  // here to make the  interface consistent
    -  // with the other synchronization APIs.
    -
    -  int acquire_write (void);
    -  // Acquire mutex ownership.  This calls  and is only
    -  // here to make the  interface consistent
    -  // with the other synchronization APIs.
    -
    -  int tryacquire_read (void);
    -  // Conditionally acquire mutex (i.e., won't block).  This calls
    -  //  and is only here to make the
    -  //  interface consistent with the other
    -  // synchronization APIs.  Returns -1 on failure.  If we "failed"
    -  // because someone else already had the lock,  is set to
    -  // .
    -
    -  int tryacquire_write (void);
    -  // Conditionally acquire mutex (i.e., won't block).  This calls
    -  //  and is only here to make the
    -  //  interface consistent with the other
    -  // synchronization APIs.  Returns -1 on failure.  If we "failed"
    -  // because someone else already had the lock,  is set to
    -  // .
    -
    -  int release (void);
    -  // Releases a recursive mutex (will not release mutex until all the
    -  // nesting level drops to 0, which means the mutex is no longer
    -  // held).
    -
    -  ACE_thread_t get_thread_id (void);
    -  // Return the id of the thread that currently owns the mutex.
    -
    -  int get_nesting_level (void);
    -  // Return the nesting level of the recursion.  When a thread has
    -  // acquired the mutex for the first time, the nesting level == 1.
    -  // The nesting level is incremented every time the thread acquires
    -  // the mutex recursively.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  // = This method should *not* be public (they hold no locks...)
    -  void set_thread_id (ACE_thread_t t);
    -
    -  ACE_recursive_thread_mutex_t recursive_mutex_;
    -  // Recursive mutex.
    -
    -  int removed_;
    -  // Keeps track of whether  has been called yet to avoid
    -  // multiple  calls, e.g., explicitly and implicitly in the
    -  // destructor.  This flag isn't protected by a lock, so make sure
    -  // that you don't have multiple threads simultaneously calling
    -  //  on the same object, which is a bad idea anyway...
    -
    -private:
    -  // = Prevent assignment and initialization.
    -  void operator= (const ACE_Recursive_Thread_Mutex &);
    -  ACE_Recursive_Thread_Mutex (const ACE_Recursive_Thread_Mutex &);
    -};
    -
    -class ACE_Export ACE_RW_Thread_Mutex : public ACE_RW_Mutex
    -{
    -  // = TITLE
    -  //     Wrapper for readers/writer locks that exist within a process.
    -public:
    -  ACE_RW_Thread_Mutex (LPCTSTR name = 0,
    -                       void *arg = 0);
    -
    -  ~ACE_RW_Thread_Mutex (void);
    -  // Default dtor.
    -
    -  int tryacquire_write_upgrade (void);
    -  // Conditionally upgrade a read lock to a write lock.  This only
    -  // works if there are no other readers present, in which case the
    -  // method returns 0.  Otherwise, the method returns -1 and sets
    -  //  to .  Note that the caller of this method *must*
    -  // already possess this lock as a read lock (but this condition is
    -  // not checked by the current implementation).
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -};
    -
    -class ACE_Export ACE_Thread_Semaphore : public ACE_Semaphore
    -{
    -  // = TITLE
    -  //     Wrapper for Dijkstra style general semaphores that work
    -  //     only within one process.
    -public:
    -  ACE_Thread_Semaphore (u_int count = 1, // By default make this unlocked.
    -                        LPCTSTR name = 0,
    -                        void * = 0,
    -                        int max = 0x7FFFFFFF);
    -  // Initialize the semaphore, with an initial value of ,
    -  // maximum value of , and unlocked by default.
    -
    -  ~ACE_Thread_Semaphore (void);
    -  // Default dtor.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -};
    -
    -struct ACE_Export ACE_Sub_Barrier
    -{
    -  // = Initialization.
    -  ACE_Sub_Barrier (u_int count,
    -                   ACE_Thread_Mutex &lock,
    -                   LPCTSTR name = 0,
    -                   void *arg = 0);
    -
    -  ~ACE_Sub_Barrier (void);
    -
    -  ACE_Condition_Thread_Mutex barrier_finished_;
    -  // True if this generation of the barrier is done.
    -
    -  int running_threads_;
    -  // Number of threads that are still running.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -};
    -
    -class ACE_Export ACE_Barrier
    -{
    -  // = TITLE
    -  //     Implements "barrier synchronization".
    -  //
    -  // = DESCRIPTION
    -  //     This class allows  number of threads to synchronize
    -  //     their completion of (one round of) a task, which is known as
    -  //     "barrier synchronization".  The implementation uses a
    -  //     "sub-barrier generation numbering" scheme to avoid overhead
    -  //     and to ensure that all threads wait to leave the barrier
    -  //     correct.  This code is based on an article from SunOpsis
    -  //     Vol. 4, No. 1 by Richard Marejka
    -  //     (Richard.Marejka@canada.sun.com).
    -public:
    -  ACE_Barrier (u_int count,
    -               LPCTSTR name = 0,
    -               void *arg = 0);
    -  // Initialize the barrier to synchronize  threads.
    -
    -  ~ACE_Barrier (void);
    -  // Default dtor.
    -
    -  int wait (void);
    -  // Block the caller until all  threads have called  and
    -  // then allow all the caller threads to continue in parallel.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  ACE_Thread_Mutex lock_;
    -  // Serialize access to the barrier state.
    -
    -  int current_generation_;
    -  // Either 0 or 1, depending on whether we are the first generation
    -  // of waiters or the next generation of waiters.
    -
    -  int count_;
    -  // Total number of threads that can be waiting at any one time.
    -
    -  ACE_Sub_Barrier sub_barrier_1_;
    -  ACE_Sub_Barrier sub_barrier_2_;
    -  ACE_Sub_Barrier *sub_barrier_[2];
    -  // We keep two , one for the first "generation" of
    -  // waiters, and one for the next "generation" of waiters.  This
    -  // efficiently solves the problem of what to do if all the first
    -  // generation waiters don't leave the barrier before one of the
    -  // threads calls wait() again (i.e., starts up the next generation
    -  // barrier).
    -
    -private:
    -  // = Prevent assignment and initialization.
    -  void operator= (const ACE_Barrier &);
    -  ACE_Barrier (const ACE_Barrier &);
    -};
    -
    -#if 0
    -// The following two classes are commented out since there doesn't
    -// appear to be a portable and robust means of implementing this
    -// functionality across platforms.  If you know of a portable and
    -// robust way to implement this functionality please let us know.
    -
    -class ACE_Export ACE_Process_Condition
    -{
    -  // = TITLE
    -  //     ACE_Condition variable wrapper that works across processes.
    -public:
    -  ACE_Process_Condition (MUTEX &m, LPCTSTR name = 0, void *arg = 0);
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  // ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -};
    -#endif /* 0 */
    -
    -#if 0
    -class ACE_Export ACE_Process_Barrier : public ACE_Barrier
    -{
    -  // = TITLE
    -  //     Implements "barrier synchronization" using ACE_Process_Mutexes!
    -  //
    -  // = DESCRIPTION
    -  //     This class is just a simple wrapper for ACE_Barrier that
    -  //     selects the USYNC_PROCESS variant for the locks.
    -public:
    -  ACE_Process_Barrier (u_int count, LPCTSTR name = 0);
    -  // Create a Process_Barrier, passing in the optional .
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -};
    -#endif /* 0 */
    -
    -class ACE_Export ACE_Thread_Barrier : public ACE_Barrier
    -{
    -  // = TITLE
    -  //     Implements "barrier synchronization" using ACE_Thread_Mutexes!
    -  //
    -  // = DESCRIPTION
    -  //     This class is just a simple wrapper for ACE_Barrier that
    -  //     selects the USYNC_THREAD variant for the locks.
    -public:
    -  ACE_Thread_Barrier (u_int count, LPCTSTR name = 0);
    -  // Create a Thread_Barrier, passing in the optional .
    -
    -  ~ACE_Thread_Barrier (void);
    -  // Default dtor.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -};
    -#endif /* ACE_HAS_THREADS */
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Synch.i"
    -#endif /* __ACE_INLINE__ */
    -
    -// Include the templates here.
    -#include "ace/Synch_T.h"
    -
    -template 
    -class ACE_Guard;
    -
    -ACE_TEMPLATE_SPECIALIZATION
    -class ACE_Export ACE_Guard
    -{
    -  // = TITLE
    -  //     Template specialization of  for the
    -  //     .
    -  //
    -  // = DESCRIPTION
    -  //     This specialization is useful since it helps to speedup
    -  //     performance of the "Null_Mutex" considerably.
    -public:
    -  // = Initialization and termination methods.
    -  ACE_Guard (ACE_Null_Mutex &) {}
    -  ACE_Guard (ACE_Null_Mutex &, int) {}
    -#if defined (ACE_WIN32)
    -  ~ACE_Guard (void) {}
    -#endif /* ACE_WIN32 */
    -
    -  int acquire (void) { return 0; }
    -  int tryacquire (void) { return 0; }
    -  int release (void) { return 0; }
    -  int locked (void) { return 1; }
    -  int remove (void) { return 0; }
    -  void dump (void) const {}
    -
    -private:
    -  // = Prevent assignment and initialization.
    -  ACE_UNIMPLEMENTED_FUNC (void operator= (const ACE_Guard &))
    -  ACE_UNIMPLEMENTED_FUNC (ACE_Guard (const ACE_Guard &))
    -};
    -
    -template 
    -class ACE_Write_Guard;
    -
    -ACE_TEMPLATE_SPECIALIZATION
    -class ACE_Export ACE_Write_Guard : public ACE_Guard
    -{
    -  // = TITLE
    -public:
    -  ACE_Write_Guard (ACE_Null_Mutex &m)
    -    : ACE_Guard (m) {}
    -  ACE_Write_Guard (ACE_Null_Mutex &m, int blocked)
    -    : ACE_Guard (m, blocked) {}
    -
    -  int acquire_write (void) { return 0; }
    -  int acquire (void) { return 0; }
    -  int tryacquire_write (void) { return 0; }
    -  int tryacquire (void) { return 0; }
    -  void dump (void) const {}
    -};
    -
    -template 
    -class ACE_Read_Guard;
    -
    -ACE_TEMPLATE_SPECIALIZATION
    -class ACE_Export ACE_Read_Guard : public ACE_Guard
    -{
    -  // = TITLE
    -public:
    -  ACE_Read_Guard (ACE_Null_Mutex &m)
    -    : ACE_Guard (m) {}
    -  ACE_Read_Guard (ACE_Null_Mutex &m, int blocked)
    -    : ACE_Guard (m, blocked) {}
    -
    -  int acquire_write (void) { return 0; }
    -  int acquire (void) { return 0; }
    -  int tryacquire_write (void) { return 0; }
    -  int tryacquire (void) { return 0; }
    -  void dump (void) const {}
    -};
    -
    -#endif /* ACE_SYNCH_H */
    diff --git a/ace/Synch.i b/ace/Synch.i
    deleted file mode 100644
    index f232df780ca..00000000000
    --- a/ace/Synch.i
    +++ /dev/null
    @@ -1,1107 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -ACE_INLINE
    -ACE_Lock::ACE_Lock (void)
    -{
    -}
    -
    -ACE_INLINE int
    -ACE_File_Lock::acquire_read (short whence, off_t start, off_t len)
    -{
    -// ACE_TRACE ("ACE_File_Lock::acquire_read");
    -  return ACE_OS::flock_rdlock (&this->lock_, whence, start, len);
    -}
    -
    -ACE_INLINE int
    -ACE_File_Lock::tryacquire_read (short whence, off_t start, off_t len)
    -{
    -// ACE_TRACE ("ACE_File_Lock::tryacquire_read");
    -  return ACE_OS::flock_tryrdlock (&this->lock_, whence, start, len);
    -}
    -
    -ACE_INLINE int
    -ACE_File_Lock::tryacquire_write (short whence, off_t start, off_t len)
    -{
    -// ACE_TRACE ("ACE_File_Lock::tryacquire_write");
    -  return ACE_OS::flock_trywrlock (&this->lock_, whence, start, len);
    -}
    -
    -ACE_INLINE int
    -ACE_File_Lock::tryacquire (short whence, off_t start, off_t len)
    -{
    -// ACE_TRACE ("ACE_File_Lock::tryacquire");
    -  return this->tryacquire_write (whence, start, len);
    -}
    -
    -ACE_INLINE int
    -ACE_File_Lock::acquire_write (short whence, off_t start, off_t len)
    -{
    -// ACE_TRACE ("ACE_File_Lock::acquire_write");
    -  return ACE_OS::flock_wrlock (&this->lock_, whence, start, len);
    -}
    -
    -ACE_INLINE int
    -ACE_File_Lock::acquire (short whence, off_t start, off_t len)
    -{
    -// ACE_TRACE ("ACE_File_Lock::acquire");
    -  return this->acquire_write (whence, start, len);
    -}
    -
    -ACE_INLINE int
    -ACE_File_Lock::release (short whence, off_t start, off_t len)
    -{
    -// ACE_TRACE ("ACE_File_Lock::release");
    -  return ACE_OS::flock_unlock (&this->lock_, whence, start, len);
    -}
    -
    -ACE_INLINE int
    -ACE_File_Lock::remove (void)
    -{
    -// ACE_TRACE ("ACE_File_Lock::remove");
    -
    -  int result = 0;
    -
    -  if (this->removed_ == 0)
    -    {
    -      this->removed_ = 1;
    -      result = ACE_OS::flock_destroy (&this->lock_);
    -    }
    -  return result;
    -}
    -
    -ACE_INLINE ACE_HANDLE
    -ACE_File_Lock::get_handle (void)
    -{
    -// ACE_TRACE ("ACE_File_Lock::get_handle");
    -  return this->lock_.handle_;
    -}
    -
    -ACE_INLINE void
    -ACE_File_Lock::set_handle (ACE_HANDLE h)
    -{
    -// ACE_TRACE ("ACE_File_Lock::set_handle");
    -  this->lock_.handle_ = h;
    -}
    -
    -ACE_INLINE const ACE_rwlock_t &
    -ACE_RW_Mutex::lock (void) const
    -{
    -// ACE_TRACE ("ACE_RW_Mutex::lock");
    -  return this->lock_;
    -}
    -
    -ACE_INLINE int
    -ACE_RW_Mutex::remove (void)
    -{
    -// ACE_TRACE ("ACE_RW_Mutex::remove");
    -  int result = 0;
    -  if (this->removed_ == 0)
    -    {
    -      this->removed_ = 1;
    -      result = ACE_OS::rwlock_destroy (&this->lock_);
    -    }
    -  return result;
    -}
    -
    -ACE_INLINE int
    -ACE_RW_Mutex::acquire_read (void)
    -{
    -// ACE_TRACE ("ACE_RW_Mutex::acquire_read");
    -  return ACE_OS::rw_rdlock (&this->lock_);
    -}
    -
    -ACE_INLINE int
    -ACE_RW_Mutex::acquire_write (void)
    -{
    -// ACE_TRACE ("ACE_RW_Mutex::acquire_write");
    -  return ACE_OS::rw_wrlock (&this->lock_);
    -}
    -
    -ACE_INLINE int
    -ACE_RW_Mutex::acquire (void)
    -{
    -// ACE_TRACE ("ACE_RW_Mutex::acquire");
    -  return ACE_OS::rw_wrlock (&this->lock_);
    -}
    -
    -ACE_INLINE int
    -ACE_RW_Mutex::tryacquire_read (void)
    -{
    -// ACE_TRACE ("ACE_RW_Mutex::tryacquire_read");
    -  return ACE_OS::rw_tryrdlock (&this->lock_);
    -}
    -
    -ACE_INLINE int
    -ACE_RW_Mutex::tryacquire_write (void)
    -{
    -// ACE_TRACE ("ACE_RW_Mutex::tryacquire_write");
    -  return ACE_OS::rw_trywrlock (&this->lock_);
    -}
    -
    -ACE_INLINE int
    -ACE_RW_Mutex::tryacquire (void)
    -{
    -// ACE_TRACE ("ACE_RW_Mutex::tryacquire");
    -  return this->tryacquire_write ();
    -}
    -
    -ACE_INLINE int
    -ACE_RW_Mutex::release (void)
    -{
    -// ACE_TRACE ("ACE_RW_Mutex::release");
    -  return ACE_OS::rw_unlock (&this->lock_);
    -}
    -
    -#if defined (ACE_HAS_THREADS)
    -ACE_INLINE int
    -ACE_RW_Thread_Mutex::tryacquire_write_upgrade (void)
    -{
    -// ACE_TRACE ("ACE_RW_Thread_Mutex::tryacquire_write_upgrade");
    -  return ACE_OS::rw_trywrlock_upgrade (&this->lock_);
    -}
    -#endif /* ACE_HAS_THREADS */
    -
    -ACE_INLINE int
    -ACE_Mutex::acquire_read (void)
    -{
    -// ACE_TRACE ("ACE_Mutex::acquire_read");
    -#if defined (CHORUS)
    -   if (this->process_lock_)
    -     return ACE_OS::mutex_lock (this->process_lock_);
    -#endif /* CHORUS */
    -  return ACE_OS::mutex_lock (&this->lock_);
    -}
    -
    -ACE_INLINE int
    -ACE_Mutex::acquire_write (void)
    -{
    -// ACE_TRACE ("ACE_Mutex::acquire_write");
    -#if defined (CHORUS)
    -   if (this->process_lock_)
    -     return ACE_OS::mutex_lock (this->process_lock_);
    -#endif /* CHORUS */
    -  return ACE_OS::mutex_lock (&this->lock_);
    -}
    -
    -ACE_INLINE int
    -ACE_Mutex::tryacquire_read (void)
    -{
    -// ACE_TRACE ("ACE_Mutex::tryacquire_read");
    -#if defined (CHORUS)
    -   if (this->process_lock_)
    -     return ACE_OS::mutex_trylock (this->process_lock_);
    -#endif /* CHORUS */
    -  return ACE_OS::mutex_trylock (&this->lock_);
    -}
    -
    -ACE_INLINE const ACE_mutex_t &
    -ACE_Mutex::lock (void) const
    -{
    -// ACE_TRACE ("ACE_Mutex::lock");
    -#if defined (CHORUS)
    -  if (this->process_lock_)
    -    return *this->process_lock_;
    -#endif /* CHORUS */
    -  return this->lock_;
    -}
    -
    -ACE_INLINE int
    -ACE_Mutex::tryacquire_write (void)
    -{
    -// ACE_TRACE ("ACE_Mutex::tryacquire_write");
    -#if defined (CHORUS)
    -   if (this->process_lock_)
    -     return ACE_OS::mutex_trylock (this->process_lock_);
    -#endif /* CHORUS */
    -  return ACE_OS::mutex_trylock (&this->lock_);
    -}
    -
    -ACE_INLINE int
    -ACE_Mutex::acquire (void)
    -{
    -// ACE_TRACE ("ACE_Mutex::acquire");
    -#if defined (CHORUS)
    -   if (this->process_lock_)
    -     return ACE_OS::mutex_lock (this->process_lock_);
    -#endif /* CHORUS */
    -  return ACE_OS::mutex_lock (&this->lock_);
    -}
    -
    -ACE_INLINE int
    -ACE_Mutex::tryacquire (void)
    -{
    -// ACE_TRACE ("ACE_Mutex::tryacquire");
    -#if defined (CHORUS)
    -   if (this->process_lock_)
    -     return ACE_OS::mutex_trylock (this->process_lock_);
    -#endif /* CHORUS */
    -  return ACE_OS::mutex_trylock (&this->lock_);
    -}
    -
    -ACE_INLINE int
    -ACE_Mutex::release (void)
    -{
    -// ACE_TRACE ("ACE_Mutex::release");
    -#if defined (CHORUS)
    -   if (this->process_lock_)
    -     return ACE_OS::mutex_unlock (this->process_lock_);
    -#endif /* CHORUS */
    -  return ACE_OS::mutex_unlock (&this->lock_);
    -}
    -
    -ACE_INLINE int
    -ACE_Mutex::remove (void)
    -{
    -// ACE_TRACE ("ACE_Mutex::remove");
    -#if defined (CHORUS)
    -   int result = 0;
    -   // Are we the owner?
    -   if (this->process_lock_ && this->lockname_)
    -     {
    -       if (this->removed_ == 0)
    -         {
    -           this->removed_ = 1;
    -
    -           // Only destroy the lock if we're the ones who initialized
    -           // it.
    -           result = ACE_OS::mutex_destroy (this->process_lock_);
    -           ACE_OS::munmap (this->process_lock_,
    -                           sizeof (ACE_mutex_t));
    -           ACE_OS::shm_unlink (this->lockname_);
    -           ACE_OS::free (ACE_static_cast (void *,
    -                                          ACE_const_cast (LPTSTR,
    -                                                          this->lockname_)));
    -         }
    -     }
    -   else if (this->process_lock_)
    -     {
    -       ACE_OS::munmap (this->process_lock_,
    -                       sizeof (ACE_mutex_t));
    -       result = 0;
    -     }
    -   return result;
    -#else /* !CHORUS */
    -  int result = 0;
    -  if (this->removed_ == 0)
    -    {
    -      this->removed_ = 1;
    -      result = ACE_OS::mutex_destroy (&this->lock_);
    -    }
    -  return result;
    -#endif /* CHORUS */
    -}
    -
    -ACE_INLINE const ACE_sema_t &
    -ACE_Semaphore::lock (void) const
    -{
    -// ACE_TRACE ("ACE_Semaphore::lock");
    -  return this->semaphore_;
    -}
    -
    -ACE_INLINE int
    -ACE_Semaphore::remove (void)
    -{
    -// ACE_TRACE ("ACE_Semaphore::remove");
    -  int result = 0;
    -  if (this->removed_ == 0)
    -    {
    -      this->removed_ = 1;
    -      result = ACE_OS::sema_destroy (&this->semaphore_);
    -    }
    -  return result;
    -}
    -
    -ACE_INLINE int
    -ACE_Semaphore::acquire (void)
    -{
    -// ACE_TRACE ("ACE_Semaphore::acquire");
    -  return ACE_OS::sema_wait (&this->semaphore_);
    -}
    -
    -ACE_INLINE int
    -ACE_Semaphore::acquire (ACE_Time_Value &tv)
    -{
    -// ACE_TRACE ("ACE_Semaphore::acquire");
    -  return ACE_OS::sema_wait (&this->semaphore_, tv);
    -}
    -
    -ACE_INLINE int
    -ACE_Semaphore::tryacquire (void)
    -{
    -// ACE_TRACE ("ACE_Semaphore::tryacquire");
    -  return ACE_OS::sema_trywait (&this->semaphore_);
    -}
    -
    -ACE_INLINE int
    -ACE_Semaphore::release (void)
    -{
    -// ACE_TRACE ("ACE_Semaphore::release");
    -  return ACE_OS::sema_post (&this->semaphore_);
    -}
    -
    -ACE_INLINE int
    -ACE_Semaphore::release (size_t release_count)
    -{
    -// ACE_TRACE ("ACE_Semaphore::release");
    -  return ACE_OS::sema_post (&this->semaphore_, release_count);
    -}
    -
    -// Acquire semaphore ownership.  This calls  and is only
    -// here to make the  interface consistent with the
    -// other synchronization APIs.
    -
    -ACE_INLINE int
    -ACE_Semaphore::acquire_read (void)
    -{
    -  return this->acquire ();
    -}
    -
    -// Acquire semaphore ownership.  This calls  and is only
    -// here to make the  interface consistent with the
    -// other synchronization APIs.
    -
    -ACE_INLINE int
    -ACE_Semaphore::acquire_write (void)
    -{
    -  return this->acquire ();
    -}
    -
    -// Conditionally acquire semaphore (i.e., won't block).  This calls
    -//  and is only here to make the 
    -// interface consistent with the other synchronization APIs.
    -
    -ACE_INLINE int
    -ACE_Semaphore::tryacquire_read (void)
    -{
    -  return this->tryacquire ();
    -}
    -
    -// Conditionally acquire semaphore (i.e., won't block).  This calls
    -//  and is only here to make the 
    -// interface consistent with the other synchronization APIs.
    -
    -ACE_INLINE int
    -ACE_Semaphore::tryacquire_write (void)
    -{
    -  return this->tryacquire ();
    -}
    -
    -#if defined (ACE_WIN32) || defined (ACE_HAS_POSIX_SEM)
    -ACE_INLINE const ACE_mutex_t &
    -ACE_Process_Mutex::lock (void) const
    -{
    -// ACE_TRACE ("ACE_Process_Mutex::lock");
    -  return this->lock_.lock ();
    -}
    -
    -ACE_INLINE const ACE_sema_t &
    -ACE_Process_Semaphore::lock (void) const
    -{
    -// ACE_TRACE ("ACE_Process_Semaphore::lock");
    -  return this->lock_.lock ();
    -}
    -#endif /* ACE_WIN32 */
    -
    -// Acquire semaphore ownership.  This calls  and is only here
    -// to make the  interface consistent with the
    -// other synchronization APIs.
    -
    -ACE_INLINE int
    -ACE_Process_Semaphore::acquire_read (void)
    -{
    -  return this->acquire ();
    -}
    -
    -// Acquire semaphore ownership.  This calls  and is only here
    -// to make the  interface consistent with the
    -// other synchronization APIs.
    -
    -ACE_INLINE int
    -ACE_Process_Semaphore::acquire_write (void)
    -{
    -  return this->acquire ();
    -}
    -
    -// Conditionally acquire semaphore (i.e., won't block).  This calls
    -//  and is only here to make the 
    -// interface consistent with the other synchronization APIs.
    -
    -ACE_INLINE int
    -ACE_Process_Semaphore::tryacquire_read (void)
    -{
    -  return this->tryacquire ();
    -}
    -
    -// Conditionally acquire semaphore (i.e., won't block).  This calls
    -//  and is only here to make the 
    -// interface consistent with the other synchronization APIs.
    -
    -ACE_INLINE int
    -ACE_Process_Semaphore::tryacquire_write (void)
    -{
    -  return this->tryacquire ();
    -}
    -
    -// Null ACE_Semaphore implementation
    -
    -ACE_INLINE
    -ACE_Null_Semaphore::ACE_Null_Semaphore (u_int,
    -                                        int,
    -                                        LPCTSTR,
    -                                        void *,
    -                                        int)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_Null_Semaphore::~ACE_Null_Semaphore (void)
    -{
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Semaphore::remove (void)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Semaphore::acquire (ACE_Time_Value &)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Semaphore::acquire (void)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Semaphore::tryacquire (void)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Semaphore::release (size_t)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Semaphore::release (void)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Semaphore::acquire_write (void)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Semaphore::tryacquire_write (void)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Semaphore::acquire_read (void)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Semaphore::tryacquire_read (void)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE void
    -ACE_Null_Semaphore::dump (void) const
    -{
    -}
    -
    -#if defined (ACE_HAS_THREADS)
    -
    -ACE_INLINE const ACE_thread_mutex_t &
    -ACE_Thread_Mutex::lock (void) const
    -{
    -// ACE_TRACE ("ACE_Thread_Mutex::lock");
    -  return this->lock_;
    -}
    -
    -ACE_INLINE int
    -ACE_Thread_Mutex::acquire_read (void)
    -{
    -// ACE_TRACE ("ACE_Thread_Mutex::acquire_read");
    -  return ACE_OS::thread_mutex_lock (&this->lock_);
    -}
    -
    -ACE_INLINE int
    -ACE_Thread_Mutex::acquire_write (void)
    -{
    -// ACE_TRACE ("ACE_Thread_Mutex::acquire_write");
    -  return ACE_OS::thread_mutex_lock (&this->lock_);
    -}
    -
    -ACE_INLINE int
    -ACE_Thread_Mutex::tryacquire_read (void)
    -{
    -// ACE_TRACE ("ACE_Thread_Mutex::tryacquire_read");
    -  return ACE_OS::thread_mutex_trylock (&this->lock_);
    -}
    -
    -ACE_INLINE int
    -ACE_Thread_Mutex::tryacquire_write (void)
    -{
    -// ACE_TRACE ("ACE_Thread_Mutex::tryacquire_write");
    -  return ACE_OS::thread_mutex_trylock (&this->lock_);
    -}
    -
    -ACE_INLINE int
    -ACE_Thread_Mutex::acquire (void)
    -{
    -// ACE_TRACE ("ACE_Thread_Mutex::acquire");
    -  return ACE_OS::thread_mutex_lock (&this->lock_);
    -}
    -
    -ACE_INLINE int
    -ACE_Thread_Mutex::tryacquire (void)
    -{
    -// ACE_TRACE ("ACE_Thread_Mutex::tryacquire");
    -  return ACE_OS::thread_mutex_trylock (&this->lock_);
    -}
    -
    -ACE_INLINE int
    -ACE_Thread_Mutex::release (void)
    -{
    -// ACE_TRACE ("ACE_Thread_Mutex::release");
    -  return ACE_OS::thread_mutex_unlock (&this->lock_);
    -}
    -
    -ACE_INLINE int
    -ACE_Thread_Mutex::remove (void)
    -{
    -// ACE_TRACE ("ACE_Thread_Mutex::remove");
    -  int result = 0;
    -  if (this->removed_ == 0)
    -    {
    -      this->removed_ = 1;
    -      result = ACE_OS::thread_mutex_destroy (&this->lock_);
    -    }
    -  return result;
    -}
    -
    -#if defined (ACE_USES_OBSOLETE_GUARD_CLASSES)
    -ACE_INLINE int
    -ACE_Thread_Mutex_Guard::locked (void)
    -{
    -// ACE_TRACE ("ACE_Thread_Mutex_Guard::locked");
    -  return this->owner_ != -1;
    -}
    -
    -// Explicitly acquire the lock.
    -
    -ACE_INLINE int
    -ACE_Thread_Mutex_Guard::acquire (void)
    -{
    -// ACE_TRACE ("ACE_Thread_Mutex_Guard::acquire");
    -  return this->owner_ = this->lock_.acquire ();
    -}
    -
    -// Conditionally acquire the lock (i.e., won't block).
    -
    -ACE_INLINE int
    -ACE_Thread_Mutex_Guard::tryacquire (void)
    -{
    -// ACE_TRACE ("ACE_Thread_Mutex_Guard::tryacquire");
    -  return this->owner_ = this->lock_.tryacquire ();
    -}
    -
    -// Implicitly and automatically acquire the lock.
    -
    -ACE_INLINE
    -ACE_Thread_Mutex_Guard::ACE_Thread_Mutex_Guard (ACE_Thread_Mutex &m,
    -                                                int block)
    -  : lock_ (m)
    -{
    -// ACE_TRACE ("ACE_Thread_Mutex_Guard::ACE_Thread_Mutex_Guard");
    -  if (block)
    -    this->acquire ();
    -  else
    -    this->tryacquire ();
    -}
    -
    -// Explicitly release the lock.
    -
    -ACE_INLINE int
    -ACE_Thread_Mutex_Guard::release (void)
    -{
    -// ACE_TRACE ("ACE_Thread_Mutex_Guard::release");
    -  if (this->owner_ != -1)
    -    {
    -      this->owner_ = -1;
    -      return this->lock_.release ();
    -    }
    -  else
    -    return 0;
    -}
    -
    -// Implicitly release the lock.
    -
    -ACE_INLINE
    -ACE_Thread_Mutex_Guard::~ACE_Thread_Mutex_Guard (void)
    -{
    -// ACE_TRACE ("ACE_Thread_Mutex_Guard::~ACE_Thread_Mutex_Guard");
    -  this->release ();
    -}
    -
    -// Explicitly release the lock.
    -
    -ACE_INLINE int
    -ACE_Thread_Mutex_Guard::remove (void)
    -{
    -// ACE_TRACE ("ACE_Thread_Mutex_Guard::remove");
    -  this->owner_ = -1;
    -  return this->release ();
    -}
    -#endif /* ACE_USES_OBSOLETE_GUARD_CLASSES */
    -
    -ACE_INLINE
    -ACE_Condition_Attributes::ACE_Condition_Attributes (int type)
    -{
    -  (void) ACE_OS::condattr_init (this->attributes_, type);
    -}
    -
    -ACE_INLINE
    -ACE_Condition_Attributes::~ACE_Condition_Attributes (void)
    -{
    -  ACE_OS::condattr_destroy (this->attributes_);
    -}
    -
    -ACE_INLINE int
    -ACE_Condition_Thread_Mutex::remove (void)
    -{
    -// ACE_TRACE ("ACE_Condition_Thread_Mutex::remove");
    -
    -  //  is called in a loop if the condition variable is
    -  // BUSY.  This avoids a condition where a condition is signaled and
    -  // because of some timing problem, the thread that is to be signaled
    -  // has called the cond_wait routine after the signal call.  Since
    -  // the condition signal is not queued in any way, deadlock occurs.
    -
    -  int result = 0;
    -
    -  if (this->removed_ == 0)
    -    {
    -      this->removed_ = 1;
    -
    -      while ((result = ACE_OS::cond_destroy (&this->cond_)) == -1
    -             && errno == EBUSY)
    -        {
    -          ACE_OS::cond_broadcast (&this->cond_);
    -          ACE_OS::thr_yield ();
    -        }
    -    }
    -  return result;
    -}
    -
    -ACE_INLINE ACE_Thread_Mutex &
    -ACE_Condition_Thread_Mutex::mutex (void)
    -{
    -// ACE_TRACE ("ACE_Condition_Thread_Mutex::mutex");
    -  return this->mutex_;
    -}
    -
    -ACE_INLINE void
    -ACE_Recursive_Thread_Mutex::set_thread_id (ACE_thread_t t)
    -{
    -// ACE_TRACE ("ACE_Recursive_Thread_Mutex::set_thread_id");
    -#if defined (ACE_HAS_RECURSIVE_MUTEXES)
    -  ACE_UNUSED_ARG (t);
    -#else  /* ! ACE_HAS_RECURSIVE_MUTEXES */
    -  this->recursive_mutex_.owner_id_ = t;
    -#endif /* ! ACE_HAS_RECURSIVE_MUTEXES */
    -}
    -
    -ACE_INLINE int
    -ACE_Recursive_Thread_Mutex::acquire_read (void)
    -{
    -  return this->acquire ();
    -}
    -
    -ACE_INLINE int
    -ACE_Recursive_Thread_Mutex::acquire_write (void)
    -{
    -  return this->acquire ();
    -}
    -
    -ACE_INLINE int
    -ACE_Recursive_Thread_Mutex::tryacquire_read (void)
    -{
    -  return this->tryacquire ();
    -}
    -
    -ACE_INLINE int
    -ACE_Recursive_Thread_Mutex::tryacquire_write (void)
    -{
    -  return this->tryacquire ();
    -}
    -
    -#endif /* ACE_HAS_THREADS */
    -
    -// Explicitly destroy the mutex.
    -ACE_INLINE int
    -ACE_Process_Mutex::remove (void)
    -{
    -  return this->lock_.remove ();
    -}
    -
    -// Acquire lock ownership (wait on priority queue if necessary).
    -ACE_INLINE int
    -ACE_Process_Mutex::acquire (void)
    -{
    -  return this->lock_.acquire ();
    -}
    -
    -// Conditionally acquire lock (i.e., don't wait on queue).
    -ACE_INLINE int
    -ACE_Process_Mutex::tryacquire (void)
    -{
    -  return this->lock_.tryacquire ();
    -}
    -
    -// Release lock and unblock a thread at head of priority queue.
    -ACE_INLINE int
    -ACE_Process_Mutex::release (void)
    -{
    -  return this->lock_.release ();
    -}
    -
    -// Acquire lock ownership (wait on priority queue if necessary).
    -ACE_INLINE int
    -ACE_Process_Mutex::acquire_read (void)
    -{
    -  return this->lock_.acquire_read ();
    -}
    -
    -// Acquire lock ownership (wait on priority queue if necessary).
    -ACE_INLINE int
    -ACE_Process_Mutex::acquire_write (void)
    -{
    -  return this->lock_.acquire_write ();
    -}
    -
    -// Conditionally acquire a lock (i.e., won't block).
    -ACE_INLINE int
    -ACE_Process_Mutex::tryacquire_read (void)
    -{
    -  return this->lock_.tryacquire_read ();
    -}
    -
    -// Conditionally acquire a lock (i.e., won't block).
    -ACE_INLINE int
    -ACE_Process_Mutex::tryacquire_write (void)
    -{
    -  return this->lock_.tryacquire_write ();
    -}
    -
    -// Explicitly destroy the mutex.
    -ACE_INLINE int
    -ACE_RW_Process_Mutex::remove (void)
    -{
    -  return this->lock_.remove ();
    -}
    -
    -// Acquire lock ownership (wait on priority queue if necessary).
    -ACE_INLINE int
    -ACE_RW_Process_Mutex::acquire (void)
    -{
    -  return this->lock_.acquire ();
    -}
    -
    -// Conditionally acquire lock (i.e., don't wait on queue).
    -ACE_INLINE int
    -ACE_RW_Process_Mutex::tryacquire (void)
    -{
    -  return this->lock_.tryacquire ();
    -}
    -
    -// Release lock and unblock a thread at head of priority queue.
    -ACE_INLINE int
    -ACE_RW_Process_Mutex::release (void)
    -{
    -  return this->lock_.release ();
    -}
    -
    -// Acquire lock ownership (wait on priority queue if necessary).
    -ACE_INLINE int
    -ACE_RW_Process_Mutex::acquire_read (void)
    -{
    -  return this->lock_.acquire_read ();
    -}
    -
    -// Acquire lock ownership (wait on priority queue if necessary).
    -ACE_INLINE int
    -ACE_RW_Process_Mutex::acquire_write (void)
    -{
    -  return this->lock_.acquire_write ();
    -}
    -
    -// Conditionally acquire a lock (i.e., won't block).
    -ACE_INLINE int
    -ACE_RW_Process_Mutex::tryacquire_read (void)
    -{
    -  return this->lock_.tryacquire_read ();
    -}
    -
    -// Conditionally acquire a lock (i.e., won't block).
    -ACE_INLINE int
    -ACE_RW_Process_Mutex::tryacquire_write (void)
    -{
    -  return this->lock_.tryacquire_write ();
    -}
    -
    -ACE_INLINE const ACE_File_Lock &
    -ACE_RW_Process_Mutex::lock (void) const
    -{
    -// ACE_TRACE ("ACE_RW_Process_Mutex::lock");
    -  return this->lock_;
    -}
    -
    -ACE_INLINE
    -ACE_Null_Barrier::ACE_Null_Barrier (u_int,
    -                                    const char *,
    -                                    void *)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_Null_Barrier::~ACE_Null_Barrier (void)
    -{
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Barrier::wait (void)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE void
    -ACE_Null_Barrier::dump (void) const
    -{
    -}
    -
    -ACE_INLINE
    -ACE_Null_Mutex::ACE_Null_Mutex (LPCTSTR)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_Null_Mutex::~ACE_Null_Mutex (void)
    -{
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Mutex::remove (void)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Mutex::acquire (void)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Mutex::tryacquire (void)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Mutex::release (void)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Mutex::acquire_write (void)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Mutex::tryacquire_write (void)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Mutex::acquire_read (void)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Mutex::tryacquire_read (void)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE void
    -ACE_Null_Mutex::dump (void) const
    -{
    -}
    -
    -ACE_INLINE int
    -ACE_Noop_Token::renew (int, ACE_Time_Value *)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE void
    -ACE_Noop_Token::dump (void) const
    -{
    -}
    -
    -
    -ACE_INLINE
    -ACE_Null_Condition::ACE_Null_Condition (const ACE_Null_Mutex &m,
    -                                        LPCTSTR,
    -                                        void*)
    -  : mutex_ ((ACE_Null_Mutex &) m)
    -{
    -}
    -
    -ACE_INLINE ACE_Null_Condition::~ACE_Null_Condition (void)
    -{
    -}
    -
    -ACE_INLINE int ACE_Null_Condition::remove (void)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Condition::wait (ACE_Time_Value *)
    -{
    -  errno = ETIME;
    -  return -1;
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Condition::signal (void)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Condition::broadcast (void)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE ACE_Null_Mutex &
    -ACE_Null_Condition::mutex (void)
    -{
    -  return this->mutex_;
    -}
    -
    -ACE_INLINE void
    -ACE_Null_Condition::dump (void) const
    -{
    -}
    -
    -#if defined (ACE_USES_OBSOLETE_GUARD_CLASSES)
    -ACE_INLINE
    -ACE_Null_Mutex_Guard::ACE_Null_Mutex_Guard (ACE_Null_Mutex &)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_Null_Mutex_Guard::~ACE_Null_Mutex_Guard (void)
    -{
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Mutex_Guard::remove (void)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Mutex_Guard::locked (void)
    -{
    -  return 1;
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Mutex_Guard::acquire (void)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Mutex_Guard::tryacquire (void)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE int
    -ACE_Null_Mutex_Guard::release (void)
    -{
    -  return 0;
    -}
    -
    -ACE_INLINE void
    -ACE_Null_Mutex_Guard::dump (void) const
    -{
    -}
    -#endif /* ACE_USES_OBSOLETE_GUARD_CLASSES */
    -
    -ACE_INLINE
    -ACE_TSS_Adapter::~ACE_TSS_Adapter (void)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_Manual_Event::~ACE_Manual_Event (void)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_Auto_Event::~ACE_Auto_Event (void)
    -{
    -}
    -
    -#if defined (ACE_HAS_THREADS)
    -ACE_INLINE
    -ACE_RW_Thread_Mutex::~ACE_RW_Thread_Mutex (void)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_Thread_Semaphore::~ACE_Thread_Semaphore (void)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_Sub_Barrier::~ACE_Sub_Barrier (void)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_Barrier::~ACE_Barrier (void)
    -{
    -}
    -
    -ACE_INLINE
    -ACE_Thread_Barrier::~ACE_Thread_Barrier (void)
    -{
    -}
    -#endif /* ACE_HAS_THREADS */
    diff --git a/ace/Synch_Options.cpp b/ace/Synch_Options.cpp
    deleted file mode 100644
    index 0b54fc96d6b..00000000000
    --- a/ace/Synch_Options.cpp
    +++ /dev/null
    @@ -1,106 +0,0 @@
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Synch_Options.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/Synch_Options.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, Synch_Options, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Synch_Options)
    -
    -void
    -ACE_Synch_Options::dump (void) const
    -{
    -  ACE_TRACE ("ACE_Synch_Options::dump");
    -}
    -
    -// Static initialization.
    -// Note: these three objects require static construction and destruction.
    -
    -/* static */
    -ACE_Synch_Options ACE_Synch_Options::defaults;
    -
    -/* static */
    -ACE_Synch_Options ACE_Synch_Options::synch;
    -
    -/* static */
    -ACE_Synch_Options ACE_Synch_Options::asynch (ACE_Synch_Options::USE_REACTOR);
    -
    -ACE_Synch_Options::ACE_Synch_Options (u_long options,
    -                                      const ACE_Time_Value &timeout,
    -                                      const void *arg)
    -{
    -  // ACE_TRACE ("ACE_Synch_Options::ACE_Synch_Options");
    -  this->set (options, timeout, arg);
    -}
    -
    -void
    -ACE_Synch_Options::set (u_long options,
    -                        const ACE_Time_Value &timeout,
    -                        const void *arg)
    -{
    -  // ACE_TRACE ("ACE_Synch_Options::set");
    -  this->options_ = options;
    -  this->timeout_ = (ACE_Time_Value &) timeout;
    -
    -  // Whoa, possible dependence on static initialization here.  This
    -  // function is called during initialization of the statics above.
    -  // But, ACE_Time_Value::zero is a static object.  Very fortunately,
    -  // its bits have a value of 0.
    -  if (this->timeout_ != ACE_Time_Value::zero)
    -    ACE_SET_BITS (this->options_, ACE_Synch_Options::USE_TIMEOUT);
    -
    -  this->arg_ = arg;
    -}
    -
    -int
    -ACE_Synch_Options::operator[] (u_long option) const
    -{
    -  ACE_TRACE ("ACE_Synch_Options::operator[]");
    -  return (this->options_ & option) != 0;
    -}
    -
    -void
    -ACE_Synch_Options::operator= (u_long option)
    -{
    -  ACE_TRACE ("ACE_Synch_Options::operator=");
    -  this->options_ |= option;
    -}
    -
    -const ACE_Time_Value &
    -ACE_Synch_Options::timeout (void) const
    -{
    -  ACE_TRACE ("ACE_Synch_Options::timeout");
    -  return this->timeout_;
    -}
    -
    -void
    -ACE_Synch_Options::timeout (const ACE_Time_Value &tv)
    -{
    -  ACE_TRACE ("ACE_Synch_Options::timeout");
    -  this->timeout_ = tv;
    -}
    -
    -const ACE_Time_Value *
    -ACE_Synch_Options::time_value (void) const
    -{
    -  ACE_TRACE ("ACE_Synch_Options::time_value");
    -  return (*this)[USE_TIMEOUT] ? &this->timeout_ : 0;
    -}
    -
    -const void *
    -ACE_Synch_Options::arg (void) const
    -{
    -  ACE_TRACE ("ACE_Synch_Options::arg");
    -  return this->arg_;
    -}
    -
    -void
    -ACE_Synch_Options::arg (const void *a)
    -{
    -  ACE_TRACE ("ACE_Synch_Options::arg");
    -  this->arg_ = a;
    -}
    diff --git a/ace/Synch_Options.h b/ace/Synch_Options.h
    deleted file mode 100644
    index 94fb15a9c74..00000000000
    --- a/ace/Synch_Options.h
    +++ /dev/null
    @@ -1,147 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//   ACE_Synch_Options.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_SYNCH_OPTIONS_H
    -#define ACE_SYNCH_OPTIONS_H
    -
    -#include "ace/ACE.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -class ACE_Export ACE_Synch_Options
    -{
    -  // = TITLE
    -  //     Contains the values of options used to determine the
    -  //     synchronous and asynchronous behavior.
    -  //
    -  // = DESCRIPTION
    -  //     Values support the following behavior (TV == "timeout"
    -  //     and UR == "use ACE_Reactor"):
    -  //
    -  // = BEGIN
    -  //          Parameters      | Description
    -  //                          |
    -  //          TV   |  UR      |
    -  //          -----|----------|-------------------------------
    -  //               |          |
    -  //          NULL | yes      | infinite timeout (using ACE_Reactor)
    -  //               |          |
    -  //          time | yes      | try asynch transaction for
    -  //               |          | the specified time (using ACE_Reactor)
    -  //               |          |
    -  //          0,0  | yes      | poll; try, if EWOULDBLOCK,
    -  //               |          |       then return immediately
    -  //               |          |       (using ACE_Reactor)
    -  //               |          |
    -  //          NULL | no       | block forever (don't use ACE_Reactor)
    -  //               |          |
    -  //          time | no       | do a blocking transaction
    -  //               |          | for the specified time
    -  //               |          | (don't use ACE_Reactor)
    -  //               |          |
    -  //          0,0  | no       | poll; but do not initiate a
    -  //               |          | nonblocking transaction
    -  //               |          | (don't use ACE_Reactor)
    -  // = END
    -public:
    -  // = Options flags for controlling synchronization.  Note that these
    -  // flags can be bit-wise "or'd" together if both options are
    -  // desired.
    -  enum
    -  {
    -    USE_REACTOR = 01,
    -    // Use the Reactor.
    -    USE_TIMEOUT = 02
    -    // Interprete the Time_Value.
    -  };
    -
    -  // = Initialization methods.
    -  ACE_Synch_Options (u_long options = 0,
    -                     const ACE_Time_Value &timeout = ACE_Time_Value::zero,
    -                     const void *arg = 0);
    -  // Initialize the Synch_Options based on parameters.
    -
    -  ~ACE_Synch_Options (void);
    -  // Default dtor.
    -
    -  void set (u_long options = 0,
    -            const ACE_Time_Value &timeout = ACE_Time_Value::zero,
    -            const void *arg = 0);
    -  // Initialize the Synch_Options based on parameters.
    -
    -  int operator[] (u_long option) const;
    -  // Get method for determining which options are enabled.
    -
    -  void operator= (u_long option);
    -  // Set method for enabling certain options.
    -
    -  const void *arg (void) const;
    -  // Returns the "magic cookie" argument.
    -
    -  void arg (const void *);
    -  // Set the "magic cookie" argument.
    -
    -  const ACE_Time_Value &timeout (void) const;
    -  // Returns a reference to the .  This value only makes
    -  // sense if (*this)[USE_TIMEOUT] is true.
    -
    -  void timeout (const ACE_Time_Value &tv);
    -  // Set the .
    -
    -  const ACE_Time_Value *time_value (void) const;
    -  // Returns the address of the timeout  if
    -  // (*this)[USE_TIMEOUT] is true, else 0.  This should be used with
    -  // care, e.g., the timeout pointer should not be stored in a manner
    -  // that will lead to dangling pointers...
    -
    -  // = Static data members (singletons)
    -
    -  static ACE_Synch_Options defaults;
    -  // This is the default setting for options, which will block
    -  // synchronously.
    -
    -  static ACE_Synch_Options synch;
    -  // This is the default synchronous setting.
    -
    -  static ACE_Synch_Options asynch;
    -  // This is the default asynchronous setting.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  u_long options_;
    -  // Keeps track of the enabled options.
    -
    -  ACE_Time_Value timeout_;
    -  // Amount of time to wait for timeouts.
    -
    -  const void *arg_;
    -  // "Magic cookie" always passed in as an argument to the ACE_Reactor's
    -  //  method.  Used to communicate values for
    -  // asynchronous programming.
    -};
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Synch_Options.i"
    -#endif /* __ACE_INLINE__ */
    -
    -#endif /* ACE_SYNCH_OPTIONS_H */
    diff --git a/ace/Synch_Options.i b/ace/Synch_Options.i
    deleted file mode 100644
    index 3c16b199ac8..00000000000
    --- a/ace/Synch_Options.i
    +++ /dev/null
    @@ -1,9 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// Synch_Options.i
    -
    -ACE_INLINE
    -ACE_Synch_Options::~ACE_Synch_Options (void)
    -{
    -}
    diff --git a/ace/Synch_T.cpp b/ace/Synch_T.cpp
    deleted file mode 100644
    index 3219887276a..00000000000
    --- a/ace/Synch_T.cpp
    +++ /dev/null
    @@ -1,961 +0,0 @@
    -// $Id$
    -
    -#ifndef ACE_SYNCH_T_C
    -#define ACE_SYNCH_T_C
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Thread.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Synch_T.h"
    -#include "ace/Log_Msg.h"
    -
    -ACE_RCSID(ace, Synch_T, "$Id$")
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/Synch_T.i"
    -// On non-Win32 platforms, this code will be treated as normal code.
    -#if !defined (ACE_WIN32)
    -#include "ace/Atomic_Op.i"
    -#endif /* !ACE_WIN32 */
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Atomic_Op)
    -
    -// This constructor isn't inlined, because SunPRO C++ 4.2 + patch
    -// 104631-07 has trouble compiling TAO with it inline.
    -template 
    -ACE_Lock_Adapter::ACE_Lock_Adapter (void)
    -  : lock_ (0),
    -    delete_lock_ (1)
    -{
    -  ACE_NEW (this->lock_,
    -           ACE_LOCKING_MECHANISM);
    -}
    -
    -template 
    -ACE_Reverse_Lock::~ACE_Reverse_Lock (void)
    -{
    -}
    -
    -template 
    -ACE_Test_and_Set::ACE_Test_and_Set (TYPE initial_value)
    -  : is_set_ (initial_value)
    -{
    -}
    -
    -// Returns true if we are done, else false.
    -template  TYPE
    -ACE_Test_and_Set::is_set (void) const
    -{
    -  ACE_GUARD_RETURN (ACE_LOCK, ace_mon, (ACE_LOCK &) this->lock_, this->is_set_);
    -  return this->is_set_;
    -}
    -
    -// Sets the  status.
    -template  TYPE
    -ACE_Test_and_Set::set (TYPE status)
    -{
    -  ACE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, this->is_set_);
    -  TYPE o_status = this->is_set_;
    -  this->is_set_ = status;
    -  return o_status;
    -}
    -
    -template  int
    -ACE_Test_and_Set::handle_signal (int, siginfo_t *, ucontext_t *)
    -{
    -  // By setting this to 1, we are "signaling" to anyone calling
    -  //  or or  that the "test and set" object is in the
    -  // "signaled" state, i.e., it's "available" to be set back to 0.
    -  this->set (1);
    -  return 0;
    -}
    -
    -template  ACE_LOCK &
    -ACE_Atomic_Op::mutex (void)
    -{
    -// ACE_TRACE ("ACE_Atomic_Op::lock");
    -  return this->mutex_;
    -}
    -
    -template  void
    -ACE_Atomic_Op::dump (void) const
    -{
    -// ACE_TRACE ("ACE_Atomic_Op::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  this->mutex_.dump ();
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -template 
    -ACE_Atomic_Op::ACE_Atomic_Op (void)
    -  : value_ (0)
    -{
    -// ACE_TRACE ("ACE_Atomic_Op::ACE_Atomic_Op");
    -}
    -
    -template 
    -ACE_Atomic_Op::ACE_Atomic_Op (const TYPE &c)
    -  : value_ (c)
    -{
    -// ACE_TRACE ("ACE_Atomic_Op::ACE_Atomic_Op");
    -}
    -
    -// ****************************************************************
    -// ACE_ALLOC_HOOK_DEFINE(ACE_Guard)
    -
    -template  void
    -ACE_Guard::dump (void) const
    -{
    -// ACE_TRACE ("ACE_Guard::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("mutex_ = %x\n"), this->lock_));
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("owner_ = %d\n"), this->owner_));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -// ACE_ALLOC_HOOK_DEFINE(ACE_Write_Guard)
    -
    -template  void
    -ACE_Write_Guard::dump (void) const
    -{
    -// ACE_TRACE ("ACE_Write_Guard::dump");
    -  ACE_Guard::dump ();
    -}
    -
    -// ACE_ALLOC_HOOK_DEFINE(ACE_Read_Guard)
    -
    -template  void
    -ACE_Read_Guard::dump (void) const
    -{
    -// ACE_TRACE ("ACE_Read_Guard::dump");
    -  ACE_Guard::dump ();
    -}
    -
    -#if defined (ACE_HAS_THREADS)
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_Condition)
    -
    -template  void
    -ACE_Condition::dump (void) const
    -{
    -// ACE_TRACE ("ACE_Condition::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -#if defined (CHORUS)
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("condname_ = %s\n"), this->condname_));
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("process_cond_ = %x\n"), this->process_cond_));
    -#endif /* CHORUS */
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("\n")));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -template 
    -ACE_Thread_Condition::ACE_Thread_Condition (MUTEX &m,
    -                                                   LPCTSTR name,
    -                                                   void *arg)
    -  : ACE_Condition (m, USYNC_THREAD, name, arg)
    -{
    -// ACE_TRACE ("ACE_Thread_Condition::ACE_Thread_Condition");
    -}
    -
    -template  void
    -ACE_Thread_Condition::dump (void) const
    -{
    -// ACE_TRACE ("ACE_Thread_Condition::dump");
    -
    -  ACE_Condition::dump ();
    -}
    -
    -template 
    -ACE_Condition::ACE_Condition (MUTEX &m,
    -                                     int type,
    -                                     LPCTSTR name,
    -                                     void *arg)
    -  :
    -#if defined (CHORUS)
    -    process_cond_(0),
    -    condname_ (0),
    -#endif /* CHORUS */
    -    mutex_ (m)
    -{
    -
    -#if defined(CHORUS)
    -  if (type == USYNC_PROCESS)
    -    {
    -      // Let's see if the shared memory entity already exists.
    -      ACE_HANDLE fd = ACE_OS::shm_open (name,
    -                                        O_RDWR | O_CREAT | O_EXCL,
    -                                        ACE_DEFAULT_FILE_PERMS);
    -      if (fd == ACE_INVALID_HANDLE)
    -        {
    -          if (errno == EEXIST)
    -            fd = ACE_OS::shm_open (name,
    -                                   O_RDWR | O_CREAT,
    -                                   ACE_DEFAULT_FILE_PERMS);
    -          else
    -            return;
    -        }
    -      else
    -        {
    -          // We own this shared memory object!  Let's set its size.
    -          if (ACE_OS::ftruncate (fd,
    -                                 sizeof (ACE_mutex_t)) == -1)
    -            {
    -              ACE_OS::close (fd);
    -              return;
    -            }
    -          this->condname_ = ACE_OS::strdup (name);
    -          if (this->condname_ == 0)
    -            {
    -              ACE_OS::close (fd);
    -              return;
    -            }
    -        }
    -
    -      this->process_cond_ =
    -        (ACE_cond_t *) ACE_OS::mmap (0,
    -                                     sizeof (ACE_cond_t),
    -                                     PROT_RDWR,
    -                                     MAP_SHARED,
    -                                     fd,
    -                                     0);
    -      ACE_OS::close (fd);
    -      if (this->process_cond_ == MAP_FAILED)
    -        return;
    -
    -      if (this->condname_
    -          && ACE_OS::cond_init (this->process_cond_,
    -                                type,
    -                                name,
    -                                arg) != 0)
    -        return;
    -    }
    -   // It is ok to fall through into the  below if the
    -   // USYNC_PROCESS flag is not enabled.
    -#endif /* CHORUS */
    -
    -  // ACE_TRACE ("ACE_Condition::ACE_Condition");
    -
    -  if (ACE_OS::cond_init (&this->cond_,
    -                         type,
    -                         name,
    -                         arg) != 0)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT ("%p\n"),
    -                ASYS_TEXT ("ACE_Condition::ACE_Condition")));
    -}
    -
    -template 
    -ACE_Condition::~ACE_Condition (void)
    -{
    -  // ACE_TRACE ("ACE_Condition::~ACE_Condition");
    -
    -  if (this->remove () == -1)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT ("%p\n"),
    -                ASYS_TEXT ("ACE_Condition::~ACE_Condition")));
    -}
    -
    -template  int
    -ACE_Condition::wait (void)
    -{
    -  // ACE_TRACE ("ACE_Condition::wait");
    -#if defined (CHORUS)
    -  if (this->process_cond_ != 0)
    -    return ACE_OS::cond_wait (this->process_cond_,
    -                              &this->mutex_.lock_);
    -#endif /* CHORUS */
    -  return ACE_OS::cond_wait (&this->cond_,
    -                            &this->mutex_.lock_);
    -}
    -
    -template  int
    -ACE_Condition::wait (MUTEX &mutex,
    -                            const ACE_Time_Value *abstime)
    -{
    -// ACE_TRACE ("ACE_Condition::wait");
    -  if (abstime == 0)
    -    return this->wait ();
    -  else
    -    {
    -#if defined (CHORUS)
    -      if (this->process_cond_ != 0)
    -        return ACE_OS::cond_timedwait (this->process_cond_,
    -                                      &mutex_.lock_,
    -                                      (ACE_Time_Value *) abstime);
    -#endif /* CHORUS */
    -      return ACE_OS::cond_timedwait (&this->cond_,
    -                                     &mutex.lock_,
    -                                     (ACE_Time_Value *) abstime);
    -    }
    -}
    -
    -// Peform an "alertable" timed wait.  If the argument ABSTIME == 0
    -// then we do a regular cond_wait(), else we do a timed wait for up to
    -// ABSTIME using the Solaris cond_timedwait() function.
    -
    -template  int
    -ACE_Condition::wait (const ACE_Time_Value *abstime)
    -{
    -// ACE_TRACE ("ACE_Condition::wait");
    -  return this->wait (this->mutex_, abstime);
    -}
    -#endif /* ACE_HAS_THREADS */
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_TSS)
    -
    -template 
    -ACE_TSS::~ACE_TSS (void)
    -{
    -  // We can't call  until *all* of the threads
    -  // that are using that key have done an .
    -  // Otherwise, we'll end up with "dangling TSS pointers."
    -  ACE_OS::thr_key_detach (this);
    -}
    -
    -template  TYPE *
    -ACE_TSS::operator-> () const
    -{
    -  return this->ts_get ();
    -}
    -
    -template 
    -ACE_TSS::operator TYPE *(void) const
    -{
    -  return this->ts_get ();
    -}
    -
    -template  TYPE *
    -ACE_TSS::make_TSS_TYPE (void) const
    -{
    -  return new TYPE;
    -}
    -
    -template  void
    -ACE_TSS::dump (void) const
    -{
    -// ACE_TRACE ("ACE_TSS::dump");
    -#if defined (ACE_HAS_THREADS) && (defined (ACE_HAS_THREAD_SPECIFIC_STORAGE) || defined (ACE_HAS_TSS_EMULATION))
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  this->keylock_.dump ();
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("key_ = %d\n"), this->key_));
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("\nonce_ = %d"), this->once_));
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("\n")));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -#endif /* defined (ACE_HAS_THREADS) && (defined (ACE_HAS_THREAD_SPECIFIC_STORAGE) || defined (ACE_HAS_TSS_EMULATION)) */
    -}
    -
    -#if defined (ACE_HAS_THREADS) && (defined (ACE_HAS_THREAD_SPECIFIC_STORAGE) || defined (ACE_HAS_TSS_EMULATION))
    -#if defined (ACE_HAS_THR_C_DEST)
    -extern "C" void ACE_TSS_C_cleanup(void *); // defined in Synch.cpp
    -#endif /* ACE_HAS_THR_C_DEST */
    -
    -template  void
    -ACE_TSS::cleanup (void *ptr)
    -{
    -  // Cast this to the concrete TYPE * so the destructor gets called.
    -  delete (TYPE *) ptr;
    -}
    -
    -template  int
    -ACE_TSS::ts_init (void) const
    -{
    -  // Insure that we are serialized!
    -  ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, (ACE_Thread_Mutex &) this->keylock_, 0);
    -
    -  // Use the Double-Check pattern to make sure we only create the key
    -  // once!
    -  if (this->once_ == 0)
    -    {
    -      if (ACE_Thread::keycreate (ACE_const_cast (ACE_thread_key_t *, &this->key_),
    -#if defined (ACE_HAS_THR_C_DEST)
    -                                 &ACE_TSS_C_cleanup,
    -#else
    -                                 &ACE_TSS::cleanup,
    -#endif /* ACE_HAS_THR_C_DEST */
    -                                 (void *) this) != 0)
    -        return -1; // Major problems, this should *never* happen!
    -      else
    -        {
    -          // This *must* come last to avoid race conditions!  Note that
    -          // we need to "cast away const..."
    -          * ACE_const_cast (int*, &this->once_) = 1;
    -          return 0;
    -        }
    -    }
    -  else
    -    return -1;
    -}
    -
    -template 
    -ACE_TSS::ACE_TSS (TYPE *ts_obj)
    -  : once_ (0),
    -    key_ (ACE_OS::NULL_key)
    -{
    -  // If caller has passed us a non-NULL TYPE *, then we'll just use
    -  // this to initialize the thread-specific value.  Thus, subsequent
    -  // calls to operator->() will return this value.  This is useful
    -  // since it enables us to assign objects to thread-specific data
    -  // that have arbitrarily complex constructors!
    -
    -  if (ts_obj != 0)
    -    {
    -      if (this->ts_init () == -1)
    -        {
    -          // Save/restore errno.
    -          ACE_Errno_Guard error (errno);
    -          // What should we do if this call fails?!
    -#if defined (ACE_HAS_WINCE)
    -          ::MessageBox (NULL,
    -                        L"ACE_Thread::keycreate() failed!",
    -                        L"ACE_TSS::ACE_TSS",
    -                        MB_OK);
    -#else
    -          ACE_OS::fprintf (stderr,
    -                           "ACE_Thread::keycreate() failed!");
    -#endif /* ACE_HAS_WINCE */
    -          return;
    -        }
    -
    -#if defined (ACE_HAS_THR_C_DEST)
    -      // Encapsulate a ts_obj and it's destructor in an
    -      // ACE_TSS_Adapter.
    -      ACE_TSS_Adapter *tss_adapter;
    -      ACE_NEW (tss_adapter,
    -               ACE_TSS_Adapter ((void *) ts_obj,
    -                                ACE_TSS::cleanup));
    -
    -      // Put the adapter in thread specific storage
    -      if (ACE_Thread::setspecific (this->key_,
    -                                   (void *) tss_adapter) != 0)
    -        {
    -          delete tss_adapter;
    -          ACE_ERROR ((LM_ERROR,
    -                      ASYS_TEXT ("%p\n"),
    -                      ASYS_TEXT ("ACE_Thread::setspecific() failed!")));
    -        }
    -#else
    -      if (ACE_Thread::setspecific (this->key_,
    -                                   (void *) ts_obj) != 0)
    -        ACE_ERROR ((LM_ERROR,
    -                    ASYS_TEXT ("%p\n"),
    -                    ASYS_TEXT ("ACE_Thread::setspecific() failed!")));
    -#endif /* ACE_HAS_THR_C_DEST */
    -    }
    -}
    -
    -template  TYPE *
    -ACE_TSS::ts_get (void) const
    -{
    -  if (this->once_ == 0)
    -    // Create and initialize thread-specific ts_obj.
    -    this->ts_init ();
    -
    -  TYPE *ts_obj = 0;
    -
    -#if defined (ACE_HAS_THR_C_DEST)
    -  ACE_TSS_Adapter *tss_adapter = 0;
    -
    -  // Get the adapter from thread-specific storage
    -  if (ACE_Thread::getspecific (this->key_,
    -                               (void **) &tss_adapter) == -1)
    -    return 0; // This should not happen!
    -
    -  // Check to see if this is the first time in for this thread.
    -  if (tss_adapter == 0)
    -#else
    -  // Get the ts_obj from thread-specific storage.  Note that no locks
    -  // are required here...
    -  if (ACE_Thread::getspecific (this->key_,
    -                               (void **) &ts_obj) == -1)
    -    return 0; // This should not happen!
    -
    -  // Check to see if this is the first time in for this thread.
    -  if (ts_obj == 0)
    -#endif /* ACE_HAS_THR_C_DEST */
    -    {
    -      // Allocate memory off the heap and store it in a pointer in
    -      // thread-specific storage (on the stack...).
    -
    -      ts_obj = this->make_TSS_TYPE ();
    -
    -      if (ts_obj == 0)
    -        return 0;
    -
    -#if defined (ACE_HAS_THR_C_DEST)
    -      // Encapsulate a ts_obj and it's destructor in an
    -      // ACE_TSS_Adapter.
    -      ACE_NEW_RETURN (tss_adapter,
    -                      ACE_TSS_Adapter (ts_obj,
    -                                       ACE_TSS::cleanup), 0);
    -
    -      // Put the adapter in thread specific storage
    -      if (ACE_Thread::setspecific (this->key_,
    -                                   (void *) tss_adapter) != 0)
    -        {
    -          delete tss_adapter;
    -          delete ts_obj;
    -          return 0; // Major problems, this should *never* happen!
    -        }
    -#else
    -      // Store the dynamically allocated pointer in thread-specific
    -      // storage.
    -      if (ACE_Thread::setspecific (this->key_,
    -                                   (void *) ts_obj) != 0)
    -        {
    -          delete ts_obj;
    -          return 0; // Major problems, this should *never* happen!
    -        }
    -#endif /* ACE_HAS_THR_C_DEST */
    -    }
    -
    -#if defined (ACE_HAS_THR_C_DEST)
    -  // Return the underlying ts object.
    -  return (TYPE *) tss_adapter->ts_obj_;
    -#else
    -  return ts_obj;
    -#endif /* ACE_HAS_THR_C_DEST */
    -}
    -
    -// Get the thread-specific object for the key associated with this
    -// object.  Returns 0 if the ts_obj has never been initialized,
    -// otherwise returns a pointer to the ts_obj.
    -
    -template  TYPE *
    -ACE_TSS::ts_object (void) const
    -{
    -  // Ensure that we are serialized!
    -  ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, (ACE_Thread_Mutex &) this->keylock_, 0);
    -
    -  if (this->once_ == 0) // Return 0 if we've never been initialized.
    -    return 0;
    -  else
    -    {
    -      TYPE *ts_obj = 0;
    -#if defined (ACE_HAS_THR_C_DEST)
    -      ACE_TSS_Adapter *tss_adapter = 0;
    -
    -      // Get the tss adapter from thread-specific storage
    -      if (ACE_Thread::getspecific (this->key_,
    -                                   (void **) &tss_adapter) == -1)
    -        return 0; // This should not happen!
    -      else if (tss_adapter != 0)
    -        // Extract the real TS object.
    -        ts_obj = (TYPE *) tss_adapter->ts_obj_;
    -#else
    -      if (ACE_Thread::getspecific (this->key_,
    -                                   (void **) &ts_obj) == -1)
    -        return 0; // This should not happen!
    -#endif /* ACE_HAS_THR_C_DEST */
    -      return ts_obj;
    -    }
    -}
    -
    -template  TYPE *
    -ACE_TSS::ts_object (TYPE *new_ts_obj)
    -{
    -  // Note, we shouldn't hold the keylock at this point because
    -  //  does it for us and we'll end up with deadlock
    -  // otherwise...
    -  if (this->once_ == 0)
    -    // Create and initialize thread-specific ts_obj.
    -    this->ts_init ();
    -
    -  // Ensure that we are serialized!
    -  ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->keylock_, 0);
    -
    -  TYPE *ts_obj = 0;
    -
    -#if defined (ACE_HAS_THR_C_DEST)
    -  ACE_TSS_Adapter *tss_adapter = 0;
    -
    -  if (ACE_Thread::getspecific (this->key_,
    -                               (void **) &tss_adapter) == -1)
    -    return 0; // This should not happen!
    -
    -  if (tss_adapter != 0)
    -    {
    -      ts_obj = (TYPE *) tss_adapter->ts_obj_;
    -      delete tss_adapter;       // don't need this anymore
    -    }
    -
    -  ACE_NEW_RETURN (tss_adapter,
    -                  ACE_TSS_Adapter ((void *) new_ts_obj,
    -                                   ACE_TSS::cleanup),
    -                  0);
    -
    -  if (ACE_Thread::setspecific (this->key_,
    -                               (void *) tss_adapter) == -1)
    -    {
    -      delete tss_adapter;
    -      return ts_obj; // This should not happen!
    -    }
    -#else
    -  if (ACE_Thread::getspecific (this->key_,
    -                               (void **) &ts_obj) == -1)
    -    return 0; // This should not happen!
    -  if (ACE_Thread::setspecific (this->key_,
    -                               (void *) new_ts_obj) == -1)
    -    return ts_obj; // This should not happen!
    -#endif /* ACE_HAS_THR_C_DEST */
    -  else
    -    return ts_obj;
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_TSS_Guard)
    -
    -template  void
    -ACE_TSS_Guard::dump (void) const
    -{
    -// ACE_TRACE ("ACE_TSS_Guard::dump");
    -
    -  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("key_ = %d"), this->key_));
    -  ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("\n")));
    -  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
    -}
    -
    -template  void
    -ACE_TSS_Guard::init_key (void)
    -{
    -// ACE_TRACE ("ACE_TSS_Guard::init_key");
    -
    -  this->key_ = ACE_OS::NULL_key;
    -  ACE_Thread::keycreate (&this->key_,
    -#if defined (ACE_HAS_THR_C_DEST)
    -                         &ACE_TSS_C_cleanup,
    -#else
    -                         &ACE_TSS_Guard::cleanup,
    -#endif /* ACE_HAS_THR_C_DEST */
    -                         (void *) this);
    -}
    -
    -template 
    -ACE_TSS_Guard::ACE_TSS_Guard (void)
    -{
    -// ACE_TRACE ("ACE_TSS_Guard::ACE_TSS_Guard");
    -  this->init_key ();
    -}
    -
    -template  int
    -ACE_TSS_Guard::release (void)
    -{
    -// ACE_TRACE ("ACE_TSS_Guard::release");
    -
    -  ACE_Guard *guard = 0;
    -
    -#if defined (ACE_HAS_THR_C_DEST)
    -  ACE_TSS_Adapter *tss_adapter = 0;
    -  ACE_Thread::getspecific (this->key_,
    -                           (void **) &tss_adapter);
    -  guard = (ACE_Guard *)tss_adapter->ts_obj_;
    -#else
    -  ACE_Thread::getspecific (this->key_,
    -                           (void **) &guard);
    -#endif /* ACE_HAS_THR_C_DEST */
    -
    -  return guard->release ();
    -}
    -
    -template  int
    -ACE_TSS_Guard::remove (void)
    -{
    -// ACE_TRACE ("ACE_TSS_Guard::remove");
    -
    -  ACE_Guard *guard = 0;
    -
    -#if defined (ACE_HAS_THR_C_DEST)
    -  ACE_TSS_Adapter *tss_adapter = 0;
    -  ACE_Thread::getspecific (this->key_,
    -                           (void **) &tss_adapter);
    -  guard = (ACE_Guard *) tss_adapter->ts_obj_;
    -#else
    -  ACE_Thread::getspecific (this->key_,
    -                           (void **) &guard);
    -#endif /* ACE_HAS_THR_C_DEST */
    -
    -  return guard->remove ();
    -}
    -
    -template 
    -ACE_TSS_Guard::~ACE_TSS_Guard (void)
    -{
    -// ACE_TRACE ("ACE_TSS_Guard::~ACE_TSS_Guard");
    -
    -  ACE_Guard *guard = 0;
    -
    -#if defined (ACE_HAS_THR_C_DEST)
    -  ACE_TSS_Adapter *tss_adapter = 0;
    -  ACE_Thread::getspecific (this->key_,
    -                           (void **) &tss_adapter);
    -  guard = (ACE_Guard *) tss_adapter->ts_obj_;
    -#else
    -  ACE_Thread::getspecific (this->key_,
    -                           (void **) &guard);
    -#endif /* ACE_HAS_THR_C_DEST */
    -
    -  // Make sure that this pointer is NULL when we shut down...
    -  ACE_Thread::setspecific (this->key_, 0);
    -  ACE_Thread::keyfree (this->key_);
    -  // Destructor releases lock.
    -  delete guard;
    -}
    -
    -template  void
    -ACE_TSS_Guard::cleanup (void *ptr)
    -{
    -// ACE_TRACE ("ACE_TSS_Guard::dump");
    -
    -  // Destructor releases lock.
    -  delete (ACE_Guard *) ptr;
    -}
    -
    -template 
    -ACE_TSS_Guard::ACE_TSS_Guard (ACE_LOCK &lock, int block)
    -{
    -// ACE_TRACE ("ACE_TSS_Guard::ACE_TSS_Guard");
    -
    -  this->init_key ();
    -  ACE_Guard *guard;
    -  ACE_NEW (guard,
    -           ACE_Guard (lock,
    -                                block));
    -
    -#if defined (ACE_HAS_THR_C_DEST)
    -  ACE_TSS_Adapter *tss_adapter;
    -  ACE_NEW (tss_adapter,
    -           ACE_TSS_Adapter ((void *) guard,
    -                            ACE_TSS_Guard::cleanup));
    -  ACE_Thread::setspecific (this->key_,
    -                           (void *) tss_adapter);
    -#else
    -  ACE_Thread::setspecific (this->key_,
    -                           (void *) guard);
    -#endif /* ACE_HAS_THR_C_DEST */
    -}
    -
    -template  int
    -ACE_TSS_Guard::acquire (void)
    -{
    -// ACE_TRACE ("ACE_TSS_Guard::acquire");
    -
    -  ACE_Guard *guard = 0;
    -
    -#if defined (ACE_HAS_THR_C_DEST)
    -  ACE_TSS_Adapter *tss_adapter = 0;
    -  ACE_Thread::getspecific (this->key_,
    -                           (void **) &tss_adapter);
    -  guard = (ACE_Guard *) tss_adapter->ts_obj_;
    -#else
    -  ACE_Thread::getspecific (this->key_,
    -                           (void **) &guard);
    -#endif /* ACE_HAS_THR_C_DEST */
    -
    -  return guard->acquire ();
    -}
    -
    -template  int
    -ACE_TSS_Guard::tryacquire (void)
    -{
    -// ACE_TRACE ("ACE_TSS_Guard::tryacquire");
    -
    -  ACE_Guard *guard = 0;
    -
    -#if defined (ACE_HAS_THR_C_DEST)
    -  ACE_TSS_Adapter *tss_adapter = 0;
    -  ACE_Thread::getspecific (this->key_,
    -                           (void **) &tss_adapter);
    -  guard = (ACE_Guard *) tss_adapter->ts_obj_;
    -#else
    -  ACE_Thread::getspecific (this->key_,
    -                           (void **) &guard);
    -#endif /* ACE_HAS_THR_C_DEST */
    -
    -  return guard->tryacquire ();
    -}
    -
    -template 
    -ACE_TSS_Write_Guard::ACE_TSS_Write_Guard (ACE_LOCK &lock,
    -                                                    int block)
    -{
    -// ACE_TRACE ("ACE_TSS_Write_Guard::ACE_TSS_Write_Guard");
    -
    -  this->init_key ();
    -  ACE_Guard *guard;
    -  ACE_NEW (guard,
    -           ACE_Write_Guard (lock,
    -                                      block));
    -
    -#if defined (ACE_HAS_THR_C_DEST)
    -  ACE_TSS_Adapter *tss_adapter;
    -  ACE_NEW (tss_adapter,
    -           ACE_TSS_Adapter ((void *) guard,
    -                            ACE_TSS_Guard::cleanup));
    -  ACE_Thread::setspecific (this->key_,
    -                           (void *) tss_adapter);
    -#else
    -  ACE_Thread::setspecific (this->key_,
    -                           (void *) guard);
    -#endif /* ACE_HAS_THR_C_DEST */
    -}
    -
    -template  int
    -ACE_TSS_Write_Guard::acquire (void)
    -{
    -// ACE_TRACE ("ACE_TSS_Write_Guard::acquire");
    -
    -  ACE_Write_Guard *guard = 0;
    -
    -#if defined (ACE_HAS_THR_C_DEST)
    -  ACE_TSS_Adapter *tss_adapter = 0;
    -  ACE_Thread::getspecific (this->key_,
    -                           (void **) &tss_adapter);
    -  guard = (ACE_Guard *) tss_adapter->ts_obj_;
    -#else
    -  ACE_Thread::getspecific (this->key_,
    -                           (void **) &guard);
    -#endif /* ACE_HAS_THR_C_DEST */
    -
    -  return guard->acquire_write ();
    -}
    -
    -template  int
    -ACE_TSS_Write_Guard::tryacquire (void)
    -{
    -// ACE_TRACE ("ACE_TSS_Write_Guard::tryacquire");
    -
    -  ACE_Write_Guard *guard = 0;
    -
    -#if defined (ACE_HAS_THR_C_DEST)
    -  ACE_TSS_Adapter *tss_adapter = 0;
    -  ACE_Thread::getspecific (this->key_,
    -                           (void **) &tss_adapter);
    -  guard = (ACE_Guard *) tss_adapter->ts_obj_;
    -#else
    -  ACE_Thread::getspecific (this->key_,
    -                           (void **) &guard);
    -#endif /* ACE_HAS_THR_C_DEST */
    -
    -  return guard->tryacquire_write ();
    -}
    -
    -template  int
    -ACE_TSS_Write_Guard::acquire_write (void)
    -{
    -// ACE_TRACE ("ACE_TSS_Write_Guard::acquire_write");
    -
    -  return this->acquire ();
    -}
    -
    -template  int
    -ACE_TSS_Write_Guard::tryacquire_write (void)
    -{
    -// ACE_TRACE ("ACE_TSS_Write_Guard::tryacquire_write");
    -
    -  return this->tryacquire ();
    -}
    -
    -template  void
    -ACE_TSS_Write_Guard::dump (void) const
    -{
    -// ACE_TRACE ("ACE_TSS_Write_Guard::dump");
    -  ACE_TSS_Guard::dump ();
    -}
    -
    -template 
    -ACE_TSS_Read_Guard::ACE_TSS_Read_Guard (ACE_LOCK &lock, int block)
    -{
    -// ACE_TRACE ("ACE_TSS_Read_Guard::ACE_TSS_Read_Guard");
    -
    -  this->init_key ();
    -  ACE_Guard *guard;
    -  ACE_NEW (guard,
    -           ACE_Read_Guard (lock,
    -                                     block));
    -#if defined (ACE_HAS_THR_C_DEST)
    -  ACE_TSS_Adapter *tss_adapter;
    -  ACE_NEW (tss_adapter,
    -           ACE_TSS_Adapter ((void *)guard,
    -                            ACE_TSS_Guard::cleanup));
    -  ACE_Thread::setspecific (this->key_,
    -                           (void *) tss_adapter);
    -#else
    -  ACE_Thread::setspecific (this->key_,
    -                           (void *) guard);
    -#endif /* ACE_HAS_THR_C_DEST */
    -}
    -
    -template  int
    -ACE_TSS_Read_Guard::acquire (void)
    -{
    -// ACE_TRACE ("ACE_TSS_Read_Guard::acquire");
    -
    -  ACE_Read_Guard *guard = 0;
    -
    -#if defined (ACE_HAS_THR_C_DEST)
    -  ACE_TSS_Adapter *tss_adapter = 0;
    -  ACE_Thread::getspecific (this->key_,
    -                           (void **) &tss_adapter);
    -  guard = (ACE_Guard *) tss_adapter->ts_obj_;
    -#else
    -  ACE_Thread::getspecific (this->key_,
    -                           (void **) &guard);
    -#endif /* ACE_HAS_THR_C_DEST */
    -
    -  return guard->acquire_read ();
    -}
    -
    -template  int
    -ACE_TSS_Read_Guard::tryacquire (void)
    -{
    -// ACE_TRACE ("ACE_TSS_Read_Guard::tryacquire");
    -
    -  ACE_Read_Guard *guard = 0;
    -
    -#if defined (ACE_HAS_THR_C_DEST)
    -  ACE_TSS_Adapter *tss_adapter = 0;
    -  ACE_Thread::getspecific (this->key_,
    -                           (void **) &tss_adapter);
    -  guard = (ACE_Guard *) tss_adapter->ts_obj_;
    -#else
    -  ACE_Thread::getspecific (this->key_,
    -                           (void **) &guard);
    -#endif /* ACE_HAS_THR_C_DEST */
    -
    -  return guard->tryacquire_read ();
    -}
    -
    -template  int
    -ACE_TSS_Read_Guard::acquire_read (void)
    -{
    -// ACE_TRACE ("ACE_TSS_Read_Guard::acquire_read");
    -
    -  return this->acquire ();
    -}
    -
    -template  int
    -ACE_TSS_Read_Guard::tryacquire_read (void)
    -{
    -// ACE_TRACE ("ACE_TSS_Read_Guard::tryacquire_read");
    -
    -  return this->tryacquire ();
    -}
    -
    -template  void
    -ACE_TSS_Read_Guard::dump (void) const
    -{
    -// ACE_TRACE ("ACE_TSS_Read_Guard::dump");
    -  ACE_TSS_Guard::dump ();
    -}
    -
    -
    -#endif /* defined (ACE_HAS_THREADS) && (defined (ACE_HAS_THREAD_SPECIFIC_STORAGE) || defined (ACE_HAS_TSS_EMULATION)) */
    -
    -#endif /* ACE_SYNCH_T_C */
    diff --git a/ace/Synch_T.h b/ace/Synch_T.h
    deleted file mode 100644
    index 354585f8602..00000000000
    --- a/ace/Synch_T.h
    +++ /dev/null
    @@ -1,964 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    Synch_T.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_SYNCH_T_H
    -#define ACE_SYNCH_T_H
    -
    -#include "ace/Event_Handler.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Synch.h"
    -
    -// Forward decl
    -class ACE_Time_Value;
    -
    -template 
    -class ACE_Lock_Adapter : public ACE_Lock
    -{
    -  // = TITLE
    -  //     This is an adapter that allows applications to transparently
    -  //     combine the  abstract base class (which contains
    -  //     pure virtual methods) with any of the other concrete ACE
    -  //     synchronization classes (e.g., , ,
    -  //     , etc.).
    -  //
    -  // = DESCRIPTION
    -  //     This class uses a form of the Adapter pattern.
    -public:
    -  typedef ACE_LOCKING_MECHANISM ACE_LOCK;
    -
    -  // = Initialization/Finalization methods.
    -
    -  ACE_Lock_Adapter (ACE_LOCKING_MECHANISM &lock);
    -  // Constructor. All locking requests will be forwarded to .
    -
    -  ACE_Lock_Adapter (void);
    -  // Constructor. Since no lock is provided by the user, one will be
    -  // created internally.
    -
    -  virtual ~ACE_Lock_Adapter (void);
    -  // Destructor. If  was not passed in by the user, it will be
    -  // deleted.
    -
    -  // = Lock accessors.
    -  virtual int acquire (void);
    -  // Block the thread until the lock is acquired.
    -
    -  virtual int tryacquire (void);
    -  // Conditionally acquire the lock (i.e., won't block).
    -
    -  virtual int release (void);
    -  // Release the lock.
    -
    -  virtual int acquire_read (void);
    -  // Block until the thread acquires a read lock.  If the locking
    -  // mechanism doesn't support read locks then this just calls
    -  // .
    -
    -  virtual int acquire_write (void);
    -  // Block until the thread acquires a write lock.  If the locking
    -  // mechanism doesn't support read locks then this just calls
    -  // .
    -
    -  virtual int tryacquire_read (void);
    -  // Conditionally acquire a read lock.  If the locking mechanism
    -  // doesn't support read locks then this just calls .
    -
    -  virtual int tryacquire_write (void);
    -  // Conditionally acquire a write lock.  If the locking mechanism
    -  // doesn't support read locks then this just calls .
    -
    -  virtual int remove (void);
    -  // Explicitly destroy the lock.
    -
    -private:
    -  ACE_LOCKING_MECHANISM *lock_;
    -  // The concrete locking mechanism that all the methods delegate to.
    -
    -  int delete_lock_;
    -  // This flag keep track of whether we are responsible for deleting
    -  // the lock
    -};
    -
    -template 
    -class ACE_Reverse_Lock : public ACE_Lock
    -{
    -  // = TITLE
    -  //     A reverse (or anti) lock.
    -  //
    -  // = DESCRIPTION
    -  //     This is an interesting adapter class that changes a lock into
    -  //     a reverse lock, i.e.,  on this class calls 
    -  //     on the lock, and  on this class calls  on
    -  //     the lock.
    -  //
    -  //     One motivation for this class is when we temporarily want to
    -  //     release a lock (which we have already acquired) but then
    -  //     reaquire it soon after.  An alternative design would be to
    -  //     add a Anti_Guard or Reverse_Guard class which would 
    -  //     on construction and  destruction.  However, there
    -  //     are *many* varieties of the Guard class and this design
    -  //     choice would lead to at least 6 new classes.  One new
    -  //     ACE_Reverse_Lock class seemed more reasonable.
    -public:
    -  typedef ACE_LOCKING_MECHANISM ACE_LOCK;
    -
    -  // = Initialization/Finalization methods.
    -
    -  ACE_Reverse_Lock (ACE_LOCKING_MECHANISM &lock);
    -  // Constructor. All locking requests will be forwarded to .
    -
    -  virtual ~ACE_Reverse_Lock (void);
    -  // Destructor. If  was not passed in by the user, it will be
    -  // deleted.
    -
    -  // = Lock accessors.
    -  virtual int acquire (void);
    -  // Release the lock.
    -
    -  virtual int tryacquire (void);
    -  // Release the lock.
    -
    -  virtual int release (void);
    -  // Acquire the lock.
    -
    -  virtual int acquire_read (void);
    -  // Release the lock.
    -
    -  virtual int acquire_write (void);
    -  // Release the lock.
    -
    -  virtual int tryacquire_read (void);
    -  // Release the lock.
    -
    -  virtual int tryacquire_write (void);
    -  // Release the lock.
    -
    -  virtual int remove (void);
    -  // Explicitly destroy the lock.
    -
    -private:
    -  ACE_LOCKING_MECHANISM &lock_;
    -  // The concrete locking mechanism that all the methods delegate to.
    -};
    -
    -template 
    -class ACE_Test_and_Set : public ACE_Event_Handler
    -{
    -public:
    -  // = TITLE
    -  //     Implements the classic ``test and set'' operation.
    -  //
    -  // = DESCRIPTION
    -  //     This class keeps track of the status of , which can
    -  //     be set based on various events (such as receipt of a
    -  //     signal).  This class is derived from  so
    -  //     that it can be "signaled" by a Reactor when a signal occurs.
    -  //     We assume that  is a data type that can be assigned the
    -  //     value 0 or 1.
    -  ACE_Test_and_Set (TYPE initial_value = 0);
    -
    -  TYPE is_set (void) const;
    -  // Returns true if we are set, else false.
    -
    -  TYPE set (TYPE);
    -  // Sets the  status, returning the original value of
    -  // .
    -
    -  virtual int handle_signal (int signum,
    -                             siginfo_t * = 0,
    -                             ucontext_t * = 0);
    -  // Called when object is signaled by OS (either via UNIX signals or
    -  // when a Win32 object becomes signaled).
    -
    -private:
    -  TYPE is_set_;
    -  // Keeps track of our state.
    -
    -  ACE_LOCK lock_;
    -  // Protect the state from race conditions.
    -};
    -
    -template 
    -class ACE_Atomic_Op
    -{
    -  // = TITLE
    -  //     Transparently parameterizes synchronization into basic
    -  //     arithmetic operations.
    -  //
    -  // = DESCRIPTION
    -  //     This class is described in an article in the July/August 1994
    -  //     issue of the C++ Report magazine.  It implements a
    -  //     templatized version of the Decorator pattern from the GoF book.
    -public:
    -  // = Initialization methods.
    -
    -  ACE_Atomic_Op (void);
    -  // Initialize  to 0.
    -
    -  ACE_Atomic_Op (const TYPE &c);
    -  // Initialize  to c.
    -
    -  // = Accessors.
    -
    -  TYPE operator++ (void);
    -  // Atomically pre-increment .
    -
    -  TYPE operator++ (int);
    -  // Atomically post-increment .
    -
    -  TYPE operator+= (const TYPE &i);
    -  // Atomically increment  by i.
    -
    -  TYPE operator-- (void);
    -  // Atomically pre-decrement .
    -
    -  TYPE operator-- (int);
    -  // Atomically post-decrement .
    -
    -  TYPE operator-= (const TYPE &i);
    -  // Atomically decrement  by i.
    -
    -  int operator== (const TYPE &i) const;
    -  // Atomically compare  with i.
    -
    -  int operator!= (const TYPE &i) const;
    -  // Atomically compare  with i.
    -
    -  int operator>= (const TYPE &i) const;
    -  // Atomically check if  greater than or equal to i.
    -
    -  int operator> (const TYPE &rhs) const;
    -  // Atomically check if  greater than i.
    -
    -  int operator<= (const TYPE &rhs) const;
    -  // Atomically check if  less than or equal to i.
    -
    -  int operator< (const TYPE &rhs) const;
    -  // Atomically check if  less than i.
    -
    -  void operator= (const TYPE &i);
    -  // Atomically assign i to .
    -
    -  void operator= (const ACE_Atomic_Op &rhs);
    -  // Atomically assign  to .
    -
    -  TYPE value (void) const;
    -  // Explicitly return .
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  // ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -  ACE_Atomic_Op (const ACE_Atomic_Op &);
    -  // Manage copying...
    -
    -  ACE_LOCK &mutex (void);
    -  // Returns a reference to the underlying .  This makes it
    -  // possible to acquire the lock explicitly, which can be useful in
    -  // some cases if you instantiate the  with an
    -  //  or .  NOTE: the right
    -  // name would be lock_, but HP/C++ will choke on that!
    -
    -  TYPE &value_i (void);
    -  // Explicitly return  (by reference).  This gives the user
    -  // full, unrestricted access to the underlying value.  This method
    -  // will usually be used in conjunction with explicit access to the
    -  // lock.  Use with care ;-)
    -
    -private:
    -  ACE_LOCK mutex_;
    -  // Type of synchronization mechanism.
    -
    -  TYPE value_;
    -  // Current object decorated by the atomic op.
    -};
    -
    -template 
    -class ACE_TSS
    -{
    -  // = TITLE
    -  //     Allows objects that are "physically" in thread specific
    -  //     storage (i.e., private to a thread) to be accessed as though
    -  //     they were "logically" global to a program.
    -  //
    -  // = DESCRIPTION
    -  //     This class is a wrapper around the OS thread library
    -  //     thread-specific functions.  It uses the > to
    -  //     shield applications from the details of accessing
    -  //     thread-specific storage.
    -  //
    -  //     NOTE:  TYPE cannot be a built-in type, but instead must be a
    -  //     user-defined class.  (Some compilers will allow a built-in
    -  //     type, but shouldn't.  Sun C++ won't, properly detecting the
    -  //     improper return type from >.)  See template class
    -  //     ACE_TSS_Type_Adapter, below, for adapting built-in types to
    -  //     work with ACE_TSS.
    -public:
    -  // = Initialization and termination methods.
    -
    -  ACE_TSS (TYPE *ts_obj = 0);
    -  // If caller has passed us a non-NULL ts_obj *, then we'll just use
    -  // this to initialize the thread-specific value (but only for the
    -  // calling thread).  Thus, subsequent calls to > in this
    -  // thread will return this value.  This is useful since it enables
    -  // us to assign objects to thread-specific data that have
    -  // arbitrarily complex constructors.
    -
    -  virtual ~ACE_TSS (void);
    -  // Deregister with thread-key administration.
    -
    -  // = Accessors.
    -
    -  TYPE *ts_object (void) const;
    -  // Get the thread-specific object for the key associated with this
    -  // object.  Returns 0 if the data has never been initialized,
    -  // otherwise returns a pointer to the data.
    -
    -  TYPE *ts_object (TYPE *);
    -  // Set the thread-specific object for the key associated with this
    -  // object.
    -
    -  TYPE *operator-> () const;
    -  // Use a "smart pointer" to get the thread-specific object
    -  // associated with the .
    -
    -  operator TYPE *(void) const;
    -  // Return or create and return the calling threads TYPE object.
    -
    -  virtual TYPE *make_TSS_TYPE (void) const;
    -  // Hook for construction parameters.
    -
    -  // = Utility methods.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  // ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  TYPE *ts_get (void) const;
    -  // Actually implements the code that retrieves the object from
    -  // thread-specific storage.
    -
    -  int ts_init (void) const;
    -  // Factors out common code for initializing TSS.  This must NOT be
    -  // called with the lock held...
    -
    -#if !(defined (ACE_HAS_THREADS) && (defined (ACE_HAS_THREAD_SPECIFIC_STORAGE) || defined (ACE_HAS_TSS_EMULATION)))
    -  TYPE *type_;
    -  // This implementation only works for non-threading systems...
    -#else
    -  ACE_Thread_Mutex keylock_;
    -  // Avoid race conditions during initialization.
    -
    -  int once_;
    -  // "First time in" flag.
    -
    -  ACE_thread_key_t key_;
    -  // Key for the thread-specific error data.
    -
    -  static void cleanup (void *ptr);
    -  // "Destructor" that deletes internal TYPE * when thread exits.
    -#endif /* defined (ACE_HAS_THREADS) && (defined (ACE_HAS_THREAD_SPECIFIC_STORAGE) || defined (ACE_HAS_TSS_EMULATION)) */
    -  // = Disallow copying...
    -  ACE_UNIMPLEMENTED_FUNC (void operator= (const ACE_TSS &))
    -  ACE_UNIMPLEMENTED_FUNC (ACE_TSS (const ACE_TSS &))
    -};
    -
    -template 
    -class ACE_TSS_Type_Adapter
    -{
    -  // = TITLE
    -  //     Adapter that allows built-in types to be used with ACE_TSS.
    -  //
    -  // = DESCRIPTION
    -  //     Wraps a value of a built-in type, providing conversions to
    -  //     and from the type.  Example use with ACE_TSS:
    -  //
    -  //       ACE_TSS > i;
    -  //       *i = 37;
    -  //       ACE_OS::fprintf (stderr, "%d\n", *i);
    -  //
    -  //     Unfortunately, though, some compilers have trouble with the
    -  //     implicit type conversions.  This seems to work better:
    -  //
    -  //       ACE_TSS > i;
    -  //       i->operator int & () = 37;
    -  //       ACE_OS::fprintf (stderr, "%d\n", i->operator int ());
    -public:
    -  ACE_TSS_Type_Adapter (const TYPE value = 0) : value_ (value) {}
    -  // Constructor.  Inlined here so that it should _always_ be inlined.
    -
    -  operator TYPE () { return value_; };
    -  // TYPE conversion.  Inlined here so that it should _always_ be inlined.
    -
    -  operator TYPE & () { return value_; };
    -  // TYPE & conversion.  Inlined here so that it should _always_ be inlined.
    -
    -private:
    -  TYPE value_;
    -  // The wrapped value.
    -};
    -
    -template 
    -class ACE_Guard
    -{
    -  // = TITLE
    -  //     This data structure is meant to be used within a method or
    -  //     function...  It performs automatic aquisition and release of
    -  //     a parameterized synchronization object .
    -  //
    -  // = DESCRIPTION
    -  //     The  class given as an actual parameter must provide at
    -  //     the very least the , , , and
    -  //      methods.
    -public:
    -
    -  // = Initialization and termination methods.
    -  ACE_Guard (ACE_LOCK &l);
    -
    -  ACE_Guard (ACE_LOCK &l, int block);
    -  // Implicitly and automatically acquire (or try to acquire) the
    -  // lock.
    -
    -  ~ACE_Guard (void);
    -  // Implicitly release the lock.
    -
    -  // = Lock accessors.
    -
    -  int acquire (void);
    -  // Explicitly acquire the lock.
    -
    -  int tryacquire (void);
    -  // Conditionally acquire the lock (i.e., won't block).
    -
    -  int release (void);
    -  // Explicitly release the lock, but only if it is held!
    -
    -  // = Utility methods.
    -  int locked (void);
    -  // 1 if locked, 0 if couldn't acquire the lock
    -  // (errno will contain the reason for this).
    -
    -  int remove (void);
    -  // Explicitly remove the lock.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  // ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -
    -  ACE_Guard (ACE_LOCK *lock): lock_ (lock) {}
    -  // Helper, meant for subclass only.
    -
    -  ACE_LOCK *lock_;
    -  // Pointer to the ACE_LOCK we're guarding.
    -
    -  int owner_;
    -  // Keeps track of whether we acquired the lock or failed.
    -
    -private:
    -  // = Prevent assignment and initialization.
    -  ACE_UNIMPLEMENTED_FUNC (void operator= (const ACE_Guard &))
    -  ACE_UNIMPLEMENTED_FUNC (ACE_Guard (const ACE_Guard &))
    -};
    -
    -template 
    -class ACE_Write_Guard : public ACE_Guard
    -{
    -  // = TITLE
    -  //     This class is similar to class , though it
    -  //     acquires/releases a write lock automatically (naturally, the
    -  //      it is instantiated with must support the appropriate
    -  //     API).
    -public:
    -  // = Initialization method.
    -
    -  ACE_Write_Guard (ACE_LOCK &m);
    -  // Implicitly and automatically acquire a write lock.
    -
    -  ACE_Write_Guard (ACE_LOCK &m, int block);
    -  // Implicitly and automatically acquire (or try to acquire) a write
    -  // lock.
    -
    -  // = Lock accessors.
    -
    -  int acquire_write (void);
    -  // Explicitly acquire the write lock.
    -
    -  int acquire (void);
    -  // Explicitly acquire the write lock.
    -
    -  int tryacquire_write (void);
    -  // Conditionally acquire the write lock (i.e., won't block).
    -
    -  int tryacquire (void);
    -  // Conditionally acquire the write lock (i.e., won't block).
    -
    -  // = Utility methods.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  // ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -};
    -
    -template 
    -class ACE_Read_Guard : public ACE_Guard
    -{
    -  // = TITLE
    -  //     This class is similar to class , though it
    -  //     acquires/releases a read lock automatically (naturally, the
    -  //      it is instantiated with must support the appropriate
    -  //     API).
    -public:
    -  // = Initialization methods.
    -
    -  ACE_Read_Guard (ACE_LOCK& m);
    -  // Implicitly and automatically acquire a read lock.
    -
    -  ACE_Read_Guard (ACE_LOCK &m, int block);
    -  // Implicitly and automatically acquire (or try to acquire) a read
    -  // lock.
    -
    -  // = Lock accessors.
    -
    -  int acquire_read (void);
    -  // Explicitly acquire the read lock.
    -
    -  int acquire (void);
    -  // Explicitly acquire the read lock.
    -
    -  int tryacquire_read (void);
    -  // Conditionally acquire the read lock (i.e., won't block).
    -
    -  int tryacquire (void);
    -  // Conditionally acquire the read lock (i.e., won't block).
    -
    -  // = Utility methods.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  // ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -};
    -
    -#if !(defined (ACE_HAS_THREADS) && (defined (ACE_HAS_THREAD_SPECIFIC_STORAGE) || defined (ACE_HAS_TSS_EMULATION)))
    -
    -#define ACE_TSS_Guard ACE_Guard
    -#define ACE_TSS_Write_GUARD ACE_Write_Guard
    -#define ACE_TSS_Read_GUARD ACE_Read_Guard
    -
    -#else
    - /* ACE platform supports some form of threading and
    -  thread-specific storage. */
    -
    -template 
    -class ACE_TSS_Guard
    -{
    -  // = TITLE
    -  //     This data structure is meant to be used within a method or
    -  //     function...  It performs automatic aquisition and release of
    -  //     a synchronization object.  Moreover, it ensures that the lock
    -  //     is released even if a thread exits via !
    -public:
    -  // = Initialization and termination methods.
    -
    -  ACE_TSS_Guard (ACE_LOCK &lock, int block = 1);
    -  // Implicitly and automatically acquire the thread-specific lock.
    -
    -  ~ACE_TSS_Guard (void);
    -  // Implicitly release the thread-specific lock.
    -
    -  // = Lock accessors.
    -
    -  int acquire (void);
    -  // Explicitly acquire the thread-specific lock.
    -
    -  int tryacquire (void);
    -  // Conditionally acquire the thread-specific lock (i.e., won't
    -  // block).
    -
    -  int release (void);
    -  // Explicitly release the thread-specific lock.
    -
    -  // = Utility methods.
    -  int remove (void);
    -  // Explicitly release the thread-specific lock.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  // ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  ACE_TSS_Guard (void);
    -  // Helper, meant for subclass only.
    -
    -  void init_key (void);
    -  // Initialize the key.
    -
    -  static void cleanup (void *ptr);
    -  // Called when thread exits to clean up the lock.
    -
    -  ACE_thread_key_t key_;
    -  // Thread-specific key...
    -
    -private:
    -  // = Prevent assignment and initialization.
    -  ACE_UNIMPLEMENTED_FUNC (void operator= (const ACE_TSS_Guard &))
    -  ACE_UNIMPLEMENTED_FUNC (ACE_TSS_Guard (const ACE_TSS_Guard &))
    -};
    -
    -template 
    -class ACE_TSS_Write_Guard : public ACE_TSS_Guard
    -{
    -  // = TITLE
    -  //     This class is similar to class ACE_TSS_Guard, though it
    -  //     acquires/releases a write-lock automatically (naturally, the
    -  //     ACE_LOCK it is instantiated with must support the appropriate
    -  //     API).
    -public:
    -  // = Initialization method.
    -
    -  ACE_TSS_Write_Guard (ACE_LOCK &lock, int block = 1);
    -  // Implicitly and automatically acquire the thread-specific write lock.
    -
    -  // = Lock accessors.
    -
    -  int acquire_write (void);
    -  // Explicitly acquire the thread-specific write lock.
    -
    -  int acquire (void);
    -  // Explicitly acquire the thread-specific write lock.
    -
    -  int tryacquire_write (void);
    -  // Conditionally acquire the thread-specific write lock (i.e., won't block).
    -
    -  int tryacquire (void);
    -  // Conditionally acquire the thread-specific write lock (i.e., won't block).
    -
    -  // = Utility methods.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  // ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -};
    -
    -template 
    -class ACE_TSS_Read_Guard : public ACE_TSS_Guard
    -{
    -  // = TITLE
    -  //     This class is similar to class , though it
    -  //     acquires/releases a read lock automatically (naturally, the
    -  //      it is instantiated with must support the
    -  //     appropriate API).
    -public:
    -  // = Initialization method.
    -  ACE_TSS_Read_Guard (ACE_LOCK &lock, int block = 1);
    -  // Implicitly and automatically acquire the thread-specific read lock.
    -
    -  // = Lock accessors.
    -  int acquire_read (void);
    -  // Explicitly acquire the thread-specific read lock.
    -
    -  int acquire (void);
    -  // Explicitly acquire the thread-specific read lock.
    -
    -  int tryacquire_read (void);
    -  // Conditionally acquire the thread-specific read lock (i.e., won't
    -  // block).
    -
    -  int tryacquire (void);
    -  // Conditionally acquire the thread-specific read lock (i.e., won't
    -  // block).
    -
    -  // = Utility methods.
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  // ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -};
    -#endif /* !(defined (ACE_HAS_THREADS) && (defined (ACE_HAS_THREAD_SPECIFIC_STORAGE) || defined (ACE_HAS_TSS_EMULATION))) */
    -
    -#if defined (ACE_HAS_THREADS) /* ACE platform supports some form of threading. */
    -
    -template 
    -class ACE_Condition
    -{
    -  // = TITLE
    -  //     ACE_Condition variable wrapper, which allows threads to block
    -  //     until shared data changes state.
    -  //
    -  // = DESCRIPTION
    -  //     A condition variable enables threads to atomically block and
    -  //     test the condition under the protection of a mutual exclu-
    -  //     sion lock (mutex) until the condition is satisfied.  That is,
    -  //     the mutex must have been held by the thread before calling
    -  //     wait or signal on the condition.  If the condition is false,
    -  //     a thread blocks on a condition variable and atomically
    -  //     releases the mutex that is waiting for the condition to
    -  //     change.  If another thread changes the condition, it may wake
    -  //     up waiting threads by signaling the associated condition
    -  //     variable.  The waiting threads, upon awakening, reacquire the
    -  //     mutex and re-evaluate the condition.
    -  //
    -  //     Note, you can only parameterize  with
    -  //      or .
    -public:
    -  // = Initialiation and termination methods.
    -  ACE_Condition (MUTEX &m, int type = USYNC_THREAD,
    -                 LPCTSTR name = 0, void *arg = 0);
    -  // Initialize the condition variable.
    -
    -  ~ACE_Condition (void);
    -  // Implicitly destroy the condition variable.
    -
    -  // = Lock accessors.
    -  int wait (const ACE_Time_Value *abstime);
    -  // Block on condition, or until absolute time-of-day has passed.  If
    -  // abstime == 0 use "blocking"  semantics.  Else, if 
    -  // != 0 and the call times out before the condition is signaled
    -  //  returns -1 and sets errno to ETIME.
    -
    -  int wait (void);
    -  // Block on condition.
    -
    -  int wait (MUTEX &mutex, const ACE_Time_Value *abstime = 0);
    -  // Block on condition or until absolute time-of-day has passed.  If
    -  // abstime == 0 use "blocking" wait() semantics on the 
    -  // passed as a parameter (this is useful if you need to store the
    -  //  in shared memory).  Else, if  != 0 and the
    -  // call times out before the condition is signaled  returns -1
    -  // and sets errno to ETIME.
    -
    -  int signal (void);
    -  // Signal one waiting thread.
    -
    -  int broadcast (void);
    -  // Signal *all* waiting threads.
    -
    -  // = Utility methods.
    -  int remove (void);
    -  // Explicitly destroy the condition variable.
    -
    -  MUTEX &mutex (void);
    -  // Returns a reference to the underlying mutex_;
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  // ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -#if defined (CHORUS)
    -  ACE_cond_t *process_cond_;
    -  // This condition resides in shared memory.
    -
    -  LPCTSTR condname_;
    -  // Remember the name of the condition if we created it so we can
    -  // unlink it when we go away (only the actor that initialized the
    -  // memory can destroy it).
    -#endif /* CHORUS */
    -
    -  ACE_cond_t cond_;
    -  // Condition variable.
    -
    -  MUTEX &mutex_;
    -  // Reference to mutex lock.
    -
    -private:
    -  // = Prevent assignment and initialization.
    -  ACE_UNIMPLEMENTED_FUNC (void operator= (const ACE_Condition &))
    -  ACE_UNIMPLEMENTED_FUNC (ACE_Condition (const ACE_Condition &))
    -};
    -
    -template 
    -class ACE_Thread_Condition : public ACE_Condition
    -{
    -  // = TITLE
    -  //     ACE_Condition variable wrapper that works within processes.
    -  //
    -  // = DESCRIPTION
    -  //     A condition variable enables threads to atomically block and
    -  //     test the condition under the protection of a mutual exclu-
    -  //     sion lock (mutex) until the condition is satisfied.  That is,
    -  //     the mutex must have been held by the thread before calling
    -  //     wait or signal on the condition.  If the condition is false,
    -  //     a thread blocks on a condition variable and atomically
    -  //     releases the mutex that is waiting for the condition to
    -  //     change.  If another thread changes the condition, it may wake
    -  //     up waiting threads by signaling the associated condition
    -  //     variable.  The waiting threads, upon awakening, reacquire the
    -  //     mutex and re-evaluate the condition.
    -public:
    -  // = Initialization method.
    -  ACE_Thread_Condition (MUTEX &m, LPCTSTR name = 0, void *arg = 0);
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  // ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -};
    -
    -#endif /* ACE_HAS_THREADS */
    -
    -#if defined (ACE_HAS_TEMPLATE_TYPEDEFS)
    -
    -class ACE_Export ACE_NULL_SYNCH
    -{
    -  // = TITLE
    -  //     Implement a do nothing Synchronization wrapper that
    -  //     typedefs the  and  to the Null* versions.
    -public:
    -  typedef ACE_Null_Mutex MUTEX;
    -  typedef ACE_Null_Mutex NULL_MUTEX;
    -  typedef ACE_Null_Mutex PROCESS_MUTEX;
    -  typedef ACE_Null_Mutex RECURSIVE_MUTEX;
    -  typedef ACE_Null_Mutex RW_MUTEX;
    -  typedef ACE_Null_Condition CONDITION;
    -  typedef ACE_Null_Semaphore SEMAPHORE;
    -  typedef ACE_Null_Mutex NULL_SEMAPHORE;
    -};
    -
    -#if defined (ACE_HAS_THREADS)
    -
    -class ACE_Export ACE_MT_SYNCH
    -{
    -  // = TITLE
    -  //     Implement a default thread safe synchronization wrapper that
    -  //     typedefs the  and  to the
    -  //      and  versions.  Note that this
    -  //     should be a template, but SunC++ 4.0.1 complains about
    -  //     this...
    -public:
    -  typedef ACE_Thread_Mutex MUTEX;
    -  typedef ACE_Null_Mutex NULL_MUTEX;
    -  typedef ACE_Process_Mutex PROCESS_MUTEX;
    -  typedef ACE_Recursive_Thread_Mutex RECURSIVE_MUTEX;
    -  typedef ACE_RW_Thread_Mutex RW_MUTEX;
    -  typedef ACE_Condition_Thread_Mutex CONDITION;
    -  typedef ACE_Thread_Semaphore SEMAPHORE;
    -  typedef ACE_Null_Semaphore NULL_SEMAPHORE;
    -};
    -
    -#endif /* ACE_HAS_THREADS */
    -
    -#define ACE_SYNCH_MUTEX ACE_SYNCH::MUTEX
    -#define ACE_SYNCH_NULL_MUTEX ACE_SYNCH::NULL_MUTEX
    -#define ACE_SYNCH_RECURSIVE_MUTEX ACE_SYNCH::RECURSIVE_MUTEX
    -#define ACE_SYNCH_RW_MUTEX ACE_SYNCH::RW_MUTEX
    -#define ACE_SYNCH_CONDITION ACE_SYNCH::CONDITION
    -#define ACE_SYNCH_NULL_SEMAPHORE ACE_SYNCH::NULL_SEMAPHORE
    -#define ACE_SYNCH_SEMAPHORE ACE_SYNCH::SEMAPHORE
    -
    -#else /* !ACE_HAS_TEMPLATE_TYPEDEFS */
    -
    -#if defined (ACE_HAS_OPTIMIZED_MESSAGE_QUEUE)
    -#define ACE_NULL_SYNCH ACE_Null_Mutex, ACE_Null_Condition, ACE_Null_Mutex
    -#define ACE_MT_SYNCH ACE_Thread_Mutex, ACE_Condition_Thread_Mutex, ACE_Thread_Semaphore
    -#else
    -#define ACE_NULL_SYNCH ACE_Null_Mutex, ACE_Null_Condition
    -#define ACE_MT_SYNCH ACE_Thread_Mutex, ACE_Condition_Thread_Mutex
    -#endif /* ACE_HAS_OPTIMIZED_MESSAGE_QUEUE */
    -
    -#if defined (ACE_HAS_THREADS)
    -
    -#define ACE_SYNCH_MUTEX ACE_Thread_Mutex
    -#define ACE_SYNCH_NULL_MUTEX  ACE_Null_Mutex
    -#define ACE_SYNCH_RECURSIVE_MUTEX ACE_Recursive_Thread_Mutex
    -#define ACE_SYNCH_RW_MUTEX ACE_RW_Thread_Mutex
    -#define ACE_SYNCH_CONDITION ACE_Condition_Thread_Mutex
    -#define ACE_SYNCH_SEMAPHORE ACE_Thread_Semaphore
    -#define ACE_SYNCH_NULL_SEMAPHORE  ACE_Null_Semaphore
    -
    -#else /* ACE_HAS_THREADS */
    -
    -#define ACE_SYNCH_MUTEX ACE_Null_Mutex
    -#define ACE_SYNCH_NULL_MUTEX ACE_Null_Mutex
    -#define ACE_SYNCH_RECURSIVE_MUTEX ACE_Null_Mutex
    -#define ACE_SYNCH_RW_MUTEX ACE_Null_Mutex
    -#define ACE_SYNCH_CONDITION ACE_Null_Condition
    -#define ACE_SYNCH_SEMAPHORE ACE_Null_Semaphore
    -#define ACE_SYNCH_NULL_SEMAPHORE ACE_Null_Mutex
    -
    -#endif /* ACE_HAS_THREADS */
    -#endif /* ACE_HAS_TEMPLATE_TYPEDEFS */
    -
    -// These are available on *all* platforms
    -#define ACE_SYNCH_PROCESS_SEMAPHORE ACE_Process_Semaphore
    -#define ACE_SYNCH_PROCESS_MUTEX  ACE_Process_Mutex
    -
    -#if defined (ACE_HAS_THREADS)
    -#define ACE_SYNCH ACE_MT_SYNCH
    -#else /* ACE_HAS_THREADS */
    -#define ACE_SYNCH ACE_NULL_SYNCH
    -#endif /* ACE_HAS_THREADS */
    -
    -#if defined (__ACE_INLINE__)
    -#include "ace/Synch_T.i"
    -// On non-Win32 platforms, this code will be inlined
    -#if !defined (ACE_WIN32)
    -#include "ace/Atomic_Op.i"
    -#endif /* !ACE_WIN32 */
    -#endif /* __ACE_INLINE__ */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
    -#include "ace/Synch_T.cpp"
    -// On Win32 platforms, this code will be included as template source
    -// code and will not be inlined. Therefore, we first turn off
    -// ACE_INLINE, set it to be nothing, include the code, and then turn
    -// ACE_INLINE back to its original setting. All this nonsense is
    -// necessary, since the generic template code that needs to be
    -// specialized cannot be inlined, else the compiler will ignore the
    -// specialization code. Also, the specialization code *must* be
    -// inlined or the compiler will ignore the specializations.
    -#if defined (ACE_WIN32)
    -#undef ACE_INLINE
    -#define ACE_INLINE
    -#include "ace/Atomic_Op.i"
    -#undef ACE_INLINE
    -#if defined (__ACE_INLINE__)
    -#define ACE_INLINE inline
    -#else
    -#define ACE_INLINE
    -#endif /* __ACE_INLINE__ */
    -#endif /* ACE_WIN32 */
    -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
    -
    -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
    -#pragma implementation ("Synch_T.cpp")
    -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
    -
    -#endif /* ACE_SYNCH_T_H */
    diff --git a/ace/Synch_T.i b/ace/Synch_T.i
    deleted file mode 100644
    index 8a7105033cf..00000000000
    --- a/ace/Synch_T.i
    +++ /dev/null
    @@ -1,408 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -#include "ace/Thread.h"
    -
    -template  ACE_INLINE int
    -ACE_Guard::acquire (void)
    -{
    -  return this->owner_ = this->lock_->acquire ();
    -}
    -
    -template  ACE_INLINE int
    -ACE_Guard::tryacquire (void)
    -{
    -  return this->owner_ = this->lock_->tryacquire ();
    -}
    -
    -template  ACE_INLINE int
    -ACE_Guard::release (void)
    -{
    -  if (this->owner_ != -1)
    -    {
    -      this->owner_ = -1;
    -      return this->lock_->release ();
    -    }
    -  else
    -    return 0;
    -}
    -
    -template  ACE_INLINE
    -ACE_Guard::ACE_Guard (ACE_LOCK &l)
    -  : lock_ (&l),
    -    owner_ (0)
    -{
    -  this->acquire ();
    -}
    -
    -template  ACE_INLINE
    -ACE_Guard::ACE_Guard (ACE_LOCK &l, int block)
    -  : lock_ (&l),
    -    owner_ (0)
    -{
    -  if (block)
    -    this->acquire ();
    -  else
    -    this->tryacquire ();
    -}
    -
    -// Implicitly and automatically acquire (or try to acquire) the
    -// lock.
    -
    -template  ACE_INLINE
    -ACE_Guard::~ACE_Guard (void)
    -{
    -  this->release ();
    -}
    -
    -template  ACE_INLINE int
    -ACE_Guard::locked (void)
    -{
    -  return this->owner_ != -1;
    -}
    -
    -template  ACE_INLINE int
    -ACE_Guard::remove (void)
    -{
    -  return this->lock_->remove ();
    -}
    -
    -template  ACE_INLINE
    -ACE_Write_Guard::ACE_Write_Guard (ACE_LOCK &m)
    -  : ACE_Guard (&m)
    -{
    -  this->acquire_write ();
    -}
    -
    -template  ACE_INLINE int
    -ACE_Write_Guard::acquire_write (void)
    -{
    -  return this->owner_ = this->lock_->acquire_write ();
    -}
    -
    -template  ACE_INLINE int
    -ACE_Write_Guard::acquire (void)
    -{
    -  return this->owner_ = this->lock_->acquire_write ();
    -}
    -
    -template  ACE_INLINE int
    -ACE_Write_Guard::tryacquire_write (void)
    -{
    -  return this->owner_ = this->lock_->tryacquire_write ();
    -}
    -
    -template  ACE_INLINE int
    -ACE_Write_Guard::tryacquire (void)
    -{
    -  return this->owner_ = this->lock_->tryacquire_write ();
    -}
    -
    -template  ACE_INLINE
    -ACE_Write_Guard::ACE_Write_Guard (ACE_LOCK &m,
    -                                            int block)
    -  : ACE_Guard (&m)
    -{
    -  if (block)
    -    this->acquire_write ();
    -  else
    -    this->tryacquire_write ();
    -}
    -
    -template  ACE_INLINE int
    -ACE_Read_Guard::acquire_read (void)
    -{
    -  return this->owner_ = this->lock_->acquire_read ();
    -}
    -
    -template  ACE_INLINE int
    -ACE_Read_Guard::acquire (void)
    -{
    -  return this->owner_ = this->lock_->acquire_read ();
    -}
    -
    -template  ACE_INLINE int
    -ACE_Read_Guard::tryacquire_read (void)
    -{
    -  return this->owner_ = this->lock_->tryacquire_read ();
    -}
    -
    -template  ACE_INLINE int
    -ACE_Read_Guard::tryacquire (void)
    -{
    -  return this->owner_ = this->lock_->tryacquire_read ();
    -}
    -
    -template  ACE_INLINE
    -ACE_Read_Guard::ACE_Read_Guard (ACE_LOCK &m)
    -  : ACE_Guard (&m)
    -{
    -  this->acquire_read ();
    -}
    -
    -template  ACE_INLINE
    -ACE_Read_Guard::ACE_Read_Guard (ACE_LOCK &m,
    -                                          int block)
    -  : ACE_Guard (&m)
    -{
    -  if (block)
    -    this->acquire_read ();
    -  else
    -    this->tryacquire_read ();
    -}
    -
    -template  ACE_INLINE
    -ACE_Lock_Adapter::ACE_Lock_Adapter (ACE_LOCKING_MECHANISM &lock)
    -  : lock_ (&lock),
    -    delete_lock_ (0)
    -{
    -}
    -
    -template  ACE_INLINE
    -ACE_Lock_Adapter::~ACE_Lock_Adapter (void)
    -{
    -  if (this->delete_lock_)
    -    delete this->lock_;
    -}
    -
    -// Explicitly destroy the lock.
    -template  ACE_INLINE int
    -ACE_Lock_Adapter::remove (void)
    -{
    -  return this->lock_->remove ();
    -}
    -
    -// Block the thread until the lock is acquired.
    -template  ACE_INLINE int
    -ACE_Lock_Adapter::acquire (void)
    -{
    -  return this->lock_->acquire ();
    -}
    -
    -// Conditionally acquire the lock (i.e., won't block).
    -
    -template  ACE_INLINE int
    -ACE_Lock_Adapter::tryacquire (void)
    -{
    -  return this->lock_->tryacquire ();
    -}
    -
    -// Release the lock.
    -
    -template  ACE_INLINE int
    -ACE_Lock_Adapter::release (void)
    -{
    -  return this->lock_->release ();
    -}
    -
    -// Block until the thread acquires a read lock.  If the locking
    -// mechanism doesn't support read locks then this just calls
    -// .
    -
    -template  ACE_INLINE int
    -ACE_Lock_Adapter::acquire_read (void)
    -{
    -  return this->lock_->acquire_read ();
    -}
    -
    -// Block until the thread acquires a write lock.  If the locking
    -// mechanism doesn't support read locks then this just calls
    -// .
    -
    -template  ACE_INLINE int
    -ACE_Lock_Adapter::acquire_write (void)
    -{
    -  return this->lock_->acquire_write ();
    -}
    -
    -// Conditionally acquire a read lock.  If the locking mechanism
    -// doesn't support read locks then this just calls .
    -
    -template  ACE_INLINE int
    -ACE_Lock_Adapter::tryacquire_read (void)
    -{
    -  return this->lock_->tryacquire_read ();
    -}
    -
    -// Conditionally acquire a write lock.  If the locking mechanism
    -// doesn't support write locks then this just calls .
    -
    -template  ACE_INLINE int
    -ACE_Lock_Adapter::tryacquire_write (void)
    -{
    -  return this->lock_->tryacquire_write ();
    -}
    -
    -template  ACE_INLINE
    -ACE_Reverse_Lock::ACE_Reverse_Lock (ACE_LOCKING_MECHANISM &lock)
    -  : lock_ (lock)
    -{
    -}
    -
    -// Explicitly destroy the lock.
    -template  ACE_INLINE int
    -ACE_Reverse_Lock::remove (void)
    -{
    -  return this->lock_.remove ();
    -}
    -
    -// Release the lock.
    -template  ACE_INLINE int
    -ACE_Reverse_Lock::acquire (void)
    -{
    -  return this->lock_.release ();
    -}
    -
    -// Release the lock.
    -template  ACE_INLINE int
    -ACE_Reverse_Lock::tryacquire (void)
    -{
    -  return this->lock_.tryacquire ();
    -}
    -
    -// Acquire the lock.
    -template  ACE_INLINE int
    -ACE_Reverse_Lock::release (void)
    -{
    -  return this->lock_.acquire ();
    -}
    -
    -// Release the lock.
    -template  ACE_INLINE int
    -ACE_Reverse_Lock::acquire_read (void)
    -{
    -  return this->lock_.acquire_read ();
    -}
    -
    -// Release the lock.
    -template  ACE_INLINE int
    -ACE_Reverse_Lock::acquire_write (void)
    -{
    -  return this->lock_.acquire_write ();
    -}
    -
    -// Release the lock.
    -template  ACE_INLINE int
    -ACE_Reverse_Lock::tryacquire_read (void)
    -{
    -  return this->lock_.tryacquire_read ();
    -}
    -
    -// Release the lock.
    -template  ACE_INLINE int
    -ACE_Reverse_Lock::tryacquire_write (void)
    -{
    -  return this->lock_.tryacquire_write ();
    -}
    -
    -#if defined (ACE_HAS_THREADS)
    -
    -template ACE_INLINE int
    -ACE_Condition::remove (void)
    -{
    -  // ACE_TRACE ("ACE_Condition::remove");
    -
    -  // cond_destroy() is called in a loop if the condition variable is
    -  // BUSY.  This avoids a condition where a condition is signaled and
    -  // because of some timing problem, the thread that is to be signaled
    -  // has called the cond_wait routine after the signal call.  Since
    -  // the condition signal is not queued in any way, deadlock occurs.
    -
    -  int result = 0;
    -
    -#if defined (CHORUS)
    -  // Are we the owner?
    -  if (this->process_cond_ && this->condname_)
    -    {
    -      // Only destroy the condition if we're the ones who initialized
    -      // it.
    -      while ((result = ACE_OS::cond_destroy (this->process_cond_)) == -1
    -             && errno == EBUSY)
    -        {
    -          ACE_OS::cond_broadcast (this->process_cond_);
    -          ACE_OS::thr_yield ();
    -        }
    -      ACE_OS::munmap (this->process_cond_,
    -                      sizeof (ACE_cond_t));
    -      ACE_OS::shm_unlink (this->condname_);
    -      ACE_OS::free (ACE_static_cast (void *,
    -                                     ACE_const_cast (LPTSTR,
    -                                                     this->condname_)));
    -    }
    -  else if (this->process_cond_)
    -    {
    -      ACE_OS::munmap (this->process_cond_,
    -                      sizeof (ACE_cond_t));
    -      result = 0;
    -    }
    -  else
    -#endif /* CHORUS */
    -
    -    while ((result = ACE_OS::cond_destroy (&this->cond_)) == -1
    -           && errno == EBUSY)
    -      {
    -        ACE_OS::cond_broadcast (&this->cond_);
    -        ACE_OS::thr_yield ();
    -      }
    -
    -  return result;
    -}
    -
    -template ACE_INLINE MUTEX &
    -ACE_Condition::mutex (void)
    -{
    -  // ACE_TRACE ("ACE_Condition::mutex");
    -  return this->mutex_;
    -}
    -
    -template  ACE_INLINE int
    -ACE_Condition::signal (void)
    -{
    -// ACE_TRACE ("ACE_Condition::signal");
    -#if defined (CHORUS)
    -  if (this->process_cond_ != 0)
    -    return ACE_OS::cond_signal (this->process_cond_);
    -#endif /* CHORUS */
    -  return ACE_OS::cond_signal (&this->cond_);
    -}
    -
    -template  ACE_INLINE int
    -ACE_Condition::broadcast (void)
    -{
    -// ACE_TRACE ("ACE_Condition::broadcast");
    -#if defined (CHORUS)
    -  if (this->process_cond_ != 0)
    -    return ACE_OS::cond_broadcast (this->process_cond_);
    -#endif /* CHORUS */
    -  return ACE_OS::cond_broadcast (&this->cond_);
    -}
    -
    -#endif /* ACE_HAS_THREADS */
    -
    -#if !(defined (ACE_HAS_THREADS) && (defined (ACE_HAS_THREAD_SPECIFIC_STORAGE) || defined (ACE_HAS_TSS_EMULATION)))
    -template  ACE_INLINE
    -ACE_TSS::ACE_TSS (TYPE *type)
    -  : type_ (type)
    -{
    -}
    -
    -template  ACE_INLINE TYPE *
    -ACE_TSS::ts_object (void) const
    -{
    -  return this->type_;
    -}
    -
    -template  ACE_INLINE TYPE *
    -ACE_TSS::ts_object (TYPE *type)
    -{
    -  this->type_ = type;
    -  return this->type_;
    -}
    -
    -template  ACE_INLINE TYPE *
    -ACE_TSS::ts_get (void) const
    -{
    -  return this->type_;
    -}
    -
    -#endif /* ! (defined (ACE_HAS_THREADS) && (defined (ACE_HAS_THREAD_SPECIFIC_STORAGE) || defined (ACE_HAS_TSS_EMULATION))) */
    diff --git a/ace/System_Time.cpp b/ace/System_Time.cpp
    deleted file mode 100644
    index 833086650cd..00000000000
    --- a/ace/System_Time.cpp
    +++ /dev/null
    @@ -1,110 +0,0 @@
    -// System_Time.cpp
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/System_Time.h"
    -
    -ACE_RCSID(ace, System_Time, "$Id$")
    -
    -ACE_System_Time::ACE_System_Time (LPCTSTR poolname)
    -  : delta_time_ (0)
    -{
    -  ACE_TRACE ("ACE_System_Time::ACE_System_Time");
    -  ACE_NEW (this->shmem_,
    -           ALLOCATOR (poolname));
    -}
    -
    -ACE_System_Time::~ACE_System_Time (void)
    -{
    -  delete this->shmem_;
    -  ACE_TRACE ("ACE_System_Time::~ACE_System_Time");
    -}
    -
    -// Get the local system time.
    -
    -int
    -ACE_System_Time::get_local_system_time (ACE_UINT32 &time_out)
    -{
    -  ACE_TRACE ("ACE_System_Time::get_local_system_time");
    -  time_out = ACE_OS::time (0);
    -  return 0;
    -}
    -
    -int
    -ACE_System_Time::get_local_system_time (ACE_Time_Value &time_out)
    -{
    -  ACE_TRACE ("ACE_System_Time::get_local_system_time");
    -  time_out.sec (ACE_OS::time (0));
    -  return 0;
    -}
    -
    -// Get the system time of the central time server.
    -
    -int
    -ACE_System_Time::get_master_system_time (ACE_UINT32 &time_out)
    -{
    -  ACE_TRACE ("ACE_System_Time::get_master_system_time");
    -
    -  if (this->delta_time_ == 0)
    -    {
    -      // Try to find it
    -      void * temp;
    -      if (this->shmem_->find (ACE_DEFAULT_TIME_SERVER_STR, temp) ==  -1)
    -	{
    -	  // No time entry in shared memory (meaning no Clerk exists)
    -	  // so return the local time of the host.
    -	  return this->get_local_system_time (time_out);
    -	}
    -      else
    -	// Extract the delta time.
    -	this->delta_time_ = (long *) temp;
    -    }
    -
    -  ACE_UINT32 local_time;
    -
    -  // If delta_time is positive, it means that the system clock is
    -  // ahead of our local clock so add delta to the local time to get an
    -  // approximation of the system time. Else if delta time is negative,
    -  // it means that our local clock is ahead of the system clock, so
    -  // return the last local time stored (to avoid time conflicts).
    -  if (*this->delta_time_ >=0 )
    -    {
    -      this->get_local_system_time (local_time);
    -      time_out = local_time + (ACE_UINT32) *this->delta_time_;
    -    }
    -  else
    -    // Return the last local time. Note that this is stored as the
    -    // second field in shared memory.
    -    time_out = *(this->delta_time_ + 1);
    -  return 0;
    -}
    -
    -int
    -ACE_System_Time::get_master_system_time (ACE_Time_Value &time_out)
    -{
    -  ACE_TRACE ("ACE_System_Time::get_master_system_time");
    -  ACE_UINT32 to;
    -  if (this->get_master_system_time (to) == -1)
    -    return -1;
    -  time_out.sec (to);
    -  return 0;
    -}
    -
    -// Synchronize local system time with the central time server using
    -// specified mode (currently unimplemented).
    -
    -int
    -ACE_System_Time::sync_local_system_time (ACE_System_Time::Sync_Mode)
    -{
    -  ACE_TRACE ("ACE_System_Time::sync_local_system_time");
    -  ACE_NOTSUP_RETURN (-1);
    -}
    -
    -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
    -template class ACE_Malloc;
    -template class ACE_Allocator_Adapter >;
    -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
    -#pragma instantiate ACE_Malloc
    -#pragma instantiate ACE_Allocator_Adapter >
    -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
    -
    diff --git a/ace/System_Time.h b/ace/System_Time.h
    deleted file mode 100644
    index 30b3794b98c..00000000000
    --- a/ace/System_Time.h
    +++ /dev/null
    @@ -1,79 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    System_Time.h
    -//
    -// = AUTHOR
    -//    Prashant Jain, Tim H. Harrison and Douglas C. Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_SYSTEM_TIME_H
    -#define ACE_SYSTEM_TIME_H
    -
    -#include "ace/OS.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Memory_Pool.h"
    -#include "ace/Malloc_T.h"
    -
    -class ACE_Export ACE_System_Time
    -{
    -  // = TITLE
    -  //     Defines the timer services of the OS interface to access the
    -  //     system time either on the local host or on the central time
    -  //     server in the network.
    -public:
    -  enum Sync_Mode { Jump, Adjust };
    -  // enumeration types to specify mode of synchronization with master
    -  // clock.  Jump will set local system time directly (thus possibly
    -  // producing time gaps or ambiguous local system times.  Adjust will
    -  // smoothly slow down or speed up the local system clock to reach
    -  // the system time of the master clock.
    -
    -  ACE_System_Time (LPCTSTR poolname = ACE_DEFAULT_BACKING_STORE);
    -  // Default constructor.
    -
    -  ~ACE_System_Time (void);
    -  // Default destructor.
    -
    -  static int get_local_system_time (ACE_UINT32 &time_out);
    -  // Get the local system time, i.e., the value returned by
    -  // .
    -
    -  static int get_local_system_time (ACE_Time_Value &time_out);
    -  // Get the local system time, i.e., the value returned by
    -  // .
    -
    -  int get_master_system_time (ACE_UINT32 &time_out);
    -  // Get the system time of the central time server.
    -
    -  int get_master_system_time (ACE_Time_Value &time_out);
    -  // Get the system time of the central time server.
    -
    -  int sync_local_system_time (ACE_System_Time::Sync_Mode mode);
    -  // synchronize local system time with the central time server using
    -  // specified mode.
    -
    -private:
    -  typedef ACE_Malloc  MALLOC;
    -  typedef ACE_Allocator_Adapter ALLOCATOR;
    -
    -  ALLOCATOR *shmem_;
    -  // Our allocator (used for obtaining system time from shared memory).
    -
    -  long *delta_time_;
    -  // Pointer to delta time kept in shared memory.
    -};
    -
    -#endif /* ACE_SYSTEM_TIME_H */
    diff --git a/ace/TLI.cpp b/ace/TLI.cpp
    deleted file mode 100644
    index 39b17f2a58d..00000000000
    --- a/ace/TLI.cpp
    +++ /dev/null
    @@ -1,190 +0,0 @@
    -// $Id$
    -
    -// Defines the member functions for the base class of the ACE_TLI
    -// abstraction.
    -
    -#define ACE_BUILD_DLL
    -#include "ace/TLI.h"
    -
    -ACE_RCSID(ace, TLI, "$Id$")
    -
    -#if defined (ACE_HAS_TLI)
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_TLI)
    -
    -void
    -ACE_TLI::dump (void) const
    -{
    -  ACE_TRACE ("ACE_TLI::dump");
    -}
    -
    -ACE_TLI::ACE_TLI (void)
    -{
    -  ACE_TRACE ("ACE_TLI::ACE_TLI");
    -#if defined (ACE_HAS_SVR4_TLI)
    -// Solaris 2.4 ACE_TLI option handling is broken.  Thus, we must do
    -// the memory allocation ourselves...  Thanks to John P. Hearn
    -// (jph@ccrl.nj.nec.com) for the help.
    -
    -  this->so_opt_req.opt.maxlen = sizeof (opthdr) + sizeof (long);
    -  ACE_NEW (this->so_opt_req.opt.buf,
    -           char[this->so_opt_req.opt.maxlen]);
    -
    -  this->so_opt_ret.opt.maxlen = sizeof (opthdr) + sizeof (long);
    -  this->so_opt_ret.opt.buf = new char[this->so_opt_ret.opt.maxlen];
    -
    -  if (this->so_opt_ret.opt.buf == 0)
    -    {
    -      delete [] this->so_opt_req.opt.buf;
    -      this->so_opt_req.opt.buf = 0;
    -      return;
    -    }
    -#endif /* ACE_HAS_SVR4_TLI */
    -}
    -
    -ACE_HANDLE
    -ACE_TLI::open (const char device[], int oflag, struct t_info *info)
    -{
    -  ACE_TRACE ("ACE_TLI::open");
    -  if (oflag == 0)
    -    oflag = O_RDWR;
    -  this->set_handle (ACE_OS::t_open ((char *) device, oflag, info));
    -
    -  return this->get_handle ();
    -}
    -
    -ACE_TLI::~ACE_TLI (void)
    -{
    -  ACE_TRACE ("ACE_TLI::~ACE_TLI");
    -#if defined (ACE_HAS_SVR4_TLI)
    -  if (this->so_opt_req.opt.buf)
    -    {
    -      delete [] this->so_opt_req.opt.buf;
    -      delete [] this->so_opt_ret.opt.buf;
    -      this->so_opt_req.opt.buf = 0;
    -      this->so_opt_ret.opt.buf = 0;
    -    }
    -#endif /* ACE_HAS_SVR4_TLI */
    -}
    -
    -ACE_TLI::ACE_TLI (const char device[], int oflag, struct t_info *info)
    -{
    -  ACE_TRACE ("ACE_TLI::ACE_TLI");
    -  if (this->open (device, oflag, info) == -1)
    -    ACE_ERROR ((LM_ERROR,  ASYS_TEXT ("%p\n"),  ASYS_TEXT ("ACE_TLI::ACE_TLI")));
    -}
    -
    -int
    -ACE_TLI::get_local_addr (ACE_Addr &sa) const
    -{
    -  ACE_TRACE ("ACE_TLI::get_local_addr");
    -#if defined (ACE_HAS_SVR4_TLI)
    -  struct netbuf name;
    -
    -  name.maxlen = sa.get_size ();
    -  name.buf    = (char *) sa.get_addr ();
    -
    -  if (ACE_OS::ioctl (this->get_handle (), TI_GETMYNAME, &name) == -1)
    -/*  if (ACE_OS::t_getname (this->get_handle (), &name, LOCALNAME) == -1) */
    -    return -1;
    -  else
    -    return 0;
    -#else /* SunOS4 sucks... */
    -  ACE_UNUSED_ARG (sa);
    -  ACE_NOTSUP_RETURN (-1);
    -#endif /* ACE_HAS_SVR4_TLI */
    -}
    -
    -int
    -ACE_TLI::close (void)
    -{
    -  ACE_TRACE ("ACE_TLI::close");
    -  ACE_HANDLE result = 0;
    -
    -  if (this->get_handle () != ACE_INVALID_HANDLE)
    -    {
    -      result = ACE_OS::t_close (this->get_handle ());
    -      this->set_handle (ACE_INVALID_HANDLE);
    -    }
    -  return result;
    -}
    -
    -int
    -ACE_TLI::set_option (int level, int option, void *optval, int optlen)
    -{
    -  ACE_TRACE ("ACE_TLI::set_option");
    -#if defined (ACE_HAS_SVR4_TLI)
    -  /* Set up options for ACE_TLI */
    -
    -  struct opthdr *opthdr = 0; /* See  for details on this format */
    -
    -  this->so_opt_req.flags = T_NEGOTIATE;
    -  this->so_opt_req.opt.len = sizeof *opthdr + OPTLEN (optlen);
    -
    -  if (this->so_opt_req.opt.len > this->so_opt_req.opt.maxlen)
    -    {
    -#if !defined (ACE_HAS_SET_T_ERRNO)
    -      t_errno = TBUFOVFLW;
    -#else
    -      set_t_errno (TBUFOVFLW);
    -#endif /* ACE_HAS_SET_T_ERRNO */
    -      return -1;
    -    }
    -
    -  opthdr        = (struct opthdr *) this->so_opt_req.opt.buf;
    -  opthdr->level = level;
    -  opthdr->name  = option;
    -  opthdr->len   = OPTLEN (optlen);
    -  ACE_OS::memcpy (OPTVAL (opthdr), optval, optlen);
    -
    -  return ACE_OS::t_optmgmt (this->get_handle (), &this->so_opt_req, &this->so_opt_ret);
    -#else
    -  ACE_UNUSED_ARG (level);
    -  ACE_UNUSED_ARG (option);
    -  ACE_UNUSED_ARG (optval);
    -  ACE_UNUSED_ARG (optlen);
    -  return -1;
    -#endif /* ACE_HAS_SVR4_TLI */
    -}
    -
    -int
    -ACE_TLI::get_option (int level, int option, void *optval, int &optlen)
    -{
    -  ACE_TRACE ("ACE_TLI::get_option");
    -#if defined (ACE_HAS_SVR4_TLI)
    -  struct opthdr *opthdr = 0; /* See  for details on this format */
    -
    -  this->so_opt_req.flags = T_CHECK;
    -  this->so_opt_ret.opt.len = sizeof *opthdr + OPTLEN (optlen);
    -
    -  if (this->so_opt_ret.opt.len > this->so_opt_ret.opt.maxlen)
    -    {
    -#if !defined (ACE_HAS_SET_T_ERRNO)
    -      t_errno = TBUFOVFLW;
    -#else
    -      set_t_errno (TBUFOVFLW);
    -#endif /* ACE_HAS_SET_T_ERRNO */
    -      return -1;
    -    }
    -
    -  opthdr        = (struct opthdr *) this->so_opt_req.opt.buf;
    -  opthdr->level = level;
    -  opthdr->name  = option;
    -  opthdr->len   = OPTLEN (optlen);
    -  if (ACE_OS::t_optmgmt (this->get_handle (), &this->so_opt_req, &this->so_opt_ret) == -1)
    -    return -1;
    -  else
    -    {
    -      ACE_OS::memcpy (optval, OPTVAL (opthdr), optlen);
    -      return 0;
    -    }
    -#else
    -  ACE_UNUSED_ARG (level);
    -  ACE_UNUSED_ARG (option);
    -  ACE_UNUSED_ARG (optval);
    -  ACE_UNUSED_ARG (optlen);
    -  return -1;
    -#endif /* ACE_HAS_SVR4_TLI */
    -}
    -
    -#endif /* ACE_HAS_TLI */
    diff --git a/ace/TLI.h b/ace/TLI.h
    deleted file mode 100644
    index c81a82371ea..00000000000
    --- a/ace/TLI.h
    +++ /dev/null
    @@ -1,103 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    TLI.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_TLI_H
    -#define ACE_TLI_H
    -
    -#include "ace/IPC_SAP.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Addr.h"
    -
    -#if defined (ACE_HAS_TLI)
    -
    -// There's not a universal device name for TLI devices.  If the platform
    -// needs something other than /dev/tcp, it needs to be set up in the config.h
    -// file as ACE_TLI_TCP_DEVICE.
    -#ifndef ACE_TLI_TCP_DEVICE
    -#define ACE_TLI_TCP_DEVICE "/dev/tcp"
    -#endif
    -
    -// There's not a universal device name for XTI/ATM devices.  If the platform
    -// needs something other than /dev/xtisvc0, it needs to be set up in the
    -// config.h file as ACE_XTI_ATM_DEVICE. This may be FORE vendor specific and
    -// there may be no good default.
    -#ifndef ACE_XTI_ATM_DEVICE
    -#define ACE_XTI_ATM_DEVICE "/dev/xtisvc0"
    -#endif
    -
    -class ACE_Export ACE_TLI : public ACE_IPC_SAP
    -{
    -  // = TITLE
    -  //     Defines the member functions for the base class of the
    -  //     ACE_TLI  abstraction.
    -public:
    -  // = Initialization and termination methods.
    -  ACE_HANDLE open (const char device[],
    -                   int oflag = O_RDWR,
    -                   struct t_info *info = 0);
    -  // Initialize a TLI endpoint.
    -
    -  int close (void);
    -  // Close a TLI endpoint and release resources.
    -
    -  int set_option (int level, int option, void *optval, int optlen);
    -  // Set underlying protocol options.
    -
    -  int get_option (int level, int option, void *optval, int &optlen);
    -  // Get underlying protocol options.
    -
    -  // = Calls to underlying TLI operations.
    -  int look (void) const;
    -  int rcvdis (struct t_discon * = 0) const;
    -  int snddis (struct t_call * = 0) const;
    -  int sndrel (void) const;
    -  int rcvrel (void) const;
    -
    -  int get_local_addr (ACE_Addr &) const;
    -  // Return our local endpoint address.
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -protected:
    -  // = Ensure we are an abstract class.
    -  ACE_TLI (void);
    -  // Default constructor.
    -  ~ACE_TLI (void);
    -  // Destructor.
    -
    -  ACE_TLI (const char device[], int oflag = O_RDWR, struct t_info *info = 0);
    -  // Initialize a TLI endpoint.
    -
    -private:
    -#if defined (ACE_HAS_SVR4_TLI)
    -  // Insane TLI option management.
    -  struct t_optmgmt so_opt_req;
    -  struct t_optmgmt so_opt_ret;
    -#endif /* ACE_HAS_SVR4_TLI */
    -};
    -
    -#include "ace/TLI.i"
    -
    -#endif /* ACE_HAS_TLI */
    -#endif /* ACE_TLI_H */
    diff --git a/ace/TLI.i b/ace/TLI.i
    deleted file mode 100644
    index 349f9d1fc74..00000000000
    --- a/ace/TLI.i
    +++ /dev/null
    @@ -1,41 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// TLI.i
    -
    -#include "ace/TLI.h"
    -
    -inline int 
    -ACE_TLI::look (void) const
    -{
    -  ACE_TRACE ("ACE_TLI::look");
    -  return ACE_OS::t_look (this->get_handle ());
    -}
    -
    -inline int 
    -ACE_TLI::rcvdis (struct t_discon *discon) const
    -{
    -  ACE_TRACE ("ACE_TLI::rcvdis");
    -  return ACE_OS::t_rcvdis (this->get_handle (), discon);
    -}
    -
    -inline int 
    -ACE_TLI::snddis (struct t_call *call) const
    -{
    -  ACE_TRACE ("ACE_TLI::snddis");
    -  return ACE_OS::t_snddis (this->get_handle (), call);
    -}
    -
    -inline int 
    -ACE_TLI::rcvrel (void) const
    -{
    -  ACE_TRACE ("ACE_TLI::rcvrel");
    -  return ACE_OS::t_rcvrel (this->get_handle ());
    -}
    -
    -inline int 
    -ACE_TLI::sndrel (void) const
    -{
    -  ACE_TRACE ("ACE_TLI::sndrel");
    -  return ACE_OS::t_sndrel (this->get_handle ());
    -}
    diff --git a/ace/TLI_Acceptor.cpp b/ace/TLI_Acceptor.cpp
    deleted file mode 100644
    index f77851f2097..00000000000
    --- a/ace/TLI_Acceptor.cpp
    +++ /dev/null
    @@ -1,523 +0,0 @@
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/TLI_Acceptor.h"
    -
    -ACE_RCSID(ace, TLI_Acceptor, "$Id$")
    -
    -#if defined (ACE_HAS_TLI)
    -
    -// Put the actual definitions of the ACE_TLI_Request and
    -// ACE_TLI_Request_Queue classes here to hide them from clients...
    -
    -struct ACE_TLI_Request
    -{
    -  struct t_call *callp_;
    -  ACE_HANDLE handle_;
    -  ACE_TLI_Request *next_;
    -};
    -
    -class ACE_TLI_Request_Queue
    -{
    -public:
    -  ACE_TLI_Request_Queue (void);
    -
    -  int open (int fd, int size);
    -  int close (void);
    -
    -  int enqueue (const char device[], int restart, int rwflag);
    -  int dequeue (ACE_TLI_Request *&ptr);
    -  int remove (int sequence_number);
    -
    -  int is_empty (void) const;
    -  int is_full (void) const;
    -
    -  ACE_TLI_Request *alloc (void);
    -  void    free (ACE_TLI_Request *node);
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  int     handle_;
    -  int     size_;
    -  int     current_count_;
    -  ACE_TLI_Request *base_;
    -  ACE_TLI_Request *tail_;
    -  ACE_TLI_Request *free_list_;
    -};
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_TLI_Request_Queue)
    -
    -void
    -ACE_TLI_Request_Queue::dump (void) const
    -{
    -  ACE_TRACE ("ACE_TLI_Request_Queue::dump");
    -}
    -
    -int
    -ACE_TLI_Request_Queue::is_empty (void) const
    -{
    -  ACE_TRACE ("ACE_TLI_Request_Queue::is_empty");
    -  return this->current_count_ == 0;
    -}
    -
    -int
    -ACE_TLI_Request_Queue::is_full (void) const
    -{
    -  ACE_TRACE ("ACE_TLI_Request_Queue::is_full");
    -  return this->current_count_ + 1 == this->size_; // Add 1 for the dummy.
    -}
    -
    -// Add a node to the free list stack.
    -
    -void
    -ACE_TLI_Request_Queue::free (ACE_TLI_Request *node)
    -{
    -  ACE_TRACE ("ACE_TLI_Request_Queue::free");
    -  node->next_ = this->free_list_;
    -  this->free_list_ = node;
    -}
    -
    -// Remove a node from the free list stack.
    -
    -ACE_TLI_Request *
    -ACE_TLI_Request_Queue::alloc (void)
    -{
    -  ACE_TRACE ("ACE_TLI_Request_Queue::alloc");
    -  ACE_TLI_Request *temp = this->free_list_;
    -  this->free_list_ = this->free_list_->next_;
    -  return temp;
    -}
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_TLI_Acceptor)
    -
    -void
    -ACE_TLI_Acceptor::dump (void) const
    -{
    -  ACE_TRACE ("ACE_TLI_Acceptor::dump");
    -}
    -
    -ACE_TLI_Acceptor::ACE_TLI_Acceptor (void)
    -  : queue_ (0)
    -{
    -  ACE_TRACE ("ACE_TLI_Acceptor::ACE_TLI_Acceptor");
    -}
    -
    -int
    -ACE_TLI_Request_Queue::dequeue (ACE_TLI_Request *&ptr)
    -{
    -  ACE_TRACE ("ACE_TLI_Request_Queue::dequeue");
    -  ptr = this->tail_->next_;
    -  this->tail_->next_ = ptr->next_;
    -  this->current_count_--;
    -  return 0;
    -}
    -
    -// This is hideous...
    -
    -static ACE_HANDLE
    -open_new_endpoint (ACE_HANDLE listen_handle,
    -                   const char dev[],
    -                   struct t_call *callp,
    -                   int rwf)
    -{
    -  ACE_TRACE ("open_new_endpoint");
    -#if defined (ACE_PSOS)
    -  ACE_HANDLE fd = ACE_OS::t_open ((char *) dev,
    -                                  S_IRUSR | S_IWUSR,
    -                                  0);
    -#else
    -  ACE_HANDLE fd = ACE_OS::t_open ((char *) dev,
    -                                  O_RDWR,
    -                                  0);
    -#endif /* ACE_PSOS */
    -
    -  if (fd == ACE_INVALID_HANDLE
    -      || ACE_OS::t_bind (fd, 0, 0) == ACE_INVALID_HANDLE)
    -    fd = ACE_INVALID_HANDLE;
    -#if defined (I_PUSH) && !defined (ACE_HAS_FORE_ATM_XTI)
    -  else if (rwf != 0 && ACE_OS::ioctl (fd,
    -                                      I_PUSH,
    -                                      ACE_const_cast (char *, "tirdwr"))
    -                                      == ACE_INVALID_HANDLE)
    -    fd = ACE_INVALID_HANDLE;
    -#endif /* I_PUSH */
    -
    -  if (fd == ACE_INVALID_HANDLE)
    -    ACE_OS::t_snddis (listen_handle,
    -                      callp);
    -  return fd;
    -}
    -
    -// Close down the acceptor and release resources.
    -
    -int
    -ACE_TLI_Request_Queue::close (void)
    -{
    -  ACE_TRACE ("ACE_TLI_Request_Queue::close");
    -  int res = 0;
    -
    -  for (int i = 0; i < this->size_; i++)
    -    {
    -      ACE_TLI_Request &item = this->base_[i];
    -
    -      item.handle_ = ACE_INVALID_HANDLE;
    -      if (ACE_OS::t_free ((char *) item.callp_,
    -                          T_CALL) != 0)
    -        res = ACE_INVALID_HANDLE;
    -    }
    -
    -  delete [] this->base_;
    -  this->base_ = 0;
    -  return res;
    -}
    -
    -ACE_HANDLE
    -ACE_TLI_Request_Queue::open (ACE_HANDLE f, int sz)
    -{
    -  ACE_TRACE ("ACE_TLI_Request_Queue::open");
    -  this->handle_   = f;
    -  this->size_ = sz + 1; // Add one more for the dummy node.
    -
    -  ACE_NEW_RETURN (this->base_,
    -                  ACE_TLI_Request[this->size_],
    -                  ACE_INVALID_HANDLE);
    -
    -  // Initialize the ACE_Queue and the free list.
    -
    -  for (int i = 0; i < this->size_; i++)
    -    {
    -      ACE_TLI_Request *item = &this->base_[i];
    -      this->free (item);
    -
    -      item->handle_ = ACE_INVALID_HANDLE;
    -      item->callp_ = (t_call *) ACE_OS::t_alloc (this->handle_,
    -                                                 T_CALL,
    -                                                 T_ALL);
    -      if (item->callp_ == 0)
    -        return ACE_INVALID_HANDLE;
    -    }
    -
    -  this->tail_ = this->alloc ();
    -  this->tail_->next_ = this->tail_;
    -  return 0;
    -}
    -
    -ACE_TLI_Request_Queue::ACE_TLI_Request_Queue (void)
    -  : size_ (0),
    -    current_count_ (0),
    -    base_ (0),
    -    tail_ (0),
    -    free_list_ (0)
    -{
    -  ACE_TRACE ("ACE_TLI_Request_Queue::ACE_TLI_Request_Queue");
    -}
    -
    -// Listen for a new connection request and allocate appropriate data
    -// structures when one arrives.
    -
    -int
    -ACE_TLI_Request_Queue::enqueue (const char device[],
    -                                      int restart, int rwflag)
    -{
    -  ACE_TRACE ("ACE_TLI_Request_Queue::enqueue");
    -  ACE_TLI_Request *temp = this->alloc ();
    -  ACE_TLI_Request &req  = *this->tail_;
    -  int res;
    -
    -  do
    -    res = ACE_OS::t_listen (this->handle_, req.callp_);
    -  while (res == ACE_INVALID_HANDLE 
    -         && restart 
    -         && t_errno == TSYSERR 
    -         && errno == EINTR);
    -
    -  if (res != ACE_INVALID_HANDLE)
    -    {
    -      req.handle_ = open_new_endpoint (this->handle_,
    -                                       device,
    -                                       req.callp_,
    -                                       rwflag);
    -      if (req.handle_ != ACE_INVALID_HANDLE)
    -        {
    -          temp->next_ = this->tail_->next_;
    -          this->tail_->next_ = temp;
    -          this->tail_ = temp;
    -          this->current_count_++;
    -          return 0;
    -        }
    -    }
    -
    -  // Something must have gone wrong, so free up allocated space.
    -  this->free (temp);
    -  return ACE_INVALID_HANDLE;
    -}
    -
    -// Locate and remove SEQUENCE_NUMBER from the list of pending
    -// connections.
    -
    -int
    -ACE_TLI_Request_Queue::remove (int sequence_number)
    -{
    -  ACE_TRACE ("ACE_TLI_Request_Queue::remove");
    -  ACE_TLI_Request *prev = this->tail_;
    -
    -  // Put the sequence # in the dummy node to simply the search...
    -  prev->callp_->sequence = sequence_number;
    -
    -  ACE_TLI_Request *temp;
    -
    -  for (temp = this->tail_->next_;
    -       temp->callp_->sequence != sequence_number;
    -       temp = temp->next_)
    -    prev = temp;
    -
    -  if (temp == this->tail_)
    -    // Sequence # was not found, since we're back at the dummy node!
    -    return -1;
    -  else
    -    {
    -      prev->next_ = temp->next_;
    -      ACE_OS::t_close (temp->handle_);
    -      this->current_count_--;
    -      this->free (temp);
    -      return 0;
    -    }
    -}
    -
    -ACE_HANDLE
    -ACE_TLI_Acceptor::open (const ACE_Addr &remote_sap,
    -                        int reuse_addr,
    -                        int oflag,
    -                        struct t_info *info,
    -                        int qlen,
    -                        const char dev[])
    -{
    -  ACE_TRACE ("ACE_TLI_Acceptor::open");
    -  int res = 0;
    -  int one = 1;
    -
    -  this->disp_ = 0;
    -
    -  ACE_ALLOCATOR_RETURN (this->device_,
    -                        ACE_OS::strdup (dev),
    -                        ACE_INVALID_HANDLE);
    -  if (this->ACE_TLI::open (dev,
    -                           oflag,
    -                           info) == ACE_INVALID_HANDLE)
    -    res = ACE_INVALID_HANDLE;
    -#if !defined (ACE_HAS_FORE_ATM_XTI)
    -  // Reusing the address causes problems with FORE's API. The issue
    -  // may be that t_optmgmt isn't fully supported by FORE. t_errno is
    -  // TBADOPT after the t_optmgmt call so maybe options are configured
    -  // differently for XTI than for TLI (at least for FORE's
    -  // implementation - XTI is supposed to be a superset of TLI).
    -  else if (reuse_addr
    -           && this->set_option (SOL_SOCKET,
    -                                SO_REUSEADDR,
    -                                &one,
    -                                sizeof one) == ACE_INVALID_HANDLE)
    -    res = ACE_INVALID_HANDLE;
    -#endif /* ACE_HAS_FORE_ATM_XTI */
    -  else if ((this->disp_ =
    -            (struct t_discon *) ACE_OS::t_alloc (this->get_handle (),
    -                                                 T_DIS,
    -                                                 T_ALL)) == 0)
    -    res = ACE_INVALID_HANDLE;
    -  else
    -    {
    -      struct t_bind req;
    -
    -#if defined (ACE_HAS_FORE_ATM_XTI)
    -      // Not sure why but FORE's t_bind call won't work if t_bind.qlen
    -      // != 1 Adjust the backlog accordingly.
    -      this->backlog_ = 1;
    -      req.qlen = 1;
    -#else
    -      this->backlog_ = qlen;
    -      req.qlen = qlen;
    -#endif /* ACE_HAS_FORE_ATM_XTI */
    -      req.addr.maxlen = remote_sap.get_size ();
    -
    -      if (remote_sap == ACE_Addr::sap_any)
    -        // Note that if addr.len == 0 then ACE_TLI selects the port
    -        // number.
    -        req.addr.len = 0;
    -      else
    -        {
    -          req.addr.len = remote_sap.get_size ();
    -          req.addr.buf = (char *) remote_sap.get_addr ();
    -        }
    -
    -      res = ACE_OS::t_bind (this->get_handle (),
    -                            &req,
    -                            0);
    -      if (res != ACE_INVALID_HANDLE)
    -        {
    -          ACE_NEW_RETURN (this->queue_,
    -                          ACE_TLI_Request_Queue,
    -                          -1);
    -          res = this->queue_->open (this->get_handle (),
    -                                    this->backlog_);
    -        }
    -    }
    -  if (res == ACE_INVALID_HANDLE)
    -    this->close ();
    -  return this->get_handle ();
    -}
    -
    -ACE_TLI_Acceptor::ACE_TLI_Acceptor (const ACE_Addr &remote_sap,
    -                                    int reuse_addr,
    -                                    int oflag,
    -                                    struct t_info *info,
    -                                    int back,
    -                                    const char dev[])
    -{
    -  ACE_TRACE ("ACE_TLI_Acceptor::ACE_TLI_Acceptor");
    -  if (this->open (remote_sap,
    -                  reuse_addr,
    -                  oflag,
    -                  info,
    -                  back,
    -                  dev) == ACE_INVALID_HANDLE)
    -    ACE_ERROR ((LM_ERROR,
    -                ASYS_TEXT ("%p\n"),
    -                ASYS_TEXT ("ACE_TLI_Acceptor::ACE_TLI_Acceptor")));
    -}
    -
    -int
    -ACE_TLI_Acceptor::close (void)
    -{
    -  ACE_TRACE ("ACE_TLI_Acceptor::close");
    -  if (this->device_ != 0)
    -    {
    -      if (this->queue_ != 0)
    -        {
    -          this->queue_->close ();
    -          delete this->queue_;
    -        }
    -
    -      ACE_OS::t_free ((char *) this->disp_, T_DIS);
    -      ACE_OS::free (ACE_MALLOC_T (this->device_));
    -      this->disp_ = 0;
    -      this->device_ = 0;
    -      return this->ACE_TLI::close ();
    -    }
    -  return 0;
    -}
    -
    -// Perform the logic required to handle the arrival of asynchronous
    -// events while we are trying to accept a new connection request.
    -
    -int
    -ACE_TLI_Acceptor::handle_async_event (int restart, int rwf)
    -{
    -  ACE_TRACE ("ACE_TLI_Acceptor::handle_async_event");
    -  int event = this->look ();
    -
    -  switch (event)
    -    {
    -    case T_DISCONNECT:
    -      this->rcvdis (this->disp_);
    -      this->queue_->remove (this->disp_->sequence);
    -      break;
    -    case T_LISTEN:
    -      this->queue_->enqueue (this->device_,
    -                             restart,
    -                             rwf);
    -      break;
    -    default:
    -      return -1;
    -    }
    -  return 0;
    -}
    -
    -int
    -ACE_TLI_Acceptor::accept (ACE_TLI_Stream &new_tli_sap,
    -                          ACE_Addr *remote_addr,
    -                          ACE_Time_Value *timeout,
    -                          int restart,
    -                          int reset_new_handle,
    -                          int rwf,
    -                          netbuf *udata,
    -                          netbuf *opt)
    -{
    -  ACE_TRACE ("ACE_TLI_Acceptor::accept");
    -  ACE_UNUSED_ARG (reset_new_handle);
    -
    -  ACE_TLI_Request *req = 0;
    -  int res = 0;
    -
    -  if (timeout != 0
    -      && ACE::handle_timed_accept (this->get_handle (),
    -                                   timeout,
    -                                   restart) == -1)
    -    return -1;
    -  else if (this->queue_->is_empty ())
    -    {
    -      req = this->queue_->alloc ();
    -
    -      do
    -        res = ACE_OS::t_listen (this->get_handle (),
    -                                req->callp_);
    -      while (res == ACE_INVALID_HANDLE
    -             && restart
    -             && errno == EINTR);
    -
    -      if (res != ACE_INVALID_HANDLE)
    -        res = req->handle_ = open_new_endpoint (this->get_handle (),
    -                                                this->device_,
    -                                                req->callp_,
    -                                                rwf);
    -    }
    -  else
    -    res = this->queue_->dequeue (req);
    -
    -  if (udata != 0)
    -    ACE_OS::memcpy ((void *) &req->callp_->udata,
    -                    (void *) udata,
    -                    sizeof *udata);
    -  if (opt != 0)
    -    ACE_OS::memcpy ((void *) &req->callp_->opt,
    -                    (void *) opt,
    -                    sizeof *opt);
    -
    -  while (res != ACE_INVALID_HANDLE)
    -    if ((res = ACE_OS::t_accept (this->get_handle (),
    -                                 req->handle_,
    -                                 req->callp_)) != ACE_INVALID_HANDLE)
    -      break; // Got one!
    -    else if (t_errno == TLOOK)
    -      res = this->handle_async_event (restart, rwf);
    -    else if (restart && t_errno == TSYSERR && errno == EINTR)
    -      res = 0;
    -
    -  if (res == ACE_INVALID_HANDLE)
    -    {
    -      if (errno != EWOULDBLOCK)
    -        {
    -          new_tli_sap.set_handle (ACE_INVALID_HANDLE);
    -          if (req->handle_ != ACE_INVALID_HANDLE)
    -            ACE_OS::t_close (req->handle_);
    -        }
    -    }
    -  else
    -    {
    -      new_tli_sap.set_handle (req->handle_);
    -
    -      if (remote_addr != 0)
    -        remote_addr->set_addr ((void *) req->callp_->addr.buf,
    -                               req->callp_->addr.len);
    -    }
    -
    -  req->handle_ = ACE_INVALID_HANDLE;
    -  this->queue_->free (req);
    -  new_tli_sap.set_rwflag (rwf);
    -  return new_tli_sap.get_handle () == ACE_INVALID_HANDLE ? -1 : 0;
    -}
    -
    -#endif /* ACE_HAS_TLI */
    diff --git a/ace/TLI_Acceptor.h b/ace/TLI_Acceptor.h
    deleted file mode 100644
    index 20ce2575daa..00000000000
    --- a/ace/TLI_Acceptor.h
    +++ /dev/null
    @@ -1,118 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    TLI_Acceptor.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_TLI_ACCEPTOR_H
    -#define ACE_TLI_ACCEPTOR_H
    -
    -#include "ace/TLI.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/Time_Value.h"
    -#include "ace/TLI_Stream.h"
    -
    -#if defined (ACE_HAS_TLI)
    -
    -// Forward reference...
    -class ACE_TLI_Request_Queue;
    -
    -class ACE_Export ACE_TLI_Acceptor : public ACE_TLI
    -{
    -  // = TITLE
    -  //     Defines the member functions for ACE_TLI_Acceptor abstraction.
    -  //
    -  // = DESCRIPTION
    -  //     This class implements the algorithm described in Steve Rago's
    -  //     book on System V UNIX network programming.  It basically
    -  //     makes TLI look like the C++ SOCK_SAP socket wrappers with
    -  //     respect to establishing passive-mode listener endpoints.
    -public:
    -  friend class ACE_Request_Queue;
    -
    -  // = Initialization and termination methods.
    -  ACE_TLI_Acceptor (void);
    -  // Default constructor.
    -
    -  ACE_TLI_Acceptor (const ACE_Addr &remote_sap,
    -                    int reuse_addr = 0,
    -                    int oflag = O_RDWR,
    -                    struct t_info *info = 0,
    -                    int backlog = ACE_DEFAULT_BACKLOG,
    -                    const char device[] = ACE_TLI_TCP_DEVICE);
    -  // Initiate a passive mode socket.
    -
    -  ACE_HANDLE open (const ACE_Addr &remote_sap,
    -                   int reuse_addr = 0,
    -                   int oflag = O_RDWR,
    -                   struct t_info *info = 0,
    -                   int backlog = ACE_DEFAULT_BACKLOG,
    -                   const char device[] = ACE_TLI_TCP_DEVICE);
    -  // Initiate a passive mode socket.
    -
    -  int close (void);
    -  // Close down the acceptor and release resources.
    -
    -  // = Passive connection acceptance method.
    -
    -  int accept (ACE_TLI_Stream &new_tli_sap,
    -              ACE_Addr *remote_addr = 0,
    -              ACE_Time_Value *timeout = 0,
    -              int restart = 1,
    -              int reset_new_handle = 0,
    -              int rwflag = 1,
    -              netbuf *udata = 0,
    -              netbuf *opt = 0);
    -  // Accept a new data transfer connection.  A  of 0 means
    -  // block forever, a  of {0, 0} means poll.   == 1
    -  // means "restart if interrupted."
    -
    -  // = Meta-type info
    -  typedef ACE_INET_Addr PEER_ADDR;
    -  typedef ACE_TLI_Stream PEER_STREAM;
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  const char *device_;
    -  // Network "device" we are using.
    -
    -  int backlog_;
    -  // Number of connections to queue.
    -
    -  int rwflag_;
    -  // Are we using "tirdwr" mod?
    -
    -  int handle_async_event (int restart, int rwflag);
    -  // Handle TLI accept insanity...
    -
    -  ACE_TLI_Request_Queue *queue_;
    -  // Used for queueing up pending requests.
    -
    -  struct t_discon *disp_;
    -  // Used for handling disconnects
    -};
    -
    -#include "ace/TLI_Acceptor.i"
    -
    -#endif /* ACE_HAS_TLI */
    -#endif /* ACE_TLI_ACCEPTOR_H */
    diff --git a/ace/TLI_Acceptor.i b/ace/TLI_Acceptor.i
    deleted file mode 100644
    index b9dbe6a1a1a..00000000000
    --- a/ace/TLI_Acceptor.i
    +++ /dev/null
    @@ -1,5 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// TLI_Acceptor.i
    -
    diff --git a/ace/TLI_Connector.cpp b/ace/TLI_Connector.cpp
    deleted file mode 100644
    index 12323b0fe1d..00000000000
    --- a/ace/TLI_Connector.cpp
    +++ /dev/null
    @@ -1,231 +0,0 @@
    -// TLI_Connector.cpp
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -#include "ace/Handle_Set.h"
    -#include "ace/TLI_Connector.h"
    -
    -ACE_RCSID(ace, TLI_Connector, "$Id$")
    -
    -#if defined (ACE_HAS_TLI)
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_TLI_Connector)
    -
    -void
    -ACE_TLI_Connector::dump (void) const
    -{
    -  ACE_TRACE ("ACE_TLI_Connector::dump");
    -}
    -
    -ACE_TLI_Connector::ACE_TLI_Connector (void)
    -{
    -  ACE_TRACE ("ACE_TLI_Connector::ACE_TLI_Connector");
    -}
    -
    -// Connect the  to the , waiting up to
    -//  amount of time if necessary.  It's amazing how
    -// complicated this is to do in TLI...
    -
    -int
    -ACE_TLI_Connector::connect (ACE_TLI_Stream &new_stream, 
    -			    const ACE_Addr &remote_sap, 
    -			    ACE_Time_Value *timeout,
    -			    const ACE_Addr &local_sap, 
    -			    int reuse_addr,
    -			    int flags,
    -			    int /* perms */,
    -			    const char device[], 
    -			    struct t_info *info, 
    -			    int rwf,
    -			    netbuf *udata,
    -                            netbuf *opt)
    -{
    -  ACE_TRACE ("ACE_TLI_Connector::connect");
    -  int result = 0;
    -
    -  // Only open a new endpoint if we don't already have a valid handle.
    -
    -  if (new_stream.get_handle () == ACE_INVALID_HANDLE)
    -    if (new_stream.open (device, flags, info) == -1)
    -      return -1;
    -
    -  if (local_sap != ACE_Addr::sap_any)
    -    {
    -      // Bind the local endpoint to a specific addr.
    -
    -      struct t_bind *localaddr;
    -
    -      localaddr = (struct t_bind *) 
    -	ACE_OS::t_alloc (new_stream.get_handle (), T_BIND, T_ADDR);
    -
    -      if (localaddr == 0)
    -	result = -1;
    -      else
    -	{
    -	  int one = 1;
    -#if !defined (ACE_HAS_FORE_ATM_XTI)
    -          // Reusing the address causes problems with FORE's API. The
    -          // issue may be that t_optmgmt isn't fully supported by
    -          // FORE. t_errno is TBADOPT after the t_optmgmt call so
    -          // maybe options are configured differently for XTI than for
    -          // TLI (at least for FORE's implementation - XTI is supposed
    -          // to be a superset of TLI).
    -	  if (reuse_addr 
    -              && new_stream.set_option (SOL_SOCKET,
    -                                        SO_REUSEADDR,
    -                                        &one,
    -                                        sizeof one) == -1)
    -	    result = -1;
    -	  else
    -#endif /* ACE_HAS_FORE_ATM_XTI */
    -	    {
    -	      // localaddr->glen = 0;
    -	      //localaddr->addr.maxlen = local_sap.get_size ();
    -	      localaddr->addr.len = local_sap.get_size ();
    -              ACE_OS::memcpy(localaddr->addr.buf,
    -                             local_sap.get_addr (),
    -                             localaddr->addr.len);
    -              //localaddr->addr.buf = (char *) local_sap.get_addr ();
    -
    -	      if (ACE_OS::t_bind (new_stream.get_handle (),
    -                                  localaddr,
    -                                  localaddr) == -1)
    -		result = -1;
    -
    -	      ACE_OS::t_free ((char *) localaddr,
    -                              T_BIND);
    -	    }
    -	}
    -
    -      if (result == -1)
    -	{
    -	  new_stream.close ();
    -	  return -1;
    -	}
    -    }
    -  // Let TLI select the local endpoint addr.
    -  else if (ACE_OS::t_bind (new_stream.get_handle (), 0, 0) == -1)
    -    return -1;
    -
    -  struct t_call *callptr = 0;
    -
    -  callptr = (struct t_call *) 
    -    ACE_OS::t_alloc (new_stream.get_handle (), T_CALL, T_ADDR);
    -
    -  if (callptr == 0)
    -    {
    -      new_stream.close ();
    -      return -1;
    -    }
    -  //callptr->addr.maxlen = remote_sap.get_size ();
    -  callptr->addr.len = remote_sap.get_size ();
    -  ACE_OS::memcpy(callptr->addr.buf,
    -                 remote_sap.get_addr (),
    -                 callptr->addr.len);
    -  //callptr->addr.buf = (char *) remote_sap.get_addr ();
    -
    -  if (udata != 0)
    -    ACE_OS::memcpy ((void *) &callptr->udata, (void *) udata, sizeof *udata);
    -  if (opt != 0)
    -    ACE_OS::memcpy ((void *) &callptr->opt, (void *) opt, sizeof *opt);
    -
    -  // Connect to remote endpoint.
    -#if defined (ACE_HAS_FORE_ATM_XTI)
    -  // FORE's XTI/ATM driver has problems with ioctl/fcntl calls so (at least
    -  // for now) always have blocking calls.
    -  timeout = 0;
    -#endif /* ACE_HAS_FORE_ATM_XTI */
    -
    -  if (timeout != 0)   // Enable non-blocking, if required.
    -    {
    -      if (new_stream.enable (ACE_NONBLOCK) == -1)
    -	result = -1;
    -      
    -      // Do a non-blocking connect.
    -      if (ACE_OS::t_connect (new_stream.get_handle (), callptr, 0) == -1)
    -	{
    -	  result = -1;
    -	  
    -	  // Check to see if we simply haven't connected yet on a
    -	  // non-blocking handle or whether there's really an error.
    -	  if (t_errno == TNODATA) 
    -	    {
    -	      if (timeout->sec () == 0 && timeout->usec () == 0)
    -		errno = EWOULDBLOCK;
    -	      else 
    -		result = this->complete (new_stream, 0, timeout);
    -	    }
    -	  else if (t_errno == TLOOK && new_stream.look () == T_DISCONNECT)
    -	    new_stream.rcvdis ();
    -	}
    -    }
    -  // Do a blocking connect to the server.
    -  else if (ACE_OS::t_connect (new_stream.get_handle (), callptr, 0) == -1)
    -    result = -1;
    -
    -  if (result != -1) 
    -    {
    -      new_stream.set_rwflag (rwf);
    -#if defined (I_PUSH) && !defined (ACE_HAS_FORE_ATM_XTI)
    -      if (new_stream.get_rwflag ())
    -	result = ACE_OS::ioctl (new_stream.get_handle (),
    -                                I_PUSH,
    -                                ACE_const_cast (char *, "tirdwr"));
    -#endif /* I_PUSH */
    -    }
    -  else if (!(errno == EWOULDBLOCK || errno == ETIME))
    -    {
    -      // If things have gone wrong, close down and return an error.
    -      new_stream.close ();
    -      new_stream.set_handle (ACE_INVALID_HANDLE);
    -    }
    -
    -  if (ACE_OS::t_free ((char *) callptr, T_CALL) == -1)
    -    return -1;
    -  return result;
    -}
    -
    -// Try to complete a non-blocking connection.
    -
    -int
    -ACE_TLI_Connector::complete (ACE_TLI_Stream &new_stream, 
    -			     ACE_Addr *remote_sap,
    -			     ACE_Time_Value *tv)
    -{
    -  ACE_TRACE ("ACE_TLI_Connector::complete");
    -  ACE_HANDLE h = ACE::handle_timed_complete (new_stream.get_handle (),
    -                                             tv,
    -                                             1);
    -  if (h == ACE_INVALID_HANDLE)
    -    {
    -      new_stream.close ();
    -      return -1;
    -    }
    -  else 	  // We've successfully connected!
    -    {
    -      if (remote_sap != 0)
    -	{
    -#if defined (ACE_HAS_SVR4_TLI)
    -	  struct netbuf name;
    -
    -	  name.maxlen = remote_sap->get_size ();
    -	  name.buf    = (char *) remote_sap->get_addr ();
    -
    -	  if (ACE_OS::ioctl (new_stream.get_handle (), TI_GETPEERNAME, &name) == -1) 
    -#else /* SunOS4 sucks... */
    -	  if (0)
    -#endif /* ACE_HAS_SVR4_TLI */  
    -	    {
    -	      new_stream.close ();
    -	      return -1;
    -	    }
    -	}
    -
    -      // Start out with non-blocking disabled on the .
    -      new_stream.disable (ACE_NONBLOCK);
    -
    -      return 0;
    -    }
    -}
    -
    -#endif /* ACE_HAS_TLI */
    diff --git a/ace/TLI_Connector.h b/ace/TLI_Connector.h
    deleted file mode 100644
    index 7b4d913f6d7..00000000000
    --- a/ace/TLI_Connector.h
    +++ /dev/null
    @@ -1,115 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    TLI_Connector.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_TLI_CONNECTOR_H
    -#define ACE_TLI_CONNECTOR_H
    -
    -#include "ace/TLI_Stream.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#if defined (ACE_HAS_TLI)
    -
    -class ACE_Export ACE_TLI_Connector 
    -{
    -  // = TITLE
    -  //     Defines an active connection factory for the ACE_TLI C++
    -  //     wrappers.
    -public:
    -  // = Initialization methods.
    -  ACE_TLI_Connector (void);
    -  // Default constructor.
    -
    -  ACE_TLI_Connector (ACE_TLI_Stream &new_stream,
    -                     const ACE_Addr &remote_sap,
    -                     ACE_Time_Value *timeout = 0,
    -                     const ACE_Addr &local_sap = ACE_Addr::sap_any,
    -                     int reuse_addr = 0,
    -                     int flags = O_RDWR,
    -                     int perms = 0,
    -                     const char device[] = ACE_TLI_TCP_DEVICE,
    -                     struct t_info *info = 0,
    -                     int rw_flag = 1,
    -                     struct netbuf *udata = 0,
    -                     struct netbuf *opt = 0);
    -  // Actively connect and produce a  if things go well.
    -  // The  is the address that we are trying to connect
    -  // with.  The  is the amount of time to wait to connect.
    -  // If it's 0 then we block indefinitely.  If *timeout == {0, 0} then
    -  // the connection is done using non-blocking mode.  In this case, if
    -  // the connection can't be made immediately the value of -1 is
    -  // returned with .  If *timeout > {0, 0} then
    -  // this is the amount of time to wait before timing out.  If the
    -  // time expires before the connection is made .  The
    -  //  is the value of local address to bind to.  If it's
    -  // the default value of  then the user is letting
    -  // the OS do the binding.  If  == 1 then the
    -  //  is reused, even if it hasn't been cleanedup yet.
    -
    -  int connect (ACE_TLI_Stream &new_stream,
    -               const ACE_Addr &remote_sap,
    -               ACE_Time_Value *timeout = 0,
    -               const ACE_Addr &local_sap = ACE_Addr::sap_any,
    -               int reuse_addr = 0,
    -               int flags = O_RDWR,
    -               int perms = 0,
    -               const char device[] = ACE_TLI_TCP_DEVICE,
    -               struct t_info *info = 0,
    -               int rw_flag = 1,
    -               struct netbuf *udata = 0,
    -               struct netbuf *opt = 0);
    -  // Actively connect and produce a  if things go well.
    -  // The  is the address that we are trying to connect
    -  // with.  The  is the amount of time to wait to connect.
    -  // If it's 0 then we block indefinitely.  If *timeout == {0, 0} then
    -  // the connection is done using non-blocking mode.  In this case, if
    -  // the connection can't be made immediately the value of -1 is
    -  // returned with .  If *timeout > {0, 0} then
    -  // this is the amount of time to wait before timing out.  If the
    -  // time expires before the connection is made .  The
    -  //  is the value of local address to bind to.  If it's
    -  // the default value of  then the user is letting
    -  // the OS do the binding.  If  == 1 then the
    -  //  is reused, even if it hasn't been cleanedup yet.
    -
    -  int complete (ACE_TLI_Stream &new_stream,
    -                ACE_Addr *remote_sap,
    -                ACE_Time_Value *tv);
    -  // Try to complete a non-blocking connection.
    -  // If connection completion is successful then  contains
    -  // the connected ACE_SOCK_Stream.  If  is non-NULL then it
    -  // will contain the address of the connected peer.
    -
    -  int reset_new_handle (ACE_HANDLE handle);
    -  // Resets any event associations on this handle
    -
    -  // = Meta-type info
    -  typedef ACE_INET_Addr PEER_ADDR;
    -  typedef ACE_TLI_Stream PEER_STREAM;
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -};
    -
    -#include "ace/TLI_Connector.i"
    -
    -#endif /* ACE_HAS_TLI */
    -#endif /* ACE_TLI_CONNECTOR_H */
    diff --git a/ace/TLI_Connector.i b/ace/TLI_Connector.i
    deleted file mode 100644
    index 9e6c3b4749b..00000000000
    --- a/ace/TLI_Connector.i
    +++ /dev/null
    @@ -1,44 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// TLI_Connector.i
    -
    -inline
    -ACE_TLI_Connector::ACE_TLI_Connector (ACE_TLI_Stream &new_stream, 
    -				      const ACE_Addr &remote_sap, 
    -				      ACE_Time_Value *timeout,
    -				      const ACE_Addr &local_sap, 
    -				      int reuse_addr, 
    -				      int flags,
    -				      int perms,
    -				      const char device[], 
    -				      struct t_info *info,
    -				      int rwf,
    -				      netbuf *udata,
    -				      netbuf *opt)
    -{
    -  ACE_TRACE ("ACE_TLI_Connector::ACE_TLI_Connector");
    -  if (this->connect (new_stream,
    -                     remote_sap,
    -                     timeout,
    -                     local_sap,
    -                     reuse_addr, 
    -                     flags,
    -                     perms,
    -                     device, 
    -                     info,
    -                     rwf,
    -                     udata,
    -                     opt) == ACE_INVALID_HANDLE
    -      && timeout != 0 && !(errno == EWOULDBLOCK || errno == ETIME))
    -    ACE_ERROR ((LM_ERROR,  ASYS_TEXT ("%p\n"),  ASYS_TEXT ("ACE_TLI_Stream::ACE_TLI_Stream")));
    -}
    -
    -inline int
    -ACE_TLI_Connector::reset_new_handle (ACE_HANDLE handle)
    -{
    -  ACE_UNUSED_ARG (handle);
    -  // Nothing to do here since the handle is not a socket
    -  return 0;
    -}
    -
    diff --git a/ace/TLI_Stream.cpp b/ace/TLI_Stream.cpp
    deleted file mode 100644
    index 629dd295353..00000000000
    --- a/ace/TLI_Stream.cpp
    +++ /dev/null
    @@ -1,101 +0,0 @@
    -// $Id$
    -
    -/* Defines the member functions for the base class of the ACE_TLI_Stream
    -   abstraction. */
    -
    -#define ACE_BUILD_DLL
    -#include "ace/TLI_Stream.h"
    -
    -ACE_RCSID(ace, TLI_Stream, "$Id$")
    -
    -#if defined (ACE_HAS_TLI)
    -
    -ACE_ALLOC_HOOK_DEFINE(ACE_TLI_Stream)
    -
    -void
    -ACE_TLI_Stream::dump (void) const
    -{
    -  ACE_TRACE ("ACE_TLI_Stream::dump");
    -}
    -
    -ACE_TLI_Stream::ACE_TLI_Stream (void)
    -  : rwflag_ (0)
    -{
    -  ACE_TRACE ("ACE_TLI_Stream::ACE_TLI_Stream");
    -}
    -
    -int
    -ACE_TLI_Stream::get_remote_addr (ACE_Addr &sa) const
    -{
    -  ACE_TRACE ("ACE_TLI_Stream::get_remote_addr");
    -
    -#if defined (ACE_HAS_SVR4_TLI)
    -  struct netbuf name;
    -  name.maxlen = sa.get_size ();
    -  name.buf = (char *) sa.get_addr ();
    -
    -  // if (ACE_OS::t_getname (this->get_handle (), &name, REMOTENAME) == -1)   
    -  if (ACE_OS::ioctl (this->get_handle (),
    -                     TI_GETPEERNAME,
    -                     &name) == -1)
    -    return -1;
    -  else
    -    return 0;
    -#else /* SunOS4 sucks... */
    -  ACE_UNUSED_ARG (sa);
    -  ACE_NOTSUP_RETURN (-1);
    -#endif /* ACE_HAS_SVR4_TLI */
    -}
    -
    -// Send a release and then await the release from the other side.
    -
    -int
    -ACE_TLI_Stream::active_close (void)
    -{
    -  ACE_TRACE ("ACE_TLI_Stream::active_close");
    -  char buf;
    -
    -  if (this->sndrel () == ACE_INVALID_HANDLE)
    -    return ACE_INVALID_HANDLE;
    -  if (this->recv (&buf, sizeof buf) == ACE_INVALID_HANDLE)
    -    {
    -      if (t_errno == TLOOK && this->look () == T_ORDREL)
    -        {
    -          if (this->rcvrel () == ACE_INVALID_HANDLE)
    -            return ACE_INVALID_HANDLE;
    -        }
    -      else
    -        return ACE_INVALID_HANDLE;
    -    }
    -  return this->close ();
    -}
    -
    -// Acknowledge the release from the other side and then send the
    -// release to the other side.
    -
    -int
    -ACE_TLI_Stream::passive_close (void)
    -{
    -  ACE_TRACE ("ACE_TLI_Stream::passive_close");
    -  if (this->rcvrel () == ACE_INVALID_HANDLE)
    -    return ACE_INVALID_HANDLE;
    -  if (this->sndrel () == ACE_INVALID_HANDLE)
    -    return ACE_INVALID_HANDLE;
    -  return this->close ();
    -}
    -
    -int
    -ACE_TLI_Stream::close (void)
    -{
    -  ACE_TRACE ("ACE_TLI_Stream::close");
    -  int fd = this->get_handle ();
    -
    -  this->set_handle (ACE_INVALID_HANDLE);
    -
    -  if (this->rwflag_)
    -    return ACE_OS::close (fd);
    -  else
    -    return ACE_OS::t_close (fd);
    -}
    -
    -#endif /* ACE_HAS_TLI */
    diff --git a/ace/TLI_Stream.h b/ace/TLI_Stream.h
    deleted file mode 100644
    index 54c808e96ac..00000000000
    --- a/ace/TLI_Stream.h
    +++ /dev/null
    @@ -1,101 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    TLI_Stream.h
    -//
    -// = AUTHOR
    -//    Doug Schmidt
    -//
    -// ============================================================================
    -
    -#ifndef ACE_TLI_STREAM_H
    -#define ACE_TLI_STREAM_H
    -
    -#include "ace/TLI.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -#include "ace/INET_Addr.h"
    -
    -#if defined (ACE_HAS_TLI)
    -
    -class ACE_Export ACE_TLI_Stream : public ACE_TLI
    -{
    -  // = TITLE
    -  //     Defines the member functions for ACE_TLI_Stream abstraction.
    -public:
    -  friend class ACE_TLI_Acceptor;
    -  friend class ACE_TLI_Connector;
    -
    -  // = Initialization and termination methods.
    -  ACE_TLI_Stream (void);
    -  // Default constructor.
    -
    -  // = TLI-specific shutdown operations.
    -  int close (void);
    -  // Close down and release resources.
    -
    -  int active_close (void);
    -  // Send a release and then await the release from the other side.
    -
    -  int passive_close (void);
    -  // Acknowledge the release from the other side and then send the
    -  // release to the other side.
    -
    -  int get_remote_addr (ACE_Addr &) const;
    -  // Return address of remotely connected peer.
    -
    -  // =  timod bindings
    -  ssize_t send (const void *buf, size_t n, int flags) const;
    -  // Send an n byte buffer to the connected socket (uses t_snd(3)).
    -  ssize_t recv (void *buf, size_t n, int *flags) const;
    -  // Recv an n byte buffer from the connected socket (uses t_rcv(3)).
    -
    -  ssize_t send_n (const void *buf, size_t n, int flags) const;
    -  // Send exactly n bytes to the connected socket (uses t_snd(3)).
    -  ssize_t recv_n (void *buf, size_t n, int *flags) const;
    -  // Recv exactly n bytes from the connected socket (uses t_rcv(3)).
    -
    -  // = tirdwr bindings
    -  ssize_t send (const void *buf, size_t n) const;
    -  // Send an n byte buffer to the connected socket (uses write(2)).
    -
    -  ssize_t recv (void *buf, size_t n) const;
    -  // Recv an n byte buffer from the connected socket (uses read(2)).
    -
    -  ssize_t send_n (const void *buf, size_t n) const;
    -  // Send n bytes, keep trying until n are sent (uses write(2)).
    -
    -  ssize_t recv_n (void *buf, size_t n) const;
    -  // Recv n bytes, keep trying until n are received (uses read (2)).
    -
    -  // = Meta-type info
    -  typedef ACE_INET_Addr PEER_ADDR;
    -
    -  void dump (void) const;
    -  // Dump the state of an object.
    -
    -  ACE_ALLOC_HOOK_DECLARE;
    -  // Declare the dynamic allocation hooks.
    -
    -private:
    -  int rwflag_;
    -  // Indicates whether the tirdwr module should be pushed
    -
    -  // = Get/set rwflag
    -  int  get_rwflag (void);
    -  void set_rwflag (int);
    -};
    -
    -#include "ace/TLI_Stream.i"
    -
    -#endif /* ACE_HAS_TLI */
    -#endif /* ACE_TLI_STREAM_H */
    diff --git a/ace/TLI_Stream.i b/ace/TLI_Stream.i
    deleted file mode 100644
    index 5139e8fb819..00000000000
    --- a/ace/TLI_Stream.i
    +++ /dev/null
    @@ -1,105 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// TLI_Stream.i
    -
    -#include "ace/TLI_Stream.h"
    -
    -inline ssize_t
    -ACE_TLI_Stream::send (const void *buf, size_t n) const
    -{
    -  ACE_TRACE ("ACE_TLI_Stream::send");
    -  return ACE_OS::write (this->get_handle (), (const char *) buf, n);
    -}
    -
    -inline ssize_t
    -ACE_TLI_Stream::send (const void *buf, size_t n, int flags) const
    -{
    -  ACE_TRACE ("ACE_TLI_Stream::send");
    -  return ACE_OS::t_snd (this->get_handle (), (char *) buf, n, flags);
    -}
    -
    -inline ssize_t
    -ACE_TLI_Stream::recv (void *buf, size_t n) const
    -{
    -  ACE_TRACE ("ACE_TLI_Stream::recv");
    -  return ACE_OS::read (this->get_handle (), (char *) buf, n);
    -}
    -
    -inline ssize_t
    -ACE_TLI_Stream::recv (void *buf, size_t n, int *flags) const
    -{
    -  ACE_TRACE ("ACE_TLI_Stream::recv");
    -  int f = 0;
    -
    -  if (flags == 0)
    -    flags = &f;
    -  return ACE_OS::t_rcv (this->get_handle (), (char *) buf, n, flags);
    -}
    -
    -inline ssize_t
    -ACE_TLI_Stream::send_n (const void *buf, size_t n) const
    -{
    -  ACE_TRACE ("ACE_TLI_Stream::send_n");
    -  return ACE::send_n (this->get_handle (), buf, n);
    -}
    -
    -inline ssize_t
    -ACE_TLI_Stream::send_n (const void *buf, size_t n, int flags) const
    -{
    -  ACE_TRACE ("ACE_TLI_Stream::send_n");
    -  size_t b_sent;
    -  ssize_t b_written = 0;
    -  
    -  for (b_sent = 0; b_sent < n; b_sent += b_written)
    -    if ((b_written = ACE_OS::t_snd (this->get_handle (), 
    -			      (char *) buf + b_sent, 
    -			      n - b_sent, flags)) == -1)
    -      return -1;
    -
    -  return b_sent;
    -}
    -
    -inline ssize_t
    -ACE_TLI_Stream::recv_n (void *buf, size_t n) const
    -{
    -  ACE_TRACE ("ACE_TLI_Stream::recv_n");
    -  return ACE::recv_n (this->get_handle (), buf, n);
    -}
    -
    -inline ssize_t
    -ACE_TLI_Stream::recv_n (void *buf, size_t n, int *flags) const
    -{
    -  ACE_TRACE ("ACE_TLI_Stream::recv_n");
    -  size_t b_read = 0;
    -  ssize_t b_recv = 0;
    -  int f = 0;
    -
    -  if (flags == 0)
    -    flags = &f;
    -
    -  for (b_read = 0; b_read < n; b_read += b_recv)
    -    if ((b_recv = ACE_OS::t_rcv (this->get_handle (), 
    -				 (char *) buf + b_read, 
    -				 n - b_read, flags)) == -1)
    -      return -1;
    -    else if (b_recv == 0)
    -      break;
    -
    -  return b_read;      
    -}
    -
    -inline void
    -ACE_TLI_Stream::set_rwflag (int value)
    -{
    -  ACE_TRACE ("ACE_TLI_Stream::set_rwflag");
    -  this->rwflag_ = value;
    -}
    -
    -inline int
    -ACE_TLI_Stream::get_rwflag (void)
    -{
    -  ACE_TRACE ("ACE_TLI_Stream::get_rwflag");
    -  return this->rwflag_;
    -}
    -
    diff --git a/ace/TP_Reactor.cpp b/ace/TP_Reactor.cpp
    deleted file mode 100644
    index 3eb043e31b0..00000000000
    --- a/ace/TP_Reactor.cpp
    +++ /dev/null
    @@ -1,251 +0,0 @@
    -// $Id$
    -
    -#define ACE_BUILD_DLL
    -
    -#include "ace/TP_Reactor.h"
    -#include "ace/Reactor.h"
    -
    -#if !defined (__ACE_INLINE__)
    -#include "ace/TP_Reactor.i"
    -#endif /* __ACE_INLINE__ */
    -
    -ACE_RCSID(ace, TP_Reactor, "$Id$")
    -
    -ACE_ALLOC_HOOK_DEFINE (ACE_TP_Reactor)
    -
    -ACE_TP_Reactor::ACE_TP_Reactor (ACE_Sig_Handler *sh,
    -                                ACE_Timer_Queue *tq,
    -                                int mask_signals)
    -  : ACE_Select_Reactor (sh, tq, 0, 0, mask_signals)
    -{
    -  ACE_TRACE ("ACE_TP_Reactor::ACE_TP_Reactor");
    -  this->supress_notify_renew (1);
    -}
    -
    -ACE_TP_Reactor::ACE_TP_Reactor (size_t size,
    -                                int rs,
    -                                ACE_Sig_Handler *sh,
    -                                ACE_Timer_Queue *tq,
    -                                int mask_signals)
    -  : ACE_Select_Reactor (size, rs, sh, tq, 0, 0, mask_signals)
    -{
    -  ACE_TRACE ("ACE_TP_Reactor::ACE_TP_Reactor");
    -  this->supress_notify_renew (1);
    -}
    -
    -// Dispatches a single event handler
    -int
    -ACE_TP_Reactor::notify_handle (ACE_EH_Dispatch_Info &dispatch_info)
    -{
    -  ACE_TRACE ("ACE_TP_Reactor::notify_handle");
    -
    -  ACE_HANDLE handle = dispatch_info.handle_;
    -  ACE_Event_Handler *event_handler = dispatch_info.event_handler_;
    -  ACE_Reactor_Mask mask = dispatch_info.mask_;
    -  ACE_EH_PTMF callback = dispatch_info.callback_;
    -
    -  // Check for removed handlers.
    -  if (event_handler == 0)
    -    return -1;
    -
    -  // Upcall
    -  int status = (event_handler->*callback) (handle);
    -
    -  // If negative, remove from Reactor
    -  if (status < 0)
    -    return this->remove_handler (handle, mask);
    -
    -  // If positive, reschedule in Reactor
    -  else if (status > 0)
    -    this->ready_ops (handle,
    -                     mask,
    -                     ACE_Reactor::SET_MASK);
    -  // assert (status >= 0);
    -  // resume in Reactor
    -  return (event_handler != this->notify_handler_ ?
    -          this->resume_handler (handle) : 0);
    -}
    -
    -// Overwrites ACE_Select_Reactor::dispatch_io_set() to *not* dispatch
    -// any event handlers.  The information of one activated event handler
    -// is stored away, so that the event handler can be dispatch later.
    -int
    -ACE_TP_Reactor::dispatch_io_set (int number_of_active_handles,
    -                                 int& number_dispatched,
    -                                 int mask,
    -                                 ACE_Handle_Set& dispatch_mask,
    -                                 ACE_Handle_Set& ready_mask,
    -                                 ACE_EH_PTMF callback)
    -{
    -  ACE_UNUSED_ARG (ready_mask);
    -
    -  ACE_HANDLE handle;
    -
    -  ACE_Handle_Set_Iterator handle_iter (dispatch_mask);
    -
    -  while ((handle = handle_iter ()) != ACE_INVALID_HANDLE
    -         && number_dispatched < number_of_active_handles
    -         && this->state_changed_ == 0)
    -    {
    -      // ACE_DEBUG ((LM_DEBUG,  ASYS_TEXT ("ACE_TP_Reactor::dispatching\n")));
    -      number_dispatched++;
    -
    -      // Remember this info
    -      this->dispatch_info_.set (handle,
    -                                this->handler_rep_.find (handle),
    -                                mask,
    -                                callback);
    -
    -      // One is enough
    -      break;
    -    }
    -
    -  if (number_dispatched > 0 && this->state_changed_)
    -    {
    -      return -1;
    -    }
    -
    -  return 0;
    -}
    -
    -int
    -ACE_TP_Reactor::handle_events (ACE_Time_Value *max_wait_time)
    -{
    -  ACE_TRACE ("ACE_TP_Reactor::handle_events");
    -
    -  // Stash the current time -- the destructor of this object will
    -  // automatically compute how much time elpased since this method was
    -  // called.
    -  ACE_Countdown_Time countdown (max_wait_time);
    -
    -  // The order of these events is very subtle, modify with care.
    -
    -  // Try to grab the lock.  If someone if already there, don't wake
    -  // them up, just queue up in the thread pool.
    -  int result = 0;
    -  ACE_MT (result = this->token_.acquire_read (&ACE_TP_Reactor::no_op_sleep_hook));
    -  switch (result)
    -    {
    -    case 2:
    -      ACE_MT (this->token_.release ());
    -      return 0;
    -    case -1:
    -      return -1;
    -    }
    -
    -  // After acquiring the lock, check if we have been deactivated.
    -  if (this->deactivated_)
    -    {
    -      ACE_MT (this->token_.release ());
    -      return -1;
    -    }
    -
    -  // We got the lock, lets handle some events.  Note: this method will
    -  // *not* dispatch any handlers.  It will dispatch timeouts and
    -  // signals.
    -  result = this->handle_events_i (max_wait_time);
    -  if (result == -1)
    -    {
    -      ACE_MT (this->token_.release ());
    -      return -1;
    -    }
    -
    -  // If there is any event handler that is ready to be dispatched, the
    -  // dispatch information is recorded in this->dispatch_info_.
    -  ACE_EH_Dispatch_Info dispatch_info;
    -  if (this->dispatch_info_.dispatch ())
    -    {
    -      // Copy dispatch_info_ to the stack, as other threads can change
    -      // dispatch_info_ after we release the lock.
    -      dispatch_info = this->dispatch_info_;
    -
    -      // Reset dispatch_info_ so that we don't trip over it again.
    -      this->dispatch_info_.reset ();
    -
    -      if (dispatch_info.event_handler_ == this->notify_handler_)
    -        {
    -          // Make sure we never suspend the notify_handler_ without holding the
    -          // lock.
    -          // @@ Actually, we don't even need to suspend the notify_handler_
    -          //    here.  But let me get it to work first.
    -          int retv = this->notify_handle (dispatch_info);
    -          ACE_MT (this->token_.release ());
    -          return retv;
    -        }
    -      else
    -        // Suspend the handler so that other thread don't start
    -        // dispatching it.
    -        result = this->suspend_i (dispatch_info.handle_);
    -    }
    -
    -  // Release the lock.  Others threads can start waiting.
    -  ACE_MT (this->token_.release ());
    -
    -  // If there was an event handler ready, dispatch it.
    -  if (dispatch_info.dispatch ())
    -    return this->notify_handle (dispatch_info);
    -  else
    -    return result;
    -}
    -
    -int
    -ACE_TP_Reactor::mask_ops (ACE_HANDLE handle,
    -                          ACE_Reactor_Mask mask,
    -                          int ops)
    -{
    -  ACE_TRACE ("ACE_Select_Reactor_T::mask_ops");
    -  ACE_MT (ACE_GUARD_RETURN (ACE_Select_Reactor_Token,
    -          ace_mon, this->token_, -1));
    -
    -  int result = this->bit_ops (handle, mask,
    -                              this->suspend_set_,
    -                              ops);
    -  if (result < 0)
    -    return result;
    -
    -  return this->bit_ops (handle, mask,
    -                        this->wait_set_,
    -                        ops);
    -}
    -
    -void
    -ACE_TP_Reactor::no_op_sleep_hook (void *)
    -{
    -}
    -
    -
    -ACE_EH_Dispatch_Info::ACE_EH_Dispatch_Info (void)
    -{
    -  this->reset ();
    -}
    -
    -void
    -ACE_EH_Dispatch_Info::set (ACE_HANDLE handle,
    -                           ACE_Event_Handler *event_handler,
    -                           ACE_Reactor_Mask mask,
    -                           ACE_EH_PTMF callback)
    -{
    -  this->dispatch_ = 1;
    -
    -  this->handle_ = handle;
    -  this->event_handler_ = event_handler;
    -  this->mask_ = mask;
    -  this->callback_ = callback;
    -}
    -
    -void
    -ACE_EH_Dispatch_Info::reset (void)
    -{
    -  this->dispatch_ = 0;
    -
    -  this->handle_ = ACE_INVALID_HANDLE;
    -  this->event_handler_ = 0;
    -  this->mask_ = ACE_Event_Handler::NULL_MASK;
    -  this->callback_ = 0;
    -}
    -
    -int
    -ACE_EH_Dispatch_Info::dispatch (void) const
    -{
    -  return this->dispatch_;
    -}
    diff --git a/ace/TP_Reactor.h b/ace/TP_Reactor.h
    deleted file mode 100644
    index 6a093d872ce..00000000000
    --- a/ace/TP_Reactor.h
    +++ /dev/null
    @@ -1,205 +0,0 @@
    -/* -*- C++ -*- */
    -// $Id$
    -
    -// ============================================================================
    -//
    -// = LIBRARY
    -//    ace
    -//
    -// = FILENAME
    -//    TP_Reactor.h
    -//
    -// = DESCRIPTION
    -//    TP_Reactor (ala, Thread Pool Reactor) uses the leader-follower
    -//    model to demultiplex requests among a bunch of threads.
    -//    Basically, when using thread pool reactor, one will pre-spawn a
    -//    _fixed_ number of threads.  When you issue the 
    -//    method, one of the thread will become the leader thread and wait
    -//    for an event.  The other threads (followers) will be lined up
    -//    and waiting for their turns to become the leader.  When an event
    -//    occurs, the leader will pick a follower to become the leader and
    -//    go on to handle the event.  The consequence of using TP_Reactor
    -//    is the amortization of the costs used to creating threads.  The
    -//    context switching cost will also reduce.  More over, the total
    -//    resources used by threads are bounded (because there are only so
    -//    many threads.)
    -//
    -// = AUTHOR
    -//    Irfan Pyarali
    -//    Nanbor Wang
    -//
    -// ============================================================================
    -
    -#ifndef ACE_TP_REACTOR_H
    -#define ACE_TP_REACTOR_H
    -
    -#include "ace/Select_Reactor.h"
    -
    -#if !defined (ACE_LACKS_PRAGMA_ONCE)
    -# pragma once
    -#endif /* ACE_LACKS_PRAGMA_ONCE */
    -
    -class ACE_Export ACE_EH_Dispatch_Info
    -{
    -  // = TITLE
    -  //
    -  //     This structure contains information of the activated event
    -  //     handler.
    -public:
    -
    -  ACE_EH_Dispatch_Info (void);
    -
    -  void set (ACE_HANDLE handle,
    -            ACE_Event_Handler *event_handler,
    -            ACE_Reactor_Mask mask,
    -            ACE_EH_PTMF callback);
    -
    -  void reset (void);
    -
    -  int dispatch (void) const;
    -
    -  ACE_HANDLE handle_;
    -  ACE_Event_Handler *event_handler_;
    -  ACE_Reactor_Mask mask_;
    -  ACE_EH_PTMF callback_;
    -
    -  int dispatch_;
    -};
    -
    -class ACE_Export ACE_TP_Reactor : public ACE_Select_Reactor
    -{
    -  // = TITLE
    -  //     Specialization of Select Reactor to support thread-pool based
    -  //     event dispatching.
    -  //
    -  // = DESCRIPTION
    -  //     One of the short comings of the Select_Reactor in ACE is that
    -  //     it did not support a thread pool based event dispatching
    -  //     model, similar to the one in WFMO_Reactor.  In
    -  //     Select_Reactor, only thread can be blocked in 
    -  //     at any given time.
    -  //
    -  //     A new Reactor has been added to ACE that removes this
    -  //     short-coming.  TP_Reactor is a specialization of Select
    -  //     Reactor to support thread-pool based event dispatching. This
    -  //     Reactor takes advantage of the fact that events reported by
    -  //     
    -
    -int
    -ACE_TkReactor::wait_for_multiple_events (ACE_Select_Reactor_Handle_Set &handle_set,
    -					 ACE_Time_Value *max_wait_time)
    -{
    -  ACE_TRACE ("ACE_TkReactor::wait_for_multiple_events");
    -  int nfound;
    -
    -  do
    -    {
    -      max_wait_time = this->timer_queue_->calculate_timeout (max_wait_time);
    -
    -      size_t width = this->handler_rep_.max_handlep1 ();
    -      handle_set.rd_mask_ = this->wait_set_.rd_mask_;
    -      handle_set.wr_mask_ = this->wait_set_.wr_mask_;
    -      handle_set.ex_mask_ = this->wait_set_.ex_mask_;
    -      nfound = TkWaitForMultipleEvents (width,
    -					handle_set,
    -					max_wait_time);
    -
    -    } while (nfound == -1 && this->handle_error () > 0);
    -
    -  if (nfound > 0)
    -    {
    -#if !defined (ACE_WIN32)
    -      handle_set.rd_mask_.sync (this->handler_rep_.max_handlep1 ());
    -      handle_set.wr_mask_.sync (this->handler_rep_.max_handlep1 ());
    -      handle_set.ex_mask_.sync (this->handler_rep_.max_handlep1 ());
    -#endif /* ACE_WIN32 */
    -    }
    -  return nfound; // Timed out or input available
    -}
    -
    -void
    -ACE_TkReactor::TimerCallbackProc (ClientData cd)
    -{
    -  ACE_TkReactor *self = (ACE_TkReactor *) cd;
    -  self->timeout_ = 0;
    -
    -  // Deal with any timer events
    -  ACE_Select_Reactor_Handle_Set handle_set;
    -  self->dispatch (0, handle_set);
    -  self->reset_timeout ();
    -}
    -
    -// This could be made shorter if we know which *kind* of event we were
    -// about to get.  Here we use , just use the Tk mechanism to
    -  // wait for a single event.
    -
    -  // Wait for something to happen.
    -  ::Tcl_DoOneEvent (0);
    -
    -  // Reset the width, in case it changed during the upcalls.
    -  width = this->handler_rep_.max_handlep1 ();
    -
    -  // Now actually read the result needed by the  using
    -  // 
    -
    -int
    -ACE_XtReactor::wait_for_multiple_events (ACE_Select_Reactor_Handle_Set &handle_set,
    -					 ACE_Time_Value *max_wait_time)
    -{
    -  ACE_TRACE ("ACE_XtReactor::wait_for_multiple_events");
    -  int nfound;
    -
    -  do
    -    {
    -      max_wait_time = this->timer_queue_->calculate_timeout (max_wait_time);
    -
    -      size_t width = this->handler_rep_.max_handlep1 ();
    -      handle_set.rd_mask_ = this->wait_set_.rd_mask_;
    -      handle_set.wr_mask_ = this->wait_set_.wr_mask_;
    -      handle_set.ex_mask_ = this->wait_set_.ex_mask_;
    -      nfound = XtWaitForMultipleEvents (width,
    -					handle_set,
    -					max_wait_time);
    -
    -    } while (nfound == -1 && this->handle_error () > 0);
    -
    -  if (nfound > 0)
    -    {
    -#if !defined (ACE_WIN32)
    -      handle_set.rd_mask_.sync (this->handler_rep_.max_handlep1 ());
    -      handle_set.wr_mask_.sync (this->handler_rep_.max_handlep1 ());
    -      handle_set.ex_mask_.sync (this->handler_rep_.max_handlep1 ());
    -#endif /* ACE_WIN32 */
    -    }
    -  return nfound; // Timed out or input available
    -}
    -
    -void
    -ACE_XtReactor::TimerCallbackProc (XtPointer closure, XtIntervalId *id)
    -{
    -  ACE_XtReactor *self = (ACE_XtReactor *) closure;
    -  self->timeout_ = 0;
    -
    -  // Deal with any timer events
    -  ACE_Select_Reactor_Handle_Set handle_set;
    -  self->dispatch (0, handle_set);
    -  self->reset_timeout ();
    -}
    -
    -// This could be made shorter if we know which *kind* of event we were
    -// about to get.  Here we use , just use the Xt mechanism to
    -  // wait for a single event.
    -
    -  // Wait for something to happen.
    -  ::XtAppProcessEvent (this->context_, XtIMAll);
    -
    -  // Reset the width, in case it changed during the upcalls.
    -  width = this->handler_rep_.max_handlep1 ();
    -
    -  // Now actually read the result needed by the  using
    -  // 
    -
    -
    -
    -
    -

    Move Results Directory to:

    - - -
    -EOF - ; - -html_end(); - -# end diff --git a/apps/JAWS/clients/WebSTONE/bin/WebStone-run.pl b/apps/JAWS/clients/WebSTONE/bin/WebStone-run.pl deleted file mode 100755 index 716cebfa602..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/WebStone-run.pl +++ /dev/null @@ -1,37 +0,0 @@ -#!/pkg/gnu/bin//perl5 -# - -$testbed = "conf/testbed"; - -push(@INC, "$wd/bin"); -require('WebStone-common.pl'); - -html_begin("Run"); - -print CLIENT <
    Edit Configuration -
    -EOF - ; - -&show_model(); -print CLIENT "
    ";
    -
    -open(FILEHANDLE, $testbed);
    -while () {
    -    (/^\#/) || print CLIENT $_;
    -}
    -close(FILEHANDLE);
    -
    -print CLIENT <
    -
    -
    - -
    -EOF - ; - -html_end(); - -# end diff --git a/apps/JAWS/clients/WebSTONE/bin/WebStone-setup.pl b/apps/JAWS/clients/WebSTONE/bin/WebStone-setup.pl deleted file mode 100755 index 107e1d94890..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/WebStone-setup.pl +++ /dev/null @@ -1,95 +0,0 @@ -#!/pkg/gnu/bin//perl5 -# - -push(@INC, "$wd/bin"); -require('WebStone-common.pl'); - -@keylist = (); - -html_begin("Setup"); - -show_model(); - -print CLIENT < -EOF - ; - -&gettestbed(); -&getconfig(); - -print CLIENT < -

    - - -


    -
    -

    Choose a Web site model:

    -
    -EOF - ; - -for $key (sort(keys %filelist)) { - print CLIENT "
    $key: $filelist{$key}"; -} - -print CLIENT < - - -EOF - ; - -html_end(); - -# end of main program - -sub gettestbed { - open(TESTBED, "$wd/conf/testbed"); - while () { - if (/^\#|^(\w)*$/) { # do nothing - } - else { - ( $textvalue, $thevalue ) = split( '=', $_ ); - ( $thevalue ) = split( '#', $thevalue); - $testbed{$textvalue} = $thevalue; - push(@keylist, $textvalue); - } - } - close(TESTBED); - - open(HELPFILE, "$wd/doc/testbed.help"); - while () { - ( $key, $textvalue ) = split( ':', $_ ); - $helptext{$key} = $textvalue; - } - close(HELPFILE); - - foreach $key (@keylist) { - print CLIENT "

    $helptext{$key}"; - $thesize = length($testbed{$key}) + 5; - print CLIENT "
    $key \n"; - } -} - -sub getconfig { - opendir(CONF, "$wd/conf") || die "open $wd/conf: $!"; - %filelist = ""; - foreach $file (sort readdir(CONF)) { - if ( $file =~ /^filelist.*/ ) { - $headtext = `head -1 $wd/conf/$file`; - $headtext =~ s/\#//; - ( $headtext ) = split(':', $headtext); - $filelist{$file} = $headtext; - } - } - closedir(CONF); -} - -# end diff --git a/apps/JAWS/clients/WebSTONE/bin/checkfilelist b/apps/JAWS/clients/WebSTONE/bin/checkfilelist deleted file mode 100755 index 4cc2d11c49e..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/checkfilelist +++ /dev/null @@ -1,35 +0,0 @@ -#! /bin/sh - -# -# NAME -# checkfilelist - try retrieving files from server -# -# SYNOPSIS -# checkfilelist servername portno filelist -# -# - -if test "$#" -lt 3 ; then - echo "usage: $0 servername portno filelist" - exit 2 -fi - -HOSTNAME=$1 ; export HOSTNAME -PORTNO=$2 ; export PORTNO -FILELIST=$3 ; export FILELIST - -grep '^/' $FILELIST | cut -f1 | -( -while read URL -do - export URL - echo ">>>>> $URL" - ( - telnet $HOSTNAME $PORTNO << _EOF_ -GET $URL HTTP/1.0 - -_EOF_ - ) 2> /dev/null | head -5 | grep 'HTTP/1.0' - killall telnet -done -) diff --git a/apps/JAWS/clients/WebSTONE/bin/genfiles b/apps/JAWS/clients/WebSTONE/bin/genfiles deleted file mode 100755 index d5f06aee6df..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/genfiles +++ /dev/null @@ -1,41 +0,0 @@ -#! /bin/sh -# - -# get configuration -. $WEBSTONEROOT/conf/testbed - -cat $WEBSTONEROOT/conf/fileset | -nawk ' -($1 ~ /^[0-9][0-9]*[kK][bB]*$/) { - sub(/[kK][bB]*/, "", $1); - cmd = "$WEBSTONEROOT/bin/genrand " $1*1024 " " $2 - print cmd; - system(cmd); - next -} - -($1 ~ /^[0-9][0-9]*[mM][bB]*$/) { - sub(/[kK][bB]*/, "", $1); - cmd = "$WEBSTONEROOT/bin/genrand " $1*1024*1024 " " $2 - print cmd; - system(cmd); - next -} - -($1 ~ /^[0-9][0-9]*$/) { - sub(/[kK][bB]*/, "", $1); - cmd = "$WEBSTONEROOT/bin/genrand " $1 " " $2 - print cmd; - system(cmd); - next -} ' $* - -# copy files -files=`cat $WEBSTONEROOT/conf/fileset | cut -f2 -d' '` -for f in $files -do - $RCP $f $SERVER:$WEBDOCDIR - rm -f $f -done - -#end diff --git a/apps/JAWS/clients/WebSTONE/bin/genfiles-from-filelist.sh b/apps/JAWS/clients/WebSTONE/bin/genfiles-from-filelist.sh deleted file mode 100755 index 1293709238c..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/genfiles-from-filelist.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/sh -# - -# get configuration -[ -n "$WEBSTONEROOT" ] || WEBSTONEROOT=`pwd`/.. -. $WEBSTONEROOT/conf/testbed - -case $# in - 1) - FILELIST=$1 - ;; - *) - FILELIST=$WEBSTONEROOT/conf/filelist - ;; -esac - -TIMESTAMP=`date +"%y%m%d_%H%M"` -mkdir $TMPDIR/webstone-genfiles.$TIMESTAMP -cd $TMPDIR/webstone-genfiles.$TIMESTAMP - -cat $FILELIST | -nawk ' -($3 ~ /^\#[0-9]*/) { - sub(/^\#/, "", $3); - cmd = WEBSTONEROOT "/bin/genrand " $3 " ."$1 - print cmd; - system(cmd); - cmd = RCP " ." $1 " " SERVER ":" WEBDOCDIR - print cmd; - system(cmd); - cmd = "rm -f ." $1 - print cmd; - system(cmd); - next -} -' $* WEBSTONEROOT=$WEBSTONEROOT RCP=$RCP SERVER=$SERVER WEBDOCDIR=$WEBDOCDIR - -cd $TMPDIR -rm -rf $TMPDIR/webstone-genfiles.$TIMESTAMP - -#end diff --git a/apps/JAWS/clients/WebSTONE/bin/gui-configure b/apps/JAWS/clients/WebSTONE/bin/gui-configure deleted file mode 100755 index dcea4e3fe1c..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/gui-configure +++ /dev/null @@ -1,174 +0,0 @@ -#!/bin/sh -- because we're not sure where perl is yet -# - -'true' || eval 'exec perl -S $0 $argv:q'; -eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' -& eval 'exec /usr/local/bin/perl -S $0 $argv:q' - if 0; - -# Usage: [perl] configure [file] -# -# This replaces the program paths (e.g. /bin/awk) with an -# alternate path that is found in the file "file.paths". It also finds -# perl5 and changes the path in all the stand-alone perl programs. -# - -$debug = 0; - -# -# Target shell scripts in question: -@shell_scripts=("conf/paths.pl", "conf/paths.sh"); -@perl5_src = < bin/webstone-gui.pl bin/WebStone-common.pl bin/killbench.pl bin/view-results.pl bin/WebStone-manage.pl bin/move-filelist.pl bin/write-testbed.pl bin/WebStone-run.pl bin/move-runs.pl bin/WebStone-setup.pl bin/runbench.pl >; -@perl_src = < bin/wscollect.pl bin/mine-logs.pl >; -@benchmark_dir_src = < webstone bin/killbench bin/runbench >; - -# all the HTML browsers we know about, IN ORDER OF PREFERENCE! -@all_www= ("netscape", "Mosaic", "xmosaic", "lynx"); - -# -# Potential directories to find commands; first, find the user's path... -$PATH = $ENV{"PATH"}; - -# additional dirs; *COLON* separated! -$other_dirs="/usr/ccs/bin:/bin:/usr/bin:/usr/ucb:/usr/bsd:/usr/ucb/bin:/usr/sbin:/usr/etc:/usr/local/bin:/usr/bin/X11:/usr/X11/bin:/usr/openwin/bin"; - -# -# split into a more reasonable format. Personal aliases come last. -@all_dirs = split(/:/, $other_dirs . ":" . $PATH); - -print "checking to make sure all the target(s) are here...\n"; - -for (@shell_scripts) { - die "ERROR -- $_ not found!\n" unless -f $_; - } - -# find perl -print "Trying to find perl...\n"; -for $dir (@all_dirs) { - # first, find where it might be - next if (! -d $dir); - while (<$dir/perl*>) { - if (-x $_) { - $perl_version=`($_ -v 2> /dev/null) | - awk '/This is perl/ { print $NF }'`; - if ($perl_version) { - $PERL=$_; - $pflag="1"; - last; - } - } - last if $pflag; - } - last if $pflag; - } - -if ($PERL) { - print "\nPerl is in $PERL\n"; - for (@perl_src) { $perl_src .= "$_ "; } - print "\nchanging the source in: $perl_src\n"; - system "$PERL -pi -e \"s@^#!.*/perl.*@#!$PERL@;\" $perl_src"; - - # make sure things are executable... - system("chmod u+x $perl_src"); -} -else -{ - printf "\nSome WebStone functions require Perl\n" unless $PERL; -} -# end if $PERL - -# find perl5 -$pflag = 0; -print "Trying to find perl5...\n"; -for $dir (@all_dirs) { - # first, find where it might be; oftentimes you'll see perl, - # perl4, perl5, etc. in the same dir - next if (! -d $dir); - while (<$dir/perl5* $dir/perl*>) { - if (-x $_) { - $perl_version=`($_ -v 2> /dev/null) | - awk '/This is perl, version 5/ { print $NF }'`; - if ($perl_version) { - $PERL5=$_; - $pflag="1"; - last; - } - } - last if $pflag; - } - last if $pflag; -} - -if ($PERL5) { - print "\nPerl5 is in $PERL5\n"; - - for (@perl5_src) { $perl5_src .= "$_ "; } - print "\nchanging the source in: $perl5_src\n"; - system "$PERL5 -pi -e \"s@^#!.*/perl.*@#!$PERL5@;\" $perl5_src"; - system("chmod u+x $perl5_src"); -} -else -{ - printf "\nThe WebStone GUI requires Perl5\n" unless $PERL5; -} -#end if $PERL5 - -# find the most preferred www viewer first. -for $www (@all_www) { - for $dir (@all_dirs) { - if (!$MOSAIC) { - if (-x "$dir/$www") { - $MOSAIC="$dir/$www"; - next; - } - } - } - } -if ($MOSAIC) { - print "\nHTML/WWW Browser is $MOSAIC\n"; - - $upper{"MOSAIC"} = $MOSAIC; - } -else { print "Cannot find a web browser! WebStone cannot be run except in CLI"; } - -print "\nOk, now doing substitutions on the shell scripts...\n"; -for $shell (@shell_scripts) { - print "Changing paths in $shell...\n"; - die "Can't open $shell\n" unless open(SCRIPT, $shell); - rename($shell, $shell . '.old'); - die "Can't open $shell\n" unless open(OUT, ">$shell"); - - # - # Open up the script, search for lines beginning with - # stuff like "TEST", "AWK", etc. If the file ends in "pl", - # assume it's a perl script and change it accordingly - while (