4 - брзо прихватање улазних задатака,
5 - враћање резултата задатка по захтеву
6 - ако резултат нема, враћа одговарајући статус
/*
Процесор - услуга која извршава дуготрајну, ресурсно-интензивну операцију. Већ је реализована
Грешке које враћа су искључиво повезане са некоректним улазним подацима, стабилне су и поновно захтевање је безсмислено
*/
type Processor interface {
Process([]byte) ([]byte, error)
}
/*
Претпостављамо да имамо генератор јединствених идентификатора (нпр. UUID).
Генератор гарантује да неће бити судара
*/
type ID string
// func NewID() ID
/*
Планер прихвата задатке од клијената, ставља их у ред и покреће у обраду.
Обезбеђује да не више од 'threads' метода обраде ради истовремено
Омогућава проверу статуса задатка и добијање резултата
не блокира своје јавне методе за обраду
*/
type Scheduler struct {
processor Processor
}
func NewScheduler(
prc Processor,
threads int,
) *Scheduler {
// логика иницијализације
return &Scheduler{
processor: prc,
}
}
func (s *Scheduler) Queue(request []byte) ID {
// имплементација
return ""
}