in message.go [151:227]
func (m *Message) Marshal(wr *buffer.Buffer) error {
if m.Header != nil {
err := m.Header.Marshal(wr)
if err != nil {
return err
}
}
if m.DeliveryAnnotations != nil {
encoding.WriteDescriptor(wr, encoding.TypeCodeDeliveryAnnotations)
err := encoding.Marshal(wr, m.DeliveryAnnotations)
if err != nil {
return err
}
}
if m.Annotations != nil {
encoding.WriteDescriptor(wr, encoding.TypeCodeMessageAnnotations)
err := encoding.Marshal(wr, m.Annotations)
if err != nil {
return err
}
}
if m.Properties != nil {
err := encoding.Marshal(wr, m.Properties)
if err != nil {
return err
}
}
if m.ApplicationProperties != nil {
encoding.WriteDescriptor(wr, encoding.TypeCodeApplicationProperties)
err := encoding.Marshal(wr, m.ApplicationProperties)
if err != nil {
return err
}
}
for _, data := range m.Data {
encoding.WriteDescriptor(wr, encoding.TypeCodeApplicationData)
err := encoding.WriteBinary(wr, data)
if err != nil {
return err
}
}
if m.Value != nil {
encoding.WriteDescriptor(wr, encoding.TypeCodeAMQPValue)
err := encoding.Marshal(wr, m.Value)
if err != nil {
return err
}
}
if m.Sequence != nil {
// the body can basically be one of three different types (value, data or sequence).
// When it's sequence it's actually _several_ sequence sections, one for each sub-array.
for _, v := range m.Sequence {
encoding.WriteDescriptor(wr, encoding.TypeCodeAMQPSequence)
err := encoding.Marshal(wr, v)
if err != nil {
return err
}
}
}
if m.Footer != nil {
encoding.WriteDescriptor(wr, encoding.TypeCodeFooter)
err := encoding.Marshal(wr, m.Footer)
if err != nil {
return err
}
}
return nil
}