FREE::ControllerCentral Class Reference
[Processing engine (API classes)]

Creates and manages instances of GenericComponentController. More...

#include <freControllerCentral.h>

List of all members.

Public Types

typedef std::vector
< ControllerInfo * > 
ControllerListType
typedef
ControllerInfo::LibraryHandleType 
LibraryHandleType
typedef std::vector
< LibraryHandleType
LibraryHandleListType
typedef std::vector
< CallbackCtrlEventBase::Pointer
CtrlCallbackListType
typedef std::vector
< ProgressCtrlEventBase::Pointer
CtrlProgressListType
typedef ControllerCentral Self

Public Member Functions

 ControllerCentral ()
 ~ControllerCentral ()

Static Public Member Functions

static void ReHash ()
static void RegisterController (GenericComponentController *pController, const LibraryHandleType &handle, const std::string &sLibraryFile)
static void RegisterController (GenericComponentController *pController)
static void UnRegisterController (GenericComponentController *pController)
static void UnRegisterAllControllers ()
static void UnRegisterCallbackEventList ()
static void UnRegisterProgressEventList ()
static
GenericComponentController
GetController (const std::string &sControllerName)
static ControllerInfoGetControllerInfo (const std::string &sControllerName)
static
GenericComponentController
GetResponsibleController (const GenericComponentType *pComponent)
static ControllerListType GetControllers ()
static void SetOnControlEvent (ProgressEventBase *pOnControl)
static void SetOnBuildEvent (ProgressEventBase *pOnBuild)
static void AddOnProgressEvent (ProgressCtrlEventBase *pOnProgress)
static void RemoveOnProgressEvent (ProgressCtrlEventBase *pOnProgress)
static void ClearProgressEventList ()
static void AddOnCallbackEvent (CallbackCtrlEventBase *pOnCallback)
static void RemoveOnCallbackEvent (CallbackCtrlEventBase *pOnCallback)
static void ClearCallbackList ()
static void TriggerControllerProgressEvent (const IDPath &senderID, const ProgressCtrlEventBase::StatusID status, const std::string &sComment, SessionComponentCache *pSender, long threadID)
static bool TriggerControllerCallback (const IDPath &senderID, CallbackCtrlEventBase::CallbackType callbackID, void *pData, SessionComponentCache *pSender, long threadID)
static bool TriggerControlEvent (const int iStatusID, const std::string &sComment, void *pSender=0, long threadID=0)
static bool TriggerBuildEvent (const int iStatusID, const std::string &sComment, void *pSender=0, long threadID=0)
static void LinkControllerCentralAsDedicated (ControllerListType *pDedicatedControllerList, LibraryHandleListType *pDedicatedLibraryHandles, ProgressEventBase *pfnOnControl, ProgressEventBase *pfnOnBuild, CtrlCallbackListType *pCallbackList, CtrlProgressListType *pProgressList, itk::MutexLock *pGlobalCallbackMutex, itk::MutexLock *pGlobalProgressMutex)

Static Private Member Functions

static void Initialize ()
static void RegisterDefaults ()
static void LoadDynamicControllers ()
static void LoadLibrariesInPath (const char *)

Static Private Attributes

static
ControllerListType
m_RegisteredControllers = NULL
static
LibraryHandleListType
m_LibraryHandles = NULL
static
CtrlCallbackListType
m_CtrlCallbacks = NULL
static
CtrlProgressListType
m_CtrlProgress = NULL
static
ProgressEventBase::Pointer 
m_fnOnControl = NULL
static
ProgressEventBase::Pointer 
m_fnOnBuild = NULL
static
itk::MutexLock::Pointer 
m_CallbackMutex = itk::MutexLock::New()
static
itk::MutexLock::Pointer 
m_ProgressMutex = itk::MutexLock::New()
static itk::MutexLock * m_GlobalCallbackMutex = 0
static itk::MutexLock * m_GlobalProgressMutex = 0
static bool m_bControllersAreExternal = false

Friends

class CleanUpControllerCentral


Detailed Description

Creates and manages instances of GenericComponentController.

ControllerCentral is used to create and manage control elements (ComponentControllerBase or derivates) for a setup component. The class owns a static method Initialize() (called while construction), this method registers all default controller and searches in the defined paths (environment variable FREE_AUTOLOAD_PATH) for dlls with the symbol freeController. When the symbol is found, it returns a pointer to an instance of a ComponentController (implemented in the dll) is passed and registered at the central. FREE_AUTOLOAD_PATH is an environment variable, which contains a semicolon separated list of paths.

Definition at line 87 of file freControllerCentral.h.


Member Typedef Documentation

typedef std::vector<ControllerInfo*> FREE::ControllerCentral::ControllerListType

Definition at line 90 of file freControllerCentral.h.

typedef ControllerInfo::LibraryHandleType FREE::ControllerCentral::LibraryHandleType

