Skip to content

Commit ba9e276

Browse files
author
Oleksandr Poliakov
committed
Pr
1 parent e53816b commit ba9e276

15 files changed

+166
-191
lines changed

src/MongoDB.Driver/ClientSessionHandle.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ namespace MongoDB.Driver
2626
/// A client session handle.
2727
/// </summary>
2828
/// <seealso cref="MongoDB.Driver.IClientSessionHandle" />
29-
internal sealed class ClientSessionHandle : IClientSessionHandle
29+
internal sealed class ClientSessionHandle : IClientSessionHandle, IClientSessionInternal
3030
{
3131
// private fields
3232
private readonly IMongoClient _client;
@@ -97,16 +97,16 @@ public IServerSession ServerSession
9797
public void AbortTransaction(CancellationToken cancellationToken = default)
9898
=> _coreSession.AbortTransaction(cancellationToken);
9999

100-
// TODO: CSOT: Make it public when CSOT will be ready for GA
101-
internal void AbortTransaction(AbortTransactionOptions options, CancellationToken cancellationToken = default)
100+
// TODO: CSOT: Make it public when CSOT will be ready for GA and add default value to cancellationToken parameter.
101+
void IClientSessionInternal.AbortTransaction(AbortTransactionOptions options, CancellationToken cancellationToken)
102102
=> _coreSession.AbortTransaction(options, cancellationToken);
103103

104104
/// <inheritdoc />
105105
public Task AbortTransactionAsync(CancellationToken cancellationToken = default)
106106
=> _coreSession.AbortTransactionAsync(cancellationToken);
107107

108-
// TODO: CSOT: Make it public when CSOT will be ready for GA
109-
internal Task AbortTransactionAsync(AbortTransactionOptions options, CancellationToken cancellationToken = default)
108+
// TODO: CSOT: Make it public when CSOT will be ready for GA and add default value to cancellationToken parameter.
109+
Task IClientSessionInternal.AbortTransactionAsync(AbortTransactionOptions options, CancellationToken cancellationToken)
110110
=> _coreSession.AbortTransactionAsync(options, cancellationToken);
111111

112112
/// <inheritdoc />
@@ -125,16 +125,16 @@ public void AdvanceOperationTime(BsonTimestamp newOperationTime)
125125
public void CommitTransaction(CancellationToken cancellationToken = default)
126126
=> _coreSession.CommitTransaction(cancellationToken);
127127

128-
// TODO: CSOT: Make it public when CSOT will be ready for GA
129-
internal void CommitTransaction(CommitTransactionOptions options, CancellationToken cancellationToken = default)
128+
// TODO: CSOT: Make it public when CSOT will be ready for GA and add default value to cancellationToken parameter.
129+
void IClientSessionInternal.CommitTransaction(CommitTransactionOptions options, CancellationToken cancellationToken)
130130
=> _coreSession.CommitTransaction(options, cancellationToken);
131131

132132
/// <inheritdoc />
133133
public Task CommitTransactionAsync(CancellationToken cancellationToken = default)
134134
=> _coreSession.CommitTransactionAsync(cancellationToken);
135135

136-
// TODO: CSOT: Make it public when CSOT will be ready for GA
137-
internal Task CommitTransactionAsync(CommitTransactionOptions options, CancellationToken cancellationToken = default)
136+
// TODO: CSOT: Make it public when CSOT will be ready for GA and add default value to cancellationToken parameter.
137+
Task IClientSessionInternal.CommitTransactionAsync(CommitTransactionOptions options, CancellationToken cancellationToken)
138138
=> _coreSession.CommitTransactionAsync(options, cancellationToken);
139139

140140
/// <inheritdoc />

src/MongoDB.Driver/Core/Bindings/CoreSession.cs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ namespace MongoDB.Driver.Core.Bindings
2929
/// Represents a session.
3030
/// </summary>
3131
/// <seealso cref="MongoDB.Driver.Core.Bindings.ICoreSession" />
32-
public sealed class CoreSession : ICoreSession
32+
public sealed class CoreSession : ICoreSession, ICoreSessionInternal
3333
{
3434
// private fields
3535
#pragma warning disable CA2213 // Disposable fields should be disposed
@@ -142,10 +142,10 @@ public bool IsInTransaction
142142
// public methods
143143
/// <inheritdoc />
144144
public void AbortTransaction(CancellationToken cancellationToken = default)
145-
=> AbortTransaction(null, cancellationToken);
145+
=> ((ICoreSessionInternal)this).AbortTransaction(null, cancellationToken);
146146

147-
// TODO: CSOT: Make it public when CSOT will be ready for GA
148-
internal void AbortTransaction(AbortTransactionOptions options, CancellationToken cancellationToken = default)
147+
// TODO: CSOT: Make it public when CSOT will be ready for GA and add default value to cancellationToken parameter.
148+
void ICoreSessionInternal.AbortTransaction(AbortTransactionOptions options, CancellationToken cancellationToken)
149149
{
150150
EnsureAbortTransactionCanBeCalled(nameof(AbortTransaction));
151151

@@ -196,10 +196,10 @@ internal void AbortTransaction(AbortTransactionOptions options, CancellationToke
196196

197197
/// <inheritdoc />
198198
public Task AbortTransactionAsync(CancellationToken cancellationToken = default)
199-
=> AbortTransactionAsync(null, cancellationToken);
199+
=> ((ICoreSessionInternal)this).AbortTransactionAsync(null, cancellationToken);
200200

201-
// TODO: CSOT: Make it public when CSOT will be ready for GA
202-
internal async Task AbortTransactionAsync(AbortTransactionOptions options, CancellationToken cancellationToken = default)
201+
// TODO: CSOT: Make it public when CSOT will be ready for GA and add default value to cancellationToken parameter.
202+
async Task ICoreSessionInternal.AbortTransactionAsync(AbortTransactionOptions options, CancellationToken cancellationToken)
203203
{
204204
EnsureAbortTransactionCanBeCalled(nameof(AbortTransaction));
205205

@@ -299,10 +299,10 @@ public long AdvanceTransactionNumber()
299299

300300
/// <inheritdoc />
301301
public void CommitTransaction(CancellationToken cancellationToken = default)
302-
=> CommitTransaction(null, cancellationToken);
302+
=> ((ICoreSessionInternal)this).CommitTransaction(null, cancellationToken);
303303

304-
// TODO: CSOT: Make it public when CSOT will be ready for GA
305-
internal void CommitTransaction(CommitTransactionOptions options, CancellationToken cancellationToken = default)
304+
// TODO: CSOT: Make it public when CSOT will be ready for GA and add default value to cancellationToken parameter.
305+
void ICoreSessionInternal.CommitTransaction(CommitTransactionOptions options, CancellationToken cancellationToken)
306306
{
307307
EnsureCommitTransactionCanBeCalled(nameof(CommitTransaction));
308308

@@ -339,10 +339,10 @@ internal void CommitTransaction(CommitTransactionOptions options, CancellationTo
339339

340340
/// <inheritdoc />
341341
public Task CommitTransactionAsync(CancellationToken cancellationToken = default)
342-
=> CommitTransactionAsync(null, cancellationToken);
342+
=> ((ICoreSessionInternal)this).CommitTransactionAsync(null, cancellationToken);
343343

344-
// TODO: CSOT: Make it public when CSOT will be ready for GA
345-
internal async Task CommitTransactionAsync(CommitTransactionOptions options, CancellationToken cancellationToken = default(CancellationToken))
344+
// TODO: CSOT: Make it public when CSOT will be ready for GA and add default value to cancellationToken parameter.
345+
async Task ICoreSessionInternal.CommitTransactionAsync(CommitTransactionOptions options, CancellationToken cancellationToken)
346346
{
347347
EnsureCommitTransactionCanBeCalled(nameof(CommitTransaction));
348348

src/MongoDB.Driver/Core/Bindings/ICoreSessionExtensions.cs

Lines changed: 5 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
* limitations under the License.
1414
*/
1515

16-
using System;
1716
using System.Threading;
1817
using System.Threading.Tasks;
1918

@@ -22,13 +21,7 @@ namespace MongoDB.Driver.Core.Bindings
2221
// TODO: CSOT: Make it public when CSOT will be ready for GA
2322
internal static class ICoreSessionExtensions
2423
{
25-
// TODO: CSOT: Merge this extension methods in ICoreSession interface on major release
26-
/// <summary>
27-
/// Aborts the transaction.
28-
/// </summary>
29-
/// <param name="session">The session.</param>
30-
/// <param name="options">Abort transaction options.</param>
31-
/// <param name="cancellationToken">The cancellation token.</param>
24+
// TODO: Merge these extension methods in ICoreSession interface on major release
3225
public static void AbortTransaction(this ICoreSession session, AbortTransactionOptions options, CancellationToken cancellationToken = default)
3326
{
3427
if (options == null || session.Options.DefaultTransactionOptions?.Timeout == options.Timeout)
@@ -37,53 +30,19 @@ public static void AbortTransaction(this ICoreSession session, AbortTransactionO
3730
return;
3831
}
3932

40-
if (session is CoreSession coreSession)
41-
{
42-
coreSession.AbortTransaction(options, cancellationToken);
43-
return;
44-
}
45-
46-
if (session is WrappingCoreSession wrappingCoreSession)
47-
{
48-
wrappingCoreSession.AbortTransaction(options, cancellationToken);
49-
return;
50-
}
51-
52-
throw new InvalidOperationException("Cannot apply options on non CoreSession.");
33+
((ICoreSessionInternal)session).AbortTransaction(options, cancellationToken);
5334
}
5435

55-
/// <summary>
56-
/// Aborts the transaction.
57-
/// </summary>
58-
/// <param name="session">The session.</param>
59-
/// <param name="options">Abort transaction options.</param>
60-
/// <param name="cancellationToken">The cancellation token.</param>
6136
public static Task AbortTransactionAsync(this ICoreSession session, AbortTransactionOptions options, CancellationToken cancellationToken = default)
6237
{
6338
if (options == null || session.Options.DefaultTransactionOptions?.Timeout == options.Timeout)
6439
{
6540
return session.AbortTransactionAsync(cancellationToken);
6641
}
6742

68-
if (session is CoreSession coreSession)
69-
{
70-
return coreSession.AbortTransactionAsync(options, cancellationToken);
71-
}
72-
73-
if (session is WrappingCoreSession wrappingCoreSession)
74-
{
75-
return wrappingCoreSession.AbortTransactionAsync(options, cancellationToken);
76-
}
77-
78-
throw new InvalidOperationException("Cannot apply options on non CoreSession.");
43+
return ((ICoreSessionInternal)session).AbortTransactionAsync(options, cancellationToken);
7944
}
8045

81-
/// <summary>
82-
/// Commits the transaction.
83-
/// </summary>
84-
/// <param name="session">The session.</param>
85-
/// <param name="options">Commit transaction options.</param>
86-
/// <param name="cancellationToken">The cancellation token.</param>
8746
public static void CommitTransaction(this ICoreSession session, CommitTransactionOptions options, CancellationToken cancellationToken = default)
8847
{
8948
if (options == null || session.Options.DefaultTransactionOptions?.Timeout == options.Timeout)
@@ -92,46 +51,17 @@ public static void CommitTransaction(this ICoreSession session, CommitTransactio
9251
return;
9352
}
9453

95-
if (session is CoreSession coreSession)
96-
{
97-
coreSession.CommitTransaction(options, cancellationToken);
98-
return;
99-
}
100-
101-
if (session is WrappingCoreSession wrappingCoreSession)
102-
{
103-
wrappingCoreSession.CommitTransaction(options, cancellationToken);
104-
return;
105-
}
106-
107-
throw new InvalidOperationException("Cannot apply options on non CoreSession.");
54+
((ICoreSessionInternal)session).CommitTransaction(options, cancellationToken);
10855
}
10956

110-
/// <summary>
111-
/// Commits the transaction.
112-
/// </summary>
113-
/// <param name="session">The session.</param>
114-
/// <param name="options">Commit transaction options.</param>
115-
/// <param name="cancellationToken">The cancellation token.</param>
11657
public static Task CommitTransactionAsync(this ICoreSession session, CommitTransactionOptions options, CancellationToken cancellationToken = default)
11758
{
11859
if (options == null || session.Options.DefaultTransactionOptions?.Timeout == options.Timeout)
11960
{
12061
return session.CommitTransactionAsync(cancellationToken);
12162
}
12263

123-
if (session is CoreSession coreSession)
124-
{
125-
return coreSession.CommitTransactionAsync(options, cancellationToken);
126-
}
127-
128-
if (session is WrappingCoreSession wrappingCoreSession)
129-
{
130-
return wrappingCoreSession.CommitTransactionAsync(options, cancellationToken);
131-
}
132-
133-
throw new InvalidOperationException("Cannot apply options on non CoreSession.");
64+
return ((ICoreSessionInternal)session).CommitTransactionAsync(options, cancellationToken);
13465
}
13566
}
13667
}
137-
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/* Copyright 2010-present MongoDB Inc.
2+
*
3+
* Licensed under the Apache License, Version 2.0 (the "License");
4+
* you may not use this file except in compliance with the License.
5+
* You may obtain a copy of the License at
6+
*
7+
* http://www.apache.org/licenses/LICENSE-2.0
8+
*
9+
* Unless required by applicable law or agreed to in writing, software
10+
* distributed under the License is distributed on an "AS IS" BASIS,
11+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
* See the License for the specific language governing permissions and
13+
* limitations under the License.
14+
*/
15+
16+
using System.Threading;
17+
using System.Threading.Tasks;
18+
19+
namespace MongoDB.Driver.Core.Bindings;
20+
21+
// TODO: Merge this interface into ICoreSession on major release
22+
internal interface ICoreSessionInternal
23+
{
24+
void AbortTransaction(AbortTransactionOptions options, CancellationToken cancellationToken = default);
25+
Task AbortTransactionAsync(AbortTransactionOptions options, CancellationToken cancellationToken = default);
26+
void CommitTransaction(CommitTransactionOptions options, CancellationToken cancellationToken = default);
27+
Task CommitTransactionAsync(CommitTransactionOptions options, CancellationToken cancellationToken = default);
28+
}

src/MongoDB.Driver/Core/Bindings/NoCoreSession.cs

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ namespace MongoDB.Driver.Core.Bindings
2424
/// An object that represents no core session.
2525
/// </summary>
2626
/// <seealso cref="MongoDB.Driver.Core.Bindings.ICoreSession" />
27-
public sealed class NoCoreSession : ICoreSession
27+
public sealed class NoCoreSession : ICoreSession, ICoreSessionInternal
2828
{
2929
#region static
3030
// private static fields
@@ -89,13 +89,25 @@ public static ICoreSessionHandle NewHandle()
8989

9090
// public methods
9191
/// <inheritdoc />
92-
public void AbortTransaction(CancellationToken cancellationToken = default(CancellationToken))
92+
public void AbortTransaction(CancellationToken cancellationToken = default)
93+
{
94+
throw new NotSupportedException("NoCoreSession does not support AbortTransaction.");
95+
}
96+
97+
// TODO: CSOT: Make it public when CSOT will be ready for GA and add default value to cancellationToken parameter.
98+
void ICoreSessionInternal.AbortTransaction(AbortTransactionOptions options, CancellationToken cancellationToken )
9399
{
94100
throw new NotSupportedException("NoCoreSession does not support AbortTransaction.");
95101
}
96102

97103
/// <inheritdoc />
98-
public Task AbortTransactionAsync(CancellationToken cancellationToken = default(CancellationToken))
104+
public Task AbortTransactionAsync(CancellationToken cancellationToken = default)
105+
{
106+
throw new NotSupportedException("NoCoreSession does not support AbortTransactionAsync.");
107+
}
108+
109+
// TODO: CSOT: Make it public when CSOT will be ready for GA and add default value to cancellationToken parameter.
110+
Task ICoreSessionInternal.AbortTransactionAsync(AbortTransactionOptions options, CancellationToken cancellationToken )
99111
{
100112
throw new NotSupportedException("NoCoreSession does not support AbortTransactionAsync.");
101113
}
@@ -122,13 +134,25 @@ public long AdvanceTransactionNumber()
122134
}
123135

124136
/// <inheritdoc />
125-
public void CommitTransaction(CancellationToken cancellationToken = default(CancellationToken))
137+
public void CommitTransaction(CancellationToken cancellationToken = default)
138+
{
139+
throw new NotSupportedException("NoCoreSession does not support CommitTransaction.");
140+
}
141+
142+
// TODO: CSOT: Make it public when CSOT will be ready for GA and add default value to cancellationToken parameter.
143+
void ICoreSessionInternal.CommitTransaction(CommitTransactionOptions options, CancellationToken cancellationToken)
126144
{
127145
throw new NotSupportedException("NoCoreSession does not support CommitTransaction.");
128146
}
129147

130148
/// <inheritdoc />
131-
public Task CommitTransactionAsync(CancellationToken cancellationToken = default(CancellationToken))
149+
public Task CommitTransactionAsync(CancellationToken cancellationToken = default)
150+
{
151+
throw new NotSupportedException("NoCoreSession does not support CommitTransactionAsync.");
152+
}
153+
154+
// TODO: CSOT: Make it public when CSOT will be ready for GA and add default value to cancellationToken parameter.
155+
Task ICoreSessionInternal.CommitTransactionAsync(CommitTransactionOptions options, CancellationToken cancellationToken)
132156
{
133157
throw new NotSupportedException("NoCoreSession does not support CommitTransactionAsync.");
134158
}

0 commit comments

Comments
 (0)