/// <summary> /// Handle an input UDP message /// </summary> /// <param name="remoteEndPoint"></param> /// <param name="splStr"></param> private void HandleUDPMessage(IPEndPoint remoteEndPoint, string[] splStr) { try { if (IsDisposed || Disposing) { return; } else if (InvokeRequired) { Invoke(new SafeHandleUDPMessage(HandleUDPMessage), remoteEndPoint, splStr); } else { Uri TargetUri = new Uri(splStr[3]); ServerLinkedColumnHeader TargetCol; if (!MMServers.TryGetValue(TargetUri, out TargetCol)) { TargetCol = new ServerLinkedColumnHeader(splStr[2], TargetUri, null); lvMacomberMapServers.Columns.Add(TargetCol); MMServers.Add(TargetUri, TargetCol); foreach (ListViewItem lvI in lvMacomberMapServers.Items) { lvI.SubItems.Add("").Tag = DateTime.Now; } lvMacomberMapServers.Items[0].SubItems[TargetCol.Index].Text = splStr.Length == 5 ? "(null)" : splStr[5]; lvMacomberMapServers.Items[1].SubItems[TargetCol.Index].Text = splStr[4] + " users"; lvMacomberMapServers.Items[2].SubItems[TargetCol.Index].Text = splStr[1]; MM_Administrator_Types AdminClient = CreateProxy(TargetUri.ToString().Replace("MacomberMapWCFService", "MacomberMapAdministratorInterface")); MMServerConnections.Add(TargetUri, AdminClient); AdminClient.RegisterCallback(); frm_Command_Information.Instance.AddCommands(AdminClient.GetEMSCommands(), AdminClient); lvMacomberMapServers.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); } else { MM_Administrator_Types Proxy = MMServerConnections[TargetUri]; if (Proxy.State == CommunicationState.Faulted || Proxy.State == CommunicationState.Closing || Proxy.State == CommunicationState.Closed) { MMServerConnections[TargetUri] = CreateProxy(TargetUri.ToString().Replace("MacomberMapWCFService", "MacomberMapAdministratorInterface")); for (int a = 4; a < lvMacomberMapServers.Items.Count; a++) { lvMacomberMapServers.Items[a].SubItems[MMServers[TargetUri].Index].Tag = DateTime.Now; } } lvMacomberMapServers.Items[0].SubItems[TargetCol.Index].Text = splStr.Length == 5 ? "(null)" : splStr[5]; lvMacomberMapServers.Items[1].SubItems[TargetCol.Index].Text = splStr[4] + " users"; lvMacomberMapServers.Items[2].SubItems[TargetCol.Index].Text = splStr[1]; } } } catch { } }