cleanup method

void cleanup()

Implementation

void cleanup() {
  logger.log('Cleaning up PeerConnection to ${connection.peer}');

  final peerConnection = connection.peerConnection;

  if (peerConnection == null) {
    return;
  }

  connection.peerConnection = null;

  // unsubscribe from all PeerConnection's events
  peerConnection.onIceCandidate = null;
  peerConnection.onIceConnectionState = null;
  peerConnection.onDataChannel = null;
  peerConnection.onTrack = null;

  final peerConnectionNotClosed = peerConnection.signalingState != RTCSignalingState.RTCSignalingStateClosed;
  bool dataChannelNotClosed = false;

  final dataChannel = connection.dataChannel;

  if (dataChannel != null) {
    dataChannelNotClosed = dataChannel.state != RTCDataChannelState.RTCDataChannelClosed;
  }

  if (peerConnectionNotClosed || dataChannelNotClosed) {
    peerConnection.close();
  }
}