1package packets 2 3import ( 4 "fmt" 5 "io" 6) 7 8//PubrelPacket is an internal representation of the fields of the 9//Pubrel MQTT packet 10type PubrelPacket struct { 11 FixedHeader 12 MessageID uint16 13} 14 15func (pr *PubrelPacket) String() string { 16 str := fmt.Sprintf("%s\n", pr.FixedHeader) 17 str += fmt.Sprintf("MessageID: %d", pr.MessageID) 18 return str 19} 20 21func (pr *PubrelPacket) Write(w io.Writer) error { 22 var err error 23 pr.FixedHeader.RemainingLength = 2 24 packet := pr.FixedHeader.pack() 25 packet.Write(encodeUint16(pr.MessageID)) 26 _, err = packet.WriteTo(w) 27 28 return err 29} 30 31//Unpack decodes the details of a ControlPacket after the fixed 32//header has been read 33func (pr *PubrelPacket) Unpack(b io.Reader) error { 34 pr.MessageID = decodeUint16(b) 35 36 return nil 37} 38 39//Details returns a Details struct containing the Qos and 40//MessageID of this ControlPacket 41func (pr *PubrelPacket) Details() Details { 42 return Details{Qos: pr.Qos, MessageID: pr.MessageID} 43} 44