Example #1
0
        SingleRoute IRouteRepository.AddRoute(SingleRoute route)
        {
            SingleRoute prev;
            string path = route.Path.ToLowerInvariant();

            if (_routes.TryGetValue(path, out prev))
                return prev;

            route.Split = new ASplit(path);
            _routes.Add(path, route);

            return route;
        }
Example #2
0
 private void validate_request(HttpContext http, SingleRoute route)
 {
     // validate get/post request
 }
Example #3
0
 private void invoke_handler(HttpContext http, SingleRoute route, Action notifyCompletion)
 {
     try
     {
         route.Controller.ProcessRequest(route.Handler, http);
     }
     catch (Exception ex)
     {
         http.set_error_response(ex.Message);
         throw;
     }
     finally
     {
         notifyCompletion();
     }
 }
Example #4
0
 private void invoke_async_handler(HttpContext http, SingleRoute route, Action notifyCompletion)
 {
     try
     {
         route.AsyncHandler(http, notifyCompletion);
     }
     catch (Exception ex)
     {
         http.set_error_response(ex.Message);
         notifyCompletion();
         throw;
     }
 }
Example #5
0
 private SingleRoute add_route(SingleRoute route)
 {
     return
         _routes.AddRoute(route);
 }
Example #6
0
        void IWebApiController.ProcessRequest(HttpContext http, SingleRoute route, Action notifyCompletion)
        {
            validate_initialization();

            if (route.HandlerIsSynchronous)
                invoke_handler(http, route, notifyCompletion);
            else
            if (route.HandlerIsAsynchronous)
                invoke_async_handler(http, route, notifyCompletion);
            else
                throw new WebApiException("No handler for route '{0}' is provided", route.Path);
        }
Example #7
0
        private void add_to_cache(string path, SingleRoute route)
        {
            Validate.NotNull(route);

            var cache = new Dictionary<string, SingleRoute>(_cache, StringComparer.InvariantCultureIgnoreCase);
            cache.Add(path, route);

            _cache = cache;
        }