PenetrateBase/PenetrateBasic/dispatch.h

47 lines
1.3 KiB
C++

#pragma once
#include <QString>
#include <QHash>
#include <memory>
#include "cmds_basic.h"
#include "validate_basic.h"
#include "logs_port.h"
namespace dispatch {
class Dispatch {
private:
QHash<quint64, std::pair<QString, Inlet::IRunbase*>> _cmds_map;
QHash<quint64, validate::IValidatorTemplet*> _cmds_validators;
QHash<quint64, std::pair<QString, Inlet::IRunbase*>> _events_map;
QList<std::shared_ptr<logs::LogsPort>> _output_list;
static Dispatch* _unique_inst;
public:
static Dispatch* unique();
void loadOutput(std::shared_ptr<logs::LogsPort> out_ins);
QList<quint64> 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);
void getValidateDepict(datas::IDataObject &object) const;
QList<quint64> 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);
};
}