status-go/vendor/github.com/libp2p/go-yamux/v2/ping.go

35 lines
633 B
Go

package yamux
import "time"
type ping struct {
id uint32
// written to by the session on ping response
pingResponse chan struct{}
// closed by the Ping call that sent the ping when done.
done chan struct{}
// result set before done is closed.
err error
duration time.Duration
}
func newPing(id uint32) *ping {
return &ping{
id: id,
pingResponse: make(chan struct{}, 1),
done: make(chan struct{}),
}
}
func (p *ping) finish(val time.Duration, err error) {
p.err = err
p.duration = val
close(p.done)
}
func (p *ping) wait() (time.Duration, error) {
<-p.done
return p.duration, p.err
}