Esempio n. 1
0
        /// <summary>
        /// Standard run-method. Call this for the 'rdvstatus'-action.
        /// </summary>
        /// <param name="args">The commandline-parameters.</param>
        public override void Run(string[] args)
        {
            for (int i = 1; i < args.Length; i++)
            {
                switch (args[i])
                {
                case "-h":
                    Help();
                    return;

                default:
                    textWriter.WriteLine("Error: invalid parameter" + args[i]);
                    break;
                }
            }

            RdvConfig config = rdvSvc.Configuration;

            textWriter.Write("Rendezvous service config : ");

            switch (config)
            {
            case RdvConfig.adhoc:
                textWriter.WriteLine("ad-hoc");
                break;

            case RdvConfig.edge:
                textWriter.WriteLine("client");
                break;

            case RdvConfig.rendezvous:
                textWriter.WriteLine("rendezvous");
                break;

            default:
                textWriter.WriteLine("[unknown]");
                break;
            }

            long auto_interval = rdvSvc.AutoInterval;

            textWriter.Write("Auto-rdv check interval : ");

            if (auto_interval >= 0)
            {
                textWriter.WriteLine(auto_interval + "ms");
            }
            else
            {
                textWriter.WriteLine("[disabled]");
            }

            uint currentTime = (uint)(apr_time_now() / 1000);

            PeerView pv = rdvSvc.PeerView;

            Peer selfPVE = null;
            Peer down    = null;
            Peer up      = null;

            try
            {
                selfPVE = pv.SelfPeer;
                down    = pv.DownPeer;
                up      = pv.UpPeer;
            }
            catch (JxtaException) { }

            List <Peer> peers = null;

            /* Get the list of peers */
            try
            {
                peers = pv.LocalView;
            }
            catch (Exception)
            {
                textWriter.WriteLine("Failed getting peers");
                return;
            }

            textWriter.WriteLine("\nPeerview:");

            foreach (Peer peer in peers)
            {
                string name = "(unknown)";

                if (peer.Advertisement != null)
                {
                    name = peer.Advertisement.Name;
                }

                textWriter.Write(peer.ID + "/" + name + "\t");

                uint expires = rdvSvc.GetExpires(peer);

                if (expires >= currentTime)
                {
                    expires -= currentTime;

                    textWriter.WriteLine(expires + "ms");
                }
                else
                {
                    textWriter.WriteLine("(expired)");
                }

                if (down == peer)
                {
                    textWriter.Write("\t[DOWN]");
                }

                if (selfPVE == peer)
                {
                    textWriter.Write("\t[SELF]");
                }

                if (up == peer)
                {
                    textWriter.Write("\t[UP]");
                }
                textWriter.Write("\n");
            }


            textWriter.WriteLine("\nConnections:");

            peers = rdvSvc.ConnectedPeers;

            foreach (Peer peer in peers)
            {
                textWriter.WriteLine("Name: [" + peer.Advertisement.Name + "]");
                textWriter.WriteLine("PeerID: [" + peer.ID + "]\n");

                uint expires = rdvSvc.GetExpires(peer);

                uint hours   = 0;
                uint minutes = 0;
                uint seconds = 0;


                if (expires < currentTime)
                {
                    expires = 0;
                }
                else
                {
                    expires -= currentTime;
                }

                seconds = expires / (1000);

                hours    = seconds / (60 * 60);
                seconds -= hours * 60 * 60;

                minutes  = seconds / 60;
                seconds -= minutes * 60;


                textWriter.WriteLine("Lease expires in " + hours + " hour(s) "
                                     + minutes + " minute(s) " + seconds + " second(s)");
            }

            textWriter.WriteLine("-----------------------------------------------------------------------------");
        }
Esempio n. 2
0
 private static extern UInt32 jxta_rdv_service_set_config(IntPtr self, RdvConfig config);