本文整理汇总了C#中AtomCollection.SetHostNewPos方法的典型用法代码示例。如果您正苦于以下问题:C# AtomCollection.SetHostNewPos方法的具体用法?C# AtomCollection.SetHostNewPos怎么用?C# AtomCollection.SetHostNewPos使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AtomCollection
的用法示例。
在下文中一共展示了AtomCollection.SetHostNewPos方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: PostHostInfo
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));
}
PCPVersion.SetHostVersion(hostinfo);
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);
}
示例2: CreateHostPacket
/// <summary>
/// 現在のチャンネルとPeerCastの状態からHostパケットを作ります
/// </summary>
/// <returns>作ったPCP_HOSTパケット</returns>
private 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));
}
PCPVersion.SetHostVersion(host);
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);
}
示例3: PostHostInfo
private void PostHostInfo(AtomCollection parent, Channel channel, bool playing)
{
var hostinfo = new AtomCollection();
hostinfo.SetHostChannelID(channel.ChannelID);
hostinfo.SetHostSessionID(PeerCast.SessionID);
var globalendpoint = PeerCast.GetGlobalEndPoint(AddressFamily.InterNetwork, OutputStreamType.Relay);
if (globalendpoint!=null) {
hostinfo.AddHostIP(globalendpoint.Address);
hostinfo.AddHostPort(globalendpoint.Port);
}
var localendpoint = PeerCast.GetLocalEndPoint(AddressFamily.InterNetwork, OutputStreamType.Relay);
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));
}
PCPVersion.SetHostVersion(hostinfo);
var relayable = PeerCast.AccessController.IsChannelRelayable(channel);
var playable = PeerCast.AccessController.IsChannelPlayable(channel) && PeerCast.FindListener(remoteEndPoint.Address, OutputStreamType.Play)!=null;
var firewalled = !PeerCast.IsFirewalled.HasValue || PeerCast.IsFirewalled.Value || PeerCast.FindListener(remoteEndPoint.Address, OutputStreamType.Relay)==null;
hostinfo.SetHostFlags1(
(relayable ? PCPHostFlags1.Relay : 0) |
(playable ? PCPHostFlags1.Direct : 0) |
(firewalled ? PCPHostFlags1.Firewalled : 0) |
PCPHostFlags1.Tracker |
(playing ? PCPHostFlags1.Receiving : PCPHostFlags1.None));
parent.SetHost(hostinfo);
}