Esempio n. 1
0
        public void Start()
        {
            lock (ListenerLock)
            {
                if (_listener == null)
                {
                    _stop.Reset();
                    _listener = new TcpListener(IPAddress.Any, _port);
                    _listener.Server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);

                    _messages = new BlockingCollection <RtspMessage>();

                    _listener.Start();
                    _dispatcher.Init();
                    LOG.Info($"Started RTSP server on '{_port}'");

                    ThreadPool.QueueUserWorkItem(Accept);
                    ThreadPool.QueueUserWorkItem(ProcessMessages);
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Initializes a new instance of a Server composed of the specified IReceiverManager to receive client connections,
        /// IMessageFactory to wrap requests in the Smoke message protocol and IRequestDispatcher to handle incoming messages
        /// </summary>
        /// <param name="receiverManager">Manages client connections</param>
        /// <param name="messageFactory">Wraps requests in the Smoke message protocol</param>
        /// <param name="requestDispatcher">Handles incoming messages</param>
        public Server(IReceiverManager receiverManager, IMessageFactory messageFactory, IRequestDispatcher requestDispatcher, String name)
        {
            if (messageFactory == null)
                throw new ArgumentNullException("IMessageFactory");

            if (receiverManager == null)
                throw new ArgumentNullException("IReceiverManager");

            if (requestDispatcher == null)
                throw new ArgumentNullException("IRequestHandlerFactory");

            if (name == null || name == default(String) || name.Length == 0)
                throw new ArgumentNullException("Name");

            this.messageFactory = messageFactory;
            this.receiverManager = receiverManager;
            this.requestDispatcher = requestDispatcher;
            this.serverInfo.Name = name;

            // Initialize dependencies
            requestDispatcher.Init(this);
        }