broker.go 661 B

1234567891011121314151617181920212223242526272829303132333435
  1. package mqtt
  2. import (
  3. "net"
  4. "time"
  5. )
  6. type Broker struct {
  7. mgr *Manager
  8. }
  9. func NewBroker(p Provider) *Broker {
  10. // manager
  11. mgr := NewManager(p)
  12. handler := &Broker{mgr: mgr}
  13. return handler
  14. }
  15. func (b *Broker) Handle(conn net.Conn) {
  16. b.mgr.NewConn(conn)
  17. }
  18. func (b *Broker) SendMessageToDevice(deviceid uint64, msgtype string, message []byte, timeout time.Duration) error {
  19. msg := &Publish{}
  20. msg.Header.QosLevel = QosAtLeastOnce
  21. msg.TopicName = msgtype
  22. msg.Payload = BytesPayload(message)
  23. return b.mgr.PublishMessage2Device(deviceid, msg, timeout)
  24. }
  25. func (b *Broker) GetToken(deviceid uint64) ([]byte, error) {
  26. return b.mgr.GetToken(deviceid)
  27. }