1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- package sarama
- type encoder interface {
- encode(pe packetEncoder) error
- }
- func encode(in encoder) ([]byte, error) {
- if in == nil {
- return nil, nil
- }
- var prepEnc prepEncoder
- var realEnc realEncoder
- err := in.encode(&prepEnc)
- if err != nil {
- return nil, err
- }
- realEnc.raw = make([]byte, prepEnc.length)
- err = in.encode(&realEnc)
- if err != nil {
- return nil, err
- }
- return realEnc.raw, nil
- }
- type decoder interface {
- decode(pd packetDecoder) error
- }
- func decode(buf []byte, in decoder) error {
- if buf == nil {
- return nil
- }
- helper := realDecoder{raw: buf}
- err := in.decode(&helper)
- if err != nil {
- return err
- }
- if helper.off != len(buf) {
- return DecodingError{Info: "Length was invalid"}
- }
- return nil
- }
|