4 - ātri pieņem ienākošos uzdevumus,
5 - atgriezt uzdevuma rezultātu pēc pieprasījuma
6 - ja rezultāts nav, atgriezt atbilstošo statusu
/*
Procesors - pakalpojums, kas veic ilgu, resursu intensīvu operāciju. Tas jau ir īstenots
Atgrieztās kļūdas ir saistītas tikai ar nepareiziem ievades datiem, ir stabilas un atkārtota pieprasīšana ir bezjēdzīga
*/
type Processor interface {
Process([]byte) ([]byte, error)
}
/*
Pieņemam, ka mums ir unikālu identifikatoru ģenerators (piemēram, UUID).
Ģenerators garantē, ka nebūs sadursmju
*/
type ID string
// func NewID() ID
/*
Grafiks pieņem uzdevumus no klientiem, tos pievieno rindai un sāk apstrādi.
Nodrošina, ka vienlaicīgi darbojas ne vairāk kā 'threads' metodes
Sniedz iespēju pārbaudīt uzdevuma statusu un saņemt rezultātu
ne bloķē savas publiskās metodes apstrādei
*/
type Scheduler struct {
processor Processor
}
func NewScheduler(
prc Processor,
threads int,
) *Scheduler {
// inicializācijas loģika
return &Scheduler{
processor: prc,
}
}
func (s *Scheduler) Queue(request []byte) ID {
// īstenošana
return ""
}