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