public AVConversationHolder getConversationHolder(String conversationId, int convType) { AVConversationHolder conversation = conversationHolderCache.get(conversationId); if (conversation != null) { return conversation; } else { conversation = new AVConversationHolder(conversationId, this, convType); AVConversationHolder elderObject = conversationHolderCache.putIfAbsent(conversationId, conversation); return elderObject == null ? conversation : elderObject; } }
switch (imop) { case CONVERSATION_JOIN: join(requestId); break; case CONVERSATION_ADD_MEMBER: addMembers(members, requestId); break; case CONVERSATION_RM_MEMBER: kickMembers(members, requestId); break; case CONVERSATION_QUIT: quit(requestId); break; case CONVERSATION_UPDATE: Map<String, Object> attr = (Map<String, Object>) params.get(Conversation.PARAM_CONVERSATION_ATTRIBUTE); this.updateInfo(attr, requestId); break; case CONVERSATION_MUTE: mute(requestId); break; case CONVERSATION_UNMUTE: unmute(requestId); break; case CONVERSATION_MEMBER_COUNT_QUERY: getMemberCount(requestId); break; case CONVERSATION_FETCH_RECEIPT_TIME: getReceiptTime(requestId);
private void read(String msgId, long timestamp, int requestId) { if (!checkSessionStatus(AVIMOperation.CONVERSATION_READ, requestId)) { return; } session.conversationOperationCache.offer(Operation.getOperation( AVIMOperation.CONVERSATION_READ.getCode(), session.getSelfPeerId(), conversationId, requestId)); UnreadMessagesClearPacket packet = UnreadMessagesClearPacket.getUnreadClearPacket(session.getSelfPeerId(), conversationId, msgId, timestamp, requestId); PushService.sendData(packet); // 因为没有返回值,所以在发送 command 后直接置 unreadCount 为 0 并发送事件 onUnreadMessagesEvent(null, 0, false); }
public void blockMembers(final List<String> members, final int requestId){ if (!checkSessionStatus(AVIMOperation.CONVERSATION_BLOCK_MEMBER, requestId)) { return; } SignatureCallback callback = new SignatureCallback() { @Override public void onSignatureReady(Signature sig, AVException e) { if (e == null) { session.conversationOperationCache.offer(Operation.getOperation( AVIMOperation.CONVERSATION_BLOCK_MEMBER.getCode(), session.getSelfPeerId(), conversationId, requestId)); PushService.sendData(BlacklistCommandPacket.genBlacklistCommandPacket( session.getSelfPeerId(), conversationId, BlacklistCommandPacket.BlacklistCommandOp.BLOCK, members, sig, requestId)); } else { BroadcastUtil.sendIMLocalBroadcast(session.getSelfPeerId(), conversationId, requestId, e, AVIMOperation.CONVERSATION_BLOCK_MEMBER); } } @Override public Signature computeSignature() throws SignatureException { final SignatureFactory signatureFactory = AVIMOptions.getGlobalOptions().getSignatureFactory(); if (signatureFactory != null) { return signatureFactory.createBlacklistSignature(session.getSelfPeerId(), conversationId, members, BLOCK_MEMBER); } return null; } }; new SignatureTask(callback).commit(session.getSelfPeerId()); }
void onResponse4MemberMute(AVIMOperation imop, String operation, int requestId, Messages.ConvCommand convCommand) { if (null == convCommand) { return; } List<String> allowedList = convCommand.getAllowedPidsList(); List<Messages.ErrorCommand> errorCommandList = convCommand.getFailedPidsList(); Bundle bundle = genBundleFromPartiallyResult(allowedList, errorCommandList); BroadcastUtil.sendIMLocalBroadcast(session.getSelfPeerId(), conversationId, requestId, bundle, imop); }
public AVConversationHolder(String conversationId, AVSession session, int convType) { this.session = session; this.conversationId = conversationId; this.conversationGene = getConversationGeneString(); this.convType = convType; }
public void unblockMembers(final List<String> members, final int requestId){ if (!checkSessionStatus(AVIMOperation.CONVERSATION_UNBLOCK_MEMBER, requestId)) { return; } SignatureCallback callback = new SignatureCallback() { @Override public void onSignatureReady(Signature sig, AVException e) { if (e == null) { session.conversationOperationCache.offer(Operation.getOperation( AVIMOperation.CONVERSATION_UNBLOCK_MEMBER.getCode(), session.getSelfPeerId(), conversationId, requestId)); PushService.sendData(BlacklistCommandPacket.genBlacklistCommandPacket( session.getSelfPeerId(), conversationId, BlacklistCommandPacket.BlacklistCommandOp.UNBLOCK, members, sig, requestId)); } else { BroadcastUtil.sendIMLocalBroadcast(session.getSelfPeerId(), conversationId, requestId, e, AVIMOperation.CONVERSATION_UNBLOCK_MEMBER); } } @Override public Signature computeSignature() throws SignatureException { final SignatureFactory signatureFactory = AVIMOptions.getGlobalOptions().getSignatureFactory(); if (signatureFactory != null) { return signatureFactory.createBlacklistSignature(session.getSelfPeerId(), conversationId, members, UNBLOCK_MEMBER); } return null; } }; new SignatureTask(callback).commit(session.getSelfPeerId()); }
void onResponse4MemberBlock(AVIMOperation imop, String operation, int reqeustId, Messages.BlacklistCommand blacklistCommand) { if (null == blacklistCommand) { return; } List<String> allowedList = blacklistCommand.getAllowedPidsList(); List<Messages.ErrorCommand> errorCommandList = blacklistCommand.getFailedPidsList(); Bundle bundle = genBundleFromPartiallyResult(allowedList, errorCommandList); BroadcastUtil.sendIMLocalBroadcast(session.getSelfPeerId(), blacklistCommand.getSrcCid(), reqeustId, bundle, imop); }
public void addMembers(final List<String> members, final int requestId) { if (!checkSessionStatus(AVIMOperation.CONVERSATION_ADD_MEMBER, requestId)) { return;
public void kickMembers(final List<String> members, final int requestId) { if (!checkSessionStatus(AVIMOperation.CONVERSATION_RM_MEMBER, requestId)) { return;
public void quit(final int requestId) { if (!checkSessionStatus(AVIMOperation.CONVERSATION_QUIT, requestId)) { return; } session.conversationOperationCache.offer(Operation.getOperation( AVIMOperation.CONVERSATION_QUIT.getCode(), session.getSelfPeerId(), conversationId, requestId)); PushService.sendData(ConversationControlPacket.genConversationCommand( session.getSelfPeerId(), conversationId, Arrays.asList(session.getSelfPeerId()), ConversationControlOp.REMOVE, null, null, requestId)); }
public void muteMembers(final List<String> members, final int requestId){ if (!checkSessionStatus(AVIMOperation.CONVERSATION_MUTE_MEMBER, requestId)) { return; } session.conversationOperationCache.offer(Operation.getOperation( AVIMOperation.CONVERSATION_MUTE_MEMBER.getCode(), session.getSelfPeerId(), conversationId, requestId)); PushService.sendData(ConversationControlPacket.genConversationCommand( session.getSelfPeerId(), conversationId, members, ConversationControlOp.ADD_SHUTUP, null, null, requestId)); }
public void updateInfo(Map<String, Object> attr, int requestId) { if (!checkSessionStatus(AVIMOperation.CONVERSATION_UPDATE, requestId)) { return; } session.conversationOperationCache.offer(Operation.getOperation( AVIMOperation.CONVERSATION_UPDATE.getCode(), session.getSelfPeerId(), conversationId, requestId)); PushService.sendData(ConversationControlPacket.genConversationCommand(session.getSelfPeerId(), conversationId, null, ConversationControlOp.UPDATE, attr, null, requestId)); }
public void unmute(int requestId) { if (!checkSessionStatus(AVIMOperation.CONVERSATION_UNMUTE, requestId)) { return; } session.conversationOperationCache.offer(Operation.getOperation( AVIMOperation.CONVERSATION_UNMUTE.getCode(), session.getSelfPeerId(), conversationId, requestId)); PushService.sendData(ConversationControlPacket.genConversationCommand(session.getSelfPeerId(), conversationId, null, ConversationControlOp.UNMUTE, null, null, requestId)); }
public void promoteMember(Map<String, Object> member, int requestId) { if (!checkSessionStatus(AVIMOperation.CONVERSATION_PROMOTE_MEMBER, requestId)) { return; } session.conversationOperationCache.offer(Operation.getOperation( AVIMOperation.CONVERSATION_PROMOTE_MEMBER.getCode(), session.getSelfPeerId(), conversationId, requestId)); ConversationControlPacket ccp = ConversationControlPacket.genConversationMemberCommand(session.getSelfPeerId(), conversationId, ConversationControlOp.MEMBER_UPDATE, member, null, requestId); PushService.sendData(ccp); }
public void unmuteMembers(final List<String> members, final int requestId){ if (!checkSessionStatus(AVIMOperation.CONVERSATION_UNMUTE_MEMBER, requestId)) { return; } session.conversationOperationCache.offer(Operation.getOperation( AVIMOperation.CONVERSATION_UNMUTE_MEMBER.getCode(), session.getSelfPeerId(), conversationId, requestId)); PushService.sendData(ConversationControlPacket.genConversationCommand( session.getSelfPeerId(), conversationId, members, ConversationControlOp.REMOVE_SHUTUP, null, null, requestId)); }
public void queryBlockedMembers(int offset, int limit, int requestId) { if (!checkSessionStatus(AVIMOperation.CONVERSATION_BLOCKED_MEMBER_QUERY, requestId)) { return; } session.conversationOperationCache.offer(Operation.getOperation( AVIMOperation.CONVERSATION_BLOCKED_MEMBER_QUERY.getCode(), session.getSelfPeerId(), conversationId, requestId)); BlacklistCommandPacket packet = BlacklistCommandPacket.genBlacklistCommandPacket(session.getSelfPeerId(), conversationId, BlacklistCommandPacket.BlacklistCommandOp.QUERY, offset, limit, requestId); PushService.sendData(packet); }
public void mute(int requestId) { if (!checkSessionStatus(AVIMOperation.CONVERSATION_MUTE, requestId)) { return; } session.conversationOperationCache.offer(Operation.getOperation( AVIMOperation.CONVERSATION_MUTE.getCode(), session.getSelfPeerId(), conversationId, requestId)); PushService.sendData(ConversationControlPacket.genConversationCommand(session.getSelfPeerId(), conversationId, null, ConversationControlOp.MUTE, null, null, requestId)); }
private void getReceiptTime(int requestId) { if (!checkSessionStatus(AVIMOperation.CONVERSATION_FETCH_RECEIPT_TIME, requestId)) { return; } session.conversationOperationCache.offer(Operation.getOperation( AVIMOperation.CONVERSATION_FETCH_RECEIPT_TIME.getCode(), session.getSelfPeerId(), conversationId, requestId)); PushService.sendData(ConversationControlPacket.genConversationCommand(session.getSelfPeerId(), conversationId, null, ConversationControlOp.MAX_READ, null, null, requestId)); }
public void getMemberCount(int requestId) { if (!checkSessionStatus(AVIMOperation.CONVERSATION_MEMBER_COUNT_QUERY, requestId)) { return; } session.conversationOperationCache.offer(Operation.getOperation( AVIMOperation.CONVERSATION_MEMBER_COUNT_QUERY.getCode(), session.getSelfPeerId(), conversationId, requestId)); PushService.sendData(ConversationControlPacket.genConversationCommand(session.getSelfPeerId(), conversationId, null, ConversationControlOp.COUNT, null, null, requestId)); }