retlang 1.0.1.384 → 1.0.1.405

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/lib/Retlang.dll +0 -0
  2. data/lib/Retlang.pdb +0 -0
  3. data/lib/Retlang.xml +436 -430
  4. metadata +4 -4
data/lib/Retlang.dll CHANGED
Binary file
data/lib/Retlang.pdb CHANGED
Binary file
data/lib/Retlang.xml CHANGED
@@ -4,82 +4,6 @@
4
4
  <name>Retlang</name>
5
5
  </assembly>
6
6
  <members>
7
- <member name="T:Retlang.Core.ActionTimer">
8
- <summary>
9
- Enqueues actions on to executor after schedule elapses.
10
- </summary>
11
- </member>
12
- <member name="T:Retlang.Core.IPendingActionRegistry">
13
- <summary>
14
- Stores and removes pending actions.
15
- </summary>
16
- </member>
17
- <member name="M:Retlang.Core.IPendingActionRegistry.Remove(Retlang.Core.ITimerControl)">
18
- <summary>
19
- Remove timer
20
- </summary>
21
- <param name="timer"></param>
22
- </member>
23
- <member name="M:Retlang.Core.IPendingActionRegistry.EnqueueTask(System.Action)">
24
- <summary>
25
- Queue event to target queue.
26
- </summary>
27
- <param name="action"></param>
28
- </member>
29
- <member name="T:Retlang.Core.IScheduler">
30
- <summary>
31
- Methods for schedule events that will be executed in the future.
32
- </summary>
33
- </member>
34
- <member name="M:Retlang.Core.IScheduler.Schedule(System.Action,System.Int64)">
35
- <summary>
36
- Schedules an event to be executes once.
37
- </summary>
38
- <param name="action"></param>
39
- <param name="timeTilEnqueueInMs"></param>
40
- <returns>a controller to cancel the event.</returns>
41
- </member>
42
- <member name="M:Retlang.Core.IScheduler.ScheduleOnInterval(System.Action,System.Int64,System.Int64)">
43
- <summary>
44
- Schedule an event on a recurring interval.
45
- </summary>
46
- <param name="action"></param>
47
- <param name="firstInMs"></param>
48
- <param name="regularInMs"></param>
49
- <returns>controller to cancel timer.</returns>
50
- </member>
51
- <member name="M:Retlang.Core.ActionTimer.#ctor(Retlang.Core.IDisposingExecutor)">
52
- <summary>
53
- Constructs new instance.
54
- </summary>
55
- </member>
56
- <member name="M:Retlang.Core.ActionTimer.Schedule(System.Action,System.Int64)">
57
- <summary>
58
- Enqueues action on to executor after timer elapses.
59
- </summary>
60
- </member>
61
- <member name="M:Retlang.Core.ActionTimer.ScheduleOnInterval(System.Action,System.Int64,System.Int64)">
62
- <summary>
63
- Enqueues actions on to executor after schedule elapses.
64
- </summary>
65
- </member>
66
- <member name="M:Retlang.Core.ActionTimer.Remove(Retlang.Core.ITimerControl)">
67
- <summary>
68
- Removes a pending scheduled action.
69
- </summary>
70
- <param name="toRemove"></param>
71
- </member>
72
- <member name="M:Retlang.Core.ActionTimer.EnqueueTask(System.Action)">
73
- <summary>
74
- Enqueues actions on to executor immediately.
75
- </summary>
76
- <param name="action"></param>
77
- </member>
78
- <member name="M:Retlang.Core.ActionTimer.Dispose">
79
- <summary>
80
- Cancels all pending actions
81
- </summary>
82
- </member>
83
7
  <member name="T:Retlang.Channels.IQueueChannel`1">
84
8
  <summary>
85
9
  Creates a queue that will deliver a message to a single consumer. Load balancing can be achieved by creating
@@ -87,11 +11,11 @@
87
11
  </summary>
88
12
  <typeparam name="T"></typeparam>
89
13
  </member>
90
- <member name="M:Retlang.Channels.IQueueChannel`1.Subscribe(Retlang.Core.IDisposingExecutor,System.Action{`0})">
14
+ <member name="M:Retlang.Channels.IQueueChannel`1.Subscribe(Retlang.Core.IExecutionContext,System.Action{`0})">
91
15
  <summary>
92
- Subscribe to the executor.
16
+ Subscribe to the context.
93
17
  </summary>
94
- <param name="executor"></param>
18
+ <param name="executionContext"></param>
95
19
  <param name="onMessage"></param>
96
20
  <returns></returns>
97
21
  </member>
@@ -106,16 +30,6 @@
106
30
  For use only in testing. Allows for controlled execution of scheduled actions on the StubFiber.
107
31
  </summary>
108
32
  </member>
109
- <member name="T:Retlang.Core.ITimerControl">
110
- <summary>
111
- Controller to cancel event timer.
112
- </summary>
113
- </member>
114
- <member name="M:Retlang.Core.ITimerControl.Cancel">
115
- <summary>
116
- Cancels scheduled timer.
117
- </summary>
118
- </member>
119
33
  <member name="M:Retlang.Fibers.StubScheduledAction.#ctor(System.Action,System.Int64,System.Int64,System.Collections.Generic.List{Retlang.Fibers.StubScheduledAction})">
120
34
  <summary>
121
35
  Use for recurring scheduled actions.
@@ -138,7 +52,7 @@
138
52
  Executes the scheduled action. If the action is not recurring it will be removed from the registry.
139
53
  </summary>
140
54
  </member>
141
- <member name="M:Retlang.Fibers.StubScheduledAction.Cancel">
55
+ <member name="M:Retlang.Fibers.StubScheduledAction.Dispose">
142
56
  <summary>
143
57
  Cancels scheduled action. Removes scheduled action from registry.
144
58
  </summary>
@@ -153,61 +67,98 @@
153
67
  Recurring interval in milliseconds.
154
68
  </summary>
155
69
  </member>
156
- <member name="T:Retlang.Core.IUnsubscriber">
70
+ <member name="T:Retlang.Core.Subscriptions">
71
+ <summary>
72
+ Registry for subscriptions. Provides thread safe methods for list of subscriptions.
73
+ </summary>
74
+ </member>
75
+ <member name="M:Retlang.Core.Subscriptions.Add(System.IDisposable)">
76
+ <summary>
77
+ Add Disposable
78
+ </summary>
79
+ <param name="toAdd"></param>
80
+ </member>
81
+ <member name="M:Retlang.Core.Subscriptions.Remove(System.IDisposable)">
82
+ <summary>
83
+ Remove Disposable.
84
+ </summary>
85
+ <param name="toRemove"></param>
86
+ <returns></returns>
87
+ </member>
88
+ <member name="M:Retlang.Core.Subscriptions.Dispose">
89
+ <summary>
90
+ Disposes all disposables registered in list.
91
+ </summary>
92
+ </member>
93
+ <member name="P:Retlang.Core.Subscriptions.Count">
157
94
  <summary>
158
- Unsubscribe controller.
95
+ Number of registered disposables.
159
96
  </summary>
160
97
  </member>
161
98
  <member name="T:Retlang.Fibers.IFiber">
162
99
  <summary>
163
- Queues pending events for the fiber.
100
+ Enqueues pending actions for the context of execution (thread, pool of threads, message pump, etc.)
101
+ </summary>
102
+ </member>
103
+ <member name="T:Retlang.Core.ISubscriptionRegistry">
104
+ <summary>
105
+ Allows for the registration and deregistration of subscriptions
106
+ </summary>
107
+ </member>
108
+ <member name="M:Retlang.Core.ISubscriptionRegistry.RegisterSubscription(System.IDisposable)">
109
+ <summary>
110
+ Register subscription to be unsubcribed from when the fiber is disposed
164
111
  </summary>
112
+ <param name="toAdd"></param>
165
113
  </member>
166
- <member name="T:Retlang.Core.IDisposingExecutor">
114
+ <member name="M:Retlang.Core.ISubscriptionRegistry.DeregisterSubscription(System.IDisposable)">
167
115
  <summary>
168
- Queues actions. Disposable objects can be added and removed. All dispose methods registered with the executor
169
- will be invoked with the executor is disposed. This allows all subscriptions to be disposed when a fiber
170
- is disposed.
116
+ Deregister a subscription
171
117
  </summary>
118
+ <param name="toRemove"></param>
119
+ <returns></returns>
172
120
  </member>
173
- <member name="M:Retlang.Core.IDisposingExecutor.EnqueueAll(System.Collections.Generic.List{System.Action})">
121
+ <member name="T:Retlang.Core.IExecutionContext">
174
122
  <summary>
175
- Append actions to end of queue.
123
+ Context of execution.
176
124
  </summary>
177
- <param name="actions"></param>
178
125
  </member>
179
- <member name="M:Retlang.Core.IDisposingExecutor.Enqueue(System.Action)">
126
+ <member name="M:Retlang.Core.IExecutionContext.Enqueue(System.Action)">
180
127
  <summary>
181
128
  Enqueue a single action.
182
129
  </summary>
183
130
  <param name="action"></param>
184
131
  </member>
185
- <member name="M:Retlang.Core.IDisposingExecutor.Add(System.IDisposable)">
132
+ <member name="T:Retlang.Core.IScheduler">
186
133
  <summary>
187
- Register disposable.
134
+ Methods for scheduling actions that will be executed in the future.
188
135
  </summary>
189
- <param name="toAdd"></param>
190
136
  </member>
