93 lines
2.2 KiB
Go
93 lines
2.2 KiB
Go
|
package packets
|
||
|
|
||
|
import (
|
||
|
"io"
|
||
|
"badat.dev/maeqtt/v2/mqtt/properties"
|
||
|
)
|
||
|
|
||
|
|
||
|
type PubackReasonCode byte
|
||
|
|
||
|
const (
|
||
|
PubackReasonCodeSuccess PubackReasonCode = 0
|
||
|
PubackReasonCodeNoMatchingSubscribers = 16
|
||
|
PubackReasonCodeUnspecifiedError = 128
|
||
|
PubackReasonCodeImplementationSpecyficEror = 131
|
||
|
PubackReasonCodeNotAuthorized = 135
|
||
|
PubackReasonCodeTopicNameInvalid = 144
|
||
|
PubackReasonCodePacketIDInUse = 145
|
||
|
PubackReasonCodeQuotaExceeded = 151
|
||
|
PubackReasonCodePayloadFormatInvalid = 153
|
||
|
)
|
||
|
|
||
|
type PubackPacket struct {
|
||
|
PacketID uint16
|
||
|
Properties properties.PubackPacketProperties
|
||
|
Reason PubackReasonCode
|
||
|
}
|
||
|
|
||
|
func (p PubackPacket) Write(w io.Writer) error {
|
||
|
resp := pubRespPacket{
|
||
|
PacketType: PacketTypePuback,
|
||
|
PacketID: p.PacketID,
|
||
|
Properties: p.Properties.ArrayOf(),
|
||
|
Reason: byte(p.Reason),
|
||
|
}
|
||
|
return resp.Write(w)
|
||
|
}
|
||
|
|
||
|
type PubrecPacket struct {
|
||
|
PacketID uint16
|
||
|
Properties properties.PubrecPacketProperties
|
||
|
Reason PubackReasonCode
|
||
|
}
|
||
|
|
||
|
func (p PubrecPacket) Write(w io.Writer) error {
|
||
|
resp := pubRespPacket{
|
||
|
PacketType: PacketTypePubrec,
|
||
|
PacketID: p.PacketID,
|
||
|
Properties: p.Properties.ArrayOf(),
|
||
|
Reason: byte(p.Reason),
|
||
|
}
|
||
|
return resp.Write(w)
|
||
|
}
|
||
|
|
||
|
type PubrelReasonCode byte
|
||
|
|
||
|
const (
|
||
|
PubrelReasonCodeSuccess PubackReasonCode = 0
|
||
|
PubrelReasonPacketIDNotFound = 146
|
||
|
)
|
||
|
|
||
|
type PubrelPacket struct {
|
||
|
PacketID uint16
|
||
|
Properties properties.PubrecPacketProperties
|
||
|
Reason PubrelReasonCode
|
||
|
}
|
||
|
|
||
|
func (p PubrelPacket) Write(w io.Writer) error {
|
||
|
resp := pubRespPacket{
|
||
|
PacketType: PacketTypePubrel,
|
||
|
PacketID: p.PacketID,
|
||
|
Properties: p.Properties.ArrayOf(),
|
||
|
Reason: byte(p.Reason),
|
||
|
}
|
||
|
return resp.Write(w)
|
||
|
}
|
||
|
|
||
|
type PubcompPacket struct {
|
||
|
PacketID uint16
|
||
|
Properties properties.PubcompPacketProperties
|
||
|
Reason PubrelReasonCode
|
||
|
}
|
||
|
|
||
|
func (p PubcompPacket) Write(w io.Writer) error {
|
||
|
resp := pubRespPacket{
|
||
|
PacketType: PacketTypePubrel,
|
||
|
PacketID: p.PacketID,
|
||
|
Properties: p.Properties.ArrayOf(),
|
||
|
Reason: byte(p.Reason),
|
||
|
}
|
||
|
return resp.Write(w)
|
||
|
}
|