part of 'live_pusher.dart';

class _AndroidEventDelegate extends java_lang_Object
    with com_tencent_rtmp_ITXLivePushListener {
  VoidCallback _onWaringNetBusy;
  VoidCallback _onWaringReconnect;
  VoidCallback _onWaringHardwareAccelerationFail;
  VoidCallback _onWaringDNSFail;
  VoidCallback _onWaringServerConnFail;
  VoidCallback _onWaringShakeFail;
  VoidCallback _onWaringServerDisconnect;

  VoidCallback _onEventConnectSucc;
  VoidCallback _onEventPushBegin;
  VoidCallback _onEventOpenCameraSuccess;

  VoidCallback _onErrorOpenCameraFail;
  VoidCallback _onErrorOpenMicFail;
  VoidCallback _onErrorVideoEncodeFail;
  VoidCallback _onErrorAudioEncodeFail;
  VoidCallback _onErrorUnsupportedResolution;
  VoidCallback _onErrorUnsupportedSampleRate;
  VoidCallback _onErrorNetDisconnect;

  @override
  Future<void> onPushEvent(int var1, android_os_Bundle var2) async {
    super.onPushEvent(var1, var2);
    // 网络环境不佳 1101
    if (var1 == 1101 && _onWaringNetBusy != null) {
      _onWaringNetBusy();
    }
    // 网络断连，已启动自动重连（自动重连连续失败超过三次会放弃） 1102
    else if (var1 == 1102 && _onWaringReconnect != null) {
      _onWaringReconnect();
    }
    // 硬编码启动失败，采用软编码 1103
    else if (var1 == 1103 && _onWaringHardwareAccelerationFail != null) {
      _onWaringHardwareAccelerationFail();
    }
    // RTMP - DNS 解析失败（会触发重试流程） 3001
    else if (var1 == 3001 && _onWaringDNSFail != null) {
      _onWaringDNSFail();
    }
    // RTMP 服务器连接失败（会触发重试流程） 3002
    else if (var1 == 3002 && _onWaringServerConnFail != null) {
      _onWaringServerConnFail();
    }
    // RTMP 服务器握手失败（会触发重试流程） 3003
    else if (var1 == 3003 && _onWaringShakeFail != null) {
      _onWaringShakeFail();
    }
    // RTMP 服务器主动断开连接（会触发重试流程） 3004
    else if (var1 == 3004 && _onWaringServerDisconnect != null) {
      _onWaringServerDisconnect();
    }
    // 已经成功连接到腾讯云推流服务器 1001
    else if (var1 == 1001 && _onEventConnectSucc != null) {
      _onEventConnectSucc();
    }
    // 与服务器握手完毕，一切正常，准备开始推流 1002
    else if (var1 == 1002 && _onEventPushBegin != null) {
      _onEventPushBegin();
    }
    // 推流器已成功打开摄像头（部分 Android 手机在此过程需要耗时1s - 2s） 1003
    else if (var1 == 1003 && _onEventOpenCameraSuccess != null) {
      _onEventOpenCameraSuccess();
    }
    // 打开摄像头失败 -1301
    else if (var1 == -1301 && _onErrorOpenCameraFail != null) {
      _onErrorOpenCameraFail();
    }
    // 打开麦克风失败 -1302
    else if (var1 == -1302 && _onErrorOpenMicFail != null) {
      _onErrorOpenMicFail();
    }
    // 视频编码失败 -1303
    else if (var1 == -1303 && _onErrorVideoEncodeFail != null) {
      _onErrorVideoEncodeFail();
    }
    // 音频编码失败 -1304
    else if (var1 == -1304 && _onErrorAudioEncodeFail != null) {
      _onErrorAudioEncodeFail();
    }
    // 不支持的视频分辨率 -1305
    else if (var1 == -1305 && _onErrorUnsupportedResolution != null) {
      _onErrorUnsupportedResolution();
    }
    // 不支持的音频采样率 -1306
    else if (var1 == -1306 && _onErrorUnsupportedSampleRate != null) {
      _onErrorUnsupportedSampleRate();
    }
    // 网络断连，且经三次重连无效，更多重试请自行重启推流 -1307
    else if (var1 == -1306 && _onErrorNetDisconnect != null) {
      _onErrorNetDisconnect();
    }
  }

  @override
  Future<void> onNetStatus(android_os_Bundle var1) async {
    super.onNetStatus(var1);
  }
}