191
- <member name="M:Retlang.Core.IDisposingExecutor.Remove(System.IDisposable)">
137
+ <member name="M:Retlang.Core.IScheduler.Schedule(System.Action,System.Int64)">
192
138
  <summary>
193
- Remove Disposable.
139
+ Schedules an action to be executed once.
194
140
  </summary>
195
- <param name="victim"></param>
196
- <returns></returns>
141
+ <param name="action"></param>
142
+ <param name="firstInMs"></param>
143
+ <returns>a handle to cancel the timer.</returns>
197
144
  </member>
198
- <member name="P:Retlang.Core.IDisposingExecutor.DisposableCount">
145
+ <member name="M:Retlang.Core.IScheduler.ScheduleOnInterval(System.Action,System.Int64,System.Int64)">
199
146
  <summary>
200
- Number of registered disposables.
147
+ Schedule an action to be executed on a recurring interval.
201
148
  </summary>
149
+ <param name="action"></param>
150
+ <param name="firstInMs"></param>
151
+ <param name="regularInMs"></param>
152
+ <returns>a handle to cancel the timer.</returns>
202
153
  </member>
203
154
  <member name="M:Retlang.Fibers.IFiber.Start">
204
155
  <summary>
205
- Start consuming events.
156
+ Start consuming actions.
206
157
  </summary>
207
158
  </member>
208
159
  <member name="T:Retlang.Channels.BatchSubscriber`1">
209
160
  <summary>
210
- Batches events for the consuming thread.
161
+ Batches actions for the consuming thread.
211
162
  </summary>
212
163
  <typeparam name="T"></typeparam>
213
164
  </member>
@@ -225,7 +176,7 @@
225
176
  </member>
226
177
  <member name="T:Retlang.Channels.IProducerThreadSubscriber`1">
227
178
  <summary>
228
- Event Subscriber that receives events on producer thread.
179
+ Action subscriber that receives actions on producer thread.
229
180
  </summary>
230
181
  <typeparam name="T"></typeparam>
231
182
  </member>
@@ -235,6 +186,11 @@
235
186
  </summary>
236
187
  <param name="msg"></param>
237
188
  </member>
189
+ <member name="P:Retlang.Channels.IProducerThreadSubscriber`1.Subscriptions">
190
+ <summary>
191
+ Allows for the registration and deregistration of subscriptions
192
+ </summary>
193
+ </member>
238
194
  <member name="P:Retlang.Channels.ISubscribable`1.FilterOnProducerThread">
239
195
  <summary>
240
196
  Filter called from producer threads. Should be thread safe as it may be called from
@@ -258,11 +214,16 @@
258
214
  <see cref="P:Retlang.Channels.ISubscribable`1.FilterOnProducerThread"/>
259
215
  </summary>
260
216
  </member>
261
- <member name="M:Retlang.Channels.BatchSubscriber`1.#ctor(Retlang.Core.IScheduler,System.Action{System.Collections.Generic.IList{`0}},System.Int32)">
217
+ <member name="P:Retlang.Channels.BaseSubscription`1.Subscriptions">
218
+ <summary>
219
+ Allows for the registration and deregistration of subscriptions
220
+ </summary>
221
+ </member>
222
+ <member name="M:Retlang.Channels.BatchSubscriber`1.#ctor(Retlang.Fibers.IFiber,System.Action{System.Collections.Generic.IList{`0}},System.Int32)">
262
223
  <summary>
263
224
  Construct new instance.
264
225
  </summary>
265
- <param name="queue"></param>
226
+ <param name="fiber"></param>
266
227
  <param name="receive"></param>
267
228
  <param name="interval"></param>
268
229
  </member>
@@ -272,86 +233,78 @@
272
233
  </summary>
273
234
  <param name="msg"></param>
274
235
  </member>
275
- <member name="T:Retlang.Fibers.FormFiber">
236
+ <member name="P:Retlang.Channels.BatchSubscriber`1.Subscriptions">
276
237
  <summary>
277
- Allows interaction with Windows Forms. Transparently moves actions onto the Form's thread.
238
+ Allows for the registration and deregistration of subscriptions
278
239
  </summary>
279
240
  </member>
280
- <member name="T:Retlang.Fibers.BaseFiber">
241
+ <member name="T:Retlang.Fibers.FormFiber">
281
242
  <summary>
282
243
  Allows interaction with Windows Forms. Transparently moves actions onto the Form's thread.
283
244
  </summary>
284
245
  </member>
285
- <member name="M:Retlang.Fibers.BaseFiber.#ctor(Retlang.Fibers.IThreadAdapter,Retlang.Core.IBatchAndSingleExecutor)">
246
+ <member name="T:Retlang.Fibers.GuiFiber">
286
247
  <summary>
287
- Creates an instance.
248
+ Allows interaction with Windows Forms. Transparently moves actions onto the Form's thread.
288
249
  </summary>
289
250
  </member>
290
- <member name="M:Retlang.Fibers.BaseFiber.EnqueueAll(System.Collections.Generic.List{System.Action})">
251
+ <member name="M:Retlang.Fibers.GuiFiber.#ctor(Retlang.Core.IExecutionContext,Retlang.Core.IExecutor)">
291
252
  <summary>
292
- <see cref="M:Retlang.Core.IDisposingExecutor.EnqueueAll(System.Collections.Generic.List{System.Action})"/>
253
+ Creates an instance.
293
254
  </summary>
294
255
  </member>
295
- <member name="M:Retlang.Fibers.BaseFiber.Enqueue(System.Action)">
256
+ <member name="M:Retlang.Fibers.GuiFiber.Enqueue(System.Action)">
296
257
  <summary>
297
- <see cref="M:Retlang.Core.IDisposingExecutor.Enqueue(System.Action)"/>
258
+ <see cref="M:Retlang.Core.IExecutionContext.Enqueue(System.Action)"/>
298
259
  </summary>
299
260
  </member>
300
- <member name="M:Retlang.Fibers.BaseFiber.Add(System.IDisposable)">
261
+ <member name="M:Retlang.Fibers.GuiFiber.RegisterSubscription(System.IDisposable)">
301
262
  <summary>
302
- <see cref="M:Retlang.Core.IDisposingExecutor.Add(System.IDisposable)"/>
263
+ Register unsubscriber to be called when IFiber is disposed
303
264
  </summary>
265
+ <param name="toAdd"></param>
304
266
  </member>
305
- <member name="M:Retlang.Fibers.BaseFiber.Remove(System.IDisposable)">
267
+ <member name="M:Retlang.Fibers.GuiFiber.DeregisterSubscription(System.IDisposable)">
306
268
  <summary>
307
- <see cref="M:Retlang.Core.IDisposingExecutor.Remove(System.IDisposable)"/>
269
+ Deregister a subscription
308
270
  </summary>
271
+ <param name="toRemove"></param>
272
+ <returns></returns>
309
273
  </member>
310
- <member name="M:Retlang.Fibers.BaseFiber.Schedule(System.Action,System.Int64)">
274
+ <member name="M:Retlang.Fibers.GuiFiber.Schedule(System.Action,System.Int64)">
311
275
  <summary>
312
276
  <see cref="M:Retlang.Core.IScheduler.Schedule(System.Action,System.Int64)"/>
313
277
  </summary>
314
278
  </member>
315
- <member name="M:Retlang.Fibers.BaseFiber.ScheduleOnInterval(System.Action,System.Int64,System.Int64)">
279
+ <member name="M:Retlang.Fibers.GuiFiber.ScheduleOnInterval(System.Action,System.Int64,System.Int64)">
316
280
  <summary>
317
281
  <see cref="M:Retlang.Core.IScheduler.ScheduleOnInterval(System.Action,System.Int64,System.Int64)"/>
318
282
  </summary>
319
283
  </member>
320
- <member name="M:Retlang.Fibers.BaseFiber.Start">
284
+ <member name="M:Retlang.Fibers.GuiFiber.Start">
321
285
  <summary>
322
286
  <see cref="M:Retlang.Fibers.IFiber.Start"/>
323
287
  </summary>
324
288
  </member>
325
- <member name="M:Retlang.Fibers.BaseFiber.Stop">
326
- <summary>
327
- Stops the fiber.
328
- </summary>
329
- </member>
330
- <member name="M:Retlang.Fibers.BaseFiber.Dispose">
289
+ <member name="M:Retlang.Fibers.GuiFiber.Dispose">
331
290
  <summary>
332
291
  <see cref="M:System.IDisposable.Dispose"/>
333
292
  </summary>
334
293
  </member>
335
- <member name="P:Retlang.Fibers.BaseFiber.DisposableCount">
294
+ <member name="M:Retlang.Fibers.GuiFiber.Stop">
336
295
  <summary>
337
- <see cref="P:Retlang.Core.IDisposingExecutor.DisposableCount"/>
338
- </summary>
339
- </member>
340
- <member name="M:Retlang.Fibers.FormFiber.#ctor(System.ComponentModel.ISynchronizeInvoke,Retlang.Core.IBatchAndSingleExecutor)">
341
- <summary>
342
- Creates an instance.
296
+ Stops the fiber.
343
297
  </summary>
344
298
  </member>
345
- <member name="T:Retlang.Fibers.IThreadAdapter">
299
+ <member name="P:Retlang.Fibers.GuiFiber.NumSubscriptions">
346
300
  <summary>
347
- Invokes action on another thread
301
+ Number of subscriptions
348
302
  </summary>
349
303
  </member>
