mirror of
				https://github.com/TeaOSLab/EdgeCommon.git
				synced 2025-11-04 05:00:24 +08:00 
			
		
		
		
	实现缓存策略若干功能
This commit is contained in:
		
							
								
								
									
										54
									
								
								pkg/messageconfigs/messages.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								pkg/messageconfigs/messages.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
				
			|||||||
 | 
					package messageconfigs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type MessageCode = string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						MessageCodeConnectedAPINode MessageCode = "connectedAPINode" // 边缘节点连接API节点成功
 | 
				
			||||||
 | 
						MessageCodeWriteCache       MessageCode = "writeCache"       // 写入缓存
 | 
				
			||||||
 | 
						MessageCodeReadCache        MessageCode = "readCache"        // 读取缓存
 | 
				
			||||||
 | 
						MessageCodeStatCache        MessageCode = "statCache"        // 统计缓存
 | 
				
			||||||
 | 
						MessageCodePurgeCache       MessageCode = "purgeCache"       // 删除缓存
 | 
				
			||||||
 | 
						MessageCodeCleanCache       MessageCode = "cleanCache"       // 清理缓存
 | 
				
			||||||
 | 
						MessageCodePreheatCache     MessageCode = "preheatCache"     // 预热缓存
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 连接API节点成功
 | 
				
			||||||
 | 
					type ConnectedAPINodeMessage struct {
 | 
				
			||||||
 | 
						APINodeId int64 `json:"apiNodeId"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 写入缓存
 | 
				
			||||||
 | 
					type WriteCacheMessage struct {
 | 
				
			||||||
 | 
						CachePolicyJSON []byte `json:"cachePolicyJSON"`
 | 
				
			||||||
 | 
						Key             string `json:"key"`
 | 
				
			||||||
 | 
						Value           []byte `json:"value"`
 | 
				
			||||||
 | 
						LifeSeconds     int64  `json:"lifeSeconds"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 读取缓存
 | 
				
			||||||
 | 
					type ReadCacheMessage struct {
 | 
				
			||||||
 | 
						CachePolicyJSON []byte `json:"cachePolicyJSON"`
 | 
				
			||||||
 | 
						Key             string `json:"key"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 统计缓存
 | 
				
			||||||
 | 
					type StatCacheMessage struct {
 | 
				
			||||||
 | 
						CachePolicyJSON []byte `json:"cachePolicyJSON"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 清除缓存
 | 
				
			||||||
 | 
					type CleanCacheMessage struct {
 | 
				
			||||||
 | 
						CachePolicyJSON []byte `json:"cachePolicyJSON"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 删除缓存
 | 
				
			||||||
 | 
					type PurgeCacheMessage struct {
 | 
				
			||||||
 | 
						CachePolicyJSON []byte   `json:"cachePolicyJSON"`
 | 
				
			||||||
 | 
						Keys            []string `json:"keys"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 预热缓存
 | 
				
			||||||
 | 
					type PreheatCacheMessage struct {
 | 
				
			||||||
 | 
						CachePolicyJSON []byte   `json:"cachePolicyJSON"`
 | 
				
			||||||
 | 
						Keys            []string `json:"keys"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -37,9 +37,10 @@ type APINode struct {
 | 
				
			|||||||
	Secret          string   `protobuf:"bytes,5,opt,name=secret,proto3" json:"secret,omitempty"`
 | 
						Secret          string   `protobuf:"bytes,5,opt,name=secret,proto3" json:"secret,omitempty"`
 | 
				
			||||||
	Name            string   `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"`
 | 
						Name            string   `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"`
 | 
				
			||||||
	Description     string   `protobuf:"bytes,7,opt,name=description,proto3" json:"description,omitempty"`
 | 
						Description     string   `protobuf:"bytes,7,opt,name=description,proto3" json:"description,omitempty"`
 | 
				
			||||||
	Host        string `protobuf:"bytes,8,opt,name=host,proto3" json:"host,omitempty"`
 | 
						HttpJSON        []byte   `protobuf:"bytes,8,opt,name=httpJSON,proto3" json:"httpJSON,omitempty"`
 | 
				
			||||||
	Port        int32  `protobuf:"varint,9,opt,name=port,proto3" json:"port,omitempty"`
 | 
						HttpsJSON       []byte   `protobuf:"bytes,9,opt,name=httpsJSON,proto3" json:"httpsJSON,omitempty"`
 | 
				
			||||||
	Address     string `protobuf:"bytes,100,opt,name=address,proto3" json:"address,omitempty"`
 | 
						AccessAddrsJSON []byte   `protobuf:"bytes,10,opt,name=accessAddrsJSON,proto3" json:"accessAddrsJSON,omitempty"`
 | 
				
			||||||
 | 
						AccessAddrs     []string `protobuf:"bytes,11,rep,name=accessAddrs,proto3" json:"accessAddrs,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *APINode) Reset() {
 | 
					func (x *APINode) Reset() {
 | 
				
			||||||
@@ -123,32 +124,39 @@ func (x *APINode) GetDescription() string {
 | 
				
			|||||||
	return ""
 | 
						return ""
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *APINode) GetHost() string {
 | 
					func (x *APINode) GetHttpJSON() []byte {
 | 
				
			||||||
	if x != nil {
 | 
						if x != nil {
 | 
				
			||||||
		return x.Host
 | 
							return x.HttpJSON
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return ""
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *APINode) GetPort() int32 {
 | 
					func (x *APINode) GetHttpsJSON() []byte {
 | 
				
			||||||
	if x != nil {
 | 
						if x != nil {
 | 
				
			||||||
		return x.Port
 | 
							return x.HttpsJSON
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return 0
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *APINode) GetAddress() string {
 | 
					func (x *APINode) GetAccessAddrsJSON() []byte {
 | 
				
			||||||
	if x != nil {
 | 
						if x != nil {
 | 
				
			||||||
		return x.Address
 | 
							return x.AccessAddrsJSON
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return ""
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *APINode) GetAccessAddrs() []string {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.AccessAddrs
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var File_model_api_node_proto protoreflect.FileDescriptor
 | 
					var File_model_api_node_proto protoreflect.FileDescriptor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var file_model_api_node_proto_rawDesc = []byte{
 | 
					var file_model_api_node_proto_rawDesc = []byte{
 | 
				
			||||||
	0x0a, 0x14, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6e, 0x6f, 0x64, 0x65,
 | 
						0x0a, 0x14, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6e, 0x6f, 0x64, 0x65,
 | 
				
			||||||
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x22, 0xf7, 0x01, 0x0a, 0x07, 0x41,
 | 
						0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x22, 0xbb, 0x02, 0x0a, 0x07, 0x41,
 | 
				
			||||||
	0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
 | 
						0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
 | 
				
			||||||
	0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x18, 0x02,
 | 
						0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x18, 0x02,
 | 
				
			||||||
	0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c,
 | 
						0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c,
 | 
				
			||||||
@@ -160,12 +168,16 @@ var file_model_api_node_proto_rawDesc = []byte{
 | 
				
			|||||||
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
 | 
						0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
 | 
				
			||||||
	0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18,
 | 
						0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18,
 | 
				
			||||||
	0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
 | 
						0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
 | 
				
			||||||
	0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09,
 | 
						0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x74, 0x74, 0x70, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x08,
 | 
				
			||||||
	0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x09,
 | 
						0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x68, 0x74, 0x74, 0x70, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x1c,
 | 
				
			||||||
	0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64,
 | 
						0x0a, 0x09, 0x68, 0x74, 0x74, 0x70, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x09, 0x20, 0x01, 0x28,
 | 
				
			||||||
	0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x64, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64,
 | 
						0x0c, 0x52, 0x09, 0x68, 0x74, 0x74, 0x70, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x28, 0x0a, 0x0f,
 | 
				
			||||||
	0x72, 0x65, 0x73, 0x73, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72,
 | 
						0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x41, 0x64, 0x64, 0x72, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x18,
 | 
				
			||||||
	0x6f, 0x74, 0x6f, 0x33,
 | 
						0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x41, 0x64, 0x64,
 | 
				
			||||||
 | 
						0x72, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73,
 | 
				
			||||||
 | 
						0x41, 0x64, 0x64, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63,
 | 
				
			||||||
 | 
						0x65, 0x73, 0x73, 0x41, 0x64, 0x64, 0x72, 0x73, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62,
 | 
				
			||||||
 | 
						0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -40,6 +40,7 @@ type Node struct {
 | 
				
			|||||||
	Secret              string             `protobuf:"bytes,8,opt,name=secret,proto3" json:"secret,omitempty"`
 | 
						Secret              string             `protobuf:"bytes,8,opt,name=secret,proto3" json:"secret,omitempty"`
 | 
				
			||||||
	Version             int64              `protobuf:"varint,9,opt,name=version,proto3" json:"version,omitempty"`
 | 
						Version             int64              `protobuf:"varint,9,opt,name=version,proto3" json:"version,omitempty"`
 | 
				
			||||||
	LatestVersion       int64              `protobuf:"varint,10,opt,name=latestVersion,proto3" json:"latestVersion,omitempty"`
 | 
						LatestVersion       int64              `protobuf:"varint,10,opt,name=latestVersion,proto3" json:"latestVersion,omitempty"`
 | 
				
			||||||
 | 
						ConnectedAPINodeIds []int64            `protobuf:"varint,11,rep,packed,name=connectedAPINodeIds,proto3" json:"connectedAPINodeIds,omitempty"`
 | 
				
			||||||
	Cluster             *NodeCluster       `protobuf:"bytes,32,opt,name=cluster,proto3" json:"cluster,omitempty"`
 | 
						Cluster             *NodeCluster       `protobuf:"bytes,32,opt,name=cluster,proto3" json:"cluster,omitempty"`
 | 
				
			||||||
	Login               *NodeLogin         `protobuf:"bytes,33,opt,name=login,proto3" json:"login,omitempty"`
 | 
						Login               *NodeLogin         `protobuf:"bytes,33,opt,name=login,proto3" json:"login,omitempty"`
 | 
				
			||||||
	InstallStatus       *NodeInstallStatus `protobuf:"bytes,34,opt,name=installStatus,proto3" json:"installStatus,omitempty"`
 | 
						InstallStatus       *NodeInstallStatus `protobuf:"bytes,34,opt,name=installStatus,proto3" json:"installStatus,omitempty"`
 | 
				
			||||||
@@ -147,6 +148,13 @@ func (x *Node) GetLatestVersion() int64 {
 | 
				
			|||||||
	return 0
 | 
						return 0
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *Node) GetConnectedAPINodeIds() []int64 {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.ConnectedAPINodeIds
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *Node) GetCluster() *NodeCluster {
 | 
					func (x *Node) GetCluster() *NodeCluster {
 | 
				
			||||||
	if x != nil {
 | 
						if x != nil {
 | 
				
			||||||
		return x.Cluster
 | 
							return x.Cluster
 | 
				
			||||||
@@ -177,7 +185,7 @@ var file_model_node_proto_rawDesc = []byte{
 | 
				
			|||||||
	0x1a, 0x16, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6c, 0x6f, 0x67,
 | 
						0x1a, 0x16, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6c, 0x6f, 0x67,
 | 
				
			||||||
	0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f,
 | 
						0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f,
 | 
				
			||||||
	0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x61,
 | 
						0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x61,
 | 
				
			||||||
	0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x99, 0x03, 0x0a, 0x04, 0x4e, 0x6f,
 | 
						0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcb, 0x03, 0x0a, 0x04, 0x4e, 0x6f,
 | 
				
			||||||
	0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02,
 | 
						0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02,
 | 
				
			||||||
	0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
 | 
						0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
 | 
				
			||||||
	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
 | 
						0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
 | 
				
			||||||
@@ -194,17 +202,20 @@ var file_model_node_proto_rawDesc = []byte{
 | 
				
			|||||||
	0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
 | 
						0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
 | 
				
			||||||
	0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73,
 | 
						0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73,
 | 
				
			||||||
	0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73,
 | 
						0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73,
 | 
				
			||||||
	0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73,
 | 
						0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x6e,
 | 
				
			||||||
	0x74, 0x65, 0x72, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x4e,
 | 
						0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x73, 0x18,
 | 
				
			||||||
	0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73,
 | 
						0x0b, 0x20, 0x03, 0x28, 0x03, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64,
 | 
				
			||||||
	0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x05, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x21, 0x20, 0x01,
 | 
						0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x73, 0x12, 0x29, 0x0a, 0x07, 0x63, 0x6c,
 | 
				
			||||||
	0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x4c, 0x6f, 0x67, 0x69,
 | 
						0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62,
 | 
				
			||||||
	0x6e, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x3b, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74,
 | 
						0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c,
 | 
				
			||||||
	0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32,
 | 
						0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x05, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x21,
 | 
				
			||||||
	0x15, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c,
 | 
						0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x4c, 0x6f,
 | 
				
			||||||
	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x53,
 | 
						0x67, 0x69, 0x6e, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x3b, 0x0a, 0x0d, 0x69, 0x6e,
 | 
				
			||||||
	0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70,
 | 
						0x73, 0x74, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x22, 0x20, 0x01, 0x28,
 | 
				
			||||||
	0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
						0x0b, 0x32, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61,
 | 
				
			||||||
 | 
						0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c,
 | 
				
			||||||
 | 
						0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62,
 | 
				
			||||||
 | 
						0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,8 +37,10 @@ type CreateAPINodeRequest struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	Name            string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 | 
						Name            string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 | 
				
			||||||
	Description     string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
 | 
						Description     string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
 | 
				
			||||||
	Host        string `protobuf:"bytes,3,opt,name=host,proto3" json:"host,omitempty"`
 | 
						HttpJSON        []byte `protobuf:"bytes,3,opt,name=httpJSON,proto3" json:"httpJSON,omitempty"`
 | 
				
			||||||
	Port        int32  `protobuf:"varint,4,opt,name=port,proto3" json:"port,omitempty"`
 | 
						HttpsJSON       []byte `protobuf:"bytes,4,opt,name=httpsJSON,proto3" json:"httpsJSON,omitempty"`
 | 
				
			||||||
 | 
						AccessAddrsJSON []byte `protobuf:"bytes,5,opt,name=accessAddrsJSON,proto3" json:"accessAddrsJSON,omitempty"`
 | 
				
			||||||
 | 
						IsOn            bool   `protobuf:"varint,6,opt,name=isOn,proto3" json:"isOn,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *CreateAPINodeRequest) Reset() {
 | 
					func (x *CreateAPINodeRequest) Reset() {
 | 
				
			||||||
@@ -87,18 +89,32 @@ func (x *CreateAPINodeRequest) GetDescription() string {
 | 
				
			|||||||
	return ""
 | 
						return ""
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *CreateAPINodeRequest) GetHost() string {
 | 
					func (x *CreateAPINodeRequest) GetHttpJSON() []byte {
 | 
				
			||||||
	if x != nil {
 | 
						if x != nil {
 | 
				
			||||||
		return x.Host
 | 
							return x.HttpJSON
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return ""
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *CreateAPINodeRequest) GetPort() int32 {
 | 
					func (x *CreateAPINodeRequest) GetHttpsJSON() []byte {
 | 
				
			||||||
	if x != nil {
 | 
						if x != nil {
 | 
				
			||||||
		return x.Port
 | 
							return x.HttpsJSON
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return 0
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CreateAPINodeRequest) GetAccessAddrsJSON() []byte {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.AccessAddrsJSON
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *CreateAPINodeRequest) GetIsOn() bool {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.IsOn
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return false
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type CreateAPINodeResponse struct {
 | 
					type CreateAPINodeResponse struct {
 | 
				
			||||||
@@ -157,8 +173,10 @@ type UpdateAPINodeRequest struct {
 | 
				
			|||||||
	NodeId          int64  `protobuf:"varint,1,opt,name=nodeId,proto3" json:"nodeId,omitempty"`
 | 
						NodeId          int64  `protobuf:"varint,1,opt,name=nodeId,proto3" json:"nodeId,omitempty"`
 | 
				
			||||||
	Name            string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
 | 
						Name            string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
 | 
				
			||||||
	Description     string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
 | 
						Description     string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
 | 
				
			||||||
	Host        string `protobuf:"bytes,4,opt,name=host,proto3" json:"host,omitempty"`
 | 
						HttpJSON        []byte `protobuf:"bytes,4,opt,name=httpJSON,proto3" json:"httpJSON,omitempty"`
 | 
				
			||||||
	Port        int32  `protobuf:"varint,5,opt,name=port,proto3" json:"port,omitempty"`
 | 
						HttpsJSON       []byte `protobuf:"bytes,5,opt,name=httpsJSON,proto3" json:"httpsJSON,omitempty"`
 | 
				
			||||||
 | 
						AccessAddrsJSON []byte `protobuf:"bytes,6,opt,name=accessAddrsJSON,proto3" json:"accessAddrsJSON,omitempty"`
 | 
				
			||||||
 | 
						IsOn            bool   `protobuf:"varint,7,opt,name=isOn,proto3" json:"isOn,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *UpdateAPINodeRequest) Reset() {
 | 
					func (x *UpdateAPINodeRequest) Reset() {
 | 
				
			||||||
@@ -214,18 +232,32 @@ func (x *UpdateAPINodeRequest) GetDescription() string {
 | 
				
			|||||||
	return ""
 | 
						return ""
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *UpdateAPINodeRequest) GetHost() string {
 | 
					func (x *UpdateAPINodeRequest) GetHttpJSON() []byte {
 | 
				
			||||||
	if x != nil {
 | 
						if x != nil {
 | 
				
			||||||
		return x.Host
 | 
							return x.HttpJSON
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return ""
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *UpdateAPINodeRequest) GetPort() int32 {
 | 
					func (x *UpdateAPINodeRequest) GetHttpsJSON() []byte {
 | 
				
			||||||
	if x != nil {
 | 
						if x != nil {
 | 
				
			||||||
		return x.Port
 | 
							return x.HttpsJSON
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return 0
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *UpdateAPINodeRequest) GetAccessAddrsJSON() []byte {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.AccessAddrsJSON
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *UpdateAPINodeRequest) GetIsOn() bool {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.IsOn
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return false
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 删除API节点
 | 
					// 删除API节点
 | 
				
			||||||
@@ -653,95 +685,105 @@ var file_service_api_node_proto_rawDesc = []byte{
 | 
				
			|||||||
	0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a, 0x14, 0x6d, 0x6f,
 | 
						0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a, 0x14, 0x6d, 0x6f,
 | 
				
			||||||
	0x64, 0x65, 0x6c, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f,
 | 
						0x64, 0x65, 0x6c, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f,
 | 
				
			||||||
	0x74, 0x6f, 0x1a, 0x12, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73,
 | 
						0x74, 0x6f, 0x1a, 0x12, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73,
 | 
				
			||||||
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x74, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
 | 
						0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc4, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74,
 | 
				
			||||||
	0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12,
 | 
						0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
 | 
				
			||||||
	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
 | 
						0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
 | 
				
			||||||
	0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
 | 
						0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
 | 
				
			||||||
	0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
 | 
						0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
 | 
				
			||||||
	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01,
 | 
						0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x74, 0x74, 0x70, 0x4a, 0x53, 0x4f,
 | 
				
			||||||
	0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74,
 | 
						0x4e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x68, 0x74, 0x74, 0x70, 0x4a, 0x53, 0x4f,
 | 
				
			||||||
	0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x2f, 0x0a, 0x15,
 | 
						0x4e, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x74, 0x74, 0x70, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x04,
 | 
				
			||||||
	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73,
 | 
						0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x68, 0x74, 0x74, 0x70, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x12,
 | 
				
			||||||
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x18,
 | 
						0x28, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x41, 0x64, 0x64, 0x72, 0x73, 0x4a, 0x53,
 | 
				
			||||||
	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0x8c, 0x01,
 | 
						0x4f, 0x4e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73,
 | 
				
			||||||
	0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52,
 | 
						0x41, 0x64, 0x64, 0x72, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x4f,
 | 
				
			||||||
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64,
 | 
						0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x22, 0x2f, 0x0a,
 | 
				
			||||||
	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x12,
 | 
						0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65,
 | 
				
			||||||
	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
 | 
						0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64,
 | 
				
			||||||
	0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
 | 
						0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0xdc,
 | 
				
			||||||
	0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
 | 
						0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65,
 | 
				
			||||||
	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01,
 | 
						0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49,
 | 
				
			||||||
	0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74,
 | 
						0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12,
 | 
				
			||||||
	0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x2e, 0x0a, 0x14,
 | 
						0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
 | 
				
			||||||
	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71,
 | 
						0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
 | 
				
			||||||
	0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x18, 0x01,
 | 
						0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
 | 
				
			||||||
	0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0x1f, 0x0a, 0x1d,
 | 
						0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x74, 0x74, 0x70, 0x4a, 0x53, 0x4f,
 | 
				
			||||||
	0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50,
 | 
						0x4e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x68, 0x74, 0x74, 0x70, 0x4a, 0x53, 0x4f,
 | 
				
			||||||
	0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x43, 0x0a,
 | 
						0x4e, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x74, 0x74, 0x70, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x05,
 | 
				
			||||||
	0x1e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41,
 | 
						0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x68, 0x74, 0x74, 0x70, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x12,
 | 
				
			||||||
	0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
 | 
						0x28, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x41, 0x64, 0x64, 0x72, 0x73, 0x4a, 0x53,
 | 
				
			||||||
	0x21, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b,
 | 
						0x4f, 0x4e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73,
 | 
				
			||||||
	0x2e, 0x70, 0x62, 0x2e, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x64,
 | 
						0x41, 0x64, 0x64, 0x72, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x4f,
 | 
				
			||||||
	0x65, 0x73, 0x22, 0x20, 0x0a, 0x1e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e,
 | 
						0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x22, 0x2e, 0x0a,
 | 
				
			||||||
	0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71,
 | 
						0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65,
 | 
				
			||||||
	0x75, 0x65, 0x73, 0x74, 0x22, 0x37, 0x0a, 0x1f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c,
 | 
						0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x18,
 | 
				
			||||||
 | 
						0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0x1f, 0x0a,
 | 
				
			||||||
 | 
						0x1d, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41,
 | 
				
			||||||
 | 
						0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x43,
 | 
				
			||||||
 | 
						0x0a, 0x1e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
 | 
				
			||||||
 | 
						0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
 | 
				
			||||||
 | 
						0x12, 0x21, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
 | 
				
			||||||
 | 
						0x0b, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x6e, 0x6f,
 | 
				
			||||||
 | 
						0x64, 0x65, 0x73, 0x22, 0x20, 0x0a, 0x1e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45,
 | 
				
			||||||
 | 
						0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65,
 | 
				
			||||||
 | 
						0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x37, 0x0a, 0x1f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c,
 | 
				
			||||||
 | 
						0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73,
 | 
				
			||||||
 | 
						0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e,
 | 
				
			||||||
 | 
						0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x48,
 | 
				
			||||||
 | 
						0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49,
 | 
				
			||||||
 | 
						0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06,
 | 
				
			||||||
 | 
						0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66,
 | 
				
			||||||
 | 
						0x66, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01,
 | 
				
			||||||
 | 
						0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x40, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74,
 | 
				
			||||||
	0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52,
 | 
						0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52,
 | 
				
			||||||
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74,
 | 
						0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73,
 | 
				
			||||||
	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x48, 0x0a,
 | 
						0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x50, 0x49, 0x4e,
 | 
				
			||||||
	0x1a, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e,
 | 
						0x6f, 0x64, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x33, 0x0a, 0x19, 0x46, 0x69,
 | 
				
			||||||
	0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f,
 | 
						0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65,
 | 
				
			||||||
	0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66,
 | 
						0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49,
 | 
				
			||||||
	0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
 | 
						0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22,
 | 
				
			||||||
	0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x40, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x45,
 | 
						0x3d, 0x0a, 0x1a, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50,
 | 
				
			||||||
	0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65,
 | 
						0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a,
 | 
				
			||||||
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18,
 | 
						0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62,
 | 
				
			||||||
	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x50, 0x49, 0x4e, 0x6f,
 | 
						0x2e, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x32, 0xca,
 | 
				
			||||||
	0x64, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x33, 0x0a, 0x19, 0x46, 0x69, 0x6e,
 | 
						0x04, 0x0a, 0x0e, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
 | 
				
			||||||
	0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52,
 | 
						0x65, 0x12, 0x44, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f,
 | 
				
			||||||
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64,
 | 
						0x64, 0x65, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50,
 | 
				
			||||||
	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0x3d,
 | 
						0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x70,
 | 
				
			||||||
	0x0a, 0x1a, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49,
 | 
						0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52,
 | 
				
			||||||
	0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x04,
 | 
						0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74,
 | 
				
			||||||
	0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x2e,
 | 
						0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70,
 | 
				
			||||||
	0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x32, 0xca, 0x04,
 | 
						0x64, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
 | 
				
			||||||
	0x0a, 0x0e, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
 | 
						0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x55, 0x70, 0x64, 0x61, 0x74,
 | 
				
			||||||
	0x12, 0x44, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64,
 | 
						0x65, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x3f, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65,
 | 
				
			||||||
	0x65, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49,
 | 
						0x74, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x44,
 | 
				
			||||||
	0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x70, 0x62,
 | 
						0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75,
 | 
				
			||||||
	0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65,
 | 
						0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x44, 0x65, 0x6c, 0x65,
 | 
				
			||||||
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
 | 
						0x74, 0x65, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x5f, 0x0a, 0x16, 0x66, 0x69, 0x6e,
 | 
				
			||||||
	0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64,
 | 
						0x64, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f,
 | 
				
			||||||
	0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
 | 
						0x64, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c,
 | 
				
			||||||
	0x74, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
 | 
						0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52,
 | 
				
			||||||
	0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x3f, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74,
 | 
						0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64,
 | 
				
			||||||
	0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65,
 | 
					 | 
				
			||||||
	0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
 | 
					 | 
				
			||||||
	0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x44, 0x65, 0x6c, 0x65, 0x74,
 | 
					 | 
				
			||||||
	0x65, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x5f, 0x0a, 0x16, 0x66, 0x69, 0x6e, 0x64,
 | 
					 | 
				
			||||||
	0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64,
 | 
						0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64,
 | 
				
			||||||
	0x65, 0x73, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x45,
 | 
						0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x17, 0x63, 0x6f,
 | 
				
			||||||
	0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65,
 | 
					 | 
				
			||||||
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41,
 | 
					 | 
				
			||||||
	0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65,
 | 
					 | 
				
			||||||
	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x17, 0x63, 0x6f, 0x75,
 | 
					 | 
				
			||||||
	0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e,
 | 
					 | 
				
			||||||
	0x6f, 0x64, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41,
 | 
					 | 
				
			||||||
	0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65,
 | 
					 | 
				
			||||||
	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f,
 | 
					 | 
				
			||||||
	0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49,
 | 
						0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49,
 | 
				
			||||||
	0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a,
 | 
						0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74,
 | 
				
			||||||
	0x13, 0x6c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e,
 | 
						0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64,
 | 
				
			||||||
	0x6f, 0x64, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e,
 | 
						0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x70, 0x62, 0x2e, 0x43,
 | 
				
			||||||
	0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71,
 | 
						0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50,
 | 
				
			||||||
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e,
 | 
						0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56,
 | 
				
			||||||
	0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73,
 | 
						0x0a, 0x13, 0x6c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49,
 | 
				
			||||||
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x12, 0x66, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61,
 | 
						0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45,
 | 
				
			||||||
	0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x2e, 0x70, 0x62,
 | 
						0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65,
 | 
				
			||||||
 | 
						0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45,
 | 
				
			||||||
 | 
						0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65,
 | 
				
			||||||
 | 
						0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x12, 0x66, 0x69, 0x6e, 0x64, 0x45, 0x6e,
 | 
				
			||||||
 | 
						0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x2e, 0x70,
 | 
				
			||||||
 | 
						0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49,
 | 
				
			||||||
 | 
						0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x70, 0x62,
 | 
				
			||||||
	0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e,
 | 
						0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e,
 | 
				
			||||||
	0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x70, 0x62, 0x2e,
 | 
						0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e,
 | 
				
			||||||
	0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x4e, 0x6f,
 | 
						0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
				
			||||||
	0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f,
 | 
					 | 
				
			||||||
	0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -11,8 +11,8 @@ message APINode {
 | 
				
			|||||||
	string secret = 5;
 | 
						string secret = 5;
 | 
				
			||||||
	string name = 6;
 | 
						string name = 6;
 | 
				
			||||||
	string description = 7;
 | 
						string description = 7;
 | 
				
			||||||
	string host = 8;
 | 
						bytes httpJSON = 8;
 | 
				
			||||||
	int32 port = 9;
 | 
						bytes httpsJSON = 9;
 | 
				
			||||||
 | 
						bytes accessAddrsJSON = 10;
 | 
				
			||||||
	string address = 100;
 | 
						repeated string accessAddrs = 11;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -18,6 +18,7 @@ message Node {
 | 
				
			|||||||
	string secret = 8;
 | 
						string secret = 8;
 | 
				
			||||||
	int64 version = 9;
 | 
						int64 version = 9;
 | 
				
			||||||
	int64 latestVersion = 10;
 | 
						int64 latestVersion = 10;
 | 
				
			||||||
 | 
						repeated int64 connectedAPINodeIds = 11;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	NodeCluster cluster = 32;
 | 
						NodeCluster cluster = 32;
 | 
				
			||||||
	NodeLogin login = 33;
 | 
						NodeLogin login = 33;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,8 +32,10 @@ service APINodeService {
 | 
				
			|||||||
message CreateAPINodeRequest {
 | 
					message CreateAPINodeRequest {
 | 
				
			||||||
	string name = 1;
 | 
						string name = 1;
 | 
				
			||||||
	string description = 2;
 | 
						string description = 2;
 | 
				
			||||||
	string host = 3;
 | 
						bytes httpJSON = 3;
 | 
				
			||||||
	int32 port = 4;
 | 
						bytes httpsJSON = 4;
 | 
				
			||||||
 | 
						bytes accessAddrsJSON = 5;
 | 
				
			||||||
 | 
						bool isOn = 6;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
message CreateAPINodeResponse {
 | 
					message CreateAPINodeResponse {
 | 
				
			||||||
@@ -45,8 +47,10 @@ message UpdateAPINodeRequest {
 | 
				
			|||||||
	int64 nodeId = 1;
 | 
						int64 nodeId = 1;
 | 
				
			||||||
	string name = 2;
 | 
						string name = 2;
 | 
				
			||||||
	string description = 3;
 | 
						string description = 3;
 | 
				
			||||||
	string host = 4;
 | 
						bytes httpJSON = 4;
 | 
				
			||||||
	int32 port = 5;
 | 
						bytes httpsJSON = 5;
 | 
				
			||||||
 | 
						bytes accessAddrsJSON = 6;
 | 
				
			||||||
 | 
						bool isOn = 7;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 删除API节点
 | 
					// 删除API节点
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,6 +19,9 @@ service NodeService {
 | 
				
			|||||||
	// 列出单页节点
 | 
						// 列出单页节点
 | 
				
			||||||
	rpc listEnabledNodesMatch (ListEnabledNodesMatchRequest) returns (ListEnabledNodesMatchResponse);
 | 
						rpc listEnabledNodesMatch (ListEnabledNodesMatchRequest) returns (ListEnabledNodesMatchResponse);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 根据集群查找所有节点
 | 
				
			||||||
 | 
						rpc findAllEnabledNodesWithClusterId (FindAllEnabledNodesWithClusterIdRequest) returns (FindAllEnabledNodesWithClusterIdResponse);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// 禁用节点
 | 
						// 禁用节点
 | 
				
			||||||
	rpc disableNode (DisableNodeRequest) returns (DisableNodeResponse);
 | 
						rpc disableNode (DisableNodeRequest) returns (DisableNodeResponse);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -32,7 +35,10 @@ service NodeService {
 | 
				
			|||||||
	rpc composeNodeConfig (ComposeNodeConfigRequest) returns (ComposeNodeConfigResponse);
 | 
						rpc composeNodeConfig (ComposeNodeConfigRequest) returns (ComposeNodeConfigResponse);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// 节点stream
 | 
						// 节点stream
 | 
				
			||||||
	rpc nodeStream (stream NodeStreamRequest) returns (stream NodeStreamResponse);
 | 
						rpc nodeStream (stream NodeStreamMessage) returns (stream NodeStreamMessage);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 向节点发送命令
 | 
				
			||||||
 | 
						rpc sendCommandToNode (NodeStreamMessage) returns (NodeStreamMessage);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// 更新节点状态
 | 
						// 更新节点状态
 | 
				
			||||||
	rpc updateNodeStatus (UpdateNodeStatusRequest) returns (RPCUpdateSuccess);
 | 
						rpc updateNodeStatus (UpdateNodeStatusRequest) returns (RPCUpdateSuccess);
 | 
				
			||||||
@@ -45,6 +51,9 @@ service NodeService {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// 安装节点
 | 
						// 安装节点
 | 
				
			||||||
	rpc installNode (InstallNodeRequest) returns (InstallNodeResponse);
 | 
						rpc installNode (InstallNodeRequest) returns (InstallNodeResponse);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 更改节点连接的API节点信息
 | 
				
			||||||
 | 
						rpc updateNodeConnectedAPINodes (UpdateNodeConnectedAPINodesRequest) returns (RPCUpdateSuccess);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 创建节点
 | 
					// 创建节点
 | 
				
			||||||
@@ -80,6 +89,15 @@ message ListEnabledNodesMatchResponse {
 | 
				
			|||||||
	repeated Node nodes = 1;
 | 
						repeated Node nodes = 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 根据集群查找所有节点
 | 
				
			||||||
 | 
					message FindAllEnabledNodesWithClusterIdRequest {
 | 
				
			||||||
 | 
						int64 clusterId = 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message FindAllEnabledNodesWithClusterIdResponse {
 | 
				
			||||||
 | 
						repeated Node nodes = 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 禁用节点
 | 
					// 禁用节点
 | 
				
			||||||
message DisableNodeRequest {
 | 
					message DisableNodeRequest {
 | 
				
			||||||
	int64 nodeId = 1;
 | 
						int64 nodeId = 1;
 | 
				
			||||||
@@ -116,12 +134,14 @@ message ComposeNodeConfigResponse {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 节点stream
 | 
					// 节点stream
 | 
				
			||||||
message NodeStreamRequest {
 | 
					message NodeStreamMessage {
 | 
				
			||||||
 | 
						int64 nodeId = 1;
 | 
				
			||||||
}
 | 
						int64 requestId = 2;
 | 
				
			||||||
 | 
						int32 timeoutSeconds = 3;
 | 
				
			||||||
message NodeStreamResponse {
 | 
						string code = 4;
 | 
				
			||||||
 | 
						bytes dataJSON = 5;
 | 
				
			||||||
 | 
						bool isOk = 6;
 | 
				
			||||||
 | 
						string message = 7;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 更新节点状态
 | 
					// 更新节点状态
 | 
				
			||||||
@@ -163,3 +183,8 @@ message InstallNodeRequest {
 | 
				
			|||||||
message InstallNodeResponse {
 | 
					message InstallNodeResponse {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 更改节点连接的API节点信息
 | 
				
			||||||
 | 
					message UpdateNodeConnectedAPINodesRequest {
 | 
				
			||||||
 | 
						repeated int64 apiNodeIds = 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,6 +1,8 @@
 | 
				
			|||||||
package serverconfigs
 | 
					package serverconfigs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"bytes"
 | 
				
			||||||
 | 
						"encoding/json"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -10,9 +12,9 @@ type HTTPCachePolicy struct {
 | 
				
			|||||||
	IsOn        bool                   `yaml:"isOn" json:"isOn"`               // 是否开启
 | 
						IsOn        bool                   `yaml:"isOn" json:"isOn"`               // 是否开启
 | 
				
			||||||
	Name        string                 `yaml:"name" json:"name"`               // 名称
 | 
						Name        string                 `yaml:"name" json:"name"`               // 名称
 | 
				
			||||||
	Description string                 `yaml:"description" json:"description"` // 描述
 | 
						Description string                 `yaml:"description" json:"description"` // 描述
 | 
				
			||||||
	Capacity    *shared.SizeCapacity   `yaml:"capacity" json:"capacity"`       // 最大内容容量
 | 
						Capacity    *shared.SizeCapacity   `yaml:"capacity" json:"capacity"`       // 最大内容容量 TODO 需要实现
 | 
				
			||||||
	MaxKeys     int64                  `yaml:"maxKeys" json:"maxKeys"`         // 最多Key值
 | 
						MaxKeys     int64                  `yaml:"maxKeys" json:"maxKeys"`         // 最多Key值 TODO 需要实现
 | 
				
			||||||
	MaxSize     *shared.SizeCapacity   `yaml:"maxSize" json:"maxSize"`         // 单个缓存最大尺寸
 | 
						MaxSize     *shared.SizeCapacity   `yaml:"maxSize" json:"maxSize"`         // 单个缓存最大尺寸 TODO 需要实现
 | 
				
			||||||
	Type        CachePolicyType        `yaml:"type" json:"type"`               // 类型
 | 
						Type        CachePolicyType        `yaml:"type" json:"type"`               // 类型
 | 
				
			||||||
	Options     map[string]interface{} `yaml:"options" json:"options"`         // 选项
 | 
						Options     map[string]interface{} `yaml:"options" json:"options"`         // 选项
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -34,3 +36,16 @@ func (this *HTTPCachePolicy) Init() error {
 | 
				
			|||||||
func (this *HTTPCachePolicy) CapacitySize() int64 {
 | 
					func (this *HTTPCachePolicy) CapacitySize() int64 {
 | 
				
			||||||
	return this.capacity
 | 
						return this.capacity
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 对比Policy是否有变化
 | 
				
			||||||
 | 
					func (this *HTTPCachePolicy) IsSame(anotherPolicy *HTTPCachePolicy) bool {
 | 
				
			||||||
 | 
						policyJSON1, err := json.Marshal(this)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return false
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						policyJSON2, err := json.Marshal(anotherPolicy)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return false
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return bytes.Equal(policyJSON1, policyJSON2)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										76
									
								
								pkg/serverconfigs/http_cache_policy_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								pkg/serverconfigs/http_cache_policy_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,76 @@
 | 
				
			|||||||
 | 
					package serverconfigs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
 | 
				
			||||||
 | 
						"github.com/iwind/TeaGo/assert"
 | 
				
			||||||
 | 
						"testing"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestHTTPCachePolicy_IsSame(t *testing.T) {
 | 
				
			||||||
 | 
						a := assert.NewAssertion(t)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							p1 := &HTTPCachePolicy{}
 | 
				
			||||||
 | 
							p2 := &HTTPCachePolicy{}
 | 
				
			||||||
 | 
							a.IsTrue(p1.IsSame(p2))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							p1 := &HTTPCachePolicy{
 | 
				
			||||||
 | 
								Capacity: &shared.SizeCapacity{
 | 
				
			||||||
 | 
									Count: 0,
 | 
				
			||||||
 | 
									Unit:  "",
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							p2 := &HTTPCachePolicy{}
 | 
				
			||||||
 | 
							a.IsFalse(p1.IsSame(p2))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							p1 := &HTTPCachePolicy{
 | 
				
			||||||
 | 
								Capacity: &shared.SizeCapacity{
 | 
				
			||||||
 | 
									Count: 0,
 | 
				
			||||||
 | 
									Unit:  "",
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							p2 := &HTTPCachePolicy{
 | 
				
			||||||
 | 
								Capacity: &shared.SizeCapacity{
 | 
				
			||||||
 | 
									Count: 0,
 | 
				
			||||||
 | 
									Unit:  "",
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							a.IsTrue(p1.IsSame(p2))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							p1 := &HTTPCachePolicy{
 | 
				
			||||||
 | 
								Options: map[string]interface{}{},
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							p2 := &HTTPCachePolicy{}
 | 
				
			||||||
 | 
							a.IsFalse(p1.IsSame(p2))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							p1 := &HTTPCachePolicy{
 | 
				
			||||||
 | 
								Options: map[string]interface{}{},
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							p2 := &HTTPCachePolicy{
 | 
				
			||||||
 | 
								Options: map[string]interface{}{},
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							a.IsTrue(p1.IsSame(p2))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							p1 := &HTTPCachePolicy{
 | 
				
			||||||
 | 
								Options: map[string]interface{}{
 | 
				
			||||||
 | 
									"c": 3,
 | 
				
			||||||
 | 
									"a": 1,
 | 
				
			||||||
 | 
									"d": "abc",
 | 
				
			||||||
 | 
									"b": 2,
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							p2 := &HTTPCachePolicy{
 | 
				
			||||||
 | 
								Options: map[string]interface{}{
 | 
				
			||||||
 | 
									"c": 3,
 | 
				
			||||||
 | 
									"a": 1,
 | 
				
			||||||
 | 
									"d": "abc",
 | 
				
			||||||
 | 
									"b": 2,
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							a.IsTrue(p1.IsSame(p2))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -63,6 +63,20 @@ func (this *NetworkAddressConfig) Init() error {
 | 
				
			|||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 所有的地址列表,不包括scheme
 | 
				
			||||||
 | 
					func (this *NetworkAddressConfig) Addresses() []string {
 | 
				
			||||||
 | 
						if this.Protocol == ProtocolUnix {
 | 
				
			||||||
 | 
							return []string{this.Host}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						result := []string{}
 | 
				
			||||||
 | 
						for i := this.minPort; i <= this.maxPort; i++ {
 | 
				
			||||||
 | 
							host := this.Host
 | 
				
			||||||
 | 
							result = append(result, host+":"+strconv.Itoa(i))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return result
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 所有的地址列表,包含scheme
 | 
					// 所有的地址列表,包含scheme
 | 
				
			||||||
func (this *NetworkAddressConfig) FullAddresses() []string {
 | 
					func (this *NetworkAddressConfig) FullAddresses() []string {
 | 
				
			||||||
	if this.Protocol == ProtocolUnix {
 | 
						if this.Protocol == ProtocolUnix {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user