#pragma once #include #include #include #include #include #include #include "core/memory/MemoryPool.h" #include "core/plugin_system/IProtocolFramerPlugin.h" namespace softbus::message_bus::pipeline::protocol::modbusrtu { struct ModbusRtuFramerPluginConfig { std::size_t maxAdu{256}; int interFrameTimeoutMs{0}; }; class ModbusRtuFramerPlugin final : public softbus::core::plugin_system::IProtocolFramerPlugin { public: explicit ModbusRtuFramerPlugin(std::shared_ptr pool, ModbusRtuFramerPluginConfig cfg = {}); QString pluginId() const override; bool supports(const QString& protocolHint) const override; void bindMemoryPool(std::shared_ptr pool) override; std::unique_ptr createFramerSession( const QString& endpoint, const QJsonObject& params) override; private: std::shared_ptr m_pool; ModbusRtuFramerPluginConfig m_cfg; }; std::shared_ptr makeModbusRtuFramerPlugin( std::shared_ptr pool, ModbusRtuFramerPluginConfig cfg = {}); softbus::core::plugin_system::IProtocolFramerPlugin* createModbusRtuFramerPluginRaw(); } // namespace softbus::message_bus::pipeline::protocol::modbusrtu