350
- <member name="M:Retlang.Fibers.IThreadAdapter.Invoke(System.Action)">
304
+ <member name="M:Retlang.Fibers.FormFiber.#ctor(System.ComponentModel.ISynchronizeInvoke,Retlang.Core.IExecutor)">
351
305
  <summary>
352
- Invokes action on another thread
306
+ Creates an instance.
353
307
  </summary>
354
- <param name="action"></param>
355
308
  </member>
356
309
  <member name="T:Retlang.Core.QueueFullException">
357
310
  <summary>
@@ -375,48 +328,6 @@
375
328
  Depth of queue.
376
329
  </summary>
377
330
  </member>
378
- <member name="T:Retlang.Core.IBatchExecutor">
379
- <summary>
380
- Executes pending action(s).
381
- </summary>
382
- </member>
383
- <member name="M:Retlang.Core.IBatchExecutor.ExecuteAll(System.Collections.Generic.List{System.Action})">
384
- <summary>
385
- Execute all pending actions.
386
- </summary>
387
- <param name="toExecute"></param>
388
- </member>
389
- <member name="T:Retlang.Fibers.IThreadFiber">
390
- <summary>
391
- Fiber implementation backed by a dedicated thread.
392
- </summary>
393
- </member>
394
- <member name="M:Retlang.Fibers.IThreadFiber.Join">
395
- <summary>
396
- Willl Wait for Thread to cease execution before continuing.
397
- </summary>
398
- </member>
399
- <member name="P:Retlang.Fibers.IThreadFiber.Thread">
400
- <summary>
401
- The backing thread for the Fiber.
402
- </summary>
403
- </member>
404
- <member name="T:Retlang.Core.BatchExecutor">
405
- <summary>
406
- Default Action executor.
407
- </summary>
408
- </member>
409
- <member name="M:Retlang.Core.BatchExecutor.ExecuteAll(System.Collections.Generic.List{System.Action})">
410
- <summary>
411
- <see cref="M:Retlang.Core.IBatchExecutor.ExecuteAll(System.Collections.Generic.List{System.Action})"/>
412
- </summary>
413
- </member>
414
- <member name="P:Retlang.Core.BatchExecutor.IsEnabled">
415
- <summary>
416
- When disabled, actions will be ignored by executor. The executor is typically disabled at shutdown
417
- to prevent any pending actions from being executed.
418
- </summary>
419
- </member>
420
331
  <member name="T:Retlang.Channels.SnapshotChannel`1">
421
332
  <summary>
422
333
  A SnapshotChannel is a channel that allows for the transmission of an initial snapshot followed by incremental updates.
@@ -431,7 +342,7 @@
431
342
  </summary>
432
343
  <typeparam name="T"></typeparam>
433
344
  </member>
434
- <member name="M:Retlang.Channels.ISnapshotChannel`1.PrimedSubscribe(Retlang.Core.IDisposingExecutor,System.Action{`0})">
345
+ <member name="M:Retlang.Channels.ISnapshotChannel`1.PrimedSubscribe(Retlang.Fibers.IFiber,System.Action{`0})">
435
346
  <summary>
436
347
  Subscribes for an initial snapshot and then incremental update.
437
348
  </summary>
@@ -444,7 +355,7 @@
444
355
  </summary>
445
356
  <param name="update"></param>
446
357
  </member>
447
- <member name="M:Retlang.Channels.ISnapshotChannel`1.ReplyToPrimingRequest(Retlang.Core.IDisposingExecutor,System.Func{`0})">
358
+ <member name="M:Retlang.Channels.ISnapshotChannel`1.ReplyToPrimingRequest(Retlang.Fibers.IFiber,System.Func{`0})">
448
359
  <summary>
449
360
  Ressponds to the request for an initial snapshot.
450
361
  </summary>
@@ -456,7 +367,7 @@
456
367
  </summary>
457
368
  <param name="timeoutInMs">For initial snapshot</param>
458
369
  </member>
459
- <member name="M:Retlang.Channels.SnapshotChannel`1.PrimedSubscribe(Retlang.Core.IDisposingExecutor,System.Action{`0})">
370
+ <member name="M:Retlang.Channels.SnapshotChannel`1.PrimedSubscribe(Retlang.Fibers.IFiber,System.Action{`0})">
460
371
  <summary>
461
372
  Subscribes for an initial snapshot and then incremental update.
462
373
  </summary>
@@ -469,7 +380,7 @@
469
380
  </summary>
470
381
  <param name="update"></param>
471
382
  </member>
472
- <member name="M:Retlang.Channels.SnapshotChannel`1.ReplyToPrimingRequest(Retlang.Core.IDisposingExecutor,System.Func{`0})">
383
+ <member name="M:Retlang.Channels.SnapshotChannel`1.ReplyToPrimingRequest(Retlang.Fibers.IFiber,System.Func{`0})">
473
384
  <summary>
474
385
  Ressponds to the request for an initial snapshot.
475
386
  </summary>
@@ -493,28 +404,22 @@
493
404
  </member>
494
405
  <member name="M:Retlang.Fibers.StubFiber.Dispose">
495
406
  <summary>
496
- Invokes Disposables.
497
- </summary>
498
- </member>
499
- <member name="M:Retlang.Fibers.StubFiber.EnqueueAll(System.Collections.Generic.List{System.Action})">
500
- <summary>
501
- Adds all events to pending list.
407
+ Unsubscribes from all subscriptions.
502
408
  </summary>
503
- <param name="actions"></param>
504
409
  </member>
505
410
  <member name="M:Retlang.Fibers.StubFiber.Enqueue(System.Action)">
506
411
  <summary>
507
- Add event to pending list.
412
+ Add action to pending list.
508
413
  </summary>
509
414
  <param name="action"></param>
510
415
  </member>
511
- <member name="M:Retlang.Fibers.StubFiber.Add(System.IDisposable)">
416
+ <member name="M:Retlang.Fibers.StubFiber.RegisterSubscription(System.IDisposable)">
512
417
  <summary>
513
418
  add to disposable list.
514
419
  </summary>
515
420
  <param name="disposable"></param>
516
421
  </member>
517
- <member name="M:Retlang.Fibers.StubFiber.Remove(System.IDisposable)">
422
+ <member name="M:Retlang.Fibers.StubFiber.DeregisterSubscription(System.IDisposable)">
518
423
  <summary>
519
424
  Remove Disposable.
520
425
  </summary>
@@ -523,15 +428,15 @@
523
428
  </member>
524
429
  <member name="M:Retlang.Fibers.StubFiber.Schedule(System.Action,System.Int64)">
525
430
  <summary>
526
- Adds a scheduled event to the list.
431
+ Adds a scheduled action to the list.
527
432
  </summary>
528
433
  <param name="action"></param>
529
- <param name="timeTilEnqueueInMs"></param>
434
+ <param name="firstInMs"></param>
530
435
  <returns></returns>
531
436
  </member>
532
437
  <member name="M:Retlang.Fibers.StubFiber.ScheduleOnInterval(System.Action,System.Int64,System.Int64)">
533
438
  <summary>
534
- Adds scheduled event to list.
439
+ Adds scheduled action to list.
535
440
  </summary>
536
441
  <param name="action"></param>
537
442
  <param name="firstInMs"></param>
@@ -553,29 +458,29 @@
553
458
  Execute all actions in the scheduled list.
554
459
  </summary>
555
460
  </member>
556
- <member name="P:Retlang.Fibers.StubFiber.DisposableCount">
461
+ <member name="P:Retlang.Fibers.StubFiber.NumSubscriptions">
557
462
  <summary>
558
463
  Count of Disposables.
559
464
  </summary>
560
465
  </member>
561
- <member name="P:Retlang.Fibers.StubFiber.Disposables">
466
+ <member name="P:Retlang.Fibers.StubFiber.Subscriptions">
562
467
  <summary>
563
- All Disposables.
468
+ All subscriptions.
564
469
  </summary>
565
470
  </member>
566
471
  <member name="P:Retlang.Fibers.StubFiber.Pending">
567
472
  <summary>
568
- All Pending actions.
473
+ All pending actions.
569
474
  </summary>
570
475
  </member>
571
476
  <member name="P:Retlang.Fibers.StubFiber.Scheduled">
572
477
  <summary>
573
- All Scheduled events.
478
+ All scheduled actions.
574
479
  </summary>
575
480
  </member>
576
481
  <member name="P:Retlang.Fibers.StubFiber.ExecutePendingImmediately">
577
482
  <summary>
578
- If true events will be executed immediately rather than added to a pending list.
483
+ If true events will be executed immediately rather than added to the pending list.
579
484
  </summary>
580
485
  </member>
581
486
  <member name="T:Retlang.Fibers.PoolFiber">
@@ -583,46 +488,40 @@
583
488
  Fiber that uses a thread pool for execution.
584
489
  </summary>
585
490
  </member>
586
- <member name="M:Retlang.Fibers.PoolFiber.#ctor(Retlang.Core.IThreadPool,Retlang.Core.IBatchExecutor)">
491
+ <member name="M:Retlang.Fibers.PoolFiber.#ctor(Retlang.Core.IThreadPool,Retlang.Core.IExecutor)">
587
492
  <summary>
588
493
  Construct new instance.
589
494
  </summary>
590
495
  <param name="pool"></param>
591
496
  <param name="executor"></param>
592
497
  </member>
593
- <member name="M:Retlang.Fibers.PoolFiber.#ctor(Retlang.Core.IBatchExecutor)">
498
+ <member name="M:Retlang.Fibers.PoolFiber.#ctor(Retlang.Core.IExecutor)">
594
499
  <summary>
595
500
  Create a pool fiber with the default thread pool.
