PenetrateBase/PenetrateBasic/dispatch.h

38 lines
937 B
C
Raw Normal View History

2024-11-11 08:29:59 +00:00
#pragma once
#include <QString>
#include <QHash>
#include "cmds_basic.h"
namespace dispatch {
class IOutput {
public:
virtual ~IOutput() = default;
virtual void write(const QString &title, const QString& desc) = 0;
};
class Dispatch {
private:
QHash<quint64, std::pair<QString, Inlet::IRunbase*>> _cmds_map;
QHash<quint64, std::pair<QString, Inlet::IRunbase*>> _events_map;
QList<IOutput*> _output_list;
public:
QList<quint64> allCmds() const;
void registerCmd(quint64 addr, Inlet::IRunbase* unit, const QString& alias);
QString getCmdAlias(quint64 addr) const;
QString getCmdDefault(quint64 addr) const;
void runWith(Inlet::IRunbase* unit);
QList<quint64> allEvents() const;
void registerEvent(quint64 addr, Inlet::IRunbase* unit, const QString& alias);
QString getEventAlias(quint64 addr) const;
QString getEventDefault(quint64 addr) const;
QString notifyWith(Inlet::IRunbase* unit);
};
}