class Poco::Util::Subsystem

Overview

Subsystems extend an application in a modular way. More…

#include <Subsystem.h>

class Subsystem: public Poco::RefCountedObject
{
public:
    // methods

    virtual
    const char*
    name() const = 0;

protected:
    // methods

    virtual
    void
    initialize(Application& app) = 0;

    virtual
    void
    uninitialize() = 0;

    virtual
    void
    reinitialize(Application& app);

    virtual
    void
    defineOptions(OptionSet& options);
};

// direct descendants

class Application;
class LoggingSubsystem;

Inherited Members

public:
    // methods

    void
    duplicate() const;

    void
    release() const;

    int
    referenceCount() const;

Detailed Documentation

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.

Construction

virtual
~Subsystem()

Destroys the Subsystem.

Methods

virtual
const char*
name() const = 0

Returns the name of the subsystem.

Must be implemented by subclasses.

virtual
void
initialize(Application& app) = 0

Initializes the subsystem.

virtual
void
uninitialize() = 0

Uninitializes 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
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.