Definition at line 91 of file freControllerCentral.h.

typedef std::vector<LibraryHandleType> FREE::ControllerCentral::LibraryHandleListType

Definition at line 92 of file freControllerCentral.h.

typedef std::vector<CallbackCtrlEventBase::Pointer> FREE::ControllerCentral::CtrlCallbackListType

Definition at line 93 of file freControllerCentral.h.

typedef std::vector<ProgressCtrlEventBase::Pointer> FREE::ControllerCentral::CtrlProgressListType

Definition at line 94 of file freControllerCentral.h.

typedef ControllerCentral FREE::ControllerCentral::Self

Standard class typedefs.

Definition at line 97 of file freControllerCentral.h.


Constructor & Destructor Documentation

FREE::ControllerCentral::ControllerCentral (  ) 

initialize class members

Definition at line 436 of file freControllerCentral.cxx.

References Initialize().

Here is the call graph for this function:

FREE::ControllerCentral::InitializeFREE::ControllerCentral::LoadDynamicControllersFREE::ControllerCentral::RegisterDefaultsFREE::GetGeneralFREEPathFREE::ControllerCentral::LoadLibrariesInPathFREE::LogFileController::AddEntryFREE::CreateFullPathFREE::ControllerCentral::GetControllerFREE::NameIsSharedLibraryFREE::ControllerCentral::RegisterControllerFREE::ControllerCentral::TriggerControlEventFREE::ControllerInfo::GetControllerFREE::ControllerCentral::GetControllerInfoFREE::ComponentControllerInterface::ControllerID

FREE::ControllerCentral::~ControllerCentral (  ) 

Unload the library and free the path string

Definition at line 446 of file freControllerCentral.cxx.


Member Function Documentation

void FREE::ControllerCentral::ReHash (  )  [static]

Re-check the FREE_AUTOLOAD_PATH for new factory libraries. This calls UnRegisterAll before re-loading.

Recheck the FREE_AUTOLOAD_PATH for new libraries

Definition at line 406 of file freControllerCentral.cxx.

References Initialize(), m_bControllersAreExternal, m_CallbackMutex, m_CtrlCallbacks, m_CtrlProgress, m_GlobalCallbackMutex, m_GlobalProgressMutex, m_ProgressMutex, and UnRegisterAllControllers().

Here is the call graph for this function:

FREE::ControllerCentral::InitializeFREE::ControllerCentral::UnRegisterAllControllersFREE::ControllerCentral::LoadDynamicControllersFREE::ControllerCentral::RegisterDefaultsFREE::GetGeneralFREEPathFREE::ControllerCentral::LoadLibrariesInPathFREE::LogFileController::AddEntryFREE::CreateFullPathFREE::ControllerCentral::GetControllerFREE::NameIsSharedLibraryFREE::ControllerCentral::RegisterControllerFREE::ControllerCentral::TriggerControlEventFREE::ControllerInfo::GetControllerFREE::ControllerCentral::GetControllerInfoFREE::ComponentControllerInterface::ControllerIDFREE::ControllerInfo::GetControllerIDFREE::ControllerInfo::GetLibraryHandleFREE::ControllerInfo::IsOwnedByLibrary

void FREE::ControllerCentral::RegisterController ( GenericComponentController pController,
const LibraryHandleType handle,
const std::string &  sLibraryFile 
) [static]

Register a controller.

Parameters:
[in] pController Pointer to the new controller.
[in] handle Handle to the dynamic library the controller comes from.
[in] sLibraryFile Full path to the dll the controller comes from.
Remarks:
Use other version of this method if you want to register a controller that was created in the same DLL/program.

Definition at line 452 of file freControllerCentral.cxx.

References FREE::LogFileController::AddEntry(), FREE::ComponentControllerInterface::ControllerID(), GetController(), Initialize(), FREE::logException, m_RegisteredControllers, and TriggerControlEvent().

Referenced by LoadLibrariesInPath(), FREE::TransformationCtrlrs::RegisterAllControllers(), FREE::SetupOptimizationCtrlrs::RegisterAllControllers(), FREE::RegistrationCtrlrs::RegisterAllControllers(), FREE::PointSupportedMetricCtrlrs::RegisterAllControllers(), FREE::MetricCtrlrs::RegisterAllControllers(), FREE::MediaCtrlrs::RegisterAllControllers(), FREE::ITKFilterCtrlrs::RegisterAllControllers(), FREE::InterpolatorCtrlrs::RegisterAllControllers(), FREE::ImageFilterCtrlrs::RegisterAllControllers(), and FREE::EvolutionaryStrategyCtrlrs::RegisterAllControllers().

Here is the call graph for this function:

