filterNetwork method

NetworkMetrics? filterNetwork(
  1. List<StatsReport> reports
)

Implementation

NetworkMetrics? filterNetwork(List<StatsReport> reports) {
  var remoteCandidate = "";
  var localCandidate = "";
  var CandidatePair = "";

  reports.map((report) {
    var value = report.values["value"];
    var key = report.values["key"];

    if (value["type"] == "candidate-pair" &&
        value["state"] == "succeeded" &&
        value["writable"] == true) {
      remoteCandidate = value["remoteCandidateId"];
      localCandidate = value["localCandidateId"];
      CandidatePair = key;
    }
  });

  if (CandidatePair == "") {
    return null;
  }

  var val = reports[0].values[CandidatePair];

  var ret = NetworkMetrics();

  ret.localIP = reports[0].values[localCandidate]!["ip"];
  ret.remoteIP = reports[0].values[remoteCandidate]!["ip"];

  ret.localPort = reports[0].values[localCandidate]!["port"];
  ret.remotePort = reports[0].values[remoteCandidate]!["port"];

  ret.packetsReceived = val!["packetsReceived"];
  ret.packetsSent = val["packetsSent"];
  ret.bytesSent = val["bytesSent"];
  ret.bytesReceived = val["bytesReceived"];
  ret.availableIncomingBitrate = val["availableIncomingBitrate"];
  ret.availableOutgoingBitrate = val["availableOutgoingBitrate"];
  ret.currentRoundTripTime = val["currentRoundTripTime"];
  ret.totalRoundTripTime = val["totalRoundTripTime"];
  ret.priority = val["priority"];
  ret.timestamp = val["timestamp"];

  return ret;
}