mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-29 22:06:38 +08:00
47 lines
1.6 KiB
Go
47 lines
1.6 KiB
Go
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)
|
|
}
|