export class CastError {
    // ---------------- 初始化 ----------------
    public static readonly INIT_FAIL = 0x11100;
    public static readonly LAN_SERVER_INIT_FAIL = 0x11101;
    public static readonly THIRD_PARTY_SDK_INIT_FAIL = 0x11102;
    public static readonly KONKA_CAST_SDK_INIT_FAIL = 0x11103;
    public static readonly KONKA_CAST_SDK_AUTH_FAIL = 0x11104;
    public static readonly KONKA_MEDIA_SDK_INIT_FAIL = 0x11105;
    public static readonly KONKA_MEDIA_SDK_AUTH_FAIL = 0x11106;
    public static readonly WAN_SERVER_INIT_FAIL = 0x11107;
    // ---------------- 发现 ----------------
    public static readonly DISCOVER_FAIL = 0x12100;
    public static readonly LAN_DISCOVER_FAIL = 0x12101;
    public static readonly WAN_DISCOVER_FAIL = 0x12102;
    // ---------------- 连接 ----------------
    // 连接失败
    public static readonly CONNECT_FAIL = 0x13100;
    public static readonly LAN_CONNECT_FAIL = 0x13101;
    public static readonly WAN_CONNECT_FAIL = 0x13102;
    public static readonly THIRD_PARTY_SDK_CONNECT_FAIL = 0x13103;
    public static readonly KONKA_CAST_SDK_CONNECT_FAIL = 0x13104;
    public static readonly KONKA_MEDIA_SDK_CONNECT_FAIL = 0x13105;
    // 连接中断
    public static readonly CONNECT_ABORT = 0x13200;
    public static readonly LAN_CONNECT_ABORT = 0x13201;
    public static readonly WAN_CONNECT_ABORT = 0x13202;
    public static readonly THIRD_PARTY_SDK_CONNECT_ABORT = 0x13203;
    public static readonly KONKA_CAST_SDK_CONNECT_ABORT = 0x13204;
    public static readonly KONKA_MEDIA_SDK_CONNECT_ABORT = 0x13205;
    // 连接对端掉线
    public static readonly CONNECT_PEER_OFFLINE = 0x13300;
    public static readonly LAN_CONNECT_PEER_OFFLINE = 0x13301;
    public static readonly WAN_CONNECT_PEER_OFFLINE = 0x13302;
    public static readonly WAN_CONNECT_SERVER_OFFLINE = 0x13303;
    public static readonly THIRD_PARTY_SDK_CONNECT_PEER_OFFLINE = 0x13304;
    public static readonly KONKA_CAST_SDK_CONNECT_PEER_OFFLINE = 0x13305;
    public static readonly KONKA_MEDIA_SDK_CONNECT_PEER_OFFLINE = 0x13306;
    // 断开连接失败
    public static readonly DISCONNECT_FAIL = 0x13400;
    // ---------------- 校验 ----------------
    public static readonly VERIFY_FAIL = 0x14100;
    public static readonly THIRD_PARTY_SDK_VERIFY_TOKEN_FAIL = 0x14101;
    public static readonly SINK_DEVICE_VERIFY_REJECT_CURRENT_SOURCE_FAIL = 0x14102;
    public static readonly SINK_DEVICE_VERIFY_IN_EXCLUSIVE_MODE_FAIL =  0x14103;
    public static readonly P2P_KEY_VERIFY_ACQUIRE_FAIL = 0x14104;
    public static readonly P2P_KEY_VERIFY_RELEASE_FAIL = 0x14105;
    // ---------------- 传输 ----------------
    public static readonly TRANSMIT_FAIL = 0x15100;
    public static readonly LAN_TRANSMIT_AV_DATA_FAIL = 0x15101;
    public static readonly WAN_TRANSMIT_AV_DATA_FAIL = 0x15102;
    public static readonly THIRD_PARTY_SDK_TRANSMIT_AV_DATA_FAIL = 0x15103;
    public static readonly KONKA_CAST_SDK_TRANSMIT_AV_DATA_FAIL = 0x15104;
    public static readonly KONKA_MEDIA_SDK_TRANSMIT_AV_DATA_FAIL = 0x15105;
    public static readonly LAN_TRANSMIT_IMAGE_FAIL = 0x15106;
    public static readonly LAN_TRANSMIT_VIDEO_FAIL = 0x15107;
    public static readonly LAN_TRANSMIT_APK_FAIL = 0x15108;
    public static readonly LAN_TRANSMIT_DOCUMENT_FAIL = 0x15109;
    public static readonly WAN_TRANSMIT_IMAGE_FAIL = 0x1510A;
    public static readonly WAN_TRANSMIT_VIDEO_FAIL = 0x1510B;
    public static readonly WAN_TRANSMIT_APK_FAIL = 0x1510C;
    public static readonly WAN_TRANSMIT_DOCUMENT_FAIL = 0x1510D;
    public static readonly WAN_TRANSMIT_SESSION_CREATE_FAIL = 0x1510E;
    public static readonly WAN_TRANSMIT_SESSION_DESTROY_FAIL = 0x1510F;
    // 解码
    public static readonly AVCODEC_FAIL = 0x15200;
    public static readonly AVCODEC_AUDIO_DECODE_FAIL = 0x15201;
    public static readonly AVCODEC_VIDEO_DECODE_FAIL = 0x15202;
    public static readonly AVCODEC_AUDIO_ENCODE_FAIL = 0x15203;
    public static readonly AVCODEC_VIDEO_ENCODE_FAIL = 0x15204;
    // ---------------- 功能使用 ----------------
    public static readonly FUNCTION_FAIL = 0x16100;
    public static readonly TOO_OFTEN_FUNCTION_CALL_FAIL = 0x16101;
    public static readonly CURRENT_UNDER_MULTI_WINDOW_FAIL = 0x16102;
    public static readonly ALREADY_START_SCREEN_RECORD_FAIL = 0x16103;
    public static readonly NO_SCREEN_RECORD_PERMISSION_FAIL = 0x16104;
    public static readonly DOCUMENT_ONLINE_RENDER_FAIL = 0x16105;
    // ---------------- 用户系统 ----------------
    public static readonly MAIN_ACCOUNT_FAIL = 0x17100;
    public static readonly SUB_SEND_SMS_FAIL = 0x17101;
    public static readonly SUB_SEND_SMS_REACH_TODAY_COUNT_FAIL = 0x17102;
    public static readonly SUB_ACCOUNT_EXISTED_FAIL = 0x17103;
    public static readonly SUB_ACCOUNT_NOT_EXIST_FAIL = 0x17104;
    public static readonly SUB_ACCOUNT_PASSWORD_WRONG_FAIL = 0x17105;
    public static readonly SUB_VERIFY_CODE_INVALID_FAIL = 0x17106;
    public static readonly SUB_USER_TOKEN_INVALID_FAIL = 0x17107;
    public static readonly SUB_BIND_DISPLAY_NOT_EXIST_FAIL = 0x17108;
    public static readonly SUB_BIND_DISPLAY_NOT_BOUND_FAIL = 0x17109;
    public static readonly SUB_BIND_DISPLAY_ALREADY_BOUND_FAIL = 0x1710A;
    // ---------------- 其他 ----------------
    public static readonly UNKNOWN_FAIL = 0x90000;

    public main: number;
    public sub: number;

    constructor() {
        this.main = 0x0;
        this.sub = 0x0;
    }

    public static create(main: number, sub: number): CastError {
        let error = new CastError();
        error.main = main;
        error.sub = sub;
        return error;
    }

    toString(): string {
        return `CastError{` +
        `main=0x${this.main.toString(16).toUpperCase()}, ` +
        `sub='0x${this.sub.toString(16).toUpperCase()}'` +
        `}`;
    }

}