mqtt-go

module
v0.0.0-...-91c8fa4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 31, 2019 License: EPL-2.0

README

mqtgo Build Status Go Report Card codecov GoDoc

mqtgo is a pure MQTT protocol packets in go focus on performence

this project was based on eclipse.paho mqtt packet

benchmark

  • goos: darwin

  • goarch: amd64

    BenchmarkNewControlPacket-4             20000000              85.5 ns/op               0 B/op          0 allocs/op
    BenchmarkParallelNewControlPacket-4     10000000               169 ns/op               0 B/op          0 allocs/op
    BenchmarkReadPacket-4                     500000              2340 ns/op             930 B/op          2 allocs/op
    

    compare with paho mqtt packets

    benchmark                               old ns/op     new ns/op     delta
    BenchmarkNewControlPacket-4             90.9          85.5          -5.94%
    BenchmarkParallelNewControlPacket-4     178           169           -5.06%
    BenchmarkReadPacket-4                   2707          2340          -13.56%
    
    benchmark                               old allocs     new allocs     delta
    BenchmarkNewControlPacket-4             1              0              -100.00%
    BenchmarkParallelNewControlPacket-4     1              0              -100.00%
    BenchmarkReadPacket-4                   8              2              -75.00%
    
    benchmark                               old bytes     new bytes     delta
    BenchmarkNewControlPacket-4             44            0             -100.00%
    BenchmarkParallelNewControlPacket-4     44            0             -100.00%
    BenchmarkReadPacket-4                   2116          930           -56.05%
    

TODO

  • try to redesign the protocol
package mqtt

type Unmarshaler interface {
    UnmarshalMqtt() error
}
type Marshaler interface {
    MarshalMqtt()([]byte, error)
}

func Marshal(v ControlPacket) ([]byte, error)
func Unmarshal(data []byte, v ControlPacket) error

type Decoder struct
    func NewDecoder(r io.Reader) *Decoder
    func (d *Decoder) Decode() ControlPacket, error
    func (d *Decoder) DecodeFixedHeader() *FixedHeader, error
    func (d *Decoder) DecodeControlPacket() ControlPacket, error

type Encoder struct
    func NewEncoder(w io.Writer) *Encoder
    func (e *Encoder) Encode(v ControlPacket) error
    func (e *Encoder) EncodeFixedHeader(fh *FixedHeader) error
    func (e *Eecoder) EncodeControlPacket(cp ControlPacket) error
type XXXPacket struct
    func NewXXXPacket() *XXXPacket
    func NewXXXPacketWithHeader(fh *FixedHeader) *XXXPacket
    func (m XXXPacket) MarshalMqtt() ([]byte, error)
    func (m *XXXPacket) UnmarshalMqtt(data []byte) error

type XXXPacketDecoder struct
    func NewXXXPacketDecoder(r io.Reader) *XXXPacketDecoder
    func (d XXXPacketDecoder)Decode() *NewXXXPacket,error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL