Exemplo n.º 1
0
        /// <summary>
        /// 接続先を指定してチャンネルのリレーを開始します。
        /// URIから接続プロトコルも判別します
        /// </summary>
        /// <param name="channel_id">リレーするチャンネルID</param>
        /// <param name="tracker">接続起点およびプロトコル</param>
        /// <returns>Channelのインスタンス</returns>
        public Channel RelayChannel(Guid channel_id, Uri tracker)
        {
            logger.Debug("Requesting channel {0} from {1}", channel_id.ToString("N"), tracker);
            var channel = new RelayChannel(this, GetNetworkTypeFromUri(tracker), channel_id);

            channel.Start(tracker);
            ReplaceCollection(ref channels, orig => orig.Add(channel));
            DispatchMonitorEvent(mon => mon.OnChannelChanged(PeerCastChannelAction.Added, channel));
            return(channel);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 接続先を指定してチャンネルのリレーを開始します。
        /// URIから接続プロトコルも判別します
        /// </summary>
        /// <param name="channel_id">リレーするチャンネルID</param>
        /// <param name="tracker">接続起点およびプロトコル</param>
        /// <returns>Channelのインスタンス</returns>
        public Channel RelayChannel(Guid channel_id, Uri tracker)
        {
            logger.Debug("Requesting channel {0} from {1}", channel_id.ToString("N"), tracker);
            var channel = new RelayChannel(this, GetNetworkTypeFromUri(tracker), channel_id);

            channel.Start(tracker);
            ReplaceCollection(ref channels, orig => {
                var new_collection = new List <Channel>(orig);
                new_collection.Add(channel);
                return(new_collection);
            });
            if (ChannelAdded != null)
            {
                ChannelAdded(this, new ChannelChangedEventArgs(channel));
            }
            return(channel);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 接続先を指定してチャンネルのリレーを開始します。
        /// URIから接続プロトコルも判別します
        /// </summary>
        /// <param name="channel_id">リレーするチャンネルID</param>
        /// <param name="tracker">接続起点およびプロトコル</param>
        /// <returns>Channelのインスタンス</returns>
        public Channel RelayChannel(Guid channel_id, Uri tracker)
        {
            logger.Debug("Requesting channel {0} from {1}", channel_id.ToString("N"), tracker);
            NetworkType networkType;

            if (tracker.Scheme == "giv")
            {
                // ホスト名だとIPバージョンが決定できないが、とりあえず動くようにする。
                networkType = NetworkType.IPv4;
            }
            else
            {
                networkType = GetNetworkTypeFromUri(tracker);
            }
            var channel = new RelayChannel(this, networkType, channel_id);

            channel.Start(tracker);
            ReplaceCollection(ref channels, orig => orig.Add(channel));
            DispatchMonitorEvent(mon => mon.OnChannelChanged(PeerCastChannelAction.Added, channel));
            return(channel);
        }
Exemplo n.º 4
0
 /// <summary>
 /// 接続先を指定してチャンネルのリレーを開始します。
 /// URIから接続プロトコルも判別します
 /// </summary>
 /// <param name="channel_id">リレーするチャンネルID</param>
 /// <param name="tracker">接続起点およびプロトコル</param>
 /// <returns>Channelのインスタンス</returns>
 public Channel RelayChannel(Guid channel_id, Uri tracker)
 {
     logger.Debug("Requesting channel {0} from {1}", channel_id.ToString("N"), tracker);
       var channel = new RelayChannel(this, channel_id);
       Utils.ReplaceCollection(ref channels, orig => {
     var new_collection = new List<Channel>(orig);
     new_collection.Add(channel);
     return new_collection;
       });
       channel.Start(tracker);
       if (ChannelAdded!=null) ChannelAdded(this, new ChannelChangedEventArgs(channel));
       return channel;
 }