From ea301a39237ac9896be291d5c85f8c085a905376 Mon Sep 17 00:00:00 2001 From: "heavyrain.lee" Date: Sun, 9 Jun 2019 07:36:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=86=85=E9=83=A8=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- broker/src/main/java/io/moquette/imhandler/IMHandler.java | 5 +++-- .../java/io/moquette/imhandler/RecallMessageHandler.java | 2 +- .../java/io/moquette/persistence/MemoryMessagesStore.java | 3 ++- broker/src/main/java/io/moquette/spi/IMessagesStore.java | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/broker/src/main/java/io/moquette/imhandler/IMHandler.java b/broker/src/main/java/io/moquette/imhandler/IMHandler.java index 881b4966..13175190 100755 --- a/broker/src/main/java/io/moquette/imhandler/IMHandler.java +++ b/broker/src/main/java/io/moquette/imhandler/IMHandler.java @@ -238,8 +238,9 @@ abstract public class IMHandler { Set notifyReceivers = new LinkedHashSet<>(); message = m_messagesStore.storeMessage(username, clientID, message); - int pullType = m_messagesStore.getNotifyReceivers(username, message, notifyReceivers); - this.publisher.publish2Receivers(message, notifyReceivers, clientID, pullType); + WFCMessage.Message.Builder messageBuilder = message.toBuilder(); + int pullType = m_messagesStore.getNotifyReceivers(username, messageBuilder, notifyReceivers); + this.publisher.publish2Receivers(messageBuilder.build(), notifyReceivers, clientID, pullType); return notifyReceivers.size(); } diff --git a/broker/src/main/java/io/moquette/imhandler/RecallMessageHandler.java b/broker/src/main/java/io/moquette/imhandler/RecallMessageHandler.java index f6674a0e..c0df8d06 100644 --- a/broker/src/main/java/io/moquette/imhandler/RecallMessageHandler.java +++ b/broker/src/main/java/io/moquette/imhandler/RecallMessageHandler.java @@ -33,7 +33,7 @@ public class RecallMessageHandler extends IMHandler { return ErrorCode.ERROR_CODE_NOT_EXIST; } - m_messagesStore.getNotifyReceivers(fromUser, message, notifyReceivers); + m_messagesStore.getNotifyReceivers(fromUser, message.toBuilder(), notifyReceivers); this.publisher.publishRecall2Receivers(int64Buf.getId(), fromUser, notifyReceivers, clientID); return errorCode; diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index d5ced6d1..16d8e6b2 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -170,7 +170,8 @@ public class MemoryMessagesStore implements IMessagesStore { } @Override - public int getNotifyReceivers(String fromUser, WFCMessage.Message message, Set notifyReceivers) { + public int getNotifyReceivers(String fromUser, WFCMessage.Message.Builder messageBuilder, Set notifyReceivers) { + WFCMessage.Message message = messageBuilder.build(); HazelcastInstance hzInstance = m_Server.getHazelcastInstance(); int type = message.getConversation().getType(); diff --git a/broker/src/main/java/io/moquette/spi/IMessagesStore.java b/broker/src/main/java/io/moquette/spi/IMessagesStore.java index 45ec3f84..e69aaef8 100755 --- a/broker/src/main/java/io/moquette/spi/IMessagesStore.java +++ b/broker/src/main/java/io/moquette/spi/IMessagesStore.java @@ -96,7 +96,7 @@ public interface IMessagesStore { DatabaseStore getDatabaseStore(); WFCMessage.Message storeMessage(String fromUser, String fromClientId, WFCMessage.Message message); - int getNotifyReceivers(String fromUser, WFCMessage.Message message, Set notifyReceivers); + int getNotifyReceivers(String fromUser, WFCMessage.Message.Builder message, Set notifyReceivers); Set getAllEnds(); WFCMessage.PullMessageResult fetchMessage(String user, String exceptClientId, long fromMessageId, int pullType); WFCMessage.PullMessageResult loadRemoteMessages(String user, WFCMessage.Conversation conversation, long beforeUid, int count);