| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- package kafka
- // Public Encoding
- // A simple interface for any type that can be encoded as an array of bytes
- // in order to be sent as the key or value of a Kafka message.
- type Encoder interface {
- Encode() ([]byte, error)
- }
- // Kafka Encoding
- type encoder interface {
- encode(pe packetEncoder)
- }
- func encode(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
- }
- // Kafka Decoding
- type decoder interface {
- decode(pd packetDecoder) error
- }
- func decode(buf []byte, in decoder) error {
- if buf == nil {
- return nil
- }
- helper := realDecoder{raw: buf}
- return in.decode(&helper)
- }
|