Library: Util
Package: Application
Header: Poco/Util/Subsystem.h
Description
Subsystems extend an application in a modular way.
The Subsystem class provides a common interface for subsystems so that subsystems can be automatically initialized at startup and uninitialized at shutdown.
Subsystems should also support dynamic reconfiguration, so that they can be reconfigured anytime during the life of a running application.
The degree to which dynamic reconfiguration is supported is up to the actual subsystem implementation. It can range from ignoring the reconfiguration request (not recommended), to changing certain settings that affect the performance, to a complete reinitialization.
Inheritance
Direct Base Classes: Poco::RefCountedObject
All Base Classes: Poco::RefCountedObject
Known Derived Classes: Application, LoggingSubsystem, ServerApplication
Member Summary
Member Functions: defineOptions, initialize, name, reinitialize, uninitialize
Inherited Functions: duplicate, referenceCount, release
Constructors
Subsystem
Subsystem();
Creates the Subsystem.
Destructor
~Subsystem
virtual ~Subsystem();
Destroys the Subsystem.
Member Functions
name
virtual const char * name() const = 0;
Returns the name of the subsystem. Must be implemented by subclasses.
defineOptions
virtual void defineOptions(
OptionSet & options
);
Called before the Application's command line processing begins. If a subsystem wants to support command line arguments, it must override this method. The default implementation does not define any options.
To effectively handle options, a subsystem should either bind the option to a configuration property or specify a callback to handle the option.
initialize
virtual void initialize(
Application & app
) = 0;
Initializes the subsystem.
reinitialize
virtual void reinitialize(
Application & app
);
Re-initializes the subsystem.
The default implementation just calls uninitialize() followed by initialize(). Actual implementations might want to use a less radical and possibly more performant approach.
uninitialize
virtual void uninitialize() = 0;
Uninitializes the subsystem.