1 Star 0 Fork 194

watertreestar/edge

forked from iBUILDING-X/driver-box 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
adapter.go 1.18 KB
一键复制 编辑 原始数据 按行查看 历史
watertreestar 提交于 2023-08-02 14:38 +08:00 . chore: rename package
package httpserver
import (
"encoding/json"
"gitee.com/watertreestar/edge/driverbox/common"
"gitee.com/watertreestar/edge/driverbox/helper"
"gitee.com/watertreestar/edge/driverbox/plugin"
lua "github.com/yuin/gopher-lua"
"sync"
)
// Adapter 协议适配器
type adapter struct {
scriptDir string // 脚本目录名称
ls *lua.LState // lua 虚拟机
lock *sync.Mutex
}
// protoData 协议数据,框架重组交由动态脚本解析
type protoData struct {
Path string `json:"path"` // 请求路径
Method string `json:"method"` // 请求方法
Body string `json:"body"` // 请求 body
// todo 后续待扩充
}
// ToJSON 协议数据转 json 字符串
func (pd protoData) ToJSON() string {
b, _ := json.Marshal(pd)
return string(b)
}
// Encode 编码数据,无需实现
func (a *adapter) Encode(deviceName string, mode plugin.EncodeMode, values plugin.PointData) (res interface{}, err error) {
return nil, common.NotSupportEncode
}
// Decode 解码数据,调用动态脚本解析
func (a *adapter) Decode(raw interface{}) (res []plugin.DeviceData, err error) {
a.lock.Lock()
defer a.lock.Unlock()
return helper.CallLuaConverter(a.ls, "decode", raw)
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/watertreestar/edge.git
git@gitee.com:watertreestar/edge.git
watertreestar
edge
edge
v1.0.0

搜索帮助