mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-22 17:31:03 +01:00
48 lines
963 B
Go
48 lines
963 B
Go
package service
|
|
|
|
import (
|
|
"github.com/crawlab-team/crawlab/core/interfaces"
|
|
"time"
|
|
)
|
|
|
|
type Option func(svc interfaces.NodeService)
|
|
|
|
func WithConfigPath(path string) Option {
|
|
return func(svc interfaces.NodeService) {
|
|
svc.SetConfigPath(path)
|
|
}
|
|
}
|
|
|
|
func WithAddress(address interfaces.Address) Option {
|
|
return func(svc interfaces.NodeService) {
|
|
svc.SetAddress(address)
|
|
}
|
|
}
|
|
|
|
func WithMonitorInterval(duration time.Duration) Option {
|
|
return func(svc interfaces.NodeService) {
|
|
svc2, ok := svc.(interfaces.NodeMasterService)
|
|
if ok {
|
|
svc2.SetMonitorInterval(duration)
|
|
}
|
|
}
|
|
}
|
|
|
|
func WithStopOnError() Option {
|
|
return func(svc interfaces.NodeService) {
|
|
svc2, ok := svc.(interfaces.NodeMasterService)
|
|
if ok {
|
|
svc2.StopOnError()
|
|
}
|
|
}
|
|
}
|
|
|
|
func WithHeartbeatInterval(duration time.Duration) Option {
|
|
return func(svc interfaces.NodeService) {
|
|
svc2, ok := svc.(interfaces.NodeWorkerService)
|
|
if ok {
|
|
svc2.SetHeartbeatInterval(duration)
|
|
}
|
|
}
|
|
}
|