37 lines
1.0 KiB
C#
37 lines
1.0 KiB
C#
|
|
using JiShe.CollectBus.IoTDBProvider.Interface;
|
|||
|
|
using Microsoft.Extensions.Options;
|
|||
|
|
using System;
|
|||
|
|
using System.Collections.Concurrent;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Text;
|
|||
|
|
using System.Threading.Tasks;
|
|||
|
|
|
|||
|
|
namespace JiShe.CollectBus.IoTDBProvider.Provider
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 实现带缓存的Session工厂
|
|||
|
|
/// </summary>
|
|||
|
|
public class IoTDBSessionFactory : IIoTDBSessionFactory
|
|||
|
|
{
|
|||
|
|
private readonly IoTDBOptions _options;
|
|||
|
|
private readonly ConcurrentDictionary<bool, IIoTDBSessionPool> _pools = new();
|
|||
|
|
|
|||
|
|
public IoTDBSessionFactory(IOptions<IoTDBOptions> options)
|
|||
|
|
{
|
|||
|
|
_options = options.Value;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public IIoTDBSessionPool GetSessionPool(bool useTableSession)
|
|||
|
|
{
|
|||
|
|
return _pools.GetOrAdd(useTableSession, key =>
|
|||
|
|
{
|
|||
|
|
return key
|
|||
|
|
? new TableSessionPoolAdapter(_options)
|
|||
|
|
: new SessionPoolAdapter(_options);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|