|
|
|
@ -31,7 +31,10 @@ func (s *Session) VisitPublish(p packets.PublishPacket) {
|
|
|
|
|
PacketID: *p.PacketId,
|
|
|
|
|
Reason: reason,
|
|
|
|
|
}
|
|
|
|
|
s.Connection.sendPacket(ack)
|
|
|
|
|
err := s.Connection.sendPacket(ack)
|
|
|
|
|
if err != nil {
|
|
|
|
|
panic("TODO")
|
|
|
|
|
}
|
|
|
|
|
} else if p.QOSLevel == 2 {
|
|
|
|
|
panic("UNIMPLEMENTED QOS level 2")
|
|
|
|
|
}
|
|
|
|
@ -56,24 +59,30 @@ func (s *Session) VisitSubscribe(p packets.SubscribePacket) {
|
|
|
|
|
for _, filter := range p.TopicFilters {
|
|
|
|
|
subscription.Subscriptions.Subscribe(filter, s.SubscriptionChannel)
|
|
|
|
|
}
|
|
|
|
|
s.Connection.sendPacket(packets.SubAckPacket{
|
|
|
|
|
err := s.Connection.sendPacket(packets.SubAckPacket{
|
|
|
|
|
PacketID: p.PacketId,
|
|
|
|
|
Reason: packets.SubackReasonGrantedQoSTwo,
|
|
|
|
|
})
|
|
|
|
|
if err != nil {
|
|
|
|
|
panic("TODO")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s *Session) VisitUnsubscribe(p packets.UnsubscribePacket) {
|
|
|
|
|
for _, topic := range p.Topics {
|
|
|
|
|
subscription.Subscriptions.Unsubscribe(topic, s.SubscriptionChannel)
|
|
|
|
|
}
|
|
|
|
|
s.Connection.sendPacket(packets.UnsubAckPacket{
|
|
|
|
|
err := s.Connection.sendPacket(packets.UnsubAckPacket{
|
|
|
|
|
PacketID: p.PacketID,
|
|
|
|
|
Reason: packets.UnsubackReasonSuccess,
|
|
|
|
|
})
|
|
|
|
|
if err != nil {
|
|
|
|
|
panic("TODO")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s *Session) VisitPing(p packets.PingreqPacket) {
|
|
|
|
|
s.Connection.sendPacket(packets.PingrespPacket{})
|
|
|
|
|
_ = s.Connection.sendPacket(packets.PingrespPacket{})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|