CuteHMI - Services (CuteHMI.Services.3)
cutehmi::services::AbstractService Class Reference

Abstract service. More...

#include <cutehmi/services/AbstractService.hpp>

Inheritance diagram for cutehmi::services::AbstractService:
QObject CuteHMI::Services::AbstractService cutehmi::services::SelfService cutehmi::services::Service cutehmi::services::ServiceGroup CuteHMI::Services::SelfService CuteHMI::Services::Service CuteHMI::Services::ServiceGroup

Public Slots

void start ()
 
void stop ()
 
void activate ()
 

Signals

void stopTimeoutChanged ()
 
void startTimeoutChanged ()
 
void repairTimeoutChanged ()
 
void shutdownTimeoutChanged ()
 
void nameChanged ()
 
void statusChanged ()
 
void started ()
 
void stopped ()
 
void activated ()
 
void initialized ()
 This signal is emitted, when service has performed all the initialization tasks and it is ready to be started. More...
 

Public Member Functions

 ~AbstractService () override
 
int shutdownTimeout () const
 
void setShutdownTimeout (int shutdownTimeout)
 Set shutdown timeout. More...
 
int stopTimeout () const
 
void setStopTimeout (int stopTimeout)
 Set stop timeout. More...
 
int startTimeout () const
 
void setStartTimeout (int startTimeout)
 Set start timeout. More...
 
int repairTimeout () const
 
void setRepairTimeout (int repairTimeout)
 Set repair timeout. More...
 
QString name () const
 
void setName (const QString &name)
 
QString status () const
 
cutehmi::services::StateInterfacestates () const
 Get state interface. More...
 
QQmlListProperty< cutehmi::services::AbstractServiceControllerdefaultControllerList ()
 
QQmlListProperty< cutehmi::services::AbstractServiceControllercontrollerList ()
 
Q_INVOKABLE void appendController (cutehmi::services::AbstractServiceController *controller)
 
Q_INVOKABLE void clearControllers ()
 
- Public Member Functions inherited from QObject
virtual const QMetaObjectmetaObject () const const
 
 QObject (QObject *parent)
 
virtual ~QObject ()
 
virtual bool event (QEvent *e)
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 
QString objectName () const const
 
void setObjectName (const QString &name)
 
bool isWidgetType () const const
 
bool isWindowType () const const
 
bool signalsBlocked () const const
 
bool blockSignals (bool block)
 
QThreadthread () const const
 
void moveToThread (QThread *targetThread)
 
int startTimer (int interval, Qt::TimerType timerType)
 
int startTimer (std::chrono::milliseconds time, Qt::TimerType timerType)
 
void killTimer (int id)
 
