本文整理匯總了Golang中github.com/spinlock/xserver/pkg/xserver/xio.PacketReader.Bytes方法的典型用法代碼示例。如果您正苦於以下問題:Golang PacketReader.Bytes方法的具體用法?Golang PacketReader.Bytes怎麽用?Golang PacketReader.Bytes使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/spinlock/xserver/pkg/xserver/xio.PacketReader
的用法示例。
在下文中一共展示了PacketReader.Bytes方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: parseFlowRequestSlice
func parseFlowRequestSlice(r *xio.PacketReader) (*flowRequestSlice, error) {
var err error
flags := uint8(0)
if flags, err = r.Read8(); err != nil {
return nil, errors.New("flow.read flags")
}
data := r.Bytes()
return &flowRequestSlice{flags, data}, nil
}
示例2: 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
}
示例3: ParseRequestMessage
func ParseRequestMessage(r *xio.PacketReader) (*RequestMessage, error) {
var err error
code := uint8(0)
if code, err = r.Read8(); err != nil {
return nil, errors.New("message.read code")
} else if code == 0xff {
return nil, EOP
}
var size uint16
if size, err = r.Read16(); err != nil {
return nil, errors.New("message.read size")
}
rlen := r.Len()
mlen := int(size)
if rlen < mlen {
return nil, errors.New("message.bad content length")
} else {
data := r.Bytes()[:mlen]
if err := r.Skip(mlen); err != nil {
return nil, errors.New("message.skip forward")
}
return &RequestMessage{code, xio.NewPacketReader(data)}, nil
}
}