private void clearUp() { this.serverBrowserView.Items.Clear(); this.serverList.Clear(); qhandler = null; GC.Collect(); }
private void populateListWithServers(MasterQueryResult mqr) { if (taskProgress.InvokeRequired) { populateCallback p = new populateCallback(populateListWithServers); this.Invoke(p, new object[] { mqr }); return; } if (mqr.Code == MasterQueryResult.StatusCodes.CriticalStop) { taskInProgress = false; MessageBox.Show(mqr.Message, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else { foreach (Server serv in mqr.ServerList) { addToServerList(serv); } setProgressDesc("Querying " + serverList.Count + " servers..."); // Create the serverqueryhandler directly as we're already in a task - doQuery is there to create the task, not to continue it. qhandler = new ServerQueryHandler(serverList, new QueryProgress(onProgressUpdate), new Action(onServerQueryBatchCompleted)); } }
private void doNewQuery(List<Server> servers) { if (taskInProgress) return; friendMngr.updateServers(); taskInProgress = true; refreshListButton.Enabled = false; filterButton.Enabled = false; queryIPAddr.Enabled = false; stopButton.Enabled = true; qhandler = new ServerQueryHandler(servers, new QueryProgress(onProgressUpdate), new Action(onServerQueryBatchCompleted)); }
private void doNewQuery(List <Server> servers) { if (taskInProgress) { return; } friendMngr.updateServers(); taskInProgress = true; refreshListButton.Enabled = false; filterButton.Enabled = false; queryIPAddr.Enabled = false; stopButton.Enabled = true; qhandler = new ServerQueryHandler(servers, new QueryProgress(onProgressUpdate), new Action(onServerQueryBatchCompleted)); }
private void populateListWithServers(MasterQueryResult mqr) { if (taskProgress.InvokeRequired) { populateCallback p = new populateCallback(populateListWithServers); this.Invoke(p, new object[] { mqr }); return; } if (mqr.Code == MasterQueryResult.StatusCodes.CriticalStop) { taskInProgress = false; MessageBox.Show(mqr.Message, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else { foreach (Server serv in mqr.ServerList) addToServerList(serv); setProgressDesc("Querying " + serverList.Count + " servers..."); // Create the serverqueryhandler directly as we're already in a task - doQuery is there to create the task, not to continue it. qhandler = new ServerQueryHandler(serverList, new QueryProgress(onProgressUpdate), new Action(onServerQueryBatchCompleted)); } }
private void clearUp() { this.serverBrowserView.Items.Clear(); this.serverList.Clear(); qhandler = null; GC.Collect(); }
public void update(Object threadContext) { if (threadContext != null) { sqh = (ServerQueryHandler)threadContext; } try { if (threadContext != null) { if (sqh.QueryCancelled) { return; } } _udp = new UdpClient(); _udp.Client.ReceiveTimeout = 2000; _udp.Client.SendTimeout = 2000; _udp.Connect(serverAddr); int now = Environment.TickCount; _udp.Send(status_packet, status_packet.Length); IPEndPoint serverIn = new IPEndPoint(IPAddress.Any, 0); byte[] data = _udp.Receive(ref serverIn); this.serverPing = Environment.TickCount - now; // grab the ping ASAP if (threadContext != null) { if (sqh.QueryCancelled) { this.queryStatus = ServerQueryStatus.Failed; _udp.Close(); ServerUpdated(this); return; } } if (queryStatus != ServerQueryStatus.Failed) { if (!serverIn.Address.Equals(serverAddr.Address)) { this.queryStatus = ServerQueryStatus.Failed; throw new Exception("Got data from wrong host " + serverIn.Address.ToString() + " expected from " + serverAddr.Address.ToString()); } this.parseAndPopulate(data); this.queryStatus = ServerQueryStatus.Successful; } _udp.Close(); } catch (SocketException) { this.queryStatus = ServerQueryStatus.TimedOut; } catch (Exception) { this.queryStatus = ServerQueryStatus.Failed; } finally { try { if (threadContext != null) { sqh.queryFinished(); // tell the handler that we've finished our query } ServerUpdated(this); } catch { /* o noes! */ } } }
public void update(Object threadContext) { if (threadContext != null) sqh = (ServerQueryHandler)threadContext; try { if (threadContext != null) if (sqh.QueryCancelled) return; _udp = new UdpClient(); _udp.Client.ReceiveTimeout = 2000; _udp.Client.SendTimeout = 2000; _udp.Connect(serverAddr); int now = Environment.TickCount; _udp.Send(status_packet, status_packet.Length); IPEndPoint serverIn = new IPEndPoint(IPAddress.Any, 0); byte[] data = _udp.Receive(ref serverIn); this.serverPing = Environment.TickCount - now; // grab the ping ASAP if (threadContext != null) { if (sqh.QueryCancelled) { this.queryStatus = ServerQueryStatus.Failed; _udp.Close(); ServerUpdated(this); return; } } if (queryStatus != ServerQueryStatus.Failed) { if (!serverIn.Address.Equals(serverAddr.Address)) { this.queryStatus = ServerQueryStatus.Failed; throw new Exception("Got data from wrong host " + serverIn.Address.ToString() + " expected from " + serverAddr.Address.ToString()); } this.parseAndPopulate(data); this.queryStatus = ServerQueryStatus.Successful; } _udp.Close(); } catch (SocketException) { this.queryStatus = ServerQueryStatus.TimedOut; } catch (Exception) { this.queryStatus = ServerQueryStatus.Failed; } finally { try { if (threadContext != null) sqh.queryFinished(); // tell the handler that we've finished our query ServerUpdated(this); } catch { /* o noes! */ } } }