public Channel RequestChannel(Guid channel_id, Uri tracker_uri)
        {
            var channel = peerCast.RequestChannel(channel_id, tracker_uri, true);

            this.channel = channel;
            if (channel != null && channel.IsPlayable(this))
            {
                channel.AddOutputStream(this);
                return(channel);
            }
            else
            {
                return(null);
            }
        }
Example #2
0
        /// <summary>
        /// 出力ストリームを作成します
        /// </summary>
        /// <param name="input_stream">元になる受信ストリーム</param>
        /// <param name="output_stream">元になる送信ストリーム</param>
        /// <param name="remote_endpoint">接続先。無ければnull</param>
        /// <param name="channel_id">所属するチャンネルのチャンネルID</param>
        /// <param name="header">クライアントからのリクエスト</param>
        /// <returns>
        /// 作成できた場合はHTTPOutputStreamのインスタンス。
        /// headerが正しく解析できなかった場合はnull
        /// </returns>
        public override IOutputStream Create(
            Stream input_stream,
            Stream output_stream,
            EndPoint remote_endpoint,
            Guid channel_id,
            byte[] header)
        {
            var request = ParseRequest(header);

            if (request != null)
            {
                Channel channel = null;
                Uri     tracker = CreateTrackerUri(channel_id, request.Uri);
                channel = PeerCast.RequestChannel(channel_id, tracker, true);
                return(new HTTPOutputStream(PeerCast, input_stream, output_stream, remote_endpoint, channel, request));
            }
            else
            {
                return(null);
            }
        }