/// <summary> /// Creates a new instance of an ICE session. /// </summary> /// <param name="rtpChannel">The RTP channel is the object managing the socket /// doing the media sending and receiving. Its the same socket the ICE session /// will need to initiate all the connectivity checks on.</param> /// <param name="component">The component (RTP or RTCP) the channel is being used for. Note /// for cases where RTP and RTCP are multiplexed the component is set to RTP.</param> public IceSession(RTPChannel rtpChannel, RTCIceComponent component) { _rtpChannel = rtpChannel; Component = component; LocalIceUser = Crypto.GetRandomString(ICE_UFRAG_LENGTH); LocalIcePassword = Crypto.GetRandomString(ICE_PASSWORD_LENGTH); }
/// <summary> /// Creates a new instance of an ICE session. /// </summary> /// <param name="rtpChannel">The RTP channel is the object managing the socket /// doing the media sending and receiving. Its the same socket the ICE session /// will need to initiate all the connectivity checks on.</param> /// <param name="component">The component (RTP or RTCP) the channel is being used for. Note /// for cases where RTP and RTCP are multiplexed the component is set to RTP.</param> public IceSession(RTPChannel rtpChannel, RTCIceComponent component) { if (rtpChannel == null) { throw new ArgumentNullException("rtpChannel"); } _rtpChannel = rtpChannel; Component = component; LocalIceUser = Crypto.GetRandomString(ICE_UFRAG_LENGTH); LocalIcePassword = Crypto.GetRandomString(ICE_PASSWORD_LENGTH); _localChecklistCandidate = new RTCIceCandidate(new RTCIceCandidateInit { sdpMid = "0", sdpMLineIndex = 0, usernameFragment = LocalIceUser }); _localChecklistCandidate.SetAddressProperties( RTCIceProtocol.udp, _rtpChannel.RTPLocalEndPoint.Address, (ushort)_rtpChannel.RTPLocalEndPoint.Port, RTCIceCandidateType.host, null, 0); }