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