Публикувана е четвърта задача за домашно. Ще ви е много полезно предварително да прочетете този гайд. Условието, както и малък тест, могат да бъдат намерени и в github хранилището ни.
Тук можете да ни питате ако има нещо неясно по условието.
Публикувана е четвърта задача за домашно. Ще ви е много полезно предварително да прочетете този гайд. Условието, както и малък тест, могат да бъдат намерени и в github хранилището ни.
Тук можете да ни питате ако има нещо неясно по условието.
Пропуснали сте да имплементирате в тестовете okSetResult ^^ (:24 setResult: okSetResult,
)
edit: Ии ако може малко пояснение за следното:
// Нови заявки не трябва да бъдат започвани през това време,
нито ако вече започнати равни на тях да бъдат добавяни за извиквани на `SetResult`.
(обяснението на метода Stop()
от интерфейса Requester
)
@Даниел: Благодаря, добавих го.
Не съм сигурен кое не е ясно, но ще пробвам с други думи:
Тъй като Stop
изчаква довършването на вече започнати заявки преди да върне(предишната част от коментара), то връщането може да отнеме време.
През това време, от извикването на Stop
до връщането, AddRequest
трябва да прави нищо.
Разбира се след връщането на Stop
, Requester
е (surprise) спрян. Тоест от извикването на Stop
нататък AddRequest
прави нищо.
Не, че ще променя нещо, но намирам пускането на задача между Коледа и Нова година за доста нелепа идея. Мисля, че за толкова време без задача можеше да се изчака още една седмица.
Държах просто да си изкажа мнението си, без лоши чуства.
Весели празници!
@Марио
Весели празници и приятно решаване на задачата.
"// Спира 'Заявчика'. Това означава, че изчаква всички вече започнали заявки да завършат ....."
Какво точно се има предвим под "вече започнали заявки"? 1. Такива, които са добавени с AddRequest 2. Такива, които са добавени с AddRequest и им е извикан Run метода
@Катя
2 - такива на които Run е бил вече извикан и все още не е завършил.
Голям пример:
Имайки
r1, r2, r3, r4, r5, r6, r7 са Request-и
r1.ID() == r2.ID() == r3.ID()
r4.ID() == r5.ID()
r1.ID() != r4.ID()
r6.ID() != r1.ID() и r6.ID() != r4.ID() и r6.ID() != r7.ID()
r7.ID() != r1.ID() и r7.ID() != r4.ID() и r7.ID() != r6.ID()
r1.Cacheable() == r2.Cacheable() == r3.Cacheable() == true
r4.Cacheable() == r5.Cacheable() == false
Requester със throttle 2 и cacheSize 1000
Последователни събития във времето:
r1.Run()
завършва, r1.Cacheable()
== true
и съответно се извиква r2.SetResult
.r4.Run()
завършва, r4.Cacheable()
== false
, съответно r5 трябва да се изпълни, но не се, защото вече е извикан Stop.Забележки:
Пропуснал ли съм някой случай?
Горния пример беше добавен в примерните тестове.
На 163 и 164 ред от теста:
run: fatalRun(t, "r5 should've not run as it should be cached"),
setResult: fatalSetResult(t, "r5 should've not been setResulted as it's non cacheable"),
Съобщението на Run-a беше грешно(сега е оправено), но това че трябва да фейлва - не.
Виж примера.
За много години, колеги!
Тъй като не открих нужната информация - до колко домашни можем да НЕ предадем (и да завършим семестриално курса)?
Трябва да сте влезли в системата, за да може да отговаряте на теми.