diff --git a/cmd/edge-api/main.go b/cmd/edge-api/main.go index 60cd7e97..71606f9f 100644 --- a/cmd/edge-api/main.go +++ b/cmd/edge-api/main.go @@ -161,6 +161,20 @@ func main() { } } }) + app.On("instance", func() { + var sock = gosock.NewTmpSock(teaconst.ProcessName) + reply, err := sock.Send(&gosock.Command{Code: "instance"}) + if err != nil { + fmt.Println("[ERROR]" + err.Error()) + } else { + replyJSON, err := json.MarshalIndent(reply.Params, "", " ") + if err != nil { + fmt.Println("[ERROR]marshal result failed: " + err.Error()) + } else { + fmt.Println(string(replyJSON)) + } + } + }) app.Run(func() { nodes.NewAPINode().Start() diff --git a/internal/const/vars.go b/internal/const/vars.go index 91350559..8ce3890f 100644 --- a/internal/const/vars.go +++ b/internal/const/vars.go @@ -2,9 +2,18 @@ package teaconst -var ( - IsPlus = false - MaxNodes int32 = 0 - NodeId int64 = 0 - Debug = false +import ( + "crypto/sha1" + "fmt" + "github.com/iwind/TeaGo/rands" + "github.com/iwind/TeaGo/types" + "time" +) + +var ( + IsPlus = false + MaxNodes int32 = 0 + NodeId int64 = 0 + Debug = false + InstanceCode = fmt.Sprintf("%x", sha1.Sum([]byte("INSTANCE"+types.String(time.Now().UnixNano())+"@"+types.String(rands.Int64())))) ) diff --git a/internal/nodes/api_node.go b/internal/nodes/api_node.go index 18709163..0c485994 100644 --- a/internal/nodes/api_node.go +++ b/internal/nodes/api_node.go @@ -677,6 +677,12 @@ func (this *APINode) listenSock() error { Params: map[string]interface{}{"count": 0}, }) } + case "instance": + _ = cmd.Reply(&gosock.Command{ + Params: map[string]interface{}{ + "code": teaconst.InstanceCode, + }, + }) } }) diff --git a/internal/rpc/services/service_api_node.go b/internal/rpc/services/service_api_node.go index df4cae9c..2c915a8e 100644 --- a/internal/rpc/services/service_api_node.go +++ b/internal/rpc/services/service_api_node.go @@ -273,8 +273,9 @@ func (this *APINodeService) FindCurrentAPINode(ctx context.Context, req *pb.Find RestHTTPSJSON: nil, AccessAddrsJSON: node.AccessAddrs, AccessAddrs: accessAddrs, - StatusJSON: nil, + StatusJSON: node.Status, IsPrimary: node.IsPrimary, + InstanceCode: teaconst.InstanceCode, }}, nil }