FREE::LogFileController::AddEntryFREE::ComponentControllerInterface::ControllerIDFREE::ControllerCentral::GetControllerFREE::ControllerCentral::InitializeFREE::ControllerCentral::TriggerControlEventFREE::ControllerInfo::GetControllerFREE::ControllerCentral::GetControllerInfoFREE::ControllerCentral::LoadDynamicControllersFREE::ControllerCentral::RegisterDefaultsFREE::GetGeneralFREEPathFREE::ControllerCentral::LoadLibrariesInPathFREE::CreateFullPathFREE::NameIsSharedLibrary

void FREE::ControllerCentral::RegisterController ( GenericComponentController pController  )  [static]

Register a controller. This function assumes that the controller was created in the same DLL/programm

Parameters:
[in] pController Pointer to the new controller.

Definition at line 474 of file freControllerCentral.cxx.

References FREE::LogFileController::AddEntry(), FREE::ComponentControllerInterface::ControllerID(), GetController(), Initialize(), FREE::logException, m_RegisteredControllers, and TriggerControlEvent().

Here is the call graph for this function:

FREE::LogFileController::AddEntryFREE::ComponentControllerInterface::ControllerIDFREE::ControllerCentral::GetControllerFREE::ControllerCentral::InitializeFREE::ControllerCentral::TriggerControlEventFREE::ControllerInfo::GetControllerFREE::ControllerCentral::GetControllerInfoFREE::ControllerCentral::LoadDynamicControllersFREE::ControllerCentral::RegisterDefaultsFREE::GetGeneralFREEPathFREE::ControllerCentral::LoadLibrariesInPathFREE::CreateFullPathFREE::NameIsSharedLibraryFREE::ControllerCentral::RegisterController

void FREE::ControllerCentral::UnRegisterController ( GenericComponentController pController  )  [static]

Remove a controller from the list of registered controllers.

Parameters:
[in] pController Pointer to the new controller.

Definition at line 494 of file freControllerCentral.cxx.

References FREE::LogFileController::AddEntry(), catchAllNPassStaticMacro, FREE::ComponentControllerInterface::ControllerID(), FREE::logException, m_bControllersAreExternal, m_RegisteredControllers, and TriggerControlEvent().

Here is the call graph for this function:

FREE::LogFileController::AddEntryFREE::ComponentControllerInterface::ControllerIDFREE::ControllerCentral::TriggerControlEvent

void FREE::ControllerCentral::UnRegisterAllControllers (  )  [static]

Unregister all controllers.

Definition at line 535 of file freControllerCentral.cxx.

References FREE::LogFileController::AddEntry(), catchAllNPassStaticMacro, FREE::ControllerInfo::GetController(), FREE::ControllerInfo::GetControllerID(), FREE::ControllerInfo::GetLibraryHandle(), FREE::ControllerInfo::IsOwnedByLibrary(), FREE::logException, m_bControllersAreExternal, m_LibraryHandles, m_RegisteredControllers, and TriggerControlEvent().

Referenced by LinkControllerCentralAsDedicated(), ReHash(), and FREE::CleanUpControllerCentral::~CleanUpControllerCentral().

Here is the call graph for this function:

FREE::LogFileController::AddEntryFREE::ControllerInfo::GetControllerFREE::ControllerInfo::GetControllerIDFREE::ControllerInfo::GetLibraryHandleFREE::ControllerInfo::IsOwnedByLibraryFREE::ControllerCentral::TriggerControlEvent

void FREE::ControllerCentral::UnRegisterCallbackEventList (  )  [static]

Unregister and deletes the event list.

Definition at line 605 of file freControllerCentral.cxx.

References catchAllNPassStaticMacro, m_bControllersAreExternal, m_CallbackMutex, and m_CtrlCallbacks.

Referenced by LinkControllerCentralAsDedicated(), and FREE::CleanUpControllerCentral::~CleanUpControllerCentral().

void FREE::ControllerCentral::UnRegisterProgressEventList (  )  [static]

Unregister and deletes the event list.

Definition at line 626 of file freControllerCentral.cxx.

References catchAllNPassStaticMacro, m_bControllersAreExternal, m_CtrlProgress, and m_ProgressMutex.

Referenced by LinkControllerCentralAsDedicated(), and FREE::CleanUpControllerCentral::~CleanUpControllerCentral().

GenericComponentController * FREE::ControllerCentral::GetController ( const std::string &  sControllerName  )  [static]

Searches in the registered controllers for a controller with the Name passed with the variable sControllerName.

Parameters:
[in] sControllerName Name/Identifier of the wanted controller.
Returns:
Pointer to the controller, if no controller with the passed name can be found, the return is a null pointer

Definition at line 658 of file freControllerCentral.cxx.

References FREE::ControllerInfo::GetController(), and GetControllerInfo().

Referenced by FREE::MediaActualizer::ActualizeMediaByField(), FREE::MediaActualizer::ActualizeMediaByFunction(), FREE::SessionBuilder::BuildComponent(), FREE::SessionBuilder::GeneratePassiveComponentCache(), FREE::SetupTransform::GetParameterValueType(), FREE::SetupManager::InitializeComponentSetup(), FREE::SetupInterpolator::InterpolateParameter(), LoadLibrariesInPath(), RegisterController(), and FREE::GenericSetupToImageAdaptor::ValidateController().