596
501
  </summary>
597
502
  </member>
598
503
  <member name="M:Retlang.Fibers.PoolFiber.#ctor">
599
504
  <summary>
600
- Create a pool fiber with the default thread pool and batch executor.
505
+ Create a pool fiber with the default thread pool and default executor.
601
506
  </summary>
602
507
  </member>
603
- <member name="M:Retlang.Fibers.PoolFiber.EnqueueAll(System.Collections.Generic.List{System.Action})">
604
- <summary>
605
- <see cref="M:Retlang.Core.IDisposingExecutor.EnqueueAll(System.Collections.Generic.List{System.Action})"/>
606
- </summary>
607
- <param name="actions"></param>
608
- </member>
609
508
  <member name="M:Retlang.Fibers.PoolFiber.Enqueue(System.Action)">
610
509
  <summary>
611
510
  Queue action.
612
511
  </summary>
613
512
  <param name="action"></param>
614
513
  </member>
615
- <member name="M:Retlang.Fibers.PoolFiber.Add(System.IDisposable)">
514
+ <member name="M:Retlang.Fibers.PoolFiber.RegisterSubscription(System.IDisposable)">
616
515
  <summary>
617
516
  Register Disposable.
618
517
  </summary>
619
518
  <param name="toAdd"></param>
620
519
  </member>
621
- <member name="M:Retlang.Fibers.PoolFiber.Remove(System.IDisposable)">
520
+ <member name="M:Retlang.Fibers.PoolFiber.DeregisterSubscription(System.IDisposable)">
622
521
  <summary>
623
522
  Remove Disposable.
624
523
  </summary>
625
- <param name="victim"></param>
524
+ <param name="toRemove"></param>
626
525
  <returns></returns>
627
526
  </member>
628
527
  <member name="M:Retlang.Fibers.PoolFiber.Schedule(System.Action,System.Int64)">
@@ -630,7 +529,7 @@
630
529
  <see cref="M:Retlang.Core.IScheduler.Schedule(System.Action,System.Int64)"/>
631
530
  </summary>
632
531
  <param name="action"></param>
633
- <param name="timeTilEnqueueInMs"></param>
532
+ <param name="firstInMs"></param>
634
533
  <returns></returns>
635
534
  </member>
636
535
  <member name="M:Retlang.Fibers.PoolFiber.ScheduleOnInterval(System.Action,System.Int64,System.Int64)">
@@ -644,12 +543,12 @@
644
543
  </member>
645
544
  <member name="M:Retlang.Fibers.PoolFiber.Start">
646
545
  <summary>
647
- Start consuming events.
546
+ Start consuming actions.
648
547
  </summary>
649
548
  </member>
650
549
  <member name="M:Retlang.Fibers.PoolFiber.Stop">
651
550
  <summary>
652
- Stop consuming events.
551
+ Stop consuming actions.
653
552
  </summary>
654
553
  </member>
655
554
  <member name="M:Retlang.Fibers.PoolFiber.Dispose">
@@ -657,9 +556,149 @@
657
556
  Stops the fiber.
658
557
  </summary>
659
558
  </member>
660
- <member name="P:Retlang.Fibers.PoolFiber.DisposableCount">
559
+ <member name="P:Retlang.Fibers.PoolFiber.NumSubscriptions">
560
+ <summary>
561
+ Number of currently registered subscription.
562
+ </summary>
563
+ </member>
564
+ <member name="T:Retlang.Core.IExecutor">
565
+ <summary>
566
+ Executes pending action(s).
567
+ </summary>
568
+ </member>
569
+ <member name="M:Retlang.Core.IExecutor.Execute(System.Collections.Generic.List{System.Action})">
570
+ <summary>
571
+ Executes all actions.
572
+ </summary>
573
+ <param name="toExecute"></param>
574
+ </member>
575
+ <member name="M:Retlang.Core.IExecutor.Execute(System.Action)">
576
+ <summary>
577
+ Executes a single action.
578
+ </summary>
579
+ <param name="toExecute"></param>
580
+ </member>
581
+ <member name="T:Retlang.Core.Scheduler">
582
+ <summary>
583
+ Enqueues actions on to executor after schedule elapses.
584
+ </summary>
585
+ </member>
586
+ <member name="T:Retlang.Core.ISchedulerRegistry">
587
+ <summary>
588
+ Enqueues actions and
589
+ </summary>
590
+ </member>
591
+ <member name="M:Retlang.Core.ISchedulerRegistry.Enqueue(System.Action)">
592
+ <summary>
593
+ Enqueue action to target fiber.
594
+ </summary>
595
+ <param name="action"></param>
596
+ </member>
597
+ <member name="M:Retlang.Core.ISchedulerRegistry.Remove(System.IDisposable)">
598
+ <summary>
599
+ Remove timer
600
+ </summary>
601
+ <param name="timer"></param>
602
+ </member>
603
+ <member name="M:Retlang.Core.Scheduler.#ctor(Retlang.Core.IExecutionContext)">
604
+ <summary>
605
+ Constructs new instance.
606
+ </summary>
607
+ </member>
608
+ <member name="M:Retlang.Core.Scheduler.Schedule(System.Action,System.Int64)">
609
+ <summary>
610
+ Enqueues action on to executor after timer elapses.
611
+ </summary>
612
+ </member>
613
+ <member name="M:Retlang.Core.Scheduler.ScheduleOnInterval(System.Action,System.Int64,System.Int64)">
614
+ <summary>
615
+ Enqueues actions on to executor after schedule elapses.
616
+ </summary>
617
+ </member>
618
+ <member name="M:Retlang.Core.Scheduler.Remove(System.IDisposable)">
619
+ <summary>
620
+ Removes a pending scheduled action.
621
+ </summary>
622
+ <param name="toRemove"></param>
623
+ </member>
624
+ <member name="M:Retlang.Core.Scheduler.Enqueue(System.Action)">
625
+ <summary>
626
+ Enqueues actions on to executor immediately.
627
+ </summary>
628
+ <param name="action"></param>
629
+ </member>
630
+ <member name="M:Retlang.Core.Scheduler.Dispose">
631
+ <summary>
632
+ Cancels all pending actions
633
+ </summary>
634
+ </member>
635
+ <member name="T:Retlang.Core.BoundedQueue">
636
+ <summary>
637
+ Queue with bounded capacity. Will throw exception if capacity does not recede prior to wait time.
638
+ </summary>
639
+ </member>
640
+ <member name="T:Retlang.Core.IQueue">
661
641
  <summary>
662
- Number of currently registered disposables.
642
+ Holds on to actions until the execution context can process them.
643
+ </summary>
644
+ </member>
645
+ <member name="M:Retlang.Core.IQueue.Enqueue(System.Action)">
646
+ <summary>
647
+ Enqueues action for execution context to process.
648
+ </summary>
649
+ <param name="action"></param>
650
+ </member>
651
+ <member name="M:Retlang.Core.IQueue.Run">
652
+ <summary>
653
+ Start consuming actions.
654
+ </summary>
655
+ </member>
656
+ <member name="M:Retlang.Core.IQueue.Stop">
657
+ <summary>
658
+ Stop consuming actions.
659
+ </summary>
660
+ </member>
661
+ <member name="M:Retlang.Core.BoundedQueue.#ctor(Retlang.Core.IExecutor)">
662
+ <summary>
663
+ Creates a bounded queue with a custom executor.
664
+ </summary>
665
+ <param name="executor"></param>
666
+ </member>
667
+ <member name="M:Retlang.Core.BoundedQueue.#ctor">
668
+ <summary>
669
+ Creates a bounded queue with the default executor.
670
+ </summary>
671
+ </member>
672
+ <member name="M:Retlang.Core.BoundedQueue.Enqueue(System.Action)">
673
+ <summary>
674
+ Enqueue action.
675
+ </summary>
676
+ <param name="action"></param>
677
+ </member>
678
+ <member name="M:Retlang.Core.BoundedQueue.Run">
679
+ <summary>
680
+ Execute actions until stopped.
681
+ </summary>
682
+ </member>
683
+ <member name="M:Retlang.Core.BoundedQueue.Stop">
684
+ <summary>
685
+ Stop consuming actions.
686
+ </summary>
687
+ </member>
688
+ <member name="M:Retlang.Core.BoundedQueue.ExecuteNextBatch">
689
+ <summary>
690
+ Remove all actions and execute.
691
+ </summary>
692
+ <returns></returns>
693
+ </member>
694
+ <member name="P:Retlang.Core.BoundedQueue.MaxDepth">
695
+ <summary>
696
+ Max number of actions to be queued.
697
+ </summary>
698
+ </member>
699
+ <member name="P:Retlang.Core.BoundedQueue.MaxEnqueueWaitTime">
700
+ <summary>
701
+ Max time to wait for space in the queue.
663
702
  </summary>
664
703
  </member>
665
704
  <member name="T:Retlang.Channels.KeyedBatchSubscriber`2">
@@ -669,13 +708,13 @@
669
708
  <typeparam name="K"></typeparam>
670
709
  <typeparam name="T"></typeparam>
671
710
  </member>
672
- <member name="M:Retlang.Channels.KeyedBatchSubscriber`2.#ctor(System.Converter{`1,`0},System.Action{System.Collections.Generic.IDictionary{`0,`1}},Retlang.Core.IScheduler,System.Int32)">
711
+ <member name="M:Retlang.Channels.KeyedBatchSubscriber`2.#ctor(System.Converter{`1,`0},System.Action{System.Collections.Generic.IDictionary{`0,`1}},Retlang.Fibers.IFiber,System.Int32)">
673
712
  <summary>
