1 Star 0 Fork 194

watertreestar/edge

forked from iBUILDING-X/driver-box 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
plugin.go 1.81 KB
一键复制 编辑 原始数据 按行查看 历史
watertreestar 提交于 2023-08-02 14:38 +08:00 . chore: rename package
package httpserver
import (
"gitee.com/watertreestar/edge/driverbox/common"
"gitee.com/watertreestar/edge/driverbox/config"
"gitee.com/watertreestar/edge/driverbox/helper"
"gitee.com/watertreestar/edge/driverbox/plugin"
lua "github.com/yuin/gopher-lua"
"go.uber.org/zap"
"sync"
)
type Plugin struct {
logger *zap.Logger // 日志记录器
config config.Config // 核心配置
callback plugin.OnReceiveHandler // 回调函数
adapter plugin.ProtocolAdapter // 协议适配器
connPool []*connector // 连接器
ls *lua.LState // lua 虚拟机
}
func (p *Plugin) Initialize(logger *zap.Logger, c config.Config, handler plugin.OnReceiveHandler, ls *lua.LState) (err error) {
p.logger = logger
p.config = c
p.callback = handler
p.ls = ls
// 初始化协议适配器
p.adapter = &adapter{
scriptDir: c.Key,
ls: ls,
lock: &sync.Mutex{},
}
// 初始化连接池
if err = p.initConnPool(); err != nil {
return
}
return nil
}
func (p *Plugin) ProtocolAdapter() plugin.ProtocolAdapter {
return p.adapter
}
// Connector 此协议不支持获取连接器
func (p *Plugin) Connector(deviceName, pointName string) (connector plugin.Connector, err error) {
return nil, common.NotSupportGetConnector
}
func (p *Plugin) Destroy() error {
defer p.ls.Close()
if len(p.connPool) > 0 {
for i, _ := range p.connPool {
if err := p.connPool[i].Release(); err != nil {
return err
}
}
}
return nil
}
// initConnPool 初始化连接池
func (p *Plugin) initConnPool() (err error) {
for key, _ := range p.config.Connections {
var c connectorConfig
if err = helper.Map2Struct(p.config.Connections[key], &c); err != nil {
return
}
conn := &connector{
plugin: p,
}
conn.startServer(c)
p.connPool = append(p.connPool, conn)
}
return
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/watertreestar/edge.git
git@gitee.com:watertreestar/edge.git
watertreestar
edge
edge
v1.0.0

搜索帮助