class _IOSEventDelegate extends NSObject with TXLivePushListener {
  VoidCallback _onWaringNetBusy;
  VoidCallback _onWaringReconnect;
  VoidCallback _onWaringHardwareAccelerationFail;
  VoidCallback _onWaringDNSFail;
  VoidCallback _onWaringServerConnFail;
  VoidCallback _onWaringShakeFail;
  VoidCallback _onWaringServerDisconnect;

  VoidCallback _onEventConnectSucc;
  VoidCallback _onEventPushBegin;
  VoidCallback _onEventOpenCameraSuccess;

  VoidCallback _onErrorOpenCameraFail;
  VoidCallback _onErrorOpenMicFail;
  VoidCallback _onErrorVideoEncodeFail;
  VoidCallback _onErrorAudioEncodeFail;
  VoidCallback _onErrorUnsupportedResolution;
  VoidCallback _onErrorUnsupportedSampleRate;
  VoidCallback _onErrorNetDisconnect;

  @override
  Future<void> onPushEvent_withParam(int EvtID, Map param) async {
    super.onPushEvent_withParam(EvtID, param);
    // 网络环境不佳 1101
    if (EvtID == 1101 && _onWaringNetBusy != null) {
      _onWaringNetBusy();
    }
    // 网络断连，已启动自动重连（自动重连连续失败超过三次会放弃） 1102
    else if (EvtID == 1102 && _onWaringReconnect != null) {
      _onWaringReconnect();
    }
    // 硬编码启动失败，采用软编码 1103
    else if (EvtID == 1103 && _onWaringHardwareAccelerationFail != null) {
      _onWaringHardwareAccelerationFail();
    }
    // RTMP - DNS 解析失败（会触发重试流程） 3001
    else if (EvtID == 3001 && _onWaringDNSFail != null) {
      _onWaringDNSFail();
    }
    // RTMP 服务器连接失败（会触发重试流程） 3002
    else if (EvtID == 3002 && _onWaringServerConnFail != null) {
      _onWaringServerConnFail();
    }
    // RTMP 服务器握手失败（会触发重试流程） 3003
    else if (EvtID == 3003 && _onWaringShakeFail != null) {
      _onWaringShakeFail();
    }
    // RTMP 服务器主动断开连接（会触发重试流程） 3004
    else if (EvtID == 3004 && _onWaringServerDisconnect != null) {
      _onWaringServerDisconnect();
    }
    // 已经成功连接到腾讯云推流服务器 1001
    else if (EvtID == 1001 && _onEventConnectSucc != null) {
      _onEventConnectSucc();
    }
    // 与服务器握手完毕，一切正常，准备开始推流 1002
    else if (EvtID == 1002 && _onEventPushBegin != null) {
      _onEventPushBegin();
    }
    // 推流器已成功打开摄像头（部分 Android 手机在此过程需要耗时1s - 2s） 1003
    else if (EvtID == 1003 && _onEventOpenCameraSuccess != null) {
      _onEventOpenCameraSuccess();
    }
    // 打开摄像头失败 -1301
    else if (EvtID == -1301 && _onErrorOpenCameraFail != null) {
      _onErrorOpenCameraFail();
    }
    // 打开麦克风失败 -1302
    else if (EvtID == -1302 && _onErrorOpenMicFail != null) {
      _onErrorOpenMicFail();
    }
    // 视频编码失败 -1303
    else if (EvtID == -1303 && _onErrorVideoEncodeFail != null) {
      _onErrorVideoEncodeFail();
    }
    // 音频编码失败 -1304
    else if (EvtID == -1304 && _onErrorAudioEncodeFail != null) {
      _onErrorAudioEncodeFail();
    }
    // 不支持的视频分辨率 -1305
    else if (EvtID == -1305 && _onErrorUnsupportedResolution != null) {
      _onErrorUnsupportedResolution();
    }
    // 不支持的音频采样率 -1306
    else if (EvtID == -1306 && _onErrorUnsupportedSampleRate != null) {
      _onErrorUnsupportedSampleRate();
    }
    // 网络断连，且经三次重连无效，更多重试请自行重启推流 -1307
    else if (EvtID == -1306 && _onErrorNetDisconnect != null) {
      _onErrorNetDisconnect();
    }
  }

  @override
  Future<void> onNetStatus(Map param) async {
    super.onNetStatus(param);
  }
}