674
713
  Construct new instance.
675
714
  </summary>
676
715
  <param name="keyResolver"></param>
677
716
  <param name="target"></param>
678
- <param name="context"></param>
717
+ <param name="fiber"></param>
679
718
  <param name="flushIntervalInMs"></param>
680
719
  </member>
681
720
  <member name="M:Retlang.Channels.KeyedBatchSubscriber`2.OnMessageOnProducerThread(`1)">
@@ -689,6 +728,11 @@
689
728
  Flushed from fiber
690
729
  </summary>
691
730
  </member>
731
+ <member name="P:Retlang.Channels.KeyedBatchSubscriber`2.Subscriptions">
732
+ <summary>
733
+ Allows for the registration and deregistration of subscriptions
734
+ </summary>
735
+ </member>
692
736
  <member name="T:Retlang.Channels.IRequest`2">
693
737
  <summary>
694
738
  A request object that can be used to send 1 or many responses to the initial request.
@@ -713,7 +757,7 @@
713
757
  Adapts Dispatcher to a Fiber. Transparently moves actions onto the Dispatcher thread.
714
758
  </summary>
715
759
  </member>
716
- <member name="M:Retlang.Fibers.DispatcherFiber.#ctor(System.Windows.Threading.Dispatcher,System.Windows.Threading.DispatcherPriority,Retlang.Core.IBatchAndSingleExecutor)">
760
+ <member name="M:Retlang.Fibers.DispatcherFiber.#ctor(System.Windows.Threading.Dispatcher,System.Windows.Threading.DispatcherPriority,Retlang.Core.IExecutor)">
717
761
  <summary>
718
762
  Constructs a Fiber that executes on dispatcher thread.
719
763
  </summary>
@@ -721,7 +765,7 @@
721
765
  <param name="priority">The priority.</param>
722
766
  <param name="executor">The executor.</param>
723
767
  </member>
724
- <member name="M:Retlang.Fibers.DispatcherFiber.#ctor(System.Windows.Threading.Dispatcher,Retlang.Core.IBatchAndSingleExecutor)">
768
+ <member name="M:Retlang.Fibers.DispatcherFiber.#ctor(System.Windows.Threading.Dispatcher,Retlang.Core.IExecutor)">
725
769
  <summary>
726
770
  Constructs a Fiber that executes on dispatcher thread.
727
771
  </summary>
@@ -754,33 +798,18 @@
754
798
  current dispatcher.
755
799
  </summary>
756
800
  </member>
757
- <member name="T:Retlang.Core.IActionExecutor">
758
- <summary>
759
- A runable queue implementation.
760
- </summary>
761
- </member>
762
- <member name="M:Retlang.Core.IActionExecutor.Run">
763
- <summary>
764
- Consume events.
765
- </summary>
766
- </member>
767
- <member name="M:Retlang.Core.IActionExecutor.Stop">
768
- <summary>
769
- Stop consuming events.
770
- </summary>
771
- </member>
772
801
  <member name="T:Retlang.Channels.LastSubscriber`1">
773
802
  <summary>
774
- Subscribes to last event received on the channel.
803
+ Subscribes to last action received on the channel.
775
804
  </summary>
776
805
  <typeparam name="T"></typeparam>
777
806
  </member>
778
- <member name="M:Retlang.Channels.LastSubscriber`1.#ctor(System.Action{`0},Retlang.Core.IScheduler,System.Int32)">
807
+ <member name="M:Retlang.Channels.LastSubscriber`1.#ctor(System.Action{`0},Retlang.Fibers.IFiber,System.Int32)">
779
808
  <summary>
780
809
  New instance.
781
810
  </summary>
782
811
  <param name="target"></param>
783
- <param name="context"></param>
812
+ <param name="fiber"></param>
784
813
  <param name="flushIntervalInMs"></param>
785
814
  </member>
786
815
  <member name="M:Retlang.Channels.LastSubscriber`1.OnMessageOnProducerThread(`0)">
@@ -794,6 +823,11 @@
794
823
  Flushes on IFiber thread.
795
824
  </summary>
796
825
  </member>
826
+ <member name="P:Retlang.Channels.LastSubscriber`1.Subscriptions">
827
+ <summary>
828
+ Allows for the registration and deregistration of subscriptions
829
+ </summary>
830
+ </member>
797
831
  <member name="T:Retlang.Channels.IPublisher`1">
798
832
  <summary>
799
833
  Channel publishing interface.
@@ -820,61 +854,53 @@
820
854
  </summary>
821
855
  <typeparam name="T"></typeparam>
822
856
  </member>
823
- <member name="M:Retlang.Channels.ISubscriber`1.Subscribe(Retlang.Core.IDisposingExecutor,System.Action{`0})">
857
+ <member name="M:Retlang.Channels.ISubscriber`1.Subscribe(Retlang.Fibers.IFiber,System.Action{`0})">
824
858
  <summary>
825
859
  Subscribe to messages on this channel. The provided action will be invoked via a Action on the provided executor.
826
860
  </summary>
827
- <param name="executor">the target executor to receive the message</param>
861
+ <param name="fiber">the target executor to receive the message</param>
828
862
  <param name="receive"></param>
829
863
  <returns>Unsubscriber object</returns>
830
864
  </member>
831
- <member name="M:Retlang.Channels.ISubscriber`1.ClearSubscribers">
865
+ <member name="M:Retlang.Channels.ISubscriber`1.SubscribeToBatch(Retlang.Fibers.IFiber,System.Action{System.Collections.Generic.IList{`0}},System.Int32)">
832
866
  <summary>
833
- Removes all subscribers.
834
- </summary>
835
- </member>
836
- <member name="M:Retlang.Channels.ISubscriber`1.SubscribeToBatch(Retlang.Core.IScheduler,System.Action{System.Collections.Generic.IList{`0}},System.Int32)">
837
- <summary>
838
- Subscribes to events on the channel in batch form. The events will be batched if the consumer is unable to process the events
867
+ Subscribes to actions on the channel in batch form. The events will be batched if the consumer is unable to process the events
839
868
  faster than the arrival rate.
840
869
  </summary>
841
- <param name="scheduler">The target context to execute the action</param>
870
+ <param name="fiber">The target context to execute the action</param>
842
871
  <param name="receive"></param>
843
- <param name="intervalInMs">Time in Ms to batch events. If 0 events will be delivered as fast as consumer can process</param>
872
+ <param name="intervalInMs">Time in Ms to batch actions. If 0 events will be delivered as fast as consumer can process</param>
844
873
  <returns></returns>
845
874
  </member>
846
- <member name="M:Retlang.Channels.ISubscriber`1.SubscribeToKeyedBatch``1(Retlang.Core.IScheduler,System.Converter{`0,``0},System.Action{System.Collections.Generic.IDictionary{``0,`0}},System.Int32)">
875
+ <member name="M:Retlang.Channels.ISubscriber`1.SubscribeToKeyedBatch``1(Retlang.Fibers.IFiber,System.Converter{`0,``0},System.Action{System.Collections.Generic.IDictionary{``0,`0}},System.Int32)">
847
876
  <summary>
848
- Batches events based upon keyed values allowing for duplicates to be dropped.
877
+ Batches actions based upon keyed values allowing for duplicates to be dropped.
849
878
  </summary>
850
- <param name="scheduler"></param>
879
+ <param name="fiber"></param>
851
880
  <param name="keyResolver"></param>
852
881
  <param name="receive"></param>
853
882
  <param name="intervalInMs"></param>
854
883
  <typeparam name="K"></typeparam>
855
884
  <returns></returns>
856
885
  </member>
857
- <member name="M:Retlang.Channels.ISubscriber`1.SubscribeToLast(Retlang.Core.IScheduler,System.Action{`0},System.Int32)">
886
+ <member name="M:Retlang.Channels.ISubscriber`1.SubscribeToLast(Retlang.Fibers.IFiber,System.Action{`0},System.Int32)">
858
887
  <summary>
859
888
  Subscription that delivers the latest message to the consuming thread. If a newer message arrives before the consuming thread
860
889
  has a chance to process the message, the pending message is replaced by the newer message. The old message is discarded.
861
890
  </summary>
862
- <param name="scheduler"></param>
891
+ <param name="fiber"></param>
863
892
  <param name="receive"></param>
864
893
  <param name="intervalInMs"></param>
865
894
  <returns></returns>
866
895
  </member>
867
- <member name="M:Retlang.Channels.ISubscriber`1.SubscribeOnProducerThreads(System.Action{`0})">
896
+ <member name="M:Retlang.Channels.ISubscriber`1.ClearSubscribers">
868
897
  <summary>
869
- Subscribes to messages on producer threads. Action will be invoked on producer thread. Action must
870
- be thread safe.
898
+ Removes all subscribers.
871
899
  </summary>
872
- <param name="subscriber"></param>
873
- <returns></returns>
874
900
  </member>
875
- <member name="M:Retlang.Channels.ISubscriber`1.SubscribeOnProducerThreads(Retlang.Channels.IProducerThreadSubscriber{`0})">
901
+ <member name="M:Retlang.Channels.IChannel`1.SubscribeOnProducerThreads(Retlang.Channels.IProducerThreadSubscriber{`0})">
876
902
  <summary>
877
- Subscribes to events on producer threads. Subscriber could be called from multiple threads.
903
+ Subscribes to actions on producer threads. Subscriber could be called from multiple threads.
878
904
  </summary>
