/// <summary>
        /// Print out a summary of the current state of the application
        /// </summary>
        public void DoList()
        {
            this.mainPage.Output("-------------------Locally Owned Names-------------------");
            this.mainPage.Output("   " + this.busAtt.UniqueName);
            lock (this.requestedNames)
            {
                foreach (string s in this.requestedNames)
                {
                    this.mainPage.Output("   " + s);
                }
            }

            this.mainPage.Output("-------------------Outgoing Advertisments----------------");
            lock (this.advertisedNames)
            {
                foreach (string s in this.advertisedNames)
                {
                    this.mainPage.Output("   " + s);
                }
            }

            this.mainPage.Output("-------------------Discovered Names----------------------");
            lock (this.discoverySet)
            {
                foreach (DiscoveryInfo d in this.discoverySet)
                {
                    this.mainPage.Output("   Peer: " + d.PeerName + " (transport=" + d.Transport.ToString() + ")");
                }
            }

            this.mainPage.Output("-------------------Bound Session Ports-------------------");
            lock (this.sessionPortMap)
            {
                foreach (KeyValuePair <uint, SessionPortInfo> pair in this.sessionPortMap)
                {
                    SessionOpts opts   = pair.Value.Opts;
                    string      output = string.Format(
                        "   Port: {0}, traffic={1}, isMultipoint={2}, proximity={3}, transports={4}",
                        pair.Key,
                        opts.Traffic,
                        opts.IsMultipoint,
                        opts.Proximity,
                        opts.TransportMask);
                    this.mainPage.Output(output);
                }
            }

            this.mainPage.Output("-------------------Active sessions-----------------------");
            lock (this.sessionMap)
            {
                uint count = 0;
                foreach (KeyValuePair <uint, SessionInfo> pair in this.sessionMap)
                {
                    SessionInfo     info     = pair.Value;
                    SessionPortInfo sessInfo = info.PortInfo;
                    SessionOpts     opts     = sessInfo.Opts;
                    string          details  = string.Format(
                        "   #{0}: SessionId: {1}, Creator: {2}, Port: {3}, traffic={4}, isMultipoint={5}, proximity={6}, transport={7}",
                        count,
                        pair.Key,
                        sessInfo.SessionHost,
                        sessInfo.SessionPort,
                        opts.Traffic,
                        opts.IsMultipoint,
                        opts.Proximity,
                        opts.TransportMask);
                    this.mainPage.Output(details);
                    if (info.PeerNames.Count > 0)
                    {
                        string peers = "     Peers: ";
                        foreach (string s in info.PeerNames)
                        {
                            peers += s + ", ";
                        }

                        this.mainPage.Output(peers);
                    }

                    count++;
                }
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="SessionInfo"/> class
 /// </summary>
 /// <param name="sId">Session id for this session</param>
 /// <param name="prtInfo">Port which this session uses</param>
 public SessionInfo(uint sId, SessionPortInfo prtInfo)
 {
     this.SessionId = sId;
     this.PortInfo  = prtInfo;
     this.PeerNames = new SortedSet <string>();
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="SessionInfo"/> class
 /// </summary>
 /// <param name="sId">Session id for this session</param>
 /// <param name="prtInfo">Port which this session uses</param>
 public SessionInfo(uint sId, SessionPortInfo prtInfo)
 {
     this.SessionId = sId;
     this.PortInfo = prtInfo;
     this.PeerNames = new SortedSet<string>();
 }