gomemcache
2016-09-19 16:18:19 4 举报
AI智能生成
gomemcache
作者其他创作
大纲/内容
Client
Timeout
time.Duration
selector
ServerSelector
lk
sync.Mutex
freeconn
map[string][]*conn
ServerList
mu sync.RWMutex
addrs []net.Addr
conn
nc net.Conn
rw *bufio.ReadWriter
addr net.Addr
c *Client
New
ss=new(ServerList)
ss.SetServers(server...)
tcpaddr, err := net.ResolveTCPAddr("tcp", server)
naddr[i] = tcpaddr
&Client{selector: ss}
Get
withKeyAddr
PickServer
an_fn
getFromAddr
withAddrRw
getConn
getFreeConn
extendDeadline
dialConn
an_fn
fmt.Fprintf(rw, "gets %s\r\n", strings.Join(keys, " "))
parseGetResponse(rw.Reader, cb)
bufio.ReadSlice('\n')
scanGetResponseLine
pattern := "VALUE %s %d %d %d\r\n"
dest := []interface{}{&it.Key, &it.Flags, &size, &it.casid}
fmt.Sscanf(string(line), pattern, dest...)
ioutil.ReadAll(io.LimitReader(r, int64(size)+2))
cb(it)
condRelease
release
putFreeConn
c.freeconn[addr.String()] = append(freelist, cn)
an_fn(it *item)
item=it
class Set
c.onItem(item, (*Client).set)
return c.populateOne(rw, "set", item)
c.onItem(item, (*Client).add)
return c.populateOne(rw, "add", item)
return c.onItem(item, (*Client).replace)
return c.populateOne(rw, "replace", item)
return c.onItem(item, (*Client).cas)
return c.populateOne(rw, "cas", item)
populateOne
fmt.Fprintf(rw, "%s %s %d %d %d %d\r\n",
verb, item.Key, item.Flags, item.Expiration, len(item.Value), item.casid)
rw.Write(item.Value);
rw.Flush()
rw.ReadSlice('\n')
0 条评论
下一页
为你推荐
查看更多