@@ -36,11 +36,10 @@ internal class TransferStatusUpdater(
3636 AWSS3StoragePlugin .AWS_S3_STORAGE_LOG_NAMESPACE .format(this ::class .java.simpleName)
3737 )
3838 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 {
4443 ConcurrentHashMap ()
4544 }
4645 val activeTransferMap = object : AbstractMutableMap <Int , TransferRecord >() {
@@ -135,9 +134,9 @@ internal class TransferStatusUpdater(
135134 transferDB.updateBytesTransferred(transferRecordId, bytesCurrent, bytesTotal)
136135 }
137136 if (notifyListener) {
138- transferStatusListenerMap[transferRecordId]?.forEach {
137+ transferStatusListenerMap[transferRecordId]?.forEach { listener ->
139138 mainHandler.post {
140- it .onProgressChanged(
139+ listener .onProgressChanged(
141140 transferRecordId,
142141 bytesCurrent,
143142 bytesTotal
@@ -149,8 +148,8 @@ internal class TransferStatusUpdater(
149148
150149 @Synchronized
151150 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) }
154153 }
155154 }
156155
@@ -162,13 +161,11 @@ internal class TransferStatusUpdater(
162161
163162 @Synchronized
164163 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)
169167 }
170- } ? : run {
171- transferStatusListenerMap[transferRecordId] = mutableListOf (transferListener)
168+ transferStatusListenerMap[transferRecordId] = transferRecordMap
172169 }
173170 }
174171
0 commit comments