1
- /* eslint-disable @typescript-eslint/no-unused-vars */
2
- /* eslint-disable no-unused-vars */
3
1
import { IMySegmentsResponse } from '../dtos/types' ;
4
2
import { MySegmentsData } from '../sync/polling/types' ;
5
3
import { ISegmentsCacheSync } from './types' ;
@@ -8,18 +6,11 @@ import { ISegmentsCacheSync } from './types';
8
6
* This class provides a skeletal implementation of the ISegmentsCacheSync interface
9
7
* to minimize the effort required to implement this interface.
10
8
*/
11
- export abstract class AbstractSegmentsCacheSync implements ISegmentsCacheSync {
12
- /**
13
- * For server-side synchronizer: add `segmentKeys` list of keys to `name` segment.
14
- * For client-side synchronizer: add `name` segment to the cache. `segmentKeys` is undefined.
15
- */
16
- abstract addToSegment ( name : string , segmentKeys ?: string [ ] ) : boolean
9
+ export abstract class AbstractMySegmentsCacheSync implements ISegmentsCacheSync {
17
10
18
- /**
19
- * For server-side synchronizer: remove `segmentKeys` list of keys from `name` segment.
20
- * For client-side synchronizer: remove `name` segment from the cache. `segmentKeys` is undefined.
21
- */
22
- abstract removeFromSegment ( name : string , segmentKeys ?: string [ ] ) : boolean
11
+ protected abstract addSegment ( name : string ) : boolean
12
+ protected abstract removeSegment ( name : string ) : boolean
13
+ protected abstract setChangeNumber ( changeNumber ?: number ) : boolean | void
23
14
24
15
/**
25
16
* For server-side synchronizer: check if `key` is in `name` segment.
@@ -34,11 +25,10 @@ export abstract class AbstractSegmentsCacheSync implements ISegmentsCacheSync {
34
25
this . resetSegments ( { } ) ;
35
26
}
36
27
37
- /**
38
- * For server-side synchronizer: add the given list of segments to the cache, with an empty list of keys. The segments that already exist are not modified.
39
- * For client-side synchronizer: the method is not used.
40
- */
41
- registerSegments ( names : string [ ] ) : boolean { return false ; }
28
+
29
+ // No-op. Not used in client-side.
30
+ registerSegments ( ) : boolean { return false ; }
31
+ update ( ) { return false ; }
42
32
43
33
/**
44
34
* For server-side synchronizer: get the list of segments to fetch changes.
@@ -52,31 +42,26 @@ export abstract class AbstractSegmentsCacheSync implements ISegmentsCacheSync {
52
42
*/
53
43
abstract getKeysCount ( ) : number
54
44
55
- /**
56
- * For server-side synchronizer: change number of `name` segment.
57
- * For client-side synchronizer: change number of mySegments.
58
- */
59
- abstract setChangeNumber ( name ?: string , changeNumber ?: number ) : boolean | void
60
45
abstract getChangeNumber ( name : string ) : number
61
46
62
47
/**
63
48
* For server-side synchronizer: the method is not used.
64
49
* For client-side synchronizer: it resets or updates the cache.
65
50
*/
66
51
resetSegments ( segmentsData : MySegmentsData | IMySegmentsResponse ) : boolean {
67
- this . setChangeNumber ( undefined , segmentsData . cn ) ;
52
+ this . setChangeNumber ( segmentsData . cn ) ;
68
53
69
54
const { added, removed } = segmentsData as MySegmentsData ;
70
55
71
56
if ( added && removed ) {
72
57
let isDiff = false ;
73
58
74
59
added . forEach ( segment => {
75
- isDiff = this . addToSegment ( segment ) || isDiff ;
60
+ isDiff = this . addSegment ( segment ) || isDiff ;
76
61
} ) ;
77
62
78
63
removed . forEach ( segment => {
79
- isDiff = this . removeFromSegment ( segment ) || isDiff ;
64
+ isDiff = this . removeSegment ( segment ) || isDiff ;
80
65
} ) ;
81
66
82
67
return isDiff ;
@@ -97,11 +82,11 @@ export abstract class AbstractSegmentsCacheSync implements ISegmentsCacheSync {
97
82
98
83
// Slowest path => add and/or remove segments
99
84
for ( let removeIndex = index ; removeIndex < storedSegmentKeys . length ; removeIndex ++ ) {
100
- this . removeFromSegment ( storedSegmentKeys [ removeIndex ] ) ;
85
+ this . removeSegment ( storedSegmentKeys [ removeIndex ] ) ;
101
86
}
102
87
103
88
for ( let addIndex = index ; addIndex < names . length ; addIndex ++ ) {
104
- this . addToSegment ( names [ addIndex ] ) ;
89
+ this . addSegment ( names [ addIndex ] ) ;
105
90
}
106
91
107
92
return true ;
0 commit comments