public CommandRouter(RequestHandlerDirectory requestHandlers) { if (requestHandlers == null) { throw new ArgumentNullException("requestHandlers"); } if (requestHandlers.Count == 0) { throw new ArgumentException("No request handlers were found in the directory.", "requestHandlers"); } foreach (RequestHandlerMapping mapping in requestHandlers) { var handlerInfo = new RequestHandlerInfo() { RequestHandlerType = mapping.RequestHandlerType, ReentrantInstance = null }; try { _HandlerDirectory.Add(mapping.Command, handlerInfo); } catch (ArgumentException) { throw new ArgumentException("The same command was mapped to more than one request handler.", "requestHandlers"); } } }
public RequestManager() { if (!HttpListener.IsSupported) { throw new InvalidOperationException("Windows XP SP2, Windows Server 2003, or later is required to run this service."); } var requestHandlers = new RequestHandlerDirectory(); requestHandlers.AddHandler<ScheduleRequestHandler>("Schedule"); requestHandlers.AddHandler<CancelRequestHandler>("Cancel"); requestHandlers.AddHandler<StatusRequestHandler>("Status"); _Router = new CommandRouter(requestHandlers); _ListeningThread = new Thread(new ThreadStart(Listen)); }