![JAR search and dependency download from the Maven repository](/logo.png)
com.avos.avospush.session.ConversationControlPacket Maven / Gradle / Ivy
The newest version!
package com.avos.avospush.session;
import java.util.List;
import java.util.Map;
import com.avos.avoscloud.AVOSCloud;
import com.avos.avoscloud.AVUtils;
import com.avos.avoscloud.Messages;
import com.avos.avoscloud.Signature;
import com.avos.avoscloud.im.v2.AVIMClient;
public class ConversationControlPacket extends PeerBasedCommandPacket {
public static final String CONVERSATION_CMD = "conv";
public static class ConversationControlOp {
/**
* 客户端发出的op
*/
public static final String START = "start";
public static final String ADD = "add";
public static final String REMOVE = "remove";
public static final String QUERY = "query";
public static final String UPDATE = "update";
public static final String MUTE = "mute";
public static final String UNMUTE = "unmute";
public static final String COUNT = "count";
public static final String MAX_READ = "max_read";
// 权限
public static final String MEMBER_UPDATE = "member_info_update";
// 禁言
public static final String ADD_SHUTUP = "add_shutup";
public static final String REMOVE_SHUTUP = "remove_shutup";
public static final String QUERY_SHUTUP = "query_shutup";
/**
* 服务器端会响应的op
*/
public static final String STARTED = "started";
public static final String JOINED = "joined";
public static final String MEMBER_JOINED = "members_joined";
public static final String MEMBER_LEFTED = "members_left";
public static final String ADDED = "added";
public static final String REMOVED = "removed";
public static final String LEFT = "left";
public static final String QUERY_RESULT = "results";
public static final String MEMBER_COUNT_QUERY_RESULT = "result";
public static final String UPDATED = "updated";
// 权限
public static final String MEMBER_UPDATED = "member_info_updated";
public static final String MEMBER_INFO_CHANGED = "member_info_changed";
// 禁言
public static final String SHUTUP_ADDED = "shutup_added";
public static final String SHUTUP_REMOVED = "shutup_removed";
public static final String SHUTUPED = "shutuped";
public static final String UNSHUTUPED = "unshutuped";
public static final String MEMBER_SHUTPED = "members_shutuped";
public static final String MEMBER_UNSHUTUPED = "members_unshutuped";
public static final String QUERY_SHUTUP_RESULT = "shutup_result";
// 黑名单通知
public static final String BLOCKED = "blocked";
public static final String UNBLOCKED = "unblocked";
public static final String MEMBER_BLOCKED_NOTIFY = "members_blocked";
public static final String MEMBER_UNBLOCKED_NOTIFY = "members_unblocked";
}
private List members;
private String signature;
private long timestamp;
private String nonce;
private String conversationId;
private String op;
private Map attributes;
private boolean isTransient;
/**
* 原子创建单聊会话,如果为 true,则先查询是否有符合条件的 conversation,有则返回已存在的,否则创建新的
* 详见 https://github.com/leancloud/avoscloud-push/issues/293
*/
private boolean isUnique;
private boolean isTemporary = false;
private int tempTTL = 0;
private Map memberInfo = null;
private int queryOffset = 0;
private int queryLimit = 0;
public ConversationControlPacket() {
this.setCmd(CONVERSATION_CMD);
}
public String getConversationId() {
return conversationId;
}
public void setConversationId(String conversationId) {
this.conversationId = conversationId;
}
public String getOp() {
return op;
}
public void setOp(String op) {
this.op = op;
}
public List getMembers() {
return members;
}
public void setMembers(List members) {
this.members = members;
}
public String getSignature() {
return signature;
}
public void setSignature(String signature) {
this.signature = signature;
}
public long getTimestamp() {
return timestamp;
}
public void setTimestamp(long timestamp) {
this.timestamp = timestamp;
}
public String getNonce() {
return nonce;
}
public void setNonce(String nonce) {
this.nonce = nonce;
}
public Map getAttributes() {
return attributes;
}
public void setAttributes(Map attributes) {
this.attributes = attributes;
}
public boolean isTransient() {
return isTransient;
}
public void setTransient(boolean isTransient) {
this.isTransient = isTransient;
}
public boolean isUnique() {
return isUnique;
}
public void setUnique(boolean isUnique) {
this.isUnique = isUnique;
}
public boolean isTemporary() {return isTemporary;}
public void setTemporary(boolean val) {
this.isTemporary = val;
}
public int getTempTTL() {
return tempTTL;
}
public void setTempTTL(int tempTTL) {
this.tempTTL = tempTTL;
}
public void setMemberInfo(Map memberInfo) {
this.memberInfo = memberInfo;
}
public int getQueryOffset() {
return queryOffset;
}
public void setQueryOffset(int queryOffset) {
this.queryOffset = queryOffset;
}
public int getQueryLimit() {
return queryLimit;
}
public void setQueryLimit(int queryLimit) {
this.queryLimit = queryLimit;
}
@Override
protected Messages.GenericCommand.Builder getGenericCommandBuilder() {
Messages.GenericCommand.Builder builder = super.getGenericCommandBuilder();
builder.setOp(Messages.OpType.valueOf(op));
builder.setConvMessage(getConvCommand());
return builder;
}
private Messages.ConvCommand getConvCommand() {
Messages.ConvCommand.Builder builder = Messages.ConvCommand.newBuilder();
if (attributes != null && !attributes.isEmpty()) {
Messages.JsonObjectMessage.Builder attrBuilder = Messages.JsonObjectMessage.newBuilder();
attrBuilder.setData(attributes.toString());
builder.setAttr(attrBuilder);
}
if (!AVUtils.isEmptyList(members)) {
builder.addAllM(members);
}
if (getSignature() != null) {
builder.setS(getSignature());
builder.setT(getTimestamp());
builder.setN(getNonce());
}
if (!AVUtils.isBlankString(conversationId)) {
builder.setCid(conversationId);
}
if (isTransient) {
builder.setTransient(isTransient);
}
if (isUnique) {
builder.setUnique(isUnique);
}
if (isTemporary) {
builder.setTempConv(isTemporary);
builder.setTempConvTTL(tempTTL);
}
if (null != memberInfo) {
Messages.ConvMemberInfo.Builder cmiBuilder = Messages.ConvMemberInfo.newBuilder();
if (memberInfo.containsKey("peerId")) {
cmiBuilder.setPid((String) memberInfo.get("peerId"));
builder.setTargetClientId((String) memberInfo.get("peerId"));
}
if (memberInfo.containsKey("role")) {
cmiBuilder.setRole((String) memberInfo.get("role"));
}
if (memberInfo.containsKey("infoId")) {
cmiBuilder.setInfoId((String) memberInfo.get("infoId"));
}
builder.setInfo(cmiBuilder.build());
}
if (this.queryOffset > 0) {
builder.setNext(new Integer(this.queryOffset).toString());
}
if (this.queryLimit > 0) {
builder.setLimit(this.queryLimit);
}
return builder.build();
}
public static ConversationControlPacket genConversationCommand(String selfId,
String conversationId, List peers, String op, Map attributes,
Signature signature, boolean isTransient, boolean isUnique, boolean isTemporary, int tempTTL,
boolean isSystem, int requestId) {
ConversationControlPacket ccp = new ConversationControlPacket();
if (AVIMClient.getClientsCount() > 1) {
// selfId is necessary only when more than 1 clients logined.
ccp.setPeerId(selfId);
}
ccp.setConversationId(conversationId);
ccp.setRequestId(requestId);
ccp.setTransient(isTransient);
ccp.setUnique(isUnique);
ccp.setTemporary(isTemporary);
if (isTemporary) {
ccp.setTempTTL(tempTTL);
}
if (!AVUtils.isEmptyList(peers)) {
ccp.setMembers(peers);
}
ccp.setOp(op);
if (signature != null) {
if (op.equals(ConversationControlOp.ADD) || op.equals(ConversationControlOp.REMOVE)
|| op.equals(ConversationControlOp.START)) {
ccp.setSignature(signature.getSignature());
ccp.setNonce(signature.getNonce());
ccp.setTimestamp(signature.getTimestamp());
}
}
ccp.setRequestId(requestId);
ccp.setAttributes(attributes);
return ccp;
}
public static ConversationControlPacket genConversationCommand(String selfId,
String conversationId, List peers, String op, Map attributes,
Signature signature, boolean isTransient, int requestId) {
return genConversationCommand(selfId, conversationId, peers, op, attributes, signature, isTransient,
false, false, 0, false, requestId);
}
public static ConversationControlPacket genConversationCommand(String selfId,
String conversationId, List peers, String op, Map attributes,
Signature signature, int requestId) {
return genConversationCommand(selfId, conversationId, peers, op, attributes, signature, false,
requestId);
}
public static ConversationControlPacket genConversationMemberCommand(String selfId, String conversationId,
String op, Map memberInfo,
Signature signature, int requestId) {
ConversationControlPacket ccp = genConversationCommand(selfId, conversationId, null, op, null, signature,
false, false, false, 0, false, requestId);
ccp.setMemberInfo(memberInfo);
return ccp;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy