forked from eclipse/paho.golang
/
cp_disconnect.go
58 lines (49 loc) · 1.69 KB
/
cp_disconnect.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
47
48
49
50
51
52
53
54
55
56
57
58
package paho
import "github.com/ppniu/mqtt.golang/packets"
type (
// Disconnect is a representation of the MQTT Disconnect packet
Disconnect struct {
Properties *DisconnectProperties
ReasonCode byte
}
// DisconnectProperties is a struct of the properties that can be set
// for a Disconnect packet
DisconnectProperties struct {
ServerReference string
ReasonString string
SessionExpiryInterval *uint32
User UserProperties
}
)
// InitProperties is a function that takes a lower level
// Properties struct and completes the properties of the Disconnect on
// which it is called
func (d *Disconnect) InitProperties(p *packets.Properties) {
d.Properties = &DisconnectProperties{
SessionExpiryInterval: p.SessionExpiryInterval,
ServerReference: p.ServerReference,
ReasonString: p.ReasonString,
User: UserPropertiesFromPacketUser(p.User),
}
}
// DisconnectFromPacketDisconnect takes a packets library Disconnect and
// returns a paho library Disconnect
func DisconnectFromPacketDisconnect(p *packets.Disconnect) *Disconnect {
v := &Disconnect{ReasonCode: p.ReasonCode}
v.InitProperties(p.Properties)
return v
}
// Packet returns a packets library Disconnect from the paho Disconnect
// on which it is called
func (d *Disconnect) Packet() *packets.Disconnect {
v := &packets.Disconnect{ReasonCode: d.ReasonCode}
if d.Properties != nil {
v.Properties = &packets.Properties{
SessionExpiryInterval: d.Properties.SessionExpiryInterval,
ServerReference: d.Properties.ServerReference,
ReasonString: d.Properties.ReasonString,
User: d.Properties.User.ToPacketProperties(),
}
}
return v
}