879
905
  <param name="subscriber"></param>
880
906
  <returns></returns>
@@ -900,7 +926,7 @@
900
926
  </member>
901
927
  <member name="T:Retlang.Fibers.ThreadFiber">
902
928
  <summary>
903
- Default implementation for IThreadFiber.
929
+ Fiber implementation backed by a dedicated thread.
904
930
  <see cref="T:Retlang.Fibers.IFiber"/>
905
931
  </summary>
906
932
  </member>
@@ -909,7 +935,7 @@
909
935
  Create a thread fiber with the default action executor.
910
936
  </summary>
911
937
  </member>
912
- <member name="M:Retlang.Fibers.ThreadFiber.#ctor(Retlang.Core.IActionExecutor)">
938
+ <member name="M:Retlang.Fibers.ThreadFiber.#ctor(Retlang.Core.IQueue)">
913
939
  <summary>
914
940
  Creates a thread fiber with a specified executor.
915
941
  </summary>
@@ -921,7 +947,7 @@
921
947
  </summary>
922
948
  /// <param name="threadName"></param>
923
949
  </member>
924
- <member name="M:Retlang.Fibers.ThreadFiber.#ctor(Retlang.Core.IActionExecutor,System.String,System.Boolean,System.Threading.ThreadPriority)">
950
+ <member name="M:Retlang.Fibers.ThreadFiber.#ctor(Retlang.Core.IQueue,System.String,System.Boolean,System.Threading.ThreadPriority)">
925
951
  <summary>
926
952
  Creates a thread fiber.
927
953
  </summary>
@@ -930,29 +956,23 @@
930
956
  <param name="isBackground"></param>
931
957
  <param name="priority"></param>
932
958
  </member>
933
- <member name="M:Retlang.Fibers.ThreadFiber.EnqueueAll(System.Collections.Generic.List{System.Action})">
934
- <summary>
935
- <see cref="M:Retlang.Core.IDisposingExecutor.EnqueueAll(System.Collections.Generic.List{System.Action})"/>
936
- </summary>
937
- <param name="actions"></param>
938
- </member>
939
959
  <member name="M:Retlang.Fibers.ThreadFiber.Enqueue(System.Action)">
940
960
  <summary>
941
961
  Queue action.
942
962
  </summary>
943
963
  <param name="action"></param>
944
964
  </member>
945
- <member name="M:Retlang.Fibers.ThreadFiber.Add(System.IDisposable)">
965
+ <member name="M:Retlang.Fibers.ThreadFiber.RegisterSubscription(System.IDisposable)">
946
966
  <summary>
947
967
  Add Disposable to be invoked when Fiber is disposed.
948
968
  </summary>
949
- <param name="toAdd"></param>
969
+ <param name="subscription"></param>
950
970
  </member>
951
- <member name="M:Retlang.Fibers.ThreadFiber.Remove(System.IDisposable)">
971
+ <member name="M:Retlang.Fibers.ThreadFiber.DeregisterSubscription(System.IDisposable)">
952
972
  <summary>
953
973
  Remove disposable.
954
974
  </summary>
955
- <param name="victim"></param>
975
+ <param name="subscription"></param>
956
976
  <returns></returns>
957
977
  </member>
958
978
  <member name="M:Retlang.Fibers.ThreadFiber.Schedule(System.Action,System.Int64)">
@@ -960,7 +980,7 @@
960
980
  <see cref="M:Retlang.Core.IScheduler.Schedule(System.Action,System.Int64)"/>
961
981
  </summary>
962
982
  <param name="action"></param>
963
- <param name="timeTilEnqueueInMs"></param>
983
+ <param name="firstInMs"></param>
964
984
  <returns></returns>
965
985
  </member>
966
986
  <member name="M:Retlang.Fibers.ThreadFiber.ScheduleOnInterval(System.Action,System.Int64,System.Int64)">
@@ -978,7 +998,7 @@
978
998
  </member>
979
999
  <member name="M:Retlang.Fibers.ThreadFiber.Join">
980
1000
  <summary>
981
- <see cref="M:Retlang.Fibers.IThreadFiber.Join"/>
1001
+ Calls join on the thread.
982
1002
  </summary>
983
1003
  </member>
984
1004
  <member name="M:Retlang.Fibers.ThreadFiber.Dispose">
@@ -991,7 +1011,7 @@
991
1011
  <see cref="T:Retlang.Fibers.IFiber"/>
992
1012
  </summary>
993
1013
  </member>
994
- <member name="P:Retlang.Fibers.ThreadFiber.DisposableCount">
1014
+ <member name="P:Retlang.Fibers.ThreadFiber.NumSubscriptions">
995
1015
  <summary>
996
1016
  Number of disposables.
997
1017
  </summary>
@@ -1016,161 +1036,141 @@
1016
1036
  After stopped
1017
1037
  </summary>
1018
1038
  </member>
1019
- <member name="T:Retlang.Channels.RequestReplyChannel`2">
1039
+ <member name="T:Retlang.Core.BusyWaitQueue">
1020
1040
  <summary>
1021
- Channel for synchronous and asynchronous requests.
1041
+ Busy waits on lock to execute. Can improve perforamance in certain situations.
1022
1042
  </summary>
1023
- <typeparam name="R"></typeparam>
1024
- <typeparam name="M"></typeparam>
1025
1043
  </member>
1026
- <member name="T:Retlang.Channels.IRequestReplyChannel`2">
1044
+ <member name="M:Retlang.Core.BusyWaitQueue.#ctor(Retlang.Core.IExecutor,System.Int32,System.Int32)">
1027
1045
  <summary>
1028
- Typed channel for request/reply
1046
+ BusyWaitQueue with custom executor
1029
1047
  </summary>
1030
- <typeparam name="R"></typeparam>
1031
- <typeparam name="M"></typeparam>
1048
+ <param name="executor"></param>
1049
+ <param name="spinsBeforeSleepCheck"></param>
1050
+ <param name="sleepInMs"></param>
1032
1051
  </member>
1033
- <member name="T:Retlang.Channels.IRequestPublisher`2">
1052
+ <member name="M:Retlang.Core.BusyWaitQueue.#ctor(System.Int32,System.Int32)">
1034
1053
  <summary>
1035
-
1054
+ BusyWaitQueue with default executor
1036
1055
  </summary>
1037
- <typeparam name="R"></typeparam>
1038
- <typeparam name="M"></typeparam>
1039
1056
  </member>
1040
- <member name="M:Retlang.Channels.IRequestPublisher`2.SendRequest(`0)">
1057
+ <member name="M:Retlang.Core.BusyWaitQueue.Enqueue(System.Action)">
1041
1058
  <summary>
1042
- Send request on the channel.
1059
+ Enqueue action.
1043
1060
  </summary>
1044
- <param name="request"></param>
1045
- <returns></returns>
1061
+ <param name="action"></param>
1046
1062
  </member>
1047
- <member name="T:Retlang.Channels.IReplySubscriber`2">
1063
+ <member name="M:Retlang.Core.BusyWaitQueue.Run">
1048
1064
  <summary>
1049
- Methods for working with a replyChannel
1065
+ Execute actions until stopped.
1050
1066
  </summary>
1051
- <typeparam name="R"></typeparam>
1052
- <typeparam name="M"></typeparam>
1053
1067
  </member>
1054
- <member name="M:Retlang.Channels.IReplySubscriber`2.Subscribe(Retlang.Core.IDisposingExecutor,System.Action{Retlang.Channels.IRequest{`0,`1}})">
1068
+ <member name="M:Retlang.Core.BusyWaitQueue.Stop">
1055
1069
  <summary>
1056
- Subscribe to a request on the channel.
1070
+ Stop consuming actions.
1057
1071
  </summary>
1058
- <param name="responder"></param>
1059
- <param name="onRequest"></param>
1060
- <returns></returns>
1061
1072
  </member>
1062
- <member name="M:Retlang.Channels.RequestReplyChannel`2.Subscribe(Retlang.Core.IDisposingExecutor,System.Action{Retlang.Channels.IRequest{`0,`1}})">
1073
+ <member name="M:Retlang.Core.BusyWaitQueue.ExecuteNextBatch">
1063
1074
  <summary>
1064
- Subscribe to requests.
1075
+ Remove all actions and execute.
1065
1076
  </summary>
1066
- <param name="responder"></param>
1067
- <param name="onRequest"></param>
1068
1077
  <returns></returns>
1069
1078
  </member>
1070
- <member name="M:Retlang.Channels.RequestReplyChannel`2.SendRequest(`0)">
1079
+ <member name="T:Retlang.Core.DefaultQueue">
1071
1080
  <summary>
1072
- Send request to any and all subscribers.
1081
+ Default implementation.
1073
1082
  </summary>
1074
- <param name="p"></param>
1075
- <returns>null if no subscribers registered for request.</returns>
1076
1083
  </member>
1077
- <member name="T:Retlang.Core.BatchAndSingleExecutor">
1084
+ <member name="M:Retlang.Core.DefaultQueue.#ctor(Retlang.Core.IExecutor)">
1078
1085
  <summary>
1079
- Default Action executor.
1086
+ Default queue with custom executor
1080
1087
  </summary>
1088
+ <param name="executor"></param>
1081
1089
  </member>
1082
- <member name="T:Retlang.Core.IBatchAndSingleExecutor">
1090
+ <member name="M:Retlang.Core.DefaultQueue.#ctor">
1083
1091
  <summary>
1084
- Executes pending action(s).
1092
+ Default queue with default executor
1085
1093
  </summary>
