|
|
|
|
@ -42,7 +42,7 @@ namespace GBase.DataHandling.Pool |
|
|
|
|
if (_pool.All(i => i.InUse) && _pool.Count == _availableDataHandlers) //no free dataHandlers available |
|
|
|
|
return await WaitForDataHandler(requester, cancellationToken); |
|
|
|
|
else if (_pool.All(i => i.InUse)) //every existing dataHandler is used -> create a new one |
|
|
|
|
return await CreateDataHandler(overwrite, cancellationToken); |
|
|
|
|
return CreateDataHandler(overwrite); |
|
|
|
|
else //there are unused dataHandlers existing |
|
|
|
|
return GetDataHandler(); |
|
|
|
|
} |
|
|
|
|
@ -72,10 +72,10 @@ namespace GBase.DataHandling.Pool |
|
|
|
|
return dataHandler; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private async Task<IDataHandler> CreateDataHandler(bool overwrite, CancellationToken cancellationToken) |
|
|
|
|
private IDataHandler CreateDataHandler(bool overwrite) |
|
|
|
|
{ |
|
|
|
|
IPoolItem<IDataHandler> item = _poolItemFactory.Create(_dataHandlerFactory.Create()); |
|
|
|
|
await item.Item.Init(overwrite, cancellationToken); |
|
|
|
|
item.Item.Init(overwrite); |
|
|
|
|
_pool.Add(item); |
|
|
|
|
|
|
|
|
|
item.InUse = true; |
|
|
|
|
@ -96,11 +96,6 @@ namespace GBase.DataHandling.Pool |
|
|
|
|
{ |
|
|
|
|
await Task.Delay(1000); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
foreach (var dataHandler in _pool.Select(i => i.Item)) |
|
|
|
|
{ |
|
|
|
|
await dataHandler.DisposeAsync(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |