#1351 cleaned code

This commit is contained in:
gouri-panda 2020-11-11 17:53:00 +05:30
parent 6c2317db59
commit eda5db38d6
3 changed files with 21 additions and 31 deletions

View File

@ -45,7 +45,7 @@ class ReceiverHandShake(private val wifiDirectManager: WifiDirectManager, groupI
FileItem(fileName = fileName)
}
}
wifiDirectManager.setFilesForTransfer(fileItems.toList())
wifiDirectManager.setFilesForTransfer(fileItems)
}
}
} catch (e: Exception) {

View File

@ -47,14 +47,13 @@ import java.net.Socket
private const val TIME_OUT = 15000
internal class SenderDevice(
activity: Activity,
var activity: Activity,
private val wifiDirectManager: WifiDirectManager,
val fileReceiverDeviceAddress: InetAddress
private val fileReceiverDeviceAddress: InetAddress
) {
private val contentResolver: ContentResolver = activity.contentResolver
private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO
suspend fun send(fileItems: List<FileItem?>) = withContext(ioDispatcher) {
delayForSlowReceiverDevicesToSetupServer()
suspend fun send(fileItems: List<FileItem?>) = withContext(Dispatchers.IO) {
// Delay trying to connect with receiver, to allow slow receiver devices to setup server
delay(FOR_SLOW_RECEIVER)
val hostAddress =
fileReceiverDeviceAddress.hostAddress
var isTransferErrorFree = true
@ -63,7 +62,7 @@ internal class SenderDevice(
.forEachIndexed { fileIndex, fileItem ->
try {
Socket().use { socket ->
contentResolver.openInputStream(fileItem?.fileUri!!).use { fileInputStream ->
activity.contentResolver.openInputStream(fileItem?.fileUri!!).use { fileInputStream ->
socket.bind(null)
socket.connect(
InetSocketAddress(hostAddress, WifiDirectManager.FILE_TRANSFER_PORT),
@ -85,7 +84,7 @@ internal class SenderDevice(
}
}
return@withContext isTransferErrorFree
isTransferErrorFree
}
private suspend fun publishProgress(fileIndex: Int, fileStatus: FileItem.FileStatus) {
@ -94,13 +93,8 @@ internal class SenderDevice(
}
}
@SuppressWarnings("MagicNumber")
private suspend fun delayForSlowReceiverDevicesToSetupServer() {
// Delay trying to connect with receiver, to allow slow receiver devices to setup server
delay(3000)
}
companion object {
private const val TAG = "SenderDeviceAsyncTask"
private const val FOR_SLOW_RECEIVER: Long = 3000
}
}

View File

@ -219,11 +219,11 @@ class WifiDirectManager @Inject constructor(
Log.d(TAG, "Starting handshake")
}
lifecycleCoroutineScope.launch {
val peerGroupHandshake = if (isFileSender) {
val peerGroupHandshake = if (isFileSender)
SenderHandShake(this@WifiDirectManager, groupInfo)
} else {
else
ReceiverHandShake(this@WifiDirectManager, groupInfo)
}
val inetAddress = peerGroupHandshake.handshake()
if (inetAddress != null) {
startFileTransfer(groupInfo, inetAddress)
@ -248,7 +248,7 @@ class WifiDirectManager @Inject constructor(
val zimStorageRootPath get() = sharedPreferenceUtil.prefStorage + "/Kiwix/"
private fun startFileTransfer(groupInfo: WifiP2pInfo, inetAddress: InetAddress) {
private suspend fun startFileTransfer(groupInfo: WifiP2pInfo, inetAddress: InetAddress) {
if (groupInfo.groupFormed) {
if (isFileSender) {
Log.d(LocalFileTransferFragment.TAG, "Starting file transfer")
@ -256,22 +256,18 @@ class WifiDirectManager @Inject constructor(
if (groupInfo.isGroupOwner) inetAddress else groupInfo.groupOwnerAddress
activity.toast(R.string.preparing_files, Toast.LENGTH_LONG)
val senderDevice = SenderDevice(activity, this, fileReceiverDeviceAddress)
lifecycleCoroutineScope.launch {
val isFileSendSuccessfully = senderDevice.send(filesForTransfer)
onFileTransferAsyncTaskComplete(isFileSendSuccessfully)
if (BuildConfig.DEBUG) {
Log.d(TAG, "SenderDevice completed $isFileSendSuccessfully")
}
val isFileSendSuccessfully = senderDevice.send(filesForTransfer)
onFileTransferAsyncTaskComplete(isFileSendSuccessfully)
if (BuildConfig.DEBUG) {
Log.d(TAG, "SenderDevice completed $isFileSendSuccessfully")
}
} else {
callbacks?.onFilesForTransferAvailable(filesForTransfer)
val receiverDevice = ReceiverDevice(this)
lifecycleCoroutineScope.launch {
val isReceivedFileSuccessFully = receiverDevice.receive()
onFileTransferAsyncTaskComplete(isReceivedFileSuccessFully)
if (BuildConfig.DEBUG) {
Log.d(TAG, "ReceiverDevice completed $isReceivedFileSuccessFully")
}
val isReceivedFileSuccessFully = receiverDevice.receive()
onFileTransferAsyncTaskComplete(isReceivedFileSuccessFully)
if (BuildConfig.DEBUG) {
Log.d(TAG, "ReceiverDevice completed $isReceivedFileSuccessFully")
}
}
}