package com.hwlcn.ldap.ldap.sdk;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
import com.hwlcn.ldap.util.Debug;
final class ParallelPoolConnectorTask
implements Runnable
{
private final AtomicReference<LDAPException> firstException;
private final boolean throwOnConnectFailure;
private final LDAPConnectionPool pool;
private final List<LDAPConnection> connList;
ParallelPoolConnectorTask(final LDAPConnectionPool pool,
final List<LDAPConnection> connList,
final AtomicReference<LDAPException> firstException,
final boolean throwOnConnectFailure)
{
this.pool = pool;
this.connList = connList;
this.firstException = firstException;
this.throwOnConnectFailure = throwOnConnectFailure;
}
public void run()
{
try
{
if (throwOnConnectFailure && (firstException.get() != null))
{
return;
}
connList.add(pool.createConnection());
}
catch (final LDAPException le)
{
Debug.debugException(le);
if (throwOnConnectFailure)
{
firstException.compareAndSet(null, le);
}
}
}
}