Skip to content

Commit 5ffff67

Browse files
committed
Method documentation on ISynchronizableQuery
Return task as cancelled
1 parent 43625d2 commit 5ffff67

File tree

3 files changed

+44
-9
lines changed

3 files changed

+44
-9
lines changed

src/NHibernate/Async/Impl/SessionFactoryImpl.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ public sealed partial class SessionFactoryImpl : ISessionFactoryImplementor, IOb
222222
}
223223
if (tasks.Any())
224224
{
225-
return Task.WhenAny(Task.WhenAll(tasks), cancellationToken.WhenCanceled());
225+
return Task.WhenAny(Task.WhenAll(tasks), cancellationToken.WhenCanceled(true));
226226
}
227227
return Task.CompletedTask;
228228
}
@@ -338,7 +338,7 @@ public sealed partial class SessionFactoryImpl : ISessionFactoryImplementor, IOb
338338
}
339339
if (tasks.Any())
340340
{
341-
return Task.WhenAny(Task.WhenAll(tasks), cancellationToken.WhenCanceled());
341+
return Task.WhenAny(Task.WhenAll(tasks), cancellationToken.WhenCanceled(true));
342342
}
343343
return Task.CompletedTask;
344344
}

src/NHibernate/Async/TaskExtensions.cs

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,28 @@ namespace NHibernate.Async
1010
public static class TaskExtensions
1111
{
1212
//https://github.com/dotnet/corefx/issues/2704
13-
/// <summary>
14-
/// Returns a Task that completes if the cancellationToken is cancelled
15-
/// </summary>
16-
/// <param name="cancellationToken"></param>
17-
/// <returns></returns>
18-
public static Task WhenCanceled(this CancellationToken cancellationToken)
13+
/// <summary>
14+
/// Returns a Task that completes if the cancellationToken is cancelled
15+
/// </summary>
16+
/// <param name="cancellationToken"></param>
17+
/// <param name="setCancelled"></param>
18+
/// <returns></returns>
19+
public static Task WhenCanceled(this CancellationToken cancellationToken, bool setCancelled)
1920
{
2021
var tcs = new TaskCompletionSource<bool>();
21-
cancellationToken.Register(s => ((TaskCompletionSource<bool>) s).SetResult(true), tcs);
22+
cancellationToken.Register(s =>
23+
{
24+
var completion= ((TaskCompletionSource<bool>) s);
25+
if (setCancelled)
26+
{
27+
completion.SetCanceled();
28+
}
29+
else
30+
{
31+
completion.SetResult(true);
32+
}
33+
34+
}, tcs);
2235
return tcs.Task;
2336
}
2437
}

src/NHibernate/ISynchronizableQuery.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,31 @@ namespace NHibernate
44
{
55
public interface ISynchronizableQuery<out T> where T : ISynchronizableQuery<T>
66
{
7+
/// <summary>
8+
/// Adds a query space for auto-flush synchronization and second level cache invalidation.
9+
/// </summary>
10+
/// <param name="querySpace"></param>
11+
/// <returns></returns>
712
T AddSynchronizedQuerySpace(string querySpace);
13+
14+
/// <summary>
15+
/// Adds an entity name for auto-flush synchronization and second level cache invalidation.
16+
/// </summary>
17+
/// <param name="entityName"></param>
18+
/// <returns></returns>
819
T AddSynchronizedEntityName(string entityName);
20+
21+
/// <summary>
22+
/// Adds an entity type for auto-flush synchronization and second level cache invalidation.
23+
/// </summary>
24+
/// <param name="entityType"></param>
25+
/// <returns></returns>
926
T AddSynchronizedEntityClass(System.Type entityType);
27+
28+
/// <summary>
29+
///
30+
/// </summary>
31+
/// <returns></returns>
1032
IReadOnlyCollection<string> GetSynchronizedQuerySpaces();
1133
}
1234
}

0 commit comments

Comments
 (0)