123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- package worker
- // mirror provider is the wrapper of mirror jobs
- type providerType uint8
- const (
- _WorkingDirKey = "working_dir"
- _LogDirKey = "log_dir"
- _LogFileKey = "log_file"
- )
- // A mirrorProvider instance
- type mirrorProvider interface {
- // name
- Name() string
- // TODO: implement Run, Terminate and Hooks
- // run mirror job
- Run()
- // terminate mirror job
- Terminate()
- // job hooks
- Hooks()
- Interval() int
- WorkingDir() string
- LogDir() string
- LogFile() string
- // enter context
- EnterContext() *Context
- // exit context
- ExitContext() *Context
- // return context
- Context() *Context
- }
- type baseProvider struct {
- ctx *Context
- name string
- interval int
- }
- func (p *baseProvider) Name() string {
- return p.name
- }
- func (p *baseProvider) EnterContext() *Context {
- p.ctx = p.ctx.Enter()
- return p.ctx
- }
- func (p *baseProvider) ExitContext() *Context {
- p.ctx, _ = p.ctx.Exit()
- return p.ctx
- }
- func (p *baseProvider) Context() *Context {
- return p.ctx
- }
- func (p *baseProvider) Interval() int {
- return p.interval
- }
- func (p *baseProvider) WorkingDir() string {
- if v, ok := p.ctx.Get(_WorkingDirKey); ok {
- if s, ok := v.(string); ok {
- return s
- }
- }
- panic("working dir is impossible to be non-exist")
- }
- func (p *baseProvider) LogDir() string {
- if v, ok := p.ctx.Get(_LogDirKey); ok {
- if s, ok := v.(string); ok {
- return s
- }
- }
- panic("log dir is impossible to be unavailable")
- }
- func (p *baseProvider) LogFile() string {
- if v, ok := p.ctx.Get(_LogFileKey); ok {
- if s, ok := v.(string); ok {
- return s
- }
- }
- panic("log dir is impossible to be unavailable")
- }
|