示例#1
0
// implements eventmeter.DisconnectCallbackFunc
func (tn *TendermintNetwork) disconnectCallback(chain *types.ChainState, val *types.ValidatorState) eventmeter.DisconnectCallbackFunc {
	return func() {
		// Validator is down!
		chain.SetOnline(val, false)

		// reconnect
		// TODO: stop trying eventually ...
		for {
			time.Sleep(time.Second)

			if err := val.Start(); err != nil {
				log.Debug("Can't connect to validator", "valID", val.Config.Validator.ID)
			} else {
				// register callbacks for the validator
				tn.registerCallbacks(chain, val)

				chain.SetOnline(val, true)

				// TODO: authenticate pubkey

				return
			}
		}
	}
}