From 92c59d2fe813f0b1740de97aea5b364894feb84d Mon Sep 17 00:00:00 2001 From: heavyrain2012 Date: Tue, 23 Nov 2021 13:56:59 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E8=BF=9C=E7=A8=8B=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E6=94=AF=E6=8C=81=E6=8C=89=E7=85=A7=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E6=9D=A5=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../h2/V40__add_user_messages_cont_type.sql | 1 + .../V45__add_user_messages_cont_type.sql | 257 ++++++++++++++++++ .../imhandler/LoadRemoteMessagesHandler.java | 2 +- .../moquette/persistence/DatabaseStore.java | 31 ++- .../persistence/MemoryMessagesStore.java | 6 +- .../java/io/moquette/spi/IMessagesStore.java | 2 +- .../cn/wildfirechat/proto/WFCMessage.java | 174 +++++++++++- 7 files changed, 452 insertions(+), 21 deletions(-) create mode 100755 broker/migrate/h2/V40__add_user_messages_cont_type.sql create mode 100755 broker/migrate/mysql/V45__add_user_messages_cont_type.sql diff --git a/broker/migrate/h2/V40__add_user_messages_cont_type.sql b/broker/migrate/h2/V40__add_user_messages_cont_type.sql new file mode 100755 index 00000000..223d413a --- /dev/null +++ b/broker/migrate/h2/V40__add_user_messages_cont_type.sql @@ -0,0 +1 @@ +alter table `t_user_messages` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; diff --git a/broker/migrate/mysql/V45__add_user_messages_cont_type.sql b/broker/migrate/mysql/V45__add_user_messages_cont_type.sql new file mode 100755 index 00000000..913aae4f --- /dev/null +++ b/broker/migrate/mysql/V45__add_user_messages_cont_type.sql @@ -0,0 +1,257 @@ +alter table `t_user_messages` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_0` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_1` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_2` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_3` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_4` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_5` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_6` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_7` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_8` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_9` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_10` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_11` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_12` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_13` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_14` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_15` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_16` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_17` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_18` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_19` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_20` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_21` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_22` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_23` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_24` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_25` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_26` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_27` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_28` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_29` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_30` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_31` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_32` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_33` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_34` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_35` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_36` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_37` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_38` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_39` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_40` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_41` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_42` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_43` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_44` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_45` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_46` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_47` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_48` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_49` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_50` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_51` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_52` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_53` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_54` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_55` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_56` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_57` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_58` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_59` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_60` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_61` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_62` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_63` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_64` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_65` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_66` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_67` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_68` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_69` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_70` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_71` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_72` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_73` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_74` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_75` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_76` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_77` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_78` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_79` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_80` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_81` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_82` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_83` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_84` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_85` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_86` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_87` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_88` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_89` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_90` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_91` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_92` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_93` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_94` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_95` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_96` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_97` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_98` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_99` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_100` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_101` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_102` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_103` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_104` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_105` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_106` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_107` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_108` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_109` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_110` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_111` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_112` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_113` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_114` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_115` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_116` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_117` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_118` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_119` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_120` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_121` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_122` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_123` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_124` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_125` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_126` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; + +alter table `t_user_messages_127` add column `_cont_type` int(11) NOT NULL DEFAULT '0'; diff --git a/broker/src/main/java/io/moquette/imhandler/LoadRemoteMessagesHandler.java b/broker/src/main/java/io/moquette/imhandler/LoadRemoteMessagesHandler.java index a8148859..7ce4c820 100644 --- a/broker/src/main/java/io/moquette/imhandler/LoadRemoteMessagesHandler.java +++ b/broker/src/main/java/io/moquette/imhandler/LoadRemoteMessagesHandler.java @@ -38,7 +38,7 @@ public class LoadRemoteMessagesHandler extends IMHandler loadRemoteMessages(String user, WFCMessage.Conversation conversation, long beforeUid, int count) { + List loadRemoteMessages(String user, WFCMessage.Conversation conversation, long beforeUid, int count, Collection contentTypes) { List messages = new ArrayList<>(); long[] before = new long[1]; before[0] = beforeUid; - boolean hasMore = loadRemoteMessagesFromTable(user, conversation, before, count, MessageShardingUtil.getMessageTable(beforeUid), messages); + boolean hasMore = loadRemoteMessagesFromTable(user, conversation, before, count, MessageShardingUtil.getMessageTable(beforeUid), messages, contentTypes); while (messages.size() < count && hasMore) { - hasMore = loadRemoteMessagesFromTable(user, conversation, before, count - messages.size(), MessageShardingUtil.getMessageTable(beforeUid), messages); + hasMore = loadRemoteMessagesFromTable(user, conversation, before, count - messages.size(), MessageShardingUtil.getMessageTable(beforeUid), messages, contentTypes); } int month = 0; @@ -800,7 +800,7 @@ public class DatabaseStore { int size = messages.size(); hasMore = true; while (size == messages.size() && hasMore) { - hasMore = loadRemoteMessagesFromTable(user, conversation, before, count - messages.size(), nexTable, messages); + hasMore = loadRemoteMessagesFromTable(user, conversation, before, count - messages.size(), nexTable, messages, contentTypes); } if (size < messages.size()) { @@ -811,7 +811,7 @@ public class DatabaseStore { return messages; } - boolean loadRemoteMessagesFromTable(String user, WFCMessage.Conversation conversation, long[] before, int count, String table, List messages) { + boolean loadRemoteMessagesFromTable(String user, WFCMessage.Conversation conversation, long[] before, int count, String table, List messages, Collection contentTypes) { long beforeUid = before[0]; String sql = "select `_mid`, `_from`, `_type`, `_target`, `_line`, `_data`, `_dt`, `_to` from " + table +" where"; if (conversation.getType() == ProtoConstants.ConversationType.ConversationType_Private) { @@ -820,7 +820,21 @@ public class DatabaseStore { sql += " _type = ? and _line = ? and _mid < ? and _target = ?"; } - sql += "order by `_mid` DESC limit ?"; + if(contentTypes != null && !contentTypes.isEmpty()) { + sql += " and _content_type in ("; + boolean first = true; + for (int i:contentTypes) { + if(first) { + first = false; + } else { + sql += ","; + } + sql += i; + } + sql += ")"; + } + + sql += " order by `_mid` DESC limit ?"; Connection connection = null; PreparedStatement statement = null; @@ -893,20 +907,21 @@ public class DatabaseStore { return false; } - void persistUserMessage(final String userId, final long messageId, final long messageSeq) { + void persistUserMessage(final String userId, final long messageId, final long messageSeq, final int messageContentType) { mScheduler.execute(()->{ Connection connection = null; PreparedStatement statement = null; try { connection = DBUtil.getConnection(); - String sql = "insert into " + getUserMessageTable(userId) + " (`_mid`, `_uid`, `_seq`) values(?, ?, ?)"; + String sql = "insert into " + getUserMessageTable(userId) + " (`_mid`, `_uid`, `_seq`, `_cont_type`) values(?, ?, ?, ?)"; statement = connection.prepareStatement(sql); int index = 1; statement.setLong(index++, messageId); statement.setString(index++, userId); statement.setLong(index++, messageSeq); + statement.setInt(index++, messageContentType); int count = statement.executeUpdate(); LOG.info("Update rows {}", count); } catch (SQLException e) { diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index dea3fadf..b921d39f 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -732,7 +732,7 @@ public class MemoryMessagesStore implements IMessagesStore { } @Override - public WFCMessage.PullMessageResult loadRemoteMessages(String user, WFCMessage.Conversation conversation, long beforeUid, int count) { + public WFCMessage.PullMessageResult loadRemoteMessages(String user, WFCMessage.Conversation conversation, long beforeUid, int count, Collection contentTypes) { WFCMessage.PullMessageResult.Builder builder = WFCMessage.PullMessageResult.newBuilder(); List messages; boolean loadMessage = IS_MESSAGE_REMOTE_HISTORY_MESSAGE; @@ -741,7 +741,7 @@ public class MemoryMessagesStore implements IMessagesStore { } if (loadMessage) { - messages = databaseStore.loadRemoteMessages(user, conversation, beforeUid, count); + messages = databaseStore.loadRemoteMessages(user, conversation, beforeUid, count, contentTypes); } else { messages = new ArrayList<>(); } @@ -871,7 +871,7 @@ public class MemoryMessagesStore implements IMessagesStore { mWriteLock.unlock(); } - databaseStore.persistUserMessage(user, messageId, messageSeq); + databaseStore.persistUserMessage(user, messageId, messageSeq, messageContentType); return messageSeq; } diff --git a/broker/src/main/java/io/moquette/spi/IMessagesStore.java b/broker/src/main/java/io/moquette/spi/IMessagesStore.java index 1a99cfa0..a7637a35 100755 --- a/broker/src/main/java/io/moquette/spi/IMessagesStore.java +++ b/broker/src/main/java/io/moquette/spi/IMessagesStore.java @@ -104,7 +104,7 @@ public interface IMessagesStore { 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); + WFCMessage.PullMessageResult loadRemoteMessages(String user, WFCMessage.Conversation conversation, long beforeUid, int count, Collection contentTypes); long insertUserMessages(String sender, int conversationType, String target, int line, int messageContentType, String userId, long messageId); WFCMessage.GroupInfo createGroup(String operator, WFCMessage.GroupInfo groupInfo, List memberList, String memberExtra, boolean isAdmin); ErrorCode addGroupMembers(String operator, boolean isAdmin, String groupId, List memberList, String extra); diff --git a/common/src/main/java/cn/wildfirechat/proto/WFCMessage.java b/common/src/main/java/cn/wildfirechat/proto/WFCMessage.java index 8152ca21..296c4496 100644 --- a/common/src/main/java/cn/wildfirechat/proto/WFCMessage.java +++ b/common/src/main/java/cn/wildfirechat/proto/WFCMessage.java @@ -59417,6 +59417,20 @@ public final class WFCMessage { * required int32 count = 3; */ int getCount(); + + // repeated int32 content_type = 4; + /** + * repeated int32 content_type = 4; + */ + java.util.List getContentTypeList(); + /** + * repeated int32 content_type = 4; + */ + int getContentTypeCount(); + /** + * repeated int32 content_type = 4; + */ + int getContentType(int index); } /** * Protobuf type {@code LoadRemoteMessages} @@ -59492,6 +59506,27 @@ public final class WFCMessage { count_ = input.readInt32(); break; } + case 32: { + if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) { + contentType_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000008; + } + contentType_.add(input.readInt32()); + break; + } + case 34: { + int length = input.readRawVarint32(); + int limit = input.pushLimit(length); + if (!((mutable_bitField0_ & 0x00000008) == 0x00000008) && input.getBytesUntilLimit() > 0) { + contentType_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000008; + } + while (input.getBytesUntilLimit() > 0) { + contentType_.add(input.readInt32()); + } + input.popLimit(limit); + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -59500,6 +59535,9 @@ public final class WFCMessage { throw new com.google.protobuf.InvalidProtocolBufferException( e.getMessage()).setUnfinishedMessage(this); } finally { + if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) { + contentType_ = java.util.Collections.unmodifiableList(contentType_); + } this.unknownFields = unknownFields.build(); makeExtensionsImmutable(); } @@ -59586,10 +59624,34 @@ public final class WFCMessage { return count_; } + // repeated int32 content_type = 4; + public static final int CONTENT_TYPE_FIELD_NUMBER = 4; + private java.util.List contentType_; + /** + * repeated int32 content_type = 4; + */ + public java.util.List + getContentTypeList() { + return contentType_; + } + /** + * repeated int32 content_type = 4; + */ + public int getContentTypeCount() { + return contentType_.size(); + } + /** + * repeated int32 content_type = 4; + */ + public int getContentType(int index) { + return contentType_.get(index); + } + private void initFields() { conversation_ = cn.wildfirechat.proto.WFCMessage.Conversation.getDefaultInstance(); beforeUid_ = 0L; count_ = 0; + contentType_ = java.util.Collections.emptyList(); } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -59628,6 +59690,9 @@ public final class WFCMessage { if (((bitField0_ & 0x00000004) == 0x00000004)) { output.writeInt32(3, count_); } + for (int i = 0; i < contentType_.size(); i++) { + output.writeInt32(4, contentType_.get(i)); + } getUnknownFields().writeTo(output); } @@ -59649,6 +59714,15 @@ public final class WFCMessage { size += com.google.protobuf.CodedOutputStream .computeInt32Size(3, count_); } + { + int dataSize = 0; + for (int i = 0; i < contentType_.size(); i++) { + dataSize += com.google.protobuf.CodedOutputStream + .computeInt32SizeNoTag(contentType_.get(i)); + } + size += dataSize; + size += 1 * getContentTypeList().size(); + } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; @@ -59776,6 +59850,8 @@ public final class WFCMessage { bitField0_ = (bitField0_ & ~0x00000002); count_ = 0; bitField0_ = (bitField0_ & ~0x00000004); + contentType_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000008); return this; } @@ -59820,6 +59896,11 @@ public final class WFCMessage { to_bitField0_ |= 0x00000004; } result.count_ = count_; + if (((bitField0_ & 0x00000008) == 0x00000008)) { + contentType_ = java.util.Collections.unmodifiableList(contentType_); + bitField0_ = (bitField0_ & ~0x00000008); + } + result.contentType_ = contentType_; result.bitField0_ = to_bitField0_; onBuilt(); return result; @@ -59845,6 +59926,16 @@ public final class WFCMessage { if (other.hasCount()) { setCount(other.getCount()); } + if (!other.contentType_.isEmpty()) { + if (contentType_.isEmpty()) { + contentType_ = other.contentType_; + bitField0_ = (bitField0_ & ~0x00000008); + } else { + ensureContentTypeIsMutable(); + contentType_.addAll(other.contentType_); + } + onChanged(); + } this.mergeUnknownFields(other.getUnknownFields()); return this; } @@ -60071,6 +60162,72 @@ public final class WFCMessage { return this; } + // repeated int32 content_type = 4; + private java.util.List contentType_ = java.util.Collections.emptyList(); + private void ensureContentTypeIsMutable() { + if (!((bitField0_ & 0x00000008) == 0x00000008)) { + contentType_ = new java.util.ArrayList(contentType_); + bitField0_ |= 0x00000008; + } + } + /** + * repeated int32 content_type = 4; + */ + public java.util.List + getContentTypeList() { + return java.util.Collections.unmodifiableList(contentType_); + } + /** + * repeated int32 content_type = 4; + */ + public int getContentTypeCount() { + return contentType_.size(); + } + /** + * repeated int32 content_type = 4; + */ + public int getContentType(int index) { + return contentType_.get(index); + } + /** + * repeated int32 content_type = 4; + */ + public Builder setContentType( + int index, int value) { + ensureContentTypeIsMutable(); + contentType_.set(index, value); + onChanged(); + return this; + } + /** + * repeated int32 content_type = 4; + */ + public Builder addContentType(int value) { + ensureContentTypeIsMutable(); + contentType_.add(value); + onChanged(); + return this; + } + /** + * repeated int32 content_type = 4; + */ + public Builder addAllContentType( + java.lang.Iterable values) { + ensureContentTypeIsMutable(); + super.addAll(values, contentType_); + onChanged(); + return this; + } + /** + * repeated int32 content_type = 4; + */ + public Builder clearContentType() { + contentType_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000008); + onChanged(); + return this; + } + // @@protoc_insertion_point(builder_scope:LoadRemoteMessages) } @@ -62158,14 +62315,15 @@ public final class WFCMessage { "t\030\001 \002(\t\022\021\n\tlong_port\030\002 \002(\005\022\022\n\nshort_port" + "\030\003 \002(\005\"G\n\017GetTokenRequest\022\017\n\007user_id\030\001 \002" + "(\t\022\021\n\tclient_id\030\002 \002(\t\022\020\n\010platform\030\003 \001(\005\"" + - "\\\n\022LoadRemoteMessages\022#\n\014conversation\030\001 " + + "r\n\022LoadRemoteMessages\022#\n\014conversation\030\001 " + "\002(\0132\r.Conversation\022\022\n\nbefore_uid\030\002 \002(\003\022\r" + - "\n\005count\030\003 \002(\005\"a\n\020MultiCastMessage\022\021\n\tfro", - "m_user\030\001 \002(\t\022 \n\007content\030\002 \002(\0132\017.MessageC" + - "ontent\022\n\n\002to\030\003 \003(\t\022\014\n\004line\030\004 \002(\005\"E\n\035Reca" + - "llMultiCastMessageRequest\022\022\n\nmessage_id\030" + - "\001 \002(\003\022\020\n\010receiver\030\002 \003(\tB#\n\025cn.wildfirech" + - "at.protoB\nWFCMessage" + "\n\005count\030\003 \002(\005\022\024\n\014content_type\030\004 \003(\005\"a\n\020M", + "ultiCastMessage\022\021\n\tfrom_user\030\001 \002(\t\022 \n\007co" + + "ntent\030\002 \002(\0132\017.MessageContent\022\n\n\002to\030\003 \003(\t" + + "\022\014\n\004line\030\004 \002(\005\"E\n\035RecallMultiCastMessage" + + "Request\022\022\n\nmessage_id\030\001 \002(\003\022\020\n\010receiver\030" + + "\002 \003(\tB#\n\025cn.wildfirechat.protoB\nWFCMessa" + + "ge" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { @@ -62591,7 +62749,7 @@ public final class WFCMessage { internal_static_LoadRemoteMessages_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_LoadRemoteMessages_descriptor, - new java.lang.String[] { "Conversation", "BeforeUid", "Count", }); + new java.lang.String[] { "Conversation", "BeforeUid", "Count", "ContentType", }); internal_static_MultiCastMessage_descriptor = getDescriptor().getMessageTypes().get(70); internal_static_MultiCastMessage_fieldAccessorTable = new