2024-11-11 08:29:59 +00:00
|
|
|
#include "dispatch.h"
|
|
|
|
|
|
|
|
using namespace dispatch;
|
|
|
|
using namespace Inlet;
|
|
|
|
|
2024-11-17 14:08:08 +00:00
|
|
|
Dispatch* Dispatch::_unique_inst = new Dispatch();
|
|
|
|
|
|
|
|
Dispatch* dispatch::Dispatch::unique() {
|
|
|
|
return _unique_inst;
|
|
|
|
}
|
|
|
|
|
2024-11-11 08:29:59 +00:00
|
|
|
QList<quint64> Dispatch::allCmds() const {
|
|
|
|
return _cmds_map.keys();
|
|
|
|
}
|
|
|
|
|
2024-11-17 14:08:08 +00:00
|
|
|
void Dispatch::registerCmd(quint64 addr, IRunbase* unit) {
|
|
|
|
auto alias = QString("CMD_%1").arg(addr);
|
2024-11-11 08:29:59 +00:00
|
|
|
_cmds_map[addr] = std::make_pair(alias, unit);
|
|
|
|
}
|
|
|
|
|
2024-11-17 14:08:08 +00:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
2024-11-11 08:29:59 +00:00
|
|
|
QString Dispatch::getCmdAlias(quint64 addr) const {
|
|
|
|
return _cmds_map[addr].first;
|
|
|
|
}
|
|
|
|
|
|
|
|
QString Dispatch::getCmdDefault(quint64 addr) const {
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
void Dispatch::runWith(IRunbase* unit) {
|
2024-11-17 14:08:08 +00:00
|
|
|
auto addrs = unit->address();
|
|
|
|
if (_cmds_validators.contains(addrs)) {
|
|
|
|
auto validate_templet = _cmds_validators[addrs];
|
|
|
|
if (!validate_templet->doValidate(unit))
|
|
|
|
return;
|
|
|
|
}
|
2024-11-11 08:29:59 +00:00
|
|
|
unit->run();
|
|
|
|
}
|
2024-11-17 14:08:08 +00:00
|
|
|
|
|
|
|
QList<quint64> 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) { }
|