#pragma once #include #include #include #include #pragma warning (disable:4251) // “Mediator::OnXX”: class“CXXHelper::Event”需要有 dll 接口由 class“Mediator”的客户端使用 #include "TmplEvent.tlh" #ifdef MEDIATOR_EXPORTS #define _DeviceMediator_API __declspec(dllexport) #else #define _DeviceMediator_API __declspec(dllimport) #endif namespace DIOS { namespace Dev { using JSONString = std::string; struct tIODeviceGUID { using IODeviceGUID = std::function ; DWORD ID; IODeviceGUID funDeviceGUID; }; class tIOAction { public: using IOAction = std::function ; DWORD ID; std::string ProtoFuncName; IOAction funAction; }; struct tIOAttribute { using IOAttribute = std::function ; DWORD ID; std::string ProtoFuncName; IOAttribute funAttribute; }; //----------------------------------------------------------------------------- // Mediator //----------------------------------------------------------------------------- class _DeviceMediator_API Mediator { public: Mediator (); virtual ~Mediator (); public: bool Unregister (DWORD ID); //< Used by Driver or host public: int Action (std::string FuncName, JSONString, JSONString &); int Get (std::string FuncName, JSONString &); std::string GetDeviceType (); std::string GetDeviceResource (); //> //< Used by Device module public: DWORD RegistDeviceGUID (tIODeviceGUID::IODeviceGUID fun); DWORD RegistAction (std::string FuncName, tIOAction::IOAction fun); DWORD RegistAttribute (std::string FuncName, tIOAttribute::IOAttribute fun); //> //< Notify (callback) interface public: CXXHelper::Event OnNotify; CXXHelper::Event OnDataNotify; CXXHelper::Event OnMaxBlockSize; //> private: std::list m_DeviceGUID; std::list m_Action; std::list m_Attribute; }; } }