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); } }
/// <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); } }