You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cloudreve/pkg/cluster/node.go

34 lines
812 B

package cluster
import (
model "github.com/cloudreve/Cloudreve/v3/models"
"github.com/cloudreve/Cloudreve/v3/pkg/auth"
"github.com/cloudreve/Cloudreve/v3/pkg/request"
"github.com/cloudreve/Cloudreve/v3/pkg/serializer"
)
type Node interface {
IsFeatureEnabled(feature string) bool
SubscribeStatusChange(callback func(isActive bool, id uint))
Ping(req *serializer.NodePingReq) (*serializer.NodePingResp, error)
IsActive() bool
}
func getNodeFromDBModel(node *model.Node) Node {
switch node.Type {
case model.SlaveNodeType:
slave := &SlaveNode{
Model: node,
AuthInstance: auth.HMACAuth{SecretKey: []byte(node.SecretKey)},
Client: request.HTTPClient{},
Active: true,
}
go slave.StartPingLoop()
return slave
default:
return &MasterNode{
Model: node,
}
}
}