| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package kafka
- type packetEncoder interface {
- // primitives
- putInt8(in int8)
- putInt16(in int16)
- putInt32(in int32)
- putInt64(in int64)
- // arrays
- putInt32Array(in []int32)
- putArrayCount(in int)
- // misc
- putError(in KError)
- putString(in *string)
- putBytes(in *[]byte)
- putRaw(in []byte)
- // stackable
- push(in pushEncoder)
- pushLength32()
- pushCRC32()
- pop()
- }
- type pushEncoder interface {
- saveOffset(in int)
- reserveLength() int
- run(curOffset int, buf []byte)
- }
- func buildBytes(in encoder) (*[]byte, error) {
- if in == nil {
- return nil, nil
- }
- var prepEnc prepEncoder
- var realEnc realEncoder
- in.encode(&prepEnc)
- if prepEnc.err != nil {
- return nil, prepEnc.err
- }
- realEnc.raw = make([]byte, prepEnc.length)
- in.encode(&realEnc)
- return &(realEnc.raw), nil
- }
|