GoDoxy/internal/watcher/health/monitor/fileserver.go
2025-03-28 08:14:06 +08:00

35 lines
693 B
Go

package monitor
import (
"os"
"time"
"github.com/yusing/go-proxy/internal/watcher/health"
)
type FileServerHealthMonitor struct {
*monitor
path string
}
func NewFileServerHealthMonitor(config *health.HealthCheckConfig, path string) *FileServerHealthMonitor {
mon := &FileServerHealthMonitor{path: path}
mon.monitor = newMonitor(nil, config, mon.CheckHealth)
return mon
}
func (s *FileServerHealthMonitor) CheckHealth() (*health.HealthCheckResult, error) {
start := time.Now()
_, err := os.Stat(s.path)
detail := ""
if err != nil {
detail = err.Error()
}
return &health.HealthCheckResult{
Healthy: err == nil,
Latency: time.Since(start),
Detail: detail,
}, nil
}