예제 #1
0
        public Service(ulong capacity, uint port)
        {
            _memCache = new MemCache(capacity, Scheduler.Default);

            IScheduler scheduler = Scheduler.Default;

            var requestHandlers = GetRequestHandlers(scheduler, _memCache);

            _requestDispatcher = new RequestDispatcher(scheduler, _memCache, requestHandlers);
            _server            = new RequestResponseTcpServer(IPAddress.Any, (int)port, _requestDispatcher);
            _restListener      = new CacheRestServer(new Dictionary <string, IHttpHandler>
            {
                { "/cache/(.+)", new CacheRestHttpHandler(_memCache) },
                { "/static/(.+)", new StaticFileHttpHandler() }
            },
                                                     new[]
            {
                "http://localhost:8222/cache/",
                "http://localhost:8222/static/"
            });
            _websocketServer = new WebSocketServer(new [] { "http://localhost:8222/sub/" },
                                                   o => new CacheEntrySubscriptionHandler(_memCache, o));
            _fileSystem = new FileSystemWrapper();
            const string cachelogBin = "cachelog.bin";

            _restorer = new CacheRestorer(_memCache, _fileSystem, cachelogBin);
        }
예제 #2
0
 public RequestResponseTcpServer(IPAddress address, int port, RequestDispatcher dispatcher)
 {
     _dispatcher  = dispatcher;
     _taskFactory = new TaskFactory(_cancellationTokenSource.Token);
     Address      = address;
     Port         = port;
     _listener    = new TcpListener(address, port);
 }