findChild (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegExp &regExp, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const
 
const QObjectListchildren () const const
 
void setParent (QObject *parent)
 
void installEventFilter (QObject *filterObj)
 
void removeEventFilter (QObject *obj)
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const const
 
bool disconnect (const char *signal, const QObject *receiver, const char *method) const const
 
bool disconnect (const QObject *receiver, const char *method) const const
 
void dumpObjectTree ()
 
void dumpObjectInfo ()
 
void dumpObjectTree () const const
 
void dumpObjectInfo () const const
 
bool setProperty (const char *name, const QVariant &value)
 
QVariant property (const char *name) const const
 
QList< QByteArraydynamicPropertyNames () const const
 
void destroyed (QObject *obj)
 
void objectNameChanged (const QString &objectName)
 
QObjectparent () const const
 
bool inherits (const char *className) const const
 
void deleteLater ()
 
 Q_DISABLE_COPY (Class)
 
 Q_DISABLE_MOVE (Class)
 
 Q_DISABLE_COPY_MOVE (Class)
 
qobject_cast (QObject *object)
 
qobject_cast (const QObject *object)
 
qFindChild (const QObject *obj, const QString &name)
 
QList< T > qFindChildren (const QObject *obj, const QString &name)
 
QList< T > qFindChildren (const QObject *obj, const QRegExp &regExp)
 
 Q_CLASSINFO (Name, Value)
 
 Q_INTERFACES (...)
 
 Q_PROPERTY (...)
 
 Q_ENUMS (...)
 
 Q_FLAGS (...)
 
 Q_ENUM (...)
 
 Q_FLAG (...)
 
 Q_ENUM_NS (...)
 
 Q_FLAG_NS (...)
 
 Q_OBJECT Q_OBJECT
 
 Q_GADGET Q_GADGET
 
 Q_NAMESPACE Q_NAMESPACE
 
 Q_NAMESPACE_EXPORT (EXPORT_MACRO)
 
 Q_SIGNALS Q_SIGNALS
 
 Q_SIGNAL Q_SIGNAL
 
 Q_SLOTS Q_SLOTS
 
 Q_SLOT Q_SLOT
 
 Q_EMIT Q_EMIT
 
 Q_INVOKABLE Q_INVOKABLE
 
 Q_REVISION Q_REVISION
 
 Q_SET_OBJECT_NAME (Object)
 
 QT_NO_NARROWING_CONVERSIONS_IN_CONNECT QT_NO_NARROWING_CONVERSIONS_IN_CONNECT
 

Static Public Attributes

static constexpr int INITIAL_SHUTDOWN_TIMEOUT = 180000
 
static constexpr int INITIAL_STOP_TIMEOUT = 30000
 
static constexpr int INITIAL_START_TIMEOUT = 30000
 
static constexpr int INITIAL_REPAIR_TIMEOUT = 30000
 
static constexpr const char * INITIAL_NAME = "Unnamed Service"
 

Protected Types

typedef QList< AbstractServiceController * > ControllersContainer
 

Protected Slots

void setStatus (const QString &status)
 

Protected Member Functions

 AbstractService (StateInterface *stateInterface, const QString &status, QObject *parent=nullptr, const ControllersContainer *defaultControllers=&DefaultControllers())
 Constructor. More...
 
const ControllersContainercontrollers () const
 
ControllersContainercontrollers ()
 
- Protected Member Functions inherited from QObject
QObjectsender () const const
 
int senderSignalIndex () const const
 
int receivers (const char *signal) const const
 
bool isSignalConnected (const QMetaMethod &signal) const const
 
virtual void timerEvent (QTimerEvent *event)
 
virtual void childEvent (QChildEvent *event)
 
virtual void customEvent (QEvent *event)
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 

Static Protected Member Functions

static const ControllersContainerDefaultControllers ()
 

Properties

int shutdownTimeout
 
int stopTimeout
 
int startTimeout
 
int repairTimeout
 
QString name
 
QString status
 
cutehmi::services::StateInterfacestates
 
QQmlListProperty< cutehmi::services::AbstractServiceControllerdefaultControllers
 
QQmlListProperty< cutehmi::services::AbstractServiceControllercontrollers
 
- Properties inherited from QObject
 objectName
 

Additional Inherited Members

- Static Public Member Functions inherited from QObject
QString tr (const char *sourceText, const char *disambiguation, int n)
 
QString trUtf8 (const char *sourceText, const char *disambiguation, int n)
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, Functor functor)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type)
 
bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method)
 
bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method)
 
bool disconnect (const QMetaObject::Connection &connection)
 
bool disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method)
 
- Public Attributes inherited from QObject
typedef QObjectList
 

Detailed Description

Abstract service.

Guarantee is given that states property is never nullptr, nor any of its states is ever nullptr and states are persistent - they do not change. Subclasses have to take care to ensure that this guarantee is not violated. Additionaly they should take care about initialized() signal, which should be emitted once the service has been initialized and it's ready to be started. It is also well-seen if subclasses update service status accordingly to the service state during its lifecycle.

Member Typedef Documentation

◆ ControllersContainer

Constructor & Destructor Documentation

◆ ~AbstractService()

cutehmi::services::AbstractService::~AbstractService ( )
override

◆ AbstractService()

cutehmi::services::AbstractService::AbstractService ( StateInterface stateInterface,
const QString status,
QObject parent = nullptr,
const ControllersContainer defaultControllers = DefaultControllers() 
)
protected

Constructor.

Parameters
stateInterfacestate interface. Abstract service will take ownership of this object by explicitly setting itself as its parent. This object is exposed as states property.
statusinitial service status.
defaultControllersdefault controllers.
parentparent object.

Member Function Documentation

◆ activate

void cutehmi::services::AbstractService::activate ( )
slot

◆ activated

void cutehmi::services::AbstractService::activated ( )
signal

◆ appendController()

void cutehmi::services::AbstractService::appendController ( cutehmi::services::AbstractServiceController controller)

◆ clearControllers()

void cutehmi::services::AbstractService::clearControllers ( )

◆ controllerList()

QQmlListProperty< AbstractServiceController > cutehmi::services::AbstractService::controllerList ( )

◆ controllers() [1/2]

ControllersContainer & cutehmi::services::AbstractService::controllers ( )
protected

◆ controllers() [2/2]

const AbstractService::ControllersContainer & cutehmi::services::AbstractService::controllers ( ) const
protected

◆ defaultControllerList()

QQmlListProperty< AbstractServiceController > cutehmi::services::AbstractService::defaultControllerList ( )

◆ DefaultControllers()

const AbstractService::ControllersContainer & cutehmi::services::AbstractService::DefaultControllers ( )
staticprotected

◆ initialized

void cutehmi::services::AbstractService::initialized ( )
signal

This signal is emitted, when service has performed all the initialization tasks and it is ready to be started.

After this signal has been emitted a service should respond to start() slot.

