github.com/polarismesh/polaris@v1.17.8/apiserver/grpcserver/discover/v1/heartbeat_access.go (about) 1 /** 2 * Tencent is pleased to support the open source community by making Polaris available. 3 * 4 * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. 5 * 6 * Licensed under the BSD 3-Clause License (the "License"); 7 * you may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at 9 * 10 * https://opensource.org/licenses/BSD-3-Clause 11 * 12 * Unless required by applicable law or agreed to in writing, software distributed 13 * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 14 * CONDITIONS OF ANY KIND, either express or implied. See the License for the 15 * specific language governing permissions and limitations under the License. 16 */ 17 18 package v1 19 20 import ( 21 "context" 22 23 apiservice "github.com/polarismesh/specification/source/go/api/v1/service_manage" 24 25 "github.com/polarismesh/polaris/plugin" 26 ) 27 28 // BatchGetHeartbeat 批量获取心跳记录 29 func (g *DiscoverServer) BatchGetHeartbeat(ctx context.Context, 30 req *apiservice.GetHeartbeatsRequest) (*apiservice.GetHeartbeatsResponse, error) { 31 checker, ok := g.healthCheckServer.Checkers()[int32(apiservice.HealthCheck_HEARTBEAT)] 32 if !ok { 33 return &apiservice.GetHeartbeatsResponse{}, nil 34 } 35 keys := req.GetInstanceIds() 36 records := make([]*apiservice.HeartbeatRecord, 0, len(keys)) 37 for i := range keys { 38 resp, err := checker.Query(ctx, &plugin.QueryRequest{ 39 InstanceId: keys[i], 40 }) 41 if err != nil { 42 return nil, err 43 } 44 record := &apiservice.HeartbeatRecord{ 45 InstanceId: keys[i], 46 LastHeartbeatSec: resp.LastHeartbeatSec, 47 Exist: resp.Exists, 48 } 49 records = append(records, record) 50 } 51 return &apiservice.GetHeartbeatsResponse{ 52 Records: records, 53 }, nil 54 } 55 56 // BatchDelHeartbeat 批量删除心跳记录 57 func (g *DiscoverServer) BatchDelHeartbeat(ctx context.Context, 58 req *apiservice.DelHeartbeatsRequest) (*apiservice.DelHeartbeatsResponse, error) { 59 checker, ok := g.healthCheckServer.Checkers()[int32(apiservice.HealthCheck_HEARTBEAT)] 60 if !ok { 61 return &apiservice.DelHeartbeatsResponse{}, nil 62 } 63 keys := req.GetInstanceIds() 64 for i := range keys { 65 if err := checker.Delete(ctx, keys[i]); err != nil { 66 return nil, err 67 } 68 } 69 return &apiservice.DelHeartbeatsResponse{}, nil 70 }