123456789101112131415161718192021222324252627282930 |
- package h2mux
- import (
- "sync/atomic"
- )
- // PingTimestamp is an atomic interface around ping timestamping and signalling.
- type PingTimestamp struct {
- ts int64
- signal Signal
- }
- func NewPingTimestamp() *PingTimestamp {
- return &PingTimestamp{signal: NewSignal()}
- }
- func (pt *PingTimestamp) Set(v int64) {
- if atomic.SwapInt64(&pt.ts, v) != 0 {
- pt.signal.Signal()
- }
- }
- func (pt *PingTimestamp) Get() int64 {
- return atomic.SwapInt64(&pt.ts, 0)
- }
- func (pt *PingTimestamp) GetUpdateChan() <-chan struct{} {
- return pt.signal.WaitChannel()
- }
|