proxyData method

  1. @override
void proxyData({
  1. required Parameter data,
  2. required BaseMethod method,
  3. required String url,
  4. required String reqMethod,
  5. required KT? key,
  6. required bool slient,
  7. required dynamic encodeDataFunction(
    1. RespData resp
    ),
})
override

Implementation

@override
void proxyData({
  required Parameter data,
  required BaseMethod method,
  required String url,
  required String reqMethod,
  required KT? key,
  required bool slient,
  required Function(RespData resp) encodeDataFunction,
}) {
  log.info("proxyData@url: $url, data: $data, key: $key", null);
  if (waitlist.isEmpty) {
    log.debug("wait to more request of type ArrayBuffer", null);
    Timer(Duration(milliseconds: 2), () async {
      log.debug("will get parameter for ArrayBuffer request", null);
      var param = getParameter(waitParam);
      waitParam.clear();
      Map<KT?, Completer<RespData<VT?>>> waitlist1 = waitlist;
      waitlist = <KT?, Completer<RespData<VT?>>>{};
      RespData resp = await method.sendReq(url, param, reqMethod, slient);
      List? res = resp.res;
      if (res != null) {
        for (var it in res) {
          Map<String, dynamic> item = it;
          RespData<VT> one = RespData.copy(resp);
          one.res = item;
          encodeDataFunction(one);
          one.res = null;
          var key = getKey(one.obj as Parameter);
          log.debug("proxyData@key $key", null);
          var a = waitlist1[key];
          if (a == null) {
            if (key is String) {
              var tempkey = key + "_1";
              a = waitlist1[tempkey as KT];
              waitlist1.remove(tempkey);
              buffer![tempkey as KT] = one;
            }
          }
          waitlist1.remove(key);
          buffer![key] = one;
          if (a != null) {
            a.complete(one);
          } else {
            log.debug('$key not found in wait list', null);
          }
        }
      }
      waitlist1.forEach((k, v) {
        v.complete(RespData(code: 5));
      });
    });
  }
  waitParam.add(data);
}