1086
1094
  </member>
1087
- <member name="M:Retlang.Core.IBatchAndSingleExecutor.Execute(System.Action)">
1095
+ <member name="M:Retlang.Core.DefaultQueue.Enqueue(System.Action)">
1088
1096
  <summary>
1089
- Execute a single pending action.
1097
+ Enqueue action.
1090
1098
  </summary>
1091
1099
  <param name="action"></param>
1092
1100
  </member>
1093
- <member name="M:Retlang.Core.BatchAndSingleExecutor.ExecuteAll(System.Collections.Generic.List{System.Action})">
1094
- <summary>
1095
- <see cref="M:Retlang.Core.IBatchExecutor.ExecuteAll(System.Collections.Generic.List{System.Action})"/>
1096
- </summary>
1097
- </member>
1098
- <member name="M:Retlang.Core.BatchAndSingleExecutor.Execute(System.Action)">
1099
- <summary>
1100
- Execute single action
1101
- </summary>
1102
- </member>
1103
- <member name="P:Retlang.Core.BatchAndSingleExecutor.IsEnabled">
1101
+ <member name="M:Retlang.Core.DefaultQueue.Run">
1104
1102
  <summary>
1105
- When disabled, actions will be ignored by executor. The executor is typically disabled at shutdown
1106
- to prevent any pending actions from being executed.
1103
+ Execute actions until stopped.
1107
1104
  </summary>
1108
1105
  </member>
1109
- <member name="T:Retlang.Core.ActionExecutor">
1106
+ <member name="M:Retlang.Core.DefaultQueue.Stop">
1110
1107
  <summary>
1111
- Default implementation.
1108
+ Stop consuming actions.
1112
1109
  </summary>
1113
1110
  </member>
1114
- <member name="M:Retlang.Core.ActionExecutor.EnqueueAll(System.Collections.Generic.List{System.Action})">
1111
+ <member name="M:Retlang.Core.DefaultQueue.ExecuteNextBatch">
1115
1112
  <summary>
1116
- <see cref="M:Retlang.Core.IDisposingExecutor.EnqueueAll(System.Collections.Generic.List{System.Action})"/>
1113
+ Remove all actions and execute.
1117
1114
  </summary>
1118
- <param name="actions"></param>
1115
+ <returns></returns>
1119
1116
  </member>
1120
- <member name="M:Retlang.Core.ActionExecutor.Enqueue(System.Action)">
1117
+ <member name="T:Retlang.Channels.RequestReplyChannel`2">
1121
1118
  <summary>
1122
- Queue action.
1119
+ Channel for synchronous and asynchronous requests.
1123
1120
  </summary>
1124
- <param name="action"></param>
1121
+ <typeparam name="R"></typeparam>
1122
+ <typeparam name="M"></typeparam>
1125
1123
  </member>
1126
- <member name="M:Retlang.Core.ActionExecutor.Add(System.IDisposable)">
1124
+ <member name="T:Retlang.Channels.IRequestReplyChannel`2">
1127
1125
  <summary>
1128
- Add disposable.
1126
+ Typed channel for request/reply
1129
1127
  </summary>
1130
- <param name="toAdd"></param>
1128
+ <typeparam name="R"></typeparam>
1129
+ <typeparam name="M"></typeparam>
1131
1130
  </member>
1132
- <member name="M:Retlang.Core.ActionExecutor.Remove(System.IDisposable)">
1131
+ <member name="T:Retlang.Channels.IRequestPublisher`2">
1133
1132
  <summary>
1134
- Remove
1133
+
1135
1134
  </summary>
1136
- <param name="victim"></param>
1137
- <returns></returns>
1135
+ <typeparam name="R"></typeparam>
1136
+ <typeparam name="M"></typeparam>
1138
1137
  </member>
1139
- <member name="M:Retlang.Core.ActionExecutor.ExecuteNextBatch">
1138
+ <member name="M:Retlang.Channels.IRequestPublisher`2.SendRequest(`0)">
1140
1139
  <summary>
1141
- Remove all actions and execute.
1140
+ Send request on the channel.
1142
1141
  </summary>
1142
+ <param name="request"></param>
1143
1143
  <returns></returns>
1144
1144
  </member>
1145
- <member name="M:Retlang.Core.ActionExecutor.Run">
1146
- <summary>
1147
- Execute actions until stopped.
1148
- </summary>
1149
- </member>
1150
- <member name="M:Retlang.Core.ActionExecutor.Stop">
1151
- <summary>
1152
- Stop consuming events.
1153
- </summary>
1154
- </member>
1155
- <member name="P:Retlang.Core.ActionExecutor.BatchExecutor">
1145
+ <member name="T:Retlang.Channels.IReplySubscriber`2">
1156
1146
  <summary>
1157
- Executor for events.
1147
+ Methods for working with a replyChannel
1158
1148
  </summary>
1149
+ <typeparam name="R"></typeparam>
1150
+ <typeparam name="M"></typeparam>
1159
1151
  </member>
1160
- <member name="P:Retlang.Core.ActionExecutor.MaxDepth">
1152
+ <member name="M:Retlang.Channels.IReplySubscriber`2.Subscribe(Retlang.Fibers.IFiber,System.Action{Retlang.Channels.IRequest{`0,`1}})">
1161
1153
  <summary>
1162
- Max number of events to be queued.
1154
+ Subscribe to a request on the channel.
1163
1155
  </summary>
1156
+ <param name="fiber"></param>
1157
+ <param name="onRequest"></param>
1158
+ <returns></returns>
1164
1159
  </member>
1165
- <member name="P:Retlang.Core.ActionExecutor.MaxEnqueueWaitTime">
1160
+ <member name="M:Retlang.Channels.RequestReplyChannel`2.Subscribe(Retlang.Fibers.IFiber,System.Action{Retlang.Channels.IRequest{`0,`1}})">
1166
1161
  <summary>
1167
- Max time to wait for space in the queue.
1162
+ Subscribe to requests.
1168
1163
  </summary>
1164
+ <param name="fiber"></param>
1165
+ <param name="onRequest"></param>
1166
+ <returns></returns>
1169
1167
  </member>
1170
- <member name="P:Retlang.Core.ActionExecutor.DisposableCount">
1168
+ <member name="M:Retlang.Channels.RequestReplyChannel`2.SendRequest(`0)">
1171
1169
  <summary>
1172
- Disposable Count.
1170
+ Send request to any and all subscribers.
1173
1171
  </summary>
1172
+ <param name="p"></param>
1173
+ <returns>null if no subscribers registered for request.</returns>
1174
1174
  </member>
1175
1175
  <member name="T:Retlang.Core.IPendingEvent">
1176
1176
  <summary>
@@ -1195,18 +1195,18 @@
1195
1195
  </member>
1196
1196
  <member name="T:Retlang.Core.IThreadPool">
1197
1197
  <summary>
1198
- A thread pool for executing asynchronous events.
1198
+ A thread pool for executing asynchronous actions.
1199
1199
  </summary>
1200
1200
  </member>
1201
1201
  <member name="M:Retlang.Core.IThreadPool.Queue(System.Threading.WaitCallback)">
1202
1202
  <summary>
1203
- Queue event for execution.
1203
+ Enqueue action for execution.
1204
1204
  </summary>
1205
1205
  <param name="callback"></param>
1206
1206
  </member>
1207
1207
  <member name="M:Retlang.Core.DefaultThreadPool.Queue(System.Threading.WaitCallback)">
1208
1208
  <summary>
1209
- Queue event.
1209
+ Enqueues action.
1210
1210
  </summary>
1211
1211
  <param name="callback"></param>
1212
1212
  </member>
@@ -1220,49 +1220,49 @@
1220
1220
  </member>
1221
1221
  <member name="T:Retlang.Channels.ChannelSubscription`1">
1222
1222
  <summary>
1223
- Subscription for events on a channel.
1223
+ Subscription for actions on a channel.
1224
1224
  </summary>
1225
1225
  <typeparam name="T"></typeparam>
1226
1226
  </member>
1227
- <member name="M:Retlang.Channels.ChannelSubscription`1.#ctor(Retlang.Core.IDisposingExecutor,System.Action{`0})">
1227
+ <member name="M:Retlang.Channels.ChannelSubscription`1.#ctor(Retlang.Fibers.IFiber,System.Action{`0})">
1228
1228
  <summary>
1229
1229
  Construct the subscription
1230
1230
  </summary>
1231
- <param name="queue"></param>
1232
- <param name="receiveMethod"></param>
1231
+ <param name="fiber"></param>
1232
+ <param name="receiver"></param>
1233
1233
  </member>
1234
1234
  <member name="M:Retlang.Channels.ChannelSubscription`1.OnMessageOnProducerThread(`0)">
1235
1235
  <summary>
1236
- Receives the event and queues the execution on the target queue.
1236
+ Receives the action and queues the execution on the target fiber.
1237
1237
  </summary>
1238
1238
  <param name="msg"></param>
1239
1239
  </member>
1240
- <member name="T:Retlang.Core.DisposableList">
1240
+ <member name="P:Retlang.Channels.ChannelSubscription`1.Subscriptions">
1241
1241
  <summary>
1242
- Registry for disposables. Provides thread safe methods for list of disposables.
1242
+ Allows for the registration and deregistration of subscriptions
1243
1243
  </summary>
1244
1244
  </member>
1245
- <member name="M:Retlang.Core.DisposableList.Add(System.IDisposable)">
1245
+ <member name="T:Retlang.Core.DefaultExecutor">
1246
1246
  <summary>
