Skip to content

Commit eec5e3d

Browse files
sentinelwebsentinelweb
authored andcommitted
#496 - fix queing for local
1 parent 6eff534 commit eec5e3d

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

shared/src/commonMain/kotlin/uk/co/sentinelweb/cuer/app/service/transfers/MemoryTransfersService.kt

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@ import uk.co.sentinelweb.cuer.core.wrapper.LogWrapper
1414
import uk.co.sentinelweb.cuer.domain.GUID
1515
import uk.co.sentinelweb.cuer.domain.PlaylistDomain
1616
import uk.co.sentinelweb.cuer.domain.TransferDomain
17-
import uk.co.sentinelweb.cuer.domain.TransferDomain.Status.Confirmed
18-
import uk.co.sentinelweb.cuer.domain.TransferDomain.Status.Pending
17+
import uk.co.sentinelweb.cuer.domain.TransferDomain.Status.*
1918
import uk.co.sentinelweb.cuer.domain.creator.GuidCreator
2019
import uk.co.sentinelweb.cuer.net.remote.RemoteFilesInteractor
2120
import uk.co.sentinelweb.cuer.remote.server.LocalRepository
@@ -133,13 +132,24 @@ class MemoryTransfersService(
133132

134133
private fun checkConfirmedTransfers() {
135134
scope.launch {
135+
// send remote transfers to parget
136136
queue
137137
.filter { it.status == Confirmed }
138-
.also { log.d("checkConfirmedTransfers: ${it.size}") }
138+
.filter { it.target?.node?.ipport() != localRepository.localNode.ipport() }
139+
.also { log.d("checkConfirmedTransfers.remote: ${it.size}") }
139140
.forEach {
140141
startTransfersUsecase.execute(it)
141142
?.also { addReplaceTransfer(it) }
142143
}
144+
145+
// set local confirmed to Pending
146+
queue
147+
.filter { it.status == Confirmed }
148+
.filter { it.target?.node?.ipport() == localRepository.localNode.ipport() }
149+
.also { log.d("checkConfirmedTransfers.local: ${it.size}") }
150+
.forEach {
151+
addReplaceTransfer(it.copy(status = Pending))
152+
}
143153
}
144154
}
145155

@@ -151,14 +161,15 @@ class MemoryTransfersService(
151161
.filter { it.target?.node?.ipport() == localRepository.localNode.ipport() }
152162
.also { log.d("checkPendingTransfers.local: ${it.size}") }
153163
.forEach {
164+
addReplaceTransfer(it.copy(status = InProgress))
154165
executeTransferUseCase.execute(it)
155166
}
156167
}
157168
}
158169

159170
private fun update(state: TransfersContract.Service.State) {
160171
val remoteItemsToUpdate = queue
161-
.filter { it.status == Pending || it.status == TransferDomain.Status.InProgress }
172+
.filter { it.status == Pending || it.status == InProgress }
162173
.takeIf { it.isNotEmpty() }
163174
?.also { log.d("update items: ${it.map { it.id to it.status }}") }
164175
?: return

0 commit comments

Comments
 (0)