mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-28 05:46:36 +08:00
aa4faddade
Result: {"status":"keep","total_issues":8,"golint_canonicalheader":0,"golint_errname":0,"golint_errorlint":1,"golint_exhaustive":0,"golint_forcetypeassert":0,"golint_gosec":0,"golint_intrange":0,"golint_modernize":3,"golint_nilnil":3,"golint_perfsprint":0,"golint_prealloc":0,"golint_recvcheck":1,"golint_usestdlibvars":0,"golint_wastedassign":0,"golint_total":8,"golint_test_testifylint":0,"golint_test_thelper":0,"golint_test_usetesting":0,"golint_test_total":0,"golint_vetx_total":0,"eslint_problems":0,"eslint_errors":0,"eslint_warnings":0,"tsc_errors":0,"vitest_failed":0,"vitest_total":116,"measure_s":81}
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)
|
|
}
|