Documentation ¶
Index ¶
- Constants
- Variables
- type ByteSlicePool
- type ConnackPacket
- type ConnectPacket
- type ControlPacket
- type Details
- type DisconnectPacket
- type FixedHeader
- type PacketReader
- type PacketWriter
- type PingreqPacket
- type PingrespPacket
- type PubackPacket
- type PubcompPacket
- type PublishPacket
- type PubrecPacket
- type PubrelPacket
- type SubackPacket
- type SubscribePacket
- type UnsubackPacket
- type UnsubscribePacket
Constants ¶
const ( MAX_SLICE_SIZE = 256 MAX_POOLED_SLICES = 256 )
const ( Connect = 1 Connack = 2 Publish = 3 Puback = 4 Pubrec = 5 Pubrel = 6 Pubcomp = 7 Subscribe = 8 Suback = 9 Unsubscribe = 10 Unsuback = 11 Pingreq = 12 Pingresp = 13 Disconnect = 14 MaxMessageType = 14 )
Below are the constants assigned to each of the MQTT packet types
const ( Accepted = 0x00 ErrRefusedBadProtocolVersion = 0x01 ErrRefusedIDRejected = 0x02 ErrRefusedBadUsernameOrPassword = 0x04 ErrRefusedNotAuthorised = 0x05 ErrNetworkError = 0xFE ErrProtocolViolation = 0xFF )
Below are the const definitions for error codes returned by Connect()
Variables ¶
var ConnErrors = map[byte]error{ Accepted: nil, ErrRefusedBadProtocolVersion: errors.New("Unnacceptable protocol version"), ErrRefusedIDRejected: errors.New("Identifier rejected"), ErrRefusedServerUnavailable: errors.New("Server Unavailable"), ErrRefusedBadUsernameOrPassword: errors.New("Bad user name or password"), ErrRefusedNotAuthorised: errors.New("Not Authorized"), ErrNetworkError: errors.New("Network Error"), ErrProtocolViolation: errors.New("Protocol Violation"), }
ConnErrors is a map of the errors codes constants for Connect() to a Go error
var ConnackReturnCodes = map[uint8]string{
0: "Connection Accepted",
1: "Connection Refused: Bad Protocol Version",
2: "Connection Refused: Client Identifier Rejected",
3: "Connection Refused: Server Unavailable",
4: "Connection Refused: Username or Password in unknown format",
5: "Connection Refused: Not Authorised",
254: "Connection Error",
255: "Connection Refused: Protocol Violation",
}
ConnackReturnCodes is a map of the error codes constants for Connect() to a string representation of the error
var PacketNames = map[uint8]string{
1: "CONNECT",
2: "CONNACK",
3: "PUBLISH",
4: "PUBACK",
5: "PUBREC",
6: "PUBREL",
7: "PUBCOMP",
8: "SUBSCRIBE",
9: "SUBACK",
10: "UNSUBSCRIBE",
11: "UNSUBACK",
12: "PINGREQ",
13: "PINGRESP",
14: "DISCONNECT",
}
PacketNames maps the constants for each of the MQTT packet types to a string representation of their name.
Functions ¶
This section is empty.
Types ¶
type ByteSlicePool ¶
type ByteSlicePool struct {
// contains filtered or unexported fields
}
func (*ByteSlicePool) Release ¶
func (pool *ByteSlicePool) Release()
type ConnackPacket ¶
type ConnackPacket struct { *FixedHeader TopicNameCompression byte ReturnCode byte }
ConnackPacket is an internal representation of the fields of the Connack MQTT packet
func (*ConnackPacket) Details ¶
func (ca *ConnackPacket) Details() Details
Details returns a Details struct containing the Qos and MessageID of this ControlPacket
func (*ConnackPacket) String ¶
func (ca *ConnackPacket) String() string
func (*ConnackPacket) Unpack ¶
func (ca *ConnackPacket) Unpack(src []byte)
Unpack decodes the details of a ControlPacket after the fixed header has been read
func (*ConnackPacket) Write ¶
func (ca *ConnackPacket) Write(w PacketWriter) error
type ConnectPacket ¶
type ConnectPacket struct { *FixedHeader ProtocolName string ProtocolVersion byte CleanSession bool WillFlag bool WillQos byte WillRetain bool UsernameFlag bool PasswordFlag bool ReservedBit byte KeepaliveTimer uint16 ClientIdentifier string WillTopic string WillMessage []byte Username string Password []byte }
ConnectPacket is an internal representation of the fields of the Connect MQTT packet
func (*ConnectPacket) Details ¶
func (c *ConnectPacket) Details() Details
Details returns a Details struct containing the Qos and MessageID of this ControlPacket
func (*ConnectPacket) String ¶
func (c *ConnectPacket) String() string
func (*ConnectPacket) Unpack ¶
func (c *ConnectPacket) Unpack(src []byte)
Unpack decodes the details of a ControlPacket after the fixed header has been read
func (*ConnectPacket) Validate ¶
func (c *ConnectPacket) Validate() byte
Validate performs validation of the fields of a Connect packet
func (*ConnectPacket) Write ¶
func (c *ConnectPacket) Write(w PacketWriter) error
type ControlPacket ¶
type ControlPacket interface { Write(PacketWriter) error Unpack([]byte) String() string Details() Details Release() // contains filtered or unexported methods }
ControlPacket defines the interface for structs intended to hold decoded MQTT packets, either from being read or before being written
func NewControlPacket ¶
func NewControlPacket(packetType byte) (cp ControlPacket)
NewControlPacket is used to create a new ControlPacket of the type specified by packetType, this is usually done by reference to the packet type constants defined in packets.go. The newly created ControlPacket is empty and a pointer is returned.
func NewControlPacketWithHeader ¶
func NewControlPacketWithHeader(fh *FixedHeader) (cp ControlPacket)
NewControlPacketWithHeader is used to create a new ControlPacket of the type specified within the FixedHeader that is passed to the function. The newly created ControlPacket is empty and a pointer is returned.
func ReadPacket ¶
func ReadPacket(r PacketReader) (cp ControlPacket, err error)
ReadPacket takes an instance of an PacketReader (such as bufio.Reader) and attempts to read an MQTT packet from the stream. It returns a ControlPacket representing the decoded MQTT packet and an error. One of these returns will always be nil, a nil ControlPacket indicating an error occurred.
type Details ¶
Details struct returned by the Details() function called on ControlPackets to present details of the Qos and MessageID of the ControlPacket
type DisconnectPacket ¶
type DisconnectPacket struct {
*FixedHeader
}
DisconnectPacket is an internal representation of the fields of the Disconnect MQTT packet
func (*DisconnectPacket) Details ¶
func (d *DisconnectPacket) Details() Details
Details returns a Details struct containing the Qos and MessageID of this ControlPacket
func (*DisconnectPacket) String ¶
func (d *DisconnectPacket) String() string
func (*DisconnectPacket) Unpack ¶
func (d *DisconnectPacket) Unpack(src []byte)
Unpack decodes the details of a ControlPacket after the fixed header has been read
func (*DisconnectPacket) Write ¶
func (d *DisconnectPacket) Write(w PacketWriter) error
type FixedHeader ¶
type FixedHeader struct { ByteSlicePool MessageType byte Dup bool Qos byte Retain bool RemainingLength int // contains filtered or unexported fields }
FixedHeader is a struct to hold the decoded information from the fixed header of an MQTT ControlPacket
func (*FixedHeader) Release ¶
func (fh *FixedHeader) Release()
func (*FixedHeader) String ¶
func (fh *FixedHeader) String() string
type PacketReader ¶
type PacketReader interface { io.Reader io.ByteReader }
type PacketWriter ¶
type PacketWriter interface { io.Writer io.ByteWriter }
type PingreqPacket ¶
type PingreqPacket struct {
*FixedHeader
}
PingreqPacket is an internal representation of the fields of the Pingreq MQTT packet
func (*PingreqPacket) Details ¶
func (pr *PingreqPacket) Details() Details
Details returns a Details struct containing the Qos and MessageID of this ControlPacket
func (*PingreqPacket) String ¶
func (pr *PingreqPacket) String() string
func (*PingreqPacket) Unpack ¶
func (pr *PingreqPacket) Unpack(src []byte)
Unpack decodes the details of a ControlPacket after the fixed header has been read
func (*PingreqPacket) Write ¶
func (pr *PingreqPacket) Write(w PacketWriter) error
type PingrespPacket ¶
type PingrespPacket struct {
*FixedHeader
}
PingrespPacket is an internal representation of the fields of the Pingresp MQTT packet
func (*PingrespPacket) Details ¶
func (pr *PingrespPacket) Details() Details
Details returns a Details struct containing the Qos and MessageID of this ControlPacket
func (*PingrespPacket) String ¶
func (pr *PingrespPacket) String() string
func (*PingrespPacket) Unpack ¶
func (pr *PingrespPacket) Unpack(src []byte)
Unpack decodes the details of a ControlPacket after the fixed header has been read
func (*PingrespPacket) Write ¶
func (pr *PingrespPacket) Write(w PacketWriter) error
type PubackPacket ¶
type PubackPacket struct { *FixedHeader MessageID uint16 }
PubackPacket is an internal representation of the fields of the Puback MQTT packet
func (*PubackPacket) Details ¶
func (pa *PubackPacket) Details() Details
Details returns a Details struct containing the Qos and MessageID of this ControlPacket
func (*PubackPacket) String ¶
func (pa *PubackPacket) String() string
func (*PubackPacket) Unpack ¶
func (pa *PubackPacket) Unpack(src []byte)
Unpack decodes the details of a ControlPacket after the fixed header has been read
func (*PubackPacket) Write ¶
func (pa *PubackPacket) Write(w PacketWriter) error
type PubcompPacket ¶
type PubcompPacket struct { *FixedHeader MessageID uint16 }
PubcompPacket is an internal representation of the fields of the Pubcomp MQTT packet
func (*PubcompPacket) Details ¶
func (pc *PubcompPacket) Details() Details
Details returns a Details struct containing the Qos and MessageID of this ControlPacket
func (*PubcompPacket) String ¶
func (pc *PubcompPacket) String() string
func (*PubcompPacket) Unpack ¶
func (pc *PubcompPacket) Unpack(src []byte)
Unpack decodes the details of a ControlPacket after the fixed header has been read
func (*PubcompPacket) Write ¶
func (pc *PubcompPacket) Write(w PacketWriter) error
type PublishPacket ¶
type PublishPacket struct { *FixedHeader TopicName []byte MessageID uint16 Payload []byte }
PublishPacket is an internal representation of the fields of the Publish MQTT packet
func (*PublishPacket) Copy ¶
func (p *PublishPacket) Copy() *PublishPacket
Copy creates a new PublishPacket with the same topic and payload but an empty fixed header, useful for when you want to deliver a message with different properties such as Qos but the same content
func (*PublishPacket) Details ¶
func (p *PublishPacket) Details() Details
Details returns a Details struct containing the Qos and MessageID of this ControlPacket
func (*PublishPacket) String ¶
func (p *PublishPacket) String() string
func (*PublishPacket) Unpack ¶
func (p *PublishPacket) Unpack(src []byte)
Unpack decodes the details of a ControlPacket after the fixed header has been read
func (*PublishPacket) Write ¶
func (p *PublishPacket) Write(w PacketWriter) error
type PubrecPacket ¶
type PubrecPacket struct { *FixedHeader MessageID uint16 }
PubrecPacket is an internal representation of the fields of the Pubrec MQTT packet
func (*PubrecPacket) Details ¶
func (pr *PubrecPacket) Details() Details
Details returns a Details struct containing the Qos and MessageID of this ControlPacket
func (*PubrecPacket) String ¶
func (pr *PubrecPacket) String() string
func (*PubrecPacket) Unpack ¶
func (pr *PubrecPacket) Unpack(src []byte)
Unpack decodes the details of a ControlPacket after the fixed header has been read
func (*PubrecPacket) Write ¶
func (pr *PubrecPacket) Write(w PacketWriter) error
type PubrelPacket ¶
type PubrelPacket struct { *FixedHeader MessageID uint16 }
PubrelPacket is an internal representation of the fields of the Pubrel MQTT packet
func (*PubrelPacket) Details ¶
func (pr *PubrelPacket) Details() Details
Details returns a Details struct containing the Qos and MessageID of this ControlPacket
func (*PubrelPacket) String ¶
func (pr *PubrelPacket) String() string
func (*PubrelPacket) Unpack ¶
func (pr *PubrelPacket) Unpack(src []byte)
Unpack decodes the details of a ControlPacket after the fixed header has been read
func (*PubrelPacket) Write ¶
func (pr *PubrelPacket) Write(w PacketWriter) error
type SubackPacket ¶
type SubackPacket struct { *FixedHeader MessageID uint16 GrantedQoss []byte }
SubackPacket is an internal representation of the fields of the Suback MQTT packet
func (*SubackPacket) Details ¶
func (sa *SubackPacket) Details() Details
Details returns a Details struct containing the Qos and MessageID of this ControlPacket
func (*SubackPacket) String ¶
func (sa *SubackPacket) String() string
func (*SubackPacket) Unpack ¶
func (sa *SubackPacket) Unpack(src []byte)
Unpack decodes the details of a ControlPacket after the fixed header has been read
func (*SubackPacket) Write ¶
func (sa *SubackPacket) Write(w PacketWriter) error
type SubscribePacket ¶
type SubscribePacket struct { *FixedHeader MessageID uint16 Topics []string Qoss []byte }
SubscribePacket is an internal representation of the fields of the Subscribe MQTT packet
func (*SubscribePacket) Details ¶
func (s *SubscribePacket) Details() Details
Details returns a Details struct containing the Qos and MessageID of this ControlPacket
func (*SubscribePacket) String ¶
func (s *SubscribePacket) String() string
func (*SubscribePacket) Unpack ¶
func (s *SubscribePacket) Unpack(src []byte)
Unpack decodes the details of a ControlPacket after the fixed header has been read
func (*SubscribePacket) Write ¶
func (s *SubscribePacket) Write(w PacketWriter) error
type UnsubackPacket ¶
type UnsubackPacket struct { *FixedHeader MessageID uint16 }
UnsubackPacket is an internal representation of the fields of the Unsuback MQTT packet
func (*UnsubackPacket) Details ¶
func (ua *UnsubackPacket) Details() Details
Details returns a Details struct containing the Qos and MessageID of this ControlPacket
func (*UnsubackPacket) String ¶
func (ua *UnsubackPacket) String() string
func (*UnsubackPacket) Unpack ¶
func (ua *UnsubackPacket) Unpack(src []byte)
Unpack decodes the details of a ControlPacket after the fixed header has been read
func (*UnsubackPacket) Write ¶
func (ua *UnsubackPacket) Write(w PacketWriter) error
type UnsubscribePacket ¶
type UnsubscribePacket struct { *FixedHeader MessageID uint16 Topics []string }
UnsubscribePacket is an internal representation of the fields of the Unsubscribe MQTT packet
func (*UnsubscribePacket) Details ¶
func (u *UnsubscribePacket) Details() Details
Details returns a Details struct containing the Qos and MessageID of this ControlPacket
func (*UnsubscribePacket) String ¶
func (u *UnsubscribePacket) String() string
func (*UnsubscribePacket) Unpack ¶
func (u *UnsubscribePacket) Unpack(src []byte)
Unpack decodes the details of a ControlPacket after the fixed header has been read
func (*UnsubscribePacket) Write ¶
func (u *UnsubscribePacket) Write(w PacketWriter) error