Here is the call graph for this function:

FREE::ControllerInfo::GetControllerFREE::ControllerCentral::GetControllerInfoFREE::ControllerCentral::InitializeFREE::ControllerCentral::LoadDynamicControllersFREE::ControllerCentral::RegisterDefaultsFREE::GetGeneralFREEPathFREE::ControllerCentral::LoadLibrariesInPathFREE::LogFileController::AddEntryFREE::CreateFullPathFREE::NameIsSharedLibraryFREE::ControllerCentral::RegisterControllerFREE::ControllerCentral::TriggerControlEventFREE::ComponentControllerInterface::ControllerID

ControllerInfo * FREE::ControllerCentral::GetControllerInfo ( const std::string &  sControllerName  )  [static]

Searches in the registered controllers for a controller with the Name passed with the variable sControllerName.

Parameters:
[in] sControllerName Name/Identifier of the wanted controller.
Returns:
Pointer to the controller info, if no controller with the passed name can be found, the return is a null pointer

Definition at line 669 of file freControllerCentral.cxx.

References Initialize(), and m_RegisteredControllers.

Referenced by GetController().

Here is the call graph for this function:

FREE::ControllerCentral::InitializeFREE::ControllerCentral::LoadDynamicControllersFREE::ControllerCentral::RegisterDefaultsFREE::GetGeneralFREEPathFREE::ControllerCentral::LoadLibrariesInPathFREE::LogFileController::AddEntryFREE::CreateFullPathFREE::ControllerCentral::GetControllerFREE::NameIsSharedLibraryFREE::ControllerCentral::RegisterControllerFREE::ControllerCentral::TriggerControlEventFREE::ControllerInfo::GetControllerFREE::ComponentControllerInterface::ControllerID

GenericComponentController * FREE::ControllerCentral::GetResponsibleController ( const GenericComponentType pComponent  )  [static]

Searches in the registered controllers for a controller that is responsible for components with the same type then the passed one.

Parameters:
[in] pComponent Pointer to the component that need the responsible controller.
Returns:
Pointer to the controller, if no responsible controller can be found, the return is a null pointer

Definition at line 685 of file freControllerCentral.cxx.

References Initialize(), and m_RegisteredControllers.

Here is the call graph for this function:

FREE::ControllerCentral::InitializeFREE::ControllerCentral::LoadDynamicControllersFREE::ControllerCentral::RegisterDefaultsFREE::GetGeneralFREEPathFREE::ControllerCentral::LoadLibrariesInPathFREE::LogFileController::AddEntryFREE::CreateFullPathFREE::ControllerCentral::GetControllerFREE::NameIsSharedLibraryFREE::ControllerCentral::RegisterControllerFREE::ControllerCentral::TriggerControlEventFREE::ControllerInfo::GetControllerFREE::ControllerCentral::GetControllerInfoFREE::ComponentControllerInterface::ControllerID

ControllerCentral::ControllerListType FREE::ControllerCentral::GetControllers (  )  [static]

Gets the list of all registered controllers.

Returns:
Return the list of all registered controllers.
Warning:
This is NOT a copy, do not remove items from this list!

Definition at line 649 of file freControllerCentral.cxx.

References Initialize(), and m_RegisteredControllers.

Referenced by FREE::SetupManager::GetPossibleControllers().

Here is the call graph for this function:

FREE::ControllerCentral::InitializeFREE::ControllerCentral::LoadDynamicControllersFREE::ControllerCentral::RegisterDefaultsFREE::GetGeneralFREEPathFREE::ControllerCentral::LoadLibrariesInPathFREE::LogFileController::AddEntryFREE::CreateFullPathFREE::ControllerCentral::GetControllerFREE::NameIsSharedLibraryFREE::ControllerCentral::RegisterControllerFREE::ControllerCentral::TriggerControlEventFREE::ControllerInfo::GetControllerFREE::ControllerCentral::GetControllerInfoFREE::ComponentControllerInterface::ControllerID

void FREE::ControllerCentral::SetOnControlEvent ( ProgressEventBase pOnControl  )  [static]

Sets the progress event the central will use to give feed back while processing the initialization.

Parameters:
[in] pOnControl Pointer to the progress event.

Definition at line 700 of file freControllerCentral.cxx.

References m_fnOnControl.

void FREE::ControllerCentral::SetOnBuildEvent ( ProgressEventBase pOnBuild  )  [static]

Sets the progress event the SessionBuilder will use to give feed back while processing the initialization and building.

Parameters:
[in] pOnBuild Pointer to the progress event.

Definition at line 707 of file freControllerCentral.cxx.

References m_fnOnBuild.

