report static method

Future<void> report()

Implementation

static Future<void> report() async {
  if (_cache.isEmpty) {
    return;
  }
  int takeCount = _cache.length > batchSize ? batchSize : _cache.length;
  if (takeCount == 0) {
    return;
  }
  List<ReportData> reportCache = _cache.sublist(0, takeCount);
  _cache.removeRange(0, takeCount);
  final instance = TCICController.instance;
  List<Log> logs = <Log>[];
  for (var element in reportCache) {
    Log log = Log();

    final isTeacher = instance.isTeacher();
    final isAssistant = instance.isAssistant();
    final isStudent = instance.isStudent();
    final micStatus = instance.getMembersInfoObs().selfMicState.value;
    final cameraStatus = instance.getMembersInfoObs().selfCameraState.value;
    final schoolId = instance.getSchoolInfoObs().getSchoolInfo().schoolId;
    if(isTeacher){
      element.appUserRole = "teacher";
    }else if(isAssistant){
      element.appUserRole = "assistant";
    }else if(isStudent){
      element.appUserRole = "student";
    }
    element.appNewEnterId = schoolId.toString();
    element.appNativeSdkVersion = _dartPackageVersion;
    // 补齐上报信息
    element.statusAppMem = _physicalRamSize;
    element.statusAvailableMem = _availableRamSize;
    element.statusCamera = cameraStatus;
    element.statusMic = micStatus;
    element.devPlatform = _systemName;
    element.devSysVersion = _devSysVersion;
    element.devType = _model;
    element.netBandwidth = _deviceId;
    element.appPackageName = _packageName;
    element.toJson().forEach((key, value) {
      log.contents.add(Log_Content(key: key, value: value.toString()));
    });
    log.time = Int64(element.reportTime);
    logs.add(log);
  }
  // 如果发送失败,将数据重新放回_cache中
  LogProducerResult? result = await _logProducer?.send(logs);
  if (result != null) {
    if(result == LogProducerResult.ok){

    }else{
      // 发送失败,将reportCache重新放回_cache队头
      _cache.insertAll(0, reportCache);
      TCICLog.error("report failed ${result.name}",actionModule: ActionModule.report.name, actionName: ActionName.report.name);
    }
  } else {
    // 发送失败,将reportCache重新放回_cache队头
    _cache.insertAll(0, reportCache);
    TCICLog.error("report failed",actionModule: ActionModule.report.name, actionName: ActionName.report.name);
  }
}