PeerCastStation.GUI.MainForm.AddRelayTreeNode C# (CSharp) Method

AddRelayTreeNode() private method

private AddRelayTreeNode ( TreeNodeCollection tree_nodes, IEnumerable nodes, HashSet added ) : void
tree_nodes TreeNodeCollection
nodes IEnumerable
added HashSet
return void
    private void AddRelayTreeNode(
      TreeNodeCollection tree_nodes,
      IEnumerable<HostTreeNode> nodes,
      HashSet<Guid> added)
    {
      foreach (var node in nodes) {
        if (added.Contains(node.Host.SessionID)) continue;
        added.Add(node.Host.SessionID);
        var endpoint = (node.Host.GlobalEndPoint!=null && node.Host.GlobalEndPoint.Port!=0) ? node.Host.GlobalEndPoint : node.Host.LocalEndPoint;
        string version = "";
        var pcp = node.Host.Extra.GetHostVersion();
        if (pcp.HasValue) {
          version += pcp.Value.ToString();
        }
        var vp = node.Host.Extra.GetHostVersionVP();
        if (vp.HasValue) {
          version += " VP" + vp.Value.ToString();
        }
        var ex    = node.Host.Extra.GetHostVersionEXPrefix();
        var exnum = node.Host.Extra.GetHostVersionEXNumber();
        if (ex!=null && exnum.HasValue) {
          try {
            version += " " + System.Text.Encoding.UTF8.GetString(ex) + exnum.ToString();
          }
          catch (ArgumentException) {
            //ignore
          }
        }
        var nodeinfo = String.Format(
          "{0} ({1}/{2}) {3}{4}{5} {6}",
          endpoint,
          node.Host.DirectCount,
          node.Host.RelayCount,
          node.Host.IsFirewalled ? "0" : "",
          node.Host.IsRelayFull  ? "-" : "",
          node.Host.IsReceiving  ? "" : "B",
          version);
        var tree_node = tree_nodes.Add(nodeinfo);
        AddRelayTreeNode(tree_node.Nodes, node.Children, added);
      }
    }