clean shutdown with udp
This commit is contained in:
@@ -33,18 +33,26 @@ func (udp UDP) listen() {
|
|||||||
for udp.ctx.Err() == nil {
|
for udp.ctx.Err() == nil {
|
||||||
buff := make([]byte, 256)
|
buff := make([]byte, 256)
|
||||||
n, _, err := udp.conn.ReadFrom(buff)
|
n, _, err := udp.conn.ReadFrom(buff)
|
||||||
if err != nil {
|
if err != nil && udp.ctx.Err() == nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
if debugging {
|
if debugging {
|
||||||
log.Printf("raw.UDP.Read() => %s", buff[:n])
|
log.Printf("raw.UDP.Read() => %s", buff[:n])
|
||||||
}
|
}
|
||||||
udp.c <- buff[:n]
|
select {
|
||||||
|
case udp.c <- buff[:n]:
|
||||||
|
case <-udp.ctx.Done():
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (udp UDP) Read() []byte {
|
func (udp UDP) Read() []byte {
|
||||||
return <-udp.c
|
select {
|
||||||
|
case v := <-udp.c:
|
||||||
|
return v
|
||||||
|
case <-udp.ctx.Done():
|
||||||
|
return []byte{}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (udp UDP) Close() {
|
func (udp UDP) Close() {
|
||||||
|
|||||||
Reference in New Issue
Block a user