void FREE::ControllerCentral::AddOnProgressEvent ( ProgressCtrlEventBase pOnProgress  )  [static]

Adds the passed controller progress event to the list of events. Controllers can use this list to notifiy any progress.

Parameters:
[in] pOnProgress Pointer to the function that handles progress events.

Definition at line 715 of file freControllerCentral.cxx.

References m_bControllersAreExternal, m_CtrlProgress, m_GlobalProgressMutex, and m_ProgressMutex.

Referenced by FREE::ImageDifferenceSOMetricThread< VImageDimension >::ProcessSetup(), FREE::ImageClassificationSOMetricThread< VImageDimension >::ProcessSetup(), and FREE::AccuracySOMetricThread< VImageDimension >::ProcessSetup().

void FREE::ControllerCentral::RemoveOnProgressEvent ( ProgressCtrlEventBase pOnProgress  )  [static]

Removes the passed controller progress event from the list

Parameters:
[in] pOnProgress Pointer of the event that should be removed from the list.

Definition at line 731 of file freControllerCentral.cxx.

References m_CtrlProgress, m_GlobalProgressMutex, and m_ProgressMutex.

Referenced by FREE::ImageDifferenceSOMetricThread< VImageDimension >::ProcessSetup(), FREE::ImageClassificationSOMetricThread< VImageDimension >::ProcessSetup(), FREE::AccuracySOMetricThread< VImageDimension >::ProcessSetup(), and FREE::SetupOptimizationMetricThreadBase< TMonitor >::~SetupOptimizationMetricThreadBase().

void FREE::ControllerCentral::ClearProgressEventList (  )  [static]

Definition at line 759 of file freControllerCentral.cxx.

References m_CtrlProgress, m_GlobalProgressMutex, and m_ProgressMutex.

void FREE::ControllerCentral::AddOnCallbackEvent ( CallbackCtrlEventBase pOnCallback  )  [static]

Adds the passed callback event to the list of events. Controllers can use this list to make a callback.

Parameters:
[in] pOnCallback Pointer to the function that handles any callback.

Definition at line 775 of file freControllerCentral.cxx.

References m_bControllersAreExternal, m_CallbackMutex, m_CtrlCallbacks, and m_GlobalCallbackMutex.

void FREE::ControllerCentral::RemoveOnCallbackEvent ( CallbackCtrlEventBase pOnCallback  )  [static]

Removes the passed callback event from the list

Parameters:
[in] pOnCallback Pointer of the event that should be removed from the list.

Definition at line 797 of file freControllerCentral.cxx.

References m_CallbackMutex, m_CtrlCallbacks, and m_GlobalCallbackMutex.

void FREE::ControllerCentral::ClearCallbackList (  )  [static]

Definition at line 826 of file freControllerCentral.cxx.

References m_CallbackMutex, m_CtrlCallbacks, and m_GlobalCallbackMutex.

void FREE::ControllerCentral::TriggerControllerProgressEvent ( const IDPath senderID,
const ProgressCtrlEventBase::StatusID  status,
const std::string &  sComment,
SessionComponentCache pSender,
long  threadID 
) [static]

Triggers controller progress events. First all events will be executed that are limited to the session of the sender, then the rest will be checked.

Parameters:
[in] senderID IDPath of the component that notifies a progress.
[in] status ID of the current status of progress.
[in] sComment String for adding any comments concerning the new status.
[in,out] pSender Pointer to the session component cache that was active when the event was executed.

Definition at line 866 of file freControllerCentral.cxx.

References m_CtrlProgress, m_GlobalProgressMutex, and m_ProgressMutex.

Referenced by FREE::RegistrationProcessEventHandler< TRegistrationProcessor >::OnNextIteration(), FREE::RegistrationProcessEventHandler< TRegistrationProcessor >::OnNextLevel(), FREE::RegistrationProcessEventHandler< TRegistrationProcessor >::OnRegistrationProgressEvent(), and FREE::ControllerNotificator::TriggerProgressEvent().

bool FREE::ControllerCentral::TriggerControllerCallback ( const IDPath senderID,
CallbackCtrlEventBase::CallbackType  callbackID,
void *  pData,
SessionComponentCache pSender,
long  threadID 
) [static]

Triggers controller callback. Will return for the first callback that has returned true. First all callback are checked that are limited to the session of the sender, then the rest will be checked.

Parameters:
[in] senderID IDPath specifying the component that is making the callback
[in] callbackID Defines the callback type and so the meaning of pData. The meaning depends on the sender of the callback. where the meaning of flag and pData are also explained.
[in,out] pData Void pointer to a data structures may be passed or requested with the callback. Meaning and use depends on the senderID and callbackID.
[in,out] pSender Pointer to the session component cache that was active when the event was executed.

Definition at line 902 of file freControllerCentral.cxx.

References m_CallbackMutex, m_CtrlCallbacks, and m_GlobalProgressMutex.

Referenced by FREE::ControllerNotificator::TriggerCallback().

