4 - rýchle prijímanie prichádzajúcich úloh,
5 - vrátenie výsledku úlohy na požiadanie
6 - ak nie je výsledok, vrátenie príslušného stavu
/*
Procesor - služba, ktorá vykonáva dlhú, zdrojovo náročnú operáciu. Už je implementovaná
Chyby, ktoré vracia, sú výlučne spojené s nesprávnymi vstupnými údajmi, sú stabilné a opätovné požiadanie je zbytočné
*/
type Processor interface {
Process([]byte) ([]byte, error)
}
/*
Predpokladáme, že máme generátor jedinečných identifikátorov (napríklad UUID).
Generator garantuje, že nedôjde ku kolíziám
*/
type ID string
// func NewID() ID
/*
Plánovač prijíma úlohy od klientov, ich pridáva do fronty a začína ich spracovávať.
Zabezpečuje, že súčasne beží najviac 'threads' metód spracovania
Umožňuje skontrolovať stav úlohy a získať výsledok
neblokuje svoje verejné metódy na spracovanie
*/
type Scheduler struct {
processor Processor
}
func NewScheduler(
prc Processor,
threads int,
) *Scheduler {
// inicializačná logika
return &Scheduler{
processor: prc,
}
}
func (s *Scheduler) Queue(request []byte) ID {
// implementácia
return ""
}