Commit 9e48ef3
Refactor SubscriptionStorage to wrap DefaultInternalEventEmitter
SubscriptionStorage was a struct that manually managed subscription
bookkeeping. Because it was a value type, unsubscription required a
verbose updateSelfLater closure-threading pattern at every call site.
Replace it with a class wrapping DefaultInternalEventEmitter. A
private EmitData struct bundles the update with the dispatch queue so
nosync_emit can still accept a queue parameter. Each
nosync_subscribe creates a SubscriptionController whose signal is
passed to the emitter; the returned SubscribeResponse captures the
controller and synchronously dispatches nosync_off() on unsubscribe.
Because SubscriptionStorage is now a reference type, the
updateSelfLater closures throughout LiveObjectMutableState,
InternalDefaultLiveCounter, InternalDefaultLiveMap, and
InternalDefaultRealtimeObjects are no longer needed and are removed.
The subscription/emit methods on LiveObjectMutableState drop their
mutating qualifier and gain a nosync_ prefix for consistency.
TODO: Lawrence check that this resolves #102
TODO: There's still a mention of updateSelfLater
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>1 parent 6b70d37 commit 9e48ef3
7 files changed
Lines changed: 126 additions & 228 deletions
File tree
- Sources/AblyLiveObjects/Internal
- Tests/AblyLiveObjectsTests
Lines changed: 9 additions & 27 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
55 | | - | |
| 55 | + | |
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
| |||
150 | 150 | | |
151 | 151 | | |
152 | 152 | | |
153 | | - | |
154 | | - | |
155 | | - | |
156 | | - | |
157 | | - | |
158 | | - | |
159 | | - | |
160 | | - | |
161 | | - | |
162 | | - | |
| 153 | + | |
163 | 154 | | |
164 | 155 | | |
165 | 156 | | |
166 | 157 | | |
167 | 158 | | |
168 | | - | |
| 159 | + | |
169 | 160 | | |
170 | 161 | | |
171 | 162 | | |
172 | 163 | | |
173 | 164 | | |
174 | 165 | | |
175 | | - | |
176 | | - | |
177 | | - | |
178 | | - | |
179 | | - | |
180 | | - | |
181 | | - | |
182 | | - | |
183 | | - | |
184 | | - | |
| 166 | + | |
185 | 167 | | |
186 | 168 | | |
187 | 169 | | |
188 | 170 | | |
189 | 171 | | |
190 | | - | |
| 172 | + | |
191 | 173 | | |
192 | 174 | | |
193 | 175 | | |
| |||
198 | 180 | | |
199 | 181 | | |
200 | 182 | | |
201 | | - | |
| 183 | + | |
202 | 184 | | |
203 | 185 | | |
204 | 186 | | |
| |||
425 | 407 | | |
426 | 408 | | |
427 | 409 | | |
428 | | - | |
| 410 | + | |
429 | 411 | | |
430 | 412 | | |
431 | 413 | | |
432 | 414 | | |
433 | 415 | | |
434 | 416 | | |
435 | | - | |
| 417 | + | |
436 | 418 | | |
437 | 419 | | |
438 | 420 | | |
| |||
447 | 429 | | |
448 | 430 | | |
449 | 431 | | |
450 | | - | |
| 432 | + | |
451 | 433 | | |
452 | 434 | | |
453 | 435 | | |
| |||
Lines changed: 12 additions & 30 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
78 | 78 | | |
79 | 79 | | |
80 | 80 | | |
81 | | - | |
| 81 | + | |
82 | 82 | | |
83 | 83 | | |
84 | 84 | | |
| |||
232 | 232 | | |
233 | 233 | | |
234 | 234 | | |
235 | | - | |
236 | | - | |
237 | | - | |
238 | | - | |
239 | | - | |
240 | | - | |
241 | | - | |
242 | | - | |
243 | | - | |
244 | | - | |
| 235 | + | |
245 | 236 | | |
246 | 237 | | |
247 | 238 | | |
248 | 239 | | |
249 | 240 | | |
250 | | - | |
| 241 | + | |
251 | 242 | | |
252 | 243 | | |
253 | 244 | | |
254 | 245 | | |
255 | 246 | | |
256 | 247 | | |
257 | | - | |
258 | | - | |
259 | | - | |
260 | | - | |
261 | | - | |
262 | | - | |
263 | | - | |
264 | | - | |
265 | | - | |
266 | | - | |
| 248 | + | |
267 | 249 | | |
268 | 250 | | |
269 | 251 | | |
270 | 252 | | |
271 | 253 | | |
272 | | - | |
| 254 | + | |
273 | 255 | | |
274 | 256 | | |
275 | 257 | | |
| |||
280 | 262 | | |
281 | 263 | | |
282 | 264 | | |
283 | | - | |
| 265 | + | |
284 | 266 | | |
285 | 267 | | |
286 | 268 | | |
| |||
663 | 645 | | |
664 | 646 | | |
665 | 647 | | |
666 | | - | |
| 648 | + | |
667 | 649 | | |
668 | 650 | | |
669 | 651 | | |
| |||
688 | 670 | | |
689 | 671 | | |
690 | 672 | | |
691 | | - | |
| 673 | + | |
692 | 674 | | |
693 | 675 | | |
694 | 676 | | |
| |||
705 | 687 | | |
706 | 688 | | |
707 | 689 | | |
708 | | - | |
| 690 | + | |
709 | 691 | | |
710 | 692 | | |
711 | 693 | | |
| |||
720 | 702 | | |
721 | 703 | | |
722 | 704 | | |
723 | | - | |
| 705 | + | |
724 | 706 | | |
725 | 707 | | |
726 | 708 | | |
| |||
729 | 711 | | |
730 | 712 | | |
731 | 713 | | |
732 | | - | |
| 714 | + | |
733 | 715 | | |
734 | 716 | | |
735 | 717 | | |
| |||
950 | 932 | | |
951 | 933 | | |
952 | 934 | | |
953 | | - | |
| 935 | + | |
954 | 936 | | |
955 | 937 | | |
956 | 938 | | |
| |||
Lines changed: 27 additions & 51 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
135 | 135 | | |
136 | 136 | | |
137 | 137 | | |
| 138 | + | |
138 | 139 | | |
139 | 140 | | |
140 | 141 | | |
| |||
322 | 323 | | |
323 | 324 | | |
324 | 325 | | |
325 | | - | |
326 | | - | |
327 | | - | |
328 | | - | |
329 | | - | |
330 | | - | |
331 | | - | |
332 | | - | |
333 | | - | |
334 | | - | |
| 326 | + | |
335 | 327 | | |
336 | 328 | | |
337 | 329 | | |
338 | 330 | | |
339 | 331 | | |
340 | 332 | | |
341 | | - | |
342 | 333 | | |
343 | | - | |
344 | | - | |
345 | | - | |
346 | | - | |
347 | | - | |
348 | | - | |
349 | | - | |
350 | | - | |
351 | | - | |
352 | | - | |
| 334 | + | |
353 | 335 | | |
354 | 336 | | |
355 | 337 | | |
356 | 338 | | |
357 | 339 | | |
358 | | - | |
| 340 | + | |
359 | 341 | | |
360 | 342 | | |
361 | 343 | | |
| |||
643 | 625 | | |
644 | 626 | | |
645 | 627 | | |
646 | | - | |
| 628 | + | |
647 | 629 | | |
648 | 630 | | |
649 | | - | |
| 631 | + | |
650 | 632 | | |
651 | 633 | | |
652 | 634 | | |
| |||
678 | 660 | | |
679 | 661 | | |
680 | 662 | | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
| 673 | + | |
681 | 674 | | |
682 | 675 | | |
683 | 676 | | |
| |||
726 | 719 | | |
727 | 720 | | |
728 | 721 | | |
729 | | - | |
| 722 | + | |
730 | 723 | | |
731 | 724 | | |
732 | 725 | | |
| |||
1018 | 1011 | | |
1019 | 1012 | | |
1020 | 1013 | | |
1021 | | - | |
1022 | | - | |
1023 | 1014 | | |
1024 | | - | |
1025 | | - | |
1026 | | - | |
1027 | | - | |
1028 | | - | |
1029 | | - | |
1030 | | - | |
1031 | | - | |
| 1015 | + | |
| 1016 | + | |
1032 | 1017 | | |
1033 | 1018 | | |
1034 | 1019 | | |
1035 | 1020 | | |
1036 | 1021 | | |
1037 | | - | |
1038 | 1022 | | |
1039 | 1023 | | |
1040 | 1024 | | |
1041 | 1025 | | |
1042 | 1026 | | |
1043 | 1027 | | |
1044 | 1028 | | |
1045 | | - | |
1046 | | - | |
1047 | | - | |
1048 | | - | |
1049 | | - | |
1050 | | - | |
1051 | | - | |
1052 | | - | |
1053 | | - | |
| 1029 | + | |
| 1030 | + | |
1054 | 1031 | | |
1055 | 1032 | | |
1056 | 1033 | | |
1057 | 1034 | | |
1058 | 1035 | | |
1059 | | - | |
1060 | 1036 | | |
1061 | 1037 | | |
1062 | 1038 | | |
| |||
1071 | 1047 | | |
1072 | 1048 | | |
1073 | 1049 | | |
1074 | | - | |
1075 | | - | |
| 1050 | + | |
| 1051 | + | |
1076 | 1052 | | |
1077 | 1053 | | |
1078 | | - | |
1079 | | - | |
1080 | | - | |
| 1054 | + | |
| 1055 | + | |
| 1056 | + | |
1081 | 1057 | | |
1082 | 1058 | | |
1083 | 1059 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
40 | | - | |
| 40 | + | |
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
| |||
0 commit comments