in src/Transport/Failover/FailoverTransport.cs [1373:1423]
public void UpdateURIs(bool rebalance, Uri[] updatedURIs)
{
if(IsUpdateURIsSupported)
{
Dictionary<Uri, bool> copy = new Dictionary<Uri, bool>();
foreach(Uri uri in updated)
{
if(uri != null)
{
copy[uri] = true;
}
}
updated.Clear();
if(updatedURIs != null && updatedURIs.Length > 0)
{
Dictionary<Uri, bool> uriSet = new Dictionary<Uri, bool>();
for(int i = 0; i < updatedURIs.Length; i++)
{
Uri uri = updatedURIs[i];
if(uri != null)
{
uriSet[uri] = true;
}
}
foreach(Uri uri in uriSet.Keys)
{
if(!updated.Contains(uri))
{
updated.Add(uri);
}
}
if (Tracer.IsDebugEnabled)
{
Tracer.DebugFormat("Updated URIs list {0}", PrintableUriList(updated));
}
if (!(copy.Count == 0 && updated.Count == 0) && !copy.Keys.Equals(updated))
{
BuildBackups();
lock(reconnectMutex)
{
Reconnect(rebalance);
}
}
}
}
}