Exemplo n.º 1
0
        /// <summary>
        /// Dispatches an RTSP request.
        /// </summary>
        /// <param name="request">The request to dispatch</param>
        /// <returns></returns>
        public RtspResponse Dispatch(RtspRequest request)
        {
            IRequestHandler handler = null;

            if (_handlers.TryGetValue(request.URI.AbsolutePath, out handler))
            {
                switch (request.Method)
                {
                case RtspRequest.RtspMethod.ANNOUNCE: return(handler.Announce(request));

                case RtspRequest.RtspMethod.DESCRIBE: return(handler.Describe(request));

                case RtspRequest.RtspMethod.GET_PARAMETER: return(handler.GetParamater(request));

                case RtspRequest.RtspMethod.OPTIONS: return(handler.Options(request));

                case RtspRequest.RtspMethod.PAUSE: return(handler.Pause(request));

                case RtspRequest.RtspMethod.PLAY: return(handler.Play(request));

                case RtspRequest.RtspMethod.RECORD: return(handler.Record(request));

                case RtspRequest.RtspMethod.REDIRECT: return(handler.Redirect(request));

                case RtspRequest.RtspMethod.SETUP: return(handler.SetUp(request));

                case RtspRequest.RtspMethod.SET_PARAMETER: return(handler.SetParamater(request));

                case RtspRequest.RtspMethod.TEARDOWN: return(handler.TearDown(request));

                default: return(RtspResponse.CreateBuilder().Status(RtspResponse.Status.MethodNotAllowed).Build());
                }
            }
            else
            {
                return(RtspResponse.CreateBuilder().Status(RtspResponse.Status.NotFound).Build());
            }
        }