Sobes.tech
Middle+

4 - szybko akceptuj nadchodzące zadania, 5 - zwracaj wynik zadania na żądanie 6 - jeśli nie ma wyniku, zwróć odpowiedni status /* Procesor - usługa wykonująca długotrwałą, zasobożerną operację. Jest już zaimplementowana Błędy, które zwraca, są wyłącznie związane z niepoprawnymi danymi wejściowymi, są stabilne i powtarzanie ich jest bezcelowe */ type Processor interface { Process([]byte) ([]byte, error) } /* Zakładamy, że mamy generator unikalnych identyfikatorów (np. UUID). Generator gwarantuje, że nie dojdzie do kolizji */ type ID string // func NewID() ID /* Harmonogram przyjmuje zadania od klientów, umieszcza je w kolejce i uruchamia w przetwarzaniu. Zapewnia, że jednocześnie uruchomionych jest nie więcej niż 'threads' metod przetwarzania Umożliwia sprawdzenie statusu zadania i uzyskanie wyniku nie blokuje metod publicznych swojego interfejsu do przetwarzania */ type Scheduler struct { processor Processor } func NewScheduler( prc Processor, threads int, ) *Scheduler { // logika inicjalizacji return &Scheduler{ processor: prc, } } func (s *Scheduler) Queue(request []byte) ID { // implementacja return "" }