static MsmqAddress GetIndependentAddressForQueue(MessageQueue q)
{
var arr = q.FormatName.Split('\\');
var queueName = arr[arr.Length - 1];
var directPrefixIndex = arr[0].IndexOf(DIRECTPREFIX);
if (directPrefixIndex >= 0)
{
return new MsmqAddress(queueName, arr[0].Substring(directPrefixIndex + DIRECTPREFIX.Length));
}
var tcpPrefixIndex = arr[0].IndexOf(DIRECTPREFIX_TCP);
if (tcpPrefixIndex >= 0)
{
return new MsmqAddress(queueName, arr[0].Substring(tcpPrefixIndex + DIRECTPREFIX_TCP.Length));
}
try
{
// the pessimistic approach failed, try the optimistic approach
arr = q.QueueName.Split('\\');
queueName = arr[arr.Length - 1];
return new MsmqAddress(queueName, q.MachineName);
}
catch
{
throw new Exception($"Could not translate format name to independent name: {q.FormatName}");
}
}