handleIncomingPacket method

dynamic handleIncomingPacket(
  1. Map<String, String> pkt
)

Implementation

handleIncomingPacket(Map<String, String> pkt) async {
  var target = pkt["Target"];
  if (target == "SDP") {
    LogConnectionEvent(ConnectionEvent.ExchangingSignalingMessage);
    var sdp = pkt["SDP"];
    if (sdp == null) {
      Log(LogLevel.Error, "missing sdp");
      return;
    }
    var type = pkt["Type"];
    if (type == null) {
      Log(LogLevel.Error, "missing sdp type");
      return;
    }

    webrtc.onIncomingSDP(LibWebRTC.RTCSessionDescription(
        sdp, (type == "offer") ? "offer" : "answer"));
  } else if (target == "ICE") {
    LogConnectionEvent(ConnectionEvent.ExchangingSignalingMessage);
    var sdpmid = pkt["SDPMid"];
    if (sdpmid == null) {
      Log(LogLevel.Error, "Missing sdp mid field");
    }
    var lineidx = pkt["SDPMLineIndex"];
    if (lineidx == null) {
      Log(LogLevel.Error, "Missing sdp line index field");
      return;
    }
    var can = pkt["Candidate"];
    if (can == null) {
      Log(LogLevel.Error, "Missing sdp candidate field");
      return;
    }

    webrtc.onIncomingICE(
        LibWebRTC.RTCIceCandidate(can, sdpmid, int.parse(lineidx)));
  } else if (target == "PREFLIGHT") {
    //TODO
    var preverro = pkt["Error"];
    if (preverro != null) {
      Log(LogLevel.Error, preverro);
      alert(preverro);
    }

    var webrtcConf = pkt["WebRTCConfig"];
    if (webrtcConf != null) {
      var config = jsonDecode(webrtcConf);
      this.webrtc.SetupConnection(config);
    }

    var i = Device.DeviceSelection(pkt["Devices"]!);
    var result = await DeviceSelection(i);
    var dat = <String, String>{};
    dat["type"] = "answer";
    dat["value"] = result.toString();
    signaling.SignallingSend("PREFLIGHT", dat);
  } else if (target == "START") {
    var dat = <String, String>{};
    signaling.SignallingSend("START", dat);
  }
}