◆ name()

QString cutehmi::services::AbstractService::name ( ) const

◆ nameChanged

void cutehmi::services::AbstractService::nameChanged ( )
signal

◆ repairTimeout()

int cutehmi::services::AbstractService::repairTimeout ( ) const

◆ repairTimeoutChanged

void cutehmi::services::AbstractService::repairTimeoutChanged ( )
signal

◆ setName()

void cutehmi::services::AbstractService::setName ( const QString name)

◆ setRepairTimeout()

void cutehmi::services::AbstractService::setRepairTimeout ( int  repairTimeout)

Set repair timeout.

Parameters
repairTimeoutamount of time [milliseconds] after which repair sequence should be interrupted. Setting a negative value will disable timeout functionality.

◆ setShutdownTimeout()

void cutehmi::services::AbstractService::setShutdownTimeout ( int  shutdownTimeout)

Set shutdown timeout.

Parameters
shutdownTimeouttime limit [milliseconds] to wait for the service to shutdown itself. If service can not reach stopped nor even interrupted state by this time, it will be killed. This can happen if its state interface implementation is entirely broken.

◆ setStartTimeout()

void cutehmi::services::AbstractService::setStartTimeout ( int  startTimeout)

Set start timeout.

Parameters
startTimeoutamount of time [milliseconds] after which starting sequence should be interrupted. Setting a negative value will disable timeout functionality.

◆ setStatus

void cutehmi::services::AbstractService::setStatus ( const QString status)
protectedslot

◆ setStopTimeout()

void cutehmi::services::AbstractService::setStopTimeout ( int  stopTimeout)

Set stop timeout.

Parameters
stopTimeoutamount of time [milliseconds] after which stopping or evacuating sequence should be interrupted. Setting a negative value will disable timeout functionality.

◆ shutdownTimeout()

int cutehmi::services::AbstractService::shutdownTimeout ( ) const

◆ shutdownTimeoutChanged

void cutehmi::services::AbstractService::shutdownTimeoutChanged ( )
signal

◆ start

void cutehmi::services::AbstractService::start ( )
slot

◆ started

void cutehmi::services::AbstractService::started ( )
signal

◆ startTimeout()

int cutehmi::services::AbstractService::startTimeout ( ) const

◆ startTimeoutChanged

void cutehmi::services::AbstractService::startTimeoutChanged ( )
signal

◆ states()

StateInterface * cutehmi::services::AbstractService::states ( ) const

Get state interface.

Returns
state interface.

◆ status()

QString cutehmi::services::AbstractService::status ( ) const

◆ statusChanged

void cutehmi::services::AbstractService::statusChanged ( )
signal

◆ stop

void cutehmi::services::AbstractService::stop ( )
slot

◆ stopped

void cutehmi::services::AbstractService::stopped ( )
signal

◆ stopTimeout()

int cutehmi::services::AbstractService::stopTimeout ( ) const

◆ stopTimeoutChanged

void cutehmi::services::AbstractService::stopTimeoutChanged ( )
signal

Member Data Documentation

◆ INITIAL_NAME

constexpr const char * cutehmi::services::AbstractService::INITIAL_NAME = "Unnamed Service"
staticconstexpr

◆ INITIAL_REPAIR_TIMEOUT

constexpr int cutehmi::services::AbstractService::INITIAL_REPAIR_TIMEOUT = 30000
staticconstexpr

◆ INITIAL_SHUTDOWN_TIMEOUT

constexpr int cutehmi::services::AbstractService::INITIAL_SHUTDOWN_TIMEOUT = 180000
staticconstexpr

◆ INITIAL_START_TIMEOUT

constexpr int cutehmi::services::AbstractService::INITIAL_START_TIMEOUT = 30000
staticconstexpr

◆ INITIAL_STOP_TIMEOUT

constexpr int cutehmi::services::AbstractService::INITIAL_STOP_TIMEOUT = 30000
staticconstexpr

Property Documentation

◆ controllers

AbstractService::ControllersContainer & cutehmi::services::AbstractService::controllers
read

◆ defaultControllers

QQmlListProperty<cutehmi::services::AbstractServiceController> cutehmi::services::AbstractService::defaultControllers
read

◆ name

QString cutehmi::services::AbstractService::name
readwrite

◆ repairTimeout

int cutehmi::services::AbstractService::repairTimeout
readwrite

◆ shutdownTimeout

int cutehmi::services::AbstractService::shutdownTimeout
readwrite

◆ startTimeout

int cutehmi::services::AbstractService::startTimeout
readwrite

◆ states

cutehmi::services::StateInterface * cutehmi::services::AbstractService::states
read

◆ status

QString cutehmi::services::AbstractService::status
read

◆ stopTimeout

int cutehmi::services::AbstractService::stopTimeout
readwrite