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.
Direct Base Classes: Poco::RefCountedObject
All Base Classes: Poco::RefCountedObject
Known Derived Classes: Application, LoggingSubsystem, ServerApplication
Member Functions: defineOptions, initialize, name, reinitialize, uninitialize
Inherited Functions: duplicate, referenceCount, release
Creates the Subsystem.
Destroys the Subsystem.
virtual const char * name() const = 0;
Returns the name of the subsystem. Must be implemented by subclasses.
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.
virtual void initialize(
Application & app
) = 0;
Initializes the subsystem.
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.
virtual void uninitialize() = 0;
Uninitializes the subsystem.