Cancel's the current timeout
the callback to use for this timer
true (eventually) if the timer had not yet been initialized, false otherwise
resets the timeout
resets the timeout
The implementation should provide sensible default timeouts, but the caller can opt to provide a delay. For example, in the occasion of an endpoint failure or a user interaction, we may want to schedule at a sooner (or event immediate) time
In the event of a timeout, the call-back can elect to schedule another timeout event at the given delay.
the delay to use when set, otherwise None
true if a scheduled timeout has been cancelled by invoking, false if either it couldn't be cancelled or a task wasn't scheduled in the first place
debug info regarding the time state
Timers are tricky, as they need to be given to a ClusterProtocol, but the cluster protocol needs to reference nodes, which the timers in turn need to have a reference to.
Because of this circular reference, we make an 'initializable' timer, which is a valid RaftTimer, but resets won't take affect until it has been initialized.