CSharpRTMP.Core.Protocols.Rtsp.InboundConnectivity.CreateCarriers C# (CSharp) Method

CreateCarriers() public method

public CreateCarriers ( InboundRtpProtocol rtp, RtcpProtocol rtcp ) : bool
rtp InboundRtpProtocol
rtcp RtcpProtocol
return bool
        public bool CreateCarriers(InboundRtpProtocol rtp, RtcpProtocol rtcp)
        {
            UDPCarrier pCarrier1 = null;
            UDPCarrier pCarrier2 = null;
            for (var i = 0; i < 10; i++)
            {
                if (pCarrier1 != null)
                {
                    pCarrier1.Dispose();
                    pCarrier1 = null;
                }
                if (pCarrier2 != null)
                {
                    pCarrier2.Dispose();
                       pCarrier2 = null;
                }

                pCarrier1 = UDPCarrier.Create("0.0.0.0", 0);
                if (pCarrier1 == null)
                {
                    WARN("Unable to create UDP carrier for RTP");
                    continue;
                }

                pCarrier2 = (pCarrier1.NearPort % 2) == 0 ? UDPCarrier.Create("0.0.0.0",pCarrier1.NearPort + 1) : UDPCarrier.Create("0.0.0.0", pCarrier1.NearPort - 1);

                if (pCarrier2 == null)
                {
                    WARN("Unable to create UDP carrier for RTCP");
                    continue;
                }

                if (pCarrier1.NearPort > pCarrier2.NearPort)
                {
                    WARN("Switch carriers");
                    UDPCarrier pTemp = pCarrier1;
                    pCarrier1 = pCarrier2;
                    pCarrier2 = pTemp;
                }
                pCarrier1.Protocol = rtp.FarEndpoint;
                rtp.FarEndpoint.IOHandler = pCarrier1;
                pCarrier2.Protocol = rtcp.FarEndpoint;
                rtcp.FarEndpoint.IOHandler = pCarrier2;
                return pCarrier1.StartAccept() | pCarrier2.StartAccept();
            }

            if (pCarrier1 != null)
            {
                pCarrier1.Dispose();
                pCarrier1 = null;
            }
            if (pCarrier2 != null)
            {
                pCarrier2.Dispose();
                pCarrier2 = null;
            }

            return false;
        }