public void Start(ITelnetClientFactory factory, int timeout = 3000) { if (!active) { // connections = new ExpirableClientsManager(timeout); //connections.Start(factory); active = true; } }
public void Start(ITelnetClientFactory factory) { clientsFactory = factory; active = true; new Thread(() => { while (active) { Thread.Sleep(Timeout); //delete from the servers list every server which is not necesarry; var expireds = new List <Tuple <string, int> >(); foreach (var key in clients.Keys) { if (clients[key].Expired) { expireds.Add(key); } else { clients[key].setTimeout(Timeout); } } foreach (var expired in expireds) { mutex.WaitOne(); try { var client = clients[expired]; if (client.Expired) { client.Client.Disconnect(); clients.Remove(expired); } } finally { mutex.ReleaseMutex(); } } } }).Start(); }