The first few articles also mentioned that all the source files and headers of ACE are mixed in the ACE_WrapPers / ACE directory. Such code organizations have brought great difficulties to learning ACE. Many friends have lost their confidence in learning ACE when they see a huge code in the ACE directory. Therefore, we need to reorganize the code of the ACE to reduce the learning curve. Below, I will give me a division of the ACE source code. In fact, I just learned ACE for how long, I have little understanding of ACE, so my source code method is not necessarily correct, here is shared, only for your reference.
In fact, in the help documentation of the ACE, Ace-subsets.html and Ace-categories.html, these two documents have played a lot of role in guiding the source code of the ACE, otherwise, I just contacted the ACE, I want to carry it. Source code division is impossible to complete. Ace-subsets.html, this document mainly introduces the Library substeting of ACE. Under normal circumstances, only one ACE library is generated after compiling the ACE. According to this document, we can simply modify the Makefile, you can submit the ACE library, we can compile the Sublood such as Os, Thread and other. ACE-CATGORIES.HTML, this document has some functional categories to the code in the ACE. For details, you can refer to these two documents, and these two documents have a certain help to learn ACE.
Under the Source Catalog ACE of the ACE, I will establish a lot of subdirectory to classify the code of the ACE:
ACE_OS: The code included in this directory is the Wrapper of the OS, which is an OS adaptation layer of the ACE. 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: This directory contains the processing code for the various encoding types of the ACE, which currently contains the Base64 encoding process; include code: codecs.cpp makefile
ACE_Connection: the directory is included in ACE Acceptor-Connector frame codes and asynchronous communications; contains the code: 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.cppACE_Demux: this directory contains the ACE Reactor and the skeleton code Proactor; contains the code: 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: This directory contains the package code is a number of inter-process communication in ACE: contains the code: 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.cppACE_LIB: This directory will contain the ACE respective sub-compiled library;
ACE_Logging: This directory contains the log processing ACE relevant code; Code comprising: 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 This directory contains relevant code processing memory; contains the code: 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.CPPACE_MISC: ACE Some of the code that does not have clear function classification, belongs to miscellaneous (including code: CE_SCREEN_OUTPUT.CPP NT_SERVICE.CPPPPPUT.CPP NT_SERVICE.CPP MAKEFILE GETHRTIME.CPP
ACE_Nameservices: This directory contains the names of ACE in service-related codes; contains the code: 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: The directory contains the code for the package socket of ACE; contains the code: 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: This directory contains the code frame and Task Streams of ACE; contains code: 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.cppACE_Svcconf: this directory contains the code Service Configurator framework of ACE; contains code: 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: This directory contains the code thread and related synchronization mechanisms of ACE, for example: thread manager; contains code: 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 This directory contains code and time-dependent; the code comprising: 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.cppace_token: TOKEN is a synchronization mechanism implemented in ACE to ensure a strict FIFO or LIFO policy to get the lock. ACE implements a distributed synchronization mechanism through the Token mechanism. Contains code: local_tokens.cpp token_collection.cpp token_request_reply.cpp makefile token_invariants.cpp remote_tokens.cpp token_manager.cpp
ACE_UTILS: Some of the basic data structures and algorithms in ACE; include code:
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: This directory contains subdirectory ACE, that is, in the include / ACE / directory, all of the header files and .i files of the ACE, the reason why you organize because of the source files and header files in the ACE The way is: #include "ace / os.h", so this directory structure is used to store the head file and .i file. Here, the header file and .i file are not further divided according to the functional division, because #include "ace / os.h" contains this configuration, if the header file and .i file are divided according to the function, the code modification is quite large; By the directory structure and source file function division and the header file organization, it is believed that the reader can organize the ACE code. During actual finishing and compiling code, you need to modify the header files in the Makefile and ACE header files as the suffix, for example: Obstack_t.h, you need to modify the inside template source file containing the path. I will describe in the next article.
I emphasized again that the ACE source code is divided into the way, not necessarily correct. ^ _ ^, With our ACE learning and understanding, we may make changes. In fact, when we organize the ACE source file, we can learn more about the various source files of ACE, which will be greatly beneficial to us later.