public void UpdateURIs(bool rebalance, Uri[] updatedURIs)
{
if(IsUpdateURIsSupported)
{
List<Uri> copy = new List<Uri>(this.updated);
List<Uri> added = new List<Uri>();
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(copy.Remove(uri) == false)
{
added.Add(uri);
}
}
lock(reconnectMutex)
{
this.updated.Clear();
this.updated.AddRange(added);
foreach(Uri uri in copy)
{
this.uris.Remove(uri);
}
this.Add(rebalance, added.ToArray());
}
}
}
}