static void Main(string[] args)
        {
            LoadMimeTypes();

            // Direct requests to locally stored files.
            string basePath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
            IModule contentModule = new LocalFileModule(string.Format("{0}\\walrus", basePath));

            // Cache files into memory and pre-compress, ideal for static content.
            IModule cacheModule = new CompressedCache(contentModule);

            // Restrict content to a rate of 64 Kbytes per second.
            IModule limiterModule = new StreamLimiter(cacheModule, 1024 * 64);

            ServerConfiguration configuration = new ServerConfiguration();
            Server server = new Server(configuration, cacheModule);

            // Apply the speed restriction to PNG and JPG files.
            server.Modules.Add(MimeTypes.Get("png"), limiterModule);
            server.Modules.Add(MimeTypes.Get("jpg"), limiterModule);

            Console.WriteLine("Server Running");
            while (Console.ReadLine() != "quit")
            {

            }
        }
        public Server(ServerConfiguration configuration, IModule defaultModule)
        {
            Configuration = configuration;
            Modules = new ServerModules(defaultModule);

            _listener = new HttpListener();
            _listener.Prefixes.Add(configuration.Prefix);
            _listener.Start();

            _worker = new Thread(AcceptRequests);
            _worker.Start();
        }