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 ""
}