import BaseAlgorithm from '../core/BaseAlgorithm' import DateUtil from '../util/DateUtil' import Window from '../core/Window' export default class MinerDataReturnRateAlgorithm extends BaseAlgorithm { compute(content: any, window: Window): void { let result = window.getResult() // 暂时先只计算finished的连接 if (content["finished"] != "true") { return } let { pkgName, appVersion, channelName, platform, countryZh, createTimeStamp, incomingInput, incomingOutput, incomingErrorMsg, outgoingErrorMsg } = content let date = DateUtil.getDate(createTimeStamp) let hour = DateUtil.getHour(createTimeStamp) let key = `${date}|||${hour}|||${pkgName}|||${appVersion}|||${channelName}|||${platform}|||${countryZh}` let conns = result[key] if (!conns) { conns = { "total": 0, "success": 0 } } conns["total"]++ let success = incomingInput > 0 && incomingOutput > 0 if (success) { conns["success"]++ } else { let errors = conns["errors"] if (!errors) { errors = {} } if (incomingErrorMsg) { if (errors[incomingErrorMsg]) { errors[incomingErrorMsg]++ } else { errors[incomingErrorMsg] = 1 } } if (outgoingErrorMsg) { if (errors[outgoingErrorMsg]) { errors[outgoingErrorMsg]++ } else { errors[outgoingErrorMsg] = 1 } } conns["errors"] = errors } result[key] = conns window.setResult(result) } }