Inheritance: IDisposable
Beispiel #1
0
        protected virtual void Dispose(bool disposing)
        {
            // If you need thread safety, use a lock around these
            // operations, as well as in your methods that use the resource.
            if (_disposed)
            {
                return;
            }

            if (disposing)
            {
                if (_listener.IsStarted)
                {
                    _listener.StopListening();
                }

                lock (_sequencingLock)
                {
                    _sequencedPackets.Clear();
                }

                lock (_receivingLock)
                {
                    _receivedPackets.Clear();
                }
            }

            // Indicate that the instance has been disposed.
            _listener         = null;
            _receivedPackets  = null;
            _sequencedPackets = null;
            _disposed         = true;
        }
Beispiel #2
0
        /// <summary>
        /// Method to handle incoming data from <c>_listener</c>.
        /// </summary>
        /// <param name="listener">The listener.</param>
        /// <param name="buffer">The buffer.</param>
        private void DataReceived(UdpListener listener, UdpBuffer buffer)
        {
            ThreadPool.QueueUserWorkItem(
                delegate
            {
                try
                {
                    var packet = RtpPacket.FromUdpBuffer(buffer);
                    lock (_receivingLock)
                    {
                        this._receivedPackets.Add(packet);

                        //signal that we got a packets
                        Monitor.Pulse(_receivingLock);
                    }

                    //if we dont care about sequence order, use these
                    if (packet.Marker)
                    {
                        OnMarkerReceived(packet);
                    }
                    OnPacketReceived(packet);
                }
                catch (InvalidDataException ex)
                {
                    OnInvalidData(buffer);
                    Assert.Suppress(ex);
                }
            });
        }
Beispiel #3
0
 public RtpListener(IPEndPoint localEp)
 {
     _sequencedPackets = new List <RtpPacket>();
     _receivedPackets  = new List <RtpPacket>();
     _listener         = new UdpListener(localEp)
     {
         BufferSize      = Constants.PacketSize,
         ReceiveBuffer   = Constants.BufferSize,
         ReceiveCallback = DataReceived
     };
     this.MaximumBufferedPackets = 25;
     this.VerifyPayloadType      = true;
 }
Beispiel #4
0
 public RtpListener(IPEndPoint localEp)
 {
     _sequencedPackets = new List<RtpPacket>();
     _receivedPackets = new List<RtpPacket>();
     _listener = new UdpListener(localEp)
                     {
                         BufferSize = Constants.PacketSize,
                         ReceiveBuffer = Constants.BufferSize,
                         ReceiveCallback = DataReceived
                     };
     this.MaximumBufferedPackets = 25;
     this.VerifyPayloadType = true;
 }
Beispiel #5
0
        /// <summary>
        /// Method to handle incoming data from <c>_listener</c>.
        /// </summary>
        /// <param name="listener">The listener.</param>
        /// <param name="buffer">The buffer.</param>
        private void DataReceived(UdpListener listener, UdpBuffer buffer)
        {
            ThreadPool.QueueUserWorkItem(
                delegate
                    {
                        try
                        {
                            var packet = RtpPacket.FromUdpBuffer(buffer);
                            lock (_receivingLock)
                            {
                                this._receivedPackets.Add(packet);

                                //signal that we got a packets
                                Monitor.Pulse(_receivingLock);
                            }

                            //if we dont care about sequence order, use these
                            if (packet.Marker)
                                OnMarkerReceived(packet);
                            OnPacketReceived(packet);
                        }
                        catch (InvalidDataException ex)
                        {
                            OnInvalidData(buffer);
                            Assert.Suppress(ex);
                        }
                    });
        }
Beispiel #6
0
        protected virtual void Dispose(bool disposing)
        {
            // If you need thread safety, use a lock around these
            // operations, as well as in your methods that use the resource.
            if (_disposed) return;

            if (disposing)
            {
                if (_listener.IsStarted)
                    _listener.StopListening();

                lock (_sequencingLock)
                {
                    _sequencedPackets.Clear();
                }

                lock (_receivingLock)
                {
                    _receivedPackets.Clear();
                }
            }

            // Indicate that the instance has been disposed.
            _listener = null;
            _receivedPackets = null;
            _sequencedPackets = null;
            _disposed = true;
        }