mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-05 15:26:36 +08:00
2f60329886
代码质量全量清理,零行为变化:golangci 扩展集 13 类 linter(gosec/modernize/perfsprint/canonicalheader/usestdlibvars/wastedassign/intrange/errorlint/forcetypeassert/recvcheck/exhaustive/unparam)全量修复,测试代码质量(testifylint/thelper/usetesting)25→0,frpc 进程生命周期真 bug(进程组击杀)、全仓 go test -race 6 类数据竞争(含 1 个生产竞争)、SPDX license 头补齐 131 文件、前端测试套件 next-intl 迁移后 44 失败→全绿、过期 swagger 文档重新生成、pnpm-workspace 构建审批。 Experiments: #2-#17, #18, #20, #21, #23 Metric: total_issues 108 → 8 (-92.6%)
50 lines
1.7 KiB
Go
50 lines
1.7 KiB
Go
// Copyright 2026 Arctel.net
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package heartbeat
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/Rain-kl/Wavelet/internal/apps/agent/protocol"
|
|
)
|
|
|
|
// RemoteClient is the interface that abstracts the remote API calls performed by Service.
|
|
type RemoteClient interface {
|
|
RegisterNode(ctx context.Context, payload protocol.NodePayload) (*protocol.RegisterNodeResponse, error)
|
|
Heartbeat(ctx context.Context, payload protocol.NodePayload) (*protocol.HeartbeatResult, error)
|
|
SetToken(token string)
|
|
}
|
|
|
|
// API abstracts registration and heartbeat operations used by Cycle.
|
|
type API interface {
|
|
Register(ctx context.Context, payload protocol.NodePayload) (*protocol.RegisterNodeResponse, error)
|
|
Heartbeat(ctx context.Context, payload protocol.NodePayload) (*protocol.HeartbeatResult, error)
|
|
SetToken(token string)
|
|
}
|
|
|
|
// Service wraps a RemoteClient to expose agent registration and heartbeat operations.
|
|
type Service struct {
|
|
client RemoteClient
|
|
}
|
|
|
|
// New creates a new Service backed by the given RemoteClient.
|
|
func New(client RemoteClient) *Service {
|
|
return &Service{client: client}
|
|
}
|
|
|
|
// Register sends a node registration request to the server.
|
|
func (s *Service) Register(ctx context.Context, payload protocol.NodePayload) (*protocol.RegisterNodeResponse, error) {
|
|
return s.client.RegisterNode(ctx, payload)
|
|
}
|
|
|
|
// Heartbeat sends a heartbeat to the server using the service client.
|
|
func (s *Service) Heartbeat(ctx context.Context, payload protocol.NodePayload) (*protocol.HeartbeatResult, error) {
|
|
return s.client.Heartbeat(ctx, payload)
|
|
}
|
|
|
|
// SetToken sets the authentication token for the service client.
|
|
func (s *Service) SetToken(token string) {
|
|
s.client.SetToken(token)
|
|
}
|