request.go 542 B

12345678910111213141516171819202122232425262728293031
  1. package protocol
  2. import enc "sarama/encoding"
  3. type requestEncoder interface {
  4. enc.Encoder
  5. key() int16
  6. version() int16
  7. }
  8. type request struct {
  9. correlation_id int32
  10. id string
  11. body requestEncoder
  12. }
  13. func (r *request) Encode(pe enc.PacketEncoder) (err error) {
  14. pe.Push(&enc.LengthField{})
  15. pe.PutInt16(r.body.key())
  16. pe.PutInt16(r.body.version())
  17. pe.PutInt32(r.correlation_id)
  18. err = pe.PutString(r.id)
  19. if err != nil {
  20. return err
  21. }
  22. err = r.body.Encode(pe)
  23. if err != nil {
  24. return err
  25. }
  26. return pe.Pop()
  27. }