mirror of
https://github.com/status-im/status-go.git
synced 2025-01-10 06:36:32 +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
48 lines
1.5 KiB
Go
48 lines
1.5 KiB
Go
package nat
|
|
|
|
import (
|
|
notifier "github.com/whyrusleeping/go-notifier"
|
|
)
|
|
|
|
// Notifier is an object that assists NAT in notifying listeners.
|
|
// It is implemented using thirdparty/notifier
|
|
type Notifier struct {
|
|
n notifier.Notifier
|
|
}
|
|
|
|
func (n *Notifier) notifyAll(notify func(n Notifiee)) {
|
|
n.n.NotifyAll(func(n notifier.Notifiee) {
|
|
notify(n.(Notifiee))
|
|
})
|
|
}
|
|
|
|
// Notify signs up notifiee to listen to NAT events.
|
|
func (n *Notifier) Notify(notifiee Notifiee) {
|
|
n.n.Notify(n)
|
|
}
|
|
|
|
// StopNotify stops signaling events to notifiee.
|
|
func (n *Notifier) StopNotify(notifiee Notifiee) {
|
|
n.n.StopNotify(notifiee)
|
|
}
|
|
|
|
// Notifiee is an interface objects must implement to listen to NAT events.
|
|
type Notifiee interface {
|
|
|
|
// Called every time a successful mapping happens
|
|
// Warning: the port mapping may have changed. If that is the
|
|
// case, both MappingSuccess and MappingChanged are called.
|
|
MappingSuccess(nat *NAT, m Mapping)
|
|
|
|
// Called when mapping a port succeeds, but the mapping is
|
|
// with a different port than an earlier success.
|
|
MappingChanged(nat *NAT, m Mapping, oldport int, newport int)
|
|
|
|
// Called when a port mapping fails. NAT will continue attempting after
|
|
// the next period. To stop trying, use: mapping.Close(). After this failure,
|
|
// mapping.ExternalPort() will be zero, and nat.ExternalAddrs() will not
|
|
// return the address for this mapping. With luck, the next attempt will
|
|
// succeed, without the client needing to do anything.
|
|
MappingFailed(nat *NAT, m Mapping, oldport int, err error)
|
|
}
|