Пример #1
0
        public RequestDispatcher BuildRequestDispatcher(IHybridModuleContainer container)
        {
            var moduleCatalog = new ModuleCatalog(
                () => { return(container.GetAllModules()); },
                (Type moduleType) => { return(container.GetModule(moduleType)); }
                );

            var routeSegmentExtractor    = new RouteSegmentExtractor();
            var routeDescriptionProvider = new RouteDescriptionProvider();
            var routeCache = new RouteCache(routeSegmentExtractor, routeDescriptionProvider);

            routeCache.BuildCache(moduleCatalog.GetAllModules());

            var trieNodeFactory = new TrieNodeFactory();
            var routeTrie       = new RouteResolverTrie(trieNodeFactory);

            routeTrie.BuildTrie(routeCache);

            var serializers = new List <ISerializer>()
            {
                new JsonSerializer(), new XmlSerializer()
            };
            var responseFormatterFactory = new ResponseFormatterFactory(serializers);
            var moduleBuilder            = new ModuleBuilder(responseFormatterFactory);

            var routeResolver = new RouteResolver(moduleCatalog, moduleBuilder, routeTrie);

            var negotiator        = new ResponseNegotiator();
            var routeInvoker      = new RouteInvoker(negotiator);
            var requestDispatcher = new RequestDispatcher(routeResolver, routeInvoker);

            return(requestDispatcher);
        }
Пример #2
0
        private WebSocketDispatcher BuildWebSocketDispatcher(IHybridModuleContainer container)
        {
            var moduleCatalog = new WebSocketModuleCatalog(
                () => { return(container.GetAllWebSocketModules()); },
                (Type moduleType) => { return(container.GetWebSocketModule(moduleType)); }
                );

            var routeResolver = new WebSocketRouteResolver(moduleCatalog);
            var bufferManager = new SegmentBufferManager(1024, 8192, 1, true);

            return(new WebSocketDispatcher(routeResolver, bufferManager));
        }
Пример #3
0
        public IHybridEngine BootWith(IHybridModuleContainer container, IPipelines pipelines)
        {
            if (container == null)
            {
                throw new ArgumentNullException("container");
            }

            var requestDispatcher   = BuildRequestDispatcher(container);
            var webSocketDispatcher = BuildWebSocketDispatcher(container);

            return(new HybridEngine(requestDispatcher, webSocketDispatcher));
        }
Пример #4
0
 public IHybridEngine BootWith(IHybridModuleContainer container)
 {
     return(BootWith(container, new Pipelines()));
 }