4 - greitai priimti įeinančius uždavinius,
5 - grąžinti uždavinio rezultatą pagal užklausą
6 - jei nėra rezultato, grąžinti atitinkamą būseną
/*
Procesorius - paslauga, kuri vykdo ilgą, išteklių reikalaujančią operaciją. Ji jau įgyvendinta
Klaidų, kurias jis grąžina, yra tik susijusios su neteisingais įvesties duomenimis, yra stabilios ir jų pakartotinis užklausimas yra beprasmiškas
*/
type Processor interface {
Process([]byte) ([]byte, error)
}
/*
Manome, kad turime unikalių identifikatorių generatorių (pvz., UUID).
Generatorius garantuoja, kad nebus susidūrimų
*/
type ID string
// func NewID() ID
/*
Tvarkaraštis priima užduotis iš klientų, juos įkelia į eilę ir pradeda apdorojimą.
Užtikrina, kad vienu metu veikia ne daugiau kaip 'threads' metodų
Suteikia galimybę patikrinti užduoties būseną ir gauti rezultatą
ne blokuoja savo viešųjų metodų apdorojimo
*/
type Scheduler struct {
processor Processor
}
func NewScheduler(
prc Processor,
threads int,
) *Scheduler {
// inicializacijos logika
return &Scheduler{
processor: prc,
}
}
func (s *Scheduler) Queue(request []byte) ID {
// įgyvendinimas
return ""
}