bool FREE::ControllerCentral::TriggerControlEvent ( const int  iStatusID,
const std::string &  sComment,
void *  pSender = 0,
long  threadID = 0 
) [static]

Triggers control event if m_fnOnControl is set.

Parameters:
[in] iStatusID ID of the current status of progress.
[in] sComment String for adding any comments concerning the new status.
[in] pSender Pointer to the object, which called the event.
[in] threadID ID of the Thread executing the event. By default this value is 0. This ID is not unique over the complete system, it should only be assumed that it is unique in the context of the sender.
Returns:
Indicates if the control event is set and triggered (true) or not (false).

Definition at line 842 of file freControllerCentral.cxx.

References m_fnOnControl.

Referenced by LoadLibrariesInPath(), RegisterController(), UnRegisterAllControllers(), and UnRegisterController().

bool FREE::ControllerCentral::TriggerBuildEvent ( const int  iStatusID,
const std::string &  sComment,
void *  pSender = 0,
long  threadID = 0 
) [static]

Triggers build event if m_fnOnBuild is set.

Parameters:
[in] iStatusID ID of the current status of progress.
[in] sComment String for adding any comments concerning the new status.
[in] pSender Pointer to the object, which called the event.
[in] threadID ID of the Thread executing the event. By default this value is 0. This ID is not unique over the complete system, it should only be assumed that it is unique in the context of the sender.
Returns:
Indicates if the build event is set and triggered (true) or not (false).

Definition at line 854 of file freControllerCentral.cxx.

References m_fnOnBuild.

Referenced by FREE::SessionBuilder::BuildComponent(), FREE::SessionBuilder::BuildSession(), FREE::SetupManager::InitializeComponentSetup(), FREE::SessionBuilder::LinkMediaToComponent(), and FREE::SessionBuilder::LinkMediaToComponentByID().

void FREE::ControllerCentral::LinkControllerCentralAsDedicated ( ControllerListType pDedicatedControllerList,
LibraryHandleListType pDedicatedLibraryHandles,
ProgressEventBase pfnOnControl,
ProgressEventBase pfnOnBuild,
CtrlCallbackListType pCallbackList,
CtrlProgressListType pProgressList,
itk::MutexLock *  pGlobalCallbackMutex,
itk::MutexLock *  pGlobalProgressMutex 
) [static]

Sets the central to a dedicate mode. Thus controller list and library handels are not owned by the controller and will not be deallocated when UnRegisterController or UnRegisterAllController is called. If a central is linked as dedicated, Initialize() will also not browes for new controllers because the pointer to the controller list is not null.

Remarks:
This function and functionality is used to synchronize the controllers of different moduls (e.g. in different DLLs) normally different moduls would have there own static list of controllers. By the fact that the first modul which will be initialized, links all other moduls to its controller list, controller centrals of all moduls are synchronized and there is now redundant creation of controllers.
Parameters:
[in] pDedicatedControllerList Pointer to the list of controllers used by all linked centrals.
[in] pDedicatedLibraryHandles Pointer to list of library handles.
[in] pfnOnControl Pointer to the progress event for controller related events the central should be linked to.
[in] pfnOnBuild Pointer to the progress event for SessionBuilder related events the central should be linked to. This event will be used by the SessionBuilder class.
[in] pCallbackList Pointer to the list of controller callbacks.
[in] pProgressList Pointer to the list of functions which should handle constroller progress notifications.
[in] pGlobalCallbackMutex Pointer to global mutext sychronization for callback events across all dlls
[in] pGlobalProgressMutex Pointer to global mutext sychronizationfor progress events across all dlls.

Definition at line 146 of file freControllerCentral.cxx.

References m_bControllersAreExternal, m_CallbackMutex, m_CtrlCallbacks, m_CtrlProgress, m_fnOnBuild, m_fnOnControl, m_GlobalCallbackMutex, m_GlobalProgressMutex, m_LibraryHandles, m_ProgressMutex, m_RegisteredControllers, UnRegisterAllControllers(), UnRegisterCallbackEventList(), and UnRegisterProgressEventList().

Referenced by FREE::FREELinkCentralAsDedicated().

Here is the call graph for this function:

FREE::ControllerCentral::UnRegisterAllControllersFREE::ControllerCentral::UnRegisterCallbackEventListFREE::ControllerCentral::UnRegisterProgressEventListFREE::LogFileController::AddEntryFREE::ControllerInfo::GetControllerFREE::ControllerInfo::GetControllerIDFREE::ControllerInfo::GetLibraryHandleFREE::ControllerInfo::IsOwnedByLibraryFREE::ControllerCentral::TriggerControlEvent

void FREE::ControllerCentral::Initialize ( void   )  [static, private]

Initialize the static members of ControllerCentral. RegisterDefaults is called here.

An one time initialization method.

Definition at line 114 of file freControllerCentral.cxx.

