#pragma once #include #include #include "cmds_basic.h" #include "validation.h" namespace dispatch { class IOutput { public: virtual ~IOutput() = default; virtual void write(const QString& title, const QString& desc) = 0; }; class Dispatch { private: QHash> _cmds_map; QHash _cmds_validators; QHash> _events_map; QList _output_list; static Dispatch* _unique_inst; public: static Dispatch* unique(); QList allCmds() const; void registerCmd(quint64 addr, Inlet::IRunbase* unit); void setCmdAlias(quint64 addr, const QString& alias); void setCmdValidator(quint64 addr, validate::IValidatorTemplet* inst); QString getCmdAlias(quint64 addr) const; QString getCmdDefault(quint64 addr) const; void runWith(Inlet::IRunbase* unit); QList allEvents() const; void registerEvent(quint64 addr, Inlet::IRunbase* unit); void setEventAlias(quint64 addr, const QString& alias); QString getEventAlias(quint64 addr) const; QString getEventDefault(quint64 addr) const; void notifyWith(Inlet::IRunbase* unit); }; }