Skip to content

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 pomijana
  • replace_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 empty oznacza pustą kolejkę
  • queued: N oznacza, że w kolejce oczekuje obecnie N wiadomości
  • queue empty, last: X oznacza pustą kolejkę oraz wartość ostatnio wysłaną przez bloczek
  • queued: N, last: X oznacza, że w kolejce oczekuje obecnie N wiadomości, a ostatnio wysłaną wartością było X

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 = 500 wiadomość false -> true odebrana na wejściu zostanie odtworzona na wyjściu po około 500 ms.
  • Po pierwszej udanej emisji wiadomości false -> true opis bloczka będzie zawierał fragment last: 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 = 2 i queue_overflow_mode = drop trzecia wiadomość odebrana przed emisją dwóch poprzednich zostanie pominięta.
  • Przy max_queued_messages = 2 i queue_overflow_mode = replace_oldest trzecia wiadomość usunie z kolejki najstarszą oczekującą wiadomość, a następnie zostanie dodana jako nowa ostatnia wiadomość w kolejce.
  • Przy max_queued_messages = 2 i queue_overflow_mode = replace_newest trzecia wiadomość usunie z kolejki najnowszą oczekującą wiadomość i sama zajmie jej miejsce.