package udpproxy import "sync" // sessionCache tracks connection sessions type sessionCache struct { mu sync.RWMutex data map[string]*session } // newSessionCache creates a usable sessionCache. func newSessionCache() sessionCache { return sessionCache{ data: make(map[string]*session), } } // read returns the associated session for an addr func (sc *sessionCache) read(addr string) (*session, bool) { sc.mu.RLock() defer sc.mu.RUnlock() v, ok := sc.data[addr] return v, ok } // insert adds a session for a given addr. func (sc *sessionCache) insert(addr string, session *session) { sc.mu.Lock() defer sc.mu.Unlock() sc.data[addr] = session } // delete removes the session for the given addr. func (sc *sessionCache) delete(addr string) { sc.mu.Lock() defer sc.mu.Unlock() delete(sc.data, addr) }