Ejemplo n.º 1
0
        /// <summary>
        /// 現在のチャンネルとPeerCastの状態からHostパケットを作ります
        /// </summary>
        /// <returns>作ったPCP_HOSTパケット</returns>
        public virtual Atom CreateHostPacket()
        {
            var host = new AtomCollection();

            host.SetHostChannelID(Channel.ChannelID);
            host.SetHostSessionID(PeerCast.SessionID);
            var globalendpoint =
                PeerCast.GetGlobalEndPoint(
                    RemoteEndPoint.AddressFamily,
                    OutputStreamType.Relay);

            if (globalendpoint != null)
            {
                host.AddHostIP(globalendpoint.Address);
                host.AddHostPort(globalendpoint.Port);
            }
            var localendpoint =
                PeerCast.GetLocalEndPoint(
                    RemoteEndPoint.AddressFamily,
                    OutputStreamType.Relay);

            if (localendpoint != null)
            {
                host.AddHostIP(localendpoint.Address);
                host.AddHostPort(localendpoint.Port);
            }
            host.SetHostNumListeners(Channel.LocalDirects);
            host.SetHostNumRelays(Channel.LocalRelays);
            host.SetHostUptime(Channel.Uptime);
            if (Channel.Contents.Count > 0)
            {
                host.SetHostOldPos((uint)(Channel.Contents.Oldest.Position & 0xFFFFFFFFU));
                host.SetHostNewPos((uint)(Channel.Contents.Newest.Position & 0xFFFFFFFFU));
            }
            host.SetHostVersion(PCP_VERSION);
            host.SetHostVersionVP(PCP_VERSION_VP);
            host.SetHostFlags1(
                (PeerCast.AccessController.IsChannelRelayable(Channel) ? PCPHostFlags1.Relay : 0) |
                (PeerCast.AccessController.IsChannelPlayable(Channel) ? PCPHostFlags1.Direct : 0) |
                ((!PeerCast.IsFirewalled.HasValue || PeerCast.IsFirewalled.Value) ? PCPHostFlags1.Firewalled : 0) |
                (RecvRate > 0 ? PCPHostFlags1.Receiving : 0));
            host.SetHostUphostIP(RemoteEndPoint.Address);
            host.SetHostUphostPort(RemoteEndPoint.Port);
            return(new Atom(Atom.PCP_HOST, host));
        }
Ejemplo n.º 2
0
        private void PostHostInfo(AtomCollection parent, Channel channel, bool playing)
        {
            var host     = channel.SelfNode;
            var hostinfo = new AtomCollection();

            hostinfo.SetHostChannelID(channel.ChannelID);
            hostinfo.SetHostSessionID(PeerCast.SessionID);
            var globalendpoint = host.GlobalEndPoint;

            if (globalendpoint != null)
            {
                hostinfo.AddHostIP(globalendpoint.Address);
                hostinfo.AddHostPort(globalendpoint.Port);
            }
            var localendpoint = host.LocalEndPoint;

            if (localendpoint != null)
            {
                hostinfo.AddHostIP(localendpoint.Address);
                hostinfo.AddHostPort(localendpoint.Port);
            }
            hostinfo.SetHostNumListeners(channel.TotalDirects);
            hostinfo.SetHostNumRelays(channel.TotalRelays);
            hostinfo.SetHostUptime(channel.Uptime);
            if (channel.Contents.Count > 0)
            {
                hostinfo.SetHostOldPos((uint)(channel.Contents.Oldest.Position & 0xFFFFFFFFU));
                hostinfo.SetHostNewPos((uint)(channel.Contents.Newest.Position & 0xFFFFFFFFU));
            }
            hostinfo.SetHostVersion(PCP_VERSION);
            hostinfo.SetHostVersionVP(PCP_VERSION_VP);
            hostinfo.SetHostFlags1(
                (PeerCast.AccessController.IsChannelRelayable(channel) ? PCPHostFlags1.Relay : 0) |
                (PeerCast.AccessController.IsChannelPlayable(channel) ? PCPHostFlags1.Direct : 0) |
                ((!PeerCast.IsFirewalled.HasValue || PeerCast.IsFirewalled.Value) ? PCPHostFlags1.Firewalled : 0) |
                PCPHostFlags1.Tracker |
                (playing ? PCPHostFlags1.Receiving : PCPHostFlags1.None));
            parent.SetHost(hostinfo);
        }
Ejemplo n.º 3
0
 private void PostHostInfo(AtomCollection parent, Channel channel, bool playing)
 {
     var host = channel.SelfNode;
       var hostinfo = new AtomCollection();
       hostinfo.SetHostChannelID(channel.ChannelID);
       hostinfo.SetHostSessionID(PeerCast.SessionID);
       var globalendpoint = host.GlobalEndPoint;
       if (globalendpoint!=null) {
     hostinfo.AddHostIP(globalendpoint.Address);
     hostinfo.AddHostPort(globalendpoint.Port);
       }
       var localendpoint = host.LocalEndPoint;
       if (localendpoint!=null) {
     hostinfo.AddHostIP(localendpoint.Address);
     hostinfo.AddHostPort(localendpoint.Port);
       }
       hostinfo.SetHostNumListeners(channel.TotalDirects);
       hostinfo.SetHostNumRelays(channel.TotalRelays);
       hostinfo.SetHostUptime(channel.Uptime);
       if (channel.Contents.Count > 0) {
     hostinfo.SetHostOldPos((uint)(channel.Contents.Oldest.Position & 0xFFFFFFFFU));
     hostinfo.SetHostNewPos((uint)(channel.Contents.Newest.Position & 0xFFFFFFFFU));
       }
       hostinfo.SetHostVersion(PCP_VERSION);
       hostinfo.SetHostVersionVP(PCP_VERSION_VP);
       hostinfo.SetHostFlags1(
     (PeerCast.AccessController.IsChannelRelayable(channel) ? PCPHostFlags1.Relay : 0) |
     (PeerCast.AccessController.IsChannelPlayable(channel) ? PCPHostFlags1.Direct : 0) |
     ((!PeerCast.IsFirewalled.HasValue || PeerCast.IsFirewalled.Value) ? PCPHostFlags1.Firewalled : 0) |
     PCPHostFlags1.Tracker |
     (playing ? PCPHostFlags1.Receiving : PCPHostFlags1.None));
       parent.SetHost(hostinfo);
 }