]> git.lizzy.rs Git - mt.git/blob - rudp/net.go
rudp: deprecate ErrClosed and replace with net.ErrClosed
[mt.git] / rudp / net.go
1 package rudp
2
3 import (
4         "errors"
5         "net"
6 )
7
8 // ErrClosed is deprecated, use net.ErrClosed instead.
9 var ErrClosed = net.ErrClosed
10
11 /*
12 netPkt.Data format (big endian):
13
14         ProtoID
15         Src PeerID
16         ChNo uint8 // Must be < ChannelCount.
17         RawPkt.Data
18 */
19 type netPkt struct {
20         SrcAddr net.Addr
21         Data    []byte
22 }
23
24 func readNetPkts(conn net.PacketConn, pkts chan<- netPkt, errs chan<- error) {
25         for {
26                 buf := make([]byte, MaxNetPktSize)
27                 n, addr, err := conn.ReadFrom(buf)
28                 if err != nil {
29                         if errors.Is(err, net.ErrClosed) {
30                                 break
31                         }
32
33                         errs <- err
34                         continue
35                 }
36
37                 pkts <- netPkt{addr, buf[:n]}
38         }
39
40         close(pkts)
41 }