References catchAllNPassStaticMacro, LoadDynamicControllers(), m_CallbackMutex, m_CtrlCallbacks, m_CtrlProgress, m_LibraryHandles, m_ProgressMutex, m_RegisteredControllers, and RegisterDefaults().

Referenced by ControllerCentral(), GetControllerInfo(), GetControllers(), GetResponsibleController(), RegisterController(), and ReHash().

Here is the call graph for this function:

FREE::ControllerCentral::LoadDynamicControllersFREE::ControllerCentral::RegisterDefaultsFREE::GetGeneralFREEPathFREE::ControllerCentral::LoadLibrariesInPathFREE::LogFileController::AddEntryFREE::CreateFullPathFREE::ControllerCentral::GetControllerFREE::NameIsSharedLibraryFREE::ControllerCentral::RegisterControllerFREE::ControllerCentral::TriggerControlEventFREE::ControllerInfo::GetControllerFREE::ControllerCentral::GetControllerInfoFREE::ComponentControllerInterface::ControllerID

void FREE::ControllerCentral::RegisterDefaults (  )  [static, private]

Register default controllers which are not loaded at run time.

Definition at line 140 of file freControllerCentral.cxx.

Referenced by Initialize().

void FREE::ControllerCentral::LoadDynamicControllers (  )  [static, private]

Load dynamic controllers from the FREE_AUTOLOAD_PATH

Load all libraries in FREE_AUTOLOAD_PATH

follow PATH conventions

find PathSeparator in LoadPath

move past separator

Definition at line 190 of file freControllerCentral.cxx.

References FREE::csFREEAutoLoadPath, FREE::GetGeneralFREEPath(), and LoadLibrariesInPath().

Referenced by Initialize().

Here is the call graph for this function:

FREE::GetGeneralFREEPathFREE::ControllerCentral::LoadLibrariesInPathFREE::LogFileController::AddEntryFREE::CreateFullPathFREE::ControllerCentral::GetControllerFREE::NameIsSharedLibraryFREE::ControllerCentral::RegisterControllerFREE::ControllerCentral::TriggerControlEventFREE::ControllerInfo::GetControllerFREE::ControllerCentral::GetControllerInfoFREE::ControllerCentral::InitializeFREE::ControllerCentral::RegisterDefaultsFREE::ComponentControllerInterface::ControllerID

void FREE::ControllerCentral::LoadLibrariesInPath ( const char *  path  )  [static, private]

Load all dynamic libraries in the given path

Attempt to load each file in the directory as a shared library

try to make sure the file has at least the extension for a shared library in it.

Look for the symbol itkLoad in the library

if all symbols are found, use them to create the factory from the library

initialize class members if load worked

Definition at line 276 of file freControllerCentral.cxx.

References FREE::LogFileController::AddEntry(), FREE::CreateFullPath(), GetController(), FREE::logException, m_bControllersAreExternal, m_CallbackMutex, m_CtrlCallbacks, m_CtrlProgress, m_fnOnBuild, m_fnOnControl, m_GlobalCallbackMutex, m_GlobalProgressMutex, m_LibraryHandles, m_ProgressMutex, m_RegisteredControllers, FREE::NameIsSharedLibrary(), RegisterController(), and TriggerControlEvent().

Referenced by LoadDynamicControllers().

Here is the call graph for this function:

FREE::LogFileController::AddEntryFREE::CreateFullPathFREE::ControllerCentral::GetControllerFREE::NameIsSharedLibraryFREE::ControllerCentral::RegisterControllerFREE::ControllerCentral::TriggerControlEventFREE::ControllerInfo::GetControllerFREE::ControllerCentral::GetControllerInfoFREE::ControllerCentral::InitializeFREE::ControllerCentral::LoadDynamicControllersFREE::ControllerCentral::RegisterDefaultsFREE::GetGeneralFREEPathFREE::ComponentControllerInterface::ControllerID


Friends And Related Function Documentation

friend class CleanUpControllerCentral [friend]

Definition at line 271 of file freControllerCentral.h.


Member Data Documentation

ControllerCentral::ControllerListType * FREE::ControllerCentral::m_RegisteredControllers = NULL [static, private]

List of registered controllers

Initialize static list of controllers.

Definition at line 287 of file freControllerCentral.h.

Referenced by GetControllerInfo(), GetControllers(), GetResponsibleController(), Initialize(), LinkControllerCentralAsDedicated(), LoadLibrariesInPath(), RegisterController(), UnRegisterAllControllers(), and UnRegisterController().

ControllerCentral::PointerListType * FREE::ControllerCentral::m_LibraryHandles = NULL [static, private]

Member variables for a controller set by the base class at load or register time

Initialize static list of libaryHandles.

Definition at line 291 of file freControllerCentral.h.

Referenced by Initialize(), LinkControllerCentralAsDedicated(), LoadLibrariesInPath(), and UnRegisterAllControllers().

