??xml version="1.0" encoding="utf-8" standalone="yes"?>
其实Q在ACE的帮助文里Q?A class=keyword >ACE-subsets.html?A class=keyword >ACE-categories.htmlQ这两个文档Ҏ?A class=keyword >ACE?A class=keyword >源码划分起到了很大的作用Q否则,我刚刚接?A class=keyword >ACEQ就惛_其进?A class=keyword >源码划分Q是不可能完成的?A class=keyword >ACE-subsets.htmlQ这个文主要介l了ACE?A class=keyword >library subsetting。正常情况下Q在~译?A class=keyword >ACE后,只会产生一?A class=keyword >ACE的库。我们可以根据该文的介l,单的修改一下MakefileQ就可以?A class=keyword >ACE的库q行子集化,我们可以~译出OS、Thread{这L子库?A class=keyword >ACE-categories.htmlQ这个文档对ACE中的代码q行了一些功能上的分cR具体大家可以详l的参考一下这两个文档Q这两个文对学?A class=keyword >ACEq是有一定的帮助的?/P>
?A class=keyword >ACE的源代码目录ace下,我将建立很多子目录,来对ACE的代码进行按功能分类Q?/P>
ACE_OSQ该目录里包含的代码是OS的API的wrapperQ也是ACE的OS适配层;
包含代码Q?nbsp;ARGV.cpp OS_Memory.cpp
Argv_Type_Converter.cpp OS_QoS.cpp
Base_Thread_Adapter.cpp OS_String.cpp
Basic_Types.cpp OS_TLI.cpp
Copy_Disabled.cpp OS_Thread_Adapter.cpp
Env_Value_T.cpp Sched_Params.cpp
Handle_Set.cpp Template_Instantiations.cpp
Makefile Thread_Hook.cpp
OS.cpp Time_Value.cpp
OS_Dirent.cpp
OS_Errno.cpp
OS_Log_Msg_Attributes.cpp
ACE_CodecQ该目录包含的是ACE的各U编码类型的处理代码Q目前只包含了BASE64~码的处理;
包含代码QCodecs.cpp Makefile
ACE_ConnectionQ该目录包含的是ACE中的Acceptor-Connector框架代码和异步通讯cM码;
包含代码QAcceptor.cpp Connector.cpp
Asynch_Acceptor.cpp Makefile
Asynch_Connector.cpp POSIX_Asynch_IO.cpp
Asynch_IO.cpp Strategies_T.cpp
Asynch_IO_Impl.cpp Svc_Handler.cpp
Asynch_Pseudo_Task.cpp WIN32_Asynch_IO.cpp
Cached_Connect_Strategy_T.cpp
Caching_Strategies_T.cpp
ACE_DemuxQ该目录包含的是ACE中的Reactor和Proactor框架代码Q?BR> 包含代码QDev_Poll_Reactor.cpp Priority_Reactor.cpp TP_Reactor.cpp Event_Handler.cpp Proactor.cpp TkReactor.cpp
Event_Handler_T.cpp QtReactor.cpp WFMO_Reactor.cpp
FlReactor.cpp Reactor.cpp WIN32_Proactor.cpp
Makefile SUN_Proactor.cpp XtReactor.cpp
Msg_WFMO_Reactor.cpp Select_Reactor.cpp
POSIX_CB_Proactor.cpp Select_Reactor_Base.cpp
POSIX_Proactor.cpp Select_Reactor_T.cpp
ACE_IPCQ该目录包含的是ACE中进E间通讯的一些封装代码:
包含代码QATM_Acceptor.cpp Makefile
ATM_Addr.cpp Pipe.cpp
ATM_Connector.cpp SPIPE.cpp
ATM_Params.cpp SPIPE_Acceptor.cpp
ATM_QoS.cpp SPIPE_Addr.cpp
ATM_Stream.cpp SPIPE_Connector.cpp
DEV.cpp SPIPE_Stream.cpp
DEV_Addr.cpp SV_Message.cpp
DEV_Connector.cpp SV_Message_Queue.cpp
DEV_IO.cpp SV_Semaphore_Complex.cpp
FIFO.cpp SV_Semaphore_Simple.cpp
FIFO_Recv.cpp SV_Shared_Memory.cpp
FIFO_Recv_Msg.cpp Signal.cpp
FIFO_Send.cpp TLI.cpp
FIFO_Send_Msg.cpp TLI_Acceptor.cpp
FILE.cpp TLI_Connector.cpp
FILE_Addr.cpp TLI_Stream.cpp
FILE_Connector.cpp TTY_IO.cpp
FILE_IO.cpp Typed_SV_Message.cpp
IOStream.cpp Typed_SV_Message_Queue.cpp
IOStream_T.cpp UNIX_Addr.cpp
IO_SAP.cpp UPIPE_Acceptor.cpp
MEM_Acceptor.cpp UPIPE_Connector.cpp
MEM_Addr.cpp UPIPE_Stream.cpp
MEM_Connector.cpp XTI_ATM_Mcast.cpp
MEM_IO.cpp
MEM_SAP.cpp
MEM_Stream.cpp
ACE_LIBQ该目录包?A class=keyword >ACE~译好的各个子库Q?/P>
ACE_LoggingQ该目录包含ACE中的日志处理相关代码Q?BR> 包含代码QDump.cpp Log_Msg_UNIX_Syslog.cpp
Dump_T.cpp Log_Record.cpp
Log_Msg.cpp Logging_Strategy.cpp
Log_Msg_Backend.cpp Makefile
Log_Msg_Callback.cpp Trace.cpp
Log_Msg_IPC.cpp
Log_Msg_NT_Event_Log.cpp
ACE_MemoryQ该目录包含?A class=keyword >ACE内存处理相关代码Q?BR> 包含代码QBased_Pointer_Repository.cpp Obstack.cpp
Based_Pointer_T.cpp Obstack_T.cpp
Makefile PI_Malloc.cpp
Malloc.cpp Read_Buffer.cpp
Malloc_Allocator.cpp Shared_Memory.cpp
Malloc_Instantiations.cpp Shared_Memory_MM.cpp
Malloc_T.cpp Shared_Memory_SV.cpp
Mem_Map.cpp
Memory_Pool.cpp
Obchunk.cpp
ACE_MiscQ?A class=keyword >ACE中一些没有明功能分cȝ代码Q属于杂;
包含代码QCE_Screen_Output.cpp NT_Service.cpp
Makefile gethrtime.cpp
ACE_NameservicesQ该目录包含?A class=keyword >ACE中名字服务相关代码;
包含代码Q?Name_Space.cpp
Local_Name_Space.cpp Naming_Context.cpp
Local_Name_Space_T.cpp Registry_Name_Space.cpp
Makefile Remote_Name_Space.cpp
Name_Proxy.cpp
Name_Request_Reply.cpp
ACE_SocketsQ该目录包含的是ACE的socket装代码Q?BR> 包含代码QAddr.cpp SOCK_CODgram.cpp
INET_Addr.cpp SOCK_Connector.cpp
IPC_SAP.cpp SOCK_Dgram.cpp
LOCK_SOCK_Acceptor.cpp SOCK_Dgram_Bcast.cpp
LSOCK.cpp SOCK_Dgram_Mcast.cpp
LSOCK_Acceptor.cpp SOCK_IO.cpp
LSOCK_CODgram.cpp SOCK_SEQPACK_Acceptor.cpp
LSOCK_Connector.cpp SOCK_SEQPACK_Association.cpp
LSOCK_Dgram.cpp SOCK_SEQPACK_Connector.cpp
LSOCK_Stream.cpp SOCK_Stream.cpp
Makefile Sock_Connect.cpp
Multihomed_INET_Addr.cpp
SOCK.cpp
SOCK_Acceptor.cpp
ACE_StreamsQ该目录包含?A class=keyword >ACE中的Streams和Task框架代码Q?BR> 包含代码QCDR_Base.cpp Module.cpp
CDR_Stream.cpp Multiplexor.cpp
Codeset_IBM1047.cpp Reactor_Notification_Strategy.cpp
Codeset_Registry.cpp Stream.cpp
Codeset_Registry_db.cpp Stream_Modules.cpp
IO_Cntl_Msg.cpp Task.cpp
Makefile Task_T.cpp
Message_Queue.cpp
Message_Queue_T.cpp
ACE_SvcconfQ该目录包含?A class=keyword >ACE中的Service Configurator框架代码Q?BR> 包含代码QDLL.cpp Service_Types.cpp
DLL_Manager.cpp Shared_Object.cpp
Dynamic_Service.cpp Svc_Conf.l
Dynamic_Service_Base.cpp Svc_Conf.y
Makefile Svc_Conf_Lexer_Guard.cpp
Parse_Node.cpp Svc_Conf_l.cpp
Service_Config.cpp Svc_Conf_y.cpp
Service_Manager.cpp XML_Svc_Conf.cpp
Service_Object.cpp
Service_Repository.cpp
Service_Templates.cpp
ACE_ThreadsQ该目录包含?A class=keyword >ACE中的U程和同步机制相关代码,例如Qthread manager;
包含代码QActivation_Queue.cpp Process_Manager.cpp Thread.cpp
Atomic_Op.cpp Process_Mutex.cpp Thread_Adapter.cpp
Atomic_Op_T.cpp Process_Semaphore.cpp Thread_Control.cpp
File_Lock.cpp RW_Process_Mutex.cpp Thread_Exit.cpp
Future.cpp Synch.cpp Thread_Manager.cpp
Future_Set.cpp Synch_Options.cpp Token.cpp
Makefile Synch_T.cpp
Process.cpp Test_and_Set.cpp
ACE_TimerQ该目录包含ACE中和旉相关的代码;
包含代码QTimer_Heap.cpp
Basic_Stats.cpp Timer_Heap_T.cpp
High_Res_Timer.cpp Timer_List.cpp
Makefile Timer_List_T.cpp
Profile_Timer.cpp Timer_Queue.cpp
System_Time.cpp Timer_Queue_Adapters.cpp
Time_Request_Reply.cpp Timer_Queue_T.cpp
Timeprobe.cpp Timer_Wheel.cpp
Timeprobe_T.cpp Timer_Wheel_T.cpp
Timer_Hash.cpp
Timer_Hash_T.cpp
ACE_TokenQToken?A class=keyword >ACE中实现的一U同步机Ӟ保证严格的FIFO或LIFO{略来获得锁?A class=keyword >ACE通过Token机制实现了分布式同步机制?BR> 包含代码QLocal_Tokens.cpp Token_Collection.cpp Token_Request_Reply.cpp
Makefile Token_Invariants.cpp
Remote_Tokens.cpp Token_Manager.cpp
ACE_UtilsQ?A class=keyword >ACE中的一些基数据l构和算法的工具cM码;
包含代码Q?A class=keyword >ACE.cpp Init_ACE.cpp
Active_Map_Manager.cpp Intrusive_List.cpp
Active_Map_Manager_T.cpp Intrusive_List_Node.cpp
Arg_Shifter.cpp Lib_Find.cpp
Array_Base.cpp Makefile
Auto_IncDec_T.cpp Managed_Object.cpp
Auto_Ptr.cpp Map.cpp
Cache_Map_Manager_T.cpp Map_Manager.cpp
Caching_Utility_T.cpp Map_T.cpp
Capabilities.cpp Message_Block.cpp
Cleanup_Strategies_T.cpp Message_Block_T.cpp
Configuration.cpp Method_Request.cpp
Configuration_Import_Export.cpp Node.cpp
Connection_Recycling_Strategy.cpp Notification_Strategy.cpp
Containers.cpp Object_Manager.cpp
Containers_T.cpp Pair.cpp
Date_Time.cpp Pair_T.cpp
Dirent.cpp RB_Tree.cpp
Dirent_Selector.cpp Recyclable.cpp
Dynamic.cpp Refcountable.cpp
Filecache.cpp Registry.cpp
Flag_Manip.cpp SString.cpp
Framework_Component.cpp Sample_History.cpp
Framework_Component_T.cpp Singleton.cpp
Free_List.cpp Stats.cpp
Functor.cpp String_Base.cpp
Functor_T.cpp String_Base_Const.cpp
Get_Opt.cpp Swap.cpp
Handle_Ops.cpp Unbounded_Queue.cpp
Hash_Cache_Map_Manager_T.cpp Unbounded_Set.cpp
Hash_Map_Manager.cpp Unbounded_Set_Ex.cpp
Hash_Map_Manager_T.cpp Vector_T.cpp
Hash_Map_With_Allocator_T.cpp
Hashable.cpp
includeQ该目录又包含子目录aceQ也是说include/ace/目录下,包含?A class=keyword >ACE的所有头文g?i文gQ之所以这Ll,是因?A class=keyword ace/OS.h"Q所以采用这U目录结构方式来存放头文件和.i文g。这里,对头文g?i 文gQ没有进一步按照功能划分,是因ؓ#include "ace/OS.h"q种包含方式Q如果头文g?i文g也按照功能划分,那么代码修改 量相当大Q?BR>
通过上面l出的目录结构和源文件功能划分及头文件组l方式,怿读者以可以自行?A class=keyword >ACE代码q行整理了。在实际整理和编译代码的q程中,需要修改Makefile?A class=keyword >ACE头文件中以_T方式为后~的头文gQ例如:Obstack_T.hQ需要修攚w面模板源文g包含路径。我在下一文章中q行描述?/P>
我再ơ强调,上面ACE源码划分方式Q不一定十分正^_^Q随着我们ACE学习和理解的深入Q我们可能会q行更改。其实,在我们整?A class=keyword >ACE源文件的时候,我们可以q一步了?A class=keyword >ACE的各个源文g大致功能Q对我们以后更深入的学习大有裨益?/P>