TsgcTCPClient › Zdarzenia › OnBeforeWatchDog
Wywoływane przed każdą próbą ponownego połączenia przez WatchDog, co umożliwia aplikacji zmianę docelowego serwera lub rezygnację z ponowienia.
property OnBeforeWatchDog: TsgcWSOnBeforeWatchDogEvent;
// TsgcWSOnBeforeWatchDogEvent = procedure(Sender: TObject; var Handled: Boolean) of object
—
Gdy WatchDog jest włączony i zostanie wykryte nieoczekiwane rozłączenie, klient czeka przez WatchDog.Interval sekund, a następnie próbuje ponownie nawiązać połączenie. Zdarzenie OnBeforeWatchDog jest wywoływane tuż przed każdą próbą, co pozwala aplikacji zmienić właściwości połączenia z serwerem (Host, Port, TLS...) w celu implementacji logiki awaryjnej, np. przełączenia na serwer zapasowy po kilku nieudanych próbach. Ustawienie Handled na True anuluje próbę ponownego połączenia dla bieżącego cyklu; pozostawienie wartości False (domyślna) pozwala WatchDog kontynuować próbę połączenia.
procedure OnBeforeWatchDog(Sender: TObject; var Handled: Boolean);
var
oClient: TsgcTCPClient;
begin
oClient := TsgcTCPClient(Sender);
if oClient.WatchDog.AttemptsCount > 3 then
oClient.Host := 'fallback.example.com';
Handled := False;
end;