liuxiaolong
2021-02-07 abfd401180d1eb09c8ed1c24797c3e503e45fa08
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package bhomeclient
 
const (
    PORT_DEFAULTPROXY int = 5000
    KEY_REGISTER      int = 101 //处理TOPIC_REGISTER / TOPIC_LEAVE和TOPIC_UPDATETOPIC
    KEY_HEARTBEAT     int = 102 //处理TOPIC_HEARTBEAT
    KEY_QUERY         int = 103 //处理TOPIC_QUERYKEY和TOPIC_QUERYTOPIC和TOPIC_QUERYPROC
)
 
const (
    TOPIC_SERFNODELISTUPDATE string = "Topic_SerfNodeListUpdate"
    TOPIC_QUERYSERFNODELIST  string = "Topic_QuerySerfNodeList"
    TOPIC_REGISTER           string = "Topic_Register"
    TOPIC_DEREGISTER         string = "Topic_Deregister"
    TOPIC_HEARTBEAT          string = "Topic_Heartbeat"
    TOPIC_UPDATETOPIC        string = "Topic_UpdateTopic"
    TOPIC_QUERYKEY           string = "Topic_QueryKey"
    TOPIC_QUERYTOPIC         string = "Topic_QueryTopic"
    TOPIC_QUERYPROC          string = "Topic_QueryProc"
)
 
//const (
//    REPLY_SUCCESS int = 200
//    REPLY_FAILED int = 202
//)
//type CommonReply struct {
//    Status int    `json:"status"` // 请求状态,目前只有两个,成功返回200,失败202
//    Desc   string `json:"desc"`   // 请求状态的描述,成功"success",失败返回失败原因,如心跳服务未启动
//    Body   []byte `json:"body"`   // 返回值的具体内容,用户约定
//}
 
const (
    NODE_ALIVE int = 0
    NODE_DEAD  int = 1
)
 
type NodeList struct {
    Ip string `json:"ip"`
    Port int `json:"port"`
}
 
const (
    MesgType_PubSub   = "PUBSUB"
    MesgType_ReqRep   = "REQREP"
    MesgType_SendOnly = "SENDONLY"
)
 
type ServerInfo struct { // 节点基本信息
    ID              string                 `json:"id"`      // 机器ID
    IP              string                 `json:"ip"`      // 机器IP
    Port            int                    `json:"port"`    // 端口,代理进程的端口
    BoardID         string                 `json:"boardId"` // 板卡ID
    Info            string                 `json:"info"`    // 附加信息
}
 
type ProcInfo struct {
    Name             string                 `json:"name"` // 进程名称
    ID               string                 `json:"id"`   // 进程唯一标识
    Info             string                 `json:"info"` // 进程的描述信息,用于区分同一进程名称下多个进程
}
 
type RegisterInfo struct {
    Proc       ProcInfo `json:"proc"`       // 进程的信息
    Channel    []string `json:"channel"`    // 新增频道,对应一个新的共享内存队列
    PubTopic   []string `json:"pubTopic"`   // 进程对外发布的服务主题
    SubTopic   []string `json:"subTopic"`   // 进程订阅的服务主题
}
 
 
type RegisterReply struct {
    TCPProxyIP         string                 `json:"tcpProxyIP"`     // BHomeCenter启动的tcp代理服务器IP
    TCPProxyPort       int                    `json:"tcpProxyPort"`   // BHomeCenter启动的tcp代理服务器端口
    HeartbeatKey       int                    `json:"heartbeatKey"`   // client发送心跳的key
    ReplyKey           int                    `json:"replyKey"`       // client的应答服务key
    ChannelKey         map[string]int         `json:"channelKey"`     // client的chan对应的key
    QueryTopicKey      int                    `json:"queryTopicKey"`  // client查询topic对应的key时用到的key
    Status             int                    `json:"status"`         // 请求状态,目前只有两个,成功返回200,失败202
}
 
type HeartBeatInfo struct {
    Proc              ProcInfo             `json:"proc"`          // 进程的信息
    HealthLevel       string               `json:"healthLevel"`   // 健康等级
    Fps               int                  `json:"fps"`           // 处理帧率(dec解码帧率、sdk处理帧率)
    WarnInfo          string               `json:"warnInfo"`      // 报警信息
    ErrorInfo         string               `json:"errorInfo"`     // 错误信息
    OtherInfo         []byte               `json:"otherInfo"`     // 其他特有信息,如有需要就用这个
    OtherInfoSize     int                  `json:"otherInfoSize"` // 其他特有信息长度
}
 
type HeartBeatReply struct {
    Status             int                    `json:"status"`         // 请求状态,目前只有两个,成功返回200,失败202
    Desc               string                 `json:"desc"`           // 请求状态的描述,成功"success",失败返回失败原因,如心跳服务未启动
}
 
type MsgInfo struct {
    SrcProc          ProcInfo               `json:"srcProc"`        // 源进程基本信息
    MsgType           string                 `json:"msgType"`        // 数据类型,可为请求、发布、订阅、应答等
    Topic             string                `json:"topic"`            // 请求的函数,并不对应任何的shmKey,业务层的topic
    Body             []byte                `json:"body"`            // 请求内容
}
 
 
//节点及topic-key对应关系
type NodeInfo struct {
    SvrInfo           ServerInfo             `json:"svrInfo"`        //节点基本信息
    Topic2Key         map[string]int         `json:"topic2Key"`      //topic-replyKey的对应关系
    Status            int                    `json:"status"`            //节点状态
}
 
 
//已注册的Proc进程信息
type RegisteredClient struct {
    Info           RegisterInfo         `json:"info"`
    ReplyKey       int                    `json:"replyKey"`
    HeartbeatCount int                    `json:"heartbeatCount"`
    DeadCount      int                    `json:"deadCount"`
    Status         int                    `json:"status"`
}