class Subsystem

Library: Util
Package: Application
Header: Poco/Util/Subsystem.h


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 Summary

Member Functions: defineOptions, initialize, name, reinitialize, uninitialize

Inherited Functions: duplicate, referenceCount, release




Creates the Subsystem.


~Subsystem protected virtual

virtual ~Subsystem();

Destroys the Subsystem.

Member Functions

name virtual

virtual const char * name() const = 0;

Returns the name of the subsystem. Must be implemented by subclasses.

defineOptions protected virtual

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 protected virtual

virtual void initialize(
    Application & app
) = 0;

Initializes the subsystem.

reinitialize protected virtual

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 protected virtual

virtual void uninitialize() = 0;

Uninitializes the subsystem.