]> Cypherpunks.ru repositories - udpobfs.git/blob - utils.go
RWMutex is not that bad
[udpobfs.git] / utils.go
1 package udpobfs
2
3 import (
4         "io"
5         "log"
6         "net"
7         "time"
8 )
9
10 const BufLen = 1 << 14
11
12 var (
13         PingDuration     = 10 * time.Second
14         LifetimeDuration = time.Minute
15 )
16
17 func MustWrite(w io.Writer, data []byte) {
18         if n, err := w.Write(data); err != nil || n != len(data) {
19                 log.Fatal("non full write")
20         }
21 }
22
23 func Incr(buf []byte) (overflow bool) {
24         for i := len(buf) - 1; i >= 0; i-- {
25                 buf[i]++
26                 if buf[i] != 0 {
27                         return
28                 }
29         }
30         overflow = true
31         return
32 }
33
34 func MustResolveUDPAddr(addr string) *net.UDPAddr {
35         a, err := net.ResolveUDPAddr("udp", addr)
36         if err != nil {
37                 log.Fatal(err)
38         }
39         return a
40 }
41
42 func MustResolveTCPAddr(addr string) *net.TCPAddr {
43         a, err := net.ResolveTCPAddr("tcp", addr)
44         if err != nil {
45                 log.Fatal(err)
46         }
47         return a
48 }
49
50 type Buf struct {
51         Buf *[BufLen]byte
52         N   int
53 }