本文整理匯總了Golang中github.com/spinlock/xserver/pkg/xserver/xio.PacketReader.Read7BitValue64方法的典型用法代碼示例。如果您正苦於以下問題:Golang PacketReader.Read7BitValue64方法的具體用法?Golang PacketReader.Read7BitValue64怎麽用?Golang PacketReader.Read7BitValue64使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/spinlock/xserver/pkg/xserver/xio.PacketReader
的用法示例。
在下文中一共展示了PacketReader.Read7BitValue64方法的4個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: parseFlowErrorRequest
func parseFlowErrorRequest(r *xio.PacketReader) (*flowErrorRequest, error) {
var err error
fid := uint64(0)
if fid, err = r.Read7BitValue64(); err != nil {
return nil, errors.New("flowerror.read fid")
}
return &flowErrorRequest{fid}, nil
}
示例2: parseFlowAckRequest
func parseFlowAckRequest(r *xio.PacketReader) (*flowAckRequest, error) {
var err error
fid := uint64(0)
if fid, err = r.Read7BitValue64(); err != nil {
return nil, errors.New("flowack.read fid")
}
cnt := uint64(0)
if cnt, err = r.Read7BitValue64(); err != nil {
return nil, errors.New("flowack.read cnt")
}
var ack *flowAck
if ack, err = parseFlowAck(r); err != nil {
return nil, errors.New("flowack.read ack")
}
return &flowAckRequest{fid, cnt, ack}, nil
}
示例3: parseFlowRequest
func parseFlowRequest(r *xio.PacketReader) (*flowRequest, error) {
var err error
flags := uint8(0)
if flags, err = r.Read8(); err != nil {
return nil, errors.New("flow.read flags")
}
fid := uint64(0)
if fid, err = r.Read7BitValue64(); err != nil {
return nil, errors.New("flow.read fid")
}
stage, delta := uint64(0), uint64(0)
if stage, err = r.Read7BitValue64(); err != nil {
return nil, errors.New("flow.read stage")
}
if delta, err = r.Read7BitValue64(); err != nil {
return nil, errors.New("flow.read delta")
}
signature := ""
if (flags & flagsHeader) != 0 {
if signature, err = r.ReadString8(); err != nil {
return nil, errors.New("flow.read signature")
}
for {
if size, err := r.Read8(); err != nil {
return nil, errors.New("flow.read header content size")
} else if size == 0 {
break
} else if n := int(size); n > r.Len() {
return nil, errors.New("flows.too big header content size")
} else if err = r.Skip(n); err != nil {
return nil, errors.New("flows.skip header")
}
}
}
data := r.Bytes()
req := &flowRequest{}
req.fid = fid
req.signature = signature
req.stage = stage
req.stageack = stage - delta
req.slices = make([]*flowRequestSlice, 0, 4)
req.AddSlice(&flowRequestSlice{flags, data})
return req, nil
}
示例4: parseFlowAck
func parseFlowAck(r *xio.PacketReader) (*flowAck, error) {
if stage, err := r.Read7BitValue64(); err != nil {
return nil, err
} else {
ack := newFlowAck(stage)
var beg, end uint64
for r.Len() != 0 {
if beg, err = r.Read7BitValue64(); err != nil {
return nil, err
}
if end, err = r.Read7BitValue64(); err != nil {
return nil, err
}
beg = beg + stage + 2
end = end + beg
ack.AddRange(beg, end)
stage = end
}
return ack, nil
}
}