@@ -36,11 +36,10 @@ internal class TransferStatusUpdater(
36
36
AWSS3StoragePlugin .AWS_S3_STORAGE_LOG_NAMESPACE .format(this ::class .java.simpleName)
37
37
)
38
38
private val mainHandler = Handler (Looper .getMainLooper())
39
- private val transferStatusListenerMap: MutableMap <Int , MutableList <TransferListener >> by lazy {
40
- ConcurrentHashMap ()
41
- }
42
- private val transferWorkInfoIdMap: MutableMap <String , Int > by lazy { ConcurrentHashMap () }
43
- private val multiPartTransferStatusListener: MutableMap <Int , MultiPartUploadTaskListener > by lazy {
39
+ private val transferStatusListenerMap:
40
+ ConcurrentHashMap <Int , ConcurrentHashMap .KeySetView <TransferListener , Boolean >> by lazy { ConcurrentHashMap () }
41
+ private val transferWorkInfoIdMap: ConcurrentHashMap <String , Int > by lazy { ConcurrentHashMap () }
42
+ private val multiPartTransferStatusListener: ConcurrentHashMap <Int , MultiPartUploadTaskListener > by lazy {
44
43
ConcurrentHashMap ()
45
44
}
46
45
val activeTransferMap = object : AbstractMutableMap <Int , TransferRecord >() {
@@ -135,9 +134,9 @@ internal class TransferStatusUpdater(
135
134
transferDB.updateBytesTransferred(transferRecordId, bytesCurrent, bytesTotal)
136
135
}
137
136
if (notifyListener) {
138
- transferStatusListenerMap[transferRecordId]?.forEach {
137
+ transferStatusListenerMap[transferRecordId]?.forEach { listener ->
139
138
mainHandler.post {
140
- it .onProgressChanged(
139
+ listener .onProgressChanged(
141
140
transferRecordId,
142
141
bytesCurrent,
143
142
bytesTotal
@@ -149,8 +148,8 @@ internal class TransferStatusUpdater(
149
148
150
149
@Synchronized
151
150
fun updateOnError (transferRecordId : Int , exception : Exception ) {
152
- transferStatusListenerMap[transferRecordId]?.forEach {
153
- mainHandler.post { it .onError(transferRecordId, exception) }
151
+ transferStatusListenerMap[transferRecordId]?.forEach { listener ->
152
+ mainHandler.post { listener .onError(transferRecordId, exception) }
154
153
}
155
154
}
156
155
@@ -162,13 +161,11 @@ internal class TransferStatusUpdater(
162
161
163
162
@Synchronized
164
163
fun registerListener (transferRecordId : Int , transferListener : TransferListener ) {
165
- transferStatusListenerMap[transferRecordId]?.let {
166
- val transferListener = transferListener
167
- if (! it.contains(transferListener)) {
168
- it.add(transferListener)
164
+ transferStatusListenerMap[transferRecordId]?.add(transferListener) ? : run {
165
+ val transferRecordMap = ConcurrentHashMap .newKeySet<TransferListener >().apply {
166
+ add(transferListener)
169
167
}
170
- } ? : run {
171
- transferStatusListenerMap[transferRecordId] = mutableListOf (transferListener)
168
+ transferStatusListenerMap[transferRecordId] = transferRecordMap
172
169
}
173
170
}
174
171
0 commit comments