mirror of
https://github.com/status-im/status-go.git
synced 2025-01-09 22:26:30 +00:00
eeca435064
Update vendor Integrate rendezvous into status node Add a test with failover using rendezvous Use multiple servers in client Use discovery V5 by default and test that node can be started with rendezvous discovet Fix linter Update rendezvous client to one with instrumented stream Address feedback Fix test with updated topic limits Apply several suggestions Change log to debug for request errors because we continue execution Remove web3js after rebase Update rendezvous package
63 lines
1.5 KiB
Go
63 lines
1.5 KiB
Go
// Package temperrcatcher provides a TempErrCatcher object,
|
|
// which implements simple error-retrying functionality.
|
|
// It is meant to be used with things like net.Lister.Accept:
|
|
//
|
|
// import (
|
|
// tec "github.com/jbenet/go-temp-err-catcher"
|
|
// )
|
|
//
|
|
// func listen(listener net.Listener) {
|
|
// var c tec.TempErrCatcher
|
|
//
|
|
// for {
|
|
// conn, err := listener.Accept()
|
|
// if err != nil && c.IsTemporary(c) {
|
|
// continue
|
|
// }
|
|
// return conn, err
|
|
// }
|
|
// }
|
|
//
|
|
// You can make your errors implement `Temporary`:
|
|
//
|
|
// type errTemp struct {
|
|
// e error
|
|
// }
|
|
//
|
|
// func (e errTemp) Temporary() bool {
|
|
// return true
|
|
// }
|
|
//
|
|
// func (e errTemp) Error() string {
|
|
// return e.e.Error()
|
|
// }
|
|
//
|
|
// err := errors.New("beep boop")
|
|
// var c tec.TempErrCatcher
|
|
// c.IsTemporary(err) // false
|
|
// c.IsTemporary(errTemp{err}) // true
|
|
//
|
|
// Or just use `ErrTemp`:
|
|
//
|
|
// err := errors.New("beep boop")
|
|
// var c tec.TempErrCatcher
|
|
// c.IsTemporary(err) // false
|
|
// c.IsTemporary(tec.ErrTemp{err}) // true
|
|
//
|
|
//
|
|
// You can also define an `IsTemp` function to classify errors:
|
|
//
|
|
// var ErrSkip = errors.New("this should be skipped")
|
|
// var ErrNotSkip = errors.New("this should not be skipped")
|
|
//
|
|
// var c tec.TempErrCatcher
|
|
// c.IsTemp = func(e error) bool {
|
|
// return e == ErrSkip
|
|
// }
|
|
//
|
|
// c.IsTemporary(ErrSkip) // true
|
|
// c.IsTemporary(ErrNotSkip) // false
|
|
// c.IsTemporary(ErrTemp) // false! no longer accepts Temporary()
|
|
//
|
|
package temperrcatcher
|