Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( ErrNoConnection = errors.New("no connection available") // We are not in-between a call to ConAckReceived and ConnectionLost ErrPacketIdentifiersExhausted = errors.New("all packet identifiers in use") // There are no available Packet IDs )
Functions ¶
This section is empty.
Types ¶
type Packet ¶
type Packet interface { SetIdentifier(uint16) // Sets the packet identifier Type() byte // Gets the packet type WriteTo(io.Writer) (int64, error) }
Packet provides sufficient functionality to enable a packet to be transmitted with a packet identifier
type SessionManager ¶
type SessionManager interface { // ConAckReceived must be called when a CONNACK has been received (with no error). If an error is returned // then the connection will be dropped. ConAckReceived(io.Writer, *packets.Connect, *packets.Connack) error // ConnectionLost must be called whenever the connection is lost or a DISCONNECT packet is received. It can be // called multiple times for the same event as long as ConAckReceived is not called in the interim. ConnectionLost(dp *packets.Disconnect) error // AddToSession adds a packet to the session state (including allocation of a message identifier). // This should only be used for packets that impact the session state (which does not include QOS0 publish). // If this function returns a nil then: // - A message Identifier has been added to the passed in packet // - If a `PUBLISH` then a slot has been allocated (function will block if RECEIVE MAXIMUM messages are inflight) // - Publish messages will have been written to the store (and will be automatically transmitted if a new connection // is established before the message is fully acknowledged - subject to state rules in the MQTTv5 spec) // - Something will be sent to `resp` when either the message is fully acknowledged or the packet is removed from // the session (in which case nil will be sent). // // If the function returns an error, then any actions taken will be rewound prior to return. AddToSession(ctx context.Context, packet Packet, resp chan<- packets.ControlPacket) error // PacketReceived must be called when any packet with a packet identifier is received. It will make any required // response and pass any `PUBLISH` messages that need to be passed to the user via the channel. PacketReceived(*packets.ControlPacket, chan<- *packets.Publish) error // Ack must be called when the client message handlers have completed (or, if manual acknowledgements are enabled, // when`client.ACK()` has been called - note the potential issues discussed in issue #160. Ack(pb *packets.Publish) error // Close shuts down the session store, this will release any blocked calls // Note: `paho` will only call this if it created the session (i.e. it was not passed in the config) Close() error // SetErrorLogger enables error logging via the passed logger (not thread safe) SetErrorLogger(l paholog.Logger) // SetDebugLogger enables debug logging via the passed logger (not thread safe) SetDebugLogger(l paholog.Logger) }
SessionManager will manage the mqtt session state; note that the state may outlast a single `Client` instance
Click to show internal directories.
Click to hide internal directories.