ACE  6.3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Macros
Framework_Component.h File Reference
#include "ace/os_include/os_signal.h"
#include "ace/Thread_Mutex.h"
#include "ace/Copy_Disabled.h"
#include "ace/Synch_Traits.h"
#include "ace/Framework_Component.inl"
#include "ace/Framework_Component_T.h"

Classes

class  ACE_Framework_Component
 Base class that defines a uniform interface for all managed framework components. More...
 
class  ACE_Framework_Repository
 Contains all framework components used by an application. More...
 

Macros

#define ACE_DEFAULT_FRAMEWORK_REPOSITORY_SIZE   1024
 

Detailed Description

Id:
Framework_Component.h 92208 2010-10-13 06:20:39Z johnnyw

A prototype mechanism that allows framework components, singletons such as ACE_Reactor, ACE_Proactor, etc, to be registered with a central repository managed by the ACE_Object_Manager or ACE_Service_Config that will handle destruction.

This technique obviates changing ACE_Object_Manager and ACE_Service_Config everytime a new framework is added. Which also means that unused framework components don't need to linked into the final application which is important for applications with stringent footprint requirements.

Framework components need only provide a static method, close_singleton() and add the ACE_REGISTER_FRAMEWORK_COMPONENT macro call to their instance() methods in order to participate. Components that don't have a close_singleton() method can also participate via template specialization of ACE_Framework_Component_T.

This design uses the External Polymorphism pattern to avoid having to derive all framework components from a common base class that has virtual methods (this is crucial to avoid unnecessary overhead), and is based on the dump debugging implementation found in <ace/Dump.h>.

Author
Don Hinton dhint.nosp@m.on@i.nosp@m.eee.o.nosp@m.rg.

Macro Definition Documentation

#define ACE_DEFAULT_FRAMEWORK_REPOSITORY_SIZE   1024