proxyData method
void
proxyData({
- required Parameter data,
- required BaseMethod method,
- required String url,
- required String reqMethod,
- required KT? key,
- required bool slient,
- required dynamic encodeDataFunction(
- 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);
}