...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package namespace
16
17 func prefixInterval(pfx string, key, end []byte) (pfxKey []byte, pfxEnd []byte) {
18 pfxKey = make([]byte, len(pfx)+len(key))
19 copy(pfxKey[copy(pfxKey, pfx):], key)
20
21 if len(end) == 1 && end[0] == 0 {
22
23 pfxEnd = make([]byte, len(pfx))
24 copy(pfxEnd, pfx)
25 ok := false
26 for i := len(pfxEnd) - 1; i >= 0; i-- {
27 if pfxEnd[i]++; pfxEnd[i] != 0 {
28 ok = true
29 break
30 }
31 }
32 if !ok {
33
34 pfxEnd = []byte{0}
35 }
36 } else if len(end) >= 1 {
37 pfxEnd = make([]byte, len(pfx)+len(end))
38 copy(pfxEnd[copy(pfxEnd, pfx):], end)
39 }
40
41 return pfxKey, pfxEnd
42 }
43
View as plain text