1
- // Copyright (C) 2020 Xtensive LLC.
1
+ // Copyright (C) 2020-2021 Xtensive LLC.
2
2
// This code is distributed under MIT license terms.
3
3
// See the License.txt file in the project root for more information.
4
4
@@ -19,6 +19,8 @@ private class EnumerableReader : IMaterializingReader<TItem>
19
19
{
20
20
private readonly IEnumerable < TItem > items ;
21
21
22
+ public Session Session => null ;
23
+
22
24
public IEnumerator < TItem > AsEnumerator ( ) => items . GetEnumerator ( ) ;
23
25
24
26
public IAsyncEnumerator < TItem > AsAsyncEnumerator ( ) => throw new System . NotSupportedException ( ) ;
@@ -29,17 +31,20 @@ public EnumerableReader(IEnumerable<TItem> items)
29
31
}
30
32
}
31
33
32
- private readonly IMaterializingReader < TItem > reader ;
33
34
private readonly StateLifetimeToken lifetimeToken ;
34
35
36
+
37
+ // DO NOT ENUMERATE this reader anywhere outside this class
38
+ internal IMaterializingReader < TItem > Reader { get ; }
39
+
35
40
/// <inheritdoc/>
36
41
IEnumerator IEnumerable . GetEnumerator ( ) => GetEnumerator ( ) ;
37
42
38
43
/// <inheritdoc/>
39
44
public IEnumerator < TItem > GetEnumerator ( )
40
45
{
41
46
EnsureResultsAlive ( ) ;
42
- return reader . AsEnumerator ( ) ;
47
+ return Reader . AsEnumerator ( ) ;
43
48
}
44
49
45
50
/// <summary>
@@ -48,7 +53,7 @@ public IEnumerator<TItem> GetEnumerator()
48
53
public async IAsyncEnumerable < TItem > AsAsyncEnumerable ( )
49
54
{
50
55
EnsureResultsAlive ( ) ;
51
- var enumerator = reader . AsAsyncEnumerator ( ) ;
56
+ var enumerator = Reader . AsAsyncEnumerator ( ) ;
52
57
while ( await enumerator . MoveNextAsync ( ) . ConfigureAwait ( false ) ) {
53
58
yield return enumerator . Current ;
54
59
}
@@ -63,13 +68,13 @@ private void EnsureResultsAlive()
63
68
64
69
internal QueryResult ( IMaterializingReader < TItem > reader , StateLifetimeToken lifetimeToken )
65
70
{
66
- this . reader = reader ;
71
+ this . Reader = reader ;
67
72
this . lifetimeToken = lifetimeToken ;
68
73
}
69
74
70
75
internal QueryResult ( IEnumerable < TItem > items )
71
76
{
72
- reader = new EnumerableReader ( items ) ;
77
+ Reader = new EnumerableReader ( items ) ;
73
78
this . lifetimeToken = default ;
74
79
}
75
80
}
0 commit comments