-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathmqtt-packet.go
46 lines (40 loc) · 1.07 KB
/
mqtt-packet.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package main
import (
"net"
log "github.com/sirupsen/logrus"
"github.com/eclipse/paho.mqtt.golang/packets"
)
func (session *Session) ForwardMQTTPacket(way string, r net.Conn, w net.Conn) error {
cp, err := packets.ReadPacket(r)
if err != nil {
if !session.closed {
log.Errorln("Session", session.id, way, "- Error reading MQTT packet", err)
}
return err
}
log.Println("Session", session.id, way, "- Forward MQTT packet", cp.String())
if authURL != "" {
switch p := cp.(type) {
case *packets.ConnectPacket: /*Outbound only*/
err = session.HandleConnect(way, p, r, w)
case *packets.SubscribePacket: /*Outbound only*/
err = session.HandleSubscribe(way, p, r, w)
case *packets.PublishPacket: /*Inbound/Outbound only*/
err = session.HandlePublish(way, p, r, w)
default:
err = nil
}
} else {
err = nil
}
if err != nil {
log.Println("Session", session.id, way, "- Forward MQTT packet", err)
return err
}
err = cp.Write(w)
if err != nil {
log.Errorln("Session", session.id, way, "- Error writing MQTT packet", err)
return err
}
return nil
}