Exemple #1
0
 void SessionList_OnSessionStart(HttpSession Sender)
 {
     RequestHandlersLock.AcquireReaderLock(-1);
     try {
         for (int i = 0; i < mRequestHandlers.Count; i++)
         {
             mRequestHandlers[i].SessionStart(Sender);
         }
     } finally {
         RequestHandlersLock.ReleaseReaderLock();
     }
 }
Exemple #2
0
        protected override void DoCommand(ContextRFC context, HttpRequestInfo request, HttpResponseInfo response, ref bool handled)
        {
            // first raise events is user want to handle request by event
            switch (request.CommandType)
            {
            case HttpCommandEnum.Connect:
                if (OnCommandConnect != null)
                {
                    OnCommandConnect(context, request, response, ref handled);
                }
                break;

            case HttpCommandEnum.Delete:
                if (OnCommandDelete != null)
                {
                    OnCommandDelete(context, request, response, ref handled);
                }
                break;

            case HttpCommandEnum.Get:
                if (OnCommandGet != null)
                {
                    OnCommandGet(context, request, response, ref handled);
                }
                break;

            case HttpCommandEnum.Head:
                if (OnCommandHead != null)
                {
                    OnCommandHead(context, request, response, ref handled);
                }
                break;

            case HttpCommandEnum.Options:
                if (OnCommandOptions != null)
                {
                    OnCommandOptions(context, request, response, ref handled);
                }
                break;

            case HttpCommandEnum.Post:
                if (OnCommandPost != null)
                {
                    OnCommandPost(context, request, response, ref handled);
                }
                break;

            case HttpCommandEnum.Put:
                if (OnCommandPut != null)
                {
                    OnCommandPut(context, request, response, ref handled);
                }
                break;

            case HttpCommandEnum.Trace:
                if (OnCommandTrace != null)
                {
                    OnCommandTrace(context, request, response, ref handled);
                }
                break;

            default:
                if (OnCommandOther != null)
                {
                    OnCommandOther(context, request, response, ref handled);
                }
                break;
            }
            // if request handled from an event handler skip request handlers
            if (handled)
            {
                return;
            }

            // try to handle request by request handlers collection
            RequestHandlersLock.AcquireReaderLock(-1);
            try {
                for (int i = 0; i < mRequestHandlers.Count && !handled; i++)
                {
                    mRequestHandlers[i].HandleCommand(this, request, response, ref handled);
                }
            } finally {
                RequestHandlersLock.ReleaseReaderLock();
            }
        }