From 6981666c6d8f639a1ff9c09a3bc08769e19928af Mon Sep 17 00:00:00 2001 From: jwijenbergh Date: Tue, 20 Dec 2022 15:35:44 +0100 Subject: Failover: Initial implementation --- internal/failover/failover.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 internal/failover/failover.go (limited to 'internal/failover/failover.go') diff --git a/internal/failover/failover.go b/internal/failover/failover.go new file mode 100644 index 0000000..f239eeb --- /dev/null +++ b/internal/failover/failover.go @@ -0,0 +1,21 @@ +package failover + +import "time" + +const ( + // Send a ping every 2 seconds to the gateway + pInterval time.Duration = 2 * time.Second + + // pAlive is how many pings we need to have sent to check if the connection is alive + pAlive int = 3 + + // pDropped is how many pings we need to have sent to check if the connection is dropped + pDropped int = 5 +) + +// New creates a failover monitor for the gateway and the rx bytes function reader +// This is a simple wrapper over `NewDroppedMonitor` to create one with the default settings +// If this function returns True, the connection is dropped. False means it has exited and we don't know for sure if it's dropped or not +func New(readRxBytes func() (int64, error)) (*DroppedConMon, error) { + return NewDroppedMonitor(pInterval, pAlive, pDropped, readRxBytes) +} -- cgit v1.2.3