@@ -141,10 +141,14 @@ CancellationToken cancellationToken
141
141
}
142
142
143
143
var subject = new AsyncSubject < TItem ? > ( ) ;
144
+ var task = subject
145
+ . Select ( _factory )
146
+ . ToTask ( cancellationToken , _progressManager . Scheduler )
147
+ . ConfigureAwait ( false ) ;
144
148
// in the event nothing is emitted...
145
149
subject . OnNext ( default ! ) ;
146
150
Handle ( request , subject , cancellationToken ) ;
147
- return _factory ( await subject ) ;
151
+ return await task ;
148
152
}
149
153
150
154
protected abstract void Handle ( TParams request , IObserver < TItem > results , CancellationToken cancellationToken ) ;
@@ -181,10 +185,14 @@ CancellationToken cancellationToken
181
185
}
182
186
183
187
var subject = new AsyncSubject < TItem ? > ( ) ;
188
+ var task = subject
189
+ . Select ( _factory )
190
+ . ToTask ( cancellationToken , _progressManager . Scheduler )
191
+ . ConfigureAwait ( false ) ;
184
192
// in the event nothing is emitted...
185
193
subject . OnNext ( default ! ) ;
186
194
Handle ( request , subject , cancellationToken ) ;
187
- return _factory ( await subject ) ;
195
+ return await task ;
188
196
}
189
197
190
198
protected abstract void Handle ( TParams request , IObserver < TItem > results , CancellationToken cancellationToken ) ;
@@ -221,10 +229,14 @@ CancellationToken cancellationToken
221
229
}
222
230
223
231
var subject = new AsyncSubject < TItem > ( ) ;
232
+ var task = subject
233
+ . Select ( _factory )
234
+ . ToTask ( cancellationToken , _progressManager . Scheduler )
235
+ . ConfigureAwait ( false ) ;
224
236
// in the event nothing is emitted...
225
237
subject . OnNext ( default ! ) ;
226
238
Handle ( request , subject , cancellationToken ) ;
227
- return _factory ( await subject ) ;
239
+ return await task ;
228
240
}
229
241
230
242
protected abstract void Handle ( TParams request , IObserver < TItem > results , CancellationToken cancellationToken ) ;
@@ -258,15 +270,18 @@ protected PartialResults(IProgressManager progressManager, Func<IEnumerable<TIte
258
270
}
259
271
260
272
var subject = new Subject < IEnumerable < TItem > > ( ) ;
261
- var task = subject . Aggregate (
262
- new List < TItem > ( ) , ( acc , items ) => {
263
- acc . AddRange ( items ) ;
264
- return acc ;
265
- }
266
- )
267
- . ToTask ( cancellationToken , _progressManager . Scheduler ) ;
273
+ var task = subject
274
+ . Aggregate (
275
+ new List < TItem > ( ) , ( acc , items ) => {
276
+ acc . AddRange ( items ) ;
277
+ return acc ;
278
+ }
279
+ )
280
+ . Select ( _factory )
281
+ . ToTask ( cancellationToken , _progressManager . Scheduler )
282
+ . ConfigureAwait ( false ) ;
268
283
Handle ( request , subject , cancellationToken ) ;
269
- return _factory ( await task . ConfigureAwait ( false ) ) ;
284
+ return await task ;
270
285
}
271
286
272
287
protected abstract void Handle ( TParams request , IObserver < IEnumerable < TItem > > results , CancellationToken cancellationToken ) ;
@@ -299,19 +314,23 @@ protected PartialResults(IProgressManager progressManager, Func<IEnumerable<TIte
299
314
}
300
315
301
316
var subject = new Subject < IEnumerable < TItem > > ( ) ;
302
- var task = subject . Aggregate (
303
- new List < TItem > ( ) , ( acc , items ) => {
304
- acc . AddRange ( items ) ;
305
- return acc ;
306
- }
307
- )
308
- . ToTask ( cancellationToken , _progressManager . Scheduler ) ;
317
+ var task = subject
318
+ . Aggregate (
319
+ new List < TItem > ( ) , ( acc , items ) => {
320
+ acc . AddRange ( items ) ;
321
+ return acc ;
322
+ }
323
+ )
324
+ . Select ( _factory )
325
+ . ToTask ( cancellationToken , _progressManager . Scheduler )
326
+ . ConfigureAwait ( false ) ;
309
327
Handle ( request , subject , cancellationToken ) ;
310
- return _factory ( await task . ConfigureAwait ( false ) ) ;
328
+ return await task ;
311
329
}
312
330
313
331
protected abstract void Handle ( TParams request , IObserver < IEnumerable < TItem > > results , CancellationToken cancellationToken ) ;
314
332
}
333
+
315
334
public abstract class PartialResultsCapability < TParams , TResponse , TItem , TCapability > :
316
335
BaseCapability < TCapability > ,
317
336
IJsonRpcRequestHandler < TParams , TResponse ? >
@@ -339,15 +358,18 @@ protected PartialResultsCapability(IProgressManager progressManager, Func<IEnume
339
358
}
340
359
341
360
var subject = new Subject < IEnumerable < TItem > > ( ) ;
342
- var task = subject . Aggregate (
343
- new List < TItem > ( ) , ( acc , items ) => {
344
- acc . AddRange ( items ) ;
345
- return acc ;
346
- }
347
- )
348
- . ToTask ( cancellationToken , _progressManager . Scheduler ) ;
361
+ var task = subject
362
+ . Aggregate (
363
+ new List < TItem > ( ) , ( acc , items ) => {
364
+ acc . AddRange ( items ) ;
365
+ return acc ;
366
+ }
367
+ )
368
+ . Select ( _factory )
369
+ . ToTask ( cancellationToken , _progressManager . Scheduler )
370
+ . ConfigureAwait ( false ) ;
349
371
Handle ( request , subject , cancellationToken ) ;
350
- return _factory ( await task . ConfigureAwait ( false ) ) ;
372
+ return await task ;
351
373
}
352
374
353
375
protected abstract void Handle ( TParams request , IObserver < IEnumerable < TItem > > results , CancellationToken cancellationToken ) ;
0 commit comments