internal ShoutcastStream(Uri serverUrl, ShoutcastStreamFactoryConnectionSettings settings, SocketWrapper socketWrapper)
        {
            this.socket         = socketWrapper;
            this.serverUrl      = serverUrl;
            this.serverSettings = settings;

            StationInfo       = new ServerStationInfo();
            AudioInfo         = new ServerAudioInfo();
            cancelTokenSource = new CancellationTokenSource();
            //MediaStreamSource = new MediaStreamSource(null);
            streamProcessor = new ShoutcastStreamProcessor(this, socket);
        }
        private async Task ReconnectSocketsAsync()
        {
            cancelTokenSource.Token.ThrowIfCancellationRequested();

            var result = await ShoutcastStreamFactory.ConnectInternalAsync(serverUrl,
                                                                           serverSettings);

            this.socket = SocketWrapperFactory.CreateSocketWrapper(result);

            cancelTokenSource = new CancellationTokenSource();

            streamProcessor = new ShoutcastStreamProcessor(this, socket);
        }
        private void DisconnectSockets()
        {
            streamProcessor = null;

            if (socket != null)
            {
                try
                {
                    socket.Dispose();
                }
                catch (ObjectDisposedException)
                {
                }
                socket = null;
            }
        }
示例#4
0
        private void DisconnectSockets()
        {
            streamProcessor = null;

            try
            {
                if (socketWriter != null)
                {
                    socketWriter.DetachStream();
                    socketWriter.Dispose();
                    socketWriter = null;
                }
            }
            catch (Exception)
            {
                socketWriter = null;
            }

            try
            {
                if (socketReader != null)
                {
                    socketReader.DetachStream();
                    socketReader.Dispose();
                    socketReader = null;
                }
            }
            catch (Exception)
            {
                socketReader = null;
            }

            if (socket != null)
            {
                try
                {
                    socket.Dispose();
                }
                catch (ObjectDisposedException)
                {
                }
                socket = null;
            }
        }