1
0
镜像自地址 https://github.com/tuna/tunasync.git 已同步 2025-12-06 06:26:46 +00:00

feature(worker): implemented rsync provider

这个提交包含在:
bigeagle
2016-04-24 22:40:44 +08:00
父节点 f336fda736
当前提交 a6e8e9e2d9
共有 3 个文件被更改,包括 79 次插入40 次删除

查看文件

@@ -1,6 +1,10 @@
package worker
import "time"
import (
"errors"
"os"
"time"
)
// mirror provider is the wrapper of mirror jobs
@@ -45,7 +49,11 @@ type baseProvider struct {
ctx *Context
name string
interval time.Duration
hooks []jobHook
cmd *cmdJob
logFile *os.File
hooks []jobHook
}
func (p *baseProvider) Name() string {
@@ -104,3 +112,38 @@ func (p *baseProvider) AddHook(hook jobHook) {
func (p *baseProvider) Hooks() []jobHook {
return p.hooks
}
func (p *baseProvider) setLogFile() error {
if p.LogFile() == "/dev/null" {
p.cmd.SetLogFile(nil)
return nil
}
logFile, err := os.OpenFile(p.LogFile(), os.O_WRONLY|os.O_CREATE, 0644)
if err != nil {
logger.Error("Error opening logfile %s: %s", p.LogFile(), err.Error())
return err
}
p.logFile = logFile
p.cmd.SetLogFile(logFile)
return nil
}
func (p *baseProvider) Wait() error {
if p.logFile != nil {
defer p.logFile.Close()
}
return p.cmd.Wait()
}
func (p *baseProvider) Terminate() error {
logger.Debug("terminating provider: %s", p.Name())
if p.cmd == nil {
return errors.New("provider command job not initialized")
}
if p.logFile != nil {
p.logFile.Close()
}
err := p.cmd.Terminate()
return err
}