4 - kiruvchi vazifalarni tezda qabul qilish,
5 - so'rov bo'yicha vazifa natijasini qaytarish
6 - agar natija bo'lmasa, mos holatni qaytarish
/*
Protsessor - uzoq davom etadigan, resurslarni ko'p talab qiladigan operatsiyani bajaradigan xizmat. U allaqachon amalga oshirilgan
Uning qaytargan xatolari faqat noto'g'ri kirish ma'lumotlari bilan bog'liq, barqarordir va ularni takroran so'rash foydasiz
*/
type Processor interface {
Process([]byte) ([]byte, error)
}
/*
Bizda yagona identifikatorlar (masalan, UUID) generatori bor deb hisoblaymiz.
Generator to'qnashuv bo'lmasligini kafolatlaydi
*/
type ID string
// func NewID() ID
/*
Scheduler mijozlardan vazifalarni qabul qiladi, ularni navbatga qo'yadi va ishlov berishni boshlaydi.
Bitta vaqtda 'threads' metodlaridan ko'prog'i ishlayotganiga ishonch hosil qiladi
Vazifa holatini tekshirish va natijani olish imkonini beradi
o'zining ommaviy interfeys metodlarini bloklamaydi
*/
type Scheduler struct {
processor Processor
}
func NewScheduler(
prc Processor,
threads int,
) *Scheduler {
// boshlang'ich mantiq
return &Scheduler{
processor: prc,
}
}
func (s *Scheduler) Queue(request []byte) ID {
// amalga oshirish
return ""
}