| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- package protocol
- // ============================================================
- // 部署指令/分片 (Cloud → Edge)
- // ============================================================
- // Pack_DeployCmd 部署指令或分片
- type Pack_DeployCmd struct {
- Header
- Data DeployCmdData `json:"data"`
- }
- type DeployCmdData struct {
- Version string `json:"Version"` // 目标版本号
- FileName string `json:"FileName"` // 文件名, e.g. "ipole"
- TotalChunks int `json:"TotalChunks"` // 分片总数(Action="start"时有效)
- ChunkSize int `json:"ChunkSize"` // 单片大小(Action="start"时有效)
- ChunkIndex int `json:"ChunkIndex"` // 当前分片索引(Action="chunk"时有效)
- MD5 string `json:"MD5"` // 完整文件 MD5(Action="start"时有效)
- Data string `json:"Data"` // base64 编码的分片数据(Action="chunk"时有效)
- Action string `json:"Action"` // "start" | "chunk" | "abort"
- }
- func (o *Pack_DeployCmd) EnCodeCmd(id, gid string, seq uint64, version, fileName, md5 string, totalChunks, chunkSize int) (string, error) {
- o.Header.SetHeaderData(id, gid, seq)
- o.Data.Version = version
- o.Data.FileName = fileName
- o.Data.TotalChunks = totalChunks
- o.Data.ChunkSize = chunkSize
- o.Data.MD5 = md5
- o.Data.Action = "start"
- return json.MarshalToString(o)
- }
- func (o *Pack_DeployCmd) EnCodeChunk(id, gid string, seq uint64, version string, chunkIndex int, data string) (string, error) {
- o.Header.SetHeaderData(id, gid, seq)
- o.Data.Version = version
- o.Data.ChunkIndex = chunkIndex
- o.Data.Data = data
- o.Data.Action = "chunk"
- return json.MarshalToString(o)
- }
- func (o *Pack_DeployCmd) EnCodeAbort(id, gid string, seq uint64, version string) (string, error) {
- o.Header.SetHeaderData(id, gid, seq)
- o.Data.Version = version
- o.Data.Action = "abort"
- return json.MarshalToString(o)
- }
- func (o *Pack_DeployCmd) DeCode(message string) error {
- return json.UnmarshalFromString(message, o)
- }
- // ============================================================
- // 部署执行 ACK (Edge → Cloud)
- // ============================================================
- // Pack_DeployAck 部署执行结果(文件接收+替换的成功/失败)
- type Pack_DeployAck struct {
- Header
- Data DeployAckData `json:"data"`
- }
- type DeployAckData struct {
- Version string `json:"Version"`
- Success bool `json:"Success"`
- Error string `json:"Error"` // 失败时填写原因
- }
- func (o *Pack_DeployAck) EnCode(id, gid string, seq uint64, version string, success bool, errMsg string) (string, error) {
- o.Header.SetHeaderData(id, gid, seq)
- o.Data.Version = version
- o.Data.Success = success
- o.Data.Error = errMsg
- return json.MarshalToString(o)
- }
- func (o *Pack_DeployAck) DeCode(message string) error {
- return json.UnmarshalFromString(message, o)
- }
- // ============================================================
- // 健康检测结果 (Edge → Cloud)
- // ============================================================
- // Pack_HealthCheck 健康检测结果上报
- type Pack_HealthCheck struct {
- Header
- Data HealthCheckData `json:"data"`
- }
- type HealthCheckData struct {
- Version string `json:"Version"`
- Phase int `json:"Phase"` // 1 或 2
- Success bool `json:"Success"` // 当前 Phase 是否全部通过
- Timestamp int64 `json:"Timestamp"`
- Checks []HealthCheck `json:"Checks"`
- }
- type HealthCheck struct {
- Name string `json:"Name"` // "process" | "mqtt" | "redis" | "serial" | "modbus" | "device_online"
- Status string `json:"Status"` // "ok" | "fail" | "pending" | "timeout"
- Detail string `json:"Detail"` // 人类可读的详情
- DurationMs int `json:"DurationMs"` // 检测耗时ms
- }
- func (o *Pack_HealthCheck) EnCode(id, gid string, seq uint64, version string, phase int, success bool, checks []HealthCheck) (string, error) {
- o.Header.SetHeaderData(id, gid, seq)
- o.Data.Version = version
- o.Data.Phase = phase
- o.Data.Success = success
- o.Data.Timestamp = BJNow().Unix()
- o.Data.Checks = checks
- return json.MarshalToString(o)
- }
- func (o *Pack_HealthCheck) DeCode(message string) error {
- return json.UnmarshalFromString(message, o)
- }
|