private Task OpenAsyncInternal(CancellationToken cancellationToken)
{
//check state. If closed, a new OpenTask can be created;
if(State == ConnectionState.Closed)
{
lock(_syncLock)
{
if(State == ConnectionState.Closed)
{
//get a logger
var logger = LoggerManager.GetLogger("CqlSharp.CqlConnection.Open");
//if cluster is already open, use fastpath
if(Cluster.IsOpen)
{
CompleteOpen(logger);
_openTask = TaskCache.CompletedTask;
}
else
_openTask = OpenAsyncInternal2(logger, cancellationToken);
}
}
}
return _openTask;
}