package udpr import ( "sync" ) type ackManager struct { mu sync.Mutex acks map[uint32]struct{} } func newAckManager() *ackManager { return &ackManager{ acks: make(map[uint32]struct{}), } } func (am *ackManager) setPending(k uint32) { am.mu.Lock() defer am.mu.Unlock() am.acks[k] = struct{}{} } func (am *ackManager) isPending(k uint32) bool { am.mu.Lock() defer am.mu.Unlock() _, ok := am.acks[k] return ok } func (am *ackManager) clearPending(k uint32) { am.mu.Lock() defer am.mu.Unlock() delete(am.acks, k) }