代码拉取完成,页面将自动刷新
package proxy
import (
"strconv"
"gitee.com/wanttobeamaster/elasticell/pkg/pb/raftcmdpb"
)
var (
cmdSet = []byte("SET")
cmdGet = []byte("GET")
)
type aggregationReq struct {
reply int
parts []*raftcmdpb.Response
mergeFn func([][]byte, ...*raftcmdpb.Response) *raftcmdpb.Response
args [][]byte
}
func newAggregationReq(n int, mergeFn func([][]byte, ...*raftcmdpb.Response) *raftcmdpb.Response, args [][]byte) *aggregationReq {
return &aggregationReq{
reply: n,
parts: make([]*raftcmdpb.Response, n, n),
mergeFn: mergeFn,
args: args,
}
}
func (req *aggregationReq) addPart(index int, rsp *raftcmdpb.Response) bool {
req.parts[index] = rsp
req.reply--
return req.reply == 0
}
func (req *aggregationReq) merge() *raftcmdpb.Response {
return req.mergeFn(req.args, req.parts...)
}
func isAggregationPart(id []byte) bool {
return len(id) > 16
}
func parseAggregationPart(id []byte) ([]byte, int) {
return id[0:16], parseStrInt64(id[16:])
}
func parseStrInt64(data []byte) int {
v, _ := strconv.ParseInt(string(data), 10, 64)
return int(v)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。