1247
- Add Disposable
1247
+ Default executor.
1248
1248
  </summary>
1249
- <param name="toAdd"></param>
1250
1249
  </member>
1251
- <member name="M:Retlang.Core.DisposableList.Remove(System.IDisposable)">
1250
+ <member name="M:Retlang.Core.DefaultExecutor.Execute(System.Collections.Generic.List{System.Action})">
1252
1251
  <summary>
1253
- Remove Disposable.
1252
+ Executes all actions.
1254
1253
  </summary>
1255
- <param name="victim"></param>
1256
- <returns></returns>
1254
+ <param name="toExecute"></param>
1257
1255
  </member>
1258
- <member name="M:Retlang.Core.DisposableList.Dispose">
1256
+ <member name="M:Retlang.Core.DefaultExecutor.Execute(System.Action)">
1259
1257
  <summary>
1260
- Disposes all disposables registered in list.
1258
+ Executes a single action.
1261
1259
  </summary>
1260
+ <param name="toExecute"></param>
1262
1261
  </member>
1263
- <member name="P:Retlang.Core.DisposableList.Count">
1262
+ <member name="P:Retlang.Core.DefaultExecutor.IsEnabled">
1264
1263
  <summary>
1265
- Number of registered disposables.
1264
+ When disabled, actions will be ignored by executor. The executor is typically disabled at shutdown
1265
+ to prevent any pending actions from being executed.
1266
1266
  </summary>
1267
1267
  </member>
1268
1268
  <member name="T:Retlang.Channels.QueueChannel`1">
@@ -1271,11 +1271,11 @@
1271
1271
  </summary>
1272
1272
  <typeparam name="T"></typeparam>
1273
1273
  </member>
1274
- <member name="M:Retlang.Channels.QueueChannel`1.Subscribe(Retlang.Core.IDisposingExecutor,System.Action{`0})">
1274
+ <member name="M:Retlang.Channels.QueueChannel`1.Subscribe(Retlang.Core.IExecutionContext,System.Action{`0})">
1275
1275
  <summary>
1276
1276
  Subscribe to executor messages.
1277
1277
  </summary>
1278
- <param name="executor"></param>
1278
+ <param name="executionContext"></param>
1279
1279
  <param name="onMessage"></param>
1280
1280
  <returns></returns>
1281
1281
  </member>
@@ -1291,70 +1291,76 @@
1291
1291
  </summary>
1292
1292
  <typeparam name="T"></typeparam>
1293
1293
  </member>
1294
- <member name="M:Retlang.Channels.Channel`1.Subscribe(Retlang.Core.IDisposingExecutor,System.Action{`0})">
1294
+ <member name="M:Retlang.Channels.Channel`1.Subscribe(Retlang.Fibers.IFiber,System.Action{`0})">
1295
1295
  <summary>
1296
- <see cref="M:Retlang.Channels.ISubscriber`1.Subscribe(Retlang.Core.IDisposingExecutor,System.Action{`0})"/>
1296
+ <see cref="M:Retlang.Channels.ISubscriber`1.Subscribe(Retlang.Fibers.IFiber,System.Action{`0})"/>
1297
1297
  </summary>
1298
- <param name="executor"></param>
1298
+ <param name="fiber"></param>
1299
1299
  <param name="receive"></param>
1300
1300
  <returns></returns>
1301
1301
  </member>
1302
- <member name="M:Retlang.Channels.Channel`1.Publish(`0)">
1302
+ <member name="M:Retlang.Channels.Channel`1.SubscribeToBatch(Retlang.Fibers.IFiber,System.Action{System.Collections.Generic.IList{`0}},System.Int32)">
1303
1303
  <summary>
1304
- <see cref="M:Retlang.Channels.IPublisher`1.Publish(`0)"/>
1304
+ <see cref="M:Retlang.Channels.ISubscriber`1.SubscribeToBatch(Retlang.Fibers.IFiber,System.Action{System.Collections.Generic.IList{`0}},System.Int32)"/>
1305
1305
  </summary>
1306
- <param name="msg"></param>
1306
+ <param name="fiber"></param>
1307
+ <param name="receive"></param>
1308
+ <param name="intervalInMs"></param>
1307
1309
  <returns></returns>
1308
1310
  </member>
1309
- <member name="M:Retlang.Channels.Channel`1.ClearSubscribers">
1311
+ <member name="M:Retlang.Channels.Channel`1.SubscribeToKeyedBatch``1(Retlang.Fibers.IFiber,System.Converter{`0,``0},System.Action{System.Collections.Generic.IDictionary{``0,`0}},System.Int32)">
1310
1312
  <summary>
1311
- Remove all subscribers.
1313
+ <see cref="M:Retlang.Channels.ISubscriber`1.SubscribeToKeyedBatch``1(Retlang.Fibers.IFiber,System.Converter{`0,``0},System.Action{System.Collections.Generic.IDictionary{``0,`0}},System.Int32)"/>
1312
1314
  </summary>
1313
- </member>
1314
- <member name="M:Retlang.Channels.Channel`1.SubscribeToBatch(Retlang.Core.IScheduler,System.Action{System.Collections.Generic.IList{`0}},System.Int32)">
1315
- <summary>
1316
- <see cref="M:Retlang.Channels.ISubscriber`1.SubscribeToBatch(Retlang.Core.IScheduler,System.Action{System.Collections.Generic.IList{`0}},System.Int32)"/>
1317
- </summary>
1318
- <param name="scheduler"></param>
1315
+ <typeparam name="K"></typeparam>
1316
+ <param name="fiber"></param>
1317
+ <param name="keyResolver"></param>
1319
1318
  <param name="receive"></param>
1320
1319
  <param name="intervalInMs"></param>
1321
1320
  <returns></returns>
1322
1321
  </member>
1323
- <member name="M:Retlang.Channels.Channel`1.SubscribeToKeyedBatch``1(Retlang.Core.IScheduler,System.Converter{`0,``0},System.Action{System.Collections.Generic.IDictionary{``0,`0}},System.Int32)">
1322
+ <member name="M:Retlang.Channels.Channel`1.SubscribeToLast(Retlang.Fibers.IFiber,System.Action{`0},System.Int32)">
1324
1323
  <summary>
1325
- <see cref="M:Retlang.Channels.ISubscriber`1.SubscribeToKeyedBatch``1(Retlang.Core.IScheduler,System.Converter{`0,``0},System.Action{System.Collections.Generic.IDictionary{``0,`0}},System.Int32)"/>
1324
+ Subscription that delivers the latest message to the consuming thread. If a newer message arrives before the consuming thread
1325
+ has a chance to process the message, the pending message is replaced by the newer message. The old message is discarded.
1326
1326
  </summary>
1327
- <typeparam name="K"></typeparam>
1328
- <param name="scheduler"></param>
1329
- <param name="keyResolver"></param>
1327
+ <param name="fiber"></param>
1330
1328
  <param name="receive"></param>
1331
1329
  <param name="intervalInMs"></param>
1332
1330
  <returns></returns>
1333
1331
  </member>
1334
1332
  <member name="M:Retlang.Channels.Channel`1.SubscribeOnProducerThreads(Retlang.Channels.IProducerThreadSubscriber{`0})">
1335
1333
  <summary>
1336
- Subscribes to events on producer threads. Subscriber could be called from multiple threads.
1334
+ Subscribes to actions on producer threads. Subscriber could be called from multiple threads.
1337
1335
  </summary>
1338
1336
  <param name="subscriber"></param>
1339
1337
  <returns></returns>
1340
1338
  </member>
1341
- <member name="M:Retlang.Channels.Channel`1.SubscribeOnProducerThreads(System.Action{`0})">
1339
+ <member name="M:Retlang.Channels.Channel`1.SubscribeOnProducerThreads(System.Action{`0},Retlang.Core.ISubscriptionRegistry)">
1342
1340
  <summary>
1343
- Subscribes an action to be executed for every event posted to the channel. Action should be thread safe.
1341
+ Subscribes an action to be executed for every action posted to the channel. Action should be thread safe.
1344
1342
  Action may be invoked on multiple threads.
1345
1343
  </summary>
1346
1344
  <param name="subscriber"></param>
1345
+ <param name="subscriptions"></param>
1347
1346
  <returns></returns>
1348
1347
  </member>
1349
- <member name="M:Retlang.Channels.Channel`1.SubscribeToLast(Retlang.Core.IScheduler,System.Action{`0},System.Int32)">
1348
+ <member name="M:Retlang.Channels.Channel`1.Publish(`0)">
1350
1349
  <summary>
1351
- Subscription that delivers the latest message to the consuming thread. If a newer message arrives before the consuming thread
1352
- has a chance to process the message, the pending message is replaced by the newer message. The old message is discarded.
1350
+ <see cref="M:Retlang.Channels.IPublisher`1.Publish(`0)"/>
1353
1351
  </summary>
1354
- <param name="scheduler"></param>
1355
- <param name="receive"></param>
1356
- <param name="intervalInMs"></param>
1352
+ <param name="msg"></param>
1357
1353
  <returns></returns>
1358
1354
  </member>
1355
+ <member name="M:Retlang.Channels.Channel`1.ClearSubscribers">
1356
+ <summary>
1357
+ Remove all subscribers.
1358
+ </summary>
1359
+ </member>
1360
+ <member name="P:Retlang.Channels.Channel`1.NumSubscribers">
1361
+ <summary>
1362
+ Number of subscribers
1363
+ </summary>
1364
+ </member>
1359
1365
  </members>
1360
1366
  </doc>