private IChannelInfo GetChannelInfoHelper()
{
ChannelInfo oldChannelInfo = channelInfo as ChannelInfo;
if (oldChannelInfo == null)
return channelInfo;
Object[] oldChannelData = oldChannelInfo.ChannelData;
if (oldChannelData == null)
return oldChannelInfo;
String[] bashInfo = (String[])CallContext.GetData("__bashChannelUrl");
if (bashInfo == null)
return oldChannelInfo;
String urlToBash = bashInfo[0];
String replacementUrl = bashInfo[1];
ChannelInfo newChInfo = new ChannelInfo();
newChInfo.ChannelData = new Object[oldChannelData.Length];
for (int co = 0; co < oldChannelData.Length; co++)
{
newChInfo.ChannelData[co] = oldChannelData[co];
ChannelDataStore channelDataStore = newChInfo.ChannelData[co] as ChannelDataStore;
if (channelDataStore != null)
{
String[] urls = channelDataStore.ChannelUris;
if ((urls != null) && (urls.Length == 1) && urls[0].Equals(urlToBash))
{
ChannelDataStore newChannelDataStore = channelDataStore.InternalShallowCopy();
newChannelDataStore.ChannelUris = new String[1];
newChannelDataStore.ChannelUris[0] = replacementUrl;
newChInfo.ChannelData[co] = newChannelDataStore;
}
}
}
return newChInfo;
} // GetChannelInfoHelper