using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LeanCloud.Realtime
{
///
/// 实时通信的异常
///
public class AVIMException : Exception
{
///
/// 错误代码
///
public enum ErrorCode
{
///
/// Error code indicating that an unknown error or an error unrelated to LeanCloud
/// occurred.
///
OtherCause = -1,
///
/// 服务端错误
///
FromServer = 4000,
///
/// websocket 连接非正常关闭,通常见于路由器配置对长连接限制的情况。SDK 会自动重连,无需人工干预。
///
UnknownError = 1006,
///
/// 应用不存在或应用禁用了实时通信服务
///
APP_NOT_AVAILABLE = 4100,
///
/// 登录签名验证失败
///
SIGNATURE_FAILED = 4102,
///
/// Client ClientId 格式错误,超过 64 个字符。
///
INVALID_LOGIN = 4103,
///
/// Session 没有打开就发送消息,或执行其他操作。常见的错误场景是调用 open session 后直接发送消息,正确的用法是在 Session 打开的回调里执行。
///
SESSION_REQUIRED = 4105,
///
/// 读超时,服务器端长时间没有收到客户端的数据,切断连接。SDK 包装了心跳包的机制,出现此错误通常是网络问题。SDK 会自动重连,无需人工干预。
///
READ_TIMEOUT = 4107,
///
/// 登录超时,连接后长时间没有完成 session open。通常是登录被拒绝等原因,出现此问题可能是使用方式有误,可以 创建工单,由我们技术顾问来给出建议。
///
LOGIN_TIMEOUT = 4108,
///
/// 包过长。消息大小超过 5 KB,请缩短消息或者拆分消息。
///
FRAME_TOO_LONG = 4109,
///
/// 设置安全域名后,当前登录的域名与安全域名不符合。
///
INVALID_ORIGIN = 4110,
///
/// 设置单设备登录后,客户端被其他设备挤下线。
///
SESSION_CONFLICT = 4111,
///
/// 应用容量超限,当天登录用户数已经超过应用设定的最大值。
///
APP_QUOTA_EXCEEDED = 4113,
///
/// 客户端发送的序列化数据服务器端无法解析。
///
UNPARSEABLE_RAW_MESSAGE = 4114,
///
/// 客户端被 REST API 管理接口强制下线。
///
KICKED_BY_APP = 4115,
///
/// 应用单位时间内发送消息量超过限制,消息被拒绝。
///
MESSAGE_SENT_QUOTA_EXCEEDED = 4116,
///
/// 服务器内部错误,如果反复出现请收集相关线索并 创建工单,我们会尽快解决。
///
INTERNAL_ERROR = 4200,
///
/// 通过 API 发送消息超时
///
SEND_MESSAGE_TIMEOUT = 4201,
///
/// 上游 API 调用异常,请查看报错信息了解错误详情
///
CONVERSATION_API_FAILED = 4301,
///
/// 对话相关操作签名错误
///
CONVERSATION_SIGNATURE_FAILED = 4302,
///
/// 发送消息,或邀请等操作对应的对话不存在。
///
CONVERSATION_NOT_FOUND = 4303,
///
/// 对话成员已满,不能再添加。
///
CONVERSATION_FULL = 4304,
///
/// 对话操作被应用的云引擎 Hook 拒绝
///
CONVERSATION_REJECTED_BY_APP = 4305,
///
/// 更新对话操作失败
///
CONVERSATION_UPDATE_FAILED = 4306,
///
/// 该对话为只读,不能更新或增删成员。
///
CONVERSATION_READ_ONLY = 4307,
///
/// 该对话禁止当前用户发送消息
///
CONVERSATION_NOT_ALLOWED = 4308,
///
/// 更新对话的请求被拒绝,当前用户不在对话中
///
CONVERSATION_UPDATE_REJECT = 4309,
///
/// 查询对话失败,常见于慢查询导致的超时或受其他慢查询导致的数据库响应慢
///
CONVERSATION_QUERY_FAILED = 4310,
///
/// 拉取对话消息记录失败,常见与超时的情况
///
CONVERSATION_LOG_FAILED = 4311,
///
/// 拉去对话消息记录被拒绝,当前用户不再对话中
///
CONVERSATION_LOG_REJECT = 4312,
///
/// 该功能仅对系统对话有效
///
SYSTEM_CONVERSATION_REQUIRED = 4313,
///
/// 该功能仅对普通对话有效。
///
NORMAL_CONVERSATION_REQUIRED = 4314,
///
/// 当前用户被加入此对话的黑名单,无法发送消息。
///
CONVERSATION_BLACKLISTED = 4315,
///
/// 该功能仅对暂态对话有效。
///
TRANSIENT_CONVERSATION_REQUIRED = 4316,
///
/// 发送消息的对话不存在,或当前用户不在对话中
///
INVALID_MESSAGING_TARGET = 4401,
///
/// 发送的消息被应用的云引擎 Hook 拒绝
///
MESSAGE_REJECTED_BY_APP = 4402,
///
/// 客户端无法通过 WebSocket 发送数据包
///
CAN_NOT_EXCUTE_COMMAND = 1002,
}
///
/// 用户云代码返回的错误码
///
public int AppCode { get; private set; }
internal AVIMException(ErrorCode code, string message, Exception cause = null)
: base(message, cause)
{
this.Code = code;
}
internal AVIMException(int code, int appCode, string message, Exception cause = null)
: this((ErrorCode)code, message, cause)
{
this.AppCode = appCode;
}
///
/// The LeanCloud error code associated with the exception.
///
public ErrorCode Code { get; private set; }
}
}