88
99namespace Ydb . Sdk . Ado . Session ;
1010
11- internal class PoolingSession : IPoolingSession
11+ internal class PoolingSession : PoolingSessionBase < PoolingSession >
1212{
1313 private const string SessionBalancer = "session-balancer" ;
1414
1515 private static readonly TimeSpan DeleteSessionTimeout = TimeSpan . FromSeconds ( 5 ) ;
1616 private static readonly CreateSessionRequest CreateSessionRequest = new ( ) ;
1717
18- private readonly PoolingSessionSource _poolingSessionSource ;
1918 private readonly ILogger < PoolingSession > _logger ;
19+ private readonly bool _disableServerBalancer ;
20+
2021 private readonly CancellationTokenSource _attachStreamLifecycleCts = new ( ) ;
2122
2223 private volatile bool _isBroken = true ;
2324 private volatile bool _isBadSession ;
2425
25- private readonly bool _disableServerBalancer ;
26-
2726 private string SessionId { get ; set ; } = string . Empty ;
2827 private long NodeId { get ; set ; }
2928
30- public IDriver Driver { get ; }
31- public bool IsBroken => _isBroken ;
29+ public override IDriver Driver { get ; }
30+ public override bool IsBroken => _isBroken ;
3231
3332 internal PoolingSession (
3433 IDriver driver ,
35- PoolingSessionSource poolingSessionSource ,
34+ PoolingSessionSource < PoolingSession > poolingSessionSource ,
3635 bool disableServerBalancer ,
3736 ILogger < PoolingSession > logger
38- )
37+ ) : base ( poolingSessionSource )
3938 {
40- _poolingSessionSource = poolingSessionSource ;
4139 _disableServerBalancer = disableServerBalancer ;
4240 _logger = logger ;
4341 Driver = driver ;
4442 }
4543
46- public ValueTask < IServerStream < ExecuteQueryResponsePart > > ExecuteQuery (
44+ public override ValueTask < IServerStream < ExecuteQueryResponsePart > > ExecuteQuery (
4745 string query ,
4846 Dictionary < string , YdbValue > parameters ,
4947 GrpcRequestSettings settings ,
@@ -65,10 +63,7 @@ public ValueTask<IServerStream<ExecuteQueryResponsePart>> ExecuteQuery(
6563 return Driver . ServerStreamCall ( QueryService . ExecuteQueryMethod , request , settings ) ;
6664 }
6765
68- public async Task CommitTransaction (
69- string txId ,
70- CancellationToken cancellationToken = default
71- )
66+ public override async Task CommitTransaction ( string txId , CancellationToken cancellationToken = default )
7267 {
7368 var response = await Driver . UnaryCall (
7469 QueryService . CommitTransactionMethod ,
@@ -82,10 +77,7 @@ public async Task CommitTransaction(
8277 }
8378 }
8479
85- public async Task RollbackTransaction (
86- string txId ,
87- CancellationToken cancellationToken = default
88- )
80+ public override async Task RollbackTransaction ( string txId , CancellationToken cancellationToken = default )
8981 {
9082 var response = await Driver . UnaryCall (
9183 QueryService . RollbackTransactionMethod ,
@@ -99,7 +91,7 @@ public async Task RollbackTransaction(
9991 }
10092 }
10193
102- public void OnNotSuccessStatusCode ( StatusCode statusCode )
94+ public override void OnNotSuccessStatusCode ( StatusCode statusCode )
10395 {
10496 _isBadSession = _isBadSession || statusCode is StatusCode . BadSession ;
10597
@@ -116,7 +108,7 @@ StatusCode.ClientTransportTimeout or
116108 }
117109 }
118110
119- public async Task Open ( CancellationToken cancellationToken )
111+ internal override async Task Open ( CancellationToken cancellationToken )
120112 {
121113 var requestSettings = new GrpcRequestSettings { CancellationToken = cancellationToken } ;
122114
@@ -217,7 +209,7 @@ public async Task Open(CancellationToken cancellationToken)
217209 await completeTask . Task ;
218210 }
219211
220- public async Task DeleteSession ( )
212+ internal override async Task DeleteSession ( )
221213 {
222214 try
223215 {
@@ -248,6 +240,4 @@ public async Task DeleteSession()
248240 SessionId , NodeId ) ;
249241 }
250242 }
251-
252- public void Close ( ) => _poolingSessionSource . Return ( this ) ;
253243}
0 commit comments