source: code/trunk/vendor/github.com/valyala/fasthttp/userdata.go@ 145

Last change on this file since 145 was 145, checked in by Izuru Yakumo, 22 months ago

Updated the Makefile and vendored depedencies

Signed-off-by: Izuru Yakumo <yakumo.izuru@…>

File size: 1.4 KB
Line 
1package fasthttp
2
3import (
4 "io"
5)
6
7type userDataKV struct {
8 key []byte
9 value interface{}
10}
11
12type userData []userDataKV
13
14func (d *userData) Set(key string, value interface{}) {
15 args := *d
16 n := len(args)
17 for i := 0; i < n; i++ {
18 kv := &args[i]
19 if string(kv.key) == key {
20 kv.value = value
21 return
22 }
23 }
24
25 if value == nil {
26 return
27 }
28
29 c := cap(args)
30 if c > n {
31 args = args[:n+1]
32 kv := &args[n]
33 kv.key = append(kv.key[:0], key...)
34 kv.value = value
35 *d = args
36 return
37 }
38
39 kv := userDataKV{}
40 kv.key = append(kv.key[:0], key...)
41 kv.value = value
42 *d = append(args, kv)
43}
44
45func (d *userData) SetBytes(key []byte, value interface{}) {
46 d.Set(b2s(key), value)
47}
48
49func (d *userData) Get(key string) interface{} {
50 args := *d
51 n := len(args)
52 for i := 0; i < n; i++ {
53 kv := &args[i]
54 if string(kv.key) == key {
55 return kv.value
56 }
57 }
58 return nil
59}
60
61func (d *userData) GetBytes(key []byte) interface{} {
62 return d.Get(b2s(key))
63}
64
65func (d *userData) Reset() {
66 args := *d
67 n := len(args)
68 for i := 0; i < n; i++ {
69 v := args[i].value
70 if vc, ok := v.(io.Closer); ok {
71 vc.Close()
72 }
73 }
74 *d = (*d)[:0]
75}
76
77func (d *userData) Remove(key string) {
78 args := *d
79 n := len(args)
80 for i := 0; i < n; i++ {
81 kv := &args[i]
82 if string(kv.key) == key {
83 n--
84 args[i] = args[n]
85 args[n].value = nil
86 args = args[:n]
87 *d = args
88 return
89 }
90 }
91}
92
93func (d *userData) RemoveBytes(key []byte) {
94 d.Remove(b2s(key))
95}
Note: See TracBrowser for help on using the repository browser.