ControllerCentral::CtrlCallbackListType * FREE::ControllerCentral::m_CtrlCallbacks = NULL [static, private]

List of function pointer, which enables the ControllerCentral to pass callbacks of a controller.
This event should, if possible, not be used to gather information, which also can be stored in the setup, to avoid spoiling the concept of f.r.e.e. and ensure the generic use.

Initialize static list of callback function pointer.

Definition at line 296 of file freControllerCentral.h.

Referenced by AddOnCallbackEvent(), ClearCallbackList(), Initialize(), LinkControllerCentralAsDedicated(), LoadLibrariesInPath(), ReHash(), RemoveOnCallbackEvent(), TriggerControllerCallback(), and UnRegisterCallbackEventList().

ControllerCentral::CtrlProgressListType * FREE::ControllerCentral::m_CtrlProgress = NULL [static, private]

List of function pointer, which enables the ControllerCentral to pass a progress notification of a controller.

Initialize static list progress function pointer.

Definition at line 300 of file freControllerCentral.h.

Referenced by AddOnProgressEvent(), ClearProgressEventList(), Initialize(), LinkControllerCentralAsDedicated(), LoadLibrariesInPath(), ReHash(), RemoveOnProgressEvent(), TriggerControllerProgressEvent(), and UnRegisterProgressEventList().

ProgressEventBase::Pointer FREE::ControllerCentral::m_fnOnControl = NULL [static, private]

Function pointer, which enables the ControllerCentral to give feedback about the controller managing.

Initialize static event object smartpointer.

Definition at line 304 of file freControllerCentral.h.

Referenced by LinkControllerCentralAsDedicated(), LoadLibrariesInPath(), SetOnControlEvent(), and TriggerControlEvent().

ProgressEventBase::Pointer FREE::ControllerCentral::m_fnOnBuild = NULL [static, private]

Function pointer, which enables the SessionBuilder to give feedback about his intialization and building processes.

Definition at line 308 of file freControllerCentral.h.

Referenced by LinkControllerCentralAsDedicated(), LoadLibrariesInPath(), SetOnBuildEvent(), and TriggerBuildEvent().

itk::MutexLock::Pointer FREE::ControllerCentral::m_CallbackMutex = itk::MutexLock::New() [static, private]

Definition at line 310 of file freControllerCentral.h.

Referenced by AddOnCallbackEvent(), ClearCallbackList(), Initialize(), LinkControllerCentralAsDedicated(), LoadLibrariesInPath(), ReHash(), RemoveOnCallbackEvent(), TriggerControllerCallback(), and UnRegisterCallbackEventList().

itk::MutexLock::Pointer FREE::ControllerCentral::m_ProgressMutex = itk::MutexLock::New() [static, private]

Definition at line 311 of file freControllerCentral.h.

Referenced by AddOnProgressEvent(), ClearProgressEventList(), Initialize(), LinkControllerCentralAsDedicated(), LoadLibrariesInPath(), ReHash(), RemoveOnProgressEvent(), TriggerControllerProgressEvent(), and UnRegisterProgressEventList().

itk::MutexLock * FREE::ControllerCentral::m_GlobalCallbackMutex = 0 [static, private]

If central is dedicated this mutex sychnorizes the event calls between all centrals if the central is not dedicated the pointer is null

Definition at line 315 of file freControllerCentral.h.

Referenced by AddOnCallbackEvent(), ClearCallbackList(), LinkControllerCentralAsDedicated(), LoadLibrariesInPath(), ReHash(), and RemoveOnCallbackEvent().

itk::MutexLock * FREE::ControllerCentral::m_GlobalProgressMutex = 0 [static, private]

If central is dedicated this mutex sychnorizes the event calls between all centrals if the central is not dedicated the pointer is null

Definition at line 318 of file freControllerCentral.h.

Referenced by AddOnProgressEvent(), ClearProgressEventList(), LinkControllerCentralAsDedicated(), LoadLibrariesInPath(), ReHash(), RemoveOnProgressEvent(), TriggerControllerCallback(), and TriggerControllerProgressEvent().

bool FREE::ControllerCentral::m_bControllersAreExternal = false [static, private]

Flag indicates if the controllers are owned by the central in the modul or by an other central, and are just passed by LinkControllerCentral()

Initialize static event object smartpointer.

Definition at line 322 of file freControllerCentral.h.

Referenced by AddOnCallbackEvent(), AddOnProgressEvent(), LinkControllerCentralAsDedicated(), LoadLibrariesInPath(), ReHash(), UnRegisterAllControllers(), UnRegisterCallbackEventList(), UnRegisterController(), and UnRegisterProgressEventList().


The documentation for this class was generated from the following files:
Generated at Sat Oct 13 18:29:22 2007 for f.r.e.e. - Flexible Registration and Evaluation Engine by doxygen 1.5.3 written by Dimitri van Heesch, © 1997-2000