public static void Main(string[] args) { var log = CreateLog(args); SetupThreadPool(); log.Info("Master is starting. IsServerGC = {IsServerGC}.", GCSettings.IsServerGC); var sessionStorage = new SessionStorage(log); var heartbeatStorage = new HeartbeatStorage(TimeSpan.FromSeconds(15), log); var garbageCollector = new GarbageCollector(sessionStorage, heartbeatStorage, TimeSpan.FromSeconds(2), log); var server = new TcpListener(IPAddress.Any, 16770); var adminServer = new AdminServer(16777, sessionStorage, heartbeatStorage); adminServer.Run(); server.Start(100); garbageCollector.Start(); while (true) { var client = server.AcceptSocket(); var sessionLog = log.ForContext($"Session({client.RemoteEndPoint})"); //sessionLog.Info("Accepted new client."); var session = new Session(new Link(client, sessionLog), new CommandHandler(sessionStorage, heartbeatStorage, sessionLog), sessionLog); session.Run(); } }
public GarbageCollector(SessionStorage sessionStorage, HeartbeatStorage heartbeatStorage, TimeSpan period, ILog log) { this.sessionStorage = sessionStorage; this.heartbeatStorage = heartbeatStorage; this.period = period; this.log = log.ForContext(GetType().Name); }
public AdminServer(int port, SessionStorage sessionStorage, HeartbeatStorage heartbeatStorage) { this.port = port; this.sessionStorage = sessionStorage; this.heartbeatStorage = heartbeatStorage; }
public CommandHandler(SessionStorage sessionStorage, HeartbeatStorage heartbeatStorage, ILog log) { this.sessionStorage = sessionStorage; this.heartbeatStorage = heartbeatStorage; this.log = log.ForContext(GetType().Name); }
public AdminSession(Link link, SessionStorage sessionStorage, HeartbeatStorage heartbeatStorage) { this.link = link; this.sessionStorage = sessionStorage; this.heartbeatStorage = heartbeatStorage; }