This commit adds the fifo.EventChannel interface for consuming (VRRP)
events from keepalived.
This is what package users should accept when expecting a handle to the
event stream.
fifo.FifoChannel is an implementation of this against an IPC FIFO channel
opened via MkFifo(), and can be considered the primary "producer" of
fifo.EventChannel events, but importantly we can create other
producers, notably for testing.
The in-memory representation of a keepalived notify event.
Message is not strictly accurate for non VRRP events, but as we don't
care about IPVS events now this is fine for our purposes. We do
explicitly provide a VrrpMessage type however which is guaranteed to be
a VRRP event.
A uint number between 0 and 255, representing the new priority of the
associated INSTANCE. In newer versions of the VRRP protocol (v2+) a
instance's priority must be 255 to be considered MASTER, but older
versions only require the highest current priority to be MASTER.
This field is also _optional_ keepalived will only output it for VRRP
events, and then only if a setting is enabled in the conf file,
'vrrp_notify_priority_changes'.
TYPE INSTANCE STATE PRIORITY
^^^^^^^^
Representation of the STATE component in a keepalived notify event.
Can be one of: MASTER,BACKUP,STOP (for VRRP events)
TYPE INSTANCE STATE PRIORITY
^^^^^
These correspond to the TYPE produced by keepalived's notify events.
It may be one of: INSTANCE,GROUP,VS,RS as of this commit.
Our focus is only on supporting VRRP event types at present, but we do
recognize all the current event types.
TYPE INSTANCE STATE PRIORITY
^^^^
This is a "global" context object currently containing a cancellation
context and logger.
This struct can be considered as the lib's generic configuration, and
may be asked for in any public function.