code: func encodeRelayMessage(t messageType, addr net.UDPAddr, msg interface{}) ([]byte, error) {
  	buf := bytes.NewBuffer(nil)
  	handle := codec.MsgpackHandle{}
  	encoder := codec.NewEncoder(buf, &handle)
  
  	buf.WriteByte(uint8(messageRelayType))
  	if err := encoder.Encode(relayHeader{DestAddr: addr}); err != nil {
  		return nil, err
  	}
  
  	buf.WriteByte(uint8(t))
  	err := encoder.Encode(msg)
  	return buf.Bytes(), err
  }
docs: // encodeRelayMessage wraps a message in the messageRelayType, adding the length and
  // address of the end recipient to the front of the message