#include "dispatch.h" using namespace dispatch; using namespace Inlet; Dispatch* Dispatch::_unique_inst = new Dispatch(); Dispatch* dispatch::Dispatch::unique() { return _unique_inst; } QList Dispatch::allCmds() const { return _cmds_map.keys(); } void Dispatch::registerCmd(quint64 addr, IRunbase* unit) { auto alias = QString("CMD_%1").arg(addr); _cmds_map[addr] = std::make_pair(alias, unit); } void dispatch::Dispatch::setCmdAlias(quint64 addr, const QString& alias) { if (_cmds_map.contains(addr)) { auto tuple = _cmds_map[addr]; _cmds_map[addr] = std::make_pair(alias, tuple.second); } } void dispatch::Dispatch::setCmdValidator(quint64 addr, validate::IValidatorTemplet* inst) { _cmds_validators[addr] = inst; } QString Dispatch::getCmdAlias(quint64 addr) const { return _cmds_map[addr].first; } QString Dispatch::getCmdDefault(quint64 addr) const { return ""; } void Dispatch::runWith(IRunbase* unit) { auto addrs = unit->address(); if (_cmds_validators.contains(addrs)) { auto validate_templet = _cmds_validators[addrs]; if (!validate_templet->doValidate(unit)) return; } unit->run(); } QList dispatch::Dispatch::allEvents() const { return _events_map.keys(); } void dispatch::Dispatch::registerEvent(quint64 addr, Inlet::IRunbase* unit) { auto alias = QString("Event_%1").arg(addr); _events_map[addr] = std::make_pair(alias, unit); } void dispatch::Dispatch::setEventAlias(quint64 addr, const QString& alias) { if (_events_map.contains(addr)) { auto tuple = _events_map[addr]; _events_map[addr] = std::make_pair(alias, tuple.second); } } QString dispatch::Dispatch::getEventAlias(quint64 addr) const { return _events_map[addr].first; } QString dispatch::Dispatch::getEventDefault(quint64 addr) const { return QString(); } void dispatch::Dispatch::notifyWith(Inlet::IRunbase* unit) { }