private bool BuildBackups()
{
lock(backupMutex)
{
if(!disposed && Backup && backups.Count < BackupPoolSize)
{
List<Uri> connectList = ConnectList;
foreach(BackupTransport bt in backups)
{
if(bt.Disposed)
{
backups.Remove(bt);
}
}
foreach(Uri uri in connectList)
{
if(ConnectedTransportURI != null && !ConnectedTransportURI.Equals(uri))
{
try
{
BackupTransport bt = new BackupTransport(this)
{
Uri = uri
};
if(!backups.Contains(bt))
{
ITransport t = TransportFactory.CompositeConnect(uri);
t.Command = bt.OnCommand;
t.Exception = bt.OnException;
t.Start();
bt.Transport = t;
backups.Add(bt);
}
}
catch(Exception e)
{
Tracer.DebugFormat("Failed to build backup: {0}", e.Message);
}
}
if(backups.Count == BackupPoolSize)
{
break;
}
}
}
}
return false;
}