3#include "PluginWakeOnLan.h"
4#include "ConnecterWakeOnLan.h"
5#include <QLoggingCategory>
7#ifdef HAVE_PCAPPLUSPLUS
8 #include "PcapPlusPlusVersion.h"
9 #include "PcapDevice.h"
11 static Q_LOGGING_CATEGORY(logPcpp,
"WOL.PCPP")
12 void Pcpp_Logger(pcpp::Logger::LogLevel logLevel,
13 const std::
string& logMessage,
14 const std::
string& file,
15 const std::
string& method,
20 case pcpp::Logger::LogLevel::Debug:
21 qDebug(logPcpp) << logMessage.c_str();
23 case pcpp::Logger::LogLevel::Info:
24 qInfo(logPcpp) << logMessage.c_str();
26 case pcpp::Logger::LogLevel::Error:
27 qCritical(logPcpp) << logMessage.c_str();
33static Q_LOGGING_CATEGORY(log,
"WakeOnLan.Plugin")
36 , m_pConnecter(
nullptr)
38#ifdef HAVE_PCAPPLUSPLUS
39 pcpp::Logger::getInstance().setLogPrinter(Pcpp_Logger);
40 pcpp::Logger::getInstance().setAllModulesToLogLevel(
41 pcpp::Logger::LogLevel::Debug);
43 pcpp::Logger::getInstance().enableLogs();
44 pcpp::Logger::getInstance().setLogLevel(
45 pcpp::LogModule::PcapLogModuleLiveDevice, pcpp::Logger::Info);
49CPluginWakeOnLan::~CPluginWakeOnLan()
51 qDebug(log) <<
"CPluginWakeOnLan::~CPluginWakeOnLan()";
66 return tr(
"Wake on lan");
71 return tr(
"Wake on lan");
74const QIcon CPluginWakeOnLan::Icon()
const
76 return QIcon::fromTheme(
"lan");
81 return PluginWakeOnLan_VERSION;
87#ifdef HAVE_PCAPPLUSPLUS
88 szDetails =
"- PcapPlusPlus";
90 szDetails +=
" - " + tr(
"version: ")
91 + pcpp::getPcapPlusPlusVersionFull().c_str();
93 szDetails +=
" - " + tr(
"Pcap lib version info: ")
94 + pcpp::IPcapDevice::getPcapLibVersionInfo().c_str();
103 if(!m_pConnecter)
return m_pConnecter;
105 QString szFile = m_pConnecter->GetSettingsFile();
107 if(!d.exists(szFile))
return m_pConnecter;
110 bool bRet = QMetaObject::invokeMethod(
113 Qt::DirectConnection,
114 Q_RETURN_ARG(
int, nRet),
115 Q_ARG(QString, szFile));
117 qCritical(log) <<
"Call m_pConnecter->Load(szFile) fail.";
121 qCritical(log) <<
"Load parameter fail" << nRet;
129CConnecter* CPluginWakeOnLan::OnCreateConnecter(
const QString &szId)
131 qDebug(log) << Q_FUNC_INFO;
141 qDebug(log) << Q_FUNC_INFO;
142 Q_ASSERT(m_pConnecter == p);
143 m_pConnecter =
nullptr;
客户端库 (CClient) 参数。仅在客户端库 (CClient) 和插件中使用。
客户端插件接口。用于建立 CConnecter 实例,它由协议插件实现。
virtual const QString Id() const
标识。默认: Protocol() + ":" + Name()
virtual Q_INVOKABLE CConnecter * CreateConnecter(const QString &szId, CParameterClient *para)
新建 CConnecter 实例。仅由 CClient 调用
virtual Q_INVOKABLE int DeleteConnecter(CConnecter *p)
Delete CConnecter
virtual const QString Details() const override
显示更多细节。 例如: 在关于对话框或日志中显示。 包括插件的依赖库的版本信息和描述
virtual CConnecter * CreateConnecter(const QString &szId, CParameterClient *para) override
新建 CConnecter 实例。仅由 CClient 调用
virtual const QString Protocol() const override
协议
virtual const QString DisplayName() const override
在界面上显示的名称
virtual const QString Name() const override
插件名,这个名一定要与工程名(${PROJECT_NAME})相同。 翻译文件(${PROJECT_NAME}_*.ts))名与其相关。
virtual const QString Version() const override
Version
virtual const QString Description() const override
描述
virtual int DeleteConnecter(CConnecter *p) override
Delete CConnecter