Documentation ¶
Index ¶
- Variables
- type Job
- type JobProcessor
- func (p *JobProcessor) Processed() uint64
- func (p *JobProcessor) SetDivider(d div.Divider) *JobProcessor
- func (p *JobProcessor) SetJobProvider(prov JobProvider) *JobProcessor
- func (p *JobProcessor) SetLogger(l *log.Logger) *JobProcessor
- func (p *JobProcessor) SetResultReporter(rrep ResultReporter) *JobProcessor
- func (p *JobProcessor) SetWorkersCount(workers uint) *JobProcessor
- func (p *JobProcessor) Start() error
- func (p *JobProcessor) Stop()
- type JobProvider
- type JobResult
- type NonTerminalError
- type ResultReporter
Constants ¶
This section is empty.
Variables ¶
var ( // ErrJobProviderNotSpecified returns if JobProcessor started without // specified JobProvider. ErrJobProviderNotSpecified = errors.New("JobProvider not specified") // ErrResultReporterNotSpecified returns if JobProcessor started without // specified ResultReporter. ErrResultReporterNotSpecified = errors.New("ResultReporter not specified") // ErrDividerNotSpecified returns if JobProcessor started without // specified div.Divider for processing jobs. ErrDividerNotSpecified = errors.New("Divider not specified") // ErrLoggerNotSpecified returned if JobProcessor started without // specified log.Logger. ErrLoggerNotSpecified = errors.New("Logger not specified") // ErrArg1Missing specifies that a job does not have field "arg1" ErrArg1Missing = NewNonTerminalError(errors.New(`"arg1" field missing`)) // ErrArg2Missing specifies that a job does not have field "arg2" ErrArg2Missing = NewNonTerminalError(errors.New(`"arg2" field missing`)) )
Functions ¶
This section is empty.
Types ¶
type JobProcessor ¶
type JobProcessor struct {
// contains filtered or unexported fields
}
JobProcessor does all the job - processes jobs in accordance to the aptitude test requirements.
func NewJobProcessor ¶
func NewJobProcessor() *JobProcessor
NewJobProcessor creates a new JobProcessor.
func (*JobProcessor) Processed ¶
func (p *JobProcessor) Processed() uint64
Processed returns processed jobs counter.
func (*JobProcessor) SetDivider ¶
func (p *JobProcessor) SetDivider(d div.Divider) *JobProcessor
SetDivider sets division method.
func (*JobProcessor) SetJobProvider ¶
func (p *JobProcessor) SetJobProvider(prov JobProvider) *JobProcessor
SetJobProvider specifies a provider of jobs to be processed.
func (*JobProcessor) SetLogger ¶
func (p *JobProcessor) SetLogger(l *log.Logger) *JobProcessor
SetLogger specifies a logger to be used with JobProcessor and its workers.
func (*JobProcessor) SetResultReporter ¶
func (p *JobProcessor) SetResultReporter(rrep ResultReporter) *JobProcessor
SetResultReporter specifies a writer that will be used with JobProcessor to write processing results.
func (*JobProcessor) SetWorkersCount ¶
func (p *JobProcessor) SetWorkersCount(workers uint) *JobProcessor
SetWorkersCount specifies count of workers to be created to handle jobs.
func (*JobProcessor) Start ¶
func (p *JobProcessor) Start() error
Start initializes worker pool and begins processing of jobs.
func (*JobProcessor) Stop ¶
func (p *JobProcessor) Stop()
Stop cancels reading, what, in turn, closes the worker pool and stops writing results.
type JobProvider ¶
JobProvider supplies new jobs to JobProcessor. JobProvider must return error of NonTerminalError type if provided jobs was is invalid.
type JobResult ¶
JobResult represents an outcome of a particular job processing. ID member is a sequential number of the corresponding job. Valid member specifies whether the job was processed correctly.
type NonTerminalError ¶
type NonTerminalError struct {
// contains filtered or unexported fields
}
NonTerminalError specifies that JobProcessor must skip processing of the job. The error should only raised by JobProvider.
func NewNonTerminalError ¶
func NewNonTerminalError(err error) *NonTerminalError
NewNonTerminalError creates new NonTerminalError that wraps provided one.
func (*NonTerminalError) Error ¶
func (e *NonTerminalError) Error() string
type ResultReporter ¶
ResultReporter delievers results of job processing.