improve udp listener
This commit is contained in:
parent
55d7b2e312
commit
7f581cb668
@ -33,12 +33,14 @@ func NewListener(conn net.PacketConn, cfg *ListenConfig) net.Listener {
|
||||
}
|
||||
|
||||
ln := &listener{
|
||||
conn: conn,
|
||||
cqueue: make(chan net.Conn, cfg.Backlog),
|
||||
connPool: newConnPool(cfg.TTL).WithLogger(cfg.Logger),
|
||||
closed: make(chan struct{}),
|
||||
errChan: make(chan error, 1),
|
||||
config: cfg,
|
||||
conn: conn,
|
||||
cqueue: make(chan net.Conn, cfg.Backlog),
|
||||
closed: make(chan struct{}),
|
||||
errChan: make(chan error, 1),
|
||||
config: cfg,
|
||||
}
|
||||
if cfg.KeepAlive {
|
||||
ln.connPool = newConnPool(cfg.TTL).WithLogger(cfg.Logger)
|
||||
}
|
||||
go ln.listenLoop()
|
||||
|
||||
|
@ -29,6 +29,10 @@ func (p *connPool) WithLogger(logger logger.Logger) *connPool {
|
||||
}
|
||||
|
||||
func (p *connPool) Get(key any) (c *conn, ok bool) {
|
||||
if p == nil {
|
||||
return
|
||||
}
|
||||
|
||||
v, ok := p.m.Load(key)
|
||||
if ok {
|
||||
c, ok = v.(*conn)
|
||||
@ -37,14 +41,25 @@ func (p *connPool) Get(key any) (c *conn, ok bool) {
|
||||
}
|
||||
|
||||
func (p *connPool) Set(key any, c *conn) {
|
||||
if p == nil {
|
||||
return
|
||||
}
|
||||
|
||||
p.m.Store(key, c)
|
||||
}
|
||||
|
||||
func (p *connPool) Delete(key any) {
|
||||
if p == nil {
|
||||
return
|
||||
}
|
||||
p.m.Delete(key)
|
||||
}
|
||||
|
||||
func (p *connPool) Close() {
|
||||
if p == nil {
|
||||
return
|
||||
}
|
||||
|
||||
select {
|
||||
case <-p.closed:
|
||||
return
|
||||
|
Loading…
Reference in New Issue
Block a user