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); }
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)); }
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)); }
public IHybridEngine BootWith(IHybridModuleContainer container) { return(BootWith(container, new Pipelines())); }