Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Errors ¶
type Errors int
Errors persistence errors
const ( // ErrInvalidArgs invalid arguments provided ErrInvalidArgs Errors = iota // ErrUnknownProvider if provider is unknown ErrUnknownProvider // ErrInvalidConfig provided config is invalid ErrInvalidConfig // ErrAlreadyExists object already exists ErrAlreadyExists // ErrNotInitialized persistence provider not initialized yet ErrNotInitialized // ErrNotFound object not found ErrNotFound // ErrNotOpen storage is not open ErrNotOpen // ErrBrokenEntry persisted entry does not meet requirements ErrBrokenEntry )
type Expiry ¶
type Expiry interface { ExpiryStore(id []byte, delays *SessionDelays) error ExpiryDelete(id []byte) error }
Expiry session expiration interface
type IFace ¶
type IFace interface { Sessions() (Sessions, error) Retained() (Retained, error) System() (System, error) Shutdown() error }
IFace interface implemented by different backends
type PacketLoader ¶
type PacketLoader func(interface{}, *PersistedPacket) (bool, error)
PacketLoader application callback doing packed decode when return true in first return packet will be deleted if error presented load interrupted after current packet
type Packets ¶
type Packets interface { PacketCountQoS0(id []byte) (uint64, error) PacketCountQoS12(id []byte) (uint64, error) PacketCountUnAck(id []byte) (uint64, error) PacketStoreQoS0(id []byte, packets *PersistedPacket) error PacketStoreQoS12(id []byte, packets *PersistedPacket) error PacketsForEachQoS0(id []byte, ctx interface{}, loader PacketLoader) error PacketsForEachQoS12(id []byte, ctx interface{}, loader PacketLoader) error PacketsForEachUnAck(id []byte, ctx interface{}, loader PacketLoader) error PacketsStore(id []byte, packets PersistedPackets) error PacketsDelete(id []byte) error }
Packets interface for connection to handle packets
type PersistedPacket ¶
type PersistedPacket struct { // ExpireAt shows either packet has expiration value ExpireAt string // Data is encoded byte stream as it goes over network Data []byte }
PersistedPacket wraps packet to handle misc cases like expiration
type PersistedPackets ¶
type PersistedPackets struct { QoS0 []*PersistedPacket QoS12 []*PersistedPacket UnAck []*PersistedPacket }
PersistedPackets array of persisted packets
type Retained ¶
type Retained interface { // Store persist retained message // it wipes previously set values Store([]*PersistedPacket) error // Load load retained messages Load() ([]*PersistedPacket, error) // Wipe retained storage Wipe() error }
Retained provider for load/store retained messages
type SessionDelays ¶
SessionDelays formerly known as expiry set timestamp to handle will delay and/or expiration
type SessionLoader ¶
type SessionLoader interface {
LoadSession(ctx interface{}, id []byte, state *SessionState) error
}
SessionLoader implemented by session manager to load persisted sessions when server starts
type SessionState ¶
type SessionState struct { Subscriptions []byte Errors []error Expire *SessionDelays SessionBase }
SessionState object
type Sessions ¶
type Sessions interface { Packets Subscriptions State Expiry Create(id []byte, state *SessionBase) error Count() uint64 LoadForEach(loader SessionLoader, ctx interface{}) error // Exists check session if presented in storage Exists(id []byte) bool Delete(id []byte) error }
Sessions interface allows operating with sessions inside backend
type State ¶
type State interface { StateStore(id []byte, state *SessionState) error StateDelete(id []byte) error }
State session state interface
type Subscriptions ¶
type Subscriptions interface { SubscriptionsStore([]byte, []byte) error SubscriptionsDelete([]byte) error }
Subscriptions session subscriptions interface
type System ¶
type System interface {
GetInfo() (*SystemState, error)
}
System persistence state of the system configuration
type SystemState ¶
SystemState system configuration