static void SendFile(string filename, string destination) { int i = 0; while (i < m_clients.Count) { DebuggerClient client = m_clients[i]; if (!client.Connected) { m_clients.RemoveAt(i); continue; } client.SendFile(filename, destination); i++; } }
static void SendBack(string str, bool sendLength = true) { int i = 0; while (i < m_clients.Count) { DebuggerClient client = m_clients[i]; if (!client.Connected) { m_clients.RemoveAt(i); continue; } client.SendBack(str, sendLength); i++; } }
static void StartServerBlocked(Object threadContext) { if (s_serverStarted) { return; } s_serverStarted = true; DebuggerAttached = true; Debugger.OnResult += SendBack; Debugger.OnSendFile += SendFile; ThreadPool.QueueUserWorkItem(StartProcessing, null); while (DebuggerAttached) { Console.Write("Waiting for a connection... "); try { // Perform a blocking call to accept requests. TcpClient socket = s_server.AcceptTcpClient(); DebuggerClient client = new DebuggerClient(); m_clients.Add(client); ThreadPool.QueueUserWorkItem(o => client.RunClient(socket)); } catch (Exception exc) { string err = string.Format("Exception running server: {0}", exc.Message); Console.Write(err); } Thread.Sleep(1000); } Console.Write("Stopped listening for requests"); s_serverStarted = false; }