value-delay
Opis
Bloczek value-delay opóźnia przekazanie zmian odebranych na swoim wejściu. Każda wartość wejściowa jest zapamiętywana na skonfigurowany czas, a następnie wysyłana dalej na jedyne wyjście bloczka.
Bloczek posiada jedno wejście i jedno wyjście. Obsługuje wszystkie typy wartości logicznych.
Parametry konfiguracyjne
| Nazwa parametru | Wartość |
|---|---|
delay_milliseconds |
Obowiązkowy czas opóźnienia w milisekundach. Dozwolony zakres: od 100 ms do 600000 ms (10 minut). |
max_queued_messages |
Obowiązkowy maksymalny rozmiar kolejki oczekujących komunikatów. Dozwolony zakres: od 1 do 100. |
queue_overflow_mode |
Obowiązkowy sposób postępowania po zapełnieniu kolejki. Dozwolone wartości: drop, replace_oldest, replace_newest. |
Obsługa wejścia
Bloczek przyjmuje każdą zmianę przesłaną na wejście, niezależnie od typu wartości. Odebrana zmiana jest odkładana do kolejki i otrzymuje termin wysłania wyliczony na podstawie parametru delay_milliseconds.
Jeżeli kilka zmian ma zostać wysłanych w tej samej chwili, bloczek zachowuje kolejność zgodną z chwilą ich nadejścia.
Gdy kolejka jest pełna, bloczek reaguje zgodnie z parametrem queue_overflow_mode:
drop: nowa zmiana jest pomijanareplace_oldest: przed dodaniem nowej wiadomości usuwana jest najstarsza oczekująca wiadomośćreplace_newest: nowa wiadomość zastępuje najnowszą oczekującą wiadomość
Jeśli do wejścia bloczka nie jest podłączony żaden inny bloczek, bloczek zgłasza błąd Input disconnected.
Wyjście bloczka
Bloczek posiada jedno wyjście. Po upływie zadanego czasu na wyjściu pojawia się ta sama zmiana, która wcześniej dotarła na wejście, tylko z opóźnieniem.
Opis widoczny pod bloczkiem informuje o aktualnym stanie kolejki, a po pierwszej udanej emisji także o ostatnio wysłanej wartości:
queue emptyoznacza pustą kolejkęqueued: Noznacza, że w kolejce oczekuje obecnieNwiadomościqueue empty, last: Xoznacza pustą kolejkę oraz wartość ostatnio wysłaną przez bloczekqueued: N, last: Xoznacza, że w kolejce oczekuje obecnieNwiadomości, a ostatnio wysłaną wartością byłoX
Fragment last: X nie jest pokazywany przed pierwszą udaną emisją z kolejki.
Błędy widoczne dla użytkownika
Bloczek może pokazywać następujące komunikaty błędów:
| Kod błędu | Opis błędu |
|---|---|
Invalid delay_milliseconds configuration. |
Parametr delay_milliseconds ma wartość spoza zakresu albo nie jest poprawną liczbą. |
Invalid max_queued_messages configuration. |
Parametr max_queued_messages ma wartość spoza zakresu od 1 do 100 albo nie jest poprawną liczbą. |
Invalid queue_overflow_mode configuration. |
Parametr queue_overflow_mode ma wartość inną niż drop, replace_oldest albo replace_newest. |
Input disconnected. |
Pod wejście bloczka nie jest podłączony żaden inny bloczek. |
Pozostałe komunikaty rozpoczynające się od Failed to ... albo komunikat
Invalid queue overflow mode. oznaczają wewnętrzny problem z działaniem bloczka,
a nie błąd wartości podanej przez użytkownika. W takiej sytuacji warto sprawdzić
konfigurację bloczka i połączenia, a jeśli problem nadal występuje, zgłosić go
jako usterkę.
Przykłady działania
- Dla
delay_milliseconds = 500wiadomośćfalse -> trueodebrana na wejściu zostanie odtworzona na wyjściu po około 500 ms. - Po pierwszej udanej emisji wiadomości
false -> trueopis bloczka będzie zawierał fragmentlast: true. - Jeśli do kolejki wpłyną trzy wiadomości jedna po drugiej, wszystkie trzy zostaną wyemitowane po swoim czasie opóźnienia w tej samej kolejności, w jakiej dotarły do bloczka.
- Przy
max_queued_messages = 2iqueue_overflow_mode = droptrzecia wiadomość odebrana przed emisją dwóch poprzednich zostanie pominięta. - Przy
max_queued_messages = 2iqueue_overflow_mode = replace_oldesttrzecia wiadomość usunie z kolejki najstarszą oczekującą wiadomość, a następnie zostanie dodana jako nowa ostatnia wiadomość w kolejce. - Przy
max_queued_messages = 2iqueue_overflow_mode = replace_newesttrzecia wiadomość usunie z kolejki najnowszą oczekującą wiadomość i sama zajmie jej miejsce.