分享
 
 
 

ACE的源码划分和library subsetting

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

前几篇文章也提到过,ACE的所有源文件和头文件都杂乱堆在了ACE_wrappers/ace目录下。这样的代码组织方式给学习ACE带来了很大的困难,很多朋友在看到ace目录下庞大的代码的时候,几乎就失去了学习ACE的信心^_^。因此,我们有必要对ACE的代码进行重新组织,以降低学习曲线。下面,我将给出我对ACE源码的划分方法。其实,我也是刚学习ACE没有多久,对ACE的了解还甚少,所以,我的源码划方式法不一定十分正确,这里共享出来,仅供大家参考。

其实,在ACE的帮助文档里,ACE-subsets.html和ACE-categories.html,这两个文档对指导ACE的源码划分起到了很大的作用,否则,我刚刚接触ACE,就想对其进行源码划分,是不可能完成的。ACE-subsets.html,这个文档主要介绍了ACE的library subsetting。正常情况下,在编译完ACE后,只会产生一个ACE的库。我们可以根据该文档的介绍,简单的修改一下Makefile,就可以对ACE的库进行子集化,我们可以编译出OS、Thread等这样的子库。ACE-categories.html,这个文档对ACE中的代码进行了一些功能上的分类。具体大家可以详细的参考一下这两个文档,这两个文档对学习ACE还是有一定的帮助的。

在ACE的源代码目录ace下,我将建立很多子目录,来对ACE的代码进行按功能分类:

ACE_OS:该目录里包含的代码是OS的API的wrapper,也就是ACE的OS适配层;

包含代码: 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_Codec:该目录包含的是ACE的各种编码类型的处理代码,目前只包含了BASE64编码的处理;

包含代码:Codecs.cpp Makefile

ACE_Connection:该目录包含的是ACE中的Acceptor-Connector框架代码和异步通讯类代码;

包含代码:Acceptor.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_Demux:该目录包含的是ACE中的Reactor和Proactor框架代码;

包含代码:Dev_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_IPC:该目录包含的是ACE中进程间通讯的一些封装代码:

包含代码:ATM_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_LIB:该目录将包含ACE编译好的各个子库;

ACE_Logging:该目录包含ACE中的日志处理相关代码;

包含代码:Dump.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_Memory:该目录包含了ACE内存处理相关代码;

包含代码:Based_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_Misc:ACE中一些没有明确功能分类的代码,属于杂项;

包含代码:CE_Screen_Output.cpp NT_Service.cpp

Makefile gethrtime.cpp

ACE_Nameservices:该目录包含了ACE中名字服务相关代码;

包含代码: 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_Sockets:该目录包含的是ACE的socket封装代码;

包含代码:Addr.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_Streams:该目录包含了ACE中的Streams和Task框架代码;

包含代码:CDR_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_Svcconf:该目录包含了ACE中的Service Configurator框架代码;

包含代码:DLL.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_Threads:该目录包含了ACE中的线程和同步机制相关代码,例如:thread manager;

包含代码:Activation_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_Timer:该目录包含ACE中和时间相关的代码;

包含代码:Timer_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_Token:Token是ACE中实现的一种同步机制,保证严格的FIFO或LIFO策略来获得锁。ACE通过Token机制实现了分布式同步机制。

包含代码:Local_Tokens.cpp Token_Collection.cpp Token_Request_Reply.cpp

Makefile Token_Invariants.cpp

Remote_Tokens.cpp Token_Manager.cpp

ACE_Utils:ACE中的一些基础数据结构和算法的工具类代码;

包含代码: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

include:该目录又包含子目录ace,也就是说include/ace/目录下,包含了ACE的所有头文件和.i文件,之所以这样组织,是因为ACE中的源 文件和头文件的包含文件的方式为:#include "ace/OS.h",所以采用这种目录结构方式来存放头文件和.i文件。这里,对头文件和.i 文件,没有进一步按照功能划分,就是因为#include "ace/OS.h"这种包含方式,如果头文件和.i文件也按照功能划分,那么代码修改 量相当大;

通过上面给出的目录结构和源文件功能划分及头文件组织方式,相信读者以可以自行对ACE代码进行整理了。在实际整理和编译代码的过程中,需要修改Makefile和ACE头文件中以_T方式为后缀的头文件,例如:Obstack_T.h,需要修改里面模板源文件包含路径。我将在下一篇文章中进行描述。

我再次强调,上面ACE源码划分方式,不一定十分正确^_^,随着我们ACE学习和理解的深入,我们可能会进行更改。其实,在我们整理ACE源文件的时候,我们可以进一步了解ACE的各个源文件大致功能,对我们以后更深入的学习大有裨益。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有