private async Task<Channel> RequestChannel(
StreamName stream_name,
CancellationToken cancel_token)
{
Guid channel_id;
if (!Guid.TryParse(stream_name.Name, out channel_id)) {
return null;
}
var tracker_uri =
stream_name.Parameters.ContainsKey("tip") ?
OutputStreamBase.CreateTrackerUri(channel_id, stream_name.Parameters["tip"]) :
null;
var channel = owner.RequestChannel(channel_id, tracker_uri);
if (channel==null) return null;
var trying = 0;
while (
trying++<10 &&
(channel.ChannelInfo==null ||
String.IsNullOrEmpty(channel.ChannelInfo.ContentType))){
await Task.Delay(1000, cancel_token);
}
if (channel.ChannelInfo==null ||
String.IsNullOrEmpty(channel.ChannelInfo.ContentType) ||
channel.ChannelInfo.ContentType!="FLV") {
return null;
}
return channel;
}