mirror of
https://github.com/fhmq/hmq.git
synced 2026-05-06 07:35:32 +00:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| cf77eaf346 | |||
| 7c4d7a0c06 | |||
| 2b56664d85 | |||
| 7547ad3bdc |
@@ -617,7 +617,9 @@ func (b *Broker) removeClient(c *client) {
|
|||||||
func (b *Broker) PublishMessage(packet *packets.PublishPacket) {
|
func (b *Broker) PublishMessage(packet *packets.PublishPacket) {
|
||||||
var subs []interface{}
|
var subs []interface{}
|
||||||
var qoss []byte
|
var qoss []byte
|
||||||
|
b.mu.Lock()
|
||||||
err := b.topicsMgr.Subscribers([]byte(packet.TopicName), packet.Qos, &subs, &qoss)
|
err := b.topicsMgr.Subscribers([]byte(packet.TopicName), packet.Qos, &subs, &qoss)
|
||||||
|
b.mu.Unlock()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("search sub client error, ", zap.Error(err))
|
log.Error("search sub client error, ", zap.Error(err))
|
||||||
return
|
return
|
||||||
|
|||||||
+10
-5
@@ -51,11 +51,6 @@ type client struct {
|
|||||||
rmsgs []*packets.PublishPacket
|
rmsgs []*packets.PublishPacket
|
||||||
}
|
}
|
||||||
|
|
||||||
type subInfo struct {
|
|
||||||
sub *subscription
|
|
||||||
num int
|
|
||||||
}
|
|
||||||
|
|
||||||
type subscription struct {
|
type subscription struct {
|
||||||
client *client
|
client *client
|
||||||
topic string
|
topic string
|
||||||
@@ -117,6 +112,14 @@ func (c *client) readLoop() {
|
|||||||
log.Error("read packet error: ", zap.Error(err), zap.String("ClientID", c.info.clientID))
|
log.Error("read packet error: ", zap.Error(err), zap.String("ClientID", c.info.clientID))
|
||||||
msg := &Message{client: c, packet: DisconnectdPacket}
|
msg := &Message{client: c, packet: DisconnectdPacket}
|
||||||
b.SubmitWork(msg)
|
b.SubmitWork(msg)
|
||||||
|
|
||||||
|
// remove subscriptions related to that client
|
||||||
|
for topic, sub := range c.subMap {
|
||||||
|
t := []byte(topic)
|
||||||
|
c.topicsMgr.Unsubscribe(t, sub)
|
||||||
|
c.session.RemoveTopic(topic)
|
||||||
|
delete(c.subMap, topic)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -218,7 +221,9 @@ func (c *client) ProcessPublishMessage(packet *packets.PublishPacket) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c.mu.Lock()
|
||||||
err := c.topicsMgr.Subscribers([]byte(packet.TopicName), packet.Qos, &c.subs, &c.qoss)
|
err := c.topicsMgr.Subscribers([]byte(packet.TopicName), packet.Qos, &c.subs, &c.qoss)
|
||||||
|
c.mu.Unlock()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("Error retrieving subscribers list: ", zap.String("ClientID", c.info.clientID))
|
log.Error("Error retrieving subscribers list: ", zap.String("ClientID", c.info.clientID))
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user