@@ -5,11 +5,16 @@ import java.io.EOFException
5
5
import java.io.FileNotFoundException
6
6
import java.io.ObjectInputStream
7
7
import java.io.ObjectOutputStream
8
- import kotlinx.coroutines.currentCoroutineContext
9
8
import kotlinx.coroutines.sync.Mutex
10
9
import kotlinx.coroutines.sync.withLock
11
10
12
- internal open class LocalStorageRepository (private val context : Context ) {
11
+ internal interface QueueRepository {
12
+ suspend fun remove (toRemove : List <Map <String , Any ?>? >)
13
+ suspend fun getStoredQueue (): ArrayList <Map <String , Any ?>? >
14
+ suspend fun insertEvents (toInsert : List <Map <String , Any ?>? >)
15
+ }
16
+
17
+ internal class LocalStorageRepository (private val context : Context ) : QueueRepository {
13
18
14
19
private val mutex = Mutex ()
15
20
@@ -33,23 +38,7 @@ internal open class LocalStorageRepository(private val context: Context) {
33
38
}
34
39
}
35
40
36
- /* *
37
- * Delete the stored queue from persistent storage.
38
- */
39
- fun purgeStoredQueue () {
40
- persistObject(ArrayList <Map <String , Any >>())
41
- }
42
-
43
- fun remove (toRemove : List <Map <String , Any >>) {
44
- persistObject(getStoredQueue() - toRemove.toSet())
45
- }
46
-
47
- /* *
48
- * Get the stored event queue from persistent storage.
49
- *
50
- * @return The stored queue of events.
51
- */
52
- open fun getStoredQueue (): ArrayList <Map <String , Any ?>? > {
41
+ private fun getInternalStoredQueue (): ArrayList <Map <String , Any ?>? > {
53
42
var storedQueue: ArrayList <Map <String , Any ?>? > = ArrayList ()
54
43
try {
55
44
val fis = context.applicationContext.openFileInput(STORAGE_KEY )
@@ -71,19 +60,26 @@ internal open class LocalStorageRepository(private val context: Context) {
71
60
return storedQueue
72
61
}
73
62
63
+ override suspend fun remove (toRemove : List <Map <String , Any ?>? >) = mutex.withLock {
64
+ val storedEvents = getInternalStoredQueue()
65
+ persistObject(storedEvents - toRemove.toSet())
66
+ }
67
+
74
68
/* *
75
- * Delete an event from the stored queue.
69
+ * Get the stored event queue from persistent storage.
70
+ *
71
+ * @return The stored queue of events.
76
72
*/
77
- open fun expelStoredEvent () {
78
- val storedQueue = getStoredQueue()
79
- storedQueue.removeAt(0 )
73
+ override suspend fun getStoredQueue (): ArrayList <Map <String , Any ?>? > = mutex.withLock {
74
+ getInternalStoredQueue()
80
75
}
81
76
82
77
/* *
83
78
* Save the event queue to persistent storage.
84
79
*/
85
- open suspend fun insertEvents (toInsert : List <Map <String , Any ?>? >) = mutex.withLock {
86
- persistObject(ArrayList ((toInsert + getStoredQueue()).distinct()))
80
+ override suspend fun insertEvents (toInsert : List <Map <String , Any ?>? >) = mutex.withLock {
81
+ val storedEvents = getInternalStoredQueue()
82
+ persistObject(ArrayList ((toInsert + storedEvents).distinct()))
87
83
}
88
84
89
85
companion object {
0 commit comments