This book presents numerous C++ applications to reinforce the design discussions by showing concrete examples of how to use the ACE frameworks.
Chapter 1. Object-Oriented Frameworks for Network Programming
Section 1.1. An Overview of Object-Oriented Frameworks
Section 1.2. Comparing Software Development and Reuse Techniques
Section 1.3. Applying Frameworks to Network Programming
Section 1.4. A Tour through the ACE Frameworks
Section 1.5. Example: A Networked Logging Service
Section 1.6. Summary
Chapter 2. Service and Configuration Design Dimensions
Section 2.1. Service and Server Design Dimensions
Section 2.2. Configuration Design Dimensions
Section 2.3. Summary
Chapter 3. The ACE Reactor Framework
Section 3.1. Overview
Section 3.2. The ACE_Time_Value Class
Section 3.3. The ACE_Event_Handler Class
Section 3.4. The ACE Timer Queue Classes
Section 3.5. The ACE_Reactor Class
Section 3.6. Summary
Chapter 4. ACE Reactor Implementations
Section 4.1. Overview
Section 4.2. The ACE_Select_Reactor Class
Section 4.3. The ACE_TP_Reactor Class
Section 4.4. The ACE_WFMO_Reactor Class
Section 4.5. Summary
Chapter 5. The ACE Service Configurator Framework
Section 5.1. Overview
Section 5.2. The ACE_Service_Object Class
Section 5.3. The ACE_Service_Repository Classes
Section 5.4. The ACE_Service_Config Class
Section 5.5. Summary
Chapter 6. The ACE Task Framework
Section 6.1. Overview
Section 6.2. The ACE_Message_Queue Class
Section 6.3. The ACE_Task_Class
Section 6.4. Summary
Chapter 7. The ACE Acceptor-Connector Framework
Section 7.1. Overview
Section 7.2. The ACE_Svc_Handler Class
Section 7.3. The ACE_Acceptor Class
Section 7.4. The ACE_Connector Class
Section 7.5. Summary
Chapter 8. The ACE Proactor Framework
Section 8.1. Overview
Section 8.2. The Asynchronous I/O Factory Classes
Section 8.3. The ACE_Handler Class
Section 8.4. The Proactive Acceptor-Connector Classes
Section 8.5. The ACE_Proactor Class
Section 8.6. Summary
Chapter 9. The ACE Streams Framework
Section 9.1. Overview
Section 9.2. The ACE_Module Class
Section 9.3. The ACE_Stream Class
Section 9.4. Summary
Glossary
Bibliography
The chapters in the book are organized as follows:
Chapter 1 introduces the concept of an object-oriented framework and shows how frameworks differ from other reuse techniques, such as class libraries, components, patterns, and model-integrated computing. We then outline the frameworks in the ACE toolkit that are covered in subsequent chapters.
Chapter 2 completes the domain analysis begun in C++NPv1, which covered the communication protocols and mechanisms, and the concurrency architectures used by networked applications. The focus in this book is on the service and configuration design dimensions that address key networked application properties, such as duration and structure, how networked services are identified, and the time at which they are bound together to form complete applications.
Chapter 3 describes the design and use of the ACE Reactor framework, which implements the Reactor pattern [POSA2] to allow event-driven applications to demultiplex and dispatch service requests that are delivered to an application from one or more clients.
Chapter 4 then describes the design and use of the most common implementations of the ACE_Reactor interface, which support a wide range of OS event demultiplexing mechanisms, including select(), WaitForMultipleObjects(), XtAppMainLoop(), and /dev/poll.
Chapter 5 describes the design and use of the ACE Service Configurator framework. This framework implements the Component Configurator pattern [POSA2] to allow an application to link/unlink its component service implementations at run time without having to modify, recompile, or relink the application statically.
Chapter 6 describes the design and effective use of the ACE Task framework. This framework can be used to implement key concurrency patterns, such as Active Object and Half-Sync/Half-Async [POSA2].
Chapter 7 describes the design and effective use of the ACE Acceptor-Connector framework. This framework implements the Acceptor-Connector pattern [POSA2] to decouple the connection and initialization of cooperating peer services in a networked system from the processing they perform once connected and initialized.
Chapter 8 describes the design and use of the ACE Proactor framework. This framework implements the Proactor and Acceptor-Connector patterns [POSA2] to allow event-driven applications to efficiently demultiplex and dispatch service requests triggered by the completion of asynchronously initiated operations.
Chapter 9 describes the design and use of the ACE Streams framework. This framework implements the Pipes and Filters pattern [POSA1] to provide a structure for systems that process streams of data.
The book concludes with a glossary of technical terms, a list of references for further study, and a general subject index.
The chapters are organized to build upon each other and to minimize forward references. We therefore recommend that you read the chapters in order.